{"version":3,"sources":["../src/addons/form/submit.ts","../src/form/checks/is-key-in-form-fields.ts","../src/methods/merge-field-props.ts","../src/addons/form/update.ts","../src/addons/form/values.ts","../src/addons/form/button.ts","../src/form/preparations/options.ts","../src/field/preparations/setup.ts","../src/field/preparations/store.ts","../src/field/checks/is-field-incomplete.ts","../src/field/processors/value/checkbox.ts","../src/methods/populate-file-reader.ts","../src/field/processors/value/file.ts","../src/field/processors/value/number.ts","../src/field/processors/value/tel.ts","../src/render/helpers/date/parse.ts","../src/render/helpers/date/mode.ts","../src/render/helpers/date/selected-list.ts","../src/render/helpers/date/DATE.ts","../src/render/helpers/date/TIME.ts","../src/render/helpers/date/YEAR.ts","../src/render/helpers/date/MONTH.ts","../src/render/helpers/date/DAY.ts","../src/render/helpers/date/HOUR.ts","../src/render/helpers/date/MINUTE.ts","../src/render/helpers/date/SECOND.ts","../src/field/processors/value/date.ts","../src/field/processors/value/select.ts","../src/field/processors/value/index.ts","../src/field/cycles/change.ts","../src/render/attributes/input.ts","../src/render/attributes/select.trigger.ts","../src/render/attributes/select.option.ts","../src/render/attributes/date.cell.ts","../src/render/attributes/date.option.ts","../src/render/attributes/date.event.ts","../src/render/attributes/date.input.ts","../src/integrations/dom.ts","../src/integrations/ref.ts","../src/integrations/preact.ts","../src/integrations/react.ts","../src/integrations/solid.ts","../src/integrations/svelte.ts","../src/render/index.ts","../src/field/cycles/mount.ts","../src/addons/field/remove.ts","../src/addons/field/update.ts","../src/field/preparations/init.ts","../src/addons/field/reset.ts","../src/field/index.ts","../src/form/preparations/fields.ts","../src/form/preparations/store.ts","../src/methods/setup-options-merger.ts","../src/form/cycles/change.ts","../src/form/index.ts"],"names":["formSubmitAddon","props","store","fields","canSubmit","status","FORM","startFieldsSubmitting","cycles","key","field","FIELD","next","end","__spreadProps","__spreadValues","runner","w","e","isKeyInFormFields","options","mergeFieldProps","fieldProps","formProps","_strat","strat","getDeepPath","obj","_path","path","len","i","formUpdateAddon","values","paths","configs","_a","_key","value","conditions","condition","elements","element","formValuesAddon","rv","special","_getValues","_b","_c","_d","_e","_f","result","key_case","_getValueCase","extras","valueType","isArray","item","idx","option","prefix","phone","_camelToSnakeCase","str","joiner","uppercaseIsNewWord","regex","match","index","convertCase","formButtonAddon","PROCESSED","prepareOptions","_g","_h","_i","_j","prepareSetup","inn","_k","_l","_m","_n","_o","_p","_q","_r","setup","char","reps","labelReplace","replacement","prepareStore","atom","hooksInUseAddon","isFieldIncomplete","state","isDateType","processCheckboxValue","processor","manualUpdate","$next","populateFileReader","file","reader","lastLoaded","lastTotal","lastPercentage","processFileValue","el","preprocessValue","_value","progress","buffer","error","processNumberValue","_props","PREFIX","parsePhone3","_phone","prefixes","_preserveChars","preserveChars","a","b","rest","cleanNumber","preservePattern","cleanNumber2","otherChars","processTelValue","processed","country","parsed","MISC","preserved","parseDateEnhanced","format","dateSeparators","timeSeparators","multipleTimeSeparator","createEmptyResult","stringValue","formatTokens","extractFormatTokens","parseDateWithFormat","extractAllTimes","formatResults","validateResults","extractRemainingText","date","input","numbers","extractAllNumbers","number","token","isDateToken","isValidDateNumber","assignDateComponent","times","parts","part","time","parseTimeFromSegment","segment","createEmptyTime","separatorPattern","sep","escapeRegex","timePattern","hour","minute","second","isValidHour","isValidMinute","isValidSecond","detectPeriod","string","hourNum","minuteNum","secondNum","length","lowerInput","tokenRegex","matches","workingValue","allSeparators","formatDate","timeSeparator","formatTime12h","formatTime24h","validateDateComponents","validateTimeComponents","t","originalFormat","dateTokens","components","separator","detectSeparatorFromFormat","separatorMatch","timeParts","displayHour","period","timeString","month","day","initMode","modeSequence","CALENDAR","active","userRequestedMode","activeType","applyDate","applyTime","nextMode","nextIdx","goToMode","reqMode","createSelectedList","list","is12Hour","requiresDate","requiresTime","validCount","invlidItem","year","_hour","DATE_default","TIME_default","getLocaleSuffix","initPeriods","locale","baseLocale","timeSuffixes","YEAR_default","years","yearStr","isSelected","MONTH_default","formatter","shortFormatter","_month","months","monthNumber","daysHeaders","firstDayOfWeek","headers","dayIndex","DAY_default","_day","days","today","currentYear","currentMonth","firstDay","daysInCurrentMonth","daysInPrevMonth","startDayOffset","totalCells","dayNumber","isOtherMonth","isToday","dayStr","HOUR_default","hours","suffix","maxHour","hourStr","MINUTE_default","_minute","minutes","minuteStr","SECOND_default","_second","seconds","secondStr","processDateValue","_s","_t","_u","_v","selected","putResult","v","processSelectValue","multiple","found","other","arr","processValue","REFRESH","changeCycle","formStore","update","onSet","payload","_DOM","_MUTATE","MANUAL_UPDATE","PREPROCESS_VALUE","VMCM","NO_VALIDATION","SHOULD_VALIDATE","prev","form","oldValue","onchangeprops","isServerSide","err","validations","validation","incomplete","renderAttributesInput","basic","attrType","reactive","attrs","event","listenerId","processProps","renderAttributesSelectTrigger","outsideClick","target","name","renderAttributesSelectOption","_optionValue","postfix","valueKey","labelKey","optionValueKey","same_same","renderAttributesDateCell","_cells","id","_w","cells","mode","multipleTime","current","split","timeSplit","wow","renderAttributesDateOption","renderAttributesDateEvent","_event","EVENT","yearStart","renderAttributesDateInput","domIntegration","items","refIntegration","ref","k","preactIntegration","reactIntegration","solidIntegration","svelteIntegration","createRender","mountCycle","next_cycle","onMount","ureturns","task","fieldAddonRemove","_item","fieldAddonUpdate","cycle_tracker","vv","cycle","_values","_indieces","indieces","dd","prepareInit","init","IGNORED_SETUP_KEYS","fieldAddonReset","createField","formOptions","render","remove","reset","prepareFields","fieldFactoryIn","map","deriveAddon","setupOptionsMerger","_base","base","merged","onchange","breturns","stores","effect","count","eventprops","func","createForm","_options","addonProps","submit","button","keys","createFormSetup","optionsMerger"],"mappings":"sOAMO,SAASA,EAAAA,CACfC,CAAAA,CACC,CACD,GAAM,CAAE,KAAA,CAAAC,CAAAA,CAAO,MAAA,CAAAC,CAAO,CAAA,CAAIF,CAAAA,CAC1B,SAASG,CAAAA,EAAY,CACpB,IAAMC,CAAAA,CAASH,CAAAA,CAAM,GAAA,EAAI,CAAE,MAAA,CAC3B,OAAIG,CAAAA,GAAWC,mBAAAA,CAAK,MAAA,CAAO,MAAA,CACnB,KAAA,CAEDD,CAAAA,GAAWC,mBAAAA,CAAK,MAAA,CAAO,KAC/B,CAEA,SAASC,CAAAA,EAAwB,CAChC,IAAMC,CAAAA,CAAS,EAAC,CAChB,IAAA,IAAWC,CAAAA,IAAON,CAAAA,CAAQ,CACzB,IAAMO,CAAAA,CAAQP,CAAAA,CAAOM,CAAG,CAAA,CACxBD,CAAAA,CAAO,IAAA,CAAKE,CAAAA,CAAM,MAAA,CAAO,KAAA,CAAMC,mBAAAA,CAAM,KAAA,CAAM,MAAM,CAAC,EACnD,CACA,OAAO,IAAM,CACZH,EAAO,OAAA,CAASI,CAAAA,EAASA,CAAAA,EAAM,EAChC,CACD,CAEA,OAAO,CAKN,QAAA,CAAUR,CAAAA,CAOV,KAAA,CAAO,IAAM,CACZ,GAAI,CAACA,CAAAA,EAAU,CACd,OAAO,IAAA,CAER,IAAMS,CAAAA,CAAMN,CAAAA,EAAsB,CAClC,OAAAL,CAAAA,CAAM,GAAA,CAAIY,mBAAAA,CAAAC,mBAAAA,CAAA,EAAA,CAAKb,CAAAA,CAAM,GAAA,EAAI,CAAA,CAAf,CAAkB,MAAA,CAAQI,mBAAAA,CAAK,MAAA,CAAO,MAAO,CAAA,CAAC,CAAA,CACjD,IAAM,CACZO,CAAAA,EAAI,CACAX,CAAAA,CAAM,GAAA,EAAI,CAAE,MAAA,GAAWI,mBAAAA,CAAK,MAAA,CAAO,MAAA,EAGvCJ,CAAAA,CAAM,GAAA,CAAIY,mBAAAA,CAAAC,mBAAAA,CAAA,EAAA,CAAKb,CAAAA,CAAM,GAAA,EAAI,CAAA,CAAf,CAAkB,MAAA,CAAQI,mBAAAA,CAAK,OAAO,KAAM,CAAA,CAAC,EACxD,CACD,CAAA,CAQA,IAAA,CAAM,MACLU,CAAAA,EAC0D,CAC1D,GAAI,CAACZ,CAAAA,EAAU,CAEd,OAAO,CAAC,IAAA,CAAM,CAAE,OAAA,CAAS,4BAA6B,CAAC,CAAA,CAExD,IAAMS,CAAAA,CAAMN,CAAAA,EAAsB,CAClC,GAAI,CACHL,CAAAA,CAAM,GAAA,CAAIY,mBAAAA,CAAAC,mBAAAA,CAAA,EAAA,CAAKb,CAAAA,CAAM,GAAA,EAAI,CAAA,CAAf,CAAkB,MAAA,CAAQI,mBAAAA,CAAK,MAAA,CAAO,MAAO,CAAA,CAAC,CAAA,CACxD,IAAMW,CAAAA,CAAI,MAAMD,CAAAA,EAAA,IAAA,CAAA,KAAA,CAAA,CAAAA,CAAAA,EAAAA,CAAAA,CAChB,OAAAd,CAAAA,CAAM,GAAA,CAAIY,mBAAAA,CAAAC,mBAAAA,CAAA,EAAA,CAAKb,CAAAA,CAAM,GAAA,EAAI,CAAA,CAAf,CAAkB,MAAA,CAAQI,mBAAAA,CAAK,MAAA,CAAO,KAAM,CAAA,CAAC,CAAA,CACvDO,CAAAA,EAAI,CACG,CAACI,CAAAA,CAAG,IAAI,CAChB,CAAA,MAASC,CAAAA,CAAQ,CAChB,OAAAhB,CAAAA,CAAM,GAAA,CAAIY,mBAAAA,CAAAC,mBAAAA,CAAA,EAAA,CAAKb,CAAAA,CAAM,GAAA,EAAI,CAAA,CAAf,CAAkB,MAAA,CAAQI,mBAAAA,CAAK,MAAA,CAAO,KAAM,CAAA,CAAC,CAAA,CACvDO,CAAAA,EAAI,CAEG,CAAC,IAAA,CAAMK,CAAC,CAChB,CACD,CACD,CACD,CClFO,SAASC,EAAAA,CACfhB,CAAAA,CACAiB,CAAAA,CACAX,CAAAA,CACC,CACD,OAAMA,CAAAA,IAAON,CAAAA,CAMN,IAAA,EALFiB,CAAAA,CAAQ,mBAAA,GAAwB,MAAA,EACnC,OAAA,CAAQ,IAAA,CAAK,YAAA,CAAcX,CAAAA,CAAK,8BAA8B,CAAA,CAExD,KAAA,CAGT,CCZO,SAASY,EAAAA,CACfC,CAAAA,CACAC,CAAAA,CACAC,CAAAA,CACC,CACD,IAAMC,CAAAA,CAAQD,CAAAA,EAAA,IAAA,CAAAA,CAAAA,CAAU,MAAA,CACxB,OAAID,CAAAA,EAAa,IAAA,EAAQD,CAAAA,EAAc,IAAA,CAC/B,IAAA,CAEJG,CAAAA,GAAU,MAAA,CACNH,CAAAA,CAEJG,CAAAA,GAAU,eAAA,CACNV,mBAAAA,CAAAA,mBAAAA,CAAA,EAAA,CACHO,CAAAA,CAAAA,CACAC,CAAAA,CAAAA,CAGER,mBAAAA,CAAAA,mBAAAA,CAAA,EAAA,CACHQ,CAAAA,CAAAA,CACAD,CAAAA,CAEL,CCpBA,SAASI,EAAAA,CAAYC,CAAAA,CAAUC,CAAAA,CAAe,CAC7C,IAAMC,CAAAA,CAAOD,CAAAA,CAAM,KAAA,CAAM,GAAG,CAAA,CACtBE,CAAAA,CAAMD,CAAAA,CAAK,MAAA,CACjB,IAAA,IAASE,CAAAA,CAAI,CAAA,CAAGA,CAAAA,CAAID,CAAAA,CAAKC,CAAAA,EAAAA,CAExBJ,CAAAA,CAAMA,CAAAA,CAAIE,CAAAA,CAAKE,CAAC,CAAC,CAAA,CAElB,OAAOJ,CACR,CAKO,SAASK,EAAAA,CACf/B,CAAAA,CACC,CACD,GAAM,CAAE,MAAA,CAAAE,CAAAA,CAAQ,QAAAiB,CAAAA,CAAS,KAAA,CAAAlB,CAAM,CAAA,CAAID,CAAAA,CACnC,OAAO,CACN,MAAA,CAAQ,CACPgC,CAAAA,CACAC,CAAAA,CACAC,CAAAA,GACI,CA1BP,IAAAC,CAAAA,CA2BG,GAAIH,CAAAA,EAAU,IAAA,CAId,IAAA,IAAWI,CAAAA,IAAQJ,CAAAA,CAAQ,CAC1B,IAAIJ,CAAAA,CAAOK,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAQG,CAAAA,CAAAA,CACf5B,CAAAA,CAAM4B,CAAAA,CAQV,GAPIR,CAAAA,EAAQ,IAAA,EACP,OAAOA,CAAAA,EAAS,QAAA,GAEnBpB,CAAAA,CAAAA,CAAO2B,CAAAA,CAAAP,CAAAA,CAAK,GAAA,GAAL,IAAA,CAAAO,CAAAA,CAAYC,CAAAA,CACnBR,CAAAA,CAAOA,CAAAA,CAAK,KAAA,CAAA,CAGV,CAACV,EAAAA,CAAkBhB,CAAAA,CAAQiB,CAAAA,CAASX,CAAG,CAAA,CAC1C,SAED,IAAMC,CAAAA,CAAQP,CAAAA,CAAOM,CAA0B,CAAA,CACzC6B,CAAAA,CAAQT,CAAAA,EAAQ,IAAA,CAAOI,CAAAA,CAAOxB,CAAG,CAAA,CAAIiB,EAAAA,CAAYO,CAAAA,CAAQJ,CAAc,CAAA,CAC7EnB,CAAAA,CAAM,MAAA,CAAO,KAAA,CAAM4B,CAAAA,CAAO,CAAE,UAAA,CAAYH,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAS,UAAW,CAAC,EAQ9D,CACD,CAAA,CACA,UAAA,CAAkEI,CAAAA,EAAkB,CACnF,GAAIA,CAAAA,EAAc,IAAA,CAGlB,IAAA,IAAW9B,CAAAA,IAAO8B,CAAAA,CAAY,CAC7B,GAAI,CAACpB,EAAAA,CAAkBhB,CAAAA,CAAQiB,CAAAA,CAASX,CAAG,CAAA,CAC1C,SAED,IAAMC,CAAAA,CAAQP,CAAAA,CAAOM,CAAG,CAAA,CAClB+B,CAAAA,CAAYD,CAAAA,CAAW9B,CAAG,CAAA,CAChCC,CAAAA,CAAM,MAAA,CAAO,SAAA,CAAU8B,CAAS,EACjC,CACD,CAAA,CACA,QAAA,CAA0DC,CAAAA,EAAgB,CACzE,GAAIA,CAAAA,EAAY,IAAA,CAGhB,IAAA,IAAWhC,CAAAA,IAAOgC,CAAAA,CAAU,CAC3B,GAAI,CAACtB,EAAAA,CAAkBhB,CAAAA,CAAQiB,CAAAA,CAASX,CAAG,CAAA,CAC1C,SAED,IAAMC,CAAAA,CAAQP,CAAAA,CAAOM,CAAG,CAAA,CAClBiC,CAAAA,CAAUD,CAAAA,CAAShC,CAAG,CAAA,CAC5BC,CAAAA,CAAM,MAAA,CAAO,OAAA,CAAQgC,CAAO,EAC7B,CACD,CAAA,CACA,KAAA,CAA8BzC,CAAAA,EAAsB,CAlFtD,IAAAmC,CAAAA,CAoFG,GADAlC,CAAAA,CAAM,GAAA,CAAIY,mBAAAA,CAAAC,mBAAAA,CAAA,EAAA,CAAKb,CAAAA,CAAM,GAAA,EAAI,CAAA,CAAf,CAAkB,KAAA,CAAAD,CAAM,CAAA,CAAC,CAAA,CAC/B,EAAAmB,CAAAA,EAAW,IAAA,EAAQA,CAAAA,CAAQ,kBAAA,GAAuB,MAAA,CAAA,CAGtD,IAAA,IAAWX,CAAAA,IAAON,CAAAA,CAAQ,CACzB,IAAMO,CAAAA,CAAQP,CAAAA,CAAOM,CAAG,CAAA,CAClBa,CAAAA,CAAAA,CAAac,CAAAA,CAAA1B,CAAAA,CAAM,KAAA,CAAM,KAAA,GAAZ,YAAA0B,CAAAA,CAAmB,KAAA,CAChCxB,CAAAA,CAAOS,EAAAA,CAAgBC,CAAAA,CAAYrB,CAAAA,CAAOmB,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAS,kBAAkB,CAAA,CAC3EV,CAAAA,CAAM,MAAA,CAAO,KAAA,CAAME,CAAI,EACxB,CACD,CACD,CACD,CC1FO,SAAS+B,EAAAA,CACf1C,CAAAA,CACC,CACD,GAAM,CAAE,MAAA,CAAAE,CAAAA,CAAQ,KAAA,CAAAD,CAAM,CAAA,CAAID,CAAAA,CAC1B,OAAO,CACN,GAAA,CACC2C,CAAAA,CACAC,CAAAA,CACC,CACD,OAAOC,EAAAA,CAAW,CAAE,MAAA,CAAA3C,CAAAA,CAAQ,KAAA,CAAAD,CAAAA,CAAO,WAAA,CAAa,MAAA,CAAQ,OAAA,CAAA2C,CAAAA,CAAS,EAAA,CAAAD,CAAG,CAAC,CACtE,CAAA,CACA,YAAA,CAA8CC,CAAAA,CAAc,CAC3D,OAAOC,EAAAA,CAAW,CAAE,MAAA,CAAA3C,CAAAA,CAAQ,MAAAD,CAAAA,CAAO,WAAA,CAAa,WAAA,CAAa,OAAA,CAAA2C,CAAQ,CAAC,CACvE,CAAA,CACA,YAAA,CAA8CA,CAAAA,CAAc,CAC3D,OAAOC,EAAAA,CAAW,CAAE,MAAA,CAAA3C,CAAAA,CAAQ,KAAA,CAAAD,CAAAA,CAAO,WAAA,CAAa,WAAA,CAAa,OAAA,CAAA2C,CAAQ,CAAC,CACvE,CAAA,CACA,YAAA,CAA8CA,CAAAA,CAAc,CAC3D,OAAOC,EAAAA,CAAW,CAAE,MAAA,CAAA3C,CAAAA,CAAQ,KAAA,CAAAD,CAAAA,CAAO,WAAA,CAAa,OAAA,CAAS,OAAA,CAAA2C,CAAQ,CAAC,CACnE,CAAA,CACA,sBAAA,CAAwDA,CAAAA,CAAc,CACrE,OAAOC,EAAAA,CAAW,CACjB,MAAA,CAAA3C,CAAAA,CACA,KAAA,CAAAD,CAAAA,CACA,WAAA,CAAa,kBAAA,CACb,OAAA,CAAA2C,CACD,CAAC,CACF,CAAA,CACA,YAAA,CAA8CA,CAAAA,CAAc,CAC3D,OAAOC,EAAAA,CAAW,CAAE,MAAA,CAAA3C,CAAAA,CAAQ,KAAA,CAAAD,CAAAA,CAAO,WAAA,CAAa,OAAA,CAAS,OAAA,CAAA2C,CAAQ,CAAC,CACnE,CAAA,CACA,sBAAA,CAAwDA,CAAAA,CAAc,CACrE,OAAOC,EAAAA,CAAW,CACjB,MAAA,CAAA3C,CAAAA,CACA,KAAA,CAAAD,CAAAA,CACA,WAAA,CAAa,kBAAA,CACb,OAAA,CAAA2C,CACD,CAAC,CACF,CACD,CACD,CAEA,SAASC,EAAAA,CAOP7C,CAAAA,CAAuE,CAtDzE,IAAAmC,CAAAA,CAAAW,CAAAA,CAAAC,CAAAA,CAAAC,CAAAA,CAAAC,CAAAA,CAAAC,CAAAA,CAuDC,IAAMC,CAAAA,CAAS,EAAC,CACVnB,CAAAA,CAAShC,CAAAA,CAAM,KAAA,CAAM,GAAA,EAAI,CAAE,MAAA,CACjC,IAAA,IAAWQ,CAAAA,IAAOR,CAAAA,CAAM,MAAA,CAAQ,CAC/B,IAAMS,CAAAA,CAAQT,CAAAA,CAAM,MAAA,CAAOQ,CAAG,CAAA,CACxBP,CAAAA,CAAQQ,CAAAA,CAAM,KAAA,CAAM,GAAA,EAAI,CACxB2C,CAAAA,CAAWC,EAAAA,CAAc7C,CAAAA,CAAAA,CAAKsC,CAAAA,CAAAA,CAAAX,CAAAA,CAAAnC,CAAAA,CAAM,OAAA,GAAN,IAAA,CAAA,MAAA,CAAAmC,CAAAA,CAAgB3B,CAAAA,CAAAA,GAAhB,IAAA,CAAAsC,CAAAA,CAAwB9C,CAAAA,CAAM,WAAW,CAAA,CACzEqC,CAAAA,CAAQL,CAAAA,CAAOxB,CAAG,CAAA,CAOtB,GAAI6B,CAAAA,EAAS,IAAA,CAAA,CACZ,GAAI5B,CAAAA,CAAM,KAAA,CAAM,IAAA,CAAK,UAAA,CAAW,QAAQ,CAAA,CAAG,CAC1C,IAAM6C,CAAAA,CAASrD,CAAAA,CAAM,MAAA,CACfsD,CAAAA,CAAAA,CAAYR,CAAAA,CAAA/C,CAAAA,CAAM,EAAA,GAAN,IAAA,CAAA,MAAA,CAAA+C,CAAAA,CAAWvC,CAAAA,CAAAA,CACvBgD,CAAAA,CAAU,KAAA,CAAM,OAAA,CAAQnB,CAAK,CAAA,CACnCA,CAAAA,CAASmB,CAAAA,CAAUnB,CAAAA,CAAQ,CAACA,CAAK,CAAA,CACjC,IAAA,IAASP,CAAAA,CAAI,CAAA,CAAGA,CAAAA,CAAIO,CAAAA,CAAM,OAAQP,CAAAA,EAAAA,CAAK,CACtC,IAAM2B,CAAAA,CAAOpB,CAAAA,CAAMP,CAAC,CAAA,CACpB,GAAIyB,CAAAA,EAAa,IAAA,CAAM,CACtB,IAAM5C,CAAAA,CAAO,EAAC,CACd,IAAA,IAAWH,CAAAA,IAAOiD,CAAAA,CACbjD,CAAAA,CAAI,UAAA,CAAW,IAAI,CAAA,GAGvBG,CAAAA,CAAKH,CAAG,CAAA,CAAIiD,CAAAA,CAAKjD,CAAG,CAAA,CAAA,CAErB6B,CAAAA,CAAMP,CAAC,CAAA,CAAInB,EACZ,CAAA,KAAA,GAAW4C,CAAAA,GAAc,OAAA,CAAS,CACjC,IAAIG,CAAAA,CAAMJ,CAAAA,CAAO,OAAA,CAAQ,SAAA,CACvBK,CAAAA,EAAQ,CAvFhB,IAAAxB,CAAAA,CAAAW,CAAAA,CAwFQ,OAAAa,CAAAA,CAAAA,CAAOxB,CAAAA,CAAAwB,CAAAA,CAAO,UAAA,GAAP,IAAA,CAAAxB,CAAAA,CAAqBmB,CAAAA,CAAO,QAAQ,CAAA,GAC3CG,CAAAA,CAAAA,CAAKX,CAAAA,CAAAW,CAAAA,CAAK,UAAA,GAAL,IAAA,CAAAX,CAAAA,CAAmBQ,CAAAA,CAAO,QAAQ,CAAA,CACzC,CAAA,CACII,CAAAA,CAAM,CAAA,GACT,OAAA,CAAQ,IAAA,CACP,sBAAA,CACAD,CAAAA,CACA,mEACD,CAAA,CACAC,CAAAA,CAAM,CAAA,CAAA,CAEPrB,CAAAA,CAAMP,CAAC,CAAA,CAAI4B,EACZ,CAAA,KACCrB,CAAAA,CAAMP,CAAC,CAAA,CAAI2B,CAAAA,CAAAA,CAAKT,CAAAA,CAAAS,CAAAA,CAAK,UAAA,GAAL,IAAA,CAAAT,CAAAA,CAAmBM,CAAAA,CAAO,QAAQ,EAEpD,CACAjB,CAAAA,CAAQmB,CAAAA,CAAUnB,CAAAA,CAAQA,CAAAA,CAAM,CAAC,EAClC,CAAA,KAAA,GAAW5B,CAAAA,CAAM,KAAA,CAAM,IAAA,GAAS,KAAA,CAAO,CACtC,IAAM6C,CAAAA,CAAAA,CAASL,CAAAA,CAAAxC,CAAAA,CAAM,KAAA,CAAM,KAAA,GAAZ,IAAA,CAAA,MAAA,CAAAwC,CAAAA,CAAmB,MAAA,CAClC,GAAIK,CAAAA,CAAQ,CACX,IAAMM,CAAAA,CAAAA,CAASV,CAAAA,CAAAI,CAAAA,CAAO,aAAA,GAAP,IAAA,CAAA,MAAA,CAAAJ,CAAAA,CAAsB,MAAA,CAE/BW,EAAQP,CAAAA,CAAO,KAAA,CAAM,SAAA,CAC3BjB,CAAAA,CAAQ,CAAA,EAAGuB,CAAAA,EAAA,IAAA,CAAAA,CAAAA,CAAU,EAAE,CAAA,EAAGC,CAAAA,EAAA,IAAA,CAAAA,CAAAA,CAAS,EAAE,CAAA,EACtC,CACD,CAAA,CAIDV,CAAAA,CAAOC,CAAQ,CAAA,CAAIf,EACpB,CACA,OAAOc,CACR,CAgGA,SAASW,EAAAA,CAAkBC,CAAAA,CAAaC,CAAAA,CAAS,GAAA,CAAKC,CAAAA,CAAqB,KAAA,CAAe,CACzF,IAAMC,CAAAA,CAASD,CAAAA,CAAiC,QAAA,CAAZ,SAAA,CACpC,OAAOF,CAAAA,CAAI,OAAA,CAAQG,CAAAA,CAAO,CAACC,CAAAA,CAAOC,CAAAA,GAE1BA,CAAAA,GAAU,CAAA,CAAID,CAAAA,CAAM,WAAA,EAAY,CAAI,CAAA,EAAGH,CAAM,CAAA,EAAGG,CAAAA,CAAM,WAAA,EAAa,CAAA,CAC1E,CACF,CAEA,SAASd,EAAAA,CAAc7C,CAAAA,CAAa6D,CAAAA,CAA4B,MAAA,CAAQ,CACvE,OAAIA,CAAAA,GAAgB,OAAA,CACZP,EAAAA,CAAkBtD,CAAAA,CAAK,GAAG,CAAA,CAE9B6D,CAAAA,GAAgB,kBAAA,CACZP,EAAAA,CAAkBtD,CAAAA,CAAK,GAAA,CAAK,IAAI,CAAA,CAEpC6D,CAAAA,GAAgB,OAAA,CACZP,EAAAA,CAAkBtD,CAAAA,CAAK,GAAG,CAAA,CAE9B6D,CAAAA,GAAgB,kBAAA,CACZP,EAAAA,CAAkBtD,CAAAA,CAAK,GAAA,CAAK,IAAI,CAAA,CAEpC6D,CAAAA,GAAgB,WAAA,CACZ7D,CAAAA,CAAI,WAAA,EAAY,CAEpB6D,CAAAA,GAAgB,WAAA,CACZ7D,CAAAA,CAAI,WAAA,EAAY,CAEjBA,CACR,CCjOO,SAAS8D,EAAAA,CACftE,CAAAA,CACwB,CACxB,IAAM,CAAE,KAAA,CAAAC,CAAe,CAAA,CAAID,CAAAA,CACdC,CAAAA,CAAM,GAAA,GAiCnB,OAAO,CACN,KAAA,CAhCeA,CAAAA,CAAM,MAAA,CACrB,CAAC,CAAE,MAAA,CAAAG,CAAO,CAAA,IACR,CACA,MAAA,CAAQA,CAAAA,CACR,QAAA,CAAUA,CAAAA,GAAWC,mBAAAA,CAAK,MAAA,CAAO,KAAA,CACjC,SAAA,CAAWD,CAAAA,GAAWC,mBAAAA,CAAK,MAAA,CAAO,KAAA,CAClC,UAAA,CAAYD,CAAAA,GAAWC,mBAAAA,CAAK,MAAA,CAAO,MACpC,CAAA,CACF,CAyBA,CACD,CCzDA,IAAMkE,EAAAA,CAAY,aAAA,CACX,SAASC,EAAAA,CAAuCrD,CAAAA,CAAa,CAHpE,IAAAgB,CAAAA,CAAAW,CAAAA,CAAAC,CAAAA,CAAAC,CAAAA,CAAAC,CAAAA,CAAAC,CAAAA,CAAAuB,CAAAA,CAAAC,CAAAA,CAAAC,CAAAA,CAAAC,CAAAA,CAIC,GAAIzD,CAAAA,EAAA,IAAA,EAAAA,CAAAA,CAAUoD,EAAAA,CAAAA,CACb,OAAOpD,CAAAA,CAER,IAAMgC,CAAAA,CAASrC,mBAAAA,CAAA,EAAA,CAAKK,CAAAA,CAAAA,CACpB,OAAAgC,CAAAA,CAAO,IAAA,CAAA,CAAOhB,CAAAA,CAAAgB,CAAAA,CAAO,IAAA,GAAP,IAAA,CAAAhB,EAAe,QAAA,CAC7BgB,CAAAA,CAAO,oBAAA,CAAA,CAAuBL,CAAAA,CAAAK,CAAAA,CAAO,oBAAA,GAAP,IAAA,CAAAL,CAAAA,CAA+B,KAAA,CAC7DK,CAAAA,CAAO,cAAA,CAAA,CAAiBJ,CAAAA,CAAAI,CAAAA,CAAO,cAAA,GAAP,IAAA,CAAAJ,CAAAA,CAAyB,IAAA,CACjDI,CAAAA,CAAO,cAAA,CAAA,CAAiBH,CAAAA,CAAAG,CAAAA,CAAO,cAAA,GAAP,IAAA,CAAAH,CAAAA,CAAyB,KAAA,CACjDG,CAAAA,CAAO,gBAAA,CAAA,CAAmBF,CAAAA,CAAAE,CAAAA,CAAO,gBAAA,GAAP,IAAA,CAAAF,CAAAA,CAA2B,IAAA,CACrDE,CAAAA,CAAO,mBAAA,CAAA,CAAsBD,CAAAA,CAAAC,CAAAA,CAAO,mBAAA,GAAP,IAAA,CAAAD,CAAAA,CAA8B,QAAA,CAK3DC,CAAAA,CAAO,mBAAA,CAAA,CAAsBsB,CAAAA,CAAAtB,CAAAA,CAAO,mBAAA,GAAP,IAAA,CAAAsB,CAAAA,CAA8B,KAAA,CAE3DtB,CAAAA,CAAO,UAAA,CAAA,CAAauB,CAAAA,CAAAvB,CAAAA,CAAO,UAAA,GAAP,IAAA,CAAAuB,CAAAA,CAAqB,OAAA,CAEzCvB,CAAAA,CAAO,kBAAA,CAAqB,GAAA,CAC5BA,CAAAA,CAAO,iBAAA,CAAA,CAAoBwB,EAAAxB,CAAAA,CAAO,iBAAA,GAAP,IAAA,CAAAwB,CAAAA,CAA4B,GAAA,CAEvDxB,CAAAA,CAAO,kBAAA,CAAA,CAAqByB,CAAAA,CAAAzB,CAAAA,CAAO,kBAAA,GAAP,IAAA,CAAAyB,CAAAA,CAA6B,MAAA,CAGzDzB,CAAAA,CAAOoB,EAAS,CAAA,CAAI,IAAA,CACbpB,CACR,CC1BO,SAAS0B,EAAAA,CACfrE,CAAAA,CACAsE,CAAAA,CACA3D,CAAAA,CACC,CARF,IAAAgB,CAAAA,CAAAW,CAAAA,CAAAC,CAAAA,CAAAC,CAAAA,CAAAC,CAAAA,CAAAC,CAAAA,CAAAuB,CAAAA,CAAAC,CAAAA,CAAAC,CAAAA,CAAAC,CAAAA,CAAAG,CAAAA,CAAAC,CAAAA,CAAAC,CAAAA,CAAAC,CAAAA,CAAAC,CAAAA,CAAAC,CAAAA,CAAAC,CAAAA,CAAAC,CAAAA,CASC,IAAIC,CAAAA,CAAQ,EAAC,CAoCb,GAlCIT,CAAAA,EAAO,IAAA,CAEVS,CAAAA,CAAQ,CACP,IAAA,CAAM,MAAA,CACN,KAAA,CAAO,IACR,CAAA,CACU,OAAOT,CAAAA,EAAQ,QAAA,CACzBS,CAAAA,CAAQ,CACP,IAAA,CAAMT,CACP,CAAA,EAEAS,CAAAA,CAAQT,CAAAA,CACJS,CAAAA,CAAM,IAAA,EAAQ,IAAA,GACjBA,CAAAA,CAAM,IAAA,CAAO,MAAA,CAAA,CAAA,CAMfA,CAAAA,CAAM,IAAA,CAAA,CAAOzC,CAAAA,CAAAA,CAAAX,CAAAA,CAAAoD,CAAAA,CAAM,IAAA,GAAN,IAAA,CAAApD,CAAAA,CAAchB,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAS,IAAA,GAAvB,IAAA,CAAA2B,CAAAA,CAA+B,QAAA,CAC5CyC,CAAAA,CAAM,QAAA,CAAA,CAAWvC,CAAAA,CAAAA,CAAAD,CAAAA,CAAAwC,CAAAA,CAAM,QAAA,GAAN,IAAA,CAAAxC,CAAAA,CAAkB5B,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAS,cAAA,GAA3B,IAAA,CAAA6B,CAAAA,CAA6C,IAAA,CAC9DuC,CAAAA,CAAM,QAAA,CAAA,CAAWrC,CAAAA,CAAAA,CAAAD,CAAAA,CAAAsC,CAAAA,CAAM,QAAA,GAAN,IAAA,CAAAtC,CAAAA,CAAkB9B,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAS,cAAA,GAA3B,IAAA,CAAA+B,CAAAA,CAA6C,KAAA,CAC9DqC,CAAAA,CAAM,MAAA,CAAA,CAASd,CAAAA,CAAAc,CAAAA,CAAM,MAAA,GAAN,IAAA,CAAAd,CAAAA,CAAgB,MAC/Bc,CAAAA,CAAM,aAAA,CAAA,CAAgBb,CAAAA,CAAAa,CAAAA,CAAM,aAAA,GAAN,IAAA,CAAAb,CAAAA,CAAuB,KAAA,CAC7Ca,CAAAA,CAAM,eAAA,CAAA,CAAkBX,CAAAA,CAAAA,CAAAD,CAAAA,CAAAY,CAAAA,CAAM,eAAA,GAAN,IAAA,CAAAZ,CAAAA,CAAyBxD,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAS,gBAAA,GAAlC,IAAA,CAAAyD,CAAAA,CAAsD,IAAA,CAC9EW,CAAAA,CAAM,UAAA,CAAA,CAAaR,CAAAA,CAAAQ,CAAAA,CAAM,UAAA,GAAN,IAAA,CAAAR,CAAAA,CAAoB5D,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAS,UAAA,CAChDoE,CAAAA,CAAM,gBAAA,CAAA,CAAmBP,CAAAA,CAAAO,CAAAA,CAAM,gBAAA,GAAN,IAAA,CAAAP,CAAAA,CAA0B,IAAA,CACnDO,CAAAA,CAAM,QAAA,CAAA,CAAWN,CAAAA,CAAAM,CAAAA,CAAM,QAAA,GAAN,IAAA,CAAAN,CAAAA,CAAkB,KAAA,CACnCM,CAAAA,CAAM,iBAAA,CAAA,CAAoBL,CAAAA,CAAAK,CAAAA,CAAM,iBAAA,GAAN,IAAA,CAAAL,CAAAA,CAA2B,KAAA,CACrDK,CAAAA,CAAM,KAAA,CAAQnE,EAAAA,CAAgBmE,CAAAA,CAAM,KAAA,CAAOpE,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAS,KAAA,CAAOA,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAS,kBAAkB,CAAA,CACtFoE,CAAAA,CAAM,SAAA,CAAA,CAAYH,CAAAA,CAAAA,CAAAD,CAAAA,CAAAI,CAAAA,CAAM,SAAA,GAAN,IAAA,CAAAJ,CAAAA,CAAmBhE,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAS,eAAA,GAA5B,IAAA,CAAAiE,CAAAA,CAA+C1E,mBAAAA,CAAM,KAAA,CAAM,IAAA,CAIzE6E,CAAAA,CAAM,KAAA,EAAS,IAAA,CAAM,CACxBA,CAAAA,CAAM,KAAA,CAAQ/E,CAAAA,CACd,IAAMgF,CAAAA,CAAOrE,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAS,kBAAA,CAChBsE,CAAAA,CAAO,EAAC,CAId,GAHID,CAAAA,EAAQ,IAAA,EACXC,CAAAA,CAAK,IAAA,CAAKD,CAAI,CAAA,CAEXD,CAAAA,CAAM,YAAA,EAAgB,IAAA,EAAA,CAAQpE,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAS,YAAA,GAAgB,IAAA,CAAM,CAChE,IAAMuE,CAAAA,CAAAA,CAAeL,CAAAA,CAAAE,CAAAA,CAAM,YAAA,GAAN,KAAAF,CAAAA,CAAsBlE,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAS,YAAA,CAChD,OAAOuE,CAAAA,EAAiB,QAAA,CAC3BD,CAAAA,CAAK,IAAA,CAAKC,CAAY,CAAA,CACZ,KAAA,CAAM,OAAA,CAAQA,CAAY,CAAA,EACpCD,CAAAA,CAAK,IAAA,CAAK,GAAGC,CAAY,EAE3B,CACA,IAAA,IAAWF,CAAAA,IAAQC,CAAAA,CAClB,GAAA,CAAIH,CAAAA,CAAAC,CAAAA,CAAM,KAAA,GAAN,IAAA,EAAAD,CAAAA,CAAa,QAAA,CAASE,CAAAA,CAAAA,CAAO,CAChC,IAAMG,CAAAA,CAAcxE,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAS,iBAAA,CAC7BoE,CAAAA,CAAM,KAAA,CAAQA,CAAAA,CAAM,KAAA,CAAM,KAAA,CAAMC,CAAI,CAAA,CAAE,IAAA,CAAKG,CAAW,EACvD,CAEF,CAGA,GAAI,OAAOJ,CAAAA,CAAM,eAAA,EAAoB,SAAA,CACpC,MAAM,IAAI,KAAA,CAAM,2BAAA,CAA8B/E,CAAAA,CAAM,mBAAmB,CAAA,CAIxE,OAAO+E,CACR,CCxEO,SAASK,EAAAA,CACfzE,CAAAA,CACC,CAYD,OAVc0E,WAAAA,CACb,EAAC,CACD,CACC,KAAA,CAAO1E,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAS,UAAA,CAChB,MAAA,CAAQ,CACP,SAAA,CAAW2E,sBACZ,CACD,CACD,CAGD,CCjBO,SAASC,EAAAA,CAEf1D,CAAAA,CACA2D,CAAAA,CACC,CALF,IAAA7D,CAAAA,CAMC,IAAIgB,CAAAA,CAAS,KAAA,CACPV,CAAAA,CAAUuD,CAAAA,CAAM,OAAA,CAChB1C,CAAAA,CAAS0C,CAAAA,CAAM,MAAA,CACfC,CAAAA,CAAa3C,CAAAA,EAAU,IAAA,EAAQ,MAAA,GAAUA,CAAAA,CAE/C,OAAI,CAACb,CAAAA,CAAQ,MAAA,EAAU,CAACA,CAAAA,CAAQ,QAAA,EAAYA,CAAAA,CAAQ,QAAA,GAAA,CAIlDJ,CAAAA,GAAU,EAAA,EACT,CAACI,CAAAA,CAAQ,aAAA,GAAkB,OAAOJ,CAAAA,EAAU,WAAA,EAAeA,CAAAA,EAAS,IAAA,CAAA,EACpEI,CAAAA,CAAQ,SAAA,GAAcJ,CAAAA,EAAS,IAAA,EAAQ,CAACA,CAAAA,CAAAA,IAEzCc,CAAAA,CAAS,IAAA,CAAA,CAKN8C,CAAAA,EAAAA,CAAAA,CAAc9D,CAAAA,CAAAmB,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAQ,QAAA,GAAR,IAAA,CAAA,MAAA,CAAAnB,CAAAA,CAAkB,UAAA,GAAc,CAAA,GACjDgB,CAAAA,CAAS,IAAA,CAAA,CAAA,CAGJA,CACR,CC3BO,SAAS+C,EAAAA,CACflG,CAAAA,CACAmG,CAAAA,CACC,CALF,IAAAhE,CAAAA,CAAAW,CAAAA,CAAAC,CAAAA,CAAAC,CAAAA,CAAAC,CAAAA,CAAAC,CAAAA,CAOC,GAAM,CAAE,KAAA,CAAAqC,CAAM,CAAA,CAAIvF,CAAAA,CACZ,CAAE,YAAA,CAAAoG,CAAAA,CAAc,KAAA,CAAAC,CAAM,CAAA,CAAIF,CAAAA,CAG1B7C,CAAAA,CAAAA,CAASR,GAAAX,CAAAA,CAAAkE,CAAAA,CAAM,MAAA,GAAN,IAAA,CAAAlE,CAAAA,CAAgBoD,CAAAA,CAAM,QAAA,GAAtB,IAAA,CAAAzC,CAAAA,CAAkC,EAAC,CAGlD,OAAAQ,CAAAA,CAAO,GAAA,CAAA,CAAMP,CAAAA,CAAAO,CAAAA,CAAO,GAAA,GAAP,IAAA,CAAAP,CAAAA,CAAc,IAAA,CAC3BO,CAAAA,CAAO,EAAA,CAAA,CAAKN,CAAAA,CAAAM,CAAAA,CAAO,EAAA,GAAP,IAAA,CAAAN,CAAAA,CAAa,KAAA,CAGrBoD,CAAAA,CACH9C,CAAAA,CAAO,OAAA,CACN6C,CAAAA,CAAU,KAAA,GAAU7C,CAAAA,CAAO,GAAA,EAC3B6C,CAAAA,CAAU,KAAA,GAAU,KAAA,EACpBA,CAAAA,CAAU,KAAA,GAAU,IAAA,EACpBA,CAAAA,CAAU,KAAA,GAAU,IAAA,CAErB7C,CAAAA,CAAO,OAAA,CAAUA,CAAAA,CAAO,OAAA,EAAW,IAAA,CAAO,KAAA,CAAQ,CAACA,CAAAA,CAAO,OAAA,CAG3D+C,CAAAA,CAAM,MAAA,CAAS/C,CAAAA,CACRA,CAAAA,CAAO,OAAA,CAAA,CAAWL,CAAAA,CAAAK,CAAAA,CAAO,GAAA,GAAP,IAAA,CAAAL,EAAc,IAAA,CAAA,CAASC,CAAAA,CAAAI,CAAAA,CAAO,EAAA,GAAP,IAAA,CAAAJ,CAAAA,CAAa,KAC9D,CC9BO,SAASoD,EAAAA,CACfC,CAAAA,CACAvG,CAAAA,CAeC,CACD,IAAMwG,CAAAA,CAAS,IAAI,UAAA,CAGfC,CAAAA,CAAa,CAAA,CACbC,CAAAA,CAAY,CAAA,CACZC,CAAAA,CAAiB,CAAA,CAErBH,CAAAA,CAAO,UAAA,CAAcvF,CAAAA,EAAM,CACtBA,CAAAA,CAAE,gBAAA,GACLwF,CAAAA,CAAaxF,CAAAA,CAAE,MAAA,CACfyF,CAAAA,CAAYzF,CAAAA,CAAE,KAAA,CACd0F,CAAAA,CAAkB1F,CAAAA,CAAE,MAAA,CAASA,CAAAA,CAAE,KAAA,CAAS,GAAA,CAEpCjB,CAAAA,CAAM,UAAA,EACTA,CAAAA,CAAM,UAAA,CAAW,CAAE,MAAA,CAAQiB,CAAAA,CAAE,MAAA,CAAQ,KAAA,CAAOA,CAAAA,CAAE,KAAA,CAAO,UAAA,CAAY0F,CAAe,CAAC,CAAA,EAGpF,CAAA,CAEAH,CAAAA,CAAO,WAAA,CAAc,IAAM,CACtBxG,CAAAA,CAAM,WAAA,EACTA,CAAAA,CAAM,WAAA,GAER,CAAA,CAEAwG,CAAAA,CAAO,SAAA,CAAY,IAAM,CACxB,GAAIxG,CAAAA,CAAM,SAAA,CAAW,CACpB,IAAII,CAAAA,CAEAoG,CAAAA,CAAO,KAAA,CACVpG,CAAAA,CAAS,OAAA,CACCoG,CAAAA,CAAO,UAAA,GAAe,UAAA,CAAW,IAAA,EAAQ,CAACA,CAAAA,CAAO,MAAA,CAC3DpG,CAAAA,CAAS,OAAA,CAETA,CAAAA,CAAS,SAAA,CAGVJ,CAAAA,CAAM,SAAA,CAAU,CACf,MAAA,CAAAI,CAAAA,CACA,MAAA,CAAQoG,CAAAA,CAAO,MAAA,CACf,KAAA,CAAOA,CAAAA,CAAO,KAAA,CACd,QAAA,CAAU,CACT,MAAA,CAAQC,CAAAA,CACR,KAAA,CAAOC,CAAAA,CACP,UAAA,CAAYC,CACb,CACD,CAAC,EACF,CACD,CAAA,CAEAH,CAAAA,CAAO,aAAA,CAAcD,CAAI,EAC1B,CCjEO,SAASK,EAAAA,CACf5G,CAAAA,CACAmG,CAAAA,CACC,CAED,GAAM,CAAE,KAAA,CAAAlG,CAAM,CAAA,CAAID,CAAAA,CACZ,CAAE,EAAA,CAAA6G,CAAAA,CAAI,YAAA,CAAAT,CAAAA,CAAc,eAAA,CAAAU,CAAAA,CAAiB,KAAA,CAAAT,CAAM,CAAA,CAAIF,CAAAA,CAC/C7C,CAAAA,CAAS,CACd,KAAA,CAAO,CAAE,MAAA,CAAQ,CAAA,CAAG,MAAA,CAAQ,CAAA,CAAG,IAAA,CAAM,CAAE,CAAA,CACvC,QAAA,CAAU,MAAA,CACV,KAAA,CAAO,MACR,CAAA,CACIyD,CAAAA,CASJ,GAAIX,CAAAA,CAAAA,CAIH,GAHAW,CAAAA,CAASZ,CAAAA,CAAU,KAAA,CAGf,EAFkB,KAAA,CAAM,OAAA,CAAQY,CAAM,CAAA,EAAKA,CAAAA,CAAO,MAAA,CAAS,CAAA,EAAKA,CAAAA,CAAO,CAAC,CAAA,WAAa,IAAA,CAAA,EAEnEA,CAAAA,EAAU,IAAA,CAAM,CAErCA,CAAAA,CAAW,KAAA,CAAM,OAAA,CAAQA,CAAM,CAAA,CAAeA,CAAAA,CAAX,CAACA,CAAM,CAAA,CAC1C,IAAA,IAASjF,CAAAA,CAAI,CAAA,CAAGA,CAAAA,CAAIiF,CAAAA,CAAO,MAAA,CAAQjF,CAAAA,EAAAA,CAAK,CACvC,IAAMJ,CAAAA,CAAMqF,CAAAA,CAAOjF,CAAC,CAAA,CAChB,OAAOJ,CAAAA,EAAQ,QAAA,GAElBqF,CAAAA,CAAOjF,CAAC,CAAA,CAAI,CAAE,IAAA,CAAM,mBAAA,CAAqB,GAAA,CAAKJ,CAAI,CAAA,EAGpD,CAEA,OAAA4B,CAAAA,CAAO,QAAA,CAAWyD,CAAAA,CAClBV,CAAAA,CAAM,MAAA,CAAS/C,CAAAA,CACR,IACR,CAAA,CAAA,KAGAyD,CAAAA,CAASF,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAI,KAAA,CAGd,GAAIE,CAAAA,EAAU,IAAA,CACb,OAAAV,CAAAA,CAAM,MAAA,CAAS/C,CAAAA,CACR,IAAA,CAIR,IAAMH,CAAAA,CAAS4D,CAAAA,CA4BfzD,CAAAA,CAAO,KAAA,CAAQ,CACd,MAAA,CAAQH,CAAAA,CAAO,MAAA,CACf,MAAA,CAAQ,CAAA,CACR,IAAA,CAAM,CACP,CAAA,CACAG,CAAAA,CAAO,MAAQ,EAAC,CAChB,IAAA,IAAWiD,CAAAA,IAAQpD,CAAAA,CAAQ,CAC1B,GAAI,EAAEoD,CAAAA,YAAgB,IAAA,CAAA,CAAO,CAC5B,OAAA,CAAQ,IAAA,CAAK,oCAAA,CAAsCA,CAAAA,CAAM,aAAa,CAAA,CACtEjD,CAAAA,CAAO,KAAA,CAAM,MAAA,EAAA,CACb,QACD,CACA,IAAMI,CAAAA,CACLJ,CAAAA,CAAO,KAAA,CAAM,IAAA,CAAK,CACjB,IAAA,CAAAiD,CAAAA,CACA,IAAA,CAAMA,CAAAA,CAAK,IAAA,CACX,KAAA,CAAO,OAAA,CACP,OAAA,CAAS,IAAA,CACT,QAAA,CAAU,CACT,WAAA,CAAa,CAAA,CACb,UAAA,CAAYA,CAAAA,CAAK,IAAA,CACjB,UAAA,CAAY,CACb,CACD,CAAC,CAAA,CAAI,CAAA,CAGND,EAAAA,CAAmBC,CAAAA,CAAM,CACxB,UAAA,CAAWS,CAAAA,CAAU,CAEpB,IAAMT,CAAAA,CAAOjD,CAAAA,CAAO,KAAA,CAAMI,CAAG,CAAA,CACvB/C,CAAAA,CAAOG,mBAAAA,CAAA,EAAA,CAAKb,CAAAA,CAAM,GAAA,EAAI,CAAA,CAC5BsG,CAAAA,CAAK,QAAA,CAAS,WAAA,CAAcS,CAAAA,CAAS,MAAA,CACrCT,CAAAA,CAAK,QAAA,CAAS,UAAA,CAAaS,CAAAA,CAAS,UAAA,CAEhCrG,CAAAA,CAAK,MAAA,EAAU,IAAA,GAClBA,CAAAA,CAAK,MAAA,CAAS2C,CAAAA,CAAAA,CAEX3C,CAAAA,CAAK,MAAA,CAAO,KAAA,EAAS,IAAA,GACxBA,CAAAA,CAAK,MAAA,CAAO,KAAA,CAAQ,CAAC4F,CAAI,CAAA,CAAA,CAE1B5F,CAAAA,CAAK,MAAA,CAAO,KAAA,CAAM+C,CAAG,CAAA,CAAI6C,CAAAA,CACzB5F,CAAAA,CAAK,UAAA,CAAW,MAAA,CAAS,KAAA,CACzBA,CAAAA,CAAK,KAAA,CAAM,GAAA,CAAMD,mBAAAA,CAAM,GAAA,CAAI,aAAA,CAC3BC,CAAAA,CAAK,KAAA,CAAM,MAAA,CAASD,mBAAAA,CAAM,MAAA,CAAO,QAAA,CAEjC,OAAA,CAAQ,GAAA,CAAI,qBAAqB,CAAA,CACjCT,CAAAA,CAAM,GAAA,CAAIU,CAAI,EACf,CAAA,CACA,SAAA,CAAW,CAAC,CAAE,MAAA,CAAAP,CAAAA,CAAQ,MAAA,CAAA6G,CAAAA,CAAQ,KAAA,CAAAC,CAAAA,CAAO,QAAA,CAAAF,CAAS,CAAA,GAAM,CAEnD,IAAMT,CAAAA,CAAOjD,CAAAA,CAAO,KAAA,CAAMI,CAAG,CAAA,CACvB/C,CAAAA,CAAOG,mBAAAA,CAAA,EAAA,CAAKb,CAAAA,CAAM,GAAA,EAAI,CAAA,CAC5BsG,CAAAA,CAAK,QAAA,CAAS,WAAA,CAAcS,CAAAA,CAAS,MAAA,CACrCT,CAAAA,CAAK,QAAA,CAAS,UAAA,CAAaS,CAAAA,CAAS,UAAA,CAEhC5G,CAAAA,GAAW,SAAA,EACdmG,CAAAA,CAAK,MAAA,CAASU,CAAAA,CACdV,CAAAA,CAAK,GAAA,CAAM,OAAOU,CAAAA,EAAW,QAAA,CAAWA,CAAAA,CAAUA,CAAAA,CAAe,CAAC,CAAA,CAClEV,CAAAA,CAAK,KAAA,CAAQ,SAAA,CACb5F,CAAAA,CAAK,MAAA,CAAO,KAAA,CAAM,IAAA,EAAA,EACRP,CAAAA,GAAW,OAAA,EACrBmG,CAAAA,CAAK,KAAA,CAAQW,CAAAA,CACbX,CAAAA,CAAK,KAAA,CAAQ,MAAA,CACb5F,EAAK,MAAA,CAAO,KAAA,CAAM,MAAA,EAAA,GAElB4F,CAAAA,CAAK,KAAA,CAAQ,OAAA,CACb5F,CAAAA,CAAK,MAAA,CAAO,KAAA,CAAM,MAAA,EAAA,CAAA,CAIfA,CAAAA,CAAK,MAAA,EAAU,IAAA,GAClBA,CAAAA,CAAK,MAAA,CAAS2C,CAAAA,CAAAA,CAEX3C,CAAAA,CAAK,MAAA,CAAO,KAAA,EAAS,IAAA,GACxBA,CAAAA,CAAK,MAAA,CAAO,KAAA,CAAQ,CAAC4F,CAAI,CAAA,CAAA,CAE1B5F,CAAAA,CAAK,MAAA,CAAO,KAAA,CAAM+C,CAAG,CAAA,CAAI6C,CAAAA,CACzB5F,CAAAA,CAAK,UAAA,CAAW,MAAA,CAAS,KAAA,CACzBA,CAAAA,CAAK,KAAA,CAAM,GAAA,CAAMD,mBAAAA,CAAM,GAAA,CAAI,SAAA,CAC3BC,CAAAA,CAAK,KAAA,CAAM,MAAA,CAASD,mBAAAA,CAAM,MAAA,CAAO,QAAA,CACjCT,CAAAA,CAAM,GAAA,CAAIU,CAAI,EACf,CACD,CAAC,EACF,CAEA,OAAO0F,CAAAA,CAAM,OAAA,CAAQ,QAAA,CAAWlD,CAAAA,CAASA,CAAAA,EAAA,YAAAA,CAAAA,CAAS,CAAA,CACnD,CCxKO,SAASgE,EAAAA,CACfC,CAAAA,CACAjB,CAAAA,CACC,CACD,GAAM,CAAE,EAAA,CAAAU,CAAG,CAAA,CAAIV,CAAAA,CACT,CAAE,YAAA,CAAAC,CAAAA,CAAc,eAAA,CAAAU,CAAgB,CAAA,CAAIX,CAAAA,CACpC9D,CAAAA,CAAS+D,CAAAA,CAA2BD,CAAAA,CAAU,KAAA,CAAtBU,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAI,KAAA,CAElC,GAAI,CAACC,CAAAA,CACJ,OAAOzE,CAAAA,CAIR,IAAIc,CAAAA,CAAS,IAAA,CACb,GAAI,CACHA,CAAAA,CAAS,MAAA,CAAOd,CAAK,CAAA,CACjB,MAAA,CAAO,KAAA,CAAMc,CAAM,CAAA,GACtBA,CAAAA,CAASd,CAAAA,EAEX,CAAA,MAASpB,CAAAA,CAAG,CACXkC,CAAAA,CAASd,EACV,CACA,OAAOc,CACR,CCtBA,IAAMkE,EAAAA,CAAS,CAAC,GAAA,CAAK,IAAA,CAAM,OAAO,CAAA,CAClC,SAASC,EAAAA,CACRC,CAAAA,CACAC,CAAAA,CACAC,CAAAA,CACC,CARF,IAAAtF,CAAAA,CAAAW,CAAAA,CASC,IAAIT,CAAAA,CAAQkF,CAAAA,CACNG,CAAAA,CACLD,CAAAA,EAAkB,IAAA,EAAQ,OAAOA,CAAAA,EAAmB,QAAA,CAAWA,CAAAA,CAAiB,EAAA,CACjF,GAAIF,CAAAA,EAAU,IAAA,CACb,OAAO,IAAA,CACD,GAAI,OAAOA,CAAAA,EAAW,QAAA,CAAU,CACtC,GAAIA,CAAAA,GAAW,EAAA,CACd,OAAO,IAAA,CAERlF,CAAAA,CAAQ,MAAA,CAAOkF,CAAM,EACtB,CACA,IAAMpE,CAAAA,CAAS,CACd,MAAA,CAAQ,IAAA,CACR,KAAA,CAAO,IAAA,CACP,cAAA,CAAgB,IAAA,CAChB,MAAA,CAAQ,IAAA,CAER,QAAA,CAAU,CAAC,GAAGqE,CAAQ,CAAA,CAAE,IAAA,CAAK,CAACG,CAAAA,CAAGC,CAAAA,GAAMA,CAAAA,CAAE,OAASD,CAAAA,CAAE,MAAM,CAAA,CAE1D,OAAA,CAAS,IACV,CAAA,CAEAtF,CAAAA,CAAQA,CAAAA,CAAM,IAAA,EAAK,CAInB,IAAA,IAAWuB,CAAAA,IAAUT,CAAAA,CAAO,QAAA,CAE3B,GAAId,CAAAA,CAAM,UAAA,CAAWuB,CAAM,CAAA,EAAKvB,CAAAA,GAAUuB,CAAAA,CAAQ,CACjDT,CAAAA,CAAO,MAAA,CAASS,CAAAA,CAChB,KACD,CAAA,KAAA,GAAWT,CAAAA,CAAO,OAAA,EAAW,IAAA,EAAQS,CAAAA,CAAO,UAAA,CAAWvB,CAAK,CAAA,CAAG,CAC9D,GAAIA,CAAAA,GAAU,GAAA,CACb,SAGDc,CAAAA,CAAO,OAAA,CAAUd,CAAAA,GAAU,EAAA,CAAK,IAAA,CAAOA,CAAAA,CACvC,KACD,CAIGc,CAAAA,CAAO,MAAA,EAAU,IAAA,EAAQA,CAAAA,CAAO,OAAA,EAAW,IAAA,GAC9CA,CAAAA,CAAO,MAAA,CAASA,CAAAA,CAAO,OAAA,CACvBA,CAAAA,CAAO,OAAA,CAAU,IAAA,CAAA,CAIlB,IAAM0E,CAAAA,CAAO1E,CAAAA,CAAO,MAAA,CAASd,CAAAA,CAAM,KAAA,CAAMc,CAAAA,CAAO,MAAA,CAAO,MAAM,CAAA,CAAId,CAAAA,CAC3DyF,CAAAA,CAAcD,CAAAA,CAAK,OAAA,CAAQ,KAAA,CAAO,EAAE,CAAA,CACpCE,CAAAA,CACLL,CAAAA,EAAiB,IAAA,CAAO,CAAA,KAAA,EAAQA,CAAAA,CAAc,OAAA,CAAQ,qBAAA,CAAuB,MAAM,CAAC,CAAA,CAAA,CAAA,CAAM,KAAA,CACrFM,CAAAA,CAAeH,CAAAA,CAAK,OAAA,CAAQ,IAAI,MAAA,CAAOE,CAAAA,CAAiB,GAAG,CAAA,CAAG,EAAE,CAAA,CAChEE,CAAAA,CAAaJ,CAAAA,CAAK,OAAA,CACvB,IAAI,MAAA,CACH,CAAA,IAAA,EAAOH,CAAAA,EAAiB,IAAA,CAAOA,CAAAA,CAAc,OAAA,CAAQ,qBAAA,CAAuB,MAAM,CAAA,CAAI,EAAE,CAAA,CAAA,CAAA,CACxF,GACD,CAAA,CACA,EACD,CAAA,CAcA,GAXAvE,CAAAA,CAAO,KAAA,CAAQ2E,CAAAA,EAAeA,CAAAA,CAAY,MAAA,CAAS,CAAA,CAAIA,CAAAA,CAAc,IAAA,CACrE3E,EAAO,cAAA,CAAiB6E,CAAAA,EAAgBA,CAAAA,CAAa,MAAA,CAAS,CAAA,CAAIA,CAAAA,CAAe,IAAA,CACjF7E,CAAAA,CAAO,MAAA,CAAS8E,CAAAA,EAAcA,CAAAA,CAAW,MAAA,CAAS,CAAA,CAAIA,CAAAA,CAAa,IAAA,CAE/D9E,CAAAA,CAAO,MAAA,EAAU,IAAA,GAAA,CAAQhB,CAAAA,CAAAgB,CAAAA,CAAO,KAAA,GAAP,IAAA,EAAAhB,CAAAA,CAAc,UAAA,CAAW,IAAA,CAAA,CAAA,GACrDgB,CAAAA,CAAO,MAAA,CAAS,IAAA,CAChBA,CAAAA,CAAO,KAAA,CAAQA,CAAAA,CAAO,KAAA,CAAM,OAAA,CAAQ,IAAA,CAAM,EAAE,CAAA,CAC5CA,CAAAA,CAAO,cAAA,CAAA,CAAiBL,CAAAA,CAAAK,CAAAA,CAAO,cAAA,GAAP,IAAA,CAAA,MAAA,CAAAL,CAAAA,CAAuB,OAAA,CAAQ,IAAA,CAAM,EAAA,CAAA,CAC7DK,CAAAA,CAAO,OAAA,CAAU,IAAA,CAAA,CAGdA,CAAAA,CAAO,MAAA,EAAU,IAAA,CAAA,CACpB,IAAA,IAAWS,CAAAA,IAAUT,CAAAA,CAAO,QAAA,CAC3B,GAAIA,CAAAA,CAAO,MAAA,EAAUS,CAAAA,CAAO,QAAA,CAAST,CAAAA,CAAO,MAAM,CAAA,CAAG,CACpDA,CAAAA,CAAO,OAAA,CAAUS,CAAAA,CACjB,KACD,CAAA,CAUF,OAAOT,CACR,CAEO,SAAS+E,EAAAA,CACflI,CAAAA,CACAmG,CAAAA,CACC,CAvGF,IAAAhE,CAAAA,CAAAW,CAAAA,CAAAC,CAAAA,CAAAC,CAAAA,CAAAC,CAAAA,CAAAC,CAAAA,CAAAuB,CAAAA,CAAAC,CAAAA,CAAAC,CAAAA,CAAAC,CAAAA,CAAAG,CAAAA,CAwGC,GAAM,CAAE,KAAA,CAAAQ,CAAM,CAAA,CAAIvF,CAAAA,CACZ,CAAE,EAAA,CAAA6G,CAAAA,CAAI,YAAA,CAAAT,CAAAA,CAAc,KAAA,CAAAC,CAAM,CAAA,CAAIF,CAAAA,CAC9BY,CAAAA,CAAUX,CAAAA,CAA2BD,CAAAA,CAAU,KAAA,CAAtBU,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAI,KAAA,CAC7BvD,CAAAA,CAAAA,CAAUR,CAAAA,CAAAA,CAAAX,CAAAA,CAAAkE,CAAAA,CAAM,MAAA,GAAN,IAAA,CAAAlE,CAAAA,CAAgBoD,CAAAA,CAAM,GAAA,GAAtB,IAAA,CAAAzC,CAAAA,CAA6B,EAAC,CAI9CQ,EAAO,aAAA,CAAA,CAAiBP,CAAAA,CAAAO,CAAAA,CAAO,aAAA,GAAP,IAAA,CAAAP,CAAAA,CAAwB,EAAC,CAIjDO,CAAAA,CAAO,aAAA,CAAc,mBAAA,CAAA,CAAsBN,CAAAA,CAAAM,CAAAA,CAAO,aAAA,CAAc,mBAAA,GAArB,IAAA,CAAAN,CAAAA,CAA4C,KAAA,CACvFM,CAAAA,CAAO,aAAA,CAAc,WAAA,CAAA,CAAcL,CAAAA,CAAAK,CAAAA,CAAO,aAAA,CAAc,WAAA,GAArB,IAAA,CAAAL,CAAAA,CAAoC,QAAA,CAGvEoD,CAAAA,CAAM,MAAA,CAAS/C,CAAAA,CACf,IAAMkE,CAAAA,CAAAA,CAAqBtE,CAAAA,CAAAI,CAAAA,CAAO,aAAA,GAAP,IAAA,EAAAJ,CAAAA,CAAsB,QAAA,CAC9C,OAAOI,CAAAA,CAAO,aAAA,CAAc,QAAA,EAAa,QAAA,CACxC,CAACA,CAAAA,CAAO,aAAA,CAAc,QAAQ,CAAA,CAC9BA,CAAAA,CAAO,aAAA,CAAc,QAAA,CACtB+D,EAAAA,CACCc,CAAAA,CAAYpB,CAAAA,CAEhB,GAAIzD,CAAAA,CAAO,aAAA,CAAc,MAAA,CAAQ,CAChC,IAAMM,CAAAA,CAASN,EAAO,aAAA,CAAc,MAAA,CAC9B8E,CAAAA,CAAU9E,CAAAA,CAAO,aAAA,CAAc,OAAA,CACjC8C,CAAAA,EACH9C,CAAAA,CAAO,aAAA,CAAc,MAAA,CAAS,IAAA,CAC9BA,CAAAA,CAAO,aAAA,CAAc,OAAA,CAAU,IAAA,EAG3BA,CAAAA,CAAO,aAAA,CAAc,WAAA,GAAgB,WAAA,CACxC6E,CAAAA,CACCC,CAAAA,EAAW,IAAA,CAAOD,CAAAA,CAAY,CAAA,EAAGvE,CAAM,CAAA,EAAGwE,CAAAA,CAAQ,eAAe,CAAA,EAAGD,CAAAA,EAAA,IAAA,CAAAA,CAAAA,CAAa,EAAE,CAAA,CAAA,CAC1E7E,CAAAA,CAAO,aAAA,CAAc,WAAA,GAAgB,aAAA,GAE/C6E,CAAAA,CACCC,CAAAA,EAAW,IAAA,EAAQD,CAAAA,EAAA,IAAA,EAAAA,CAAAA,CAAW,UAAA,CAAWvE,CAAAA,CAAAA,CACtCuE,CAAAA,CACA,CAAA,EAAGvE,CAAM,CAAA,EAAGwE,CAAAA,CAAQ,eAAe,CAAA,EAAGD,CAAAA,EAAA,IAAA,CAAAA,CAAAA,CAAa,EAAE,CAAA,CAAA,EAG5D,CAEA,IAAME,CAAAA,CAASf,EAAAA,CAAYa,EAAWX,CAAAA,CAAUlE,CAAAA,CAAO,aAAa,CAAA,CAYpE,GAVAA,CAAAA,CAAO,KAAA,CAAQ,CACd,MAAA,CAAQ+E,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAQ,KAAA,CAChB,SAAA,CAAWA,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAQ,cAAA,CACnB,YAAA,CAAA,CAAc5D,CAAAA,CAAA4D,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAQ,KAAA,GAAR,IAAA,EAAA5D,CAAAA,CAAe,UAAA,CAAW,GAAA,CAAA,CAAO4D,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAQ,KAAA,CAAM,SAAA,CAAU,CAAA,CAAA,CAAKA,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAQ,KAAA,CACpF,eAAA,CAAA,CAAiB3D,CAAAA,CAAA2D,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAQ,cAAA,GAAR,IAAA,EAAA3D,CAAAA,CAAwB,UAAA,CAAW,GAAA,CAAA,CACjD2D,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAQ,cAAA,CAAe,SAAA,CAAU,CAAA,CAAA,CACjCA,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAQ,cACZ,CAAA,CAGIA,CAAAA,EAAU,IAAA,CACb,OAAA/E,CAAAA,CAAO,aAAA,CAAc,MAAA,CAAS,IAAA,CAC9BA,CAAAA,CAAO,aAAA,CAAc,OAAA,CAAU,IAAA,CAC/B+C,CAAAA,CAAM,MAAA,CAAS/C,CAAAA,CACRyD,CAAAA,EAAU,IAAA,CAAO,IAAA,CAAOV,CAAAA,CAAM,KAAA,CAGtC,GAAIgC,CAAAA,CAAO,MAAA,EAAU,IAAA,EAChBA,CAAAA,CAAO,OAAA,CACV,OAAOtB,CAAAA,CAaT,GARIsB,CAAAA,CAAO,MAAA,CACV/E,CAAAA,CAAO,aAAA,CAAc,MAAA,CAAS+E,CAAAA,CAAO,MAAA,EAErC/E,CAAAA,CAAO,aAAA,CAAc,MAAA,CAAS,IAAA,CAC9BA,CAAAA,CAAO,aAAA,CAAc,OAAA,CAAU,IAAA,CAAA,CAI5BA,CAAAA,CAAO,aAAA,CAAc,OAAA,EAAW,IAAA,EAAQA,CAAAA,CAAO,aAAA,CAAc,MAAA,EAAU,IAAA,CAAA,CAC1E,GAAI+E,CAAAA,CAAO,KAAA,EAASA,CAAAA,CAAO,KAAA,CAAM,MAAA,CAAS,CAAA,CAAG,CAC5C/E,CAAAA,CAAO,aAAA,CAAc,OAAA,CAAU,IAAA,CAC/B,IAAMO,CAAAA,CAAQ,CAAA,CAAA,EAAIwE,CAAAA,CAAO,KAAK,CAAA,CAAA,CAC9B,IAAA,IAASvG,CAAAA,CAAI,CAAA,CAAGA,CAAAA,CAAIwG,mBAAAA,CAAK,SAAA,CAAU,MAAA,CAAQxG,CAAAA,EAAAA,CAAK,CAC/C,IAAMsG,CAAAA,CAAUE,mBAAAA,CAAK,SAAA,CAAUxG,CAAC,CAAA,CAChC,GAAI+B,CAAAA,CAAM,UAAA,CAAWuE,CAAAA,CAAQ,SAAS,CAAA,CAAG,CACxC9E,CAAAA,CAAO,aAAA,CAAc,OAAA,CAAU8E,CAAAA,CAI/B9E,CAAAA,CAAO,aAAA,CAAc,OAAA,CAAQ,KAAA,CAAQxB,CAAAA,CACrCwB,CAAAA,CAAO,aAAA,CAAc,OAAA,CAAQ,eAAA,CAAkB8E,CAAAA,CAAQ,SAAA,CAAU,OAAA,CAAQ,GAAA,CAAK,EAAE,CAAA,CAChF,KACD,CACD,CACD,CAAA,CAAA,KAAA,CAEKxD,CAAAA,CAAAyD,CAAAA,CAAO,KAAA,GAAP,IAAA,EAAAzD,CAAAA,CAAc,UAAA,CAAA,CAAWD,CAAAA,CAAArB,CAAAA,CAAO,aAAA,CAAc,OAAA,GAArB,IAAA,CAAA,MAAA,CAAAqB,CAAAA,CAA8B,eAAA,CAAA,GAC3DrB,CAAAA,CAAO,aAAA,CAAc,OAAA,CAAU,IAAA,CAAA,CAKjC,GAAIA,CAAAA,CAAO,aAAA,CAAc,OAAA,CAAS,CACjC,IAAM8E,CAAAA,CAAU9E,CAAAA,CAAO,aAAA,CAAc,OAAA,CAC/BO,CAAAA,CAAQwE,CAAAA,CAAO,KAAA,EAAS,IAAA,CAAO,IAAA,CAAOA,CAAAA,CAAO,KAAA,CAC7CE,CAAAA,CAAYF,CAAAA,CAAO,cAAA,EAAkB,IAAA,CAAO,IAAA,CAAOA,CAAAA,CAAO,cAAA,CAC5DxE,CAAAA,EAAS,IAAA,GACZP,CAAAA,CAAO,KAAA,CAAM,YAAA,CAAeO,CAAAA,CAAM,OAAA,CAAQuE,CAAAA,CAAQ,eAAA,CAAiB,EAAE,CAAA,CACrE9E,CAAAA,CAAO,KAAA,CAAM,kBAAA,CAAqBA,CAAAA,CAAO,KAAA,CAAM,YAAA,CAAa,UAAA,CAAW,GAAG,CAAA,CACvEA,CAAAA,CAAO,KAAA,CAAM,YAAA,CAAa,SAAA,CAAU,CAAC,CAAA,CACrCA,CAAAA,CAAO,KAAA,CAAM,YAAA,CAChBA,CAAAA,CAAO,KAAA,CAAM,YAAA,CAAe,CAAA,EAAG8E,CAAAA,CAAQ,eAAe,CAAA,EAAG9E,CAAAA,CAAO,KAAA,CAAM,kBAAkB,IAErFiF,CAAAA,GACHjF,CAAAA,CAAO,KAAA,CAAM,SAAA,CAAYiF,CAAAA,CACzBjF,CAAAA,CAAO,KAAA,CAAM,eAAA,CAAkBiF,CAAAA,CAAU,OAAA,CAAQH,CAAAA,CAAQ,eAAA,CAAiB,EAAE,CAAA,CAC5E9E,CAAAA,CAAO,KAAA,CAAM,qBAAA,CAAwBA,CAAAA,CAAO,KAAA,CAAM,eAAA,CAAgB,UAAA,CAAW,GAAG,CAAA,CAC7EA,CAAAA,CAAO,KAAA,CAAM,eAAA,CAAgB,SAAA,CAAU,CAAC,CAAA,CACxCA,CAAAA,CAAO,KAAA,CAAM,eAAA,CAChBA,CAAAA,CAAO,KAAA,CAAM,eAAA,CAAkB,CAAA,EAAG8E,CAAAA,CAAQ,eAAe,CAAA,EAAG9E,CAAAA,CAAO,KAAA,CAAM,qBAAqB,CAAA,CAAA,EAEhG,CAUA,IAAIH,CAAAA,CAASkF,CAAAA,CAAO,cAAA,CACdzE,CAAAA,CAASN,CAAAA,CAAO,aAAA,CAAc,MAAA,CAC9B8E,CAAAA,CAAU9E,CAAAA,CAAO,aAAA,CAAc,OAAA,CAC/BO,CAAAA,CAAAA,CAAQkB,CAAAA,CAAAzB,CAAAA,CAAO,KAAA,GAAP,IAAA,CAAA,MAAA,CAAAyB,CAAAA,CAAc,eAAA,CAC5B,OAAInB,CAAAA,GACHT,CAAAA,CAAS,CAAA,EAAGG,CAAAA,CAAO,aAAA,CAAc,mBAAA,CAAsB,GAAA,CAAOM,CAAAA,EAAA,IAAA,CAAAA,CAAAA,CAAU,EAAG,CAAA,EAAGT,CAAAA,EAAA,IAAA,CAAAA,CAAAA,CAAU,EAAE,CAAA,CAAA,CACtFG,CAAAA,CAAO,aAAA,CAAc,WAAA,GAAgB,WAAA,CACxCH,CAAAA,CAASiF,CAAAA,EAAW,IAAA,CAAOjF,CAAAA,CAASU,CAAAA,CAC1BP,CAAAA,CAAO,aAAA,CAAc,WAAA,GAAgB,aAAA,GAC/CH,CAAAA,CACCiF,CAAAA,EAAW,IAAA,CACRjF,CAAAA,CACAU,CAAAA,EAAS,IAAA,EAAQA,CAAAA,CAAM,MAAA,EAAU,CAAA,CAChC,CAAA,EAAGD,CAAM,CAAA,EAAGwE,CAAAA,CAAQ,eAAe,CAAA,CAAA,CACnCvE,CAAAA,CAAAA,CAAAA,CAKPwC,CAAAA,CAAM,MAAA,CAAS/C,CAAAA,CACRH,CACR,CC3OO,SAASqF,EAAAA,CACfnG,CAAAA,CACAoG,CAAAA,CACAC,CAAAA,CAAoC,CAAC,GAAA,CAAK,GAAA,CAAK,GAAG,CAAA,CAClDC,CAAAA,CAAoC,CAAC,GAAG,CAAA,CACxCC,CAAAA,CAAuC,IAAA,CAChB,CACvB,IAAMzF,CAAAA,CAAS0F,EAAAA,EAAkB,CAEjC,GAAI,EAACxG,CAAAA,EAAA,IAAA,EAAAA,CAAAA,CAAO,IAAA,EAAA,CAAA,CACX,OAAOc,CAAAA,CAGR,IAAM2F,CAAAA,CAAc,MAAA,CAAOzG,CAAK,CAAA,CAAE,IAAA,EAAK,CAEvC,GAAI,CACH,IAAM0G,CAAAA,CAAeC,EAAAA,CAAoBP,CAAM,CAAA,CAG/CQ,EAAAA,CAAoB9F,CAAAA,CAAO,IAAA,CAAM2F,CAAAA,CAAaC,CAAY,CAAA,CAG1D5F,CAAAA,CAAO,IAAA,CAAO+F,EAAAA,CAAgBJ,CAAAA,CAAaF,CAAAA,CAAuBD,CAAc,CAAA,CAGhFQ,EAAAA,CAAchG,CAAAA,CAAQsF,CAAAA,CAAQE,CAAc,CAAA,CAC5CS,EAAAA,CAAgBjG,CAAAA,CAAQsF,CAAM,CAAA,CAC9BtF,CAAAA,CAAO,MAAA,CAASkG,EAAAA,CAAqBP,CAAAA,CAAaJ,CAAAA,CAAgBC,CAAc,EACjF,CAAA,MAASzB,CAAAA,CAAO,CACf/D,CAAAA,CAAO,KAAA,CAAQ+D,CAAAA,YAAiB,KAAA,CAAQA,CAAAA,CAAM,OAAA,CAAU,wBACzD,CAEA,OAAO/D,CACR,CAEA,SAAS8F,EAAAA,CAAoBK,CAAAA,CAAsBC,CAAAA,CAAeR,CAAAA,CAA8B,CAC/F,IAAMS,CAAAA,CAAUC,EAAAA,CAAkBF,CAAK,CAAA,CAEvC,IAAA,IAASzH,CAAAA,CAAI,CAAA,CAAGA,CAAAA,CAAI,IAAA,CAAK,GAAA,CAAI0H,CAAAA,CAAQ,MAAA,CAAQT,CAAAA,CAAa,MAAM,CAAA,CAAGjH,CAAAA,EAAAA,CAAK,CACvE,IAAM4H,CAAAA,CAASF,CAAAA,CAAQ1H,CAAC,CAAA,CAClB6H,CAAAA,CAAQZ,CAAAA,CAAajH,CAAC,CAAA,CAAE,WAAA,EAAY,CAEtC8H,EAAAA,CAAYD,CAAK,CAAA,EAAKE,EAAAA,CAAkBH,CAAAA,CAAQC,CAAK,CAAA,EACxDG,EAAAA,CAAoBR,CAAAA,CAAMK,CAAAA,CAAOD,CAAM,EAEzC,CACD,CAEA,SAASR,EAAAA,CACRK,EACAX,CAAAA,CACAD,CAAAA,CACuB,CACvB,IAAMoB,CAAAA,CAA8B,EAAC,CAErC,GAAInB,CAAAA,EAAyBW,CAAAA,CAAM,QAAA,CAASX,CAAqB,CAAA,CAAG,CAEnE,IAAMoB,CAAAA,CAAQT,CAAAA,CAAM,KAAA,CAAMX,CAAqB,CAAA,CAE/C,IAAA,IAAWqB,CAAAA,IAAQD,CAAAA,CAAO,CACzB,IAAME,CAAAA,CAAOC,EAAAA,CAAqBF,CAAAA,CAAMtB,CAAc,CAAA,CAClDuB,CAAAA,CAAK,IAAA,GAAS,IAAA,EACjBH,CAAAA,CAAM,IAAA,CAAKG,CAAI,EAEjB,CACD,CAAA,KAAO,CAEN,IAAMA,CAAAA,CAAOC,EAAAA,CAAqBZ,CAAAA,CAAOZ,CAAc,CAAA,CACnDuB,CAAAA,CAAK,IAAA,GAAS,IAAA,EACjBH,CAAAA,CAAM,IAAA,CAAKG,CAAI,EAEjB,CAEA,OAAOH,CACR,CAEA,SAASI,EAAAA,CACRC,CAAAA,CACAzB,CAAAA,CACqB,CACrB,IAAMuB,CAAAA,CAAOG,EAAAA,EAAgB,CAIvBC,CAAAA,CAAAA,CADa,KAAA,CAAM,OAAA,CAAQ3B,CAAc,CAAA,CAAIA,CAAAA,CAAiB,CAACA,CAAc,CAAA,EAC/C,GAAA,CAAK4B,CAAAA,EAAQC,EAAAA,CAAYD,CAAG,CAAC,CAAA,CAAE,IAAA,CAAK,GAAG,CAAA,CAGrEE,CAAAA,CAAc,IAAI,MAAA,CACvB,CAAA,WAAA,EAAcH,CAAgB,CAAA,eAAA,EAAkBA,CAAgB,CAAA,aAAA,CACjE,CAAA,CACMnG,CAAAA,CAAQiG,CAAAA,CAAQ,KAAA,CAAMK,CAAW,CAAA,CAEvC,GAAItG,CAAAA,CAAO,CACV,IAAMuG,CAAAA,CAAOvG,CAAAA,CAAM,CAAC,CAAA,CACdwG,CAAAA,CAASxG,CAAAA,CAAM,CAAC,CAAA,CAChByG,CAAAA,CAASzG,CAAAA,CAAM,CAAC,CAAA,EAAK,IAAA,CAEvB0G,EAAAA,CAAYH,CAAI,CAAA,EAAKI,EAAAA,CAAcH,CAAM,CAAA,GAC5CT,CAAAA,CAAK,IAAA,CAAOQ,CAAAA,CAAK,QAAA,CAAS,CAAA,CAAG,GAAG,CAAA,CAChCR,CAAAA,CAAK,UAAA,CAAa,QAAA,CAASQ,CAAI,CAAA,CAC/BR,CAAAA,CAAK,MAAA,CAASS,CAAAA,CAAO,QAAA,CAAS,CAAA,CAAG,GAAG,CAAA,CACpCT,CAAAA,CAAK,YAAA,CAAe,QAAA,CAASS,CAAM,CAAA,CAC/BC,CAAAA,EAAUG,EAAAA,CAAcH,CAAM,CAAA,GACjCV,CAAAA,CAAK,MAAA,CAASU,CAAAA,CAAO,QAAA,CAAS,CAAA,CAAG,GAAG,CAAA,CACpCV,CAAAA,CAAK,YAAA,CAAe,QAAA,CAASU,CAAM,CAAA,CAAA,EAGtC,CAEA,OAAAI,EAAAA,CAAad,CAAAA,CAAME,CAAO,CAAA,CACnBF,CACR,CAEA,SAASM,EAAAA,CAAYS,CAAAA,CAAwB,CAC5C,OAAOA,CAAAA,CAAO,OAAA,CAAQ,qBAAA,CAAuB,MAAM,CACpD,CAEA,SAASJ,EAAAA,CAAYH,CAAAA,CAAuB,CAC3C,IAAMQ,CAAAA,CAAU,QAAA,CAASR,CAAI,CAAA,CAC7B,OAAO,CAAC,MAAA,CAAO,KAAA,CAAMQ,CAAO,CAAA,EAAKA,CAAAA,EAAW,CAAA,EAAKA,CAAAA,EAAW,EAC7D,CAEA,SAASJ,EAAAA,CAAcH,CAAAA,CAAyB,CAC/C,IAAMQ,CAAAA,CAAY,QAAA,CAASR,CAAM,CAAA,CACjC,OAAO,CAAC,MAAA,CAAO,KAAA,CAAMQ,CAAS,CAAA,EAAKA,CAAAA,EAAa,CAAA,EAAKA,CAAAA,EAAa,EACnE,CAEA,SAASJ,EAAAA,CAAcH,CAAAA,CAAyB,CAC/C,IAAMQ,CAAAA,CAAY,QAAA,CAASR,CAAM,CAAA,CACjC,OAAO,CAAC,MAAA,CAAO,KAAA,CAAMQ,CAAS,CAAA,EAAKA,CAAAA,EAAa,CAAA,EAAKA,CAAAA,EAAa,EACnE,CAEA,SAASvB,EAAAA,CAAkBH,CAAAA,CAAgBC,CAAAA,CAAwB,CAClE,IAAM0B,CAAAA,CAAS3B,CAAAA,CAAO,MAAA,CAEtB,OAAQC,CAAAA,EACP,KAAK,OACJ,OAAO0B,CAAAA,GAAW,CAAA,CACnB,KAAK,IAAA,CACJ,OAAOA,CAAAA,GAAW,CAAA,CACnB,KAAK,IAAA,CACL,KAAK,IAAA,CACJ,OAAOA,CAAAA,GAAW,CAAA,CACnB,KAAK,GAAA,CACL,KAAK,GAAA,CACJ,OAAOA,CAAAA,EAAU,CAAA,EAAKA,CAAAA,EAAU,CAAA,CACjC,QACC,OAAO,MACT,CACD,CAEA,SAASvB,EAAAA,CAAoBR,CAAAA,CAAsBK,CAAAA,CAAetH,CAAAA,CAAqB,CACtF,OAAQsH,CAAAA,EACP,KAAK,MAAA,CACJL,CAAAA,CAAK,IAAA,CAAOjH,CAAAA,CACZiH,CAAAA,CAAK,UAAA,CAAa,QAAA,CAASjH,CAAK,CAAA,CAChC,MACD,KAAK,IAAA,CACJiH,CAAAA,CAAK,IAAA,CAAOjH,CAAAA,CAAM,MAAA,GAAW,CAAA,CAAI,CAAA,EAAA,EAAKA,CAAK,CAAA,CAAA,CAAKA,CAAAA,CAChDiH,CAAAA,CAAK,UAAA,CAAa,QAAA,CAASA,CAAAA,CAAK,IAAI,CAAA,CACpC,MACD,KAAK,IAAA,CACL,KAAK,GAAA,CACJA,CAAAA,CAAK,KAAA,CAAQjH,CAAAA,CAAM,QAAA,CAAS,CAAA,CAAG,GAAG,CAAA,CAClCiH,CAAAA,CAAK,WAAA,CAAc,QAAA,CAASA,CAAAA,CAAK,KAAK,CAAA,CACtC,MACD,KAAK,IAAA,CACL,KAAK,GAAA,CACJA,CAAAA,CAAK,GAAA,CAAMjH,CAAAA,CAAM,QAAA,CAAS,CAAA,CAAG,GAAG,CAAA,CAChCiH,CAAAA,CAAK,SAAA,CAAY,QAAA,CAASjH,CAAK,CAAA,CAC/B,KACF,CACD,CAEA,SAAS2I,EAAAA,CAAad,CAAAA,CAA0BX,CAAAA,CAAqB,CACpE,IAAM+B,CAAAA,CAAa/B,CAAAA,CAAM,WAAA,EAAY,CAErC,GAAI+B,CAAAA,CAAW,QAAA,CAAS,IAAI,CAAA,EAAKA,CAAAA,CAAW,QAAA,CAAS,MAAM,CAAA,CAC1DpB,CAAAA,CAAK,MAAA,CAAS,IAAA,CACVA,EAAK,IAAA,GAAS,IAAA,GACjBA,CAAAA,CAAK,IAAA,CAAO,IAAA,CAAA,CAAA,KAAA,GAAA,CAEHoB,CAAAA,CAAW,QAAA,CAAS,IAAI,CAAA,EAAKA,CAAAA,CAAW,QAAA,CAAS,MAAM,CAAA,IACjEpB,CAAAA,CAAK,MAAA,CAAS,IAAA,CACVA,CAAAA,CAAK,IAAA,EAAQA,CAAAA,CAAK,IAAA,GAAS,IAAA,CAAA,CAAM,CACpC,IAAMgB,CAAAA,CAAU,QAAA,CAAShB,CAAAA,CAAK,IAAI,CAAA,CAC9B,CAAC,MAAA,CAAO,KAAA,CAAMgB,CAAO,CAAA,EAAKA,CAAAA,CAAU,EAAA,GACvChB,CAAAA,CAAK,IAAA,CAAO,MAAA,CAAOgB,CAAAA,CAAU,EAAE,CAAA,CAAE,QAAA,CAAS,CAAA,CAAG,GAAG,CAAA,EAElD,CAEF,CAGA,SAASzB,EAAAA,CAAkBF,CAAAA,CAAyB,CACnD,OAAOA,CAAAA,CAAM,KAAA,CAAM,MAAM,CAAA,EAAK,EAC/B,CAEA,SAASK,EAAAA,CAAYD,CAAAA,CAAwB,CAC5C,OAAO,CAAC,MAAA,CAAQ,IAAA,CAAM,IAAA,CAAM,GAAA,CAAK,IAAA,CAAM,GAAG,CAAA,CAAE,QAAA,CAASA,CAAK,CAC3D,CAEO,SAASX,EAAAA,CAAoBP,CAAAA,CAA0B,CAC7D,IAAM8C,CAAAA,CAAa,sCAAA,CACbC,CAAAA,CAAU/C,CAAAA,CAAO,KAAA,CAAM8C,CAAU,CAAA,CACvC,OAAOC,CAAAA,CAAUA,CAAAA,CAAQ,GAAA,CAAKrH,CAAAA,EAAUA,CAAAA,CAAM,WAAA,EAAa,CAAA,CAAI,EAChE,CAEA,SAASkF,EAAAA,CACRE,CAAAA,CACAb,CAAAA,CACAC,CAAAA,CACgB,CAChB,IAAI8C,CAAAA,CAAelC,CAAAA,CAGbmC,CAAAA,CAAgB,CACrB,GAAI,KAAA,CAAM,OAAA,CAAQhD,CAAc,CAAA,CAAIA,CAAAA,CAAiB,CAACA,CAAc,CAAA,CACpE,GAAI,KAAA,CAAM,OAAA,CAAQC,CAAc,CAAA,CAAIA,EAAiB,CAACA,CAAc,CACrE,CAAA,CAEA,IAAA,IAAW4B,CAAAA,IAAOmB,CAAAA,CACjBD,CAAAA,CAAeA,CAAAA,CAAa,KAAA,CAAMlB,CAAG,CAAA,CAAE,IAAA,CAAK,EAAE,CAAA,CAI/C,OAAAkB,CAAAA,CAAeA,CAAAA,CACb,OAAA,CAAQ,6BAAA,CAA+B,EAAE,CAAA,CACzC,OAAA,CAAQ,MAAA,CAAQ,EAAE,CAAA,CAClB,OAAA,CAAQ,MAAA,CAAQ,GAAG,CAAA,CACnB,IAAA,EAAK,CAEAA,CAAAA,EAAgB,IACxB,CAEA,SAAStC,EAAAA,CACRhG,CAAAA,CACAsF,CAAAA,CACAE,CAAAA,CAAoC,CAAC,GAAG,CAAA,CACvC,CACDxF,CAAAA,CAAO,IAAA,CAAK,SAAA,CAAYwI,EAAAA,CAAWxI,CAAAA,CAAO,IAAA,CAAMsF,CAAM,CAAA,CAEtD,IAAMmD,CAAAA,CAAgB,KAAA,CAAM,OAAA,CAAQjD,CAAc,CAAA,CAAIA,CAAAA,CAAe,CAAC,CAAA,CAAIA,CAAAA,CAE1ExF,CAAAA,CAAO,IAAA,CAAK,OAAA,CAAS+G,CAAAA,EAAS,CAC7BA,CAAAA,CAAK,SAAA,CAAY2B,EAAAA,CAAc3B,CAAAA,CAAM0B,CAAa,CAAA,CAClD1B,CAAAA,CAAK,YAAA,CAAe4B,EAAAA,CAAc5B,CAAAA,CAAM0B,CAAa,EACtD,CAAC,EACF,CAEA,SAASxC,EAAAA,CAAgBjG,CAAAA,CAA8BsF,CAAAA,CAAsB,CAC5EtF,CAAAA,CAAO,IAAA,CAAK,KAAA,CAAQ4I,EAAAA,CAAuB5I,CAAAA,CAAO,IAAA,CAAMsF,CAAM,CAAA,CAE9DtF,CAAAA,CAAO,IAAA,CAAK,OAAA,CAAS+G,CAAAA,EAAS,CAC7BA,CAAAA,CAAK,KAAA,CAAQ8B,EAAAA,CAAuB9B,CAAY,EACjD,CAAC,CAAA,CAED/G,CAAAA,CAAO,KAAA,CAAQA,CAAAA,CAAO,IAAA,CAAK,KAAA,EAASA,CAAAA,CAAO,IAAA,CAAK,IAAA,CAAM8I,CAAAA,EAAMA,CAAAA,CAAE,KAAK,EACpE,CAGA,SAASpD,EAAAA,EAA0C,CAClD,OAAO,CACN,KAAM,CACL,IAAA,CAAM,IAAA,CACN,KAAA,CAAO,IAAA,CACP,GAAA,CAAK,IAAA,CACL,UAAA,CAAY,IAAA,CACZ,WAAA,CAAa,IAAA,CACb,SAAA,CAAW,IAAA,CACX,KAAA,CAAO,KAAA,CACP,SAAA,CAAW,IACZ,CAAA,CACA,IAAA,CAAM,EAAC,CACP,KAAA,CAAO,KAAA,CACP,MAAA,CAAQ,IACT,CACD,CAEA,SAASwB,EAAAA,EAAsC,CAC9C,OAAO,CACN,IAAA,CAAM,IAAA,CACN,MAAA,CAAQ,IAAA,CACR,MAAA,CAAQ,IAAA,CACR,MAAA,CAAQ,IAAA,CACR,UAAA,CAAY,IAAA,CACZ,YAAA,CAAc,IAAA,CACd,YAAA,CAAc,IAAA,CACd,KAAA,CAAO,KAAA,CACP,SAAA,CAAW,IAAA,CACX,YAAA,CAAc,IACf,CACD,CAGO,SAASsB,EAAAA,CACfrC,CAAAA,CACA4C,CAAAA,CACgB,CAEhB,IAAMC,CAAAA,CADenD,EAAAA,CAAoBkD,CAAc,CAAA,CACvB,MAAA,CAAQvC,CAAAA,EACvC,CAAC,MAAA,CAAQ,IAAA,CAAM,IAAA,CAAM,GAAA,CAAK,IAAA,CAAM,GAAG,CAAA,CAAE,QAAA,CAASA,CAAAA,CAAM,WAAA,EAAa,CAClE,CAAA,CAEMyC,CAAAA,CAAuB,EAAC,CAE9B,IAAA,IAAWzC,CAAAA,IAASwC,CAAAA,CACnB,OAAQxC,CAAAA,CAAM,WAAA,EAAY,EACzB,KAAK,MAAA,CACL,KAAK,IAAA,CACAL,CAAAA,CAAK,IAAA,EAAM8C,CAAAA,CAAW,IAAA,CAAK9C,CAAAA,CAAK,IAAI,CAAA,CACxC,MACD,KAAK,IAAA,CACL,KAAK,GAAA,CACAA,CAAAA,CAAK,KAAA,EAAO8C,CAAAA,CAAW,IAAA,CAAK9C,CAAAA,CAAK,KAAK,CAAA,CAC1C,MACD,KAAK,IAAA,CACL,KAAK,GAAA,CACAA,CAAAA,CAAK,GAAA,EAAK8C,CAAAA,CAAW,IAAA,CAAK9C,CAAAA,CAAK,GAAG,CAAA,CACtC,KACF,CAGD,GAAI8C,CAAAA,CAAW,MAAA,CAAS,CAAA,CAAG,CAC1B,IAAMC,CAAAA,CAAYC,EAAAA,CAA0BJ,CAAc,CAAA,CAC1D,OAAOE,CAAAA,CAAW,IAAA,CAAKC,CAAS,CACjC,CAEA,OAAO,IACR,CAEA,SAASC,EAAAA,CAA0B7D,CAAAA,CAAwB,CAC1D,IAAM8D,CAAAA,CAAiB9D,CAAAA,CAAO,KAAA,CAAM,cAAc,CAAA,CAClD,OAAO8D,CAAAA,CAAiBA,CAAAA,CAAe,CAAC,CAAA,CAAI,GAC7C,CAEO,SAASV,EAAAA,CACf3B,CAAAA,CACA0B,CAAAA,CAAwB,GAAA,CACR,CAChB,GAAI,CAAC1B,CAAAA,CAAK,IAAA,CAAM,OAAO,IAAA,CAEvB,IAAMsC,CAAAA,CAAY,EAAC,CACfC,CAAAA,CAAcvC,CAAAA,CAAK,IAAA,CAGnBwC,CAAAA,CAASxC,CAAAA,CAAK,MAAA,CAEZgB,CAAAA,CAAU,QAAA,CAAShB,CAAAA,CAAK,IAAI,CAAA,CAC7B,MAAA,CAAO,KAAA,CAAMgB,CAAO,CAAA,GAEnBwB,CAAAA,CAaAxB,CAAAA,GAAY,CAAA,CACfuB,CAAAA,CAAc,IAAA,CACJvB,CAAAA,CAAU,EAAA,CACpBuB,CAAAA,CAAc,MAAA,CAAOvB,CAAAA,CAAU,EAAE,CAAA,CAAE,QAAA,CAAS,CAAA,CAAG,GAAG,CAAA,CACxCA,CAAAA,GAAY,EAAA,CACtBuB,CAAAA,CAAc,IAAA,CAEdA,CAAAA,CAAc,MAAA,CAAOvB,CAAO,CAAA,CAAE,QAAA,CAAS,CAAA,CAAG,GAAG,CAAA,CAnB1CA,CAAAA,GAAY,CAAA,EAAKA,CAAAA,GAAY,EAAA,EAChCwB,CAAAA,CAASxB,CAAAA,GAAY,CAAA,CAAI,IAAA,CAAO,IAAA,CAChCuB,CAAAA,CAAc,IAAA,EACJvB,CAAAA,CAAU,EAAA,EACpBwB,CAAAA,CAAS,IAAA,CACTD,CAAAA,CAAc,MAAA,CAAOvB,CAAAA,CAAU,EAAE,CAAA,CAAE,QAAA,CAAS,CAAA,CAAG,GAAG,CAAA,GAElDwB,CAAAA,CAAS,IAAA,CACTD,CAAAA,CAAc,MAAA,CAAOvB,CAAO,CAAA,CAAE,SAAS,CAAA,CAAG,GAAG,CAAA,CAAA,CAAA,CAgBhDsB,CAAAA,CAAU,IAAA,CAAKC,CAAW,CAAA,CACtBvC,CAAAA,CAAK,MAAA,EAAQsC,CAAAA,CAAU,IAAA,CAAKtC,CAAAA,CAAK,MAAM,CAAA,CACvCA,CAAAA,CAAK,MAAA,EAAQsC,CAAAA,CAAU,IAAA,CAAKtC,CAAAA,CAAK,MAAM,CAAA,CAE3C,IAAMyC,CAAAA,CAAaH,CAAAA,CAAU,IAAA,CAAKZ,CAAa,CAAA,CAC/C,OAAOc,CAAAA,CAAS,CAAA,EAAGC,CAAU,CAAA,CAAA,EAAID,CAAM,CAAA,CAAA,CAAKC,CAC7C,CAEO,SAASb,EAAAA,CACf5B,CAAAA,CACA0B,CAAAA,CAAwB,GAAA,CACR,CAChB,IAAMY,CAAAA,CAAY,EAAC,CAEnB,OAAItC,CAAAA,CAAK,IAAA,GACRsC,CAAAA,CAAU,IAAA,CAAKtC,CAAAA,CAAK,IAAI,CAAA,CACpBA,CAAAA,CAAK,MAAA,EAAQsC,CAAAA,CAAU,IAAA,CAAKtC,CAAAA,CAAK,MAAM,CAAA,CACvCA,CAAAA,CAAK,QAAQsC,CAAAA,CAAU,IAAA,CAAKtC,CAAAA,CAAK,MAAM,CAAA,CAAA,CAGrCsC,CAAAA,CAAU,MAAA,CAAS,CAAA,CAAIA,CAAAA,CAAU,IAAA,CAAKZ,CAAa,CAAA,CAAI,IAC/D,CAEA,SAASG,EAAAA,CAAuBzC,CAAAA,CAAsBb,CAAAA,CAAyB,CAG9E,IAAM0D,CAAAA,CADenD,EAAAA,CAAoBP,CAAM,CAAA,CACf,MAAA,CAAQkB,CAAAA,EACvC,CAAC,MAAA,CAAQ,IAAA,CAAM,IAAA,CAAM,GAAA,CAAK,IAAA,CAAM,GAAG,CAAA,CAAE,QAAA,CAASA,CAAAA,CAAM,WAAA,EAAa,CAClE,CAAA,CAEA,GAAIwC,CAAAA,CAAW,MAAA,GAAW,CAAA,CAAG,OAAO,MAAA,CAEpC,IAAA,IAAWxC,CAAAA,IAASwC,CAAAA,CACnB,OAAQxC,CAAAA,CAAM,WAAA,EAAY,EACzB,KAAK,MAAA,CACL,KAAK,IAAA,CACJ,GAAI,CAACL,CAAAA,CAAK,IAAA,CAAM,OAAO,MAAA,CACvB,MACD,KAAK,IAAA,CACL,KAAK,GAAA,CACJ,GAAI,CAACA,CAAAA,CAAK,KAAA,CAAO,OAAO,MAAA,CACxB,MACD,KAAK,IAAA,CACL,KAAK,GAAA,CACJ,GAAI,CAACA,CAAAA,CAAK,GAAA,CAAK,OAAO,MAAA,CACtB,KACF,CAGD,GAAIA,CAAAA,CAAK,IAAA,EAAQ,MAAA,CAAO,KAAA,CAAM,QAAA,CAASA,CAAAA,CAAK,IAAI,CAAC,CAAA,CAAG,OAAO,MAAA,CAC3D,GAAIA,CAAAA,CAAK,KAAA,CAAO,CACf,IAAMsD,CAAAA,CAAQ,QAAA,CAAStD,CAAAA,CAAK,KAAK,CAAA,CACjC,GAAI,MAAA,CAAO,KAAA,CAAMsD,CAAK,CAAA,EAAKA,CAAAA,CAAQ,CAAA,EAAKA,CAAAA,CAAQ,EAAA,CAAI,OAAO,MAC5D,CACA,GAAItD,CAAAA,CAAK,GAAA,CAAK,CACb,IAAMuD,CAAAA,CAAM,QAAA,CAASvD,CAAAA,CAAK,GAAG,CAAA,CAC7B,GAAI,MAAA,CAAO,KAAA,CAAMuD,CAAG,CAAA,EAAKA,CAAAA,CAAM,CAAA,EAAKA,CAAAA,CAAM,EAAA,CAAI,OAAO,MACtD,CAEA,OAAO,KACR,CAEA,SAASb,EAAAA,CAAuB9B,CAAAA,CAA0BzB,CAAAA,CAAyB,CAClF,GAAI,CAACyB,CAAAA,CAAK,IAAA,CAAM,OAAO,MAAA,CAEvB,IAAMQ,CAAAA,CAAO,QAAA,CAASR,CAAAA,CAAK,IAAI,CAAA,CAC/B,GAAI,MAAA,CAAO,KAAA,CAAMQ,CAAI,CAAA,EAAKA,CAAAA,CAAO,CAAA,EAAKA,CAAAA,CAAO,EAAA,CAAI,OAAO,MAAA,CAExD,GAAIR,CAAAA,CAAK,MAAA,CAAQ,CAChB,IAAMS,CAAAA,CAAS,QAAA,CAAST,CAAAA,CAAK,MAAM,CAAA,CACnC,GAAI,MAAA,CAAO,KAAA,CAAMS,CAAM,GAAKA,CAAAA,CAAS,CAAA,EAAKA,CAAAA,CAAS,EAAA,CAAI,OAAO,MAC/D,CAEA,GAAIT,CAAAA,CAAK,MAAA,CAAQ,CAChB,IAAMU,CAAAA,CAAS,QAAA,CAASV,CAAAA,CAAK,MAAM,CAAA,CACnC,GAAI,MAAA,CAAO,KAAA,CAAMU,CAAM,CAAA,EAAKA,CAAAA,CAAS,CAAA,EAAKA,CAAAA,CAAS,EAAA,CAAI,OAAO,MAC/D,CAEA,OAAO,KACR,CCvdO,SAASkC,EAAAA,CAAS5K,CAAAA,CAAgD,CACxE,IAAM6G,CAAAA,CAAeC,EAAAA,CAAoB9G,CAAAA,CAAQ,MAAM,CAAA,CACjD6K,CAAAA,CAAe,EAAC,CAEtB,IAAA,IAAWpD,CAAAA,IAASZ,CAAAA,CAAc,CACjC,IAAM1G,CAAAA,CAAQsH,CAAAA,CAAM,WAAA,EAAY,CAC5BtH,CAAAA,GAAU,MAAA,EAAUA,CAAAA,GAAU,IAAA,CACjC0K,CAAAA,CAAa,IAAA,CAAKC,mBAAAA,CAAS,IAAA,CAAK,IAAI,CAAA,CAC1B3K,CAAAA,GAAU,IAAA,EAAQA,CAAAA,GAAU,GAAA,CACtC0K,CAAAA,CAAa,IAAA,CAAKC,mBAAAA,CAAS,IAAA,CAAK,KAAK,CAAA,CAC3B3K,CAAAA,GAAU,IAAA,EAAQA,CAAAA,GAAU,GAAA,CACtC0K,CAAAA,CAAa,IAAA,CAAKC,mBAAAA,CAAS,IAAA,CAAK,GAAG,CAAA,CACzB3K,CAAAA,GAAU,IAAA,EAAQA,CAAAA,GAAU,GAAA,CACtC0K,CAAAA,CAAa,IAAA,CAAKC,mBAAAA,CAAS,IAAA,CAAK,IAAI,CAAA,CAC1B3K,CAAAA,GAAU,IAAA,EAAQA,CAAAA,GAAU,GAAA,CACtC0K,CAAAA,CAAa,IAAA,CAAKC,mBAAAA,CAAS,IAAA,CAAK,MAAM,CAAA,CAAA,CAC5B3K,CAAAA,GAAU,IAAA,EAAQA,CAAAA,GAAU,GAAA,GACtC0K,CAAAA,CAAa,IAAA,CAAKC,mBAAAA,CAAS,IAAA,CAAK,MAAM,EAExC,CACAD,CAAAA,CAAa,IAAA,EAAK,CAElB,IAAIE,CAAAA,CAAS,IAAA,CAUb,GARIF,CAAAA,CAAa,QAAA,CAASC,mBAAAA,CAAS,IAAA,CAAK,GAAG,CAAA,CAAGC,CAAAA,CAASD,mBAAAA,CAAS,IAAA,CAAK,GAAA,CAC5DD,CAAAA,CAAa,QAAA,CAASC,mBAAAA,CAAS,IAAA,CAAK,KAAK,CAAA,CAAGC,CAAAA,CAASD,mBAAAA,CAAS,IAAA,CAAK,KAAA,CACnED,CAAAA,CAAa,QAAA,CAASC,mBAAAA,CAAS,IAAA,CAAK,IAAI,CAAA,CAAGC,CAAAA,CAASD,mBAAAA,CAAS,IAAA,CAAK,IAAA,CAClED,CAAAA,CAAa,QAAA,CAASC,mBAAAA,CAAS,IAAA,CAAK,IAAI,CAAA,CAAGC,CAAAA,CAASD,mBAAAA,CAAS,IAAA,CAAK,IAAA,CAClED,CAAAA,CAAa,QAAA,CAASC,mBAAAA,CAAS,IAAA,CAAK,MAAM,CAAA,CAAGC,CAAAA,CAASD,mBAAAA,CAAS,IAAA,CAAK,MAAA,CACpED,CAAAA,CAAa,QAAA,CAASC,mBAAAA,CAAS,IAAA,CAAK,MAAM,CAAA,GAAGC,CAAAA,CAASD,mBAAAA,CAAS,IAAA,CAAK,MAAA,CAAA,CAGzE9K,CAAAA,CAAQ,WAAA,EAAe,IAAA,CAAM,CAChC,IAAMgL,CAAAA,CAAoBF,mBAAAA,CAAS,IAAA,CAAK9K,CAAAA,CAAQ,WAAW,CAAA,CACvD6K,CAAAA,CAAa,QAAA,CAASG,CAAiB,CAAA,CAC1CD,CAAAA,CAASC,CAAAA,CAET,OAAA,CAAQ,IAAA,CACP,+CAAA,CACAhL,CAAAA,CAAQ,WAAA,CACR,kCAAA,CACA8K,mBAAAA,CAAS,IAAA,CAAKC,CAAM,CAAA,CACpB,GACD,EAEF,CAEA,IAAME,CAAAA,CACLF,CAAAA,EAAUD,mBAAAA,CAAS,IAAA,CAAK,GAAA,CAAMA,mBAAAA,CAAS,SAAA,CAAU,IAAA,CAAOA,mBAAAA,CAAS,SAAA,CAAU,IAAA,CACtEI,CAAAA,CAAYL,CAAAA,CAAa,QAAA,CAASC,mBAAAA,CAAS,IAAA,CAAK,GAAG,CAAA,CACtDA,mBAAAA,CAAS,IAAA,CAAK,GAAA,CACdD,CAAAA,CAAa,QAAA,CAASC,mBAAAA,CAAS,IAAA,CAAK,KAAK,CAAA,CACxCA,mBAAAA,CAAS,IAAA,CAAK,KAAA,CACdD,CAAAA,CAAa,QAAA,CAASC,mBAAAA,CAAS,IAAA,CAAK,IAAI,CAAA,CACvCA,mBAAAA,CAAS,IAAA,CAAK,IAAA,CACd,IAAA,CACCK,EAAYN,CAAAA,CAAa,QAAA,CAASC,mBAAAA,CAAS,IAAA,CAAK,MAAM,CAAA,CACzDA,mBAAAA,CAAS,IAAA,CAAK,MAAA,CACdD,CAAAA,CAAa,QAAA,CAASC,mBAAAA,CAAS,IAAA,CAAK,MAAM,CAAA,CACzCA,mBAAAA,CAAS,IAAA,CAAK,MAAA,CACdD,CAAAA,CAAa,QAAA,CAASC,mBAAAA,CAAS,IAAA,CAAK,IAAI,CAAA,CACvCA,mBAAAA,CAAS,IAAA,CAAK,IAAA,CACd,IAAA,CACL,OAAO,CACN,MAAA,CAAAC,CAAAA,CACA,UAAA,CAAAE,CAAAA,CACA,OAAA,CAASF,CAAAA,CACT,WAAA,CAAaE,CAAAA,CACb,SAAA,CAAAC,CAAAA,CACA,SAAA,CAAAC,CAAAA,CAEA,UAAA,CAAYL,mBAAAA,CAAS,IAAA,CAAKC,CAAM,CAAA,CAChC,WAAA,CAAaD,mBAAAA,CAAS,IAAA,CAAKC,CAAM,CAAA,CACjC,cAAA,CAAgBD,mBAAAA,CAAS,SAAA,CAAUG,CAAU,CAAA,CAC7C,eAAA,CAAiBH,mBAAAA,CAAS,SAAA,CAAUG,CAAU,CAAA,CAC9C,cAAeC,CAAAA,EAAa,IAAA,CAAO,IAAA,CAAQJ,mBAAAA,CAAS,IAAA,CAAKI,CAAS,CAAA,CAClE,aAAA,CAAeC,CAAAA,EAAa,IAAA,CAAO,IAAA,CAAQL,mBAAAA,CAAS,IAAA,CAAKK,CAAS,CAAA,CAElE,QAAA,CAAUN,CACX,CACD,CAEO,SAASO,EAAAA,CAASpL,CAAAA,CAAiD,CAEzE,IAAMiB,CAAAA,CAASrC,mBAAAA,CAAA,EAAA,CAAKoB,CAAAA,CAAQ,IAAA,CAAA,CAEtBqL,CAAAA,CADMpK,CAAAA,CAAO,QAAA,CAAS,OAAA,CAAQA,CAAAA,CAAO,MAAM,CAAA,CAC3B,CAAA,CAClB8J,CAAAA,CAAS9J,CAAAA,CAAO,MAAA,CACpB,OAAIoK,CAAAA,CAAUpK,CAAAA,CAAO,QAAA,CAAS,MAAA,GAC7B8J,CAAAA,CAAS9J,CAAAA,CAAO,QAAA,CAASoK,CAAO,CAAA,CAAA,CAI7BN,CAAAA,GAAW9J,CAAAA,CAAO,MAAA,GACrBA,CAAAA,CAAO,MAAA,CAAS8J,CAAAA,CAChB9J,CAAAA,CAAO,UAAA,CACN8J,CAAAA,EAAUD,mBAAAA,CAAS,IAAA,CAAK,GAAA,CAAMA,oBAAS,SAAA,CAAU,IAAA,CAAOA,mBAAAA,CAAS,SAAA,CAAU,IAAA,CAC5E7J,CAAAA,CAAO,UAAA,CAAa6J,mBAAAA,CAAS,IAAA,CAAK7J,CAAAA,CAAO,MAAM,CAAA,CAC/CA,CAAAA,CAAO,cAAA,CAAiB6J,mBAAAA,CAAS,SAAA,CAAU7J,CAAAA,CAAO,UAAU,CAAA,CAAA,CAGtDA,CACR,CAEO,SAASqK,EAAAA,CAASC,CAAAA,CAAwBvL,CAAAA,CAAiD,CAEjG,GADYA,CAAAA,CAAQ,IAAA,CAAK,QAAA,CAAS,OAAA,CAAQuL,CAAO,CAAA,CACvC,CAAA,CACT,OAAOvL,CAAAA,CAAQ,IAAA,CAEhB,IAAMiB,CAAAA,CAASrC,mBAAAA,CAAA,EAAA,CAAKoB,CAAAA,CAAQ,IAAA,CAAA,CACtB+K,CAAAA,CAASQ,CAAAA,CAGf,OAAAtK,CAAAA,CAAO,MAAA,CAAS8J,CAAAA,CAChB9J,CAAAA,CAAO,UAAA,CACN8J,CAAAA,EAAUD,mBAAAA,CAAS,IAAA,CAAK,GAAA,CAAMA,mBAAAA,CAAS,SAAA,CAAU,IAAA,CAAOA,mBAAAA,CAAS,SAAA,CAAU,IAAA,CAC5E7J,CAAAA,CAAO,UAAA,CAAa6J,mBAAAA,CAAS,IAAA,CAAK7J,CAAAA,CAAO,MAAM,CAAA,CAC/CA,CAAAA,CAAO,cAAA,CAAiB6J,mBAAAA,CAAS,SAAA,CAAU7J,CAAAA,CAAO,UAAU,CAAA,CACrDA,CACR,CCzHO,SAASuK,EAAAA,CAAmBpK,CAAAA,CAA8B,CAChE,IAAMqK,CAAAA,CAAO,EAAC,CACRC,CAAAA,CAAWtK,CAAAA,CAAO,UAAA,GAAe,KAAA,CACjCoJ,CAAAA,CAASpJ,CAAAA,CAAO,IAAA,CAAK,YAAA,CACrBuK,CAAAA,CAAevK,CAAAA,CAAO,IAAA,CAAK,SAAA,EAAa,IAAA,CACxCwK,CAAAA,CAAexK,CAAAA,CAAO,IAAA,CAAK,SAAA,EAAa,IAAA,CAC1CyK,CAAAA,CAAa,CAAA,CACjB,OAAO,CACN,IAAA,CAAAJ,CAAAA,CACA,IAAI,UAAA,EAAa,CAChB,OAAOI,CACR,CAAA,CACA,YAAA,CAAAF,CAAAA,CACA,YAAA,CAAAC,CAAAA,CACA,MAAA,CAASzF,CAAAA,EAAqC,CAjBhD,IAAAlG,CAAAA,CAkBGwL,CAAAA,CAAK,IAAA,CAAKtF,CAAM,CAAA,CAChB,IAAM2F,CAAAA,CAAAA,CAAa7L,CAAAA,CAAAkG,CAAAA,CAAO,IAAA,GAAP,IAAA,CAAA,MAAA,CAAAlG,CAAAA,CAAa,IAAA,CAAMsB,CAAAA,EAASA,CAAAA,CAAK,KAAA,GAAU,KAAA,CAAA,CAC1DoK,CAAAA,EAAgBC,CAAAA,CACfzF,CAAAA,CAAO,IAAA,CAAK,KAAA,EAASA,CAAAA,CAAO,IAAA,CAAK,MAAA,CAAS,CAAA,EAAK2F,CAAAA,EAAc,IAAA,EAChED,CAAAA,EAAAA,CAESF,CAAAA,CACNxF,CAAAA,CAAO,IAAA,CAAK,KAAA,EAAO0F,CAAAA,EAAAA,CACbD,CAAAA,EACNzF,CAAAA,CAAO,IAAA,CAAK,MAAA,CAAS,CAAA,EAAK2F,CAAAA,EAAc,IAAA,EAC3CD,CAAAA,GAGH,CAAA,CAEA,OAAA,CAAUE,CAAAA,EAERA,CAAAA,GAAS3K,CAAAA,CAAO,IAAA,CAAK,MAAA,EAAUqK,CAAAA,CAAK,SAAA,CAAWlK,CAAAA,EAASA,CAAAA,CAAK,IAAA,CAAK,UAAA,GAAewK,CAAI,CAAA,EAAK,CAAA,CAG5F,YAAA,CAAc,CAACA,CAAAA,CAAcrB,CAAAA,GAE1BqB,CAAAA,GAAS3K,CAAAA,CAAO,IAAA,CAAK,MAAA,EAAUsJ,CAAAA,GAAUtJ,CAAAA,CAAO,KAAA,CAAM,MAAA,EACvDqK,CAAAA,CAAK,SAAA,CACHlK,CAAAA,EAASA,CAAAA,CAAK,IAAA,CAAK,UAAA,GAAewK,CAAAA,EAAQxK,CAAAA,CAAK,IAAA,CAAK,WAAA,GAAgBmJ,CACtE,CAAA,EAAK,CAAA,CAGP,OAAA,CAAS,CAACqB,CAAAA,CAAcrB,CAAAA,CAAeC,CAAAA,GAErCc,CAAAA,CAAK,SAAA,CACHlK,CAAAA,EACAA,CAAAA,CAAK,IAAA,CAAK,UAAA,GAAewK,CAAAA,EACzBxK,CAAAA,CAAK,IAAA,CAAK,WAAA,GAAgBmJ,CAAAA,EAC1BnJ,CAAAA,CAAK,IAAA,CAAK,SAAA,GAAcoJ,CAC1B,CAAA,EAAK,CAAA,CAIP,oBAAA,CAAqBoB,CAAAA,CAAcrB,CAAAA,CAAeC,CAAAA,CAAa,CAzDjE,IAAA1K,CAAAA,CA0DG,IAAMkG,CAAAA,CAASsF,CAAAA,CAAK,IAAA,CAClBlK,CAAAA,EACAA,CAAAA,CAAK,IAAA,CAAK,UAAA,GAAewK,CAAAA,EACzBxK,CAAAA,CAAK,IAAA,CAAK,WAAA,GAAgBmJ,CAAAA,EAC1BnJ,CAAAA,CAAK,IAAA,CAAK,SAAA,GAAcoJ,CAC1B,CAAA,CACM9C,GAAQ5H,CAAAA,CAAAkG,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAQ,IAAA,GAAR,IAAA,CAAAlG,CAAAA,CAAgB,EAAC,CAE/B,OAAO,CACN,IAAA,CAAM4H,CAAAA,CACN,OAAA,CAAUmE,CAAAA,EAAkB,CAC3B,IAAMxD,CAAAA,CAAOkD,CAAAA,CAAWM,CAAAA,CAAQ,EAAA,CAAKA,CAAAA,CACrC,OACCnE,CAAAA,CAAM,SAAA,CACJG,CAAAA,EAAAA,CAAU0D,CAAAA,CAAW1D,CAAAA,CAAK,MAAA,GAAWwC,CAAAA,CAAS,IAAA,GAASxC,CAAAA,CAAK,UAAA,GAAeQ,CAC7E,CAAA,EAAK,CAEP,CAAA,CACA,aAAA,CAAe,CAACwD,CAAAA,CAAevD,CAAAA,GAAmB,CACjD,IAAMD,CAAAA,CAAOkD,CAAAA,CAAWM,CAAAA,CAAQ,EAAA,CAAKA,CAAAA,CACrC,OACCnE,CAAAA,CAAM,SAAA,CACJG,CAAAA,EAAAA,CACC0D,CAAAA,CAAW1D,CAAAA,CAAK,MAAA,GAAWwC,CAAAA,CAAS,IAAA,GACrCxC,CAAAA,CAAK,UAAA,GAAeQ,CAAAA,EACpBR,CAAAA,CAAK,YAAA,GAAiBS,CACxB,CAAA,EAAK,CAEP,CAAA,CACA,OAAA,CAAS,CAACuD,CAAAA,CAAevD,CAAAA,CAAgBC,CAAAA,GAAmB,CAC3D,IAAMF,CAAAA,CAAOkD,CAAAA,CAAWM,CAAAA,CAAQ,EAAA,CAAKA,CAAAA,CACrC,OACCnE,CAAAA,CAAM,SAAA,CACJG,CAAAA,EAAAA,CACC0D,CAAAA,CAAW1D,CAAAA,CAAK,MAAA,GAAWwC,CAAAA,CAAS,IAAA,GACrCxC,CAAAA,CAAK,UAAA,GAAeQ,CAAAA,EACpBR,CAAAA,CAAK,YAAA,GAAiBS,CAAAA,EACtBT,CAAAA,CAAK,YAAA,GAAiBU,CACxB,CAAA,EAAK,CAEP,CACD,CACD,CACD,CACD,CCnGA,IAAOuD,EAAAA,CAAQ,CACd,IAAA,CAAO7K,CAAAA,GACuC,EAAC,CAAA,CAI/C,KAAA,CAAQA,CAAAA,EAAiC,CAErBA,CAAAA,CAAO,IAAA,CAAK,MAAA,EACb0J,mBAAAA,CAAS,IAAA,CAAK,GAAA,CAC/B1J,CAAAA,CAAO,IAAA,CAAK,KAAA,CAAQA,CAAAA,CAAOA,CAAAA,CAAO,IAAA,CAAK,UAAU,EAAE,KAAA,CAEnDA,CAAAA,CAAO,IAAA,CAAK,KAAA,CAAQ,KAEtB,CACD,CAAA,CCfA,IAAO8K,EAAAA,CAAQ,CACd,IAAA,CAAO9K,CAAAA,EAA+D,CAJvE,IAAAnB,CAAAA,CAKE,IAAMgB,CAAAA,CAAuC,EAAC,CAC9C,OAAAA,CAAAA,CAAO,MAAA,CAASkL,EAAAA,CAAgB/K,CAAAA,CAAO,MAAM,CAAA,CAC7CH,CAAAA,CAAO,OAAA,CAAUmL,EAAAA,CAAYhL,CAAM,CAAA,CACnCH,CAAAA,CAAO,YAAA,CAAA,CAAehB,CAAAA,CAAAgB,CAAAA,CAAO,OAAA,GAAP,IAAA,CAAA,MAAA,CAAAhB,CAAAA,CAAiB,CAAA,CAAA,CAAG,KAAA,CAEnCgB,CACR,CAAA,CACA,KAAA,CAAQG,CAAAA,EAAiC,CAErBA,CAAAA,CAAO,IAAA,CAAK,MAAA,CACd0J,mBAAAA,CAAS,IAAA,CAAK,GAAA,CAC9B1J,CAAAA,CAAO,IAAA,CAAK,KAAA,CAAQA,CAAAA,CAAOA,CAAAA,CAAO,IAAA,CAAK,UAAU,CAAA,CAAE,KAAA,CAEnDA,CAAAA,CAAO,IAAA,CAAK,MAAQ,KAQtB,CAAA,CAEA,OAAA,CAAS,CACR,YAAA,CAAc,CAACK,CAAAA,CAA4BL,CAAAA,GAAiC,CAC3E,GAAIK,CAAAA,CAAO,IAAA,GAASqJ,mBAAAA,CAAS,OAAA,CAAQ,WAAA,EAAe1J,CAAAA,CAAO,IAAA,CAAK,OAAA,EAAW,IAAA,CAC1E,OAED,IAAMoJ,CAAAA,CAAS/I,CAAAA,CAAO,KAAA,CACtBL,CAAAA,CAAO,IAAA,CAAK,YAAA,CAAeoJ,CAAAA,CAC3B,IAAA,IAAS,CAAA,CAAI,CAAA,CAAG,CAAA,CAAIpJ,CAAAA,CAAO,IAAA,CAAK,OAAA,CAAQ,MAAA,CAAQ,CAAA,EAAA,CAAK,CACpD,IAAMjB,CAAAA,CAAQiB,CAAAA,CAAO,IAAA,CAAK,OAAA,CAAQ,CAAC,CAAA,CACnCjB,CAAAA,CAAM,UAAA,CAAaA,CAAAA,CAAM,KAAA,GAAUqK,EACpC,CACD,CACD,CACD,CAAA,CAEA,SAAS4B,EAAAA,CAAYhL,CAAAA,CAAoD,CACxE,OAAIA,CAAAA,CAAO,UAAA,GAAe,KAAA,CAClB,KAE6B,CACpC,CACC,IAAA,CAAM0J,mBAAAA,CAAS,OAAA,CAAQ,WAAA,CACvB,QAAA,CAAU,aAAA,CACV,KAAA,CAAO,IAAA,CACP,IAAA,CAAM,IAAA,CACN,SAAA,CAAW,IAAA,CACX,UAAA,CAAY,IACb,CAAA,CACA,CACC,IAAA,CAAMA,mBAAAA,CAAS,OAAA,CAAQ,WAAA,CACvB,QAAA,CAAU,aAAA,CACV,KAAA,CAAO,IAAA,CACP,IAAA,CAAM,IAAA,CACN,SAAA,CAAW,IAAA,CACX,UAAA,CAAY,KACb,CACD,CAED,CAGA,SAASqB,EAAAA,CAAgBE,CAAAA,CAA6C,CACrE,IAAMC,CAAAA,CAAaD,CAAAA,CAAO,KAAA,CAAM,GAAG,CAAA,CAAE,CAAC,CAAA,CACtC,OAAOE,EAAAA,CAAaD,CAAU,CAAA,EAAKC,EAAAA,CAAa,OACjD,CACA,IAAMA,EAAAA,CAAe,CAEpB,EAAA,CAAI,CACH,GAAA,CAAK,KAAA,CACL,KAAA,CAAO,CAAE,IAAA,CAAM,QAAA,CAAK,MAAA,CAAQ,QAAA,CAAK,MAAA,CAAQ,QAAI,CAAA,CAC7C,IAAA,CAAM,CAAE,IAAA,CAAM,0BAAA,CAAQ,MAAA,CAAQ,gCAAA,CAAS,MAAA,CAAQ,gCAAQ,CACxD,CAAA,CACA,EAAA,CAAI,CACH,GAAA,CAAK,KAAA,CACL,KAAA,CAAO,CAAE,IAAA,CAAM,QAAA,CAAK,MAAA,CAAQ,QAAA,CAAK,MAAA,CAAQ,QAAI,CAAA,CAC7C,IAAA,CAAM,CAAE,IAAA,CAAM,oBAAA,CAAO,MAAA,CAAQ,oBAAA,CAAO,MAAA,CAAQ,0BAAO,CACpD,CAAA,CACA,EAAA,CAAI,CACH,GAAA,CAAK,KAAA,CACL,KAAA,CAAO,CAAE,IAAA,CAAM,QAAA,CAAK,MAAA,CAAQ,QAAA,CAAK,MAAA,CAAQ,QAAI,CAAA,CAC7C,IAAA,CAAM,CAAE,IAAA,CAAM,0BAAA,CAAQ,MAAA,CAAQ,gCAAA,CAAS,MAAA,CAAQ,gCAAQ,CACxD,CAAA,CACA,GAAI,CACH,GAAA,CAAK,KAAA,CACL,KAAA,CAAO,CAAE,IAAA,CAAM,QAAA,CAAK,MAAA,CAAQ,QAAA,CAAK,MAAA,CAAQ,QAAI,CAAA,CAC7C,IAAA,CAAM,CAAE,IAAA,CAAM,gCAAA,CAAS,MAAA,CAAQ,oBAAA,CAAO,MAAA,CAAQ,gCAAQ,CACvD,CAAA,CAGA,EAAA,CAAI,CACH,GAAA,CAAK,KAAA,CACL,KAAA,CAAO,CAAE,IAAA,CAAM,GAAA,CAAK,MAAA,CAAQ,GAAA,CAAK,MAAA,CAAQ,GAAI,CAAA,CAC7C,IAAA,CAAM,CAAE,IAAA,CAAM,MAAA,CAAQ,MAAA,CAAQ,QAAA,CAAU,MAAA,CAAQ,QAAS,CAC1D,CAAA,CACA,EAAA,CAAI,CACH,GAAA,CAAK,KAAA,CACL,KAAA,CAAO,CAAE,IAAA,CAAM,GAAA,CAAK,MAAA,CAAQ,GAAA,CAAK,MAAA,CAAQ,GAAI,CAAA,CAC7C,IAAA,CAAM,CAAE,IAAA,CAAM,OAAA,CAAS,MAAA,CAAQ,QAAA,CAAU,MAAA,CAAQ,SAAU,CAC5D,CAAA,CACA,EAAA,CAAI,CACH,GAAA,CAAK,KAAA,CACL,KAAA,CAAO,CAAE,IAAA,CAAM,GAAA,CAAK,MAAA,CAAQ,GAAA,CAAK,MAAA,CAAQ,GAAI,CAAA,CAC7C,IAAA,CAAM,CAAE,IAAA,CAAM,QAAA,CAAU,MAAA,CAAQ,QAAA,CAAU,MAAA,CAAQ,SAAU,CAC7D,CAAA,CACA,EAAA,CAAI,CACH,GAAA,CAAK,KAAA,CACL,KAAA,CAAO,CAAE,IAAA,CAAM,GAAA,CAAK,MAAA,CAAQ,GAAA,CAAK,MAAA,CAAQ,GAAI,CAAA,CAC7C,IAAA,CAAM,CAAE,IAAA,CAAM,MAAA,CAAQ,MAAA,CAAQ,QAAA,CAAU,MAAA,CAAQ,SAAU,CAC3D,CAAA,CACA,EAAA,CAAI,CACH,GAAA,CAAK,KAAA,CACL,KAAA,CAAO,CAAE,IAAA,CAAM,GAAA,CAAK,MAAA,CAAQ,GAAA,CAAK,MAAA,CAAQ,GAAI,EAC7C,IAAA,CAAM,CAAE,IAAA,CAAM,KAAA,CAAO,MAAA,CAAQ,QAAA,CAAU,MAAA,CAAQ,SAAU,CAC1D,CAAA,CACA,EAAA,CAAI,CACH,GAAA,CAAK,KAAA,CACL,KAAA,CAAO,CAAE,IAAA,CAAM,GAAA,CAAK,MAAA,CAAQ,GAAA,CAAK,MAAA,CAAQ,GAAI,CAAA,CAC7C,IAAA,CAAM,CAAE,IAAA,CAAM,MAAA,CAAQ,MAAA,CAAQ,QAAA,CAAU,MAAA,CAAQ,SAAU,CAC3D,CAAA,CACA,EAAA,CAAI,CACH,GAAA,CAAK,KAAA,CACL,KAAA,CAAO,CAAE,IAAA,CAAM,GAAA,CAAK,MAAA,CAAQ,GAAA,CAAK,MAAA,CAAQ,GAAI,CAAA,CAC7C,IAAA,CAAM,CAAE,IAAA,CAAM,KAAA,CAAO,MAAA,CAAQ,QAAA,CAAU,MAAA,CAAQ,SAAU,CAC1D,CAAA,CACA,EAAA,CAAI,CACH,GAAA,CAAK,KAAA,CACL,KAAA,CAAO,CAAE,IAAA,CAAM,GAAA,CAAK,MAAA,CAAQ,GAAA,CAAK,MAAA,CAAQ,GAAI,CAAA,CAC7C,IAAA,CAAM,CAAE,IAAA,CAAM,OAAA,CAAS,MAAA,CAAQ,OAAA,CAAS,MAAA,CAAQ,QAAS,CAC1D,CAAA,CACA,EAAA,CAAI,CACH,GAAA,CAAK,KAAA,CACL,KAAA,CAAO,CAAE,IAAA,CAAM,GAAA,CAAK,MAAA,CAAQ,GAAA,CAAK,MAAA,CAAQ,GAAI,CAAA,CAC7C,IAAA,CAAM,CAAE,IAAA,CAAM,MAAA,CAAQ,MAAA,CAAQ,QAAA,CAAU,MAAA,CAAQ,QAAS,CAC1D,CAAA,CACA,EAAA,CAAI,CACH,GAAA,CAAK,KAAA,CACL,KAAA,CAAO,CAAE,IAAA,CAAM,GAAA,CAAK,MAAA,CAAQ,GAAA,CAAK,MAAA,CAAQ,GAAI,CAAA,CAC7C,IAAA,CAAM,CAAE,IAAA,CAAM,MAAA,CAAQ,MAAA,CAAQ,OAAA,CAAS,MAAA,CAAQ,QAAS,CACzD,CAAA,CACA,EAAA,CAAI,CACH,GAAA,CAAK,KAAA,CACL,KAAA,CAAO,CAAE,IAAA,CAAM,GAAA,CAAK,MAAA,CAAQ,GAAA,CAAK,MAAA,CAAQ,GAAI,CAAA,CAC7C,IAAA,CAAM,CAAE,IAAA,CAAM,OAAA,CAAS,MAAA,CAAQ,UAAA,CAAY,MAAA,CAAQ,SAAU,CAC9D,CAAA,CACA,EAAA,CAAI,CACH,GAAA,CAAK,KAAA,CACL,KAAA,CAAO,CAAE,IAAA,CAAM,GAAA,CAAK,MAAA,CAAQ,GAAA,CAAK,MAAA,CAAQ,GAAI,CAAA,CAC7C,IAAA,CAAM,CAAE,IAAA,CAAM,SAAA,CAAW,MAAA,CAAQ,QAAA,CAAU,MAAA,CAAQ,SAAU,CAC9D,CAAA,CACA,EAAA,CAAI,CACH,GAAA,CAAK,KAAA,CACL,KAAA,CAAO,CAAE,IAAA,CAAM,GAAA,CAAK,MAAA,CAAQ,GAAA,CAAK,MAAA,CAAQ,GAAI,CAAA,CAC7C,IAAA,CAAM,CAAE,IAAA,CAAM,QAAA,CAAU,MAAA,CAAQ,SAAU,MAAA,CAAQ,SAAU,CAC7D,CAAA,CACA,EAAA,CAAI,CACH,GAAA,CAAK,KAAA,CACL,KAAA,CAAO,CAAE,IAAA,CAAM,GAAA,CAAK,MAAA,CAAQ,GAAA,CAAK,MAAA,CAAQ,GAAI,CAAA,CAC7C,IAAA,CAAM,CAAE,IAAA,CAAM,QAAA,CAAU,MAAA,CAAQ,WAAA,CAAU,MAAA,CAAQ,SAAU,CAC7D,CAAA,CACA,EAAA,CAAI,CACH,GAAA,CAAK,KAAA,CACL,KAAA,CAAO,CAAE,IAAA,CAAM,MAAA,CAAK,MAAA,CAAQ,GAAA,CAAK,MAAA,CAAQ,IAAK,CAAA,CAC9C,IAAA,CAAM,CAAE,IAAA,CAAM,QAAA,CAAO,MAAA,CAAQ,MAAA,CAAQ,MAAA,CAAQ,cAAY,CAC1D,CAAA,CACA,EAAA,CAAI,CACH,GAAA,CAAK,KAAA,CACL,KAAA,CAAO,CAAE,IAAA,CAAM,GAAA,CAAK,MAAA,CAAQ,GAAA,CAAK,MAAA,CAAQ,GAAI,EAC7C,IAAA,CAAM,CAAE,IAAA,CAAM,UAAA,CAAO,MAAA,CAAQ,OAAA,CAAS,MAAA,CAAQ,cAAU,CACzD,CAAA,CACA,EAAA,CAAI,CACH,GAAA,CAAK,KAAA,CACL,KAAA,CAAO,CAAE,IAAA,CAAM,QAAA,CAAK,MAAA,CAAQ,QAAA,CAAK,MAAA,CAAQ,QAAI,CAAA,CAC7C,IAAA,CAAM,CAAE,IAAA,CAAM,oBAAA,CAAO,MAAA,CAAQ,sCAAA,CAAU,MAAA,CAAQ,4CAAU,CAC1D,CAAA,CACA,EAAA,CAAI,CACH,GAAA,CAAK,KAAA,CACL,KAAA,CAAO,CAAE,IAAA,CAAM,GAAA,CAAK,MAAA,CAAQ,GAAA,CAAK,MAAA,CAAQ,GAAI,CAAA,CAC7C,IAAA,CAAM,CAAE,IAAA,CAAM,KAAA,CAAO,MAAA,CAAQ,QAAA,CAAU,MAAA,CAAQ,SAAU,CAC1D,CAAA,CACA,EAAA,CAAI,CACH,GAAA,CAAK,KAAA,CACL,KAAA,CAAO,CAAE,IAAA,CAAM,QAAA,CAAK,MAAA,CAAQ,QAAA,CAAK,MAAA,CAAQ,QAAI,CAAA,CAC7C,IAAA,CAAM,CAAE,IAAA,CAAM,oBAAA,CAAO,MAAA,CAAQ,gCAAA,CAAS,MAAA,CAAQ,sCAAS,CACxD,CAAA,CAGA,EAAA,CAAI,CACH,GAAA,CAAK,KAAA,CACL,KAAA,CAAO,CAAE,IAAA,CAAM,QAAA,CAAK,MAAA,CAAQ,QAAA,CAAK,MAAA,CAAQ,QAAI,CAAA,CAC7C,IAAA,CAAM,CAAE,IAAA,CAAM,cAAA,CAAM,MAAA,CAAQ,cAAA,CAAM,MAAA,CAAQ,QAAI,CAC/C,CAAA,CACA,EAAA,CAAI,CACH,GAAA,CAAK,KAAA,CACL,KAAA,CAAO,CAAE,IAAA,CAAM,QAAA,CAAK,MAAA,CAAQ,QAAA,CAAK,MAAA,CAAQ,QAAI,CAAA,CAC7C,IAAA,CAAM,CAAE,IAAA,CAAM,cAAA,CAAM,MAAA,CAAQ,QAAA,CAAK,MAAA,CAAQ,QAAI,CAC9C,CAAA,CACA,EAAA,CAAI,CACH,GAAA,CAAK,KAAA,CACL,KAAA,CAAO,CAAE,IAAA,CAAM,QAAA,CAAK,MAAA,CAAQ,QAAA,CAAK,MAAA,CAAQ,QAAI,CAAA,CAC7C,IAAA,CAAM,CAAE,IAAA,CAAM,cAAA,CAAM,MAAA,CAAQ,QAAA,CAAK,MAAA,CAAQ,QAAI,CAC9C,CAAA,CACA,EAAA,CAAI,CACH,GAAA,CAAK,KAAA,CACL,KAAA,CAAO,CAAE,IAAA,CAAM,QAAA,CAAK,MAAA,CAAQ,cAAA,CAAM,MAAA,CAAQ,cAAK,CAAA,CAC/C,IAAA,CAAM,CAAE,IAAA,CAAM,0BAAA,CAAQ,MAAA,CAAQ,0BAAA,CAAQ,MAAA,CAAQ,gCAAQ,CACvD,CAAA,CACA,EAAA,CAAI,CACH,GAAA,CAAK,KAAA,CACL,KAAA,CAAO,CAAE,IAAA,CAAM,eAAA,CAAO,MAAA,CAAQ,SAAA,CAAM,MAAA,CAAQ,SAAK,CAAA,CACjD,IAAA,CAAM,CAAE,IAAA,CAAM,4CAAA,CAAW,MAAA,CAAQ,0BAAA,CAAQ,MAAA,CAAQ,sCAAS,CAC3D,CAAA,CACA,EAAA,CAAI,CACH,GAAA,CAAK,KAAA,CACL,KAAA,CAAO,CAAE,IAAA,CAAM,GAAA,CAAK,MAAA,CAAQ,GAAA,CAAK,MAAA,CAAQ,GAAI,CAAA,CAC7C,IAAA,CAAM,CAAE,IAAA,CAAM,UAAA,CAAO,MAAA,CAAQ,SAAA,CAAQ,MAAA,CAAQ,SAAO,CACrD,CAAA,CAGA,EAAA,CAAI,CACH,GAAA,CAAK,KAAA,CACL,KAAA,CAAO,CAAE,IAAA,CAAM,QAAA,CAAK,MAAA,CAAQ,QAAA,CAAK,MAAA,CAAQ,QAAI,CAAA,CAC7C,IAAA,CAAM,CAAE,IAAA,CAAM,oBAAA,CAAO,MAAA,CAAQ,sCAAA,CAAU,MAAA,CAAQ,4CAAU,CAC1D,CAAA,CACA,EAAA,CAAI,CACH,GAAA,CAAK,KAAA,CACL,KAAA,CAAO,CAAE,IAAA,CAAM,QAAA,CAAK,MAAA,CAAQ,QAAA,CAAK,MAAA,CAAQ,QAAI,CAAA,CAC7C,KAAM,CAAE,IAAA,CAAM,sCAAA,CAAU,MAAA,CAAQ,4CAAA,CAAW,MAAA,CAAQ,4CAAU,CAC9D,CAAA,CACA,EAAA,CAAI,CACH,GAAA,CAAK,KAAA,CACL,KAAA,CAAO,CAAE,IAAA,CAAM,GAAA,CAAK,MAAA,CAAQ,GAAA,CAAK,MAAA,CAAQ,GAAI,CAAA,CAC7C,IAAA,CAAM,CAAE,IAAA,CAAM,MAAA,CAAQ,MAAA,CAAQ,QAAA,CAAU,MAAA,CAAQ,QAAS,CAC1D,CAAA,CACA,EAAA,CAAI,CACH,GAAA,CAAK,KAAA,CACL,KAAA,CAAO,CAAE,IAAA,CAAM,QAAA,CAAK,MAAA,CAAQ,QAAA,CAAK,MAAA,CAAQ,QAAI,CAAA,CAC7C,IAAA,CAAM,CAAE,IAAA,CAAM,oBAAA,CAAO,MAAA,CAAQ,gCAAA,CAAS,MAAA,CAAQ,0EAAe,CAC9D,CAAA,CAGA,OAAA,CAAS,CACR,GAAA,CAAK,KAAA,CACL,KAAA,CAAO,CAAE,IAAA,CAAM,GAAA,CAAK,MAAA,CAAQ,GAAA,CAAK,MAAA,CAAQ,GAAI,CAAA,CAC7C,IAAA,CAAM,CAAE,IAAA,CAAM,MAAA,CAAQ,MAAA,CAAQ,QAAA,CAAU,MAAA,CAAQ,QAAS,CAC1D,CACD,CAAA,CC1PA,IAAOC,CAAAA,CAAQ,CACd,IAAA,CAAOpL,CAAAA,EAA+D,CACrE,IAAMH,CAAAA,CAAuC,EAAC,CAC9C,OAAAA,CAAAA,CAAO,MAAA,CAAS,IAAI,IAAA,EAAK,CAAE,WAAA,EAAY,CACvCA,CAAAA,CAAO,OAAA,CAAU,IAAI,IAAA,EAAK,CAAE,WAAA,EAAY,CACxCA,CAAAA,CAAO,KAAA,CAAQA,CAAAA,CAAO,MAAA,CAAS,IAAA,CAAK,KAAA,CAAMG,CAAAA,CAAO,QAAA,CAAW,CAAC,CAAA,CAC7DH,CAAAA,CAAO,GAAA,CAAMA,CAAAA,CAAO,KAAA,CAAQG,CAAAA,CAAO,QAAA,CAC5BH,CACR,CAAA,CACA,MAAA,CAAO8K,CAAAA,CAAiC3K,CAAAA,CAA8B,CACjE2K,GAAQ,IAAA,GAGZ3K,CAAAA,CAAO,IAAA,CAAK,MAAA,CAAS2K,CAAAA,EAGtB,CAAA,CACA,KAAA,CAAM3K,CAAAA,CAA8B,CACnC,GAAI,CAACA,CAAAA,CAAO,IAAA,CAAK,QAAA,CAAS,QAAA,CAAS0J,mBAAAA,CAAS,IAAA,CAAK,IAAI,CAAA,CAAG,CACvD1J,CAAAA,CAAO,IAAA,CAAK,KAAA,CAAQ,IAAA,CACpB,MACD,CACA,IAAMqL,CAAAA,CAAgC,EAAC,CAEvC,IAAA,IAASV,CAAAA,CAAO3K,CAAAA,CAAO,IAAA,CAAK,KAAA,CAAO2K,CAAAA,CAAO3K,CAAAA,CAAO,IAAA,CAAK,GAAA,CAAK2K,CAAAA,EAAAA,CAAQ,CAClE,IAAMW,CAAAA,CAAUX,CAAAA,CAAK,QAAA,EAAS,CACxBY,CAAAA,CAAavL,CAAAA,CAAO,QAAA,CAAS,OAAA,CAAQ2K,CAAI,CAAA,CAE/CU,CAAAA,CAAM,IAAA,CAAK,CACV,GAAA,CAAK,CAAA,cAAA,EAAiBV,CAAI,CAAA,CAAA,CAC1B,IAAA,CAAMjB,mBAAAA,CAAS,IAAA,CAAK,KACpB,QAAA,CAAUA,mBAAAA,CAAS,IAAA,CAAKA,mBAAAA,CAAS,IAAA,CAAK,IAAI,CAAA,CAC1C,KAAA,CAAO4B,CAAAA,CACP,WAAA,CAAaX,CAAAA,CACb,IAAA,CAAMW,CAAAA,CACN,SAAA,CAAWA,CAAAA,CAAQ,KAAA,CAAM,EAAE,CAAA,CAC3B,UAAA,CAAAC,CAAAA,CACA,OAAA,CAASvL,CAAAA,CAAO,IAAA,CAAK,OAAA,GAAY2K,CAClC,CAAC,EACF,CAEA3K,CAAAA,CAAO,IAAA,CAAK,KAAA,CAAQqL,EACrB,CAAA,CAEA,MAAA,CAAQ,CACP,QAAA,CAAWrL,CAAAA,EAAiC,CAC3CA,CAAAA,CAAO,IAAA,CAAK,KAAA,EAASA,CAAAA,CAAO,QAAA,CAC5BA,CAAAA,CAAO,IAAA,CAAK,GAAA,CAAMA,CAAAA,CAAO,IAAA,CAAK,KAAA,CAAQA,CAAAA,CAAO,SAC9C,CAAA,CACA,QAAA,CAAWA,CAAAA,EAAiC,CAC3CA,CAAAA,CAAO,IAAA,CAAK,KAAA,EAASA,CAAAA,CAAO,QAAA,CAC5BA,CAAAA,CAAO,IAAA,CAAK,IAAMA,CAAAA,CAAO,IAAA,CAAK,KAAA,CAAQA,CAAAA,CAAO,SAC9C,CAAA,CACA,IAAA,CAAOA,CAAAA,EAAiC,CACvC,IAAM3C,CAAAA,CAAO2C,CAAAA,CAAO,IAAA,CAAK,MAAA,CAAS,CAAA,CAClCA,CAAAA,CAAO,IAAA,CAAK,MAAA,CAAS3C,CAAAA,CACjBA,CAAAA,CAAO2C,CAAAA,CAAO,IAAA,CAAK,KAAA,GACtBA,CAAAA,CAAO,IAAA,CAAK,KAAA,EAASA,CAAAA,CAAO,QAAA,CAC5BA,CAAAA,CAAO,IAAA,CAAK,GAAA,CAAMA,CAAAA,CAAO,IAAA,CAAK,KAAA,CAAQA,CAAAA,CAAO,QAAA,EAE/C,CAAA,CACA,IAAA,CAAOA,CAAAA,EAAiC,CACvC,IAAM3C,CAAAA,CAAO2C,CAAAA,CAAO,IAAA,CAAK,MAAA,CAAS,CAAA,CAClCA,CAAAA,CAAO,IAAA,CAAK,MAAA,CAAS3C,CAAAA,CACjBA,CAAAA,CAAO2C,CAAAA,CAAO,IAAA,CAAK,GAAA,GACtBA,CAAAA,CAAO,IAAA,CAAK,KAAA,EAASA,CAAAA,CAAO,QAAA,CAC5BA,CAAAA,CAAO,IAAA,CAAK,GAAA,CAAMA,CAAAA,CAAO,IAAA,CAAK,KAAA,CAAQA,CAAAA,CAAO,QAAA,EAE/C,CACD,CACD,CAAA,CCtEA,IAAOwL,CAAAA,CAAQ,CACd,IAAA,CAAOxL,CAAAA,EAAgE,CACtE,IAAMH,CAAAA,CAAwC,EAAC,CAC/CA,CAAAA,CAAO,MAAA,CAAS,IAAI,IAAA,EAAK,CAAE,QAAA,EAAS,CAAI,CAAA,CACxCA,CAAAA,CAAO,OAAA,CAAU,IAAI,IAAA,EAAK,CAAE,QAAA,EAAS,CAAI,CAAA,CAGzC,IAAMmG,CAAAA,CAAO,IAAI,IAAA,CAAKhG,CAAAA,CAAO,IAAA,CAAK,MAAA,CAAQH,CAAAA,CAAO,MAAA,CAAS,CAAA,CAAG,CAAC,CAAA,CACxD4L,CAAAA,CAAY,IAAI,IAAA,CAAK,cAAA,CAAezL,CAAAA,CAAO,MAAA,CAAQ,CAAE,KAAA,CAAO,MAAO,CAAC,CAAA,CACpE0L,CAAAA,CAAiB,IAAI,IAAA,CAAK,cAAA,CAAe1L,CAAAA,CAAO,MAAA,CAAQ,CAAE,MAAO,OAAQ,CAAC,CAAA,CAGhF,OAAAH,CAAAA,CAAO,IAAA,CAAO4L,CAAAA,CAAU,MAAA,CAAOzF,CAAI,CAAA,CACnCnG,CAAAA,CAAO,SAAA,CAAY6L,CAAAA,CAAe,MAAA,CAAO1F,CAAI,CAAA,CACtCnG,CACR,CAAA,CACA,MAAA,CAAO8L,CAAAA,CAAmC3L,CAAAA,CAA8B,CACvE,GAAI2L,CAAAA,EAAU,IAAA,CACb,OAED,IAAMrC,CAAAA,CAAQqC,CAAAA,EAAU,CAAA,CAAI,CAAA,CAAIA,CAAAA,CAAS,EAAA,CAAK,EAAA,CAAKA,CAAAA,CAC7C3F,CAAAA,CAAO,IAAI,IAAA,CAAKhG,CAAAA,CAAO,IAAA,CAAK,MAAA,CAAQsJ,CAAAA,CAAQ,CAAA,CAAG,CAAC,CAAA,CAChDmC,CAAAA,CAAY,IAAI,IAAA,CAAK,cAAA,CAAezL,CAAAA,CAAO,MAAA,CAAQ,CAAE,KAAA,CAAO,MAAO,CAAC,CAAA,CACpE0L,CAAAA,CAAiB,IAAI,IAAA,CAAK,cAAA,CAAe1L,CAAAA,CAAO,MAAA,CAAQ,CAAE,KAAA,CAAO,OAAQ,CAAC,CAAA,CAGhFA,CAAAA,CAAO,KAAA,CAAM,MAAA,CAASsJ,CAAAA,CACtBtJ,CAAAA,CAAO,KAAA,CAAM,IAAA,CAAOyL,CAAAA,CAAU,MAAA,CAAOzF,CAAI,CAAA,CACzChG,CAAAA,CAAO,KAAA,CAAM,SAAA,CAAY0L,CAAAA,CAAe,MAAA,CAAO1F,CAAI,EACpD,CAAA,CACA,KAAA,CAAQhG,CAAAA,EAAiC,CACxC,GAAI,CAACA,CAAAA,CAAO,IAAA,CAAK,QAAA,CAAS,QAAA,CAAS0J,mBAAAA,CAAS,IAAA,CAAK,KAAK,CAAA,CAAG,CACxD1J,CAAAA,CAAO,KAAA,CAAM,KAAA,CAAQ,IAAA,CACrB,MACD,CACA,IAAM4L,CAAAA,CAAiC,EAAC,CAClCH,CAAAA,CAAY,IAAI,IAAA,CAAK,cAAA,CAAezL,CAAAA,CAAO,MAAA,CAAQ,CAAE,KAAA,CAAO,MAAO,CAAC,CAAA,CACpE0L,CAAAA,CAAiB,IAAI,IAAA,CAAK,cAAA,CAAe1L,CAAAA,CAAO,OAAQ,CAAE,KAAA,CAAO,OAAQ,CAAC,CAAA,CAEhF,IAAA,IAASxB,CAAAA,CAAI,CAAA,CAAGA,CAAAA,CAAI,EAAA,CAAIA,CAAAA,EAAAA,CAAK,CAC5B,IAAMwH,CAAAA,CAAO,IAAI,IAAA,CAAKhG,CAAAA,CAAO,IAAA,CAAK,MAAA,CAAQxB,CAAAA,CAAG,CAAC,CAAA,CACxCqN,CAAAA,CAAcrN,CAAAA,CAAI,CAAA,CAClB+M,CAAAA,CAAavL,CAAAA,CAAO,QAAA,CAAS,YAAA,CAAaA,CAAAA,CAAO,IAAA,CAAK,MAAA,CAAQ6L,CAAW,CAAA,CAE/ED,CAAAA,CAAO,IAAA,CAAK,CACX,GAAA,CAAK,CAAA,eAAA,EAAkBpN,CAAC,CAAA,CAAA,CACxB,IAAA,CAAMkL,mBAAAA,CAAS,IAAA,CAAK,KAAA,CACpB,QAAA,CAAUA,mBAAAA,CAAS,IAAA,CAAKA,mBAAAA,CAAS,IAAA,CAAK,KAAK,CAAA,CAC3C,KAAA,CAAO,CAAA,EAAGmC,CAAW,CAAA,CAAA,CACrB,WAAA,CAAaA,CAAAA,CACb,IAAA,CAAMJ,CAAAA,CAAU,MAAA,CAAOzF,CAAI,CAAA,CAC3B,SAAA,CAAW0F,CAAAA,CAAe,MAAA,CAAO1F,CAAI,CAAA,CACrC,UAAA,CAAAuF,CAAAA,CACA,OAAA,CAASvL,CAAAA,CAAO,KAAA,CAAM,OAAA,GAAY6L,CACnC,CAAC,EACF,CAEA7L,CAAAA,CAAO,KAAA,CAAM,KAAA,CAAQ4L,EACtB,CAAA,CAEA,MAAA,CAAQ,CACP,IAAA,CAAO5L,CAAAA,EAAiC,CACvC,IAAM3C,CAAAA,CAAO2C,CAAAA,CAAO,KAAA,CAAM,MAAA,CAAS,CAAA,CACnC,GAAI3C,CAAAA,CAAO,CAAA,CACV,OAED2C,CAAAA,CAAO,KAAA,CAAM,MAAA,CAAS3C,CAAAA,CACtB,IAAM2I,CAAAA,CAAO,IAAI,IAAA,CAAKhG,CAAAA,CAAO,IAAA,CAAK,MAAA,CAAQ3C,CAAAA,CAAO,CAAA,CAAG,CAAC,CAAA,CAC/CoO,CAAAA,CAAY,IAAI,IAAA,CAAK,cAAA,CAAezL,CAAAA,CAAO,MAAA,CAAQ,CAAE,KAAA,CAAO,MAAO,CAAC,CAAA,CACpE0L,CAAAA,CAAiB,IAAI,KAAK,cAAA,CAAe1L,CAAAA,CAAO,MAAA,CAAQ,CAAE,KAAA,CAAO,OAAQ,CAAC,CAAA,CAGhFA,CAAAA,CAAO,KAAA,CAAM,IAAA,CAAOyL,CAAAA,CAAU,MAAA,CAAOzF,CAAI,CAAA,CACzChG,CAAAA,CAAO,KAAA,CAAM,SAAA,CAAY0L,CAAAA,CAAe,MAAA,CAAO1F,CAAI,EACpD,CAAA,CACA,IAAA,CAAOhG,CAAAA,EAAiC,CACvC,IAAM3C,CAAAA,CAAO2C,CAAAA,CAAO,KAAA,CAAM,MAAA,CAAS,CAAA,CACnC,GAAI3C,CAAAA,CAAO,EAAA,CACV,OAED2C,CAAAA,CAAO,KAAA,CAAM,MAAA,CAAS3C,CAAAA,CAEtB,IAAM2I,CAAAA,CAAO,IAAI,IAAA,CAAKhG,CAAAA,CAAO,IAAA,CAAK,MAAA,CAAQ3C,CAAAA,CAAO,CAAA,CAAG,CAAC,CAAA,CAC/CoO,CAAAA,CAAY,IAAI,IAAA,CAAK,cAAA,CAAezL,CAAAA,CAAO,MAAA,CAAQ,CAAE,KAAA,CAAO,MAAO,CAAC,CAAA,CACpE0L,EAAiB,IAAI,IAAA,CAAK,cAAA,CAAe1L,CAAAA,CAAO,MAAA,CAAQ,CAAE,KAAA,CAAO,OAAQ,CAAC,CAAA,CAGhFA,CAAAA,CAAO,KAAA,CAAM,IAAA,CAAOyL,CAAAA,CAAU,MAAA,CAAOzF,CAAI,CAAA,CACzChG,CAAAA,CAAO,KAAA,CAAM,SAAA,CAAY0L,CAAAA,CAAe,MAAA,CAAO1F,CAAI,EACpD,CACD,CACD,CAAA,CC3FA,SAAS8F,EAAAA,CAAYb,CAAAA,CAAgBc,CAAAA,CAA8C,CAClF,IAAMC,CAAAA,CAAgC,EAAC,CACjCP,CAAAA,CAAY,IAAI,IAAA,CAAK,cAAA,CAAeR,CAAAA,CAAQ,CAAE,OAAA,CAAS,MAAO,CAAC,CAAA,CAC/DS,CAAAA,CAAiB,IAAI,IAAA,CAAK,cAAA,CAAeT,CAAAA,CAAQ,CAAE,OAAA,CAAS,OAAQ,CAAC,CAAA,CAE3E,IAAA,IAASzM,CAAAA,CAAI,CAAA,CAAGA,CAAAA,CAAI,CAAA,CAAGA,CAAAA,EAAAA,CAAK,CAC3B,IAAMyN,CAAAA,CAAAA,CAAYF,CAAAA,CAAiBvN,CAAAA,EAAK,CAAA,CAClCwH,CAAAA,CAAO,IAAI,IAAA,CAAK,IAAA,CAAM,CAAA,CAAGiG,CAAAA,CAAW,CAAC,CAAA,CAE3CD,CAAAA,CAAQ,IAAA,CAAK,CACZ,KAAA,CAAOC,CAAAA,CAAS,QAAA,EAAS,CACzB,IAAA,CAAMR,CAAAA,CAAU,MAAA,CAAOzF,CAAI,CAAA,CAC3B,SAAA,CAAW0F,CAAAA,CAAe,MAAA,CAAO1F,CAAI,CACtC,CAAC,EACF,CAEA,OAAOgG,CACR,CAEA,IAAOE,EAAAA,CAAQ,CACd,IAAA,CAAOlM,CAAAA,EAA8D,CACpE,IAAMH,CAAAA,CAAsC,EAAC,CAC7CA,CAAAA,CAAO,MAAA,CAAS,IAAI,IAAA,EAAK,CAAE,OAAA,EAAQ,CACnCA,CAAAA,CAAO,OAAA,CAAU,IAAI,IAAA,EAAK,CAAE,OAAA,EAAQ,CAGpC,IAAMmG,CAAAA,CAAO,IAAI,IAAA,CAAKhG,CAAAA,CAAO,IAAA,CAAK,MAAA,CAAQA,CAAAA,CAAO,KAAA,CAAM,MAAA,CAAS,CAAA,CAAGH,CAAAA,CAAO,MAAM,CAAA,CAC1E4L,CAAAA,CAAY,IAAI,IAAA,CAAK,cAAA,CAAezL,CAAAA,CAAO,MAAA,CAAQ,CAAE,OAAA,CAAS,MAAO,CAAC,CAAA,CACtE0L,CAAAA,CAAiB,IAAI,IAAA,CAAK,cAAA,CAAe1L,CAAAA,CAAO,MAAA,CAAQ,CAAE,OAAA,CAAS,OAAQ,CAAC,CAAA,CAGlF,OAAAH,CAAAA,CAAO,IAAA,CAAO4L,CAAAA,CAAU,MAAA,CAAOzF,CAAI,CAAA,CACnCnG,CAAAA,CAAO,SAAA,CAAY6L,CAAAA,CAAe,MAAA,CAAO1F,CAAI,CAAA,CAC7CnG,CAAAA,CAAO,OAAA,CAAUiM,EAAAA,CAAY9L,CAAAA,CAAO,MAAA,CAAQA,CAAAA,CAAO,cAAc,CAAA,CAE1DH,CACR,CAAA,CACA,MAAA,CAAOsM,CAAAA,CAAiCnM,CAAAA,CAA8B,CACrE,GAAImM,CAAAA,EAAQ,IAAA,CACX,OAED,IAAM5C,CAAAA,CAAM4C,CAAAA,CACNnG,CAAAA,CAAO,IAAI,IAAA,CAAKhG,CAAAA,CAAO,IAAA,CAAK,MAAA,CAAQA,CAAAA,CAAO,KAAA,CAAM,MAAA,CAAS,CAAA,CAAGuJ,CAAG,CAAA,CAChEkC,CAAAA,CAAY,IAAI,IAAA,CAAK,cAAA,CAAezL,CAAAA,CAAO,MAAA,CAAQ,CAAE,OAAA,CAAS,MAAO,CAAC,CAAA,CACtE0L,CAAAA,CAAiB,IAAI,IAAA,CAAK,cAAA,CAAe1L,CAAAA,CAAO,MAAA,CAAQ,CAAE,OAAA,CAAS,OAAQ,CAAC,CAAA,CAGlFA,CAAAA,CAAO,GAAA,CAAI,MAAA,CAASuJ,CAAAA,CACpBvJ,CAAAA,CAAO,GAAA,CAAI,IAAA,CAAOyL,CAAAA,CAAU,MAAA,CAAOzF,CAAI,CAAA,CACvChG,CAAAA,CAAO,GAAA,CAAI,SAAA,CAAY0L,CAAAA,CAAe,MAAA,CAAO1F,CAAI,EAClD,CAAA,CACA,KAAA,CAAQhG,CAAAA,EAAiC,CACxC,GAAI,CAACA,CAAAA,CAAO,IAAA,CAAK,QAAA,CAAS,QAAA,CAAS0J,mBAAAA,CAAS,IAAA,CAAK,GAAG,CAAA,CAAG,CACtD1J,CAAAA,CAAO,GAAA,CAAI,KAAA,CAAQ,IAAA,CACnB,MACD,CAEA,IAAMoM,CAAAA,CAA+B,EAAC,CAChCC,CAAAA,CAAQ,IAAI,IAAA,CAEZC,CAAAA,CAActM,CAAAA,CAAO,IAAA,CAAK,MAAA,CAC1BuM,CAAAA,CAAevM,CAAAA,CAAO,KAAA,CAAM,MAAA,CAAS,CAAA,CACrCwM,CAAAA,CAAW,IAAI,IAAA,CAAKF,CAAAA,CAAaC,CAAAA,CAAc,CAAC,CAAA,CAEhDE,CAAAA,CADU,IAAI,IAAA,CAAKH,CAAAA,CAAaC,CAAAA,CAAe,CAAA,CAAG,CAAC,CAAA,CACtB,OAAA,EAAQ,CACrCG,CAAAA,CAAkB,IAAI,IAAA,CAAKJ,CAAAA,CAAaC,CAAAA,CAAc,CAAC,CAAA,CAAE,OAAA,EAAQ,CAEjEI,CAAAA,CAAAA,CAAkBH,CAAAA,CAAS,MAAA,EAAO,CAAIxM,CAAAA,CAAO,cAAA,CAAiB,CAAA,EAAK,CAAA,CACnE4M,EAAa,EAAA,CAGnB,IAAA,IAASpO,CAAAA,CAAI,CAAA,CAAGA,CAAAA,CAAIoO,CAAAA,CAAYpO,CAAAA,EAAAA,CAAK,CACpC,IAAIqO,CAAAA,CACA3P,CAAAA,CACA4P,CAAAA,CAAe,KAAA,CACfC,CAAAA,CAAU,KAAA,CACVxB,CAAAA,CAAa,KAAA,CAEb/M,CAAAA,CAAImO,CAAAA,EAEPE,CAAAA,CAAYH,CAAAA,CAAkBC,CAAAA,CAAiBnO,CAAAA,CAAI,CAAA,CACnDtB,CAAAA,CAAM,CAAA,kBAAA,EAAqB2P,CAAS,CAAA,CAAA,CACpCC,CAAAA,CAAe,IAAA,EACLtO,CAAAA,EAAKmO,CAAAA,CAAiBF,CAAAA,EAEhCI,CAAAA,CAAYrO,CAAAA,CAAImO,CAAAA,CAAiBF,CAAAA,CAAqB,CAAA,CACtDvP,CAAAA,CAAM,CAAA,kBAAA,EAAqB2P,CAAS,CAAA,CAAA,CACpCC,CAAAA,CAAe,IAAA,GAGfD,CAAAA,CAAYrO,CAAAA,CAAImO,CAAAA,CAAiB,CAAA,CACjCzP,CAAAA,CAAM,CAAA,aAAA,EAAgB8C,CAAAA,CAAO,KAAA,CAAM,MAAM,CAAA,CAAA,EAAI6M,CAAS,CAAA,CAAA,CAItDE,CAAAA,CADa,IAAI,IAAA,CAAKT,CAAAA,CAAaC,CAAAA,CAAcM,CAAS,CAAA,CAC3C,YAAA,EAAa,GAAMR,CAAAA,CAAM,YAAA,EAAa,CAErDd,CAAAA,CAAavL,CAAAA,CAAO,QAAA,CAAS,OAAA,CAAQA,CAAAA,CAAO,IAAA,CAAK,MAAA,CAAQA,CAAAA,CAAO,KAAA,CAAM,MAAA,CAAQ6M,CAAS,CAAA,CAAA,CAGxF,IAAMG,CAAAA,CAASH,CAAAA,CAAU,QAAA,EAAS,CAElCT,CAAAA,CAAK,IAAA,CAAK,CACT,GAAA,CAAAlP,CAAAA,CACA,IAAA,CAAMwM,mBAAAA,CAAS,IAAA,CAAK,GAAA,CACpB,QAAA,CAAUA,mBAAAA,CAAS,IAAA,CAAKA,mBAAAA,CAAS,IAAA,CAAK,GAAG,CAAA,CACzC,KAAA,CAAOsD,CAAAA,CACP,WAAA,CAAaH,CAAAA,CACb,IAAA,CAAMG,CAAAA,CACN,SAAA,CAAWA,CAAAA,CACX,UAAA,CAAAzB,CAAAA,CACA,OAAA,CAAAwB,CAAAA,CACA,YAAA,CAAAD,CACD,CAAC,EACF,CAEA9M,CAAAA,CAAO,GAAA,CAAI,KAAA,CAAQoM,EACpB,CACD,CAAA,CCtHA,IAAOa,EAAAA,CAAQ,CACd,IAAA,CAAOjN,CAAAA,EAA+D,CACrE,IAAMH,CAAAA,CAAuC,EAAC,CAC9C,OAAAA,CAAAA,CAAO,MAAA,CAAS,IAAI,IAAA,EAAK,CAAE,QAAA,EAAS,CAE7BA,CACR,CAAA,CACA,MAAA,CAAO+K,CAAAA,CAAkC5K,CAAAA,CAA8B,CAClE4K,CAAAA,EAAS,IAAA,GAGb5K,CAAAA,CAAO,IAAA,CAAK,MAAA,CAAS4K,CAAAA,EACtB,CAAA,CACA,KAAA,CAAQ5K,CAAAA,EAAiC,CACxC,GAAI,CAACA,CAAAA,CAAO,IAAA,CAAK,QAAA,CAAS,QAAA,CAAS0J,mBAAAA,CAAS,IAAA,CAAK,IAAI,CAAA,CAAG,CACvD1J,CAAAA,CAAO,IAAA,CAAK,KAAA,CAAQ,IAAA,CACpB,MACD,CACA,IAAMkN,CAAAA,CAAgC,EAAC,CACxBlN,CAAAA,CAAO,IAAA,CAAK,YAAA,KACrBmN,CAAAA,CAASnN,CAAAA,CAAO,IAAA,CAAK,MAAA,CACrBsK,CAAAA,CAAWtK,CAAAA,CAAO,aAAe,KAAA,CACjCoN,CAAAA,CAAUpN,CAAAA,CAAO,UAAA,GAAe,KAAA,CAAQ,EAAA,CAAK,EAAA,CAE7C2K,CAAAA,CAAO3K,CAAAA,CAAO,IAAA,CAAK,MAAA,CACnBsJ,CAAAA,CAAQtJ,CAAAA,CAAO,KAAA,CAAM,MAAA,CACrBuJ,CAAAA,CAAMvJ,CAAAA,CAAO,GAAA,CAAI,MAAA,CAEjByG,CAAAA,CAAQzG,CAAAA,CAAO,QAAA,CAAS,oBAAA,CAAqB2K,CAAAA,CAAMrB,CAAAA,CAAOC,CAAG,EACnE,IAAA,IAAS/K,CAAAA,CAAI,CAAA,CAAGA,CAAAA,CAAI4O,CAAAA,CAAS5O,CAAAA,EAAAA,CAAK,CACjC,IAAM4I,CAAAA,CAAOkD,CAAAA,CAAW9L,CAAAA,CAAI,CAAA,CAAIA,CAAAA,CAC1B6O,CAAAA,CAAUjG,CAAAA,CAAK,QAAA,EAAS,CACxBmE,CAAAA,CAAa9E,CAAAA,CAAM,OAAA,CAAQW,CAAI,CAAA,CAErC8F,CAAAA,CAAM,IAAA,CAAK,CACV,GAAA,CAAK,CAAA,cAAA,EAAiB1O,CAAC,CAAA,CAAA,CACvB,IAAA,CAAMkL,mBAAAA,CAAS,IAAA,CAAK,IAAA,CACpB,QAAA,CAAUA,mBAAAA,CAAS,KAAKA,mBAAAA,CAAS,IAAA,CAAK,IAAI,CAAA,CAC1C,KAAA,CAAO2D,CAAAA,CACP,WAAA,CAAajG,CAAAA,CACb,UAAA,CAAAmE,CAAAA,CACA,QAAA,CAAU,CAACjB,CAAAA,CACX,IAAA,CAAM,CAAA,EAAG+C,CAAAA,CAAQ,QAAA,CAAS,CAAA,CAAG,GAAG,CAAC,CAAA,EAAGF,CAAAA,CAAO,IAAA,CAAK,IAAI,CAAA,CAAA,CACpD,SAAA,CAAW,CAAA,EAAGE,CAAAA,CAAQ,QAAA,CAAS,CAAA,CAAG,GAAG,CAAC,CAAA,EAAGF,CAAAA,CAAO,KAAA,CAAM,IAAI,CAAA,CAAA,CAC1D,MAAA,CAAQA,CAAAA,CAAO,IAAA,CAAK,IAAA,CACpB,WAAA,CAAaA,CAAAA,CAAO,KAAA,CAAM,IAC3B,CAAC,EACF,CAEAnN,CAAAA,CAAO,IAAA,CAAK,KAAA,CAAQkN,EACrB,CACD,CAAA,CCnDA,IAAOI,EAAAA,CAAQ,CACd,IAAA,CAAOtN,CAAAA,EAAiE,CACvE,IAAMH,CAAAA,CAAyC,EAAC,CAChD,OAAAA,CAAAA,CAAO,MAAA,CAAS,IAAI,IAAA,EAAK,CAAE,UAAA,EAAW,CAE/BA,CACR,CAAA,CACA,MAAA,CAAO0N,CAAAA,CAAoCvN,CAAAA,CAA8B,CACpEuN,CAAAA,EAAW,IAAA,GAGfvN,CAAAA,CAAO,MAAA,CAAO,MAAA,CAASuN,CAAAA,EACxB,CAAA,CACA,KAAA,CAAQvN,CAAAA,EAAiC,CACxC,GAAI,CAACA,CAAAA,CAAO,IAAA,CAAK,QAAA,CAAS,QAAA,CAAS0J,mBAAAA,CAAS,IAAA,CAAK,MAAM,CAAA,CAAG,CACzD1J,CAAAA,CAAO,MAAA,CAAO,KAAA,CAAQ,IAAA,CACtB,MACD,CACA,IAAMwN,CAAAA,CAAkC,EAAC,CAC1BxN,CAAAA,CAAO,IAAA,CAAK,YAAA,KACrBmN,CAAAA,CAASnN,CAAAA,CAAO,IAAA,CAAK,MAAA,CACrBsK,CAAAA,CAAWtK,CAAAA,CAAO,UAAA,GAAe,KAAA,CAEjC2K,CAAAA,CAAO3K,CAAAA,CAAO,IAAA,CAAK,MAAA,CACnBsJ,CAAAA,CAAQtJ,EAAO,KAAA,CAAM,MAAA,CACrBuJ,CAAAA,CAAMvJ,CAAAA,CAAO,GAAA,CAAI,MAAA,CACjBoH,CAAAA,CAAOpH,CAAAA,CAAO,IAAA,CAAK,MAAA,CAEnByG,CAAAA,CAAQzG,CAAAA,CAAO,QAAA,CAAS,oBAAA,CAAqB2K,CAAAA,CAAMrB,CAAAA,CAAOC,CAAG,EACnE,IAAA,IAAS/K,CAAAA,CAAI,CAAA,CAAGA,CAAAA,CAAI,EAAA,CAAIA,CAAAA,EAAAA,CAAK,CAC5B,IAAMiP,CAAAA,CAAYjP,CAAAA,CAAE,QAAA,EAAS,CACvB+M,CAAAA,CAAa9E,CAAAA,CAAM,aAAA,CAAcW,CAAAA,CAAM5I,CAAC,CAAA,CAC9CgP,CAAAA,CAAQ,IAAA,CAAK,CACZ,GAAA,CAAK,CAAA,cAAA,EAAiBpG,CAAI,CAAA,QAAA,EAAW5I,CAAC,CAAA,CAAA,CACtC,IAAA,CAAMkL,mBAAAA,CAAS,IAAA,CAAK,MAAA,CACpB,QAAA,CAAUA,mBAAAA,CAAS,IAAA,CAAKA,mBAAAA,CAAS,IAAA,CAAK,MAAM,CAAA,CAC5C,KAAA,CAAO+D,CAAAA,CACP,WAAA,CAAajP,CAAAA,CACb,UAAA,CAAA+M,CAAAA,CACA,QAAA,CAAU,CAACjB,CAAAA,CACX,IAAA,CAAM,CAAA,EAAGmD,CAAAA,CAAU,QAAA,CAAS,CAAA,CAAG,GAAG,CAAC,CAAA,EAAGN,CAAAA,CAAO,IAAA,CAAK,MAAM,CAAA,CAAA,CACxD,SAAA,CAAW,CAAA,EAAGM,CAAAA,CAAU,QAAA,CAAS,CAAA,CAAG,GAAG,CAAC,CAAA,EAAGN,CAAAA,CAAO,KAAA,CAAM,MAAM,CAAA,CAAA,CAC9D,MAAA,CAAQA,CAAAA,CAAO,IAAA,CAAK,MAAA,CACpB,WAAA,CAAaA,CAAAA,CAAO,KAAA,CAAM,MAC3B,CAAC,EACF,CAEAnN,CAAAA,CAAO,MAAA,CAAO,KAAA,CAAQwN,EACvB,CACD,CAAA,CCjDA,IAAOE,EAAAA,CAAQ,CACd,IAAA,CAAO1N,CAAAA,EAAiE,CACvE,IAAMH,CAAAA,CAAyC,EAAC,CAChD,OAAAA,CAAAA,CAAO,MAAA,CAAS,IAAI,IAAA,EAAK,CAAE,UAAA,EAAW,CAE/BA,CACR,CAAA,CACA,OAAO8N,CAAAA,CAAoC3N,CAAAA,CAA8B,CACpE2N,CAAAA,EAAW,IAAA,GAGf3N,CAAAA,CAAO,MAAA,CAAO,MAAA,CAAS2N,CAAAA,EACxB,CAAA,CACA,KAAA,CAAQ3N,CAAAA,EAAiC,CACxC,GAAI,CAACA,CAAAA,CAAO,IAAA,CAAK,QAAA,CAAS,QAAA,CAAS0J,mBAAAA,CAAS,IAAA,CAAK,MAAM,CAAA,CAAG,CACzD1J,CAAAA,CAAO,MAAA,CAAO,KAAA,CAAQ,IAAA,CACtB,MACD,CACA,IAAM4N,CAAAA,CAAkC,EAAC,CAC1B5N,CAAAA,CAAO,IAAA,CAAK,YAAA,KACrBmN,CAAAA,CAASnN,CAAAA,CAAO,IAAA,CAAK,MAAA,CACrBsK,CAAAA,CAAWtK,CAAAA,CAAO,UAAA,GAAe,KAAA,CAEjC2K,CAAAA,CAAO3K,CAAAA,CAAO,IAAA,CAAK,MAAA,CACnBsJ,CAAAA,CAAQtJ,CAAAA,CAAO,KAAA,CAAM,MAAA,CACrBuJ,CAAAA,CAAMvJ,CAAAA,CAAO,GAAA,CAAI,MAAA,CACjBoH,CAAAA,CAAOpH,CAAAA,CAAO,IAAA,CAAK,MAAA,CACnBqH,CAAAA,CAASrH,CAAAA,CAAO,MAAA,CAAO,MAAA,CAEvByG,CAAAA,CAAQzG,CAAAA,CAAO,QAAA,CAAS,oBAAA,CAAqB2K,CAAAA,CAAMrB,CAAAA,CAAOC,CAAG,EACnE,IAAA,IAAS/K,CAAAA,CAAI,CAAA,CAAGA,CAAAA,CAAI,EAAA,CAAIA,CAAAA,EAAAA,CAAK,CAC5B,IAAMqP,CAAAA,CAAYrP,CAAAA,CAAE,QAAA,EAAS,CACvB+M,CAAAA,CAAa9E,CAAAA,CAAM,OAAA,CAAQW,CAAAA,CAAMC,CAAAA,CAAQ7I,CAAC,CAAA,CAEhDoP,CAAAA,CAAQ,IAAA,CAAK,CACZ,GAAA,CAAK,CAAA,cAAA,EAAiBxG,CAAI,CAAA,QAAA,EAAW5I,CAAC,CAAA,QAAA,EAAWA,CAAC,CAAA,CAAA,CAClD,IAAA,CAAMkL,mBAAAA,CAAS,IAAA,CAAK,MAAA,CACpB,QAAA,CAAUA,mBAAAA,CAAS,IAAA,CAAKA,mBAAAA,CAAS,IAAA,CAAK,MAAM,CAAA,CAC5C,KAAA,CAAOmE,CAAAA,CACP,WAAA,CAAarP,CAAAA,CACb,UAAA,CAAA+M,CAAAA,CACA,QAAA,CAAU,CAACjB,CAAAA,CACX,IAAA,CAAM,CAAA,EAAGuD,EAAU,QAAA,CAAS,CAAA,CAAG,GAAG,CAAC,CAAA,EAAGV,CAAAA,CAAO,IAAA,CAAK,MAAM,CAAA,CAAA,CACxD,SAAA,CAAW,CAAA,EAAGU,CAAAA,CAAU,QAAA,CAAS,CAAA,CAAG,GAAG,CAAC,CAAA,EAAGV,CAAAA,CAAO,KAAA,CAAM,MAAM,CAAA,CAAA,CAC9D,MAAA,CAAQA,CAAAA,CAAO,IAAA,CAAK,MAAA,CACpB,WAAA,CAAaA,CAAAA,CAAO,KAAA,CAAM,MAC3B,CAAC,EACF,CAEAnN,CAAAA,CAAO,MAAA,CAAO,KAAA,CAAQ4N,EACvB,CACD,CAAA,CCvCO,SAASE,EAAAA,CACfpR,CAAAA,CACAmG,CAAAA,CACC,CAlBF,IAAAhE,CAAAA,CAAAW,CAAAA,CAAAC,CAAAA,CAAAC,CAAAA,CAAAC,CAAAA,CAAAC,CAAAA,CAAAuB,CAAAA,CAAAC,CAAAA,CAAAC,CAAAA,CAAAC,CAAAA,CAAAG,CAAAA,CAAAC,CAAAA,CAAAC,CAAAA,CAAAC,CAAAA,CAAAC,CAAAA,CAAAC,CAAAA,CAAAC,CAAAA,CAAAC,CAAAA,CAAA+L,EAAAC,CAAAA,CAAAC,CAAAA,CAAAC,CAAAA,CAoBC,GAAM,CAAE,GAAA,CAAAhR,CAAAA,CAAK,KAAA,CAAA+E,CAAM,CAAA,CAAIvF,CAAAA,CACjB,CAAE,EAAA,CAAA6G,CAAAA,CAAI,YAAA,CAAAT,CAAAA,CAAc,KAAA,CAAAC,CAAM,CAAA,CAAIF,CAAAA,CAC9BY,CAAAA,CAAUX,CAAAA,CAA2BD,CAAAA,CAAU,KAAA,CAAtBU,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAI,KAAA,CAC7BvD,CAAAA,CAAAA,CAAUR,CAAAA,CAAAA,CAAAX,CAAAA,CAAAkE,CAAAA,CAAM,MAAA,GAAN,IAAA,CAAAlE,CAAAA,CAAgBoD,CAAAA,CAAM,IAAA,GAAtB,IAAA,CAAAzC,CAAAA,CAA8B,EAAC,CA2B/C,GAtBAQ,CAAAA,CAAO,cAAA,CACN,OAAOA,CAAAA,CAAO,cAAA,EAAmB,QAAA,CAC9B,CAACA,CAAAA,CAAO,cAAc,CAAA,CAAA,CACrBP,CAAAA,CAAAO,CAAAA,CAAO,cAAA,GAAP,IAAA,CAAAP,CAAAA,CAAyB,CAAC,GAAA,CAAK,GAAA,CAAK,GAAG,CAAA,CAC5CO,EAAO,cAAA,CACN,OAAOA,CAAAA,CAAO,cAAA,EAAmB,QAAA,CAC9B,CAACA,CAAAA,CAAO,cAAc,CAAA,CAAA,CACrBN,CAAAA,CAAAM,CAAAA,CAAO,cAAA,GAAP,IAAA,CAAAN,CAAAA,CAAyB,CAAC,GAAG,CAAA,CAClCM,CAAAA,CAAO,qBAAA,CAAA,CAAwBL,CAAAA,CAAAK,CAAAA,CAAO,qBAAA,GAAP,IAAA,CAAAL,CAAAA,CAAgC,GAAA,CAC/DK,CAAAA,CAAO,qBAAA,CAAA,CAAwBJ,CAAAA,CAAAI,CAAAA,CAAO,qBAAA,GAAP,IAAA,CAAAJ,CAAAA,CAAgC,GAAA,CAC/DI,CAAAA,CAAO,YAAA,CAAA,CAAemB,CAAAA,CAAAnB,CAAAA,CAAO,YAAA,GAAP,IAAA,CAAAmB,CAAAA,CAAuB,KAAA,CAC7CnB,CAAAA,CAAO,MAAA,CAAA,CAASoB,CAAAA,CAAApB,CAAAA,CAAO,MAAA,GAAP,IAAA,CAAAoB,CAAAA,CAAiB,UAAA,CACjCpB,CAAAA,CAAO,MAAA,CAAA,CAASqB,CAAAA,CAAArB,CAAAA,CAAO,MAAA,GAAP,IAAA,CAAAqB,CAAAA,CAAiB,OAAA,CACjCrB,CAAAA,CAAO,QAAA,CAAWA,CAAAA,CAAO,QAAA,EAAY,IAAA,EAAQA,CAAAA,CAAO,QAAA,EAAY,CAAA,CAAI,EAAA,CAAKA,CAAAA,CAAO,QAAA,CAChFA,CAAAA,CAAO,cAAA,CAAA,CAAiBsB,CAAAA,CAAAtB,CAAAA,CAAO,cAAA,GAAP,IAAA,CAAAsB,CAAAA,CAAyB,CAAA,CACjDtB,CAAAA,CAAO,UAAA,CAAA,CAAayB,CAAAA,CAAAzB,CAAAA,CAAO,UAAA,GAAP,IAAA,CAAAyB,CAAAA,CAAqB,KAAA,CAIzCzB,CAAAA,CAAO,IAAA,CAAA,CAAO0B,CAAAA,CAAA1B,CAAAA,CAAO,IAAA,GAAP,IAAA,CAAA0B,CAAAA,CAAe8H,EAAAA,CAASxJ,CAAa,CAAA,CAG/CA,CAAAA,CAAO,qBAAA,GAA0BA,CAAAA,CAAO,qBAAA,CAC3C,MAAM,IAAI,KAAA,CACT,0GAAA,CACC9C,CACF,CAAA,CAID8C,CAAAA,CAAO,IAAA,CAAA,CAAO2B,CAAAA,CAAA3B,CAAAA,CAAO,IAAA,GAAP,IAAA,CAAA2B,CAAAA,CAAekJ,EAAAA,CAAK,IAAA,CAAK7K,CAAM,CAAA,CAC7CA,CAAAA,CAAO,IAAA,CAAA,CAAO4B,CAAAA,CAAA5B,CAAAA,CAAO,IAAA,GAAP,IAAA,CAAA4B,CAAAA,CAAekJ,EAAAA,CAAK,IAAA,CAAK9K,CAAM,CAAA,CAC7CA,EAAO,IAAA,CAAA,CAAO6B,CAAAA,CAAA7B,CAAAA,CAAO,IAAA,GAAP,IAAA,CAAA6B,CAAAA,CAAeuJ,CAAAA,CAAK,IAAA,CAAKpL,CAAM,CAAA,CAC7CA,CAAAA,CAAO,KAAA,CAAA,CAAQ8B,CAAAA,CAAA9B,CAAAA,CAAO,KAAA,GAAP,IAAA,CAAA8B,CAAAA,CAAgB0J,CAAAA,CAAM,IAAA,CAAKxL,CAAM,CAAA,CAChDA,CAAAA,CAAO,GAAA,CAAA,CAAM+B,CAAAA,CAAA/B,CAAAA,CAAO,GAAA,GAAP,IAAA,CAAA+B,CAAAA,CAAcmK,EAAAA,CAAI,IAAA,CAAKlM,CAAM,CAAA,CAC1CA,CAAAA,CAAO,IAAA,CAAA,CAAOgC,CAAAA,CAAAhC,CAAAA,CAAO,IAAA,GAAP,IAAA,CAAAgC,CAAAA,CAAeiL,EAAAA,CAAK,IAAA,CAAKjN,CAAM,CAAA,CAC7CA,CAAAA,CAAO,MAAA,CAAA,CAAS+N,CAAAA,CAAA/N,CAAAA,CAAO,MAAA,GAAP,IAAA,CAAA+N,CAAAA,CAAiBT,EAAAA,CAAO,IAAA,CAAKtN,CAAM,CAAA,CACnDA,CAAAA,CAAO,MAAA,CAAA,CAASgO,CAAAA,CAAAhO,CAAAA,CAAO,MAAA,GAAP,IAAA,CAAAgO,CAAAA,CAAiBN,EAAAA,CAAO,IAAA,CAAK1N,CAAM,CAAA,CAGnD,IAAMmO,CAAAA,CAAW/D,EAAAA,CAAmBpK,CAAM,CAAA,CACtCoO,CAAAA,CAAY,KAAA,CACVvO,CAAAA,CAAS,EAAC,CAChB,GAAI4D,CAAAA,EAAU,IAAA,CAAM,CACnB,IAAM/E,CAAAA,CAASqE,CAAAA,CAAM,OAAA,CAAQ,QAAA,CAAWU,CAAAA,CAAO,KAAA,CAAMzD,CAAAA,CAAO,qBAAqB,CAAA,CAAI,CAACyD,CAAM,CAAA,CAC5F,IAAA,IAAW4K,CAAAA,IAAK3P,CAAAA,CAAQ,CACvB,IAAMqG,CAAAA,CAASG,EAAAA,CACdmJ,CAAAA,CACArO,CAAAA,CAAO,MAAA,CACPA,CAAAA,CAAO,cAAA,CACPA,CAAAA,CAAO,cAAA,CACPA,CAAAA,CAAO,qBACR,CAAA,CAGI+E,CAAAA,CAAO,IAAA,CAAK,KAAA,EAAShC,CAAAA,CAAM,KAAA,CAAM,MAAA,GAAW3F,mBAAAA,CAAM,MAAA,CAAO,QAAA,GAC5DgO,CAAAA,CAAK,MAAA,CAAOrG,CAAAA,CAAO,IAAA,CAAK,UAAA,CAAY/E,CAAM,CAAA,CAC1CwL,CAAAA,CAAM,OAAOzG,CAAAA,CAAO,IAAA,CAAK,WAAA,CAAa/E,CAAM,CAAA,CAC5CkM,EAAAA,CAAI,MAAA,CAAOnH,CAAAA,CAAO,IAAA,CAAK,SAAA,CAAW/E,CAAM,CAAA,CAAA,CAIzCmO,CAAAA,CAAS,MAAA,CAAOpJ,CAAM,CAAA,CAElBA,CAAAA,CAAO,IAAA,CAAK,KAAA,GACfqJ,CAAAA,CAAY,IAAA,CAAA,CAEb,IAAMpI,EAAAA,CAAAA,CAAOiI,CAAAA,CAAAlJ,CAAAA,CAAO,IAAA,CAAK,SAAA,GAAZ,IAAA,CAAAkJ,CAAAA,CAAyB,EAAA,CAChCrH,EAAAA,CAAO,EAAC,CACd,IAAA,IAAW+B,CAAAA,IAAK5D,CAAAA,CAAO,IAAA,CAClB4D,CAAAA,CAAE,SAAA,EAAa,IAAA,EAAQA,CAAAA,CAAE,YAAA,EAAgB,IAAA,EAG7C/B,EAAAA,CAAK,IAAA,CAAK5G,CAAAA,CAAO,UAAA,GAAe,KAAA,CAAQ2I,CAAAA,CAAE,SAAA,CAAYA,CAAAA,CAAE,YAAY,CAAA,CAErE9I,CAAAA,CAAO,IAAA,CACN,CAAA,EAAGmG,EAAI,CAAA,CAAA,EAAIhG,CAAAA,CAAO,YAAA,CAAe4G,EAAAA,CAAK,IAAA,CAAK5G,CAAAA,CAAO,qBAAqB,CAAA,CAAA,CAAKkO,CAAAA,CAAAtH,EAAAA,CAAK,CAAC,CAAA,GAAN,IAAA,CAAAsH,CAAAA,CAAW,EAAG,CAAA,CAAA,CAAG,IAAA,EAC9F,EACD,CACD,CAsBA,OAnBAlO,CAAAA,CAAO,QAAA,CAAWmO,CAAAA,CAElB/C,CAAAA,CAAK,KAAA,CAAMpL,CAAM,CAAA,CACjBwL,CAAAA,CAAM,KAAA,CAAMxL,CAAM,CAAA,CAClBkM,EAAAA,CAAI,KAAA,CAAMlM,CAAM,CAAA,CAChBiN,EAAAA,CAAK,KAAA,CAAMjN,CAAM,CAAA,CACjBsN,EAAAA,CAAO,KAAA,CAAMtN,CAAM,CAAA,CACnB0N,EAAAA,CAAO,KAAA,CAAM1N,CAAM,CAAA,CAEnB6K,EAAAA,CAAK,KAAA,CAAM7K,CAAM,CAAA,CACjB8K,EAAAA,CAAK,KAAA,CAAM9K,CAAM,CAAA,CACjB+C,CAAAA,CAAM,MAAA,CAAS/C,CAAAA,CAIX,CAAC+C,CAAAA,CAAM,OAAA,CAAQ,eAAA,EAIf,CAACqL,CAAAA,CACG3K,CAAAA,CAGDV,CAAAA,CAAM,OAAA,CAAQ,SAAWlD,CAAAA,CAAO,IAAA,CAAKG,CAAAA,CAAO,qBAAqB,CAAA,CAAIH,CAAAA,CAAO,CAAC,CAErF,CCnIO,SAASyO,EAAAA,CAGd5R,CAAAA,CAAkCmG,CAAAA,CAA+C,CAPnF,IAAAhE,CAAAA,CAAAW,CAAAA,CAAAC,CAAAA,CAAAC,CAAAA,CAAAC,CAAAA,CAAAC,CAAAA,CAAAuB,CAAAA,CAAAC,CAAAA,CAAAC,CAAAA,CAAAC,CAAAA,CASC,GAAM,CAAE,KAAA,CAAAW,CAAM,CAAA,CAAIvF,CAAAA,CACZ,CAAE,YAAA,CAAAoG,CAAAA,CAAc,eAAA,CAAAU,CAAAA,CAAiB,KAAA,CAAAT,CAAM,CAAA,CAAIF,CAAAA,CAE3C0L,CAAAA,CAAAA,CAAW1P,CAAAA,CAAAkE,CAAAA,CAAM,OAAA,CAAQ,QAAA,GAAd,IAAA,CAAAlE,CAAAA,CAA0B,KAAA,CACrCmB,CAAAA,CAAAA,CAAUP,CAAAA,CAAAA,CAAAD,CAAAA,CAAAuD,CAAAA,CAAM,MAAA,GAAN,IAAA,CAAAvD,CAAAA,CAAgByC,CAAAA,CAAM,MAAA,GAAtB,IAAA,CAAAxC,CAAAA,CAAgC,EAAC,CAC3CgE,CAAAA,CAAUX,EAA6BD,CAAAA,CAAU,KAAA,CAAxBE,CAAAA,CAAM,KAAA,CAC/BlD,CAAAA,CAAS,KAAA,CAAM,OAAA,CAAQ4D,CAAM,CAAA,CAAIA,CAAAA,CAASA,CAAAA,EAAU,IAAA,CAAO,EAAC,CAAI,CAACA,CAAM,CAAA,CAS7E,GAPAzD,CAAAA,CAAO,QAAA,CAAA,CAAWN,CAAAA,CAAAM,CAAAA,CAAO,QAAA,GAAP,IAAA,CAAAN,CAAAA,CAAmB,OAAA,CACrCM,CAAAA,CAAO,QAAA,CAAA,CAAWL,CAAAA,CAAAK,CAAAA,CAAO,QAAA,GAAP,IAAA,CAAAL,CAAAA,CAAmB,OAAA,CACrCK,CAAAA,CAAO,gBAAA,CAAA,CAAmBJ,CAAAA,CAAAI,CAAAA,CAAO,gBAAA,GAAP,IAAA,CAAAJ,CAAAA,CAA2B,IAAA,CAGrDI,CAAAA,CAAO,IAAA,CAAO,EAAC,CACfA,CAAAA,CAAO,OAAA,CAAU,EAAC,CAAA,CAAA,CACdmB,CAAAA,CAAAnB,CAAAA,CAAO,OAAA,GAAP,IAAA,CAAA,MAAA,CAAAmB,CAAAA,CAAgB,MAAA,EAAS,CAAA,CAAG,CAC/B,GAAI,CAAC,KAAA,CAAM,OAAA,CAAQnB,EAAO,OAAO,CAAA,CAChC,MAAM,IAAI,KAAA,CAAM,yDAAyD,CAAA,CAE1E,IAAA,IAASxB,CAAAA,CAAI,CAAA,CAAGA,CAAAA,CAAIwB,CAAAA,CAAO,OAAA,CAAQ,MAAA,CAAQxB,CAAAA,EAAAA,CAAK,CAC/C,IAAI6B,CAAAA,CAASL,CAAAA,CAAO,OAAA,CAAQxB,CAAC,CAAA,CAa7B,GAXI6B,CAAAA,EAAU,IAAA,CACbA,CAAAA,CAAS,CAAE,KAAA,CAAO,SAAA,CAAW,KAAA,CAAO,SAAA,CAAW,UAAA,CAAY,KAAM,CAAA,CAAA,CACvD,OAAOA,CAAAA,EAAW,QAAA,EAAY,OAAOA,CAAAA,EAAW,QAAA,IAC1DA,CAAAA,CAAS,CAAE,KAAA,CAAOA,CAAAA,CAAQ,KAAA,CAAOA,CAAAA,CAAQ,UAAA,CAAY,KAAM,CAAA,CAAA,CAGxDA,CAAAA,CAAO,UAAA,GAAe,IAAA,EACzBL,CAAAA,CAAO,IAAA,CAAK,IAAA,CAAKxB,CAAC,CAAA,CAGnB6B,CAAAA,CAAO,KAAA,CAAQ,CAAA,EAAG0C,CAAAA,CAAM,UAAA,CAAW,GAAG,CAAA,OAAA,EAAUvE,CAAC,CAAA,CAAA,CAC7C,EAAA,CAAA,CAAG4C,CAAAA,CAAAf,CAAAA,CAAO,UAAA,GAAP,IAAA,CAAAe,CAAAA,CAAqBpB,CAAAA,CAAO,QAAA,IAAaK,CAAAA,CAAAA,CAAS,CACxD,GAAIL,CAAAA,CAAO,kBAAA,CACV,MAAM,IAAI,KAAA,CACT,CAAA,OAAA,EAAU+C,CAAAA,CAAM,UAAA,CAAW,GAAG,CAAA,iBAAA,EAAoB/C,CAAAA,CAAO,QAAQ,CAAA,2BAAA,EACnC,IAAA,CAAK,SAAA,CAAUK,CAAM,CAAC,CAAA,CACrD,CAAA,CAEAA,CAAAA,CAAO,UAAA,CAAa,OAAA,GAAWA,CAAAA,CAAS,OAAA,CAAU,MAAA,CAAO,IAAA,CAAKA,CAAM,CAAA,CAAE,CAAC,EAEzE,CACA,GAAI,EAAA,CAAA,CAAGgB,CAAAA,CAAAhB,CAAAA,CAAO,UAAA,GAAP,IAAA,CAAAgB,CAAAA,CAAqBrB,CAAAA,CAAO,QAAA,IAAaK,CAAAA,CAAAA,CAAS,CACxD,GAAIL,CAAAA,CAAO,kBAAA,CACV,MAAM,IAAI,KAAA,CACT,CAAA,OAAA,EAAU+C,EAAM,UAAA,CAAW,GAAG,CAAA,iBAAA,EAAoB/C,CAAAA,CAAO,QAAQ,CAAA,2BAAA,EACnC,IAAA,CAAK,SAAA,CAAUK,CAAM,CAAC,CAAA,CACrD,CAAA,CAEAA,CAAAA,CAAO,UAAA,CAAa,OAAA,GAAWA,CAAAA,CAAS,OAAA,CAAA,CAAWiB,CAAAA,CAAAjB,CAAAA,CAAO,UAAA,GAAP,IAAA,CAAAiB,CAAAA,CAAqBtB,CAAAA,CAAO,SAEjF,CAEA,IAAMwO,CAAAA,CAAQ3O,CAAAA,CAAO,IAAA,CAAK,CAAC4O,CAAAA,CAAOrO,CAAAA,CAAKsO,CAAAA,GAAQ,CA/DlD,IAAA7P,CAAAA,CAAAW,CAAAA,CAgEI,OAAIiP,CAAAA,EAAS,IAAA,CACZA,CAAAA,CAAQ,CAAE,KAAA,CAAO,SAAA,CAAW,KAAA,CAAO,SAAU,CAAA,CAAA,CACnC,OAAOpO,CAAAA,EAAW,QAAA,EAAY,OAAOA,CAAAA,EAAW,QAAA,IAC1DoO,CAAAA,CAAQ,CAAE,KAAA,CAAOpO,CAAAA,CAAQ,KAAA,CAAOA,CAAO,CAAA,CAAA,CAExCqO,CAAAA,CAAItO,CAAG,CAAA,CAAIqO,CAAAA,CAEVA,CAAAA,CAAAA,CAAM5P,CAAAA,CAAA4P,CAAAA,CAAM,UAAA,GAAN,IAAA,CAAA5P,CAAAA,CAAoBmB,CAAAA,CAAO,QAAQ,CAAA,GACzCK,CAAAA,CAAAA,CAAOb,CAAAA,CAAAa,CAAAA,CAAO,UAAA,GAAP,IAAA,CAAAb,CAAAA,CAAqBQ,CAAAA,CAAO,QAAQ,CAE7C,CAAC,CAAA,CACDK,CAAAA,CAAO,UAAA,CAAamO,CAAAA,EAAS,IAAA,CACzBnO,CAAAA,CAAO,UAAA,GAAe,IAAA,EACzBL,CAAAA,CAAO,OAAA,CAAQ,IAAA,CAAKxB,CAAC,CAAA,CAItBwB,CAAAA,CAAO,OAAA,CAAQxB,CAAC,CAAA,CAAI6B,EACrB,CACD,CAAA,KACCL,CAAAA,CAAO,OAAA,CAAU,EAAC,CAMnB,OAHA+C,CAAAA,CAAM,MAAA,CAAU/C,CAAAA,EAAA,IAAA,CAAAA,CAAAA,CAAU,EAAC,CAGvBH,CAAAA,CAAO,MAAA,CAAS,CAAA,EAAKG,CAAAA,CAAO,OAAA,CAAQ,MAAA,EAAU,CAAA,CAC1C,IAAA,CAQDH,CAAAA,CAAO,MAAA,EAAU,CAAA,CAAI,OAAY0O,CAAAA,CAAW1O,CAAAA,CAASA,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAS,CAAA,CA0BtE,CCpHO,SAAS8O,EAAAA,CACfjS,CAAAA,CACAmG,CAAAA,CACC,CACD,GAAM,CAAE,KAAA,CAAAZ,CAAM,CAAA,CAAIvF,CAAAA,CACZ,CAAE,EAAA,CAAA6G,CAAAA,CAAI,YAAA,CAAAT,CAAa,CAAA,CAAID,CAAAA,CAGzB9D,CAAAA,CAAQ,IAAA,CACZ,OAAIkD,CAAAA,CAAM,IAAA,CAAK,UAAA,CAAW,QAAQ,CAAA,CACjClD,CAAAA,CAAQuP,EAAAA,CAAmB5R,CAAAA,CAAcmG,CAAgB,CAAA,CAC/CZ,CAAAA,CAAM,IAAA,GAAS,UAAA,CACzBlD,CAAAA,CAAQ6D,EAAAA,CAAqBlG,CAAAA,CAAcmG,CAAgB,CAAA,CACjDZ,CAAAA,CAAM,IAAA,GAAS,MAAA,CACzBlD,CAAAA,CAAQuE,EAAAA,CAAiB5G,CAAAA,CAAcmG,CAAgB,CAAA,CAC7CZ,CAAAA,CAAM,IAAA,GAAS,QAAA,CACzBlD,CAAAA,CAAQ8E,EAAAA,CAAmBnH,CAAAA,CAAOmG,CAAS,CAAA,CACjCZ,CAAAA,CAAM,IAAA,GAAS,KAAA,CACzBlD,CAAAA,CAAQ6F,EAAAA,CAAgBlI,CAAAA,CAAOmG,CAAS,CAAA,CAC9BZ,CAAAA,CAAM,IAAA,GAAS,MAAA,CACzBlD,CAAAA,CAAQ+O,EAAAA,CAAiBpR,CAAAA,CAAcmG,CAAgB,CAAA,CAEvD9D,CAAAA,CAAQ+D,CAAAA,GAAiB,IAAA,CAAOD,CAAAA,CAAU,KAAA,CAAQU,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAI,KAAA,CAInDxE,CAAAA,GAAU,EAAA,EACTkD,CAAAA,CAAM,IAAA,GAAS,UAAA,GAClBlD,CAAAA,CAAQ,IAAA,CAAA,CAIHA,CACR,CCnCA,IAAM6P,EAAAA,CAAU,WAAA,CACT,SAASC,EAAAA,CAIdnS,CAAAA,CAAkCoS,CAAAA,CAA0BC,CAAAA,CAAiC,CAC9F,GAAM,CAAE,GAAA,CAAA7R,CAAAA,CAAK,KAAA,CAAA+E,CAAAA,CAAO,OAAA,CAAApE,CAAAA,CAAS,KAAA,CAAAlB,CAAM,CAAA,CAAID,CAAAA,CAevCsS,YAAAA,CAAMrS,CAAAA,CAAO,MAAOsS,CAAAA,EAAY,CA5BjC,IAAApQ,CAAAA,CAAAW,CAAAA,CAAAC,CAAAA,CA6BE,IAAMsD,CAAAA,CAAQkM,CAAAA,CAAQ,QAAA,CAGtB,GAAIlM,CAAAA,CAAM,UAAA,CAAW6L,EAAO,CAAA,CAC3B,OAAA,OAAO7L,CAAAA,CAAM,UAAA,CAAW6L,EAAO,CAAA,CACxB7L,CAAAA,CACD,GAAIA,CAAAA,CAAM,KAAA,CAAM,KAAA,CAAQ3F,mBAAAA,CAAM,KAAA,CAAM,IAAA,CAE1C,OAAO2F,CAAAA,CAER,IAAMmM,CAAAA,CAAOnM,CAAAA,CAAM,KAAA,CAAM,GAAA,CACnBoM,CAAAA,CAAUpM,CAAAA,CAAM,KAAA,CAAM,MAAA,CAEtBqM,CAAAA,CAAgBrM,CAAAA,CAAM,UAAA,CAAW,MAAA,CACjCsM,CAAAA,CAAAA,CAAoBxQ,CAAAA,CAAAkE,CAAAA,CAAM,UAAA,CAAW,UAAA,GAAjB,IAAA,CAAAlE,CAAAA,CACzBkE,CAAAA,CAAM,OAAA,CAAQ,eAAA,CACTuM,CAAAA,CAAQF,CAAAA,CAAgBrM,CAAAA,CAAM,OAAA,CAAQ,IAAA,CAAO,QAAA,CAC7CwM,CAAAA,CAAAA,CAAgB/P,CAAAA,CAAAuD,CAAAA,CAAM,UAAA,CAAW,YAAA,GAAjB,IAAA,CAAAvD,EAAiC,KAAA,CACjDgQ,CAAAA,CACLL,CAAAA,GAAY/R,mBAAAA,CAAM,MAAA,CAAO,KAAA,EACzB+R,CAAAA,GAAY/R,mBAAAA,CAAM,MAAA,CAAO,OAAA,EACzB8R,CAAAA,GAAS9R,mBAAAA,CAAM,GAAA,CAAI,YAAA,EACnB8R,CAAAA,GAAS9R,mBAAAA,CAAM,GAAA,CAAI,eAAA,EACnB+R,CAAAA,GAAY/R,mBAAAA,CAAM,MAAA,CAAO,MAAA,EACzB+R,CAAAA,GAAY/R,mBAAAA,CAAM,MAAA,CAAO,QAAA,CAEpBqS,CAAAA,CAAO9S,CAAAA,CAAM,KAAA,CACb+S,CAAAA,CAAOZ,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAW,GAAA,EAAA,CAClBa,CAAAA,CAAWhT,CAAAA,CAAM,KAAA,CAAM,KAAA,CAG7BoG,CAAAA,CAAM,UAAA,CAAW,GAAA,CAAM7F,CAAAA,CACvB6F,CAAAA,CAAM,UAAA,CAAW,UAAA,CAAa,MAAA,CAC9BA,CAAAA,CAAM,UAAA,CAAW,MAAA,CAAS,KAAA,CAC1BA,CAAAA,CAAM,UAAA,CAAW,YAAA,CAAe,MAAA,CAG5B,CAAC0M,CAAAA,CAAK,OAAA,CAAQ,OAAA,EAAW1M,CAAAA,CAAM,OAAA,CAAQ,OAAA,CAC1CA,CAAAA,CAAM,QAAQ,OAAA,CAAU,IAAA,CAExBA,CAAAA,CAAM,OAAA,CAAQ,OAAA,CAAU,KAAA,CAGrB0M,CAAAA,CAAK,OAAA,CAAQ,OAAA,EAAW,CAAC1M,CAAAA,CAAM,OAAA,CAAQ,OAAA,CAC1CA,CAAAA,CAAM,OAAA,CAAQ,IAAA,CAAO,IAAA,CAErBA,CAAAA,CAAM,OAAA,CAAQ,IAAA,CAAO,KAAA,CAGlByM,CAAAA,GACHzM,CAAAA,CAAM,KAAA,CAAQ4L,EAAAA,CAAajS,CAAAA,CAAO,CACjC,KAAA,CAAAqG,CAAAA,CACA,EAAA,CAAIA,CAAAA,CAAM,KAAA,CAAM,EAAA,CAChB,YAAA,CAAcqM,CAAAA,CACd,eAAA,CAAiBC,CAAAA,CACjB,KAAA,CAAOtM,CAAAA,CAAM,KACd,CAAC,CAAA,CAAA,CAIF,GAAI,CACH,IAAM6M,CAAAA,CAAgB,CACrB,IAAA,CAAAF,CAAAA,CACA,KAAA,CAAAzN,CAAAA,CACA,IAAA,CAAMwN,CAAAA,CACN,KAAA,CAAO1M,CAAAA,CACP,MAAA,CAAQgM,CAAAA,CACR,YAAA,CAAAc,mBACD,CAAA,CAKA,GAAA,CAHIhS,CAAAA,EAAA,IAAA,CAAA,KAAA,CAAA,CAAAA,CAAAA,CAAS,cAAA,GAAkB,IAAA,EAAQ,OAAOA,CAAAA,EAAA,IAAA,CAAA,KAAA,CAAA,CAAAA,CAAAA,CAAS,cAAA,CAAA,EAAmB,UAAA,EACzE,MAAMA,CAAAA,CAAQ,cAAA,CAAe+R,CAAa,CAAA,CAEvC,OAAO3N,CAAAA,EAAA,IAAA,CAAA,KAAA,CAAA,CAAAA,CAAAA,CAAO,QAAA,CAAA,EAAa,UAAA,CAC9B,MAAA,CAAMxC,CAAAA,CAAAwC,CAAAA,EAAA,IAAA,CAAA,KAAA,CAAA,CAAAA,CAAAA,CAAO,QAAA,GAAP,IAAA,CAAA,KAAA,CAAA,CAAAxC,CAAAA,CAAA,IAAA,CAAAwC,CAAAA,CAAkB2N,CAAAA,CAAAA,CAAAA,CAAAA,KAAAA,GAEpB3N,CAAAA,CAAM,QAAA,EAAY,IAAA,CACrB,IAAA,IAAWY,CAAAA,IAAaZ,CAAAA,CAAM,QAAA,CAC7B,MAAMY,CAAAA,EAAA,IAAA,CAAA,KAAA,CAAA,CAAAA,CAAAA,CAAY+M,CAAAA,CAAAA,EAItB,CAAA,MAASE,CAAAA,CAAU,CAKlB,GAJA,OAAA,CAAQ,KAAA,CACP,CAAA,kEAAA,EAAqE7N,CAAAA,CAAM,iBAAiB,CAAA,kBAAA,CAAA,CAC5F6N,CACD,CAAA,CACI7N,CAAAA,CAAM,iBAAA,CAAmB,CAC5BgN,CAAAA,CAAQ,KAAA,EAAM,CACd,MACD,CACD,CAGA,GACCO,CAAAA,EACA,CAACD,CAAAA,EACDxM,CAAAA,CAAM,KAAA,CAAM,MAAA,GAAW3F,mBAAAA,CAAM,MAAA,CAAO,kBAAA,CACnC,CAGD,GAFA2F,CAAAA,CAAM,MAAA,CAAS,EAAC,CAEZd,CAAAA,CAAM,QAAA,EAAY,IAAA,GACjB,CAACmN,CAAAA,EAAkBA,CAAAA,EAAiBE,CAAAA,GAAS,QAAA,CAAA,CAAW,CAC3D,IAAMS,CAAAA,CAAc,KAAA,CAAM,OAAA,CAAQ9N,CAAAA,CAAM,QAAQ,CAAA,CAAIA,CAAAA,CAAM,QAAA,CAAW,CAACA,CAAAA,CAAM,QAAQ,CAAA,CACpF,IAAA,IAAW+N,CAAAA,IAAcD,CAAAA,CAAa,CACrC,IAAMD,CAAAA,CAAME,CAAAA,CAAW,CAAE,IAAA,CAAAP,CAAAA,CAAM,IAAA,CAAAC,CAAAA,CAAM,KAAA,CAAO3M,CAAAA,CAAM,KAAA,CAAO,MAAA,CAAQA,CAAAA,CAAM,MAAO,CAAC,CAAA,CAC/E,GAAI,KAAA,CAAM,OAAA,CAAQ+M,CAAG,CAAA,CAAG,CACvB,GAAIA,CAAAA,CAAI,MAAA,CAAS,CAAA,CAChB,SAED,IAAA,IAAWlM,CAAAA,IAASkM,CAAAA,CACflM,CAAAA,EAAS,IAAA,EACZb,CAAAA,CAAM,MAAA,CAAO,IAAA,CAAKa,CAAK,EAG1B,CAAA,KACKkM,CAAAA,EAAO,IAAA,EACV/M,CAAAA,CAAM,MAAA,CAAO,IAAA,CAAK+M,CAAG,EAGxB,CAID,CA6BD,GAxBI/M,CAAAA,CAAM,MAAA,CAAO,MAAA,CAAS,CAAA,GAErBuM,CAAAA,GAAS,aAAA,EACZvM,CAAAA,CAAM,SAAA,CAAU,KAAA,CAAQ,KAAA,CACxBA,CAAAA,CAAM,MAAA,CAAS,MAAA,EACLA,CAAAA,CAAM,OAAA,CAAQ,QAAA,CACxBA,CAAAA,CAAM,SAAA,CAAU,KAAA,CAAQ,YAAA,CAExBA,CAAAA,CAAM,SAAA,CAAU,KAAA,CAAQ,UAAA,CAIrBlF,CAAAA,EAAA,IAAA,EAAAA,CAAAA,CAAS,oBAAA,CACZkF,CAAAA,CAAM,KAAA,CAAQ4M,CAAAA,EAEd5M,CAAAA,CAAM,SAAA,CAAU,OAAA,CAAU,IAAA,CAC1BA,CAAAA,CAAM,UAAU,EAAA,CAAKqM,CAAAA,CAAgB,QAAA,CAAW,MAAA,CAAA,CAIjDrM,CAAAA,CAAM,SAAA,CAAU,KAAA,CAAQ,KAAA,CAAA,CAIrBA,CAAAA,CAAM,MAAA,EAAU,IAAA,EAAQA,CAAAA,CAAM,MAAA,CAAO,MAAA,EAAU,CAAA,CAAG,CAErD,GAAIA,CAAAA,CAAM,OAAA,CAAQ,QAAA,CACjBA,CAAAA,CAAM,SAAA,CAAU,KAAA,CAAQ,KAAA,CAAA,KAAA,GACdA,CAAAA,CAAM,OAAA,CAAQ,QAAA,CAExB,GAAIuM,CAAAA,GAAS,aAAA,CACZvM,CAAAA,CAAM,SAAA,CAAU,KAAA,CAAQ,KAAA,CAAA,KAClB,CACN,IAAMkN,CAAAA,CAAaxN,EAAAA,CAAkBM,CAAAA,CAAM,KAAA,CAAOA,CAAK,CAAA,CACvDA,CAAAA,CAAM,SAAA,CAAU,KAAA,CAAQkN,CAAAA,CAAa,YAAA,CAAe,MACrD,CAAA,KAEAlN,CAAAA,CAAM,SAAA,CAAU,KAAA,CAAQ,KAAA,CAIzBA,CAAAA,CAAM,MAAA,CAAS,MAAA,CACfA,CAAAA,CAAM,SAAA,CAAU,OAAA,CAAU,IAAA,CAC1BA,CAAAA,CAAM,SAAA,CAAU,EAAA,CAAKqM,CAAAA,CAAgB,QAAA,CAAW,MAAA,CAGhDrM,CAAAA,CAAM,SAAA,CAAU,KAAA,CAAQ,CAAAA,CAAAA,CAAM,SAAA,CAAU,MACzC,CACD,CAIA,OAAAkM,CAAAA,CAAQ,KAAA,EAAM,CACdlM,CAAAA,CAAM,UAAA,CAAW6L,EAAO,CAAA,CAAI,IAAA,CAC5BjS,CAAAA,CAAM,GAAA,CAAIoG,CAAK,CAAA,CACRA,CAYR,CAAC,EACF,CC/NO,SAASmN,CAAAA,CAIdC,CAAAA,CAAkCzT,CAAAA,CAAgD,CAPpF,IAAAmC,CAAAA,CAAAW,CAAAA,CAAAC,CAAAA,CAAAC,CAAAA,CAAAC,CAAAA,CAQC,GAAM,CAAE,GAAA,CAAAzC,CAAAA,CAAK,OAAA,CAAAW,CAAAA,CAAS,KAAA,CAAAlB,CAAAA,CAAO,KAAA,CAAAsF,CAAM,CAAA,CAAIkO,CAAAA,CACjC,CAAE,QAAA,CAAAC,CAAAA,CAAU,QAAA,CAAAC,CAAS,CAAA,CAAI3T,CAAAA,CACzBgG,CAAAA,CAAQ2N,CAAAA,CACRC,CAAAA,CAAQ,CACb,IAAI9Q,CAAAA,CAAAA,CAAAX,CAAAA,CAAA6D,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAO,OAAA,GAAP,IAAA,CAAA,MAAA,CAAA7D,CAAAA,CAAgB,KAAA,GAAhB,IAAA,CAAAW,CAAAA,CAAyByC,CAAAA,CAAM,KAAA,CACnC,IAAA,CAAMS,CAAAA,EAAA,IAAA,EAAAA,CAAAA,CAAO,OAAA,CAAQ,MAAA,CAAS,QAAA,CAAWT,CAAAA,CAAM,IAAA,CAC/C,IAAA,CAAMS,CAAAA,CAAM,UAAA,CAAW,GAAA,CACvB,QAAA,CAAUA,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAO,OAAA,CAAQ,QAAA,CACzB,QAAA,CAAUA,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAO,OAAA,CAAQ,QAAA,CACzB,QAAA,CAAUA,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAO,OAAA,CAAQ,QAAA,CACzB,WAAA,CAAaA,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAO,OAAA,CAAQ,WAAA,CAC5B,CAAC0N,CAAAA,GAAa,MAAA,CAAS,cAAA,CAAiB,cAAc,EAAG,KAAA,CACzD,CAACA,CAAAA,GAAa,MAAA,CAAS,SAAA,CAAY,SAAS,EAAIG,CAAAA,EAAsB,CACrEA,CAAAA,CAAM,cAAA,EAAe,CACrBA,CAAAA,CAAM,wBAAA,EAAyB,CAC/BA,CAAAA,CAAM,eAAA,EAAgB,CAEtB,IAAMlT,CAAAA,CAAOG,mBAAAA,CAAA,EAAA,CAAKb,CAAAA,CAAM,GAAA,EAAI,CAAA,CAC5BU,CAAAA,CAAK,OAAA,CAAQ,OAAA,CAAU,IAAA,CACvBA,CAAAA,CAAK,OAAA,CAAQ,OAAA,CAAU,IAAA,CACvBA,CAAAA,CAAK,UAAA,CAAW,MAAA,CAAS,KAAA,CAEzBA,CAAAA,CAAK,KAAA,CAAM,GAAA,CAAMD,mBAAAA,CAAM,GAAA,CAAI,KAAA,CAC3BC,CAAAA,CAAK,KAAA,CAAM,MAAA,CAASD,mBAAAA,CAAM,MAAA,CAAO,IAAA,CACjCC,CAAAA,CAAK,KAAA,CAAM,EAAA,CAAK,CACf,KAAA,CAAQkT,CAAAA,CAAM,MAAA,CAAe,KAAA,CAC7B,OAAA,CAAUA,CAAAA,CAAM,MAAA,CAAe,OAAA,CAC/B,KAAA,CAAQA,CAAAA,CAAM,MAAA,CAAe,KAC9B,CAAA,CAEA5T,CAAAA,CAAM,GAAA,CAAIU,CAAI,EACf,CAAA,CACA,CAAC+S,CAAAA,GAAa,MAAA,CAAS,QAAA,CAAW,QAAQ,EAAIG,CAAAA,EAAiB,CAC9DA,CAAAA,CAAM,cAAA,EAAe,CACrBA,CAAAA,CAAM,wBAAA,EAAyB,CAC/BA,CAAAA,CAAM,eAAA,EAAgB,CACtB,IAAMlT,CAAAA,CAAOG,mBAAAA,CAAA,EAAA,CAAKb,CAAAA,CAAM,GAAA,EAAI,CAAA,CAC5BU,CAAAA,CAAK,OAAA,CAAQ,OAAA,CAAU,KAAA,CACvBA,CAAAA,CAAK,OAAA,CAAQ,OAAA,CAAU,IAAA,CACvBA,CAAAA,CAAK,UAAA,CAAW,MAAA,CAAS,KAAA,CAEzBA,CAAAA,CAAK,KAAA,CAAM,GAAA,CAAMD,mBAAAA,CAAM,GAAA,CAAI,IAAA,CAC3BC,CAAAA,CAAK,KAAA,CAAM,MAAA,CAASD,mBAAAA,CAAM,MAAA,CAAO,IAAA,CACjCC,CAAAA,CAAK,KAAA,CAAM,EAAA,CAAK,MAAA,CAChBV,CAAAA,CAAM,GAAA,CAAIU,CAAI,EACf,CACD,CAAA,CAGI4E,CAAAA,CAAM,IAAA,GAAS,UAAA,GAGlBqO,CAAAA,CAAM,KAAA,CAAA,CAAQ7Q,CAAAA,CAAAiD,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAO,KAAA,GAAP,IAAA,CAAAjD,CAAAA,CAAgB,EAAA,CAAA,CAK/B,IAAI+Q,CAAAA,CACA9N,CAAAA,CAAM,OAAA,CAAQ,UAAA,GAAe,QAAA,CAChC8N,CAAAA,CAAaJ,CAAAA,GAAa,MAAA,CAAS,UAAA,CAAa,UAAA,CAEhDI,CAAAA,CAAaJ,CAAAA,GAAa,MAAA,CAAS,SAAA,CAAY,SAAA,CAEhDE,CAAAA,CAAME,CAAU,CAAA,CAAKD,CAAAA,EAAiB,CACrCA,CAAAA,CAAM,cAAA,EAAe,CACrBA,CAAAA,CAAM,wBAAA,EAAyB,CAC/BA,CAAAA,CAAM,eAAA,EAAgB,CACtB,IAAMlT,CAAAA,CAAOG,mBAAAA,CAAA,EAAA,CAAKb,CAAAA,CAAM,GAAA,EAAI,CAAA,CAC5B,GAAIU,CAAAA,CAAK,OAAA,CAAQ,QAAA,CAChB,OAEDA,CAAAA,CAAK,UAAA,CAAW,MAAA,CAAS,KAAA,CAEzBA,CAAAA,CAAK,KAAA,CAAM,GAAA,CAAMD,mBAAAA,CAAM,GAAA,CAAI,IAAA,CAC3BC,CAAAA,CAAK,KAAA,CAAM,OAASD,mBAAAA,CAAM,MAAA,CAAO,KAAA,CACjC,IAAM2B,CAAAA,CAASwR,CAAAA,CAAM,MAAA,CAAe,KAAA,CACpClT,CAAAA,CAAK,KAAA,CAAM,EAAA,CAAK,CACf,KAAA,CAAO0B,CAAAA,GAAU,EAAA,CAAK,MAAA,CAAYA,CAAAA,CAClC,OAAA,CAAUwR,CAAAA,CAAM,MAAA,CAAe,OAAA,CAC/B,KAAA,CAAQA,CAAAA,CAAM,MAAA,CAAe,KAC9B,CAAA,CACA5T,CAAAA,CAAM,GAAA,CAAIU,CAAI,EACf,CAAA,CAIA,IAAMoT,CAAAA,CAAmB,CAAE,GAAA,CAAAvT,CAAAA,CAAK,IAAA,CAAMmT,CAAAA,CAAU,QAAA,CAAAD,CAAAA,CAAU,KAAA,CAAAE,CAAAA,CAAO,OAAA,CAAS,OAAQ,CAAA,CAKlF,GAAA,CAJA5Q,CAAAA,CAAA7B,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAS,cAAA,GAAT,IAAA,EAAA6B,CAAAA,CAAA,IAAA,CAAA7B,CAAAA,CAA0B4S,CAAAA,CAAAA,CAAAA,CAC1B9Q,CAAAA,CAAAsC,CAAAA,CAAM,QAAA,GAAN,IAAA,EAAAtC,CAAAA,CAAA,IAAA,CAAAsC,CAAAA,CAAiBwO,CAAAA,CAAAA,CAGb/N,CAAAA,CAAM,KAAA,CAAM,MAAA,GAAWtF,mBAAAA,CAAM,MAAA,CAAO,IAAA,CAAM,CAC7C,IAAMC,CAAAA,CAAOG,mBAAAA,CAAA,EAAA,CAAKb,CAAAA,CAAM,GAAA,EAAI,CAAA,CAC5BU,CAAAA,CAAK,KAAA,CAAM,MAAA,CAASD,mBAAAA,CAAM,MAAA,CAAO,KAAA,CACjCC,CAAAA,CAAK,KAAA,CAAM,MAAA,CAASD,mBAAAA,CAAM,MAAA,CAAO,QAAA,CACjCT,CAAAA,CAAM,GAAA,CAAIU,CAAI,EACf,CAGA,OAAOiT,CACR,CCzGO,SAASI,CAAAA,CAIdP,CAAAA,CAAkCzT,CAAAA,CAAgD,CAPpF,IAAAmC,CAAAA,CAAAW,CAAAA,CAAAC,CAAAA,CAAAC,CAAAA,CAQC,GAAM,CAAE,GAAA,CAAAxC,CAAAA,CAAK,OAAA,CAAAW,CAAAA,CAAS,KAAA,CAAAlB,CAAAA,CAAO,KAAA,CAAAsF,CAAM,CAAA,CAAIkO,CAAAA,CACjC,CAAE,QAAA,CAAAC,CAAAA,CAAU,QAAA,CAAAC,CAAS,CAAA,CAAI3T,EACzBgG,CAAAA,CAAQ2N,CAAAA,CACRC,CAAAA,CAAQ,CACb,EAAA,CAAA,CAAI9Q,CAAAA,CAAAA,CAAAX,CAAAA,CAAA6D,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAO,OAAA,GAAP,IAAA,CAAA,MAAA,CAAA7D,CAAAA,CAAgB,KAAA,GAAhB,IAAA,CAAAW,CAAAA,CAAyByC,CAAAA,CAAM,KAAA,CAEnC,IAAA,CAAMS,CAAAA,CAAM,UAAA,CAAW,GAAA,CAKvB,CAAC0N,CAAAA,GAAa,MAAA,CAAS,SAAA,CAAY,SAAS,EAAG,SAAiBG,CAAAA,CAAqB,CACpFA,CAAAA,CAAM,cAAA,EAAe,CACrB,IAAMlT,CAAAA,CAAOG,mBAAAA,CAAA,EAAA,CAAKb,CAAAA,CAAM,GAAA,EAAI,CAAA,CAC5B,GAAIU,CAAAA,CAAK,OAAA,CAAQ,QAAA,CAChB,OAGD,GAAI,CAACA,CAAAA,CAAK,OAAA,CAAQ,OAAA,CAAS,CAC1B,IAAM8B,CAAAA,CAAUoR,CAAAA,CAAM,MAAA,CACtB,UAAA,CAAW,IAAM,CAEhB,QAAA,CAAS,gBAAA,CAAiB,OAAA,CAAS,SAASI,CAAAA,CAAahT,CAAAA,CAAG,CAC3D,IAAMiT,CAAAA,CAASjT,CAAAA,CAAE,MAAA,CACXkT,CAAAA,CAAOD,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAQ,YAAA,CAAa,MAAA,CAAA,CAClC,GAAI,CAACzR,CAAAA,CAAQ,QAAA,CAASyR,CAAM,CAAA,CAAG,CAC9B,GAAIC,CAAAA,EAAQA,CAAAA,CAAK,UAAA,CAAWnO,CAAAA,CAAM,UAAA,CAAW,GAAG,CAAA,CAC/C,OAGD,QAAA,CAAS,mBAAA,CAAoB,OAAA,CAASiO,CAAY,CAAA,CAClD,IAAMtT,CAAAA,CAAOG,mBAAAA,CAAA,EAAA,CAAKb,CAAAA,CAAM,GAAA,EAAI,CAAA,CAC5BU,CAAAA,CAAK,OAAA,CAAQ,OAAA,CAAU,KAAA,CACvBA,CAAAA,CAAK,OAAA,CAAQ,OAAA,CAAU,IAAA,CACvBA,CAAAA,CAAK,UAAA,CAAW,MAAA,CAAS,KAAA,CAEzBA,CAAAA,CAAK,KAAA,CAAM,GAAA,CAAMD,mBAAAA,CAAM,GAAA,CAAI,IAAA,CAC3BC,CAAAA,CAAK,KAAA,CAAM,MAAA,CAASD,mBAAAA,CAAM,OAAO,IAAA,CACjCC,CAAAA,CAAK,KAAA,CAAM,EAAA,CAAK,MAAA,CAChBV,CAAAA,CAAM,GAAA,CAAIU,CAAI,EACf,CACD,CAAC,EACF,CAAA,CAAG,CAAC,EACL,CAEgBkT,CAAAA,CAAM,YACtBlT,CAAAA,CAAK,OAAA,CAAQ,OAAA,CAAU,IAAA,CACvBA,CAAAA,CAAK,OAAA,CAAQ,OAAA,CAAU,IAAA,CACvBA,CAAAA,CAAK,UAAA,CAAW,MAAA,CAAS,KAAA,CAIzBA,CAAAA,CAAK,KAAA,CAAM,GAAA,CAAMD,mBAAAA,CAAM,GAAA,CAAI,KAAA,CAC3BC,CAAAA,CAAK,KAAA,CAAM,MAAA,CAASD,mBAAAA,CAAM,MAAA,CAAO,IAAA,CACjCC,CAAAA,CAAK,KAAA,CAAM,EAAA,CAAK,CACf,KAAA,CAAQkT,CAAAA,CAAM,MAAA,CAAe,KAE9B,CAAA,CACA5T,CAAAA,CAAM,GAAA,CAAIU,CAAI,EACf,CACD,CAAA,CAIMoT,CAAAA,CAAmB,CAAE,GAAA,CAAAvT,EAAK,IAAA,CAAMmT,CAAAA,CAAU,QAAA,CAAAD,CAAAA,CAAU,KAAA,CAAAE,CAAAA,CAAO,OAAA,CAAS,SAAU,CAAA,CAMpF,GAAA,CAJA7Q,CAAAA,CAAA5B,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAS,cAAA,GAAT,IAAA,EAAA4B,CAAAA,CAAA,IAAA,CAAA5B,CAAAA,CAA0B4S,CAAAA,CAAAA,CAAAA,CAC1B/Q,CAAAA,CAAAuC,CAAAA,CAAM,QAAA,GAAN,IAAA,EAAAvC,CAAAA,CAAA,IAAA,CAAAuC,CAAAA,CAAiBwO,CAAAA,CAAAA,CAGb/N,CAAAA,CAAM,KAAA,CAAM,MAAA,GAAWtF,mBAAAA,CAAM,MAAA,CAAO,IAAA,CAAM,CAC7C,IAAMC,CAAAA,CAAOG,mBAAAA,CAAA,EAAA,CAAKb,CAAAA,CAAM,GAAA,EAAI,CAAA,CAC5BU,CAAAA,CAAK,KAAA,CAAM,MAAA,CAASD,mBAAAA,CAAM,MAAA,CAAO,KAAA,CACjCC,CAAAA,CAAK,KAAA,CAAM,MAAA,CAASD,mBAAAA,CAAM,MAAA,CAAO,QAAA,CACjCT,CAAAA,CAAM,GAAA,CAAIU,CAAI,EACf,CACA,OAAOiT,CACR,CClFO,SAASQ,CAAAA,CAKfX,CAAAA,CACAzT,CAAAA,CACC,CAVF,IAAAmC,CAAAA,CAAAW,CAAAA,CAAAC,CAAAA,CAAAC,CAAAA,CAWC,GAAM,CAAE,GAAA,CAAAxC,CAAAA,CAAK,OAAA,CAAAW,CAAAA,CAAS,KAAA,CAAAlB,CAAAA,CAAO,KAAA,CAAAsF,CAAM,CAAA,CAAIkO,CAAAA,CAIjC,CAAE,QAAA,CAAAC,CAAAA,CAAU,QAAA,CAAAC,CAAAA,CAAU,WAAA,CAAaU,CAAa,CAAA,CAAIrU,CAAAA,CACpDgG,CAAAA,CAAQ2N,CAAAA,CAGVhQ,CAAAA,CAAS0Q,CAAAA,CACTF,CAAAA,CAAO,EAAA,CAMX,GALIxQ,CAAAA,GAAW,MAAA,CACdA,CAAAA,CAAS,CAAE,KAAA,CAAO,SAAA,CAAW,KAAA,CAAO,SAAU,CAAA,CAAA,CACpC,OAAOA,CAAAA,EAAW,QAAA,EAAY,OAAOA,CAAAA,EAAW,QAAA,IAC1DA,CAAAA,CAAS,CAAE,KAAA,CAAOA,CAAAA,CAAQ,KAAA,CAAOA,CAAO,CAAA,CAAA,CAErC,EAAEqC,CAAAA,CAAM,MAAA,CAAO,QAAA,IAAYrC,CAAAA,CAAAA,EAAWA,CAAAA,CAAO,UAAA,EAAc,IAAA,CAAM,CACpE,GAAIqC,CAAAA,CAAM,MAAA,CAAO,kBAAA,CAChB,MAAM,IAAI,KAAA,CACT,CAAA,OAAA,EAAUxF,CAAG,CAAA,iBAAA,EAAoBwF,CAAAA,CAAM,MAAA,CAAO,QAAQ,CAAA,2BAAA,EACxB,IAAA,CAAK,SAAA,CAAUrC,CAAM,CAAC,CAAA,CACrD,CAAA,CAEAA,CAAAA,CAAO,UAAA,CAAa,OAAA,GAAWA,CAAAA,CAAS,OAAA,CAAU,MAAA,CAAO,IAAA,CAAKA,CAAM,CAAA,CAAE,CAAC,EAEzE,CAEA,GAAI,CACH,IAAM2Q,CAAAA,CAAU,MAAA,CAAO3Q,CAAAA,CAAAA,CAAOxB,CAAAA,CAAAwB,CAAAA,CAAO,UAAA,GAAP,IAAA,CAAAxB,CAAAA,CAAqB6D,CAAAA,CAAM,MAAA,CAAO,QAAQ,CAAC,CAAA,CACzEmO,CAAAA,CAAOnO,CAAAA,CAAM,UAAA,CAAW,GAAA,CAAM,GAAA,EAAO,OAAOsO,CAAAA,EAAY,QAAA,CAAWA,CAAAA,CAAU,QAAA,EAC9E,OAASrT,CAAAA,CAAQ,CAChBkT,CAAAA,CAAOnO,CAAAA,CAAM,UAAA,CAAW,GAAA,CAAM,UAC/B,CAGA,IAAM4N,CAAAA,CAAQ,CACb,IAAA,CAAAO,CAAAA,CACA,EAAA,CAAIA,CAAAA,CAAO,KAAA,CAEX,OAAA,CAAA,CAASrR,CAAAA,CAAAa,CAAAA,CAAO,UAAA,GAAP,IAAA,CAAAb,CAAAA,CAAqB,KAAA,CAC9B,CAAC4Q,CAAAA,GAAa,MAAA,CAAS,SAAA,CAAY,SAAS,EAAIG,CAAAA,EAAwB,CAlD1E,IAAA1R,CAAAA,CAAAW,CAAAA,CAAAC,CAAAA,CAAAC,CAAAA,CAAAC,CAAAA,CAAAC,CAAAA,CAAAuB,CAAAA,CAmDGoP,CAAAA,CAAM,cAAA,EAAe,CACrBA,CAAAA,CAAM,wBAAA,EAAyB,CAC/BA,CAAAA,CAAM,eAAA,EAAgB,CACtB,IAAMlT,CAAAA,CAAOG,mBAAAA,CAAA,EAAA,CAAKb,CAAAA,CAAM,GAAA,EAAI,CAAA,CAC5B,GAAIU,CAAAA,CAAK,OAAA,CAAQ,QAAA,CAChB,OAGD,IAAM4T,CAAAA,CAAAA,CAAWpS,CAAAA,CAAAxB,CAAAA,CAAK,MAAA,CAAO,QAAA,GAAZ,IAAA,CAAAwB,CAAAA,CAAwB,OAAA,CACnCqS,CAAAA,CAAAA,CAAW1R,CAAAA,CAAAnC,CAAAA,CAAK,MAAA,CAAO,QAAA,GAAZ,IAAA,CAAAmC,CAAAA,CAAwB,OAAA,CACnC2R,CAAAA,CAAiB9Q,CAAAA,CAAO,UAAA,CAgB9B,GAAA,CAdIZ,CAAAA,CAAApC,CAAAA,CAAK,MAAA,GAAL,IAAA,EAAAoC,CAAAA,CAAa,OAAA,GACZpC,CAAAA,CAAK,MAAA,CAAO,OAAA,EAAW,IAAA,GAC1BA,CAAAA,CAAK,MAAA,CAAO,OAAA,CAAU,EAAC,CAAA,CAExBA,CAAAA,CAAK,MAAA,CAAO,QAAA,CAAW4T,CAAAA,CACvB5T,CAAAA,CAAK,MAAA,CAAO,QAAA,CAAW6T,CAAAA,CAAAA,CAAAA,CACVvR,CAAAA,CAAAA,CAAAD,CAAAA,CAAArC,CAAAA,CAAK,MAAA,GAAL,IAAA,CAAA,MAAA,CAAAqC,CAAAA,CAAa,OAAA,GAAb,IAAA,CAAA,MAAA,CAAAC,CAAAA,CAAsB,IAAA,CACjCQ,CAAAA,EAAM,CAtEZ,IAAAtB,CAAAA,CAsEe,OAAAsB,CAAAA,CAAAA,CAAKtB,CAAAA,CAAAsB,CAAAA,CAAK,UAAA,GAAL,IAAA,CAAAtB,CAAAA,CAAmBoS,CAAQ,IAAM5Q,CAAAA,CAAO8Q,CAAAA,EAAA,IAAA,CAAAA,CAAAA,CAAkBF,CAAQ,CAAA,CAAA,CAAA,GAEtE,IAAA,GAAA,CACXrR,CAAAA,CAAAvC,CAAAA,CAAK,MAAA,CAAO,OAAA,GAAZ,IAAA,EAAAuC,CAAAA,CAAqB,IAAA,CAAKS,CAAAA,CAAAA,CAAAA,CAAAA,CAIxB,KAAA,CAAM,OAAA,CAAQhD,CAAAA,CAAK,KAAK,CAAA,CACdA,CAAAA,CAAK,KAAA,CAAM,IAAA,CACtB8C,CAAAA,EAAM,CA/EZ,IAAAtB,CAAAA,CA+Ee,OAAAsB,CAAAA,CAAAA,CAAKtB,CAAAA,CAAAsB,CAAAA,CAAK,UAAA,GAAL,IAAA,CAAAtB,CAAAA,CAAmBoS,CAAQ,CAAA,GAAM5Q,CAAAA,CAAO8Q,CAAAA,EAAA,IAAA,CAAAA,CAAAA,CAAkBF,CAAQ,CAAA,CAClF,CAAA,EACY,IAAA,CACX5T,CAAAA,CAAK,KAAA,CAAM,IAAA,CAAKgD,CAAM,CAAA,CAEtBhD,CAAAA,CAAK,KAAA,CAASA,CAAAA,CAAK,KAAA,CAAgB,MAAA,CACjC8C,CAAAA,EAAM,CArFb,IAAAtB,CAAAA,CAqFgB,OAAAsB,CAAAA,CAAAA,CAAKtB,CAAAA,CAAAsB,CAAAA,CAAK,UAAA,GAAL,IAAA,CAAAtB,CAAAA,CAAmBoS,CAAQ,CAAA,GAAM5Q,CAAAA,CAAO8Q,CAAAA,EAAA,IAAA,CAAAA,CAAAA,CAAkBF,CAAQ,CAAA,CAClF,CAAA,CAAA,KAAA,GAES5T,CAAAA,CAAK,KAAA,EAAS,IAAA,CACxBA,CAAAA,CAAK,KAAA,CAAQA,CAAAA,CAAK,OAAA,CAAQ,QAAA,CAAW,CAACgD,CAAM,CAAA,CAAIA,CAAAA,CAAAA,KAC1C,CACN,IAAM+Q,CAAAA,CACL/T,CAAAA,CAAK,KAAA,CAAA,CAAM8D,CAAAA,CAAA9D,CAAAA,CAAK,KAAA,CAAM,UAAA,GAAX,IAAA,CAAA8D,CAAAA,CAAyB8P,CAAQ,CAAA,GAAM5Q,CAAAA,CAAO8Q,CAAAA,EAAA,IAAA,CAAAA,CAAAA,CAAkBF,CAAQ,CAAA,CACpF,GAAIG,CAAAA,EAAa,CAAC/T,CAAAA,CAAK,MAAA,CAAO,gBAAA,CAE7B,OAEDA,CAAAA,CAAK,KAAA,CAAQ+T,CAAAA,CAAY,MAAA,CAAY/Q,EACtC,CAGA,GAAI4B,CAAAA,CAAM,IAAA,GAAS,cAAA,CAAgB,CAClC,GAAI,CAAC5E,CAAAA,CAAK,QAAQ,OAAA,CAAS,CAC1B,IAAM8B,CAAAA,CAAUoR,CAAAA,CAAM,MAAA,CACtB,UAAA,CAAW,IAAM,CAEhB,QAAA,CAAS,gBAAA,CAAiB,OAAA,CAAS,SAASI,CAAAA,CAAaJ,CAAAA,CAAO,CAC/DA,CAAAA,CAAM,cAAA,EAAe,CACrBA,CAAAA,CAAM,wBAAA,EAAyB,CAC/BA,CAAAA,CAAM,eAAA,EAAgB,CACtB,IAAMK,CAAAA,CAASL,CAAAA,CAAM,MAAA,CACfM,CAAAA,CAAOD,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAQ,YAAA,CAAa,MAAA,CAAA,CAGlC,GAAI,CAACzR,CAAAA,CAAQ,QAAA,CAASyR,CAAM,CAAA,CAAG,CAC9B,GAAIC,CAAAA,EAAQA,CAAAA,CAAK,UAAA,CAAWnO,CAAAA,CAAM,UAAA,CAAW,GAAG,CAAA,CAC/C,OAID,QAAA,CAAS,mBAAA,CAAoB,OAAA,CAASiO,CAAY,CAAA,CAClD,IAAMtT,CAAAA,CAAOG,mBAAAA,CAAA,EAAA,CAAKb,CAAAA,CAAM,GAAA,IACxBU,CAAAA,CAAK,OAAA,CAAQ,OAAA,CAAU,KAAA,CACvBA,CAAAA,CAAK,OAAA,CAAQ,OAAA,CAAU,IAAA,CACvBA,CAAAA,CAAK,UAAA,CAAW,MAAA,CAAS,KAAA,CAEzBA,CAAAA,CAAK,KAAA,CAAM,GAAA,CAAMD,mBAAAA,CAAM,GAAA,CAAI,IAAA,CAC3BC,CAAAA,CAAK,KAAA,CAAM,MAAA,CAASD,mBAAAA,CAAM,MAAA,CAAO,IAAA,CACjCC,CAAAA,CAAK,KAAA,CAAM,EAAA,CAAK,MAAA,CAChBV,CAAAA,CAAM,GAAA,CAAIU,CAAI,EACf,CACD,CAAC,EACF,CAAA,CAAG,EAAE,EACN,CACAA,CAAAA,CAAK,OAAA,CAAQ,OAAA,CAAU,IAAA,CACvBA,CAAAA,CAAK,OAAA,CAAQ,OAAA,CAAU,KACxB,CAEAA,CAAAA,CAAK,UAAA,CAAW,MAAA,CAAS,KAAA,CAEzBA,CAAAA,CAAK,KAAA,CAAM,GAAA,CAAMD,mBAAAA,CAAM,GAAA,CAAI,YAAA,CAC3BC,CAAAA,CAAK,KAAA,CAAM,MAAA,CAASD,mBAAAA,CAAM,OAAO,KAAA,CACjCC,CAAAA,CAAK,KAAA,CAAM,EAAA,CAAK,CACf,KAAA,CAAQkT,CAAAA,CAAM,MAAA,CAAe,KAC9B,CAAA,CACA5T,CAAAA,CAAM,GAAA,CAAIU,CAAI,EACf,CACD,CAAA,CAGI4E,CAAAA,CAAM,IAAA,GAAS,cAAA,GAClBqO,CAAAA,CAAM,IAAA,CAAO,OAAA,CACbA,CAAAA,CAAM,QAAA,CAAW5N,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAO,OAAA,CAAQ,QAAA,CAChC4N,CAAAA,CAAM,QAAA,CAAW5N,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAO,OAAA,CAAQ,QAAA,CAAA,CAKjC,IAAM+N,CAAAA,CAAmB,CAAE,GAAA,CAAAvT,CAAAA,CAAK,IAAA,CAAMmT,CAAAA,CAAU,QAAA,CAAAD,CAAAA,CAAU,KAAA,CAAAE,CAAAA,CAAO,OAAA,CAAS,QAAS,CAAA,CAMnF,GAAA,CAJA7Q,CAAAA,CAAA5B,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAS,aAAA,GAAT,IAAA,EAAA4B,CAAAA,CAAA,IAAA,CAAA5B,CAAAA,CAAyB4S,CAAAA,CAAAA,CAAAA,CACzB/Q,CAAAA,CAAAuC,CAAAA,CAAM,QAAA,GAAN,IAAA,EAAAvC,CAAAA,CAAA,IAAA,CAAAuC,CAAAA,CAAiBwO,CAAAA,CAAAA,CAGb/N,CAAAA,CAAM,KAAA,CAAM,MAAA,GAAWtF,mBAAAA,CAAM,MAAA,CAAO,IAAA,CAAM,CAC7C,IAAMC,CAAAA,CAAOG,mBAAAA,CAAA,EAAA,CAAKb,CAAAA,CAAM,GAAA,EAAI,CAAA,CAC5BU,CAAAA,CAAK,KAAA,CAAM,MAAA,CAASD,mBAAAA,CAAM,MAAA,CAAO,KAAA,CACjCC,CAAAA,CAAK,KAAA,CAAM,MAAA,CAASD,mBAAAA,CAAM,MAAA,CAAO,QAAA,CACjCT,CAAAA,CAAM,GAAA,CAAIU,CAAI,EACf,CACA,OAAOiT,CACR,CClJO,SAASe,CAAAA,CAKflB,CAAAA,CACAzT,CAAAA,CACA4U,CAAAA,CACC,CAjCF,IAAAzS,CAAAA,CAAAW,CAAAA,CAAAC,CAAAA,CAAAC,CAAAA,CAkCC,GAAM,CAAE,GAAA,CAAAxC,CAAAA,CAAK,OAAA,CAAAW,CAAAA,CAAS,KAAA,CAAAlB,CAAAA,CAAO,KAAA,CAAAsF,CAAM,CAAA,CAAIkO,CAAAA,CACjC,CAAE,QAAA,CAAAC,CAAAA,CAAU,QAAA,CAAAC,CAAS,CAAA,CAAI3T,CAAAA,CACzBgG,CAAAA,CAAQ2N,CAAAA,CACRkB,CAAAA,CAAAA,CAAAA,CAAM/R,CAAAA,CAAAA,CAAAX,CAAAA,CAAA6D,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAO,OAAA,GAAP,IAAA,CAAA,MAAA,CAAA7D,CAAAA,CAAgB,KAAA,GAAhB,IAAA,CAAAW,CAAAA,CAAyByC,CAAAA,CAAM,KAAA,EAAS,cAAA,CAC9C4O,CAAAA,CAAOnO,CAAAA,CAAM,UAAA,CAAW,GAAA,CAAM,WAAA,CAC9B4N,CAAAA,CAAQ,CACb,EAAA,CAAAiB,CAAAA,CACA,IAAA,CAAAV,CAAAA,CACA,CAACT,CAAAA,GAAa,MAAA,CAAS,SAAA,CAAY,SAAS,EAAG,SAAiBG,CAAAA,CAAqB,CA1CvF,IAAA1R,CAAAA,CAAAW,CAAAA,CAAAC,CAAAA,CAAAC,CAAAA,CAAAC,CAAAA,CAAAC,CAAAA,CAAAuB,CAAAA,CAAAC,EAAAA,CAAAC,EAAAA,CAAAC,CAAAA,CAAAG,EAAAA,CAAAC,EAAAA,CAAAC,EAAAA,CAAAC,EAAAA,CAAAC,EAAAA,CAAAC,EAAAA,CAAAC,EAAAA,CAAAC,EAAAA,CAAA+L,EAAAA,CAAAC,EAAAA,CAAAC,EAAAA,CAAAC,EAAAA,CAAAsD,EAAAA,CA2CGjB,CAAAA,CAAM,cAAA,EAAe,CACrB,IAAMkB,CAAAA,CAAQ,UAAA,GAAcH,CAAAA,CAAS,CAAE,CAACA,CAAAA,CAAO,QAAQ,EAAGA,CAAO,CAAA,CAAIA,CAAAA,CAErE,GAAIG,CAAAA,CAAM,GAAA,EAAO,IAAA,EAAQA,CAAAA,CAAM,GAAA,CAAI,YAAA,CAClC,OAED,IAAMpU,CAAAA,CAAOG,mBAAAA,CAAA,EAAA,CAAKb,CAAAA,CAAM,GAAA,EAAI,CAAA,CACtB+U,CAAAA,CAAOrU,CAAAA,CAAK,MAAA,CAAO,IAAA,CACnBkR,CAAAA,CAAWlR,CAAAA,CAAK,OAAA,CAAQ,QAAA,CACxBsU,CAAAA,CAAetU,CAAAA,CAAK,MAAA,CAAO,YAAA,CACjCA,CAAAA,CAAK,OAAA,CAAQ,OAAA,CAAU,IAAA,CACvBA,CAAAA,CAAK,OAAA,CAAQ,OAAA,CAAU,IAAA,CAGvB,IAAM2I,CAAAA,CAAO,CACZ,KAAA,CAAO,EAAA,CACP,MAAA,CAAQ,KACT,CAAA,CAEA,GAAI0L,EAAK,aAAA,EAAiB,IAAA,CAAM,CAC/B,IAAM/G,CAAAA,CAAAA,CAAOnL,CAAAA,CAAAA,CAAAX,CAAAA,CAAA4S,CAAAA,CAAM,IAAA,GAAN,IAAA,CAAA,MAAA,CAAA5S,CAAAA,CAAY,KAAA,GAAZ,IAAA,CAAAW,CAAAA,CAAqB,CAAA,EAAGnC,CAAAA,CAAK,MAAA,CAAO,IAAA,CAAK,MAAM,CAAA,CAAA,CACtDiM,CAAAA,CAAAA,CAAQ5J,CAAAA,CAAAA,CAAAD,CAAAA,CAAAgS,CAAAA,CAAM,KAAA,GAAN,IAAA,CAAA,MAAA,CAAAhS,CAAAA,CAAa,KAAA,GAAb,IAAA,CAAAC,CAAAA,CAAsB,CAAA,EAAGrC,CAAAA,CAAK,MAAA,CAAO,KAAA,CAAM,MAAM,CAAA,CAAA,CACzDkM,EAAAA,CAAAA,CAAM3J,CAAAA,CAAAA,CAAAD,CAAAA,CAAA8R,CAAAA,CAAM,GAAA,GAAN,IAAA,CAAA,MAAA,CAAA9R,CAAAA,CAAW,KAAA,GAAX,IAAA,CAAAC,CAAAA,CAAoB,CAAA,EAAGvC,CAAAA,CAAK,MAAA,CAAO,GAAA,CAAI,MAAM,CAAA,CAAA,CACzD+N,CAAAA,CAAK,MAAA,CAAA,CAAOjK,CAAAA,CAAAsQ,CAAAA,CAAM,IAAA,GAAN,IAAA,CAAA,MAAA,CAAAtQ,CAAAA,CAAY,WAAA,CAAa9D,CAAAA,CAAK,MAAM,CAAA,CAChDmO,CAAAA,CAAM,MAAA,CAAA,CAAOpK,EAAAA,CAAAqQ,CAAAA,CAAM,KAAA,GAAN,IAAA,CAAA,MAAA,CAAArQ,EAAAA,CAAa,WAAA,CAAa/D,CAAAA,CAAK,MAAM,CAAA,CAClD6O,EAAAA,CAAI,MAAA,CAAA,CAAO7K,EAAAA,CAAAoQ,CAAAA,CAAM,GAAA,GAAN,IAAA,CAAA,MAAA,CAAApQ,EAAAA,CAAW,WAAA,CAAahE,CAAAA,CAAK,MAAM,CAAA,CAC9C2I,CAAAA,CAAK,KAAA,CAAA,CAAQ1E,CAAAA,CAAA+G,EAAAA,CAAW,CAAE,IAAA,CAAAsC,CAAAA,CAAM,KAAA,CAAArB,CAAAA,CAAO,GAAA,CAAAC,EAAI,CAAA,CAAGlM,CAAAA,CAAK,MAAA,CAAO,MAAM,CAAA,GAAnD,IAAA,CAAAiE,CAAAA,CAAwD,EAAA,CACjEmQ,CAAAA,CAAMC,CAAAA,CAAK,aAAa,CAAA,EAAK,IAAA,GAChC1L,CAAAA,CAAK,MAAA,CAAS,IAAA,EAEhB,CAGA,IAAMY,CAAAA,CAAO,CACZ,KAAA,CAAO,EAAA,CACP,MAAA,CAAQ,KACT,CAAA,CACA,GAAI8K,CAAAA,CAAK,aAAA,EAAiB,IAAA,CAAM,CAC/B,IAAMtK,CAAAA,CAAAA,CAAO1F,EAAAA,CAAAA,CAAAD,EAAAA,CAAAgQ,CAAAA,CAAM,IAAA,GAAN,IAAA,CAAA,MAAA,CAAAhQ,EAAAA,CAAY,KAAA,GAAZ,IAAA,CAAAC,EAAAA,CAAqB,CAAA,EAAGrE,CAAAA,CAAK,MAAA,CAAO,IAAA,CAAK,MAAM,CAAA,CAAA,CACtDgK,CAAAA,CAAAA,CAASzF,EAAAA,CAAAA,CAAAD,EAAAA,CAAA8P,CAAAA,CAAM,MAAA,GAAN,IAAA,CAAA,MAAA,CAAA9P,EAAAA,CAAc,KAAA,GAAd,IAAA,CAAAC,EAAAA,CAAuB,CAAA,EAAGvE,CAAAA,CAAK,MAAA,CAAO,MAAA,CAAO,MAAM,CAAA,CAAA,CAC5DiK,EAAAA,CAAAA,CAASxF,EAAAA,CAAAA,CAAAD,EAAAA,CAAA4P,CAAAA,CAAM,MAAA,GAAN,IAAA,CAAA,MAAA,CAAA5P,EAAAA,CAAc,KAAA,GAAd,IAAA,CAAAC,EAAAA,CAAuB,CAAA,EAAGzE,CAAAA,CAAK,MAAA,CAAO,MAAA,CAAO,MAAM,CAAA,CAAA,CAElE4P,EAAAA,CAAK,MAAA,CAAA,CAAOlL,EAAAA,CAAA0P,CAAAA,CAAM,IAAA,GAAN,IAAA,CAAA,MAAA,CAAA1P,EAAAA,CAAY,WAAA,CAAa1E,CAAAA,CAAK,MAAM,CAAA,CAChDiQ,EAAAA,CAAO,MAAA,CAAA,CAAOtL,EAAAA,CAAAyP,EAAM,MAAA,GAAN,IAAA,CAAA,MAAA,CAAAzP,EAAAA,CAAc,WAAA,CAAa3E,CAAAA,CAAK,MAAM,CAAA,CACpDqQ,EAAAA,CAAO,MAAA,CAAA,CAAOK,EAAAA,CAAA0D,CAAAA,CAAM,MAAA,GAAN,IAAA,CAAA,MAAA,CAAA1D,EAAAA,CAAc,WAAA,CAAa1Q,CAAAA,CAAK,MAAM,CAAA,CAChDoU,CAAAA,CAAMC,CAAAA,CAAK,aAAa,CAAA,EAAK,IAAA,GAChC9K,CAAAA,CAAK,MAAA,CAAS,IAAA,CACdA,CAAAA,CAAK,KAAA,CAAA,CACHoH,EAAAA,CAAA3Q,CAAAA,CAAK,MAAA,CAAO,UAAA,GAAe,KAAA,CACzBkL,EAAAA,CAAc,CACd,IAAA,CAAAnB,CAAAA,CACA,MAAA,CAAAC,CAAAA,CACA,MAAA,CAAAC,EAAAA,CACA,MAAA,CAAQjK,CAAAA,CAAK,MAAA,CAAO,IAAA,CAAK,YAC1B,CAAC,CAAA,CACAmL,EAAAA,CAAc,CAAE,IAAA,CAAApB,CAAAA,CAAM,MAAA,CAAAC,CAAAA,CAAQ,MAAA,CAAAC,EAAO,CAAC,CAAA,GAPxC,IAAA,CAAA0G,EAAAA,CAO8C,EAAA,EAElD,CAGA,IAAM4D,CAAAA,CAAUvU,CAAAA,CAAK,KAAA,CACjBwU,CAAAA,CAAkBtD,CAAAA,CAAAA,CAClBN,EAAAA,CAAA2D,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAS,KAAA,CAAMvU,CAAAA,CAAK,MAAA,CAAO,qBAAA,CAAA,GAA3B,IAAA,CAAA4Q,EAAAA,CAAqD,EAAC,CACvD2D,CAAAA,EAAW,IAAA,CACV,EAAC,CACD,CAACA,CAAO,CAAA,CACRxR,CAAAA,CAAMyR,CAAAA,CAAM,SAAA,CAAW1R,CAAAA,EAASA,CAAAA,CAAK,QAAA,CAAS6F,CAAAA,CAAK,KAAK,CAAC,CAAA,CAG7D,GAAI5F,CAAAA,CAAM,CAAA,CAAA,CAQT,GANImO,CAAAA,CAAUnO,CAAAA,CAAMyR,CAAAA,CAAM,IAAA,CAAK7L,CAAAA,CAAK,KAAK,CAAA,CAAI,CAAA,EAE5C5F,CAAAA,CAAM,CAAA,CACNyR,CAAAA,CAAM,CAAC,CAAA,CAAI7L,CAAAA,CAAK,KAAA,CAAA,CAGb,CAACA,CAAAA,CAAK,MAAA,CAAQ,CACjB3I,CAAAA,CAAK,MAAA,CAAO,IAAA,CAAO2M,EAAAA,CAAS3M,CAAAA,CAAK,MAAM,CAAA,CACvCA,CAAAA,CAAK,KAAA,CAAM,GAAA,CAAMD,mBAAAA,CAAM,GAAA,CAAI,KAAA,CAC3BC,CAAAA,CAAK,KAAA,CAAM,MAAA,CAASD,mBAAAA,CAAM,MAAA,CAAO,QAAA,CACjCT,CAAAA,CAAM,GAAA,CAAIU,CAAW,CAAA,CACrB,MACD,CAAA,CAAA,KACU2I,CAAAA,CAAK,MAAA,GAEf6L,CAAAA,CAAQA,CAAAA,CAAM,MAAA,CAAQ1R,CAAAA,EAAS,CAACA,CAAAA,CAAK,QAAA,CAAS6F,CAAAA,CAAK,KAAK,CAAC,CAAA,CACzD5F,CAAAA,CAAM,EAAA,CAAA,CAKP,GAAIA,CAAAA,EAAO,CAAA,CAAG,CACb/C,CAAAA,CAAK,MAAA,CAAO,IAAA,CAAO2M,EAAAA,CAAS3M,CAAAA,CAAK,MAAM,CAAA,CACvC,IAAIoJ,CAAAA,CAAQoL,CAAAA,CAAMzR,CAAG,CAAA,CAAE,OAAA,CAAQ4F,CAAAA,CAAK,KAAA,CAAO,EAAE,CAAA,CAAE,IAAA,EAAK,CACpDS,CAAAA,CAAQA,CAAAA,EAAS,IAAA,EAAQA,CAAAA,GAAU,EAAA,EAAMA,CAAAA,CAAM,OAAS,CAAA,CAAI,IAAA,CAAOA,CAAAA,CACnE,IAAIqL,CAAAA,CAAYH,CAAAA,CAAAA,CACZzD,EAAAA,CAAAzH,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAO,KAAA,CAAMpJ,CAAAA,CAAK,MAAA,CAAO,qBAAA,CAAA,GAAzB,IAAA,CAAA6Q,EAAAA,CAAmD,EAAC,CACrDzH,CAAAA,EAAS,IAAA,EAAQA,CAAAA,GAAU,EAAA,CAC1B,EAAC,CACD,CAACA,CAAK,CAAA,CACMqL,CAAAA,CAAU,SAAA,CAAW3R,EAAAA,EAASA,EAAAA,CAAK,QAAA,CAASyG,CAAAA,CAAK,KAAK,CAAC,CAAA,CACzD,CAAA,CACbkL,CAAAA,CAAU,IAAA,CAAKlL,CAAAA,CAAK,KAAK,CAAA,CACfA,CAAAA,CAAK,MAAA,GACfkL,CAAAA,CAAYA,CAAAA,CAAU,MAAA,CAAQ3R,EAAAA,EAAS,CAACA,EAAAA,CAAK,QAAA,CAASyG,CAAAA,CAAK,KAAK,CAAC,CAAA,CAAA,CAGlE,IAAMmL,EAAAA,CAAMD,CAAAA,CAAU,IAAA,CAAKzU,CAAAA,CAAK,MAAA,CAAO,qBAAqB,CAAA,CACxDuJ,CAAAA,CAAK,MAAA,GACRiL,CAAAA,CAAMzR,CAAG,CAAA,CAAI,CAAA,EAAG4F,CAAAA,CAAK,KAAK,CAAA,CAAA,EAAI2L,CAAAA,CAAeI,EAAAA,CAAAA,CAAOP,EAAAA,CAAA5K,CAAAA,CAAK,KAAA,GAAL,IAAA,CAAA4K,EAAAA,CAAc,EAAG,CAAA,CAAA,CAAG,IAAA,EAAK,EAE/E,CAGAnU,CAAAA,CAAK,KAAA,CAAM,GAAA,CAAMD,mBAAAA,CAAM,GAAA,CAAI,KAAA,CAC3BC,CAAAA,CAAK,KAAA,CAAM,MAAA,CAASD,mBAAAA,CAAM,MAAA,CAAO,KAAA,CAEjCC,CAAAA,CAAK,KAAA,CAAM,EAAA,CAAK,CACf,KAAA,CACCwU,CAAAA,CAAM,MAAA,GAAW,CAAA,CACd,IAAA,CACAtD,CAAAA,CACCsD,CAAAA,CAAM,IAAA,CAAKxU,CAAAA,CAAK,MAAA,CAAO,qBAAqB,CAAA,CAC5CwU,CAAAA,CAAM,CAAC,CACb,CAAA,CAEAlV,CAAAA,CAAM,GAAA,CAAIU,CAAW,EACtB,CACD,CAAA,CAIMoT,CAAAA,CAAmB,CAAE,GAAA,CAAAvT,CAAAA,CAAK,KAAMmT,CAAAA,CAAU,QAAA,CAAAD,CAAAA,CAAU,KAAA,CAAAE,CAAAA,CAAO,OAAA,CAAS,QAAS,CAAA,CAKnF,GAAA,CAJA7Q,CAAAA,CAAA5B,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAS,cAAA,GAAT,IAAA,EAAA4B,CAAAA,CAAA,IAAA,CAAA5B,CAAAA,CAA0B4S,CAAAA,CAAAA,CAAAA,CAC1B/Q,CAAAA,CAAAuC,CAAAA,CAAM,QAAA,GAAN,IAAA,EAAAvC,CAAAA,CAAA,IAAA,CAAAuC,CAAAA,CAAiBwO,CAAAA,CAAAA,CAGb/N,CAAAA,CAAM,KAAA,CAAM,MAAA,GAAWtF,mBAAAA,CAAM,MAAA,CAAO,IAAA,CAAM,CAC7C,IAAMC,CAAAA,CAAOG,mBAAAA,CAAA,EAAA,CAAKb,CAAAA,CAAM,GAAA,EAAI,CAAA,CAC5BU,CAAAA,CAAK,KAAA,CAAM,MAAA,CAASD,mBAAAA,CAAM,MAAA,CAAO,KAAA,CACjCC,CAAAA,CAAK,KAAA,CAAM,MAAA,CAASD,mBAAAA,CAAM,MAAA,CAAO,QAAA,CACjCT,CAAAA,CAAM,GAAA,CAAIU,CAAI,EACf,CAGA,OAAOiT,CACR,CCjLO,SAAS0B,CAAAA,CAKf7B,CAAAA,CACAzT,CAAAA,CACA2D,CAAAA,CACC,CArBF,IAAAxB,CAAAA,CAAAW,CAAAA,CAAAC,CAAAA,CAAAC,CAAAA,CAsBC,GAAM,CAAE,GAAA,CAAAxC,CAAAA,CAAK,OAAA,CAAAW,CAAAA,CAAS,KAAA,CAAAlB,CAAAA,CAAO,KAAA,CAAAsF,CAAM,CAAA,CAAIkO,CAAAA,CACjC,CAAE,QAAA,CAAAC,CAAAA,CAAU,QAAA,CAAAC,CAAS,CAAA,CAAI3T,CAAAA,CACzBgG,CAAAA,CAAQ2N,CAAAA,CACd,GAAIhQ,CAAAA,GAAW,IAAA,CAAM,MAAM,IAAI,KAAA,CAAM,gCAAA,CAAmCA,CAAM,CAAA,CAC9E,IAAMkR,CAAAA,CAAAA,CAAAA,CACJ/R,CAAAA,CAAAA,CAAAX,CAAAA,CAAA6D,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAO,OAAA,GAAP,IAAA,CAAA,MAAA,CAAA7D,CAAAA,CAAgB,KAAA,GAAhB,IAAA,CAAAW,CAAAA,CAAyByC,CAAAA,CAAM,KAAA,EAChC,UAAA,CACA5B,CAAAA,CAAO,QAAA,CACP,GAAA,CACAA,CAAAA,CAAO,KAAA,CACP,KAAA,CACKwQ,CAAAA,CAAOnO,CAAAA,CAAM,WAAW,GAAA,CAAM,SAAA,CAC9B4N,CAAAA,CAAQ,CACb,EAAA,CAAAiB,CAAAA,CACA,IAAA,CAAAV,CAAAA,CACA,CAACT,CAAAA,GAAa,MAAA,CAAS,SAAA,CAAY,SAAS,EAAG,SAAiBG,CAAAA,CAAqB,CACpFA,CAAAA,CAAM,cAAA,EAAe,CACrB,IAAMlT,CAAAA,CAAOG,mBAAAA,CAAA,EAAA,CAAKb,CAAAA,CAAM,GAAA,EAAI,CAAA,CACxBoS,CAAAA,CAAS,KAAA,CACP3F,CAAAA,CAAS/L,CAAAA,CAAK,MAAA,CAAO,IAAA,CAAK,YAAA,CAC5BgD,CAAAA,CAAO,IAAA,GAASqJ,mBAAAA,CAAS,OAAA,CAAQ,WAAA,EACpCoB,EAAAA,CAAK,OAAA,CAAQ,YAAA,CAAazK,CAAAA,CAAQhD,CAAAA,CAAK,MAAM,CAAA,CAI1C+L,CAAAA,GAAW/L,CAAAA,CAAK,MAAA,CAAO,IAAA,CAAK,YAAA,GAC/B0R,CAAAA,CAAS,IAAA,CAAA,CAGLA,CAAAA,GAIL1R,CAAAA,CAAK,KAAA,CAAM,GAAA,CAAMD,mBAAAA,CAAM,GAAA,CAAI,iBAAA,CAC3BC,CAAAA,CAAK,KAAA,CAAM,OAASD,mBAAAA,CAAM,MAAA,CAAO,QAAA,CACjCT,CAAAA,CAAM,GAAA,CAAIU,CAAW,CAAA,EACtB,CACD,CAAA,CAIMoT,CAAAA,CAAmB,CAAE,GAAA,CAAAvT,CAAAA,CAAK,IAAA,CAAMmT,CAAAA,CAAU,QAAA,CAAAD,CAAAA,CAAU,KAAA,CAAAE,CAAAA,CAAO,OAAA,CAAS,QAAS,CAAA,CACnF,OAAA,CAAA7Q,CAAAA,CAAA5B,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAS,cAAA,GAAT,IAAA,EAAA4B,CAAAA,CAAA,IAAA,CAAA5B,CAAAA,CAA0B4S,CAAAA,CAAAA,CAAAA,CAC1B/Q,CAAAA,CAAAuC,CAAAA,CAAM,QAAA,GAAN,IAAA,EAAAvC,CAAAA,CAAA,IAAA,CAAAuC,CAAAA,CAAiBwO,CAAAA,CAAAA,CAGVH,CACR,CCvDO,SAAS2B,CAAAA,CAKf9B,CAAAA,CACAzT,CAAAA,CACAwV,CAAAA,CACC,CAtBF,IAAArT,CAAAA,CAAAW,CAAAA,CAAAC,CAAAA,CAAAC,CAAAA,CAuBC,GAAM,CAAE,GAAA,CAAAxC,CAAAA,CAAK,OAAA,CAAAW,CAAAA,CAAS,KAAA,CAAAlB,CAAAA,CAAO,MAAAsF,CAAM,CAAA,CAAIkO,CAAAA,CACjC,CAAE,QAAA,CAAAC,CAAAA,CAAU,QAAA,CAAAC,CAAS,CAAA,CAAI3T,CAAAA,CACzBgG,CAAAA,CAAQ2N,CAAAA,CACR8B,CAAAA,CAAQ,OAAOD,CAAAA,EAAW,QAAA,CAAWA,CAAAA,CAASxI,mBAAAA,CAAS,MAAA,CAAOwI,CAAM,CAAA,CAC1E,GAAIC,CAAAA,GAAU,IAAA,CAAM,MAAM,IAAI,KAAA,CAAM,+BAAA,CAAkCD,CAAM,CAAA,CAC5E,IAAMX,CAAAA,CAAAA,CAAAA,CAAM/R,CAAAA,CAAAA,CAAAX,CAAAA,CAAA6D,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAO,OAAA,GAAP,IAAA,CAAA,MAAA,CAAA7D,CAAAA,CAAgB,KAAA,GAAhB,IAAA,CAAAW,CAAAA,CAAyByC,CAAAA,CAAM,KAAA,EAAS,SAAA,CAAYkQ,CAAAA,CAAQ,KAAA,CAClEtB,CAAAA,CAAOnO,CAAAA,CAAM,UAAA,CAAW,GAAA,CAAM,SAAA,CAAYyP,CAAAA,CAC1C7B,CAAAA,CAAQ,CACb,EAAA,CAAAiB,CAAAA,CACA,IAAA,CAAAV,CAAAA,CACA,CAACT,CAAAA,GAAa,MAAA,CAAS,SAAA,CAAY,SAAS,EAAG,SAAiBG,CAAAA,CAAqB,CACpFA,CAAAA,CAAM,cAAA,EAAe,CACrB,IAAMlT,CAAAA,CAAOG,mBAAAA,CAAA,EAAA,CAAKb,CAAAA,CAAM,GAAA,EAAI,CAAA,CACxBoS,CAAAA,CAAS,KAAA,CACT2C,CAAAA,CAAOrU,CAAAA,CAAK,MAAA,CAAO,IAAA,CACjBiM,CAAAA,CAAQjM,CAAAA,CAAK,MAAA,CAAO,KAAA,CAAM,MAAA,CAC1BsN,CAAAA,CAAOtN,CAAAA,CAAK,MAAA,CAAO,IAAA,CAAK,MAAA,CACxB+U,CAAAA,CAAY/U,CAAAA,CAAK,MAAA,CAAO,IAAA,CAAK,KAAA,CAC/B8U,CAAAA,GAAUzI,mBAAAA,CAAS,MAAA,CAAO,UAAA,CAC7BgI,CAAAA,CAAOxH,EAAAA,CAASR,mBAAAA,CAAS,IAAA,CAAK,IAAA,CAAMrM,CAAAA,CAAK,MAAM,CAAA,CACrC8U,CAAAA,GAAUzI,mBAAAA,CAAS,MAAA,CAAO,WAAA,CACpCgI,CAAAA,CAAOxH,EAAAA,CAASR,mBAAAA,CAAS,IAAA,CAAK,KAAA,CAAOrM,CAAAA,CAAK,MAAM,CAAA,CACtC8U,CAAAA,GAAUzI,mBAAAA,CAAS,OAAO,SAAA,CACpCgI,CAAAA,CAAOxH,EAAAA,CAASR,mBAAAA,CAAS,IAAA,CAAK,GAAA,CAAKrM,CAAAA,CAAK,MAAM,CAAA,CACpCA,CAAAA,CAAK,MAAA,CAAO,IAAA,CAAK,MAAA,GAAWqM,mBAAAA,CAAS,IAAA,CAAK,GAAA,CAChDyI,CAAAA,GAAUzI,mBAAAA,CAAS,MAAA,CAAO,QAAA,CAAU8B,CAAAA,CAAM,MAAA,CAAO,IAAA,CAAKnO,CAAAA,CAAK,MAAM,CAAA,CAC5D8U,CAAAA,GAAUzI,mBAAAA,CAAS,MAAA,CAAO,QAAA,EAAU8B,CAAAA,CAAM,MAAA,CAAO,IAAA,CAAKnO,CAAAA,CAAK,MAAM,CAAA,CAChEA,CAAAA,CAAK,MAAA,CAAO,IAAA,CAAK,MAAA,GAAWqM,mBAAAA,CAAS,IAAA,CAAK,KAAA,CAChDyI,CAAAA,GAAUzI,mBAAAA,CAAS,MAAA,CAAO,QAAA,CAAU0B,CAAAA,CAAK,MAAA,CAAO,IAAA,CAAK/N,CAAAA,CAAK,MAAM,CAAA,CAC3D8U,CAAAA,GAAUzI,mBAAAA,CAAS,MAAA,CAAO,QAAA,EAAU0B,CAAAA,CAAK,MAAA,CAAO,IAAA,CAAK/N,CAAAA,CAAK,MAAM,CAAA,CAC/DA,CAAAA,CAAK,MAAA,CAAO,IAAA,CAAK,MAAA,GAAWqM,mBAAAA,CAAS,IAAA,CAAK,IAAA,GAChDyI,CAAAA,GAAUzI,mBAAAA,CAAS,MAAA,CAAO,QAAA,CAAU0B,CAAAA,CAAK,MAAA,CAAO,QAAA,CAAS/N,CAAAA,CAAK,MAAM,CAAA,CAC/D8U,CAAAA,GAAUzI,mBAAAA,CAAS,MAAA,CAAO,QAAA,EAAU0B,CAAAA,CAAK,MAAA,CAAO,QAAA,CAAS/N,CAAAA,CAAK,MAAM,CAAA,CAAA,CAAA,CAK7EqU,CAAAA,CAAK,MAAA,GAAWrU,CAAAA,CAAK,MAAA,CAAO,IAAA,CAAK,MAAA,EACjCsN,CAAAA,GAAStN,CAAAA,CAAK,MAAA,CAAO,IAAA,CAAK,MAAA,EAC1B+U,CAAAA,GAAc/U,CAAAA,CAAK,MAAA,CAAO,IAAA,CAAK,KAAA,EAC/BiM,CAAAA,GAAUjM,CAAAA,CAAK,MAAA,CAAO,KAAA,CAAM,MAAA,IAE5B0R,CAAAA,CAAS,IAAA,CAAA,CAGLA,CAAAA,GAIL1R,CAAAA,CAAK,MAAA,CAAO,IAAA,CAAOqU,CAAAA,CACnBrU,CAAAA,CAAK,KAAA,CAAM,GAAA,CAAMD,mBAAAA,CAAM,GAAA,CAAI,gBAAA,CAC3BC,CAAAA,CAAK,KAAA,CAAM,OAASD,mBAAAA,CAAM,MAAA,CAAO,QAAA,CACjCT,CAAAA,CAAM,GAAA,CAAIU,CAAW,CAAA,EACtB,CACD,CAAA,CAIMoT,CAAAA,CAAmB,CAAE,GAAA,CAAAvT,CAAAA,CAAK,IAAA,CAAMmT,CAAAA,CAAU,QAAA,CAAAD,CAAAA,CAAU,KAAA,CAAAE,CAAAA,CAAO,OAAA,CAAS,QAAS,CAAA,CACnF,OAAA,CAAA7Q,CAAAA,CAAA5B,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAS,cAAA,GAAT,IAAA,EAAA4B,CAAAA,CAAA,IAAA,CAAA5B,CAAAA,CAA0B4S,CAAAA,CAAAA,CAAAA,CAC1B/Q,CAAAA,CAAAuC,CAAAA,CAAM,QAAA,GAAN,IAAA,EAAAvC,CAAAA,CAAA,IAAA,CAAAuC,CAAAA,CAAiBwO,CAAAA,CAAAA,CAGVH,CACR,CCpFO,SAAS+B,CAAAA,CAIdlC,CAAAA,CAAkCzT,CAAAA,CAAgD,CAPpF,IAAAmC,CAAAA,CAAAW,CAAAA,CAAAC,CAAAA,CAAAC,CAAAA,CAAAC,CAAAA,CAAAC,CAAAA,CAQC,GAAM,CAAE,GAAA,CAAA1C,CAAAA,CAAK,OAAA,CAAAW,CAAAA,CAAS,KAAA,CAAAlB,CAAAA,CAAO,KAAA,CAAAsF,CAAM,CAAA,CAAIkO,CAAAA,CACjC,CAAE,QAAA,CAAAC,CAAAA,CAAU,QAAA,CAAAC,CAAS,CAAA,CAAI3T,CAAAA,CACzBgG,CAAAA,CAAQ2N,CAAAA,CACRC,CAAAA,CAAQ,CAEb,EAAA,CAAA,CAAI9Q,CAAAA,CAAAA,CAAAX,CAAAA,CAAA6D,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAO,OAAA,GAAP,IAAA,CAAA,MAAA,CAAA7D,CAAAA,CAAgB,KAAA,GAAhB,IAAA,CAAAW,CAAAA,CAAyByC,CAAAA,CAAM,KAAA,CAEnC,IAAA,CAAMS,CAAAA,CAAM,UAAA,CAAW,GAAA,CACvB,QAAA,CAAUA,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAO,OAAA,CAAQ,QAAA,CACzB,QAAA,CAAUA,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAO,OAAA,CAAQ,QAAA,CACzB,QAAA,CAAUA,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAO,OAAA,CAAQ,QAAA,CACzB,WAAA,CAAA,CAAajD,CAAAA,CAAAiD,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAO,OAAA,CAAQ,WAAA,GAAf,IAAA,CAAAjD,CAAAA,CAA8BiD,CAAAA,CAAM,MAAA,CAAO,MAAA,CACxD,OAAOhD,CAAAA,CAAAgD,CAAAA,CAAM,KAAA,GAAN,IAAA,CAAAhD,CAAAA,CAAe,EAAA,CACtB,CAAC0Q,CAAAA,GAAa,MAAA,CAAS,cAAA,CAAiB,cAAc,EAAG,KAAA,CACzD,CAACA,CAAAA,GAAa,MAAA,CAAS,SAAA,CAAY,SAAS,EAAIG,CAAAA,EAAsB,CACrEA,CAAAA,CAAM,cAAA,EAAe,CACrBA,CAAAA,CAAM,wBAAA,EAAyB,CAC/BA,CAAAA,CAAM,eAAA,EAAgB,CAGtB,IAAMpR,CAAAA,CAAUoR,CAAAA,CAAM,MAAA,CACtB,UAAA,CAAW,IAAM,CAEhB,QAAA,CAAS,gBAAA,CAAiB,OAAA,CAAS,SAASI,CAAAA,CAAahT,CAAAA,CAAG,CAC3D,IAAMiT,CAAAA,CAASjT,CAAAA,CAAE,MAAA,CACXkT,CAAAA,CAAOD,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAQ,YAAA,CAAa,MAAA,CAAA,CAClC,GAAI,CAACzR,CAAAA,CAAQ,QAAA,CAASyR,CAAM,CAAA,CAAG,CAC9B,GAAIC,GAAQA,CAAAA,CAAK,UAAA,CAAWnO,CAAAA,CAAM,UAAA,CAAW,GAAG,CAAA,CAC/C,OAGD,QAAA,CAAS,mBAAA,CAAoB,OAAA,CAASiO,CAAY,CAAA,CAClD,IAAMtT,CAAAA,CAAOG,mBAAAA,CAAA,EAAA,CAAKb,CAAAA,CAAM,GAAA,EAAI,CAAA,CAC5BU,CAAAA,CAAK,OAAA,CAAQ,OAAA,CAAU,KAAA,CACvBA,CAAAA,CAAK,OAAA,CAAQ,OAAA,CAAU,IAAA,CACvBA,CAAAA,CAAK,UAAA,CAAW,MAAA,CAAS,KAAA,CAEzBA,CAAAA,CAAK,KAAA,CAAM,GAAA,CAAMD,mBAAAA,CAAM,GAAA,CAAI,IAAA,CAC3BC,CAAAA,CAAK,KAAA,CAAM,MAAA,CAASD,mBAAAA,CAAM,MAAA,CAAO,IAAA,CACjCC,CAAAA,CAAK,KAAA,CAAM,EAAA,CAAK,MAAA,CAChBV,CAAAA,CAAM,GAAA,CAAIU,CAAI,EACf,CACD,CAAC,EACF,CAAA,CAAG,GAAG,CAAA,CAGN,IAAMA,CAAAA,CAAOG,mBAAAA,CAAA,EAAA,CAAKb,CAAAA,CAAM,KAAI,CAAA,CAC5BU,CAAAA,CAAK,OAAA,CAAQ,OAAA,CAAU,IAAA,CACvBA,CAAAA,CAAK,OAAA,CAAQ,OAAA,CAAU,IAAA,CACvBA,CAAAA,CAAK,UAAA,CAAW,MAAA,CAAS,KAAA,CAEzBA,CAAAA,CAAK,KAAA,CAAM,GAAA,CAAMD,mBAAAA,CAAM,GAAA,CAAI,KAAA,CAC3BC,CAAAA,CAAK,KAAA,CAAM,MAAA,CAASD,mBAAAA,CAAM,MAAA,CAAO,IAAA,CACjCC,CAAAA,CAAK,KAAA,CAAM,EAAA,CAAK,CACf,KAAA,CAAQkT,CAAAA,CAAM,MAAA,CAAe,KAAA,CAC7B,OAAA,CAAUA,CAAAA,CAAM,MAAA,CAAe,OAAA,CAC/B,KAAA,CAAQA,CAAAA,CAAM,MAAA,CAAe,KAC9B,CAAA,CACA5T,CAAAA,CAAM,GAAA,CAAIU,CAAI,EACf,CAAA,CAeA,CAAC+S,CAAAA,GAAa,MAAA,CAAS,SAAA,CAAY,SAAS,EAAIG,CAAAA,EAAiB,CAChEA,CAAAA,CAAM,cAAA,EAAe,CACrBA,CAAAA,CAAM,wBAAA,EAAyB,CAC/BA,CAAAA,CAAM,eAAA,EAAgB,CACtB,IAAMlT,CAAAA,CAAOG,mBAAAA,CAAA,EAAA,CAAKb,CAAAA,CAAM,GAAA,EAAI,CAAA,CAC5B,GAAIU,CAAAA,CAAK,OAAA,CAAQ,QAAA,CAChB,OAEDA,CAAAA,CAAK,UAAA,CAAW,MAAA,CAAS,KAAA,CAEzBA,CAAAA,CAAK,KAAA,CAAM,GAAA,CAAMD,mBAAAA,CAAM,GAAA,CAAI,IAAA,CAC3BC,CAAAA,CAAK,KAAA,CAAM,MAAA,CAASD,mBAAAA,CAAM,MAAA,CAAO,KAAA,CACjC,IAAM2B,CAAAA,CAASwR,CAAAA,CAAM,MAAA,CAAe,KAAA,CACpClT,CAAAA,CAAK,KAAA,CAAM,EAAA,CAAK,CACf,KAAA,CAAO0B,CAAAA,GAAU,EAAA,CAAK,MAAA,CAAYA,CAAAA,CAClC,OAAA,CAAUwR,CAAAA,CAAM,MAAA,CAAe,OAAA,CAC/B,KAAA,CAAQA,CAAAA,CAAM,MAAA,CAAe,KAC9B,CAAA,CACA5T,CAAAA,CAAM,GAAA,CAAIU,CAAI,EACf,CACD,CAAA,CAIMoT,CAAAA,CAAmB,CAAE,GAAA,CAAAvT,CAAAA,CAAK,IAAA,CAAMmT,EAAU,QAAA,CAAAD,CAAAA,CAAU,KAAA,CAAAE,CAAAA,CAAO,OAAA,CAAS,OAAQ,CAAA,CAKlF,GAAA,CAJA3Q,CAAAA,CAAA9B,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAS,cAAA,GAAT,IAAA,EAAA8B,CAAAA,CAAA,IAAA,CAAA9B,CAAAA,CAA0B4S,CAAAA,CAAAA,CAAAA,CAC1B7Q,CAAAA,CAAAqC,CAAAA,CAAM,QAAA,GAAN,IAAA,EAAArC,CAAAA,CAAA,IAAA,CAAAqC,CAAAA,CAAiBwO,CAAAA,CAAAA,CAGb/N,CAAAA,CAAM,KAAA,CAAM,MAAA,GAAWtF,mBAAAA,CAAM,MAAA,CAAO,IAAA,CAAM,CAC7C,IAAMC,CAAAA,CAAOG,mBAAAA,CAAA,EAAA,CAAKb,CAAAA,CAAM,GAAA,EAAI,CAAA,CAC5BU,CAAAA,CAAK,KAAA,CAAM,MAAA,CAASD,mBAAAA,CAAM,MAAA,CAAO,KAAA,CACjCC,CAAAA,CAAK,KAAA,CAAM,MAAA,CAASD,mBAAAA,CAAM,MAAA,CAAO,QAAA,CACjCT,CAAAA,CAAM,GAAA,CAAIU,CAAI,EAmBf,CAGA,OAAOiT,CACR,CC7DO,SAASgC,EAAAA,CACfnC,CAAAA,CACuB,CACvB,GAAM,CAAE,GAAA,CAAAjT,CAAAA,CAAK,KAAA,CAAA+E,CAAAA,CAAO,KAAA,CAAAtF,CAAAA,CAAO,OAAA,CAAAkB,CAAQ,CAAA,CAAIsS,CAAAA,CAEnCtQ,CAAAA,CACJ,OAAIoC,CAAAA,CAAM,IAAA,GAAS,QAAA,EAAYA,CAAAA,CAAM,IAAA,GAAS,cAAA,CAC7CpC,CAAAA,CAAS,CACR,OAAA,CAAUnD,CAAAA,EAAU,CArFvB,IAAAmC,CAAAA,CAsFI,IAAMwR,CAAAA,CAAW1T,CAAAA,CAAM,GAAA,EAAI,CACrByT,CAAAA,CAAAA,CAAWvR,CAAAA,CAAAnC,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAO,QAAA,GAAP,IAAA,CAAAmC,CAAAA,CAAmB,KAAA,CACpC,OAAO6R,CAAAA,CAA8BP,CAAAA,CAAO,CAAE,QAAA,CAAAC,CAAAA,CAAU,QAAA,CAAAC,CAAS,CAAC,CACnE,CAAA,CACA,MAAA,CAAQ,CAACtR,CAAAA,CAAOrC,CAAAA,GAAU,CA1F7B,IAAAmC,CAAAA,CA2FI,IAAMwR,CAAAA,CAAW1T,CAAAA,CAAM,KAAI,CACrByT,CAAAA,CAAAA,CAAWvR,CAAAA,CAAAnC,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAO,QAAA,GAAP,IAAA,CAAAmC,CAAAA,CAAmB,KAAA,CACpC,OAAOiS,CAAAA,CAA6BX,CAAAA,CAAO,CAC1C,QAAA,CAAAC,CAAAA,CACA,QAAA,CAAAC,CAAAA,CACA,WAAA,CAAatR,CACd,CAAC,CACF,CACD,CAAA,CACUkD,CAAAA,CAAM,IAAA,GAAS,MAAA,CACzBpC,CAAAA,CAAS,CACR,KAAA,CAAQnD,CAAAA,EAAU,CAtGrB,IAAAmC,CAAAA,CAuGI,IAAMwR,CAAAA,CAAW1T,CAAAA,CAAM,GAAA,EAAI,CACrByT,CAAAA,CAAAA,CAAWvR,CAAAA,CAAAnC,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAO,QAAA,GAAP,IAAA,CAAAmC,CAAAA,CAAmB,KAAA,CACpC,OAAOwT,CAAAA,CAA0BlC,CAAAA,CAAO,CAAE,QAAA,CAAAC,CAAAA,CAAU,QAAA,CAAAC,CAAS,CAAC,CAC/D,CAAA,CACA,KAAA,CAAO,CAACE,CAAAA,CAAO7T,CAAAA,GAAU,CA3G5B,IAAAmC,CAAAA,CA4GI,IAAMwR,CAAAA,CAAW1T,CAAAA,CAAM,GAAA,EAAI,CACrByT,CAAAA,CAAAA,CAAWvR,CAAAA,CAAAnC,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAO,QAAA,GAAP,IAAA,CAAAmC,CAAAA,CAAmB,KAAA,CACpC,OAAOoT,CAAAA,CAA0B9B,CAAAA,CAAO,CAAE,QAAA,CAAAC,CAAAA,CAAU,QAAA,CAAAC,CAAS,CAAA,CAAGE,CAAK,CACtE,CAAA,CACA,IAAA,CAAM,CAACgC,CAAAA,CAAO7V,CAAAA,GAAU,CAhH3B,IAAAmC,CAAAA,CAiHI,IAAMwR,CAAAA,CAAW1T,CAAAA,CAAM,GAAA,EAAI,CACrByT,CAAAA,CAAAA,CAAWvR,CAAAA,CAAAnC,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAO,QAAA,GAAP,IAAA,CAAAmC,CAAAA,CAAmB,KAAA,CACpC,OAAOwS,CAAAA,CAAyBlB,CAAAA,CAAO,CAAE,QAAA,CAAAC,CAAAA,CAAU,QAAA,CAAAC,CAAS,CAAA,CAAGkC,CAAK,CACrE,CAAA,CACA,MAAA,CAAQ,CAAClS,CAAAA,CAAQ3D,CAAAA,GAAU,CArH9B,IAAAmC,CAAAA,CAsHI,IAAMwR,CAAAA,CAAW1T,CAAAA,CAAM,GAAA,EAAI,CACrByT,CAAAA,CAAAA,CAAWvR,CAAAA,CAAAnC,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAO,QAAA,GAAP,IAAA,CAAAmC,CAAAA,CAAmB,KAAA,CACpC,OAAOmT,CAAAA,CAA2B7B,CAAAA,CAAO,CAAE,QAAA,CAAAC,CAAAA,CAAU,QAAA,CAAAC,CAAS,CAAA,CAAGhQ,CAAM,CACxE,CACD,CAAA,CAEAR,CAAAA,CAAUnD,CAAAA,EAAU,CA5HtB,IAAAmC,CAAAA,CA6HG,IAAMwR,CAAAA,CAAW1T,CAAAA,CAAM,GAAA,EAAI,CACrByT,CAAAA,CAAAA,CAAWvR,CAAAA,CAAAnC,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAO,QAAA,GAAP,IAAA,CAAAmC,CAAAA,CAAmB,KAAA,CACpC,OAAOqR,CAAAA,CAAsBC,CAAAA,CAAO,CAAE,QAAA,CAAAC,CAAAA,CAAU,QAAA,CAAAC,CAAS,CAAC,CAC3D,CAAA,CAGDxQ,EAAO,gBAAA,CAAmB,KAAA,CAC1BA,CAAAA,CAAO,iBAAA,CAAoB,YAAA,CACpBA,CACR,CC9FO,SAAS2S,EAAAA,CACfrC,CAAAA,CACuB,CACvB,GAAM,CAAE,GAAA,CAAAjT,CAAAA,CAAK,KAAA,CAAA+E,CAAAA,CAAO,KAAA,CAAAtF,CAAM,CAAA,CAAIwT,CAAAA,CAE1BtQ,CAAAA,CACJ,OAAIoC,CAAAA,CAAM,IAAA,GAAS,QAAA,EAAYA,CAAAA,CAAM,IAAA,GAAS,cAAA,CAC7CpC,CAAAA,CAAS,CACR,OAAA,CAAU4S,CAAAA,EAAQ,CACjB,GAAIA,CAAAA,EAAO,IAAA,EAAQA,CAAAA,CAAI,IAAA,GAASvV,CAAAA,CAC/B,OAED,IAAMmT,CAAAA,CAAW1T,CAAAA,CAAM,GAAA,EAAI,CAErB2T,CAAAA,CAAQI,CAAAA,CAA8BP,CAAAA,CAAO,CAAE,QAAA,CADpC,KAAA,CAC8C,QAAA,CAAAE,CAAS,CAAC,CAAA,CACzE,IAAA,IAAWqC,CAAAA,IAAKpC,CAAAA,CACfmC,CAAAA,CAAIC,CAAC,CAAA,CAAIpC,EAAMoC,CAAC,EAElB,CAAA,CACA,MAAA,CAAQ,CAACD,CAAAA,CAAK1T,CAAAA,GAAU,CACvB,IAAMsR,CAAAA,CAAW1T,CAAAA,CAAM,GAAA,EAAI,CAErB2T,CAAAA,CAAQQ,CAAAA,CAA6BX,CAAAA,CAAO,CACjD,QAAA,CAFgB,KAAA,CAGhB,QAAA,CAAAE,CAAAA,CACA,WAAA,CAAatR,CACd,CAAC,CAAA,CACD,IAAA,IAAW2T,CAAAA,IAAKpC,CAAAA,CACfmC,CAAAA,CAAIC,CAAC,CAAA,CAAIpC,CAAAA,CAAMoC,CAAC,EAElB,CACD,CAAA,CACUzQ,CAAAA,CAAM,IAAA,GAAS,MAAA,CACzBpC,CAAAA,CAAS,CACR,KAAA,CAAQ4S,CAAAA,EAAQ,CACf,GAAIA,CAAAA,EAAO,IAAA,EAAQA,CAAAA,CAAI,IAAA,GAASvV,CAAAA,CAC/B,OAED,IAAMmT,CAAAA,CAAW1T,CAAAA,CAAM,GAAA,EAAI,CAErB2T,CAAAA,CAAQ+B,CAAAA,CAA0BlC,CAAAA,CAAO,CAAE,QAAA,CADhC,KAAA,CAC0C,QAAA,CAAAE,CAAS,CAAC,CAAA,CACrE,IAAA,IAAWqC,CAAAA,IAAKpC,CAAAA,CACfmC,CAAAA,CAAIC,CAAC,CAAA,CAAIpC,CAAAA,CAAMoC,CAAC,EAElB,CAAA,CACA,KAAA,CAAO,CAACD,CAAAA,CAAKlC,CAAAA,GAAU,CACtB,GAAIkC,CAAAA,EAAO,IAAA,EAAQA,CAAAA,CAAI,IAAA,GAASvV,CAAAA,CAC/B,OAED,IAAMmT,CAAAA,CAAW1T,CAAAA,CAAM,GAAA,EAAI,CAErB2T,CAAAA,CAAQ2B,CAAAA,CAA0B9B,CAAAA,CAAO,CAAE,QAAA,CADhC,KAAA,CAC0C,QAAA,CAAAE,CAAS,CAAA,CAAGE,CAAK,CAAA,CAC5E,IAAA,IAAWmC,CAAAA,IAAKpC,CAAAA,CACfmC,CAAAA,CAAIC,CAAC,CAAA,CAAIpC,CAAAA,CAAMoC,CAAC,EAElB,CAAA,CACA,IAAA,CAAM,CAACD,CAAAA,CAAKF,CAAAA,GAAU,CACrB,GAAIE,CAAAA,EAAO,IAAA,EAAQA,CAAAA,CAAI,IAAA,GAASvV,CAAAA,CAC/B,OAED,IAAMmT,CAAAA,CAAW1T,CAAAA,CAAM,GAAA,EAAI,CAErB2T,CAAAA,CAAQe,CAAAA,CAAyBlB,CAAAA,CAAO,CAAE,QAAA,CAD/B,KAAA,CACyC,QAAA,CAAAE,CAAS,CAAA,CAAGkC,CAAK,CAAA,CAC3E,IAAA,IAAWG,CAAAA,IAAKpC,CAAAA,CACfmC,CAAAA,CAAIC,CAAC,CAAA,CAAIpC,CAAAA,CAAMoC,CAAC,EAElB,CAAA,CACA,MAAA,CAAQ,CAACD,CAAAA,CAAKpS,CAAAA,GAAW,CACxB,GAAIoS,CAAAA,EAAO,IAAA,EAAQA,CAAAA,CAAI,IAAA,GAASvV,CAAAA,CAC/B,OAED,IAAMmT,CAAAA,CAAW1T,CAAAA,CAAM,GAAA,EAAI,CAErB2T,CAAAA,CAAQ0B,CAAAA,CAA2B7B,CAAAA,CAAO,CAAE,QAAA,CADjC,KAAA,CAC2C,QAAA,CAAAE,CAAS,CAAA,CAAGhQ,CAAM,CAAA,CAC9E,IAAA,IAAWqS,CAAAA,IAAKpC,CAAAA,CACfmC,CAAAA,CAAIC,CAAC,CAAA,CAAIpC,CAAAA,CAAMoC,CAAC,EAElB,CACD,CAAA,CAEA7S,CAAAA,CAAU4S,CAAAA,EAAQ,CACjB,GAAIA,CAAAA,EAAO,IAAA,EAAQA,CAAAA,CAAI,IAAA,GAASvV,CAAAA,CAC/B,OAED,IAAMmT,CAAAA,CAAW1T,CAAAA,CAAM,GAAA,EAAI,CAErB2T,CAAAA,CAAQJ,CAAAA,CAAsBC,CAAAA,CAAO,CAAE,QAAA,CAD5B,KAAA,CACsC,QAAA,CAAAE,CAAS,CAAC,CAAA,CACjE,IAAA,IAAWqC,CAAAA,IAAKpC,CAAAA,CACfmC,CAAAA,CAAIC,CAAC,CAAA,CAAIpC,CAAAA,CAAMoC,CAAC,EAElB,CAAA,CAGD7S,CAAAA,CAAO,gBAAA,CAAmB,KAAA,CAC1BA,CAAAA,CAAO,iBAAA,CAAoB,YAAA,CACpBA,CACR,CCxDO,SAAS8S,EAAAA,CACfxC,CAAAA,CAC0B,CAC1B,GAAM,CAAE,GAAA,CAAAjT,CAAAA,CAAK,KAAA,CAAA+E,CAAAA,CAAO,KAAA,CAAAtF,CAAAA,CAAO,OAAA,CAAAkB,CAAQ,CAAA,CAAIsS,CAAAA,CACnCtQ,CAAAA,CACJ,OAAIoC,CAAAA,CAAM,OAAS,QAAA,EAAYA,CAAAA,CAAM,IAAA,GAAS,cAAA,CAC7CpC,CAAAA,CAAS,CACR,OAAA,CAAUnD,CAAAA,EAAU,CAvFvB,IAAAmC,CAAAA,CAAAW,CAAAA,CAwFI,GAAI7C,CAAAA,CAAM,SAAA,EAAU,CAAE,MAAA,EAAU,IAAA,CAC/B,MAAM,IAAI,KAAA,CACT,gFACD,CAAA,CAED,IAAM0T,CAAAA,CAAAA,CAAWxR,CAAAA,CAAAlC,CAAAA,CAAM,SAAA,EAAU,CAAE,MAAA,GAAlB,IAAA,CAAA,MAAA,CAAAkC,CAAAA,CAA0B,IAAA,EAAA,CACrCuR,CAAAA,CAAAA,CAAW5Q,CAAAA,CAAA9C,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAO,QAAA,GAAP,IAAA,CAAA8C,CAAAA,CAAmB,MAAA,CACpC,OAAOkR,CAAAA,CAA8BP,CAAAA,CAAO,CAAE,QAAA,CAAAC,CAAAA,CAAU,QAAA,CAAAC,CAAS,CAAC,CACnE,CAAA,CACA,MAAA,CAAQ,CAACtR,CAAAA,CAAOrC,CAAAA,GAAU,CAjG7B,IAAAmC,CAAAA,CAAAW,CAAAA,CAkGI,GAAI7C,CAAAA,CAAM,SAAA,EAAU,CAAE,MAAA,EAAU,IAAA,CAC/B,MAAM,IAAI,KAAA,CACT,gFACD,CAAA,CAED,IAAM0T,CAAAA,CAAAA,CAAWxR,CAAAA,CAAAlC,CAAAA,CAAM,SAAA,EAAU,CAAE,MAAA,GAAlB,IAAA,CAAA,MAAA,CAAAkC,CAAAA,CAA0B,IAAA,EAAA,CACrCuR,CAAAA,CAAAA,CAAW5Q,CAAAA,CAAA9C,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAO,QAAA,GAAP,IAAA,CAAA8C,CAAAA,CAAmB,MAAA,CACpC,OAAOsR,CAAAA,CAA6BX,CAAAA,CAAO,CAC1C,QAAA,CAAAC,CAAAA,CACA,QAAA,CAAAC,CAAAA,CACA,WAAA,CAAatR,CACd,CAAC,CACF,CACD,CAAA,CACUkD,CAAAA,CAAM,IAAA,GAAS,MAAA,CACzBpC,CAAAA,CAAS,CACR,KAAA,CAAQnD,CAAAA,EAAU,CAlHrB,IAAAmC,CAAAA,CAAAW,CAAAA,CAmHI,GAAI7C,CAAAA,CAAM,SAAA,EAAU,CAAE,MAAA,EAAU,IAAA,CAC/B,MAAM,IAAI,KAAA,CACT,gFACD,EAED,IAAM0T,CAAAA,CAAAA,CAAWxR,CAAAA,CAAAlC,CAAAA,CAAM,SAAA,EAAU,CAAE,MAAA,GAAlB,IAAA,CAAA,MAAA,CAAAkC,CAAAA,CAA0B,IAAA,EAAA,CACrCuR,CAAAA,CAAAA,CAAW5Q,CAAAA,CAAA9C,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAO,QAAA,GAAP,IAAA,CAAA8C,CAAAA,CAAmB,MAAA,CACpC,OAAO6S,CAAAA,CAA0BlC,CAAAA,CAAO,CAAE,QAAA,CAAAC,CAAAA,CAAU,QAAA,CAAAC,CAAS,CAAC,CAC/D,CAAA,CACA,KAAA,CAAO,CAACE,CAAAA,CAAO7T,CAAAA,GAAU,CA5H5B,IAAAmC,CAAAA,CAAAW,CAAAA,CA6HI,GAAI7C,CAAAA,CAAM,SAAA,EAAU,CAAE,MAAA,EAAU,IAAA,CAC/B,MAAM,IAAI,KAAA,CACT,gFACD,CAAA,CAED,IAAM0T,CAAAA,CAAAA,CAAWxR,CAAAA,CAAAlC,CAAAA,CAAM,SAAA,EAAU,CAAE,MAAA,GAAlB,IAAA,CAAA,MAAA,CAAAkC,CAAAA,CAA0B,IAAA,EAAA,CACrCuR,CAAAA,CAAAA,CAAW5Q,CAAAA,CAAA9C,CAAAA,EAAA,YAAAA,CAAAA,CAAO,QAAA,GAAP,IAAA,CAAA8C,CAAAA,CAAmB,MAAA,CACpC,OAAOyS,CAAAA,CAA0B9B,CAAAA,CAAO,CAAE,QAAA,CAAAC,CAAAA,CAAU,QAAA,CAAAC,CAAS,CAAA,CAAGE,CAAK,CACtE,CAAA,CACA,IAAA,CAAM,CAACgC,CAAAA,CAAO7V,CAAAA,GAAU,CAtI3B,IAAAmC,CAAAA,CAAAW,CAAAA,CAuII,GAAI7C,CAAAA,CAAM,SAAA,EAAU,CAAE,MAAA,EAAU,IAAA,CAC/B,MAAM,IAAI,KAAA,CACT,gFACD,CAAA,CAED,IAAM0T,CAAAA,CAAAA,CAAWxR,CAAAA,CAAAlC,CAAAA,CAAM,SAAA,EAAU,CAAE,MAAA,GAAlB,IAAA,CAAA,MAAA,CAAAkC,CAAAA,CAA0B,IAAA,EAAA,CACrCuR,CAAAA,CAAAA,CAAW5Q,CAAAA,CAAA9C,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAO,QAAA,GAAP,IAAA,CAAA8C,CAAAA,CAAmB,MAAA,CACpC,OAAO6R,CAAAA,CAAyBlB,CAAAA,CAAO,CAAE,QAAA,CAAAC,CAAAA,CAAU,QAAA,CAAAC,CAAS,CAAA,CAAGkC,CAAK,CACrE,CAAA,CACA,MAAA,CAAQ,CAAClS,CAAAA,CAAQ3D,CAAAA,GAAU,CAhJ9B,IAAAmC,CAAAA,CAAAW,CAAAA,CAiJI,GAAI7C,CAAAA,CAAM,SAAA,EAAU,CAAE,MAAA,EAAU,IAAA,CAC/B,MAAM,IAAI,KAAA,CACT,gFACD,CAAA,CAED,IAAM0T,CAAAA,CAAAA,CAAWxR,CAAAA,CAAAlC,CAAAA,CAAM,SAAA,EAAU,CAAE,MAAA,GAAlB,IAAA,CAAA,MAAA,CAAAkC,CAAAA,CAA0B,IAAA,EAAA,CACrCuR,CAAAA,CAAAA,CAAW5Q,CAAAA,CAAA9C,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAO,QAAA,GAAP,IAAA,CAAA8C,CAAAA,CAAmB,MAAA,CACpC,OAAOwS,CAAAA,CAA2B7B,CAAAA,CAAO,CAAE,QAAA,CAAAC,CAAAA,CAAU,QAAA,CAAAC,CAAS,CAAA,CAAGhQ,CAAM,CACxE,CACD,CAAA,CAEAR,CAAAA,CAAUnD,CAAAA,EAAU,CA5JtB,IAAAmC,CAAAA,CAAAW,CAAAA,CA6JG,GAAI7C,CAAAA,CAAM,SAAA,EAAU,CAAE,MAAA,EAAU,IAAA,CAC/B,MAAM,IAAI,KAAA,CACT,gFACD,CAAA,CAED,IAAM0T,CAAAA,CAAAA,CAAWxR,CAAAA,CAAAlC,CAAAA,CAAM,SAAA,EAAU,CAAE,MAAA,GAAlB,IAAA,CAAA,MAAA,CAAAkC,CAAAA,CAA0B,IAAA,EAAA,CACrCuR,CAAAA,CAAAA,CAAW5Q,CAAAA,CAAA9C,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAO,QAAA,GAAP,IAAA,CAAA8C,CAAAA,CAAmB,MAAA,CACpC,OAAO0Q,CAAAA,CAAsBC,CAAAA,CAAO,CAAE,QAAA,CAAAC,CAAAA,CAAU,QAAA,CAAAC,CAAS,CAAC,CAC3D,CAAA,CAGDxQ,CAAAA,CAAO,gBAAA,CAAmB,QAAA,CAC1BA,CAAAA,CAAO,iBAAA,CAAoB,eAAA,CACpBA,CACR,CC5FO,SAAS+S,EAAAA,CACfzC,CAAAA,CACyB,CACzB,GAAM,CAAE,GAAA,CAAAjT,CAAAA,CAAK,KAAA,CAAA+E,CAAAA,CAAO,KAAA,CAAAtF,CAAAA,CAAO,OAAA,CAAAkB,CAAQ,CAAA,CAAIsS,CAAAA,CAEnCtQ,EACJ,OAAIoC,CAAAA,CAAM,IAAA,GAAS,QAAA,EAAYA,CAAAA,CAAM,IAAA,GAAS,cAAA,CAC7CpC,CAAAA,CAAS,CACR,OAAA,CAAUnD,CAAAA,EAAU,CAvFvB,IAAAmC,CAAAA,CAAAW,CAAAA,CAwFI,GAAI7C,CAAAA,CAAM,SAAA,EAAU,CAAE,KAAA,EAAS,IAAA,CAC9B,MAAM,IAAI,KAAA,CACT,+EACD,CAAA,CAED,IAAM0T,CAAAA,CAAAA,CAAWxR,CAAAA,CAAAlC,CAAAA,CAAM,SAAA,EAAU,CAAE,KAAA,GAAlB,IAAA,CAAA,MAAA,CAAAkC,CAAAA,CAAyB,IAAA,EAAA,CACpCuR,CAAAA,CAAAA,CAAW5Q,CAAAA,CAAA9C,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAO,QAAA,GAAP,IAAA,CAAA8C,CAAAA,CAAmB,MAAA,CACpC,OAAOkR,CAAAA,CAA8BP,CAAAA,CAAO,CAAE,QAAA,CAAAC,CAAAA,CAAU,QAAA,CAAAC,CAAS,CAAC,CACnE,CAAA,CACA,MAAA,CAAQ,CAACtR,CAAAA,CAAOrC,CAAAA,GAAU,CAjG7B,IAAAmC,CAAAA,CAAAW,CAAAA,CAkGI,GAAI7C,CAAAA,CAAM,SAAA,EAAU,CAAE,KAAA,EAAS,IAAA,CAC9B,MAAM,IAAI,KAAA,CACT,+EACD,CAAA,CAED,IAAM0T,CAAAA,CAAAA,CAAWxR,CAAAA,CAAAlC,CAAAA,CAAM,SAAA,EAAU,CAAE,KAAA,GAAlB,IAAA,CAAA,MAAA,CAAAkC,CAAAA,CAAyB,IAAA,EAAA,CACpCuR,CAAAA,CAAAA,CAAW5Q,CAAAA,CAAA9C,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAO,QAAA,GAAP,IAAA,CAAA8C,CAAAA,CAAmB,MAAA,CACpC,OAAOsR,CAAAA,CAA6BX,CAAAA,CAAO,CAC1C,QAAA,CAAAC,CAAAA,CACA,QAAA,CAAAC,CAAAA,CACA,WAAA,CAAatR,CACd,CAAC,CACF,CACD,CAAA,CACUkD,CAAAA,CAAM,IAAA,GAAS,MAAA,CACzBpC,CAAAA,CAAS,CACR,KAAA,CAAQnD,CAAAA,EAAU,CAlHrB,IAAAmC,CAAAA,CAAAW,CAAAA,CAmHI,GAAI7C,CAAAA,CAAM,SAAA,EAAU,CAAE,KAAA,EAAS,IAAA,CAC9B,MAAM,IAAI,KAAA,CACT,+EACD,CAAA,CAED,IAAM0T,CAAAA,CAAAA,CAAWxR,CAAAA,CAAAlC,CAAAA,CAAM,SAAA,EAAU,CAAE,KAAA,GAAlB,IAAA,CAAA,MAAA,CAAAkC,CAAAA,CAAyB,IAAA,EAAA,CACpCuR,CAAAA,CAAAA,CAAW5Q,CAAAA,CAAA9C,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAO,QAAA,GAAP,IAAA,CAAA8C,CAAAA,CAAmB,MAAA,CACpC,OAAO6S,CAAAA,CAA0BlC,CAAAA,CAAO,CAAE,QAAA,CAAAC,CAAAA,CAAU,QAAA,CAAAC,CAAS,CAAC,CAC/D,CAAA,CACA,KAAA,CAAO,CAACE,CAAAA,CAAO7T,CAAAA,GAAU,CA5H5B,IAAAmC,CAAAA,CAAAW,CAAAA,CA6HI,GAAI7C,CAAAA,CAAM,SAAA,EAAU,CAAE,KAAA,EAAS,IAAA,CAC9B,MAAM,IAAI,KAAA,CACT,+EACD,CAAA,CAED,IAAM0T,CAAAA,CAAAA,CAAWxR,CAAAA,CAAAlC,CAAAA,CAAM,SAAA,EAAU,CAAE,KAAA,GAAlB,IAAA,CAAA,MAAA,CAAAkC,CAAAA,CAAyB,IAAA,EAAA,CACpCuR,CAAAA,CAAAA,CAAW5Q,CAAAA,CAAA9C,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAO,QAAA,GAAP,IAAA,CAAA8C,CAAAA,CAAmB,MAAA,CACpC,OAAOyS,CAAAA,CAA0B9B,CAAAA,CAAO,CAAE,QAAA,CAAAC,CAAAA,CAAU,QAAA,CAAAC,CAAS,CAAA,CAAGE,CAAK,CACtE,CAAA,CACA,IAAA,CAAM,CAACgC,CAAAA,CAAO7V,CAAAA,GAAU,CAtI3B,IAAAmC,CAAAA,CAAAW,CAAAA,CAuII,GAAI7C,CAAAA,CAAM,SAAA,EAAU,CAAE,KAAA,EAAS,IAAA,CAC9B,MAAM,IAAI,KAAA,CACT,+EACD,CAAA,CAED,IAAM0T,CAAAA,CAAAA,CAAWxR,CAAAA,CAAAlC,CAAAA,CAAM,SAAA,EAAU,CAAE,KAAA,GAAlB,IAAA,CAAA,MAAA,CAAAkC,CAAAA,CAAyB,IAAA,EAAA,CACpCuR,CAAAA,CAAAA,CAAW5Q,CAAAA,CAAA9C,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAO,QAAA,GAAP,IAAA,CAAA8C,CAAAA,CAAmB,MAAA,CACpC,OAAO6R,CAAAA,CAAyBlB,CAAAA,CAAO,CAAE,QAAA,CAAAC,EAAU,QAAA,CAAAC,CAAS,CAAA,CAAGkC,CAAK,CACrE,CAAA,CACA,MAAA,CAAQ,CAAClS,CAAAA,CAAQ3D,CAAAA,GAAU,CAhJ9B,IAAAmC,CAAAA,CAAAW,CAAAA,CAiJI,GAAI7C,CAAAA,CAAM,SAAA,EAAU,CAAE,KAAA,EAAS,IAAA,CAC9B,MAAM,IAAI,KAAA,CACT,+EACD,CAAA,CAED,IAAM0T,CAAAA,CAAAA,CAAWxR,CAAAA,CAAAlC,CAAAA,CAAM,SAAA,EAAU,CAAE,KAAA,GAAlB,IAAA,CAAA,MAAA,CAAAkC,CAAAA,CAAyB,IAAA,EAAA,CACpCuR,CAAAA,CAAAA,CAAW5Q,CAAAA,CAAA9C,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAO,QAAA,GAAP,IAAA,CAAA8C,CAAAA,CAAmB,MAAA,CACpC,OAAOwS,CAAAA,CAA2B7B,CAAAA,CAAO,CAAE,QAAA,CAAAC,CAAAA,CAAU,QAAA,CAAAC,CAAS,CAAA,CAAGhQ,CAAM,CACxE,CACD,CAAA,CAEAR,CAAAA,CAAUnD,CAAAA,EAAU,CA5JtB,IAAAmC,CAAAA,CAAAW,EA6JG,GAAI7C,CAAAA,CAAM,SAAA,EAAU,CAAE,KAAA,EAAS,IAAA,CAC9B,MAAM,IAAI,KAAA,CACT,+EACD,CAAA,CAED,IAAM0T,CAAAA,CAAAA,CAAWxR,CAAAA,CAAAlC,CAAAA,CAAM,SAAA,EAAU,CAAE,KAAA,GAAlB,IAAA,CAAA,MAAA,CAAAkC,CAAAA,CAAyB,IAAA,EAAA,CACpCuR,CAAAA,CAAAA,CAAW5Q,CAAAA,CAAA9C,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAO,QAAA,GAAP,IAAA,CAAA8C,CAAAA,CAAmB,MAAA,CACpC,OAAO0Q,CAAAA,CAAsBC,CAAAA,CAAO,CAAE,QAAA,CAAAC,CAAAA,CAAU,QAAA,CAAAC,CAAS,CAAC,CAC3D,CAAA,CAGDxQ,CAAAA,CAAO,gBAAA,CAAmB,OAAA,CAC1BA,CAAAA,CAAO,iBAAA,CAAoB,cAAA,CACpBA,CACR,CC7FO,SAASgT,EAAAA,CACf1C,CAAAA,CACyB,CACzB,GAAM,CAAE,GAAA,CAAAjT,CAAAA,CAAK,KAAA,CAAA+E,CAAAA,CAAO,KAAA,CAAAtF,CAAAA,CAAO,OAAA,CAAAkB,CAAQ,CAAA,CAAIsS,CAAAA,CAEnCtQ,CAAAA,CACJ,OAAIoC,CAAAA,CAAM,IAAA,GAAS,QAAA,EAAYA,CAAAA,CAAM,IAAA,GAAS,cAAA,CAC7CpC,CAAAA,CAAS,CACR,OAAA,CAAUnD,CAAAA,EAAU,CAtFvB,IAAAmC,CAAAA,CAAAW,CAAAA,CAuFI,GAAI7C,CAAAA,CAAM,SAAA,EAAU,CAAE,KAAA,EAAS,IAAA,CAC9B,MAAM,IAAI,KAAA,CACT,+EACD,CAAA,CAED,IAAM0T,CAAAA,CAAAA,CAAWxR,CAAAA,CAAAlC,CAAAA,CAAM,SAAA,EAAU,CAAE,KAAA,GAAlB,IAAA,CAAA,MAAA,CAAAkC,CAAAA,CAAyB,IAAA,EAAA,CACpCuR,CAAAA,CAAAA,CAAW5Q,CAAAA,CAAA9C,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAO,QAAA,GAAP,IAAA,CAAA8C,CAAAA,CAAmB,KAAA,CACpC,OAAOkR,CAAAA,CAA8BP,CAAAA,CAAO,CAAE,QAAA,CAAAC,CAAAA,CAAU,QAAA,CAAAC,CAAS,CAAC,CACnE,CAAA,CACA,MAAA,CAAQ,CAACtR,CAAAA,CAAOrC,CAAAA,GAAU,CAhG7B,IAAAmC,CAAAA,CAAAW,CAAAA,CAiGI,GAAI7C,CAAAA,CAAM,SAAA,EAAU,CAAE,KAAA,EAAS,IAAA,CAC9B,MAAM,IAAI,KAAA,CACT,+EACD,CAAA,CAED,IAAM0T,CAAAA,CAAAA,CAAWxR,CAAAA,CAAAlC,CAAAA,CAAM,SAAA,EAAU,CAAE,KAAA,GAAlB,IAAA,CAAA,MAAA,CAAAkC,CAAAA,CAAyB,IAAA,EAAA,CACpCuR,CAAAA,CAAAA,CAAW5Q,CAAAA,CAAA9C,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAO,QAAA,GAAP,IAAA,CAAA8C,CAAAA,CAAmB,KAAA,CACpC,OAAOsR,CAAAA,CAA6BX,CAAAA,CAAO,CAC1C,QAAA,CAAAC,CAAAA,CACA,QAAA,CAAAC,CAAAA,CACA,WAAA,CAAatR,CACd,CAAC,CACF,CACD,CAAA,CACUkD,CAAAA,CAAM,IAAA,GAAS,MAAA,CACzBpC,CAAAA,CAAS,CACR,KAAA,CAAQnD,CAAAA,EAAU,CAjHrB,IAAAmC,CAAAA,CAAAW,CAAAA,CAkHI,GAAI7C,CAAAA,CAAM,SAAA,EAAU,CAAE,OAAS,IAAA,CAC9B,MAAM,IAAI,KAAA,CACT,+EACD,CAAA,CAED,IAAM0T,CAAAA,CAAAA,CAAWxR,CAAAA,CAAAlC,CAAAA,CAAM,SAAA,EAAU,CAAE,KAAA,GAAlB,IAAA,CAAA,MAAA,CAAAkC,CAAAA,CAAyB,IAAA,EAAA,CACpCuR,CAAAA,CAAAA,CAAW5Q,CAAAA,CAAA9C,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAO,QAAA,GAAP,IAAA,CAAA8C,CAAAA,CAAmB,KAAA,CACpC,OAAO6S,CAAAA,CAA0BlC,CAAAA,CAAO,CAAE,QAAA,CAAAC,CAAAA,CAAU,QAAA,CAAAC,CAAS,CAAC,CAC/D,CAAA,CACA,KAAA,CAAO,CAACE,CAAAA,CAAO7T,CAAAA,GAAU,CA3H5B,IAAAmC,CAAAA,CAAAW,CAAAA,CA4HI,GAAI7C,CAAAA,CAAM,SAAA,EAAU,CAAE,KAAA,EAAS,IAAA,CAC9B,MAAM,IAAI,KAAA,CACT,+EACD,CAAA,CAED,IAAM0T,CAAAA,CAAAA,CAAWxR,CAAAA,CAAAlC,CAAAA,CAAM,SAAA,EAAU,CAAE,KAAA,GAAlB,IAAA,CAAA,MAAA,CAAAkC,CAAAA,CAAyB,IAAA,EAAA,CACpCuR,CAAAA,CAAAA,CAAW5Q,CAAAA,CAAA9C,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAO,QAAA,GAAP,IAAA,CAAA8C,CAAAA,CAAmB,KAAA,CACpC,OAAOyS,CAAAA,CAA0B9B,CAAAA,CAAO,CAAE,QAAA,CAAAC,CAAAA,CAAU,QAAA,CAAAC,CAAS,CAAA,CAAGE,CAAK,CACtE,CAAA,CACA,IAAA,CAAM,CAACgC,CAAAA,CAAO7V,CAAAA,GAAU,CArI3B,IAAAmC,CAAAA,CAAAW,CAAAA,CAsII,GAAI7C,CAAAA,CAAM,SAAA,EAAU,CAAE,KAAA,EAAS,IAAA,CAC9B,MAAM,IAAI,KAAA,CACT,+EACD,CAAA,CAED,IAAM0T,CAAAA,CAAAA,CAAWxR,CAAAA,CAAAlC,CAAAA,CAAM,SAAA,EAAU,CAAE,KAAA,GAAlB,IAAA,CAAA,MAAA,CAAAkC,CAAAA,CAAyB,IAAA,EAAA,CACpCuR,CAAAA,CAAAA,CAAW5Q,CAAAA,CAAA9C,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAO,QAAA,GAAP,IAAA,CAAA8C,CAAAA,CAAmB,KAAA,CACpC,OAAO6R,CAAAA,CAAyBlB,EAAO,CAAE,QAAA,CAAAC,CAAAA,CAAU,QAAA,CAAAC,CAAS,CAAA,CAAGkC,CAAK,CACrE,CAAA,CACA,MAAA,CAAQ,CAAClS,CAAAA,CAAQ3D,CAAAA,GAAU,CA/I9B,IAAAmC,CAAAA,CAAAW,CAAAA,CAgJI,GAAI7C,CAAAA,CAAM,SAAA,EAAU,CAAE,KAAA,EAAS,IAAA,CAC9B,MAAM,IAAI,KAAA,CACT,+EACD,CAAA,CAED,IAAM0T,CAAAA,CAAAA,CAAWxR,CAAAA,CAAAlC,CAAAA,CAAM,SAAA,EAAU,CAAE,KAAA,GAAlB,IAAA,CAAA,MAAA,CAAAkC,CAAAA,CAAyB,IAAA,EAAA,CACpCuR,CAAAA,CAAAA,CAAW5Q,CAAAA,CAAA9C,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAO,QAAA,GAAP,IAAA,CAAA8C,CAAAA,CAAmB,KAAA,CACpC,OAAOwS,CAAAA,CAA2B7B,CAAAA,CAAO,CAAE,QAAA,CAAAC,CAAAA,CAAU,QAAA,CAAAC,CAAS,CAAA,CAAGhQ,CAAM,CACxE,CACD,CAAA,CAEAR,CAAAA,CAAUnD,CAAAA,EAAU,CA3JtB,IAAAmC,CAAAA,CAAAW,CAAAA,CA4JG,GAAI7C,CAAAA,CAAM,SAAA,EAAU,CAAE,KAAA,EAAS,IAAA,CAC9B,MAAM,IAAI,KAAA,CACT,+EACD,CAAA,CAED,IAAM0T,CAAAA,CAAAA,CAAWxR,CAAAA,CAAAlC,CAAAA,CAAM,SAAA,EAAU,CAAE,KAAA,GAAlB,IAAA,CAAA,MAAA,CAAAkC,CAAAA,CAAyB,IAAA,EAAA,CACpCuR,CAAAA,CAAAA,CAAW5Q,CAAAA,CAAA9C,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAO,QAAA,GAAP,IAAA,CAAA8C,CAAAA,CAAmB,KAAA,CACpC,OAAO0Q,CAAAA,CAAsBC,CAAAA,CAAO,CAAE,QAAA,CAAAC,CAAAA,CAAU,QAAA,CAAAC,CAAS,CAAC,CAC3D,CAAA,CAGDxQ,CAAAA,CAAO,gBAAA,CAAmB,OAAA,CAC1BA,CAAAA,CAAO,iBAAA,CAAoB,cAAA,CACpBA,CACR,CClIO,SAASiT,EAAAA,CACf3C,CAAAA,CAC0B,CAC1B,GAAM,CAAE,GAAA,CAAAjT,CAAAA,CAAK,KAAA,CAAA+E,CAAAA,CAAO,KAAA,CAAAtF,EAAO,OAAA,CAAAkB,CAAQ,CAAA,CAAIsS,CAAAA,CAGnCtQ,CAAAA,CACJ,OAAIoC,CAAAA,CAAM,IAAA,GAAS,QAAA,EAAYA,CAAAA,CAAM,IAAA,GAAS,cAAA,CAC7CpC,CAAAA,CAAS,CACR,IAAI,OAAA,EAAU,CACb,IAAMwQ,CAAAA,CAAW1T,CAAAA,CAAM,GAAA,EAAI,CAE3B,OAAO+T,CAAAA,CAA8BP,CAAAA,CAAO,CAAE,QAAA,CAD7B,KAAA,CACuC,QAAA,CAAAE,CAAS,CAAC,CACnE,CAAA,CACA,IAAI,MAAA,EAAS,CACZ,IAAMA,CAAAA,CAAW1T,CAAAA,CAAM,GAAA,EAAI,CACrByT,CAAAA,CAAW,KAAA,CACjB,OAAQrR,CAAAA,EACA+R,CAAAA,CAA6BX,CAAAA,CAAO,CAC1C,QAAA,CAAAC,CAAAA,CACA,QAAA,CAAAC,CAAAA,CACA,WAAA,CAAatR,CACd,CAAC,CAEH,CACD,CAAA,CACUkD,CAAAA,CAAM,IAAA,GAAS,MAAA,CACzBpC,CAAAA,CAAS,CACR,IAAI,KAAA,EAAQ,CACX,IAAMwQ,CAAAA,CAAW1T,CAAAA,CAAM,GAAA,EAAI,CAE3B,OAAO0V,CAAAA,CAA0BlC,CAAAA,CAAO,CAAE,QAAA,CADzB,KAAA,CACmC,QAAA,CAAAE,CAAS,CAAC,CAC/D,CAAA,CACA,IAAI,KAAA,EAAQ,CACX,IAAMA,CAAAA,CAAW1T,CAAAA,CAAM,GAAA,EAAI,CACrByT,CAAAA,CAAW,KAAA,CACjB,OAAQG,CAAAA,EACA0B,CAAAA,CAA0B9B,CAAAA,CAAO,CAAE,QAAA,CAAAC,CAAAA,CAAU,QAAA,CAAAC,CAAS,CAAA,CAAGE,CAAK,CAEvE,CAAA,CACA,IAAI,IAAA,EAAO,CACV,IAAMF,CAAAA,CAAW1T,CAAAA,CAAM,GAAA,EAAI,CACrByT,CAAAA,CAAW,KAAA,CACjB,OAAQmC,CAAAA,EACAlB,CAAAA,CAAyBlB,CAAAA,CAAO,CAAE,QAAA,CAAAC,CAAAA,CAAU,QAAA,CAAAC,CAAS,CAAA,CAAGkC,CAAK,CAEtE,CAAA,CACA,IAAI,MAAA,EAAS,CACZ,IAAMlC,CAAAA,CAAW1T,CAAAA,CAAM,GAAA,EAAI,CACrByT,CAAAA,CAAW,KAAA,CACjB,OAAQ/P,CAAAA,EACA2R,CAAAA,CAA2B7B,CAAAA,CAAO,CAAE,QAAA,CAAAC,CAAAA,CAAU,QAAA,CAAAC,CAAS,CAAA,CAAGhQ,CAAM,CAEzE,CACD,CAAA,CAEAR,CAAAA,CAAS,CACR,IAAI,KAAA,EAAQ,CACX,IAAMwQ,CAAAA,CAAW1T,CAAAA,CAAM,GAAA,EAAI,CAE3B,OAAOuT,CAAAA,CAAsBC,CAAAA,CAAO,CAAE,QAAA,CADrB,KAAA,CAC+B,QAAA,CAAAE,CAAS,CAAC,CAC3D,CACD,CAAA,CAGDxQ,CAAAA,CAAO,gBAAA,CAAmB,QAAA,CAC1BA,CAAAA,CAAO,iBAAA,CAAoB,eAAA,CACpBA,CACR,CCpGO,SAASkT,EAAAA,CACfrW,CAAAA,CACC,CACD,GAAM,CAAE,KAAA,CAAAuF,CAAM,CAAA,CAAIvF,CAAAA,CAClB,OAAO,CACN,GAAA,CAAK4V,EAAAA,CAAe5V,CAAK,CAAA,CACzB,GAAA,CAAK8V,EAAAA,CAAe9V,CAAK,CAAA,CACzB,MAAA,CAAQiW,EAAAA,CAAkBjW,CAAK,CAAA,CAC/B,KAAA,CAAOkW,EAAAA,CAAiBlW,CAAK,CAAA,CAC7B,KAAA,CAAOmW,EAAAA,CAAiBnW,CAAK,CAAA,CAC7B,MAAA,CAAQoW,EAAAA,CAAkBpW,CAAK,CAChC,CACD,CChBO,SAASsW,EAAAA,CACftW,CAAAA,CACAqS,CAAAA,CACC,CACD,GAAM,CAAE,KAAA,CAAA9M,CAAAA,CAAO,KAAA,CAAAtF,CAAM,CAAA,CAAID,CAAAA,CACnBuW,CAAAA,CAAalE,CAAAA,CAAO,KAAA,CAAM9M,CAAAA,CAAM,SAAS,CAAA,CAC/CiR,cAAAA,CAAQvW,CAAAA,CAAO,IAAM,CACpB,IAAIwW,CAAAA,CAAW,IAAA,CACf,OAAIlR,CAAAA,CAAM,OAAA,CACTmR,WAAAA,CAAK,SAAY,CAbpB,IAAAvU,CAAAA,CAcIsU,CAAAA,CAAW,MAAA,CAAMtU,CAAAA,CAAAoD,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAO,OAAA,GAAP,IAAA,CAAA,MAAA,CAAApD,CAAAA,CAAA,IAAA,CAAAoD,CAAAA,CAAiB,CACjC,KAAA,CAAAA,CAAAA,CACA,MAAA,CAAQ8M,CAAAA,CACR,YAAA,CAAAc,mBACD,CAAA,CAAA,CAAA,CACAoD,CAAAA,EAAA,IAAA,EAAAA,CAAAA,GACD,CAAC,CAAA,CAEDA,CAAAA,EAAA,IAAA,EAAAA,CAAAA,EAAAA,CAEM,IAAM,CACRE,CAAAA,EAAY,IAAA,EAAQ,OAAOA,CAAAA,EAAa,UAAA,EAC3CA,CAAAA,GAEF,CACD,CAAC,EACF,CCvBO,SAASE,EAAAA,CACf3W,CAAAA,CACyB,CACzB,GAAM,CAAE,KAAA,CAAAuF,CAAAA,CAAO,KAAA,CAAAtF,CAAM,CAAA,CAAID,CAAAA,CACzB,OAAO,CACN,MAAA,CAAS2D,CAAAA,EAAW,CACnB,IAAMhD,CAAAA,CAAOG,mBAAAA,CAAA,EAAA,CAAKb,CAAAA,CAAM,GAAA,EAAI,CAAA,CACtBsU,CAAAA,CAAW5T,CAAAA,CAAK,MAAA,CAAO,QAAA,CACzB0B,CAAAA,CAAQ1B,CAAAA,CAAK,KAAA,CACbA,CAAAA,CAAK,OAAA,CAAQ,QAAA,EACZ,KAAA,CAAM,OAAA,CAAQ0B,CAAK,CAAA,EACtBA,CAAAA,CAAQA,CAAAA,CAAM,MAAA,CACZoB,CAAAA,EAAM,CAnBb,IAAAtB,CAAAA,CAAAW,CAAAA,CAmBgB,OAAAW,CAAAA,CAAAA,CAAKtB,CAAAA,CAAAsB,CAAAA,CAAK,UAAA,GAAL,IAAA,CAAAtB,CAAAA,CAAmBoS,CAAQ,CAAA,GAAM5Q,CAAAA,CAAAA,CAAOb,CAAAA,CAAAa,CAAAA,CAAO,UAAA,GAAP,IAAA,CAAAb,CAAAA,CAAqByR,CAAQ,CAAA,CACrF,CAAA,CACIlS,CAAAA,CAAM,MAAA,EAAU,CAAA,GACnBA,CAAAA,CAAQ,MAAA,CAAA,EAMVA,CAAAA,CAAQ,MAAA,CAET1B,CAAAA,CAAK,KAAA,CAAQ0B,CAAAA,CACb1B,CAAAA,CAAK,WAAW,MAAA,CAAS,IAAA,CACzBA,CAAAA,CAAK,UAAA,CAAW,UAAA,CAAa,IAAA,CAC7BA,CAAAA,CAAK,KAAA,CAAM,EAAA,CAAK,MAAA,CAEhBA,CAAAA,CAAK,KAAA,CAAM,GAAA,CAAMD,mBAAAA,CAAM,GAAA,CAAI,IAAA,CAC3BC,CAAAA,CAAK,KAAA,CAAM,MAAA,CAASD,mBAAAA,CAAM,MAAA,CAAO,OAAA,CACjCT,CAAAA,CAAM,GAAA,CAAIU,CAAW,EACtB,CAAA,CACA,aAAA,CAAgByD,CAAAA,EAAU,CACzB,IAAM4B,CAAAA,CAAQlF,mBAAAA,CAAA,EAAA,CAAKb,CAAAA,CAAM,GAAA,EAAI,CAAA,CACzBoC,CAAAA,CAAQ2D,CAAAA,CAAM,KAAA,CACdA,CAAAA,CAAM,OAAA,CAAQ,QAAA,EACb,KAAA,CAAM,OAAA,CAAQ3D,CAAK,CAAA,EACtBA,CAAAA,CAAQA,CAAAA,CAAM,MAAA,CAAO,CAACuU,CAAAA,CAAOlT,CAAAA,GAAQA,CAAAA,GAAQU,CAAK,CAAA,CAC9C/B,CAAAA,CAAM,MAAA,EAAU,CAAA,GACnBA,CAAAA,CAAQ,MAAA,CAAA,EAMVA,CAAAA,CAAQ,MAAA,CAET2D,CAAAA,CAAM,KAAA,CAAQ3D,CAAAA,CACd2D,CAAAA,CAAM,UAAA,CAAW,MAAA,CAAS,IAAA,CAC1BA,CAAAA,CAAM,UAAA,CAAW,UAAA,CAAa,IAAA,CAC9BA,CAAAA,CAAM,KAAA,CAAM,EAAA,CAAK,MAAA,CACjB/F,CAAAA,CAAM,GAAA,CAAI+F,CAAK,EAChB,CACD,CACD,CCbO,SAAS6Q,EAAAA,CACf7W,CAAAA,CACyB,CACzB,GAAM,CAAE,KAAA,CAAAC,CAAAA,CAAO,OAAA,CAAAkB,CAAAA,CAAS,KAAA,CAAAoE,CAAM,CAAA,CAAIvF,CAAAA,CAC9B8W,CAAAA,CAAgB,CAAA,CACpB,OAAO,CACN,KAAA,CAAO,CAACzU,CAAAA,CAAOH,CAAAA,GAAY,CAC1B,IAAMvB,CAAAA,CAAOG,mBAAAA,CAAA,EAAA,CAAKb,CAAAA,CAAM,GAAA,EAAI,CAAA,CACtB8S,CAAAA,CAAOpS,CAAAA,CAAK,KAAA,CAClBA,CAAAA,CAAK,KAAA,CAAQ,OAAO0B,CAAAA,EAAU,UAAA,CAAcA,CAAAA,CAAc0Q,CAAI,CAAA,CAAI1Q,EAClE1B,CAAAA,CAAK,UAAA,CAAW,MAAA,CAAS,IAAA,CACzBA,CAAAA,CAAK,UAAA,CAAW,UAAA,CAAauB,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAS,UAAA,CACtCvB,CAAAA,CAAK,UAAA,CAAW,YAAA,CAAeuB,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAS,UAAA,CAExCvB,CAAAA,CAAK,KAAA,CAAM,MAAA,CAASD,mBAAAA,CAAM,MAAA,CAAO,KAAA,CACjCC,CAAAA,CAAK,KAAA,CAAM,GAAA,CAAMD,mBAAAA,CAAM,GAAA,CAAI,IAAA,CAC3BT,CAAAA,CAAM,GAAA,CAAIU,CAAI,EACf,CAAA,CACA,SAAA,CAAY0B,CAAAA,EAAU,CACrB,IAAM1B,CAAAA,CAAOG,mBAAAA,CAAA,EAAA,CAAKb,CAAAA,CAAM,GAAA,EAAI,CAAA,CACtB8S,CAAAA,CAAOpS,CAAAA,CAAK,SAAA,CACZoW,CAAAA,CAAK,OAAO1U,CAAAA,EAAU,UAAA,CAAaA,CAAAA,CAAM0Q,CAAI,CAAA,CAAI1Q,CAAAA,CACvD1B,CAAAA,CAAK,SAAA,CAAYG,mBAAAA,CAAAA,mBAAAA,CAAA,EAAA,CAAKiS,CAAAA,CAAAA,CAASgE,CAAAA,CAAAA,CAC/BpW,EAAK,UAAA,CAAW,MAAA,CAAS,IAAA,CAGzBA,CAAAA,CAAK,KAAA,CAAM,MAAA,CAASD,mBAAAA,CAAM,MAAA,CAAO,SAAA,CACjCC,CAAAA,CAAK,KAAA,CAAM,GAAA,CAAMD,mBAAAA,CAAM,GAAA,CAAI,IAAA,CAC3BT,CAAAA,CAAM,GAAA,CAAIU,CAAI,EACf,CAAA,CACA,OAAA,CAAS,CAAC0B,CAAAA,CAAOH,CAAAA,GAAY,CAC5B,IAAMvB,CAAAA,CAAOG,mBAAAA,CAAA,EAAA,CAAKb,CAAAA,CAAM,GAAA,EAAI,CAAA,CACtB8S,CAAAA,CAAOpS,CAAAA,CAAK,OAAA,CACZoW,CAAAA,CAAK,OAAO1U,CAAAA,EAAU,UAAA,CAAaA,CAAAA,CAAM0Q,CAAI,CAAA,CAAI1Q,CAAAA,CACvD1B,CAAAA,CAAK,OAAA,CAAUG,mBAAAA,CAAAA,mBAAAA,CAAA,EAAA,CAAKiS,CAAAA,CAAAA,CAASgE,CAAAA,CAAAA,CAC7BpW,CAAAA,CAAK,UAAA,CAAW,MAAA,CAAS,IAAA,CACzBA,CAAAA,CAAK,UAAA,CAAW,YAAA,CAAeuB,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAS,UAAA,CAExCvB,CAAAA,CAAK,KAAA,CAAM,OAASD,mBAAAA,CAAM,MAAA,CAAO,OAAA,CACjCC,CAAAA,CAAK,KAAA,CAAM,GAAA,CAAMD,mBAAAA,CAAM,GAAA,CAAI,IAAA,CAC3BT,CAAAA,CAAM,GAAA,CAAIU,CAAI,EACf,CAAA,CACA,KAAA,CAAQ0B,CAAAA,EAAU,CACjB,IAAM1B,CAAAA,CAAOG,mBAAAA,CAAA,EAAA,CAAKb,CAAAA,CAAM,GAAA,EAAI,CAAA,CACtB8S,CAAAA,CAAOpS,CAAAA,CAAK,KAAA,CACZoW,CAAAA,CAAK,OAAO1U,CAAAA,EAAU,UAAA,CAAcA,CAAAA,CAAc0Q,CAAI,CAAA,CAAI1Q,CAAAA,CAChE1B,CAAAA,CAAK,KAAA,CAAQoW,CAAAA,CACbpW,CAAAA,CAAK,UAAA,CAAW,MAAA,CAAS,IAAA,CAEzBA,CAAAA,CAAK,KAAA,CAAM,MAAA,CAASD,mBAAAA,CAAM,MAAA,CAAO,KAAA,CACjCC,CAAAA,CAAK,KAAA,CAAM,GAAA,CAAMD,mBAAAA,CAAM,GAAA,CAAI,IAAA,CAC3BT,CAAAA,CAAM,GAAA,CAAIU,CAAI,EACf,CAAA,CACA,KAAA,CAAQqW,CAAAA,EAAU,CACjB,GAAIA,CAAAA,EAAS,IAAA,CACZ,OAED,IAAMrW,CAAAA,CAAOG,mBAAAA,CAAA,EAAA,CAAKb,CAAAA,CAAM,GAAA,EAAI,CAAA,CACtB8S,CAAAA,CAAOpS,CAAAA,CAAK,KAAA,CAAM,KAAA,CACxB,GAAIqW,CAAAA,GAAUtW,mBAAAA,CAAM,KAAA,CAAM,IAAA,EAAQqS,CAAAA,CAAOrS,mBAAAA,CAAM,KAAA,CAAM,IAAA,CACpD,MAAM,IAAI,KAAA,CAAM,iEAAiE,CAAA,CAKlF,OAHAC,CAAAA,CAAK,KAAA,CAAM,KAAA,CAAQqW,CAAAA,CACnBrW,CAAAA,CAAK,KAAA,CAAM,MAAA,CAASD,mBAAAA,CAAM,MAAA,CAAO,KAAA,CACjCC,CAAAA,CAAK,KAAA,CAAM,GAAA,CAAMD,mBAAAA,CAAM,GAAA,CAAI,IAAA,CACvBsW,CAAAA,GAAUtW,mBAAAA,CAAM,KAAA,CAAM,IAAA,EACrBoW,CAAAA,CAAgB,CAAA,EAKpB7W,CAAAA,CAAM,GAAA,CAAIU,CAAI,CAAA,CACP,IAAA,GAEPV,CAAAA,CAAM,GAAA,CAAIU,CAAI,CAAA,CAGfmW,CAAAA,EAAAA,CACO,IAAM,CACZ,IAAMnW,CAAAA,CAAOG,mBAAAA,CAAA,EAAA,CAAKb,CAAAA,CAAM,GAAA,EAAI,CAAA,CAC5B6W,CAAAA,EAAAA,CAEI,EAAAA,CAAAA,CAAgB,CAAA,EAAKnW,CAAAA,CAAK,KAAA,CAAM,KAAA,GAAUD,mBAAAA,CAAM,KAAA,CAAM,IAAA,CAAA,GAG1DoW,CAAAA,CAAgB,CAAA,CAChBnW,CAAAA,CAAK,KAAA,CAAM,KAAA,CAAQD,mBAAAA,CAAM,KAAA,CAAM,IAAA,CAC/BC,CAAAA,CAAK,KAAA,CAAM,MAAA,CAASD,mBAAAA,CAAM,MAAA,CAAO,KAAA,CACjCC,CAAAA,CAAK,KAAA,CAAM,GAAA,CAAMD,mBAAAA,CAAM,GAAA,CAAI,IAAA,CAC3BT,CAAAA,CAAM,GAAA,CAAIU,CAAI,CAAA,EACf,CAAA,CACD,CAAA,CACA,MAAA,CAAS0B,CAAAA,EAAU,CAClB,IAAM1B,CAAAA,CAAOG,mBAAAA,CAAA,EAAA,CAAKb,CAAAA,CAAM,GAAA,EAAI,CAAA,CACtB8S,CAAAA,CAAOpS,CAAAA,CAAK,MAAA,CACZoW,CAAAA,CAAK,OAAO1U,CAAAA,EAAU,UAAA,CAAcA,CAAAA,CAAc0Q,CAAI,CAAA,CAAI1Q,CAAAA,CAChE1B,CAAAA,CAAK,MAAA,CAASG,mBAAAA,CAAAA,mBAAAA,CAAA,EAAA,CAAKiS,CAAAA,CAAAA,CAASgE,CAAAA,CAAAA,CAC5BpW,CAAAA,CAAK,UAAA,CAAW,MAAA,CAAS,IAAA,CAEzBA,CAAAA,CAAK,KAAA,CAAM,MAAA,CAASD,mBAAAA,CAAM,MAAA,CAAO,MAAA,CACjCC,CAAAA,CAAK,KAAA,CAAM,GAAA,CAAMD,mBAAAA,CAAM,GAAA,CAAI,IAAA,CAC3BT,CAAAA,CAAM,GAAA,CAAIU,CAAI,EACf,CAAA,CACA,aAAA,CAAgBsW,CAAAA,EAAY,CAC3B,IAAMtW,CAAAA,CAAOG,mBAAAA,CAAA,EAAA,CAAKb,CAAAA,CAAM,GAAA,EAAI,CAAA,CACtB+B,CAAAA,CAAS,KAAA,CAAM,OAAA,CAAQiV,CAAO,CAAA,CAAIA,CAAAA,CAAUA,CAAAA,EAAW,IAAA,CAAO,EAAC,CAAI,CAACA,CAAO,CAAA,CAC3E9V,CAAAA,CAAUR,CAAAA,CAAK,MAAA,CAAO,OAAA,CAC5B,GAAIqB,CAAAA,CAAO,MAAA,EAAU,CAAA,EAAKb,CAAAA,EAAW,IAAA,EAAQA,CAAAA,CAAQ,MAAA,EAAU,CAAA,CAC9D,OAED,IAAMgC,CAAAA,CAAS,EAAC,CAChB,IAAA,IAAWd,CAAAA,IAASL,CAAAA,CAAQ,CAC3B,GAAIK,CAAAA,EAAS,IAAA,CACZ,SAED,IAAMkS,CAAAA,CAAW5T,CAAAA,CAAK,MAAA,CAAO,QAAA,CACvB+C,CAAAA,CAAMvC,CAAAA,CAAQ,SAAA,CAAWsC,CAAAA,EAAM,CApKzC,IAAAtB,CAAAA,CAoK4C,OAAAsB,CAAAA,CAAAA,CAAKtB,CAAAA,CAAAsB,CAAAA,CAAK,UAAA,GAAL,IAAA,CAAAtB,CAAAA,CAAmBoS,CAAQ,CAAA,GAAMlS,CAAAA,CAAK,CAAA,CACnF,GAAIqB,CAAAA,CAAM,CAAA,CACT,SAED,IAAMC,CAAAA,CAASxC,CAAAA,CAAQuC,CAAG,CAAA,CAC1BP,CAAAA,CAAO,IAAA,CAAKQ,CAAM,EACnB,CAEIR,CAAAA,CAAO,MAAA,EAAU,CAAA,GAIrBxC,CAAAA,CAAK,KAAA,CAAQA,CAAAA,CAAK,OAAA,CAAQ,QAAA,CAAWwC,CAAAA,CAASA,CAAAA,CAAO,CAAC,CAAA,CACtDxC,CAAAA,CAAK,UAAA,CAAW,MAAA,CAAS,IAAA,CACzBA,CAAAA,CAAK,KAAA,CAAM,MAAA,CAASD,mBAAAA,CAAM,MAAA,CAAO,KAAA,CACjCC,CAAAA,CAAK,KAAA,CAAM,GAAA,CAAMD,mBAAAA,CAAM,GAAA,CAAI,IAAA,CAC3BT,CAAAA,CAAM,GAAA,CAAIU,CAAW,CAAA,EACtB,CAAA,CACA,aAAA,CAAgBuW,CAAAA,EAAc,CAC7B,IAAMvW,CAAAA,CAAOG,mBAAAA,CAAA,EAAA,CAAKb,CAAAA,CAAM,GAAA,EAAI,CAAA,CACtBkX,CAAAA,CAAW,KAAA,CAAM,OAAA,CAAQD,CAAS,CAAA,CAAIA,CAAAA,CAAYA,CAAAA,EAAa,IAAA,CAAO,EAAC,CAAI,CAACA,CAAS,CAAA,CACrF/V,CAAAA,CAAUR,CAAAA,CAAK,MAAA,CAAO,OAAA,CAC5B,GAAIwW,CAAAA,CAAS,MAAA,EAAU,CAAA,EAAKhW,CAAAA,EAAW,IAAA,EAAQA,CAAAA,CAAQ,MAAA,EAAU,CAAA,CAChE,OAED,IAAMgC,CAAAA,CAAS,EAAC,CAChB,IAAA,IAAWiB,CAAAA,IAAS+S,CAAAA,CAAU,CAC7B,GACC/S,CAAAA,EAAS,IAAA,EACT,OAAOA,CAAAA,EAAU,QAAA,EACjBA,CAAAA,CAAQ,CAAA,EACRA,CAAAA,EAASzD,CAAAA,CAAK,MAAA,CAAO,OAAA,CAAQ,MAAA,CAE7B,SAED,IAAMgD,CAAAA,CAASxC,CAAAA,CAAQiD,CAAK,CAAA,CACxBT,CAAAA,EAAU,IAAA,EAGdR,CAAAA,CAAO,IAAA,CAAKQ,CAAM,EACnB,CAEIR,CAAAA,CAAO,MAAA,EAAU,CAAA,GAIrBxC,CAAAA,CAAK,KAAA,CAAQA,CAAAA,CAAK,OAAA,CAAQ,QAAA,CAAWwC,CAAAA,CAASA,CAAAA,CAAO,CAAC,CAAA,CACtDxC,CAAAA,CAAK,UAAA,CAAW,MAAA,CAAS,IAAA,CACzBA,CAAAA,CAAK,KAAA,CAAM,MAAA,CAASD,mBAAAA,CAAM,MAAA,CAAO,KAAA,CACjCC,CAAAA,CAAK,KAAA,CAAM,GAAA,CAAMD,mBAAAA,CAAM,GAAA,CAAI,IAAA,CAC3BT,CAAAA,CAAM,GAAA,CAAIU,CAAW,CAAA,EACtB,CAAA,CACA,QAAA,CAAW0B,CAAAA,EAAU,CACpB,IAAM1B,CAAAA,CAAOG,mBAAAA,CAAA,EAAA,CAAKb,CAAAA,CAAM,GAAA,EAAI,CAAA,CACtB8S,CAAAA,CAAOpS,CAAAA,CAAK,MAAA,CACZoW,CAAAA,CAAK,OAAO1U,CAAAA,EAAU,UAAA,CAAcA,CAAAA,CAAc0Q,CAAI,CAAA,CAAI1Q,CAAAA,CAChE1B,CAAAA,CAAK,MAAA,CAASG,mBAAAA,CAAAA,mBAAAA,CAAA,EAAA,CAAKiS,CAAAA,CAAAA,CAASgE,CAAAA,CAAAA,CAC5BpW,CAAAA,CAAK,UAAA,CAAW,MAAA,CAAS,IAAA,CAEzBA,CAAAA,CAAK,KAAA,CAAM,MAAA,CAASD,mBAAAA,CAAM,MAAA,CAAO,MAAA,CACjCC,CAAAA,CAAK,KAAA,CAAM,GAAA,CAAMD,mBAAAA,CAAM,GAAA,CAAI,IAAA,CAC3BT,CAAAA,CAAM,GAAA,CAAIU,CAAI,EACf,CAAA,CACA,GAAA,CAAIX,CAAAA,CAAOkC,CAAAA,CAAS,CAnOtB,IAAAC,CAAAA,CAAAW,CAAAA,CAAAC,CAAAA,CAAAC,CAAAA,CAAAC,CAAAA,CAoOG,GAAIjD,CAAAA,EAAS,IAAA,CACZ,OAED,IAAMW,CAAAA,CAAOG,mBAAAA,CAAA,EAAA,CAAKb,EAAM,GAAA,EAAI,CAAA,CACtBqD,CAAAA,CAAS3C,CAAAA,CAAK,MAAA,CACdoW,CAAAA,CAAAA,CAAKhU,CAAAA,CAAAA,CAAAD,CAAAA,CAAAA,CAAAX,CAAAA,CAAAmB,CAAAA,CAAO,KAAA,GAAP,IAAA,CAAA,MAAA,CAAAnB,CAAAA,CAAc,eAAA,GAAd,IAAA,CAAAW,CAAAA,CAAiCnC,CAAAA,CAAK,KAAA,GAAtC,IAAA,CAAAoC,CAAAA,CAA+C,EAAA,CACtDqF,CAAAA,CAAU,EAAA,CAEd,GAAIpI,CAAAA,CAAM,OAAA,EAAW,IAAA,CAAM,CAC1B,IAAMoX,CAAAA,CAAAA,CAAKpU,CAAAA,CAAAM,CAAAA,CAAO,aAAA,CAAc,MAAA,GAArB,IAAA,CAAAN,CAAAA,CAA+B,GAAA,CAC1CoF,CAAAA,CACC,OAAOpI,CAAAA,CAAM,OAAA,EAAY,QAAA,CACtBA,CAAAA,CAAM,OAAA,CACN,CAAA,EAAGoX,CAAE,CAAA,EAAGpX,CAAAA,CAAM,OAAA,CAAQ,SAAA,CAAU,OAAA,CAAQ,GAAA,CAAK,EAAE,CAAC,CAAA,CAAA,CACpDsD,CAAAA,CAAO,aAAA,CAAc,MAAA,CAAS,IAAA,CAC9BA,CAAAA,CAAO,aAAA,CAAc,OAAA,CAAU,KAChC,CACA3C,CAAAA,CAAK,MAAA,CAAS2C,CAAAA,CACd3C,CAAAA,CAAK,KAAA,CAAQ,CAAA,EAAGyH,CAAO,CAAA,EAAA,CAAGnF,CAAAA,CAAAjD,CAAAA,CAAM,KAAA,GAAN,IAAA,CAAAiD,CAAAA,CAAe8T,CAAE,CAAA,CAAA,CAC3CpW,CAAAA,CAAK,UAAA,CAAW,MAAA,CAAS,IAAA,CACzBA,CAAAA,CAAK,UAAA,CAAW,UAAA,CAAauB,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAS,UAAA,CACtCvB,CAAAA,CAAK,UAAA,CAAW,YAAA,CAAeuB,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAS,UAAA,CAExCvB,CAAAA,CAAK,KAAA,CAAM,MAAA,CAASD,mBAAAA,CAAM,MAAA,CAAO,MAAA,CAEjCC,CAAAA,CAAK,KAAA,CAAM,GAAA,CAAMD,mBAAAA,CAAM,GAAA,CAAI,IAAA,CAC3BT,CAAAA,CAAM,GAAA,CAAIU,CAAI,EACf,CAAA,CACA,IAAA,CAAKX,CAAAA,CAAOkC,CAAAA,CAAS,CACpB,GAAIlC,CAAAA,EAAS,IAAA,CACZ,OAED,IAAMW,CAAAA,CAAOG,mBAAAA,CAAA,EAAA,CAAKb,EAAM,GAAA,EAAI,CAAA,CACtBqD,CAAAA,CAAS3C,CAAAA,CAAK,MAAA,CAGpBA,CAAAA,CAAK,MAAA,CAASG,mBAAAA,CAAAA,mBAAAA,CAAA,EAAA,CAAKd,CAAAA,CAAAA,CAAUsD,CAAAA,CAAAA,CAC7B3C,CAAAA,CAAK,UAAA,CAAW,MAAA,CAAS,IAAA,CACzBA,CAAAA,CAAK,UAAA,CAAW,UAAA,CAAauB,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAS,UAAA,CACtCvB,CAAAA,CAAK,UAAA,CAAW,YAAA,CAAeuB,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAS,UAAA,CAExCvB,CAAAA,CAAK,KAAA,CAAM,MAAA,CAASD,mBAAAA,CAAM,MAAA,CAAO,MAAA,CAEjCC,CAAAA,CAAK,KAAA,CAAM,GAAA,CAAMD,mBAAAA,CAAM,GAAA,CAAI,IAAA,CAC3BT,CAAAA,CAAM,GAAA,CAAIU,CAAI,EACf,CA0CD,CACD,CCrTO,SAAS0W,EAAAA,CACf7W,CAAAA,CACA+E,CAAAA,CACApE,CAAAA,CACAlB,CAAAA,CACuB,CAEvB,IAAMoB,CAAAA,CAAa,CAAE,GAAA,CAAAb,CAAAA,CAAK,KAAA,CAAA+E,CAAAA,CAAO,KAAA,CAAAtF,CAAe,CAAA,CAC1CqX,CAAAA,CAA6B,CAClC,UAAA,CAAY,CACX,GAAA,CAAK9W,CAAAA,CACL,MAAA,CAAQ,KAAA,CACR,UAAA,CAAY,IACb,CAAA,CACA,KAAA,CAAO,CACN,GAAA,CAAKE,mBAAAA,CAAM,GAAA,CAAI,IAAA,CACf,KAAA,CAAOA,mBAAAA,CAAM,KAAA,CAAM,IAAA,CACnB,MAAA,CAAQA,mBAAAA,CAAM,MAAA,CAAO,IAAA,CACrB,MAAA,CAAQA,mBAAAA,CAAM,MAAA,CAAO,IAAA,CACrB,EAAA,CAAI,MACL,CAAA,CACA,KAAA,CAAO6E,CAAAA,CAAM,KAAA,CACb,KAAA,CAAOA,CAAAA,CAAM,KAAA,CACb,MAAA,CAAQ,MAAA,CACR,MAAA,CAAQA,CAAAA,CAAM,IAAA,GAAS,UAAA,CAAaA,CAAAA,CAAM,QAAA,CAAY,MAAA,CACtD,SAAA,CAAW,CACV,KAAA,CAAO,IAAA,CACP,KAAA,CAAO,KAAA,CACP,OAAA,CAAS,KAAA,CACT,EAAA,CAAI,KACL,CAAA,CACA,OAAA,CAAS,CACR,OAAA,CAAS,KAAA,CACT,OAAA,CAAS,KAAA,CACT,OAAA,CAAS,KAAA,CACT,IAAA,CAAM,KACP,CACD,CAAA,CAGA,IAAA,IAAW/E,CAAAA,IAAO+E,CAAAA,CACb/E,CAAAA,IAAO+W,mBAAAA,GAIXD,CAAAA,CAAK,OAAA,CAAQ9W,CAAG,CAAA,CAAI+E,CAAAA,CAAM/E,CAAG,CAAA,CAAA,CAI9B,OAAQ+E,CAAAA,CAAM,IAAA,EACb,KAAK,QAAA,CACL,KAAK,cAAA,CACL,KAAK,MAAA,CACL,KAAK,UAAA,CACL,KAAK,KAAA,CACL,KAAK,MAAA,CACJ+R,CAAAA,CAAK,KAAA,CAAQrF,EAAAA,CAAa5Q,CAAAA,CAAY,CACrC,KAAA,CAAOiW,CAAAA,CACP,EAAA,CAAI,MAAA,CACJ,KAAA,CAAO/R,CAAAA,CAAM,KAAA,CACb,YAAA,CAAc,IAAA,CACd,eAAA,CAAiB,IAClB,CAAC,CAAA,CACD,MAGF,CAGA,OAAK+R,CAAAA,CAAK,OAAA,CAAQ,MAAA,GACEvR,EAAAA,CAAkBR,CAAAA,CAAM,KAAA,CAAO+R,CAAI,CAAA,GAErDA,CAAAA,CAAK,SAAA,CAAU,KAAA,CAAQ,KAAA,CAAA,CAKpB/R,CAAAA,CAAM,KAAA,EAAS,IAAA,EACdA,CAAAA,CAAM,IAAA,GAAS,MAAA,GAGhBA,CAAAA,CAAM,KAAA,YAAiB,IAAA,EACtB,KAAA,CAAM,OAAA,CAAQA,CAAAA,CAAM,KAAK,CAAA,EAAKA,CAAAA,CAAM,KAAA,CAAM,MAAA,CAAS,CAAA,EAAKA,CAAAA,CAAM,KAAA,CAAM,CAAC,CAAA,WAAa,IAAA,GAGpF+R,CAAAA,CAAK,SAAA,CAAU,KAAA,CAAQ,KAAA,CAAA,CAAA,CAAA,CAMpBA,CACR,CCnFO,SAASE,EAAAA,CACfxX,CAAAA,CACwB,CACxB,GAAM,CAAE,GAAA,CAAAQ,CAAAA,CAAK,KAAA,CAAA+E,CAAAA,CAAO,OAAA,CAAApE,CAAAA,CAAS,KAAA,CAAAlB,CAAM,CAAA,CAAID,CAAAA,CACvC,OAAO,CACN,MAAA,CAAQ,IAAM,CACb,IAAMW,CAAAA,CAAO0W,EAAAA,CAAY7W,EAAK+E,CAAAA,CAAOpE,CAAAA,CAASlB,CAAK,CAAA,CACnDU,CAAAA,CAAK,UAAA,CAAW,MAAA,CAAS,IAAA,CACzBA,CAAAA,CAAK,UAAA,CAAW,UAAA,CAAa,IAAA,CAC7BA,CAAAA,CAAK,KAAA,CAAM,EAAA,CAAK,MAAA,CAEhBA,CAAAA,CAAK,KAAA,CAAM,GAAA,CAAMD,mBAAAA,CAAM,GAAA,CAAI,IAAA,CAC3BC,CAAAA,CAAK,KAAA,CAAM,MAAA,CAASD,mBAAAA,CAAM,MAAA,CAAO,OAAA,CACjCT,CAAAA,CAAM,GAAA,CAAIU,CAAI,EACf,CAAA,CACA,KAAA,CAAQuB,CAAAA,EAAY,CACnB,IAAMvB,CAAAA,CAAOG,mBAAAA,CAAA,EAAA,CAAKb,CAAAA,CAAM,GAAA,EAAI,CAAA,CAC5BU,CAAAA,CAAK,KAAA,CAAQuB,CAAAA,EAAA,IAAA,EAAAA,CAAAA,CAAS,KAAA,CAAQ,MAAA,CAAYqD,CAAAA,CAAM,KAAA,CAChD5E,CAAAA,CAAK,UAAA,CAAW,MAAA,CAAS,IAAA,CACzBA,CAAAA,CAAK,UAAA,CAAW,UAAA,CAAa,IAAA,CAC7BA,CAAAA,CAAK,KAAA,CAAM,GAAK,MAAA,CAEhBA,CAAAA,CAAK,KAAA,CAAM,GAAA,CAAMD,mBAAAA,CAAM,GAAA,CAAI,IAAA,CAC3BC,CAAAA,CAAK,KAAA,CAAM,MAAA,CAASD,mBAAAA,CAAM,MAAA,CAAO,KAAA,CACjCT,CAAAA,CAAM,GAAA,CAAIU,CAAI,EACf,CAAA,CACA,GAAA,CAAMuB,CAAAA,EAAY,CA1CpB,IAAAC,CAAAA,CA2CG,IAAMxB,CAAAA,CAAOG,mBAAAA,CAAA,EAAA,CAAKb,CAAAA,CAAM,GAAA,EAAI,CAAA,CACtBqD,CAAAA,CAAS3C,CAAAA,CAAK,MAAA,CACdoW,CAAAA,CAAK7U,CAAAA,EAAA,IAAA,EAAAA,CAAAA,CAAS,KAAA,CAAQ,MAAA,CAAYqD,CAAAA,CAAM,KAAA,CAC1C6C,CAAAA,CAAU,IAAA,CACVlG,CAAAA,EAAA,IAAA,EAAAA,CAAAA,CAAS,WAAA,EAAeoB,CAAAA,CAAO,aAAA,CAAc,OAAA,GAChD8E,CAAAA,CAAU,CAAA,EAAA,CAAGjG,CAAAA,CAAAmB,CAAAA,CAAO,aAAA,CAAc,MAAA,GAArB,IAAA,CAAAnB,CAAAA,CAA+B,GAAG,CAAA,EAAGmB,CAAAA,CAAO,aAAA,CAAc,QAAQ,eAAe,CAAA,CAAA,CAAA,CAG3FyT,CAAAA,EAAM,IAAA,EAAQ3O,CAAAA,EAAW,IAAA,CAC5BzH,CAAAA,CAAK,KAAA,CAAQ,IAAA,CAEbA,CAAAA,CAAK,KAAA,CAAQ,CAAA,EAAGyH,CAAAA,EAAA,IAAA,CAAAA,CAAAA,CAAW,EAAE,CAAA,EAAG2O,CAAAA,EAAA,IAAA,CAAAA,CAAAA,CAAM,EAAE,CAAA,CAAA,CAGzCpW,CAAAA,CAAK,UAAA,CAAW,MAAA,CAAS,IAAA,CACzBA,CAAAA,CAAK,UAAA,CAAW,UAAA,CAAa,IAAA,CAC7BA,CAAAA,CAAK,KAAA,CAAM,EAAA,CAAK,MAAA,CAEhBA,CAAAA,CAAK,KAAA,CAAM,GAAA,CAAMD,mBAAAA,CAAM,GAAA,CAAI,IAAA,CAC3BC,CAAAA,CAAK,KAAA,CAAM,MAAA,CAASD,mBAAAA,CAAM,MAAA,CAAO,KAAA,CACjCT,CAAAA,CAAM,GAAA,CAAIU,CAAI,EACf,CACD,CACD,CChDO,SAAS8W,EAAAA,CAKdjX,CAAAA,CAAasE,CAAAA,CAAS4S,CAAAA,CAAiBtF,CAAAA,CAAoC,CAE5E,IAAMjR,CAAAA,CAAUqD,EAAAA,CAAkBkT,CAAW,CAAA,CACvCnS,CAAAA,CAAQV,EAAAA,CAAmBrE,CAAAA,CAAKsE,CAAAA,CAAK3D,CAAO,CAAA,CAC5ClB,CAAAA,CAAQ2F,EAAAA,CAAazE,CAAO,CAAA,CAC5BmW,CAAAA,CAAOD,EAAAA,CAAY7W,CAAAA,CAAK+E,CAAAA,CAAOpE,CAAAA,CAASlB,CAAK,CAAA,CAEnDA,CAAAA,CAAM,GAAA,CAAIqX,CAAI,CAAA,CAGd,IAAMjW,CAAAA,CAAa,CAAE,GAAA,CAAAb,CAAAA,CAAK,KAAA,CAAA+E,CAAAA,CAAO,OAAA,CAAApE,CAAAA,CAAS,KAAA,CAAAlB,CAAY,CAAA,CAEhD0X,CAAAA,CAAStB,EAAAA,CAAahV,CAAU,CAAA,CAEhCuW,CAAAA,CAASjB,EAAAA,CAAiBtV,CAAU,CAAA,CACpCgR,CAAAA,CAASwE,EAAAA,CAAiBxV,CAAU,CAAA,CACpCwW,CAAAA,CAAQL,EAAAA,CAAgBnW,CAAU,CAAA,CAGxC,OAAAiV,EAAAA,CAAWjV,CAAAA,CAAYgR,CAAM,CAAA,CAC7BF,EAAAA,CAAY9Q,CAAAA,CAAY+Q,CAAAA,CAAWC,CAAM,CAAA,CAElC,CACN,GAAA,CAAA7R,CAAAA,CACA,KAAA,CAAO+E,CAAAA,CACP,KAAA,CAAOtF,CAAAA,CACP,MAAA,CAAQ0X,CAAAA,CAER,MAAA,CAAQtF,CAAAA,CACR,MAAA,CAAAuF,CAAAA,CACA,KAAA,CAAAC,CACD,CACD,CCpDO,SAASC,EAAAA,CAKdhT,CAAAA,CAAoB3D,CAAAA,CAAwBiR,CAAAA,CAA0B,CACvE,IAAMlS,CAAAA,CAAS,EAAC,CAChB,IAAA,IAAWM,CAAAA,IAAOsE,CAAAA,CAAK,CACtB,IAAMiT,CAAAA,CAAiBjT,CAAAA,CAAItE,CAAG,CAAA,CACxBC,CAAAA,CAAQgX,EAAAA,CAAYjX,CAAAA,CAAKuX,CAAAA,CAAgB5W,CAAAA,CAASiR,CAAS,CAAA,CACjElS,CAAAA,CAAOM,CAAG,CAAA,CAAIC,EACf,CACA,OAAOP,CACR,CCXO,SAAS0F,EAAAA,CAA+DzE,CAAAA,CAAY,CAC1F,IAAMmW,CAAAA,CAAO,CACZ,MAAA,CAAQ,EAAC,CACT,UAAA,CAAY,EAAC,CACb,MAAA,CAAQ,EAAC,CACT,MAAA,CAAQ,EAAC,CACT,QAAA,CAAU,EAAC,CACX,UAAA,CAAY,EAAC,CACb,KAAA,CAAOnW,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAS,KAAA,CAChB,MAAA,CAAQd,mBAAAA,CAAK,MAAA,CAAO,IACrB,CAAA,CAQA,OAPc2X,UAAAA,CAAIV,CAAAA,CAAM,CACvB,KAAA,CAAOnW,CAAAA,CAAQ,UAAA,CACf,MAAA,CAAQ,CACP,MAAA,CAAQ8W,kBACT,CACD,CAAC,CAGF,CCtBO,SAASC,EAAAA,CAA2CC,CAAAA,CAAW,CACrE,IAAMC,CAAAA,CAAO,MAAA,CAAO,MAAA,CAAO,EAAC,CAAGD,CAAAA,EAAA,IAAA,CAAAA,CAAAA,CAAS,EAAE,CAAA,CAE1C,OAAgCjE,CAAAA,EAAyC,CACxE,GAAIA,CAAAA,EAAU,IAAA,CACb,OAAIkE,CAAAA,EAAQ,IAAA,CACJ,IAAA,CAEDA,CAAAA,CAER,IAAMC,CAAAA,CAASvX,mBAAAA,CAAAA,mBAAAA,CAAA,EAAA,CAAKsX,CAAAA,CAAAA,CAASlE,CAAAA,CAAAA,CAG7B,OAAIkE,CAAAA,EAAA,IAAA,EAAAA,CAAAA,CAAM,UAAA,GACTC,CAAAA,CAAO,UAAA,CAAavX,mBAAAA,CAAAA,mBAAAA,CAAA,EAAA,CAAKsX,CAAAA,CAAK,UAAA,CAAA,CAAelE,CAAAA,CAAO,UAAA,CAAA,CAAA,CAAA,CAAA,CAGjDkE,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAM,OAAA,GAAW,IAAA,EAAA,CAAQlE,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAQ,OAAA,GAAW,IAAA,IAC/CmE,CAAAA,CAAO,OAAA,CAAU,MAAOrY,CAAAA,CAAOsY,CAAAA,GAAa,CApB/C,IAAAnW,CAAAA,CAAAW,CAAAA,CAAAC,CAAAA,CAAAC,CAAAA,CAqBI,IAAMuV,CAAAA,CAAAA,CAAYzV,CAAAA,CAAA,MAAA,CAAMX,CAAAA,CAAAiW,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAM,OAAA,GAAN,IAAA,CAAA,MAAA,CAAAjW,CAAAA,CAAA,IAAA,CAAAiW,CAAAA,CAAgBpY,CAAAA,CAAOsY,CAAAA,CAAAA,CAAAA,GAA7B,IAAA,CAAAxV,CAAAA,CAA2C,MAAA,CACvD2T,CAAAA,CAAAA,CAAYzT,CAAAA,CAAA,MAAA,CAAMD,CAAAA,CAAAmR,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAQ,OAAA,GAAR,IAAA,CAAA,MAAA,CAAAnR,CAAAA,CAAA,IAAA,CAAAmR,CAAAA,CAAkBlU,CAAAA,CAAOsY,CAAAA,CAAAA,CAAAA,GAA/B,IAAA,CAAAtV,CAAAA,CAA6C,MAAA,CAE/D,OAAIyT,CAAAA,EAGG8B,CACR,CAAA,CAAA,CAAA,CAAA,CAGGH,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAM,QAAA,GAAY,IAAA,EAAA,CAAQlE,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAQ,QAAA,GAAY,IAAA,IACjDmE,CAAAA,CAAO,QAAA,CAAYrY,CAAAA,EAAU,CAhChC,IAAAmC,CAAAA,CAAAW,CAAAA,CAAAA,CAiCIX,CAAAA,CAAAiW,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAM,QAAA,GAAN,IAAA,EAAAjW,CAAAA,CAAA,IAAA,CAAAiW,CAAAA,CAAiBpY,CAAAA,CAAAA,CAAAA,CACjB8C,CAAAA,CAAAoR,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAQ,QAAA,GAAR,IAAA,EAAApR,CAAAA,CAAA,IAAA,CAAAoR,CAAAA,CAAmBlU,CAAAA,EACpB,CAAA,CAAA,CAAA,CAAA,CAIGoY,CAAAA,EAAA,YAAAA,CAAAA,CAAM,cAAA,GAAkB,IAAA,EAAA,CAAQlE,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAQ,cAAA,GAAkB,IAAA,IAC7DmE,CAAAA,CAAO,cAAA,CAAkBrY,CAAAA,EAAU,CAxCtC,IAAAmC,CAAAA,CAAAW,CAAAA,CAAAA,CAyCIX,CAAAA,CAAAiW,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAM,cAAA,GAAN,IAAA,EAAAjW,CAAAA,CAAA,IAAA,CAAAiW,CAAAA,CAAuBpY,CAAAA,CAAAA,CAAAA,CACvB8C,CAAAA,CAAAoR,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAQ,cAAA,GAAR,IAAA,EAAApR,CAAAA,CAAA,IAAA,CAAAoR,CAAAA,CAAyBlU,CAAAA,EAC1B,CAAA,CAAA,CAAA,CAAA,CAGGoY,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAM,cAAA,GAAkB,IAAA,EAAA,CAAQlE,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAQ,cAAA,GAAkB,IAAA,IAC7DmE,CAAAA,CAAO,cAAA,CAAkBrY,CAAAA,EAAU,CA/CtC,IAAAmC,CAAAA,CAAAW,CAAAA,CAAAA,CAgDIX,CAAAA,CAAAiW,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAM,cAAA,GAAN,IAAA,EAAAjW,CAAAA,CAAA,IAAA,CAAAiW,CAAAA,CAAuBpY,IACvB8C,CAAAA,CAAAoR,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAQ,cAAA,GAAR,IAAA,EAAApR,CAAAA,CAAA,IAAA,CAAAoR,CAAAA,CAAyBlU,CAAAA,EAC1B,CAAA,CAAA,CAGMqY,CACR,CACD,CClDO,SAASlG,EAAAA,CACfnS,CAAAA,CACAqS,CAAAA,CACC,CACD,GAAM,CAAE,MAAA,CAAAnS,CAAAA,CAAQ,KAAA,CAAAD,CAAAA,CAAO,OAAA,CAAAkB,CAAQ,CAAA,CAAInB,CAAAA,CAC7BwY,CAAAA,CAAS,EAAC,CAChB,IAAA,IAAWhY,CAAAA,IAAON,CAAAA,CAAQ,CACzB,IAAMO,CAAAA,CAAQP,CAAAA,CAAOM,CAAG,CAAA,CACxBgY,CAAAA,CAAO,IAAA,CAAK/X,CAAAA,CAAM,KAAY,EAC/B,CACAgY,aAAAA,CAAOD,CAAAA,CAAQ,CAAA,GAAIA,CAAAA,GAAW,CAf/B,IAAArW,CAAAA,CAgBE,IAAMkE,CAAAA,CAAQvF,mBAAAA,CAAA,EAAA,CAAKb,CAAAA,CAAM,GAAA,EAAI,CAAA,CACvByY,CAAAA,CAAQ,CACb,QAAA,CAAU,CAAA,CACV,MAAA,CAAQ,CAAA,CACR,WAAA,CAAa,CAAA,CACb,OAAA,CAAS,CACV,CAAA,CAEArS,CAAAA,CAAM,MAAA,CAAS,EAAC,CAChBA,CAAAA,CAAM,MAAA,CAAS,EAAC,CAChBA,CAAAA,CAAM,UAAA,CAAa,EAAC,CAEpB,IAAA,IAAWpG,CAAAA,IAASuY,CAAAA,CAAQ,CAE3B,IAAMhY,CAAAA,CAAMP,CAAAA,CAAM,UAAA,CAAW,GAAA,CAC7B,GAAIO,CAAAA,EAAO,IAAA,EAAQ,OAAOA,CAAAA,EAAQ,QAAA,CAAU,CAC3C,OAAA,CAAQ,GAAA,CAAI,oCAAA,CAAsCP,CAAK,CAAA,CACvD,QACD,CAEAyY,CAAAA,CAAM,OAAA,EAAWzY,CAAAA,CAAM,KAAA,CAAM,KAAA,EAASS,mBAAAA,CAAM,KAAA,CAAM,IAAA,CAAO,CAAA,CAAI,CAAA,CAE7D2F,CAAAA,CAAM,MAAA,CAAO7F,CAAG,CAAA,CAAIP,CAAAA,CAAM,KAAA,CAE1BoG,CAAAA,CAAM,QAAA,CAAS7F,CAAG,CAAA,CAAIP,CAAAA,CAAM,OAAA,CAE5BoG,CAAAA,CAAM,UAAA,CAAW7F,CAAG,CAAA,CAAIP,CAAAA,CAAM,SAAA,CAC1BA,CAAAA,CAAM,MAAA,GAEToG,CAAAA,CAAM,MAAA,CAAO7F,CAAG,CAAA,CAAIP,CAAAA,CAAM,MAAA,CAAA,CAEvBA,CAAAA,CAAM,MAAA,GACToG,CAAAA,CAAM,MAAA,CAAO7F,CAAG,CAAA,CAAIP,CAAAA,CAAM,MAAA,CAAA,CAI3B,IAAMsC,CAAAA,CAAYtC,CAAAA,CAAM,SAAA,CACpBsC,CAAAA,CAAU,KAAA,GAGdmW,CAAAA,CAAM,QAAA,EAAA,CACFnW,CAAAA,CAAU,KAAA,GACb8D,CAAAA,CAAM,UAAA,CAAW,IAAA,CAAK7F,CAAG,CAAA,CACzBkY,CAAAA,CAAM,MAAA,EAAA,CACFnW,CAAAA,CAAU,KAAA,GAAU,YAAA,EACvBmW,CAAAA,CAAM,WAAA,EAAA,CAAA,EAGT,CAIA,GAAI,EADqBA,CAAAA,CAAM,OAAA,EAAWF,CAAAA,CAAO,QAC1B,CACtBvY,CAAAA,CAAM,GAAA,CAAIa,mBAAAA,CAAA,EAAA,CAAKuF,CAAAA,CAAO,CAAA,CACtB,MACD,CAGIqS,CAAAA,CAAM,WAAA,CAAc,CAAA,EAAKA,CAAAA,CAAM,MAAA,CAAS,CAAA,CAC3CrS,CAAAA,CAAM,MAAA,CAASqS,CAAAA,CAAM,MAAA,CAAS,CAAA,CAAIrY,mBAAAA,CAAK,MAAA,CAAO,KAAA,CAAQA,mBAAAA,CAAK,MAAA,CAAO,UAAA,CACxDqY,CAAAA,CAAM,QAAA,CAAW,CAAA,CAC3BrS,CAAAA,CAAM,MAAA,CAAShG,mBAAAA,CAAK,MAAA,CAAO,IAAA,CAE3BgG,CAAAA,CAAM,MAAA,CAAShG,mBAAAA,CAAK,MAAA,CAAO,KAAA,CAG5B,IAAMsY,CAAAA,CAAa,CAClB,IAAA,CAAMtS,CAAAA,CACN,IAAA,CAAMpG,CAAAA,CAAM,GAAA,EAAI,CAChB,YAAA,CAAAkT,mBAAAA,CACA,MAAA,CAAAjT,CAAAA,CACA,OAAA,CAAS,IAAMD,CAAAA,CAAM,GAAA,EAAI,CACzB,MAAA,CAAAoS,CACD,CAAA,CACIsG,CAAAA,CAAW,IAAA,CAAK,MAAA,GAAWtY,mBAAAA,CAAK,MAAA,CAAO,IAAA,CAC1CqW,WAAAA,CAAK,SAAY,CA3FpB,IAAAvU,CAAAA,CA4FI,MAAA,CAAMA,CAAAA,CAAAhB,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAS,OAAA,GAAT,IAAA,CAAA,MAAA,CAAAgB,CAAAA,CAAA,IAAA,CAAAhB,CAAAA,CAAmBwX,CAAAA,CAAY,CAACH,CAAAA,CAAQI,CAAAA,GAAS,CACtD,GAAIzF,mBAAAA,EAAa,CAChB,OAED,IAAImE,CAAAA,CAAO,IAAA,CACXmB,aAAAA,CAAOD,CAAAA,CAAQ,CAAA,GAAIxW,CAAAA,GAAW,CAC7B,GAAIsV,CAAAA,CAAM,CACTA,CAAAA,CAAO,KAAA,CACP,MACD,CACAZ,WAAAA,CAAK,SAAY,CAChB,MAAMkC,CAAAA,CAAK,GAAG5W,CAAM,EACrB,CAAC,EACF,CAAC,EACF,CAAA,CAAA,EACD,CAAC,CAAA,CAAA,CAEDG,CAAAA,CAAAhB,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAS,QAAA,GAAT,IAAA,EAAAgB,EAAA,IAAA,CAAAhB,CAAAA,CAAoBwX,CAAAA,CAAAA,CAIrB1Y,CAAAA,CAAM,GAAA,CAAIa,mBAAAA,CAAA,EAAA,CAAKuF,CAAAA,CAAO,EACvB,CAAC,EACF,CCnGO,SAASwS,EAAAA,CAId/T,CAAAA,CAASgU,CAAAA,CAAqC,CAE/C,IAAM3X,CAAAA,CAAUqD,EAAAA,CAAkBsU,CAAQ,CAAA,CACpC7Y,CAAAA,CAAQ2F,EAAAA,CAAmBzE,CAAc,CAAA,CACzCjB,CAAAA,CAAS4X,EAAAA,CAAqChT,CAAAA,CAAK3D,CAAAA,CAAgBlB,CAAK,CAAA,CAGxE8Y,CAAAA,CAAa,CAAE,MAAA,CAAA7Y,CAAAA,CAAQ,OAAA,CAAAiB,CAAAA,CAAS,KAAA,CAAAlB,CAAM,CAAA,CACtC+Y,CAAAA,CAASjZ,EAAAA,CAAsBgZ,CAAU,CAAA,CACzC1G,CAAAA,CAAStQ,EAAAA,CAAsBgX,CAAU,CAAA,CACzC/W,CAAAA,CAASU,EAAAA,CAAsBqW,CAAU,CAAA,CACzCE,CAAAA,CAAS3U,EAAAA,CAAsByU,CAAU,CAAA,CAI/C5G,EAAAA,CAAY4G,CAAAA,CAAY1G,CAAM,CAAA,CAG9B,IAAI6G,CAAAA,CAAO,IAAA,CACX,OAAO,CACN,KAAA,CAAAjZ,CAAAA,CACA,MAAA,CAAQC,CAAAA,CAER,OAAA,CAASiB,CAAAA,CACT,IAAI,IAAA,EAAO,CACV,OAAO,KACF+X,CAAAA,EAAQ,IAAA,GACXA,CAAAA,CAAO,MAAA,CAAO,IAAA,CAAKhZ,CAAAA,EAAA,IAAA,CAAAA,CAAAA,CAAU,EAAE,CAAA,CAAA,CAEzBgZ,CAAAA,CAET,CAAA,CAEA,MAAA,CAAAF,CAAAA,CACA,MAAA,CAAA3G,CAAAA,CACA,MAAA,CAAArQ,CAAAA,CACA,MAAA,CAAAiX,CACD,CACD,CAEO,SAASE,EAAAA,CAAwCf,CAAAA,CAAU,CACjE,IAAMgB,CAAAA,CAAgBlB,EAAAA,CAAmBE,CAAI,CAAA,CAC7C,OAAO,CACNtT,CAAAA,CACAgU,CAAAA,GACI,CACJ,IAAM3X,CAAAA,CAAUiY,CAAAA,CAAiBN,CAAQ,CAAA,CACzC,OAAOD,EAAAA,CAAiC/T,CAAAA,CAAK3D,CAAO,CACrD,CACD","file":"index.cjs","sourcesContent":["import type { Form, FunctionProps } from \"../../_model\";\nimport { FIELD, FORM } from \"../../const\";\n\nexport type FormAddonSubmit<F extends Form.Fields, O extends Form.Options<F>> = ReturnType<\n\ttypeof formSubmitAddon<F, O>\n>;\nexport function formSubmitAddon<F extends Form.Fields, O extends Form.Options<F>>(\n\tprops: FunctionProps.FormAddon<F, O>,\n) {\n\tconst { store, fields } = props;\n\tfunction canSubmit() {\n\t\tconst status = store.get().status;\n\t\tif (status === FORM.STATUS.SUBMIT) {\n\t\t\treturn false;\n\t\t}\n\t\treturn status === FORM.STATUS.VALID; // || status === \"submitting\";\n\t}\n\n\tfunction startFieldsSubmitting() {\n\t\tconst cycles = [] as (() => void)[];\n\t\tfor (const key in fields) {\n\t\t\tconst field = fields[key];\n\t\t\tcycles.push(field.update.cycle(FIELD.CYCLE.SUBMIT));\n\t\t}\n\t\treturn () => {\n\t\t\tcycles.forEach((next) => next());\n\t\t};\n\t}\n\n\treturn {\n\t\t/**\n\t\t * check if it's possible to submit or not, this checks if all required\n\t\t * non-hidden fields have been fulfilled.\n\t\t */\n\t\tpossible: canSubmit,\n\t\t/**\n\t\t * you can start submission by calling this function and control it's end\n\t\t * with the returned function, as opposed to task which controls\n\t\t * everything internally.\n\t\t * @returns a function to end submission, must be called\n\t\t */\n\t\tstart: () => {\n\t\t\tif (!canSubmit()) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tconst end = startFieldsSubmitting();\n\t\t\tstore.set({ ...store.get(), status: FORM.STATUS.SUBMIT });\n\t\t\treturn () => {\n\t\t\t\tend();\n\t\t\t\tif (store.get().status !== FORM.STATUS.SUBMIT) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tstore.set({ ...store.get(), status: FORM.STATUS.VALID });\n\t\t\t};\n\t\t},\n\t\t/**\n\t\t * a submission cycle internally controlled and allows access to\n\t\t * result after it's fulfillment, as opposed to start function which\n\t\t * gives total freedom.\n\t\t * @param runner the method to run for submission, maybe an api call or something.\n\t\t * @returns\n\t\t */\n\t\ttask: async <W, E = Record<string, any>>(\n\t\t\trunner: () => W | Promise<W>,\n\t\t): Promise<[W, null] | [null, { message: string } | E]> => {\n\t\t\tif (!canSubmit()) {\n\t\t\t\t// console.log(\"form: cannot submit form!\");\n\t\t\t\treturn [null, { message: \"qform: cannot submit form!\" }];\n\t\t\t}\n\t\t\tconst end = startFieldsSubmitting();\n\t\t\ttry {\n\t\t\t\tstore.set({ ...store.get(), status: FORM.STATUS.SUBMIT });\n\t\t\t\tconst w = await runner?.();\n\t\t\t\tstore.set({ ...store.get(), status: FORM.STATUS.VALID });\n\t\t\t\tend();\n\t\t\t\treturn [w, null];\n\t\t\t} catch (e: any) {\n\t\t\t\tstore.set({ ...store.get(), status: FORM.STATUS.VALID });\n\t\t\t\tend();\n\t\t\t\t// error?.(e);\n\t\t\t\treturn [null, e];\n\t\t\t}\n\t\t},\n\t};\n}\n","import type { Form } from \"../../_model\";\n\nexport function isKeyInFormFields<F extends Form.Fields, O extends Form.Options<F>>(\n\tfields: F,\n\toptions: O,\n\tkey: string | keyof F,\n) {\n\tif (!(key in fields)) {\n\t\tif (options.onUpdateKeyNotFound === \"warn\") {\n\t\t\tconsole.warn(\"form: key \", key, \" was not found in form keys!\");\n\t\t}\n\t\treturn false;\n\t}\n\treturn true;\n}\n","import { Field, type Form } from \"../_model\";\n\nexport function mergeFieldProps<P extends Record<string, any>, S extends Record<string, any>>(\n\tfieldProps: S | undefined,\n\tformProps: P | undefined,\n\t_strat: Form.Options<any>[\"propsMergeStrategy\"] | undefined,\n) {\n\tconst strat = _strat ?? \"none\";\n\tif (formProps == null && fieldProps == null) {\n\t\treturn null;\n\t}\n\tif (strat === \"none\") {\n\t\treturn fieldProps;\n\t}\n\tif (strat === \"form-override\") {\n\t\treturn {\n\t\t\t...fieldProps,\n\t\t\t...formProps,\n\t\t};\n\t}\n\treturn {\n\t\t...formProps,\n\t\t...fieldProps,\n\t};\n}\n","import type { Field, Form, FunctionProps } from \"../../_model\";\nimport { isKeyInFormFields } from \"../../form/checks/is-key-in-form-fields\";\nimport { mergeFieldProps } from \"../../methods/merge-field-props\";\n\nfunction getDeepPath(obj: any, _path: string) {\n\tconst path = _path.split(\".\");\n\tconst len = path.length;\n\tfor (let i = 0; i < len; i++) {\n\t\t// @ts-ignore\n\t\tobj = obj[path[i]];\n\t}\n\treturn obj;\n}\n\nexport type FormAddonUpdate<F extends Form.Fields, O extends Form.Options<F>> = ReturnType<\n\ttypeof formUpdateAddon<F, O>\n>;\nexport function formUpdateAddon<F extends Form.Fields, O extends Form.Options<F>>(\n\tprops: FunctionProps.FormAddon<F, O>,\n) {\n\tconst { fields, options, store } = props;\n\treturn {\n\t\tvalues: <G extends Object>(\n\t\t\tvalues: G,\n\t\t\tpaths?: Record<string, string | { value: string; key?: string }>,\n\t\t\tconfigs?: { preprocess?: boolean },\n\t\t) => {\n\t\t\tif (values == null) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// const form = $store.get();\n\t\t\tfor (const _key in values) {\n\t\t\t\tlet path = paths?.[_key];\n\t\t\t\tlet key = _key;\n\t\t\t\tif (path != null) {\n\t\t\t\t\tif (typeof path !== \"string\") {\n\t\t\t\t\t\t// @ts-ignore\n\t\t\t\t\t\tkey = (path.key ?? _key) as string;\n\t\t\t\t\t\tpath = path.value;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!isKeyInFormFields(fields, options, key)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst field = fields[key as keyof typeof fields];\n\t\t\t\tconst value = path == null ? values[key] : getDeepPath(values, path as string);\n\t\t\t\tfield.update.value(value, { preprocess: configs?.preprocess });\n\t\t\t\t// TODO: check if vanilla elements are updating properly\n\t\t\t\t// if (typeof document !== \"undefined\") {\n\t\t\t\t// \tconst el = document.getElementsByName(key);\n\t\t\t\t// \tif (el != null) {\n\t\t\t\t// \t\t// el.value = next.values[key];\n\t\t\t\t// \t}\n\t\t\t\t// }\n\t\t\t}\n\t\t},\n\t\tconditions: <G extends Record<keyof F, Partial<Field.Condition>>>(conditions: G) => {\n\t\t\tif (conditions == null) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tfor (const key in conditions) {\n\t\t\t\tif (!isKeyInFormFields(fields, options, key)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst field = fields[key];\n\t\t\t\tconst condition = conditions[key];\n\t\t\t\tfield.update.condition(condition);\n\t\t\t}\n\t\t},\n\t\telements: <G extends Record<keyof F, Field.Element<any>>>(elements: G) => {\n\t\t\tif (elements == null) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tfor (const key in elements) {\n\t\t\t\tif (!isKeyInFormFields(fields, options, key)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst field = fields[key];\n\t\t\t\tconst element = elements[key];\n\t\t\t\tfield.update.element(element);\n\t\t\t}\n\t\t},\n\t\tprops: <G extends O[\"props\"]>(props: Partial<G>) => {\n\t\t\tstore.set({ ...store.get(), props });\n\t\t\tif (options == null || options.propsMergeStrategy === \"none\") {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tfor (const key in fields) {\n\t\t\t\tconst field = fields[key];\n\t\t\t\tconst fieldProps = field.store.value?.props;\n\t\t\t\tconst next = mergeFieldProps(fieldProps, props, options?.propsMergeStrategy) as any;\n\t\t\t\tfield.update.props(next);\n\t\t\t}\n\t\t},\n\t};\n}\n","import type { Check, Extras, Field, Form, FunctionProps } from \"../../_model\";\n\nexport type FormAddonValues<F extends Form.Fields, O extends Form.Options<F>> = ReturnType<\n\ttypeof formValuesAddon<F, O>\n>;\nexport function formValuesAddon<F extends Form.Fields, O extends Form.Options<F>>(\n\tprops: FunctionProps.FormAddon<F, O>,\n) {\n\tconst { fields, store } = props;\n\treturn {\n\t\tget<RV extends FieldsReturnedValues<F>, KC extends FieldsKeysCaseMap<F>>(\n\t\t\trv?: RV,\n\t\t\tspecial?: KC,\n\t\t) {\n\t\t\treturn _getValues({ fields, store, defaultCase: \"same\", special, rv });\n\t\t},\n\t\tgetLowercase<KC extends FieldsKeysCaseMap<F>>(special?: KC) {\n\t\t\treturn _getValues({ fields, store, defaultCase: \"lowercase\", special });\n\t\t},\n\t\tgetUppercase<KC extends FieldsKeysCaseMap<F>>(special?: KC) {\n\t\t\treturn _getValues({ fields, store, defaultCase: \"uppercase\", special });\n\t\t},\n\t\tgetSnakecase<KC extends FieldsKeysCaseMap<F>>(special?: KC) {\n\t\t\treturn _getValues({ fields, store, defaultCase: \"snake\", special });\n\t\t},\n\t\tgetSnakecaseAggressive<KC extends FieldsKeysCaseMap<F>>(special?: KC) {\n\t\t\treturn _getValues({\n\t\t\t\tfields,\n\t\t\t\tstore,\n\t\t\t\tdefaultCase: \"snake_aggressive\",\n\t\t\t\tspecial,\n\t\t\t});\n\t\t},\n\t\tgetKebabcase<KC extends FieldsKeysCaseMap<F>>(special?: KC) {\n\t\t\treturn _getValues({ fields, store, defaultCase: \"kebab\", special });\n\t\t},\n\t\tgetKebabcaseAggressive<KC extends FieldsKeysCaseMap<F>>(special?: KC) {\n\t\t\treturn _getValues({\n\t\t\t\tfields,\n\t\t\t\tstore,\n\t\t\t\tdefaultCase: \"kebab_aggressive\",\n\t\t\t\tspecial,\n\t\t\t});\n\t\t},\n\t};\n}\n\nfunction _getValues<\n\tF extends Form.Fields,\n\tL extends Form.Options<F>,\n\tS extends Form.Store<F, L>,\n\tD extends FieldKeyCase,\n\tKC extends FieldsKeysCaseMap<F> = FieldsKeysCaseMap<F>,\n\tRV extends FieldsReturnedValues<F> = FieldsReturnedValues<F>,\n>(props: { fields: F; store: S; defaultCase: D; special?: KC; rv?: RV }) {\n\tconst result = {} as any;\n\tconst values = props.store.get().values;\n\tfor (const key in props.fields) {\n\t\tconst field = props.fields[key];\n\t\tconst store = field.store.get();\n\t\tconst key_case = _getValueCase(key, props.special?.[key] ?? props.defaultCase);\n\t\tlet value = values[key];\n\t\t// postprocess values\n\t\t// if (field.setup.type === \"select\") {\n\t\t// \tif (value === PLACEHOLDERS.select.value) {\n\t\t// \t\tvalue = null as any;\n\t\t// \t}\n\t\t// }\n\t\tif (value != null) {\n\t\t\tif (field.setup.type.startsWith(\"select\")) {\n\t\t\t\tconst extras = store.extras as Extras.Select.Out<Field.Setup<\"select\">>;\n\t\t\t\tconst valueType = props.rv?.[key as any];\n\t\t\t\tconst isArray = Array.isArray(value);\n\t\t\t\tvalue = (isArray ? value : [value]) as Extras.Select.Out<Field.Setup<\"select\">>[\"options\"];\n\t\t\t\tfor (let i = 0; i < value.length; i++) {\n\t\t\t\t\tconst item = value[i];\n\t\t\t\t\tif (valueType == null) {\n\t\t\t\t\t\tconst next = {};\n\t\t\t\t\t\tfor (const key in item) {\n\t\t\t\t\t\t\tif (key.startsWith(\"__\")) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tnext[key] = item[key];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvalue[i] = next;\n\t\t\t\t\t} else if (valueType === \"index\") {\n\t\t\t\t\t\tlet idx = extras.options.findIndex(\n\t\t\t\t\t\t\t(option) =>\n\t\t\t\t\t\t\t\toption[option.__valueKey ?? extras.valueKey] ===\n\t\t\t\t\t\t\t\titem[item.__valueKey ?? extras.valueKey],\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif (idx < 0) {\n\t\t\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\t\t\t\"qform: somehow item \",\n\t\t\t\t\t\t\t\titem,\n\t\t\t\t\t\t\t\t\" is not found in the extras.options list, falling back to index 0\",\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tidx = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvalue[i] = idx;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvalue[i] = item[item.__valueKey ?? extras.valueKey];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tvalue = isArray ? value : value[0];\n\t\t\t} else if (field.setup.type === \"tel\") {\n\t\t\t\tconst extras = field.store.value?.extras as Extras.Tel.Out<Field.Setup<\"tel\">>;\n\t\t\t\tif (extras) {\n\t\t\t\t\tconst prefix = extras.international?.prefix;\n\t\t\t\t\t// const country = extras.international?.country;\n\t\t\t\t\tconst phone = extras.value.preserved;\n\t\t\t\t\tvalue = `${prefix ?? \"\"}${phone ?? \"\"}`;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// attach final value\n\t\tresult[key_case] = value;\n\t}\n\treturn result as FieldsValues<F, D, KC>;\n}\n\n//\ntype FieldsKeysCaseMap<T extends Form.Fields> = {\n\t[K in keyof T]?: FieldKeyCase;\n};\n\ntype FieldsReturnedValues<T extends Form.Fields> = {\n\t[K in keyof T as T[K][\"setup\"][\"type\"] extends \"select\" | \"select.radio\" ? K : never]?:\n\t\t| \"index\"\n\t\t| \"value\";\n};\n\n// basics\nexport type CamelToSnakeCase<\n\tS extends string,\n\tSep extends string = \"_\",\n\tUppercaseIsNewWord extends boolean = false,\n\tStart extends boolean = true,\n\tPreviousLetterIsCapital = false,\n> = S extends `${infer T}${infer U}`\n\t? `${T extends Capitalize<T>\n\t\t\t? Start extends false\n\t\t\t\t? UppercaseIsNewWord extends true\n\t\t\t\t\t? Sep\n\t\t\t\t\t: PreviousLetterIsCapital extends false\n\t\t\t\t\t\t? Sep\n\t\t\t\t\t\t: \"\"\n\t\t\t\t: \"\"\n\t\t\t: \"\"}${Lowercase<T>}${T extends Capitalize<T>\n\t\t\t? CamelToSnakeCase<U, Sep, UppercaseIsNewWord, false, true>\n\t\t\t: CamelToSnakeCase<U, Sep, UppercaseIsNewWord, false, false>}`\n\t: S;\n// type ControlGroup = Fields; //{ [K: string]: ICollection<any, any> };\n\ntype FieldKeyCase =\n\t| \"same\"\n\t| \"snake\"\n\t| \"snake_aggressive\"\n\t| \"kebab\"\n\t| \"kebab_aggressive\"\n\t| \"lowercase\"\n\t| \"uppercase\";\n//\n\n// type ControlGroupOnChange<V extends ValueKeyCase, T extends ControlGroup = ControlGroup> = (\n// \tactions: Pick<\n// \t\tReturnType<typeof createFormActions<V, T>>,\n// \t\t| \"getValues\"\n// \t\t| \"getValuesSnakecase\"\n// \t\t| \"getValuesKebabcase\"\n// \t\t| \"getValuesSnakecaseAggressive\"\n// \t\t| \"getValuesUppercase\"\n// \t\t| \"getValuesKebabcaseAggressive\"\n// \t\t| \"getValuesLowercase\"\n// \t>,\n// ) => void;\ntype IsValueKeyOfCase<T extends FieldKeyCase, V extends FieldKeyCase | undefined> = true extends\n\t| Check.IsUnknown<V>\n\t| Check.IsUndefined<V>\n\t| Check.IsNull<V>\n\t? false\n\t: V extends T\n\t\t? true\n\t\t: false;\ntype ValueKeyCaseType<K, V extends FieldKeyCase | undefined> = IsValueKeyOfCase<\n\t\"snake\",\n\tV\n> extends true\n\t? CamelToSnakeCase<string & K>\n\t: IsValueKeyOfCase<\"snake_aggressive\", V> extends true\n\t\t? CamelToSnakeCase<string & K, \"_\", true>\n\t\t: IsValueKeyOfCase<\"kebab_aggressive\", V> extends true\n\t\t\t? CamelToSnakeCase<string & K, \"-\", true>\n\t\t\t: IsValueKeyOfCase<\"kebab\", V> extends true\n\t\t\t\t? CamelToSnakeCase<string & K, \"-\">\n\t\t\t\t: IsValueKeyOfCase<\"lowercase\", V> extends true\n\t\t\t\t\t? Lowercase<string & K>\n\t\t\t\t\t: IsValueKeyOfCase<\"uppercase\", V> extends true\n\t\t\t\t\t\t? Uppercase<string & K>\n\t\t\t\t\t\t: // : IsValueKeyOfCase<\"same\", V> extends true\n\t\t\t\t\t\t\tK;\n// : never;\n\ntype GetValueKeyCase<\n\tV extends FieldKeyCase | undefined,\n\tDefault extends FieldKeyCase,\n> = true extends Check.IsUnknown<V> | Check.IsUndefined<V> | Check.IsNull<V>\n\t? Default\n\t: FieldKeyCase extends V\n\t\t? Default\n\t\t: V;\ntype FieldsValues<T extends Form.Fields, V extends FieldKeyCase, O extends FieldsKeysCaseMap<T>> = {\n\t[K in keyof T as ValueKeyCaseType<K, GetValueKeyCase<O[K], V>>]: T[K][\"setup\"][\"value\"];\n};\n\nfunction _camelToSnakeCase(str: string, joiner = \"_\", uppercaseIsNewWord = false): string {\n\tconst regex = !uppercaseIsNewWord ? /[A-Z]+/g : /[A-Z]/g;\n\treturn str.replace(regex, (match, index) => {\n\t\t// console.log(\"match :: \", match, \"index :: \", index);\n\t\treturn index === 0 ? match.toLowerCase() : `${joiner}${match.toLowerCase()}`;\n\t});\n}\n\nfunction _getValueCase(key: string, convertCase: FieldKeyCase = \"same\") {\n\tif (convertCase === \"snake\") {\n\t\treturn _camelToSnakeCase(key, \"_\");\n\t}\n\tif (convertCase === \"snake_aggressive\") {\n\t\treturn _camelToSnakeCase(key, \"_\", true);\n\t}\n\tif (convertCase === \"kebab\") {\n\t\treturn _camelToSnakeCase(key, \"-\");\n\t}\n\tif (convertCase === \"kebab_aggressive\") {\n\t\treturn _camelToSnakeCase(key, \"-\", true);\n\t}\n\tif (convertCase === \"lowercase\") {\n\t\treturn key.toLowerCase();\n\t}\n\tif (convertCase === \"uppercase\") {\n\t\treturn key.toUpperCase();\n\t}\n\treturn key;\n}\n","import type { Form, FunctionProps } from \"../../_model\";\nimport type * as _QSTATE from \"@qundus/qstate\";\nimport { FORM } from \"../../const\";\n\ntype ButtonObject = {\n\tstatus: FORM.STATUS;\n\tdisabled: boolean;\n\tcanSubmit: boolean;\n\tsubmitting: boolean;\n};\ntype ButtonStore<F extends Form.Fields, O extends Form.Options<F>> = _QSTATE.StoreDerived.Factory<\n\tButtonObject,\n\t{\n\t\thooks: O[\"storeHooks\"];\n\t}\n>;\nexport type FormAddonButton<F extends Form.Fields, O extends Form.Options<F>> = {\n\tstore: ButtonStore<F, O>;\n};\nexport function formButtonAddon<F extends Form.Fields, O extends Form.Options<F>>(\n\tprops: FunctionProps.FormAddon<F, O>,\n): FormAddonButton<F, O> {\n\tconst { store, options } = props;\n\tconst form = store.get();\n\t// const status = form.status;\n\tconst derived = store.derive(\n\t\t({ status }) =>\n\t\t\t({\n\t\t\t\tstatus: status,\n\t\t\t\tdisabled: status !== FORM.STATUS.VALID,\n\t\t\t\tcanSubmit: status === FORM.STATUS.VALID,\n\t\t\t\tsubmitting: status === FORM.STATUS.SUBMIT,\n\t\t\t}) as ButtonObject,\n\t);\n\n\t// store.listen((form) => {\n\t// \t// const changed = form.changed;\n\t// \tconst status = form.status;\n\t// \tconst prevValue = derived.get();\n\t// \t// console.log(\"called button :: \", status, \" :: \", prevValue.status);\n\t// \t// if (prevValue.status === status) {\n\t// \t// \treturn;\n\t// \t// }\n\n\t// \tconst nextValue = {\n\t// \t\tstatus: status,\n\t// \t\tdisabled: status !== \"valid\",\n\t// \t\tcanSubmit: status === \"valid\",\n\t// \t\tsubmitting: status === \"submit\",\n\t// \t} as ButtonObject;\n\n\t// \t// TODO: add button status processor\n\n\t// \tderived.set(nextValue);\n\t// });\n\n\treturn {\n\t\tstore: derived as ButtonStore<F, O>,\n\t};\n}\n","import type { Form } from \"../../_model\";\n\nconst PROCESSED = \"__PROCESSED\";\nexport function prepareOptions<O extends Form.Options>(options?: O) {\n\tif (options?.[PROCESSED]) {\n\t\treturn options;\n\t}\n\tconst result = { ...options };\n\tresult.vmcm = result.vmcm ?? \"normal\";\n\tresult.preventErroredValues = result.preventErroredValues ?? false;\n\tresult.fieldsRequired = result.fieldsRequired ?? true;\n\tresult.fieldsDisabled = result.fieldsDisabled ?? false;\n\tresult.preprocessValues = result.preprocessValues ?? true;\n\tresult.onUpdateKeyNotFound = result.onUpdateKeyNotFound ?? \"silent\";\n\t// result.incompleteBehavior =\n\t// \tresult.incompleteBehavior === true\n\t// \t\t? [\"onblur\", \"onsubmit\"]\n\t// \t\t: (result.incompleteBehavior ?? [\"onblur\", \"onsubmit\"]);\n\tresult.incompleteListCount = result.incompleteListCount ?? false;\n\t// result.incompleteAffectsCondition = result.incompleteAffectsCondition ?? false;\n\tresult.validateOn = result.validateOn ?? \"input\";\n\t// result.onFieldElementOrder = result.onFieldElementOrder ?? \"after\";\n\tresult.flatObjectKeysChar = \".\";\n\tresult.flatLabelJoinChar = result.flatLabelJoinChar ?? \" \";\n\t// result.abortOnChangeException = result.abortOnChangeException ?? false;\n\tresult.propsMergeStrategy = result.propsMergeStrategy ?? \"none\";\n\n\t// mark processed\n\tresult[PROCESSED] = true;\n\treturn result;\n}\n","import type { Field, Form } from \"../../_model\";\nimport { FIELD } from \"../../const\";\nimport { mergeFieldProps } from \"../../methods/merge-field-props\";\n\nexport function prepareSetup<F extends Field.SetupIn, S extends Field.SetupInToSetup<F>>(\n\tkey: string,\n\tinn?: F,\n\toptions?: Form.Options,\n) {\n\tlet setup = {} as Partial<S>;\n\t// formulate the basic to setup object\n\tif (inn == null) {\n\t\t// default fallback input type\n\t\tsetup = {\n\t\t\ttype: \"text\",\n\t\t\tvalue: null,\n\t\t} as any;\n\t} else if (typeof inn === \"string\") {\n\t\tsetup = {\n\t\t\ttype: inn,\n\t\t} as any;\n\t} else {\n\t\tsetup = inn as any;\n\t\tif (setup.type == null) {\n\t\t\tsetup.type = \"text\";\n\t\t}\n\t}\n\n\t// manage general and field specific options\n\t// field.label = field.label ?? key;\n\tsetup.vmcm = setup.vmcm ?? options?.vmcm ?? \"normal\";\n\tsetup.required = setup.required ?? options?.fieldsRequired ?? true;\n\tsetup.disabled = setup.disabled ?? options?.fieldsDisabled ?? false;\n\tsetup.hidden = setup.hidden ?? false;\n\tsetup.valueNullable = setup.valueNullable ?? false;\n\tsetup.preprocessValue = setup.preprocessValue ?? options?.preprocessValues ?? true;\n\tsetup.validateOn = setup.validateOn ?? options?.validateOn;\n\tsetup.incompleteStatus = setup.incompleteStatus ?? true;\n\tsetup.multiple = setup.multiple ?? false;\n\tsetup.onChangeException = setup.onChangeException ?? false;\n\tsetup.props = mergeFieldProps(setup.props, options?.props, options?.propsMergeStrategy) as any;\n\tsetup.initCycle = setup.initCycle ?? options?.fieldsInitCycle ?? FIELD.CYCLE.IDLE;\n\n\t// SPECIAL ASSIGNMENTS\n\t// label\n\tif (setup.label == null) {\n\t\tsetup.label = key;\n\t\tconst char = options?.flatObjectKeysChar;\n\t\tconst reps = [] as string[];\n\t\tif (char != null) {\n\t\t\treps.push(char);\n\t\t}\n\t\tif (setup.labelReplace != null || options?.labelReplace != null) {\n\t\t\tconst labelReplace = setup.labelReplace ?? options?.labelReplace;\n\t\t\tif (typeof labelReplace === \"string\") {\n\t\t\t\treps.push(labelReplace);\n\t\t\t} else if (Array.isArray(labelReplace)) {\n\t\t\t\treps.push(...labelReplace);\n\t\t\t}\n\t\t}\n\t\tfor (const char of reps) {\n\t\t\tif (setup.label?.includes(char)) {\n\t\t\t\tconst replacement = options?.flatLabelJoinChar;\n\t\t\t\tsetup.label = setup.label.split(char).join(replacement);\n\t\t\t}\n\t\t}\n\t}\n\n\t// vital checks\n\tif (typeof setup.preprocessValue !== \"boolean\") {\n\t\tthrow new Error(\"form: preprocessValue of \" + key + \" must be boolean!\");\n\t}\n\n\t// finally, do props things\n\treturn setup as Field.Setup;\n}\n","import { atom } from \"@qundus/qstate\";\nimport { hooksInUseAddon } from \"@qundus/qstate/addons\";\nimport type { Field, Form } from \"../../_model\";\nexport function prepareStore<S extends Field.Setup, O extends Form.Options>(\n\toptions: O | undefined,\n) {\n\t// create state\n\tconst store = atom(\n\t\t{},\n\t\t{\n\t\t\thooks: options?.storeHooks as O[\"storeHooks\"],\n\t\t\taddons: {\n\t\t\t\thooksUsed: hooksInUseAddon,\n\t\t\t},\n\t\t},\n\t) as Field.Store<S, O>;\n\n\treturn store;\n}\n","import type { Field } from \"../../_model\";\nexport function isFieldIncomplete<T extends Field.Type, S extends Field.Setup<T>>(\n\t// element: Field.Element<S>,\n\tvalue: any,\n\tstate: Field.StoreObject<S>,\n) {\n\tlet result = false;\n\tconst element = state.element;\n\tconst extras = state.extras;\n\tconst isDateType = extras != null && \"YEAR\" in extras;\n\t// because no point otherwise, and ofcourse we don't calculate when disabled\n\tif (!element.hidden && !element.disabled && element.required) {\n\t\tif (\n\t\t\t//\n\t\t\t// (field.type === \"checkbox\" && value === \"\") ||\n\t\t\tvalue === \"\" ||\n\t\t\t(!element.valueNullable && (typeof value === \"undefined\" || value == null)) ||\n\t\t\t(element.mandatory && (value == null || !value)) // for mandatory checkboxes\n\t\t) {\n\t\t\tresult = true;\n\t\t}\n\t\t//\n\t\t// console.log(\"wow :: \", extras?.selected?.validCount);\n\t\t// as a bare minimum special incomplete check\n\t\tif (isDateType && extras?.selected?.validCount <= 0) {\n\t\t\tresult = true;\n\t\t}\n\t}\n\treturn result;\n}\n","import type { Field, Form, FunctionProps } from \"../../../_model\";\n\nexport function processCheckboxValue<S extends Field.Setup<\"checkbox\">, O extends Form.Options>(\n\tprops: FunctionProps.Field<S, O>,\n\tprocessor: FunctionProps.FieldProcessor<S, O>,\n) {\n\t// setup\n\tconst { setup } = props;\n\tconst { manualUpdate, $next } = processor;\n\t// const value = !manualUpdate ? el?.value : processor.value;\n\t// const checked = el?.checked;\n\tconst extras = $next.extras ?? setup.checkbox ?? {};\n\n\t//\n\textras.yes = extras.yes ?? true;\n\textras.no = extras.no ?? false;\n\n\t//\n\tif (manualUpdate) {\n\t\textras.checked =\n\t\t\tprocessor.value === extras.yes ||\n\t\t\tprocessor.value === \"yes\" ||\n\t\t\tprocessor.value === true ||\n\t\t\tprocessor.value === \"on\";\n\t} else {\n\t\textras.checked = extras.checked == null ? false : !extras.checked;\n\t}\n\n\t$next.extras = extras;\n\treturn extras.checked ? (extras.yes ?? true) : (extras.no ?? false);\n}\n","export function populateFileReader(\n\tfile: File,\n\tprops: {\n\t\t// onload: (file:  | null | undefined) => void;\n\t\tonloadstart?: () => void;\n\t\tonprogress?: (progress: { loaded: number; total: number; percentage: number }) => void;\n\t\tonloadend: (result: {\n\t\t\tstatus: \"success\" | \"error\" | \"abort\";\n\t\t\tprogress: {\n\t\t\t\tloaded: number;\n\t\t\t\ttotal: number;\n\t\t\t\tpercentage: number;\n\t\t\t};\n\t\t\tbuffer?: string | ArrayBuffer | null;\n\t\t\terror?: DOMException | null;\n\t\t}) => void;\n\t},\n) {\n\tconst reader = new FileReader();\n\n\t// Track progress values for onloadend\n\tlet lastLoaded = 0;\n\tlet lastTotal = 0;\n\tlet lastPercentage = 0;\n\n\treader.onprogress = (e) => {\n\t\tif (e.lengthComputable) {\n\t\t\tlastLoaded = e.loaded;\n\t\t\tlastTotal = e.total;\n\t\t\tlastPercentage = (e.loaded / e.total) * 100;\n\n\t\t\tif (props.onprogress) {\n\t\t\t\tprops.onprogress({ loaded: e.loaded, total: e.total, percentage: lastPercentage });\n\t\t\t}\n\t\t}\n\t};\n\n\treader.onloadstart = () => {\n\t\tif (props.onloadstart) {\n\t\t\tprops.onloadstart();\n\t\t}\n\t};\n\n\treader.onloadend = () => {\n\t\tif (props.onloadend) {\n\t\t\tlet status: \"success\" | \"error\" | \"abort\";\n\n\t\t\tif (reader.error) {\n\t\t\t\tstatus = \"error\";\n\t\t\t} else if (reader.readyState === FileReader.DONE && !reader.result) {\n\t\t\t\tstatus = \"abort\";\n\t\t\t} else {\n\t\t\t\tstatus = \"success\";\n\t\t\t}\n\n\t\t\tprops.onloadend({\n\t\t\t\tstatus,\n\t\t\t\tbuffer: reader.result,\n\t\t\t\terror: reader.error,\n\t\t\t\tprogress: {\n\t\t\t\t\tloaded: lastLoaded,\n\t\t\t\t\ttotal: lastTotal,\n\t\t\t\t\tpercentage: lastPercentage,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\t};\n\n\treader.readAsDataURL(file);\n}\n","import type { Extras, Field, Form, FunctionProps } from \"../../../_model\";\nimport { FIELD } from \"../../../const\";\nimport { populateFileReader } from \"../../../methods/populate-file-reader\";\n\nexport function processFileValue<S extends Field.Setup<\"file\">, O extends Form.Options>(\n\tprops: FunctionProps.Field<S, O>,\n\tprocessor: FunctionProps.FieldProcessor<S, O>,\n) {\n\t// setup\n\tconst { store } = props;\n\tconst { el, manualUpdate, preprocessValue, $next } = processor;\n\tconst extras = {\n\t\tcount: { upload: 0, failed: 0, done: 0 },\n\t\tfallback: undefined,\n\t\tfiles: undefined as unknown as any[],\n\t}; //as Extras.FileOut<S>;\n\tlet _value = undefined as\n\t\t| undefined\n\t\t| FileList\n\t\t| string\n\t\t| string[]\n\t\t| { name: string; url: string }\n\t\t| { name: string; url: string }[];\n\n\t// first check for manual updates as they're usually different in nature\n\tif (manualUpdate) {\n\t\t_value = processor.value;\n\t\tconst isFileListArr = Array.isArray(_value) && _value.length > 0 && _value[0] instanceof File;\n\t\t// if not a filelist array, process value and return null\n\t\tif (!isFileListArr && _value != null) {\n\t\t\t// const fallback = [] as {name: string;url: string;}[]\n\t\t\t_value = (!Array.isArray(_value) ? [_value] : _value) as any[];\n\t\t\tfor (let i = 0; i < _value.length; i++) {\n\t\t\t\tconst obj = _value[i];\n\t\t\t\tif (typeof obj === \"string\") {\n\t\t\t\t\t// we got a case of fallback placeholder\n\t\t\t\t\t_value[i] = { name: \"unknown file name\", url: obj };\n\t\t\t\t}\n\t\t\t\t// otherwise, the object is already of type {name,url}\n\t\t\t}\n\t\t\t// @ts-expect-error\n\t\t\textras.fallback = _value;\n\t\t\t$next.extras = extras as any;\n\t\t\treturn null;\n\t\t}\n\t} else {\n\t\t// console.log(\"result filelist\");\n\t\t_value = el?.files as FileList;\n\t}\n\n\tif (_value == null) {\n\t\t$next.extras = extras as any;\n\t\treturn null;\n\t}\n\n\t//\n\tconst result = _value as FileList;\n\t// it doesn't make sense to have a different behavior for !preprocessValue\n\t// if it does exactly what a normal file upload does, cancelling preprocess\n\t// value here\n\t// if (!preprocessValue) {\n\t// \textras.count = {\n\t// \t\tupload: result.length,\n\t// \t\tfailed: 0,\n\t// \t\tdone: 0,\n\t// \t};\n\t// \textras.files = [];\n\t// \t// value has been updated manually, update extras accordingly\n\t// \tif (result != null && result.length > 0) {\n\t// \t\tfor (let i = 0; i < result.length; i++) {\n\t// \t\t\tconst extrasFile = $next.extras.files?.[i];\n\t// \t\t\tconst valueFile = result[i];\n\t// \t\t\tif (extrasFile?.name !== valueFile.name) {\n\t// \t\t\t\textras.count.failed++;\n\t// \t\t\t\tcontinue;\n\t// \t\t\t}\n\t// \t\t\textras.count.done++;\n\t// \t\t\textras.files.push(extrasFile);\n\t// \t\t}\n\t// \t}\n\t// \treturn $next.element.multiple ? result : result?.[0];\n\t// }\n\n\t// we got files, reset extras and move on\n\textras.count = {\n\t\tupload: result.length,\n\t\tfailed: 0,\n\t\tdone: 0,\n\t};\n\textras.files = [];\n\tfor (const file of result) {\n\t\tif (!(file instanceof File)) {\n\t\t\tconsole.warn(\"qform: upload wasn't of type file \", file, \" skipping!!\");\n\t\t\textras.count.failed++;\n\t\t\tcontinue;\n\t\t}\n\t\tconst idx =\n\t\t\textras.files.push({\n\t\t\t\tfile,\n\t\t\t\tname: file.name,\n\t\t\t\tstage: \"start\",\n\t\t\t\tloading: true,\n\t\t\t\tprogress: {\n\t\t\t\t\tloadedBytes: 0,\n\t\t\t\t\ttotalBytes: file.size,\n\t\t\t\t\tpercentage: 0,\n\t\t\t\t},\n\t\t\t}) - 1;\n\n\t\t// for async updates\n\t\tpopulateFileReader(file, {\n\t\t\tonprogress(progress) {\n\t\t\t\t// console.log(\"progress :: \", progress);\n\t\t\t\tconst file = extras.files[idx];\n\t\t\t\tconst next = { ...store.get() };\n\t\t\t\tfile.progress.loadedBytes = progress.loaded;\n\t\t\t\tfile.progress.percentage = progress.percentage;\n\t\t\t\t//\n\t\t\t\tif (next.extras == null) {\n\t\t\t\t\tnext.extras = extras as any;\n\t\t\t\t}\n\t\t\t\tif (next.extras.files == null) {\n\t\t\t\t\tnext.extras.files = [file];\n\t\t\t\t}\n\t\t\t\tnext.extras.files[idx] = file;\n\t\t\t\tnext.__internal.manual = false;\n\t\t\t\tnext.event.DOM = FIELD.DOM.FILE_PROGRESS;\n\t\t\t\tnext.event.MUTATE = FIELD.MUTATE.__EXTRAS;\n\n\t\t\t\tconsole.log(\"update progress :: \");\n\t\t\t\tstore.set(next);\n\t\t\t},\n\t\t\tonloadend: ({ status, buffer, error, progress }) => {\n\t\t\t\t// console.log(\"loadend :: \", extras);\n\t\t\t\tconst file = extras.files[idx];\n\t\t\t\tconst next = { ...store.get() };\n\t\t\t\tfile.progress.loadedBytes = progress.loaded;\n\t\t\t\tfile.progress.percentage = progress.percentage;\n\t\t\t\t//\n\t\t\t\tif (status === \"success\") {\n\t\t\t\t\tfile.buffer = buffer;\n\t\t\t\t\tfile.url = typeof buffer === \"string\" ? buffer : (buffer as any)[0];\n\t\t\t\t\tfile.stage = \"success\";\n\t\t\t\t\tnext.extras.count.done++;\n\t\t\t\t} else if (status === \"error\") {\n\t\t\t\t\tfile.error = error;\n\t\t\t\t\tfile.stage = \"fail\";\n\t\t\t\t\tnext.extras.count.failed++;\n\t\t\t\t} else {\n\t\t\t\t\tfile.stage = \"abort\";\n\t\t\t\t\tnext.extras.count.failed++;\n\t\t\t\t}\n\n\t\t\t\t// updates\n\t\t\t\tif (next.extras == null) {\n\t\t\t\t\tnext.extras = extras as any;\n\t\t\t\t}\n\t\t\t\tif (next.extras.files == null) {\n\t\t\t\t\tnext.extras.files = [file];\n\t\t\t\t}\n\t\t\t\tnext.extras.files[idx] = file;\n\t\t\t\tnext.__internal.manual = false;\n\t\t\t\tnext.event.DOM = FIELD.DOM.FILE_DONE;\n\t\t\t\tnext.event.MUTATE = FIELD.MUTATE.__EXTRAS;\n\t\t\t\tstore.set(next);\n\t\t\t},\n\t\t});\n\t}\n\n\treturn $next.element.multiple ? result : result?.[0];\n}\n","import type { Field, Form, FunctionProps } from \"../../../_model\";\n\nexport function processNumberValue<S extends Field.Setup, O extends Form.Options>(\n\t_props: FunctionProps.Field<S, O>,\n\tprocessor: FunctionProps.FieldProcessor<S, O>,\n) {\n\tconst { el } = processor;\n\tconst { manualUpdate, preprocessValue } = processor;\n\tconst value = !manualUpdate ? el?.value : processor.value;\n\n\tif (!preprocessValue) {\n\t\treturn value;\n\t}\n\n\t//\n\tlet result = null as number | null;\n\ttry {\n\t\tresult = Number(value);\n\t\tif (Number.isNaN(result)) {\n\t\t\tresult = value;\n\t\t}\n\t} catch (e) {\n\t\tresult = value;\n\t}\n\treturn result;\n}\n","import type { Extras, Field, Form, FunctionProps } from \"../../../_model\";\nimport { FIELD, MISC } from \"../../../const\";\n\nconst PREFIX = [\"+\", \"00\", \"+(00)\"];\nfunction parsePhone3(\n\t_phone: string,\n\tprefixes: string[],\n\t_preserveChars: string | undefined | null,\n) {\n\tlet value = _phone as string;\n\tconst preserveChars =\n\t\t_preserveChars != null && typeof _preserveChars === \"string\" ? _preserveChars : \"\";\n\tif (_phone == null) {\n\t\treturn null;\n\t} else if (typeof _phone !== \"string\") {\n\t\tif (_phone === \"\") {\n\t\t\treturn null;\n\t\t}\n\t\tvalue = String(_phone);\n\t}\n\tconst result = {\n\t\tprefix: null as null | string,\n\t\tphone: null as null | string,\n\t\tphonePreserved: null as null | string,\n\t\tothers: null as null | string,\n\t\t// Sort prefixes by length (longest first) for proper matching\n\t\tprefixes: [...prefixes].sort((a, b) => b.length - a.length),\n\t\t// prefixIndex: null as null | string,\n\t\tpending: null as null | string,\n\t};\n\n\tvalue = value.trim();\n\n\t// Find the longest matching prefix\n\t// let pending = undefined as any;\n\tfor (const prefix of result.prefixes) {\n\t\t// check for full matches\n\t\tif (value.startsWith(prefix) || value === prefix) {\n\t\t\tresult.prefix = prefix;\n\t\t\tbreak;\n\t\t} else if (result.pending == null && prefix.startsWith(value)) {\n\t\t\tif (value === \"0\") {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\t// check for partial matches\n\t\t\tresult.pending = value === \"\" ? null : value;\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// only assign pending if prefix doesn't exist\n\tif (result.prefix == null && result.pending != null) {\n\t\tresult.prefix = result.pending;\n\t\tresult.pending = null;\n\t\t// return result;\n\t}\n\n\tconst rest = result.prefix ? value.slice(result.prefix.length) : value;\n\tconst cleanNumber = rest.replace(/\\D/g, \"\") as string | null;\n\tconst preservePattern =\n\t\tpreserveChars != null ? `[^\\\\d${preserveChars.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\")}]` : \"\\\\D\";\n\tconst cleanNumber2 = rest.replace(new RegExp(preservePattern, \"g\"), \"\");\n\tconst otherChars = rest.replace(\n\t\tnew RegExp(\n\t\t\t`[\\\\d${preserveChars != null ? preserveChars.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\") : \"\"}]`,\n\t\t\t\"g\",\n\t\t),\n\t\t\"\",\n\t);\n\n\t// result.prefix = result.prefix ?? prefix ?? null;\n\tresult.phone = cleanNumber && cleanNumber.length > 0 ? cleanNumber : null;\n\tresult.phonePreserved = cleanNumber2 && cleanNumber2.length > 0 ? cleanNumber2 : null;\n\tresult.others = otherChars && otherChars.length > 0 ? otherChars : null;\n\n\tif (result.prefix == null && result.phone?.startsWith(\"00\")) {\n\t\tresult.prefix = \"00\";\n\t\tresult.phone = result.phone.replace(\"00\", \"\");\n\t\tresult.phonePreserved = result.phonePreserved?.replace(\"00\", \"\") as any;\n\t\tresult.pending = null;\n\t}\n\n\tif (result.prefix == null) {\n\t\tfor (const prefix of result.prefixes) {\n\t\t\tif (result.others && prefix.includes(result.others)) {\n\t\t\t\tresult.pending = prefix;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\t// else if (result.prefix === result.others) {\n\t// \tresult.others = null;\n\t// \t// result.pending = null;\n\t// }\n\n\t// console.log(\"parsed :: \", value, \" :: \", result);\n\n\treturn result;\n}\n\nexport function processTelValue<S extends Field.Setup, O extends Form.Options>(\n\tprops: FunctionProps.Field<S, O>,\n\tprocessor: FunctionProps.FieldProcessor<S, O>,\n) {\n\tconst { setup } = props;\n\tconst { el, manualUpdate, $next } = processor;\n\tconst _value = !manualUpdate ? el?.value : processor.value;\n\tconst extras = ($next.extras ?? setup.tel ?? {}) as unknown as Extras.Tel.Out<S>; //<Field.Setup<'tel'>, any>\n\n\t// setup\n\t// extras.valueAsNumber = extras.valueAsNumber ?? false;\n\textras.international = (extras.international ?? {}) as Exclude<\n\t\tExtras.Tel.Out<S>[\"international\"],\n\t\tnull\n\t>;\n\textras.international.prefixNormalization = extras.international.prefixNormalization ?? false;\n\textras.international.displayMode = extras.international.displayMode ?? \"normal\";\n\n\t// process value\n\t$next.extras = extras as any;\n\tconst prefixes: string[] = extras.international?.prefixes\n\t\t? typeof extras.international.prefixes === \"string\"\n\t\t\t? [extras.international.prefixes]\n\t\t\t: extras.international.prefixes\n\t\t: PREFIX;\n\tlet processed = _value;\n\n\tif (extras.international.prefix) {\n\t\tconst prefix = extras.international.prefix;\n\t\tconst country = extras.international.country;\n\t\tif (manualUpdate) {\n\t\t\textras.international.prefix = null;\n\t\t\textras.international.country = null;\n\t\t\t// $next.event.MUTATE = MUTATE.__ABORT_VALIDATION\n\t\t} else {\n\t\t\tif (extras.international.displayMode === \"no-prefix\") {\n\t\t\t\tprocessed =\n\t\t\t\t\tcountry == null ? processed : `${prefix}${country.dial_code_no_id}${processed ?? \"\"}`;\n\t\t\t} else if (extras.international.displayMode === \"keep-prefix\") {\n\t\t\t\t// console.log(\"processed :: \", processed);\n\t\t\t\tprocessed =\n\t\t\t\t\tcountry == null || processed?.startsWith(prefix)\n\t\t\t\t\t\t? processed\n\t\t\t\t\t\t: `${prefix}${country.dial_code_no_id}${processed ?? \"\"}`;\n\t\t\t}\n\t\t}\n\t}\n\t//\n\tconst parsed = parsePhone3(processed, prefixes, extras.preserveChars);\n\n\textras.value = {\n\t\tnumber: parsed?.phone,\n\t\tpreserved: parsed?.phonePreserved,\n\t\tnumberNoZero: parsed?.phone?.startsWith(\"0\") ? parsed?.phone.substring(1) : parsed?.phone,\n\t\tpreservedNoZero: parsed?.phonePreserved?.startsWith(\"0\")\n\t\t\t? parsed?.phonePreserved.substring(1)\n\t\t\t: parsed?.phonePreserved,\n\t};\n\n\t//\n\tif (parsed == null) {\n\t\textras.international.prefix = null;\n\t\textras.international.country = null;\n\t\t$next.extras = extras as any;\n\t\treturn _value == null ? null : $next.value;\n\t}\n\n\tif (parsed.others != null) {\n\t\tif (parsed.pending) {\n\t\t\treturn _value;\n\t\t}\n\t}\n\n\t//\n\tif (parsed.prefix) {\n\t\textras.international.prefix = parsed.prefix;\n\t} else {\n\t\textras.international.prefix = null;\n\t\textras.international.country = null;\n\t}\n\n\t// find country\n\tif (extras.international.country == null && extras.international.prefix != null) {\n\t\tif (parsed.phone && parsed.phone.length > 0) {\n\t\t\textras.international.country = null;\n\t\t\tconst phone = `+${parsed.phone}`;\n\t\t\tfor (let i = 0; i < MISC.COUNTRIES.length; i++) {\n\t\t\t\tconst country = MISC.COUNTRIES[i];\n\t\t\t\tif (phone.startsWith(country.dial_code)) {\n\t\t\t\t\textras.international.country = country as Exclude<\n\t\t\t\t\t\tExtras.Tel.Out<S>[\"international\"][\"country\"],\n\t\t\t\t\t\tnull\n\t\t\t\t\t>;\n\t\t\t\t\textras.international.country.index = i;\n\t\t\t\t\textras.international.country.dial_code_no_id = country.dial_code.replace(\"+\", \"\");\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} else {\n\t\tif (!parsed.phone?.startsWith(extras.international.country?.dial_code_no_id as any)) {\n\t\t\textras.international.country = null;\n\t\t}\n\t}\n\n\t// offer more values for better exportation\n\tif (extras.international.country) {\n\t\tconst country = extras.international.country;\n\t\tconst phone = parsed.phone == null ? null : parsed.phone;\n\t\tconst preserved = parsed.phonePreserved == null ? null : parsed.phonePreserved;\n\t\tif (phone != null) {\n\t\t\textras.value.numberNoCode = phone.replace(country.dial_code_no_id, \"\");\n\t\t\textras.value.numberNoCodeNoZero = extras.value.numberNoCode.startsWith(\"0\")\n\t\t\t\t? extras.value.numberNoCode.substring(1)\n\t\t\t\t: extras.value.numberNoCode;\n\t\t\textras.value.numberNoZero = `${country.dial_code_no_id}${extras.value.numberNoCodeNoZero}`;\n\t\t}\n\t\tif (preserved) {\n\t\t\textras.value.preserved = preserved;\n\t\t\textras.value.preservedNoCode = preserved.replace(country.dial_code_no_id, \"\");\n\t\t\textras.value.preservedNoCodeNoZero = extras.value.preservedNoCode.startsWith(\"0\")\n\t\t\t\t? extras.value.preservedNoCode.substring(1)\n\t\t\t\t: extras.value.preservedNoCode;\n\t\t\textras.value.preservedNoZero = `${country.dial_code_no_id}${extras.value.preservedNoCodeNoZero}`;\n\t\t}\n\t}\n\n\t//\n\t// if (extras.valueAsNumber) { // find out a better way for valueAsNumber option\n\t// \tresult = parsed.phone;\n\t// \tif (extras.isInternational) {\n\t// \t\tresult = result == null ? Number(\"00\") : (Number(`00${result ?? \"\"}`) as any);\n\t// \t}\n\t// } else {\n\t// }\n\tlet result = parsed.phonePreserved as any;\n\tconst prefix = extras.international.prefix;\n\tconst country = extras.international.country;\n\tconst phone = extras.value?.preservedNoCode;\n\tif (prefix) {\n\t\tresult = `${extras.international.prefixNormalization ? \"+\" : (prefix ?? \"\")}${result ?? \"\"}`;\n\t\tif (extras.international.displayMode === \"no-prefix\") {\n\t\t\tresult = country == null ? result : phone;\n\t\t} else if (extras.international.displayMode === \"keep-prefix\") {\n\t\t\tresult =\n\t\t\t\tcountry == null\n\t\t\t\t\t? result\n\t\t\t\t\t: phone == null || phone.length <= 0\n\t\t\t\t\t\t? `${prefix}${country.dial_code_no_id}`\n\t\t\t\t\t\t: phone;\n\t\t}\n\t}\n\n\t// console.log(\"result :: \", extras.international, \" :: \", extras.value);\n\t$next.extras = extras as any;\n\treturn result;\n}\n","import type { Extras } from \"../../../_model\";\n\ntype DateComponents = Extras.Date.ParsedDate;\ntype TimeComponents = Extras.Date.ParsedTime;\n\nexport interface EnhancedParsedTime\n\textends Omit<TimeComponents, \"valid\" | \"formatted\" | \"formatted24h\"> {\n\tvalid: boolean;\n\tformatted: string | null;\n\tformatted24h: string | null;\n}\n\nexport interface EnhancedParsedResult {\n\tdate: DateComponents;\n\ttime: EnhancedParsedTime[];\n\tvalid: boolean;\n\tothers: string | null;\n\terror?: string;\n}\n\n// Update the main function to pass timeSeparators\nexport function parseDateEnhanced(\n\tvalue: string,\n\tformat: string,\n\tdateSeparators: string | string[] = [\"/\", \"-\", \".\"],\n\ttimeSeparators: string | string[] = [\":\"],\n\tmultipleTimeSeparator: string | null = null,\n): EnhancedParsedResult {\n\tconst result = createEmptyResult();\n\n\tif (!value?.trim()) {\n\t\treturn result;\n\t}\n\n\tconst stringValue = String(value).trim();\n\n\ttry {\n\t\tconst formatTokens = extractFormatTokens(format);\n\n\t\t// Parse date first (it follows the format strictly)\n\t\tparseDateWithFormat(result.date, stringValue, formatTokens);\n\n\t\t// Then parse times from the original string using the provided time separators\n\t\tresult.time = extractAllTimes(stringValue, multipleTimeSeparator, timeSeparators);\n\n\t\t// Post-processing\n\t\tformatResults(result, format, timeSeparators);\n\t\tvalidateResults(result, format);\n\t\tresult.others = extractRemainingText(stringValue, dateSeparators, timeSeparators);\n\t} catch (error) {\n\t\tresult.error = error instanceof Error ? error.message : \"Unknown parsing error\";\n\t}\n\n\treturn result;\n}\n\nfunction parseDateWithFormat(date: DateComponents, input: string, formatTokens: string[]): void {\n\tconst numbers = extractAllNumbers(input);\n\n\tfor (let i = 0; i < Math.min(numbers.length, formatTokens.length); i++) {\n\t\tconst number = numbers[i];\n\t\tconst token = formatTokens[i].toLowerCase();\n\n\t\tif (isDateToken(token) && isValidDateNumber(number, token)) {\n\t\t\tassignDateComponent(date, token, number);\n\t\t}\n\t}\n}\n\nfunction extractAllTimes(\n\tinput: string,\n\tmultipleTimeSeparator: string | null,\n\ttimeSeparators: string | string[],\n): EnhancedParsedTime[] {\n\tconst times: EnhancedParsedTime[] = [];\n\n\tif (multipleTimeSeparator && input.includes(multipleTimeSeparator)) {\n\t\t// Split by multiple time separator and parse each segment\n\t\tconst parts = input.split(multipleTimeSeparator);\n\n\t\tfor (const part of parts) {\n\t\t\tconst time = parseTimeFromSegment(part, timeSeparators);\n\t\t\tif (time.hour !== null) {\n\t\t\t\ttimes.push(time);\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// Single time - parse the entire input\n\t\tconst time = parseTimeFromSegment(input, timeSeparators);\n\t\tif (time.hour !== null) {\n\t\t\ttimes.push(time);\n\t\t}\n\t}\n\n\treturn times;\n}\n\nfunction parseTimeFromSegment(\n\tsegment: string,\n\ttimeSeparators: string | string[],\n): EnhancedParsedTime {\n\tconst time = createEmptyTime();\n\n\t// Convert time separators to regex pattern\n\tconst separators = Array.isArray(timeSeparators) ? timeSeparators : [timeSeparators];\n\tconst separatorPattern = separators.map((sep) => escapeRegex(sep)).join(\"|\");\n\n\t// Look for time patterns with actual separators\n\tconst timePattern = new RegExp(\n\t\t`(\\\\d{1,2})(${separatorPattern})(\\\\d{1,2})(?:(${separatorPattern})(\\\\d{1,2}))?`,\n\t);\n\tconst match = segment.match(timePattern);\n\n\tif (match) {\n\t\tconst hour = match[1];\n\t\tconst minute = match[3];\n\t\tconst second = match[5] || null;\n\n\t\tif (isValidHour(hour) && isValidMinute(minute)) {\n\t\t\ttime.hour = hour.padStart(2, \"0\");\n\t\t\ttime.hourNumber = parseInt(hour);\n\t\t\ttime.minute = minute.padStart(2, \"0\");\n\t\t\ttime.minuteNumber = parseInt(minute);\n\t\t\tif (second && isValidSecond(second)) {\n\t\t\t\ttime.second = second.padStart(2, \"0\");\n\t\t\t\ttime.secondNumber = parseInt(second);\n\t\t\t}\n\t\t}\n\t}\n\n\tdetectPeriod(time, segment);\n\treturn time;\n}\n\nfunction escapeRegex(string: string): string {\n\treturn string.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n}\n\nfunction isValidHour(hour: string): boolean {\n\tconst hourNum = parseInt(hour);\n\treturn !Number.isNaN(hourNum) && hourNum >= 0 && hourNum <= 23; // 0-23 ONLY!\n}\n\nfunction isValidMinute(minute: string): boolean {\n\tconst minuteNum = parseInt(minute);\n\treturn !Number.isNaN(minuteNum) && minuteNum >= 0 && minuteNum <= 59;\n}\n\nfunction isValidSecond(second: string): boolean {\n\tconst secondNum = parseInt(second);\n\treturn !Number.isNaN(secondNum) && secondNum >= 0 && secondNum <= 59;\n}\n\nfunction isValidDateNumber(number: string, token: string): boolean {\n\tconst length = number.length;\n\n\tswitch (token) {\n\t\tcase \"yyyy\":\n\t\t\treturn length === 4;\n\t\tcase \"yy\":\n\t\t\treturn length === 2;\n\t\tcase \"mm\":\n\t\tcase \"dd\":\n\t\t\treturn length === 2;\n\t\tcase \"m\":\n\t\tcase \"d\":\n\t\t\treturn length >= 1 && length <= 2;\n\t\tdefault:\n\t\t\treturn false;\n\t}\n}\n\nfunction assignDateComponent(date: DateComponents, token: string, value: string): void {\n\tswitch (token) {\n\t\tcase \"yyyy\":\n\t\t\tdate.year = value;\n\t\t\tdate.yearNumber = parseInt(value);\n\t\t\tbreak;\n\t\tcase \"yy\":\n\t\t\tdate.year = value.length === 2 ? `20${value}` : value;\n\t\t\tdate.yearNumber = parseInt(date.year);\n\t\t\tbreak;\n\t\tcase \"mm\":\n\t\tcase \"m\":\n\t\t\tdate.month = value.padStart(2, \"0\");\n\t\t\tdate.monthNumber = parseInt(date.month);\n\t\t\tbreak;\n\t\tcase \"dd\":\n\t\tcase \"d\":\n\t\t\tdate.day = value.padStart(2, \"0\");\n\t\t\tdate.dayNumber = parseInt(value);\n\t\t\tbreak;\n\t}\n}\n\nfunction detectPeriod(time: EnhancedParsedTime, input: string): void {\n\tconst lowerInput = input.toLowerCase();\n\n\tif (lowerInput.includes(\"am\") || lowerInput.includes(\"a.m.\")) {\n\t\ttime.period = \"AM\";\n\t\tif (time.hour === \"12\") {\n\t\t\ttime.hour = \"00\";\n\t\t}\n\t} else if (lowerInput.includes(\"pm\") || lowerInput.includes(\"p.m.\")) {\n\t\ttime.period = \"PM\";\n\t\tif (time.hour && time.hour !== \"12\") {\n\t\t\tconst hourNum = parseInt(time.hour);\n\t\t\tif (!Number.isNaN(hourNum) && hourNum < 12) {\n\t\t\t\ttime.hour = String(hourNum + 12).padStart(2, \"0\");\n\t\t\t}\n\t\t}\n\t}\n}\n\n// Simple utility functions\nfunction extractAllNumbers(input: string): string[] {\n\treturn input.match(/\\d+/g) || [];\n}\n\nfunction isDateToken(token: string): boolean {\n\treturn [\"yyyy\", \"yy\", \"mm\", \"m\", \"dd\", \"d\"].includes(token);\n}\n\nexport function extractFormatTokens(format: string): string[] {\n\tconst tokenRegex = /(yyyy|yy|mm|m|dd|d|hh|h|nn|n|ss|s)/gi;\n\tconst matches = format.match(tokenRegex);\n\treturn matches ? matches.map((match) => match.toLowerCase()) : [];\n}\n\nfunction extractRemainingText(\n\tinput: string,\n\tdateSeparators: string | string[],\n\ttimeSeparators: string | string[],\n): string | null {\n\tlet workingValue = input;\n\n\t// Remove separators\n\tconst allSeparators = [\n\t\t...(Array.isArray(dateSeparators) ? dateSeparators : [dateSeparators]),\n\t\t...(Array.isArray(timeSeparators) ? timeSeparators : [timeSeparators]),\n\t];\n\n\tfor (const sep of allSeparators) {\n\t\tworkingValue = workingValue.split(sep).join(\"\");\n\t}\n\n\t// Remove AM/PM indicators and numbers\n\tworkingValue = workingValue\n\t\t.replace(/\\b(am|pm|a\\.m\\.|p\\.m\\.)\\b/gi, \"\")\n\t\t.replace(/\\d+/g, \"\")\n\t\t.replace(/\\s+/g, \" \")\n\t\t.trim();\n\n\treturn workingValue || null;\n}\n\nfunction formatResults(\n\tresult: EnhancedParsedResult,\n\tformat: string,\n\ttimeSeparators: string | string[] = [\":\"],\n) {\n\tresult.date.formatted = formatDate(result.date, format);\n\n\tconst timeSeparator = Array.isArray(timeSeparators) ? timeSeparators[0] : timeSeparators;\n\n\tresult.time.forEach((time) => {\n\t\ttime.formatted = formatTime12h(time, timeSeparator);\n\t\ttime.formatted24h = formatTime24h(time, timeSeparator);\n\t});\n}\n\nfunction validateResults(result: EnhancedParsedResult, format: string): void {\n\tresult.date.valid = validateDateComponents(result.date, format);\n\n\tresult.time.forEach((time) => {\n\t\ttime.valid = validateTimeComponents(time, format);\n\t});\n\n\tresult.valid = result.date.valid || result.time.some((t) => t.valid);\n}\n\n// Factory functions\nfunction createEmptyResult(): EnhancedParsedResult {\n\treturn {\n\t\tdate: {\n\t\t\tyear: null,\n\t\t\tmonth: null,\n\t\t\tday: null,\n\t\t\tyearNumber: null,\n\t\t\tmonthNumber: null,\n\t\t\tdayNumber: null,\n\t\t\tvalid: false,\n\t\t\tformatted: null,\n\t\t},\n\t\ttime: [],\n\t\tvalid: false,\n\t\tothers: null,\n\t};\n}\n\nfunction createEmptyTime(): EnhancedParsedTime {\n\treturn {\n\t\thour: null,\n\t\tminute: null,\n\t\tsecond: null,\n\t\tperiod: null,\n\t\thourNumber: null,\n\t\tsecondNumber: null,\n\t\tminuteNumber: null,\n\t\tvalid: false,\n\t\tformatted: null,\n\t\tformatted24h: null,\n\t};\n}\n\n// Keep your existing format functions (they're fine)\nexport function formatDate(\n\tdate: Pick<DateComponents, \"year\" | \"month\" | \"day\">,\n\toriginalFormat: string,\n): string | null {\n\tconst formatTokens = extractFormatTokens(originalFormat);\n\tconst dateTokens = formatTokens.filter((token) =>\n\t\t[\"yyyy\", \"yy\", \"mm\", \"m\", \"dd\", \"d\"].includes(token.toLowerCase()),\n\t);\n\n\tconst components: string[] = [];\n\n\tfor (const token of dateTokens) {\n\t\tswitch (token.toLowerCase()) {\n\t\t\tcase \"yyyy\":\n\t\t\tcase \"yy\":\n\t\t\t\tif (date.year) components.push(date.year);\n\t\t\t\tbreak;\n\t\t\tcase \"mm\":\n\t\t\tcase \"m\":\n\t\t\t\tif (date.month) components.push(date.month);\n\t\t\t\tbreak;\n\t\t\tcase \"dd\":\n\t\t\tcase \"d\":\n\t\t\t\tif (date.day) components.push(date.day);\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tif (components.length > 0) {\n\t\tconst separator = detectSeparatorFromFormat(originalFormat);\n\t\treturn components.join(separator);\n\t}\n\n\treturn null;\n}\n\nfunction detectSeparatorFromFormat(format: string): string {\n\tconst separatorMatch = format.match(/[^a-zA-Z0-9]/);\n\treturn separatorMatch ? separatorMatch[0] : \"-\";\n}\n\nexport function formatTime12h(\n\ttime: Pick<EnhancedParsedTime, \"hour\" | \"minute\" | \"second\" | \"period\">,\n\ttimeSeparator: string = \":\",\n): string | null {\n\tif (!time.hour) return null;\n\n\tconst timeParts = [] as any[];\n\tlet displayHour = time.hour;\n\n\t// Always respect the existing period if provided\n\tlet period = time.period;\n\n\tconst hourNum = parseInt(time.hour);\n\tif (!Number.isNaN(hourNum)) {\n\t\t// Only calculate period if it wasn't provided\n\t\tif (!period) {\n\t\t\tif (hourNum === 0 || hourNum === 12) {\n\t\t\t\tperiod = hourNum === 0 ? \"AM\" : \"PM\";\n\t\t\t\tdisplayHour = \"12\";\n\t\t\t} else if (hourNum > 12) {\n\t\t\t\tperiod = \"PM\";\n\t\t\t\tdisplayHour = String(hourNum - 12).padStart(2, \"0\");\n\t\t\t} else {\n\t\t\t\tperiod = \"AM\";\n\t\t\t\tdisplayHour = String(hourNum).padStart(2, \"0\");\n\t\t\t}\n\t\t} else {\n\t\t\t// Period was provided, just format the hour for 12-hour display\n\t\t\tif (hourNum === 0) {\n\t\t\t\tdisplayHour = \"12\";\n\t\t\t} else if (hourNum > 12) {\n\t\t\t\tdisplayHour = String(hourNum - 12).padStart(2, \"0\");\n\t\t\t} else if (hourNum === 12) {\n\t\t\t\tdisplayHour = \"12\";\n\t\t\t} else {\n\t\t\t\tdisplayHour = String(hourNum).padStart(2, \"0\");\n\t\t\t}\n\t\t}\n\t}\n\n\ttimeParts.push(displayHour);\n\tif (time.minute) timeParts.push(time.minute);\n\tif (time.second) timeParts.push(time.second);\n\n\tconst timeString = timeParts.join(timeSeparator);\n\treturn period ? `${timeString} ${period}` : timeString;\n}\n\nexport function formatTime24h(\n\ttime: Pick<EnhancedParsedTime, \"hour\" | \"minute\" | \"second\">,\n\ttimeSeparator: string = \":\",\n): string | null {\n\tconst timeParts = [] as any[];\n\n\tif (time.hour) {\n\t\ttimeParts.push(time.hour);\n\t\tif (time.minute) timeParts.push(time.minute);\n\t\tif (time.second) timeParts.push(time.second);\n\t}\n\n\treturn timeParts.length > 0 ? timeParts.join(timeSeparator) : null;\n}\n\nfunction validateDateComponents(date: DateComponents, format: string): boolean {\n\t// Your existing validation logic\n\tconst formatTokens = extractFormatTokens(format);\n\tconst dateTokens = formatTokens.filter((token) =>\n\t\t[\"yyyy\", \"yy\", \"mm\", \"m\", \"dd\", \"d\"].includes(token.toLowerCase()),\n\t);\n\n\tif (dateTokens.length === 0) return false;\n\n\tfor (const token of dateTokens) {\n\t\tswitch (token.toLowerCase()) {\n\t\t\tcase \"yyyy\":\n\t\t\tcase \"yy\":\n\t\t\t\tif (!date.year) return false;\n\t\t\t\tbreak;\n\t\t\tcase \"mm\":\n\t\t\tcase \"m\":\n\t\t\t\tif (!date.month) return false;\n\t\t\t\tbreak;\n\t\t\tcase \"dd\":\n\t\t\tcase \"d\":\n\t\t\t\tif (!date.day) return false;\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tif (date.year && Number.isNaN(parseInt(date.year))) return false;\n\tif (date.month) {\n\t\tconst month = parseInt(date.month);\n\t\tif (Number.isNaN(month) || month < 1 || month > 12) return false;\n\t}\n\tif (date.day) {\n\t\tconst day = parseInt(date.day);\n\t\tif (Number.isNaN(day) || day < 1 || day > 31) return false;\n\t}\n\n\treturn true;\n}\n\nfunction validateTimeComponents(time: EnhancedParsedTime, format: string): boolean {\n\tif (!time.hour) return false;\n\n\tconst hour = parseInt(time.hour);\n\tif (Number.isNaN(hour) || hour < 0 || hour > 23) return false;\n\n\tif (time.minute) {\n\t\tconst minute = parseInt(time.minute);\n\t\tif (Number.isNaN(minute) || minute < 0 || minute > 59) return false;\n\t}\n\n\tif (time.second) {\n\t\tconst second = parseInt(time.second);\n\t\tif (Number.isNaN(second) || second < 0 || second > 59) return false;\n\t}\n\n\treturn true;\n}\n","import type { Extras } from \"../../../_model\";\nimport { CALENDAR } from \"../../../const\";\nimport { extractFormatTokens } from \"./parse\";\n\ntype Configs = Pick<Extras.Date.In, \"format\" | \"defaultMode\">;\nexport function initMode(configs: Configs): Extras.Date.Out<any>[\"mode\"] {\n\tconst formatTokens = extractFormatTokens(configs.format);\n\tconst modeSequence = [] as CALENDAR.MODE[];\n\t//\n\tfor (const token of formatTokens) {\n\t\tconst value = token.toLowerCase();\n\t\tif (value === \"yyyy\" || value === \"yy\") {\n\t\t\tmodeSequence.push(CALENDAR.MODE.YEAR);\n\t\t} else if (value === \"mm\" || value === \"m\") {\n\t\t\tmodeSequence.push(CALENDAR.MODE.MONTH);\n\t\t} else if (value === \"dd\" || value === \"d\") {\n\t\t\tmodeSequence.push(CALENDAR.MODE.DAY);\n\t\t} else if (value === \"hh\" || value === \"h\") {\n\t\t\tmodeSequence.push(CALENDAR.MODE.HOUR);\n\t\t} else if (value === \"nn\" || value === \"n\") {\n\t\t\tmodeSequence.push(CALENDAR.MODE.MINUTE);\n\t\t} else if (value === \"ss\" || value === \"s\") {\n\t\t\tmodeSequence.push(CALENDAR.MODE.SECOND);\n\t\t}\n\t}\n\tmodeSequence.sort();\n\t// set initial type mode\n\tlet active = null as unknown as CALENDAR.MODE;\n\t// TODO: offer a better way to set starting mode, for now it's in this order.\n\tif (modeSequence.includes(CALENDAR.MODE.DAY)) active = CALENDAR.MODE.DAY;\n\telse if (modeSequence.includes(CALENDAR.MODE.MONTH)) active = CALENDAR.MODE.MONTH;\n\telse if (modeSequence.includes(CALENDAR.MODE.YEAR)) active = CALENDAR.MODE.YEAR;\n\telse if (modeSequence.includes(CALENDAR.MODE.HOUR)) active = CALENDAR.MODE.HOUR;\n\telse if (modeSequence.includes(CALENDAR.MODE.MINUTE)) active = CALENDAR.MODE.MINUTE;\n\telse if (modeSequence.includes(CALENDAR.MODE.SECOND)) active = CALENDAR.MODE.SECOND;\n\n\t// check if user requested mode is allowed\n\tif (configs.defaultMode != null) {\n\t\tconst userRequestedMode = CALENDAR.MODE[configs.defaultMode];\n\t\tif (modeSequence.includes(userRequestedMode)) {\n\t\t\tactive = userRequestedMode;\n\t\t} else {\n\t\t\tconsole.warn(\n\t\t\t\t\"qform: user requested default calendar mode <\",\n\t\t\t\tconfigs.defaultMode,\n\t\t\t\t\"> is not allowed, reverting to <\",\n\t\t\t\tCALENDAR.MODE[active],\n\t\t\t\t\">\",\n\t\t\t);\n\t\t}\n\t}\n\t//\n\tconst activeType =\n\t\tactive <= CALENDAR.MODE.DAY ? CALENDAR.MODE_TYPE.DATE : CALENDAR.MODE_TYPE.TIME;\n\tconst applyDate = modeSequence.includes(CALENDAR.MODE.DAY)\n\t\t? CALENDAR.MODE.DAY\n\t\t: modeSequence.includes(CALENDAR.MODE.MONTH)\n\t\t\t? CALENDAR.MODE.MONTH\n\t\t\t: modeSequence.includes(CALENDAR.MODE.YEAR)\n\t\t\t\t? CALENDAR.MODE.YEAR\n\t\t\t\t: null;\n\tconst applyTime = modeSequence.includes(CALENDAR.MODE.SECOND)\n\t\t? CALENDAR.MODE.SECOND\n\t\t: modeSequence.includes(CALENDAR.MODE.MINUTE)\n\t\t\t? CALENDAR.MODE.MINUTE\n\t\t\t: modeSequence.includes(CALENDAR.MODE.HOUR)\n\t\t\t\t? CALENDAR.MODE.HOUR\n\t\t\t\t: null;\n\treturn {\n\t\tactive,\n\t\tactiveType,\n\t\tdefault: active,\n\t\tdefaultType: activeType,\n\t\tapplyDate,\n\t\tapplyTime,\n\t\t// names\n\t\tactiveName: CALENDAR.MODE[active] as any,\n\t\tdefaultName: CALENDAR.MODE[active] as any,\n\t\tactiveTypeName: CALENDAR.MODE_TYPE[activeType],\n\t\tdefaultTypeName: CALENDAR.MODE_TYPE[activeType] as any,\n\t\tapplyDateName: applyDate == null ? null : (CALENDAR.MODE[applyDate] as any),\n\t\tapplyTimeName: applyTime == null ? null : (CALENDAR.MODE[applyTime] as any),\n\t\t// others\n\t\tsequence: modeSequence,\n\t};\n}\n\nexport function nextMode(configs: { mode: Extras.Date.Out<any>[\"mode\"] }) {\n\t// find next mode object\n\tconst result = { ...configs.mode };\n\tconst idx = result.sequence.indexOf(result.active);\n\tconst nextIdx = idx + 1;\n\tlet active = result.active;\n\tif (nextIdx < result.sequence.length) {\n\t\tactive = result.sequence[nextIdx];\n\t}\n\n\t//\n\tif (active !== result.active) {\n\t\tresult.active = active;\n\t\tresult.activeType =\n\t\t\tactive <= CALENDAR.MODE.DAY ? CALENDAR.MODE_TYPE.DATE : CALENDAR.MODE_TYPE.TIME;\n\t\tresult.activeName = CALENDAR.MODE[result.active] as any;\n\t\tresult.activeTypeName = CALENDAR.MODE_TYPE[result.activeType] as any;\n\t}\n\n\treturn result;\n}\n\nexport function goToMode(reqMode: CALENDAR.MODE, configs: { mode: Extras.Date.Out<any>[\"mode\"] }) {\n\tconst idx = configs.mode.sequence.indexOf(reqMode);\n\tif (idx < 0) {\n\t\treturn configs.mode;\n\t}\n\tconst result = { ...configs.mode };\n\tconst active = reqMode;\n\n\t//\n\tresult.active = active;\n\tresult.activeType =\n\t\tactive <= CALENDAR.MODE.DAY ? CALENDAR.MODE_TYPE.DATE : CALENDAR.MODE_TYPE.TIME;\n\tresult.activeName = CALENDAR.MODE[result.active] as any;\n\tresult.activeTypeName = CALENDAR.MODE_TYPE[result.activeType] as any;\n\treturn result;\n}\n","import type { Extras } from \"../../../_model\";\n\nexport type SelectedList = ReturnType<typeof createSelectedList>;\nexport function createSelectedList(extras: Extras.Date.Out<any>) {\n\tconst list = [] as Extras.Date.ParsedResult[];\n\tconst is12Hour = extras.timeFormat === \"12h\";\n\tconst period = extras.TIME.activePeriod;\n\tconst requiresDate = extras.mode.applyDate != null;\n\tconst requiresTime = extras.mode.applyTime != null;\n\tlet validCount = 0;\n\treturn {\n\t\tlist,\n\t\tget validCount() {\n\t\t\treturn validCount;\n\t\t},\n\t\trequiresDate,\n\t\trequiresTime,\n\t\tappend: (parsed: Extras.Date.ParsedResult) => {\n\t\t\tlist.push(parsed);\n\t\t\tconst invlidItem = parsed.time?.find((item) => item.valid === false);\n\t\t\tif (requiresDate && requiresTime) {\n\t\t\t\tif (parsed.date.valid && parsed.time.length > 0 && invlidItem == null) {\n\t\t\t\t\tvalidCount++;\n\t\t\t\t}\n\t\t\t} else if (requiresDate) {\n\t\t\t\tif (parsed.date.valid) validCount++;\n\t\t\t} else if (requiresTime) {\n\t\t\t\tif (parsed.time.length > 0 && invlidItem == null) {\n\t\t\t\t\tvalidCount++;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t//\n\t\thasYear: (year: number) => {\n\t\t\treturn (\n\t\t\t\tyear === extras.YEAR.active || list.findIndex((item) => item.date.yearNumber === year) >= 0\n\t\t\t);\n\t\t},\n\t\thasYearMonth: (year: number, month: number) => {\n\t\t\treturn (\n\t\t\t\t(year === extras.YEAR.active && month === extras.MONTH.active) ||\n\t\t\t\tlist.findIndex(\n\t\t\t\t\t(item) => item.date.yearNumber === year && item.date.monthNumber === month,\n\t\t\t\t) >= 0\n\t\t\t);\n\t\t},\n\t\thasDate: (year: number, month: number, day: number) => {\n\t\t\treturn (\n\t\t\t\tlist.findIndex(\n\t\t\t\t\t(item) =>\n\t\t\t\t\t\titem.date.yearNumber === year &&\n\t\t\t\t\t\titem.date.monthNumber === month &&\n\t\t\t\t\t\titem.date.dayNumber === day,\n\t\t\t\t) >= 0\n\t\t\t);\n\t\t},\n\t\t//\n\t\tpopulateSelectedTime(year: number, month: number, day: number) {\n\t\t\tconst parsed = list.find(\n\t\t\t\t(item) =>\n\t\t\t\t\titem.date.yearNumber === year &&\n\t\t\t\t\titem.date.monthNumber === month &&\n\t\t\t\t\titem.date.dayNumber === day,\n\t\t\t);\n\t\t\tconst times = parsed?.time ?? [];\n\n\t\t\treturn {\n\t\t\t\tlist: times,\n\t\t\t\thasHour: (_hour: number) => {\n\t\t\t\t\tconst hour = is12Hour ? _hour % 12 : _hour;\n\t\t\t\t\treturn (\n\t\t\t\t\t\ttimes.findIndex(\n\t\t\t\t\t\t\t(time) => (is12Hour ? time.period === period : true) && time.hourNumber === hour,\n\t\t\t\t\t\t) >= 0\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t\thasHourMinute: (_hour: number, minute: number) => {\n\t\t\t\t\tconst hour = is12Hour ? _hour % 12 : _hour;\n\t\t\t\t\treturn (\n\t\t\t\t\t\ttimes.findIndex(\n\t\t\t\t\t\t\t(time) =>\n\t\t\t\t\t\t\t\t(is12Hour ? time.period === period : true) &&\n\t\t\t\t\t\t\t\ttime.hourNumber === hour &&\n\t\t\t\t\t\t\t\ttime.minuteNumber === minute,\n\t\t\t\t\t\t) >= 0\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t\thasTime: (_hour: number, minute: number, second: number) => {\n\t\t\t\t\tconst hour = is12Hour ? _hour % 12 : _hour;\n\t\t\t\t\treturn (\n\t\t\t\t\t\ttimes.findIndex(\n\t\t\t\t\t\t\t(time) =>\n\t\t\t\t\t\t\t\t(is12Hour ? time.period === period : true) &&\n\t\t\t\t\t\t\t\ttime.hourNumber === hour &&\n\t\t\t\t\t\t\t\ttime.minuteNumber === minute &&\n\t\t\t\t\t\t\t\ttime.secondNumber === second,\n\t\t\t\t\t\t) >= 0\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t};\n\t\t},\n\t};\n}\n","import type { Extras } from \"../../../_model\";\nimport { CALENDAR } from \"../../../const\";\n\nexport default {\n\tinit: (extras: Extras.Date.Out<any>): Extras.Date.Out<any>[\"DATE\"] => {\n\t\tconst result: Extras.Date.Out<any>[\"DATE\"] = {} as any;\n\t\t//\n\t\treturn result;\n\t},\n\tcheck: (extras: Extras.Date.Out<any>) => {\n\t\t//\n\t\tconst activeMode = extras.mode.active;\n\t\tif (activeMode <= CALENDAR.MODE.DAY) {\n\t\t\textras.DATE.cells = extras[extras.mode.activeName].cells as any;\n\t\t} else {\n\t\t\textras.DATE.cells = null as any;\n\t\t}\n\t},\n};\n","import type { Extras } from \"../../../_model\";\nimport { CALENDAR } from \"../../../const\";\n\nexport default {\n\tinit: (extras: Extras.Date.Out<any>): Extras.Date.Out<any>[\"TIME\"] => {\n\t\tconst result: Extras.Date.Out<any>[\"TIME\"] = {} as any;\n\t\tresult.suffix = getLocaleSuffix(extras.locale) as any;\n\t\tresult.periods = initPeriods(extras);\n\t\tresult.activePeriod = result.periods?.[0].value;\n\t\t//\n\t\treturn result;\n\t},\n\tcheck: (extras: Extras.Date.Out<any>) => {\n\t\t//\n\t\tconst activeMode = extras.mode.active;\n\t\tif (activeMode > CALENDAR.MODE.DAY) {\n\t\t\textras.TIME.cells = extras[extras.mode.activeName].cells as any;\n\t\t} else {\n\t\t\textras.TIME.cells = null as any;\n\t\t}\n\n\t\t//\n\t\t// extras.TIME.periods = periods(extras);\n\t\t// if (extras.TIME.periods != null && extras.TIME.activePeriod == null) {\n\t\t// \textras.TIME.activePeriod = extras.TIME.periods?.[0].value;\n\t\t// }\n\t},\n\t//\n\toptions: {\n\t\tswitchPeriod: (option: Extras.Date.Option, extras: Extras.Date.Out<any>) => {\n\t\t\tif (option.type !== CALENDAR.OPTIONS.TIME_PERIOD || extras.TIME.periods == null) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst period = option.value;\n\t\t\textras.TIME.activePeriod = period;\n\t\t\tfor (let i = 0; i < extras.TIME.periods.length; i++) {\n\t\t\t\tconst value = extras.TIME.periods[i];\n\t\t\t\tvalue.isSelected = value.value === period;\n\t\t\t}\n\t\t},\n\t},\n};\n\nfunction initPeriods(extras: Extras.Date.Out<any>): Extras.Date.Option[] {\n\tif (extras.timeFormat !== \"12h\") {\n\t\treturn null as any;\n\t}\n\tconst result: Extras.Date.Option[] = [\n\t\t{\n\t\t\ttype: CALENDAR.OPTIONS.TIME_PERIOD,\n\t\t\ttypeName: \"TIME_PERIOD\",\n\t\t\tvalue: \"AM\",\n\t\t\tname: \"AM\",\n\t\t\tshortName: \"AM\",\n\t\t\tisSelected: true,\n\t\t},\n\t\t{\n\t\t\ttype: CALENDAR.OPTIONS.TIME_PERIOD,\n\t\t\ttypeName: \"TIME_PERIOD\",\n\t\t\tvalue: \"PM\",\n\t\t\tname: \"PM\",\n\t\t\tshortName: \"PM\",\n\t\t\tisSelected: false,\n\t\t},\n\t];\n\treturn result;\n}\n\n//\nfunction getLocaleSuffix(locale: string): typeof timeSuffixes.default {\n\tconst baseLocale = locale.split(\"-\")[0];\n\treturn timeSuffixes[baseLocale] || timeSuffixes.default;\n}\nconst timeSuffixes = {\n\t// Arabic and Middle Eastern (RTL)\n\tar: {\n\t\tdir: \"rtl\",\n\t\tshort: { hour: \"س\", minute: \"د\", second: \"ث\" },\n\t\tlong: { hour: \"ساعة\", minute: \"دقيقة\", second: \"ثانية\" },\n\t},\n\the: {\n\t\tdir: \"rtl\",\n\t\tshort: { hour: \"ש\", minute: \"ד\", second: \"ש\" },\n\t\tlong: { hour: \"שעה\", minute: \"דקה\", second: \"שניה\" },\n\t},\n\tfa: {\n\t\tdir: \"rtl\",\n\t\tshort: { hour: \"س\", minute: \"د\", second: \"ث\" },\n\t\tlong: { hour: \"ساعت\", minute: \"دقیقه\", second: \"ثانیه\" },\n\t},\n\tur: {\n\t\tdir: \"rtl\",\n\t\tshort: { hour: \"گ\", minute: \"م\", second: \"س\" },\n\t\tlong: { hour: \"گھنٹہ\", minute: \"منٹ\", second: \"سیکنڈ\" },\n\t},\n\n\t// European (LTR)\n\ten: {\n\t\tdir: \"ltr\",\n\t\tshort: { hour: \"H\", minute: \"M\", second: \"S\" },\n\t\tlong: { hour: \"hour\", minute: \"minute\", second: \"second\" },\n\t},\n\tfr: {\n\t\tdir: \"ltr\",\n\t\tshort: { hour: \"H\", minute: \"M\", second: \"S\" },\n\t\tlong: { hour: \"heure\", minute: \"minute\", second: \"seconde\" },\n\t},\n\tde: {\n\t\tdir: \"ltr\",\n\t\tshort: { hour: \"H\", minute: \"M\", second: \"S\" },\n\t\tlong: { hour: \"Stunde\", minute: \"Minute\", second: \"Sekunde\" },\n\t},\n\tes: {\n\t\tdir: \"ltr\",\n\t\tshort: { hour: \"h\", minute: \"m\", second: \"s\" },\n\t\tlong: { hour: \"hora\", minute: \"minuto\", second: \"segundo\" },\n\t},\n\tit: {\n\t\tdir: \"ltr\",\n\t\tshort: { hour: \"h\", minute: \"m\", second: \"s\" },\n\t\tlong: { hour: \"ora\", minute: \"minuto\", second: \"secondo\" },\n\t},\n\tpt: {\n\t\tdir: \"ltr\",\n\t\tshort: { hour: \"h\", minute: \"m\", second: \"s\" },\n\t\tlong: { hour: \"hora\", minute: \"minuto\", second: \"segundo\" },\n\t},\n\tnl: {\n\t\tdir: \"ltr\",\n\t\tshort: { hour: \"u\", minute: \"m\", second: \"s\" },\n\t\tlong: { hour: \"uur\", minute: \"minuut\", second: \"seconde\" },\n\t},\n\tsv: {\n\t\tdir: \"ltr\",\n\t\tshort: { hour: \"h\", minute: \"m\", second: \"s\" },\n\t\tlong: { hour: \"timme\", minute: \"minut\", second: \"sekund\" },\n\t},\n\tno: {\n\t\tdir: \"ltr\",\n\t\tshort: { hour: \"t\", minute: \"m\", second: \"s\" },\n\t\tlong: { hour: \"time\", minute: \"minutt\", second: \"sekund\" },\n\t},\n\tda: {\n\t\tdir: \"ltr\",\n\t\tshort: { hour: \"t\", minute: \"m\", second: \"s\" },\n\t\tlong: { hour: \"time\", minute: \"minut\", second: \"sekund\" },\n\t},\n\tfi: {\n\t\tdir: \"ltr\",\n\t\tshort: { hour: \"t\", minute: \"m\", second: \"s\" },\n\t\tlong: { hour: \"tunti\", minute: \"minuutti\", second: \"sekunti\" },\n\t},\n\tpl: {\n\t\tdir: \"ltr\",\n\t\tshort: { hour: \"g\", minute: \"m\", second: \"s\" },\n\t\tlong: { hour: \"godzina\", minute: \"minuta\", second: \"sekunda\" },\n\t},\n\tcs: {\n\t\tdir: \"ltr\",\n\t\tshort: { hour: \"h\", minute: \"m\", second: \"s\" },\n\t\tlong: { hour: \"hodina\", minute: \"minuta\", second: \"sekunda\" },\n\t},\n\tsk: {\n\t\tdir: \"ltr\",\n\t\tshort: { hour: \"h\", minute: \"m\", second: \"s\" },\n\t\tlong: { hour: \"hodina\", minute: \"minúta\", second: \"sekunda\" },\n\t},\n\thu: {\n\t\tdir: \"ltr\",\n\t\tshort: { hour: \"ó\", minute: \"p\", second: \"mp\" },\n\t\tlong: { hour: \"óra\", minute: \"perc\", second: \"másodperc\" },\n\t},\n\tro: {\n\t\tdir: \"ltr\",\n\t\tshort: { hour: \"h\", minute: \"m\", second: \"s\" },\n\t\tlong: { hour: \"oră\", minute: \"minut\", second: \"secundă\" },\n\t},\n\tbg: {\n\t\tdir: \"ltr\",\n\t\tshort: { hour: \"ч\", minute: \"м\", second: \"с\" },\n\t\tlong: { hour: \"час\", minute: \"минута\", second: \"секунда\" },\n\t},\n\thr: {\n\t\tdir: \"ltr\",\n\t\tshort: { hour: \"h\", minute: \"m\", second: \"s\" },\n\t\tlong: { hour: \"sat\", minute: \"minuta\", second: \"sekunda\" },\n\t},\n\tsr: {\n\t\tdir: \"ltr\",\n\t\tshort: { hour: \"ч\", minute: \"м\", second: \"с\" },\n\t\tlong: { hour: \"сат\", minute: \"минут\", second: \"секунд\" },\n\t},\n\n\t// Asian (LTR)\n\tzh: {\n\t\tdir: \"ltr\",\n\t\tshort: { hour: \"时\", minute: \"分\", second: \"秒\" },\n\t\tlong: { hour: \"小时\", minute: \"分钟\", second: \"秒\" },\n\t},\n\tja: {\n\t\tdir: \"ltr\",\n\t\tshort: { hour: \"時\", minute: \"分\", second: \"秒\" },\n\t\tlong: { hour: \"時間\", minute: \"分\", second: \"秒\" },\n\t},\n\tko: {\n\t\tdir: \"ltr\",\n\t\tshort: { hour: \"시\", minute: \"분\", second: \"초\" },\n\t\tlong: { hour: \"시간\", minute: \"분\", second: \"초\" },\n\t},\n\thi: {\n\t\tdir: \"ltr\",\n\t\tshort: { hour: \"घ\", minute: \"मि\", second: \"से\" },\n\t\tlong: { hour: \"घंटा\", minute: \"मिनट\", second: \"सेकंड\" },\n\t},\n\tth: {\n\t\tdir: \"ltr\",\n\t\tshort: { hour: \"ชม.\", minute: \"น.\", second: \"ว.\" },\n\t\tlong: { hour: \"ชั่วโมง\", minute: \"นาที\", second: \"วินาที\" },\n\t},\n\tvi: {\n\t\tdir: \"ltr\",\n\t\tshort: { hour: \"g\", minute: \"p\", second: \"g\" },\n\t\tlong: { hour: \"giờ\", minute: \"phút\", second: \"giây\" },\n\t},\n\n\t// Other (LTR)\n\tru: {\n\t\tdir: \"ltr\",\n\t\tshort: { hour: \"ч\", minute: \"м\", second: \"с\" },\n\t\tlong: { hour: \"час\", minute: \"минута\", second: \"секунда\" },\n\t},\n\tuk: {\n\t\tdir: \"ltr\",\n\t\tshort: { hour: \"г\", minute: \"х\", second: \"с\" },\n\t\tlong: { hour: \"година\", minute: \"хвилина\", second: \"секунда\" },\n\t},\n\ttr: {\n\t\tdir: \"ltr\",\n\t\tshort: { hour: \"s\", minute: \"d\", second: \"s\" },\n\t\tlong: { hour: \"saat\", minute: \"dakika\", second: \"saniye\" },\n\t},\n\tel: {\n\t\tdir: \"ltr\",\n\t\tshort: { hour: \"ω\", minute: \"λ\", second: \"δ\" },\n\t\tlong: { hour: \"ώρα\", minute: \"λεπτό\", second: \"δευτερόλεπτο\" },\n\t},\n\n\t// Default fallback\n\tdefault: {\n\t\tdir: \"ltr\",\n\t\tshort: { hour: \"H\", minute: \"M\", second: \"S\" },\n\t\tlong: { hour: \"hour\", minute: \"minute\", second: \"second\" },\n\t},\n};\n","import type { Extras } from \"../../../_model\";\nimport { CALENDAR } from \"../../../const\";\n\nexport default {\n\tinit: (extras: Extras.Date.Out<any>): Extras.Date.Out<any>[\"YEAR\"] => {\n\t\tconst result: Extras.Date.Out<any>[\"YEAR\"] = {} as any;\n\t\tresult.active = new Date().getFullYear();\n\t\tresult.current = new Date().getFullYear();\n\t\tresult.start = result.active - Math.floor(extras.yearSpan / 2);\n\t\tresult.end = result.start + extras.yearSpan;\n\t\treturn result;\n\t},\n\tupdate(year: number | undefined | null, extras: Extras.Date.Out<any>) {\n\t\tif (year == null) {\n\t\t\treturn;\n\t\t}\n\t\textras.YEAR.active = year;\n\t\t// extras.YEAR.start = year - Math.floor(extras.yearSpan / 2);\n\t\t// extras.YEAR.end = extras.YEAR.start + extras.yearSpan;\n\t},\n\tcheck(extras: Extras.Date.Out<any>) {\n\t\tif (!extras.mode.sequence.includes(CALENDAR.MODE.YEAR)) {\n\t\t\textras.YEAR.cells = null as any;\n\t\t\treturn;\n\t\t}\n\t\tconst years: Extras.Date.CellDate[] = [];\n\t\t// Calculate start year based on the current view, not selection\n\t\tfor (let year = extras.YEAR.start; year < extras.YEAR.end; year++) {\n\t\t\tconst yearStr = year.toString();\n\t\t\tconst isSelected = extras.selected.hasYear(year);\n\n\t\t\tyears.push({\n\t\t\t\tkey: `calendar.year.${year}`,\n\t\t\t\tmode: CALENDAR.MODE.YEAR,\n\t\t\t\tmodeName: CALENDAR.MODE[CALENDAR.MODE.YEAR] as any,\n\t\t\t\tvalue: yearStr,\n\t\t\t\tvalueNumber: year,\n\t\t\t\tname: yearStr,\n\t\t\t\tshortName: yearStr.slice(-2),\n\t\t\t\tisSelected,\n\t\t\t\tisToday: extras.YEAR.current === year,\n\t\t\t});\n\t\t}\n\n\t\textras.YEAR.cells = years;\n\t},\n\t//\n\tevents: {\n\t\tprevView: (extras: Extras.Date.Out<any>) => {\n\t\t\textras.YEAR.start -= extras.yearSpan;\n\t\t\textras.YEAR.end = extras.YEAR.start + extras.yearSpan;\n\t\t},\n\t\tnextView: (extras: Extras.Date.Out<any>) => {\n\t\t\textras.YEAR.start += extras.yearSpan;\n\t\t\textras.YEAR.end = extras.YEAR.start + extras.yearSpan;\n\t\t},\n\t\tprev: (extras: Extras.Date.Out<any>) => {\n\t\t\tconst next = extras.YEAR.active - 1;\n\t\t\textras.YEAR.active = next;\n\t\t\tif (next < extras.YEAR.start) {\n\t\t\t\textras.YEAR.start -= extras.yearSpan;\n\t\t\t\textras.YEAR.end = extras.YEAR.start + extras.yearSpan;\n\t\t\t}\n\t\t},\n\t\tnext: (extras: Extras.Date.Out<any>) => {\n\t\t\tconst next = extras.YEAR.active + 1;\n\t\t\textras.YEAR.active = next;\n\t\t\tif (next > extras.YEAR.end) {\n\t\t\t\textras.YEAR.start += extras.yearSpan;\n\t\t\t\textras.YEAR.end = extras.YEAR.start + extras.yearSpan;\n\t\t\t}\n\t\t},\n\t},\n};\n","import type { Extras } from \"../../../_model\";\nimport { CALENDAR } from \"../../../const\";\n\nexport default {\n\tinit: (extras: Extras.Date.Out<any>): Extras.Date.Out<any>[\"MONTH\"] => {\n\t\tconst result: Extras.Date.Out<any>[\"MONTH\"] = {} as any;\n\t\tresult.active = new Date().getMonth() + 1;\n\t\tresult.current = new Date().getMonth() + 1;\n\n\t\t//\n\t\tconst date = new Date(extras.YEAR.active, result.active - 1, 1);\n\t\tconst formatter = new Intl.DateTimeFormat(extras.locale, { month: \"long\" });\n\t\tconst shortFormatter = new Intl.DateTimeFormat(extras.locale, { month: \"short\" });\n\n\t\t//\n\t\tresult.name = formatter.format(date);\n\t\tresult.shortName = shortFormatter.format(date);\n\t\treturn result;\n\t},\n\tupdate(_month: number | undefined | null, extras: Extras.Date.Out<any>) {\n\t\tif (_month == null) {\n\t\t\treturn;\n\t\t}\n\t\tconst month = _month <= 0 ? 1 : _month > 12 ? 12 : _month;\n\t\tconst date = new Date(extras.YEAR.active, month - 1, 1);\n\t\tconst formatter = new Intl.DateTimeFormat(extras.locale, { month: \"long\" });\n\t\tconst shortFormatter = new Intl.DateTimeFormat(extras.locale, { month: \"short\" });\n\n\t\t//\n\t\textras.MONTH.active = month;\n\t\textras.MONTH.name = formatter.format(date);\n\t\textras.MONTH.shortName = shortFormatter.format(date);\n\t},\n\tcheck: (extras: Extras.Date.Out<any>) => {\n\t\tif (!extras.mode.sequence.includes(CALENDAR.MODE.MONTH)) {\n\t\t\textras.MONTH.cells = null as any;\n\t\t\treturn;\n\t\t}\n\t\tconst months: Extras.Date.CellDate[] = [];\n\t\tconst formatter = new Intl.DateTimeFormat(extras.locale, { month: \"long\" });\n\t\tconst shortFormatter = new Intl.DateTimeFormat(extras.locale, { month: \"short\" });\n\n\t\tfor (let i = 0; i < 12; i++) {\n\t\t\tconst date = new Date(extras.YEAR.active, i, 1);\n\t\t\tconst monthNumber = i + 1;\n\t\t\tconst isSelected = extras.selected.hasYearMonth(extras.YEAR.active, monthNumber);\n\n\t\t\tmonths.push({\n\t\t\t\tkey: `calendar.month.${i}`,\n\t\t\t\tmode: CALENDAR.MODE.MONTH,\n\t\t\t\tmodeName: CALENDAR.MODE[CALENDAR.MODE.MONTH] as any,\n\t\t\t\tvalue: `${monthNumber}`,\n\t\t\t\tvalueNumber: monthNumber,\n\t\t\t\tname: formatter.format(date),\n\t\t\t\tshortName: shortFormatter.format(date),\n\t\t\t\tisSelected,\n\t\t\t\tisToday: extras.MONTH.current === monthNumber,\n\t\t\t});\n\t\t}\n\n\t\textras.MONTH.cells = months;\n\t},\n\t//\n\tevents: {\n\t\tprev: (extras: Extras.Date.Out<any>) => {\n\t\t\tconst next = extras.MONTH.active - 1;\n\t\t\tif (next < 1) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\textras.MONTH.active = next;\n\t\t\tconst date = new Date(extras.YEAR.active, next - 1, 1);\n\t\t\tconst formatter = new Intl.DateTimeFormat(extras.locale, { month: \"long\" });\n\t\t\tconst shortFormatter = new Intl.DateTimeFormat(extras.locale, { month: \"short\" });\n\n\t\t\t//\n\t\t\textras.MONTH.name = formatter.format(date);\n\t\t\textras.MONTH.shortName = shortFormatter.format(date);\n\t\t},\n\t\tnext: (extras: Extras.Date.Out<any>) => {\n\t\t\tconst next = extras.MONTH.active + 1;\n\t\t\tif (next > 12) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\textras.MONTH.active = next;\n\n\t\t\tconst date = new Date(extras.YEAR.active, next - 1, 1);\n\t\t\tconst formatter = new Intl.DateTimeFormat(extras.locale, { month: \"long\" });\n\t\t\tconst shortFormatter = new Intl.DateTimeFormat(extras.locale, { month: \"short\" });\n\n\t\t\t//\n\t\t\textras.MONTH.name = formatter.format(date);\n\t\t\textras.MONTH.shortName = shortFormatter.format(date);\n\t\t},\n\t},\n};\n","import type { Extras } from \"../../../_model\";\nimport { CALENDAR } from \"../../../const\";\n\nfunction daysHeaders(locale: string, firstDayOfWeek: number): Extras.Date.Header[] {\n\tconst headers: Extras.Date.Header[] = [];\n\tconst formatter = new Intl.DateTimeFormat(locale, { weekday: \"long\" });\n\tconst shortFormatter = new Intl.DateTimeFormat(locale, { weekday: \"short\" });\n\n\tfor (let i = 0; i < 7; i++) {\n\t\tconst dayIndex = (firstDayOfWeek + i) % 7;\n\t\tconst date = new Date(2023, 0, dayIndex + 1); // Any date with the right weekday\n\n\t\theaders.push({\n\t\t\tvalue: dayIndex.toString(),\n\t\t\tname: formatter.format(date),\n\t\t\tshortName: shortFormatter.format(date),\n\t\t});\n\t}\n\n\treturn headers;\n}\n\nexport default {\n\tinit: (extras: Extras.Date.Out<any>): Extras.Date.Out<any>[\"DAY\"] => {\n\t\tconst result: Extras.Date.Out<any>[\"DAY\"] = {} as any;\n\t\tresult.active = new Date().getDate();\n\t\tresult.current = new Date().getDate();\n\n\t\t//\n\t\tconst date = new Date(extras.YEAR.active, extras.MONTH.active - 1, result.active);\n\t\tconst formatter = new Intl.DateTimeFormat(extras.locale, { weekday: \"long\" });\n\t\tconst shortFormatter = new Intl.DateTimeFormat(extras.locale, { weekday: \"short\" });\n\n\t\t//\n\t\tresult.name = formatter.format(date);\n\t\tresult.shortName = shortFormatter.format(date);\n\t\tresult.headers = daysHeaders(extras.locale, extras.firstDayOfWeek);\n\n\t\treturn result;\n\t},\n\tupdate(_day: number | undefined | null, extras: Extras.Date.Out<any>) {\n\t\tif (_day == null) {\n\t\t\treturn;\n\t\t}\n\t\tconst day = _day;\n\t\tconst date = new Date(extras.YEAR.active, extras.MONTH.active - 1, day);\n\t\tconst formatter = new Intl.DateTimeFormat(extras.locale, { weekday: \"long\" });\n\t\tconst shortFormatter = new Intl.DateTimeFormat(extras.locale, { weekday: \"short\" });\n\n\t\t//\n\t\textras.DAY.active = day;\n\t\textras.DAY.name = formatter.format(date);\n\t\textras.DAY.shortName = shortFormatter.format(date);\n\t},\n\tcheck: (extras: Extras.Date.Out<any>) => {\n\t\tif (!extras.mode.sequence.includes(CALENDAR.MODE.DAY)) {\n\t\t\textras.DAY.cells = null as any;\n\t\t\treturn;\n\t\t}\n\n\t\tconst days: Extras.Date.CellDate[] = [];\n\t\tconst today = new Date();\n\n\t\tconst currentYear = extras.YEAR.active;\n\t\tconst currentMonth = extras.MONTH.active - 1;\n\t\tconst firstDay = new Date(currentYear, currentMonth, 1);\n\t\tconst lastDay = new Date(currentYear, currentMonth + 1, 0);\n\t\tconst daysInCurrentMonth = lastDay.getDate();\n\t\tconst daysInPrevMonth = new Date(currentYear, currentMonth, 0).getDate();\n\n\t\tconst startDayOffset = (firstDay.getDay() - extras.firstDayOfWeek + 7) % 7;\n\t\tconst totalCells = 42;\n\n\t\t//\n\t\tfor (let i = 0; i < totalCells; i++) {\n\t\t\tlet dayNumber: number;\n\t\t\tlet key: string;\n\t\t\tlet isOtherMonth = false;\n\t\t\tlet isToday = false;\n\t\t\tlet isSelected = false;\n\n\t\t\tif (i < startDayOffset) {\n\t\t\t\t// Previous month\n\t\t\t\tdayNumber = daysInPrevMonth - startDayOffset + i + 1;\n\t\t\t\tkey = `calendar.day-prev.${dayNumber}`;\n\t\t\t\tisOtherMonth = true;\n\t\t\t} else if (i >= startDayOffset + daysInCurrentMonth) {\n\t\t\t\t// Next month\n\t\t\t\tdayNumber = i - startDayOffset - daysInCurrentMonth + 1;\n\t\t\t\tkey = `calendar.day-next.${dayNumber}`;\n\t\t\t\tisOtherMonth = true;\n\t\t\t} else {\n\t\t\t\t// Current month\n\t\t\t\tdayNumber = i - startDayOffset + 1;\n\t\t\t\tkey = `calendar.day.${extras.MONTH.active}.${dayNumber}`;\n\n\t\t\t\t// Only check for today\n\t\t\t\tconst date = new Date(currentYear, currentMonth, dayNumber);\n\t\t\t\tisToday = date.toDateString() === today.toDateString();\n\t\t\t\t// check for selected dates in spanned months' days\n\t\t\t\tisSelected = extras.selected.hasDate(extras.YEAR.active, extras.MONTH.active, dayNumber);\n\t\t\t}\n\n\t\t\tconst dayStr = dayNumber.toString();\n\n\t\t\tdays.push({\n\t\t\t\tkey,\n\t\t\t\tmode: CALENDAR.MODE.DAY,\n\t\t\t\tmodeName: CALENDAR.MODE[CALENDAR.MODE.DAY] as any,\n\t\t\t\tvalue: dayStr,\n\t\t\t\tvalueNumber: dayNumber,\n\t\t\t\tname: dayStr,\n\t\t\t\tshortName: dayStr,\n\t\t\t\tisSelected,\n\t\t\t\tisToday,\n\t\t\t\tisOtherMonth,\n\t\t\t});\n\t\t}\n\n\t\textras.DAY.cells = days;\n\t},\n};\n","import type { Extras } from \"../../../_model\";\nimport { CALENDAR } from \"../../../const\";\n\nexport default {\n\tinit: (extras: Extras.Date.Out<any>): Extras.Date.Out<any>[\"HOUR\"] => {\n\t\tconst result: Extras.Date.Out<any>[\"HOUR\"] = {} as any;\n\t\tresult.active = new Date().getHours(); // 0-23\n\t\t//\n\t\treturn result;\n\t},\n\tupdate(_hour: number | undefined | null, extras: Extras.Date.Out<any>) {\n\t\tif (_hour == null) {\n\t\t\treturn;\n\t\t}\n\t\textras.HOUR.active = _hour;\n\t},\n\tcheck: (extras: Extras.Date.Out<any>) => {\n\t\tif (!extras.mode.sequence.includes(CALENDAR.MODE.HOUR)) {\n\t\t\textras.HOUR.cells = null as any;\n\t\t\treturn;\n\t\t}\n\t\tconst hours: Extras.Date.CellTime[] = [];\n\t\tconst period = extras.TIME.activePeriod;\n\t\tconst suffix = extras.TIME.suffix;\n\t\tconst is12Hour = extras.timeFormat === \"12h\";\n\t\tconst maxHour = extras.timeFormat === \"12h\" ? 12 : 24;\n\n\t\tconst year = extras.YEAR.active;\n\t\tconst month = extras.MONTH.active;\n\t\tconst day = extras.DAY.active;\n\n\t\tconst times = extras.selected.populateSelectedTime(year, month, day);\n\t\tfor (let i = 0; i < maxHour; i++) {\n\t\t\tconst hour = is12Hour ? i + 1 : i;\n\t\t\tconst hourStr = hour.toString();\n\t\t\tconst isSelected = times.hasHour(hour);\n\n\t\t\thours.push({\n\t\t\t\tkey: `calendar.hour.${i}`,\n\t\t\t\tmode: CALENDAR.MODE.HOUR,\n\t\t\t\tmodeName: CALENDAR.MODE[CALENDAR.MODE.HOUR] as any,\n\t\t\t\tvalue: hourStr,\n\t\t\t\tvalueNumber: hour,\n\t\t\t\tisSelected,\n\t\t\t\tis24Hour: !is12Hour,\n\t\t\t\tname: `${hourStr.padStart(2, \"0\")}${suffix.long.hour}`,\n\t\t\t\tshortName: `${hourStr.padStart(2, \"0\")}${suffix.short.hour}`,\n\t\t\t\tsuffix: suffix.long.hour,\n\t\t\t\tshortSuffix: suffix.short.hour,\n\t\t\t});\n\t\t}\n\n\t\textras.HOUR.cells = hours;\n\t},\n};\n","import type { Extras } from \"../../../_model\";\nimport { CALENDAR } from \"../../../const\";\n\nexport default {\n\tinit: (extras: Extras.Date.Out<any>): Extras.Date.Out<any>[\"MINUTE\"] => {\n\t\tconst result: Extras.Date.Out<any>[\"MINUTE\"] = {} as any;\n\t\tresult.active = new Date().getMinutes();\n\t\t//\n\t\treturn result;\n\t},\n\tupdate(_minute: number | undefined | null, extras: Extras.Date.Out<any>) {\n\t\tif (_minute == null) {\n\t\t\treturn;\n\t\t}\n\t\textras.MINUTE.active = _minute;\n\t},\n\tcheck: (extras: Extras.Date.Out<any>) => {\n\t\tif (!extras.mode.sequence.includes(CALENDAR.MODE.MINUTE)) {\n\t\t\textras.MINUTE.cells = null as any;\n\t\t\treturn;\n\t\t}\n\t\tconst minutes: Extras.Date.CellTime[] = [];\n\t\tconst period = extras.TIME.activePeriod;\n\t\tconst suffix = extras.TIME.suffix;\n\t\tconst is12Hour = extras.timeFormat === \"12h\";\n\n\t\tconst year = extras.YEAR.active;\n\t\tconst month = extras.MONTH.active;\n\t\tconst day = extras.DAY.active;\n\t\tconst hour = extras.HOUR.active;\n\n\t\tconst times = extras.selected.populateSelectedTime(year, month, day);\n\t\tfor (let i = 0; i < 60; i++) {\n\t\t\tconst minuteStr = i.toString();\n\t\t\tconst isSelected = times.hasHourMinute(hour, i);\n\t\t\tminutes.push({\n\t\t\t\tkey: `calendar.hour.${hour}.minute.${i}`,\n\t\t\t\tmode: CALENDAR.MODE.MINUTE,\n\t\t\t\tmodeName: CALENDAR.MODE[CALENDAR.MODE.MINUTE] as any,\n\t\t\t\tvalue: minuteStr,\n\t\t\t\tvalueNumber: i,\n\t\t\t\tisSelected,\n\t\t\t\tis24Hour: !is12Hour,\n\t\t\t\tname: `${minuteStr.padStart(2, \"0\")}${suffix.long.minute}`,\n\t\t\t\tshortName: `${minuteStr.padStart(2, \"0\")}${suffix.short.minute}`,\n\t\t\t\tsuffix: suffix.long.minute,\n\t\t\t\tshortSuffix: suffix.short.minute,\n\t\t\t});\n\t\t}\n\n\t\textras.MINUTE.cells = minutes;\n\t},\n};\n","import type { Extras } from \"../../../_model\";\nimport { CALENDAR } from \"../../../const\";\n\nexport default {\n\tinit: (extras: Extras.Date.Out<any>): Extras.Date.Out<any>[\"MINUTE\"] => {\n\t\tconst result: Extras.Date.Out<any>[\"MINUTE\"] = {} as any;\n\t\tresult.active = new Date().getMinutes();\n\t\t//\n\t\treturn result;\n\t},\n\tupdate(_second: number | undefined | null, extras: Extras.Date.Out<any>) {\n\t\tif (_second == null) {\n\t\t\treturn;\n\t\t}\n\t\textras.SECOND.active = _second;\n\t},\n\tcheck: (extras: Extras.Date.Out<any>) => {\n\t\tif (!extras.mode.sequence.includes(CALENDAR.MODE.SECOND)) {\n\t\t\textras.SECOND.cells = null as any;\n\t\t\treturn;\n\t\t}\n\t\tconst seconds: Extras.Date.CellTime[] = [];\n\t\tconst period = extras.TIME.activePeriod;\n\t\tconst suffix = extras.TIME.suffix;\n\t\tconst is12Hour = extras.timeFormat === \"12h\";\n\n\t\tconst year = extras.YEAR.active;\n\t\tconst month = extras.MONTH.active;\n\t\tconst day = extras.DAY.active;\n\t\tconst hour = extras.HOUR.active;\n\t\tconst minute = extras.MINUTE.active;\n\n\t\tconst times = extras.selected.populateSelectedTime(year, month, day);\n\t\tfor (let i = 0; i < 60; i++) {\n\t\t\tconst secondStr = i.toString();\n\t\t\tconst isSelected = times.hasTime(hour, minute, i);\n\n\t\t\tseconds.push({\n\t\t\t\tkey: `calendar.hour.${hour}.minute.${i}.second.${i}`,\n\t\t\t\tmode: CALENDAR.MODE.SECOND,\n\t\t\t\tmodeName: CALENDAR.MODE[CALENDAR.MODE.SECOND] as any,\n\t\t\t\tvalue: secondStr,\n\t\t\t\tvalueNumber: i,\n\t\t\t\tisSelected,\n\t\t\t\tis24Hour: !is12Hour,\n\t\t\t\tname: `${secondStr.padStart(2, \"0\")}${suffix.long.second}`,\n\t\t\t\tshortName: `${secondStr.padStart(2, \"0\")}${suffix.short.second}`,\n\t\t\t\tsuffix: suffix.long.second,\n\t\t\t\tshortSuffix: suffix.short.second,\n\t\t\t});\n\t\t}\n\n\t\textras.SECOND.cells = seconds;\n\t},\n};\n","import type { Extras, Field, Form, FunctionProps } from \"../../../_model\";\nimport { parseDateEnhanced } from \"../../../render/helpers/date/parse\";\nimport { initMode } from \"../../../render/helpers/date/mode\";\nimport { FIELD } from \"../../../const\";\nimport { createSelectedList } from \"../../../render/helpers/date/selected-list\";\n//\nimport DATE from \"../../../render/helpers/date/DATE\";\nimport TIME from \"../../../render/helpers/date/TIME\";\nimport YEAR from \"../../../render/helpers/date/YEAR\";\nimport MONTH from \"../../../render/helpers/date/MONTH\";\nimport DAY from \"../../../render/helpers/date/DAY\";\nimport HOUR from \"../../../render/helpers/date/HOUR\";\nimport MINUTE from \"../../../render/helpers/date/MINUTE\";\nimport SECOND from \"../../../render/helpers/date/SECOND\";\n\nexport function processDateValue<S extends Field.Setup<\"date\">, O extends Form.Options>(\n\tprops: FunctionProps.Field<S, O>,\n\tprocessor: FunctionProps.FieldProcessor<S, O>,\n) {\n\t// setup\n\tconst { key, setup } = props;\n\tconst { el, manualUpdate, $next } = processor;\n\tconst _value = !manualUpdate ? el?.value : processor.value;\n\tconst extras = ($next.extras ?? setup.date ?? {}) as unknown as Extras.Date.Out<\n\t\tField.Setup<\"date\">\n\t>;\n\n\t// extras setup and rechecks\n\textras.dateSeparators =\n\t\ttypeof extras.dateSeparators === \"string\"\n\t\t\t? [extras.dateSeparators]\n\t\t\t: (extras.dateSeparators ?? [\"/\", \"-\", \".\"]);\n\textras.timeSeparators =\n\t\ttypeof extras.timeSeparators === \"string\"\n\t\t\t? [extras.timeSeparators]\n\t\t\t: (extras.timeSeparators ?? [\":\"]);\n\textras.multipleDateSeparator = extras.multipleDateSeparator ?? \"|\";\n\textras.multipleTimeSeparator = extras.multipleTimeSeparator ?? \",\";\n\textras.multipleTime = extras.multipleTime ?? false;\n\textras.format = extras.format ?? \"d-m-yyyy\"; //\"d-m-yyyy h:n:s\";\n\textras.locale = extras.locale ?? \"en-US\";\n\textras.yearSpan = extras.yearSpan == null || extras.yearSpan <= 0 ? 12 : extras.yearSpan;\n\textras.firstDayOfWeek = extras.firstDayOfWeek ?? 0;\n\textras.timeFormat = extras.timeFormat ?? \"24h\";\n\t// extras.range = extras.range ?? false; // TODO: leave for later\n\n\t// not options\n\textras.mode = extras.mode ?? initMode(extras as any);\n\n\t// fatals\n\tif (extras.multipleDateSeparator === extras.multipleTimeSeparator) {\n\t\tthrow new Error(\n\t\t\t\"qform: options.multipleDateSeparator & options.multipleTimeSeparator cannot be the same for form key :: \" +\n\t\t\t\tkey,\n\t\t);\n\t}\n\n\t// crucial api preparations\n\textras.DATE = extras.DATE ?? DATE.init(extras);\n\textras.TIME = extras.TIME ?? TIME.init(extras);\n\textras.YEAR = extras.YEAR ?? YEAR.init(extras);\n\textras.MONTH = extras.MONTH ?? MONTH.init(extras);\n\textras.DAY = extras.DAY ?? DAY.init(extras);\n\textras.HOUR = extras.HOUR ?? HOUR.init(extras);\n\textras.MINUTE = extras.MINUTE ?? MINUTE.init(extras);\n\textras.SECOND = extras.SECOND ?? SECOND.init(extras);\n\n\t//\n\tconst selected = createSelectedList(extras);\n\tlet putResult = false;\n\tconst result = [] as string[];\n\tif (_value != null) {\n\t\tconst values = $next.element.multiple ? _value.split(extras.multipleDateSeparator) : [_value];\n\t\tfor (const v of values) {\n\t\t\tconst parsed = parseDateEnhanced(\n\t\t\t\tv,\n\t\t\t\textras.format,\n\t\t\t\textras.dateSeparators,\n\t\t\t\textras.timeSeparators,\n\t\t\t\textras.multipleTimeSeparator,\n\t\t\t);\n\n\t\t\t//\n\t\t\tif (parsed.date.valid && $next.event.MUTATE !== FIELD.MUTATE.__EXTRAS) {\n\t\t\t\tYEAR.update(parsed.date.yearNumber, extras);\n\t\t\t\tMONTH.update(parsed.date.monthNumber, extras);\n\t\t\t\tDAY.update(parsed.date.dayNumber, extras);\n\t\t\t}\n\n\t\t\t//\n\t\t\tselected.append(parsed);\n\t\t\t// TODO: allow free language input writing for date and time as well\n\t\t\tif (parsed.date.valid) {\n\t\t\t\tputResult = true;\n\t\t\t}\n\t\t\tconst date = parsed.date.formatted ?? \"\";\n\t\t\tconst time = [] as (string | null)[];\n\t\t\tfor (const t of parsed.time) {\n\t\t\t\tif (t.formatted == null || t.formatted24h == null) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\ttime.push(extras.timeFormat === \"12h\" ? t.formatted : t.formatted24h);\n\t\t\t}\n\t\t\tresult.push(\n\t\t\t\t`${date} ${extras.multipleTime ? time.join(extras.multipleTimeSeparator) : (time[0] ?? \"\")}`.trim(),\n\t\t\t);\n\t\t}\n\t}\n\n\t// regular checks\n\textras.selected = selected;\n\t//\n\tYEAR.check(extras);\n\tMONTH.check(extras);\n\tDAY.check(extras);\n\tHOUR.check(extras);\n\tMINUTE.check(extras);\n\tSECOND.check(extras);\n\t//\n\tDATE.check(extras);\n\tTIME.check(extras);\n\t$next.extras = extras as any;\n\n\t// console.log(\"result :: \", _value, \" :: \", selected);\n\n\tif (!$next.element.preprocessValue) {\n\t\treturn _value;\n\t}\n\n\tif (!putResult) {\n\t\treturn _value;\n\t}\n\n\treturn $next.element.multiple ? result.join(extras.multipleDateSeparator) : result[0];\n\t// return _value;\n}\n","// https://dev.to/milliemolotov/how-to-retrieve-values-from-all-types-of-html-inputs-in-javascript-3143\nimport type { Extras, Field, Form, FunctionProps } from \"../../../_model\";\n// import { PLACEHOLDERS } from \"../../../const\";\n\nexport function processSelectValue<\n\tS extends Field.Setup<\"select\" | \"select.radio\">,\n\tO extends Form.Options,\n>(props: FunctionProps.Field<S, O>, processor: FunctionProps.FieldProcessor<S, O>) {\n\t// setup\n\tconst { setup } = props;\n\tconst { manualUpdate, preprocessValue, $next } = processor;\n\t// crucial checkup\n\tconst multiple = $next.element.multiple ?? false;\n\tconst extras = ($next.extras ?? setup.select ?? {}) as Extras.Select.Out<S>;\n\tconst _value = !manualUpdate ? $next.value : processor.value;\n\tconst result = Array.isArray(_value) ? _value : _value == null ? [] : [_value];\n\t// setup\n\textras.valueKey = extras.valueKey ?? \"value\";\n\textras.labelKey = extras.labelKey ?? \"label\";\n\textras.removeOnReselect = extras.removeOnReselect ?? true;\n\n\t// logic\n\textras.prev = [];\n\textras.current = [];\n\tif (extras.options?.length > 0) {\n\t\tif (!Array.isArray(extras.options)) {\n\t\t\tthrow new Error(\"qform: only arrays are allowed as selections of fields!\");\n\t\t}\n\t\tfor (let i = 0; i < extras.options.length; i++) {\n\t\t\tlet option = extras.options[i];\n\t\t\t// process options\n\t\t\tif (option == null) {\n\t\t\t\toption = { label: \"unknown\", value: \"unknown\", __selected: false } as any;\n\t\t\t} else if (typeof option === \"string\" || typeof option === \"number\") {\n\t\t\t\toption = { label: option, value: option, __selected: false } as any;\n\t\t\t}\n\t\t\t//\n\t\t\tif (option.__selected === true) {\n\t\t\t\textras.prev.push(i);\n\t\t\t}\n\t\t\t// processings\n\t\t\toption.__key = `${$next.__internal.key}-option${i}`;\n\t\t\tif (!((option.__valueKey ?? extras.valueKey) in option)) {\n\t\t\t\tif (extras.throwOnKeyNotFound) {\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t`qform: ${$next.__internal.key}.select.valueKey<${extras.valueKey}>` +\n\t\t\t\t\t\t\t` does not exist in option ${JSON.stringify(option)}`,\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\toption.__valueKey = \"value\" in option ? \"value\" : Object.keys(option)[0];\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!((option.__labelKey ?? extras.labelKey) in option)) {\n\t\t\t\tif (extras.throwOnKeyNotFound) {\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t`qform: ${$next.__internal.key}.select.labelKey<${extras.labelKey}>` +\n\t\t\t\t\t\t\t` does not exist in option ${JSON.stringify(option)}`,\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\toption.__labelKey = \"label\" in option ? \"label\" : (option.__valueKey ?? extras.valueKey);\n\t\t\t\t}\n\t\t\t}\n\t\t\t// validation\n\t\t\tconst found = result.find((other, idx, arr) => {\n\t\t\t\tif (other == null) {\n\t\t\t\t\tother = { label: \"unknown\", value: \"unknown\" } as any;\n\t\t\t\t} else if (typeof option === \"string\" || typeof option === \"number\") {\n\t\t\t\t\tother = { label: option, value: option } as any;\n\t\t\t\t}\n\t\t\t\tarr[idx] = other;\n\t\t\t\treturn (\n\t\t\t\t\tother[other.__valueKey ?? extras.valueKey] ===\n\t\t\t\t\toption[option.__valueKey ?? extras.valueKey]\n\t\t\t\t);\n\t\t\t});\n\t\t\toption.__selected = found != null;\n\t\t\tif (option.__selected === true) {\n\t\t\t\textras.current.push(i);\n\t\t\t\t// result.push(option);\n\t\t\t}\n\t\t\t// confirmation\n\t\t\textras.options[i] = option;\n\t\t}\n\t} else {\n\t\textras.options = [];\n\t}\n\n\t$next.extras = (extras ?? {}) as any;\n\n\t// for that one case of not having options yet value is updated\n\tif (result.length > 0 && extras.current.length <= 0) {\n\t\treturn null;\n\t}\n\n\t// user wants this value to be there\n\tif (!preprocessValue) {\n\t\t// TODO: lookup user value update in the selections array\n\t\treturn result.length <= 0 ? undefined : multiple ? result : result?.[0];\n\t}\n\treturn result.length <= 0 ? undefined : multiple ? result : result?.[0];\n\n\t//\n\t// if (!multiple) {\n\t// \t// const prev_value = next.values[key] as string;\n\t// \tif (value !== PLACEHOLDERS.selectButton.value && value !== PLACEHOLDERS.select.value) {\n\t// \t\tresult = value;\n\t// \t}\n\t// } else {\n\t// \t// const prev_value = next.values[key] as string[];\n\t// \tresult = [];\n\t// \t// const options = el != null && el?.options;\n\t// \t// if (options) {\n\t// \t// \tfor (let i = 0, iLen = options.length; i < iLen; i++) {\n\t// \t// \t\tconst opt = options[i];\n\n\t// \t// \t\tif (opt.selected) {\n\t// \t// \t\t\tlet value = opt.value;\n\t// \t// \t\t\tif (value !== PLACEHOLDERS.selectButton.value && value !== PLACEHOLDERS.select.value) {\n\t// \t// \t\t\t\tvalue = opt.text;\n\t// \t// \t\t\t\tresult.push(value);\n\t// \t// \t\t\t}\n\t// \t// \t\t}\n\t// \t// \t}\n\t// \t// }\n\t// }\n}\n","// https://dev.to/milliemolotov/how-to-retrieve-values-from-all-types-of-html-inputs-in-javascript-3143\nimport type { Field, Form, FunctionProps } from \"../../../_model\";\nimport { processCheckboxValue } from \"./checkbox\";\nimport { processFileValue } from \"./file\";\nimport { processNumberValue } from \"./number\";\nimport { processTelValue } from \"./tel\";\nimport { processDateValue } from \"./date\";\nimport { processSelectValue } from \"./select\";\n\nexport function processValue<S extends Field.Setup, O extends Form.Options>(\n\tprops: FunctionProps.Field<S, O>,\n\tprocessor: FunctionProps.FieldProcessor<S, O>,\n) {\n\tconst { setup } = props;\n\tconst { el, manualUpdate } = processor;\n\n\t//\n\tlet value = null as any;\n\tif (setup.type.startsWith(\"select\")) {\n\t\tvalue = processSelectValue(props as any, processor as any);\n\t} else if (setup.type === \"checkbox\") {\n\t\tvalue = processCheckboxValue(props as any, processor as any);\n\t} else if (setup.type === \"file\") {\n\t\tvalue = processFileValue(props as any, processor as any);\n\t} else if (setup.type === \"number\") {\n\t\tvalue = processNumberValue(props, processor);\n\t} else if (setup.type === \"tel\") {\n\t\tvalue = processTelValue(props, processor);\n\t} else if (setup.type === \"date\") {\n\t\tvalue = processDateValue(props as any, processor as any);\n\t} else {\n\t\tvalue = manualUpdate === true ? processor.value : el?.value;\n\t}\n\n\t// check empty strings\n\tif (value === \"\") {\n\t\tif (setup.type !== \"checkbox\") {\n\t\t\tvalue = null;\n\t\t}\n\t}\n\n\treturn value;\n}\n","import { onSet } from \"@qundus/qstate\";\nimport type { Addon, Field, Form, FunctionProps } from \"../../_model\";\nimport { isFieldIncomplete } from \"../checks/is-field-incomplete\";\nimport { processValue } from \"../processors/value\";\nimport { FIELD } from \"../../const\";\nimport { isServerSide } from \"@qundus/qstate/checks\";\n\nconst REFRESH = \"__REFRESH\";\nexport function changeCycle<\n\tS extends Field.Setup,\n\tO extends Form.Options,\n\tG extends Form.Store<any, O>,\n>(props: FunctionProps.Field<S, O>, formStore: G | undefined, update: Addon.FieldUpdate<S, O>) {\n\tconst { key, setup, options, store } = props;\n\t// do startup checks for input types like file\n\t//\n\t// formStore?.listen((form) => {\n\t// \tconst state = store.get();\n\t// \tif (form.status === \"submit\") {\n\t// \t\tif (state.cycle !== \"submit\") {\n\t// \t\t\tmark.cycle.submit();\n\t// \t\t}\n\t// \t} else {\n\t// \t\tif (state.cycle === \"submit\") {\n\t// \t\t\tmark.cycle.change();\n\t// \t\t}\n\t// \t}\n\t// });\n\tonSet(store, async (payload) => {\n\t\tconst $next = payload.newValue;\n\t\t// TODO: check if this is causing the radio to not update on some jumping back\n\t\t// and fouth between options too fast sometimes\n\t\tif ($next.__internal[REFRESH]) {\n\t\t\tdelete $next.__internal[REFRESH];\n\t\t\treturn $next;\n\t\t} else if ($next.event.CYCLE > FIELD.CYCLE.IDLE) {\n\t\t\t// console.log(\"current cycle :: \", $next.event.CYCLE);\n\t\t\treturn $next;\n\t\t}\n\t\tconst _DOM = $next.event.DOM;\n\t\tconst _MUTATE = $next.event.MUTATE;\n\t\t// const _CYCLE = $next.event.CYCLE;\n\t\tconst MANUAL_UPDATE = $next.__internal.manual;\n\t\tconst PREPROCESS_VALUE = ($next.__internal.preprocess ??\n\t\t\t$next.element.preprocessValue) as boolean;\n\t\tconst VMCM = (MANUAL_UPDATE ? $next.element.vmcm : \"normal\") as Field.VMCM;\n\t\tconst NO_VALIDATION = $next.__internal.noValidation ?? false;\n\t\tconst SHOULD_VALIDATE =\n\t\t\t_MUTATE === FIELD.MUTATE.VALUE ||\n\t\t\t_MUTATE === FIELD.MUTATE.ELEMENT ||\n\t\t\t_DOM === FIELD.DOM.CLICK_OPTION ||\n\t\t\t_DOM === FIELD.DOM.CLICK_DATE_CELL ||\n\t\t\t_MUTATE === FIELD.MUTATE.EXTRAS ||\n\t\t\t_MUTATE === FIELD.MUTATE.__EXTRAS;\n\t\t//\n\t\tconst prev = store.value;\n\t\tconst form = formStore?.get();\n\t\tconst oldValue = store.value.value;\n\n\t\t// first reset necessaries\n\t\t$next.__internal.key = key;\n\t\t$next.__internal.preprocess = undefined;\n\t\t$next.__internal.manual = false;\n\t\t$next.__internal.noValidation = undefined;\n\n\t\t// pre user intervention\n\t\tif (!prev.element.focused && $next.element.focused) {\n\t\t\t$next.element.entered = true;\n\t\t} else {\n\t\t\t$next.element.entered = false;\n\t\t}\n\n\t\tif (prev.element.focused && !$next.element.focused) {\n\t\t\t$next.element.left = true;\n\t\t} else {\n\t\t\t$next.element.left = false;\n\t\t}\n\n\t\tif (SHOULD_VALIDATE) {\n\t\t\t$next.value = processValue(props, {\n\t\t\t\t$next,\n\t\t\t\tel: $next.event.ev,\n\t\t\t\tmanualUpdate: MANUAL_UPDATE,\n\t\t\t\tpreprocessValue: PREPROCESS_VALUE,\n\t\t\t\tvalue: $next.value,\n\t\t\t});\n\t\t\t// console.log(\"processing updated value :: \", $next.value);\n\t\t}\n\n\t\ttry {\n\t\t\tconst onchangeprops = {\n\t\t\t\tform,\n\t\t\t\tsetup,\n\t\t\t\tprev: prev as any,\n\t\t\t\t$next: $next as any,\n\t\t\t\tupdate: update as any,\n\t\t\t\tisServerSide,\n\t\t\t};\n\t\t\t// global onchange field if any\n\t\t\tif (options?.fieldsOnChange != null && typeof options?.fieldsOnChange === \"function\") {\n\t\t\t\tawait options.fieldsOnChange(onchangeprops);\n\t\t\t}\n\t\t\tif (typeof setup?.onChange === \"function\") {\n\t\t\t\tawait setup?.onChange?.(onchangeprops);\n\t\t\t} else {\n\t\t\t\tif (setup.onChange != null) {\n\t\t\t\t\tfor (const processor of setup.onChange) {\n\t\t\t\t\t\tawait processor?.(onchangeprops);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (err: any) {\n\t\t\tconsole.error(\n\t\t\t\t`qform: fatal error occured in field.processState :: abort set to <${setup.onChangeException}> :: exception :: `,\n\t\t\t\terr,\n\t\t\t);\n\t\t\tif (setup.onChangeException) {\n\t\t\t\tpayload.abort();\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\t// validate on update of type value\n\t\tif (\n\t\t\tSHOULD_VALIDATE &&\n\t\t\t!NO_VALIDATION &&\n\t\t\t$next.event.MUTATE !== FIELD.MUTATE.__ABORT_VALIDATION\n\t\t) {\n\t\t\t$next.errors = [];\n\t\t\t// first check for user validation functions\n\t\t\tif (setup.validate != null) {\n\t\t\t\tif (!MANUAL_UPDATE || (MANUAL_UPDATE && VMCM === \"normal\")) {\n\t\t\t\t\tconst validations = Array.isArray(setup.validate) ? setup.validate : [setup.validate];\n\t\t\t\t\tfor (const validation of validations) {\n\t\t\t\t\t\tconst err = validation({ prev, form, value: $next.value, extras: $next.extras });\n\t\t\t\t\t\tif (Array.isArray(err)) {\n\t\t\t\t\t\t\tif (err.length < 0) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tfor (const error of err) {\n\t\t\t\t\t\t\t\tif (error != null) {\n\t\t\t\t\t\t\t\t\t$next.errors.push(error);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif (err != null) {\n\t\t\t\t\t\t\t\t$next.errors.push(err);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t// if ($next.errors.length <= 0) {\n\t\t\t\t\t// \t$next.errors = undefined;\n\t\t\t\t\t// }\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t/////         PROCESS CONDITION         \\\\\\\\\\\n\t\t\t// we have errors\n\t\t\tif ($next.errors.length > 0) {\n\t\t\t\t// process condition\n\t\t\t\tif (VMCM === \"force-valid\") {\n\t\t\t\t\t$next.condition.error = false;\n\t\t\t\t\t$next.errors = undefined;\n\t\t\t\t} else if ($next.element.required) {\n\t\t\t\t\t$next.condition.error = \"validation\";\n\t\t\t\t} else {\n\t\t\t\t\t$next.condition.error = \"optional\";\n\t\t\t\t}\n\n\t\t\t\t// process value\n\t\t\t\tif (options?.preventErroredValues) {\n\t\t\t\t\t$next.value = oldValue;\n\t\t\t\t} else {\n\t\t\t\t\t$next.condition.updated = true;\n\t\t\t\t\t$next.condition.by = MANUAL_UPDATE ? \"manual\" : \"user\";\n\t\t\t\t}\n\n\t\t\t\t// finally, set validity\n\t\t\t\t$next.condition.valid = false;\n\t\t\t}\n\n\t\t\t// we don't have errors\n\t\t\tif ($next.errors != null && $next.errors.length <= 0) {\n\t\t\t\t// process condition\n\t\t\t\tif ($next.element.disabled) {\n\t\t\t\t\t$next.condition.error = false;\n\t\t\t\t} else if ($next.element.required) {\n\t\t\t\t\t// check required status\n\t\t\t\t\tif (VMCM === \"force-valid\") {\n\t\t\t\t\t\t$next.condition.error = false;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst incomplete = isFieldIncomplete($next.value, $next);\n\t\t\t\t\t\t$next.condition.error = incomplete ? \"incomplete\" : false;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t$next.condition.error = false;\n\t\t\t\t}\n\n\t\t\t\t// process value\n\t\t\t\t$next.errors = undefined;\n\t\t\t\t$next.condition.updated = true;\n\t\t\t\t$next.condition.by = MANUAL_UPDATE ? \"manual\" : \"user\";\n\n\t\t\t\t// finally, set validity\n\t\t\t\t$next.condition.valid = $next.condition.error ? false : true;\n\t\t\t}\n\t\t}\n\n\t\t// for some reason the effect of the form doesn't run properly so i have to rerun it by aborting and sending\n\t\t// another store update\n\t\tpayload.abort();\n\t\t$next.__internal[REFRESH] = true;\n\t\tstore.set($next);\n\t\treturn $next;\n\n\t\t// many to one store update could cause race condition, don't like it :(\n\t\t// if (form == null || formStore == null) {\n\t\t// \treturn;\n\t\t// }\n\t\t// update form\n\t\t// const nextForm = { ...formStore.get() };\n\t\t// nextForm.conditions[key] = $next.condition;\n\t\t// nextForm.extras[key] = $next.extras;\n\t\t// nextForm.values[key] = $next.value;\n\t\t// formStore.set(nextForm);\n\t});\n}\n","import type { Field, Form, FunctionProps, Render } from \"../../_model\";\nimport { FIELD } from \"../../const\";\n\nexport function renderAttributesInput<\n\tS extends Field.Setup,\n\tO extends Form.Options,\n\tA extends Render.Attributes.Type,\n>(basic: FunctionProps.Field<S, O>, props: FunctionProps.RenderAttributes<S, O, A>) {\n\tconst { key, options, store, setup } = basic;\n\tconst { attrType, reactive } = props;\n\tconst state = reactive;\n\tconst attrs = {\n\t\tid: state?.element?.label ?? setup.label,\n\t\ttype: state?.element.hidden ? \"hidden\" : setup.type,\n\t\tname: state.__internal.key,\n\t\tmultiple: state?.element.multiple,\n\t\trequired: state?.element.required,\n\t\tdisabled: state?.element.disabled,\n\t\tplaceholder: state?.element.placeholder,\n\t\t[attrType !== \"vdom\" ? \"autocomplete\" : \"autoComplete\"]: \"off\",\n\t\t[attrType !== \"vdom\" ? \"onfocus\" : \"onFocus\"]: (event: FocusEvent) => {\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopImmediatePropagation();\n\t\t\tevent.stopPropagation();\n\t\t\t//\n\t\t\tconst next = { ...store.get() };\n\t\t\tnext.element.focused = true;\n\t\t\tnext.element.visited = true;\n\t\t\tnext.__internal.manual = false;\n\t\t\t//\n\t\t\tnext.event.DOM = FIELD.DOM.FOCUS;\n\t\t\tnext.event.MUTATE = FIELD.MUTATE.IDLE;\n\t\t\tnext.event.ev = {\n\t\t\t\tvalue: (event.target as any).value,\n\t\t\t\tchecked: (event.target as any).checked,\n\t\t\t\tfiles: (event.target as any).files,\n\t\t\t};\n\n\t\t\tstore.set(next);\n\t\t},\n\t\t[attrType !== \"vdom\" ? \"onblur\" : \"onBlur\"]: (event: Event) => {\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopImmediatePropagation();\n\t\t\tevent.stopPropagation();\n\t\t\tconst next = { ...store.get() };\n\t\t\tnext.element.focused = false;\n\t\t\tnext.element.visited = true;\n\t\t\tnext.__internal.manual = false;\n\t\t\t//\n\t\t\tnext.event.DOM = FIELD.DOM.BLUR;\n\t\t\tnext.event.MUTATE = FIELD.MUTATE.IDLE;\n\t\t\tnext.event.ev = undefined;\n\t\t\tstore.set(next);\n\t\t},\n\t} as any;\n\n\t// check if value should be added to object\n\tif (setup.type === \"checkbox\") {\n\t\t// attrs.checked = (state.extras as any).checked ? true : false;\n\t} else {\n\t\tattrs.value = state?.value ?? \"\";\n\t}\n\n\t// type\n\t// event listener id\n\tlet listenerId = undefined as string | undefined;\n\tif (state.element.validateOn === \"change\") {\n\t\tlistenerId = attrType !== \"vdom\" ? \"onchange\" : \"onChange\";\n\t} else {\n\t\tlistenerId = attrType !== \"vdom\" ? \"oninput\" : \"onInput\";\n\t}\n\tattrs[listenerId] = (event: Event) => {\n\t\tevent.preventDefault();\n\t\tevent.stopImmediatePropagation();\n\t\tevent.stopPropagation();\n\t\tconst next = { ...store.get() };\n\t\tif (next.element.disabled) {\n\t\t\treturn;\n\t\t}\n\t\tnext.__internal.manual = false;\n\t\t//\n\t\tnext.event.DOM = FIELD.DOM.IDLE; // questionable?\n\t\tnext.event.MUTATE = FIELD.MUTATE.VALUE;\n\t\tconst value = (event.target as any).value;\n\t\tnext.event.ev = {\n\t\t\tvalue: value === \"\" ? undefined : value,\n\t\t\tchecked: (event.target as any).checked,\n\t\t\tfiles: (event.target as any).files,\n\t\t};\n\t\tstore.set(next);\n\t};\n\n\t// process input\n\ttype PP = Parameters<Field.OnRender<Field.Type>>[0];\n\tconst processProps: PP = { key, data: reactive, attrType, attrs, attrFor: \"input\" };\n\toptions?.fieldsOnRender?.(processProps);\n\tsetup.onRender?.(processProps);\n\n\t// mark rendered\n\tif (state.event.RENDER === FIELD.RENDER.INIT) {\n\t\tconst next = { ...store.get() };\n\t\tnext.event.RENDER = FIELD.RENDER.READY;\n\t\tnext.event.MUTATE = FIELD.MUTATE.__RENDER;\n\t\tstore.set(next);\n\t}\n\n\t// console.log(\"element input :: \", key, \" :: \", result.value);\n\treturn attrs as Render.Attributes.Input<S, O, A>;\n}\n","import type { Field, Form, FunctionProps, Render } from \"../../_model\";\nimport { FIELD } from \"../../const\";\n\nexport function renderAttributesSelectTrigger<\n\tS extends Field.Setup,\n\tO extends Form.Options,\n\tA extends Render.Attributes.Type,\n>(basic: FunctionProps.Field<S, O>, props: FunctionProps.RenderAttributes<S, O, A>) {\n\tconst { key, options, store, setup } = basic;\n\tconst { attrType, reactive } = props;\n\tconst state = reactive;\n\tconst attrs = {\n\t\tid: state?.element?.label ?? setup.label,\n\t\t// type: state?.element.hidden ? \"hidden\" : setup.type,\n\t\tname: state.__internal.key,\n\t\t// multiple: state?.element.multiple,\n\t\t// required: state?.element.required,\n\t\t// disabled: state?.element.disabled,\n\t\t// [attrType !== \"vdom\" ? \"autocomplete\" : \"autoComplete\"]: \"off\",\n\t\t[attrType !== \"vdom\" ? \"onclick\" : \"onClick\"]: function onclick(event: PointerEvent) {\n\t\t\tevent.preventDefault();\n\t\t\tconst next = { ...store.get() };\n\t\t\tif (next.element.disabled) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// detect if first time click\n\t\t\tif (!next.element.focused) {\n\t\t\t\tconst element = event.target as HTMLElement;\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t// Attach click listener to document\n\t\t\t\t\tdocument.addEventListener(\"click\", function outsideClick(e) {\n\t\t\t\t\t\tconst target = e.target as HTMLElement;\n\t\t\t\t\t\tconst name = target?.getAttribute(\"name\");\n\t\t\t\t\t\tif (!element.contains(target)) {\n\t\t\t\t\t\t\tif (name && name.startsWith(state.__internal.key)) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// Remove the listener after detecting outside click\n\t\t\t\t\t\t\tdocument.removeEventListener(\"click\", outsideClick);\n\t\t\t\t\t\t\tconst next = { ...store.get() };\n\t\t\t\t\t\t\tnext.element.focused = false;\n\t\t\t\t\t\t\tnext.element.visited = true;\n\t\t\t\t\t\t\tnext.__internal.manual = false;\n\t\t\t\t\t\t\t//\n\t\t\t\t\t\t\tnext.event.DOM = FIELD.DOM.BLUR;\n\t\t\t\t\t\t\tnext.event.MUTATE = FIELD.MUTATE.IDLE;\n\t\t\t\t\t\t\tnext.event.ev = undefined;\n\t\t\t\t\t\t\tstore.set(next);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}, 0);\n\t\t\t}\n\t\t\t//\n\t\t\tconst pointer = event.pointerType as \"mouse\" | \"touch\";\n\t\t\tnext.element.focused = true;\n\t\t\tnext.element.visited = true;\n\t\t\tnext.__internal.manual = false;\n\t\t\t//\n\t\t\t// const ischildclick = event.target !== event.currentTarget;\n\t\t\t// console.log(\"is child click :: \", ischildclick);\n\t\t\tnext.event.DOM = FIELD.DOM.CLICK;\n\t\t\tnext.event.MUTATE = FIELD.MUTATE.IDLE;\n\t\t\tnext.event.ev = {\n\t\t\t\tvalue: (event.target as any).value,\n\t\t\t\t// checked: event.target.value,\n\t\t\t};\n\t\t\tstore.set(next);\n\t\t},\n\t} as any;\n\n\t// process trigger\n\ttype PP = Parameters<Field.OnRender<Field.Type>>[0];\n\tconst processProps: PP = { key, data: reactive, attrType, attrs, attrFor: \"trigger\" };\n\n\toptions?.fieldsOnRender?.(processProps);\n\tsetup.onRender?.(processProps);\n\n\t// mark rendered\n\tif (state.event.RENDER === FIELD.RENDER.INIT) {\n\t\tconst next = { ...store.get() };\n\t\tnext.event.RENDER = FIELD.RENDER.READY;\n\t\tnext.event.MUTATE = FIELD.MUTATE.__RENDER;\n\t\tstore.set(next);\n\t}\n\treturn attrs as Render.Attributes.SelectTrigger<S, O, A>;\n}\n","import type { Field, Form, FunctionProps, Render } from \"../../_model\";\nimport { FIELD } from \"../../const\";\n\nexport function renderAttributesSelectOption<\n\tS extends Field.Setup,\n\tO extends Form.Options,\n\tA extends Render.Attributes.Type,\n>(\n\tbasic: FunctionProps.Field<S, O>,\n\tprops: FunctionProps.RenderAttributes<S, O, A> & { optionValue: any },\n) {\n\tconst { key, options, store, setup } = basic as unknown as FunctionProps.Field<\n\t\tField.Setup<\"select\" | \"select.radio\">,\n\t\tany\n\t>;\n\tconst { attrType, reactive, optionValue: _optionValue } = props;\n\tconst state = reactive as unknown as Field.StoreObject<Field.Setup<\"select\" | \"select.radio\">>;\n\t// const extras = (state.extras ?? {}) as Extras.SelectOut<S>;\n\t// prepare option value\n\tlet option = _optionValue;\n\tlet name = \"\";\n\tif (option === undefined) {\n\t\toption = { label: \"unknown\", value: \"unknown\" };\n\t} else if (typeof option === \"string\" || typeof option === \"number\") {\n\t\toption = { label: option, value: option };\n\t}\n\tif (!(state.extras.valueKey in option) && option.__valueKey == null) {\n\t\tif (state.extras.throwOnKeyNotFound) {\n\t\t\tthrow new Error(\n\t\t\t\t`qform: ${key}.select.valueKey<${state.extras.valueKey}>` +\n\t\t\t\t\t` does not exist in option ${JSON.stringify(option)}`,\n\t\t\t);\n\t\t} else {\n\t\t\toption.__valueKey = \"value\" in option ? \"value\" : Object.keys(option)[0];\n\t\t}\n\t}\n\t// create option name\n\ttry {\n\t\tconst postfix = String(option[option.__valueKey ?? state.extras.valueKey]);\n\t\tname = state.__internal.key + \"-\" + (typeof postfix === \"string\" ? postfix : \"option\");\n\t} catch (e: any) {\n\t\tname = state.__internal.key + \"-option\";\n\t}\n\n\t//\n\tconst attrs = {\n\t\tname, // affects target ability to detect onblur, edit with care\n\t\tid: name + \"-id\",\n\t\t// for all select options type\n\t\tchecked: option.__selected ?? false,\n\t\t[attrType !== \"vdom\" ? \"onclick\" : \"onClick\"]: (event: PointerEvent) => {\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopImmediatePropagation();\n\t\t\tevent.stopPropagation();\n\t\t\tconst next = { ...store.get() };\n\t\t\tif (next.element.disabled) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t//\n\t\t\tconst valueKey = next.extras.valueKey ?? \"value\";\n\t\t\tconst labelKey = next.extras.valueKey ?? \"label\";\n\t\t\tconst optionValueKey = option.__valueKey;\n\t\t\t// dynamic check\n\t\t\tif (next.extras?.dynamic) {\n\t\t\t\tif (next.extras.options == null) {\n\t\t\t\t\tnext.extras.options = [];\n\t\t\t\t}\n\t\t\t\tnext.extras.valueKey = valueKey;\n\t\t\t\tnext.extras.labelKey = labelKey;\n\t\t\t\tconst item = next.extras?.options?.find(\n\t\t\t\t\t(item) => item[item.__valueKey ?? valueKey] === option[optionValueKey ?? valueKey],\n\t\t\t\t);\n\t\t\t\tif (item == null) {\n\t\t\t\t\tnext.extras.options?.push(option);\n\t\t\t\t}\n\t\t\t}\n\t\t\t//\n\t\t\tif (Array.isArray(next.value)) {\n\t\t\t\tconst item = next.value.find(\n\t\t\t\t\t(item) => item[item.__valueKey ?? valueKey] === option[optionValueKey ?? valueKey],\n\t\t\t\t);\n\t\t\t\tif (item == null) {\n\t\t\t\t\tnext.value.push(option);\n\t\t\t\t} else {\n\t\t\t\t\tnext.value = (next.value as any[]).filter(\n\t\t\t\t\t\t(item) => item[item.__valueKey ?? valueKey] !== option[optionValueKey ?? valueKey],\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} else if (next.value == null) {\n\t\t\t\tnext.value = next.element.multiple ? [option] : option;\n\t\t\t} else {\n\t\t\t\tconst same_same =\n\t\t\t\t\tnext.value[next.value.__valueKey ?? valueKey] === option[optionValueKey ?? valueKey];\n\t\t\t\tif (same_same && !next.extras.removeOnReselect) {\n\t\t\t\t\t// no need for any further updates;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tnext.value = same_same ? undefined : option;\n\t\t\t}\n\n\t\t\t// special handling for radio buttons\n\t\t\tif (setup.type === \"select.radio\") {\n\t\t\t\tif (!next.element.focused) {\n\t\t\t\t\tconst element = event.target as HTMLElement;\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t// Attach click listener to document\n\t\t\t\t\t\tdocument.addEventListener(\"click\", function outsideClick(event) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t\tconst target = event.target as HTMLElement;\n\t\t\t\t\t\t\tconst name = target?.getAttribute(\"name\");\n\t\t\t\t\t\t\t// TODO: fix condition as two options can be under the same element somehow\n\t\t\t\t\t\t\t// causing blur instead of selection for the other option\n\t\t\t\t\t\t\tif (!element.contains(target)) {\n\t\t\t\t\t\t\t\tif (name && name.startsWith(state.__internal.key)) {\n\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// Remove the listener after detecting outside click\n\t\t\t\t\t\t\t\t// console.log(\"removing listener \");\n\t\t\t\t\t\t\t\tdocument.removeEventListener(\"click\", outsideClick);\n\t\t\t\t\t\t\t\tconst next = { ...store.get() };\n\t\t\t\t\t\t\t\tnext.element.focused = false;\n\t\t\t\t\t\t\t\tnext.element.visited = true;\n\t\t\t\t\t\t\t\tnext.__internal.manual = false;\n\t\t\t\t\t\t\t\t//\n\t\t\t\t\t\t\t\tnext.event.DOM = FIELD.DOM.BLUR;\n\t\t\t\t\t\t\t\tnext.event.MUTATE = FIELD.MUTATE.IDLE;\n\t\t\t\t\t\t\t\tnext.event.ev = undefined;\n\t\t\t\t\t\t\t\tstore.set(next);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}, 50);\n\t\t\t\t}\n\t\t\t\tnext.element.focused = true;\n\t\t\t\tnext.element.visited = true;\n\t\t\t}\n\n\t\t\tnext.__internal.manual = false;\n\t\t\t//\n\t\t\tnext.event.DOM = FIELD.DOM.CLICK_OPTION;\n\t\t\tnext.event.MUTATE = FIELD.MUTATE.VALUE;\n\t\t\tnext.event.ev = {\n\t\t\t\tvalue: (event.target as any).value,\n\t\t\t};\n\t\t\tstore.set(next);\n\t\t},\n\t} as any;\n\n\t// if radio\n\tif (setup.type === \"select.radio\") {\n\t\tattrs.type = \"radio\";\n\t\tattrs.required = state?.element.required;\n\t\tattrs.disabled = state?.element.disabled;\n\t}\n\n\t// process trigger\n\ttype PP = Parameters<Field.OnRender<Field.Type>>[0];\n\tconst processProps: PP = { key, data: reactive, attrType, attrs, attrFor: \"option\" };\n\n\toptions?.onFieldRender?.(processProps);\n\tsetup.onRender?.(processProps);\n\n\t// mark rendered\n\tif (state.event.RENDER === FIELD.RENDER.INIT) {\n\t\tconst next = { ...store.get() };\n\t\tnext.event.RENDER = FIELD.RENDER.READY;\n\t\tnext.event.MUTATE = FIELD.MUTATE.__RENDER;\n\t\tstore.set(next);\n\t}\n\treturn attrs as Render.Attributes.SelectOption<S, O, A>;\n}\n","// import { isServerSide } from \"@qundus/qstate/checks\";\nimport type { Field, Form, FunctionProps, Render } from \"../../_model\";\nimport type { Extras } from \"../../_model\";\nimport { FIELD } from \"../../const\";\nimport { formatDate, formatTime12h, formatTime24h } from \"../helpers/date/parse\";\nimport { nextMode } from \"../helpers/date/mode\";\n\n//\nimport DATE from \"../helpers/date/DATE\";\nimport TIME from \"../helpers/date/TIME\";\nimport YEAR from \"../helpers/date/YEAR\";\nimport MONTH from \"../helpers/date/MONTH\";\nimport DAY from \"../helpers/date/DAY\";\nimport HOUR from \"../helpers/date/HOUR\";\nimport MINUTE from \"../helpers/date/MINUTE\";\nimport SECOND from \"../helpers/date/SECOND\";\n\nexport type DateAttributeCells = {\n\tYEAR?: Extras.Date.CellDate;\n\tMONTH?: Extras.Date.CellDate;\n\tDAY?: Extras.Date.CellDate;\n\tHOUR?: Extras.Date.CellTime;\n\tMINUTE?: Extras.Date.CellTime;\n\tSECOND?: Extras.Date.CellTime;\n};\nexport function renderAttributesDateCell<\n\tS extends Field.Setup,\n\tO extends Form.Options,\n\tA extends Render.Attributes.Type,\n>(\n\tbasic: FunctionProps.Field<S, O>,\n\tprops: FunctionProps.RenderAttributes<S, O, A>,\n\t_cells: Extras.Date.CellDate | Extras.Date.CellTime | DateAttributeCells,\n) {\n\tconst { key, options, store, setup } = basic;\n\tconst { attrType, reactive } = props;\n\tconst state = reactive as unknown as Field.StoreObject<Field.Setup<\"date\">>;\n\tconst id = (state?.element?.label ?? setup.label) + \"body.cell.id\";\n\tconst name = state.__internal.key + \"body.cell\";\n\tconst attrs = {\n\t\tid,\n\t\tname,\n\t\t[attrType !== \"vdom\" ? \"onclick\" : \"onClick\"]: function onclick(event: PointerEvent) {\n\t\t\tevent.preventDefault();\n\t\t\tconst cells = \"modeName\" in _cells ? { [_cells.modeName]: _cells } : _cells;\n\t\t\t// const dayCells =\n\t\t\tif (cells.DAY != null && cells.DAY.isOtherMonth) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst next = { ...store.get() } as Field.StoreObject<Field.Setup<\"date\">>;\n\t\t\tconst mode = next.extras.mode;\n\t\t\tconst multiple = next.element.multiple;\n\t\t\tconst multipleTime = next.extras.multipleTime;\n\t\t\tnext.element.focused = true;\n\t\t\tnext.element.visited = true;\n\n\t\t\t// date\n\t\t\tconst date = {\n\t\t\t\tvalue: \"\",\n\t\t\t\tupdate: false,\n\t\t\t};\n\n\t\t\tif (mode.applyDateName != null) {\n\t\t\t\tconst year = cells.YEAR?.value ?? `${next.extras.YEAR.active}`;\n\t\t\t\tconst month = cells.MONTH?.value ?? `${next.extras.MONTH.active}`;\n\t\t\t\tconst day = cells.DAY?.value ?? `${next.extras.DAY.active}`;\n\t\t\t\tYEAR.update(cells.YEAR?.valueNumber, next.extras);\n\t\t\t\tMONTH.update(cells.MONTH?.valueNumber, next.extras);\n\t\t\t\tDAY.update(cells.DAY?.valueNumber, next.extras);\n\t\t\t\tdate.value = formatDate({ year, month, day }, next.extras.format) ?? \"\";\n\t\t\t\tif (cells[mode.applyDateName] != null) {\n\t\t\t\t\tdate.update = true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// time\n\t\t\tconst time = {\n\t\t\t\tvalue: \"\",\n\t\t\t\tupdate: false,\n\t\t\t};\n\t\t\tif (mode.applyTimeName != null) {\n\t\t\t\tconst hour = cells.HOUR?.value ?? `${next.extras.HOUR.active}`;\n\t\t\t\tconst minute = cells.MINUTE?.value ?? `${next.extras.MINUTE.active}`;\n\t\t\t\tconst second = cells.SECOND?.value ?? `${next.extras.SECOND.active}`;\n\t\t\t\t//\n\t\t\t\tHOUR.update(cells.HOUR?.valueNumber, next.extras);\n\t\t\t\tMINUTE.update(cells.MINUTE?.valueNumber, next.extras);\n\t\t\t\tSECOND.update(cells.SECOND?.valueNumber, next.extras);\n\t\t\t\tif (cells[mode.applyTimeName] != null) {\n\t\t\t\t\ttime.update = true;\n\t\t\t\t\ttime.value =\n\t\t\t\t\t\t(next.extras.timeFormat === \"12h\"\n\t\t\t\t\t\t\t? formatTime12h({\n\t\t\t\t\t\t\t\t\thour,\n\t\t\t\t\t\t\t\t\tminute,\n\t\t\t\t\t\t\t\t\tsecond,\n\t\t\t\t\t\t\t\t\tperiod: next.extras.TIME.activePeriod as any,\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t: formatTime24h({ hour, minute, second })) ?? \"\";\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//\n\t\t\tconst current = next.value;\n\t\t\tlet split: string[] = multiple\n\t\t\t\t? (current?.split(next.extras.multipleDateSeparator) ?? [])\n\t\t\t\t: current == null\n\t\t\t\t\t? []\n\t\t\t\t\t: [current];\n\t\t\tlet idx = split.findIndex((item) => item.includes(date.value));\n\n\t\t\t// date\n\t\t\tif (idx < 0) {\n\t\t\t\t// new one\n\t\t\t\tif (multiple) idx = split.push(date.value) - 1;\n\t\t\t\telse {\n\t\t\t\t\tidx = 0;\n\t\t\t\t\tsplit[0] = date.value;\n\t\t\t\t}\n\n\t\t\t\tif (!date.update) {\n\t\t\t\t\tnext.extras.mode = nextMode(next.extras);\n\t\t\t\t\tnext.event.DOM = FIELD.DOM.CLICK;\n\t\t\t\t\tnext.event.MUTATE = FIELD.MUTATE.__EXTRAS;\n\t\t\t\t\tstore.set(next as any);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} else if (date.update) {\n\t\t\t\t// exists\n\t\t\t\tsplit = split.filter((item) => !item.includes(date.value));\n\t\t\t\tidx = -1;\n\t\t\t}\n\t\t\t//\n\n\t\t\t// time\n\t\t\tif (idx >= 0) {\n\t\t\t\tnext.extras.mode = nextMode(next.extras);\n\t\t\t\tlet times = split[idx].replace(date.value, \"\").trim() as string | null;\n\t\t\t\ttimes = times == null || times === \"\" || times.length < 1 ? null : times;\n\t\t\t\tlet timeSplit = multipleTime\n\t\t\t\t\t? (times?.split(next.extras.multipleTimeSeparator) ?? [])\n\t\t\t\t\t: times == null || times === \"\"\n\t\t\t\t\t\t? []\n\t\t\t\t\t\t: [times];\n\t\t\t\tconst timeIdx = timeSplit.findIndex((item) => item.includes(time.value));\n\t\t\t\tif (timeIdx < 0) {\n\t\t\t\t\ttimeSplit.push(time.value);\n\t\t\t\t} else if (time.update) {\n\t\t\t\t\ttimeSplit = timeSplit.filter((item) => !item.includes(time.value));\n\t\t\t\t}\n\t\t\t\t//\n\t\t\t\tconst wow = timeSplit.join(next.extras.multipleTimeSeparator);\n\t\t\t\tif (time.update) {\n\t\t\t\t\tsplit[idx] = `${date.value} ${multipleTime ? wow : (time.value ?? \"\")}`.trim();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//\n\t\t\tnext.event.DOM = FIELD.DOM.CLICK;\n\t\t\tnext.event.MUTATE = FIELD.MUTATE.VALUE;\n\t\t\t// console.log(\"date :: \", split);\n\t\t\tnext.event.ev = {\n\t\t\t\tvalue:\n\t\t\t\t\tsplit.length === 0\n\t\t\t\t\t\t? null\n\t\t\t\t\t\t: multiple\n\t\t\t\t\t\t\t? split.join(next.extras.multipleDateSeparator)\n\t\t\t\t\t\t\t: split[0],\n\t\t\t};\n\t\t\t//\n\t\t\tstore.set(next as any);\n\t\t},\n\t} as any;\n\n\t// process input\n\ttype PP = Parameters<Field.OnRender<Field.Type>>[0];\n\tconst processProps: PP = { key, data: reactive, attrType, attrs, attrFor: \"option\" };\n\toptions?.fieldsOnRender?.(processProps);\n\tsetup.onRender?.(processProps);\n\n\t// mark rendered and initialize element search and mount onto picker instance\n\tif (state.event.RENDER === FIELD.RENDER.INIT) {\n\t\tconst next = { ...store.get() };\n\t\tnext.event.RENDER = FIELD.RENDER.READY;\n\t\tnext.event.MUTATE = FIELD.MUTATE.__RENDER;\n\t\tstore.set(next);\n\t}\n\n\t// console.log(\"element input :: \", key, \" :: \", result.value);\n\treturn attrs as Render.Attributes.DateCell<S, O, A>;\n}\n","import type { Extras, Field, Form, FunctionProps, Render } from \"../../_model\";\nimport { CALENDAR, FIELD } from \"../../const\";\n\n//\nimport DATE from \"../helpers/date/DATE\";\nimport TIME from \"../helpers/date/TIME\";\nimport YEAR from \"../helpers/date/YEAR\";\nimport MONTH from \"../helpers/date/MONTH\";\nimport DAY from \"../helpers/date/DAY\";\nimport HOUR from \"../helpers/date/HOUR\";\nimport MINUTE from \"../helpers/date/MINUTE\";\nimport SECOND from \"../helpers/date/SECOND\";\n\nexport function renderAttributesDateOption<\n\tS extends Field.Setup,\n\tO extends Form.Options,\n\tA extends Render.Attributes.Type,\n>(\n\tbasic: FunctionProps.Field<S, O>,\n\tprops: FunctionProps.RenderAttributes<S, O, A>,\n\toption: Extras.Date.Option,\n) {\n\tconst { key, options, store, setup } = basic;\n\tconst { attrType, reactive } = props;\n\tconst state = reactive as unknown as Field.StoreObject<Field.Setup<\"date\">>;\n\tif (option === null) throw new Error(\"qform: unknown date option :: \" + option);\n\tconst id =\n\t\t(state?.element?.label ?? setup.label) +\n\t\t\".option.\" +\n\t\toption.typeName +\n\t\t\".\" +\n\t\toption.value +\n\t\t\".id\";\n\tconst name = state.__internal.key + \".option\";\n\tconst attrs = {\n\t\tid,\n\t\tname,\n\t\t[attrType !== \"vdom\" ? \"onclick\" : \"onClick\"]: function onclick(event: PointerEvent) {\n\t\t\tevent.preventDefault();\n\t\t\tconst next = { ...store.get() } as Field.StoreObject<Field.Setup<\"date\">>;\n\t\t\tlet update = false;\n\t\t\tconst period = next.extras.TIME.activePeriod;\n\t\t\tif (option.type === CALENDAR.OPTIONS.TIME_PERIOD) {\n\t\t\t\tTIME.options.switchPeriod(option, next.extras);\n\t\t\t}\n\n\t\t\t//\n\t\t\tif (period !== next.extras.TIME.activePeriod) {\n\t\t\t\tupdate = true;\n\t\t\t}\n\n\t\t\tif (!update) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// const pointer = event.pointerType as \"mouse\" | \"touch\";\n\t\t\tnext.event.DOM = FIELD.DOM.CLICK_DATE_OPTION;\n\t\t\tnext.event.MUTATE = FIELD.MUTATE.__EXTRAS;\n\t\t\tstore.set(next as any);\n\t\t},\n\t} as any;\n\n\t// process input\n\ttype PP = Parameters<Field.OnRender<Field.Type>>[0];\n\tconst processProps: PP = { key, data: reactive, attrType, attrs, attrFor: \"option\" };\n\toptions?.fieldsOnRender?.(processProps);\n\tsetup.onRender?.(processProps);\n\n\t// console.log(\"element input :: \", key, \" :: \", result.value);\n\treturn attrs as Render.Attributes.DateOption<S, O, A>;\n}\n","import type { Field, Form, FunctionProps, Render } from \"../../_model\";\nimport { CALENDAR, FIELD } from \"../../const\";\nimport { goToMode } from \"../helpers/date/mode\";\n\n//\nimport DATE from \"../helpers/date/DATE\";\nimport TIME from \"../helpers/date/TIME\";\nimport YEAR from \"../helpers/date/YEAR\";\nimport MONTH from \"../helpers/date/MONTH\";\nimport DAY from \"../helpers/date/DAY\";\nimport HOUR from \"../helpers/date/HOUR\";\nimport MINUTE from \"../helpers/date/MINUTE\";\nimport SECOND from \"../helpers/date/SECOND\";\n\nexport function renderAttributesDateEvent<\n\tS extends Field.Setup,\n\tO extends Form.Options,\n\tA extends Render.Attributes.Type,\n>(\n\tbasic: FunctionProps.Field<S, O>,\n\tprops: FunctionProps.RenderAttributes<S, O, A>,\n\t_event: keyof typeof CALENDAR.EVENTS | CALENDAR.EVENTS,\n) {\n\tconst { key, options, store, setup } = basic;\n\tconst { attrType, reactive } = props;\n\tconst state = reactive as unknown as Field.StoreObject<Field.Setup<\"date\">>;\n\tconst EVENT = typeof _event === \"number\" ? _event : CALENDAR.EVENTS[_event];\n\tif (EVENT === null) throw new Error(\"qform: unknown date event :: \" + _event);\n\tconst id = (state?.element?.label ?? setup.label) + \".event.\" + EVENT + \".id\";\n\tconst name = state.__internal.key + \".event.\" + EVENT;\n\tconst attrs = {\n\t\tid,\n\t\tname,\n\t\t[attrType !== \"vdom\" ? \"onclick\" : \"onClick\"]: function onclick(event: PointerEvent) {\n\t\t\tevent.preventDefault();\n\t\t\tconst next = { ...store.get() } as Field.StoreObject<Field.Setup<\"date\">>;\n\t\t\tlet update = false;\n\t\t\tlet mode = next.extras.mode;\n\t\t\tconst month = next.extras.MONTH.active;\n\t\t\tconst year = next.extras.YEAR.active;\n\t\t\tconst yearStart = next.extras.YEAR.start;\n\t\t\tif (EVENT === CALENDAR.EVENTS.MODE_YEARS) {\n\t\t\t\tmode = goToMode(CALENDAR.MODE.YEAR, next.extras);\n\t\t\t} else if (EVENT === CALENDAR.EVENTS.MODE_MONTHS) {\n\t\t\t\tmode = goToMode(CALENDAR.MODE.MONTH, next.extras);\n\t\t\t} else if (EVENT === CALENDAR.EVENTS.MODE_DAYS) {\n\t\t\t\tmode = goToMode(CALENDAR.MODE.DAY, next.extras);\n\t\t\t} else if (next.extras.mode.active === CALENDAR.MODE.DAY) {\n\t\t\t\tif (EVENT === CALENDAR.EVENTS.NAV_PREV) MONTH.events.prev(next.extras);\n\t\t\t\telse if (EVENT === CALENDAR.EVENTS.NAV_NEXT) MONTH.events.next(next.extras);\n\t\t\t} else if (next.extras.mode.active === CALENDAR.MODE.MONTH) {\n\t\t\t\tif (EVENT === CALENDAR.EVENTS.NAV_PREV) YEAR.events.prev(next.extras);\n\t\t\t\telse if (EVENT === CALENDAR.EVENTS.NAV_NEXT) YEAR.events.next(next.extras);\n\t\t\t} else if (next.extras.mode.active === CALENDAR.MODE.YEAR) {\n\t\t\t\tif (EVENT === CALENDAR.EVENTS.NAV_PREV) YEAR.events.prevView(next.extras);\n\t\t\t\telse if (EVENT === CALENDAR.EVENTS.NAV_NEXT) YEAR.events.nextView(next.extras);\n\t\t\t}\n\n\t\t\t//\n\t\t\tif (\n\t\t\t\tmode.active !== next.extras.mode.active ||\n\t\t\t\tyear !== next.extras.YEAR.active ||\n\t\t\t\tyearStart !== next.extras.YEAR.start ||\n\t\t\t\tmonth !== next.extras.MONTH.active\n\t\t\t) {\n\t\t\t\tupdate = true;\n\t\t\t}\n\n\t\t\tif (!update) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// const pointer = event.pointerType as \"mouse\" | \"touch\";\n\t\t\tnext.extras.mode = mode;\n\t\t\tnext.event.DOM = FIELD.DOM.CLICK_DATE_EVENT;\n\t\t\tnext.event.MUTATE = FIELD.MUTATE.__EXTRAS;\n\t\t\tstore.set(next as any);\n\t\t},\n\t} as any;\n\n\t// process input\n\ttype PP = Parameters<Field.OnRender<Field.Type>>[0];\n\tconst processProps: PP = { key, data: reactive, attrType, attrs, attrFor: \"option\" };\n\toptions?.fieldsOnRender?.(processProps);\n\tsetup.onRender?.(processProps);\n\n\t// console.log(\"element input :: \", key, \" :: \", result.value);\n\treturn attrs as Render.Attributes.DateEvent<S, O, A>;\n}\n","import type { Extras, Field, Form, FunctionProps, Render } from \"../../_model\";\nimport { FIELD } from \"../../const\";\n\nexport function renderAttributesDateInput<\n\tS extends Field.Setup,\n\tO extends Form.Options,\n\tA extends Render.Attributes.Type,\n>(basic: FunctionProps.Field<S, O>, props: FunctionProps.RenderAttributes<S, O, A>) {\n\tconst { key, options, store, setup } = basic;\n\tconst { attrType, reactive } = props;\n\tconst state = reactive as unknown as Field.StoreObject<Field.Setup<\"date\">>;\n\tconst attrs = {\n\t\t// \"data-qform-const\": `${setup.type}.${setup.label}`,\n\t\tid: state?.element?.label ?? setup.label,\n\t\t// type: state?.element.hidden ? \"hidden\" : setup.type,\n\t\tname: state.__internal.key,\n\t\tmultiple: state?.element.multiple,\n\t\trequired: state?.element.required,\n\t\tdisabled: state?.element.disabled,\n\t\tplaceholder: state?.element.placeholder ?? state.extras.format,\n\t\tvalue: state.value ?? \"\",\n\t\t[attrType !== \"vdom\" ? \"autocomplete\" : \"autoComplete\"]: \"off\",\n\t\t[attrType !== \"vdom\" ? \"onfocus\" : \"onFocus\"]: (event: FocusEvent) => {\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopImmediatePropagation();\n\t\t\tevent.stopPropagation();\n\n\t\t\t// special date handling of blur\n\t\t\tconst element = event.target as HTMLElement;\n\t\t\tsetTimeout(() => {\n\t\t\t\t// Attach click listener to document\n\t\t\t\tdocument.addEventListener(\"click\", function outsideClick(e) {\n\t\t\t\t\tconst target = e.target as HTMLElement;\n\t\t\t\t\tconst name = target?.getAttribute(\"name\");\n\t\t\t\t\tif (!element.contains(target)) {\n\t\t\t\t\t\tif (name && name.startsWith(state.__internal.key)) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Remove the listener after detecting outside click\n\t\t\t\t\t\tdocument.removeEventListener(\"click\", outsideClick);\n\t\t\t\t\t\tconst next = { ...store.get() };\n\t\t\t\t\t\tnext.element.focused = false;\n\t\t\t\t\t\tnext.element.visited = true;\n\t\t\t\t\t\tnext.__internal.manual = false;\n\t\t\t\t\t\t//\n\t\t\t\t\t\tnext.event.DOM = FIELD.DOM.BLUR;\n\t\t\t\t\t\tnext.event.MUTATE = FIELD.MUTATE.IDLE;\n\t\t\t\t\t\tnext.event.ev = undefined;\n\t\t\t\t\t\tstore.set(next);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}, 100);\n\n\t\t\t//\n\t\t\tconst next = { ...store.get() };\n\t\t\tnext.element.focused = true;\n\t\t\tnext.element.visited = true;\n\t\t\tnext.__internal.manual = false;\n\t\t\t//\n\t\t\tnext.event.DOM = FIELD.DOM.FOCUS;\n\t\t\tnext.event.MUTATE = FIELD.MUTATE.IDLE;\n\t\t\tnext.event.ev = {\n\t\t\t\tvalue: (event.target as any).value,\n\t\t\t\tchecked: (event.target as any).checked,\n\t\t\t\tfiles: (event.target as any).files,\n\t\t\t};\n\t\t\tstore.set(next);\n\t\t},\n\t\t// [attrType !== \"vdom\" ? \"onblur\" : \"onBlur\"]: (event: Event) => {\n\t\t// \tevent.preventDefault();\n\t\t// \tevent.stopImmediatePropagation();\n\t\t// \tevent.stopPropagation();\n\t\t// \tconst next = { ...store.get() };\n\t\t// \tnext.element.focused = false;\n\t\t// \tnext.element.visited = true;\n\t\t// \tnext.__internal.manual = false;\n\t\t// \t//\n\t\t// \tnext.event.DOM = FIELD.DOM.BLUR;\n\t\t// \tnext.event.MUTATE = FIELD.MUTATE.IDLE;\n\t\t// \tnext.event.ev = undefined;\n\t\t// \tstore.set(next);\n\t\t// },\n\t\t[attrType !== \"vdom\" ? \"oninput\" : \"onInput\"]: (event: Event) => {\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopImmediatePropagation();\n\t\t\tevent.stopPropagation();\n\t\t\tconst next = { ...store.get() };\n\t\t\tif (next.element.disabled) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tnext.__internal.manual = false;\n\t\t\t//\n\t\t\tnext.event.DOM = FIELD.DOM.IDLE; // questionable?\n\t\t\tnext.event.MUTATE = FIELD.MUTATE.VALUE;\n\t\t\tconst value = (event.target as any).value;\n\t\t\tnext.event.ev = {\n\t\t\t\tvalue: value === \"\" ? undefined : value,\n\t\t\t\tchecked: (event.target as any).checked,\n\t\t\t\tfiles: (event.target as any).files,\n\t\t\t};\n\t\t\tstore.set(next);\n\t\t},\n\t} as any;\n\n\t// process input\n\ttype PP = Parameters<Field.OnRender<Field.Type>>[0];\n\tconst processProps: PP = { key, data: reactive, attrType, attrs, attrFor: \"input\" };\n\toptions?.fieldsOnRender?.(processProps);\n\tsetup.onRender?.(processProps);\n\n\t// mark rendered and initialize element search and mount onto picker instance\n\tif (state.event.RENDER === FIELD.RENDER.INIT) {\n\t\tconst next = { ...store.get() };\n\t\tnext.event.RENDER = FIELD.RENDER.READY;\n\t\tnext.event.MUTATE = FIELD.MUTATE.__RENDER;\n\t\tstore.set(next);\n\n\t\t// search for dom element only on the client side\n\t\t// if (!isServerSide()) {\n\t\t// \t(async () => {\n\t\t// \t\tlet element = null as null | HTMLInputElement;\n\t\t// \t\twhile (element == null) {\n\t\t// \t\t\telement = document.querySelector(`[data-qform-const=\"${setup.type}.${setup.label}\"]`);\n\t\t// \t\t}\n\t\t// \t\t// const next = { ...store.get() } as Field.StoreObject<Field.Setup<\"date\">>;\n\t\t// \t\tif (state.extras == null || state.extras.instance == null) {\n\t\t// \t\t\tthrow new Error(\n\t\t// \t\t\t\t\"qform: date extras.instance is null, please intilize it in date value processor!\",\n\t\t// \t\t\t);\n\t\t// \t\t}\n\t\t// \t\tstate.extras.instance.attachTo(element);\n\t\t// \t\t// store.set(next as any);\n\t\t// \t})();\n\t\t// }\n\t}\n\n\t// console.log(\"element input :: \", key, \" :: \", result.value);\n\treturn attrs as Render.Attributes.DateInput<S, O, A>;\n}\n","import type { Extras, Field, Form, FunctionProps, Integration, Render } from \"../_model\";\nimport { renderAttributesInput } from \"../render/attributes/input\";\nimport { renderAttributesSelectTrigger } from \"../render/attributes/select.trigger\";\nimport { renderAttributesSelectOption } from \"../render/attributes/select.option\";\nimport { type DateAttributeCells, renderAttributesDateCell } from \"../render/attributes/date.cell\";\nimport type { CALENDAR } from \"../const\";\nimport { renderAttributesDateOption } from \"../render/attributes/date.option\";\nimport { renderAttributesDateEvent } from \"../render/attributes/date.event\";\nimport { renderAttributesDateInput } from \"../render/attributes/date.input\";\n\nexport type IntegrationDom<\n\tS extends Field.Setup,\n\tO extends Form.Options,\n> = Integration.RenderFactory<\n\tS,\n\tO,\n\t\"DOM\",\n\t{\n\t\tinput: <D extends Render.Attributes.Type = \"dom\">(props?: {\n\t\t\tattrType?: D;\n\t\t}) => Render.Attributes.Input<S, O, D>;\n\t\tselect: {\n\t\t\ttrigger: <D extends Render.Attributes.Type = \"dom\">(props?: {\n\t\t\t\tattrType?: D;\n\t\t\t}) => Render.Attributes.SelectTrigger<S, O, D>;\n\t\t\toption: <D extends Render.Attributes.Type = \"dom\">(\n\t\t\t\toption: any,\n\t\t\t\tprops?: { attrType?: D },\n\t\t\t) => Render.Attributes.SelectOption<S, O, D>;\n\t\t};\n\t\tdate: {\n\t\t\tinput: <D extends Render.Attributes.Type = \"dom\">(props?: {\n\t\t\t\tattrType?: D;\n\t\t\t}) => Render.Attributes.DateInput<S, O, D>;\n\t\t\tevent: {\n\t\t\t\t<D extends Render.Attributes.Type = \"dom\">(\n\t\t\t\t\tevent: CALENDAR.EVENTS,\n\t\t\t\t\tprops?: {\n\t\t\t\t\t\tattrType?: D;\n\t\t\t\t\t},\n\t\t\t\t): Render.Attributes.DateEvent<S, O, D>;\n\t\t\t\t<D extends Render.Attributes.Type = \"dom\">(\n\t\t\t\t\teventName: keyof typeof CALENDAR.EVENTS,\n\t\t\t\t\tprops?: {\n\t\t\t\t\t\tattrType?: D;\n\t\t\t\t\t},\n\t\t\t\t): Render.Attributes.DateEvent<S, O, D>;\n\t\t\t};\n\t\t\tcell: {\n\t\t\t\t<D extends Render.Attributes.Type = \"dom\">(\n\t\t\t\t\tdateCell: Extras.Date.CellDate,\n\t\t\t\t\tprops?: {\n\t\t\t\t\t\tattrType?: D;\n\t\t\t\t\t},\n\t\t\t\t): Render.Attributes.DateCell<S, O, D>;\n\t\t\t\t<D extends Render.Attributes.Type = \"dom\">(\n\t\t\t\t\ttimeCell: Extras.Date.CellTime,\n\t\t\t\t\tprops?: {\n\t\t\t\t\t\tattrType?: D;\n\t\t\t\t\t},\n\t\t\t\t): Render.Attributes.DateCell<S, O, D>;\n\t\t\t\t<D extends Render.Attributes.Type = \"dom\">(\n\t\t\t\t\titems: DateAttributeCells,\n\t\t\t\t\tprops?: {\n\t\t\t\t\t\tattrType?: D;\n\t\t\t\t\t},\n\t\t\t\t): Render.Attributes.DateCell<S, O, D>;\n\t\t\t};\n\t\t\toption: <D extends Render.Attributes.Type = \"dom\">(\n\t\t\t\toption: Extras.Date.Option,\n\t\t\t\tprops?: {\n\t\t\t\t\tattrType?: D;\n\t\t\t\t},\n\t\t\t) => Render.Attributes.DateCell<S, O, D>;\n\t\t};\n\t}\n>;\nexport function domIntegration<S extends Field.Setup, O extends Form.Options>(\n\tbasic: FunctionProps.Field<S, O>,\n): IntegrationDom<S, O> {\n\tconst { key, setup, store, options } = basic;\n\t// check user process\n\tlet result = undefined as any;\n\tif (setup.type === \"select\" || setup.type === \"select.radio\") {\n\t\tresult = {\n\t\t\ttrigger: (props) => {\n\t\t\t\tconst reactive = store.get();\n\t\t\t\tconst attrType = props?.attrType ?? \"dom\"; //as typeof props.attrType;\n\t\t\t\treturn renderAttributesSelectTrigger(basic, { attrType, reactive }) as any;\n\t\t\t},\n\t\t\toption: (value, props) => {\n\t\t\t\tconst reactive = store.get();\n\t\t\t\tconst attrType = props?.attrType ?? \"dom\"; //as typeof props.attrType;\n\t\t\t\treturn renderAttributesSelectOption(basic, {\n\t\t\t\t\tattrType,\n\t\t\t\t\treactive,\n\t\t\t\t\toptionValue: value,\n\t\t\t\t}) as any;\n\t\t\t},\n\t\t};\n\t} else if (setup.type === \"date\") {\n\t\tresult = {\n\t\t\tinput: (props) => {\n\t\t\t\tconst reactive = store.get();\n\t\t\t\tconst attrType = props?.attrType ?? \"dom\"; //as typeof props.attrType;\n\t\t\t\treturn renderAttributesDateInput(basic, { attrType, reactive }) as any;\n\t\t\t},\n\t\t\tevent: (event, props) => {\n\t\t\t\tconst reactive = store.get();\n\t\t\t\tconst attrType = props?.attrType ?? \"dom\"; //as typeof props.attrType;\n\t\t\t\treturn renderAttributesDateEvent(basic, { attrType, reactive }, event) as any;\n\t\t\t},\n\t\t\tcell: (items, props) => {\n\t\t\t\tconst reactive = store.get();\n\t\t\t\tconst attrType = props?.attrType ?? \"dom\"; //as typeof props.attrType;\n\t\t\t\treturn renderAttributesDateCell(basic, { attrType, reactive }, items) as any;\n\t\t\t},\n\t\t\toption: (option, props) => {\n\t\t\t\tconst reactive = store.get();\n\t\t\t\tconst attrType = props?.attrType ?? \"dom\"; //as typeof props.attrType;\n\t\t\t\treturn renderAttributesDateOption(basic, { attrType, reactive }, option) as any;\n\t\t\t},\n\t\t};\n\t} else {\n\t\tresult = (props) => {\n\t\t\tconst reactive = store.get();\n\t\t\tconst attrType = props?.attrType ?? \"dom\"; //as typeof props.attrType;\n\t\t\treturn renderAttributesInput(basic, { attrType, reactive }) as any;\n\t\t};\n\t}\n\n\tresult.__integrationFor = \"DOM\";\n\tresult.__integrationName = \"DOM-RENDER\";\n\treturn result;\n}\n","import type { Extras, Field, Form, FunctionProps, Integration, Render } from \"../_model\";\n//\nimport { renderAttributesInput } from \"../render/attributes/input\";\nimport { renderAttributesSelectTrigger } from \"../render/attributes/select.trigger\";\nimport { renderAttributesSelectOption } from \"../render/attributes/select.option\";\nimport type { CALENDAR } from \"../const\";\nimport { renderAttributesDateInput } from \"../render/attributes/date.input\";\nimport { renderAttributesDateEvent } from \"../render/attributes/date.event\";\nimport { renderAttributesDateCell, type DateAttributeCells } from \"../render/attributes/date.cell\";\nimport { renderAttributesDateOption } from \"../render/attributes/date.option\";\n//\n\nexport type IntegrationRef<\n\tS extends Field.Setup,\n\tO extends Form.Options,\n> = Integration.RenderFactory<\n\tS,\n\tO,\n\t\"REF\",\n\t{\n\t\tinput: (ref: any) => void;\n\t\tselect: {\n\t\t\ttrigger: (ref: any) => void;\n\t\t\toption: (ref: any, option: any) => void;\n\t\t};\n\t\tdate: {\n\t\t\tinput: (ref: any) => void;\n\t\t\tevent: {\n\t\t\t\t(ref: any, event: CALENDAR.EVENTS): void;\n\t\t\t\t(ref: any, eventName: keyof typeof CALENDAR.EVENTS): void;\n\t\t\t};\n\t\t\tcell: {\n\t\t\t\t(ref: any, dateCell: Extras.Date.CellDate): void;\n\t\t\t\t(ref: any, timeCell: Extras.Date.CellTime): void;\n\t\t\t\t(ref: any, items: DateAttributeCells): void;\n\t\t\t};\n\t\t\toption: (ref: any, option: Extras.Date.Option) => void;\n\t\t};\n\t}\n>;\nexport function refIntegration<S extends Field.Setup, O extends Form.Options>(\n\tbasic: FunctionProps.Field<S, O>,\n): IntegrationRef<S, O> {\n\tconst { key, setup, store } = basic;\n\t// check user process\n\tlet result = undefined as any;\n\tif (setup.type === \"select\" || setup.type === \"select.radio\") {\n\t\tresult = {\n\t\t\ttrigger: (ref) => {\n\t\t\t\tif (ref == null || ref.name === key) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst reactive = store.get();\n\t\t\t\tconst attrType = \"dom\";\n\t\t\t\tconst attrs = renderAttributesSelectTrigger(basic, { attrType, reactive }) as any;\n\t\t\t\tfor (const k in attrs) {\n\t\t\t\t\tref[k] = attrs[k];\n\t\t\t\t}\n\t\t\t},\n\t\t\toption: (ref, value) => {\n\t\t\t\tconst reactive = store.get();\n\t\t\t\tconst attrType = \"dom\";\n\t\t\t\tconst attrs = renderAttributesSelectOption(basic, {\n\t\t\t\t\tattrType,\n\t\t\t\t\treactive,\n\t\t\t\t\toptionValue: value,\n\t\t\t\t}) as any;\n\t\t\t\tfor (const k in attrs) {\n\t\t\t\t\tref[k] = attrs[k];\n\t\t\t\t}\n\t\t\t},\n\t\t} as any;\n\t} else if (setup.type === \"date\") {\n\t\tresult = {\n\t\t\tinput: (ref) => {\n\t\t\t\tif (ref == null || ref.name === key) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst reactive = store.get();\n\t\t\t\tconst attrType = \"dom\";\n\t\t\t\tconst attrs = renderAttributesDateInput(basic, { attrType, reactive }) as any;\n\t\t\t\tfor (const k in attrs) {\n\t\t\t\t\tref[k] = attrs[k];\n\t\t\t\t}\n\t\t\t},\n\t\t\tevent: (ref, event) => {\n\t\t\t\tif (ref == null || ref.name === key) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst reactive = store.get();\n\t\t\t\tconst attrType = \"dom\";\n\t\t\t\tconst attrs = renderAttributesDateEvent(basic, { attrType, reactive }, event) as any;\n\t\t\t\tfor (const k in attrs) {\n\t\t\t\t\tref[k] = attrs[k];\n\t\t\t\t}\n\t\t\t},\n\t\t\tcell: (ref, items) => {\n\t\t\t\tif (ref == null || ref.name === key) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst reactive = store.get();\n\t\t\t\tconst attrType = \"dom\";\n\t\t\t\tconst attrs = renderAttributesDateCell(basic, { attrType, reactive }, items) as any;\n\t\t\t\tfor (const k in attrs) {\n\t\t\t\t\tref[k] = attrs[k];\n\t\t\t\t}\n\t\t\t},\n\t\t\toption: (ref, option) => {\n\t\t\t\tif (ref == null || ref.name === key) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst reactive = store.get();\n\t\t\t\tconst attrType = \"dom\";\n\t\t\t\tconst attrs = renderAttributesDateOption(basic, { attrType, reactive }, option) as any;\n\t\t\t\tfor (const k in attrs) {\n\t\t\t\t\tref[k] = attrs[k];\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t} else {\n\t\tresult = (ref) => {\n\t\t\tif (ref == null || ref.name === key) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst reactive = store.get();\n\t\t\tconst attrType = \"dom\";\n\t\t\tconst attrs = renderAttributesInput(basic, { attrType, reactive }) as any;\n\t\t\tfor (const k in attrs) {\n\t\t\t\tref[k] = attrs[k];\n\t\t\t}\n\t\t};\n\t}\n\n\tresult.__integrationFor = \"REF\";\n\tresult.__integrationName = \"REF-RENDER\";\n\treturn result;\n}\n","import type { Extras, Field, Form, FunctionProps, Integration, Render } from \"../_model\";\nimport { renderAttributesInput } from \"../render/attributes/input\";\n//\nimport { renderAttributesSelectTrigger } from \"../render/attributes/select.trigger\";\nimport { renderAttributesSelectOption } from \"../render/attributes/select.option\";\n//\nimport type { CALENDAR } from \"../const\";\nimport { renderAttributesDateInput } from \"../render/attributes/date.input\";\nimport { renderAttributesDateEvent } from \"../render/attributes/date.event\";\nimport { renderAttributesDateCell, type DateAttributeCells } from \"../render/attributes/date.cell\";\nimport { renderAttributesDateOption } from \"../render/attributes/date.option\";\n\nexport type IntegrationPreact<\n\tS extends Field.Setup,\n\tO extends Form.Options,\n> = Integration.RenderFactory<\n\tS,\n\tO,\n\t\"PREACT\",\n\t{\n\t\tinput: <D extends Render.Attributes.Type = \"vdom\">(props?: {\n\t\t\tattrType?: D;\n\t\t}) => Render.Attributes.Input<S, O, D>;\n\t\tselect: {\n\t\t\ttrigger: <D extends Render.Attributes.Type = \"vdom\">(props?: {\n\t\t\t\tattrType?: D;\n\t\t\t}) => Render.Attributes.SelectTrigger<S, O, D>;\n\t\t\toption: <D extends Render.Attributes.Type = \"vdom\">(\n\t\t\t\toption: any,\n\t\t\t\tprops?: { attrType?: D },\n\t\t\t) => Render.Attributes.SelectOption<S, O, D>;\n\t\t};\n\t\tdate: {\n\t\t\tinput: <D extends Render.Attributes.Type = \"vdom\">(props?: {\n\t\t\t\tattrType?: D;\n\t\t\t}) => Render.Attributes.DateInput<S, O, D>;\n\t\t\tevent: {\n\t\t\t\t<D extends Render.Attributes.Type = \"vdom\">(\n\t\t\t\t\tevent: CALENDAR.EVENTS,\n\t\t\t\t\tprops?: {\n\t\t\t\t\t\tattrType?: D;\n\t\t\t\t\t},\n\t\t\t\t): Render.Attributes.DateEvent<S, O, D>;\n\t\t\t\t<D extends Render.Attributes.Type = \"vdom\">(\n\t\t\t\t\teventName: keyof typeof CALENDAR.EVENTS,\n\t\t\t\t\tprops?: {\n\t\t\t\t\t\tattrType?: D;\n\t\t\t\t\t},\n\t\t\t\t): Render.Attributes.DateEvent<S, O, D>;\n\t\t\t};\n\t\t\tcell: {\n\t\t\t\t<D extends Render.Attributes.Type = \"vdom\">(\n\t\t\t\t\tdateCell: Extras.Date.CellDate,\n\t\t\t\t\tprops?: {\n\t\t\t\t\t\tattrType?: D;\n\t\t\t\t\t},\n\t\t\t\t): Render.Attributes.DateCell<S, O, D>;\n\t\t\t\t<D extends Render.Attributes.Type = \"vdom\">(\n\t\t\t\t\ttimeCell: Extras.Date.CellTime,\n\t\t\t\t\tprops?: {\n\t\t\t\t\t\tattrType?: D;\n\t\t\t\t\t},\n\t\t\t\t): Render.Attributes.DateCell<S, O, D>;\n\t\t\t\t<D extends Render.Attributes.Type = \"vdom\">(\n\t\t\t\t\titems: DateAttributeCells,\n\t\t\t\t\tprops?: {\n\t\t\t\t\t\tattrType?: D;\n\t\t\t\t\t},\n\t\t\t\t): Render.Attributes.DateCell<S, O, D>;\n\t\t\t};\n\t\t\toption: <D extends Render.Attributes.Type = \"vdom\">(\n\t\t\t\toption: Extras.Date.Option,\n\t\t\t\tprops?: {\n\t\t\t\t\tattrType?: D;\n\t\t\t\t},\n\t\t\t) => Render.Attributes.DateCell<S, O, D>;\n\t\t};\n\t}\n>;\n\nexport function preactIntegration<S extends Field.Setup, O extends Form.Options>(\n\tbasic: FunctionProps.Field<S, O>,\n): IntegrationPreact<S, O> {\n\tconst { key, setup, store, options } = basic;\n\tlet result = undefined as any;\n\tif (setup.type === \"select\" || setup.type === \"select.radio\") {\n\t\tresult = {\n\t\t\ttrigger: (props) => {\n\t\t\t\tif (store.hooksUsed().preact == null) {\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\"qform: preact hook does not exist, please add it to options.storeHooks option!\",\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tconst reactive = store.hooksUsed().preact?.call();\n\t\t\t\tconst attrType = props?.attrType ?? \"vdom\"; //as typeof props.attrType;\n\t\t\t\treturn renderAttributesSelectTrigger(basic, { attrType, reactive }) as any;\n\t\t\t},\n\t\t\toption: (value, props) => {\n\t\t\t\tif (store.hooksUsed().preact == null) {\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\"qform: preact hook does not exist, please add it to options.storeHooks option!\",\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tconst reactive = store.hooksUsed().preact?.call();\n\t\t\t\tconst attrType = props?.attrType ?? \"vdom\"; //as typeof props.attrType;\n\t\t\t\treturn renderAttributesSelectOption(basic, {\n\t\t\t\t\tattrType,\n\t\t\t\t\treactive,\n\t\t\t\t\toptionValue: value,\n\t\t\t\t}) as any;\n\t\t\t},\n\t\t} as any;\n\t} else if (setup.type === \"date\") {\n\t\tresult = {\n\t\t\tinput: (props) => {\n\t\t\t\tif (store.hooksUsed().preact == null) {\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\"qform: preact hook does not exist, please add it to options.storeHooks option!\",\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tconst reactive = store.hooksUsed().preact?.call();\n\t\t\t\tconst attrType = props?.attrType ?? \"vdom\"; //as typeof props.attrType;\n\t\t\t\treturn renderAttributesDateInput(basic, { attrType, reactive }) as any;\n\t\t\t},\n\t\t\tevent: (event, props) => {\n\t\t\t\tif (store.hooksUsed().preact == null) {\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\"qform: preact hook does not exist, please add it to options.storeHooks option!\",\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tconst reactive = store.hooksUsed().preact?.call();\n\t\t\t\tconst attrType = props?.attrType ?? \"vdom\"; //as typeof props.attrType;\n\t\t\t\treturn renderAttributesDateEvent(basic, { attrType, reactive }, event) as any;\n\t\t\t},\n\t\t\tcell: (items, props) => {\n\t\t\t\tif (store.hooksUsed().preact == null) {\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\"qform: preact hook does not exist, please add it to options.storeHooks option!\",\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tconst reactive = store.hooksUsed().preact?.call();\n\t\t\t\tconst attrType = props?.attrType ?? \"vdom\"; //as typeof props.attrType;\n\t\t\t\treturn renderAttributesDateCell(basic, { attrType, reactive }, items) as any;\n\t\t\t},\n\t\t\toption: (option, props) => {\n\t\t\t\tif (store.hooksUsed().preact == null) {\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\"qform: preact hook does not exist, please add it to options.storeHooks option!\",\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tconst reactive = store.hooksUsed().preact?.call();\n\t\t\t\tconst attrType = props?.attrType ?? \"vdom\"; //as typeof props.attrType;\n\t\t\t\treturn renderAttributesDateOption(basic, { attrType, reactive }, option) as any;\n\t\t\t},\n\t\t};\n\t} else {\n\t\tresult = (props) => {\n\t\t\tif (store.hooksUsed().preact == null) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t\"qform: preact hook does not exist, please add it to options.storeHooks option!\",\n\t\t\t\t);\n\t\t\t}\n\t\t\tconst reactive = store.hooksUsed().preact?.call();\n\t\t\tconst attrType = props?.attrType ?? \"vdom\"; //as typeof props.attrType;\n\t\t\treturn renderAttributesInput(basic, { attrType, reactive }) as any;\n\t\t};\n\t}\n\n\tresult.__integrationFor = \"PREACT\";\n\tresult.__integrationName = \"PREACT-RENDER\";\n\treturn result;\n}\n","import type { Extras, Field, Form, FunctionProps, Integration, Render } from \"../_model\";\nimport { renderAttributesInput } from \"../render/attributes/input\";\n//\nimport { renderAttributesSelectTrigger } from \"../render/attributes/select.trigger\";\nimport { renderAttributesSelectOption } from \"../render/attributes/select.option\";\nimport { type DateAttributeCells, renderAttributesDateCell } from \"../render/attributes/date.cell\";\nimport type { CALENDAR } from \"../const\";\nimport { renderAttributesDateOption } from \"../render/attributes/date.option\";\nimport { renderAttributesDateEvent } from \"../render/attributes/date.event\";\nimport { renderAttributesDateInput } from \"../render/attributes/date.input\";\n//\n\nexport type IntegrationReact<\n\tS extends Field.Setup,\n\tO extends Form.Options,\n> = Integration.RenderFactory<\n\tS,\n\tO,\n\t\"REACT\",\n\t{\n\t\tinput: <D extends Render.Attributes.Type = \"vdom\">(props?: {\n\t\t\tattrType?: D;\n\t\t}) => Render.Attributes.Input<S, O, D>;\n\t\tselect: {\n\t\t\ttrigger: <D extends Render.Attributes.Type = \"vdom\">(props?: {\n\t\t\t\tattrType?: D;\n\t\t\t}) => Render.Attributes.SelectTrigger<S, O, D>;\n\t\t\toption: <D extends Render.Attributes.Type = \"vdom\">(\n\t\t\t\toption: any,\n\t\t\t\tprops?: { attrType?: D },\n\t\t\t) => Render.Attributes.SelectOption<S, O, D>;\n\t\t};\n\t\tdate: {\n\t\t\tinput: <D extends Render.Attributes.Type = \"vdom\">(props?: {\n\t\t\t\tattrType?: D;\n\t\t\t}) => Render.Attributes.DateInput<S, O, D>;\n\t\t\tevent: {\n\t\t\t\t<D extends Render.Attributes.Type = \"vdom\">(\n\t\t\t\t\tevent: CALENDAR.EVENTS,\n\t\t\t\t\tprops?: {\n\t\t\t\t\t\tattrType?: D;\n\t\t\t\t\t},\n\t\t\t\t): Render.Attributes.DateEvent<S, O, D>;\n\t\t\t\t<D extends Render.Attributes.Type = \"vdom\">(\n\t\t\t\t\teventName: keyof typeof CALENDAR.EVENTS,\n\t\t\t\t\tprops?: {\n\t\t\t\t\t\tattrType?: D;\n\t\t\t\t\t},\n\t\t\t\t): Render.Attributes.DateEvent<S, O, D>;\n\t\t\t};\n\t\t\tcell: {\n\t\t\t\t<D extends Render.Attributes.Type = \"vdom\">(\n\t\t\t\t\tdateCell: Extras.Date.CellDate,\n\t\t\t\t\tprops?: {\n\t\t\t\t\t\tattrType?: D;\n\t\t\t\t\t},\n\t\t\t\t): Render.Attributes.DateCell<S, O, D>;\n\t\t\t\t<D extends Render.Attributes.Type = \"vdom\">(\n\t\t\t\t\ttimeCell: Extras.Date.CellTime,\n\t\t\t\t\tprops?: {\n\t\t\t\t\t\tattrType?: D;\n\t\t\t\t\t},\n\t\t\t\t): Render.Attributes.DateCell<S, O, D>;\n\t\t\t\t<D extends Render.Attributes.Type = \"vdom\">(\n\t\t\t\t\titems: DateAttributeCells,\n\t\t\t\t\tprops?: {\n\t\t\t\t\t\tattrType?: D;\n\t\t\t\t\t},\n\t\t\t\t): Render.Attributes.DateCell<S, O, D>;\n\t\t\t};\n\t\t\toption: <D extends Render.Attributes.Type = \"vdom\">(\n\t\t\t\toption: Extras.Date.Option,\n\t\t\t\tprops?: {\n\t\t\t\t\tattrType?: D;\n\t\t\t\t},\n\t\t\t) => Render.Attributes.DateCell<S, O, D>;\n\t\t};\n\t}\n>;\nexport function reactIntegration<S extends Field.Setup, O extends Form.Options>(\n\tbasic: FunctionProps.Field<S, O>,\n): IntegrationReact<S, O> {\n\tconst { key, setup, store, options } = basic;\n\t// check user process\n\tlet result = undefined as any;\n\tif (setup.type === \"select\" || setup.type === \"select.radio\") {\n\t\tresult = {\n\t\t\ttrigger: (props) => {\n\t\t\t\tif (store.hooksUsed().react == null) {\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\"qform: react hook does not exist, please add it to options.storeHooks option!\",\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tconst reactive = store.hooksUsed().react?.call();\n\t\t\t\tconst attrType = props?.attrType ?? \"vdom\"; //as typeof props.attrType;\n\t\t\t\treturn renderAttributesSelectTrigger(basic, { attrType, reactive }) as any;\n\t\t\t},\n\t\t\toption: (value, props) => {\n\t\t\t\tif (store.hooksUsed().react == null) {\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\"qform: react hook does not exist, please add it to options.storeHooks option!\",\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tconst reactive = store.hooksUsed().react?.call();\n\t\t\t\tconst attrType = props?.attrType ?? \"vdom\"; //as typeof props.attrType;\n\t\t\t\treturn renderAttributesSelectOption(basic, {\n\t\t\t\t\tattrType,\n\t\t\t\t\treactive,\n\t\t\t\t\toptionValue: value,\n\t\t\t\t}) as any;\n\t\t\t},\n\t\t} as any;\n\t} else if (setup.type === \"date\") {\n\t\tresult = {\n\t\t\tinput: (props) => {\n\t\t\t\tif (store.hooksUsed().react == null) {\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\"qform: react hook does not exist, please add it to options.storeHooks option!\",\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tconst reactive = store.hooksUsed().react?.call();\n\t\t\t\tconst attrType = props?.attrType ?? \"vdom\"; //as typeof props.attrType;\n\t\t\t\treturn renderAttributesDateInput(basic, { attrType, reactive }) as any;\n\t\t\t},\n\t\t\tevent: (event, props) => {\n\t\t\t\tif (store.hooksUsed().react == null) {\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\"qform: react hook does not exist, please add it to options.storeHooks option!\",\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tconst reactive = store.hooksUsed().react?.call();\n\t\t\t\tconst attrType = props?.attrType ?? \"vdom\"; //as typeof props.attrType;\n\t\t\t\treturn renderAttributesDateEvent(basic, { attrType, reactive }, event) as any;\n\t\t\t},\n\t\t\tcell: (items, props) => {\n\t\t\t\tif (store.hooksUsed().react == null) {\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\"qform: react hook does not exist, please add it to options.storeHooks option!\",\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tconst reactive = store.hooksUsed().react?.call();\n\t\t\t\tconst attrType = props?.attrType ?? \"vdom\"; //as typeof props.attrType;\n\t\t\t\treturn renderAttributesDateCell(basic, { attrType, reactive }, items) as any;\n\t\t\t},\n\t\t\toption: (option, props) => {\n\t\t\t\tif (store.hooksUsed().react == null) {\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\"qform: react hook does not exist, please add it to options.storeHooks option!\",\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tconst reactive = store.hooksUsed().react?.call();\n\t\t\t\tconst attrType = props?.attrType ?? \"vdom\"; //as typeof props.attrType;\n\t\t\t\treturn renderAttributesDateOption(basic, { attrType, reactive }, option) as any;\n\t\t\t},\n\t\t};\n\t} else {\n\t\tresult = (props) => {\n\t\t\tif (store.hooksUsed().react == null) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t\"qform: react hook does not exist, please add it to options.storeHooks option!\",\n\t\t\t\t);\n\t\t\t}\n\t\t\tconst reactive = store.hooksUsed().react?.call();\n\t\t\tconst attrType = props?.attrType ?? \"vdom\"; //as typeof props.attrType;\n\t\t\treturn renderAttributesInput(basic, { attrType, reactive }) as any;\n\t\t};\n\t}\n\n\tresult.__integrationFor = \"REACT\";\n\tresult.__integrationName = \"REACT-RENDER\";\n\treturn result;\n}\n","import type { Extras, Field, Form, FunctionProps, Integration, Render } from \"../_model\";\nimport { renderAttributesInput } from \"../render/attributes/input\";\nimport { renderAttributesSelectTrigger } from \"../render/attributes/select.trigger\";\nimport { renderAttributesSelectOption } from \"../render/attributes/select.option\";\nimport { renderAttributesDateOption } from \"../render/attributes/date.option\";\nimport { type DateAttributeCells, renderAttributesDateCell } from \"../render/attributes/date.cell\";\nimport { renderAttributesDateEvent } from \"../render/attributes/date.event\";\nimport { renderAttributesDateInput } from \"../render/attributes/date.input\";\nimport type { CALENDAR } from \"../const\";\n//\n\nexport type IntegrationSolid<\n\tS extends Field.Setup,\n\tO extends Form.Options,\n> = Integration.RenderFactory<\n\tS,\n\tO,\n\t\"SOLID\",\n\t{\n\t\tinput: <D extends Render.Attributes.Type = \"dom\">(props?: {\n\t\t\tattrType?: D;\n\t\t}) => Render.Attributes.Input<S, O, D>;\n\t\tselect: {\n\t\t\ttrigger: <D extends Render.Attributes.Type = \"dom\">(props?: {\n\t\t\t\tattrType?: D;\n\t\t\t}) => Render.Attributes.SelectTrigger<S, O, D>;\n\t\t\toption: <D extends Render.Attributes.Type = \"dom\">(\n\t\t\t\toption: any,\n\t\t\t\tprops?: { attrType?: D },\n\t\t\t) => Render.Attributes.SelectOption<S, O, D>;\n\t\t};\n\t\tdate: {\n\t\t\tinput: <D extends Render.Attributes.Type = \"dom\">(props?: {\n\t\t\t\tattrType?: D;\n\t\t\t}) => Render.Attributes.DateInput<S, O, D>;\n\t\t\tevent: {\n\t\t\t\t<D extends Render.Attributes.Type = \"dom\">(\n\t\t\t\t\tevent: CALENDAR.EVENTS,\n\t\t\t\t\tprops?: {\n\t\t\t\t\t\tattrType?: D;\n\t\t\t\t\t},\n\t\t\t\t): Render.Attributes.DateEvent<S, O, D>;\n\t\t\t\t<D extends Render.Attributes.Type = \"dom\">(\n\t\t\t\t\teventName: keyof typeof CALENDAR.EVENTS,\n\t\t\t\t\tprops?: {\n\t\t\t\t\t\tattrType?: D;\n\t\t\t\t\t},\n\t\t\t\t): Render.Attributes.DateEvent<S, O, D>;\n\t\t\t};\n\t\t\tcell: {\n\t\t\t\t<D extends Render.Attributes.Type = \"dom\">(\n\t\t\t\t\tdateCell: Extras.Date.CellDate,\n\t\t\t\t\tprops?: {\n\t\t\t\t\t\tattrType?: D;\n\t\t\t\t\t},\n\t\t\t\t): Render.Attributes.DateCell<S, O, D>;\n\t\t\t\t<D extends Render.Attributes.Type = \"dom\">(\n\t\t\t\t\ttimeCell: Extras.Date.CellTime,\n\t\t\t\t\tprops?: {\n\t\t\t\t\t\tattrType?: D;\n\t\t\t\t\t},\n\t\t\t\t): Render.Attributes.DateCell<S, O, D>;\n\t\t\t\t<D extends Render.Attributes.Type = \"dom\">(\n\t\t\t\t\titems: DateAttributeCells,\n\t\t\t\t\tprops?: {\n\t\t\t\t\t\tattrType?: D;\n\t\t\t\t\t},\n\t\t\t\t): Render.Attributes.DateCell<S, O, D>;\n\t\t\t};\n\t\t\toption: <D extends Render.Attributes.Type = \"dom\">(\n\t\t\t\toption: Extras.Date.Option,\n\t\t\t\tprops?: {\n\t\t\t\t\tattrType?: D;\n\t\t\t\t},\n\t\t\t) => Render.Attributes.DateCell<S, O, D>;\n\t\t};\n\t}\n>;\nexport function solidIntegration<S extends Field.Setup, O extends Form.Options>(\n\tbasic: FunctionProps.Field<S, O>,\n): IntegrationSolid<S, O> {\n\tconst { key, setup, store, options } = basic;\n\t// check user process\n\tlet result = undefined as any;\n\tif (setup.type === \"select\" || setup.type === \"select.radio\") {\n\t\tresult = {\n\t\t\ttrigger: (props) => {\n\t\t\t\tif (store.hooksUsed().solid == null) {\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\"qform: solid hook does not exist, please add it to options.storeHooks option!\",\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tconst reactive = store.hooksUsed().solid?.call();\n\t\t\t\tconst attrType = props?.attrType ?? \"dom\"; //as typeof props.attrType;\n\t\t\t\treturn renderAttributesSelectTrigger(basic, { attrType, reactive }) as any;\n\t\t\t},\n\t\t\toption: (value, props) => {\n\t\t\t\tif (store.hooksUsed().solid == null) {\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\"qform: solid hook does not exist, please add it to options.storeHooks option!\",\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tconst reactive = store.hooksUsed().solid?.call();\n\t\t\t\tconst attrType = props?.attrType ?? \"dom\"; //as typeof props.attrType;\n\t\t\t\treturn renderAttributesSelectOption(basic, {\n\t\t\t\t\tattrType,\n\t\t\t\t\treactive,\n\t\t\t\t\toptionValue: value,\n\t\t\t\t}) as any;\n\t\t\t},\n\t\t} as any;\n\t} else if (setup.type === \"date\") {\n\t\tresult = {\n\t\t\tinput: (props) => {\n\t\t\t\tif (store.hooksUsed().solid == null) {\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\"qform: solid hook does not exist, please add it to options.storeHooks option!\",\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tconst reactive = store.hooksUsed().solid?.call();\n\t\t\t\tconst attrType = props?.attrType ?? \"dom\"; //as typeof props.attrType;\n\t\t\t\treturn renderAttributesDateInput(basic, { attrType, reactive }) as any;\n\t\t\t},\n\t\t\tevent: (event, props) => {\n\t\t\t\tif (store.hooksUsed().solid == null) {\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\"qform: solid hook does not exist, please add it to options.storeHooks option!\",\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tconst reactive = store.hooksUsed().solid?.call();\n\t\t\t\tconst attrType = props?.attrType ?? \"dom\"; //as typeof props.attrType;\n\t\t\t\treturn renderAttributesDateEvent(basic, { attrType, reactive }, event) as any;\n\t\t\t},\n\t\t\tcell: (items, props) => {\n\t\t\t\tif (store.hooksUsed().solid == null) {\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\"qform: solid hook does not exist, please add it to options.storeHooks option!\",\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tconst reactive = store.hooksUsed().solid?.call();\n\t\t\t\tconst attrType = props?.attrType ?? \"dom\"; //as typeof props.attrType;\n\t\t\t\treturn renderAttributesDateCell(basic, { attrType, reactive }, items) as any;\n\t\t\t},\n\t\t\toption: (option, props) => {\n\t\t\t\tif (store.hooksUsed().solid == null) {\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\"qform: solid hook does not exist, please add it to options.storeHooks option!\",\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tconst reactive = store.hooksUsed().solid?.call();\n\t\t\t\tconst attrType = props?.attrType ?? \"dom\"; //as typeof props.attrType;\n\t\t\t\treturn renderAttributesDateOption(basic, { attrType, reactive }, option) as any;\n\t\t\t},\n\t\t};\n\t} else {\n\t\tresult = (props) => {\n\t\t\tif (store.hooksUsed().solid == null) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t\"qform: solid hook does not exist, please add it to options.storeHooks option!\",\n\t\t\t\t);\n\t\t\t}\n\t\t\tconst reactive = store.hooksUsed().solid?.call();\n\t\t\tconst attrType = props?.attrType ?? \"dom\"; //as typeof props.attrType;\n\t\t\treturn renderAttributesInput(basic, { attrType, reactive }) as any;\n\t\t};\n\t}\n\n\tresult.__integrationFor = \"SOLID\";\n\tresult.__integrationName = \"SOLID-RENDER\";\n\treturn result;\n}\n","import type { Extras, Field, Form, FunctionProps, Integration, Render } from \"../_model\";\nimport { renderAttributesInput } from \"../render/attributes/input\";\n//\nimport { renderAttributesSelectTrigger } from \"../render/attributes/select.trigger\";\nimport { renderAttributesSelectOption } from \"../render/attributes/select.option\";\nimport type { CALENDAR } from \"../const\";\nimport { type DateAttributeCells, renderAttributesDateCell } from \"../render/attributes/date.cell\";\nimport { renderAttributesDateInput } from \"../render/attributes/date.input\";\nimport { renderAttributesDateEvent } from \"../render/attributes/date.event\";\nimport { renderAttributesDateOption } from \"../render/attributes/date.option\";\n//\n\nexport type IntegrationSvelte<\n\tS extends Field.Setup,\n\tO extends Form.Options,\n> = Integration.RenderFactory<\n\tS,\n\tO,\n\t\"SOLID\",\n\t{\n\t\tinput: { input: Render.Attributes.Input<S, O, \"dom\"> };\n\t\tselect: {\n\t\t\ttrigger: Render.Attributes.SelectTrigger<S, O, \"dom\">;\n\t\t\toption: (option: any) => Render.Attributes.SelectOption<S, O, \"dom\">;\n\t\t};\n\t\tdate: {\n\t\t\tinput: Render.Attributes.DateInput<S, O, \"dom\">;\n\t\t\tevent: {\n\t\t\t\t(event: CALENDAR.EVENTS): Render.Attributes.DateEvent<S, O, \"dom\">;\n\t\t\t\t(eventName: keyof typeof CALENDAR.EVENTS): Render.Attributes.DateEvent<S, O, \"dom\">;\n\t\t\t};\n\t\t\tcell: {\n\t\t\t\t(dateCell: Extras.Date.CellDate): Render.Attributes.DateCell<S, O, \"dom\">;\n\t\t\t\t(timeCell: Extras.Date.CellTime): Render.Attributes.DateCell<S, O, \"dom\">;\n\t\t\t\t(items: DateAttributeCells): Render.Attributes.DateCell<S, O, \"dom\">;\n\t\t\t};\n\t\t\toption: (option: Extras.Date.Option) => Render.Attributes.DateCell<S, O, \"dom\">;\n\t\t};\n\t}\n>;\nexport function svelteIntegration<S extends Field.Setup, O extends Form.Options>(\n\tbasic: FunctionProps.Field<S, O>,\n): IntegrationSvelte<S, O> {\n\tconst { key, setup, store, options } = basic;\n\t// check user process\n\n\tlet result = undefined as any;\n\tif (setup.type === \"select\" || setup.type === \"select.radio\") {\n\t\tresult = {\n\t\t\tget trigger() {\n\t\t\t\tconst reactive = store.get();\n\t\t\t\tconst attrType = \"dom\";\n\t\t\t\treturn renderAttributesSelectTrigger(basic, { attrType, reactive }) as any;\n\t\t\t},\n\t\t\tget option() {\n\t\t\t\tconst reactive = store.get();\n\t\t\t\tconst attrType = \"dom\";\n\t\t\t\treturn (value: any) => {\n\t\t\t\t\treturn renderAttributesSelectOption(basic, {\n\t\t\t\t\t\tattrType,\n\t\t\t\t\t\treactive,\n\t\t\t\t\t\toptionValue: value,\n\t\t\t\t\t}) as any;\n\t\t\t\t};\n\t\t\t},\n\t\t} as any;\n\t} else if (setup.type === \"date\") {\n\t\tresult = {\n\t\t\tget input() {\n\t\t\t\tconst reactive = store.get();\n\t\t\t\tconst attrType = \"dom\";\n\t\t\t\treturn renderAttributesDateInput(basic, { attrType, reactive }) as any;\n\t\t\t},\n\t\t\tget event() {\n\t\t\t\tconst reactive = store.get();\n\t\t\t\tconst attrType = \"dom\";\n\t\t\t\treturn (event) => {\n\t\t\t\t\treturn renderAttributesDateEvent(basic, { attrType, reactive }, event) as any;\n\t\t\t\t};\n\t\t\t},\n\t\t\tget cell() {\n\t\t\t\tconst reactive = store.get();\n\t\t\t\tconst attrType = \"dom\";\n\t\t\t\treturn (items) => {\n\t\t\t\t\treturn renderAttributesDateCell(basic, { attrType, reactive }, items) as any;\n\t\t\t\t};\n\t\t\t},\n\t\t\tget option() {\n\t\t\t\tconst reactive = store.get();\n\t\t\t\tconst attrType = \"dom\";\n\t\t\t\treturn (option) => {\n\t\t\t\t\treturn renderAttributesDateOption(basic, { attrType, reactive }, option) as any;\n\t\t\t\t};\n\t\t\t},\n\t\t};\n\t} else {\n\t\tresult = {\n\t\t\tget input() {\n\t\t\t\tconst reactive = store.get();\n\t\t\t\tconst attrType = \"dom\";\n\t\t\t\treturn renderAttributesInput(basic, { attrType, reactive }) as any;\n\t\t\t},\n\t\t};\n\t}\n\n\tresult.__integrationFor = \"SVELTE\";\n\tresult.__integrationName = \"SVELTE-RENDER\";\n\treturn result;\n}\n","import type { Field, Form, FunctionProps } from \"../_model\";\nimport { domIntegration } from \"../integrations/dom\";\nimport { refIntegration } from \"../integrations/ref\";\nimport { preactIntegration } from \"../integrations/preact\";\nimport { reactIntegration } from \"../integrations/react\";\nimport { solidIntegration } from \"../integrations/solid\";\nimport { svelteIntegration } from \"../integrations/svelte\";\n\nexport function createRender<S extends Field.Setup, O extends Form.Options>(\n\tprops: FunctionProps.Field<S, O>,\n) {\n\tconst { setup } = props;\n\treturn {\n\t\tdom: domIntegration(props),\n\t\tref: refIntegration(props),\n\t\tpreact: preactIntegration(props),\n\t\treact: reactIntegration(props),\n\t\tsolid: solidIntegration(props),\n\t\tsvelte: svelteIntegration(props),\n\t};\n}\n","import { onMount, task } from \"@qundus/qstate\";\nimport type { Addon, Field, Form, FunctionProps } from \"../../_model\";\nimport { isServerSide } from \"@qundus/qstate/checks\";\n\nexport function mountCycle<S extends Field.Setup, O extends Form.Options>(\n\tprops: FunctionProps.Field<S, O>,\n\tupdate: Addon.FieldUpdate<S, O>,\n) {\n\tconst { setup, store } = props;\n\tconst next_cycle = update.cycle(setup.initCycle);\n\tonMount(store, () => {\n\t\tlet ureturns = null as null | void | (() => void);\n\t\tif (setup.onMount) {\n\t\t\ttask(async () => {\n\t\t\t\tureturns = await setup?.onMount?.({\n\t\t\t\t\tsetup,\n\t\t\t\t\tupdate: update as any,\n\t\t\t\t\tisServerSide,\n\t\t\t\t});\n\t\t\t\tnext_cycle?.();\n\t\t\t});\n\t\t} else {\n\t\t\tnext_cycle?.();\n\t\t}\n\t\treturn () => {\n\t\t\tif (ureturns != null && typeof ureturns === \"function\") {\n\t\t\t\tureturns();\n\t\t\t}\n\t\t};\n\t});\n}\n\n// should reset field here\n// check validity\n// console.log(\"form store mounts :: \", $store.get());\n// const form = form_init;\n// const conditions = form.conditions;\n// const start = {\n// \tstatus: form.status,\n// };\n// for (const key in conditions) {\n// \tconst field = fields[key];\n// \tconst valid = conditions[key].valid;\n// \t// setup file types\n// \tif (field.type === \"file\" && field.value != null) {\n// \t\t// const value = processFileValue(\n// \t\t// \t{ $store: $store as any, field, key, options },\n// \t\t// \t{ event: null, value: field.value },\n// \t\t// \t{ manualUpdate: true, preprocessValue: true },\n// \t\t// \tform,\n// \t\t// );\n// \t\t// $store.setKey()\n// \t}\n// \tif (!valid) {\n// \t\tstart.status = \"idle\";\n// \t}\n// }\n// if (start.status !== form.status) {\n// \t$store.setKey(\"status\", start.status);\n// }\n//\n","import type { Field, Form, FunctionProps } from \"../../_model\";\nimport { FIELD } from \"../../const\";\n\nexport type FieldAddonRemove<_S extends Field.Setup, _O extends Form.Options> = {\n\toption: (option: any) => void;\n\toptionByIndex: (index: number) => void;\n};\nexport function fieldAddonRemove<S extends Field.Setup, O extends Form.Options>(\n\tprops: FunctionProps.FieldAddon<S, O>,\n): FieldAddonRemove<S, O> {\n\tconst { setup, store } = props;\n\treturn {\n\t\toption: (option) => {\n\t\t\tconst next = { ...store.get() } as Field.StoreObject<Field.Setup<\"select\">>;\n\t\t\tconst valueKey = next.extras.valueKey;\n\t\t\tlet value = next.value as any | any[];\n\t\t\tif (next.element.multiple) {\n\t\t\t\tif (Array.isArray(value)) {\n\t\t\t\t\tvalue = value.filter(\n\t\t\t\t\t\t(item) => item[item.__valueKey ?? valueKey] !== option[option.__valueKey ?? valueKey],\n\t\t\t\t\t);\n\t\t\t\t\tif (value.length <= 0) {\n\t\t\t\t\t\tvalue = undefined;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tvalue = undefined;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tvalue = undefined;\n\t\t\t}\n\t\t\tnext.value = value;\n\t\t\tnext.__internal.manual = true;\n\t\t\tnext.__internal.preprocess = true;\n\t\t\tnext.event.ev = undefined;\n\t\t\t//\n\t\t\tnext.event.DOM = FIELD.DOM.IDLE;\n\t\t\tnext.event.MUTATE = FIELD.MUTATE.ELEMENT;\n\t\t\tstore.set(next as any);\n\t\t},\n\t\toptionByIndex: (index) => {\n\t\t\tconst state = { ...store.get() };\n\t\t\tlet value = state.value as any | any[];\n\t\t\tif (state.element.multiple) {\n\t\t\t\tif (Array.isArray(value)) {\n\t\t\t\t\tvalue = value.filter((_item, idx) => idx !== index);\n\t\t\t\t\tif (value.length <= 0) {\n\t\t\t\t\t\tvalue = undefined;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tvalue = undefined;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tvalue = undefined;\n\t\t\t}\n\t\t\tstate.value = value;\n\t\t\tstate.__internal.manual = true;\n\t\t\tstate.__internal.preprocess = true;\n\t\t\tstate.event.ev = undefined;\n\t\t\tstore.set(state);\n\t\t},\n\t};\n}\n","import type { Extras, Field, Form, FunctionProps } from \"../../_model\";\nimport { FIELD, type MISC } from \"../../const\";\n\nexport type FieldAddonUpdate<S extends Field.Setup, O extends Form.Options> = {\n\tvalue: (\n\t\tvalue: S[\"value\"] | ((prev: undefined) => S[\"value\"] | undefined) | undefined,\n\t\tconfigs?: { preprocess?: boolean; noValidate?: boolean },\n\t) => void;\n\tcondition: (\n\t\tvalue: Partial<Field.Condition> | ((prev: Field.Condition) => Partial<Field.Condition>),\n\t) => void;\n\telement: (\n\t\tvalue: Partial<Field.Element<S>> | ((prev: Field.Element<S>) => Partial<Field.Element<S>>),\n\t\tconfigs?: { noValidate?: boolean },\n\t) => void;\n\tprops: <G extends S[\"props\"]>(\n\t\tvalue: Partial<G> | ((prev: G) => Partial<G> | undefined) | undefined,\n\t) => void;\n\t/**\n\t * update current cycle to send signal to field listeners of what cycle this field\n\t * is in.\n\t * @param cycle the requested cycle, updated immediatly.\n\t * @returns a function to end the requested cycle and go back to CHANGE cycle only if no\n\t * other requests have been made\n\t */\n\tcycle: <G extends FIELD.CYCLE>(\n\t\tcycle: G | undefined | null,\n\t) => G extends FIELD.CYCLE.IDLE ? void : () => void;\n\t// extras indvidually\n\tselect: <E extends Extras.Select.In>(props: Partial<E> | ((prev: E) => Partial<E>)) => void;\n\tselectByValue: (values: any | any[]) => void;\n\tselectByIndex: (indecies: number | number[]) => void;\n\tcheckbox: <E extends Extras.Checkbox.In>(props: Partial<E> | ((prev: E) => Partial<E>)) => void;\n\ttel: (\n\t\tprops: { country?: (typeof MISC.COUNTRIES)[number] | string; value?: string },\n\t\tconfigs?: { preprocess?: boolean; noValidate?: boolean },\n\t) => void;\n\tdate: (\n\t\tprops: Partial<Extras.Date.In>,\n\t\tconfigs?: { preprocess?: boolean; noValidate?: boolean },\n\t) => void;\n\t// cycleUnsafe:  (cycle: CYCLE) => void;\n\t// validation(): (func: Field.Validate) => (() => void) | null;\n\t// /**\n\t//  * special api to update selections extras\n\t//  */\n\t// extras: <G extends Field.Extras<S>>(props: Partial<G> | ((value: G) => Partial<G>)) => void;\n};\nexport function fieldAddonUpdate<S extends Field.Setup, O extends Form.Options>(\n\tprops: FunctionProps.FieldAddon<S, O>,\n): FieldAddonUpdate<S, O> {\n\tconst { store, options, setup } = props;\n\tlet cycle_tracker = 0;\n\treturn {\n\t\tvalue: (value, configs) => {\n\t\t\tconst next = { ...store.get() };\n\t\t\tconst prev = next.value;\n\t\t\tnext.value = typeof value === \"function\" ? (value as any)(prev) : value;\n\t\t\tnext.__internal.manual = true;\n\t\t\tnext.__internal.preprocess = configs?.preprocess;\n\t\t\tnext.__internal.noValidation = configs?.noValidate;\n\t\t\t//\n\t\t\tnext.event.MUTATE = FIELD.MUTATE.VALUE;\n\t\t\tnext.event.DOM = FIELD.DOM.IDLE;\n\t\t\tstore.set(next);\n\t\t},\n\t\tcondition: (value) => {\n\t\t\tconst next = { ...store.get() };\n\t\t\tconst prev = next.condition;\n\t\t\tconst vv = typeof value === \"function\" ? value(prev) : value;\n\t\t\tnext.condition = { ...prev, ...vv };\n\t\t\tnext.__internal.manual = true;\n\t\t\t// state.__internal.preprocess = configs?.preprocess;\n\t\t\t//\n\t\t\tnext.event.MUTATE = FIELD.MUTATE.CONDITION;\n\t\t\tnext.event.DOM = FIELD.DOM.IDLE;\n\t\t\tstore.set(next);\n\t\t},\n\t\telement: (value, configs) => {\n\t\t\tconst next = { ...store.get() };\n\t\t\tconst prev = next.element;\n\t\t\tconst vv = typeof value === \"function\" ? value(prev) : value;\n\t\t\tnext.element = { ...prev, ...vv };\n\t\t\tnext.__internal.manual = true;\n\t\t\tnext.__internal.noValidation = configs?.noValidate;\n\t\t\t// state.__internal.preprocess = configs?.preprocess;\n\t\t\tnext.event.MUTATE = FIELD.MUTATE.ELEMENT;\n\t\t\tnext.event.DOM = FIELD.DOM.IDLE;\n\t\t\tstore.set(next);\n\t\t},\n\t\tprops: (value) => {\n\t\t\tconst next = { ...store.get() };\n\t\t\tconst prev = next.props;\n\t\t\tconst vv = typeof value === \"function\" ? (value as any)(prev) : value;\n\t\t\tnext.props = vv;\n\t\t\tnext.__internal.manual = true;\n\t\t\t// state.__internal.preprocess = configs?.preprocess;\n\t\t\tnext.event.MUTATE = FIELD.MUTATE.PROPS;\n\t\t\tnext.event.DOM = FIELD.DOM.IDLE;\n\t\t\tstore.set(next);\n\t\t},\n\t\tcycle: (cycle) => {\n\t\t\tif (cycle == null) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst next = { ...store.get() };\n\t\t\tconst prev = next.event.CYCLE;\n\t\t\tif (cycle === FIELD.CYCLE.INIT && prev > FIELD.CYCLE.INIT) {\n\t\t\t\tthrow new Error(\"qform: cannot move to INIT cycle after IDLE has been instilled!\");\n\t\t\t}\n\t\t\tnext.event.CYCLE = cycle;\n\t\t\tnext.event.MUTATE = FIELD.MUTATE.CYCLE;\n\t\t\tnext.event.DOM = FIELD.DOM.IDLE;\n\t\t\tif (cycle === FIELD.CYCLE.IDLE) {\n\t\t\t\tif (cycle_tracker > 0) {\n\t\t\t\t\t// means that there's a cycle controlled by user and will go back\n\t\t\t\t\t// to IDLE once done, if not, user should know they're in control of this\n\t\t\t\t\treturn null as any;\n\t\t\t\t}\n\t\t\t\tstore.set(next);\n\t\t\t\treturn null as any;\n\t\t\t} else {\n\t\t\t\tstore.set(next);\n\t\t\t}\n\t\t\t// console.log(\"tracker :: \", cycle, \" :: \", cycle_tracker);\n\t\t\tcycle_tracker++;\n\t\t\treturn () => {\n\t\t\t\tconst next = { ...store.get() };\n\t\t\t\tcycle_tracker--;\n\t\t\t\t// console.log(\"tracker done :: \", cycle, \" :: \", cycle_tracker);\n\t\t\t\tif (cycle_tracker > 0 || next.event.CYCLE === FIELD.CYCLE.IDLE) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tcycle_tracker = 0;\n\t\t\t\tnext.event.CYCLE = FIELD.CYCLE.IDLE;\n\t\t\t\tnext.event.MUTATE = FIELD.MUTATE.CYCLE;\n\t\t\t\tnext.event.DOM = FIELD.DOM.IDLE;\n\t\t\t\tstore.set(next);\n\t\t\t};\n\t\t},\n\t\tselect: (value) => {\n\t\t\tconst next = { ...store.get() };\n\t\t\tconst prev = next.extras;\n\t\t\tconst vv = typeof value === \"function\" ? (value as any)(prev) : value;\n\t\t\tnext.extras = { ...prev, ...vv };\n\t\t\tnext.__internal.manual = true;\n\t\t\t// state.__internal.preprocess = configs?.preprocess;\n\t\t\tnext.event.MUTATE = FIELD.MUTATE.EXTRAS;\n\t\t\tnext.event.DOM = FIELD.DOM.IDLE;\n\t\t\tstore.set(next);\n\t\t},\n\t\tselectByValue: (_values) => {\n\t\t\tconst next = { ...store.get() } as Field.StoreObject<Field.Setup<\"select\">>;\n\t\t\tconst values = Array.isArray(_values) ? _values : _values == null ? [] : [_values];\n\t\t\tconst options = next.extras.options;\n\t\t\tif (values.length <= 0 || options == null || options.length <= 0) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst result = [] as any[];\n\t\t\tfor (const value of values) {\n\t\t\t\tif (value == null) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst valueKey = next.extras.valueKey;\n\t\t\t\tconst idx = options.findIndex((item) => item[item.__valueKey ?? valueKey] === value);\n\t\t\t\tif (idx < 0) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst option = options[idx];\n\t\t\t\tresult.push(option);\n\t\t\t}\n\n\t\t\tif (result.length <= 0) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t//\n\t\t\tnext.value = next.element.multiple ? result : result[0];\n\t\t\tnext.__internal.manual = true;\n\t\t\tnext.event.MUTATE = FIELD.MUTATE.VALUE;\n\t\t\tnext.event.DOM = FIELD.DOM.IDLE;\n\t\t\tstore.set(next as any);\n\t\t},\n\t\tselectByIndex: (_indieces) => {\n\t\t\tconst next = { ...store.get() } as Field.StoreObject<Field.Setup<\"select\">>;\n\t\t\tconst indieces = Array.isArray(_indieces) ? _indieces : _indieces == null ? [] : [_indieces];\n\t\t\tconst options = next.extras.options;\n\t\t\tif (indieces.length <= 0 || options == null || options.length <= 0) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst result = [] as any[];\n\t\t\tfor (const index of indieces) {\n\t\t\t\tif (\n\t\t\t\t\tindex == null ||\n\t\t\t\t\ttypeof index !== \"number\" ||\n\t\t\t\t\tindex < 0 ||\n\t\t\t\t\tindex >= next.extras.options.length\n\t\t\t\t) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst option = options[index];\n\t\t\t\tif (option == null) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tresult.push(option);\n\t\t\t}\n\n\t\t\tif (result.length <= 0) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t//\n\t\t\tnext.value = next.element.multiple ? result : result[0];\n\t\t\tnext.__internal.manual = true;\n\t\t\tnext.event.MUTATE = FIELD.MUTATE.VALUE;\n\t\t\tnext.event.DOM = FIELD.DOM.IDLE;\n\t\t\tstore.set(next as any);\n\t\t},\n\t\tcheckbox: (value) => {\n\t\t\tconst next = { ...store.get() };\n\t\t\tconst prev = next.extras;\n\t\t\tconst vv = typeof value === \"function\" ? (value as any)(prev) : value;\n\t\t\tnext.extras = { ...prev, ...vv };\n\t\t\tnext.__internal.manual = true;\n\t\t\t// state.__internal.preprocess = configs?.preprocess;\n\t\t\tnext.event.MUTATE = FIELD.MUTATE.EXTRAS;\n\t\t\tnext.event.DOM = FIELD.DOM.IDLE;\n\t\t\tstore.set(next);\n\t\t},\n\t\ttel(props, configs) {\n\t\t\tif (props == null) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst next = { ...store.get() };\n\t\t\tconst extras = next.extras as Extras.Tel.Out<Field.Setup<\"tel\">>;\n\t\t\tconst vv = extras.value?.preservedNoCode ?? next.value ?? \"\";\n\t\t\tlet country = \"\";\n\t\t\t// const phone = extras.value?.numberNoCode;\n\t\t\tif (props.country != null) {\n\t\t\t\tconst dd = extras.international.prefix ?? \"+\";\n\t\t\t\tcountry =\n\t\t\t\t\ttypeof props.country === \"string\"\n\t\t\t\t\t\t? props.country\n\t\t\t\t\t\t: `${dd}${props.country.dial_code.replace(\"+\", \"\")}`;\n\t\t\t\textras.international.prefix = null;\n\t\t\t\textras.international.country = null;\n\t\t\t}\n\t\t\tnext.extras = extras as any;\n\t\t\tnext.value = `${country}${props.value ?? vv}`;\n\t\t\tnext.__internal.manual = true;\n\t\t\tnext.__internal.preprocess = configs?.preprocess;\n\t\t\tnext.__internal.noValidation = configs?.noValidate;\n\t\t\t// state.__internal.preprocess = configs?.preprocess;\n\t\t\tnext.event.MUTATE = FIELD.MUTATE.EXTRAS;\n\n\t\t\tnext.event.DOM = FIELD.DOM.IDLE;\n\t\t\tstore.set(next);\n\t\t},\n\t\tdate(props, configs) {\n\t\t\tif (props == null) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst next = { ...store.get() };\n\t\t\tconst extras = next.extras as Extras.Tel.Out<Field.Setup<\"date\">>;\n\n\t\t\t//\n\t\t\tnext.extras = { ...props, ...extras } as any;\n\t\t\tnext.__internal.manual = true;\n\t\t\tnext.__internal.preprocess = configs?.preprocess;\n\t\t\tnext.__internal.noValidation = configs?.noValidate;\n\t\t\t// state.__internal.preprocess = configs?.preprocess;\n\t\t\tnext.event.MUTATE = FIELD.MUTATE.EXTRAS;\n\n\t\t\tnext.event.DOM = FIELD.DOM.IDLE;\n\t\t\tstore.set(next);\n\t\t},\n\t\t// cycleUnsafe(cycle) {\n\t\t// \tconst state = store.get();\n\t\t// \tconst prev = state.event.CYCLE;\n\t\t// \tif (prev >= CYCLE.MOUNT && cycle === CYCLE.MOUNT) {\n\t\t// \t\tthrow new Error(\"qform: cannot move to mount cycle after <change> has been instilled!\");\n\t\t// \t}\n\t\t// \tstate.event.CYCLE = cycle;\n\t\t// \tstate.event.MUTATE = MUTATE.CYCLE;\n\t\t// \tstate.event.DOM = DOM.IDLE;\n\t\t// \tstore.set({ ...state });\n\t\t// \tcycle_tracker.push(prev);\n\t\t// },\n\t\t// validation() {\n\t\t// \treturn (func: Field.Validate) => {\n\t\t// \t\tif (func == null || typeof func !== \"function\") {\n\t\t// \t\t\treturn null;\n\t\t// \t\t}\n\t\t// \t\tlet idx = null as number | null;\n\t\t// \t\tif (setup.validate == null) {\n\t\t// \t\t\tsetup.validate = func;\n\t\t// \t\t} else if (Array.isArray(setup.validate)) {\n\t\t// \t\t\tidx = setup.validate.push(func);\n\t\t// \t\t\tidx--;\n\t\t// \t\t} else {\n\t\t// \t\t\tsetup.validate = [setup.validate, func];\n\t\t// \t\t\tidx = 1;\n\t\t// \t\t}\n\t\t// \t\treturn () => {\n\t\t// \t\t\tif (typeof setup.validate === \"function\") {\n\t\t// \t\t\t\tsetup.validate = null;\n\t\t// \t\t\t} else {\n\t\t// \t\t\t\tif (setup.validate != null) {\n\t\t// \t\t\t\t\tsetup.validate = setup.validate.filter((_item, index) => index !== idx);\n\t\t// \t\t\t\t\tif (setup.validate.length <= 0) {\n\t\t// \t\t\t\t\t\tsetup.validate = null;\n\t\t// \t\t\t\t\t}\n\t\t// \t\t\t\t}\n\t\t// \t\t\t}\n\t\t// \t\t};\n\t\t// \t};\n\t\t// },\n\t};\n}\n","import type { Field, Form, FunctionProps } from \"../../_model\";\nimport { isFieldIncomplete } from \"../checks/is-field-incomplete\";\nimport { IGNORED_SETUP_KEYS, FIELD } from \"../../const\";\nimport { processValue } from \"../processors/value\";\n\n// TODO: atom store may become inconsistent with onchange function\n// find another way to do it!\nexport function prepareInit<S extends Field.Setup, O extends Form.Options>(\n\tkey: string,\n\tsetup: S,\n\toptions: O | undefined,\n\tstore: Field.Store<S, O>,\n): Field.StoreObject<S> {\n\t// initialize\n\tconst fieldProps = { key, setup, store, options };\n\tconst init: Field.StoreObject<S> = {\n\t\t__internal: {\n\t\t\tkey: key,\n\t\t\tmanual: false,\n\t\t\tpreprocess: true,\n\t\t},\n\t\tevent: {\n\t\t\tDOM: FIELD.DOM.INIT,\n\t\t\tCYCLE: FIELD.CYCLE.INIT,\n\t\t\tMUTATE: FIELD.MUTATE.INIT,\n\t\t\tRENDER: FIELD.RENDER.INIT,\n\t\t\tev: undefined,\n\t\t},\n\t\tvalue: setup.value,\n\t\tprops: setup.props,\n\t\terrors: undefined,\n\t\textras: setup.type === \"checkbox\" ? setup.checkbox : (undefined as any),\n\t\tcondition: {\n\t\t\tvalid: true,\n\t\t\terror: false,\n\t\t\tupdated: false,\n\t\t\tby: false,\n\t\t},\n\t\telement: {\n\t\t\tfocused: false,\n\t\t\tvisited: false,\n\t\t\tentered: false,\n\t\t\tleft: false,\n\t\t},\n\t};\n\n\t// setup element\n\tfor (const key in setup) {\n\t\tif (key in IGNORED_SETUP_KEYS) {\n\t\t\tcontinue;\n\t\t}\n\t\t// @ts-expect-error\n\t\tinit.element[key] = setup[key];\n\t}\n\n\t// process initial value and extras for certain types\n\tswitch (setup.type) {\n\t\tcase \"select\":\n\t\tcase \"select.radio\":\n\t\tcase \"file\":\n\t\tcase \"checkbox\":\n\t\tcase \"tel\":\n\t\tcase \"date\":\n\t\t\tinit.value = processValue(fieldProps, {\n\t\t\t\t$next: init,\n\t\t\t\tel: undefined,\n\t\t\t\tvalue: setup.value,\n\t\t\t\tmanualUpdate: true,\n\t\t\t\tpreprocessValue: true,\n\t\t\t});\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tbreak;\n\t}\n\n\t//\n\tif (!init.element.hidden) {\n\t\tconst incomplete = isFieldIncomplete(setup.value, init);\n\t\tif (incomplete) {\n\t\t\tinit.condition.valid = false;\n\t\t\t// init.condition.error = \"incomplete\"; // TODO: make this an config option\n\t\t\t// console.log(\"cc :: \", key, \" :: \", JSON.stringify(condition));\n\t\t}\n\n\t\tif (setup.value != null) {\n\t\t\tif (setup.type === \"file\") {\n\t\t\t\tif (\n\t\t\t\t\t!(\n\t\t\t\t\t\tsetup.value instanceof File ||\n\t\t\t\t\t\t(Array.isArray(setup.value) && setup.value.length > 0 && setup.value[0] instanceof File)\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\tinit.condition.valid = false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn init;\n}\n","import type { Extras, Field, Form, FunctionProps } from \"../../_model\";\nimport { FIELD } from \"../../const\";\nimport { prepareInit } from \"../../field/preparations/init\";\n\nexport type FieldAddonReset<_S extends Field.Setup, _O extends Form.Options> = {\n\t/** reset field to setup.value, use configs.clear to force clearing = undefined */\n\tvalue: (configs?: { clear?: boolean }) => void;\n\ttel: (configs?: { clear?: boolean; keepCountry?: boolean }) => void;\n\t/** reset all data to field start setup */\n\torigin: () => void;\n\t/**\n\t * simple method to\n\t * @returns\n\t */\n\t// cycle: () => void;\n};\nexport function fieldAddonReset<S extends Field.Setup, O extends Form.Options>(\n\tprops: FunctionProps.FieldAddon<S, O>,\n): FieldAddonReset<S, O> {\n\tconst { key, setup, options, store } = props;\n\treturn {\n\t\torigin: () => {\n\t\t\tconst next = prepareInit(key, setup, options, store);\n\t\t\tnext.__internal.manual = true;\n\t\t\tnext.__internal.preprocess = true;\n\t\t\tnext.event.ev = undefined;\n\t\t\t//\n\t\t\tnext.event.DOM = FIELD.DOM.IDLE;\n\t\t\tnext.event.MUTATE = FIELD.MUTATE.__RESET;\n\t\t\tstore.set(next);\n\t\t},\n\t\tvalue: (configs) => {\n\t\t\tconst next = { ...store.get() };\n\t\t\tnext.value = configs?.clear ? undefined : setup.value;\n\t\t\tnext.__internal.manual = true;\n\t\t\tnext.__internal.preprocess = true;\n\t\t\tnext.event.ev = undefined;\n\t\t\t//\n\t\t\tnext.event.DOM = FIELD.DOM.IDLE;\n\t\t\tnext.event.MUTATE = FIELD.MUTATE.VALUE;\n\t\t\tstore.set(next);\n\t\t},\n\t\ttel: (configs) => {\n\t\t\tconst next = { ...store.get() };\n\t\t\tconst extras = next.extras as Extras.Tel.Out<Field.Setup<\"tel\">>;\n\t\t\tconst vv = configs?.clear ? undefined : setup.value;\n\t\t\tlet country = null as null | string;\n\t\t\tif (configs?.keepCountry && extras.international.country) {\n\t\t\t\tcountry = `${extras.international.prefix ?? \"+\"}${extras.international.country.dial_code_no_id}`;\n\t\t\t}\n\n\t\t\tif (vv == null && country == null) {\n\t\t\t\tnext.value = null;\n\t\t\t} else {\n\t\t\t\tnext.value = `${country ?? \"\"}${vv ?? \"\"}`;\n\t\t\t}\n\n\t\t\tnext.__internal.manual = true;\n\t\t\tnext.__internal.preprocess = true;\n\t\t\tnext.event.ev = undefined;\n\t\t\t//\n\t\t\tnext.event.DOM = FIELD.DOM.IDLE;\n\t\t\tnext.event.MUTATE = FIELD.MUTATE.VALUE;\n\t\t\tstore.set(next);\n\t\t},\n\t};\n}\n","import type { Field, Form } from \"../_model\";\n\n//\nimport { prepareOptions } from \"../form/preparations/options\";\nimport { prepareSetup } from \"./preparations/setup\";\nimport { prepareStore } from \"./preparations/store\";\n\n//\nimport { changeCycle } from \"./cycles/change\";\nimport { createRender } from \"../render\";\nimport { mountCycle } from \"./cycles/mount\";\n//\nimport { fieldAddonRemove } from \"../addons/field/remove\";\nimport { fieldAddonUpdate } from \"../addons/field/update\";\nimport { fieldAddonReset } from \"../addons/field/reset\";\nimport { prepareInit } from \"./preparations/init\";\n\n//\nexport function createField<\n\tF extends Field.SetupIn,\n\tS extends Field.SetupInToSetup<F>,\n\tO extends Form.Options,\n\tG extends Form.Store<any, O>,\n>(key: string, inn?: F, formOptions?: O, formStore?: G): Field.Factory<S, O> {\n\t// preparation //\n\tconst options = prepareOptions<O>(formOptions) as O;\n\tconst setup = prepareSetup<F, S>(key, inn, options);\n\tconst store = prepareStore(options);\n\tconst init = prepareInit(key, setup, options, store);\n\t// console.log(\"key :: \", key, \" :: \", init);\n\tstore.set(init);\n\n\t// addons\n\tconst fieldProps = { key, setup, options, store, init };\n\t// render\n\tconst render = createRender(fieldProps);\n\n\tconst remove = fieldAddonRemove(fieldProps);\n\tconst update = fieldAddonUpdate(fieldProps);\n\tconst reset = fieldAddonReset(fieldProps);\n\n\t// cycles\n\tmountCycle(fieldProps, update);\n\tchangeCycle(fieldProps, formStore, update);\n\n\treturn {\n\t\tkey,\n\t\tsetup: setup as any,\n\t\tstore: store as any,\n\t\trender: render as any,\n\t\t//\n\t\tupdate: update as any,\n\t\tremove,\n\t\treset,\n\t};\n}\n","import type { Form } from \"../../_model\";\nimport { createField } from \"../../field\";\n\nexport function prepareFields<\n\tI extends Form.FieldsIn,\n\tF extends Form.Fields<I>,\n\tO extends Form.Options<F> | undefined,\n\tG extends Form.Store<any, any>,\n>(inn: I | undefined, options: O | undefined, formStore: G | undefined) {\n\tconst fields = {} as F;\n\tfor (const key in inn) {\n\t\tconst fieldFactoryIn = inn[key];\n\t\tconst field = createField(key, fieldFactoryIn, options, formStore);\n\t\tfields[key] = field as any;\n\t}\n\treturn fields;\n}\n","import { map } from \"@qundus/qstate\";\nimport type { Form } from \"../../_model\";\nimport { deriveAddon } from \"@qundus/qstate/addons\";\nimport { FORM } from \"../../const\";\n\nexport function prepareStore<F extends Form.Fields, O extends Form.Options<F>>(options: O) {\n\tconst init = {\n\t\tvalues: {} as any,\n\t\tconditions: {} as any,\n\t\terrors: {} as any,\n\t\textras: {} as any,\n\t\telements: {},\n\t\tincomplete: [],\n\t\tprops: options?.props,\n\t\tstatus: FORM.STATUS.INIT,\n\t} as Form.StoreObject<any, O>;\n\tconst store = map(init, {\n\t\thooks: options.storeHooks as O[\"storeHooks\"],\n\t\taddons: {\n\t\t\tderive: deriveAddon,\n\t\t},\n\t});\n\n\treturn store as Form.Store<F, O>;\n}\n","import type { Form } from \"../_model\";\n\nexport function setupOptionsMerger<G extends Form.Options>(_base?: G) {\n\tconst base = Object.assign({}, _base ?? {}) as G;\n\t// console.log(\"onmount copied is :: \", onMount);\n\treturn <D extends Form.Options>(target?: D): Form.OptionsMerged<G, D> => {\n\t\tif (target == null) {\n\t\t\tif (base == null) {\n\t\t\t\treturn null as any;\n\t\t\t}\n\t\t\treturn base as any;\n\t\t}\n\t\tconst merged = { ...base, ...target };\n\n\t\t// special handling\n\t\tif (base?.storeHooks) {\n\t\t\tmerged.storeHooks = { ...base.storeHooks, ...target.storeHooks };\n\t\t}\n\n\t\tif (base?.onMount != null || target?.onMount != null) {\n\t\t\tmerged.onMount = async (props, onchange) => {\n\t\t\t\tconst breturns = (await base?.onMount?.(props, onchange)) ?? undefined;\n\t\t\t\tconst ureturns = (await target?.onMount?.(props, onchange)) ?? undefined;\n\t\t\t\t// // priority to children\n\t\t\t\tif (ureturns) {\n\t\t\t\t\treturn ureturns;\n\t\t\t\t}\n\t\t\t\treturn breturns;\n\t\t\t};\n\t\t}\n\n\t\tif (base?.onEffect != null || target?.onEffect != null) {\n\t\t\tmerged.onEffect = (props) => {\n\t\t\t\tbase?.onEffect?.(props);\n\t\t\t\ttarget?.onEffect?.(props);\n\t\t\t};\n\t\t}\n\n\t\t// field events\n\t\tif (base?.fieldsOnChange != null || target?.fieldsOnChange != null) {\n\t\t\tmerged.fieldsOnChange = (props) => {\n\t\t\t\tbase?.fieldsOnChange?.(props);\n\t\t\t\ttarget?.fieldsOnChange?.(props);\n\t\t\t};\n\t\t}\n\n\t\tif (base?.fieldsOnRender != null || target?.fieldsOnRender != null) {\n\t\t\tmerged.fieldsOnRender = (props) => {\n\t\t\t\tbase?.fieldsOnRender?.(props);\n\t\t\t\ttarget?.fieldsOnRender?.(props);\n\t\t\t};\n\t\t}\n\n\t\treturn merged as any;\n\t};\n}\n","import { effect, task, batched, computed } from \"@qundus/qstate\";\nimport type { Addon, Field, Form, FunctionProps } from \"../../_model\";\nimport { FIELD, FORM } from \"../../const\";\nimport { isServerSide } from \"@qundus/qstate/checks\";\n\nexport function changeCycle<F extends Form.Fields, O extends Form.Options<F>>(\n\tprops: FunctionProps.FormCycle<F, O>,\n\tupdate: Addon.FormUpdate<F, O>,\n) {\n\tconst { fields, store, options } = props;\n\tconst stores = [] as Field.Store<any, O>[];\n\tfor (const key in fields) {\n\t\tconst field = fields[key];\n\t\tstores.push(field.store as any);\n\t}\n\teffect(stores, (...stores) => {\n\t\tconst $next = { ...store.get() } as Form.StoreObject<F, O>;\n\t\tconst count = {\n\t\t\tinvalids: 0,\n\t\t\terrors: 0,\n\t\t\tincompletes: 0,\n\t\t\tmounted: 0,\n\t\t};\n\t\t// reset\n\t\t$next.errors = {} as any;\n\t\t$next.extras = {} as any;\n\t\t$next.incomplete = [];\n\n\t\tfor (const store of stores) {\n\t\t\t//\n\t\t\tconst key = store.__internal.key as any;\n\t\t\tif (key == null || typeof key !== \"string\") {\n\t\t\t\tconsole.log(\"qform: key is undefined for store \", store);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\t//\n\t\t\tcount.mounted += store.event.CYCLE >= FIELD.CYCLE.IDLE ? 1 : 0;\n\t\t\t// @ts-expect-error\n\t\t\t$next.values[key] = store.value;\n\t\t\t// @ts-expect-error\n\t\t\t$next.elements[key] = store.element;\n\t\t\t// @ts-expect-error\n\t\t\t$next.conditions[key] = store.condition;\n\t\t\tif (store.errors) {\n\t\t\t\t// @ts-expect-error\n\t\t\t\t$next.errors[key] = store.errors;\n\t\t\t}\n\t\t\tif (store.extras) {\n\t\t\t\t$next.extras[key] = store.extras;\n\t\t\t}\n\n\t\t\t//\n\t\t\tconst condition = store.condition;\n\t\t\tif (condition.valid) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tcount.invalids++;\n\t\t\tif (condition.error) {\n\t\t\t\t$next.incomplete.push(key);\n\t\t\t\tcount.errors++;\n\t\t\t\tif (condition.error === \"incomplete\") {\n\t\t\t\t\tcount.incompletes++;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// before proceeding, check if all fields mounted\n\t\tconst allFieldsMounted = count.mounted >= stores.length;\n\t\tif (!allFieldsMounted) {\n\t\t\tstore.set({ ...$next });\n\t\t\treturn;\n\t\t}\n\n\t\t// finally, assign form status\n\t\tif (count.incompletes > 0 || count.errors > 0) {\n\t\t\t$next.status = count.errors > 0 ? FORM.STATUS.ERROR : FORM.STATUS.INCOMPLETE;\n\t\t} else if (count.invalids > 0) {\n\t\t\t$next.status = FORM.STATUS.IDLE;\n\t\t} else {\n\t\t\t$next.status = FORM.STATUS.VALID;\n\t\t}\n\n\t\tconst eventprops = {\n\t\t\tform: $next,\n\t\t\tprev: store.get(),\n\t\t\tisServerSide,\n\t\t\tfields,\n\t\t\tgetForm: () => store.get(),\n\t\t\tupdate,\n\t\t};\n\t\tif (eventprops.prev.status === FORM.STATUS.INIT) {\n\t\t\ttask(async () => {\n\t\t\t\tawait options?.onMount?.(eventprops, (stores, func) => {\n\t\t\t\t\tif (isServerSide()) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tlet init = true;\n\t\t\t\t\teffect(stores, (...values) => {\n\t\t\t\t\t\tif (init) {\n\t\t\t\t\t\t\tinit = false;\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttask(async () => {\n\t\t\t\t\t\t\tawait func(...values);\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t});\n\t\t} else {\n\t\t\toptions?.onEffect?.(eventprops);\n\t\t}\n\n\t\t// console.log(\"form batched :: \", $next);\n\t\tstore.set({ ...$next });\n\t});\n}\n","import type { Form, FunctionProps } from \"../_model\";\n\n// addons\nimport { formSubmitAddon } from \"../addons/form/submit\";\nimport { formUpdateAddon } from \"../addons/form/update\";\nimport { formValuesAddon } from \"../addons/form/values\";\nimport { formButtonAddon } from \"../addons/form/button\";\n\n// form\nimport { prepareFields } from \"./preparations/fields\";\nimport { prepareStore } from \"./preparations/store\";\nimport { setupOptionsMerger } from \"../methods/setup-options-merger\";\nimport { prepareOptions } from \"./preparations/options\";\n// import { mountCycle } from \"./cycles/mount\";\nimport { changeCycle } from \"./cycles/change\";\n\nexport function createForm<\n\tI extends Form.FieldsIn,\n\tF extends Form.Fields<I>,\n\tO extends Form.Options<F>,\n>(inn?: I, _options?: O): Form.Factory<I, F, O> {\n\t// preparations\n\tconst options = prepareOptions<O>(_options);\n\tconst store = prepareStore<F, O>(options as any);\n\tconst fields = prepareFields<I, F, O, typeof store>(inn, options as any, store);\n\n\t// addons (forced for now)\n\tconst addonProps = { fields, options, store } as FunctionProps.FormAddon<F, O>;\n\tconst submit = formSubmitAddon<F, O>(addonProps);\n\tconst update = formUpdateAddon<F, O>(addonProps);\n\tconst values = formValuesAddon<F, O>(addonProps);\n\tconst button = formButtonAddon<F, O>(addonProps);\n\n\t// cycles\n\t// mountCycle(addonProps, update);\n\tchangeCycle(addonProps, update);\n\n\t// other helpers\n\tlet keys = null as (keyof F)[] | null;\n\treturn {\n\t\tstore,\n\t\tfields: fields as any,\n\t\t// placeholders: PLACEHOLDERS,\n\t\toptions: options as any,\n\t\tget keys() {\n\t\t\treturn () => {\n\t\t\t\tif (keys == null) {\n\t\t\t\t\tkeys = Object.keys(fields ?? {}) as unknown as typeof keys;\n\t\t\t\t}\n\t\t\t\treturn keys as (keyof F)[];\n\t\t\t};\n\t\t},\n\t\t// addons\n\t\tsubmit,\n\t\tupdate,\n\t\tvalues,\n\t\tbutton,\n\t};\n}\n\nexport function createFormSetup<G extends Form.Options>(base?: G) {\n\tconst optionsMerger = setupOptionsMerger(base);\n\treturn <I extends Form.FieldsIn, F extends Form.Fields<I>, D extends Form.Options<F>>(\n\t\tinn?: I,\n\t\t_options?: D,\n\t) => {\n\t\tconst options = optionsMerger<D>(_options);\n\t\treturn createForm<I, F, typeof options>(inn, options);\n\t};\n}\n\n// test types\n// const form = createForm()\n\n// field(field: Keys) {\n// \tconst n = form.getFieldState(field);\n// \treturn state.atom({\n// \t\terror: n?.error,\n// \t\tvalue: n?.value,\n// \t\tactive: n?.active,\n// \t\tdirty: n?.dirty,\n// \t\tinvalid: n?.invalid,\n// \t\tmodified: n?.modified,\n// \t\tname: n?.name,\n// \t\ttouched: n?.touched,\n// \t\tvalid: n?.valid,\n// \t\tvalidating: n?.validating,\n// \t\tvisited: n?.visited,\n// \t});\n// },\n\n// const form = cf<FieldsWithInits<T>>({\n// \tinitialValues: inits,\n// \tvalidate(values) {\n// \t\t// return undefined;\n// \t\tconsole.log(\"validating values :: \", values);\n// \t\tlet errors = null as unknown as Record<string, string>;\n// \t\tfor (const key in fields) {\n// \t\t\tconst inits = fields[key];\n// \t\t\tif (inits == null || typeof inits !== \"object\") {\n// \t\t\t\tcontinue;\n// \t\t\t}\n// \t\t\tif (\"init\" in inits) {\n// \t\t\t\tconst settings = inits as any;\n// \t\t\t\tconst err = settings.validate?.(values[key]);\n// \t\t\t\tif (err != null) {\n// \t\t\t\t\tif (errors == null) errors = {};\n// \t\t\t\t\terrors[key] = err;\n// \t\t\t\t}\n// \t\t\t}\n// \t\t}\n// \t\tstate.set({ errors });\n// \t\treturn errors;\n// \t},\n// \tonSubmit(values, form, callback) {\n// \t\tconst state = form.getState();\n// \t\tif (state.dirty) {\n// \t\t\tconsole.log(\"dirty :: \", state);\n// \t\t\treturn;\n// \t\t}\n// \t\tconsole.log(\"submitted :: \", values);\n// \t\t// form.reset();\n// \t\t// form.restart();\n// \t},\n// \tvalidateOnBlur: true,\n// \t// mutators: {\n// \t// \temail: (value) => {\n// \t// \t\tconsole.log(\"mutate email :: \", value);\n// \t// \t\treturn value;\n// \t// \t},\n// \t// },\n// });\n// form.subscribe(\n// \t(fields) => {\n// \t\tform.resumeValidation();\n// \t},\n// \t{ values: true },\n// );\n\n// for (const key in fields) {\n// \tconst field = fields[key];\n// \tform.registerField(\n// \t\tkey,\n// \t\t(ff) => {\n// \t\t\t// console.log(\"value changed \", key, \" :: \", ff.value);\n// \t\t\tconst validator = (field as any)?.validate;\n// \t\t\tif (typeof validator === \"function\") {\n// \t\t\t\tconst errors = { ...state.get().errors };\n// \t\t\t\tconst error = validator(ff.value);\n// \t\t\t\tconsole.log(\"error occured :: \", error);\n// \t\t\t\tif (error) {\n// \t\t\t\t\t// const state = form.getState();\n// \t\t\t\t\t// ff.error = error;\n// \t\t\t\t\t// ff.invalid = true;\n// \t\t\t\t\t// ff.valid = false;\n// \t\t\t\t\terrors[key] = error;\n// \t\t\t\t\t// state.errors = errors;\n// \t\t\t\t} else if (key in errors) {\n// \t\t\t\t\t// ff.error = null;\n// \t\t\t\t\tdelete errors[key];\n// \t\t\t\t}\n// \t\t\t\tstate.set({ errors });\n// \t\t\t}\n// \t\t},\n// \t\t{\n// \t\t\tvalue: true,\n// \t\t\tactive: true,\n// \t\t\terror: true,\n// \t\t\tinvalid: true,\n// \t\t\ttouched: true,\n// \t\t\tvalid: true,\n// \t\t\tvisited: true,\n// \t\t\tdirty: true,\n// \t\t},\n// \t\t{},\n// \t);\n// }\n"]}