@ngx-formly/core 5.10.30 → 5.10.31

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.
@@ -1 +1 @@
1
- {"version":3,"sources":["node_modules/tslib/tslib.es6.js","ng://@ngx-formly/core/lib/utils.ts","ng://@ngx-formly/core/lib/services/formly.config.ts","ng://@ngx-formly/core/lib/services/formly.form.builder.ts","ng://@ngx-formly/core/lib/extensions/field-form/utils.ts","ng://@ngx-formly/core/lib/components/formly.form.ts","ng://@ngx-formly/core/lib/components/formly.field.ts","ng://@ngx-formly/core/lib/components/formly.attributes.ts","ng://@ngx-formly/core/lib/templates/field.type.ts","ng://@ngx-formly/core/lib/templates/field-array.type.ts","ng://@ngx-formly/core/lib/templates/field.wrapper.ts","ng://@ngx-formly/core/lib/templates/formly.group.ts","ng://@ngx-formly/core/lib/templates/formly.validation-message.ts","ng://@ngx-formly/core/lib/templates/field-template.type.ts","ng://@ngx-formly/core/lib/extensions/field-expression/utils.ts","ng://@ngx-formly/core/lib/extensions/field-expression/field-expression.ts","ng://@ngx-formly/core/lib/extensions/field-validation/field-validation.ts","ng://@ngx-formly/core/lib/extensions/field-form/field-form.ts","ng://@ngx-formly/core/lib/extensions/core/core.ts","ng://@ngx-formly/core/lib/core.module.ts"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__extends","__","this","constructor","prototype","create","__assign","assign","t","s","i","n","arguments","length","call","apply","__rest","e","indexOf","getOwnPropertySymbols","propertyIsEnumerable","__read","o","m","Symbol","iterator","r","ar","next","done","push","value","error","__spread","concat","getKeyPath","field","key","_keyPath","path","replace","split","isArray","slice","FORMLY_VALIDATORS","assignFieldValue","paths","root","parent","undefined","resetOnHide","k","pop","reduce","model","assignModelValue","isObject","test","clone","getFieldValue","_b","__values","tslib_1.__values","_c","reverseDeepMerge","dest","args","_i","forEach","src","srcArg","isNullOrUndefined","obj1","obj2","getPrototypeOf","isUndefined","isFunction","x","isObservable","TemplateRef","changingThisBreaksApplicationSecurity","name","Set","Map","_isAMomentObject","AbstractControl","Date","getTime","map","v","proto","c","keys","newVal","prop","propDesc","getOwnPropertyDescriptor","get","defineProperty","defineHiddenProp","defaultValue","enumerable","writable","configurable","wrapProperty","setFn","_observers","fns","currentValue","firstChange","set","previousValue_1","changeFn","previousValue","splice","FORMLY_CONFIG","InjectionToken","FormlyConfig","types","validators","wrappers","messages","templateManipulators","preWrapper","postWrapper","extras","checkExpressionOn","lazyRender","showError","formControl","invalid","touched","options","parentForm","submitted","validation","show","extensions","addConfig","config","_this","type","setType","validator","setValidator","wrapper","setWrapper","manipulators","console","warn","manipulator","setManipulator","validationMessages","addValidatorMessage","message","extension","option","getType","Error","mergeExtendedType","getMergedField","defaultOptions","extendDefaults","extends","optionsTypes","componentRef","resolveFieldTypeRef","instance","component","_a","_resolver","_injector","resolveComponentFactory","destroy","setTypeWrapper","getWrapper","getValidator","getValidatorMessage","class","method","extendedType","Injectable","providedIn","FormlyFormBuilder","formlyConfig","componentFactoryResolver","injector","buildForm","fieldGroup","core","_setOptions","_buildForm","_checkField","getExtensions","prePopulate","onPopulate","f","postPopulate","formState","fieldChanges","Subject","_hiddenFieldsForCheck","_markForCheck","_componentRefs","ref","ChangeDetectorRef","markForCheck","_buildField","form","ComponentFactoryResolver","Injector","unregisterControl","emitEvent","control","fieldIndex","opts","FormArray","key_1","controls","findIndex","updateControl","removeAt","FormGroup","key_2","removeControl","setParent","findControl","registerControl","setValidators","setAsyncValidators","templateOptions","disabled","disable","enable","registerOnDisabledChange","FormControl","patchValue","setControl","_hide","updateValidity","onlySelf","status","updateValueAndValidity","emit","action","_forEachChild","cb","bind","FormlyForm","formlyBuilder","ngZone","immutable","parentFormGroup","modelChange","EventEmitter","_modelChangeValue","modelChangeSubs","modelChange$","modelChangeSub","pipe","switchMap","onStable","asObservable","take","subscribe","runGuarded","checkExpressionChange","_model","_fields","fields","_options","content","hasContent","node","nativeElement","nextSibling","nodeType","Node","ELEMENT_NODE","TEXT_NODE","textContent","trim","ngDoCheck","ngOnChanges","changes","clearControl","setOptions","updateInitialValue","clearModelSubscriptions","trackModelChanges","ngOnDestroy","unsubscribe","changeModel","resetModel","_initialModel","resetForm","reset","emitModelChange","rootKey","control_1","valueChanges","distinctUntilChanged","y","modelOptions","updateOn","debounce","default","debounceTime","parsers","parserFn","tslib_1.__spread","join","observers","unshift","sub","Component","selector","template","providers","NgZone","Attribute","FormGroupDirective","decorators","Optional","Input","Output","ViewChild","FormlyField","renderer","resolver","elementRef","hideDeprecation","warnDeprecation","hostObservers","componentRefs","hooksObservers","detectFieldBuild","ngAfterContentInit","triggerHook","ngAfterContentChecked","ngAfterViewInit","ngAfterViewChecked","render","ngOnInit","resetRefs","renderField","containerRef","clear","wps_1","ref_1","createComponent","attachComponentRef","viewRef","detach","destroyed","insert","changeDetectorRef","detectChanges","hooks","sub_1","lifecycle","className","removeAttribute","setAttribute","setStyle","hide","filter","Renderer2","ElementRef","read","ViewContainerRef","static","FormlyAttributes","_document","uiAttributesCache","uiAttributes","uiEvents","listeners","events","document","listener","eventName","to","listen","attributes","attr","detachElementRef","attachElementRef","fieldAttrElements","id","toggleFocus","toLowerCase","element","focus","isFocused","activeElement","some","contains","blur","onFocus","$event","onBlur","onChange","change","markAsDirty","index","Directive","host","(focus)","(blur)","(change)","Inject","DOCUMENT","FieldType","Field","_super","tslib_1.__extends","FieldArrayType","builder","fieldArray","add","initialModel","remove","FieldWrapper","FormlyGroup","[class]","FormlyValidationMessage","errorMessage$","merge","statusChanges","property","of","startWith","errorMessage","fieldForm","errors","errorPath","asyncValidators","changeDetection","ChangeDetectionStrategy","OnPush","FormlyTemplateType","sanitizer","innerHtml","safeHtml","bypassSecurityTrustHtml","DomSanitizer","evalExpression","expression","thisArg","argVal","Function","FieldExpressionExtension","checkLocked","ignoreCache","checkField","_expressionProperties","expressionProperties","expressionProperty","this_1","_evalExpression","Observable","subscribe_1","setExprValue","subscription_1","onInit_1","onInit","onDestroy_1","onDestroy","hideExpression","parentExpression","evalStringExpression","argNames","fieldChanged","sort","toggleFormControl","checkFieldExpressionChange","checkFieldVisibilityChange","expressionValue","JSON","stringify","hideExpressionResult","hidden","setDisabledState","every","target","lastIndex","emitExpressionChanges","FieldValidationExtension","initFieldValidation","getPredefinedFieldValidation","validatorName","wrapNgValidatorFn","VALIDATORS","opt","Validators","compose","required","pattern","minLength","maxLength","min","max","validatorOption","isPromise","obj","then","handleAsyncResult","handleResult","ctrl","childCtrl","setErrors","childErrors","FieldFormExtension","addFormControl","controlOptions","componentType","c_1","enabled","asyncValidator","mergeValidators","composeAsync","CoreExtension","formId","getFieldComponentInstance","fieldTransforms","fieldTransform","initFieldOptions","getFieldId","label","placeholder","resetFieldOnHide","setDefaultValue","parent_1","initFieldWrappers","fieldTemplateManipulators","el","a","defaultFormlyConfig","FormlyModule","configService","configs","forRoot","ngModule","provide","multi","useFactory","deps","useValue","ANALYZE_FOR_ENTRY_COMPONENTS","forChild","NgModule","declarations","entryComponents","exports","imports","CommonModule"],"mappings":"4lBAgBA,IAAIA,EAAgB,SAASC,EAAGC,GAI5B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIN,EAAEM,GAAKL,EAAEK,MACpDN,EAAGC,IAG5B,SAAgBO,EAAUR,EAAGC,GAEzB,SAASQ,IAAOC,KAAKC,YAAcX,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEY,UAAkB,OAANX,EAAaC,OAAOW,OAAOZ,IAAMQ,EAAGG,UAAYX,EAAEW,UAAW,IAAIH,GAG5E,IAAIK,EAAW,WAQlB,OAPAA,EAAWZ,OAAOa,QAAU,SAAkBC,GAC1C,IAAK,IAAIC,EAAGC,EAAI,EAAGC,EAAIC,UAAUC,OAAQH,EAAIC,EAAGD,IAE5C,IAAK,IAAIZ,KADTW,EAAIG,UAAUF,GACOhB,OAAOU,UAAUL,eAAee,KAAKL,EAAGX,KAAIU,EAAEV,GAAKW,EAAEX,IAE9E,OAAOU,IAEKO,MAAMb,KAAMU,YAGhC,SAAgBI,EAAOP,EAAGQ,GACtB,IAAIT,EAAI,GACR,IAAK,IAAIV,KAAKW,EAAOf,OAAOU,UAAUL,eAAee,KAAKL,EAAGX,IAAMmB,EAAEC,QAAQpB,GAAK,IAC9EU,EAAEV,GAAKW,EAAEX,IACb,GAAS,MAALW,GAAqD,mBAAjCf,OAAOyB,sBACtB,CAAA,IAAIT,EAAI,EAAb,IAAgBZ,EAAIJ,OAAOyB,sBAAsBV,GAAIC,EAAIZ,EAAEe,OAAQH,IAC3DO,EAAEC,QAAQpB,EAAEY,IAAM,GAAKhB,OAAOU,UAAUgB,qBAAqBN,KAAKL,EAAGX,EAAEY,MACvEF,EAAEV,EAAEY,IAAMD,EAAEX,EAAEY,KAE1B,OAAOF,EAsEX,SAAgBa,EAAOC,EAAGX,GACtB,IAAIY,EAAsB,mBAAXC,QAAyBF,EAAEE,OAAOC,UACjD,IAAKF,EAAG,OAAOD,EACf,IAAmBI,EAAYT,EAA3BP,EAAIa,EAAET,KAAKQ,GAAOK,EAAK,GAC3B,IACI,WAAc,IAANhB,GAAsB,EAANA,QAAce,EAAIhB,EAAEkB,QAAQC,MAAMF,EAAGG,KAAKJ,EAAEK,OAExE,MAAOC,GAASf,EAAI,CAAEe,MAAOA,WAEzB,IACQN,IAAMA,EAAEG,OAASN,EAAIb,EAAU,YAAIa,EAAET,KAAKJ,WAExC,GAAIO,EAAG,MAAMA,EAAEe,OAE7B,OAAOL,EAGX,SAAgBM,IACZ,IAAK,IAAIN,EAAK,GAAIjB,EAAI,EAAGA,EAAIE,UAAUC,OAAQH,IAC3CiB,EAAKA,EAAGO,OAAOb,EAAOT,UAAUF,KACpC,OAAOiB,EC9HX,SAAgBQ,EAAWC,GACzB,IAAKA,EAAMC,IACT,MAAO,GAIT,IAAKD,EAAME,UAAYF,EAAME,SAASD,MAAQD,EAAMC,IAAK,KACnDE,EAAiB,GACrB,GAAyB,iBAAdH,EAAMC,IAAkB,KAC3BA,GAAkC,IAA5BD,EAAMC,IAAInB,QAAQ,KAC1BkB,EAAMC,IACND,EAAMC,IAAIG,QAAQ,aAAc,OACpCD,GAA6B,IAAtBF,EAAInB,QAAQ,KAAcmB,EAAII,MAAM,KAAO,CAACJ,QAEnDE,EADS1C,MAAM6C,QAAQN,EAAMC,KACtBD,EAAMC,IAAIM,MAAM,GAEhB,CAAC,GAAGP,EAAMC,KAGnBD,EAAME,SAAW,CAAED,IAAKD,EAAMC,IAAKE,KAAIA,GAGzC,OAAOH,EAAME,SAASC,KAAKI,MAAM,GAGnC,IAAaC,EAAoB,CAAC,WAAY,UAAW,YAAa,YAAa,MAAO,OAE1F,SAAgBC,EAAiBT,EAA+BL,OAC1De,EAAQX,EAAWC,GACvB,GAAqB,IAAjBU,EAAMjC,OAAV,CAKA,QADIkC,EAAOX,EACJW,EAAKC,QAEVF,EAAKb,EAAOE,EADZY,EAAOA,EAAKC,QACqBF,GAGnC,GAAIf,IAAUkB,WAAab,EAAMc,YAAjC,KACQC,EAAIL,EAAMM,aACNN,EAAMO,OAAM,SAAEC,EAAOf,GAAS,OAAAe,EAAMf,IAAS,IAAIQ,EAAKO,OACvDH,QAOb,SAAgBI,EAAiBD,EAAYR,EAAiBf,GAC5D,IAAK,IAAIrB,EAAI,EAAGA,EAAKoC,EAAMjC,OAAS,EAAIH,IAAK,KACrC6B,EAAOO,EAAMpC,GACd4C,EAAMf,IAAUiB,EAASF,EAAMf,MAClCe,EAAMf,GAAQ,QAAQkB,KAAKX,EAAMpC,EAAI,IAAM,GAAK,IAGlD4C,EAAQA,EAAMf,GAGhBe,EAAMR,EAAMA,EAAMjC,OAAS,IAAM6C,EAAM3B,GAbvCwB,CAAiBR,EAAKO,MAAOR,EAAOf,IAgBtC,SAAgB4B,EAAcvB,WACxBkB,EAAQlB,EAAMY,OAAOM,UACzB,IAAmB,IAAAM,EDzBrB,SAwDgBC,EAASvC,GACrB,IAAIC,EAAsB,mBAAXC,QAAyBF,EAAEE,OAAOC,UAAWf,EAAI,EAChE,OAAIa,EAAUA,EAAET,KAAKQ,GACd,CACHM,KAAM,WAEF,OADIN,GAAKZ,GAAKY,EAAET,SAAQS,OAAI,GACrB,CAAES,MAAOT,GAAKA,EAAEZ,KAAMmB,MAAOP,KCrC3BwC,CAAA3B,EAAWC,IAAM2B,EAAAH,EAAAhC,QAAAmC,EAAAlC,KAAAkC,EAAAH,EAAAhC,OAAE,CAAjC,IAAMW,EAAIwB,EAAAhC,MACb,IAAKuB,EACH,OAAOA,EAETA,EAAQA,EAAMf,wGAGhB,OAAOe,EAGT,SAAgBU,EAAiBC,OAAW,IAAAC,EAAA,GAAAC,EAAA,EAAAA,EAAAvD,UAAAC,OAAAsD,IAAAD,EAAAC,EAAA,GAAAvD,UAAAuD,GAU1C,OATAD,EAAKE,QAAO,SAACC,GACX,IAAK,IAAIC,KAAUD,EACbE,EAAkBN,EAAKK,KAmBd,KAnBwCL,EAAKK,GACxDL,EAAKK,GAAUZ,EAAMW,EAAIC,KAyBFE,EAxBCP,EAAKK,GAwBKG,EAxBIJ,EAAIC,GAyBzCd,EAASgB,IAAShB,EAASiB,IAC7B/E,OAAOgF,eAAeF,KAAU9E,OAAOgF,eAAeD,KACpD5E,MAAM6C,QAAQ8B,KAAS3E,MAAM6C,QAAQ+B,IA1BtCT,EAAiBC,EAAKK,GAASD,EAAIC,KAuB3C,IAA+BE,EAAWC,IAnBjCR,EAGT,SAAgBM,EAAkBxC,GAChC,OAAOA,IAAUkB,WAAuB,OAAVlB,EAGhC,SAAgB4C,EAAY5C,GAC1B,OAAOA,IAAUkB,UAOnB,SAAgB2B,EAAW7C,GACzB,MAAyB,mBAAlB,EAST,SAAgByB,EAASqB,GACvB,OAAY,MAALA,GAA0B,iBAANA,EAO7B,SAAgBnB,EAAM3B,GACpB,IACGyB,EAASzB,IACP+C,EAAAA,aAAa/C,IACZA,aAAiBgD,EAAAA,aACYhD,EAAMiD,wCACwC,IAA5E,CAAC,SAAU,WAAY,OAAQ,QAAQ9D,QAAQa,EAAM5B,YAAY8E,MAEpE,OAAOlD,EAGT,GAAIA,aAAiBmD,IACnB,OAAO,IAAIA,IAAInD,GAGjB,GAAIA,aAAiBoD,IACnB,OAAO,IAAIA,IAAIpD,GAIjB,GAAIA,EAAMqD,kBAAoBR,EAAW7C,EAAM2B,OAC7C,OAAO3B,EAAM2B,QAGf,GAAI3B,aAAiBsD,EAAAA,gBACnB,OAAO,KAGT,GAAItD,aAAiBuD,KACnB,OAAO,IAAIA,KAAKvD,EAAMwD,WAGxB,GAAI1F,MAAM6C,QAAQX,GAChB,OAAOA,EAAMY,MAAM,GAAG6C,IAAG,SAACC,GAAK,OAAA/B,EAAM+B,SAKjCC,EAAQhG,OAAOgF,eAAe3C,GAChC4D,EAAIjG,OAAOW,OAAOqF,GAItB,OAHAC,EAAIjG,OAAOC,eAAegG,EAAGD,GAGtBhG,OAAOkG,KAAK7D,GAAOsB,OAAM,SAAEwC,EAAQC,OAClCC,EAAWrG,OAAOsG,yBAAyBjE,EAAO+D,GAOxD,OANIC,EAASE,IACXvG,OAAOwG,eAAeL,EAAQC,EAAMC,GAEpCF,EAAOC,GAAQpC,EAAM3B,EAAM+D,IAGtBD,GACNF,GAGL,SAAgBQ,EAAiB/D,EAAY0D,EAAcM,GACzD1G,OAAOwG,eAAe9D,EAAO0D,EAAM,CAAEO,YAAY,EAAOC,UAAU,EAAMC,cAAc,IACtFnE,EAAM0D,GAAQM,EAGhB,SAAgBI,EACdlF,EACAwE,EACAW,GAEKnF,EAAEoF,YACLP,EAAiB7E,EAAG,aAAc,IAG/BA,EAAEoF,WAAWZ,KAChBxE,EAAEoF,WAAWZ,GAAQ,QAGnBa,EAAsBrF,EAAEoF,WAAWZ,GAoBvC,OAnB4B,IAAxBa,EAAIzF,QAAQuF,KACdE,EAAI7E,KAAK2E,GACTA,EAAM,CAAEG,aAActF,EAAEwE,GAAOe,aAAa,IACzB,IAAfF,EAAI9F,SACNsF,EAAiB7E,EAAG,OAAOwE,EAAQxE,EAAEwE,IACrCpG,OAAOwG,eAAe5E,EAAGwE,EAAM,CAC7BS,cAAc,EACdN,IAAG,WAAQ,OAAA3E,EAAE,OAAOwE,IACpBgB,IAAG,SAAEF,GACH,GAAIA,IAAiBtF,EAAE,OAAOwE,GAAS,KAC/BiB,EAAgBzF,EAAE,OAAOwE,GAC/BxE,EAAE,OAAOwE,GAAUc,EACnBD,EAAIvC,QAAO,SAAC4C,GAAY,OAAAA,EAAS,CAAEC,cAAaF,EAAEH,aAAYA,EAAEC,aAAa,YAOvF,WAAa,OAAAF,EAAIO,OAAOP,EAAIzF,QAAQuF,GAAQ,ICxN9C,IAAaU,EAAgB,IAAIC,EAAAA,eAA6B,iBAY9DC,EAAA,WAAA,SAAAA,IAEEnH,KAAAoH,MAAsC,GACtCpH,KAAAqH,WAAkD,GAClDrH,KAAAsH,SAA8C,GAC9CtH,KAAAuH,SAAmE,GACnEvH,KAAAwH,qBAGI,CACFC,WAAY,GACZC,YAAa,IAEf1H,KAAA2H,OAAiC,CAC/BC,kBAAmB,uBACnBC,YAAY,EACZC,UAAS,SAAW5F,GAClB,OAAOA,EAAM6F,aAAe7F,EAAM6F,YAAYC,UAAY9F,EAAM6F,YAAYE,SAAY/F,EAAMgG,QAAQC,YAAcjG,EAAMgG,QAAQC,WAAWC,cAAiBlG,EAAMA,MAAMmG,aAAcnG,EAAMA,MAAMmG,WAAWC,SAGnNtI,KAAAuI,WAAkD,UAElDpB,EAAAjH,UAAAsI,UAAA,SAAUC,GAAV,IAAAC,EAAA1I,KACMyI,EAAOrB,OACTqB,EAAOrB,MAAMlD,QAAO,SAACyE,GAAQ,OAAAD,EAAKE,QAAQD,KAExCF,EAAOpB,YACToB,EAAOpB,WAAWnD,QAAO,SAAC2E,GAAa,OAAAH,EAAKI,aAAaD,KAEvDJ,EAAOnB,UACTmB,EAAOnB,SAASpD,QAAO,SAAC6E,GAAW,OAAAL,EAAKM,WAAWD,KAEjDN,EAAOQ,eACTC,QAAQC,KAAK,yFACbV,EAAOQ,aAAa/E,QAAO,SAACkF,GAAe,OAAAV,EAAKW,eAAeD,MAE7DX,EAAOa,oBACTb,EAAOa,mBAAmBpF,QAAO,SAACmE,GAAc,OAAAK,EAAKa,oBAAoBlB,EAAWtD,KAAMsD,EAAWmB,WAEnGf,EAAOF,YACTE,EAAOF,WAAWrE,QAAO,SAACuB,GAAK,OAAAiD,EAAKH,WAAW9C,EAAEV,MAAQU,EAAEgE,YAEzDhB,EAAOd,SACT3H,KAAK2H,OAAMvH,EAAA,GAAQJ,KAAK2H,OAAWc,EAAOd,UAI9CR,EAAAjH,UAAA0I,QAAA,SAAQV,GAAR,IAAAQ,EAAA1I,KACML,MAAM6C,QAAQ0F,GAChBA,EAAQhE,QAAO,SAAEwF,GAAW,OAAAhB,EAAKE,QAAQc,MAEpC1J,KAAKoH,MAAMc,EAAQnD,QACtB/E,KAAKoH,MAAMc,EAAQnD,MAAK,CAAiBA,KAAMmD,EAAQnD,OAGzD,CAAC,YAAa,UAAW,iBAAkB,YAAYb,QAAO,SAAC0B,GACzDsC,EAAQrI,eAAe+F,KACzB8C,EAAKtB,MAAMc,EAAQnD,MAAMa,GAAQsC,EAAQtC,QAMjDuB,EAAAjH,UAAAyJ,QAAA,SAAQ5E,GACN,IAAK/E,KAAKoH,MAAMrC,GACd,MAAM,IAAI6E,MAAM,4BAA4B7E,EAAI,mGAKlD,OAFA/E,KAAK6J,kBAAkB9E,GAEhB/E,KAAKoH,MAAMrC,IAGpBoC,EAAAjH,UAAA4J,eAAA,SAAe5H,GAAf,IAAAwG,EAAA1I,UAAe,IAAAkC,IAAAA,EAAA,QACPyG,EAAO3I,KAAK2J,QAAQzH,EAAMyG,MAC5BA,EAAKoB,gBACPjG,EAAiB5B,EAAOyG,EAAKoB,oBAGzBC,EAAiBrB,EAAKsB,YAAWjK,KAAK2J,QAAQhB,EAAKsB,YAASF,eAC9DC,GACFlG,EAAiB5B,EAAO8H,GAGtB9H,GAASA,EAAMgI,cACjBhI,EAAMgI,aAAahG,QAAO,SAACwF,OACnBK,EAAiBrB,EAAKiB,QAAQD,GAAQK,eACxCA,GACFjG,EAAiB5B,EAAO6H,SAKxBI,EAAenK,KAAKoK,oBAAoBlI,GAC1CiI,GAAgBA,EAAaE,UAAYF,EAAaE,SAASN,gBACjEjG,EAAiB5B,EAAOiI,EAAaE,SAASN,iBAG3C7H,EAAMoF,UAAYqB,EAAKrB,WAC1BpF,EAAMoF,SAAQvF,EAAO4G,EAAKrB,YAK9BH,EAAAjH,UAAAkK,oBAAA,SAAoBlI,GAClB,QADkB,IAAAA,IAAAA,EAAA,KACbA,EAAMyG,KACT,OAAO,SAGHA,EAAO3I,KAAK2J,QAAQzH,EAAMyG,MAChC,IAAKA,EAAK2B,WAAa3B,EAAoB,cACzC,OAAOA,EAAoB,cAGvB,IAAA4B,EAAArI,EAAAY,OAAAoF,QAAEsC,EAAAD,EAAAC,UAAWC,EAAAF,EAAAE,UACbN,EAAeK,EAClBE,wBAAmC/B,EAAK2B,WACxCnK,OAAOsK,GAKV,OAHAxE,EAAiB0C,EAAM,gBAAiBwB,GACxCA,EAAaQ,UAENhC,EAAoB,eAG7BxB,EAAAjH,UAAA8I,WAAA,SAAWd,GAAX,IAAAQ,EAAA1I,MACEA,KAAKsH,SAASY,EAAQnD,MAAQmD,GAClBd,OACVc,EAAQd,MAAMlD,QAAO,SAAEyE,GACrBD,EAAKkC,eAAejC,EAAMT,EAAQnD,SAKxCoC,EAAAjH,UAAA2K,WAAA,SAAW9F,GACT,IAAK/E,KAAKsH,SAASvC,GACjB,MAAM,IAAI6E,MAAM,+BAA+B7E,EAAI,mGAGrD,OAAO/E,KAAKsH,SAASvC,IAGvBoC,EAAAjH,UAAA0K,eAAA,SAAejC,EAAc5D,GACtB/E,KAAKoH,MAAMuB,KACd3I,KAAKoH,MAAMuB,GAAK,IAEb3I,KAAKoH,MAAMuB,GAAMrB,WACpBtH,KAAKoH,MAAMuB,GAAMrB,SAAW,KAEmB,IAA7CtH,KAAKoH,MAAMuB,GAAMrB,SAAStG,QAAQ+D,IACpC/E,KAAKoH,MAAMuB,GAAMrB,SAAS1F,KAAKmD,IAInCoC,EAAAjH,UAAA4I,aAAA,SAAaZ,GACXlI,KAAKqH,WAAWa,EAAQnD,MAAQmD,GAGlCf,EAAAjH,UAAA4K,aAAA,SAAa/F,GACX,IAAK/E,KAAKqH,WAAWtC,GACnB,MAAM,IAAI6E,MAAM,iCAAiC7E,EAAI,mGAGvD,OAAO/E,KAAKqH,WAAWtC,IAGzBoC,EAAAjH,UAAAqJ,oBAAA,SAAoBxE,EAAcyE,GAChCxJ,KAAKuH,SAASxC,GAAQyE,GAGxBrC,EAAAjH,UAAA6K,oBAAA,SAAoBhG,GAClB,OAAO/E,KAAKuH,SAASxC,IAGvBoC,EAAAjH,UAAAmJ,eAAA,SAAeD,IACb,IAAIA,EAAY4B,UAAQ5B,EAAY6B,QAAQjL,OAGtCmH,EAAAjH,UAAA2J,kBAAR,SAA0B9E,GACxB,GAAK/E,KAAKoH,MAAMrC,GAAMkF,WAAtB,KAIMiB,EAAelL,KAAK2J,QAAQ3J,KAAKoH,MAAMrC,GAAMkF,YAC9CjK,KAAKoH,MAAMrC,GAAMuF,YACpBtK,KAAKoH,MAAMrC,GAAMuF,UAAYY,EAAaZ,WAGvCtK,KAAKoH,MAAMrC,GAAMuC,WACpBtH,KAAKoH,MAAMrC,GAAMuC,SAAW4D,EAAa5D,gCA7L9C6D,EAAAA,WAAUnH,KAAA,CAAC,CAAEoH,WAAY,gHAA1B,GCnBAC,EAAA,WASE,SAAAA,EACUC,EACAC,EACAC,GAFAxL,KAAAsL,aAAAA,EACAtL,KAAAuL,yBAAAA,EACAvL,KAAAwL,SAAAA,SAGVH,EAAAnL,UAAAuL,UAAA,SAAU1D,EAAoC2D,EAAsCtI,EAAY8E,GAC9F,QAD4C,IAAAwD,IAAAA,EAAA,KACvC1L,KAAKsL,aAAa/C,WAAWoD,KAChC,MAAM,IAAI/B,MAAM,iGAGZ1H,EAAQ,CAAEwJ,WAAUA,EAAEtI,MAAKA,EAAE2E,YAAWA,EAAEG,QAASlI,KAAK4L,YAAY1D,IAC1ElI,KAAK6L,WAAW3J,GAChBA,EAAMgG,QAAQ4D,YAAY5J,GAAO,IAG3BmJ,EAAAnL,UAAA2L,WAAR,SAAmB3J,GAAnB,IAAAwG,EAAA1I,KACEA,KAAK+L,gBAAgB7H,QAAO,SAACuF,GAAa,OAAAA,EAAUuC,aAAevC,EAAUuC,YAAY9J,KACzFlC,KAAK+L,gBAAgB7H,QAAO,SAACuF,GAAa,OAAAA,EAAUwC,YAAcxC,EAAUwC,WAAW/J,KAEnFA,EAAMwJ,YACRxJ,EAAMwJ,WAAWxH,QAAO,SAAEgI,GAAM,OAAAxD,EAAKmD,WAAWK,KAGlDlM,KAAK+L,gBAAgB7H,QAAO,SAACuF,GAAa,OAAAA,EAAU0C,cAAgB1C,EAAU0C,aAAajK,MAGrFmJ,EAAAnL,UAAA6L,cAAR,WAAA,IAAArD,EAAA1I,KACE,OAAOR,OAAOkG,KAAK1F,KAAKsL,aAAa/C,YAAYjD,IAAG,SAACP,GAAQ,OAAA2D,EAAK4C,aAAa/C,WAAWxD,MAGpFsG,EAAAnL,UAAA0L,YAAR,SAAoB1D,GAApB,IAAAQ,EAAA1I,KA+CE,OA9CAkI,EAAUA,GAAW,IACbkE,UAAYlE,EAAQkE,WAAa,GAEpClE,EAAQJ,YACXI,EAAQJ,UAAY9H,KAAKsL,aAAa3D,OAAOG,WAG1CI,EAAQmE,cACXpG,EAAiBiC,EAAS,eAAgB,IAAIoE,EAAAA,SAG3CpE,EAAQsC,WACXvE,EAAiBiC,EAAS,YAAalI,KAAKuL,0BAGzCrD,EAAQuC,WACXxE,EAAiBiC,EAAS,YAAalI,KAAKwL,UAGzCtD,EAAQqE,wBACXrE,EAAQqE,sBAAwB,IAG7BrE,EAAQsE,gBACXtE,EAAQsE,cAAa,SAAItK,GACnBA,EAAMuK,gBACRvK,EAAMuK,eAAevI,QAAO,SAACwI,GAEDA,EAAIlB,SAASzF,IAAI4G,EAAAA,mBACzBC,iBAIlB1K,EAAMwJ,YACRxJ,EAAMwJ,WAAWxH,QAAO,SAACgI,GAAK,OAAAhE,EAAQsE,cAAcN,OAKrDhE,EAAQ2E,cACX3E,EAAQ2E,YAAW,SAAI3K,GAErB,OADAwG,EAAK+C,UAAUvJ,EAAM4K,KAAM5K,EAAMwJ,WAAYxJ,EAAMkB,MAAOlB,EAAMgG,SACzDhG,IAIJgG,uBAhFViD,EAAAA,WAAUnH,KAAA,CAAC,CAAEoH,WAAY,oDALjBjE,SAFY4F,EAAAA,gCAA0BC,EAAAA,wLAA/C,GCMA,SAAgBC,EAAkB/K,EAA0BgL,QAAA,IAAAA,IAAAA,GAAA,OACpDC,EAAUjL,EAAM6F,YAChBqF,EAAaD,EAAiB,QAAIA,EAAiB,QAAEnM,QAAQkB,IAAU,GACzD,IAAhBkL,GACFD,EAAiB,QAAEnG,OAAOoG,EAAY,OAGlCN,EAAOK,EAAc,OAC3B,GAAKL,EAAL,KAIMO,EAAO,CAAEH,UAASA,GACxB,GAAIJ,aAAgBQ,EAAAA,UAAW,KACvBC,EAAMT,EAAKU,SAASC,UAAS,SAAChI,GAAK,OAAAA,IAAM0H,KAClC,IAATI,GACFG,EAAcZ,EAAMO,EAAI,WAAQ,OAAAP,EAAKa,SAASJ,UAE3C,GAAIT,aAAgBc,EAAAA,UAAW,KAC9BhL,EAAQX,EAAWC,GACnB2L,EAAMjL,EAAMA,EAAMjC,OAAS,GAC7BmM,EAAK/G,IAAI,CAAC8H,MAAUV,GACtBO,EAAcZ,EAAMO,EAAI,WAAQ,OAAAP,EAAKgB,cAAcD,KAIvDV,EAAQY,UAAU,OAGpB,SAAgBC,EAAY9L,GAC1B,GAAIA,EAAM6F,YACR,OAAO7F,EAAM6F,YAGf,IAAkC,IAA9B7F,EAAwB,iBAC1B,OAAO,SAGH4K,EAAO5K,EAAMY,OAAkB,YAErC,OAAOgK,EAAOA,EAAK/G,IAAI9D,EAAWC,IAAU,KAG9C,SAAgB+L,EAAgB/L,EAA+BiL,EAAeD,QAAA,IAAAA,IAAAA,GAAA,IAC5EC,EAAUA,GAAWjL,EAAM6F,aACL,SACpB9B,EAAiBkH,EAAS,UAAW,KAEI,IAAvCA,EAAiB,QAAEnM,QAAQkB,IAC7BiL,EAAiB,QAAEvL,KAAKM,IAGrBA,EAAM6F,aAAeoF,IACxBlH,EAAiB/D,EAAO,cAAeiL,GACvCA,EAAQe,cAAc,MACtBf,EAAQgB,mBAAmB,MAE3BjM,EAAMkM,gBAAgBC,WAAanM,EAAMkM,gBAAgBC,SACzD/H,EAAapE,EAAMkM,gBAAiB,WAAU,SAAG7D,OAAE5D,EAAA4D,EAAA5D,YAAaD,EAAA6D,EAAA7D,aACzDC,IACHD,EAAexE,EAAM6F,YAAYuG,UAAYpM,EAAM6F,YAAYwG,YAG/DpB,EAAQqB,0BACVrB,EAAQqB,yBAAwB,SAC7B3M,GACCK,EAAMkM,gBAA8B,aAAIvM,EAExCK,EAAMgG,SAAWhG,EAAMgG,QAAQsE,cAActK,UAMjDY,EAASZ,EAAMY,OAAkB,YACrC,GAAKA,GAAWZ,EAAMC,IAAtB,KAIMS,EAAQX,EAAWC,GACnBL,EAAQ4B,EAAcvB,GAExBmC,EAAkB8I,EAAQtL,QAAUwC,EAAkBxC,IACrDsL,EAAQtL,QAAUA,KAClBsL,aAAmBsB,EAAAA,cAEtBtB,EAAQuB,WAAW7M,GAGrB,mBAASrB,OACD6B,EAAOO,EAAMpC,GACdsC,EAAOiD,IAAI,CAAC1D,KACfqL,EACE5K,EACA,CAAEoK,UAASA,GAAE,WACP,OAAApK,EAAO6L,WAAWtM,EAAM,IAAIuL,EAAAA,UAAU,OAIhD9K,EAAqBA,EAAOiD,IAAI,CAAC1D,KAV1B7B,EAAI,EAAGA,EAAKoC,EAAMjC,OAAS,EAAIH,MAA/BA,OAaH2B,EAAMS,EAAMA,EAAMjC,OAAS,GAC5BuB,EAAM0M,OAAS9L,EAAOiD,IAAI,CAAC5D,MAAUgL,GACxCO,EACE5K,EACA,CAAEoK,UAASA,GAAE,WACP,OAAApK,EAAO6L,WAAWxM,EAAKgL,MAKnC,SAAgB0B,EAAepJ,EAAoBqJ,QAAA,IAAAA,IAAAA,GAAA,OAC3CC,EAAStJ,EAAEsJ,OACXlN,EAAQ4D,EAAE5D,MAChB4D,EAAEuJ,uBAAuB,CAAE9B,WAAW,EAAO4B,SAAQA,IACjDC,IAAWtJ,EAAEsJ,QACdtJ,EAAe,cAA0BwJ,KAAKxJ,EAAEsJ,QAG/ClN,IAAU4D,EAAE5D,OACb4D,EAAc,aAAuBwJ,KAAKxJ,EAAE5D,OAIjD,SAAS6L,EAAcZ,EAA2BO,EAA8B6B,GAI1EpC,aAAgBc,EAAAA,YAAcd,EAA0B,sBAC1D7G,EAAiB6G,EAAM,uBAAuB,GAC9C,EAAcqC,cAAa,SAAIC,GAC7B5P,OACGkG,KAAKoH,EAAKU,UACVtJ,QAAO,SAACjB,GAAK,OAAA6J,EAAKU,SAASvK,IAAMmM,EAAGtC,EAAKU,SAASvK,GAAIA,WAOvD+L,EAAyBlC,EAAKkC,uBAAuBK,KAAKvC,IACzC,IAAnBO,EAAKH,YACPJ,EAAKkC,uBAAsB,SAAI3B,GAC7B2B,EAAsB5O,EAAA,GAAOiN,GAAQ,GAAE,CAAGH,WAAW,OAIzDgC,KAEuB,IAAnB7B,EAAKH,YACPJ,EAAKkC,uBAAyBA,oBCxEhC,SAAAM,EACUC,EACAjE,EACAkE,EAEgBC,EACJC,GANtB,IAAAhH,EAAA1I,KACUA,KAAAuP,cAAAA,EACAvP,KAAAsL,aAAAA,EACAtL,KAAAwP,OAAAA,EAGYxP,KAAA0P,gBAAAA,EA5CZ1P,KAAA2P,YAAc,IAAIC,EAAAA,aAsBpB5P,KAAAyP,WAAY,EAEZzP,KAAA6P,kBAAyB,GAGzB7P,KAAA8P,gBAAkC,GAClC9P,KAAA+P,aAAe,IAAIzD,EAAAA,QACnBtM,KAAAgQ,eAAiBhQ,KAAK+P,aAAaE,KACzCC,EAAAA,UAAS,WAAO,OAAAxH,EAAK8G,OAAOW,SAASC,eAAeH,KAAKI,EAAAA,KAAK,OAC9DC,UAAS,WAAO,OAAA5H,EAAK8G,OAAOe,WAAU,WAGtC7H,EAAK8H,wBACL9H,EAAKiH,YAAYV,KAAKvG,EAAKmH,kBAAoBrM,EAAMkF,EAAKtF,YAWxC,OAAdqM,GACFvG,QAAQC,KAAK,6JAGfnJ,KAAKyP,UAA2B,OAAdA,KAAyBnE,EAAa3D,OAAO8H,UAgKnE,OApOEjQ,OAAAwG,eACIsJ,EAAApP,UAAA,QAAK,KACT,WAKE,OAJKF,KAAKyQ,SACRzQ,KAAKyQ,OAAS,IAGTzQ,KAAKyQ,YAPd,SACUrN,GAAcpD,KAAKyQ,OAASzQ,KAAKyP,UAAYjM,EAAMJ,GAASA,mCAStE5D,OAAAwG,eACIsJ,EAAApP,UAAA,SAAM,KACV,WAAe,OAAOF,KAAK0Q,SAAW,QAFtC,SACWC,GAA+B3Q,KAAK0Q,QAAU1Q,KAAKyP,UAAYjM,EAAMmN,GAAUA,mCAG1FnR,OAAAwG,eACIsJ,EAAApP,UAAA,UAAO,KACX,WAAgB,OAAOF,KAAK4Q,cAF5B,SACY1I,GAA8BlI,KAAK4Q,SAAW5Q,KAAKyP,UAAYjM,EAAM0E,GAAWA,mCAI5F1I,OAAAwG,eAA0BsJ,EAAApP,UAAA,UAAO,KAAjC,SAAkC2Q,GAChC,GAAIA,EAAS,CAGX,QAFIC,GAAa,EACbC,EAAOF,EAAQG,cAAcC,YAC1BF,IAASD,IAEZC,EAAKG,WAAaC,KAAKC,cACpBL,EAAKG,WAAaC,KAAKE,WAAaN,EAAKO,aAA2C,KAA5BP,EAAKO,YAAYC,UAE5ET,GAAa,GAGfC,EAAOA,EAAKE,YAGVH,GACF5H,QAAQC,KAAK,wLAoCnBmG,EAAApP,UAAAsR,UAAA,WACqD,yBAA/CxR,KAAKsL,aAAa3D,OAAOC,mBAC3B5H,KAAKwQ,yBAITlB,EAAApP,UAAAuR,YAAA,SAAYC,GAENA,EAAQtO,OAASpD,KAAKkC,QACxBlC,KAAKkC,MAAMkB,MAAQpD,KAAKoD,OAGtBsO,EAAQf,QAAU3Q,KAAK8M,MDiD/B,SAAgB6E,EAAa7E,GAC3BA,EAAc,gBAAYA,EAAc,QACxCA,EAAKoB,cAAc,MACnBpB,EAAKqB,mBAAmB,OACpBrB,aAAgBc,EAAAA,WAAad,aAAgBQ,EAAAA,YAC/C9N,OAAOkG,KAAKoH,EAAKU,UACdtJ,QAAO,SAAEjB,GAAM,OAAA0O,EAAa7E,EAAKU,SAASvK,MCtD3C0O,CAAa3R,KAAK8M,OAGhB4E,EAAQf,QAAUe,EAAQ5E,MAAS4E,EAAQtO,OAASpD,KAAK6P,oBAAsB6B,EAAQtO,MAAMsD,gBAC/F1G,KAAK8M,KAAO9M,KAAK8M,MAAI,IAASc,EAAAA,UAAU,IACxC5N,KAAK4R,aACL5R,KAAKkI,QAAQ2J,qBACb7R,KAAK8R,0BACL9R,KAAKuP,cAAc9D,UAAUzL,KAAK8M,KAAM9M,KAAK2Q,OAAQ3Q,KAAKoD,MAAOpD,KAAKkI,SACtElI,KAAK+R,kBAAkB/R,KAAK2Q,UAIhCrB,EAAApP,UAAA8R,YAAA,WACEhS,KAAKgQ,eAAeiC,cACpBjS,KAAK8R,2BAGPxC,EAAApP,UAAAgS,YAAA,SAAY3H,GAAEA,EAAApI,QAAKN,EAAA0I,EAAA1I,MACjBc,EADwB4H,EAAArI,MACAL,GACxB7B,KAAK+P,aAAarO,QAGpB4N,EAAApP,UAAA0R,WAAA,WAAA,IAAAlJ,EAAA1I,KACOA,KAAKkI,UACRlI,KAAKkI,QAAU,IAGZlI,KAAKkI,QAAQiK,aAChBnS,KAAKkI,QAAQiK,WAAU,SAAI/O,GACzBA,EAAQI,EAAMa,EAAkBjB,GAAmCsF,EAAY,QAAE0J,cAAgBhP,GAC7FsF,EAAKtF,QACP5D,OAAOkG,KAAKgD,EAAKtF,OAAOc,QAAO,SAACjB,GAAK,cAAOyF,EAAKtF,MAAMH,KACvDzD,OAAOa,OAAOqI,EAAKtF,MAAOA,GAAS,KAGXsF,EAAY,QAAEmD,aAIpCnD,EAAKR,QAAQC,YAAcO,EAAKR,QAAQC,WAAWgF,UAAYzE,EAAKoE,KACtEpE,EAAKR,QAAQC,WAAWkK,UAAU3J,EAAKtF,OAEvCsF,EAAKoE,KAAKwF,MAAM5J,EAAKtF,UAKtBpD,KAAKkI,QAAQC,YAAcnI,KAAK0P,kBACnCzJ,EAAiBjG,KAAKkI,QAAS,aAAclI,KAAK0P,iBAClDpJ,EAAatG,KAAKkI,QAAQC,WAAY,YAAW,SAAGoC,GAAEA,EAAA5D,cAElD+B,EAAK8H,wBACqB9H,EAAY,QAAE8D,cAAc,CACpDd,WAAYhD,EAAKiI,OACjBvN,MAAOsF,EAAKtF,MACZ2E,YAAaW,EAAKoE,KAClB5E,QAASQ,EAAKR,cAMjBlI,KAAKkI,QAAQ2J,qBAChB7R,KAAKkI,QAAQ2J,mBAAkB,WAAS,OAA0BnJ,EAAY,QAAE0J,cAAgB5O,EAAMkF,EAAKtF,SAG9EpD,KAAY,QAAE6L,aACjB7L,KAAY,QAAE6L,WAAU,SAAI0G,QAAA,IAAAA,IAAAA,GAAA,GACpD7J,EAAKoJ,0BACLpJ,EAAK6G,cAAc9D,UAAU/C,EAAKoE,KAAMpE,EAAKiI,OAAQjI,EAAKtF,MAAOsF,EAAKR,SACtEQ,EAAKqJ,kBAAkBrJ,EAAKiI,QAExB4B,GACF7J,EAAKiH,YAAYV,KAAKvG,EAAKmH,kBAAoBrM,EAAMkF,EAAKtF,WAM1DkM,EAAApP,UAAAsQ,sBAAR,WACMxQ,KAAKkI,SAAqClI,KAAY,QAAE8L,aAChC9L,KAAY,QAAE8L,YAAY,CAClDJ,WAAY1L,KAAK2Q,OACjBvN,MAAOpD,KAAKoD,MACZ2E,YAAa/H,KAAK8M,KAClB5E,QAASlI,KAAKkI,WAKZoH,EAAApP,UAAA6R,kBAAR,SAA0BpB,EAA6B6B,GAAvD,IAAA9J,EAAA1I,UAAuD,IAAAwS,IAAAA,EAAA,IACrD7B,EAAOzM,QAAO,SAAChC,GACb,GAAIA,EAAMC,MAAQD,EAAMwJ,YAAcxJ,EAAM6F,YAAa,KACjD0K,EAAUvQ,EAAM6F,YAClB2K,EAAeD,EAAQC,aAAazC,KACtC0C,EAAAA,qBAAoB,SAAEhO,EAAGiO,GACvB,OAAIjO,IAAMiO,IAAKjT,MAAM6C,QAAQmC,KAAMrB,EAASqB,MAQ1C4F,EAAArI,EAAA2Q,aAAEC,EAAAvI,EAAAuI,SAAUC,EAAAxI,EAAAwI,WACZD,GAAyB,WAAbA,IAA0BC,GAA+B,EAAnBA,EAASC,aAC/DN,EAAeD,EAAQC,aAAazC,KAAKgD,EAAAA,aAAaF,EAASC,cAGjEtK,EAAKoH,gBAAgBlO,KAAK8Q,EAAapC,UAAS,SAAEzO,GAE5C4Q,aAAmBhE,EAAAA,aAAegE,EAAiB,SAAiC,EAA5BA,EAAiB,QAAE9R,QAC7E8R,EAAQ/D,WAAW7M,EAAO,CAAEqL,WAAW,EAAO4B,UAAU,IAGtD5M,EAAMgR,SAAkC,EAAvBhR,EAAMgR,QAAQvS,QACjCuB,EAAMgR,QAAQhP,QAAO,SAACiP,GAAY,OAAAtR,EAAQsR,EAAStR,KAGrD6G,EAAKwJ,YAAY,CAAE/P,IAAKiR,EAAIZ,EAAYvQ,EAAWC,IAAQmR,KAAK,KAAMxR,MAAKA,EAAEK,MAAKA,WAI9EoR,EAAYb,EAAQC,aAAwB,UAC9CY,GAAgC,EAAnBA,EAAU3S,QACzB2S,EAAUC,QAAQD,EAAUpQ,OAI5BhB,EAAMwJ,YAAwC,EAA1BxJ,EAAMwJ,WAAW/K,QACvC+H,EAAKqJ,kBAAkB7P,EAAMwJ,WAAYxJ,EAAMC,IAAGJ,EAAOyQ,EAAYvQ,EAAWC,IAAUsQ,MAKxFlD,EAAApP,UAAA4R,wBAAR,WACE9R,KAAK8P,gBAAgB5L,QAAO,SAACsP,GAAO,OAAAA,EAAIvB,gBACxCjS,KAAK8P,gBAAkB,IAGzBtQ,OAAAwG,eAAYsJ,EAAApP,UAAA,QAAK,KAAjB,WACE,OAAOF,KAAK2Q,QAAU3Q,KAAK2Q,OAAO,IAAM3Q,KAAK2Q,OAAO,GAAG7N,4DArP1D2Q,EAAAA,UAASzP,KAAA,CAAC,CACT0P,SAAU,cACVC,SAAU,wSAYVC,UAAW,CAACvI,gDArBLA,SACAlE,SAJkI0M,EAAAA,0CA0FtIC,EAAAA,UAAS9P,KAAA,CAAC,sBAzFgB+P,EAAAA,mBAAkBC,WAAA,CAAA,CAAArL,KA0F5CsL,EAAAA,4CAhEFC,EAAAA,qBAEAA,EAAAA,sBAUAA,EAAAA,uBAIAA,EAAAA,2BAIAC,EAAAA,wBACAC,EAAAA,UAASpQ,KAAA,CAAC,cAiNbsL,kBCvNE,SAAA+E,EACU/I,EACAgJ,EACAC,EACAC,EAEuBC,GALvBzU,KAAAsL,aAAAA,EACAtL,KAAAsU,SAAAA,EACAtU,KAAAuU,SAAAA,EACAvU,KAAAwU,WAAAA,EA1BVxU,KAAA0U,iBAAkB,EAcR1U,KAAA2P,YAAiC,IAAIC,EAAAA,aAGvC5P,KAAA2U,cAA4B,GAC5B3U,KAAA4U,cAAuB,GACvB5U,KAAA6U,eAA6B,GAC7B7U,KAAA8U,kBAAmB,EAUzB9U,KAAK0U,gBAAsC,OAApBD,EAsK3B,OAlMEjV,OAAAwG,eAAaqO,EAAAnU,UAAA,QAAK,KAAlB,SAAmBmB,GACjBrB,KAAK0U,iBAAmBxL,QAAQC,KAAK,wCAAwCnJ,KAAKC,YAAY8E,KAAI,4FAGpGvF,OAAAwG,eAAaqO,EAAAnU,UAAA,OAAI,KAAjB,SAAkB4M,GAChB9M,KAAK0U,iBAAmBxL,QAAQC,KAAK,uCAAuCnJ,KAAKC,YAAY8E,KAAI,4FAGnGvF,OAAAwG,eAAaqO,EAAAnU,UAAA,UAAO,KAApB,SAAqBgI,GACnBlI,KAAK0U,iBAAmBxL,QAAQC,KAAK,0CAA0CnJ,KAAKC,YAAY8E,KAAI,4FAsBtGsP,EAAAnU,UAAA6U,mBAAA,WACE/U,KAAKgV,YAAY,qBAGnBX,EAAAnU,UAAA+U,sBAAA,WACEjV,KAAKgV,YAAY,wBAGnBX,EAAAnU,UAAAgV,gBAAA,WACElV,KAAKgV,YAAY,kBAGnBX,EAAAnU,UAAAiV,mBAAA,WACEnV,KAAKgV,YAAY,qBAGnBX,EAAAnU,UAAAsR,UAAA,WACExR,KAAKgV,YAAY,WACbhV,KAAK8U,kBAAqB9U,KAAKkC,OAASlC,KAAKkC,MAAMgG,SACrDlI,KAAKoV,UAITf,EAAAnU,UAAAmV,SAAA,WACErV,KAAKgV,YAAY,WAGnBX,EAAAnU,UAAAuR,YAAA,SAAYC,GACV1R,KAAKgV,YAAY,YAAatD,IAGhC2C,EAAAnU,UAAA8R,YAAA,WACEhS,KAAKsV,UAAUtV,KAAKkC,OACpBlC,KAAK2U,cAAczQ,QAAO,SAAC+N,GAAe,OAAAA,MAC1CjS,KAAK6U,eAAe3Q,QAAO,SAAC+N,GAAe,OAAAA,MAC3CjS,KAAKgV,YAAY,cAGXX,EAAAnU,UAAAqV,YAAR,SAAoBC,EAAgCtJ,EAA2B5E,GAA/E,IAAAoB,EAAA1I,KAOE,QAP6E,IAAAsH,IAAAA,EAAA,IACzEtH,KAAKwV,eAAiBA,IACxBxV,KAAKsV,UAAUtV,KAAKkC,OACpBlC,KAAKwV,aAAaC,QAClBnO,EAAWtH,KAAKkC,MAAQlC,KAAKkC,MAAMoF,SAAW,IAG5CA,GAA8B,EAAlBA,EAAS3G,OAAY,CAC7B,IAAA4J,EAAApJ,EAAAmG,GAACyB,EAAAwB,EAAA,GAASmL,EAAAnL,EAAA9H,MAAA,GACR6H,EAAAtK,KAAAsL,aAAAT,WAAA9B,GAAAuB,UAEFqL,EAAMH,EAAaI,gBAA8B5V,KAAKuU,SAAS7J,wBAAwBJ,IAC7FtK,KAAK6V,mBAAmBF,EAAKzJ,GAC7B5F,EAA+BqP,EAAItL,SAAU,iBAAgB,SAAGE,OAAE5D,EAAA4D,EAAA5D,YAAaI,EAAAwD,EAAAxD,cAAeL,EAAA6D,EAAA7D,aAC5F,GAAIA,EAAc,CAChB,GAAIK,GAAiBA,EAA2B,cAAML,EAA0B,YAC9E,WAGIoP,EAAU/O,EAAgBA,EAAcgP,SAAW,KACrDD,IAAYA,EAAQE,UACtBtP,EAAauP,OAAOH,GAEpBpN,EAAK6M,YAAY7O,EAAcwF,EAAGwJ,IAGnC/O,GAAegP,EAAIO,kBAAkBC,wBAGrC,GAAIjK,GAAKA,EAAEvD,KAAM,CACd2B,EAAAtK,KAAAsL,aAAA3B,QAAAuC,EAAAvD,MAAA2B,UAAA,IACFoC,EAAM8I,EAAaI,gBAA8B5V,KAAKuU,SAAS7J,wBAAwBJ,IAC7FtK,KAAK6V,mBAAmBnJ,EAAKR,KAIzBmI,EAAAnU,UAAA8U,YAAR,SAAoBjQ,EAAc2M,GAChC,GAAI1R,KAAKkC,OAASlC,KAAKkC,MAAMkU,OAASpW,KAAKkC,MAAMkU,MAAMrR,MAChD2M,GAAWA,EAAQxP,OAAO,KACvBV,EAAIxB,KAAKkC,MAAMkU,MAAMrR,GAAM/E,KAAKkC,OACtC,GAAI0C,EAAAA,aAAapD,KAAyE,IAAnE,CAAC,SAAU,mBAAoB,iBAAiBR,QAAQ+D,GAAc,KACrFsR,EAAM7U,EAAE8O,YACdtQ,KAAK6U,eAAejT,KAAI,WAAO,OAAAyU,EAAIpE,iBAKrCjS,KAAKkC,OAASlC,KAAKkC,MAAMoU,WAAatW,KAAKkC,MAAMoU,UAAUvR,IAC7D/E,KAAKkC,MAAMoU,UAAUvR,GACnB/E,KAAKkC,MAAM4K,KACX9M,KAAKkC,MACLlC,KAAKkC,MAAMkB,MACXpD,KAAKkC,MAAMgG,SAIF,cAATnD,GAAwB2M,EAAQxP,QAClClC,KAAKsV,UAAU5D,EAAQxP,MAAM6E,eAC7B/G,KAAKoV,WAIDf,EAAAnU,UAAA2V,mBAAR,SAAgDnJ,EAAsBxK,GACpElC,KAAK4U,cAAchT,KAAK8K,GACxBxK,EAAMuK,eAAe7K,KAAK8K,GAC1BlN,OAAOa,OAAOqM,EAAIrC,SAAU,CAAEnI,MAAKA,KAG7BmS,EAAAnU,UAAAkV,OAAR,WAAA,IAAA1M,EAAA1I,KACOA,KAAKkC,QAKLlC,KAAKkC,MAAMgG,SAMhBlI,KAAK8U,kBAAmB,EACxB9U,KAAK2U,cAAczQ,QAAO,SAAC+N,GAAe,OAAAA,MAC1CjS,KAAK2U,cAAgB,CACnBrO,EAAatG,KAAKkC,MAAO,OAAM,SAAGqI,OAAE5D,EAAA4D,EAAA5D,YAAaD,EAAA6D,EAAA7D,aAC1CgC,EAAK4C,aAAa3D,OAAOE,WAMxBnB,GACFgC,EAAK8M,aAAaC,QACd/M,EAAKxG,MAAMqU,WACb7N,EAAK4L,SAASkC,gBAAgB9N,EAAK8L,WAAWxD,cAAe,WAG/DtI,EAAK6M,YAAY7M,EAAK8M,aAAc9M,EAAKxG,OACrCwG,EAAKxG,MAAMqU,WACb7N,EAAK4L,SAASmC,aAAa/N,EAAK8L,WAAWxD,cAAe,QAAStI,EAAKxG,MAAMqU,aAblF5P,GAAe+B,EAAK6M,YAAY7M,EAAK8M,aAAc9M,EAAKxG,SACnDyE,GAAgBA,GAAeD,IAClCgC,EAAK4L,SAASoC,SAAShO,EAAK8L,WAAWxD,cAAe,UAAWtK,EAAe,OAAS,OAgB/FJ,EAAatG,KAAKkC,MAAO,YAAW,SAAGqI,OAAE5D,EAAA4D,EAAA5D,YAAaD,EAAA6D,EAAA7D,gBAEhDC,GAAgBA,GAAeD,IAC5BgC,EAAK4C,aAAa3D,OAAOE,aAAmC,IAApBa,EAAKxG,MAAMyU,MAExDjO,EAAK4L,SAASmC,aAAa/N,EAAK8L,WAAWxD,cAAe,QAAStK,OAjCvE1G,KAAK8U,kBAAmB,IAuCpBT,EAAAnU,UAAAoV,UAAR,SAAkBpT,GAAlB,IAAAwG,EAAA1I,KACMkC,IACEA,EAAMuK,eACRvK,EAAMuK,eAAiBvK,EAAMuK,eAAemK,OAAM,SAAClK,GAAO,OAAqC,IAArChE,EAAKkM,cAAc5T,QAAQ0L,KAErFzG,EAAiBjG,KAAKkC,MAAO,iBAAkB,KAInDlC,KAAK4U,cAAgB,wBAzMxBnB,EAAAA,UAASzP,KAAA,CAAC,CACT0P,SAAU,eACVC,SAAU,sFATHxM,SAHwG0P,EAAAA,iBAD1C9J,EAAAA,gCACqD+J,EAAAA,8CA6CvHhD,EAAAA,UAAS9P,KAAA,CAAC,wDA9BZkQ,EAAAA,qBAIAA,EAAAA,oBAIAA,EAAAA,uBAIAA,EAAAA,2BAIAC,EAAAA,6BAEAC,EAAAA,UAASpQ,KAAA,CAAC,YAAW,CAAS+S,KAAMC,EAAAA,iBAAkBC,UAAQ,OAoLjE5C,kBCzKE,SAAA6C,EACU5C,EACAE,EACU2C,GAFVnX,KAAAsU,SAAAA,EACAtU,KAAAwU,WAAAA,EA/BFxU,KAAAoX,kBAAyB,GACzBpX,KAAAqX,aAAYtV,EACfW,EAAiB,CACpB,WACA,cACA,WACA,WACA,SAQM1C,KAAAsX,SAAW,CACjBC,UAAW,GACXC,OAAQ,CACN,QACA,QACA,UACA,aAaFxX,KAAKyX,SAAWN,EAmJpB,OA5JE3X,OAAAwG,eAAIkR,EAAAhX,UAAA,KAAE,KAAN,WAAkC,OAAOF,KAAKkC,MAAMkM,iBAAmB,oCAEvE5O,OAAAwG,eAAYkR,EAAAhX,UAAA,oBAAiB,KAA7B,WAAgD,OAAQF,KAAKkC,OAASlC,KAAKkC,MAAoB,cAAM,oCAUrGgV,EAAAhX,UAAAuR,YAAA,SAAYC,GAAZ,IAAAhJ,EAAA1I,KACM0R,EAAQxP,QACVlC,KAAKkC,MAAM6C,MAAQ/E,KAAKyW,aAAa,OAAQzW,KAAKkC,MAAM6C,MACxD/E,KAAKsX,SAASC,UAAUrT,QAAO,SAACwT,GAAY,OAAAA,MAC5C1X,KAAKsX,SAASE,OAAOtT,QAAO,SAACyT,GACvBjP,EAAKkP,IAAMlP,EAAKkP,GAAGD,IACrBjP,EAAK4O,SAASC,UAAU3V,KACtB8G,EAAK4L,SAASuD,OACZnP,EAAK8L,WAAWxD,cAChB2G,EAAS,SACR5W,GAAM,OAAA2H,EAAKkP,GAAGD,GAAWjP,EAAKxG,MAAOnB,QAM1Cf,KAAK4X,IAAM5X,KAAK4X,GAAGE,YACrBxR,EAAatG,KAAK4X,GAAI,aAAY,SAAGrN,OAAE7D,EAAA6D,EAAA7D,aAAcK,EAAAwD,EAAAxD,cAC/CA,GACFvH,OAAOkG,KAAKqB,GAAe7C,QAAO,SAAC6T,GAAQ,OAAArP,EAAK8N,gBAAgBuB,KAG9DrR,GACFlH,OAAOkG,KAAKgB,GAAcxC,QAAO,SAAC6T,GACN,MAAtBrR,EAAaqR,IACfrP,EAAK+N,aAAasB,EAAMrR,EAAaqR,QAO/C/X,KAAKgY,iBAAiBtG,EAAQxP,MAAM6E,eACpC/G,KAAKiY,iBAAiBvG,EAAQxP,MAAMwE,cACE,IAAlC1G,KAAKkY,kBAAkBvX,UACxBX,KAAKmY,IAAMnY,KAAKkC,MAAMiW,IAAMnY,KAAKyW,aAAa,KAAMzW,KAAKkC,MAAMiW,IAChE7R,EAAatG,KAAKkC,MAAO,QAAO,SAAGqI,OAAE7D,EAAA6D,EAAA7D,aACnCgC,EAAK0P,YAAY1R,OAKnBgL,EAAQyG,IACVnY,KAAKyW,aAAa,KAAMzW,KAAKmY,KAYjCjB,EAAAhX,UAAAsR,UAAA,WAAA,IAAA9I,EAAA1I,KACEA,KAAKqX,aAAanT,QAAO,SAAC6T,OAClBlW,EAAQ6G,EAAKkP,GAAGG,GAEpBrP,EAAK0O,kBAAkBW,KAAUlW,GAC5B6G,EAAKkP,GAAGE,YAAepP,EAAKkP,GAAGE,WAAWjY,eAAekY,EAAKM,kBAEnE3P,EAAK0O,kBAAkBW,GAAQlW,IACR,IAAVA,EACX6G,EAAK+N,aAAasB,GAAgB,IAAVlW,EAAiBkW,EAAO,GAAGlW,GAEnD6G,EAAK8N,gBAAgBuB,OAM7Bb,EAAAhX,UAAA8R,YAAA,WACEhS,KAAKsX,SAASC,UAAUrT,QAAO,SAACwT,GAAY,OAAAA,MAC5C1X,KAAKgY,iBAAiBhY,KAAKkC,QAG7BgV,EAAAhX,UAAAkY,YAAA,SAAYvW,GAAZ,IAAA6G,EAAA1I,KACQsY,EAAUtY,KAAKkY,kBAAoBlY,KAAKkY,kBAAkB,GAAK,KACrE,GAAKI,GAAYA,EAAQtH,cAAcuH,MAAvC,KAIMC,IAAcxY,KAAKyX,SAASgB,eAC7BzY,KAAKkY,kBACLQ,KAAI,SAAEnO,OAAEyG,EAAAzG,EAAAyG,cAAoB,OAAAtI,EAAK+O,SAASgB,gBAAkBzH,GAAiBA,EAAc2H,SAASjQ,EAAK+O,SAASgB,iBAEnH5W,IAAU2W,EACZF,EAAQtH,cAAcuH,SACZ1W,GAAS2W,GACnBF,EAAQtH,cAAc4H,SAI1B1B,EAAAhX,UAAA2Y,QAAA,SAAQC,GACN9Y,KAAKkC,MAAiB,WAAI,EACtBlC,KAAK4X,GAAGW,OACVvY,KAAK4X,GAAGW,MAAMvY,KAAKkC,MAAO4W,IAI9B5B,EAAAhX,UAAA6Y,OAAA,SAAOD,GACL9Y,KAAKkC,MAAiB,WAAI,EACtBlC,KAAK4X,GAAGgB,MACV5Y,KAAK4X,GAAGgB,KAAK5Y,KAAKkC,MAAO4W,IAI7B5B,EAAAhX,UAAA8Y,SAAA,SAASF,GACH9Y,KAAK4X,GAAGqB,QACVjZ,KAAK4X,GAAGqB,OAAOjZ,KAAKkC,MAAO4W,GAGzB9Y,KAAKkC,MAAM6F,aACb/H,KAAKkC,MAAM6F,YAAYmR,eAInBhC,EAAAhX,UAAA+X,iBAAR,SAAyB/L,GAClBA,IAIDA,EAAgB,eAAqD,IAAhDA,EAAgB,aAAElL,QAAQhB,KAAKwU,YACtDtI,EAAgB,aAAEtK,KAAK5B,KAAKwU,YAE5BvO,EAAiBiG,EAAG,eAAgB,CAAClM,KAAKwU,eAItC0C,EAAAhX,UAAA8X,iBAAR,SAAyB9L,OACjBiN,EAAQjN,GAAKA,EAAgB,aAAIlM,KAAKkY,kBAAkBlX,QAAQhB,KAAKwU,aAAe,GAC3E,IAAX2E,GACFnZ,KAAKkC,MAAoB,aAAE8E,OAAOmS,EAAO,IAIrCjC,EAAAhX,UAAAuW,aAAR,SAAqBsB,EAAclW,GACjC7B,KAAKsU,SAASmC,aAAazW,KAAKwU,WAAWxD,cAAe+G,EAAMlW,IAG1DqV,EAAAhX,UAAAsW,gBAAR,SAAwBuB,GACtB/X,KAAKsU,SAASkC,gBAAgBxW,KAAKwU,WAAWxD,cAAe+G,wBAhMhEqB,EAAAA,UAASpV,KAAA,CAAC,CACT0P,SAAU,qBACV2F,KAAM,CACJC,UAAW,kBACXC,SAAU,iBACVC,WAAY,iEAViD3C,EAAAA,iBAA7CC,EAAAA,8CAkDf2C,EAAAA,OAAMzV,KAAA,CAAC0V,EAAAA,8CApCTxF,EAAAA,MAAKlQ,KAAA,CAAC,gCACNkQ,EAAAA,SAwLHgD,KCnMAyC,EAAA,WAAA,SAAAA,KA2BA,OAvBEna,OAAAwG,eACI2T,EAAAzZ,UAAA,QAAK,KADT,WACc,OAAOF,KAAKkC,MAAMkB,WAChC,SAAU/B,GAAU6H,QAAQC,KAAK,wCAAwCnJ,KAAKC,YAAY8E,KAAI,4FAE9FvF,OAAAwG,eACI2T,EAAAzZ,UAAA,OAAI,KADR,WACa,OAAmBF,KAAKkC,MAAMY,OAAkB,iBAC7D,SAASgK,GAAQ5D,QAAQC,KAAK,uCAAuCnJ,KAAKC,YAAY8E,KAAI,4FAE1FvF,OAAAwG,eACI2T,EAAAzZ,UAAA,UAAO,KADX,WACgB,OAAOF,KAAKkC,MAAMgG,aAClC,SAAYA,GAAyBgB,QAAQC,KAAK,0CAA0CnJ,KAAKC,YAAY8E,KAAI,4FAEjHvF,OAAAwG,eAAI2T,EAAAzZ,UAAA,MAAG,KAAP,WAAY,OAAOF,KAAKkC,MAAMC,qCAE9B3C,OAAAwG,eAAI2T,EAAAzZ,UAAA,cAAW,KAAf,WAAoB,OAAOF,KAAKkC,MAAM6F,6CAEtCvI,OAAAwG,eAAI2T,EAAAzZ,UAAA,KAAE,KAAN,WAAW,OAAOF,KAAKkC,MAAMkM,iBAAmB,oCAEhD5O,OAAAwG,eAAI2T,EAAAzZ,UAAA,YAAS,KAAb,WAA2B,OAAOF,KAAKkI,QAAQJ,UAAU9H,uCAEzDR,OAAAwG,eAAI2T,EAAAzZ,UAAA,KAAE,KAAN,WAAmB,OAAOF,KAAKkC,MAAMiW,oCAErC3Y,OAAAwG,eAAI2T,EAAAzZ,UAAA,YAAS,KAAb,WAAkB,OAAOF,KAAKkI,QAAQkE,WAAa,mEAzBlD8H,EAAAA,qBAGAA,EAAAA,oBAIAA,EAAAA,uBAIAA,EAAAA,SAeHyF,EA3BA,iBAiCE,SAAAC,IAAA,IAAAlR,EACEmR,EAAAjZ,KAAAZ,OAAOA,YACPkJ,QAAQC,KAAK,qFAEjB,OALoC2Q,EAAAA,EAAAA,GAKpCF,GALoCD,GCxBpCI,EAAA,SAAAF,GAUE,SAAAE,EAA+CC,GAA/C,IAAAtR,EACEmR,EAAAjZ,KAAAZ,OAAOA,YALT0I,EAAAqB,eAAsB,CACpB7D,aAAc,IAMV8T,aAAmB3O,GACrBnC,QAAQC,KAAK,8CAA8CT,EAAKzI,YAAY8E,KAAI,wDA+CtF,OA5D8F+U,EAAAA,EAAAA,GAC5Fta,OAAAwG,eAAI+T,EAAA7Z,UAAA,cAAW,KAAf,WACE,OAAOF,KAAKkC,MAAiB,6CAe/B6X,EAAA7Z,UAAA+L,WAAA,SAAW/J,GACT,IAAKA,EAAM6F,aAAe7F,EAAMC,IAAK,KAC7BgL,EAAUa,EAAY9L,GAC5B+L,EAAgB/L,EAAOiL,GAAoB,IAAIG,EAAAA,UAAU,GAAI,CAAEwF,SAAU5Q,EAAM2Q,aAAaC,YAG9F5Q,EAAMwJ,WAAaxJ,EAAMwJ,YAAc,OAEjC/K,EAASuB,EAAMkB,MAAQlB,EAAMkB,MAAMzC,OAAS,EAClD,GAAIuB,EAAMwJ,WAAW/K,OAASA,EAC5B,IAAK,IAAIH,EAAI0B,EAAMwJ,WAAW/K,OAAS,EAAQA,GAALH,IAAeA,EACvDyM,EAAkB/K,EAAMwJ,WAAWlL,IACnC0B,EAAMwJ,WAAW1E,OAAOxG,EAAG,GAI/B,IAASA,EAAI0B,EAAMwJ,WAAW/K,OAAQH,EAAIG,EAAQH,IAAK,KAC/C0L,EAAC9L,EAAA,GAAQoD,EAAMtB,EAAM+X,YAAW,CAAE9X,IAAK,GAAG3B,IAChD0B,EAAMwJ,WAAW9J,KAAKsK,KAI1B6N,EAAA7Z,UAAAga,IAAA,SAAI1Z,EAAY2Z,EAAoB5P,OAAE2O,QAAA,IAAA3O,EAAA,CAAA2O,aAAA,GAAA3O,GAAA2O,YACpC1Y,EAAI6D,EAAkB7D,GAAKR,KAAKkC,MAAMwJ,WAAW/K,OAASH,EACrDR,KAAKoD,OACRT,EAAiB3C,KAAKkC,MAAO,IAG/BlC,KAAKoD,MAAM4D,OAAOxG,EAAG,EAAG2Z,EAAe3W,EAAM2W,GAAgBpX,WAEtD/C,KAAY,QAAE6L,YAAW,GAChCqN,GAAelZ,KAAK+H,YAAYmR,eAGlCa,EAAA7Z,UAAAka,OAAA,SAAO5Z,EAAW+J,OAAE2O,QAAA,IAAA3O,EAAA,CAAA2O,aAAA,GAAA3O,GAAA2O,YAClBlZ,KAAKoD,MAAM4D,OAAOxG,EAAG,GACrByM,EAAkBjN,KAAKkC,MAAMwJ,WAAWlL,IAAI,GAC5CR,KAAKkC,MAAMwJ,WAAW1E,OAAOxG,EAAG,GAChCR,KAAKkC,MAAMwJ,WAAWxH,QAAO,SAAEgI,EAAG/J,GAAQ,OAAA+J,EAAE/J,IAAM,GAAGA,IAE9CnC,KAAY,QAAE6L,YAAW,GAChCqN,GAAelZ,KAAK+H,YAAYmR,mCA3DnCE,EAAAA,UAASpV,KAAA,CAAC,CAAE0P,SAAU,6DARdrI,EAAiB2I,WAAA,CAAA,CAAArL,KAkBX8Q,EAAAA,OAAMzV,KAAA,CAACiD,IAAa,CAAA0B,KAAGsL,EAAAA,cAmDtC8F,EA7DA,CAC8FJ,GCT9FU,EAAA,SAAAR,GAAA,SAAAQ,mDAGA,OAH4FP,EAAAA,EAAAA,2CAEzF1F,EAAAA,UAASpQ,KAAA,CAAC,iBAAgB,CAAS+S,KAAMC,EAAAA,iBAAkBC,UAAQ,OACtEoD,EAHA,CAA4FV,iBCD5F,SAAAW,IAAA,IAAA5R,EAAA,OAAAmR,GAAAA,EAAAhZ,MAAAb,KAAAU,YAAAV,YAWE0I,EAAAqB,eAAiB,CACf7D,aAAc,MAElB,OAJiC4T,EAAAA,EAAAA,uBAVhCrG,EAAAA,UAASzP,KAAA,CAAC,CACT0P,SAAU,eACVC,SAAU,wHAIV0F,KAAM,CACJkB,UAAW,uCAOfD,GAJiCX,GCbjCa,EAAA,WAiBE,SAAAA,EAAoBlP,GAAAtL,KAAAsL,aAAAA,EA8DtB,OA5DEkP,EAAAta,UAAAuR,YAAA,WAAA,IAAA/I,EAAA1I,KACEA,KAAKya,cAAgBC,EAAAA,MACnB1a,KAAKkC,MAAM6F,YAAY4S,cAEpB3a,KAAKkC,MAAMgG,QAEVlI,KAAKkC,MAAMgG,QAAQmE,aAAa4D,KAC9B2G,EAAAA,OAAM,SAAErM,OAAErI,EAAAqI,EAAArI,MAAOyG,EAAA4B,EAAA5B,KAAMiS,EAAArQ,EAAAqQ,SACrB,OAAQ1Y,IAAUwG,EAAKxG,OACR,sBAATyG,IACoC,IAApCiS,EAAS5Z,QAAQ,iBAL3B6Z,EAAAA,GAAG,OAUP5K,KACA6K,EAAAA,UAAU,MACV5K,EAAAA,UAAS,WAAO,OAAAtL,EAAAA,aAAa8D,EAAKqS,cAC9BrS,EAAKqS,aACLF,EAAAA,GAAGnS,EAAKqS,kBAKhBvb,OAAAwG,eAAIwU,EAAAta,UAAA,eAAY,KAAhB,eACQ8a,EAAYhb,KAAKkC,MAAM6F,YAC7B,IAAK,IAAIjG,KAASkZ,EAAUC,OAC1B,GAAID,EAAUC,OAAOpb,eAAeiC,GAAQ,KACtC0H,EAA8CxJ,KAAKsL,aAAaP,oBAAoBjJ,GAExF,GAAIwB,EAAS0X,EAAUC,OAAOnZ,IAAS,CACrC,GAAIkZ,EAAUC,OAAOnZ,GAAOoZ,UAC1B,OAGEF,EAAUC,OAAOnZ,GAAO0H,UAC1BA,EAAUwR,EAAUC,OAAOnZ,GAAO0H,SAgBtC,OAZIxJ,KAAKkC,MAAMmG,YAAcrI,KAAKkC,MAAMmG,WAAWd,UAAYvH,KAAKkC,MAAMmG,WAAWd,SAASzF,KAC5F0H,EAAUxJ,KAAKkC,MAAMmG,WAAWd,SAASzF,IAGvC9B,KAAKkC,MAAMmF,YAAcrH,KAAKkC,MAAMmF,WAAWvF,IAAU9B,KAAKkC,MAAMmF,WAAWvF,GAAO0H,UACxFA,EAAUxJ,KAAKkC,MAAMmF,WAAWvF,GAAO0H,SAGrCxJ,KAAKkC,MAAMiZ,iBAAmBnb,KAAKkC,MAAMiZ,gBAAgBrZ,IAAU9B,KAAKkC,MAAMiZ,gBAAgBrZ,GAAO0H,UACvGA,EAAUxJ,KAAKkC,MAAMiZ,gBAAgBrZ,GAAO0H,SAGvB,mBAAZA,EACFA,EAAQwR,EAAUC,OAAOnZ,GAAQ9B,KAAKkC,OAGxCsH,wDAnEdiK,EAAAA,UAASzP,KAAA,CAAC,CACT0P,SAAU,4BACVC,SAAU,8BACVyH,gBAAiBC,EAAAA,wBAAwBC,oDAVlCnU,oCAaN+M,EAAAA,SAiEHsG,EA/EA,iBCuBE,SAAAe,EAAoBC,GAApB,IAAA9S,EACEmR,EAAAjZ,KAAAZ,OAAOA,YADW0I,EAAA8S,UAAAA,EADZ9S,EAAA+S,UAAY,CAAE5K,QAAS,KAAM8C,SAAU,QAIjD,OAlBwCmG,EAAAA,EAAAA,GACtCta,OAAAwG,eAAIuV,EAAArb,UAAA,WAAQ,KAAZ,WAUE,OATIF,KAAKkC,OAAUlC,KAAKkC,MAAMyR,WAAa3T,KAAKyb,UAAU9H,WACxD3T,KAAKyb,UAAY,CACf9H,SAAU3T,KAAKkC,MAAMyR,SACrB9C,QAAS7Q,KAAK4X,GAAG8D,SACb1b,KAAKwb,UAAUG,wBAAwB3b,KAAKkC,MAAMyR,UAClD3T,KAAKkC,MAAMyR,WAIZ3T,KAAKyb,UAAU5K,6DAfzB4C,EAAAA,UAASzP,KAAA,CAAC,CACT0P,SAAU,kBACVC,SAAU,kFALHiI,EAAAA,gBAyBTL,GAlBwC5B,GCYxC,SAAgBkC,EAAeC,EAAyCC,EAAcC,GACpF,OAAIF,aAAsBG,SACjBH,EAAWjb,MAAMkb,EAASC,KAE1BF,ECfX,iBAAA,SAAAI,KAiUA,OAhUEA,EAAAhc,UAAA8L,YAAA,SAAY9J,GAAZ,IAAAwG,EAAA1I,KACE,IAAIkC,EAAMY,SAAUZ,EAAMgG,QAAQ4D,YAAlC,KAIIqQ,GAAc,EAClBja,EAAMgG,QAAQ4D,YAAW,SAAII,EAAGkQ,GACzBD,IACHA,GAAc,EACdzT,EAAK2T,WAAWnQ,EAAGkQ,GACnBD,GAAc,MAKpBD,EAAAhc,UAAAiM,aAAA,SAAajK,GAAb,IAAAwG,EAAA1I,KACE,GAAKkC,EAAMY,SAAUZ,EAAMoa,sBAA3B,CAOA,GAFArW,EAAiB/D,EAAO,wBAAyB,IAE7CA,EAAMqa,qBAAsB,gBACnBpa,OACHqa,EAAqBta,EAAMqa,qBAAqBpa,GAEtD,GAAkC,iBAAvBqa,GAAmC9X,EAAW8X,GACvDta,EAAMoa,sBAAsBna,GAAO,CACjC2Z,WAAYW,EAAKC,gBACfva,EACAqa,EACQ,6BAARra,GAAsCD,EAAMY,OAAOyZ,sBAAwBra,EAAMY,OAAOyZ,qBAAqB1c,eAAe,uCAClH,OAAAqC,EAAMY,OAAOsL,gBAAgBC,UACnCtL,YAGI,6BAARZ,GACF3C,OAAOwG,eAAe9D,EAAMoa,sBAAsBna,GAAM,kBAAmB,CACzE4D,IAAG,WAAQ,OAAA7D,EAAMkM,gBAAgBC,UACjCzH,IAAG,aACHT,YAAY,EACZE,cAAc,SAGb,GAAImW,aAA8BG,EAAAA,WAAY,KAC7CC,EAAS,WAAS,OAAA,EACrBtM,UAAS,SAAC/K,GACTmD,EAAKmU,aAAa3a,EAAOC,EAAKoD,GAC1BrD,EAAMgG,SAAWhG,EAAMgG,QAAQsE,eACjCtK,EAAMgG,QAAQsE,cAActK,MAI9B4a,EAA6BF,IAC3BG,EAAS7a,EAAMkU,MAAM4G,OAC3B9a,EAAMkU,MAAM4G,OAAM,WAIhB,OAHqB,OAAjBF,IACFA,EAAeF,KAEVG,GAAUA,EAAO7a,QAGpB+a,EAAY/a,EAAMkU,MAAM8G,UAC9Bhb,EAAMkU,MAAM8G,UAAS,WACnBD,GAAaA,EAAU/a,GACvB4a,EAAa7K,cACb6K,EAAe,eA3CrB,IAAK,IAAM3a,KAAOD,EAAMqa,uBAAbpa,GAiDTD,EAAMib,uBAEDjb,EAAMyU,KAEbzU,EAAMib,eAAiBnd,KAAK0c,gBAC1B,OACAxa,EAAMib,eAAc,WAGlB,QADIta,EAAOX,EAAMY,OACVD,EAAKC,SAAWD,EAAK8T,MAC1B9T,EAAOA,EAAKC,OAGd,OAAOD,EAAK8T,QAIhBrQ,EAAapE,EAAO,OAAM,SAAGqI,OAAE7D,EAAA6D,EAAA7D,aAAcC,EAAA4D,EAAA5D,YAC3CzE,EAAM0M,MAAQlI,IACTC,GAAgBA,IAAgC,IAAjBD,IAClCxE,EAAMgG,QAAQqE,sBAAsB3K,KAAKM,OAMzCga,EAAAhc,UAAAwc,gBAAR,SAAwB9W,EAAckW,EAAYsB,GAChD,OAAA,eAAQ,IAAApZ,EAAA,GAAAC,EAAA,EAAAA,EAAAvD,UAAAC,OAAAsD,IAAAD,EAAAC,GAAAvD,UAAAuD,GACN,IASE,MAR0B,iBAAf6X,IACTA,EDjHV,SAAgBuB,EAAqBvB,EAAoBwB,GACvD,IAKE,OAJ0C,IAAtCxB,EAAW9a,QAAQ,eACrBkI,QAAQC,KAAK,wGAGR8S,SAAQpb,WAAA,EAAAkB,EAAIub,EAAQ,CAAE,UAAUxB,EAAU,OACjD,MAAOha,GACPoH,QAAQpH,MAAMA,ICyGKub,CAAqBvB,EAAY,CAAC,QAAS,YAAa,WAG7C,mBAAfA,IACTA,EAAU,WAAS,QAAEA,IAGfsB,GAAoBA,KAAuBtB,EAAUjb,WAAA,EAAAkB,EAAIiC,IACjE,MAAOlC,GAEP,MADAA,EAAM0H,QAAU,+BAA+B5D,EAAI,MAAM9D,EAAM0H,QACzD1H,KAKJoa,EAAAhc,UAAAmc,WAAR,SAAmBna,EAA+Bka,GAAlD,IAAA1T,EAAA1I,UAAkD,IAAAoc,IAAAA,GAAA,OAC1CmB,EAAevd,KAAK8L,YAAY5J,EAAOka,GAE7Cla,EAAMgG,QAAQqE,sBACXiR,KAAI,SAACtR,GAAK,OAAAA,EAAEyK,MAAQ,EAAI,IACxBzS,QAAO,SAACgI,GAAK,OAAAxD,EAAK+U,kBAAkBvR,IAAKA,EAAEyK,MAAOyF,KAErDla,EAAMgG,QAAQqE,sBAAwB,GAClCgR,IACFvd,KAAKqc,WAAWna,GACZA,EAAMgG,SAAWhG,EAAMgG,QAAQsE,eACjCtK,EAAMgG,QAAQsE,cAActK,KAK1Bga,EAAAhc,UAAA4L,YAAR,SAAoB5J,EAA+Bka,GAAnD,IAAA1T,EAAA1I,UAAmD,IAAAoc,IAAAA,GAAA,OAC7CmB,GAAe,EAiBnB,OAhBArb,EAAMwJ,WAAWxH,QAAO,SAACgI,GAClBA,EAAEhE,UAIPQ,EAAKgV,2BAA2BxR,EAAGkQ,KAAiBmB,GAAe,GAC/D7U,EAAKiV,2BAA2BzR,EAAGkQ,KACrCla,EAAMgG,QAAQqE,sBAAsB3K,KAAKsK,GACzCqR,GAAe,GAGbrR,EAAER,YAAoC,EAAtBQ,EAAER,WAAW/K,QAC/B+H,EAAKoD,YAAYI,EAAGkQ,KAAiBmB,GAAe,MAIjDA,GAGDrB,EAAAhc,UAAAwd,2BAAR,SAAmCxb,EAA+Bka,GAChE,IAAKla,IAAUA,EAAMoa,sBACnB,OAAO,MAGL1P,GAAe,EACb2P,EAAuBra,EAAMoa,sBAEnC,IAAK,IAAMna,KAAOoa,EAAsB,KAClCqB,EAAkB/B,EAAeU,EAAqBpa,GAAK2Z,WAAY,CAAE5Z,MAAKA,GAAI,CAACA,EAAMkB,MAAOlB,EAAMgG,QAAQkE,UAAWlK,EAAOka,IACxH,6BAARja,IACFyb,IAAoBA,IAIpBxB,GACEG,EAAqBpa,GAAKyb,kBAAoBA,KAE1Cta,EAASsa,KAAoBlZ,EAAWkZ,IAExClZ,EAAWkZ,IACP,GAAKrB,EAAqBpa,GAAKyb,iBAAoB,GAAKA,GAE3DhZ,EAAAA,aAAagZ,IACbC,KAAKC,UAAUF,KAAqBC,KAAKC,UAAUvB,EAAqBpa,GAAKyb,qBAIpFhR,GAAe,EACf2P,EAAqBpa,GAAKyb,gBAAkBA,EAC5C5d,KAAK6c,aAAa3a,EAAOC,EAAKyb,IAIlC,OAAOhR,GAGDsP,EAAAhc,UAAAyd,2BAAR,SAAmCzb,EAA+Bka,GAChE,IAAKla,GAASmC,EAAkBnC,EAAMib,gBACpC,OAAO,MAGHY,IAAkClC,EACtC3Z,EAAMib,eACN,CAAEjb,MAAKA,GACP,CAACA,EAAMkB,MAAOlB,EAAMgG,QAAQkE,UAAWlK,EAAOka,IAE5CxP,GAAe,EAQnB,OAPImR,IAAyB7b,EAAMyU,MAAQyF,KACzCxP,GAAe,EAEf1K,EAAMyU,KAAOoH,EACb7b,EAAMkM,gBAAgB4P,OAASD,GAG1BnR,GAGDsP,EAAAhc,UAAA+d,iBAAR,SAAyB/b,EAA0BL,GAAnD,IAAA6G,EAAA1I,KACMkC,EAAMwJ,YACRxJ,EAAMwJ,WACHkL,OAAM,SAAC1K,GAAK,OAACA,EAAEqQ,uBAAyBrQ,EAAEqQ,qBAAqB1c,eAAe,8BAC9EqE,QAAO,SAACgI,GAAK,OAAAxD,EAAKuV,iBAAiB/R,EAAGrK,KAGvCK,EAAMC,KAAOD,EAAMkM,gBAAgBC,WAAaxM,IAClDK,EAAMkM,gBAAgBC,SAAWxM,IAI7Bqa,EAAAhc,UAAAud,kBAAR,SAA0Bvb,EAA+ByU,EAAe3T,GAAxE,IAAA0F,EAAA1I,KAOE,GANIkC,EAAMwJ,YACRxJ,EAAMwJ,WACHkL,OAAM,SAAC1K,GAAK,OAACA,EAAEiR,iBACfjZ,QAAO,SAACgI,GAAK,OAAAxD,EAAK+U,kBAAkBvR,EAAGyK,EAAM3T,KAG9Cd,EAAM6F,aAAe7F,EAAMC,IAAK,CAClC8D,EAAiB/D,EAAO,WAAYyU,IAAQzU,EAAMyU,WAC5ClR,EAAIvD,EAAM6F,YACZtC,EAAW,SAA2B,EAAtBA,EAAW,QAAE9E,QAC/BkO,EAAepJ,IAGJ,IAATkR,GAAmBlR,EAAW,UAAKA,EAAW,QAAEyY,MAAK,SAAChS,GAAK,QAAEA,EAAE0C,SAY/C,IAAT+H,IACLzU,EAAMc,aAAed,EAAMY,SAAW2B,EAAYvC,EAAMgE,eAAiBzB,EAAYhB,EAAcvB,KACrGS,EAAiBT,EAAOA,EAAMgE,cAEhC+H,EAAgB/L,EAAOa,WAAW,GAC9Bb,EAAMc,aAAed,EAAM+X,aAAe/X,EAAMwJ,YAAc,IAAI/K,UAAYuB,EAAMkB,OAAS,IAAIzC,QAC5FuB,EAAa,QAAE2J,YAAW,KAjBnCoB,EAAkB/K,GAAO,GACrBc,GAAed,EAAMc,cACvBd,EAAM6F,YAAYuK,MAAM,CAAEzQ,MAAOkB,UAAWsL,SAAUnM,EAAM6F,YAAYsG,WACpEnM,EAAMwJ,aACR/I,EAAiBT,EAAOa,WAEpBb,EAAM6F,uBAAuBuF,EAAAA,YAC/BpL,EAAMwJ,WAAW/K,OAAS,MAehCuB,EAAMgG,QAAQmE,cAChBnK,EAAMgG,QAAQmE,aAAa3K,KAAI,CAA4BQ,MAAKA,EAAEyG,KAAM,SAAU9G,MAAO8U,KAIrFuF,EAAAhc,UAAA2c,aAAR,SAAqB3a,EAA+B0D,EAAc/D,GAChE,IAUE,QATIsc,EAASjc,EACPU,GAA+B,IAAvBgD,EAAK5E,QAAQ,KACvB4E,EAAKrD,MAAM,KACXqD,EACCtD,QAAQ,SAAU,IAClBC,MAAM,cACNqU,OAAM,SAACrR,GAAK,OAAAA,IAEX6Y,EAAYxb,EAAMjC,OAAS,EACxBH,EAAI,EAAGA,EAAI4d,EAAW5d,IAC7B2d,EAASA,EAAOvb,EAAMpC,IAGxB2d,EAAOvb,EAAMwb,IAAcvc,EAC3B,MAAOC,GAEP,MADAA,EAAM0H,QAAU,+BAA+B5D,EAAI,MAAM9D,EAAM0H,QACzD1H,EAOR,GAJa,6BAAT8D,GAAuC1D,EAAMC,KAC/CnC,KAAKie,iBAAiB/b,EAAOL,GAGA,IAA3B+D,EAAK5E,QAAQ,UAAiB,KAC1BqB,EAAOuD,EAAKtD,QAAQ,WAAY,IACpC6K,EAAUjL,EAAMC,KAAOyD,IAASvD,EAAOH,EAAM6F,YAAc7F,EAAMY,OAAOiF,YAAYhC,IAAI1D,IAGxF8K,GACK9I,EAAkB8I,EAAQtL,QAAUwC,EAAkBxC,IACxDsL,EAAQtL,QAAUA,GAErBsL,EAAQuB,WAAW7M,GAIvB7B,KAAKqe,sBAAsBnc,EAAO0D,EAAM/D,IAGlCqa,EAAAhc,UAAAme,sBAAR,SAA8Bnc,EAA+B0Y,EAAkB/Y,GACxEK,EAAMgG,QAAQmE,cAInBnK,EAAMgG,QAAQmE,aAAa3K,KAAK,CAC9BQ,MAAOA,EACPyG,KAAM,oBACNiS,SAAQA,EACR/Y,MAAKA,KAGXqa,kBChUE,SAAAoC,EAAoBhT,GAAAtL,KAAAsL,aAAAA,EAqJtB,OAnJEgT,EAAApe,UAAA+L,WAAA,SAAW/J,GACTlC,KAAKue,oBAAoBrc,EAAO,cAChClC,KAAKue,oBAAoBrc,EAAO,oBAG1Boc,EAAApe,UAAAqe,oBAAR,SAA4Brc,EAA+ByG,GAA3D,IAAAD,EAAA1I,KACQqH,EAA4B,GAKlC,GAJa,eAATsB,GAA2BzG,EAAMrC,eAAe,gBAAkBqC,EAAMC,KAC1EkF,EAAWzF,KAAK5B,KAAKwe,6BAA6Btc,IAGhDA,EAAMyG,GACR,IAAK,IAAM8V,KAAiBvc,EAAMyG,GACV,eAAlB8V,GAAmC9e,MAAM6C,QAAQN,EAAMyG,GAAMN,cAC/DnG,EAAMyG,GAAMN,WAAa,CAACnG,EAAMyG,GAAMN,YACtCa,QAAQC,KAAK,aAAajH,EAAMC,IAAG,0FAGnB,eAAlBsc,EACIpX,EAAWzF,KAAIf,MAAfwG,EAAUtF,EAASG,EAAMyG,GAAMN,WAAW/C,IAAG,SAACC,GAAK,OAAAmD,EAAKgW,kBAAkBxc,EAAOqD,OACjF8B,EAAWzF,KAAK5B,KAAK0e,kBAAkBxc,EAAOA,EAAMyG,GAAM8V,GAAgBA,IAKlFxY,EAAiB/D,EAAO,IAAMyG,EAAMtB,IAG9BiX,EAAApe,UAAAse,6BAAR,SAAqCtc,OAC/Byc,EAAa,GAWjB,OAVAjc,EAAkBwB,QAAO,SAAC0a,GAAO,OAAAtY,EAAapE,EAAMkM,gBAAiBwQ,EAAG,SAAGrU,OAAE7D,EAAA6D,EAAA7D,aAAcC,EAAA4D,EAAA5D,YACzFgY,EAAaA,EAAW/H,OAAM,SAACxV,GAAK,OAAAA,IAAMwd,IACtB,MAAhBlY,IAAyC,IAAjBA,GAC1BiY,EAAW/c,KAAKgd,IAEbjY,GAAezE,EAAM6F,aACxB8G,EAAe3M,EAAM6F,iBAIzB,SAAQoF,GACN,OAA0B,IAAtBwR,EAAWhe,OACN,KAGFke,EAAAA,WAAWC,QAAQH,EAAWrZ,IAAG,SAACsZ,yBACjC/c,EAAQK,EAAMkM,gBAAgBwQ,GACpC,OAAQA,GACN,IAAK,WACH,OAAOC,EAAAA,WAAWE,SAAS5R,GAC7B,IAAK,UACH,OAAO0R,EAAAA,WAAWG,QAAQnd,EAAnBgd,CAA0B1R,GACnC,IAAK,YACH,OAAO0R,EAAAA,WAAWI,UAAUpd,EAArBgd,CAA4B1R,GACrC,IAAK,YACH,OAAO0R,EAAAA,WAAWK,UAAUrd,EAArBgd,CAA4B1R,GACrC,IAAK,MACH,OAAO0R,EAAAA,WAAWM,IAAItd,EAAfgd,CAAsB1R,GAC/B,IAAK,MACH,OAAO0R,EAAAA,WAAWO,IAAIvd,EAAfgd,CAAsB1R,OAd5B0R,CAgBH1R,KAIAmR,EAAApe,UAAAwe,kBAAR,SAA0Bxc,EAA+B2G,EAAgB4V,GAAzE,IAAA/V,EAAA1I,KACMqf,EAAmC,KAYvC,GAXyB,iBAAdxW,IACTwW,EAAkB7b,EAAMxD,KAAKsL,aAAaR,aAAajC,KAGhC,iBAAdA,GAA0BA,EAAU9D,OAC7Csa,EAAkB7b,EAAMxD,KAAKsL,aAAaR,aAAajC,EAAU9D,OAC7D8D,EAAUX,UACZmX,EAAgBnX,QAAUW,EAAUX,UAIf,iBAAdW,GAA0BA,EAAUiT,WAAY,CACjD,IAAAA,EAAAjT,EAAAiT,WAAY5T,EAAApH,EAAA+H,EAAA,CAAA,eACpBwW,EAAkB,CAChBta,KAAM0Z,EACNpW,WAAYyT,EACZ5T,QAAuC,EAA9B1I,OAAOkG,KAAKwC,GAASvH,OAAauH,EAAU,MAWzD,MAPyB,mBAAdW,IACTwW,EAAkB,CAChBta,KAAM0Z,EACNpW,WAAYQ,IAIhB,SAAQsE,OACA8N,EAAcoE,EAAgBhX,WAAW8E,EAASjL,EAAOmd,EAAgBnX,SAC/E,OfkBN,SAAgBoX,EAAUC,GACxB,QAASA,GAA2B,mBAAbA,EAAIC,KenBnBF,CAAUrE,GACLA,EAAOuE,KAAI,SAACja,GAAK,OAAAmD,EAAK+W,kBAAkBvd,EAAOuc,IAAkBlZ,EAAIA,EAAG8Z,KAG7Eza,EAAAA,aAAaqW,GACRA,EAAOhL,KAAK3K,EAAAA,IAAG,SAACC,GAAK,OAAAmD,EAAK+W,kBAAkBvd,EAAOuc,IAAkBlZ,EAAIA,EAAG8Z,MAG9E3W,EAAKgX,aAAaxd,EAAOuc,IAAkBxD,EAASA,EAAQoE,KAI/Df,EAAApe,UAAAuf,kBAAR,SAA0Bvd,EAA+B+Y,EAAa/S,GAMpE,OAJIhG,EAAMgG,SAAWhG,EAAMgG,QAAQsE,eACjCtK,EAAMgG,QAAQsE,cAActK,GAGvBlC,KAAK0f,aAAaxd,EAAO+Y,EAAQ/S,IAGlCoW,EAAApe,UAAAwf,aAAR,SAAqBxd,EAA+B+Y,EAAa1Q,SAAExF,EAAAwF,EAAAxF,KAAMmD,EAAAqC,EAAArC,QACjD,kBAAX+S,IACTA,EAASA,EAAS,OAAIvX,EAAA,IAAMqB,GAAOmD,IAAoB,EAAIxE,QAGvDic,EAAOzd,EAAM6F,YAuBnB,OAtBA4X,EAAsB,iBAAKA,EAAsB,gBAAE5a,IAAS4a,EAAsB,gBAAE5a,KAEhFzB,EAAS2X,IACXzb,OAAOkG,KAAKuV,GAAQ/W,QAAO,SAACa,SACpBmW,EAAYD,EAAOlW,GAAMmW,UAC3BD,EAAOlW,GAAMmW,WACZhT,GAAW,IAAIgT,UAEd0E,EAAY1E,EAAYhZ,EAAM6F,YAAYhC,IAAImV,GAAa,KACjE,GAAI0E,EAAW,KACPlc,EAAAuX,EAAAlW,GAAasI,GAAX3J,EAAAwX,UAAWpa,EAAA4C,EAAA,CAAA,eACnBkc,EAAUC,UAASzf,EAAA,GAAOwf,EAAU3E,QAAU,KAAE1Q,EAAA,IAAIxF,GAAOsI,EAAI9C,MAE9DoV,EAAsB,iBAAK1Z,EAAiB0Z,EAAM,kBAAmB,IACtEA,EAAsB,gBAAE5a,GAAK,eACrBwF,EAAAqV,EAAA3E,QAAA,GAAEvX,EAAAqB,EAAkB+a,GAAlBvV,EAAA7G,GAAkB5C,EAAAyJ,EAAA,CAAA,iBAAA7G,EAAAA,EAAAA,EAAA,MAC1Bkc,EAAUC,UAA8C,IAApCrgB,OAAOkG,KAAKoa,GAAanf,OAAe,KAAOmf,OAMpE7E,GAEXqD,kBCtJE,SAAAyB,EAAoBtX,GAAAzI,KAAAyI,OAAAA,EA0GtB,OAxGEsX,EAAA7f,UAAA+L,WAAA,SAAW/J,GACJA,EAAMY,SAIPZ,EAAMwJ,aAAexJ,EAAMC,IAC7B8D,EAAiB/D,EAAO,cAAeA,EAAMY,OAAOiF,aAEpD/H,KAAKggB,eAAe9d,KAIxB6d,EAAA7f,UAAAiM,aAAA,SAAajK,GACPA,EAAMY,QAIV9C,KAAKkO,cAAchM,IAGb6d,EAAA7f,UAAA8f,eAAR,SAAuB9d,OACjBiL,EAAUa,EAAY9L,GAC1B,IAAKiL,EAAS,KACN8S,EAAyC,CAAEnN,SAAU5Q,EAAM2Q,aAAaC,UACxEjR,EAAQK,EAAMC,IAAMsB,EAAcvB,GAASA,EAAMgE,aAEjDwG,EAAM1M,KAAKyI,OAASzI,KAAKyI,OAAO2B,oBAAoBlI,GAAS,KACnE,GAAIwK,GAAOA,EAAIwT,eAAiBxT,EAAIwT,cAA6B,cAAG,KAC5D5V,EAAYoC,EAAIwT,cACtBhX,QAAQC,KAAK,eAAemB,EAAUvF,KAAI,8EAC1CoI,EAAU7C,EAAyB,cAAEzI,EAAOK,QAG5CiL,EAFSjL,EAAMwJ,WAEL,IAAIkC,EAAAA,UAAU,GAAIqS,GAElB,IAAIxR,EAAAA,YAAY5M,EAAOoe,GAIrChS,EAAgB/L,EAAOiL,IAGjB4S,EAAA7f,UAAAgO,cAAR,SAAsBhM,GAAtB,IAAAwG,EAAA1I,KACM4M,GAAe,EAGnB,IAFC1K,EAAMwJ,YAAc,IAAIxH,QAAO,SAACgI,GAAK,OAAAxD,EAAKwF,cAAchC,KAAOU,GAAe,KAE3E1K,EAAMC,MAAQD,EAAMY,SAAYZ,EAAMC,MAAQD,EAAMwJ,WAAa,CAC3D,IAAAyU,EAAAje,EAAA6F,YACFsG,IAAWnM,EAAMkM,iBAAkBlM,EAAMkM,gBAAgBC,SAC3DnM,EAAMC,KAAOge,IACX9R,GAAY8R,EAAEC,UAChBD,EAAE7R,QAAQ,CAAEpB,WAAW,EAAO4B,UAAU,IACxClC,GAAe,IAGZyB,GAAY8R,EAAE9R,WACjB8R,EAAE5R,OAAO,CAAErB,WAAW,EAAO4B,UAAU,IACvClC,GAAe,KAKfuT,GAAM,OAASA,EAAEtX,WAAa,OAASsX,EAAEE,iBAC3CF,EAAEjS,cAAa,eACP3I,EAAIsZ,EAAAA,WAAWC,QAAQpW,EAAK4X,gBAA6Bpe,EAAO,gBAEtE,OAAOqD,EAAIA,EAAE4a,GAAK,OAEpBA,EAAEhS,mBAAkB,eACZ5I,EAAIsZ,EAAAA,WAAW0B,aAAa7X,EAAK4X,gBAAkCpe,EAAO,qBAEhF,OAAOqD,EAAIA,EAAE4a,GAAKtF,EAAAA,GAAG,QAGvBjO,GAAe,GAGbA,GACFiC,EAAesR,GAAG,GAItB,OAAOvT,GAGDmT,EAAA7f,UAAAogB,gBAAR,SAA2Bpe,EAA+ByG,GAA1D,IAAAD,EAAA1I,KACQqH,EAAkB,GAClB5B,EAAIvD,EAAM6F,YAehB,OAdItC,GAAKA,EAAW,SAA2B,EAAtBA,EAAW,QAAE9E,OACpC8E,EAAW,QACRmR,OAAM,SAAE1K,GAA8B,OAACA,EAAE0C,QACzC1K,QAAO,SAAEgI,GAA8B,OAAA7E,EAAWzF,KAAIf,MAAfwG,EAAUtF,EAASmK,EAAEvD,OACtDzG,EAAMyG,IACftB,EAAWzF,KAAIf,MAAfwG,EAAUtF,EAASG,EAAMyG,KAGvBzG,EAAMwJ,YACRxJ,EAAMwJ,WACHkL,OAAM,SAAC1K,GAAK,OAACA,EAAE/J,KAAO+J,EAAER,aACxBxH,QAAO,SAACgI,GAAK,OAAA7E,EAAWzF,KAAIf,MAAfwG,EAAUtF,EAAS2G,EAAK4X,gBAAgBpU,EAAGvD,OAGtDtB,GAEX0Y,kBC3GE,SAAAS,EAAoBlV,GAAAtL,KAAAsL,aAAAA,EADZtL,KAAAygB,OAAS,EA4InB,OAzIED,EAAAtgB,UAAA8L,YAAA,SAAY9J,GAEV,GADAlC,KAAK0gB,0BAA0Bxe,GAAO8J,eAClC9J,EAAMY,OAAV,KAIM6d,EAAmBze,EAAMgG,SAAWhG,EAAMgG,QAAQ0Y,gBAAmB5gB,KAAKsL,aAAa3D,OAAOiZ,gBACnGjhB,MAAM6C,QAAQme,GAAmBA,EAAkB,CAACA,IAAkBzc,QAAO,SAAC0c,GAC7E,GAAIA,IACF1X,QAAQC,KAAK,sFACMyX,EAAe1e,EAAMwJ,WAAYxJ,EAAMkB,MAAkBlB,EAAiB,YAAEA,EAAMgG,UAEnG,MAAM,IAAI0B,MAAM,qDAMxB4W,EAAAtgB,UAAA+L,WAAA,SAAW/J,GAAX,IAAAwG,EAAA1I,KACEA,KAAK6gB,iBAAiB3e,GACtBlC,KAAK0gB,0BAA0Bxe,GAAO+J,aAClC/J,EAAMwJ,YACRxJ,EAAMwJ,WAAWxH,QAAO,SAAEgI,EAAGiN,GAC3B3Z,OAAOwG,eAAekG,EAAG,SAAU,CAAEnG,IAAG,WAAQ,OAAA7D,GAAOmE,cAAc,IACrE7G,OAAOwG,eAAekG,EAAG,QAAS,CAAEnG,IAAG,WAAQ,OAAAoT,GAAO9S,cAAc,IACpEqC,EAAK+X,YAKXD,EAAAtgB,UAAAiM,aAAA,SAAajK,GACXlC,KAAK0gB,0BAA0Bxe,GAAOiK,gBAGhCqU,EAAAtgB,UAAA2gB,iBAAR,SAAyB3e,OACjBW,EAAgCX,EAAY,OAClD,GAAKW,EAAL,CAqDA,GAjDArD,OAAOwG,eAAe9D,EAAO,OAAQ,CAAE6D,IAAG,WAAQ,OAAAlD,EAAKkF,aAAa1B,cAAc,IAClF7G,OAAOwG,eAAe9D,EAAO,UAAW,CAAE6D,IAAG,WAAQ,OAAAlD,EAAKqF,SAAS7B,cAAc,IACjF7G,OAAOwG,eAAe9D,EAAO,QAAS,CACpC6D,IAAG,WAAQ,OAAA7D,EAAMC,KAAOD,EAAMwJ,WAAajI,EAAcvB,GAASW,EAAKO,OACvEiD,cAAc,IAGhBvC,EAAiB5B,EAAO,CACtBiW,GjBpDN,SAAgB2I,EAAWL,EAAgBve,EAA0BiX,GACnE,GAAIjX,EAAMiW,GAAI,OAAOjW,EAAMiW,OACvBxP,EAAOzG,EAAMyG,KAEjB,OADKA,GAAQzG,EAAMyR,WAAUhL,EAAO,YAC7B,CAAC8X,EAAQ9X,EAAMzG,EAAMC,IAAKgX,GAAO9F,KAAK,KiBgDrCyN,CAAW,UAAU9gB,KAAKygB,OAAUve,EAAOA,EAAa,OAC5DkU,MAAO,GACPvD,aAAc,GACdxK,WAAY,CAAEd,SAAU,IACxB6G,gBAAkBlM,EAAMyG,MAASzG,EAAMC,IAAW,CAChD4e,MAAO,GACPC,YAAa,GACbzI,OAAO,EACPlK,UAAU,GAJiC,KAQ3CrO,KAAKsL,aAAa3D,OAAOsZ,mBAA0C,IAAtB/e,EAAMc,cACrDd,EAAMc,aAAc,GAGlBd,EAAMoU,WACRpN,QAAQC,KAAK,yEAIE,oBAAfjH,EAAMyG,OAEJzG,EAAMyR,UACFzR,EAAMqa,sBAAwBra,EAAMqa,qBAAqB5I,YAG3DzR,EAAMyG,MACRO,QAAQC,KAAK,6EAEfjH,EAAMyG,KAAO,oBAGVzG,EAAMyG,MAAQzG,EAAMwJ,aACvBxJ,EAAMyG,KAAO,gBAGXzG,EAAMyG,MACR3I,KAAKsL,aAAaxB,eAAe5H,GAG/BA,EAAMY,OAAQ,KACZoe,GAAmBzc,EAAYvC,EAAMC,OACnCsC,EAAYvC,EAAMgE,eACnBzB,EAAYhB,EAAcvB,OACxBA,EAAMc,eAAiBd,EAAMyU,MAAQzU,EAAMib,iBAClD,GAAI+D,GAAmBhf,EAAMc,YAAa,CAExC,QADIme,EAASjf,EAAMY,OACZqe,IAAWA,EAAOhE,iBAAmBgE,EAAOxK,MACjDwK,EAASA,EAAOre,OAElBoe,GAAmBC,KAAYA,EAAOhE,gBAAkBgE,EAAOxK,MAG7DuK,GACFve,EAAiBT,EAAOA,EAAMgE,cAIlClG,KAAKohB,kBAAkBlf,KAGjBse,EAAAtgB,UAAAkhB,kBAAR,SAA0Blf,GACxBA,EAAMoF,SAAWpF,EAAMoF,UAAY,OAC7B+Z,EAAyBjhB,EAAA,CAC7BqH,WAAY,GACZC,YAAa,IACTxF,EAAMkM,gBAAgB5G,sBAAwB,IAGpDtF,EAAMoF,SAAW8L,EACZpT,KAAKsL,aAAa9D,qBAAqBC,WAAWnC,IAAG,SAACjE,GAAK,OAAAA,EAAEa,KAC7Dmf,EAA0B5Z,WAAWnC,IAAG,SAACjE,GAAK,OAAAA,EAAEa,KAChDA,EAAMoF,SACNtH,KAAKsL,aAAa9D,qBAAqBE,YAAYpC,IAAG,SAACjE,GAAK,OAAAA,EAAEa,KAC9Dmf,EAA0B3Z,YAAYpC,IAAG,SAACjE,GAAK,OAAAA,EAAEa,MACpD0U,OAAM,SAAE0K,EAAI9gB,EAAG+gB,GAAM,OAAAD,GAAM9gB,IAAM+gB,EAAEvgB,QAAQsgB,MAGvCd,EAAAtgB,UAAAwgB,0BAAR,SAAkCxe,OAC1BiI,EAAenK,KAAKsL,aAAalB,oBAAoBlI,GACrDmI,EAA4BF,EAAeA,EAAqB,SAAU,GAEhF,MAAO,CACL6B,YAAW,WAAQ,OAAA3B,EAAS2B,aAAe3B,EAAS2B,YAAY9J,IAChE+J,WAAU,WAAQ,OAAA5B,EAAS4B,YAAc5B,EAAS4B,WAAW/J,IAC7DiK,aAAY,WAAQ,OAAA9B,EAAS8B,cAAgB9B,EAAS8B,aAAajK,MAGzEse,KClIA,SAAgBgB,EAAoBlW,GAClC,MAAO,CACLlE,MAAO,CACL,CAAErC,KAAM,eAAgBuF,UAAWgQ,GACnC,CAAEvV,KAAM,kBAAmBuF,UAAWiR,IAExChT,WAAY,CACV,CAAExD,KAAM,OAAQ0E,UAAW,IAAI+W,EAAclV,IAC7C,CAAEvG,KAAM,mBAAoB0E,UAAW,IAAI6U,EAAyBhT,IACpE,CAAEvG,KAAM,aAAc0E,UAAW,IAAIsW,EAAmBzU,IACxD,CAAEvG,KAAM,mBAAoB0E,UAAW,IAAIyS,KAKjD,IAAAuF,EAAA,WAwCE,SAAAA,EACEC,EACmCC,QAAnC,IAAAA,IAAAA,EAAA,IAEKA,GAILA,EAAQzd,QAAO,SAACuE,GAAU,OAAAiZ,EAAclZ,UAAUC,KAEtD,OAnCSgZ,EAAAG,QAAP,SAAenZ,GACb,YADa,IAAAA,IAAAA,EAAA,IACN,CACLoZ,SAAUJ,EACV7N,UAAW,CACT,CAAEkO,QAAS7a,EAAe8a,OAAO,EAAMC,WAAYR,EAAqBS,KAAM,CAAC9a,IAC/E,CAAE2a,QAAS7a,EAAeib,SAAUzZ,EAAQsZ,OAAO,GACnD,CAAED,QAASK,EAAAA,6BAA8BD,SAAUzZ,EAAQsZ,OAAO,GAClE5a,EACAkE,KAKCoW,EAAAW,SAAP,SAAgB3Z,GACd,YADc,IAAAA,IAAAA,EAAA,IACP,CACLoZ,SAAUJ,EACV7N,UAAW,CACT,CAAEkO,QAAS7a,EAAe8a,OAAO,EAAMC,WAAYR,EAAqBS,KAAM,CAAC9a,IAC/E,CAAE2a,QAAS7a,EAAeib,SAAUzZ,EAAQsZ,OAAO,GACnD,CAAED,QAASK,EAAAA,6BAA8BD,SAAUzZ,EAAQsZ,OAAO,GAClE1W,yBAnCPgX,EAAAA,SAAQre,KAAA,CAAC,CACRse,aAAc,CACZhT,EACA+E,EACA6C,EACAoD,EACAE,EACAe,KAGFgH,gBAAiB,CAACjI,EAAaiB,GAC/BiH,QAAS,CAAClT,EAAY+E,EAAa6C,EAAkBoD,EAAaE,GAClEiI,QAAS,CAACC,EAAAA,2DAvCHvb,iCAqEJ8M,EAAAA,UAAQ,CAAAtL,KAAI8Q,EAAAA,OAAMzV,KAAA,CAACiD,QAQxBwa,EAlDA","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\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 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) : new P(function (resolve) { resolve(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 function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n 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}\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\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\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 __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\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 (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = 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","import { FormlyFieldConfig } from './core';\nimport { isObservable } from 'rxjs';\nimport { AbstractControl } from '@angular/forms';\nimport { FormlyFieldConfigCache } from './components/formly.field.config';\nimport { TemplateRef } from '@angular/core';\n\nexport function getFieldId(formId: string, field: FormlyFieldConfig, index: string|number) {\n if (field.id) return field.id;\n let type = field.type;\n if (!type && field.template) type = 'template';\n return [formId, type, field.key, index].join('_');\n}\n\nexport function getKeyPath(field: FormlyFieldConfigCache): string[] {\n if (!field.key) {\n return [];\n }\n\n /* We store the keyPath in the field for performance reasons. This function will be called frequently. */\n if (!field._keyPath || field._keyPath.key !== field.key) {\n let path: string[] = [];\n if (typeof field.key === 'string') {\n const key = field.key.indexOf('[') === -1\n ? field.key\n : field.key.replace(/\\[(\\w+)\\]/g, '.$1');\n path = key.indexOf('.') !== -1 ? key.split('.') : [key];\n } else if (Array.isArray(field.key)) {\n path = field.key.slice(0);\n } else {\n path = [`${field.key}`];\n }\n\n field._keyPath = { key: field.key, path };\n }\n\n return field._keyPath.path.slice(0);\n}\n\nexport const FORMLY_VALIDATORS = ['required', 'pattern', 'minLength', 'maxLength', 'min', 'max'];\n\nexport function assignFieldValue(field: FormlyFieldConfigCache, value: any) {\n let paths = getKeyPath(field);\n if (paths.length === 0) {\n return;\n }\n\n let root = field;\n while (root.parent) {\n root = root.parent;\n paths = [...getKeyPath(root), ...paths];\n }\n\n if (value === undefined && field.resetOnHide) {\n const k = paths.pop();\n const m = paths.reduce((model, path) => model[path] || {}, root.model);\n delete m[k];\n return;\n }\n\n assignModelValue(root.model, paths, value);\n}\n\nexport function assignModelValue(model: any, paths: string[], value: any) {\n for (let i = 0; i < (paths.length - 1); i++) {\n const path = paths[i];\n if (!model[path] || !isObject(model[path])) {\n model[path] = /^\\d+$/.test(paths[i + 1]) ? [] : {};\n }\n\n model = model[path];\n }\n\n model[paths[paths.length - 1]] = clone(value);\n}\n\nexport function getFieldValue(field: FormlyFieldConfig): any {\n let model = field.parent.model;\n for (const path of getKeyPath(field)) {\n if (!model) {\n return model;\n }\n model = model[path];\n }\n\n return model;\n}\n\nexport function reverseDeepMerge(dest: any, ...args: any[]) {\n args.forEach(src => {\n for (let srcArg in src) {\n if (isNullOrUndefined(dest[srcArg]) || isBlankString(dest[srcArg])) {\n dest[srcArg] = clone(src[srcArg]);\n } else if (objAndSameType(dest[srcArg], src[srcArg])) {\n reverseDeepMerge(dest[srcArg], src[srcArg]);\n }\n }\n });\n return dest;\n}\n\nexport function isNullOrUndefined(value: any) {\n return value === undefined || value === null;\n}\n\nexport function isUndefined(value: any) {\n return value === undefined;\n}\n\nexport function isBlankString(value: any) {\n return value === '';\n}\n\nexport function isFunction(value: any) {\n return typeof(value) === 'function';\n}\n\nexport function objAndSameType(obj1: any, obj2: any) {\n return isObject(obj1) && isObject(obj2)\n && Object.getPrototypeOf(obj1) === Object.getPrototypeOf(obj2)\n && !(Array.isArray(obj1) || Array.isArray(obj2));\n}\n\nexport function isObject(x: any) {\n return x != null && typeof x === 'object';\n}\n\nexport function isPromise(obj: any): obj is Promise<any> {\n return !!obj && typeof obj.then === 'function';\n}\n\nexport function clone(value: any): any {\n if (\n !isObject(value)\n || isObservable(value)\n || (value instanceof TemplateRef)\n || /* instanceof SafeHtmlImpl */ value.changingThisBreaksApplicationSecurity\n || ['RegExp', 'FileList', 'File', 'Blob'].indexOf(value.constructor.name) !== -1\n ) {\n return value;\n }\n\n if (value instanceof Set) {\n return new Set(value);\n }\n\n if (value instanceof Map) {\n return new Map(value);\n }\n\n // https://github.com/moment/moment/blob/master/moment.js#L252\n if (value._isAMomentObject && isFunction(value.clone)) {\n return value.clone();\n }\n\n if (value instanceof AbstractControl) {\n return null;\n }\n\n if (value instanceof Date) {\n return new Date(value.getTime());\n }\n\n if (Array.isArray(value)) {\n return value.slice(0).map(v => clone(v));\n }\n\n // best way to clone a js object maybe\n // https://stackoverflow.com/questions/41474986/how-to-clone-a-javascript-es6-class-instance\n const proto = Object.getPrototypeOf(value);\n let c = Object.create(proto);\n c = Object.setPrototypeOf(c, proto);\n // need to make a deep copy so we dont use Object.assign\n // also Object.assign wont copy property descriptor exactly\n return Object.keys(value).reduce((newVal, prop) => {\n const propDesc = Object.getOwnPropertyDescriptor(value, prop);\n if (propDesc.get) {\n Object.defineProperty(newVal, prop, propDesc);\n } else {\n newVal[prop] = clone(value[prop]);\n }\n\n return newVal;\n }, c);\n}\n\nexport function defineHiddenProp(field: any, prop: string, defaultValue: any) {\n Object.defineProperty(field, prop, { enumerable: false, writable: true, configurable: true });\n field[prop] = defaultValue;\n}\n\nexport function wrapProperty<T = any>(\n o: any,\n prop: string,\n setFn: (change: {currentValue: T, previousValue?: T, firstChange: boolean}) => void,\n) {\n if (!o._observers) {\n defineHiddenProp(o, '_observers', {});\n }\n\n if (!o._observers[prop]) {\n o._observers[prop] = [];\n }\n\n let fns: typeof setFn[] = o._observers[prop];\n if (fns.indexOf(setFn) === -1) {\n fns.push(setFn);\n setFn({ currentValue: o[prop], firstChange: true });\n if (fns.length === 1) {\n defineHiddenProp(o, `___$${prop}`, o[prop]);\n Object.defineProperty(o, prop, {\n configurable: true,\n get: () => o[`___$${prop}`],\n set: currentValue => {\n if (currentValue !== o[`___$${prop}`]) {\n const previousValue = o[`___$${prop}`];\n o[`___$${prop}`] = currentValue;\n fns.forEach(changeFn => changeFn({ previousValue, currentValue, firstChange: false }));\n }\n },\n });\n }\n }\n\n return () => fns.splice(fns.indexOf(setFn), 1);\n}\n","import { Injectable, InjectionToken, ComponentRef } from '@angular/core';\nimport { ValidationErrors, AbstractControl } from '@angular/forms';\nimport { FieldType } from './../templates/field.type';\nimport { reverseDeepMerge, defineHiddenProp } from './../utils';\nimport { FormlyFieldConfig, FormlyFieldConfigCache } from '../components/formly.field.config';\nimport { Observable } from 'rxjs';\n\nexport const FORMLY_CONFIG = new InjectionToken<FormlyConfig>('FORMLY_CONFIG');\n\n/** @experimental */\nexport interface FormlyExtension {\n prePopulate?(field: FormlyFieldConfig): void;\n onPopulate?(field: FormlyFieldConfig): void;\n postPopulate?(field: FormlyFieldConfig): void;\n}\n\n/**\n * Maintains list of formly field directive types. This can be used to register new field templates.\n */\n@Injectable({ providedIn: 'root' })\nexport class FormlyConfig {\n types: {[name: string]: TypeOption} = {};\n validators: { [name: string]: ValidatorOption } = {};\n wrappers: { [name: string]: WrapperOption } = {};\n messages: { [name: string]: ValidationMessageOption['message'] } = {};\n templateManipulators: {\n preWrapper: ManipulatorWrapper[];\n postWrapper: ManipulatorWrapper[];\n } = {\n preWrapper: [],\n postWrapper: [],\n };\n extras: ConfigOption['extras'] = {\n checkExpressionOn: 'changeDetectionCheck',\n lazyRender: false,\n showError: function(field: FieldType) {\n return field.formControl && field.formControl.invalid && (field.formControl.touched || (field.options.parentForm && field.options.parentForm.submitted) || !!(field.field.validation && field.field.validation.show));\n },\n };\n extensions: { [name: string]: FormlyExtension } = {};\n\n addConfig(config: ConfigOption) {\n if (config.types) {\n config.types.forEach(type => this.setType(type));\n }\n if (config.validators) {\n config.validators.forEach(validator => this.setValidator(validator));\n }\n if (config.wrappers) {\n config.wrappers.forEach(wrapper => this.setWrapper(wrapper));\n }\n if (config.manipulators) {\n console.warn(`NgxFormly: passing 'manipulators' config is deprecated, use custom extension instead.`);\n config.manipulators.forEach(manipulator => this.setManipulator(manipulator));\n }\n if (config.validationMessages) {\n config.validationMessages.forEach(validation => this.addValidatorMessage(validation.name, validation.message));\n }\n if (config.extensions) {\n config.extensions.forEach(c => this.extensions[c.name] = c.extension);\n }\n if (config.extras) {\n this.extras = { ...this.extras, ...config.extras };\n }\n }\n\n setType(options: TypeOption | TypeOption[]) {\n if (Array.isArray(options)) {\n options.forEach((option) => this.setType(option));\n } else {\n if (!this.types[options.name]) {\n this.types[options.name] = <TypeOption>{ name: options.name };\n }\n\n ['component', 'extends', 'defaultOptions', 'wrappers'].forEach(prop => {\n if (options.hasOwnProperty(prop)) {\n this.types[options.name][prop] = options[prop];\n }\n });\n }\n }\n\n getType(name: string): TypeOption {\n if (!this.types[name]) {\n throw new Error(`[Formly Error] The type \"${name}\" could not be found. Please make sure that is registered through the FormlyModule declaration.`);\n }\n\n this.mergeExtendedType(name);\n\n return this.types[name];\n }\n\n getMergedField(field: FormlyFieldConfig = {}): any {\n const type = this.getType(field.type);\n if (type.defaultOptions) {\n reverseDeepMerge(field, type.defaultOptions);\n }\n\n const extendDefaults = type.extends && this.getType(type.extends).defaultOptions;\n if (extendDefaults) {\n reverseDeepMerge(field, extendDefaults);\n }\n\n if (field && field.optionsTypes) {\n field.optionsTypes.forEach(option => {\n const defaultOptions = this.getType(option).defaultOptions;\n if (defaultOptions) {\n reverseDeepMerge(field, defaultOptions);\n }\n });\n }\n\n const componentRef = this.resolveFieldTypeRef(field);\n if (componentRef && componentRef.instance && componentRef.instance.defaultOptions) {\n reverseDeepMerge(field, componentRef.instance.defaultOptions);\n }\n\n if (!field.wrappers && type.wrappers) {\n field.wrappers = [...type.wrappers];\n }\n }\n\n /** @internal */\n resolveFieldTypeRef(field: FormlyFieldConfigCache = {}): ComponentRef<FieldType> {\n if (!field.type) {\n return null;\n }\n\n const type = this.getType(field.type);\n if (!type.component || type['_componentRef']) {\n return type['_componentRef'];\n }\n\n const { _resolver, _injector } = field.parent.options;\n const componentRef = _resolver\n .resolveComponentFactory<FieldType>(type.component)\n .create(_injector);\n\n defineHiddenProp(type, '_componentRef', componentRef);\n componentRef.destroy();\n\n return type['_componentRef'];\n }\n\n setWrapper(options: WrapperOption) {\n this.wrappers[options.name] = options;\n if (options.types) {\n options.types.forEach((type) => {\n this.setTypeWrapper(type, options.name);\n });\n }\n }\n\n getWrapper(name: string): WrapperOption {\n if (!this.wrappers[name]) {\n throw new Error(`[Formly Error] The wrapper \"${name}\" could not be found. Please make sure that is registered through the FormlyModule declaration.`);\n }\n\n return this.wrappers[name];\n }\n\n setTypeWrapper(type: string, name: string) {\n if (!this.types[type]) {\n this.types[type] = <TypeOption>{};\n }\n if (!this.types[type].wrappers) {\n this.types[type].wrappers = [];\n }\n if (this.types[type].wrappers.indexOf(name) === -1) {\n this.types[type].wrappers.push(name);\n }\n }\n\n setValidator(options: ValidatorOption) {\n this.validators[options.name] = options;\n }\n\n getValidator(name: string): ValidatorOption {\n if (!this.validators[name]) {\n throw new Error(`[Formly Error] The validator \"${name}\" could not be found. Please make sure that is registered through the FormlyModule declaration.`);\n }\n\n return this.validators[name];\n }\n\n addValidatorMessage(name: string, message: ValidationMessageOption['message']) {\n this.messages[name] = message;\n }\n\n getValidatorMessage(name: string) {\n return this.messages[name];\n }\n\n setManipulator(manipulator: ManipulatorOption) {\n new manipulator.class()[manipulator.method](this);\n }\n\n private mergeExtendedType(name: string) {\n if (!this.types[name].extends) {\n return;\n }\n\n const extendedType = this.getType(this.types[name].extends);\n if (!this.types[name].component) {\n this.types[name].component = extendedType.component;\n }\n\n if (!this.types[name].wrappers) {\n this.types[name].wrappers = extendedType.wrappers;\n }\n }\n}\nexport interface TypeOption {\n name: string;\n component?: any;\n wrappers?: string[];\n extends?: string;\n defaultOptions?: FormlyFieldConfig;\n}\n\nexport interface WrapperOption {\n name: string;\n component: any;\n types?: string[];\n}\n\nexport interface FieldValidatorFn {\n (c: AbstractControl, field: FormlyFieldConfig, options?: { [id: string]: any; }): ValidationErrors | null;\n}\n\nexport interface ValidatorOption {\n name: string;\n validation: FieldValidatorFn;\n options?: { [id: string]: any };\n}\n\nexport interface ExtensionOption {\n name: string;\n extension: FormlyExtension;\n}\n\nexport interface ValidationMessageOption {\n name: string;\n message: string | ((error: any, field: FormlyFieldConfig) => string | Observable<string>);\n}\n\nexport interface ManipulatorOption {\n class?: { new (): any };\n method?: string;\n}\n\nexport interface ManipulatorWrapper {\n (f: FormlyFieldConfig): string;\n}\n\nexport interface TemplateManipulators {\n preWrapper?: ManipulatorWrapper[];\n postWrapper?: ManipulatorWrapper[];\n}\n\nexport interface ConfigOption {\n types?: TypeOption[];\n wrappers?: WrapperOption[];\n validators?: ValidatorOption[];\n extensions?: ExtensionOption[];\n validationMessages?: ValidationMessageOption[];\n\n /** @deprecated use `extensions` instead */\n manipulators?: ManipulatorOption[];\n extras?: {\n /** @deprecated use `extensions` instead */\n fieldTransform?: any,\n immutable?: boolean,\n showError?: (field: FieldType) => boolean;\n\n /**\n * Defines the option which formly rely on to check field expression properties.\n * - `modelChange`: perform a check when the value of the form control changes (Will be set by default in the next major version).\n * - `changeDetectionCheck`: triggers an immediate check when `ngDoCheck` is called.\n *\n * Defaults to `changeDetectionCheck`.\n */\n checkExpressionOn?: 'modelChange' | 'changeDetectionCheck',\n\n /**\n * Whether to lazily render field components or not when marked as hidden.\n * - `true`: lazily render field components (Will be set by default in the next major version).\n * - `false`: render field components and use CSS to control their visibility.\n *\n * Defaults to `false`.\n */\n lazyRender?: boolean,\n\n /**\n * When true, reset the value of hidden fields.\n *\n * Defaults to `false`.\n */\n resetFieldOnHide?: boolean,\n };\n}\n","import { Injectable, ComponentFactoryResolver, Injector, ChangeDetectorRef } from '@angular/core';\nimport { FormGroup, FormArray } from '@angular/forms';\nimport { FormlyConfig } from './formly.config';\nimport { FormlyFieldConfig, FormlyFormOptions, FormlyFieldConfigCache, FormlyValueChangeEvent, FormlyFormOptionsCache } from '../components/formly.field.config';\nimport { Subject } from 'rxjs';\nimport { defineHiddenProp } from '../utils';\n\n@Injectable({ providedIn: 'root' })\nexport class FormlyFormBuilder {\n constructor(\n private formlyConfig: FormlyConfig,\n private componentFactoryResolver: ComponentFactoryResolver,\n private injector: Injector,\n ) {}\n\n buildForm(formControl: FormGroup | FormArray, fieldGroup: FormlyFieldConfig[] = [], model: any, options: FormlyFormOptions) {\n if (!this.formlyConfig.extensions.core) {\n throw new Error('NgxFormly: missing `forRoot()` call. use `forRoot()` when registering the `FormlyModule`.');\n }\n\n const field = { fieldGroup, model, formControl, options: this._setOptions(options) };\n this._buildForm(field);\n field.options._checkField(field, true);\n }\n\n private _buildForm(field: FormlyFieldConfigCache) {\n this.getExtensions().forEach(extension => extension.prePopulate && extension.prePopulate(field));\n this.getExtensions().forEach(extension => extension.onPopulate && extension.onPopulate(field));\n\n if (field.fieldGroup) {\n field.fieldGroup.forEach((f) => this._buildForm(f));\n }\n\n this.getExtensions().forEach(extension => extension.postPopulate && extension.postPopulate(field));\n }\n\n private getExtensions() {\n return Object.keys(this.formlyConfig.extensions).map(name => this.formlyConfig.extensions[name]);\n }\n\n private _setOptions(options: FormlyFormOptionsCache) {\n options = options || {};\n options.formState = options.formState || {};\n\n if (!options.showError) {\n options.showError = this.formlyConfig.extras.showError;\n }\n\n if (!options.fieldChanges) {\n defineHiddenProp(options, 'fieldChanges', new Subject<FormlyValueChangeEvent>());\n }\n\n if (!options._resolver) {\n defineHiddenProp(options, '_resolver', this.componentFactoryResolver);\n }\n\n if (!options._injector) {\n defineHiddenProp(options, '_injector', this.injector);\n }\n\n if (!options._hiddenFieldsForCheck) {\n options._hiddenFieldsForCheck = [];\n }\n\n if (!options._markForCheck) {\n options._markForCheck = (field) => {\n if (field._componentRefs) {\n field._componentRefs.forEach(ref => {\n // NOTE: we cannot use ref.changeDetectorRef, see https://github.com/ngx-formly/ngx-formly/issues/2191\n const changeDetectorRef = ref.injector.get(ChangeDetectorRef);\n changeDetectorRef.markForCheck();\n });\n }\n\n if (field.fieldGroup) {\n field.fieldGroup.forEach(f => options._markForCheck(f));\n }\n };\n }\n\n if (!options._buildField) {\n options._buildField = (field: FormlyFieldConfig) => {\n this.buildForm(field.form, field.fieldGroup, field.model, field.options);\n return field;\n };\n }\n\n return options;\n }\n}\n","import { FormArray, FormGroup, FormControl, AbstractControl } from '@angular/forms';\nimport { FormlyFieldConfig } from '../../core';\nimport { getKeyPath, getFieldValue, isNullOrUndefined, defineHiddenProp, wrapProperty } from '../../utils';\nimport { FormlyFieldConfigCache } from '../../components/formly.field.config';\nimport { EventEmitter } from '@angular/core';\n\nexport function unregisterControl(field: FormlyFieldConfig, emitEvent = false) {\n const control = field.formControl;\n const fieldIndex = control['_fields'] ? control['_fields'].indexOf(field) : -1;\n if (fieldIndex !== -1) {\n control['_fields'].splice(fieldIndex, 1);\n }\n\n const form = control.parent as FormArray | FormGroup;\n if (!form) {\n return;\n }\n\n const opts = { emitEvent };\n if (form instanceof FormArray) {\n const key = form.controls.findIndex(c => c === control);\n if (key !== -1) {\n updateControl(form, opts, () => form.removeAt(key));\n }\n } else if (form instanceof FormGroup) {\n const paths = getKeyPath(field);\n const key = paths[paths.length - 1];\n if (form.get([key]) === control) {\n updateControl(form, opts, () => form.removeControl(key));\n }\n }\n\n control.setParent(null);\n}\n\nexport function findControl(field: FormlyFieldConfig): AbstractControl {\n if (field.formControl) {\n return field.formControl;\n }\n\n if (field['shareFormControl'] === false) {\n return null;\n }\n\n const form = field.parent.formControl as FormGroup;\n\n return form ? form.get(getKeyPath(field)) : null;\n}\n\nexport function registerControl(field: FormlyFieldConfigCache, control?: any, emitEvent = false) {\n control = control || field.formControl;\n if (!control['_fields']) {\n defineHiddenProp(control, '_fields', []);\n }\n if (control['_fields'].indexOf(field) === -1) {\n control['_fields'].push(field);\n }\n\n if (!field.formControl && control) {\n defineHiddenProp(field, 'formControl', control);\n control.setValidators(null);\n control.setAsyncValidators(null);\n\n field.templateOptions.disabled = !!field.templateOptions.disabled;\n wrapProperty(field.templateOptions, 'disabled', ({ firstChange, currentValue }) => {\n if (!firstChange) {\n currentValue ? field.formControl.disable() : field.formControl.enable();\n }\n });\n if (control.registerOnDisabledChange) {\n control.registerOnDisabledChange(\n (value: boolean) => {\n field.templateOptions['___$disabled'] = value;\n // TODO remove in V6\n field.options && field.options._markForCheck(field);\n },\n );\n }\n }\n\n let parent = field.parent.formControl as FormGroup;\n if (!parent || !field.key) {\n return;\n }\n\n const paths = getKeyPath(field);\n const value = getFieldValue(field);\n if (\n !(isNullOrUndefined(control.value) && isNullOrUndefined(value))\n && control.value !== value\n && control instanceof FormControl\n ) {\n control.patchValue(value);\n }\n\n for (let i = 0; i < (paths.length - 1); i++) {\n const path = paths[i];\n if (!parent.get([path])) {\n updateControl(\n parent,\n { emitEvent },\n () => parent.setControl(path, new FormGroup({})),\n );\n }\n\n parent = <FormGroup> parent.get([path]);\n }\n\n const key = paths[paths.length - 1];\n if (!field._hide && parent.get([key]) !== control) {\n updateControl(\n parent,\n { emitEvent },\n () => parent.setControl(key, control),\n );\n }\n}\n\nexport function updateValidity(c: AbstractControl, onlySelf = false) {\n const status = c.status;\n const value = c.value;\n c.updateValueAndValidity({ emitEvent: false, onlySelf });\n if (status !== c.status) {\n (c.statusChanges as EventEmitter<string>).emit(c.status);\n }\n\n if (value !== c.value) {\n (c.valueChanges as EventEmitter<any>).emit(c.value);\n }\n}\n\nfunction updateControl(form: FormGroup|FormArray, opts: { emitEvent: boolean }, action: Function) {\n /**\n * workaround for https://github.com/angular/angular/issues/27679\n */\n if (form instanceof FormGroup && !form['__patchForEachChild']) {\n defineHiddenProp(form, '__patchForEachChild', true);\n (form as any)._forEachChild = (cb: Function) => {\n Object\n .keys(form.controls)\n .forEach(k => form.controls[k] && cb(form.controls[k], k));\n };\n }\n\n /**\n * workaround for https://github.com/angular/angular/issues/20439\n */\n const updateValueAndValidity = form.updateValueAndValidity.bind(form);\n if (opts.emitEvent === false) {\n form.updateValueAndValidity = (opts) => {\n updateValueAndValidity({ ...(opts || {}), emitEvent: false });\n };\n }\n\n action();\n\n if (opts.emitEvent === false) {\n form.updateValueAndValidity = updateValueAndValidity;\n }\n}\n\nexport function clearControl(form: AbstractControl) {\n form['_fields'] && delete form['_fields'];\n form.setValidators(null);\n form.setAsyncValidators(null);\n if (form instanceof FormGroup || form instanceof FormArray) {\n Object.keys(form.controls)\n .forEach((k) => clearControl(form.controls[k]));\n }\n}\n","import { Component, DoCheck, OnChanges, Input, SimpleChanges, Optional, EventEmitter, Output, OnDestroy, Attribute, ViewChild, ElementRef, NgZone } from '@angular/core';\nimport { FormGroup, FormArray, FormGroupDirective, FormControl } from '@angular/forms';\nimport { FormlyFieldConfig, FormlyFormOptions, FormlyFormOptionsCache } from './formly.field.config';\nimport { FormlyFormBuilder } from '../services/formly.form.builder';\nimport { FormlyConfig } from '../services/formly.config';\nimport { assignFieldValue, isNullOrUndefined, wrapProperty, clone, defineHiddenProp, getKeyPath, isObject } from '../utils';\nimport { Subscription, Subject } from 'rxjs';\nimport { debounceTime, switchMap, distinctUntilChanged, take } from 'rxjs/operators';\nimport { clearControl } from '../extensions/field-form/utils';\n\n@Component({\n selector: 'formly-form',\n template: `\n <formly-field *ngFor=\"let field of fields\"\n hide-deprecation\n [form]=\"field.form\"\n [options]=\"field.options\"\n [model]=\"field.model\"\n [field]=\"field\">\n </formly-field>\n <ng-container #content>\n <ng-content></ng-content>\n </ng-container>\n `,\n providers: [FormlyFormBuilder],\n})\nexport class FormlyForm implements DoCheck, OnChanges, OnDestroy {\n @Input() form: FormGroup | FormArray;\n\n @Input()\n set model(model: any) { this._model = this.immutable ? clone(model) : model; }\n get model() {\n if (!this._model) {\n this._model = {};\n }\n\n return this._model;\n }\n\n @Input()\n set fields(fields: FormlyFieldConfig[]) { this._fields = this.immutable ? clone(fields) : fields; }\n get fields() { return this._fields || []; }\n\n @Input()\n set options(options: FormlyFormOptions) { this._options = this.immutable ? clone(options) : options; }\n get options() { return this._options; }\n\n @Output() modelChange = new EventEmitter<any>();\n @ViewChild('content') set content(content: ElementRef<HTMLElement>) {\n if (content) {\n let hasContent = false;\n let node = content.nativeElement.nextSibling;\n while (node && !hasContent) {\n if (\n node.nodeType === Node.ELEMENT_NODE\n || node.nodeType === Node.TEXT_NODE && node.textContent && node.textContent.trim() !== ''\n ) {\n hasContent = true;\n }\n\n node = node.nextSibling;\n }\n\n if (hasContent) {\n console.warn(`NgxFormly: content projection for 'formly-form' component is deprecated since v5.5, you should avoid passing content inside the 'formly-form' tag.`);\n }\n }\n }\n\n private immutable = false;\n private _model: any;\n private _modelChangeValue: any = {};\n private _fields: FormlyFieldConfig[];\n private _options: FormlyFormOptions;\n private modelChangeSubs: Subscription[] = [];\n private modelChange$ = new Subject<void>();\n private modelChangeSub = this.modelChange$.pipe(\n switchMap(() => this.ngZone.onStable.asObservable().pipe(take(1))),\n ).subscribe(() => this.ngZone.runGuarded(() => {\n // runGuarded is used to keep the expression changes in-sync\n // https://github.com/ngx-formly/ngx-formly/issues/2095\n this.checkExpressionChange();\n this.modelChange.emit(this._modelChangeValue = clone(this.model));\n }));\n\n constructor(\n private formlyBuilder: FormlyFormBuilder,\n private formlyConfig: FormlyConfig,\n private ngZone: NgZone,\n // tslint:disable-next-line\n @Attribute('immutable') immutable,\n @Optional() private parentFormGroup: FormGroupDirective,\n ) {\n if (immutable !== null) {\n console.warn(`NgxFormly: passing 'immutable' attribute to 'formly-form' component is deprecated since v5.5, enable immutable mode through NgModule declaration instead.`);\n }\n\n this.immutable = (immutable !== null) || !!formlyConfig.extras.immutable;\n }\n\n ngDoCheck() {\n if (this.formlyConfig.extras.checkExpressionOn === 'changeDetectionCheck') {\n this.checkExpressionChange();\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n // https://github.com/ngx-formly/ngx-formly/issues/2294\n if (changes.model && this.field) {\n this.field.model = this.model;\n }\n\n if (changes.fields && this.form) {\n clearControl(this.form);\n }\n\n if (changes.fields || changes.form || (changes.model && this._modelChangeValue !== changes.model.currentValue)) {\n this.form = this.form || (new FormGroup({}));\n this.setOptions();\n this.options.updateInitialValue();\n this.clearModelSubscriptions();\n this.formlyBuilder.buildForm(this.form, this.fields, this.model, this.options);\n this.trackModelChanges(this.fields);\n }\n }\n\n ngOnDestroy() {\n this.modelChangeSub.unsubscribe();\n this.clearModelSubscriptions();\n }\n\n changeModel({ key, value, field }: { key: string, value: any, field: FormlyFieldConfig }) {\n assignFieldValue(field, value);\n this.modelChange$.next();\n }\n\n setOptions() {\n if (!this.options) {\n this.options = {};\n }\n\n if (!this.options.resetModel) {\n this.options.resetModel = (model ?: any) => {\n model = clone(isNullOrUndefined(model) ? (<FormlyFormOptionsCache> this.options)._initialModel : model);\n if (this.model) {\n Object.keys(this.model).forEach(k => delete this.model[k]);\n Object.assign(this.model, model || {});\n }\n\n (<FormlyFormOptionsCache> this.options)._buildForm();\n\n // we should call `NgForm::resetForm` to ensure changing `submitted` state after resetting form\n // but only when the current component is a root one.\n if (this.options.parentForm && this.options.parentForm.control === this.form) {\n this.options.parentForm.resetForm(this.model);\n } else {\n this.form.reset(this.model);\n }\n };\n }\n\n if (!this.options.parentForm && this.parentFormGroup) {\n defineHiddenProp(this.options, 'parentForm', this.parentFormGroup);\n wrapProperty(this.options.parentForm, 'submitted', ({ firstChange }) => {\n if (!firstChange) {\n this.checkExpressionChange();\n (<FormlyFormOptionsCache> this.options)._markForCheck({\n fieldGroup: this.fields,\n model: this.model,\n formControl: this.form,\n options: this.options,\n });\n }\n });\n }\n\n if (!this.options.updateInitialValue) {\n this.options.updateInitialValue = () => (<FormlyFormOptionsCache> this.options)._initialModel = clone(this.model);\n }\n\n if (!(<FormlyFormOptionsCache> this.options)._buildForm) {\n (<FormlyFormOptionsCache> this.options)._buildForm = (emitModelChange = false) => {\n this.clearModelSubscriptions();\n this.formlyBuilder.buildForm(this.form, this.fields, this.model, this.options);\n this.trackModelChanges(this.fields);\n\n if (emitModelChange) {\n this.modelChange.emit(this._modelChangeValue = clone(this.model));\n }\n };\n }\n }\n\n private checkExpressionChange() {\n if (this.options && (<FormlyFormOptionsCache> this.options)._checkField) {\n (<FormlyFormOptionsCache> this.options)._checkField({\n fieldGroup: this.fields,\n model: this.model,\n formControl: this.form,\n options: this.options,\n });\n }\n }\n\n private trackModelChanges(fields: FormlyFieldConfig[], rootKey: string[] = []) {\n fields.forEach(field => {\n if (field.key && !field.fieldGroup && field.formControl) {\n const control = field.formControl;\n let valueChanges = control.valueChanges.pipe(\n distinctUntilChanged((x, y) => {\n if (x !== y || Array.isArray(x) || isObject(x)) {\n return false;\n }\n\n return true;\n }),\n );\n\n const { updateOn, debounce } = field.modelOptions;\n if ((!updateOn || updateOn === 'change') && debounce && debounce.default > 0) {\n valueChanges = control.valueChanges.pipe(debounceTime(debounce.default));\n }\n\n this.modelChangeSubs.push(valueChanges.subscribe((value) => {\n // workaround for https://github.com/angular/angular/issues/13792\n if (control instanceof FormControl && control['_fields'] && control['_fields'].length > 1) {\n control.patchValue(value, { emitEvent: false, onlySelf: true });\n }\n\n if (field.parsers && field.parsers.length > 0) {\n field.parsers.forEach(parserFn => value = parserFn(value));\n }\n\n this.changeModel({ key: [...rootKey, ...getKeyPath(field)].join('.'), value, field });\n }));\n\n // workaround for v5 (https://github.com/ngx-formly/ngx-formly/issues/2061)\n const observers = control.valueChanges['observers'];\n if (observers && observers.length > 1) {\n observers.unshift(observers.pop());\n }\n }\n\n if (field.fieldGroup && field.fieldGroup.length > 0) {\n this.trackModelChanges(field.fieldGroup, field.key ? [...rootKey, ...getKeyPath(field)] : rootKey);\n }\n });\n }\n\n private clearModelSubscriptions() {\n this.modelChangeSubs.forEach(sub => sub.unsubscribe());\n this.modelChangeSubs = [];\n }\n\n private get field(): any {\n return this.fields && this.fields[0] && this.fields[0].parent;\n }\n}\n","import {\n Component, EventEmitter, Input, Output,\n ViewContainerRef, ViewChild, ComponentRef, SimpleChanges, Attribute, ComponentFactoryResolver,\n OnInit, OnChanges, OnDestroy, DoCheck, AfterContentInit, AfterContentChecked, AfterViewInit, AfterViewChecked, Renderer2, ElementRef,\n} from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { FormlyConfig } from '../services/formly.config';\nimport { FormlyFieldConfig, FormlyFormOptions, FormlyFieldConfigCache } from './formly.field.config';\nimport { defineHiddenProp, wrapProperty } from '../utils';\nimport { FieldWrapper } from '../templates/field.wrapper';\nimport { FieldType } from '../templates/field.type';\nimport { isObservable } from 'rxjs';\n\n@Component({\n selector: 'formly-field',\n template: `<ng-template #container></ng-template>`,\n})\nexport class FormlyField implements OnInit, OnChanges, DoCheck, AfterContentInit, AfterContentChecked, AfterViewInit, AfterViewChecked, OnDestroy {\n @Input() field: FormlyFieldConfig;\n\n warnDeprecation = false;\n\n @Input() set model(m: any) {\n this.warnDeprecation && console.warn(`NgxFormly: passing 'model' input to '${this.constructor.name}' component is not required anymore, you may remove it!`);\n }\n\n @Input() set form(form: FormGroup) {\n this.warnDeprecation && console.warn(`NgxFormly: passing 'form' input to '${this.constructor.name}' component is not required anymore, you may remove it!`);\n }\n\n @Input() set options(options: FormlyFormOptions) {\n this.warnDeprecation && console.warn(`NgxFormly: passing 'options' input to '${this.constructor.name}' component is not required anymore, you may remove it!`);\n }\n\n @Output() modelChange: EventEmitter<any> = new EventEmitter();\n // TODO: remove `any`, once dropping angular `V7` support.\n @ViewChild('container', <any> {read: ViewContainerRef, static: true }) containerRef: ViewContainerRef;\n private hostObservers: Function[] = [];\n private componentRefs: any[] = [];\n private hooksObservers: Function[] = [];\n private detectFieldBuild = false;\n\n constructor(\n private formlyConfig: FormlyConfig,\n private renderer: Renderer2,\n private resolver: ComponentFactoryResolver,\n private elementRef: ElementRef,\n // tslint:disable-next-line\n @Attribute('hide-deprecation') hideDeprecation,\n ) {\n this.warnDeprecation = hideDeprecation === null;\n }\n\n ngAfterContentInit() {\n this.triggerHook('afterContentInit');\n }\n\n ngAfterContentChecked() {\n this.triggerHook('afterContentChecked');\n }\n\n ngAfterViewInit() {\n this.triggerHook('afterViewInit');\n }\n\n ngAfterViewChecked() {\n this.triggerHook('afterViewChecked');\n }\n\n ngDoCheck() {\n this.triggerHook('doCheck');\n if (this.detectFieldBuild && (this.field && this.field.options)) {\n this.render();\n }\n }\n\n ngOnInit() {\n this.triggerHook('onInit');\n }\n\n ngOnChanges(changes: SimpleChanges) {\n this.triggerHook('onChanges', changes);\n }\n\n ngOnDestroy() {\n this.resetRefs(this.field);\n this.hostObservers.forEach(unsubscribe => unsubscribe());\n this.hooksObservers.forEach(unsubscribe => unsubscribe());\n this.triggerHook('onDestroy');\n }\n\n private renderField(containerRef: ViewContainerRef, f: FormlyFieldConfigCache, wrappers: string[] = []) {\n if (this.containerRef === containerRef) {\n this.resetRefs(this.field);\n this.containerRef.clear();\n wrappers = this.field ? this.field.wrappers : [];\n }\n\n if (wrappers && wrappers.length > 0) {\n const [wrapper, ...wps] = wrappers;\n const { component } = this.formlyConfig.getWrapper(wrapper);\n\n const ref = containerRef.createComponent<FieldWrapper>(this.resolver.resolveComponentFactory(component));\n this.attachComponentRef(ref, f);\n wrapProperty<ViewContainerRef>(ref.instance, 'fieldComponent', ({ firstChange, previousValue, currentValue }) => {\n if (currentValue) {\n if (previousValue && previousValue['_lContainer'] === currentValue['_lContainer']) {\n return;\n }\n\n const viewRef = previousValue ? previousValue.detach() : null;\n if (viewRef && !viewRef.destroyed) {\n currentValue.insert(viewRef);\n } else {\n this.renderField(currentValue, f, wps);\n }\n\n !firstChange && ref.changeDetectorRef.detectChanges();\n }\n });\n } else if (f && f.type) {\n const { component } = this.formlyConfig.getType(f.type);\n const ref = containerRef.createComponent<FieldWrapper>(this.resolver.resolveComponentFactory(component));\n this.attachComponentRef(ref, f);\n }\n }\n\n private triggerHook(name: string, changes?: SimpleChanges) {\n if (this.field && this.field.hooks && this.field.hooks[name]) {\n if (!changes || changes.field) {\n const r = this.field.hooks[name](this.field);\n if (isObservable(r) && ['onInit', 'afterContentInit', 'afterViewInit'].indexOf(name) !== -1) {\n const sub = r.subscribe();\n this.hooksObservers.push(() => sub.unsubscribe());\n }\n }\n }\n\n if (this.field && this.field.lifecycle && this.field.lifecycle[name]) {\n this.field.lifecycle[name](\n this.field.form,\n this.field,\n this.field.model,\n this.field.options,\n );\n }\n\n if (name === 'onChanges' && changes.field) {\n this.resetRefs(changes.field.previousValue);\n this.render();\n }\n }\n\n private attachComponentRef<T extends FieldType>(ref: ComponentRef<T>, field: FormlyFieldConfigCache) {\n this.componentRefs.push(ref);\n field._componentRefs.push(ref);\n Object.assign(ref.instance, { field });\n }\n\n private render() {\n if (!this.field) {\n return;\n }\n\n // require Formly build\n if (!this.field.options) {\n this.detectFieldBuild = true;\n\n return;\n }\n\n this.detectFieldBuild = false;\n this.hostObservers.forEach(unsubscribe => unsubscribe());\n this.hostObservers = [\n wrapProperty(this.field, 'hide', ({ firstChange, currentValue }) => {\n if (!this.formlyConfig.extras.lazyRender) {\n firstChange && this.renderField(this.containerRef, this.field);\n if (!firstChange || (firstChange && currentValue)) {\n this.renderer.setStyle(this.elementRef.nativeElement, 'display', currentValue ? 'none' : '');\n }\n } else {\n if (currentValue) {\n this.containerRef.clear();\n if (this.field.className) {\n this.renderer.removeAttribute(this.elementRef.nativeElement, 'class');\n }\n } else {\n this.renderField(this.containerRef, this.field);\n if (this.field.className) {\n this.renderer.setAttribute(this.elementRef.nativeElement, 'class', this.field.className);\n }\n }\n }\n }),\n wrapProperty(this.field, 'className', ({ firstChange, currentValue }) => {\n if (\n (!firstChange || (firstChange && currentValue))\n && (!this.formlyConfig.extras.lazyRender || (this.field.hide !== true))\n ) {\n this.renderer.setAttribute(this.elementRef.nativeElement, 'class', currentValue);\n }\n }),\n ];\n }\n\n private resetRefs(field: FormlyFieldConfigCache) {\n if (field) {\n if (field._componentRefs) {\n field._componentRefs = field._componentRefs.filter(ref => this.componentRefs.indexOf(ref) === -1);\n } else {\n defineHiddenProp(this.field, '_componentRefs', []);\n }\n }\n\n this.componentRefs = [];\n }\n}\n","import { Directive, ElementRef, Input, OnChanges, SimpleChanges, Renderer2, DoCheck, Inject, OnDestroy } from '@angular/core';\nimport { FormlyFieldConfig, FormlyTemplateOptions } from './formly.field.config';\nimport { wrapProperty, defineHiddenProp, FORMLY_VALIDATORS } from '../utils';\nimport { DOCUMENT } from '@angular/common';\n\n@Directive({\n selector: '[formlyAttributes]',\n host: {\n '(focus)': 'onFocus($event)',\n '(blur)': 'onBlur($event)',\n '(change)': 'onChange($event)',\n },\n})\nexport class FormlyAttributes implements OnChanges, DoCheck, OnDestroy {\n @Input('formlyAttributes') field: FormlyFieldConfig;\n @Input() id: string;\n\n private document: Document;\n private uiAttributesCache: any = {};\n private uiAttributes = [\n ...FORMLY_VALIDATORS,\n 'tabindex',\n 'placeholder',\n 'readonly',\n 'disabled',\n 'step',\n ];\n\n /**\n * HostBinding doesn't register listeners conditionally which may produce some perf issues.\n *\n * Formly issue: https://github.com/ngx-formly/ngx-formly/issues/1991\n */\n private uiEvents = {\n listeners: [],\n events: [\n 'click',\n 'keyup',\n 'keydown',\n 'keypress',\n ],\n };\n\n get to(): FormlyTemplateOptions { return this.field.templateOptions || {}; }\n\n private get fieldAttrElements(): ElementRef[] { return (this.field && this.field['_elementRefs']) || []; }\n\n constructor(\n private renderer: Renderer2,\n private elementRef: ElementRef,\n @Inject(DOCUMENT) _document: any,\n ) {\n this.document = _document;\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes.field) {\n this.field.name && this.setAttribute('name', this.field.name);\n this.uiEvents.listeners.forEach(listener => listener());\n this.uiEvents.events.forEach(eventName => {\n if (this.to && this.to[eventName]) {\n this.uiEvents.listeners.push(\n this.renderer.listen(\n this.elementRef.nativeElement,\n eventName,\n (e) => this.to[eventName](this.field, e),\n ),\n );\n }\n });\n\n if (this.to && this.to.attributes) {\n wrapProperty(this.to, 'attributes', ({ currentValue, previousValue }) => {\n if (previousValue) {\n Object.keys(previousValue).forEach(attr => this.removeAttribute(attr));\n }\n\n if (currentValue) {\n Object.keys(currentValue).forEach(attr => {\n if (currentValue[attr] != null) {\n this.setAttribute(attr, currentValue[attr]);\n }\n });\n }\n });\n }\n\n this.detachElementRef(changes.field.previousValue);\n this.attachElementRef(changes.field.currentValue);\n if (this.fieldAttrElements.length === 1) {\n !this.id && this.field.id && this.setAttribute('id', this.field.id);\n wrapProperty(this.field, 'focus', ({ currentValue }) => {\n this.toggleFocus(currentValue);\n });\n }\n }\n\n if (changes.id) {\n this.setAttribute('id', this.id);\n }\n }\n\n /**\n * We need to re-evaluate all the attributes on every change detection cycle, because\n * by using a HostBinding we run into certain edge cases. This means that whatever logic\n * is in here has to be super lean or we risk seriously damaging or destroying the performance.\n *\n * Formly issue: https://github.com/ngx-formly/ngx-formly/issues/1317\n * Material issue: https://github.com/angular/components/issues/14024\n */\n ngDoCheck() {\n this.uiAttributes.forEach(attr => {\n const value = this.to[attr];\n if (\n this.uiAttributesCache[attr] !== value\n && (!this.to.attributes || !this.to.attributes.hasOwnProperty(attr.toLowerCase()))\n ) {\n this.uiAttributesCache[attr] = value;\n if (value || value === 0) {\n this.setAttribute(attr, value === true ? attr : `${value}`);\n } else {\n this.removeAttribute(attr);\n }\n }\n });\n }\n\n ngOnDestroy() {\n this.uiEvents.listeners.forEach(listener => listener());\n this.detachElementRef(this.field);\n }\n\n toggleFocus(value: boolean) {\n const element = this.fieldAttrElements ? this.fieldAttrElements[0] : null;\n if (!element || !element.nativeElement.focus) {\n return;\n }\n\n const isFocused = !!this.document.activeElement\n && this.fieldAttrElements\n .some(({ nativeElement }) => this.document.activeElement === nativeElement || nativeElement.contains(this.document.activeElement));\n\n if (value && !isFocused) {\n element.nativeElement.focus();\n } else if (!value && isFocused) {\n element.nativeElement.blur();\n }\n }\n\n onFocus($event: any) {\n this.field['___$focus'] = true;\n if (this.to.focus) {\n this.to.focus(this.field, $event);\n }\n }\n\n onBlur($event: any) {\n this.field['___$focus'] = false;\n if (this.to.blur) {\n this.to.blur(this.field, $event);\n }\n }\n\n onChange($event: any) {\n if (this.to.change) {\n this.to.change(this.field, $event);\n }\n\n if (this.field.formControl) {\n this.field.formControl.markAsDirty();\n }\n }\n\n private attachElementRef(f: FormlyFieldConfig) {\n if (!f) {\n return;\n }\n\n if (f['_elementRefs'] && f['_elementRefs'].indexOf(this.elementRef) === -1) {\n f['_elementRefs'].push(this.elementRef);\n } else {\n defineHiddenProp(f, '_elementRefs', [this.elementRef]);\n }\n }\n\n private detachElementRef(f: FormlyFieldConfig) {\n const index = f && f['_elementRefs'] ? this.fieldAttrElements.indexOf(this.elementRef) : -1;\n if (index !== -1) {\n this.field['_elementRefs'].splice(index, 1);\n }\n }\n\n private setAttribute(attr: string, value: string) {\n this.renderer.setAttribute(this.elementRef.nativeElement, attr, value);\n }\n\n private removeAttribute(attr: string) {\n this.renderer.removeAttribute(this.elementRef.nativeElement, attr);\n }\n}\n","import { Input } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { FormlyFieldConfig } from '../components/formly.field.config';\n\nexport abstract class FieldType<F extends FormlyFieldConfig = FormlyFieldConfig> {\n @Input() field: F;\n defaultOptions?: F;\n\n @Input()\n get model() { return this.field.model; }\n set model(m: any) { console.warn(`NgxFormly: passing 'model' input to '${this.constructor.name}' component is not required anymore, you may remove it!`); }\n\n @Input()\n get form() { return <FormGroup> this.field.parent.formControl; }\n set form(form) { console.warn(`NgxFormly: passing 'form' input to '${this.constructor.name}' component is not required anymore, you may remove it!`); }\n\n @Input()\n get options() { return this.field.options; }\n set options(options: F['options']) { console.warn(`NgxFormly: passing 'options' input to '${this.constructor.name}' component is not required anymore, you may remove it!`); }\n\n get key() { return this.field.key; }\n\n get formControl() { return this.field.formControl; }\n\n get to() { return this.field.templateOptions || {}; }\n\n get showError(): boolean { return this.options.showError(this); }\n\n get id(): string { return this.field.id; }\n\n get formState() { return this.options.formState || {}; }\n}\n\n/**\n * @deprecated use `FieldType` instead\n */\nexport abstract class Field extends FieldType {\n constructor() {\n super();\n console.warn(`NgxFormly: 'Field' has been renamed to 'FieldType', extend 'FieldType' instead.`);\n }\n}\n","import { Inject, Optional } from '@angular/core';\nimport { FormArray } from '@angular/forms';\nimport { FieldType } from './field.type';\nimport { clone, isNullOrUndefined, assignFieldValue } from '../utils';\nimport { FormlyFormBuilder } from '../services/formly.form.builder';\nimport { FormlyFieldConfig } from '../components/formly.field.config';\nimport { FORMLY_CONFIG, FormlyExtension } from '../services/formly.config';\nimport { registerControl, unregisterControl, findControl } from '../extensions/field-form/utils';\nimport { Directive } from '@angular/core';\n\n// TODO remove `selector` in V6\n// tslint:disable-next-line\n@Directive({ selector: '[ɵfieldArray]' })\nexport abstract class FieldArrayType<F extends FormlyFieldConfig = FormlyFieldConfig> extends FieldType<F> implements FormlyExtension {\n get formControl() {\n return this.field.formControl as FormArray;\n }\n\n defaultOptions: any = {\n defaultValue: [],\n };\n\n constructor(@Inject(FORMLY_CONFIG) @Optional() builder?: FormlyFormBuilder) {\n super();\n\n if (builder instanceof FormlyFormBuilder) {\n console.warn(`NgxFormly: passing 'FormlyFormBuilder' to '${this.constructor.name}' type is not required anymore, you may remove it!`);\n }\n }\n\n onPopulate(field: FormlyFieldConfig) {\n if (!field.formControl && field.key) {\n const control = findControl(field);\n registerControl(field, control ? control : new FormArray([], { updateOn: field.modelOptions.updateOn }));\n }\n\n field.fieldGroup = field.fieldGroup || [];\n\n const length = field.model ? field.model.length : 0;\n if (field.fieldGroup.length > length) {\n for (let i = field.fieldGroup.length - 1; i >= length; --i) {\n unregisterControl(field.fieldGroup[i]);\n field.fieldGroup.splice(i, 1);\n }\n }\n\n for (let i = field.fieldGroup.length; i < length; i++) {\n const f = { ...clone(field.fieldArray), key: `${i}` };\n field.fieldGroup.push(f);\n }\n }\n\n add(i?: number, initialModel?: any, { markAsDirty } = { markAsDirty: true }) {\n i = isNullOrUndefined(i) ? this.field.fieldGroup.length : i;\n if (!this.model) {\n assignFieldValue(this.field, []);\n }\n\n this.model.splice(i, 0, initialModel ? clone(initialModel) : undefined);\n\n (<any> this.options)._buildForm(true);\n markAsDirty && this.formControl.markAsDirty();\n }\n\n remove(i: number, { markAsDirty } = { markAsDirty: true }) {\n this.model.splice(i, 1);\n unregisterControl(this.field.fieldGroup[i], true);\n this.field.fieldGroup.splice(i, 1);\n this.field.fieldGroup.forEach((f, key) => f.key = `${key}`);\n\n (<any> this.options)._buildForm(true);\n markAsDirty && this.formControl.markAsDirty();\n }\n}\n","import { ViewContainerRef, ViewChild } from '@angular/core';\nimport { FieldType } from './field.type';\nimport { FormlyFieldConfig } from '../components/formly.field.config';\n\nexport abstract class FieldWrapper<F extends FormlyFieldConfig = FormlyFieldConfig> extends FieldType<F> {\n // TODO: remove `any`, once dropping angular `V7` support.\n @ViewChild('fieldComponent', <any>{ read: ViewContainerRef, static: false }) fieldComponent: ViewContainerRef;\n}\n","import { Component } from '@angular/core';\nimport { FieldType } from './field.type';\n\n@Component({\n selector: 'formly-group',\n template: `\n <formly-field *ngFor=\"let f of field.fieldGroup\" [field]=\"f\"></formly-field>\n <ng-content></ng-content>\n `,\n host: {\n '[class]': 'field.fieldGroupClassName || \"\"',\n },\n})\nexport class FormlyGroup extends FieldType {\n defaultOptions = {\n defaultValue: {},\n };\n}\n","import { Component, Input, ChangeDetectionStrategy, OnChanges } from '@angular/core';\nimport { FormlyConfig, ValidationMessageOption } from '../services/formly.config';\nimport { FormlyFieldConfig } from '../components/formly.field.config';\nimport { isObject } from '../utils';\nimport { Observable, isObservable, of } from 'rxjs';\nimport { merge } from 'rxjs';\nimport { startWith, switchMap, filter } from 'rxjs/operators';\n\n@Component({\n selector: 'formly-validation-message',\n template: `{{ errorMessage$ | async }}`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FormlyValidationMessage implements OnChanges {\n @Input() field: FormlyFieldConfig;\n errorMessage$: Observable<string>;\n\n constructor(private formlyConfig: FormlyConfig) {}\n\n ngOnChanges() {\n this.errorMessage$ = merge(\n this.field.formControl.statusChanges,\n (\n !this.field.options\n ? of(null)\n : this.field.options.fieldChanges.pipe(\n filter(({ field, type, property }) => {\n return (field === this.field)\n && (type === 'expressionChanges')\n && (property.indexOf('validation') !== -1)\n ;\n }),\n )\n ),\n ).pipe(\n startWith(null),\n switchMap(() => isObservable(this.errorMessage)\n ? this.errorMessage\n : of(this.errorMessage),\n ),\n );\n }\n\n get errorMessage() {\n const fieldForm = this.field.formControl;\n for (let error in fieldForm.errors) {\n if (fieldForm.errors.hasOwnProperty(error)) {\n let message: ValidationMessageOption['message'] = this.formlyConfig.getValidatorMessage(error);\n\n if (isObject(fieldForm.errors[error])) {\n if (fieldForm.errors[error].errorPath) {\n return;\n }\n\n if (fieldForm.errors[error].message) {\n message = fieldForm.errors[error].message;\n }\n }\n\n if (this.field.validation && this.field.validation.messages && this.field.validation.messages[error]) {\n message = this.field.validation.messages[error];\n }\n\n if (this.field.validators && this.field.validators[error] && this.field.validators[error].message) {\n message = this.field.validators[error].message;\n }\n\n if (this.field.asyncValidators && this.field.asyncValidators[error] && this.field.asyncValidators[error].message) {\n message = this.field.asyncValidators[error].message;\n }\n\n if (typeof message === 'function') {\n return message(fieldForm.errors[error], this.field);\n }\n\n return message;\n }\n }\n }\n}\n","import { Component } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { FieldType } from './field.type';\n\n@Component({\n selector: 'formly-template',\n template: `<div [innerHtml]=\"template\"></div>`,\n})\nexport class FormlyTemplateType extends FieldType {\n get template() {\n if (this.field && (this.field.template !== this.innerHtml.template)) {\n this.innerHtml = {\n template: this.field.template,\n content: this.to.safeHtml\n ? this.sanitizer.bypassSecurityTrustHtml(this.field.template)\n : this.field.template,\n };\n }\n\n return this.innerHtml.content;\n }\n\n private innerHtml = { content: null, template: null };\n constructor(private sanitizer: DomSanitizer) {\n super();\n }\n}\n","export function evalStringExpression(expression: string, argNames: string[]) {\n try {\n if (expression.indexOf('this.field') !== -1) {\n console.warn(`NgxFormly: using 'this.field' in expressionProperties is deprecated since v5.1, use 'field' instead.`);\n }\n\n return Function(...argNames, `return ${expression};`) as any;\n } catch (error) {\n console.error(error);\n }\n}\n\nexport function evalExpressionValueSetter(expression: string, argNames: string[]) {\n try {\n return Function(...argNames, `${expression} = expressionValue;`) as (value: any) => void;\n } catch (error) {\n console.error(error);\n }\n}\n\nexport function evalExpression(expression: string | Function | boolean, thisArg: any, argVal: any[]): any {\n if (expression instanceof Function) {\n return expression.apply(thisArg, argVal);\n } else {\n return expression ? true : false;\n }\n}\n","import { FormlyFieldConfig, FormlyValueChangeEvent, FormlyFieldConfigCache } from '../../components/formly.field.config';\nimport { isObject, isNullOrUndefined, isUndefined, isFunction, defineHiddenProp, wrapProperty, getFieldValue, assignFieldValue } from '../../utils';\nimport { evalExpression, evalStringExpression } from './utils';\nimport { isObservable, Observable, Subscription } from 'rxjs';\nimport { FormlyExtension } from '../../services/formly.config';\nimport { unregisterControl, registerControl, updateValidity } from '../field-form/utils';\nimport { FormArray } from '@angular/forms';\n\n/** @experimental */\nexport class FieldExpressionExtension implements FormlyExtension {\n prePopulate(field: FormlyFieldConfigCache) {\n if (field.parent || field.options._checkField) {\n return;\n }\n\n let checkLocked = false;\n field.options._checkField = (f, ignoreCache) => {\n if (!checkLocked) {\n checkLocked = true;\n this.checkField(f, ignoreCache);\n checkLocked = false;\n }\n };\n }\n\n postPopulate(field: FormlyFieldConfigCache) {\n if (!field.parent || field._expressionProperties) {\n return;\n }\n\n // cache built expression\n defineHiddenProp(field, '_expressionProperties', {});\n\n if (field.expressionProperties) {\n for (const key in field.expressionProperties) {\n const expressionProperty = field.expressionProperties[key];\n\n if (typeof expressionProperty === 'string' || isFunction(expressionProperty)) {\n field._expressionProperties[key] = {\n expression: this._evalExpression(\n key,\n expressionProperty,\n key === 'templateOptions.disabled' && field.parent.expressionProperties && field.parent.expressionProperties.hasOwnProperty('templateOptions.disabled')\n ? () => field.parent.templateOptions.disabled\n : undefined,\n ),\n };\n if (key === 'templateOptions.disabled') {\n Object.defineProperty(field._expressionProperties[key], 'expressionValue', {\n get: () => field.templateOptions.disabled,\n set: () => { },\n enumerable: true,\n configurable: true,\n });\n }\n } else if (expressionProperty instanceof Observable) {\n const subscribe = () => (expressionProperty as Observable<any>)\n .subscribe(v => {\n this.setExprValue(field, key, v);\n if (field.options && field.options._markForCheck) {\n field.options._markForCheck(field);\n }\n });\n\n let subscription: Subscription = subscribe();\n const onInit = field.hooks.onInit;\n field.hooks.onInit = () => {\n if (subscription === null) {\n subscription = subscribe();\n }\n return onInit && onInit(field);\n };\n\n const onDestroy = field.hooks.onDestroy;\n field.hooks.onDestroy = () => {\n onDestroy && onDestroy(field);\n subscription.unsubscribe();\n subscription = null;\n };\n }\n }\n }\n\n if (field.hideExpression) {\n // delete hide value in order to force re-evaluate it in FormlyFormExpression.\n delete field.hide;\n\n field.hideExpression = this._evalExpression(\n 'hide',\n field.hideExpression,\n () => {\n let root = field.parent;\n while (root.parent && !root.hide) {\n root = root.parent;\n }\n\n return root.hide;\n },\n );\n } else {\n wrapProperty(field, 'hide', ({ currentValue, firstChange }) => {\n field._hide = currentValue;\n if (!firstChange || (firstChange && currentValue === true)) {\n field.options._hiddenFieldsForCheck.push(field);\n }\n });\n }\n }\n\n private _evalExpression(prop: string, expression, parentExpression?) {\n return (...args) => {\n try {\n if (typeof expression === 'string') {\n expression = evalStringExpression(expression, ['model', 'formState', 'field']);\n }\n\n if (typeof expression !== 'function') {\n expression = () => !!expression;\n }\n\n return (parentExpression && parentExpression()) || expression(...args);\n } catch (error) {\n error.message = `[Formly Error] [Expression \"${prop}\"] ${error.message}`;\n throw error;\n }\n };\n }\n\n private checkField(field: FormlyFieldConfigCache, ignoreCache = false) {\n const fieldChanged = this._checkField(field, ignoreCache);\n\n field.options._hiddenFieldsForCheck\n .sort(f => f.hide ? -1 : 1)\n .forEach(f => this.toggleFormControl(f, !!f.hide, !ignoreCache));\n\n field.options._hiddenFieldsForCheck = [];\n if (fieldChanged) {\n this.checkField(field);\n if (field.options && field.options._markForCheck) {\n field.options._markForCheck(field);\n }\n }\n }\n\n private _checkField(field: FormlyFieldConfigCache, ignoreCache = false) {\n let fieldChanged = false;\n field.fieldGroup.forEach(f => {\n if (!f.options) {\n return;\n }\n\n this.checkFieldExpressionChange(f, ignoreCache) && (fieldChanged = true);\n if (this.checkFieldVisibilityChange(f, ignoreCache)) {\n field.options._hiddenFieldsForCheck.push(f);\n fieldChanged = true;\n }\n\n if (f.fieldGroup && f.fieldGroup.length > 0) {\n this._checkField(f, ignoreCache) && (fieldChanged = true);\n }\n });\n\n return fieldChanged;\n }\n\n private checkFieldExpressionChange(field: FormlyFieldConfigCache, ignoreCache): boolean {\n if (!field || !field._expressionProperties) {\n return false;\n }\n\n let markForCheck = false;\n const expressionProperties = field._expressionProperties;\n\n for (const key in expressionProperties) {\n let expressionValue = evalExpression(expressionProperties[key].expression, { field }, [field.model, field.options.formState, field, ignoreCache]);\n if (key === 'templateOptions.disabled') {\n expressionValue = !!expressionValue;\n }\n\n if (\n ignoreCache || (\n expressionProperties[key].expressionValue !== expressionValue\n && (\n !(isObject(expressionValue) || isFunction(expressionValue))\n || (\n isFunction(expressionValue)\n && ('' + expressionProperties[key].expressionValue !== '' + expressionValue)\n )\n || isObservable(expressionValue)\n || JSON.stringify(expressionValue) !== JSON.stringify(expressionProperties[key].expressionValue)\n )\n )\n ) {\n markForCheck = true;\n expressionProperties[key].expressionValue = expressionValue;\n this.setExprValue(field, key, expressionValue);\n }\n }\n\n return markForCheck;\n }\n\n private checkFieldVisibilityChange(field: FormlyFieldConfigCache, ignoreCache): boolean {\n if (!field || isNullOrUndefined(field.hideExpression)) {\n return false;\n }\n\n const hideExpressionResult: boolean = !!evalExpression(\n field.hideExpression,\n { field },\n [field.model, field.options.formState, field, ignoreCache],\n );\n let markForCheck = false;\n if (hideExpressionResult !== field.hide || ignoreCache) {\n markForCheck = true;\n // toggle hide\n field.hide = hideExpressionResult;\n field.templateOptions.hidden = hideExpressionResult;\n }\n\n return markForCheck;\n }\n\n private setDisabledState(field: FormlyFieldConfig, value: boolean) {\n if (field.fieldGroup) {\n field.fieldGroup\n .filter(f => !f.expressionProperties || !f.expressionProperties.hasOwnProperty('templateOptions.disabled'))\n .forEach(f => this.setDisabledState(f, value));\n }\n\n if (field.key && field.templateOptions.disabled !== value) {\n field.templateOptions.disabled = value;\n }\n }\n\n private toggleFormControl(field: FormlyFieldConfigCache, hide: boolean, resetOnHide: boolean) {\n if (field.fieldGroup) {\n field.fieldGroup\n .filter(f => !f.hideExpression)\n .forEach(f => this.toggleFormControl(f, hide, resetOnHide));\n }\n\n if (field.formControl && field.key) {\n defineHiddenProp(field, '_hide', !!(hide || field.hide));\n const c = field.formControl;\n if (c['_fields'] && c['_fields'].length > 1) {\n updateValidity(c);\n }\n\n if (hide === true && (!c['_fields'] || c['_fields'].every(f => !!f._hide))) {\n unregisterControl(field, true);\n if (resetOnHide && field.resetOnHide) {\n field.formControl.reset({ value: undefined, disabled: field.formControl.disabled });\n if (field.fieldGroup) {\n assignFieldValue(field, undefined);\n\n if (field.formControl instanceof FormArray) {\n field.fieldGroup.length = 0;\n }\n }\n }\n } else if (hide === false) {\n if (field.resetOnHide && field.parent && !isUndefined(field.defaultValue) && isUndefined(getFieldValue(field))) {\n assignFieldValue(field, field.defaultValue);\n }\n registerControl(field, undefined, true);\n if (field.resetOnHide && field.fieldArray && (field.fieldGroup || []).length !== (field.model || []).length) {\n (<any> field.options)._buildForm(true);\n }\n }\n }\n\n if (field.options.fieldChanges) {\n field.options.fieldChanges.next(<FormlyValueChangeEvent> { field, type: 'hidden', value: hide });\n }\n }\n\n private setExprValue(field: FormlyFieldConfigCache, prop: string, value: any) {\n try {\n let target = field;\n const paths = prop.indexOf('[') === -1\n ? prop.split('.')\n : prop\n .replace(/\\'|\\\"/g, '')\n .split(/[[\\]]{1,2}/) // https://stackoverflow.com/a/20198206\n .filter(v => v)\n ;\n const lastIndex = paths.length - 1;\n for (let i = 0; i < lastIndex; i++) {\n target = target[paths[i]];\n }\n\n target[paths[lastIndex]] = value;\n } catch (error) {\n error.message = `[Formly Error] [Expression \"${prop}\"] ${error.message}`;\n throw error;\n }\n\n if (prop === 'templateOptions.disabled' && field.key) {\n this.setDisabledState(field, value);\n }\n\n if (prop.indexOf('model.') === 0) {\n const path = prop.replace(/^model\\./, ''),\n control = field.key && prop === path ? field.formControl : field.parent.formControl.get(path);\n\n if (\n control\n && !(isNullOrUndefined(control.value) && isNullOrUndefined(value))\n && control.value !== value\n ) {\n control.patchValue(value);\n }\n }\n\n this.emitExpressionChanges(field, prop, value);\n }\n\n private emitExpressionChanges(field: FormlyFieldConfigCache, property: string, value: any) {\n if (!field.options.fieldChanges) {\n return;\n }\n\n field.options.fieldChanges.next({\n field: field,\n type: 'expressionChanges',\n property,\n value,\n });\n }\n}\n","import { FormlyExtension, FormlyConfig, ValidatorOption } from '../../services/formly.config';\nimport { FormlyFieldConfigCache } from '../../components/formly.field.config';\nimport { AbstractControl, Validators, ValidatorFn } from '@angular/forms';\nimport { FORMLY_VALIDATORS, defineHiddenProp, isPromise, wrapProperty, clone, isObject } from '../../utils';\nimport { updateValidity } from '../field-form/utils';\nimport { isObservable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n/** @experimental */\nexport class FieldValidationExtension implements FormlyExtension {\n constructor(private formlyConfig: FormlyConfig) {}\n\n onPopulate(field: FormlyFieldConfigCache) {\n this.initFieldValidation(field, 'validators');\n this.initFieldValidation(field, 'asyncValidators');\n }\n\n private initFieldValidation(field: FormlyFieldConfigCache, type: 'validators' | 'asyncValidators') {\n const validators: ValidatorFn[] = [];\n if (type === 'validators' && !(field.hasOwnProperty('fieldGroup') && !field.key)) {\n validators.push(this.getPredefinedFieldValidation(field));\n }\n\n if (field[type]) {\n for (const validatorName in field[type]) {\n if (validatorName === 'validation' && !Array.isArray(field[type].validation)) {\n field[type].validation = [field[type].validation];\n console.warn(`NgxFormly(${field.key}): passing a non array value to the 'validation' is deprecated, pass an array instead`);\n }\n\n validatorName === 'validation'\n ? validators.push(...field[type].validation.map(v => this.wrapNgValidatorFn(field, v)))\n : validators.push(this.wrapNgValidatorFn(field, field[type][validatorName], validatorName))\n ;\n }\n }\n\n defineHiddenProp(field, '_' + type, validators);\n }\n\n private getPredefinedFieldValidation(field: FormlyFieldConfigCache): ValidatorFn {\n let VALIDATORS = [];\n FORMLY_VALIDATORS.forEach(opt => wrapProperty(field.templateOptions, opt, ({ currentValue, firstChange }) => {\n VALIDATORS = VALIDATORS.filter(o => o !== opt);\n if (currentValue != null && currentValue !== false) {\n VALIDATORS.push(opt);\n }\n if (!firstChange && field.formControl) {\n updateValidity(field.formControl);\n }\n }));\n\n return (control: AbstractControl) => {\n if (VALIDATORS.length === 0) {\n return null;\n }\n\n return Validators.compose(VALIDATORS.map(opt => () => {\n const value = field.templateOptions[opt];\n switch (opt) {\n case 'required':\n return Validators.required(control);\n case 'pattern':\n return Validators.pattern(value)(control);\n case 'minLength':\n return Validators.minLength(value)(control);\n case 'maxLength':\n return Validators.maxLength(value)(control);\n case 'min':\n return Validators.min(value)(control);\n case 'max':\n return Validators.max(value)(control);\n }\n }))(control);\n };\n }\n\n private wrapNgValidatorFn(field: FormlyFieldConfigCache, validator: any, validatorName?: string) {\n let validatorOption: ValidatorOption = null;\n if (typeof validator === 'string') {\n validatorOption = clone(this.formlyConfig.getValidator(validator));\n }\n\n if (typeof validator === 'object' && validator.name) {\n validatorOption = clone(this.formlyConfig.getValidator(validator.name));\n if (validator.options) {\n validatorOption.options = validator.options;\n }\n }\n\n if (typeof validator === 'object' && validator.expression) {\n const { expression, ...options } = validator;\n validatorOption = {\n name: validatorName,\n validation: expression,\n options: Object.keys(options).length > 0 ? options : null,\n };\n }\n\n if (typeof validator === 'function') {\n validatorOption = {\n name: validatorName,\n validation: validator,\n };\n }\n\n return (control: AbstractControl) => {\n const errors: any = validatorOption.validation(control, field, validatorOption.options);\n if (isPromise(errors)) {\n return errors.then(v => this.handleAsyncResult(field, validatorName ? !!v : v, validatorOption));\n }\n\n if (isObservable(errors)) {\n return errors.pipe(map(v => this.handleAsyncResult(field, validatorName ? !!v : v, validatorOption)));\n }\n\n return this.handleResult(field, validatorName ? !!errors : errors, validatorOption);\n };\n }\n\n private handleAsyncResult(field: FormlyFieldConfigCache, errors: any, options: ValidatorOption) {\n // workaround for https://github.com/angular/angular/issues/13200\n if (field.options && field.options._markForCheck) {\n field.options._markForCheck(field);\n }\n\n return this.handleResult(field, errors, options);\n }\n\n private handleResult(field: FormlyFieldConfigCache, errors: any, { name, options }: ValidatorOption) {\n if (typeof errors === 'boolean') {\n errors = errors ? null : { [name]: options ? options : true };\n }\n\n const ctrl = field.formControl;\n ctrl['_childrenErrors'] && ctrl['_childrenErrors'][name] && ctrl['_childrenErrors'][name]();\n\n if (isObject(errors)) {\n Object.keys(errors).forEach(name => {\n const errorPath = errors[name].errorPath\n ? errors[name].errorPath\n : (options || {}).errorPath;\n\n const childCtrl = errorPath ? field.formControl.get(errorPath) : null;\n if (childCtrl) {\n const { errorPath, ...opts } = errors[name];\n childCtrl.setErrors({ ...(childCtrl.errors || {}), [name]: opts });\n\n !ctrl['_childrenErrors'] && defineHiddenProp(ctrl, '_childrenErrors', {});\n ctrl['_childrenErrors'][name] = () => {\n const { [name]: toDelete, ...childErrors } = childCtrl.errors || {};\n childCtrl.setErrors(Object.keys(childErrors).length === 0 ? null : childErrors);\n };\n }\n });\n }\n\n return errors;\n }\n}\n","import { FormlyExtension, FormlyConfig } from '../../services/formly.config';\nimport { FormlyFieldConfigCache } from '../../components/formly.field.config';\nimport { FormGroup, FormControl, AbstractControlOptions, Validators, ValidatorFn, AsyncValidatorFn } from '@angular/forms';\nimport { getFieldValue, defineHiddenProp } from '../../utils';\nimport { registerControl, findControl, updateValidity } from './utils';\nimport { of } from 'rxjs';\n\n/** @experimental */\nexport class FieldFormExtension implements FormlyExtension {\n constructor(private config: FormlyConfig) { }\n\n onPopulate(field: FormlyFieldConfigCache) {\n if (!field.parent) {\n return;\n }\n\n if (field.fieldGroup && !field.key) {\n defineHiddenProp(field, 'formControl', field.parent.formControl);\n } else {\n this.addFormControl(field);\n }\n }\n\n postPopulate(field: FormlyFieldConfigCache) {\n if (field.parent) {\n return;\n }\n\n this.setValidators(field);\n }\n\n private addFormControl(field: FormlyFieldConfigCache) {\n let control = findControl(field);\n if (!control) {\n const controlOptions: AbstractControlOptions = { updateOn: field.modelOptions.updateOn };\n const value = field.key ? getFieldValue(field) : field.defaultValue;\n\n const ref = this.config ? this.config.resolveFieldTypeRef(field) : null;\n if (ref && ref.componentType && ref.componentType['createControl']) {\n const component = ref.componentType;\n console.warn(`NgxFormly: '${component.name}::createControl' is deprecated since v5.0, use 'prePopulate' hook instead.`);\n control = component['createControl'](value, field);\n } else if (field.fieldGroup) {\n // TODO: move to postPopulate\n control = new FormGroup({}, controlOptions);\n } else {\n control = new FormControl(value, controlOptions);\n }\n }\n\n registerControl(field, control);\n }\n\n private setValidators(field: FormlyFieldConfigCache) {\n let markForCheck = false;\n (field.fieldGroup || []).forEach(f => this.setValidators(f) && (markForCheck = true));\n\n if (field.key || !field.parent || (!field.key && !field.fieldGroup)) {\n const { formControl: c } = field;\n const disabled = field.templateOptions ? field.templateOptions.disabled : false;\n if (field.key && c) {\n if (disabled && c.enabled) {\n c.disable({ emitEvent: false, onlySelf: true });\n markForCheck = true;\n }\n\n if (!disabled && c.disabled) {\n c.enable({ emitEvent: false, onlySelf: true });\n markForCheck = true;\n }\n }\n\n\n if (c && (null === c.validator || null === c.asyncValidator)) {\n c.setValidators(() => {\n const v = Validators.compose(this.mergeValidators<ValidatorFn>(field, '_validators'));\n\n return v ? v(c) : null;\n });\n c.setAsyncValidators(() => {\n const v = Validators.composeAsync(this.mergeValidators<AsyncValidatorFn>(field, '_asyncValidators'));\n\n return v ? v(c) : of(null);\n });\n\n markForCheck = true;\n }\n\n if (markForCheck) {\n updateValidity(c, true);\n }\n }\n\n return markForCheck;\n }\n\n private mergeValidators<T>(field: FormlyFieldConfigCache, type: '_validators' | '_asyncValidators'): T[] {\n const validators: any = [];\n const c = field.formControl;\n if (c && c['_fields'] && c['_fields'].length > 1) {\n c['_fields']\n .filter((f: FormlyFieldConfigCache) => !f._hide)\n .forEach((f: FormlyFieldConfigCache) => validators.push(...f[type]));\n } else if (field[type]) {\n validators.push(...field[type]);\n }\n\n if (field.fieldGroup) {\n field.fieldGroup\n .filter(f => !f.key && f.fieldGroup)\n .forEach(f => validators.push(...this.mergeValidators(f, type)));\n }\n\n return validators;\n }\n}\n","import { FormlyExtension, FormlyConfig, TemplateManipulators } from '../../services/formly.config';\nimport { FormlyFieldConfigCache, FormlyFieldConfig } from '../../components/formly.field.config';\nimport { FormGroup } from '@angular/forms';\nimport { getFieldId, isUndefined, getFieldValue, reverseDeepMerge, assignFieldValue } from '../../utils';\n\n/** @experimental */\nexport class CoreExtension implements FormlyExtension {\n private formId = 0;\n constructor(private formlyConfig: FormlyConfig) { }\n\n prePopulate(field: FormlyFieldConfigCache) {\n this.getFieldComponentInstance(field).prePopulate();\n if (field.parent) {\n return;\n }\n\n const fieldTransforms = (field.options && field.options.fieldTransform) || this.formlyConfig.extras.fieldTransform;\n (Array.isArray(fieldTransforms) ? fieldTransforms : [fieldTransforms]).forEach(fieldTransform => {\n if (fieldTransform) {\n console.warn(`NgxFormly: fieldTransform is deprecated since v5.0, use custom extension instead.`);\n const fieldGroup = fieldTransform(field.fieldGroup, field.model, <FormGroup>field.formControl, field.options);\n if (!fieldGroup) {\n throw new Error('fieldTransform must return an array of fields');\n }\n }\n });\n }\n\n onPopulate(field: FormlyFieldConfigCache) {\n this.initFieldOptions(field);\n this.getFieldComponentInstance(field).onPopulate();\n if (field.fieldGroup) {\n field.fieldGroup.forEach((f, index) => {\n Object.defineProperty(f, 'parent', { get: () => field, configurable: true });\n Object.defineProperty(f, 'index', { get: () => index, configurable: true });\n this.formId++;\n });\n }\n }\n\n postPopulate(field: FormlyFieldConfigCache) {\n this.getFieldComponentInstance(field).postPopulate();\n }\n\n private initFieldOptions(field: FormlyFieldConfigCache) {\n const root = <FormlyFieldConfigCache> field.parent;\n if (!root) {\n return;\n }\n\n Object.defineProperty(field, 'form', { get: () => root.formControl, configurable: true });\n Object.defineProperty(field, 'options', { get: () => root.options, configurable: true });\n Object.defineProperty(field, 'model', {\n get: () => field.key && field.fieldGroup ? getFieldValue(field) : root.model,\n configurable: true,\n });\n\n reverseDeepMerge(field, {\n id: getFieldId(`formly_${this.formId}`, field, field['index']),\n hooks: {},\n modelOptions: {},\n validation: { messages: {} },\n templateOptions: !field.type || !field.key ? {} : {\n label: '',\n placeholder: '',\n focus: false,\n disabled: false,\n },\n });\n\n if (this.formlyConfig.extras.resetFieldOnHide && field.resetOnHide !== false) {\n field.resetOnHide = true;\n }\n\n if (field.lifecycle) {\n console.warn(`NgxFormly: 'lifecycle' is deprecated since v5.0, use 'hooks' instead.`);\n }\n\n if (\n field.type !== 'formly-template'\n && (\n field.template\n || (field.expressionProperties && field.expressionProperties.template)\n )\n ) {\n if (field.type) {\n console.warn(`NgxFormly: passing 'type' property is not allowed when 'template' is set.`);\n }\n field.type = 'formly-template';\n }\n\n if (!field.type && field.fieldGroup) {\n field.type = 'formly-group';\n }\n\n if (field.type) {\n this.formlyConfig.getMergedField(field);\n }\n\n if (field.parent) {\n let setDefaultValue = !isUndefined(field.key)\n && !isUndefined(field.defaultValue)\n && isUndefined(getFieldValue(field))\n && (!field.resetOnHide || !(field.hide || field.hideExpression));\n if (setDefaultValue && field.resetOnHide) {\n let parent = field.parent;\n while (parent && !parent.hideExpression && !parent.hide) {\n parent = parent.parent;\n }\n setDefaultValue = !parent || !(parent.hideExpression || parent.hide);\n }\n\n if (setDefaultValue) {\n assignFieldValue(field, field.defaultValue);\n }\n }\n\n this.initFieldWrappers(field);\n }\n\n private initFieldWrappers(field: FormlyFieldConfig) {\n field.wrappers = field.wrappers || [];\n const fieldTemplateManipulators: TemplateManipulators = {\n preWrapper: [],\n postWrapper: [],\n ...(field.templateOptions.templateManipulators || {}),\n };\n\n field.wrappers = [\n ...this.formlyConfig.templateManipulators.preWrapper.map(m => m(field)),\n ...fieldTemplateManipulators.preWrapper.map(m => m(field)),\n ...field.wrappers,\n ...this.formlyConfig.templateManipulators.postWrapper.map(m => m(field)),\n ...fieldTemplateManipulators.postWrapper.map(m => m(field)),\n ].filter((el, i, a) => el && i === a.indexOf(el));\n }\n\n private getFieldComponentInstance(field: FormlyFieldConfigCache) {\n const componentRef = this.formlyConfig.resolveFieldTypeRef(field);\n const instance: FormlyExtension = componentRef ? componentRef.instance as any : {};\n\n return {\n prePopulate: () => instance.prePopulate && instance.prePopulate(field),\n onPopulate: () => instance.onPopulate && instance.onPopulate(field),\n postPopulate: () => instance.postPopulate && instance.postPopulate(field),\n };\n }\n}\n","import { NgModule, ModuleWithProviders, ANALYZE_FOR_ENTRY_COMPONENTS, Inject, Optional } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormlyForm } from './components/formly.form';\nimport { FormlyField } from './components/formly.field';\nimport { FormlyAttributes } from './components/formly.attributes';\nimport { FormlyConfig, ConfigOption, FORMLY_CONFIG } from './services/formly.config';\nimport { FormlyFormBuilder } from './services/formly.form.builder';\nimport { FormlyGroup } from './templates/formly.group';\nimport { FormlyValidationMessage } from './templates/formly.validation-message';\nimport { FormlyTemplateType } from './templates/field-template.type';\n\nimport { FieldExpressionExtension } from './extensions/field-expression/field-expression';\nimport { FieldValidationExtension } from './extensions/field-validation/field-validation';\nimport { FieldFormExtension } from './extensions/field-form/field-form';\nimport { CoreExtension } from './extensions/core/core';\nimport { FieldArrayType } from './templates/field-array.type';\n\nexport function defaultFormlyConfig(formlyConfig: FormlyConfig): ConfigOption {\n return {\n types: [\n { name: 'formly-group', component: FormlyGroup },\n { name: 'formly-template', component: FormlyTemplateType },\n ],\n extensions: [\n { name: 'core', extension: new CoreExtension(formlyConfig) },\n { name: 'field-validation', extension: new FieldValidationExtension(formlyConfig) },\n { name: 'field-form', extension: new FieldFormExtension(formlyConfig) },\n { name: 'field-expression', extension: new FieldExpressionExtension() },\n ],\n };\n}\n\n@NgModule({\n declarations: [\n FormlyForm,\n FormlyField,\n FormlyAttributes,\n FormlyGroup,\n FormlyValidationMessage,\n FormlyTemplateType,\n FieldArrayType as any,\n ],\n entryComponents: [FormlyGroup, FormlyTemplateType],\n exports: [FormlyForm, FormlyField, FormlyAttributes, FormlyGroup, FormlyValidationMessage],\n imports: [CommonModule],\n})\nexport class FormlyModule {\n static forRoot(config: ConfigOption = {}): ModuleWithProviders<FormlyModule> {\n return {\n ngModule: FormlyModule,\n providers: [\n { provide: FORMLY_CONFIG, multi: true, useFactory: defaultFormlyConfig, deps: [FormlyConfig] },\n { provide: FORMLY_CONFIG, useValue: config, multi: true },\n { provide: ANALYZE_FOR_ENTRY_COMPONENTS, useValue: config, multi: true },\n FormlyConfig,\n FormlyFormBuilder,\n ],\n };\n }\n\n static forChild(config: ConfigOption = {}): ModuleWithProviders<FormlyModule> {\n return {\n ngModule: FormlyModule,\n providers: [\n { provide: FORMLY_CONFIG, multi: true, useFactory: defaultFormlyConfig, deps: [FormlyConfig] },\n { provide: FORMLY_CONFIG, useValue: config, multi: true },\n { provide: ANALYZE_FOR_ENTRY_COMPONENTS, useValue: config, multi: true },\n FormlyFormBuilder,\n ],\n };\n }\n\n constructor(\n configService: FormlyConfig,\n @Optional() @Inject(FORMLY_CONFIG) configs: ConfigOption[] = [],\n ) {\n if (!configs) {\n return;\n }\n\n configs.forEach(config => configService.addConfig(config));\n }\n}\n"]}
1
+ {"version":3,"sources":["node_modules/tslib/tslib.es6.js","ng://@ngx-formly/core/lib/utils.ts","ng://@ngx-formly/core/lib/services/formly.config.ts","ng://@ngx-formly/core/lib/services/formly.form.builder.ts","ng://@ngx-formly/core/lib/extensions/field-form/utils.ts","ng://@ngx-formly/core/lib/components/formly.form.ts","ng://@ngx-formly/core/lib/components/formly.field.ts","ng://@ngx-formly/core/lib/components/formly.attributes.ts","ng://@ngx-formly/core/lib/templates/field.type.ts","ng://@ngx-formly/core/lib/templates/field-array.type.ts","ng://@ngx-formly/core/lib/templates/field.wrapper.ts","ng://@ngx-formly/core/lib/templates/formly.group.ts","ng://@ngx-formly/core/lib/templates/formly.validation-message.ts","ng://@ngx-formly/core/lib/templates/field-template.type.ts","ng://@ngx-formly/core/lib/extensions/field-expression/utils.ts","ng://@ngx-formly/core/lib/extensions/field-expression/field-expression.ts","ng://@ngx-formly/core/lib/extensions/field-validation/field-validation.ts","ng://@ngx-formly/core/lib/extensions/field-form/field-form.ts","ng://@ngx-formly/core/lib/extensions/core/core.ts","ng://@ngx-formly/core/lib/core.module.ts"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__extends","__","this","constructor","prototype","create","__assign","assign","t","s","i","n","arguments","length","call","apply","__rest","e","indexOf","getOwnPropertySymbols","propertyIsEnumerable","__read","o","m","Symbol","iterator","r","ar","next","done","push","value","error","__spread","concat","getKeyPath","field","key","_keyPath","path","replace","split","isArray","slice","FORMLY_VALIDATORS","assignFieldValue","paths","root","parent","undefined","resetOnHide","k","pop","reduce","model","assignModelValue","isObject","test","clone","getFieldValue","_b","__values","tslib_1.__values","_c","reverseDeepMerge","dest","args","_i","forEach","src","srcArg","isNullOrUndefined","obj1","obj2","getPrototypeOf","isUndefined","isFunction","x","isObservable","TemplateRef","changingThisBreaksApplicationSecurity","name","Set","Map","_isAMomentObject","AbstractControl","Date","getTime","map","v","proto","c","keys","newVal","prop","propDesc","getOwnPropertyDescriptor","get","defineProperty","defineHiddenProp","defaultValue","enumerable","writable","configurable","wrapProperty","setFn","_observers","fns","currentValue","firstChange","set","previousValue_1","changeFn","previousValue","splice","FORMLY_CONFIG","InjectionToken","FormlyConfig","types","validators","wrappers","messages","templateManipulators","preWrapper","postWrapper","extras","checkExpressionOn","lazyRender","showError","formControl","invalid","touched","options","parentForm","submitted","validation","show","extensions","addConfig","config","_this","type","setType","validator","setValidator","wrapper","setWrapper","manipulators","console","warn","manipulator","setManipulator","validationMessages","addValidatorMessage","message","extension","option","getType","Error","mergeExtendedType","getMergedField","defaultOptions","extendDefaults","extends","optionsTypes","componentRef","resolveFieldTypeRef","instance","component","_a","_resolver","_injector","resolveComponentFactory","destroy","setTypeWrapper","getWrapper","getValidator","getValidatorMessage","class","method","extendedType","Injectable","providedIn","FormlyFormBuilder","formlyConfig","componentFactoryResolver","injector","buildForm","fieldGroup","core","_setOptions","disableTreeValidityCall","form","callback","_updateTreeValidity","bind","_buildForm","_checkField","getExtensions","prePopulate","onPopulate","f","postPopulate","formState","fieldChanges","Subject","_hiddenFieldsForCheck","_markForCheck","_componentRefs","ref","ChangeDetectorRef","markForCheck","_buildField","ComponentFactoryResolver","Injector","unregisterControl","emitEvent","control","fieldIndex","opts","FormArray","key_1","controls","findIndex","updateControl","removeAt","FormGroup","key_2","removeControl","setParent","findControl","registerControl","setValidators","setAsyncValidators","templateOptions","disabled","disable","enable","registerOnDisabledChange","FormControl","patchValue","setControl","_hide","updateValidity","onlySelf","status","updateValueAndValidity","emit","action","_forEachChild","cb","FormlyForm","formlyBuilder","ngZone","immutable","parentFormGroup","modelChange","EventEmitter","_modelChangeValue","modelChangeSubs","modelChange$","modelChangeSub","pipe","switchMap","onStable","asObservable","take","subscribe","runGuarded","checkExpressionChange","_model","_fields","fields","_options","content","hasContent","node","nativeElement","nextSibling","nodeType","Node","ELEMENT_NODE","TEXT_NODE","textContent","trim","ngDoCheck","ngOnChanges","changes","clearControl","setOptions","updateInitialValue","clearModelSubscriptions","trackModelChanges","ngOnDestroy","unsubscribe","changeModel","resetModel","_initialModel","resetForm","reset","emitModelChange","rootKey","control_1","valueChanges","distinctUntilChanged","y","modelOptions","updateOn","debounce","default","debounceTime","parsers","parserFn","tslib_1.__spread","join","observers","unshift","sub","Component","selector","template","providers","NgZone","Attribute","FormGroupDirective","decorators","Optional","Input","Output","ViewChild","FormlyField","renderer","resolver","elementRef","hideDeprecation","warnDeprecation","hostObservers","componentRefs","hooksObservers","detectFieldBuild","ngAfterContentInit","triggerHook","ngAfterContentChecked","ngAfterViewInit","ngAfterViewChecked","render","ngOnInit","resetRefs","renderField","containerRef","clear","wps_1","ref_1","createComponent","attachComponentRef","viewRef","detach","destroyed","insert","changeDetectorRef","detectChanges","hooks","sub_1","lifecycle","className","removeAttribute","setAttribute","setStyle","hide","filter","Renderer2","ElementRef","read","ViewContainerRef","static","FormlyAttributes","_document","uiAttributesCache","uiAttributes","uiEvents","listeners","events","eventName","$event","onFocus","onBlur","onChange","to","document","listener","listen","attributes","attr","detachElementRef","attachElementRef","fieldAttrElements","id","toggleFocus","element_1","hasAttribute","toLowerCase","element","focus","isFocused","activeElement","some","contains","blur","change","markAsDirty","index","Directive","Inject","DOCUMENT","FieldType","Field","_super","tslib_1.__extends","FieldArrayType","builder","fieldArray","add","initialModel","remove","FieldWrapper","FormlyGroup","host","[class]","FormlyValidationMessage","errorMessage$","merge","statusChanges","property","of","startWith","errorMessage","fieldForm","errors","errorPath","asyncValidators","changeDetection","ChangeDetectionStrategy","OnPush","FormlyTemplateType","sanitizer","innerHtml","safeHtml","bypassSecurityTrustHtml","DomSanitizer","evalExpression","expression","thisArg","argVal","Function","FieldExpressionExtension","checkLocked","ignoreCache","checkField","_expressionProperties","expressionProperties","expressionProperty","this_1","_evalExpression","Observable","subscribe_1","setExprValue","subscription_1","onInit_1","onInit","onDestroy_1","onDestroy","hideExpression","parentExpression","evalStringExpression","argNames","fieldChanged","sort","toggleFormControl","checkFieldExpressionChange","checkFieldVisibilityChange","expressionValue","JSON","stringify","hideExpressionResult","hidden","setDisabledState","every","target","lastIndex","emitExpressionChanges","FieldValidationExtension","initFieldValidation","getPredefinedFieldValidation","validatorName","wrapNgValidatorFn","VALIDATORS","opt","Validators","compose","required","pattern","minLength","maxLength","min","max","validatorOption","isPromise","obj","then","handleAsyncResult","handleResult","ctrl","childCtrl","setErrors","childErrors","FieldFormExtension","addFormControl","controlOptions","componentType","c_1","enabled","asyncValidator","mergeValidators","composeAsync","CoreExtension","formId","getFieldComponentInstance","fieldTransforms","fieldTransform","initFieldOptions","getFieldId","label","placeholder","resetFieldOnHide","setDefaultValue","parent_1","initFieldWrappers","fieldTemplateManipulators","el","a","defaultFormlyConfig","FormlyModule","configService","configs","forRoot","ngModule","provide","multi","useFactory","deps","useValue","ANALYZE_FOR_ENTRY_COMPONENTS","forChild","NgModule","declarations","entryComponents","exports","imports","CommonModule"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\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 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) : new P(function (resolve) { resolve(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 function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n 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}\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\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\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 __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\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 (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = 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","import { FormlyFieldConfig } from './core';\nimport { isObservable } from 'rxjs';\nimport { AbstractControl } from '@angular/forms';\nimport { FormlyFieldConfigCache } from './components/formly.field.config';\nimport { TemplateRef } from '@angular/core';\n\nexport function disableTreeValidityCall(form: any, callback: Function) {\n const _updateTreeValidity = form._updateTreeValidity.bind(form);\n form._updateTreeValidity = () => {};\n callback();\n form._updateTreeValidity = _updateTreeValidity;\n}\n\nexport function getFieldId(formId: string, field: FormlyFieldConfig, index: string|number) {\n if (field.id) return field.id;\n let type = field.type;\n if (!type && field.template) type = 'template';\n return [formId, type, field.key, index].join('_');\n}\n\nexport function getKeyPath(field: FormlyFieldConfigCache): string[] {\n if (!field.key) {\n return [];\n }\n\n /* We store the keyPath in the field for performance reasons. This function will be called frequently. */\n if (!field._keyPath || field._keyPath.key !== field.key) {\n let path: string[] = [];\n if (typeof field.key === 'string') {\n const key = field.key.indexOf('[') === -1\n ? field.key\n : field.key.replace(/\\[(\\w+)\\]/g, '.$1');\n path = key.indexOf('.') !== -1 ? key.split('.') : [key];\n } else if (Array.isArray(field.key)) {\n path = field.key.slice(0);\n } else {\n path = [`${field.key}`];\n }\n\n field._keyPath = { key: field.key, path };\n }\n\n return field._keyPath.path.slice(0);\n}\n\nexport const FORMLY_VALIDATORS = ['required', 'pattern', 'minLength', 'maxLength', 'min', 'max'];\n\nexport function assignFieldValue(field: FormlyFieldConfigCache, value: any) {\n let paths = getKeyPath(field);\n if (paths.length === 0) {\n return;\n }\n\n let root = field;\n while (root.parent) {\n root = root.parent;\n paths = [...getKeyPath(root), ...paths];\n }\n\n if (value === undefined && field.resetOnHide) {\n const k = paths.pop();\n const m = paths.reduce((model, path) => model[path] || {}, root.model);\n delete m[k];\n return;\n }\n\n assignModelValue(root.model, paths, value);\n}\n\nexport function assignModelValue(model: any, paths: string[], value: any) {\n for (let i = 0; i < (paths.length - 1); i++) {\n const path = paths[i];\n if (!model[path] || !isObject(model[path])) {\n model[path] = /^\\d+$/.test(paths[i + 1]) ? [] : {};\n }\n\n model = model[path];\n }\n\n model[paths[paths.length - 1]] = clone(value);\n}\n\nexport function getFieldValue(field: FormlyFieldConfig): any {\n let model = field.parent.model;\n for (const path of getKeyPath(field)) {\n if (!model) {\n return model;\n }\n model = model[path];\n }\n\n return model;\n}\n\nexport function reverseDeepMerge(dest: any, ...args: any[]) {\n args.forEach(src => {\n for (let srcArg in src) {\n if (isNullOrUndefined(dest[srcArg]) || isBlankString(dest[srcArg])) {\n dest[srcArg] = clone(src[srcArg]);\n } else if (objAndSameType(dest[srcArg], src[srcArg])) {\n reverseDeepMerge(dest[srcArg], src[srcArg]);\n }\n }\n });\n return dest;\n}\n\nexport function isNullOrUndefined(value: any) {\n return value === undefined || value === null;\n}\n\nexport function isUndefined(value: any) {\n return value === undefined;\n}\n\nexport function isBlankString(value: any) {\n return value === '';\n}\n\nexport function isFunction(value: any) {\n return typeof(value) === 'function';\n}\n\nexport function objAndSameType(obj1: any, obj2: any) {\n return isObject(obj1) && isObject(obj2)\n && Object.getPrototypeOf(obj1) === Object.getPrototypeOf(obj2)\n && !(Array.isArray(obj1) || Array.isArray(obj2));\n}\n\nexport function isObject(x: any) {\n return x != null && typeof x === 'object';\n}\n\nexport function isPromise(obj: any): obj is Promise<any> {\n return !!obj && typeof obj.then === 'function';\n}\n\nexport function clone(value: any): any {\n if (\n !isObject(value)\n || isObservable(value)\n || (value instanceof TemplateRef)\n || /* instanceof SafeHtmlImpl */ value.changingThisBreaksApplicationSecurity\n || ['RegExp', 'FileList', 'File', 'Blob'].indexOf(value.constructor.name) !== -1\n ) {\n return value;\n }\n\n if (value instanceof Set) {\n return new Set(value);\n }\n\n if (value instanceof Map) {\n return new Map(value);\n }\n\n // https://github.com/moment/moment/blob/master/moment.js#L252\n if (value._isAMomentObject && isFunction(value.clone)) {\n return value.clone();\n }\n\n if (value instanceof AbstractControl) {\n return null;\n }\n\n if (value instanceof Date) {\n return new Date(value.getTime());\n }\n\n if (Array.isArray(value)) {\n return value.slice(0).map(v => clone(v));\n }\n\n // best way to clone a js object maybe\n // https://stackoverflow.com/questions/41474986/how-to-clone-a-javascript-es6-class-instance\n const proto = Object.getPrototypeOf(value);\n let c = Object.create(proto);\n c = Object.setPrototypeOf(c, proto);\n // need to make a deep copy so we dont use Object.assign\n // also Object.assign wont copy property descriptor exactly\n return Object.keys(value).reduce((newVal, prop) => {\n const propDesc = Object.getOwnPropertyDescriptor(value, prop);\n if (propDesc.get) {\n Object.defineProperty(newVal, prop, propDesc);\n } else {\n newVal[prop] = clone(value[prop]);\n }\n\n return newVal;\n }, c);\n}\n\nexport function defineHiddenProp(field: any, prop: string, defaultValue: any) {\n Object.defineProperty(field, prop, { enumerable: false, writable: true, configurable: true });\n field[prop] = defaultValue;\n}\n\nexport function wrapProperty<T = any>(\n o: any,\n prop: string,\n setFn: (change: {currentValue: T, previousValue?: T, firstChange: boolean}) => void,\n) {\n if (!o._observers) {\n defineHiddenProp(o, '_observers', {});\n }\n\n if (!o._observers[prop]) {\n o._observers[prop] = [];\n }\n\n let fns: typeof setFn[] = o._observers[prop];\n if (fns.indexOf(setFn) === -1) {\n fns.push(setFn);\n setFn({ currentValue: o[prop], firstChange: true });\n if (fns.length === 1) {\n defineHiddenProp(o, `___$${prop}`, o[prop]);\n Object.defineProperty(o, prop, {\n configurable: true,\n get: () => o[`___$${prop}`],\n set: currentValue => {\n if (currentValue !== o[`___$${prop}`]) {\n const previousValue = o[`___$${prop}`];\n o[`___$${prop}`] = currentValue;\n fns.forEach(changeFn => changeFn({ previousValue, currentValue, firstChange: false }));\n }\n },\n });\n }\n }\n\n return () => fns.splice(fns.indexOf(setFn), 1);\n}\n","import { Injectable, InjectionToken, ComponentRef } from '@angular/core';\nimport { ValidationErrors, AbstractControl } from '@angular/forms';\nimport { FieldType } from './../templates/field.type';\nimport { reverseDeepMerge, defineHiddenProp } from './../utils';\nimport { FormlyFieldConfig, FormlyFieldConfigCache } from '../components/formly.field.config';\nimport { Observable } from 'rxjs';\n\nexport const FORMLY_CONFIG = new InjectionToken<FormlyConfig>('FORMLY_CONFIG');\n\n/** @experimental */\nexport interface FormlyExtension {\n prePopulate?(field: FormlyFieldConfig): void;\n onPopulate?(field: FormlyFieldConfig): void;\n postPopulate?(field: FormlyFieldConfig): void;\n}\n\n/**\n * Maintains list of formly field directive types. This can be used to register new field templates.\n */\n@Injectable({ providedIn: 'root' })\nexport class FormlyConfig {\n types: {[name: string]: TypeOption} = {};\n validators: { [name: string]: ValidatorOption } = {};\n wrappers: { [name: string]: WrapperOption } = {};\n messages: { [name: string]: ValidationMessageOption['message'] } = {};\n templateManipulators: {\n preWrapper: ManipulatorWrapper[];\n postWrapper: ManipulatorWrapper[];\n } = {\n preWrapper: [],\n postWrapper: [],\n };\n extras: ConfigOption['extras'] = {\n checkExpressionOn: 'changeDetectionCheck',\n lazyRender: false,\n showError: function(field: FieldType) {\n return field.formControl && field.formControl.invalid && (field.formControl.touched || (field.options.parentForm && field.options.parentForm.submitted) || !!(field.field.validation && field.field.validation.show));\n },\n };\n extensions: { [name: string]: FormlyExtension } = {};\n\n addConfig(config: ConfigOption) {\n if (config.types) {\n config.types.forEach(type => this.setType(type));\n }\n if (config.validators) {\n config.validators.forEach(validator => this.setValidator(validator));\n }\n if (config.wrappers) {\n config.wrappers.forEach(wrapper => this.setWrapper(wrapper));\n }\n if (config.manipulators) {\n console.warn(`NgxFormly: passing 'manipulators' config is deprecated, use custom extension instead.`);\n config.manipulators.forEach(manipulator => this.setManipulator(manipulator));\n }\n if (config.validationMessages) {\n config.validationMessages.forEach(validation => this.addValidatorMessage(validation.name, validation.message));\n }\n if (config.extensions) {\n config.extensions.forEach(c => this.extensions[c.name] = c.extension);\n }\n if (config.extras) {\n this.extras = { ...this.extras, ...config.extras };\n }\n }\n\n setType(options: TypeOption | TypeOption[]) {\n if (Array.isArray(options)) {\n options.forEach((option) => this.setType(option));\n } else {\n if (!this.types[options.name]) {\n this.types[options.name] = <TypeOption>{ name: options.name };\n }\n\n ['component', 'extends', 'defaultOptions', 'wrappers'].forEach(prop => {\n if (options.hasOwnProperty(prop)) {\n this.types[options.name][prop] = options[prop];\n }\n });\n }\n }\n\n getType(name: string): TypeOption {\n if (!this.types[name]) {\n throw new Error(`[Formly Error] The type \"${name}\" could not be found. Please make sure that is registered through the FormlyModule declaration.`);\n }\n\n this.mergeExtendedType(name);\n\n return this.types[name];\n }\n\n getMergedField(field: FormlyFieldConfig = {}): any {\n const type = this.getType(field.type);\n if (type.defaultOptions) {\n reverseDeepMerge(field, type.defaultOptions);\n }\n\n const extendDefaults = type.extends && this.getType(type.extends).defaultOptions;\n if (extendDefaults) {\n reverseDeepMerge(field, extendDefaults);\n }\n\n if (field && field.optionsTypes) {\n field.optionsTypes.forEach(option => {\n const defaultOptions = this.getType(option).defaultOptions;\n if (defaultOptions) {\n reverseDeepMerge(field, defaultOptions);\n }\n });\n }\n\n const componentRef = this.resolveFieldTypeRef(field);\n if (componentRef && componentRef.instance && componentRef.instance.defaultOptions) {\n reverseDeepMerge(field, componentRef.instance.defaultOptions);\n }\n\n if (!field.wrappers && type.wrappers) {\n field.wrappers = [...type.wrappers];\n }\n }\n\n /** @internal */\n resolveFieldTypeRef(field: FormlyFieldConfigCache = {}): ComponentRef<FieldType> {\n if (!field.type) {\n return null;\n }\n\n const type = this.getType(field.type);\n if (!type.component || type['_componentRef']) {\n return type['_componentRef'];\n }\n\n const { _resolver, _injector } = field.parent.options;\n const componentRef = _resolver\n .resolveComponentFactory<FieldType>(type.component)\n .create(_injector);\n\n defineHiddenProp(type, '_componentRef', componentRef);\n componentRef.destroy();\n\n return type['_componentRef'];\n }\n\n setWrapper(options: WrapperOption) {\n this.wrappers[options.name] = options;\n if (options.types) {\n options.types.forEach((type) => {\n this.setTypeWrapper(type, options.name);\n });\n }\n }\n\n getWrapper(name: string): WrapperOption {\n if (!this.wrappers[name]) {\n throw new Error(`[Formly Error] The wrapper \"${name}\" could not be found. Please make sure that is registered through the FormlyModule declaration.`);\n }\n\n return this.wrappers[name];\n }\n\n setTypeWrapper(type: string, name: string) {\n if (!this.types[type]) {\n this.types[type] = <TypeOption>{};\n }\n if (!this.types[type].wrappers) {\n this.types[type].wrappers = [];\n }\n if (this.types[type].wrappers.indexOf(name) === -1) {\n this.types[type].wrappers.push(name);\n }\n }\n\n setValidator(options: ValidatorOption) {\n this.validators[options.name] = options;\n }\n\n getValidator(name: string): ValidatorOption {\n if (!this.validators[name]) {\n throw new Error(`[Formly Error] The validator \"${name}\" could not be found. Please make sure that is registered through the FormlyModule declaration.`);\n }\n\n return this.validators[name];\n }\n\n addValidatorMessage(name: string, message: ValidationMessageOption['message']) {\n this.messages[name] = message;\n }\n\n getValidatorMessage(name: string) {\n return this.messages[name];\n }\n\n setManipulator(manipulator: ManipulatorOption) {\n new manipulator.class()[manipulator.method](this);\n }\n\n private mergeExtendedType(name: string) {\n if (!this.types[name].extends) {\n return;\n }\n\n const extendedType = this.getType(this.types[name].extends);\n if (!this.types[name].component) {\n this.types[name].component = extendedType.component;\n }\n\n if (!this.types[name].wrappers) {\n this.types[name].wrappers = extendedType.wrappers;\n }\n }\n}\nexport interface TypeOption {\n name: string;\n component?: any;\n wrappers?: string[];\n extends?: string;\n defaultOptions?: FormlyFieldConfig;\n}\n\nexport interface WrapperOption {\n name: string;\n component: any;\n types?: string[];\n}\n\nexport interface FieldValidatorFn {\n (c: AbstractControl, field: FormlyFieldConfig, options?: { [id: string]: any; }): ValidationErrors | null;\n}\n\nexport interface ValidatorOption {\n name: string;\n validation: FieldValidatorFn;\n options?: { [id: string]: any };\n}\n\nexport interface ExtensionOption {\n name: string;\n extension: FormlyExtension;\n}\n\nexport interface ValidationMessageOption {\n name: string;\n message: string | ((error: any, field: FormlyFieldConfig) => string | Observable<string>);\n}\n\nexport interface ManipulatorOption {\n class?: { new (): any };\n method?: string;\n}\n\nexport interface ManipulatorWrapper {\n (f: FormlyFieldConfig): string;\n}\n\nexport interface TemplateManipulators {\n preWrapper?: ManipulatorWrapper[];\n postWrapper?: ManipulatorWrapper[];\n}\n\nexport interface ConfigOption {\n types?: TypeOption[];\n wrappers?: WrapperOption[];\n validators?: ValidatorOption[];\n extensions?: ExtensionOption[];\n validationMessages?: ValidationMessageOption[];\n\n /** @deprecated use `extensions` instead */\n manipulators?: ManipulatorOption[];\n extras?: {\n /** @deprecated use `extensions` instead */\n fieldTransform?: any,\n immutable?: boolean,\n showError?: (field: FieldType) => boolean;\n\n /**\n * Defines the option which formly rely on to check field expression properties.\n * - `modelChange`: perform a check when the value of the form control changes (Will be set by default in the next major version).\n * - `changeDetectionCheck`: triggers an immediate check when `ngDoCheck` is called.\n *\n * Defaults to `changeDetectionCheck`.\n */\n checkExpressionOn?: 'modelChange' | 'changeDetectionCheck',\n\n /**\n * Whether to lazily render field components or not when marked as hidden.\n * - `true`: lazily render field components (Will be set by default in the next major version).\n * - `false`: render field components and use CSS to control their visibility.\n *\n * Defaults to `false`.\n */\n lazyRender?: boolean,\n\n /**\n * When true, reset the value of hidden fields.\n *\n * Defaults to `false`.\n */\n resetFieldOnHide?: boolean,\n };\n}\n","import { Injectable, ComponentFactoryResolver, Injector, ChangeDetectorRef } from '@angular/core';\nimport { FormGroup, FormArray } from '@angular/forms';\nimport { FormlyConfig } from './formly.config';\nimport { FormlyFieldConfig, FormlyFormOptions, FormlyFieldConfigCache, FormlyValueChangeEvent, FormlyFormOptionsCache } from '../components/formly.field.config';\nimport { Subject } from 'rxjs';\nimport { defineHiddenProp, disableTreeValidityCall } from '../utils';\n\n@Injectable({ providedIn: 'root' })\nexport class FormlyFormBuilder {\n constructor(\n private formlyConfig: FormlyConfig,\n private componentFactoryResolver: ComponentFactoryResolver,\n private injector: Injector,\n ) {}\n\n buildForm(formControl: FormGroup | FormArray, fieldGroup: FormlyFieldConfig[] = [], model: any, options: FormlyFormOptions) {\n if (!this.formlyConfig.extensions.core) {\n throw new Error('NgxFormly: missing `forRoot()` call. use `forRoot()` when registering the `FormlyModule`.');\n }\n\n const field = { fieldGroup, model, formControl, options: this._setOptions(options) };\n disableTreeValidityCall(formControl, () => this._buildForm(field));\n field.options._checkField(field, true);\n }\n\n private _buildForm(field: FormlyFieldConfigCache) {\n this.getExtensions().forEach(extension => extension.prePopulate && extension.prePopulate(field));\n this.getExtensions().forEach(extension => extension.onPopulate && extension.onPopulate(field));\n\n if (field.fieldGroup) {\n field.fieldGroup.forEach((f) => this._buildForm(f));\n }\n\n this.getExtensions().forEach(extension => extension.postPopulate && extension.postPopulate(field));\n }\n\n private getExtensions() {\n return Object.keys(this.formlyConfig.extensions).map(name => this.formlyConfig.extensions[name]);\n }\n\n private _setOptions(options: FormlyFormOptionsCache) {\n options = options || {};\n options.formState = options.formState || {};\n\n if (!options.showError) {\n options.showError = this.formlyConfig.extras.showError;\n }\n\n if (!options.fieldChanges) {\n defineHiddenProp(options, 'fieldChanges', new Subject<FormlyValueChangeEvent>());\n }\n\n if (!options._resolver) {\n defineHiddenProp(options, '_resolver', this.componentFactoryResolver);\n }\n\n if (!options._injector) {\n defineHiddenProp(options, '_injector', this.injector);\n }\n\n if (!options._hiddenFieldsForCheck) {\n options._hiddenFieldsForCheck = [];\n }\n\n if (!options._markForCheck) {\n options._markForCheck = (field) => {\n if (field._componentRefs) {\n field._componentRefs.forEach(ref => {\n // NOTE: we cannot use ref.changeDetectorRef, see https://github.com/ngx-formly/ngx-formly/issues/2191\n const changeDetectorRef = ref.injector.get(ChangeDetectorRef);\n changeDetectorRef.markForCheck();\n });\n }\n\n if (field.fieldGroup) {\n field.fieldGroup.forEach(f => options._markForCheck(f));\n }\n };\n }\n\n if (!options._buildField) {\n options._buildField = (field: FormlyFieldConfig) => {\n this.buildForm(field.form, field.fieldGroup, field.model, field.options);\n return field;\n };\n }\n\n return options;\n }\n}\n","import { FormArray, FormGroup, FormControl, AbstractControl } from '@angular/forms';\nimport { FormlyFieldConfig } from '../../core';\nimport { getKeyPath, getFieldValue, isNullOrUndefined, defineHiddenProp, wrapProperty } from '../../utils';\nimport { FormlyFieldConfigCache } from '../../components/formly.field.config';\nimport { EventEmitter } from '@angular/core';\n\nexport function unregisterControl(field: FormlyFieldConfig, emitEvent = false) {\n const control = field.formControl;\n const fieldIndex = control['_fields'] ? control['_fields'].indexOf(field) : -1;\n if (fieldIndex !== -1) {\n control['_fields'].splice(fieldIndex, 1);\n }\n\n const form = control.parent as FormArray | FormGroup;\n if (!form) {\n return;\n }\n\n const opts = { emitEvent };\n if (form instanceof FormArray) {\n const key = form.controls.findIndex(c => c === control);\n if (key !== -1) {\n updateControl(form, opts, () => form.removeAt(key));\n }\n } else if (form instanceof FormGroup) {\n const paths = getKeyPath(field);\n const key = paths[paths.length - 1];\n if (form.get([key]) === control) {\n updateControl(form, opts, () => form.removeControl(key));\n }\n }\n\n control.setParent(null);\n}\n\nexport function findControl(field: FormlyFieldConfig): AbstractControl {\n if (field.formControl) {\n return field.formControl;\n }\n\n if (field['shareFormControl'] === false) {\n return null;\n }\n\n const form = field.parent.formControl as FormGroup;\n\n return form ? form.get(getKeyPath(field)) : null;\n}\n\nexport function registerControl(field: FormlyFieldConfigCache, control?: any, emitEvent = false) {\n control = control || field.formControl;\n if (!control['_fields']) {\n defineHiddenProp(control, '_fields', []);\n }\n if (control['_fields'].indexOf(field) === -1) {\n control['_fields'].push(field);\n }\n\n if (!field.formControl && control) {\n defineHiddenProp(field, 'formControl', control);\n control.setValidators(null);\n control.setAsyncValidators(null);\n\n field.templateOptions.disabled = !!field.templateOptions.disabled;\n wrapProperty(field.templateOptions, 'disabled', ({ firstChange, currentValue }) => {\n if (!firstChange) {\n currentValue ? field.formControl.disable() : field.formControl.enable();\n }\n });\n if (control.registerOnDisabledChange) {\n control.registerOnDisabledChange(\n (value: boolean) => {\n field.templateOptions['___$disabled'] = value;\n // TODO remove in V6\n field.options && field.options._markForCheck(field);\n },\n );\n }\n }\n\n let parent = field.parent.formControl as FormGroup;\n if (!parent || !field.key) {\n return;\n }\n\n const paths = getKeyPath(field);\n const value = getFieldValue(field);\n if (\n !(isNullOrUndefined(control.value) && isNullOrUndefined(value))\n && control.value !== value\n && control instanceof FormControl\n ) {\n control.patchValue(value);\n }\n\n for (let i = 0; i < (paths.length - 1); i++) {\n const path = paths[i];\n if (!parent.get([path])) {\n updateControl(\n parent,\n { emitEvent },\n () => parent.setControl(path, new FormGroup({})),\n );\n }\n\n parent = <FormGroup> parent.get([path]);\n }\n\n const key = paths[paths.length - 1];\n if (!field._hide && parent.get([key]) !== control) {\n updateControl(\n parent,\n { emitEvent },\n () => parent.setControl(key, control),\n );\n }\n}\n\nexport function updateValidity(c: AbstractControl, onlySelf = false) {\n const status = c.status;\n const value = c.value;\n c.updateValueAndValidity({ emitEvent: false, onlySelf });\n if (status !== c.status) {\n (c.statusChanges as EventEmitter<string>).emit(c.status);\n }\n\n if (value !== c.value) {\n (c.valueChanges as EventEmitter<any>).emit(c.value);\n }\n}\n\nfunction updateControl(form: FormGroup|FormArray, opts: { emitEvent: boolean }, action: Function) {\n /**\n * workaround for https://github.com/angular/angular/issues/27679\n */\n if (form instanceof FormGroup && !form['__patchForEachChild']) {\n defineHiddenProp(form, '__patchForEachChild', true);\n (form as any)._forEachChild = (cb: Function) => {\n Object\n .keys(form.controls)\n .forEach(k => form.controls[k] && cb(form.controls[k], k));\n };\n }\n\n /**\n * workaround for https://github.com/angular/angular/issues/20439\n */\n const updateValueAndValidity = form.updateValueAndValidity.bind(form);\n if (opts.emitEvent === false) {\n form.updateValueAndValidity = (opts) => {\n updateValueAndValidity({ ...(opts || {}), emitEvent: false });\n };\n }\n\n action();\n\n if (opts.emitEvent === false) {\n form.updateValueAndValidity = updateValueAndValidity;\n }\n}\n\nexport function clearControl(form: AbstractControl) {\n form['_fields'] && delete form['_fields'];\n form.setValidators(null);\n form.setAsyncValidators(null);\n if (form instanceof FormGroup || form instanceof FormArray) {\n Object.keys(form.controls)\n .forEach((k) => clearControl(form.controls[k]));\n }\n}\n","import { Component, DoCheck, OnChanges, Input, SimpleChanges, Optional, EventEmitter, Output, OnDestroy, Attribute, ViewChild, ElementRef, NgZone } from '@angular/core';\nimport { FormGroup, FormArray, FormGroupDirective, FormControl } from '@angular/forms';\nimport { FormlyFieldConfig, FormlyFormOptions, FormlyFormOptionsCache } from './formly.field.config';\nimport { FormlyFormBuilder } from '../services/formly.form.builder';\nimport { FormlyConfig } from '../services/formly.config';\nimport { assignFieldValue, isNullOrUndefined, wrapProperty, clone, defineHiddenProp, getKeyPath, isObject } from '../utils';\nimport { Subscription, Subject } from 'rxjs';\nimport { debounceTime, switchMap, distinctUntilChanged, take } from 'rxjs/operators';\nimport { clearControl } from '../extensions/field-form/utils';\n\n@Component({\n selector: 'formly-form',\n template: `\n <formly-field *ngFor=\"let field of fields\"\n hide-deprecation\n [form]=\"field.form\"\n [options]=\"field.options\"\n [model]=\"field.model\"\n [field]=\"field\">\n </formly-field>\n <ng-container #content>\n <ng-content></ng-content>\n </ng-container>\n `,\n providers: [FormlyFormBuilder],\n})\nexport class FormlyForm implements DoCheck, OnChanges, OnDestroy {\n @Input() form: FormGroup | FormArray;\n\n @Input()\n set model(model: any) { this._model = this.immutable ? clone(model) : model; }\n get model() {\n if (!this._model) {\n this._model = {};\n }\n\n return this._model;\n }\n\n @Input()\n set fields(fields: FormlyFieldConfig[]) { this._fields = this.immutable ? clone(fields) : fields; }\n get fields() { return this._fields || []; }\n\n @Input()\n set options(options: FormlyFormOptions) { this._options = this.immutable ? clone(options) : options; }\n get options() { return this._options; }\n\n @Output() modelChange = new EventEmitter<any>();\n @ViewChild('content') set content(content: ElementRef<HTMLElement>) {\n if (content) {\n let hasContent = false;\n let node = content.nativeElement.nextSibling;\n while (node && !hasContent) {\n if (\n node.nodeType === Node.ELEMENT_NODE\n || node.nodeType === Node.TEXT_NODE && node.textContent && node.textContent.trim() !== ''\n ) {\n hasContent = true;\n }\n\n node = node.nextSibling;\n }\n\n if (hasContent) {\n console.warn(`NgxFormly: content projection for 'formly-form' component is deprecated since v5.5, you should avoid passing content inside the 'formly-form' tag.`);\n }\n }\n }\n\n private immutable = false;\n private _model: any;\n private _modelChangeValue: any = {};\n private _fields: FormlyFieldConfig[];\n private _options: FormlyFormOptions;\n private modelChangeSubs: Subscription[] = [];\n private modelChange$ = new Subject<void>();\n private modelChangeSub = this.modelChange$.pipe(\n switchMap(() => this.ngZone.onStable.asObservable().pipe(take(1))),\n ).subscribe(() => this.ngZone.runGuarded(() => {\n // runGuarded is used to keep the expression changes in-sync\n // https://github.com/ngx-formly/ngx-formly/issues/2095\n this.checkExpressionChange();\n this.modelChange.emit(this._modelChangeValue = clone(this.model));\n }));\n\n constructor(\n private formlyBuilder: FormlyFormBuilder,\n private formlyConfig: FormlyConfig,\n private ngZone: NgZone,\n // tslint:disable-next-line\n @Attribute('immutable') immutable,\n @Optional() private parentFormGroup: FormGroupDirective,\n ) {\n if (immutable !== null) {\n console.warn(`NgxFormly: passing 'immutable' attribute to 'formly-form' component is deprecated since v5.5, enable immutable mode through NgModule declaration instead.`);\n }\n\n this.immutable = (immutable !== null) || !!formlyConfig.extras.immutable;\n }\n\n ngDoCheck() {\n if (this.formlyConfig.extras.checkExpressionOn === 'changeDetectionCheck') {\n this.checkExpressionChange();\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n // https://github.com/ngx-formly/ngx-formly/issues/2294\n if (changes.model && this.field) {\n this.field.model = this.model;\n }\n\n if (changes.fields && this.form) {\n clearControl(this.form);\n }\n\n if (changes.fields || changes.form || (changes.model && this._modelChangeValue !== changes.model.currentValue)) {\n this.form = this.form || (new FormGroup({}));\n this.setOptions();\n this.options.updateInitialValue();\n this.clearModelSubscriptions();\n this.formlyBuilder.buildForm(this.form, this.fields, this.model, this.options);\n this.trackModelChanges(this.fields);\n }\n }\n\n ngOnDestroy() {\n this.modelChangeSub.unsubscribe();\n this.clearModelSubscriptions();\n }\n\n changeModel({ key, value, field }: { key: string, value: any, field: FormlyFieldConfig }) {\n assignFieldValue(field, value);\n this.modelChange$.next();\n }\n\n setOptions() {\n if (!this.options) {\n this.options = {};\n }\n\n if (!this.options.resetModel) {\n this.options.resetModel = (model ?: any) => {\n model = clone(isNullOrUndefined(model) ? (<FormlyFormOptionsCache> this.options)._initialModel : model);\n if (this.model) {\n Object.keys(this.model).forEach(k => delete this.model[k]);\n Object.assign(this.model, model || {});\n }\n\n (<FormlyFormOptionsCache> this.options)._buildForm();\n\n // we should call `NgForm::resetForm` to ensure changing `submitted` state after resetting form\n // but only when the current component is a root one.\n if (this.options.parentForm && this.options.parentForm.control === this.form) {\n this.options.parentForm.resetForm(this.model);\n } else {\n this.form.reset(this.model);\n }\n };\n }\n\n if (!this.options.parentForm && this.parentFormGroup) {\n defineHiddenProp(this.options, 'parentForm', this.parentFormGroup);\n wrapProperty(this.options.parentForm, 'submitted', ({ firstChange }) => {\n if (!firstChange) {\n this.checkExpressionChange();\n (<FormlyFormOptionsCache> this.options)._markForCheck({\n fieldGroup: this.fields,\n model: this.model,\n formControl: this.form,\n options: this.options,\n });\n }\n });\n }\n\n if (!this.options.updateInitialValue) {\n this.options.updateInitialValue = () => (<FormlyFormOptionsCache> this.options)._initialModel = clone(this.model);\n }\n\n if (!(<FormlyFormOptionsCache> this.options)._buildForm) {\n (<FormlyFormOptionsCache> this.options)._buildForm = (emitModelChange = false) => {\n this.clearModelSubscriptions();\n this.formlyBuilder.buildForm(this.form, this.fields, this.model, this.options);\n this.trackModelChanges(this.fields);\n\n if (emitModelChange) {\n this.modelChange.emit(this._modelChangeValue = clone(this.model));\n }\n };\n }\n }\n\n private checkExpressionChange() {\n if (this.options && (<FormlyFormOptionsCache> this.options)._checkField) {\n (<FormlyFormOptionsCache> this.options)._checkField({\n fieldGroup: this.fields,\n model: this.model,\n formControl: this.form,\n options: this.options,\n });\n }\n }\n\n private trackModelChanges(fields: FormlyFieldConfig[], rootKey: string[] = []) {\n fields.forEach(field => {\n if (field.key && !field.fieldGroup && field.formControl) {\n const control = field.formControl;\n let valueChanges = control.valueChanges.pipe(\n distinctUntilChanged((x, y) => {\n if (x !== y || Array.isArray(x) || isObject(x)) {\n return false;\n }\n\n return true;\n }),\n );\n\n const { updateOn, debounce } = field.modelOptions;\n if ((!updateOn || updateOn === 'change') && debounce && debounce.default > 0) {\n valueChanges = control.valueChanges.pipe(debounceTime(debounce.default));\n }\n\n this.modelChangeSubs.push(valueChanges.subscribe((value) => {\n // workaround for https://github.com/angular/angular/issues/13792\n if (control instanceof FormControl && control['_fields'] && control['_fields'].length > 1) {\n control.patchValue(value, { emitEvent: false, onlySelf: true });\n }\n\n if (field.parsers && field.parsers.length > 0) {\n field.parsers.forEach(parserFn => value = parserFn(value));\n }\n\n this.changeModel({ key: [...rootKey, ...getKeyPath(field)].join('.'), value, field });\n }));\n\n // workaround for v5 (https://github.com/ngx-formly/ngx-formly/issues/2061)\n const observers = control.valueChanges['observers'];\n if (observers && observers.length > 1) {\n observers.unshift(observers.pop());\n }\n }\n\n if (field.fieldGroup && field.fieldGroup.length > 0) {\n this.trackModelChanges(field.fieldGroup, field.key ? [...rootKey, ...getKeyPath(field)] : rootKey);\n }\n });\n }\n\n private clearModelSubscriptions() {\n this.modelChangeSubs.forEach(sub => sub.unsubscribe());\n this.modelChangeSubs = [];\n }\n\n private get field(): any {\n return this.fields && this.fields[0] && this.fields[0].parent;\n }\n}\n","import {\n Component, EventEmitter, Input, Output,\n ViewContainerRef, ViewChild, ComponentRef, SimpleChanges, Attribute, ComponentFactoryResolver,\n OnInit, OnChanges, OnDestroy, DoCheck, AfterContentInit, AfterContentChecked, AfterViewInit, AfterViewChecked, Renderer2, ElementRef,\n} from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { FormlyConfig } from '../services/formly.config';\nimport { FormlyFieldConfig, FormlyFormOptions, FormlyFieldConfigCache } from './formly.field.config';\nimport { defineHiddenProp, wrapProperty } from '../utils';\nimport { FieldWrapper } from '../templates/field.wrapper';\nimport { FieldType } from '../templates/field.type';\nimport { isObservable } from 'rxjs';\n\n@Component({\n selector: 'formly-field',\n template: `<ng-template #container></ng-template>`,\n})\nexport class FormlyField implements OnInit, OnChanges, DoCheck, AfterContentInit, AfterContentChecked, AfterViewInit, AfterViewChecked, OnDestroy {\n @Input() field: FormlyFieldConfig;\n\n warnDeprecation = false;\n\n @Input() set model(m: any) {\n this.warnDeprecation && console.warn(`NgxFormly: passing 'model' input to '${this.constructor.name}' component is not required anymore, you may remove it!`);\n }\n\n @Input() set form(form: FormGroup) {\n this.warnDeprecation && console.warn(`NgxFormly: passing 'form' input to '${this.constructor.name}' component is not required anymore, you may remove it!`);\n }\n\n @Input() set options(options: FormlyFormOptions) {\n this.warnDeprecation && console.warn(`NgxFormly: passing 'options' input to '${this.constructor.name}' component is not required anymore, you may remove it!`);\n }\n\n @Output() modelChange: EventEmitter<any> = new EventEmitter();\n // TODO: remove `any`, once dropping angular `V7` support.\n @ViewChild('container', <any> {read: ViewContainerRef, static: true }) containerRef: ViewContainerRef;\n private hostObservers: Function[] = [];\n private componentRefs: any[] = [];\n private hooksObservers: Function[] = [];\n private detectFieldBuild = false;\n\n constructor(\n private formlyConfig: FormlyConfig,\n private renderer: Renderer2,\n private resolver: ComponentFactoryResolver,\n private elementRef: ElementRef,\n // tslint:disable-next-line\n @Attribute('hide-deprecation') hideDeprecation,\n ) {\n this.warnDeprecation = hideDeprecation === null;\n }\n\n ngAfterContentInit() {\n this.triggerHook('afterContentInit');\n }\n\n ngAfterContentChecked() {\n this.triggerHook('afterContentChecked');\n }\n\n ngAfterViewInit() {\n this.triggerHook('afterViewInit');\n }\n\n ngAfterViewChecked() {\n this.triggerHook('afterViewChecked');\n }\n\n ngDoCheck() {\n this.triggerHook('doCheck');\n if (this.detectFieldBuild && (this.field && this.field.options)) {\n this.render();\n }\n }\n\n ngOnInit() {\n this.triggerHook('onInit');\n }\n\n ngOnChanges(changes: SimpleChanges) {\n this.triggerHook('onChanges', changes);\n }\n\n ngOnDestroy() {\n this.resetRefs(this.field);\n this.hostObservers.forEach(unsubscribe => unsubscribe());\n this.hooksObservers.forEach(unsubscribe => unsubscribe());\n this.triggerHook('onDestroy');\n }\n\n private renderField(containerRef: ViewContainerRef, f: FormlyFieldConfigCache, wrappers: string[] = []) {\n if (this.containerRef === containerRef) {\n this.resetRefs(this.field);\n this.containerRef.clear();\n wrappers = this.field ? this.field.wrappers : [];\n }\n\n if (wrappers && wrappers.length > 0) {\n const [wrapper, ...wps] = wrappers;\n const { component } = this.formlyConfig.getWrapper(wrapper);\n\n const ref = containerRef.createComponent<FieldWrapper>(this.resolver.resolveComponentFactory(component));\n this.attachComponentRef(ref, f);\n wrapProperty<ViewContainerRef>(ref.instance, 'fieldComponent', ({ firstChange, previousValue, currentValue }) => {\n if (currentValue) {\n if (previousValue && previousValue['_lContainer'] === currentValue['_lContainer']) {\n return;\n }\n\n const viewRef = previousValue ? previousValue.detach() : null;\n if (viewRef && !viewRef.destroyed) {\n currentValue.insert(viewRef);\n } else {\n this.renderField(currentValue, f, wps);\n }\n\n !firstChange && ref.changeDetectorRef.detectChanges();\n }\n });\n } else if (f && f.type) {\n const { component } = this.formlyConfig.getType(f.type);\n const ref = containerRef.createComponent<FieldWrapper>(this.resolver.resolveComponentFactory(component));\n this.attachComponentRef(ref, f);\n }\n }\n\n private triggerHook(name: string, changes?: SimpleChanges) {\n if (this.field && this.field.hooks && this.field.hooks[name]) {\n if (!changes || changes.field) {\n const r = this.field.hooks[name](this.field);\n if (isObservable(r) && ['onInit', 'afterContentInit', 'afterViewInit'].indexOf(name) !== -1) {\n const sub = r.subscribe();\n this.hooksObservers.push(() => sub.unsubscribe());\n }\n }\n }\n\n if (this.field && this.field.lifecycle && this.field.lifecycle[name]) {\n this.field.lifecycle[name](\n this.field.form,\n this.field,\n this.field.model,\n this.field.options,\n );\n }\n\n if (name === 'onChanges' && changes.field) {\n this.resetRefs(changes.field.previousValue);\n this.render();\n }\n }\n\n private attachComponentRef<T extends FieldType>(ref: ComponentRef<T>, field: FormlyFieldConfigCache) {\n this.componentRefs.push(ref);\n field._componentRefs.push(ref);\n Object.assign(ref.instance, { field });\n }\n\n private render() {\n if (!this.field) {\n return;\n }\n\n // require Formly build\n if (!this.field.options) {\n this.detectFieldBuild = true;\n\n return;\n }\n\n this.detectFieldBuild = false;\n this.hostObservers.forEach(unsubscribe => unsubscribe());\n this.hostObservers = [\n wrapProperty(this.field, 'hide', ({ firstChange, currentValue }) => {\n if (!this.formlyConfig.extras.lazyRender) {\n firstChange && this.renderField(this.containerRef, this.field);\n if (!firstChange || (firstChange && currentValue)) {\n this.renderer.setStyle(this.elementRef.nativeElement, 'display', currentValue ? 'none' : '');\n }\n } else {\n if (currentValue) {\n this.containerRef.clear();\n if (this.field.className) {\n this.renderer.removeAttribute(this.elementRef.nativeElement, 'class');\n }\n } else {\n this.renderField(this.containerRef, this.field);\n if (this.field.className) {\n this.renderer.setAttribute(this.elementRef.nativeElement, 'class', this.field.className);\n }\n }\n }\n }),\n wrapProperty(this.field, 'className', ({ firstChange, currentValue }) => {\n if (\n (!firstChange || (firstChange && currentValue))\n && (!this.formlyConfig.extras.lazyRender || (this.field.hide !== true))\n ) {\n this.renderer.setAttribute(this.elementRef.nativeElement, 'class', currentValue);\n }\n }),\n ];\n }\n\n private resetRefs(field: FormlyFieldConfigCache) {\n if (field) {\n if (field._componentRefs) {\n field._componentRefs = field._componentRefs.filter(ref => this.componentRefs.indexOf(ref) === -1);\n } else {\n defineHiddenProp(this.field, '_componentRefs', []);\n }\n }\n\n this.componentRefs = [];\n }\n}\n","import { Directive, ElementRef, Input, OnChanges, SimpleChanges, Renderer2, DoCheck, Inject, OnDestroy } from '@angular/core';\nimport { FormlyFieldConfig, FormlyTemplateOptions } from './formly.field.config';\nimport { wrapProperty, defineHiddenProp, FORMLY_VALIDATORS } from '../utils';\nimport { DOCUMENT } from '@angular/common';\n\n@Directive({\n selector: '[formlyAttributes]',\n})\nexport class FormlyAttributes implements OnChanges, DoCheck, OnDestroy {\n @Input('formlyAttributes') field: FormlyFieldConfig;\n @Input() id: string;\n\n private document: Document;\n private uiAttributesCache: any = {};\n private uiAttributes: string[] = null;\n\n /**\n * HostBinding doesn't register listeners conditionally which may produce some perf issues.\n *\n * Formly issue: https://github.com/ngx-formly/ngx-formly/issues/1991\n */\n private uiEvents = {\n listeners: [],\n events: ['click', 'keyup', 'keydown', 'keypress', 'focus', 'blur', 'change'],\n callback: (eventName: string, $event: any) => {\n switch (eventName) {\n case 'focus':\n return this.onFocus($event);\n case 'blur':\n return this.onBlur($event);\n case 'change':\n return this.onChange($event);\n default:\n return this.to[eventName](this.field, $event);\n }\n },\n };\n\n get to(): FormlyTemplateOptions { return this.field.templateOptions || {}; }\n\n private get fieldAttrElements(): ElementRef[] { return (this.field && this.field['_elementRefs']) || []; }\n\n constructor(\n private renderer: Renderer2,\n private elementRef: ElementRef,\n @Inject(DOCUMENT) _document: any,\n ) {\n this.document = _document;\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes.field) {\n this.field.name && this.setAttribute('name', this.field.name);\n this.uiEvents.listeners.forEach((listener) => listener());\n this.uiEvents.events.forEach((eventName) => {\n if ((this.to && this.to[eventName]) || ['focus', 'blur', 'change'].indexOf(eventName) !== -1) {\n this.uiEvents.listeners.push(\n this.renderer.listen(this.elementRef.nativeElement, eventName, (e) => this.uiEvents.callback(eventName, e)),\n );\n }\n });\n\n if (this.to && this.to.attributes) {\n wrapProperty(this.to, 'attributes', ({ currentValue, previousValue }) => {\n if (previousValue) {\n Object.keys(previousValue).forEach(attr => this.removeAttribute(attr));\n }\n\n if (currentValue) {\n Object.keys(currentValue).forEach(attr => {\n if (currentValue[attr] != null) {\n this.setAttribute(attr, currentValue[attr]);\n }\n });\n }\n });\n }\n\n this.detachElementRef(changes.field.previousValue);\n this.attachElementRef(changes.field.currentValue);\n if (this.fieldAttrElements.length === 1) {\n !this.id && this.field.id && this.setAttribute('id', this.field.id);\n wrapProperty(this.field, 'focus', ({ currentValue }) => {\n this.toggleFocus(currentValue);\n });\n }\n }\n\n if (changes.id) {\n this.setAttribute('id', this.id);\n }\n }\n\n /**\n * We need to re-evaluate all the attributes on every change detection cycle, because\n * by using a HostBinding we run into certain edge cases. This means that whatever logic\n * is in here has to be super lean or we risk seriously damaging or destroying the performance.\n *\n * Formly issue: https://github.com/ngx-formly/ngx-formly/issues/1317\n * Material issue: https://github.com/angular/components/issues/14024\n */\n ngDoCheck() {\n if (!this.uiAttributes) {\n const element = this.elementRef.nativeElement as HTMLElement;\n this.uiAttributes = [...FORMLY_VALIDATORS, 'tabindex', 'placeholder', 'readonly', 'disabled', 'step'].filter(\n (attr) => !element.hasAttribute || !element.hasAttribute(attr),\n );\n }\n\n this.uiAttributes.forEach(attr => {\n const value = this.to[attr];\n if (\n this.uiAttributesCache[attr] !== value\n && (!this.to.attributes || !this.to.attributes.hasOwnProperty(attr.toLowerCase()))\n ) {\n this.uiAttributesCache[attr] = value;\n if (value || value === 0) {\n this.setAttribute(attr, value === true ? attr : `${value}`);\n } else {\n this.removeAttribute(attr);\n }\n }\n });\n }\n\n ngOnDestroy() {\n this.uiEvents.listeners.forEach(listener => listener());\n this.detachElementRef(this.field);\n }\n\n toggleFocus(value: boolean) {\n const element = this.fieldAttrElements ? this.fieldAttrElements[0] : null;\n if (!element || !element.nativeElement.focus) {\n return;\n }\n\n const isFocused = !!this.document.activeElement\n && this.fieldAttrElements\n .some(({ nativeElement }) => this.document.activeElement === nativeElement || nativeElement.contains(this.document.activeElement));\n\n if (value && !isFocused) {\n element.nativeElement.focus();\n } else if (!value && isFocused) {\n element.nativeElement.blur();\n }\n }\n\n onFocus($event: any) {\n this.field['___$focus'] = true;\n if (this.to.focus) {\n this.to.focus(this.field, $event);\n }\n }\n\n onBlur($event: any) {\n this.field['___$focus'] = false;\n if (this.to.blur) {\n this.to.blur(this.field, $event);\n }\n }\n\n onChange($event: any) {\n if (this.to.change) {\n this.to.change(this.field, $event);\n }\n\n if (this.field.formControl) {\n this.field.formControl.markAsDirty();\n }\n }\n\n private attachElementRef(f: FormlyFieldConfig) {\n if (!f) {\n return;\n }\n\n if (f['_elementRefs'] && f['_elementRefs'].indexOf(this.elementRef) === -1) {\n f['_elementRefs'].push(this.elementRef);\n } else {\n defineHiddenProp(f, '_elementRefs', [this.elementRef]);\n }\n }\n\n private detachElementRef(f: FormlyFieldConfig) {\n const index = f && f['_elementRefs'] ? this.fieldAttrElements.indexOf(this.elementRef) : -1;\n if (index !== -1) {\n this.field['_elementRefs'].splice(index, 1);\n }\n }\n\n private setAttribute(attr: string, value: string) {\n this.renderer.setAttribute(this.elementRef.nativeElement, attr, value);\n }\n\n private removeAttribute(attr: string) {\n this.renderer.removeAttribute(this.elementRef.nativeElement, attr);\n }\n}\n","import { Input } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { FormlyFieldConfig } from '../components/formly.field.config';\n\nexport abstract class FieldType<F extends FormlyFieldConfig = FormlyFieldConfig> {\n @Input() field: F;\n defaultOptions?: F;\n\n @Input()\n get model() { return this.field.model; }\n set model(m: any) { console.warn(`NgxFormly: passing 'model' input to '${this.constructor.name}' component is not required anymore, you may remove it!`); }\n\n @Input()\n get form() { return <FormGroup> this.field.parent.formControl; }\n set form(form) { console.warn(`NgxFormly: passing 'form' input to '${this.constructor.name}' component is not required anymore, you may remove it!`); }\n\n @Input()\n get options() { return this.field.options; }\n set options(options: F['options']) { console.warn(`NgxFormly: passing 'options' input to '${this.constructor.name}' component is not required anymore, you may remove it!`); }\n\n get key() { return this.field.key; }\n\n get formControl() { return this.field.formControl; }\n\n get to() { return this.field.templateOptions || {}; }\n\n get showError(): boolean { return this.options.showError(this); }\n\n get id(): string { return this.field.id; }\n\n get formState() { return this.options.formState || {}; }\n}\n\n/**\n * @deprecated use `FieldType` instead\n */\nexport abstract class Field extends FieldType {\n constructor() {\n super();\n console.warn(`NgxFormly: 'Field' has been renamed to 'FieldType', extend 'FieldType' instead.`);\n }\n}\n","import { Inject, Optional } from '@angular/core';\nimport { FormArray } from '@angular/forms';\nimport { FieldType } from './field.type';\nimport { clone, isNullOrUndefined, assignFieldValue } from '../utils';\nimport { FormlyFormBuilder } from '../services/formly.form.builder';\nimport { FormlyFieldConfig } from '../components/formly.field.config';\nimport { FORMLY_CONFIG, FormlyExtension } from '../services/formly.config';\nimport { registerControl, unregisterControl, findControl } from '../extensions/field-form/utils';\nimport { Directive } from '@angular/core';\n\n// TODO remove `selector` in V6\n// tslint:disable-next-line\n@Directive({ selector: '[ɵfieldArray]' })\nexport abstract class FieldArrayType<F extends FormlyFieldConfig = FormlyFieldConfig> extends FieldType<F> implements FormlyExtension {\n get formControl() {\n return this.field.formControl as FormArray;\n }\n\n defaultOptions: any = {\n defaultValue: [],\n };\n\n constructor(@Inject(FORMLY_CONFIG) @Optional() builder?: FormlyFormBuilder) {\n super();\n\n if (builder instanceof FormlyFormBuilder) {\n console.warn(`NgxFormly: passing 'FormlyFormBuilder' to '${this.constructor.name}' type is not required anymore, you may remove it!`);\n }\n }\n\n onPopulate(field: FormlyFieldConfig) {\n if (!field.formControl && field.key) {\n const control = findControl(field);\n registerControl(field, control ? control : new FormArray([], { updateOn: field.modelOptions.updateOn }));\n }\n\n field.fieldGroup = field.fieldGroup || [];\n\n const length = field.model ? field.model.length : 0;\n if (field.fieldGroup.length > length) {\n for (let i = field.fieldGroup.length - 1; i >= length; --i) {\n unregisterControl(field.fieldGroup[i]);\n field.fieldGroup.splice(i, 1);\n }\n }\n\n for (let i = field.fieldGroup.length; i < length; i++) {\n const f = { ...clone(field.fieldArray), key: `${i}` };\n field.fieldGroup.push(f);\n }\n }\n\n add(i?: number, initialModel?: any, { markAsDirty } = { markAsDirty: true }) {\n i = isNullOrUndefined(i) ? this.field.fieldGroup.length : i;\n if (!this.model) {\n assignFieldValue(this.field, []);\n }\n\n this.model.splice(i, 0, initialModel ? clone(initialModel) : undefined);\n\n (<any> this.options)._buildForm(true);\n markAsDirty && this.formControl.markAsDirty();\n }\n\n remove(i: number, { markAsDirty } = { markAsDirty: true }) {\n this.model.splice(i, 1);\n unregisterControl(this.field.fieldGroup[i], true);\n this.field.fieldGroup.splice(i, 1);\n this.field.fieldGroup.forEach((f, key) => f.key = `${key}`);\n\n (<any> this.options)._buildForm(true);\n markAsDirty && this.formControl.markAsDirty();\n }\n}\n","import { ViewContainerRef, ViewChild } from '@angular/core';\nimport { FieldType } from './field.type';\nimport { FormlyFieldConfig } from '../components/formly.field.config';\n\nexport abstract class FieldWrapper<F extends FormlyFieldConfig = FormlyFieldConfig> extends FieldType<F> {\n // TODO: remove `any`, once dropping angular `V7` support.\n @ViewChild('fieldComponent', <any>{ read: ViewContainerRef, static: false }) fieldComponent: ViewContainerRef;\n}\n","import { Component } from '@angular/core';\nimport { FieldType } from './field.type';\n\n@Component({\n selector: 'formly-group',\n template: `\n <formly-field *ngFor=\"let f of field.fieldGroup\" [field]=\"f\"></formly-field>\n <ng-content></ng-content>\n `,\n host: {\n '[class]': 'field.fieldGroupClassName || \"\"',\n },\n})\nexport class FormlyGroup extends FieldType {\n defaultOptions = {\n defaultValue: {},\n };\n}\n","import { Component, Input, ChangeDetectionStrategy, OnChanges } from '@angular/core';\nimport { FormlyConfig, ValidationMessageOption } from '../services/formly.config';\nimport { FormlyFieldConfig } from '../components/formly.field.config';\nimport { isObject } from '../utils';\nimport { Observable, isObservable, of } from 'rxjs';\nimport { merge } from 'rxjs';\nimport { startWith, switchMap, filter } from 'rxjs/operators';\n\n@Component({\n selector: 'formly-validation-message',\n template: `{{ errorMessage$ | async }}`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FormlyValidationMessage implements OnChanges {\n @Input() field: FormlyFieldConfig;\n errorMessage$: Observable<string>;\n\n constructor(private formlyConfig: FormlyConfig) {}\n\n ngOnChanges() {\n this.errorMessage$ = merge(\n this.field.formControl.statusChanges,\n (\n !this.field.options\n ? of(null)\n : this.field.options.fieldChanges.pipe(\n filter(({ field, type, property }) => {\n return (field === this.field)\n && (type === 'expressionChanges')\n && (property.indexOf('validation') !== -1)\n ;\n }),\n )\n ),\n ).pipe(\n startWith(null),\n switchMap(() => isObservable(this.errorMessage)\n ? this.errorMessage\n : of(this.errorMessage),\n ),\n );\n }\n\n get errorMessage() {\n const fieldForm = this.field.formControl;\n for (let error in fieldForm.errors) {\n if (fieldForm.errors.hasOwnProperty(error)) {\n let message: ValidationMessageOption['message'] = this.formlyConfig.getValidatorMessage(error);\n\n if (isObject(fieldForm.errors[error])) {\n if (fieldForm.errors[error].errorPath) {\n return;\n }\n\n if (fieldForm.errors[error].message) {\n message = fieldForm.errors[error].message;\n }\n }\n\n if (this.field.validation && this.field.validation.messages && this.field.validation.messages[error]) {\n message = this.field.validation.messages[error];\n }\n\n if (this.field.validators && this.field.validators[error] && this.field.validators[error].message) {\n message = this.field.validators[error].message;\n }\n\n if (this.field.asyncValidators && this.field.asyncValidators[error] && this.field.asyncValidators[error].message) {\n message = this.field.asyncValidators[error].message;\n }\n\n if (typeof message === 'function') {\n return message(fieldForm.errors[error], this.field);\n }\n\n return message;\n }\n }\n }\n}\n","import { Component } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { FieldType } from './field.type';\n\n@Component({\n selector: 'formly-template',\n template: `<div [innerHtml]=\"template\"></div>`,\n})\nexport class FormlyTemplateType extends FieldType {\n get template() {\n if (this.field && (this.field.template !== this.innerHtml.template)) {\n this.innerHtml = {\n template: this.field.template,\n content: this.to.safeHtml\n ? this.sanitizer.bypassSecurityTrustHtml(this.field.template)\n : this.field.template,\n };\n }\n\n return this.innerHtml.content;\n }\n\n private innerHtml = { content: null, template: null };\n constructor(private sanitizer: DomSanitizer) {\n super();\n }\n}\n","export function evalStringExpression(expression: string, argNames: string[]) {\n try {\n if (expression.indexOf('this.field') !== -1) {\n console.warn(`NgxFormly: using 'this.field' in expressionProperties is deprecated since v5.1, use 'field' instead.`);\n }\n\n return Function(...argNames, `return ${expression};`) as any;\n } catch (error) {\n console.error(error);\n }\n}\n\nexport function evalExpressionValueSetter(expression: string, argNames: string[]) {\n try {\n return Function(...argNames, `${expression} = expressionValue;`) as (value: any) => void;\n } catch (error) {\n console.error(error);\n }\n}\n\nexport function evalExpression(expression: string | Function | boolean, thisArg: any, argVal: any[]): any {\n if (expression instanceof Function) {\n return expression.apply(thisArg, argVal);\n } else {\n return expression ? true : false;\n }\n}\n","import { FormlyFieldConfig, FormlyValueChangeEvent, FormlyFieldConfigCache } from '../../components/formly.field.config';\nimport { isObject, isNullOrUndefined, isUndefined, isFunction, defineHiddenProp, wrapProperty, getFieldValue, assignFieldValue } from '../../utils';\nimport { evalExpression, evalStringExpression } from './utils';\nimport { isObservable, Observable, Subscription } from 'rxjs';\nimport { FormlyExtension } from '../../services/formly.config';\nimport { unregisterControl, registerControl, updateValidity } from '../field-form/utils';\nimport { FormArray } from '@angular/forms';\n\n/** @experimental */\nexport class FieldExpressionExtension implements FormlyExtension {\n prePopulate(field: FormlyFieldConfigCache) {\n if (field.parent || field.options._checkField) {\n return;\n }\n\n let checkLocked = false;\n field.options._checkField = (f, ignoreCache) => {\n if (!checkLocked) {\n checkLocked = true;\n this.checkField(f, ignoreCache);\n checkLocked = false;\n }\n };\n }\n\n postPopulate(field: FormlyFieldConfigCache) {\n if (!field.parent || field._expressionProperties) {\n return;\n }\n\n // cache built expression\n defineHiddenProp(field, '_expressionProperties', {});\n\n if (field.expressionProperties) {\n for (const key in field.expressionProperties) {\n const expressionProperty = field.expressionProperties[key];\n\n if (typeof expressionProperty === 'string' || isFunction(expressionProperty)) {\n field._expressionProperties[key] = {\n expression: this._evalExpression(\n key,\n expressionProperty,\n key === 'templateOptions.disabled' && field.parent.expressionProperties && field.parent.expressionProperties.hasOwnProperty('templateOptions.disabled')\n ? () => field.parent.templateOptions.disabled\n : undefined,\n ),\n };\n if (key === 'templateOptions.disabled') {\n Object.defineProperty(field._expressionProperties[key], 'expressionValue', {\n get: () => field.templateOptions.disabled,\n set: () => { },\n enumerable: true,\n configurable: true,\n });\n }\n } else if (expressionProperty instanceof Observable) {\n const subscribe = () => (expressionProperty as Observable<any>)\n .subscribe(v => {\n this.setExprValue(field, key, v);\n if (field.options && field.options._markForCheck) {\n field.options._markForCheck(field);\n }\n });\n\n let subscription: Subscription = subscribe();\n const onInit = field.hooks.onInit;\n field.hooks.onInit = () => {\n if (subscription === null) {\n subscription = subscribe();\n }\n return onInit && onInit(field);\n };\n\n const onDestroy = field.hooks.onDestroy;\n field.hooks.onDestroy = () => {\n onDestroy && onDestroy(field);\n subscription.unsubscribe();\n subscription = null;\n };\n }\n }\n }\n\n if (field.hideExpression) {\n // delete hide value in order to force re-evaluate it in FormlyFormExpression.\n delete field.hide;\n\n field.hideExpression = this._evalExpression(\n 'hide',\n field.hideExpression,\n () => {\n let root = field.parent;\n while (root.parent && !root.hide) {\n root = root.parent;\n }\n\n return root.hide;\n },\n );\n } else {\n wrapProperty(field, 'hide', ({ currentValue, firstChange }) => {\n field._hide = currentValue;\n if (!firstChange || (firstChange && currentValue === true)) {\n field.options._hiddenFieldsForCheck.push(field);\n }\n });\n }\n }\n\n private _evalExpression(prop: string, expression, parentExpression?) {\n return (...args) => {\n try {\n if (typeof expression === 'string') {\n expression = evalStringExpression(expression, ['model', 'formState', 'field']);\n }\n\n if (typeof expression !== 'function') {\n expression = () => !!expression;\n }\n\n return (parentExpression && parentExpression()) || expression(...args);\n } catch (error) {\n error.message = `[Formly Error] [Expression \"${prop}\"] ${error.message}`;\n throw error;\n }\n };\n }\n\n private checkField(field: FormlyFieldConfigCache, ignoreCache = false) {\n const fieldChanged = this._checkField(field, ignoreCache);\n\n field.options._hiddenFieldsForCheck\n .sort(f => f.hide ? -1 : 1)\n .forEach(f => this.toggleFormControl(f, !!f.hide, !ignoreCache));\n\n field.options._hiddenFieldsForCheck = [];\n if (fieldChanged) {\n this.checkField(field);\n if (field.options && field.options._markForCheck) {\n field.options._markForCheck(field);\n }\n }\n }\n\n private _checkField(field: FormlyFieldConfigCache, ignoreCache = false) {\n let fieldChanged = false;\n field.fieldGroup.forEach(f => {\n if (!f.options) {\n return;\n }\n\n this.checkFieldExpressionChange(f, ignoreCache) && (fieldChanged = true);\n if (this.checkFieldVisibilityChange(f, ignoreCache)) {\n field.options._hiddenFieldsForCheck.push(f);\n fieldChanged = true;\n }\n\n if (f.fieldGroup && f.fieldGroup.length > 0) {\n this._checkField(f, ignoreCache) && (fieldChanged = true);\n }\n });\n\n return fieldChanged;\n }\n\n private checkFieldExpressionChange(field: FormlyFieldConfigCache, ignoreCache): boolean {\n if (!field || !field._expressionProperties) {\n return false;\n }\n\n let markForCheck = false;\n const expressionProperties = field._expressionProperties;\n\n for (const key in expressionProperties) {\n let expressionValue = evalExpression(expressionProperties[key].expression, { field }, [field.model, field.options.formState, field, ignoreCache]);\n if (key === 'templateOptions.disabled') {\n expressionValue = !!expressionValue;\n }\n\n if (\n ignoreCache || (\n expressionProperties[key].expressionValue !== expressionValue\n && (\n !(isObject(expressionValue) || isFunction(expressionValue))\n || (\n isFunction(expressionValue)\n && ('' + expressionProperties[key].expressionValue !== '' + expressionValue)\n )\n || isObservable(expressionValue)\n || JSON.stringify(expressionValue) !== JSON.stringify(expressionProperties[key].expressionValue)\n )\n )\n ) {\n markForCheck = true;\n expressionProperties[key].expressionValue = expressionValue;\n this.setExprValue(field, key, expressionValue);\n }\n }\n\n return markForCheck;\n }\n\n private checkFieldVisibilityChange(field: FormlyFieldConfigCache, ignoreCache): boolean {\n if (!field || isNullOrUndefined(field.hideExpression)) {\n return false;\n }\n\n const hideExpressionResult: boolean = !!evalExpression(\n field.hideExpression,\n { field },\n [field.model, field.options.formState, field, ignoreCache],\n );\n let markForCheck = false;\n if (hideExpressionResult !== field.hide || ignoreCache) {\n markForCheck = true;\n // toggle hide\n field.hide = hideExpressionResult;\n field.templateOptions.hidden = hideExpressionResult;\n }\n\n return markForCheck;\n }\n\n private setDisabledState(field: FormlyFieldConfig, value: boolean) {\n if (field.fieldGroup) {\n field.fieldGroup\n .filter(f => !f.expressionProperties || !f.expressionProperties.hasOwnProperty('templateOptions.disabled'))\n .forEach(f => this.setDisabledState(f, value));\n }\n\n if (field.key && field.templateOptions.disabled !== value) {\n field.templateOptions.disabled = value;\n }\n }\n\n private toggleFormControl(field: FormlyFieldConfigCache, hide: boolean, resetOnHide: boolean) {\n if (field.fieldGroup) {\n field.fieldGroup\n .filter(f => !f.hideExpression)\n .forEach(f => this.toggleFormControl(f, hide, resetOnHide));\n }\n\n if (field.formControl && field.key) {\n defineHiddenProp(field, '_hide', !!(hide || field.hide));\n const c = field.formControl;\n if (c['_fields'] && c['_fields'].length > 1) {\n updateValidity(c);\n }\n\n if (hide === true && (!c['_fields'] || c['_fields'].every(f => !!f._hide))) {\n unregisterControl(field, true);\n if (resetOnHide && field.resetOnHide) {\n field.formControl.reset({ value: undefined, disabled: field.formControl.disabled });\n if (field.fieldGroup) {\n assignFieldValue(field, undefined);\n\n if (field.formControl instanceof FormArray) {\n field.fieldGroup.length = 0;\n }\n }\n }\n } else if (hide === false) {\n if (field.resetOnHide && field.parent && !isUndefined(field.defaultValue) && isUndefined(getFieldValue(field))) {\n assignFieldValue(field, field.defaultValue);\n }\n registerControl(field, undefined, true);\n if (field.resetOnHide && field.fieldArray && (field.fieldGroup || []).length !== (field.model || []).length) {\n (<any> field.options)._buildForm(true);\n }\n }\n }\n\n if (field.options.fieldChanges) {\n field.options.fieldChanges.next(<FormlyValueChangeEvent> { field, type: 'hidden', value: hide });\n }\n }\n\n private setExprValue(field: FormlyFieldConfigCache, prop: string, value: any) {\n try {\n let target = field;\n const paths = prop.indexOf('[') === -1\n ? prop.split('.')\n : prop\n .replace(/\\'|\\\"/g, '')\n .split(/[[\\]]{1,2}/) // https://stackoverflow.com/a/20198206\n .filter(v => v)\n ;\n const lastIndex = paths.length - 1;\n for (let i = 0; i < lastIndex; i++) {\n target = target[paths[i]];\n }\n\n target[paths[lastIndex]] = value;\n } catch (error) {\n error.message = `[Formly Error] [Expression \"${prop}\"] ${error.message}`;\n throw error;\n }\n\n if (prop === 'templateOptions.disabled' && field.key) {\n this.setDisabledState(field, value);\n }\n\n if (prop.indexOf('model.') === 0) {\n const path = prop.replace(/^model\\./, ''),\n control = field.key && prop === path ? field.formControl : field.parent.formControl.get(path);\n\n if (\n control\n && !(isNullOrUndefined(control.value) && isNullOrUndefined(value))\n && control.value !== value\n ) {\n control.patchValue(value);\n }\n }\n\n this.emitExpressionChanges(field, prop, value);\n }\n\n private emitExpressionChanges(field: FormlyFieldConfigCache, property: string, value: any) {\n if (!field.options.fieldChanges) {\n return;\n }\n\n field.options.fieldChanges.next({\n field: field,\n type: 'expressionChanges',\n property,\n value,\n });\n }\n}\n","import { FormlyExtension, FormlyConfig, ValidatorOption } from '../../services/formly.config';\nimport { FormlyFieldConfigCache } from '../../components/formly.field.config';\nimport { AbstractControl, Validators, ValidatorFn } from '@angular/forms';\nimport { FORMLY_VALIDATORS, defineHiddenProp, isPromise, wrapProperty, clone, isObject } from '../../utils';\nimport { updateValidity } from '../field-form/utils';\nimport { isObservable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n/** @experimental */\nexport class FieldValidationExtension implements FormlyExtension {\n constructor(private formlyConfig: FormlyConfig) {}\n\n onPopulate(field: FormlyFieldConfigCache) {\n this.initFieldValidation(field, 'validators');\n this.initFieldValidation(field, 'asyncValidators');\n }\n\n private initFieldValidation(field: FormlyFieldConfigCache, type: 'validators' | 'asyncValidators') {\n const validators: ValidatorFn[] = [];\n if (type === 'validators' && !(field.hasOwnProperty('fieldGroup') && !field.key)) {\n validators.push(this.getPredefinedFieldValidation(field));\n }\n\n if (field[type]) {\n for (const validatorName in field[type]) {\n if (validatorName === 'validation' && !Array.isArray(field[type].validation)) {\n field[type].validation = [field[type].validation];\n console.warn(`NgxFormly(${field.key}): passing a non array value to the 'validation' is deprecated, pass an array instead`);\n }\n\n validatorName === 'validation'\n ? validators.push(...field[type].validation.map(v => this.wrapNgValidatorFn(field, v)))\n : validators.push(this.wrapNgValidatorFn(field, field[type][validatorName], validatorName))\n ;\n }\n }\n\n defineHiddenProp(field, '_' + type, validators);\n }\n\n private getPredefinedFieldValidation(field: FormlyFieldConfigCache): ValidatorFn {\n let VALIDATORS = [];\n FORMLY_VALIDATORS.forEach(opt => wrapProperty(field.templateOptions, opt, ({ currentValue, firstChange }) => {\n VALIDATORS = VALIDATORS.filter(o => o !== opt);\n if (currentValue != null && currentValue !== false) {\n VALIDATORS.push(opt);\n }\n if (!firstChange && field.formControl) {\n updateValidity(field.formControl);\n }\n }));\n\n return (control: AbstractControl) => {\n if (VALIDATORS.length === 0) {\n return null;\n }\n\n return Validators.compose(VALIDATORS.map(opt => () => {\n const value = field.templateOptions[opt];\n switch (opt) {\n case 'required':\n return Validators.required(control);\n case 'pattern':\n return Validators.pattern(value)(control);\n case 'minLength':\n return Validators.minLength(value)(control);\n case 'maxLength':\n return Validators.maxLength(value)(control);\n case 'min':\n return Validators.min(value)(control);\n case 'max':\n return Validators.max(value)(control);\n }\n }))(control);\n };\n }\n\n private wrapNgValidatorFn(field: FormlyFieldConfigCache, validator: any, validatorName?: string) {\n let validatorOption: ValidatorOption = null;\n if (typeof validator === 'string') {\n validatorOption = clone(this.formlyConfig.getValidator(validator));\n }\n\n if (typeof validator === 'object' && validator.name) {\n validatorOption = clone(this.formlyConfig.getValidator(validator.name));\n if (validator.options) {\n validatorOption.options = validator.options;\n }\n }\n\n if (typeof validator === 'object' && validator.expression) {\n const { expression, ...options } = validator;\n validatorOption = {\n name: validatorName,\n validation: expression,\n options: Object.keys(options).length > 0 ? options : null,\n };\n }\n\n if (typeof validator === 'function') {\n validatorOption = {\n name: validatorName,\n validation: validator,\n };\n }\n\n return (control: AbstractControl) => {\n const errors: any = validatorOption.validation(control, field, validatorOption.options);\n if (isPromise(errors)) {\n return errors.then(v => this.handleAsyncResult(field, validatorName ? !!v : v, validatorOption));\n }\n\n if (isObservable(errors)) {\n return errors.pipe(map(v => this.handleAsyncResult(field, validatorName ? !!v : v, validatorOption)));\n }\n\n return this.handleResult(field, validatorName ? !!errors : errors, validatorOption);\n };\n }\n\n private handleAsyncResult(field: FormlyFieldConfigCache, errors: any, options: ValidatorOption) {\n // workaround for https://github.com/angular/angular/issues/13200\n if (field.options && field.options._markForCheck) {\n field.options._markForCheck(field);\n }\n\n return this.handleResult(field, errors, options);\n }\n\n private handleResult(field: FormlyFieldConfigCache, errors: any, { name, options }: ValidatorOption) {\n if (typeof errors === 'boolean') {\n errors = errors ? null : { [name]: options ? options : true };\n }\n\n const ctrl = field.formControl;\n ctrl['_childrenErrors'] && ctrl['_childrenErrors'][name] && ctrl['_childrenErrors'][name]();\n\n if (isObject(errors)) {\n Object.keys(errors).forEach(name => {\n const errorPath = errors[name].errorPath\n ? errors[name].errorPath\n : (options || {}).errorPath;\n\n const childCtrl = errorPath ? field.formControl.get(errorPath) : null;\n if (childCtrl) {\n const { errorPath, ...opts } = errors[name];\n childCtrl.setErrors({ ...(childCtrl.errors || {}), [name]: opts });\n\n !ctrl['_childrenErrors'] && defineHiddenProp(ctrl, '_childrenErrors', {});\n ctrl['_childrenErrors'][name] = () => {\n const { [name]: toDelete, ...childErrors } = childCtrl.errors || {};\n childCtrl.setErrors(Object.keys(childErrors).length === 0 ? null : childErrors);\n };\n }\n });\n }\n\n return errors;\n }\n}\n","import { FormlyExtension, FormlyConfig } from '../../services/formly.config';\nimport { FormlyFieldConfigCache } from '../../components/formly.field.config';\nimport { FormGroup, FormControl, AbstractControlOptions, Validators, ValidatorFn, AsyncValidatorFn } from '@angular/forms';\nimport { getFieldValue, defineHiddenProp } from '../../utils';\nimport { registerControl, findControl, updateValidity } from './utils';\nimport { of } from 'rxjs';\n\n/** @experimental */\nexport class FieldFormExtension implements FormlyExtension {\n constructor(private config: FormlyConfig) { }\n\n onPopulate(field: FormlyFieldConfigCache) {\n if (!field.parent) {\n return;\n }\n\n if (field.fieldGroup && !field.key) {\n defineHiddenProp(field, 'formControl', field.parent.formControl);\n } else {\n this.addFormControl(field);\n }\n }\n\n postPopulate(field: FormlyFieldConfigCache) {\n if (field.parent) {\n return;\n }\n\n this.setValidators(field);\n }\n\n private addFormControl(field: FormlyFieldConfigCache) {\n let control = findControl(field);\n if (!control) {\n const controlOptions: AbstractControlOptions = { updateOn: field.modelOptions.updateOn };\n const value = field.key ? getFieldValue(field) : field.defaultValue;\n\n const ref = this.config ? this.config.resolveFieldTypeRef(field) : null;\n if (ref && ref.componentType && ref.componentType['createControl']) {\n const component = ref.componentType;\n console.warn(`NgxFormly: '${component.name}::createControl' is deprecated since v5.0, use 'prePopulate' hook instead.`);\n control = component['createControl'](value, field);\n } else if (field.fieldGroup) {\n // TODO: move to postPopulate\n control = new FormGroup({}, controlOptions);\n } else {\n control = new FormControl(value, controlOptions);\n }\n }\n\n registerControl(field, control);\n }\n\n private setValidators(field: FormlyFieldConfigCache) {\n let markForCheck = false;\n (field.fieldGroup || []).forEach(f => this.setValidators(f) && (markForCheck = true));\n\n if (field.key || !field.parent || (!field.key && !field.fieldGroup)) {\n const { formControl: c } = field;\n const disabled = field.templateOptions ? field.templateOptions.disabled : false;\n if (field.key && c) {\n if (disabled && c.enabled) {\n c.disable({ emitEvent: false, onlySelf: true });\n markForCheck = true;\n }\n\n if (!disabled && c.disabled) {\n c.enable({ emitEvent: false, onlySelf: true });\n markForCheck = true;\n }\n }\n\n\n if (c && (null === c.validator || null === c.asyncValidator)) {\n c.setValidators(() => {\n const v = Validators.compose(this.mergeValidators<ValidatorFn>(field, '_validators'));\n\n return v ? v(c) : null;\n });\n c.setAsyncValidators(() => {\n const v = Validators.composeAsync(this.mergeValidators<AsyncValidatorFn>(field, '_asyncValidators'));\n\n return v ? v(c) : of(null);\n });\n\n markForCheck = true;\n }\n\n if (markForCheck) {\n updateValidity(c, true);\n }\n }\n\n return markForCheck;\n }\n\n private mergeValidators<T>(field: FormlyFieldConfigCache, type: '_validators' | '_asyncValidators'): T[] {\n const validators: any = [];\n const c = field.formControl;\n if (c && c['_fields'] && c['_fields'].length > 1) {\n c['_fields']\n .filter((f: FormlyFieldConfigCache) => !f._hide)\n .forEach((f: FormlyFieldConfigCache) => validators.push(...f[type]));\n } else if (field[type]) {\n validators.push(...field[type]);\n }\n\n if (field.fieldGroup) {\n field.fieldGroup\n .filter(f => !f.key && f.fieldGroup)\n .forEach(f => validators.push(...this.mergeValidators(f, type)));\n }\n\n return validators;\n }\n}\n","import { FormlyExtension, FormlyConfig, TemplateManipulators } from '../../services/formly.config';\nimport { FormlyFieldConfigCache, FormlyFieldConfig } from '../../components/formly.field.config';\nimport { FormGroup } from '@angular/forms';\nimport { getFieldId, isUndefined, getFieldValue, reverseDeepMerge, assignFieldValue } from '../../utils';\n\n/** @experimental */\nexport class CoreExtension implements FormlyExtension {\n private formId = 0;\n constructor(private formlyConfig: FormlyConfig) { }\n\n prePopulate(field: FormlyFieldConfigCache) {\n this.getFieldComponentInstance(field).prePopulate();\n if (field.parent) {\n return;\n }\n\n const fieldTransforms = (field.options && field.options.fieldTransform) || this.formlyConfig.extras.fieldTransform;\n (Array.isArray(fieldTransforms) ? fieldTransforms : [fieldTransforms]).forEach(fieldTransform => {\n if (fieldTransform) {\n console.warn(`NgxFormly: fieldTransform is deprecated since v5.0, use custom extension instead.`);\n const fieldGroup = fieldTransform(field.fieldGroup, field.model, <FormGroup>field.formControl, field.options);\n if (!fieldGroup) {\n throw new Error('fieldTransform must return an array of fields');\n }\n }\n });\n }\n\n onPopulate(field: FormlyFieldConfigCache) {\n this.initFieldOptions(field);\n this.getFieldComponentInstance(field).onPopulate();\n if (field.fieldGroup) {\n field.fieldGroup.forEach((f, index) => {\n Object.defineProperty(f, 'parent', { get: () => field, configurable: true });\n Object.defineProperty(f, 'index', { get: () => index, configurable: true });\n this.formId++;\n });\n }\n }\n\n postPopulate(field: FormlyFieldConfigCache) {\n this.getFieldComponentInstance(field).postPopulate();\n }\n\n private initFieldOptions(field: FormlyFieldConfigCache) {\n const root = <FormlyFieldConfigCache> field.parent;\n if (!root) {\n return;\n }\n\n Object.defineProperty(field, 'form', { get: () => root.formControl, configurable: true });\n Object.defineProperty(field, 'options', { get: () => root.options, configurable: true });\n Object.defineProperty(field, 'model', {\n get: () => field.key && field.fieldGroup ? getFieldValue(field) : root.model,\n configurable: true,\n });\n\n reverseDeepMerge(field, {\n id: getFieldId(`formly_${this.formId}`, field, field['index']),\n hooks: {},\n modelOptions: {},\n validation: { messages: {} },\n templateOptions: !field.type || !field.key ? {} : {\n label: '',\n placeholder: '',\n focus: false,\n disabled: false,\n },\n });\n\n if (this.formlyConfig.extras.resetFieldOnHide && field.resetOnHide !== false) {\n field.resetOnHide = true;\n }\n\n if (field.lifecycle) {\n console.warn(`NgxFormly: 'lifecycle' is deprecated since v5.0, use 'hooks' instead.`);\n }\n\n if (\n field.type !== 'formly-template'\n && (\n field.template\n || (field.expressionProperties && field.expressionProperties.template)\n )\n ) {\n if (field.type) {\n console.warn(`NgxFormly: passing 'type' property is not allowed when 'template' is set.`);\n }\n field.type = 'formly-template';\n }\n\n if (!field.type && field.fieldGroup) {\n field.type = 'formly-group';\n }\n\n if (field.type) {\n this.formlyConfig.getMergedField(field);\n }\n\n if (field.parent) {\n let setDefaultValue = !isUndefined(field.key)\n && !isUndefined(field.defaultValue)\n && isUndefined(getFieldValue(field))\n && (!field.resetOnHide || !(field.hide || field.hideExpression));\n if (setDefaultValue && field.resetOnHide) {\n let parent = field.parent;\n while (parent && !parent.hideExpression && !parent.hide) {\n parent = parent.parent;\n }\n setDefaultValue = !parent || !(parent.hideExpression || parent.hide);\n }\n\n if (setDefaultValue) {\n assignFieldValue(field, field.defaultValue);\n }\n }\n\n this.initFieldWrappers(field);\n }\n\n private initFieldWrappers(field: FormlyFieldConfig) {\n field.wrappers = field.wrappers || [];\n const fieldTemplateManipulators: TemplateManipulators = {\n preWrapper: [],\n postWrapper: [],\n ...(field.templateOptions.templateManipulators || {}),\n };\n\n field.wrappers = [\n ...this.formlyConfig.templateManipulators.preWrapper.map(m => m(field)),\n ...fieldTemplateManipulators.preWrapper.map(m => m(field)),\n ...field.wrappers,\n ...this.formlyConfig.templateManipulators.postWrapper.map(m => m(field)),\n ...fieldTemplateManipulators.postWrapper.map(m => m(field)),\n ].filter((el, i, a) => el && i === a.indexOf(el));\n }\n\n private getFieldComponentInstance(field: FormlyFieldConfigCache) {\n const componentRef = this.formlyConfig.resolveFieldTypeRef(field);\n const instance: FormlyExtension = componentRef ? componentRef.instance as any : {};\n\n return {\n prePopulate: () => instance.prePopulate && instance.prePopulate(field),\n onPopulate: () => instance.onPopulate && instance.onPopulate(field),\n postPopulate: () => instance.postPopulate && instance.postPopulate(field),\n };\n }\n}\n","import { NgModule, ModuleWithProviders, ANALYZE_FOR_ENTRY_COMPONENTS, Inject, Optional } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormlyForm } from './components/formly.form';\nimport { FormlyField } from './components/formly.field';\nimport { FormlyAttributes } from './components/formly.attributes';\nimport { FormlyConfig, ConfigOption, FORMLY_CONFIG } from './services/formly.config';\nimport { FormlyFormBuilder } from './services/formly.form.builder';\nimport { FormlyGroup } from './templates/formly.group';\nimport { FormlyValidationMessage } from './templates/formly.validation-message';\nimport { FormlyTemplateType } from './templates/field-template.type';\n\nimport { FieldExpressionExtension } from './extensions/field-expression/field-expression';\nimport { FieldValidationExtension } from './extensions/field-validation/field-validation';\nimport { FieldFormExtension } from './extensions/field-form/field-form';\nimport { CoreExtension } from './extensions/core/core';\nimport { FieldArrayType } from './templates/field-array.type';\n\nexport function defaultFormlyConfig(formlyConfig: FormlyConfig): ConfigOption {\n return {\n types: [\n { name: 'formly-group', component: FormlyGroup },\n { name: 'formly-template', component: FormlyTemplateType },\n ],\n extensions: [\n { name: 'core', extension: new CoreExtension(formlyConfig) },\n { name: 'field-validation', extension: new FieldValidationExtension(formlyConfig) },\n { name: 'field-form', extension: new FieldFormExtension(formlyConfig) },\n { name: 'field-expression', extension: new FieldExpressionExtension() },\n ],\n };\n}\n\n@NgModule({\n declarations: [\n FormlyForm,\n FormlyField,\n FormlyAttributes,\n FormlyGroup,\n FormlyValidationMessage,\n FormlyTemplateType,\n FieldArrayType as any,\n ],\n entryComponents: [FormlyGroup, FormlyTemplateType],\n exports: [FormlyForm, FormlyField, FormlyAttributes, FormlyGroup, FormlyValidationMessage],\n imports: [CommonModule],\n})\nexport class FormlyModule {\n static forRoot(config: ConfigOption = {}): ModuleWithProviders<FormlyModule> {\n return {\n ngModule: FormlyModule,\n providers: [\n { provide: FORMLY_CONFIG, multi: true, useFactory: defaultFormlyConfig, deps: [FormlyConfig] },\n { provide: FORMLY_CONFIG, useValue: config, multi: true },\n { provide: ANALYZE_FOR_ENTRY_COMPONENTS, useValue: config, multi: true },\n FormlyConfig,\n FormlyFormBuilder,\n ],\n };\n }\n\n static forChild(config: ConfigOption = {}): ModuleWithProviders<FormlyModule> {\n return {\n ngModule: FormlyModule,\n providers: [\n { provide: FORMLY_CONFIG, multi: true, useFactory: defaultFormlyConfig, deps: [FormlyConfig] },\n { provide: FORMLY_CONFIG, useValue: config, multi: true },\n { provide: ANALYZE_FOR_ENTRY_COMPONENTS, useValue: config, multi: true },\n FormlyFormBuilder,\n ],\n };\n }\n\n constructor(\n configService: FormlyConfig,\n @Optional() @Inject(FORMLY_CONFIG) configs: ConfigOption[] = [],\n ) {\n if (!configs) {\n return;\n }\n\n configs.forEach(config => configService.addConfig(config));\n }\n}\n"]}