{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./wwwroot/calc/calc_vat/components/base.js","webpack:///./wwwroot/calc/calc_vat/components/calcAddVat.js","webpack:///./wwwroot/calc/calc_vat/components/calcComputeSum.js","webpack:///./wwwroot/calc/calc_vat/components/calcHighlightVat.js","webpack:///./wwwroot/calc/calc_vat/calc.js","webpack:///./wwwroot/calc/common/calculator/utils.js","webpack:///./wwwroot/calc/common/basic_fields.js","webpack:///./wwwroot/calc/common/calculator/calc_complex.js","webpack:///./wwwroot/calc/common/calculator/calc_interface.js","webpack:///./wwwroot/calc/common/calculator/output_fields.js","webpack:///./wwwroot/calc/common/calculator/index.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","VatCalculator","_Calculator","_classCallCheck","_callSuper","arguments","_inherits","self","this","submitOnChange","calcName","addInputField","type","errors","check","v","errClassElem","options","keyup","precision","addOutputField","render","x","html","$","click","val","substring","length","autoSubmit","e","isActive","sendRateStatisticMessage","rate","inputStavkaStatistic","goalParams","message","prefix","args","sendStatisticMessage","blur","undefined","concat","calculatedRate","selectionStart","selectionEnd","tools","selectAllText","apply","on","text","window","getSelection","toString","mainBlockVal","formulaEx1","formulaEx2","sumInput","inputRateVal","result","_get","_getPrototypeOf","inputTitle","rateTitle","rate_text","Calculator","AddVatCalculator","_VatCalculator","setupStatistic","printMessage","exportMessage","isStartedEventIgnore","loadDescription","sendStartedStatistics","params","renderError","isPercent","mainBlockName","vat","formula1","formula2","getLocaleSumInRubbles","verboseNumber","ComputeSumCalculator","sumWithoutVat","HighlightVatCalculator","irregularValueNames","maxVal","decimalRate","split","removeClass","decimalRateStr","addClass","focus","tooltipDiv1","tooltipDiv2","rateType","hide","show","isFixedRateType","calculatedRateStr","hasClass","parseLocaleFloat","slice","sumWithVat","roundNumber","sumNoVat","addVatCalculator","computeSumCalculator","highlightVatCalculator","calcType","data","ShowErrorWay","SHOW_ALL","SHOW_FIRST","Field","_createClass","selectorOrElem","elem","defaultGetValue","init","valid","deleted","isDynamic","_ignore","getValue","f","change","find","getClearValue","defaultValue","set","params_","forEach","err","selector","keepValue","setValue","keepErrors","clearErrors","autoValidation","sender","phase","loud","silent","handler","showErrorWay","document","documentMode","tagName","css","_BaseObjectField","_Field","deepcopy","clearValue","NumberField","_Field2","isFloat","props","disableProps","indexOf","console","error","keyName","$field","closest","inputFilter","focusin","classList","remove","CountField","_NumberField","parseLocaleInt","setupNumberInput","YearField","_NumberField2","allowSpaces","maxLength","PeriodField","_NumberField3","FloatField","_NumberField4","MoneyField","_FloatField","SelectField","_Field3","itemText","reset","RadioField","_Field4","checkedElem","id","parent","prop","CheckboxField","_Field5","control","checked","TextField","_Field6","removeExtraSpace","raw","escapeTags","fields","_Field7","LinkField","selectedLink","event","preventDefault","CalculatorComplex","_CalculatorInterface","htmlNode","_this","calc_","$node","scopeEvalFunc","underscore","script","Function","parseNameType","parts","exec","Error","attr","paramString","match","item","splitPos","warn","varName","substr","test","parseInt","parseFloat","toLowerCase","map","trim","JSON","parse","checkClass","el","class_","getAttribute","autoKey","index","clickOptions","_clickOptions$options","submit","toggleClasses","toArray","classesObj","toggle","className","add","inputs","_parseNameType","outputs","_parseNameType2","renderCode","keys","checkHash","obj","path","_this2","gentle","Array","isArray","writePath","target","part","id_","clearPart","replace","some","__id","push","body","fetchRootElem","findExternalOnly","$table","table","$dataExpandableDiv","elements","createClone","$template","$lastRow","last","$clone","querySelector","cloneNode","_id","genUniqueId","blockPiece","filter","removed","keepOne","beforeRemoval","field","afterRemoval","isFilled","artifacts","getFieldsFlat","getElements","tree","removeFirstEvent","dontSubmitOnRemove","submitForm","_submitOnChange","fetchFields","_ref","_ref2","_slicedToArray","fieldParams","_objectSpread","disabledSubmitting","removeSelector","first","anchor","prepareTemplate","block","_params$prepareTempla","insertAdjacentElement","removePathId","appendButtonSelector","$this","$expandableDiv","keepTable","bp","delete","ignoredEmptyFields","ignoreForEmpty","setCount","_ref3","count","_ref3$removeStrategy","removeStrategy","currentCount","_dynamicFields","nameOrNames","checker","fieldGroups","getFields","resList","inputFields","ignore","__tmpIgnore","isPathInside","checkField","df","a","newOptions","_this3","newValues","reduce","acc","log","clearPath","_exportObject","ignoreList","accum","filled","defaultFilled","enableResetButton","hasValueChanges","fieldsToParse","ignoreCouseEmpty","showReset","resetValuesOnIgnore","unsilence","senderField","_toConsumableArray","res","errorIsVisible","getExportValue","afterFirstPhaseCheck","newValuesString","stringify","lastValuesString","group","processGroup","afterParse","forceRender","skipValueChangesCheck","notes","beforeSubmit","parsing","resetButtons","_statistic","startedSent","isReady","calculateForValidOnly","toggleCustomClasses","calcValid","calculate","beforeRender","_exportObjectFinal","generateExportObject","showResults","hideResults","afterSubmit","CalculatorInterface","debug","_fieldTypes","outputFields","forceOutputs","_inputFieldsTree","view","hash","newFieldTypes","string_or_object","hideOnDefault","Math","random","srcPath","BaseOutputField","calculator","container","setup","paramName","renderFunc","compose","renderMethod","compose_","exportObject","RenderRequiredOutputField","_BaseOutputField","HtmlOutputField","_BaseOutputField2","_HtmlOutputField","LocaleNumOutputField","_BaseOutputField3","minPrecision","maxPrecision","getLocaleNumber","LocaleSumOutputField","_BaseOutputField4","getLocaleSum","MoneyRubleOutputField","_HtmlOutputField2","MoneyTextOutputField","_BaseOutputField5","MoneyRoundedRubleField","_HtmlOutputField3","getRoundedNumberInRubbles","MoneyRoundedRubleOutputField","_HtmlOutputField4","PeriodOutputField","_BaseOutputField6","from_","dateFrom","toLocaleFormat","to_","dateTo","duration","inDays","verboseCountingValue","DateOutputField","_BaseOutputField7","DayOutputField","_BaseOutputField8","PercentOutputField","_HtmlOutputField5","NoteOutputField","_RenderRequiredOutput","convertElemToTextWithLinksForExport","ExportVisibleOutputField","_BaseOutputField9","htmlObject","ToggleOutputField","_RenderRequiredOutput2","slideUpTime","slideUp","slideDownTime","slideDown","ConditionalBlockOutputField","_RenderRequiredOutput3","alternativeBlockSelector","alternativeBlock","ShareOutputField","_HtmlOutputField6","MoneyLocalRoundedOutField","_HtmlOutputField7","getRoundedNumber","createOutputField","_CalculatorComplex","basicFields","showVersionBanner","ShowVersionBanner","setupVersionBanner","setupHandlers","autoAddFields","initialize","_console","_$","_$2","_$3","_$4","print","formData","FormData","append","ajax","url","ExportWordHost","processData","contentType","cache","xhr","XMLHttpRequest","onloadstart","ev","responseType","success","response","textStatus","jQxhr","decodeURI","getResponseHeader","blob","Blob","navigator","msSaveOrOpenBlob","link","createElement","download","href","URL","createObjectURL","location","history","pushState","title","pathname","getHash","RegExp","feedbackBottom","Promise","resolve","reject","load","code","DataVersionSalt","each","initSmartLink","setWarningMessage","IsAuthEnabled","mailSubject","prepend","ym","ymId","ymReachGoal","resetInputFields","dynamic","addDynamicField","ftype","_detectFieldType","_makeFieldObject","disableAutoCheck","onChange","preInit","ft","detect","fieldType","onReset","forced","orderedFields","priorities","sort","b","renderExport","customClass"],"mappings":"aACE,IAAIA,EAAmB,GAGvB,SAASC,EAAoBC,GAG5B,GAAGF,EAAiBE,GACnB,OAAOF,EAAiBE,GAAUC,QAGnC,IAAIC,EAASJ,EAAiBE,GAAY,CACzCG,EAAGH,EACHI,GAAG,EACHH,QAAS,IAUV,OANAI,EAAQL,GAAUM,KAAKJ,EAAOD,QAASC,EAAQA,EAAOD,QAASF,GAG/DG,EAAOE,GAAI,EAGJF,EAAOD,QAKfF,EAAoBQ,EAAIF,EAGxBN,EAAoBS,EAAIV,EAGxBC,EAAoBU,EAAI,SAASR,EAASS,EAAMC,GAC3CZ,EAAoBa,EAAEX,EAASS,IAClCG,OAAOC,eAAeb,EAASS,EAAM,CAAEK,YAAY,EAAMC,IAAKL,KAKhEZ,EAAoBkB,EAAI,SAAShB,GACX,oBAAXiB,QAA0BA,OAAOC,aAC1CN,OAAOC,eAAeb,EAASiB,OAAOC,YAAa,CAAEC,MAAO,WAE7DP,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,KAQvDrB,EAAoBsB,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQrB,EAAoBqB,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,iBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKX,OAAOY,OAAO,MAGvB,GAFA1B,EAAoBkB,EAAEO,GACtBX,OAAOC,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAOrB,EAAoBU,EAAEe,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,IAAQC,KAAK,KAAMD,IAC9I,OAAOF,GAIRzB,EAAoB6B,EAAI,SAAS1B,GAChC,IAAIS,EAAST,GAAUA,EAAOqB,WAC7B,WAAwB,OAAOrB,EAAgB,SAC/C,WAA8B,OAAOA,GAEtC,OADAH,EAAoBU,EAAEE,EAAQ,IAAKA,GAC5BA,GAIRZ,EAAoBa,EAAI,SAASiB,EAAQC,GAAY,OAAOjB,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQC,IAGzG/B,EAAoBkC,EAAI,SAIjBlC,EAAoBA,EAAoBmC,EAAI,M,+6DCjFD,IAE9CC,EAAa,SAAAC,GAAA,SAAAD,IAAA,OAAAE,EAAA,KAAAF,GAAAG,EAAA,KAAAH,EAAAI,WAAA,O,qRAAAC,CAAAL,EAAAC,G,EAAAD,G,EAAA,EAAAT,IAAA,OAAAN,MACf,WAAS,MAAO,QAAQ,CAAAM,IAAA,OAAAN,MACxB,WAAS,MAAO,sBAAsB,CAAAM,IAAA,aAAAN,MAEtC,WACI,IAAIqB,EAAOC,KAEXA,KAAKC,iBACLD,KAAKE,SAAW,gBAEhBF,KAAKG,cAAc,YAAa,WAAY,CACxCC,KAAM,QACNC,OAAQ,CAAC,CAAEC,MAAO,SAAUC,GAAK,OAAa,OAANA,GAAcA,EAAI,GAAKC,aAAc,KAC7EC,QAAS,CAACC,OAAO,KAGrBV,KAAKG,cAAc,aAAc,OAAQ,CACrCC,KAAM,QACNK,QAAS,CAAEC,OAAO,EAAMC,UAAW,KAGvCX,KAAKY,eAAe,kBAAmB,aAAc,CAACC,OAAQ,SAACC,GAAC,OAAKA,GAAGC,MAAK,IAC7Ef,KAAKY,eAAe,kBAAmB,aAAc,CAACC,OAAQ,SAACC,GAAC,OAAKA,GAAGC,MAAK,IAC7Ef,KAAKY,eAAe,gBAAiB,OAAQ,CAACC,OAAQ,SAACC,GAAC,OAAKA,GAAM,OAGnEE,EAAE,+DAA+DC,OAAM,WACnE,IAAIC,EAAMF,EAAEhB,MAAMe,OAClBC,EAAE,cAAcE,IAAIA,EAAIC,UAAU,EAAGD,EAAIE,OAAS,IAClDrB,EAAKsB,gBAGTL,EAAE,yCAAyCC,OAAM,SAASK,GACtDvB,EAAKsB,aACFtB,EAAKwB,UACJxB,EAAKyB,yBAAyBzB,EAAKG,SAAUH,EAAK0B,KAAK,QAG/D,IAAIC,EAAuB,SAACtB,EAAM1B,GAC9B,IAAIiD,EAAa,CACbC,QAAS,eACTC,OAAQ,GACRC,KAAK,CACD1B,OACA1B,UAGRqB,EAAKgC,qBAAqBJ,IAG9BX,EAAE,cAAcgB,MAAM,WACfjC,EAAKwB,eAA0BU,IAAdlC,EAAK0B,MAAoC,OAAd1B,EAAK0B,MAChDC,EAAqB3B,EAAKG,SAAU,GAAFgC,OAAKnC,EAAK0B,KAAI,SAGxDT,EAAE,wBAAwBgB,MAAM,WACzBjC,EAAKwB,UAAYxB,EAAKoC,gBACrBT,EAAqB3B,EAAKG,SAAU,GAAFgC,OAAKnC,EAAKoC,eAAc,KAAAD,OAAInC,EAAKoC,eAAiB,SAG5FnB,EAAE,+CAA+CC,OAAM,WAChDjB,KAAKoC,gBAAkBpC,KAAKqC,cAC3BC,MAAMC,cAAcC,MAAMxC,SAGlCgB,EAAE,gBAAgByB,GAAG,QAAQ,WACzB,GAAG1C,EAAKwB,SAAS,CACb,IAAII,EAAa,CACbC,QAAS,OACTC,OAAQ,GACRC,KAAK,CACDY,KAAMC,OAAOC,eAAeC,aAGpC9C,EAAKgC,qBAAqBJ,SAGrC,CAAA3C,IAAA,cAAAN,MAED,WACIsB,KAAK8C,aAAe,OACpB9C,KAAK+C,WAAa,GAClB/C,KAAKgD,WAAa,GAClBhD,KAAKiD,SAAW,OAChBjD,KAAKkD,aAAe,IAEpBlD,KAAKa,WACR,CAAA7B,IAAA,uBAAAN,MAED,WACI,IAAIyE,EAAMC,EAAAC,EAAA5D,EAAAJ,WAAA,6BAAAzB,KAAA,MAIV,OAHAuF,EAAOG,WAAatD,KAAKsD,WACzBH,EAAOI,UAAYvD,KAAKuD,UACxBJ,EAAOtC,OAAO2C,WAAgC,cAAlBxD,KAAKuD,WAAwD,SAA3BJ,EAAOtC,OAAO2C,WAAmD,QAA3BL,EAAOtC,OAAO2C,UAAsB,IAAM,GACvIL,IACV,CAAAnE,IAAA,2BAAAN,MAED,SAAyB0B,EAAM1B,GAC3B,IAAIiD,EAAa,CACbC,QAAS,SACTC,OAAQ,GACRC,KAAK,CACD1B,OACA1B,UAGRsB,KAAK+B,qBAAqBJ,Q,0FA1Gf,CAAS8B,K,o3DCHW,IAEjCC,EAAgB,SAAAC,GAAA,SAAAD,IAAA,OAAA/D,EAAA,KAAA+D,GAAA9D,EAAA,KAAA8D,EAAA7D,WAAA,O,qRAAAC,CAAA4D,EAAAC,G,EAAAD,G,EAAA,EAAA1E,IAAA,aAAAN,MAClB,WACI0E,EAAAC,EAAAK,EAAArE,WAAA,mBAAAzB,KAAA,MACWoC,KACNE,SAAW,gBAEhBF,KAAK4D,eAAe,CAChB1D,SAAU,MACV2B,OAAQ,eACRgC,aAAc,CACVjC,QAAS,QACTE,KAAM,CACF1B,KATDJ,KASYE,WAGnB4D,cAAe,CACXlC,QAAS,SACTE,KAAM,CACF1B,KAfDJ,KAeYE,WAGnB6D,sBAAsB,IAG1B/D,KAAKgE,iBAAgB,GACrBhE,KAAKiE,uBAAwB,EAE7BjE,KAAKsD,WAAa,gBAClBtD,KAAKuD,UAAY,eACpB,CAAAvE,IAAA,YAAAN,MAED,SAAUwF,GAGN,GAAiB,MAAblE,KAAKyB,KAEL,OADAzB,KAAKmE,eACE,EAGPnE,KAAKiE,wBAKLjE,KAAK+B,qBAJY,CACbF,OAAQ,GACRD,QAAS,cAGb5B,KAAKiE,uBAAwB,GAGjCjE,KAAKoE,WAAY,EACjBpE,KAAKqE,cAAgB,cACrB,IAAIC,EAAMtE,KAAKiD,SAAWjD,KAAKyB,KAAO,IAUtC,OATAzB,KAAK8C,aAAgB9C,KAAKiD,SAAWqB,EAErCtE,KAAKuE,SAAW,mCAChBvE,KAAKwE,SAAW,oCAEhBxE,KAAK+C,WAAaT,MAAMmC,sBAAsBzE,KAAKiD,UAAY,MAAQjD,KAAKyB,KAAO,OACzEa,MAAMmC,sBAAsBH,GAAO,KAAOhC,MAAMoC,cAAcJ,GAAO,IAC/EtE,KAAKgD,WAAaV,MAAMmC,sBAAsBzE,KAAKiD,UAAY,MAAQX,MAAMmC,sBAAsBH,GAAO,MAAQhC,MAAMmC,sBAAsBzE,KAAK8C,cAAiB,KAAOR,MAAMoC,cAAc1E,KAAK8C,cAAiB,KAE9M,O,0FA5DO,CAASrD,G,o3DCFQ,IAEjCkF,EAAoB,SAAAhB,GAAA,SAAAgB,IAAA,OAAAhF,EAAA,KAAAgF,GAAA/E,EAAA,KAAA+E,EAAA9E,WAAA,O,qRAAAC,CAAA6E,EAAAhB,G,EAAAgB,G,EAAA,EAAA3F,IAAA,aAAAN,MACtB,WAEI0E,EAAAC,EAAAsB,EAAAtF,WAAA,mBAAAzB,KAAA,MADWoC,KAGNE,SAAW,eAEhBF,KAAK4D,eAAe,CAChB1D,SAAU,MACV2B,OAAQ,eACRgC,aAAc,CACVjC,QAAS,QACTE,KAAM,CACF1B,KAXDJ,KAWYE,WAGnB4D,cAAe,CACXlC,QAAS,SACTE,KAAM,CACF1B,KAjBDJ,KAiBYE,WAGnB6D,sBAAsB,IAG1B/D,KAAKiE,uBAAwB,EAE7BjE,KAAKsD,WAAa,MAClBtD,KAAKuD,UAAY,eACpB,CAAAvE,IAAA,YAAAN,MAED,SAAUwF,GAGN,IAAIlE,KAAKyB,KAEL,OADAzB,KAAKmE,eACE,EAGPnE,KAAKiE,wBAKLjE,KAAK+B,qBAJY,CACbF,OAAQ,GACRD,QAAS,aAGb5B,KAAKiE,uBAAwB,GAGjCjE,KAAKoE,WAAY,EACjBpE,KAAKqE,cAAgB,cACrB,IAAIC,EAAMtE,KAAKiD,SACX2B,EAAsB,IAANN,EAAYtE,KAAKyB,KAUrC,OATAzB,KAAK8C,aAAe8B,EAAgBN,EAEpCtE,KAAKuE,SAAW,mCAChBvE,KAAKwE,SAAW,oCAEhBxE,KAAK+C,WAAcT,MAAMmC,sBAAsBH,GAAO,MAAQtE,KAAKyB,KAAO,OACxEa,MAAMmC,sBAAsBG,GAAiB,KAAOtC,MAAMoC,cAAcE,GAAiB,IAC3F5E,KAAKgD,WAAcV,MAAMmC,sBAAsBG,GAAiB,MAAQtC,MAAMmC,sBAAsBH,GAAO,MAAQhC,MAAMmC,sBAAsBzE,KAAK8C,cAAgB,KAAOR,MAAMoC,cAAc1E,KAAK8C,cAAgB,KAE7M,O,0FA7DW,CAASrD,G,o3DCFI,IAEjCoF,EAAsB,SAAAlB,GAAA,SAAAkB,IAAA,OAAAlF,EAAA,KAAAkF,GAAAjF,EAAA,KAAAiF,EAAAhF,WAAA,O,qRAAAC,CAAA+E,EAAAlB,G,EAAAkB,G,EAAA,EAAA7F,IAAA,aAAAN,MACxB,WACI0E,EAAAC,EAAAwB,EAAAxF,WAAA,mBAAAzB,KAAA,MACA,IAAImC,EAAOC,KACXD,EAAKG,SAAW,cAEhBF,KAAK4D,eAAe,CAChB1D,SAAU,MACV2B,OAAQ,eACRgC,aAAc,CACVjC,QAAS,QACTE,KAAM,CACF1B,KAAML,EAAKG,WAGnB4D,cAAe,CACXlC,QAAS,SACTE,KAAM,CACF1B,KAAML,EAAKG,WAGnB6D,sBAAsB,IAE1B/D,KAAKiE,uBAAwB,EAE7BjE,KAAK8E,oBAAsB,CAAC,cAAe,kBAE3C9E,KAAKG,cAAc,uBAAwB,iBAAkB,CACzDC,KAAM,QACNK,QAAS,CAAEsE,OAAQ,GAAIrE,OAAO,KAGlCM,EAAE,+DAA+DC,OAAM,WACnE,IAAIC,EAAMF,EAAEhB,MAAMe,OAClBC,EAAE,cAAcE,IAAIA,EAAIC,UAAU,EAAGD,EAAIE,OAAS,IAClDrB,EAAKiF,aAAc,EACnBjF,EAAKsB,gBAGTL,EAAE,oEAAoEC,OAAM,WACxE,IAAIC,EAAMF,EAAEhB,MAAMe,OAClBC,EAAE,wBAAwBE,IAAIA,EAAI+D,MAAM,KAAK,IAC7CjE,EAAE,mBAAmBkE,YAAY,2BACjCnF,EAAKiF,aAAc,EACnBjF,EAAKsB,gBAGTL,EAAE,2EAA2EC,OAAM,WAC/ElB,EAAKoF,eAAiBnE,EAAEhB,MAAMe,OAC9BC,EAAE,kDAAkDD,KAAKhB,EAAKoF,gBAC9DnE,EAAE,mBAAmBoE,SAAS,2BAC9BrF,EAAKiF,aAAc,EACnBjF,EAAKsB,aACDtB,EAAKwB,UAAYxB,EAAK0B,KACtB1B,EAAKyB,yBAAyBzB,EAAKG,SAAUH,EAAK0B,KAAO,KAGzD1B,EAAKyB,yBAAyBzB,EAAKG,SAAUH,EAAKoF,mBAI1DnE,EAAE,kDAAkDC,OAAM,WACtDD,EAAE,mBAAmBkE,YAAY,2BACjClE,EAAE,wBAAwBqE,QAC1BtF,EAAKiF,aAAc,EACnBjF,EAAKsB,gBAGTL,EAAE,iCAAiCC,OAAM,WACrClB,EAAKsB,gBAGTL,EAAE,8CAA8CC,OAAM,SAASK,GAC3DvB,EAAKsB,aACFtB,EAAKwB,UACJxB,EAAKyB,yBAAyBzB,EAAKG,SAAUH,EAAKoC,eAAe,KAAO,IAAIpC,EAAKoC,oBAGzFnC,KAAKsD,WAAa,cAClBtD,KAAKuD,UAAY,eACpB,CAAAvE,IAAA,aAAAN,MAED,WACI,IAAM4G,EAActE,EAAE,gBAChBuE,EAAcvE,EAAE,gBACM,IAAxBhB,KAAKwF,SAAS9G,OACdsC,EAAE,cAAcoE,SAAS,mBACzBpF,KAAKmC,eAAkBnC,KAAKmC,gBAAkB,EAC9CnB,EAAE,0BAA0BD,KAAM,IAAMf,KAAKmC,gBAC7CnB,EAAE,oCAAoCyE,OACtCzE,EAAE,uFAAuF0E,OACzF1F,KAAKuD,UAAY,mBACjBvD,KAAKE,SAAW,0BAChBoF,EAAYG,OACZF,EAAYG,SAEZ1E,EAAE,cAAckE,YAAY,mBAC5BlE,EAAE,oCAAoC0E,OACtC1E,EAAE,uFAAuFyE,OACzFzF,KAAKuD,UAAY,aACjBvD,KAAKE,SAAW,cAChBF,KAAKgF,aAAc,EACnBM,EAAYI,OACZH,EAAYE,UAEnB,CAAAzG,IAAA,YAAAN,MAED,SAAUwF,GAEN,IAAIlE,KAAKgF,cACQ,MAAbhF,KAAKyB,OAAiBzB,KAAKmC,gBACX,MAAbnC,KAAKyB,MAAwC,GAAvBzB,KAAKwF,SAAS9G,OAAgC,4BAAlBsB,KAAKE,WACtDF,KAAKmC,gBAAmC,2BAAjBnC,KAAKE,UAEhC,OADAF,KAAKmE,eACE,EAGPnE,KAAKiE,wBAKLjE,KAAK+B,qBAJY,CACbF,OAAQ,GACRD,QAAS,YAGb5B,KAAKiE,uBAAwB,GAGjC,IAAI0B,EAAyC,GAAvB3F,KAAKwF,SAAS9G,MAEpCsB,KAAKqE,cAAgB,gBACrBrE,KAAKwE,SAAW,oCAChBxE,KAAKuE,SAAYoB,EAEf,2CADA,uDAEF,IAAIC,EAAoB,GACxB5F,KAAKoE,WAAY,EACZuB,EAGG3E,EAAE,mBAAmB6E,SAAS,4BAC9BD,EA/BG5F,KA+BsBmF,eACzBnF,KAAKyB,KAAOa,MAAMwD,iBAhCf9F,KAgCqCmF,eAAeY,MAAM,GAAI,MAEjEH,EAAoB5F,KAAKmC,eAAiB,KAAO,IAAMnC,KAAKmC,gBAC5DnC,KAAKyB,KAAOzB,KAAKmC,gBAAmB,IAAMnC,KAAKmC,gBAAkB,IACjEnC,KAAKoE,WAAY,GARrBwB,EAAoB5F,KAAKyB,KAAO,eAAiBzB,KAAKyB,KAAO,KAYjE,IAAIuE,EAAahG,KAAKiD,SAClBqB,EAAMhC,MAAM2D,YAAaN,EAA+DK,EAAahG,KAAKyB,KAAO,IAAtEuE,EAAahG,KAAKyB,MAAQ,IAAMzB,KAAKyB,MAAsC,GACtHyE,EAAWF,EAAa1B,EAU5B,OATAtE,KAAK8C,aAAeoD,EAEpBlG,KAAK+C,WAAaT,MAAMmC,sBAAsBuB,GAAc,MAAQJ,EAAoB,MACtFtD,MAAMmC,sBAAsBH,GAAO,KAAOhC,MAAMoC,cAAcJ,GAAO,IACvEtE,KAAKgD,WAAaV,MAAMmC,sBAAsBuB,GAAc,YAAc1D,MAAMmC,sBAAsBH,GAAO,MAAQhC,MAAMmC,sBAAsByB,GAAY,KAAO5D,MAAMoC,cAAcwB,GAAY,IAEhMlG,KAAKoE,YACLpE,KAAKyB,KAAOzB,KAAKmC,eAAiB,KAAO,IAAMnC,KAAKmC,kBAEjD,O,0FAhKa,CAAS1C,GCErCuB,GAAE,WACE,IAAImF,EAAmB,IAAIzC,EACvB0C,EAAuB,IAAIzB,EAC3B0B,EAAyB,IAAIxB,EACjCuB,EAAqB7E,UAAW,EAChC8E,EAAuB9E,UAAW,EAElC,IAAM+D,EAActE,EAAE,gBAChBuE,EAAcvE,EAAE,gBAyDtBA,EAAE,+CAA+CC,OAvDjD,WACID,EAAE,qCAAqCkE,YAAY,YACnDlE,EAAEhB,MAAMoF,SAAS,YAEjB,IAAIkB,EAAWtF,EAAE,qCAAqCuF,KAAK,QACvDjD,EAAa,GACF,GAAZgD,GACCH,EAAiB5E,UAAW,EAC5B6E,EAAqB7E,UAAW,EAChC8E,EAAuB9E,UAAW,EAClC4E,EAAiB9E,WAAW,MAAM,GAClCiC,EAAa6C,EAAiB7C,YACb,GAAZgD,GACLH,EAAiB5E,UAAW,EAC5B6E,EAAqB7E,UAAW,EAChC8E,EAAuB9E,UAAW,EAClC8E,EAAuBhF,WAAW,MAAM,GACxCiC,EAAa+C,EAAuB/C,aAEpC6C,EAAiB5E,UAAW,EAC5B6E,EAAqB7E,UAAW,EAChC8E,EAAuB9E,UAAW,EAClC6E,EAAqB/E,WAAW,MAAM,GACtCiC,EAAa8C,EAAqB9C,YAGtCtC,EAAE,kCAAkCD,KAAKuC,GAExB,IAAbgD,GACDtF,EAAE,mBAAmB0E,OACrB1E,EAAE,cAAcyE,OAChBzE,EAAE,8BAA8B0E,OAChC1E,EAAE,iBAAiByE,OAC0B,IAA1CzE,EAAE,8BAA8BE,OAClCoE,EAAYI,OACZH,EAAYE,SAEZH,EAAYG,OACZF,EAAYG,UAIZ1E,EAAE,cAAckE,YAAY,mBAC5BlE,EAAE,mBAAmByE,OACrBzE,EAAE,cAAc0E,OAChB1E,EAAE,oCAAoC0E,OACtC1E,EAAE,uFAAuFyE,OACzFzE,EAAE,8BAA8ByE,OAChCzE,EAAE,iBAAiB0E,OACnBJ,EAAYI,OACZH,EAAYE,e,+BChExB,sCAAIe,EAAe,CACfC,SAAU,EACVC,WAAY,I,8qECChB,IAGMC,EAAK,WAYP,OAAAC,GAXA,SAAAD,EAAYE,EAAgBpG,GAASd,EAAA,KAAAgH,GACjC3G,KAAK8G,KAAO9F,EAAE6F,GACd7G,KAAKS,QAAUA,EACfT,KAAK+G,gBAAkBtG,GAAW,oBAAqBA,EAAUA,EAAQsG,gBAAkB,KAC3F/G,KAAKgH,OACLhH,KAAKiH,OAAQ,EACbjH,KAAKkH,SAAU,EACflH,KAAKmH,WAAY,EACjBnH,KAAKoH,SAAU,IAGnB,EAAApI,IAAA,WAAAN,MAGA,cAAgC,CAAAM,IAAA,WAAAN,MAChC,SAAS6B,MAET,CAAAvB,IAAA,gBAAAN,MACA,WAAkB,OAAOsB,KAAKqH,aAE9B,CAAArI,IAAA,iBAAAN,MACA,WAAmB,OAAOsB,KAAKqH,aAE/B,CAAArI,IAAA,OAAAN,MACA,cAEA,CAAAM,IAAA,WAAAN,MACA,SAAS4I,GACL,IAAIvH,EAAOC,KAKX,OAJAA,KAAK8G,KAAKS,QAAO,SAAUjG,GAAKgG,EAAEvH,EAAK+G,KAAK,OACxC9G,KAAKS,SAAWT,KAAKS,QAAQC,OAC7BV,KAAK8G,KAAKpG,OAAM,SAAUY,GAAKgG,EAAEvH,EAAK+G,KAAK,OAExC9G,KAAK8G,OAGhB,CAAA9H,IAAA,YAAAN,MACA,WAAc,OAAO,IAErB,CAAAM,IAAA,iBAAAN,MAGA,WAAmB,OAAOsB,KAAK8G,KAAKjB,SAAS,QAAU7F,KAAK8G,KAAKU,KAAK,QAAQpG,OAAS,IAAI,CAAApC,IAAA,WAAAN,MAC3F,WAAa,OAAOsB,KAAKyH,kBAAoBzH,KAAK0H,eAAe,CAAA1I,IAAA,SAAAN,MAGjE,WACIsB,KAAKkH,SAAU,IAClB,CAAAlI,IAAA,SAAAV,IAED,WAAe,OAAO0B,KAAKoH,SAAUO,IACrC,SAAWzG,GAAOlB,KAAKoH,QAAUlG,IAAM,CAAAlC,IAAA,cAAAN,MAEvC,iBACwDuD,IAA9BjC,KAAK4H,QAAQpH,aAA6BR,KAAK8G,KAAO9F,EAAEhB,KAAK4H,QAAQpH,eAC9E0E,YAAY,YACGjD,IAAxBjC,KAAK4H,QAAQvH,QACbL,KAAK4H,QAAQvH,OAAOwH,SAAQ,SAAUC,QACT7F,IAArB6F,EAAItH,cACJQ,EAAE8G,EAAItH,cAAc0E,YAAY,OACpClE,EAAE8G,EAAIC,UAAUtC,YAG3B,CAAAzG,IAAA,QAAAN,MAED,SAAMwF,IACFA,EAASA,GAAU,IACP8D,WACRhI,KAAKiI,SAASjI,KAAK0H,cAElBxD,EAAOgE,YACRlI,KAAKmI,gBAEZ,CAAAnJ,IAAA,QAAAN,MAED,SAAM0J,EAAgBC,EAAQC,EAAOC,GACjC,GAAID,EAAQ,EAAG,CACX,IAAME,EAASJ,GAAkBC,GAAUrI,KAAK8G,KAAK,KAAOyB,EACtDxI,EAAOC,KAAK8G,KAAK,GACnBG,GAAQ,EACZ,QAA4BhF,IAAxBjC,KAAK4H,QAAQvH,OAAsB,CACnC,IAAMoI,EAAWzI,KAAK4H,QAAQc,cAAgBlC,IAAaC,SAAW,UAAY,OAC5ElG,EAAIP,KAAKqH,WACT7G,OAA8CyB,IAA9BjC,KAAK4H,QAAQpH,aAA6BR,KAAK8G,KAAO9F,EAAEhB,KAAK4H,QAAQpH,cACtFgI,GAAQxI,KAAKmI,cAClBnI,KAAK4H,QAAQvH,OAAOoI,IAAS,SAAUX,GACnC,IAAKA,EAAIxH,MAAMC,EAAG6H,GAYd,OAXKI,IACDxH,EAAE8G,EAAIC,UAAUrC,OAEZ/C,OAAOgG,SAASC,cAAgC,iBAAhB7I,EAAK8I,SACrC7H,EAAE8G,EAAIC,UAAUe,IAAI,UAAW,cACV7G,IAArB6F,EAAItH,aACJQ,EAAE8G,EAAItH,cAAc4E,SAAS,OAE7B5E,EAAa4E,SAAS,QAE9B6B,GAAQ,GACD,KAInB,OAAOA,EAEX,OAAO,KACV,EAAAjI,IAAA,UAAAN,MA7FD,WAAmB,MAAO,KAAK,CAAAM,IAAA,SAAAN,MA4B/B,SAAcoI,GAAQ,OAAO,MAzCtB,GA8GLiC,EAAgB,SAAAC,GAAA,SAAAD,IAAA,OAAApJ,EAAA,KAAAoJ,GAAAnJ,EAAA,KAAAmJ,EAAAlJ,WAAA,OAAAC,EAAAiJ,EAAAC,GAAApC,EAAAmC,EAAA,EAAA/J,IAAA,gBAAAN,MAClB,WAAkB,OAAO4D,MAAM2G,SAASjJ,KAAK8G,KAAK,GAAGpI,SAAS,CAAAM,IAAA,WAAAN,MAC9D,WAAa,OAAOsB,KAAK8G,KAAK5F,QAAQ,CAAAlC,IAAA,WAAAN,MACtC,SAAS6B,GAAKP,KAAK8G,KAAK5F,IAAIX,KAAK,CAAAvB,IAAA,iBAAAN,MACjC,WAAmB,OAAOsB,KAAK8G,KAAK5F,QAAQ,CAAAlC,IAAA,WAAAN,MAC5C,WACI,IAAMwK,EAAalJ,KAAKyH,gBACxB,IAAK,IAAMzI,KAAOkK,EACd,GAAIA,EAAWlK,KAASgB,KAAK0H,aAAa1I,GACtC,OAAO,EAEf,OAAO,MAXO,CAAS2H,GAgBzBwC,EAAW,SAAAC,GAAA,SAAAD,IAAA,OAAAxJ,EAAA,KAAAwJ,GAAAvJ,EAAA,KAAAuJ,EAAAtJ,WAAA,OAAAC,EAAAqJ,EAAAC,GAAAxC,EAAAuC,EAAA,EAAAnK,IAAA,gBAAAN,MAEb,WAAkB,MAA2B,KAApBsB,KAAK8G,KAAK5F,MAAe,GAAKlB,KAAKqH,aAAa,CAAArI,IAAA,WAAAN,MACzE,SAAS6B,GAAKP,KAAK8G,KAAK5F,IAAIX,KAAK,CAAAvB,IAAA,WAAAN,MACjC,SAAS4I,GACL,IAAIvH,EAAOC,KASX,OARI2C,OAAOgG,SAASC,aAChB5I,KAAK8G,KAAK9E,MAAK,SAAUV,GAAKgG,EAAEvH,EAAK+G,KAAK,OAE1C9G,KAAK8G,KAAKS,QAAO,SAAUjG,GAAKgG,EAAEvH,EAAK+G,KAAK,OAE5C9G,KAAKS,SAAWT,KAAKS,QAAQC,OAC7BV,KAAK8G,KAAKpG,OAAM,SAAUY,GAAKgG,EAAEvH,EAAK+G,KAAK,OAExC9G,KAAK8G,OACf,CAAA9H,IAAA,mBAAAN,MACD,SAAiB2K,EAASC,EAAOC,GAC7B,IAAIxJ,EAAOC,KACXuJ,EAAeA,GAAgB,GAC3BvJ,KAAKS,SACL,CAAC,SAAU,SAAU,aAAaoH,SAAQ,SAAU7J,QACrBiE,IAAvBlC,EAAKU,QAAQzC,KACTuL,EAAaC,QAAQxL,IAAS,EAC9ByL,QAAQC,MAAM,QAADxH,OAASlE,EAAI,sCAAAkE,OAAqCnC,EAAK4J,UAAS,MAG7EL,EAAMtL,GAAQ+B,EAAKU,QAAQzC,OAK3C,IAAM4L,EAAS5J,KAAK8G,KAAK+C,QAAQ,iBACjCD,EAAOpC,KAAK,oBAAoBsC,YAAYT,EAASC,GACrDtJ,KAAK8G,KAAKiD,SAAQ,WACd/J,KAAKgK,UAAUC,OAAO,OACtBL,EAAOpC,KAAK,eAAe/B,aAElC,EAAAzG,IAAA,UAAAN,MApCD,WAAmB,MAAO,OADb,CAASiI,GAyCpBuD,EAAU,SAAAC,GAAA,SAAAD,IAAA,OAAAvK,EAAA,KAAAuK,GAAAtK,EAAA,KAAAsK,EAAArK,WAAA,OAAAC,EAAAoK,EAAAC,GAAAvD,EAAAsD,EAAA,EAAAlL,IAAA,WAAAN,MAEZ,WAAa,OAAOsB,KAAK8G,KAAK5F,MAAQoB,MAAM8H,eAAepK,KAAK8G,KAAK5F,OAASlB,KAAK+G,kBAAkB,CAAA/H,IAAA,OAAAN,MACrG,WAASsB,KAAKqK,kBAAiB,EAAO,GAAI,CAAC,iBAAgB,EAAArL,IAAA,UAAAN,MAF3D,WAAmB,MAAO,YADd,CAASyK,GAOnBmB,EAAS,SAAAC,GAAA,SAAAD,IAAA,OAAA3K,EAAA,KAAA2K,GAAA1K,EAAA,KAAA0K,EAAAzK,WAAA,OAAAC,EAAAwK,EAAAC,GAAA3D,EAAA0D,EAAA,EAAAtL,IAAA,WAAAN,MAEX,WAAa,OAAOsB,KAAK8G,KAAK5F,MAAQoB,MAAM8H,eAAepK,KAAK8G,KAAK5F,OAASlB,KAAK+G,kBAAkB,CAAA/H,IAAA,OAAAN,MACrG,WAASsB,KAAKqK,kBAAiB,EAAO,CAAEG,aAAa,EAAOC,UAAW,GAAK,CAAC,iBAAgB,EAAAzL,IAAA,UAAAN,MAF7F,WAAmB,MAAO,WADf,CAASyK,GAOlBuB,EAAW,SAAAC,GAAA,SAAAD,IAAA,OAAA/K,EAAA,KAAA+K,GAAA9K,EAAA,KAAA8K,EAAA7K,WAAA,OAAAC,EAAA4K,EAAAC,GAAA/D,EAAA8D,EAAA,EAAA1L,IAAA,WAAAN,MAEb,WAAa,OAAOsB,KAAK8G,KAAK5F,MAAQoB,MAAM8H,eAAepK,KAAK8G,KAAK5F,OAASlB,KAAK+G,kBAAkB,CAAA/H,IAAA,OAAAN,MACrG,WAASsB,KAAKqK,kBAAiB,EAAO,CAAEG,aAAa,GAAS,CAAC,iBAAgB,EAAAxL,IAAA,UAAAN,MAF/E,WAAmB,MAAO,aADb,CAASyK,GAOpByB,EAAU,SAAAC,GAAA,SAAAD,IAAA,OAAAjL,EAAA,KAAAiL,GAAAhL,EAAA,KAAAgL,EAAA/K,WAAA,OAAAC,EAAA8K,EAAAC,GAAAjE,EAAAgE,EAAA,EAAA5L,IAAA,WAAAN,MAEZ,WAAa,OAAOsB,KAAK8G,KAAK5F,MAAQoB,MAAMwD,iBAAiB9F,KAAK8G,KAAK5F,OAASlB,KAAK+G,kBAAkB,CAAA/H,IAAA,OAAAN,MACvG,WAASsB,KAAKqK,kBAAiB,EAAM,CAAC1J,UAAW,OAAM,EAAA3B,IAAA,UAAAN,MAFvD,WAAmB,MAAO,YADd,CAASyK,GAOnB2B,EAAU,SAAAC,GAAA,SAAAD,IAAA,OAAAnL,EAAA,KAAAmL,GAAAlL,EAAA,KAAAkL,EAAAjL,WAAA,OAAAC,EAAAgL,EAAAC,GAAAnE,EAAAkE,EAAA,EAAA9L,IAAA,OAAAN,MAEZ,WAASsB,KAAKqK,kBAAiB,EAAM,GAAI,CAAC,iBAAgB,EAAArL,IAAA,UAAAN,MAD1D,WAAmB,MAAO,YADd,CAASkM,GAMnBI,EAAW,SAAAC,GAAA,SAAAD,IAAA,OAAArL,EAAA,KAAAqL,GAAApL,EAAA,KAAAoL,EAAAnL,WAAA,OAAAC,EAAAkL,EAAAC,GAAArE,EAAAoE,EAAA,EAAAhM,IAAA,WAAAN,MAEb,WACI,MAAO,CAAEA,MAAOsB,KAAK8G,KAAK,GAAGpI,MAAOgE,KAAM1C,KAAK8G,KAAK,GAAGoE,YAC1D,CAAAlM,IAAA,WAAAN,MACD,SAAS6B,GAAKP,KAAK8G,KAAK5F,IAAIX,KAAK,CAAAvB,IAAA,OAAAN,MACjC,WACI,IAAIqB,EAAOC,KACXA,KAAK8G,KAAKiD,SAAQ,WACd,IAAIH,EAAS5I,EAAEhB,MAAM6J,QAAQ,iBAC7B9J,EAAK+G,KAAK5B,YAAY,OACtB0E,EAAOpC,KAAK,eAAe/B,YAElC,CAAAzG,IAAA,WAAAN,MACD,SAAS4I,GACL,IAAIvH,EAAOC,KACX,OAAOA,KAAK8G,KAAKS,QAAO,SAAUjG,GAAKgG,EAAEvH,EAAK+G,KAAK,SACtD,CAAA9H,IAAA,gBAAAN,MACD,WAAkB,OAAOsB,KAAKqH,WAAW3I,QAAQ,CAAAM,IAAA,iBAAAN,MACjD,WAAmB,OAAOsB,KAAKqH,WAAW3E,OAAO,CAAA1D,IAAA,QAAAN,MACjD,SAAMwF,IACFA,EAASA,GAAU,IACP8D,WACRhI,KAAK8G,KAAK,GAAGqE,MAAMnL,KAAK0H,cAEvBxD,EAAOgE,YACRlI,KAAKmI,iBAEZ,EAAAnJ,IAAA,UAAAN,MA3BD,WAAmB,MAAO,WAAW,CAAAM,IAAA,SAAAN,MA4BrC,SAAcoI,GACV,MAA2B,oBAApBA,EAAK,GAAG+B,YA9BN,CAASlC,GAmCpByE,EAAU,SAAAC,GAAA,SAAAD,IAAA,OAAAzL,EAAA,KAAAyL,GAAAxL,EAAA,KAAAwL,EAAAvL,WAAA,OAAAC,EAAAsL,EAAAC,GAAAzE,EAAAwE,EAAA,EAAApM,IAAA,WAAAN,MAEZ,WACI,IAAI4M,EAActL,KAAK8G,KAAKU,KAAK,iBACjC,GAAI8D,EAAYlK,OAAS,EACrB,MAAO,CAAE1C,MAAO4M,EAAY,GAAGC,GAAI7I,KAAM4I,EAAYE,SAAShE,KAAK,SAAS9E,UAGnF,CAAA1D,IAAA,WAAAN,MACD,SAAS6B,GAAKP,KAAK8G,KAAKU,KAAK,SAAWjH,GAAGkL,KAAK,WAAW,KAAQ,CAAAzM,IAAA,WAAAN,MACnE,SAAS4I,GACL,IAAIvH,EAAOC,KACX,OAAOA,KAAK8G,KAAKU,KAAK,SAASD,QAAO,SAAUjG,GAAKgG,EAAEvH,EAAK+G,KAAK,SACpE,CAAA9H,IAAA,gBAAAN,MACD,WAAkB,OAAOsB,KAAKqH,WAAW3I,QAAQ,CAAAM,IAAA,iBAAAN,MACjD,WAAmB,OAAOsB,KAAKqH,WAAW3E,QAAO,EAAA1D,IAAA,UAAAN,MAdjD,WAAmB,MAAO,UAAU,CAAAM,IAAA,SAAAN,MAepC,SAAcoI,GACV,OAAOA,EAAKU,KAAK,eAAepG,OAAS,MAjBjC,CAASuF,GAsBnB+E,EAAa,SAAAC,GAAA,SAAAD,IAAA,OAAA/L,EAAA,KAAA+L,GAAA9L,EAAA,KAAA8L,EAAA7L,WAAA,OAAAC,EAAA4L,EAAAC,GAAA/E,EAAA8E,EAAA,EAAA1M,IAAA,WAAAN,MAEf,WAAa,OAAOsB,KAAK4L,QAAQC,UAAU,CAAA7M,IAAA,WAAAN,MAC3C,SAAS6B,GAAIP,KAAK4L,QAAQC,QAAUtL,IAAI,CAAAvB,IAAA,OAAAN,MACxC,WACIsB,KAAK4L,QAAU5L,KAAK8G,KAAKU,KAAK,0BAA0B,KAC3D,CAAAxI,IAAA,WAAAN,MACD,SAAS4I,GACL,IAAIvH,EAAOC,KACX,OAAOA,KAAK8G,KAAKU,KAAK,0BAA0BD,QAAO,SAAUjG,GAAIgG,EAAEvH,EAAK+G,KAAK,UACpF,EAAA9H,IAAA,UAAAN,MATD,WAAmB,MAAO,aAAa,CAAAM,IAAA,SAAAN,MAUvC,SAAcoI,GACV,OAAqD,GAA9CA,EAAKU,KAAK,0BAA0BpG,WAZhC,CAASuF,GAgBtBmF,EAAS,SAAAC,GAAA,SAAAD,IAAA,OAAAnM,EAAA,KAAAmM,GAAAlM,EAAA,KAAAkM,EAAAjM,WAAA,OAAAC,EAAAgM,EAAAC,GAAAnF,EAAAkF,EAAA,EAAA9M,IAAA,gBAAAN,MAEX,WAAkB,OAAOsB,KAAK8G,KAAK5F,QAAO,CAAAlC,IAAA,WAAAN,MAC1C,WACI,IAAMwC,EAAMoB,MAAM0J,iBAAiBhM,KAAK8G,KAAK5F,OAC7C,OAAQlB,KAAKS,SAAWT,KAAKS,QAAQwL,IAAM/K,EAAMoB,MAAM4J,WAAWhL,KACrE,CAAAlC,IAAA,WAAAN,MACD,SAAS6B,GAAKP,KAAK8G,KAAK5F,IAAIX,KAAK,CAAAvB,IAAA,WAAAN,MACjC,WAAa,OAAO,KAAQ,EAAAM,IAAA,UAAAN,MAP5B,WAAmB,MAAO,WADf,CAASiI,GA6ClBwF,EAAS,CAACrB,EAAYF,EAAYI,EAAaI,EAAYlB,EAAYI,EAAWI,EAAagB,EAAeI,EAlCrG,SAAAM,GAAA,SAAAC,IAAA,OAAA1M,EAAA,KAAA0M,GAAAzM,EAAA,KAAAyM,EAAAxM,WAAA,OAAAC,EAAAuM,EAAAD,GAAAxF,EAAAyF,EAAA,EAAArN,IAAA,WAAAN,MAEX,WACI,IAAM4N,EAAetM,KAAK8G,KAAKU,KAAK,mBACpC,GAAI8E,EAAalL,OAAS,EACtB,OAAOkL,EAAa/F,KAAK,UAGhC,CAAAvH,IAAA,WAAAN,MACD,SAAS6B,GAAKP,KAAK8G,KAAKU,KAAK,gBAADtF,OAAiB3B,EAAC,OAAM6E,SAAS,mBAAmB,CAAApG,IAAA,OAAAN,MAChF,WACI,IAAMqB,EAAOC,KACbA,KAAK8G,KAAKU,KAAK,KAAKvG,OAAM,SAAUsL,GAIhC,OAHAA,EAAMC,iBACNzM,EAAK+G,KAAKU,KAAK,KAAKtC,YAAY,iBAChClE,EAAEhB,MAAMoF,SAAS,kBACV,OAEd,CAAApG,IAAA,WAAAN,MACD,SAAS4I,GACL,IAAIvH,EAAOC,KACX,OAAOA,KAAK8G,KAAKU,KAAK,KAAKvG,OAAM,SAAUK,GAAKgG,EAAEvH,EAAK+G,KAAK,SAC/D,CAAA9H,IAAA,gBAAAN,MACD,WAAkB,OAAOsB,KAAKqH,aAAa,CAAArI,IAAA,iBAAAN,MAC3C,WAAmB,OAAOsB,KAAKqH,aAAa,CAAArI,IAAA,QAAAN,MAC5C,SAAMwF,GACFlE,KAAK8G,KAAKU,KAAK,KAAKtC,YAAY,iBAChClF,KAAKiI,SAASjI,KAAK+G,oBACtB,EAAA/H,IAAA,UAAAN,MA3BD,WAAmB,MAAO,SAAS,CAAAM,IAAA,SAAAN,MA4BnC,SAAcoI,GACV,OAAOA,EAAKU,KAAK,mBAAmBpG,OAAS,MA9BtC,CAASuF,K,2jIChSjB,IAAM8F,EAAiB,SAAAC,GAAA,SAAAD,IAAA,OAAA9M,EAAA,KAAA8M,GAAA7M,EAAA,KAAA6M,EAAA5M,WAAA,O,qRAAAC,CAAA2M,EAAAC,G,EAAAD,G,EAAA,EAAAzN,IAAA,cAAAN,MAM1B,SAAYiO,GAAU,IAAAC,EAAA,KACZC,EAAQ7M,KACEiC,MAAZ0K,IACAA,EAAWhE,UACf,IAAMmE,EAAQ9L,EAAE2L,GAEhB,SAASI,EAAcC,EAAYC,GAC/B,OAAO,IAAIC,SAAS,gDAADhL,OAAiD8K,EAAU,eAAA9K,OAAc+K,EAAM,MAAKhO,KAAK4N,GAGhH,SAASM,EAAczK,GACnB,IAAM0K,EAAQ,uCAAuCC,KAAK3K,GAC1D,GAAc,OAAV0K,EACA,MAAM,IAAIE,MAAM,yCAADpL,OAA0CqL,KAAI,uCAEjE,IAAMC,EAAcJ,EAAM,GACpB3M,OAAwBwB,IAAbmL,EAAM,GAAmB,CAAEhN,KAAMgN,EAAM,IAAO,GAiC/D,YA/BoBnL,IAAhBuL,GACAA,EAAYC,MAAM,2CAA2C5F,SAAQ,SAAA6F,GACjE,IAAMC,EAAWD,EAAKlE,QAAQ,KAC9B,GAAImE,EAAW,EAEX,OADAlE,QAAQmE,KAAK,2BAAD1L,OAA4BwL,EAAI,2DACrC,EAEX,IAAMG,EAAUH,EAAKI,OAAO,EAAGH,GAC3BjP,EAAQgP,EAAKI,OAAOH,EAAW,GAEnC,GAAI,QAAQI,KAAKrP,GACbA,EAAQsP,SAAStP,QAEhB,GAAI,gBAAgBqP,KAAKrP,GAC1BA,EAAQuP,WAAWvP,QAElB,GAAI,gBAAgBqP,KAAKrP,GAC1BA,EAAiC,SAAxBA,EAAMwP,mBAEd,GAAI,WAAWH,KAAKrP,GACrBA,EAAQA,EAAMqH,MAAM,GAAI,GAAGd,MAAM,KAAKkJ,KAAI,SAAA7M,GAAC,OAAIA,EAAE8M,eAGjD,IACI1P,EAAQ2P,KAAKC,MAAM5P,GACrB,MAAO4C,IAGbb,EAAQoN,GAAWnP,KAGpB,CAAEV,KAAMoP,EAAM,GAAI3M,WAG7B,SAAS8N,EAAWC,GAChB,IAAMC,EAASzN,EAAEwN,GAAI3E,QAAQ,gBAC7B,QAAI4E,EAAOrN,OAAS,GAAKqN,EAAO,GAAGC,aAAa,cAAgB7B,EAAM8B,WAGnD3N,EAAEwN,GAAI3E,QAAQ,sBAAsBzI,OAAS,GAoCpE,OAhCA0L,EAAMtF,KAAK,gBAAgB2G,KAAI,SAACS,EAAOJ,GACnC,GAAGD,EAAWC,GAAI,CACd,IAAMzO,EAAO6M,EACPiC,EAAe1B,EAAcqB,EAAGE,aAAa,aACnD1N,EAAEwN,GAAI/L,GAAG,SAAS,WAAY,IAAAqM,EACpB3L,EAAS4J,EAAc,IAAK8B,EAAa7Q,KAAhC+O,GAIf,OAHsC,KAAlC8B,SAAqB,QAATC,EAAZD,EAAcpO,eAAO,IAAAqO,OAAA,EAArBA,EAAuBC,SACvBhP,EAAKsB,WAAW,MAAM,GAEnB8B,SAKnBnD,KAAKgP,cAAgBlC,EAAMtF,KAAK,oBAAoByH,UAAUd,KAAI,SAAAK,GAC9D,IAAMjB,EAAOiB,EAAGE,aAAa,gBACvBQ,EAAab,KAAKC,MAAMf,GAE9B,MAAO,CACH4B,OAAQ,WACJ,IAAI,IAAIC,KAAaF,EAEbnC,EAAc,IADAmC,EAAWE,GACzBrC,GACAyB,EAAGxE,UAAUqF,IAAID,GAEjBZ,EAAGxE,UAAUC,OAAOmF,QAOjC,CACHE,OAAQxC,EAAMtF,KAAK,gBAAgByH,UAAUd,KAAI,SAAAK,GAC7C,GAAID,EAAWC,GAAK,CAChB,IACAe,EAA0BpC,EADbqB,EAAGE,aAAa,aAE7B,MAAO,CAACF,EADIe,EAAJvR,KAAauR,EAAP9O,SAGd,OAAO,QAGf+O,QAAS1C,EAAMtF,KAAK,iBAAiByH,UAAUd,KAAI,SAAAK,GAC/C,GAAID,EAAWC,GAAK,CAChB,IACAiB,EAAwBtC,EADXqB,EAAGE,aAAa,cACvB1Q,EAAIyR,EAAJzR,KAAMyC,EAAOgP,EAAPhP,QACNiP,EAAalB,EAAGE,aAAa,aASnC,OAPmB,OAAfgB,IACAjP,EAAQI,OAAS,SAAUC,GAAK,OAAOiM,EAAc/O,EAAM0R,EAApB3C,KAGP,IAAhC5O,OAAOwR,KAAKlP,GAASW,SACrBX,OAAUwB,GAEP,CAACuM,EAAIxQ,EAAMyC,GAElB,OAAO,QAEZyB,OAAO4K,EAAMtF,KAAK,aAAayH,UAAUd,KAAI,SAAAK,GAC5C,GAAID,EAAWC,GAAK,CAEhB,IAAIjB,EAAOiB,EAAGE,aAAa,SAI3B,MAHe,KAAXnB,EAAK,KACLA,EAAOvM,EAAEuM,EAAKO,OAAO,IAAI,GAAGY,aAAa,UAEtC,CAACF,EAAI,GAAI,CAAEpO,KAAM,SAAUS,OAAQ,WAAc,OAAOkM,EAAc,IAAKQ,EAAnBR,MAE/D,OAAO,SAEX7K,OAAO4K,EAAMtF,KAAK,iBAAiByH,UAAUd,KAAI,SAAAK,GACjD,GAAGD,EAAWC,GAAI,CACd,IAAIjB,EAAOiB,EAAGE,aAAa,aACvB3O,EAAO6M,EAEX,MAAO,CAAC4B,EAAI,GAAI,CAAEpO,KAAM,SAAUS,OAAQ,WACtC,OAAOd,EAAK6P,UAAUrC,MAG9B,OAAO,SACPrL,OAAO4K,EAAMtF,KAAK,kBAAkByH,UAAUd,KAAI,SAAAK,GAClD,GAAID,EAAWC,GAAK,CAChB,IAAIjB,EAAOiB,EAAGE,aAAa,cAI3B,MAHe,KAAXnB,EAAK,KACLA,EAAOvM,EAAEuM,EAAKO,OAAO,IAAI,GAAGY,aAAa,eAEtC,CAACF,EAAI,GAAI,CAACpO,KAAM,SAAUS,OAAQ,WAAa,OAAOkM,EAAc,IAAKQ,EAAnBR,MAA+B,GAE5F,OAAO,YAItB,CAAA/N,IAAA,YAAAN,MAGD,SAAUmR,EAAKC,EAAMpR,GAAqB,IAAAqR,EAAA,KAAdC,EAAMnQ,UAAAuB,OAAA,QAAAa,IAAApC,UAAA,IAAAA,UAAA,GAC9B,GAAIoQ,MAAMC,QAAQL,GACdA,EAAIhI,SAAQ,SAAA3J,GAAC,OAAI6R,EAAKI,UAAUjS,EAAG4R,EAAMpR,EAAOsR,UADpD,CAKA,IAAI5C,EAAQ0C,EAAK7K,MAAM,KACnBmL,EAASP,EACbzC,EAAMvF,SAAQ,SAAUwI,EAAMzB,GAC1B,GAAe,OAAXwB,EACA,GAAIC,EAAK7G,QAAQ,OAAS,EAAG,CACzB,IAAI8G,EAAM,SAASjD,KAAKgD,GACxBC,EAAc,MAAPA,GAAe,EAAIA,EAAI,GAC9B,IAAIC,EAAYF,EAAKG,QAAQ,gBAAiB,IAG9C,QAF0BvO,IAAtBmO,EAAOG,KACPH,EAAOG,GAAa,KACnBH,EAAOG,GAAWE,MAAK,SAAAvS,GACxB,GAAIA,EAAEwS,MAAQJ,EAEV,OADAF,EAASlS,GACF,KAEX,CACA,GAAI8R,EAAyB,OAAfI,EAAS,MAAa,EACpCA,EAAOG,GAAWI,KAAML,EAAM,EAAI,GAAK,CAAEI,KAAMJ,IAC/CF,EAASA,EAAOG,GAAWH,EAAOG,GAAWnP,OAAS,SAG1D,GAAIwN,GAASxB,EAAMhM,OAAS,EACxBgP,EAAOC,GAAQ3R,MACZ,CACH,QAAqBuD,IAAjBmO,EAAOC,GAAqB,CAC5B,GAAIL,EAAyB,OAAfI,EAAS,MAAa,EACpCA,EAAOC,GAAQ,GAEnBD,EAASA,EAAOC,UAQpC,CAAArR,IAAA,kBAAAN,MAqBA,SAAgBV,EAAMkG,GAClB,IAAInE,EAAOC,KACPwL,EAAStH,EAAOsH,QAAUxK,EAAE2H,SAASiI,MACrCC,EAAgB,SAAC9I,GAAQ,MAA0B,iBAAbA,EAAwBzF,MAAMwO,iBAAiBtF,EAAQzD,GAAY/G,EAAE+G,IAC3GgJ,EAASF,EAAc3M,EAAO8M,OAC9BC,EAAqBjQ,EAAE,wCAADkB,OAAyC6O,EAAOvF,SAAS+B,KAAK,MAAK,OACzF2D,EAAW,GAGf,SAASC,EAAY3I,GACjB,IAOcvB,EAPVmK,EAAY9O,MAAMwO,iBAAiBC,EAAQ,sBAC3CM,EAAW/O,MAAMwO,iBAAiBC,EAAQ,qBAAqBO,OAC/DC,EAASvQ,EAAE+P,EAAO,GAAGS,cAAc,sBAAsBC,WAAU,IACnEC,EAAM3R,EAAK4R,cAEXC,EAAa,CACbhD,OACU3H,EAAQiK,EAASW,QAAO,SAAAvQ,GAAC,OAAKA,EAAEwQ,WAC/B7K,EAAM7F,OAAS,EAAI6F,EAAMA,EAAM7F,OAAS,GAAGwN,MAAQ,EAAI,GAElEzC,OAAQ,GACRhB,MAAO,WACC7I,MAAMwO,iBAAiBC,EAAQ,qBAAqB3P,OAAS,IAAM8C,EAAO6N,cAC7C9P,IAAzBiC,EAAO8N,eACP9N,EAAO8N,cAAcT,GAEzBA,EAAOtH,SACPjK,KAAKmM,OAAOgC,KAAI,SAAA8D,GAAK,OAAIA,EAAK,YAC9BjS,KAAK8R,SAAU,OACa7P,IAAxBiC,EAAOgO,cACPhO,EAAOgO,gBAGXlS,KAAK4O,MAAQ,GAGrBuD,SAAU,WACN,OAAOnS,KAAKmM,OAAOsE,MAAK,SAAAnJ,GAAC,OAAIA,EAAE6K,eAEnCC,UAAW,GACXC,cAAe,WACX,IAAIlP,EAAS,GAUb,OATAnD,KAAKmM,OAAOtE,SAAQ,SAAAP,GACZA,EAAEH,UACFG,EAAEgL,cAAczK,SAAQ,SAAAvG,GACpB6B,EAASA,EAAOjB,OAAOZ,EAAE+Q,oBAG7BlP,EAAOwN,KAAKrJ,MAGbnE,GAEXoP,KAAM,GACNT,SAAS,EACT7H,OAAQ,WACJjK,KAAK8R,SAAU,EAEO,IADFZ,EAASW,QAAO,SAAA/Q,GAAC,OAAKA,EAAEgR,WAAS1Q,SAE5C8C,EAAO6N,QAKR/R,KAAK8R,SAAU,GAJfP,EAAO1H,QAAQ,OAAOpE,OACtB8L,EAAO1H,QAAQ,mBAAmBrC,KAAK,kBAAkBpC,SAAS,2BAClEmM,EAAO1H,QAAQ,mBAAmBrC,KAAK,0BAA0B+F,KAAK,WAAY,WAItDtL,IAA5BiC,EAAOsO,kBACPtO,EAAOsO,oBAEfxS,KAAKmL,QACAjH,EAAOuO,oBACR1S,EAAK2S,WAAW,MAAO3S,EAAK4S,mBAcxC,GAVApB,EAAOrM,YAAY,qBAAqBE,SAAS,oBAGjDrF,EAAK6S,YAAYrB,GAAQjC,OAAOzH,SAAQ,SAAAgL,GAAyB,IAAAC,EAAAC,EAAAF,EAAA,GAAvBrE,EAAEsE,EAAA,GAAEpF,EAAIoF,EAAA,GAAErS,EAAOqS,EAAA,GACjDE,E,+VAAWC,CAAA,CAAKC,oBAAoB,EAAM1H,OAAQ+F,GAAW9Q,GAC7DwR,EAAQlS,EAAKI,cAAcqO,EAAI,GAAFtM,OAAKlE,EAAI,KAAAkE,OAAIwP,EAAG,OAAAxP,OAAMwL,GAAQsF,GACjEpB,EAAWW,KAAK7E,GAAQuE,EACxBL,EAAWzF,OAAOwE,KAAKsB,WAGLhQ,IAAlBiC,EAAOiI,OACP,IAAK,IAAIuB,KAAQxJ,EAAOiI,OAAQ,CAC5B,IAAIzN,EAAQwF,EAAOiI,OAAOuB,GACtBsF,EAAc,GACK,iBAAXtU,EACRA,EAAQ,CAAEqJ,SAAUrJ,QACKuD,IAAlBvD,EAAM+B,UACbuS,EAAyC,mBAAnBtU,EAAM+B,QAA0B/B,EAAM+B,QAAQ8Q,GAAU7S,EAAM+B,SAExFuS,EAAYE,oBAAqB,EACjCF,EAAYxH,OAAS+F,EAErB,IAAMU,EAAQlS,EAAKI,cAAcoR,EAAO/J,KAAK9I,EAAMqJ,UAAW,GAAF7F,OAAKlE,EAAI,KAAAkE,OAAIwP,EAAG,OAAAxP,OAAMwL,GAAQsF,GAC1FpB,EAAWW,KAAK7E,GAAQuE,EACxBL,EAAWzF,OAAOwE,KAAKsB,GAI/BV,EAAO/J,KAAKtD,EAAOiP,gBAAgBC,QAAQnS,OAAM,SAACK,GAC9CA,EAAEkL,iBACFoF,EAAW3H,SACXjJ,EAAEM,EAAE8O,QAAQpO,UAGhB,IAAIqR,EAA6B,IAApBhC,EAASjQ,OAAeiQ,EAAWD,EAChDlN,EAAOoP,gBAAkBpP,EAAOoP,iBAAoB,SAAAxV,GAAO,MAAO,CAAEyV,MAAOzV,IAC3E,IAAA0V,EAA6BtP,EAAOoP,gBAAgB/B,EAAQK,GAApD2B,EAAKC,EAALD,MAAOnB,EAASoB,EAATpB,UAGf,GAFAiB,EAAO,GAAGI,sBAAsB,WAAYF,EAAM,SAEhCtR,IAAdmQ,EACA,IAAK,IAAIpT,KAAOoT,EACZR,EAAWQ,UAAUzB,KAAK,CACtBb,KAAM,GAAF5N,OAAKlE,EAAI,KAAAkE,OAAIwP,EAAG,OAAAxP,OAAMlD,GAC1BN,MAAO0T,EAAUpT,GACjBhB,KAAM+B,EAAK2T,aAAa,GAADxR,OAAIlE,EAAI,KAAAkE,OAAIwP,EAAG,OAAAxP,OAAMlD,MAEhD4S,EAAWW,KAAKvT,GAAOoT,EAAUpT,GAIzCkS,EAASP,KAAKiB,GAETpJ,GACDzI,EAAK2S,WAAW,MAAO3S,EAAK4S,iBAGhCf,EAAWzF,OAAOtE,SAAQ,SAAAP,GAAOA,EAAEM,QAAQsL,oBAAqB,KAGjEhP,EAAO6N,SACNZ,GAAY,GAEhBN,EAAc3M,EAAOyP,sBAAsB1S,OAAM,kBAAMkQ,OAGvDF,EAAmBhQ,OAAM,WACrB,IAAI2S,EAAQ5S,EAAEhB,MACd,GAAI4T,EAAM/N,SAAS,2BAA4B,CAC3C+N,EAAM1O,YAAY,2BAElB,IAAI2O,EAAiB7S,EAAE,IAAM4S,EAAMrN,KAAK,kBACxCsN,EAAenO,OAEfkO,EAAMpM,KAAK,0BAA0B+F,KAAK,WAAY,MAEqB,IAAvEjL,MAAMwO,iBAAiB+C,EAAgB,qBAAqBzS,QAC5D+P,QAKZ,IAAIhO,EAAS,CACTgE,WAAW,EACXgE,MAAO,WACH+F,EAASrJ,SAAQ,SAAC6F,GAAI,OAAKA,EAAKvC,WAC3BjH,EAAO6N,UACH7N,EAAO4P,WACR/C,EAAOvF,SAAS/F,OACpBwL,EAAmB7L,SAAS,iCAEAnD,IAA5BiC,EAAOsO,kBACPtO,EAAOsO,oBAEf5K,QAAS1D,EACToO,YAAa,WACT,OAAOpB,EAASW,QAAO,SAAAkC,GAAE,OAAKA,EAAGjC,YAErCkC,OAAQ,WACJ9C,EAASrJ,SAAQ,SAAC6F,GAAI,OAAKA,EAAKvB,OAAOtE,SAAQ,SAAAP,GAAC,OAAIA,EAAC,gBAEzD6K,SAAU,WAAc,OAAOjB,EAAST,MAAK,SAAAnP,GAAC,OAAIA,EAAE6Q,eACpD8B,mBAAoB,WAChB,IAAI9Q,EAAS,GAQb,OAPIe,EAAOgQ,gBACPhD,EAASrJ,SAAQ,SAACvG,GACTA,EAAE6Q,aACHhP,EAASA,EAAOjB,OAAOZ,EAAE+Q,gBAAgBlE,KAAI,SAAA7G,GAAC,OAAIA,EAAEuG,gBAIzD1K,GAEXgR,SAAU,SAAAC,GAA+C,IAApCC,EAAKD,EAALC,MAAKC,EAAAF,EAAEG,sBAAc,IAAAD,EAAG,SAAQA,EAC7CE,EAAexU,KAAKsS,cAAclR,OACtC,GAAIiT,IAAUG,EACV,GAAIH,EAAQG,EACR,KAAOxU,KAAKsS,cAAclR,OAASiT,GAC/BlD,QAEmB,WAAnBoD,GACAvU,KAAKsS,cAAczK,SAAQ,SAACkM,EAAItW,GAAYA,GAAK4W,GAAON,EAAG9J,cAY/E,OALAjK,KAAKyU,eAAe9D,KAAKxN,GAErBe,EAAO6N,UAAY7N,EAAOgP,oBAC1BnT,EAAK2S,WAAW,MAAO3S,EAAK4S,iBAEzBxP,IAIX,CAAAnE,IAAA,WAAAN,MAMA,SAASgW,EAAaC,EAASlU,GAC3B,IAAIV,EAAOC,KAEXA,KAAK4U,YAAYjE,KAAK,CAClBkE,UAAW,WACP,IAAIC,EAAU,GAuBd,MAnB6B,iBAAjBJ,IACRA,EAAc,CAACA,IAGnBA,EAAY7M,SAAQ,SAAU7J,GAC1B8W,EAAUA,EAAQ5S,OAAOnC,EAAKgV,YAAYlD,QAAO,SAAAvK,GAAC,OARtD,SAAoBA,EAAGtJ,GACnB,OAAQsJ,EAAE0N,SAAW1N,EAAE2N,aAAelV,EAAKmV,aAAa5N,EAAEtJ,KAAMA,GAOVmX,CAAW7N,EAAGtJ,UAGxE8W,EAAQvC,KAAO,GACfuC,EAAQjN,SAAQ,SAACP,GAAQvH,EAAKoQ,UAAU2E,EAAQvC,KAAMjL,EAAEuG,QAASvG,MAEjEvH,EAAK0U,eAAe5M,SAAQ,SAAAuN,GACxBA,EAAG9C,cAAczK,SAAQ,SAAAvG,GACrBA,EAAE8Q,UAAUP,QAAO,SAAAwD,GAAC,OAAIX,EAAYjE,MAAK,SAAAzS,GAAI,OAAI+B,EAAKmV,aAAaG,EAAErX,KAAMA,SAAQ6J,SAAQ,SAAAwN,GACvFtV,EAAKoQ,UAAU2E,EAAQvC,KAAM8C,EAAEvF,KAAMuF,EAAE3W,gBAK5CoW,GAEXxU,MAAO,SAAU+H,EAAQD,GACrB,IAAI+D,EAASnM,KAAK6U,YACdS,EAAa,CAAEjN,OAAQA,EAAQD,eAAgBA,GACnD,IAAK,IAAIpJ,KAAOyB,EACZ6U,EAAWtW,GAAOyB,EAAQzB,GAE9B,OAAO2V,EAAQxI,EAAQmJ,QAMnC,CAAAtW,IAAA,QAAAN,MAGA,SAAM2J,EAAQD,GAAgB,IAAAmN,EAAA,KACtBxV,EAAOC,KACLwV,EAAYxV,KAAK8E,oBAAoB2Q,QAAO,SAACC,EAAKnV,GAA0B,OAAlBmV,EAAInV,GAAKR,EAAKQ,GAAWmV,IAAQ,IACjG1V,KAAK2V,IAAI,uBAAwBH,GACjCxV,KAAK+U,YAAYlN,SAAQ,SAAUoK,GAC/BA,EAAMgD,aAAc,EACpBlV,EAAK6V,UAAU7V,EAAMkS,EAAMjU,MAC3B+B,EAAK6V,UAAU7V,EAAK8V,cAAcvH,MAAO2D,EAAMjU,SAGnD,IAAI8X,EAAa9V,KAAKyU,eAAegB,QAAO,SAACM,EAAOxV,GAAC,OAAKwV,EAAM7T,OAAO3B,EAAE0T,wBAAuB,IAChGjU,KAAK+U,YAAc/U,KAAK+U,YAAYlD,QAAO,SAAUvK,GAAK,OAAQA,EAAEJ,WAEpE,IAAI/D,EAAS,CACT8D,OAAO,EACP+O,OAAQhW,KAAKiW,cACbC,mBAAmB,EACnBC,iBAAiB,GAGjBC,EAAgBpW,KAAK+U,YAAYlD,QAAO,SAAUvK,GAClD,IAAI+O,EAAmBP,EAAWtM,QAAQlC,EAAEuG,UAAY,EAUxD,OATIvG,EAAEgP,cACFnT,EAAO+S,mBAAoB,GAE3B5O,EAAE0N,OACF1N,EAAE6D,MAAM,CAAEnD,WAAYjI,EAAKwW,sBACtBF,IACL/O,EAAE2N,aAAc,EAChB3N,EAAE6D,MAAM,CAAEnD,WAAW,MAEjBV,EAAE0N,SAAWqB,KAGnBG,EAAY,GAClB,GAAInO,EAAQ,CACR,IAAMoO,EAAcL,EAAc5O,MAAK,SAAAF,GAAC,OAAIe,GAAUf,EAAER,KAAK,MACzD2P,GAAeA,EAAY7O,QAAQ4O,WACnCA,EAAU7F,KAAInO,MAAdgU,EAASE,EAASD,EAAY7O,QAAQ4O,YAsC9C,GAlCAJ,EAAcvO,SAAQ,SAAUoK,GAC5B,IAAI0E,EAAM1E,EAAM3R,MAAM8H,EAAgBC,EAAQ,EAAGmO,EAAUhN,QAAQyI,EAAMjU,OAAS,GAClFiU,EAAMhL,MAAQ0P,EAEV1E,EAAME,aACNhP,EAAO6S,QAAS,GAEhB/D,EAAM2E,mBACNzT,EAAO+S,mBAAoB,GAG1BS,OAEmB1U,IAAfgQ,EAAMjU,OACX+B,EAAKoQ,UAAU,CAACpQ,EAAMyV,GAAYvD,EAAMpE,QAASoE,EAAM5K,YACvDtH,EAAKoQ,UAAUpQ,EAAK8V,cAAcvH,MAAO2D,EAAMpE,QAASoE,EAAM4E,mBAH9D1T,EAAO8D,OAAQ,KAQvBjH,KAAKyU,eAAe5M,SAAQ,SAAAuN,GACxBA,EAAG9C,cAAczK,SAAQ,SAAAvG,GACrBA,EAAE8Q,UAAUvK,SAAQ,SAAAwN,GAAMtV,EAAKoQ,UAAU,CAACpQ,EAAMyV,GAAYH,EAAEvF,KAAMuF,EAAE3W,OAAO,YAIrFsB,KAAK8W,uBAGLV,EAAcvO,SAAQ,SAAUoK,GAClBA,EAAM3R,MAAM8H,EAAgBC,EAAQ,KAE1ClF,EAAO8D,MAAQgL,EAAMhL,OAAQ,OAEhCmB,EAAgB,CACjB,IAAM2O,EAAkB1I,KAAK2I,UAAUxB,GACvCrS,EAAOgT,gBAAkBnW,KAAKiX,mBAAqBF,EACnD/W,KAAKiX,iBAAmBF,EAa5B,OAVA/W,KAAK4U,YAAY/M,SAAQ,SAAAqP,GACX3B,EAAK4B,aAAaD,EAAO7O,EAAQD,KAEvCjF,EAAO8D,OAAQ,MAGvBjH,KAAK2V,IAAI,UAAW3V,MACpBmD,EAAO+S,kBAAoB/S,EAAO+S,mBAAqB/S,EAAO6S,OAC9DhW,KAAKoX,WAAW/O,EAAQD,GACxBpI,KAAKqX,cACElU,IACV,CAAAnE,IAAA,aAAAN,MAID,SAAW2J,EAAQD,GAA+C,IAA/BkP,EAAqBzX,UAAAuB,OAAA,QAAAa,IAAApC,UAAA,IAAAA,UAAA,GACpD,GAAIG,KAAKuB,WACTvB,KAAK6V,cAAgB,CACjBvH,MAAO,GACPzN,OAAQ,CAAC0W,MAAO,MAGQ,IAAxBvX,KAAKwX,gBAAT,CAIA,IAAIC,EAAUzX,KAAKsO,MAAMjG,EAAQD,GAUjC,GATApI,KAAK0X,aAAa7P,SAAQ,SAAUf,GAC/B2Q,EAAQvB,kBAAoBpP,EAAKpB,OAASoB,EAAKrB,UAGhDgS,EAAQzB,SAAWhW,KAAK2X,WAAWC,cACnC5X,KAAK+B,qBAAqB,cAC1B/B,KAAK2X,WAAWC,aAAc,GAG7B5X,KAAK6X,UAAV,CAMA,GAFA7X,KAAK2V,IAAI,sBAAuB8B,EAAQxQ,QAEnCjH,KAAK8X,uBAAyBL,EAAQxQ,MAAO,CAC9CjH,KAAK+X,sBACL,IAAIC,EAAYhY,KAAKiY,UAAU,CAAE5P,OAAQA,EAAQD,eAAgBA,IACjEpI,KAAK2V,IAAI,oBAAqB3V,MACzBoI,IAAmBkP,IAAyBG,EAAQtB,kBACjDsB,EAAQxQ,OAAS+Q,GACjBhY,KAAKkY,eACLlY,KAAKa,SACLb,KAAKmY,mBAAqB7V,MAAM2G,SAASjJ,KAAKoY,wBAC9CpY,KAAKqY,eAELrY,KAAKsY,eAKZb,EAAQxQ,OAAUmB,GACnBpI,KAAKmE,cAGTnE,KAAK2V,IAAI,iBAAkB3V,KAAK6V,eAChC7V,KAAKuY,qB,0FAxnBiB,CCDE,WAqB3B,O,EApBD,SAAAC,K,4FAAc7Y,CAAA,KAAA6Y,GACVxY,KAAKyY,OAAQ,EACbzY,KAAK0Y,YAAc,GACnB1Y,KAAK+U,YAAc,GACnB/U,KAAK2Y,aAAe,GACpB3Y,KAAK4Y,aAAe,GACpB5Y,KAAK4U,YAAc,GACnB5U,KAAK0I,aAAelC,IAAaC,SACjCzG,KAAK0X,aAAe,GACpB1X,KAAK6V,cAAgB,GACrB7V,KAAKmY,mBAAqB,GAC1BnY,KAAK8X,uBAAwB,EAC7B9X,KAAKuW,qBAAsB,EAC3BvW,KAAK2S,iBAAkB,EACvB3S,KAAKuB,UAAW,EAChBvB,KAAKyU,eAAiB,GACtBzU,KAAK6Y,iBAAmB,CAAC1M,OAAQ,IACjCnM,KAAK8Y,KAAO,GACZ9Y,KAAK8E,oBAAsB,GAC3B9E,KAAKiX,iBAAmB,K,EAC3B,EAAAjY,IAAA,OAAAN,MAED,WAAS,MAAO,oCAAsC,CAAAM,IAAA,OAAAN,MACtD,WAAS,MAAO,oBAAsB,CAAAM,IAAA,UAAAN,MAEtC,WAAY,MAAO,MAAQ,CAAAM,IAAA,aAAAN,MAC3B,cAAkB,CAAAM,IAAA,YAAAN,MAClB,SAAUwF,MAAa,CAAAlF,IAAA,eAAAN,MACvB,cAAoB,CAAAM,IAAA,cAAAN,MACpB,cAAmB,CAAAM,IAAA,aAAAN,MACnB,SAAW2J,EAAQD,MAAmB,CAAApJ,IAAA,eAAAN,MACtC,cAAkB,CAAAM,IAAA,UAAAN,MAClB,cAAa,CAAAM,IAAA,uBAAAN,MACb,cAA0B,CAAAM,IAAA,UAAAN,MAC1B,WAAY,OAAO,IAAO,CAAAM,IAAA,MAAAN,MAC1B,cAAe,CAAAM,IAAA,gBAAAN,MACf,cAAkB,CAAAM,IAAA,UAAAN,MAClB,SAAQqa,MAAO,CAAA/Z,IAAA,YAAAN,MACf,SAAUqa,MAAQ,CAAA/Z,IAAA,UAAAN,MAClB,cAAY,CAAAM,IAAA,aAAAN,MAEZ,SAAW2J,EAAQiP,GACfjP,EAASA,GAAU,KACnBrI,KAAK0S,WAAWrK,GAAQ,EAAOiP,KAClC,CAAAtY,IAAA,cAAAN,MACD,SAAYiO,MAAY,CAAA3N,IAAA,gBAAAN,MAExB,cAAoB,CAAAM,IAAA,kBAAAN,MACpB,cAA2C,CAAAM,IAAA,kBAAAN,MAC3C,SAAgBsa,MAAmB,CAAAha,IAAA,cAAAN,MAEnC,WAAesC,EAAE,qBAAqBoE,SAAS,kBAAmB,CAAApG,IAAA,cAAAN,MAClE,cAAkB,CAAAM,IAAA,uBAAAN,MAElB,WAAyB,OAAOsB,KAAK6V,gBAAgB,CAAA7W,IAAA,gBAAAV,IACrD,WAAqB,OAAO,IAAQ,CAAAU,IAAA,iBAAAN,MACpC,SAAewF,MAAY,CAAAlF,IAAA,uBAAAN,MAC3B,SAAqBua,MAAsB,CAAAja,IAAA,gBAAAN,MAC3C,SAAcmI,MAAoB,CAAA7H,IAAA,iBAAAN,MAClC,cAAqB,CAAAM,IAAA,iBAAAN,MAErB,SAAeqJ,EAAUmR,MAAiB,CAAAla,IAAA,cAAAN,MAE1C,WAAgB,OAAuB,IAAhBya,KAAKC,SAAiB,IAAI,CAAApa,IAAA,YAAAN,MAEjD,SAAUmR,EAAKC,EAAMpR,MAAyB,CAAAM,IAAA,eAAAN,MAC9C,SAAaoR,MAAU,CAAA9Q,IAAA,YAAAN,MACvB,SAAUmR,EAAKC,MAAU,CAAA9Q,IAAA,eAAAN,MACzB,SAAaoR,EAAMuJ,MAAa,CAAAra,IAAA,gBAAAN,MAEhC,SAAcqJ,EAAU/J,EAAMkG,MAAU,CAAAlF,IAAA,kBAAAN,MACxC,SAAgBV,EAAMkG,MAAS,CAAAlF,IAAA,WAAAN,MAC/B,SAASgW,EAAaC,EAASlU,MAAW,CAAAzB,IAAA,eAAAN,MAE1C,SAAawY,EAAO7O,EAAQD,MAAsB,CAAApJ,IAAA,QAAAN,MAElD,SAAM2J,EAAQD,MAAqB,CAAApJ,IAAA,mBAAAN,MACnC,SAAiBwF,MAAU,CAAAlF,IAAA,iBAAAN,MAE3B,SAAeqJ,EAAU/J,EAAMkG,MAA0B,CAAAlF,IAAA,SAAAN,MAEzD,cAAW,CAAAM,IAAA,cAAAN,MAEX,cAAgB,CAAAM,IAAA,sBAAAN,MAEhB,cAAwB,CAAAM,IAAA,cAAAN,MAExB,cAEA,CAAAM,IAAA,aAAAN,MAeA,SAAW2J,EAAQD,MAAiD,CAAApJ,IAAA,eAAAN,MACpE,SAAa2J,S,0FA1Ge,I,2vECF1BiR,EAAe,WAOhB,OAAA1S,GAND,SAAA0S,EAAYC,EAAYxR,EAAU/J,EAAMkG,GAAQvE,EAAA,KAAA2Z,GAC5CtZ,KAAKuZ,WAAaA,EAClBvZ,KAAKwZ,UAAYxY,EAAE+G,GACnB/H,KAAKhC,KAAOA,EACZgC,KAAKkE,OAASA,EACdlE,KAAKyZ,UACR,EAAAza,IAAA,QAAAN,MAED,cAAU,CAAAM,IAAA,MAAAN,MAEV,SAAIgb,EAAWhS,GACX,YAAoBzF,IAAhBjC,KAAKkE,aAAmDjC,IAA3BjC,KAAKkE,OAAOwV,GAClC1Z,KAAKkE,OAAOwV,GAChBhS,IACV,CAAA1I,IAAA,eAAAV,IAED,WACI,YAAyB2D,IAArBjC,KAAK1B,IAAI,QACF,OAEJ,SACV,CAAAU,IAAA,OAAAV,IAED,WACI,OAAO0B,KAAK1B,IAAI,OAAQ,UAC3B,CAAAU,IAAA,QAAAV,IAED,WACI,OAAO0B,KAAKuZ,WAAWvZ,KAAKhC,QAC/B,CAAAgB,IAAA,UAAAN,MAED,WACI,IAAMwC,EAAMlB,KAAKtB,MACjB,QAAoBuD,IAAhBjC,KAAKkE,aAAgCjC,IAARf,EAC7B,OAAIA,EAAI5B,eAAe,QACZ4B,EAAIwB,KACRxB,IAEd,CAAAlC,IAAA,WAAAN,MAED,WACI,IAAMib,EAAa3Z,KAAK1B,IAAI,UAC5B,YAAmB2D,IAAf0X,EACO3Z,KAAK4Z,UAETD,EAAW3Z,KAAKtB,SAC1B,CAAAM,IAAA,SAAAN,MAED,WACIsB,KAAKwZ,UAAUxZ,KAAK6Z,cAAc7Z,KAAK8Z,cAC1C,CAAA9a,IAAA,eAAAN,MAED,SAAaqb,GACTA,EAAa/Z,KAAKhC,KAAO,IAAMgC,KAAKI,MAAQJ,KAAK8Z,eAtDpC,GA0DfE,EAAyB,SAAAC,GAAA,SAAAD,IAAA,OAAAra,EAAA,KAAAqa,GAAApa,EAAA,KAAAoa,EAAAna,WAAA,OAAAC,EAAAka,EAAAC,GAAArT,EAAAoT,EAAA,EAAAhb,IAAA,QAAAN,MAC3B,WACI,IAAMib,EAAa3Z,KAAK1B,IAAI,UACV2D,MAAd0X,GACAlQ,QAAQC,MAAM,qCAADxH,OAAsClC,KAAKI,KAAI,4BAEhEJ,KAAK2Z,WAAaA,IACrB,CAAA3a,IAAA,UAAAN,MAED,WACI,OAAOsB,KAAK2Z,WAAW3Z,KAAKtB,WAVL,CAAS4a,GAclCY,EAAe,SAAAC,GAAA,SAAAD,IAAA,OAAAva,EAAA,KAAAua,GAAAta,EAAA,KAAAsa,EAAAra,WAAA,OAAAC,EAAAoa,EAAAC,GAAAvT,EAAAsT,EAAA,EAAAlb,IAAA,eAAAV,IACjB,WAAqB,MAAO,WADX,CAASgb,GAIxBxN,EAAS,SAAAsO,GAAA,SAAAtO,IAAA,OAAAnM,EAAA,KAAAmM,GAAAlM,EAAA,KAAAkM,EAAAjM,WAAA,OAAAC,EAAAgM,EAAAsO,GAAAxT,EAAAkF,EAAA,EAAA9M,IAAA,UAAAN,MACX,WAAY,OAAOsB,KAAKtB,UADb,CAASwb,GAIlBG,EAAoB,SAAAC,GAAA,SAAAD,IAAA,OAAA1a,EAAA,KAAA0a,GAAAza,EAAA,KAAAya,EAAAxa,WAAA,OAAAC,EAAAua,EAAAC,GAAA1T,EAAAyT,EAAA,EAAArb,IAAA,UAAAN,MACtB,WACI,IAAM+B,EAAU,CACZ8Z,aAAcva,KAAK1B,IAAI,gBACvBkc,aAAcxa,KAAK1B,IAAI,iBAE3B,OAAOgE,MAAMmY,gBAAgBza,KAAKtB,MAAO+B,OANvB,CAAS6Y,GAU7BoB,EAAoB,SAAAC,GAAA,SAAAD,IAAA,OAAA/a,EAAA,KAAA+a,GAAA9a,EAAA,KAAA8a,EAAA7a,WAAA,OAAAC,EAAA4a,EAAAC,GAAA/T,EAAA8T,EAAA,EAAA1b,IAAA,UAAAN,MACtB,WAAY,OAAO4D,MAAMsY,aAAa5a,KAAKtB,WADrB,CAAS4a,GAI7BuB,EAAqB,SAAAC,GAAA,SAAAD,IAAA,OAAAlb,EAAA,KAAAkb,GAAAjb,EAAA,KAAAib,EAAAhb,WAAA,OAAAC,EAAA+a,EAAAC,GAAAlU,EAAAiU,EAAA,EAAA7b,IAAA,UAAAN,MACvB,WAAY,OAAO4D,MAAMmC,sBAAsBzE,KAAKtB,WAD7B,CAASwb,GAI9Ba,EAAoB,SAAAC,GAAA,SAAAD,IAAA,OAAApb,EAAA,KAAAob,GAAAnb,EAAA,KAAAmb,EAAAlb,WAAA,OAAAC,EAAAib,EAAAC,GAAApU,EAAAmU,EAAA,EAAA/b,IAAA,UAAAN,MACtB,WAAY,OAAO4D,MAAMoC,cAAc1E,KAAKtB,WADtB,CAAS4a,GAI7B2B,EAAsB,SAAAC,GAAA,SAAAD,IAAA,OAAAtb,EAAA,KAAAsb,GAAArb,EAAA,KAAAqb,EAAApb,WAAA,OAAAC,EAAAmb,EAAAC,GAAAtU,EAAAqU,EAAA,EAAAjc,IAAA,UAAAN,MACxB,WAAY,OAAO4D,MAAM6Y,0BAA0Bnb,KAAKtB,WADhC,CAASwb,GAI/BkB,EAA4B,SAAAC,GAAA,SAAAD,IAAA,OAAAzb,EAAA,KAAAyb,GAAAxb,EAAA,KAAAwb,EAAAvb,WAAA,OAAAC,EAAAsb,EAAAC,GAAAzU,EAAAwU,EAAA,EAAApc,IAAA,UAAAN,MAC9B,WAAY,OAAO4D,MAAM6Y,0BAA0Bnb,KAAKtB,WAD1B,CAASwb,GAIrCoB,EAAiB,SAAAC,GAAA,SAAAD,IAAA,OAAA3b,EAAA,KAAA2b,GAAA1b,EAAA,KAAA0b,EAAAzb,WAAA,OAAAC,EAAAwb,EAAAC,GAAA3U,EAAA0U,EAAA,EAAAtc,IAAA,UAAAN,MACnB,WACI,IAAM8c,EAAQxb,KAAKtB,MAAM+c,SAASC,iBAC5BC,EAAM3b,KAAKtB,MAAMkd,OAAOF,iBAC9B,OAAQ1b,KAAK1B,IAAI,OAAQ,kBACrB,IAAK,gBACD,MAAO,KAAP4D,OAAYsZ,EAAK,QAAAtZ,OAAOyZ,EAAG,MAAAzZ,OAAKlC,KAAKtB,MAAMmd,SAASC,OAAM,SAC9D,IAAK,qBACD,MAAO,KAAP5Z,OAAYsZ,EAAK,QAAAtZ,OAAOyZ,EAAG,MAAAzZ,OAAKI,MAAMyZ,qBAAqB/b,KAAKtB,MAAMmd,SAASC,OAAQ,CAAC,CAAC,OAAQ,MAAO,UAAS,UAR1G,CAASxC,GAa1B0C,EAAe,SAAAC,GAAA,SAAAD,IAAA,OAAArc,EAAA,KAAAqc,GAAApc,EAAA,KAAAoc,EAAAnc,WAAA,OAAAC,EAAAkc,EAAAC,GAAArV,EAAAoV,EAAA,EAAAhd,IAAA,UAAAN,MACjB,WAAY,OAAOsB,KAAKtB,MAAMgd,qBADb,CAASpC,GAIxB4C,EAAc,SAAAC,GAAA,SAAAD,IAAA,OAAAvc,EAAA,KAAAuc,GAAAtc,EAAA,KAAAsc,EAAArc,WAAA,OAAAC,EAAAoc,EAAAC,GAAAvV,EAAAsV,EAAA,EAAAld,IAAA,UAAAN,MAChB,WACI,OAAO4D,MAAMyZ,qBAAqB/b,KAAKtB,MAAO,CAAC,CAAC,OAAQ,MAAO,cAFnD,CAAS4a,GAKvB8C,EAAkB,SAAAC,GAAA,SAAAD,IAAA,OAAAzc,EAAA,KAAAyc,GAAAxc,EAAA,KAAAwc,EAAAvc,WAAA,OAAAC,EAAAsc,EAAAC,GAAAzV,EAAAwV,EAAA,EAAApd,IAAA,UAAAN,MACpB,WACI,IAAM+B,EAAU,CACZ8Z,aAAcva,KAAK1B,IAAI,gBACvBkc,aAAcxa,KAAK1B,IAAI,iBAG3B,OAAOgE,MAAMmY,gBAAgBza,KAAKtB,MAAO+B,GAAW,QAPpC,CAASyZ,GAW3BoC,EAAe,SAAAC,GAAA,SAAAD,IAAA,OAAA3c,EAAA,KAAA2c,GAAA1c,EAAA,KAAA0c,EAAAzc,WAAA,OAAAC,EAAAwc,EAAAC,GAAA3V,EAAA0V,EAAA,EAAAtd,IAAA,SAAAN,MACjB,WACI,IAAMyE,EAASnD,KAAK8Z,WACpB9Z,KAAKwZ,UAAUtU,YAAY,qBACZ,UAAX/B,IAAiC,IAAXA,IACtBnD,KAAKwZ,UAAUpU,SAAS,UACT,UAAXjC,GACAnD,KAAKwZ,UAAUpU,SAAS,iBAGnC,CAAApG,IAAA,eAAAN,MAED,SAAaqb,GACT,IAAM5W,EAASnD,KAAK8Z,WACL,UAAX3W,IAAiC,IAAXA,GACtB4W,EAAaxC,MAAM5G,KAAKrO,MAAMka,oCAAoCxc,KAAKwZ,gBAf9D,CAASQ,GA0BxByC,EAAwB,SAAAC,GAAA,SAAAD,IAAA,OAAA9c,EAAA,KAAA8c,GAAA7c,EAAA,KAAA6c,EAAA5c,WAAA,OAAAC,EAAA2c,EAAAC,GAAA9V,EAAA6V,EAAA,EAAAzd,IAAA,eAAAN,MAC1B,SAAaqb,GACT,IAAMhS,EAAW/H,KAAK1B,IAAI,WAAY,OAChCqe,EAAa3c,KAAKwZ,UAAUhS,KAAK,GAADtF,OAAI6F,EAAQ,aAAYkH,UAAU4C,QAAO,SAAA/Q,GAAC,OAAEE,EAAEF,GAAG4B,UAAQ,GAE/FqX,EAAa/Z,KAAKhC,MAAQgC,KAAK1B,IAAI,cAAgBqe,EACjDra,MAAMka,oCAAoCG,GAC1C3b,EAAE2b,GAAYja,WAPM,CAAS4W,GAejCsD,EAAiB,SAAAC,GAAA,SAAAD,IAAA,OAAAjd,EAAA,KAAAid,GAAAhd,EAAA,KAAAgd,EAAA/c,WAAA,OAAAC,EAAA8c,EAAAC,GAAAjW,EAAAgW,EAAA,EAAA5d,IAAA,SAAAN,MACnB,WAAS,IAAAkO,EAAA,KACCkQ,EAAc9c,KAAK1B,IAAI,WAAY,CAACye,aAAU9a,IAAY8a,QAC1DC,EAAgBhd,KAAK1B,IAAI,WAAY,CAAC2e,eAAYhb,IAAYgb,UAKhEjd,KAAK8Z,WAHUlN,EAAKtO,IAAI,YAAcsO,EAAK4M,UAAUyD,UAAUH,GAAe,KAAOlQ,EAAK4M,UAAU9T,OACrFkH,EAAKtO,IAAI,YAAcsO,EAAK4M,UAAUuD,QAAQC,GAAiB,KAAOpQ,EAAK4M,UAAU/T,WANzF,CAASuU,GAe1BkD,EAA2B,SAAAC,GAAA,SAAAD,IAAA,OAAAvd,EAAA,KAAAud,GAAAtd,EAAA,KAAAsd,EAAArd,WAAA,OAAAC,EAAAod,EAAAC,GAAAvW,EAAAsW,EAAA,EAAAle,IAAA,QAAAN,MAC7B,WACI0E,EAAAC,EAAA6Z,EAAA7d,WAAA,cAAAzB,KAAA,MACA,IAAMwf,EAA2Bpd,KAAK1B,IAAI,mBAAoB,IAC7B,KAA7B8e,GACA3T,QAAQmE,KAAK,0GAEjB5N,KAAKqd,iBAAmBrc,EAAEoc,KAC7B,CAAApe,IAAA,SAAAN,MAED,WACQsB,KAAK8Z,YACL9Z,KAAKwZ,UAAU9T,OACf1F,KAAKqd,iBAAiB5X,SAGtBzF,KAAKwZ,UAAU/T,OACfzF,KAAKqd,iBAAiB3X,YAjBD,CAASsU,GAsBpCsD,EAAgB,SAAAC,GAAA,SAAAD,IAAA,OAAA3d,EAAA,KAAA2d,GAAA1d,EAAA,KAAA0d,EAAAzd,WAAA,OAAAC,EAAAwd,EAAAC,GAAA3W,EAAA0W,EAAA,EAAAte,IAAA,UAAAN,MAClB,WACI,OAAOsB,KAAKtB,MAAMgE,KAAK8N,QAAQ,IAAK,eAFtB,CAAS0J,GAMzBsD,EAAyB,SAAAC,GAAA,SAAAD,IAAA,OAAA7d,EAAA,KAAA6d,GAAA5d,EAAA,KAAA4d,EAAA3d,WAAA,OAAAC,EAAA0d,EAAAC,GAAA7W,EAAA4W,EAAA,EAAAxe,IAAA,UAAAN,MAC3B,WACI,OAAO4D,MAAMmC,sBAAsBnC,MAAMob,iBAAiB1d,KAAKtB,YAFxC,CAASwb,GAMxC,SAASyD,GAAkBpE,EAAYxR,EAAU/J,EAAMkG,GACnD,IACIuK,OAASxM,EACb,QAFciC,GAAU,IAER9D,MACZ,IAAK,eAAgBqO,EAAS4L,EAAsB,MACpD,IAAK,YAAa5L,EAASiM,EAAsB,MACjD,IAAK,aAAcjM,EAASoM,EAAuB,MACnD,IAAK,oBAAqBpM,EAAS2M,EAA8B,MACjE,IAAK,YAAa3M,EAASsM,EAAsB,MACjD,IAAK,oBAAqBtM,EAASwM,EAAwB,MAC3D,IAAK,yBAA0BxM,EAAS+O,EAA2B,MACnE,IAAK,SAAU/O,EAAS6M,EAAmB,MAC3C,IAAK,OAAQ7M,EAASuN,EAAiB,MACvC,IAAK,UAAWvN,EAAS2N,EAAoB,MAC7C,IAAK,OAAQ3N,EAAS6N,EAAiB,MACvC,IAAK,SAAU7N,EAASmO,EAAmB,MAC3C,IAAK,mBAAoBnO,EAASyO,EAA6B,MAC/D,IAAK,MAAOzO,EAASyN,EAAgB,MACrC,IAAK,QAASzN,EAAS6O,EAAkB,MACzC,IAAK,OAAQ7O,EAAS3C,EAAW,MACjC,IAAK,gBAAkB2C,EAASgO,EAA0B,MAC1D,QAAShO,EAAS6K,EAGtB,OAAO,IAAI7K,EAAO8K,EAAYxR,EAAU/J,EAAMkG,G,0sECtP3C,IAAMT,GAAU,SAAAma,GAEnB,SAAAna,IAAc,IAAAmJ,EAQS,O,4FARTjN,CAAA,KAAA8D,IACVmJ,EAAAhN,GAAA,KAAA6D,IACKiV,YAAcmF,IACnBjR,EAAKkR,kBAAoBC,kBACzBnR,EAAKoR,qBACLpR,EAAKqR,gBACLrR,EAAKsR,gBACLtR,EAAKuR,aACLvR,EAAKyK,cAAczK,EACtB,O,sRAAA9M,CAAA2D,EAAAma,G,EAAAna,G,EAAA,EAAAzE,IAAA,MAAAN,MAED,WACoB,IAAA0f,EAAZpe,KAAKyY,QACL2F,EAAA3U,SAAQkM,IAAGnT,MAAA4b,EAAAve,aAElB,CAAAb,IAAA,qBAAAN,MAED,WAC8B,IAAA2f,EAAAC,EAAAC,EAAAC,EAAvBxe,KAAK8d,oBACmB,QAAvBO,EAAArd,EAAE,6BAAqB,IAAAqd,GAAvBA,EAAyB3Y,OACF,QAAvB4Y,EAAAtd,EAAE,6BAAqB,IAAAsd,GAAuB,QAAvBA,EAAvBA,EAAyB9W,KAAK,wBAAgB,IAAA8W,GAA9CA,EAAgDrd,OAAM,WAClDD,EAAE,sBAAsB+b,QAAQ,QAGb,QAAvBwB,EAAAvd,EAAE,6BAAqB,IAAAud,GAAvBA,EAAyB7Y,OACF,QAAvB8Y,EAAAxd,EAAE,6BAAqB,IAAAwd,GAAuB,QAAvBA,EAAvBA,EAAyBhX,KAAK,wBAAgB,IAAAgX,GAA9CA,EAAgDvd,OAAM,WAClDD,EAAE,sBAAsB+b,QAAQ,WAG3C,CAAA/d,IAAA,gBAAAN,MAED,WACI,IAAMqB,EAAOC,KACbgB,EAAE,gBAAgBC,OAAM,WACpB,GAAIlB,EAAKwB,SAAS,CACdoB,OAAO8b,QACP,IAAM7c,EAAU7B,EAAK4X,WAAW9T,aAChC9D,EAAKgC,qBAAyC,mBAAbH,EAA0BA,IAAYA,GAE3E,OAAO,KAGXZ,EAAE,eAAeC,OAAM,WACnB,GAAIlB,EAAKwB,SAAU,CACf,IAAMmd,EAAW,IAAIC,SACrBD,EAASE,OAAO,WAAY7e,EAAKK,QACjCse,EAASE,OAAO,OAAQvQ,KAAK2I,UAAUjX,EAAKoY,qBAE5CnX,EAAE6d,KAAK,CACHC,IAAKC,eACL3e,KAAM,OACNmG,KAAMmY,EACNM,aAAa,EACbC,aAAa,EACbC,OAAO,EACPC,IAAI,WACA,IAAIA,EAAM,IAAIC,eAId,OAHAD,EAAIE,YAAc,SAASC,GACvBH,EAAII,aAAe,QAEhBJ,GAEXK,QAAS,SAASC,EAAUC,EAAYC,GACpC,IAAM3hB,EAAO4hB,UAAUD,EAAME,kBAAkB,uBAAuB5a,MAAM,qBAAqB,IAC3F6a,EAAO,IAAIC,KAAK,CAACN,GAAW,CAACrf,KAAK,wBACxC,GAAIuC,OAAOqd,UAAUC,iBACjBD,UAAUC,iBAAiBH,EAAM9hB,OAC9B,CACH,IAAMkiB,EAAOvX,SAASwX,cAAc,KACpCD,EAAKE,SAAWpiB,EAChBkiB,EAAKG,KAAQC,IAAIC,gBAAgBT,GACjCI,EAAKjf,QAET,OAAO,KAIf,IAAMW,EAAU7B,EAAK4X,WAAW7T,cAChC/D,EAAKgC,qBAAyC,mBAAbH,EAA0BA,IAAYA,GAE3E,OAAO,OAIf,CAAA5C,IAAA,UAAAN,MAIA,SAAQqa,GACAA,EACApW,OAAO6d,SAASzH,KAAOA,EAEvBpW,OAAO8d,QAAQC,UAAU,GAAI/X,SAASgY,MAAOhe,OAAO6d,SAASI,YACpE,CAAA5hB,IAAA,YAAAN,MAED,SAAUqa,GAEN,OADoB/Y,KAAK6gB,UACNpT,MAAM,IAAIqT,OAAO,IAAD5e,OAAK6W,EAAI,SAC/C,CAAA/Z,IAAA,UAAAN,MAED,WACI,OAAOiK,SAAS6X,SAASzH,KAAK5X,UAAU,KAC3C,CAAAnC,IAAA,aAAAN,MAED,SAAW2J,EAAQiP,GACfjP,EAASA,GAAU,KACnBrI,KAAK0S,WAAWrK,GAAQ,EAAOiP,KAClC,CAAAtY,IAAA,gBAAAN,MAED,WAAgB,IAAAqR,EAAA,KACN5D,EAASnM,KAAK4S,cACpBzG,EAAOmD,OAAOzH,SAAQ,SAAA/F,GAAuB,OAATA,GAAeiO,EAAK5P,cAAaqC,MAAlBuN,EAAI2G,GAAkB5U,OACzEqK,EAAOqD,QAAQ3H,SAAQ,SAAA/F,GAAuB,OAATA,GAAeiO,EAAKnP,eAAc4B,MAAnBuN,EAAI2G,GAAmB5U,SAC9E,CAAA9C,IAAA,kBAAAN,MAED,WAAuC,IAAvBqiB,IAAclhB,UAAAuB,OAAA,QAAAa,IAAApC,UAAA,KAAAA,UAAA,GACpBE,EAAOC,KACb,OAAO,IAAIghB,SAAQ,SAAUC,EAASC,GAClClgB,EAAE,oBAAoBmgB,KAAK,cAAcphB,EAAKqhB,OAAO,iBAAmBC,iBAAiB,WAOrF,GANArgB,EAAE,eAAesgB,MAAK,WAClBhf,MAAMif,cAAcvhB,SAGxBsC,MAAMkf,kBAAkBxhB,OAEnByhB,cAAe,CAChB,IAAMC,EAAc,0DAAHxf,OAA6DlB,EAAE,eAAeD,OAAM,sBAAAmB,OAAqB6e,EAAiB,uBAA2B,GAAE,uBACpKA,EACA/f,EAAE,0BAA0B4d,OAAO5d,EAAE0gB,IAGrC1gB,EAAE,oBAAoB2gB,QAAQ3gB,EAAE,uEAADkB,OAAwEwf,EAAW,YAG1HT,YAGX,CAAAjiB,IAAA,kBAAAN,MAED,SAAgBsa,GACZhZ,KAAK0Y,YAAc1Y,KAAK0Y,YAAYxW,OAAO8W,KAC9C,CAAAha,IAAA,cAAAN,MAED,WACIsC,EAAE,qBAAqBoE,SAAS,kBACnC,CAAApG,IAAA,cAAAN,MAED,WACIsC,EAAE,qBAAqBkE,YAAY,kBACtC,CAAAlG,IAAA,uBAAAN,MAED,WACI,OAAOsB,KAAK6V,gBACf,CAAA7W,IAAA,gBAAAV,IAED,WACI,OAAO,IAGX,CAAAU,IAAA,iBAAAN,MAQA,SAAewF,GACXA,EAASA,GAAU,GACnBlE,KAAK2X,WAAazT,EAClBlE,KAAK2X,WAAWC,YAAc1T,EAAOH,uBAAwB,OAC9B9B,IAA3BjC,KAAK2X,WAAW9V,SAChB7B,KAAK2X,WAAW9V,OAAS,qBAEQI,IAAjCjC,KAAK2X,WAAW9T,eAChB7D,KAAK2X,WAAW9T,aAAe,cAEG5B,IAAlCjC,KAAK2X,WAAW7T,gBAChB9D,KAAK2X,WAAW7T,cAAgB,YAGxC,CAAA9E,IAAA,uBAAAN,MASA,SAAqBua,GACjB,IAAI/U,EAAS+U,EACqB,iBAAtBA,IACR/U,EAAS,CACLtC,QAASqX,IAGjB,IAAMpX,OAA2BI,IAAlBiC,EAAOrC,OAAuBqC,EAAOrC,OAAS7B,KAAK2X,WAAW9V,YAE5CI,IAA7BjC,KAAK2X,WAAWzX,UAChBuJ,QAAQmE,KAAK,wEAGjBgU,GAAGC,KAAMC,YAAajgB,EAASqC,EAAOtC,QAAU,IAAM5B,KAAK2X,WAAWzX,SAAUgE,EAAOpC,QAC1F,CAAA9C,IAAA,gBAAAN,MAED,SAAcmI,GACV,IAAI9G,EAAOC,KACXgB,EAAE6F,GAAgB5F,OAAM,WAAclB,EAAK2S,WAAW,MAAM,GAAO,QACtE,CAAA1T,IAAA,iBAAAN,MAED,WACIsB,KAAK2S,iBAAkB,IAC1B,CAAA3T,IAAA,iBAAAN,MAED,SAAeqJ,EAAUmR,GACrBA,OAAkCjX,IAAlBiX,GAAqCA,EACrD,IAAInZ,EAAOC,KACP8G,EAAO9F,EAAE+G,GACbjB,EAAK7F,OAAM,WACHlB,EAAKwB,WACLxB,EAAKgiB,mBACLhiB,EAAKgC,qBAAqB,eAG9BmX,GACAlZ,KAAK0X,aAAa/G,KAAK7J,KAE9B,CAAA9H,IAAA,eAAAN,MAED,SAAaoR,GACT,OAAOA,EAAKU,QAAQ,UAAW,MAClC,CAAAxR,IAAA,YAAAN,MAED,SAAUmR,EAAKC,GAGXD,EAFcC,EAAK7K,MAAM,KACL,GACVuL,QAAQ,SAAU,UAAOvO,IAGvC,CAAAjD,IAAA,eAAAN,MAMA,SAAaoR,EAAMuJ,GACf,OAAuC,GAA/BvJ,EAAKtG,QAAQ6P,EAAU,MAA6C,GAAhCvJ,EAAKtG,QAAQ6P,EAAU,OAAcvJ,IAASuJ,IAG9F,CAAAra,IAAA,gBAAAN,MAeA,SAAcqJ,EAAU/J,EAAMkG,GAE1B,IAAMnE,EAAOC,KAEb,IAHAkE,EAASA,GAAU,IAGR8d,QAEP,OADA9d,EAAO8M,MAAQjJ,EACR/H,KAAKiiB,gBAAgBjkB,EAAMkG,GAGtC,IAAM4C,EAAO9F,EAAE+G,GACTma,OAAwBjgB,IAAhBiC,EAAO9D,KAAqBJ,KAAKmiB,iBAAiBrb,GAAQ5C,EAAO9D,KACzE6R,EAAQjS,KAAKoiB,iBAAiBtb,EAAMob,EAAOhe,EAAOzD,SAqBxD,OApBAyD,EAAOwE,aAAexE,EAAOwE,cAAgB3I,EAAK2I,aAClDuJ,EAAMrK,QAAU1D,EAChB+N,EAAMpE,QAAU7P,EAChBiU,EAAMjU,KAAO+B,EAAK2T,aAAa1V,GAC/BiU,EAAMvK,kBAAwCzF,IAAxBiC,EAAOwD,aAA6BuK,EAAMxK,gBAAkBvD,EAAOwD,aAEpFxD,EAAOme,kBACRpQ,EAAMqQ,UAAS,SAAUja,GAChBnE,EAAOgP,oBACRnT,EAAK2S,WAAWrK,GAAStI,EAAK4S,yBAKnB1Q,IAAnBiC,EAAOqe,SACPre,EAAOqe,QAAQtQ,GAEnBA,EAAMjL,OAENhH,KAAK+U,YAAYpE,KAAKsB,GACfA,IACV,CAAAjT,IAAA,mBAAAN,MAED,SAAiBoI,GACb,IAAI3D,OAASlB,EAUb,OATAjC,KAAK0Y,YAAYjI,MAAK,SAAU+R,GAC5B,GAAIA,EAAGC,OAAO3b,GAEV,OADA3D,EAASqf,EAAG7Y,WACL,UAGA1H,IAAXkB,GACAsG,QAAQC,MAAM,0BAA2B5C,GAEtC3D,IACV,CAAAnE,IAAA,mBAAAN,MAED,SAAiBoI,EAAM4b,EAAWjiB,GAC9B,IAAI0C,OAASlB,EASb,OARKjC,KAAK0Y,YAAYjI,MAAK,SAAU+R,GACjC,GAAIA,EAAG7Y,YAAc+Y,EAEjB,OADAvf,EAAS,IAAIqf,EAAG1b,EAAMrG,IACf,MAGXgJ,QAAQC,MAAM,kCAAmCgZ,EAAW,aAAc5b,GAEvE3D,IAGX,CAAAnE,IAAA,eAAAN,MAIA,SAAawY,EAAO7O,EAAQD,GACxB,IAAMjF,EAAS+T,EAAM5W,MAAM+H,EAAQD,GACnC,QAAyBnG,IAArBkB,EAAOiP,UACP,IAAK,IAAMpT,KAAOmE,EAAOiP,UACrBpS,KAAKhB,GAAOmE,EAAOiP,UAAUpT,GAGrC,OAAOmE,EAAO8D,QACjB,CAAAjI,IAAA,mBAAAN,MAED,SAAiBwF,GACb,IAAMnE,EAAOC,KACRA,KAAKuB,WACV2C,EAASA,GAAU,GACnBlE,KAAK+U,YAAYlN,SAAQ,SAAUP,SACTrF,IAAlBiC,EAAOiI,QAAwBjI,EAAOiI,OAAOsE,MAAK,SAAAnJ,GAAC,OAAIvH,EAAKmV,aAAa5N,EAAEtJ,KAAMsJ,QACjFA,EAAE6D,MAAMjH,MAEhBlE,KAAKiX,iBAAmB,GAExBjX,KAAKyU,eAAetG,KAAI,SAACT,GAAI,OAAKA,EAAKvC,WACvCnL,KAAK2iB,UACL3iB,KAAKqX,cAELrX,KAAK0X,aAAa7P,SAAQ,SAAUf,GAChCA,EAAKrB,aAIb,CAAAzG,IAAA,iBAAAN,MAOA,SAAeqJ,EAAU/J,EAAMkG,GAAwB,IAAhB0e,EAAM/iB,UAAAuB,OAAA,QAAAa,IAAApC,UAAA,IAAAA,UAAA,GACnCoS,EAAQ0L,GAAkB3d,KAAM+H,EAAU/J,EAAMkG,GAItD,OAHAlE,KAAK2Y,aAAahI,KAAKsB,GACnB2Q,GACA5iB,KAAK4Y,aAAajI,KAAKsB,GACpBA,IACV,CAAAjT,IAAA,SAAAN,MAED,WACI,IAAMqB,EAAOC,KACP6iB,EAAgB7iB,KAAK2Y,aAAaxK,KAAI,SAAArN,GAAC,OAAIA,KAC3CgiB,EAAaD,EAAc1U,KAAI,SAAA7G,GAAC,OAAIA,EAAEhJ,IAAI,WAAY,MACxDwkB,EAAW1hB,OAAS,GAAK0hB,EAAWrS,MAAK,SAAA3P,GAAC,OAAIA,GAAKgiB,EAAW,OAC9DD,EAAcE,MAAK,SAAC1N,EAAG2N,GAAC,OAAK3N,EAAE/W,IAAI,WAAY,GAAK0kB,EAAE1kB,IAAI,WAAY,MAC1EukB,EAAchb,SAAQ,SAAUoK,GAC5BA,EAAMpR,OAAOd,GACbkS,EAAMgR,aAAaljB,EAAK8V,cAAchV,aAE7C,CAAA7B,IAAA,cAAAN,MAED,WAAc,IAAA6W,EAAA,KACVvV,KAAK4Y,aAAa/Q,SAAQ,SAACoK,GACvBA,EAAMpR,OAAO0U,QAEpB,CAAAvW,IAAA,sBAAAN,MAED,WACIsB,KAAKgP,cAAcb,KAAI,SAAA+U,GACnBA,EAAY/T,cAEnB,CAAAnQ,IAAA,cAAAN,MAED,WACSsB,KAAK2S,iBACN3R,EAAE,qBAAqBkE,YAAY,kBAE1C,CAAAlG,IAAA,eAAAN,MAED,SAAa2J,GACTA,EAASA,GAAU,KACnBrI,KAAK0S,WAAWrK,GAAQ,Q,4FAzZT,CAASoE","file":"calc/calc_vat/calc.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/dist/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 1174);\n","import { Calculator, ShowErrorWay } from \"../../common/calculator\";\r\nimport {fields} from \"../../common/basic_fields.js\";\r\n\r\nclass VatCalculator extends Calculator{\r\n code() { return 'vat'; }\r\n type() { return \"CalcValueAddedTax\"; }\r\n\r\n initialize(){\r\n let self = this;\r\n\r\n this.submitOnChange();\r\n this.calcName = \"Nachislit_nds\";\r\n\r\n this.addInputField(\"#sumInput\", \"sumInput\", {\r\n type: 'money',\r\n errors: [{ check: function (v) { return v !== null && v > 0 }, errClassElem: \"\" }],\r\n options: {keyup: true },\r\n });\r\n\r\n this.addInputField(\"#rateInput\", \"rate\", {\r\n type: 'float', \r\n options: { keyup: true, precision: 2 }\r\n });\r\n\r\n this.addOutputField(\"#calcFormulaEx1\", \"formulaEx1\", {render: (x) => x, html:true});\r\n this.addOutputField(\"#calcFormulaEx2\", \"formulaEx2\", {render: (x) => x, html:true});\r\n this.addOutputField(\"#inputRateVal\", \"rate\", {render: (x) => x? x: \"0\"});\r\n \r\n\r\n $(\".calc-div-input-fields .hardcoded-vat-rates.fixed-rates > a\").click(function () {\r\n var val = $(this).html();\r\n $('#rateInput').val(val.substring(0, val.length - 1));\r\n self.autoSubmit();\r\n });\r\n\r\n $(\".calc-div-input-fields .fixed-rates a\").click(function(e){\r\n self.autoSubmit();\r\n if(self.isActive)\r\n self.sendRateStatisticMessage(self.calcName, self.rate+\"%\");\r\n });\r\n\r\n let inputStavkaStatistic = (type, value) => {\r\n let goalParams = {\r\n message: \"Input_stavka\",\r\n prefix: \"\",\r\n args:{\r\n type, \r\n value\r\n }\r\n };\r\n self.sendStatisticMessage(goalParams);\r\n }\r\n\r\n $(\"#rateInput\").blur((function(){\r\n if(self.isActive && self.rate !== undefined && self.rate !== null)\r\n inputStavkaStatistic(self.calcName, `${self.rate}%`);\r\n }));\r\n\r\n $(\"#calculatedRateInput\").blur((function(){\r\n if(self.isActive && self.calculatedRate)\r\n inputStavkaStatistic(self.calcName, `${self.calculatedRate}/${self.calculatedRate + 100}`);\r\n }));\r\n\r\n $(\"#rateInput, #calculatedRateInput, #sumInput\").click(function(){\r\n if(this.selectionStart == this.selectionEnd)\r\n tools.selectAllText.apply(this);\r\n });\r\n\r\n $(\".results-div\").on('copy', function(){\r\n if(self.isActive){\r\n let goalParams = {\r\n message: \"Copy\",\r\n prefix: \"\",\r\n args:{\r\n text: window.getSelection().toString()\r\n }\r\n };\r\n self.sendStatisticMessage(goalParams);\r\n }\r\n });\r\n }\r\n\r\n renderError(){\r\n this.mainBlockVal = \"0,00\";\r\n this.formulaEx1 = \"\";\r\n this.formulaEx2 = \"\";\r\n this.sumInput = \"0,00\";\r\n this.inputRateVal = \"0\"\r\n\r\n this.render();\r\n }\r\n\r\n generateExportObject(){\r\n let result = super.generateExportObject();\r\n result.inputTitle = this.inputTitle;\r\n result.rateTitle = this.rateTitle;\r\n result.render.rate_text += (this.rateTitle == \"Ставка НДС\" || result.render.rate_text == \"16.67\" || result.render.rate_text == \"9.09\" ? \"%\" : \"\");\r\n return result;\r\n }\r\n\r\n sendRateStatisticMessage(type, value){\r\n let goalParams = {\r\n message: \"Stavka\",\r\n prefix: \"\",\r\n args:{\r\n type,\r\n value\r\n }\r\n };\r\n this.sendStatisticMessage(goalParams);\r\n }\r\n}\r\n\r\nexport {VatCalculator}\r\n","import {VatCalculator} from './base.js'\r\n\r\nclass AddVatCalculator extends VatCalculator{\r\n initialize() {\r\n super.initialize();\r\n let self = this;\r\n self.calcName = \"Nachislit_nds\";\r\n\r\n this.setupStatistic({\r\n calcName: 'nds',\r\n prefix: \"Calculation_\",\r\n printMessage: {\r\n message: \"Print\", \r\n args: {\r\n type: self.calcName\r\n }\r\n },\r\n exportMessage: {\r\n message: \"Export\", \r\n args: {\r\n type: self.calcName\r\n }\r\n },\r\n isStartedEventIgnore: true\r\n });\r\n\r\n this.loadDescription(false);\r\n this.sendStartedStatistics = false;\r\n\r\n this.inputTitle = \"Сумма без НДС\";\r\n this.rateTitle = \"Ставка НДС\";\r\n }\r\n \r\n calculate(params) {\r\n let self = this;\r\n\r\n if (this.rate == null) {\r\n this.renderError();\r\n return false;\r\n }\r\n\r\n if(!this.sendStartedStatistics){\r\n let goalParams = {\r\n prefix: \"\",\r\n message: \"Nachislit\"\r\n };\r\n this.sendStatisticMessage(goalParams);\r\n this.sendStartedStatistics = true;\r\n }\r\n \r\n this.isPercent = true;\r\n this.mainBlockName = 'Сумма с НДС';\r\n let vat = this.sumInput * this.rate / 100;\r\n this.mainBlockVal = this.sumInput + vat;\r\n\r\n this.formula1 = 'НДС = Сумма без НДС × Ставка НДС';\r\n this.formula2 = 'Сумма с НДС = Сумма без НДС + НДС';\r\n\r\n this.formulaEx1 = tools.getLocaleSumInRubbles(this.sumInput) + ' × ' + this.rate + '% = '\r\n + tools.getLocaleSumInRubbles(vat) + ' (' + tools.verboseNumber(vat) + ')';\r\n this.formulaEx2 = tools.getLocaleSumInRubbles(this.sumInput) + ' + ' + tools.getLocaleSumInRubbles(vat) + ' = ' + tools.getLocaleSumInRubbles(this.mainBlockVal ) + ' (' + tools.verboseNumber(this.mainBlockVal ) + ')';\r\n\r\n return true;\r\n }\r\n\r\n}\r\n\r\nexport {AddVatCalculator}","import {VatCalculator} from './base.js'\r\n\r\nclass ComputeSumCalculator extends VatCalculator{\r\n initialize() {\r\n let self = this;\r\n super.initialize();\r\n\r\n self.calcName = \"Summa_po_nds\"\r\n\r\n this.setupStatistic({\r\n calcName: 'nds',\r\n prefix: \"Calculation_\",\r\n printMessage: {\r\n message: \"Print\", \r\n args: {\r\n type: self.calcName\r\n }\r\n },\r\n exportMessage: {\r\n message: \"Export\", \r\n args: {\r\n type: self.calcName\r\n }\r\n },\r\n isStartedEventIgnore: true\r\n });\r\n\r\n this.sendStartedStatistics = false;\r\n\r\n this.inputTitle = 'НДС';\r\n this.rateTitle = \"Ставка НДС\";\r\n }\r\n \r\n calculate(params) {\r\n let self = this;\r\n\r\n if(!this.rate){\r\n this.renderError();\r\n return false;\r\n }\r\n\r\n if(!this.sendStartedStatistics){\r\n let goalParams = {\r\n prefix: \"\", \r\n message: \"Summa_po\"\r\n };\r\n this.sendStatisticMessage(goalParams);\r\n this.sendStartedStatistics = true;\r\n }\r\n \r\n this.isPercent = true;\r\n this.mainBlockName = 'Сумма с НДС';\r\n let vat = this.sumInput;\r\n let sumWithoutVat = vat * 100 / this.rate;\r\n this.mainBlockVal = sumWithoutVat + vat;\r\n\r\n this.formula1 = 'Сумма без НДС = НДС ÷ Ставка НДС';\r\n this.formula2 = 'Сумма с НДС = Сумма без НДС + НДС';\r\n\r\n this.formulaEx1 = tools.getLocaleSumInRubbles(vat) + ' ÷ ' + this.rate + '% = '\r\n + tools.getLocaleSumInRubbles(sumWithoutVat) + ' (' + tools.verboseNumber(sumWithoutVat) + ')';\r\n this.formulaEx2 = tools.getLocaleSumInRubbles(sumWithoutVat) + ' + ' + tools.getLocaleSumInRubbles(vat) + ' = ' + tools.getLocaleSumInRubbles(this.mainBlockVal) + ' (' + tools.verboseNumber(this.mainBlockVal) + ')';\r\n \r\n return true;\r\n }\r\n}\r\n\r\nexport {ComputeSumCalculator}","import {VatCalculator} from './base.js'\r\n\r\nclass HighlightVatCalculator extends VatCalculator{\r\n initialize() {\r\n super.initialize();\r\n let self = this;\r\n self.calcName = \"Vydelit_nds\"\r\n\r\n this.setupStatistic({\r\n calcName: 'nds',\r\n prefix: \"Calculation_\",\r\n printMessage: {\r\n message: \"Print\", \r\n args: {\r\n type: self.calcName \r\n }\r\n },\r\n exportMessage: {\r\n message: \"Export\", \r\n args: {\r\n type: self.calcName \r\n }\r\n },\r\n isStartedEventIgnore: true\r\n });\r\n this.sendStartedStatistics = false;\r\n\r\n this.irregularValueNames = ['decimalRate', 'decimalRateStr']; // For value changes tracking\r\n\r\n this.addInputField(\"#calculatedRateInput\", \"calculatedRate\", {\r\n type: 'count', \r\n options: { maxVal: 99, keyup: true },\r\n });\r\n\r\n $(\".calc-div-input-fields .hardcoded-vat-rates.fixed-rates > a\").click(function () {\r\n var val = $(this).html();\r\n $('#rateInput').val(val.substring(0, val.length - 1));\r\n self.decimalRate = false;\r\n self.autoSubmit();\r\n });\r\n \r\n $(\".calc-div-input-fields .hardcoded-vat-rates.calculated-rates > a\").click(function () {\r\n var val = $(this).html();\r\n $('#calculatedRateInput').val(val.split(`/`)[0]);\r\n $('.rate-field-div').removeClass('show-calculated-decimal');\r\n self.decimalRate = false;\r\n self.autoSubmit();\r\n });\r\n \r\n $(\".calc-div-input-fields .hardcoded-vat-rates.calculated-decimal-rate > a\").click(function () {\r\n self.decimalRateStr = $(this).html();\r\n $('.rate-field-div .calculated-decimal-val > span').html(self.decimalRateStr);\r\n $('.rate-field-div').addClass('show-calculated-decimal');\r\n self.decimalRate = true;\r\n self.autoSubmit();\r\n if (self.isActive && self.rate) {\r\n self.sendRateStatisticMessage(self.calcName, self.rate + \"%\");\r\n }\r\n else {\r\n self.sendRateStatisticMessage(self.calcName, self.decimalRateStr);\r\n } \r\n });\r\n \r\n $(\".calc-div-input-fields .calculated-decimal-val\").click(function () {\r\n $('.rate-field-div').removeClass('show-calculated-decimal');\r\n $('#calculatedRateInput').focus();\r\n self.decimalRate = false;\r\n self.autoSubmit();\r\n });\r\n\r\n $(\".sp2-dropdown dropdown-select\").click(() => {\r\n self.autoSubmit();\r\n });\r\n\r\n $(\".calc-div-input-fields .calculated-rates a\").click(function(e){\r\n self.autoSubmit();\r\n if(self.isActive)\r\n self.sendRateStatisticMessage(self.calcName, self.calculatedRate+\"/\" + (100+self.calculatedRate));\r\n });\r\n\r\n this.inputTitle = \"Сумма c НДС\";\r\n this.rateTitle = \"Ставка НДС\";\r\n }\r\n\r\n afterParse(){\r\n const tooltipDiv1 = $(\"#tooltipDiv1\");\r\n const tooltipDiv2 = $(\"#tooltipDiv2\");\r\n if (this.rateType.value === 1) {\r\n $('#rateBlock').addClass('calculated-rate');\r\n this.calculatedRate = this.calculatedRate || 0;\r\n $('#calculatedRateDivider').html((100 + this.calculatedRate));\r\n $(\".hardcoded-vat-rates.fixed-rates\").hide();\r\n $(\".hardcoded-vat-rates.calculated-rates, .hardcoded-vat-rates.calculated-decimal-rate\").show();\r\n this.rateTitle = \"Расчётная ставка\";\r\n this.calcName = \"Vydelit_nds_raschetnaya\";\r\n tooltipDiv1.hide();\r\n tooltipDiv2.show();\r\n } else {\r\n $('#rateBlock').removeClass('calculated-rate');\r\n $(\".hardcoded-vat-rates.fixed-rates\").show();\r\n $(\".hardcoded-vat-rates.calculated-rates, .hardcoded-vat-rates.calculated-decimal-rate\").hide();\r\n this.rateTitle = \"Ставка НДС\";\r\n this.calcName = \"Vydelit_nds\";\r\n this.decimalRate = false;\r\n tooltipDiv1.show();\r\n tooltipDiv2.hide();\r\n }\r\n }\r\n \r\n calculate(params) {\r\n let self = this;\r\n if(!this.decimalRate && (\r\n this.rate == null && !this.calculatedRate\r\n || this.rate == null && (this.rateType.value == 0 && this.calcName !== \"Vydelit_nds_raschetnaya\")\r\n || !this.calculatedRate && this.calcName == \"Vydelit_nds_raschetnaya\")){\r\n this.renderError();\r\n return false;\r\n }\r\n\r\n if(!this.sendStartedStatistics){\r\n let goalParams = {\r\n prefix: \"\", \r\n message: \"Vydelit\"\r\n };\r\n this.sendStatisticMessage(goalParams);\r\n this.sendStartedStatistics = true;\r\n }\r\n\r\n let isFixedRateType = this.rateType.value == 1;\r\n\r\n this.mainBlockName = 'Сумма без НДС';\r\n this.formula2 = 'Сумма без НДС = Сумма с НДС − НДС';\r\n this.formula1 = !isFixedRateType\r\n ? 'НДС = Сумма с НДС × Ставка НДС ÷ (100% + Ставка НДС)'\r\n : 'НДС = Сумма с НДС × Расчётная ставка НДС';\r\n let calculatedRateStr = \"\";\r\n this.isPercent = true;\r\n if (!isFixedRateType) {\r\n calculatedRateStr = this.rate + '% ÷ (100% + ' + this.rate + '%)';\r\n } else {\r\n if ($(\".rate-field-div\").hasClass(\"show-calculated-decimal\")) { \r\n calculatedRateStr = self.decimalRateStr;\r\n this.rate = tools.parseLocaleFloat(self.decimalRateStr.slice(0, -1));\r\n } else {\r\n calculatedRateStr = this.calculatedRate + '/' + (100 + this.calculatedRate);\r\n this.rate = this.calculatedRate / (100 + this.calculatedRate) * 100;\r\n this.isPercent = false;\r\n }\r\n }\r\n\r\n let sumWithVat = this.sumInput;\r\n let vat = tools.roundNumber(!isFixedRateType ? sumWithVat * this.rate / (100 + this.rate) : sumWithVat * this.rate / 100, 2);\r\n let sumNoVat = sumWithVat - vat;\r\n this.mainBlockVal = sumNoVat;\r\n\r\n this.formulaEx1 = tools.getLocaleSumInRubbles(sumWithVat) + ' × ' + calculatedRateStr + ' = '\r\n + tools.getLocaleSumInRubbles(vat) + ' (' + tools.verboseNumber(vat) + ')';\r\n this.formulaEx2 = tools.getLocaleSumInRubbles(sumWithVat) + ' − ' + tools.getLocaleSumInRubbles(vat) + ' = ' + tools.getLocaleSumInRubbles(sumNoVat) + ' (' + tools.verboseNumber(sumNoVat) + ')';\r\n \r\n if(!this.isPercent)\r\n this.rate = this.calculatedRate + \"/\" + (100 + this.calculatedRate);\r\n\r\n return true;\r\n }\r\n}\r\n\r\nexport {HighlightVatCalculator}","import {AddVatCalculator} from './components/calcAddVat';\r\nimport {ComputeSumCalculator} from './components/calcComputeSum';\r\nimport {HighlightVatCalculator} from './components/calcHighlightVat';\r\n\r\n$(function () {\r\n let addVatCalculator = new AddVatCalculator();\r\n let computeSumCalculator = new ComputeSumCalculator();\r\n let highlightVatCalculator = new HighlightVatCalculator();\r\n computeSumCalculator.isActive = false;\r\n highlightVatCalculator.isActive = false;\r\n\r\n const tooltipDiv1 = $(\"#tooltipDiv1\");\r\n const tooltipDiv2 = $(\"#tooltipDiv2\");\r\n\r\n function changeTab() {\r\n $(\".calc-div-input-tabs div.selected\").removeClass('selected');\r\n $(this).addClass('selected');\r\n \r\n var calcType = $('.calc-div-input-tabs div.selected').data('type');\r\n let inputTitle = \"\";\r\n if(calcType == 1){\r\n addVatCalculator.isActive = true;\r\n computeSumCalculator.isActive = false;\r\n highlightVatCalculator.isActive = false;\r\n addVatCalculator.autoSubmit(null, true);\r\n inputTitle = addVatCalculator.inputTitle;\r\n }else if(calcType == 2){\r\n addVatCalculator.isActive = false;\r\n computeSumCalculator.isActive = false;\r\n highlightVatCalculator.isActive = true;\r\n highlightVatCalculator.autoSubmit(null, true);\r\n inputTitle = highlightVatCalculator.inputTitle;\r\n }else{\r\n addVatCalculator.isActive = false;\r\n computeSumCalculator.isActive = true;\r\n highlightVatCalculator.isActive = false;\r\n computeSumCalculator.autoSubmit(null, true);\r\n inputTitle = computeSumCalculator.inputTitle;\r\n }\r\n\r\n $('#sumInputTitle, #inputSumTitle').html(inputTitle);\r\n\r\n if (calcType === 2) {\r\n $(\"#calculatedRate\").show();\r\n $(\"#fixedRate\").hide();\r\n $(\"#rateBlock dropdown-select\").show();\r\n $(\"#rateDroplist\").hide();\r\n if($(\"#rateBlock dropdown-select\").val() === 0) {\r\n tooltipDiv1.show();\r\n tooltipDiv2.hide();\r\n } else {\r\n tooltipDiv1.hide();\r\n tooltipDiv2.show();\r\n }\r\n \r\n } else {\r\n $(\"#rateBlock\").removeClass(\"calculated-rate\")\r\n $(\"#calculatedRate\").hide();\r\n $(\"#fixedRate\").show();\r\n $(\".hardcoded-vat-rates.fixed-rates\").show();\r\n $(\".hardcoded-vat-rates.calculated-rates, .hardcoded-vat-rates.calculated-decimal-rate\").hide();\r\n $(\"#rateBlock dropdown-select\").hide();\r\n $(\"#rateDroplist\").show();\r\n tooltipDiv1.show();\r\n tooltipDiv2.hide();\r\n } \r\n \r\n \r\n }\r\n $(\".calc-div-input-tabs div.calc-div-input-tab\").click(changeTab);\r\n \r\n});","var ShowErrorWay = {\r\n SHOW_ALL: 1,\r\n SHOW_FIRST: 2\r\n}\r\n\r\nexport { ShowErrorWay };","import { ShowErrorWay } from \"./calculator/utils.js\";\r\n\r\n\r\n/*\r\n * To define new field type create class which extends Field class\r\n */\r\nclass Field {\r\n constructor(selectorOrElem, options) {\r\n this.elem = $(selectorOrElem);\r\n this.options = options;\r\n this.defaultGetValue = options && 'defaultGetValue' in options ? options.defaultGetValue : null;\r\n this.init();\r\n this.valid = true;\r\n this.deleted = false;\r\n this.isDynamic = false;\r\n this._ignore = false;\r\n }\r\n\r\n // this method is required for matching type with class\r\n static keyName() { return ''; }\r\n\r\n getValue() { return undefined; }\r\n setValue(v) { }\r\n\r\n // this method is required for automatic calculation of defaultValue\r\n getClearValue() { return this.getValue(); }\r\n\r\n // this method is required for automatic export build\r\n getExportValue() { return this.getValue(); }\r\n\r\n // additional field setup\r\n init() { }\r\n\r\n // for silent check (send sender as argument of function f)\r\n onChange(f) {\r\n let self = this;\r\n this.elem.change(function (e) { f(self.elem[0]); });\r\n if (this.options && this.options.keyup) {\r\n this.elem.keyup(function (e) { f(self.elem[0]); });\r\n }\r\n return this.elem;\r\n }\r\n\r\n // allows showing reset button for ignored fields\r\n showReset() { return false; }\r\n\r\n // for auto detecting type\r\n static detect(elem) { return false; }\r\n\r\n errorIsVisible() { return this.elem.hasClass('err') || this.elem.find('.err').length > 0; }\r\n isFilled() { return this.getClearValue() !== this.defaultValue; }\r\n\r\n\r\n delete() {\r\n this.deleted = true;\r\n }\r\n\r\n get ignore() { return this._ignore; }\r\n set ignore(val) { this._ignore = val; }\r\n\r\n clearErrors() {\r\n const errClassElem = (this.params_.errClassElem === undefined ? this.elem : $(this.params_.errClassElem));\r\n errClassElem.removeClass('err');\r\n if (this.params_.errors !== undefined) {\r\n this.params_.errors.forEach(function (err) {\r\n if (err.errClassElem !== undefined)\r\n $(err.errClassElem).removeClass('err');\r\n $(err.selector).hide();\r\n });\r\n }\r\n }\r\n\r\n reset(params) {\r\n params = params || {};\r\n if (!params.keepValue) {\r\n this.setValue(this.defaultValue);\r\n }\r\n if (!params.keepErrors) {\r\n this.clearErrors();\r\n }\r\n }\r\n\r\n check(autoValidation, sender, phase, loud ) {\r\n if (phase < 2) {\r\n const silent = autoValidation && sender != this.elem[0] && !loud;\r\n const self = this.elem[0];\r\n let valid = true;\r\n if (this.params_.errors !== undefined) {\r\n const handler = (this.params_.showErrorWay == ShowErrorWay.SHOW_ALL ? 'forEach' : 'some');\r\n const v = this.getValue();\r\n const errClassElem = (this.params_.errClassElem === undefined ? this.elem : $(this.params_.errClassElem));\r\n if (!silent) this.clearErrors();\r\n this.params_.errors[handler](function (err) {\r\n if (!err.check(v, autoValidation)) {\r\n if (!silent) {\r\n $(err.selector).show();\r\n // fix for shadow DOM in ie\r\n if (window.document.documentMode && self.tagName == \"SUMMARY-INPUT\")\r\n $(err.selector).css('display', 'block');\r\n if (err.errClassElem !== undefined)\r\n $(err.errClassElem).addClass('err');\r\n else\r\n errClassElem.addClass('err');\r\n }\r\n valid = false;\r\n return true;\r\n }\r\n });\r\n }\r\n return valid;\r\n }\r\n return true;\r\n };\r\n}\r\n\r\n\r\nclass _BaseObjectField extends Field {\r\n getClearValue() { return tools.deepcopy(this.elem[0].value); }\r\n getValue() { return this.elem.val(); }\r\n setValue(v) { this.elem.val(v); }\r\n getExportValue() { return this.elem.val(); }\r\n isFilled() {\r\n const clearValue = this.getClearValue();\r\n for (const key in clearValue) {\r\n if (clearValue[key] !== this.defaultValue[key])\r\n return true;\r\n }\r\n return false;\r\n }\r\n}\r\n\r\n\r\nclass NumberField extends Field {\r\n static keyName() { return ''; }\r\n getClearValue() { return this.elem.val() === \"\" ? \"\" : this.getValue(); }\r\n setValue(v) { this.elem.val(v); }\r\n onChange(f) {\r\n let self = this;\r\n if (window.document.documentMode) {\r\n this.elem.blur(function (e) { f(self.elem[0]); });\r\n } else {\r\n this.elem.change(function (e) { f(self.elem[0]); });\r\n }\r\n if (this.options && this.options.keyup) {\r\n this.elem.keyup(function (e) { f(self.elem[0]); });\r\n }\r\n return this.elem;\r\n }\r\n setupNumberInput(isFloat, props, disableProps) {\r\n let self = this;\r\n disableProps = disableProps || [];\r\n if (this.options) {\r\n [\"maxVal\", \"minVal\", \"precision\"].forEach(function (name) {\r\n if (self.options[name] !== undefined) {\r\n if (disableProps.indexOf(name) >= 0) {\r\n console.error(`Prop ${name} is not allowed in field of type \"${self.keyName()}\"`);\r\n }\r\n else {\r\n props[name] = self.options[name];\r\n }\r\n }\r\n });\r\n }\r\n const $field = this.elem.closest('div.field-div');\r\n $field.find(\"input.base-input\").inputFilter(isFloat, props);\r\n this.elem.focusin(function () {\r\n this.classList.remove('err');\r\n $field.find(\".error-text\").hide();\r\n });\r\n }\r\n}\r\n\r\n\r\nclass CountField extends NumberField {\r\n static keyName() { return 'count'; }\r\n getValue() { return this.elem.val() ? tools.parseLocaleInt(this.elem.val()) : this.defaultGetValue; }\r\n init() { this.setupNumberInput(false, {}, ['precision']); }\r\n}\r\n\r\n\r\nclass YearField extends NumberField {\r\n static keyName() { return 'year'; }\r\n getValue() { return this.elem.val() ? tools.parseLocaleInt(this.elem.val()) : this.defaultGetValue; }\r\n init() { this.setupNumberInput(false, { allowSpaces: false, maxLength: 4 }, ['precision']); }\r\n}\r\n\r\n\r\nclass PeriodField extends NumberField {\r\n static keyName() { return 'period'; }\r\n getValue() { return this.elem.val() ? tools.parseLocaleInt(this.elem.val()) : this.defaultGetValue; }\r\n init() { this.setupNumberInput(false, { allowSpaces: false }, ['precision']); }\r\n}\r\n\r\n\r\nclass FloatField extends NumberField {\r\n static keyName() { return 'float'; }\r\n getValue() { return this.elem.val() ? tools.parseLocaleFloat(this.elem.val()) : this.defaultGetValue; }\r\n init() { this.setupNumberInput(true, {precision: 3}); }\r\n}\r\n\r\n\r\nclass MoneyField extends FloatField {\r\n static keyName() { return 'money'; }\r\n init() { this.setupNumberInput(true, {}, ['precision']); }\r\n}\r\n\r\n\r\nclass SelectField extends Field {\r\n static keyName() { return 'select'; }\r\n getValue() {\r\n return { value: this.elem[0].value, text: this.elem[0].itemText };\r\n }\r\n setValue(v) { this.elem.val(v); }\r\n init() {\r\n let self = this;\r\n this.elem.focusin(function () {\r\n var $field = $(this).closest('div.field-div');\r\n self.elem.removeClass('err');\r\n $field.find(\".error-text\").hide();\r\n });\r\n }\r\n onChange(f) {\r\n let self = this;\r\n return this.elem.change(function (e) { f(self.elem[0]); });\r\n }\r\n getClearValue() { return this.getValue().value; }\r\n getExportValue() { return this.getValue().text; }\r\n reset(params) {\r\n params = params || {};\r\n if (!params.keepValue) {\r\n this.elem[0].reset(this.defaultValue);\r\n }\r\n if (!params.keepErrors) {\r\n this.clearErrors();\r\n }\r\n }\r\n static detect(elem) {\r\n return elem[0].tagName === 'DROPDOWN-SELECT';\r\n }\r\n}\r\n\r\n\r\nclass RadioField extends Field {\r\n static keyName() { return 'radio'; }\r\n getValue() {\r\n var checkedElem = this.elem.find('input:checked');\r\n if (checkedElem.length > 0) {\r\n return { value: checkedElem[0].id, text: checkedElem.parent().find(\"label\").text() };\r\n }\r\n return undefined;\r\n }\r\n setValue(v) { this.elem.find('input#' + v).prop(\"checked\", true); }\r\n onChange(f) {\r\n let self = this;\r\n return this.elem.find('input').change(function (e) { f(self.elem[0]); });\r\n }\r\n getClearValue() { return this.getValue().value; }\r\n getExportValue() { return this.getValue().text; }\r\n static detect(elem) {\r\n return elem.find('.radio-elem').length > 0;\r\n }\r\n}\r\n\r\n\r\nclass CheckboxField extends Field {\r\n static keyName() { return 'checkbox'; }\r\n getValue() { return this.control.checked; }\r\n setValue(v) {this.control.checked = v; }\r\n init() {\r\n this.control = this.elem.find('input[type=\"checkbox\"]')[0];\r\n }\r\n onChange(f) {\r\n let self = this;\r\n return this.elem.find('input[type=\"checkbox\"]').change(function (e) {f(self.elem[0]); });\r\n }\r\n static detect(elem) {\r\n return elem.find('input[type=\"checkbox\"]').length == 1;\r\n }\r\n}\r\n\r\nclass TextField extends Field {\r\n static keyName() { return 'text'; }\r\n getClearValue() { return this.elem.val();}\r\n getValue() {\r\n const val = tools.removeExtraSpace(this.elem.val());\r\n return (this.options && this.options.raw ? val : tools.escapeTags(val));\r\n }\r\n setValue(v) { this.elem.val(v); }\r\n isFilled() { return false; }\r\n}\r\n\r\nclass LinkField extends Field {\r\n static keyName() { return 'link'; }\r\n getValue() {\r\n const selectedLink = this.elem.find('a.selected-link');\r\n if (selectedLink.length > 0) {\r\n return selectedLink.data(\"type\");\r\n }\r\n return undefined;\r\n }\r\n setValue(v) { this.elem.find(`a[data-type=\"${v}\"]`).addClass(\"selected-link\"); }\r\n init() {\r\n const self = this;\r\n this.elem.find('a').click(function (event) {\r\n event.preventDefault();\r\n self.elem.find('a').removeClass('selected-link');\r\n $(this).addClass('selected-link');\r\n return false;\r\n });\r\n }\r\n onChange(f) {\r\n let self = this;\r\n return this.elem.find('a').click(function (e) { f(self.elem[0]); });\r\n }\r\n getClearValue() { return this.getValue(); }\r\n getExportValue() { return this.getValue(); }\r\n reset(params) {\r\n this.elem.find('a').removeClass('selected-link');\r\n this.setValue(this.defaultGetValue);\r\n }\r\n static detect(elem) {\r\n return elem.find('a.selected-link').length > 0;\r\n }\r\n}\r\n\r\nconst fields = [MoneyField, FloatField, SelectField, RadioField, CountField, YearField, PeriodField, CheckboxField, TextField, LinkField];\r\n\r\nexport { fields, Field, _BaseObjectField, RadioField, TextField, FloatField };\r\n","import { CalculatorInterface } from \"./calc_interface.js\"\r\n\r\n\r\nexport class CalculatorComplex extends CalculatorInterface {\r\n /**\r\n * Scans document or node (if htmlNode is set)\r\n * @param {any} htmlNode - set if you need to scan fields inside specific node (useful for dynamic content)\r\n * @returns {Object} {inputs, outputs}\r\n */\r\n fetchFields(htmlNode) {\r\n const calc_ = this;\r\n if (htmlNode == undefined)\r\n htmlNode = document;\r\n const $node = $(htmlNode);\r\n\r\n function scopeEvalFunc(underscore, script) {\r\n return new Function(`\"use strict\"; const cc = this; const _ = cc[\"${underscore}\"]; return ${script};`).bind(calc_);\r\n }\r\n\r\n function parseNameType(text) {\r\n const parts = /^(\\[(.*?)\\])?([^\\[\\]\\:]+)(\\:(.+))?$/g.exec(text);\r\n if (parts === null) {\r\n throw new Error(`Incorrect format for cc:input value (\"${attr}\"). Must be \"name\" or \"[type]name\"`);\r\n }\r\n const paramString = parts[5];\r\n const options = (parts[2] !== undefined ? { type: parts[2] } : {});\r\n\r\n if (paramString !== undefined) {\r\n paramString.match(/(?:[^,\\s\\[]+(?:\\[.*?\\])?)(?=\\s*,|\\s*$)/g).forEach(item => {\r\n const splitPos = item.indexOf('=');\r\n if (splitPos < 0) {\r\n console.warn(`Incorrect option value '${item}'. Must be something like 'option=value'. Ignoring...`);\r\n return false;\r\n }\r\n const varName = item.substr(0, splitPos);\r\n let value = item.substr(splitPos + 1);\r\n\r\n if (/^\\d+$/.test(value)) {\r\n value = parseInt(value);\r\n }\r\n else if (/^\\d+(\\.\\d+)?$/.test(value)) {\r\n value = parseFloat(value);\r\n }\r\n else if (/^false|true$/i.test(value)) {\r\n value = (value.toLowerCase() === 'true');\r\n }\r\n else if (/^\\[.*\\]$/.test(value)) {\r\n value = value.slice(1, -1).split(',').map(e => e.trim());\r\n }\r\n else {\r\n try {\r\n value = JSON.parse(value);\r\n } catch (e) {}\r\n }\r\n\r\n options[varName] = value;\r\n });\r\n }\r\n return { name: parts[3], options };\r\n }\r\n\r\n function checkClass(el) {\r\n const class_ = $(el).closest('[cc\\\\:class]');\r\n if (class_.length > 0 && class_[0].getAttribute('cc:class') !== calc_.autoKey()) {\r\n return false;\r\n }\r\n const inTemplate = $(el).closest('.template-list-row').length > 0;\r\n return !inTemplate;\r\n }\r\n\r\n $node.find('[cc\\\\:click]').map((index, el) => {\r\n if(checkClass(el)){\r\n const self = this;\r\n const clickOptions = parseNameType(el.getAttribute('cc:click'));\r\n $(el).on('click', function () {\r\n const result = scopeEvalFunc('_', clickOptions.name)();\r\n if (clickOptions?.options?.submit !== false){\r\n self.autoSubmit(null, true); \r\n }\r\n return result;\r\n });\r\n }\r\n });\r\n\r\n this.toggleClasses = $node.find('[cc\\\\:classname]').toArray().map(el => {\r\n const attr = el.getAttribute(\"cc:classname\");\r\n const classesObj = JSON.parse(attr);\r\n \r\n return {\r\n toggle: () => {\r\n for(let className in classesObj) {\r\n const condition = classesObj[className];\r\n if (scopeEvalFunc('_', condition)()) {\r\n el.classList.add(className);\r\n } else {\r\n el.classList.remove(className);\r\n }\r\n }\r\n }\r\n }\r\n });\r\n\r\n return {\r\n inputs: $node.find('[cc\\\\:input]').toArray().map(el => {\r\n if (checkClass(el)) {\r\n const attr = el.getAttribute('cc:input');\r\n const { name, options } = parseNameType(attr);\r\n return [el, name, options];\r\n } else {\r\n return null;\r\n }\r\n }),\r\n outputs: $node.find('[cc\\\\:output]').toArray().map(el => {\r\n if (checkClass(el)) {\r\n const attr = el.getAttribute('cc:output');\r\n let { name, options } = parseNameType(attr);\r\n const renderCode = el.getAttribute('cc:render');\r\n\r\n if (renderCode !== null) {\r\n options.render = function (x) { return scopeEvalFunc(name, renderCode)(); }\r\n }\r\n\r\n if (Object.keys(options).length === 0)\r\n options = undefined;\r\n\r\n return [el, name, options];\r\n } else {\r\n return null;\r\n }\r\n }).concat($node.find('[cc\\\\:if]').toArray().map(el => {\r\n if (checkClass(el)) {\r\n \r\n let attr = el.getAttribute('cc:if');\r\n if (attr[0] == '@') {\r\n attr = $(attr.substr(1))[0].getAttribute('cc:if');\r\n }\r\n return [el, \"\", { type: \"toggle\", render: function () { return scopeEvalFunc('_', attr)(); } }];\r\n } else {\r\n return null;\r\n }\r\n })).concat($node.find('[cc\\\\:ifhash]').toArray().map(el => {\r\n if(checkClass(el)){\r\n let attr = el.getAttribute('cc:ifHash');\r\n let self = this;\r\n\r\n return [el, \"\", { type: \"toggle\", render: function () { \r\n return self.checkHash(attr);\r\n } }];\r\n }\r\n return null;\r\n })).concat($node.find('[cc\\\\:forceif]').toArray().map(el => {\r\n if (checkClass(el)) {\r\n let attr = el.getAttribute('cc:forceIf');\r\n if (attr[0] == '@') {\r\n attr = $(attr.substr(1))[0].getAttribute('cc:forceif');\r\n }\r\n return [el, \"\", {type: \"toggle\", render: function () {return scopeEvalFunc('_', attr)();}}, true];\r\n } else {\r\n return null;\r\n }\r\n })),\r\n }\r\n }\r\n \r\n\r\n writePath(obj, path, value, gentle=false) {\r\n if (Array.isArray(obj)) {\r\n obj.forEach(o => this.writePath(o, path, value, gentle));\r\n return;\r\n }\r\n\r\n let parts = path.split('.');\r\n let target = obj;\r\n parts.forEach(function (part, index) {\r\n if (target !== null) {\r\n if (part.indexOf('[]') >= 0) {\r\n let id_ = /[:]\\d+/.exec(part);\r\n id_ = (id_ == null ? -1 : id_[0]);\r\n let clearPart = part.replace(/([:]\\d+)\\[\\]/g, '');\r\n if (target[clearPart] === undefined)\r\n target[clearPart] = [];\r\n if (!target[clearPart].some(o => {\r\n if (o.__id == id_) {\r\n target = o;\r\n return true;\r\n }\r\n })) {\r\n if (gentle) { target = null; return true; }\r\n target[clearPart].push((id_ < 0 ? {} : { __id: id_ }));\r\n target = target[clearPart][target[clearPart].length - 1];\r\n }\r\n } else {\r\n if (index == parts.length - 1) {\r\n target[part] = value;\r\n } else {\r\n if (target[part] === undefined) {\r\n if (gentle) { target = null; return true; }\r\n target[part] = {};\r\n }\r\n target = target[part];\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n\r\n /**\r\n * \r\n * @param {string} name (where value saves: this.[].key\r\n * @param {*} params next keys:\r\n * required:\r\n * table - where to place our elements\r\n * appendButtonSelector - selector for button which will add new item of this dynamic field\r\n * removeSelector - selector (inside template) which deletes particular item\r\n * fields - object {: {selector, options($clone)}}\r\n * \r\n * optional: \r\n * removeFirstEvent() - make some additional acts during removing\r\n * keepOne - true when one element cannot be deleted(false by default)\r\n * keepTable - true when table should be shown, even when keepOne=false (false by default)\r\n * ignoreForEmpty - if true, block wil be ignored if all fields are empty\r\n * prepareTemplate($clone, blockPiece) should return {block: $clone, artifacts: obj(optional)\r\n * (this method can help you to prepare item before placing)\r\n * beforeRemoval($clone) - make some additional acts before removal\r\n * afterRemoval() - make some additional acts after removal\r\n * dontSubmitOnRemove - turning off submitForm in remove()\r\n */\r\n addDynamicField(name, params){\r\n let self = this;\r\n let parent = params.parent || $(document.body);\r\n let fetchRootElem = (selector) => typeof (selector) == \"string\" ? tools.findExternalOnly(parent, selector) : $(selector);\r\n let $table = fetchRootElem(params.table);\r\n let $dataExpandableDiv = $(`.expandablerow[data-expandablediv = '${$table.parent().attr(\"id\")}']`);\r\n let elements = [];\r\n\r\n \r\n function createClone(silent) {\r\n let $template = tools.findExternalOnly($table, \".template-list-row\");\r\n let $lastRow = tools.findExternalOnly($table, '.dynamic-list-row').last();\r\n let $clone = $($table[0].querySelector(\".template-list-row\").cloneNode(true));\r\n let _id = self.genUniqueId();\r\n\r\n let blockPiece = {\r\n index: (() => {\r\n const valid = elements.filter(e => !e.removed);\r\n return valid.length > 0 ? valid[valid.length - 1].index + 1 : 0;\r\n })(),\r\n fields: [],\r\n reset: function() {\r\n if (tools.findExternalOnly($table, '.dynamic-list-row').length > 1 || !params.keepOne) {\r\n if (params.beforeRemoval !== undefined) {\r\n params.beforeRemoval($clone);\r\n }\r\n $clone.remove();\r\n this.fields.map(field => field.delete());\r\n this.removed = true;\r\n if (params.afterRemoval !== undefined) {\r\n params.afterRemoval();\r\n }\r\n } else {\r\n this.index = 0;\r\n }\r\n },\r\n isFilled: function () {\r\n return this.fields.some(f => f.isFilled());\r\n },\r\n artifacts: [],\r\n getFieldsFlat: function () {\r\n let result = [];\r\n this.fields.forEach(f => {\r\n if (f.isDynamic) {\r\n f.getElements().forEach(e => {\r\n result = result.concat(e.getFieldsFlat());\r\n });\r\n } else {\r\n result.push(f);\r\n }\r\n });\r\n return result;\r\n },\r\n tree: {},\r\n removed: false,\r\n remove: function () {\r\n this.removed = true;\r\n let elementsCount = elements.filter(x => !x.removed).length\r\n if (elementsCount === 0) {\r\n if (!params.keepOne) {\r\n $clone.closest('div').hide();\r\n $clone.closest('.expandable-div').find('.expandablerow').addClass('expandablerow-collapsed');\r\n $clone.closest('.expandable-div').find(\".tab-expandablerow-add\").attr(\"tabindex\", \"0\");\r\n }else{\r\n this.removed = false;\r\n }\r\n if (params.removeFirstEvent !== undefined)\r\n params.removeFirstEvent();\r\n }\r\n this.reset();\r\n if (!params.dontSubmitOnRemove)\r\n self.submitForm(null, !self._submitOnChange);\r\n }\r\n }\r\n\r\n $clone.removeClass('template-list-row').addClass('dynamic-list-row');\r\n\r\n // auto fields\r\n self.fetchFields($clone).inputs.forEach(([el, item, options]) => {\r\n const fieldParams = { disabledSubmitting: true, parent: $clone, ...options };\r\n const field = self.addInputField(el, `${name}:${_id}[].${item}`, fieldParams);\r\n blockPiece.tree[item] = field;\r\n blockPiece.fields.push(field);\r\n });\r\n\r\n if (params.fields !== undefined) {\r\n for (let item in params.fields) {\r\n let value = params.fields[item];\r\n let fieldParams = {};\r\n if (typeof (value) === \"string\") {\r\n value = { selector: value };\r\n } else if (value.options !== undefined) {\r\n fieldParams = typeof (value.options) === \"function\" ? value.options($clone) : value.options;\r\n }\r\n fieldParams.disabledSubmitting = true;\r\n fieldParams.parent = $clone;\r\n\r\n const field = self.addInputField($clone.find(value.selector), `${name}:${_id}[].${item}`, fieldParams);\r\n blockPiece.tree[item] = field;\r\n blockPiece.fields.push(field);\r\n }\r\n }\r\n\r\n $clone.find(params.removeSelector).first().click((e) => {\r\n e.preventDefault();\r\n blockPiece.remove();\r\n $(e.target).blur();\r\n });\r\n\r\n let anchor = $lastRow.length === 1 ? $lastRow : $template;\r\n params.prepareTemplate = params.prepareTemplate || (c => { return { block: c }; });\r\n const { block, artifacts } = params.prepareTemplate($clone, blockPiece);\r\n anchor[0].insertAdjacentElement('afterEnd', block[0]);\r\n\r\n if (artifacts !== undefined) {\r\n for (let key in artifacts) {\r\n blockPiece.artifacts.push({\r\n path: `${name}:${_id}[].${key}`,\r\n value: artifacts[key],\r\n name: self.removePathId(`${name}:${_id}[].${key}`),\r\n });\r\n blockPiece.tree[key] = artifacts[key];\r\n }\r\n }\r\n\r\n elements.push(blockPiece);\r\n\r\n if (!silent) {\r\n self.submitForm(null, !self._submitOnChange);\r\n }\r\n\r\n blockPiece.fields.forEach(f => { f.params_.disabledSubmitting = false; });\r\n }\r\n\r\n if(params.keepOne)\r\n createClone(true);\r\n\r\n fetchRootElem(params.appendButtonSelector).click(() => createClone());\r\n\r\n // AG TODO: WILL NOT WORK WITH DYNAMIC-IN-DYNAMIC. NEED TO BE REFACTORED!\r\n $dataExpandableDiv.click(function () {\r\n var $this = $(this);\r\n if ($this.hasClass('expandablerow-collapsed')) {\r\n $this.removeClass('expandablerow-collapsed');\r\n\r\n var $expandableDiv = $('#' + $this.data('expandablediv'));\r\n $expandableDiv.show();\r\n\r\n $this.find(\".tab-expandablerow-add\").attr(\"tabindex\", \"-1\");\r\n\r\n if (tools.findExternalOnly($expandableDiv, '.dynamic-list-row').length === 0) {\r\n createClone();\r\n }\r\n }\r\n });\r\n\r\n let result = {\r\n isDynamic: true,\r\n reset: function () {\r\n elements.forEach((item) => item.reset());\r\n if (!params.keepOne) {\r\n if (!params.keepTable)\r\n $table.parent().hide();\r\n $dataExpandableDiv.addClass('expandablerow-collapsed');\r\n }\r\n if (params.removeFirstEvent !== undefined)\r\n params.removeFirstEvent();\r\n },\r\n params_: params,\r\n getElements: function () {\r\n return elements.filter(bp => !bp.removed);\r\n },\r\n delete: function () {\r\n elements.forEach((item) => item.fields.forEach(f => f.delete()));\r\n },\r\n isFilled: function () { return elements.some(e => e.isFilled()); },\r\n ignoredEmptyFields: function () {\r\n let result = [];\r\n if (params.ignoreForEmpty) {\r\n elements.forEach((e) => {\r\n if (!e.isFilled()) {\r\n result = result.concat(e.getFieldsFlat().map(f => f.varName));\r\n }\r\n });\r\n }\r\n return result;\r\n },\r\n setCount: function ({count, removeStrategy = \"simple\" }) {\r\n let currentCount = this.getElements().length;\r\n if (count !== currentCount) {\r\n if (count > currentCount) {\r\n while (this.getElements().length < count)\r\n createClone();\r\n } else {\r\n if (removeStrategy === \"simple\") {\r\n this.getElements().forEach((bp, i) => { if (i >= count) bp.remove(); });\r\n }\r\n }\r\n }\r\n }\r\n };\r\n\r\n this._dynamicFields.push(result);\r\n\r\n if (params.keepOne && !params.disabledSubmitting)\r\n self.submitForm(null, !self._submitOnChange);\r\n\r\n return result;\r\n }\r\n\r\n\r\n /**\r\n * Adds group of fields to calculator.\r\n * @param {any} nameOrNames to fetch all fields you need\r\n * @param {any} checker function f(fields, options) which returns object {valid: bool, artifacts: obj}\r\n * @param {any} options is additional parameters for group\r\n */\r\n addGroup(nameOrNames, checker, options) {\r\n let self = this;\r\n\r\n this.fieldGroups.push({\r\n getFields: function () {\r\n let resList = [];\r\n function checkField(f, name) {\r\n return !f.ignore && !f.__tmpIgnore && self.isPathInside(f.name, name);\r\n }\r\n if (typeof (nameOrNames) === 'string') {\r\n nameOrNames = [nameOrNames];\r\n }\r\n\r\n nameOrNames.forEach(function (name) {\r\n resList = resList.concat(self.inputFields.filter(f => checkField(f, name)));\r\n });\r\n\r\n resList.tree = {};\r\n resList.forEach((f) => { self.writePath(resList.tree, f.varName, f); });\r\n\r\n self._dynamicFields.forEach(df => {\r\n df.getElements().forEach(e => {\r\n e.artifacts.filter(a => nameOrNames.some(name => self.isPathInside(a.name, name))).forEach(a => {\r\n self.writePath(resList.tree, a.path, a.value);\r\n });\r\n });\r\n });\r\n\r\n return resList;\r\n },\r\n check: function (sender, autoValidation) {\r\n let fields = this.getFields();\r\n let newOptions = { sender: sender, autoValidation: autoValidation };\r\n for (let key in options) {\r\n newOptions[key] = options[key];\r\n }\r\n return checker(fields, newOptions);\r\n }\r\n });\r\n }\r\n\r\n\r\n /**\r\n * Parses all input fields and initialises connected variables\r\n * */\r\n parse(sender, autoValidation) {\r\n var self = this;\r\n const newValues = this.irregularValueNames.reduce((acc, v) => { acc[v] = self[v]; return acc; }, {});\r\n this.log(\"Irregular value obj:\", newValues);\r\n this.inputFields.forEach(function (field) {\r\n field.__tmpIgnore = false;\r\n self.clearPath(self, field.name);\r\n self.clearPath(self._exportObject.parse, field.name);\r\n });\r\n\r\n let ignoreList = this._dynamicFields.reduce((accum, v) => accum.concat(v.ignoredEmptyFields()), []);\r\n this.inputFields = this.inputFields.filter(function (f) { return !f.deleted; });\r\n\r\n var result = {\r\n valid: true,\r\n filled: this.defaultFilled,\r\n enableResetButton: false,\r\n hasValueChanges: false\r\n };\r\n\r\n let fieldsToParse = this.inputFields.filter(function (f) {\r\n let ignoreCouseEmpty = ignoreList.indexOf(f.varName) >= 0;\r\n if (f.showReset()) {\r\n result.enableResetButton = true;\r\n }\r\n if (f.ignore)\r\n f.reset({ keepValue: !self.resetValuesOnIgnore });\r\n else if (ignoreCouseEmpty) {\r\n f.__tmpIgnore = true;\r\n f.reset({ keepValue: true });\r\n }\r\n return !f.ignore && !ignoreCouseEmpty;\r\n });\r\n\r\n const unsilence = [];\r\n if (sender) {\r\n const senderField = fieldsToParse.find(f => sender == f.elem[0]);\r\n if (senderField && senderField.params_.unsilence)\r\n unsilence.push(...senderField.params_.unsilence);\r\n }\r\n \r\n // first phase\r\n fieldsToParse.forEach(function (field) {\r\n var res = field.check(autoValidation, sender, 1, unsilence.indexOf(field.name) >= 0);\r\n field.valid = res;\r\n\r\n if (field.isFilled()) {\r\n result.filled = true;\r\n }\r\n if (field.errorIsVisible()) {\r\n result.enableResetButton = true;\r\n }\r\n\r\n if (!res)\r\n result.valid = false;\r\n else if (field.name !== undefined) {\r\n self.writePath([self, newValues], field.varName, field.getValue());\r\n self.writePath(self._exportObject.parse, field.varName, field.getExportValue());\r\n }\r\n });\r\n\r\n // dynamicField artifacts\r\n this._dynamicFields.forEach(df => {\r\n df.getElements().forEach(e => {\r\n e.artifacts.forEach(a => {self.writePath([self, newValues], a.path, a.value, true);});\r\n });\r\n });\r\n\r\n this.afterFirstPhaseCheck();\r\n\r\n // second phase\r\n fieldsToParse.forEach(function (field) {\r\n var res = field.check(autoValidation, sender, 2);\r\n if (!res)\r\n result.valid = field.valid = false;\r\n });\r\n if (!autoValidation) {\r\n const newValuesString = JSON.stringify(newValues);\r\n result.hasValueChanges = this.lastValuesString !== newValuesString;\r\n this.lastValuesString = newValuesString;\r\n }\r\n\r\n this.fieldGroups.forEach(group => {\r\n let res = this.processGroup(group, sender, autoValidation);\r\n if (!res)\r\n result.valid = false;\r\n });\r\n\r\n this.log(\"PARSE: \", this);\r\n result.enableResetButton = result.enableResetButton || result.filled;\r\n this.afterParse(sender, autoValidation);\r\n this.forceRender();\r\n return result;\r\n }\r\n\r\n\r\n\r\n submitForm(sender, autoValidation, skipValueChangesCheck = false) {\r\n if(!this.isActive) return;\r\n this._exportObject = {\r\n parse: {},\r\n render: {notes: []}\r\n };\r\n \r\n if (this.beforeSubmit() === false) {\r\n return;\r\n }\r\n\r\n let parsing = this.parse(sender, autoValidation);\r\n this.resetButtons.forEach(function (elem) {\r\n (parsing.enableResetButton ? elem.show() : elem.hide());\r\n });\r\n\r\n if (parsing.filled && !this._statistic.startedSent) {\r\n this.sendStatisticMessage('Is_Started');\r\n this._statistic.startedSent = true;\r\n }\r\n\r\n if (!this.isReady()) {\r\n return; // AG TODO: Maybe wait for ready? Design how to do it.\r\n }\r\n\r\n this.log(\"BEFORE CALC: valid=\", parsing.valid);\r\n \r\n if (!this.calculateForValidOnly || parsing.valid) {\r\n this.toggleCustomClasses();\r\n let calcValid = this.calculate({ sender: sender, autoValidation: autoValidation });\r\n this.log('AFTER CALCULATE: ', this);\r\n if (!autoValidation && (skipValueChangesCheck || parsing.hasValueChanges)) {\r\n if (parsing.valid && calcValid) {\r\n this.beforeRender();\r\n this.render();\r\n this._exportObjectFinal = tools.deepcopy(this.generateExportObject());\r\n this.showResults();\r\n } else {\r\n this.hideResults();\r\n }\r\n }\r\n }\r\n\r\n if (!parsing.valid && !autoValidation) {\r\n this.renderError();\r\n }\r\n\r\n this.log(\"EXPORT OBJECT:\", this._exportObject);\r\n this.afterSubmit();\r\n }\r\n \r\n}\r\n","import { ShowErrorWay } from \"./utils.js\";\r\n\r\nexport class CalculatorInterface {\r\n constructor() {\r\n this.debug = false;\r\n this._fieldTypes = [];\r\n this.inputFields = [];\r\n this.outputFields = [];\r\n this.forceOutputs = [];\r\n this.fieldGroups = [];\r\n this.showErrorWay = ShowErrorWay.SHOW_ALL;\r\n this.resetButtons = [];\r\n this._exportObject = {};\r\n this._exportObjectFinal = {};\r\n this.calculateForValidOnly = true;\r\n this.resetValuesOnIgnore = false;\r\n this._submitOnChange = false;\r\n this.isActive = true;\r\n this._dynamicFields = [];\r\n this._inputFieldsTree = {fields: []};\r\n this.view = \"\";\r\n this.irregularValueNames = [];\r\n this.lastValuesString = \"\";\r\n }\r\n\r\n code() { return \"three_letter_code_of_calculator\"; } // reimplement it in inherited classes\r\n type() { return \"code_for_export\"; } // reimplement it in inherited classes\r\n\r\n autoKey() { return '0'; } // used for calculator with tabs (every tab - one mini calculator)\r\n initialize() { } // use this instead of redefining constructor\r\n calculate(params) { } // calculation method (all calculations of calculator should be here)\r\n beforeSubmit() { } // before parsing\r\n afterSubmit() { } // at the end of submit\r\n afterParse(sender, autoValidation) { }\r\n beforeRender() { }\r\n onReset() { }\r\n afterFirstPhaseCheck() { }\r\n isReady() { return true; }\r\n log(...args) {}\r\n setupHandlers() {}\r\n setHash(hash){}\r\n checkHash(hash) {}\r\n getHash() {}\r\n\r\n autoSubmit(sender, skipValueChangesCheck) {\r\n sender = sender || null;\r\n this.submitForm(sender, false, skipValueChangesCheck);\r\n }\r\n fetchFields(htmlNode) {}\r\n\r\n autoAddFields() {} // adds fields from special html attributes\r\n loadDescription(feedbackBottom = true) {} // just loads description from file\r\n patchFieldTypes(newFieldTypes) {} // updates field-type library\r\n\r\n showResults() {$('.calc-div-results').addClass('show-results');} // shows result\r\n hideResults() {} // hides result\r\n\r\n generateExportObject() { return this._exportObject; }\r\n get defaultFilled(){ return false; }\r\n setupStatistic(params) {} // setups statistic module\r\n sendStatisticMessage(string_or_object) {} // sends statistic message to YM\r\n submitOnClick(selectorOrElem) {} // turn on submitting on elem click\r\n submitOnChange() {} // make submit on change\r\n\r\n addResetButton(selector, hideOnDefault) {}\r\n\r\n genUniqueId() { return Math.random() * 1e7 | 0; }\r\n\r\n writePath(obj, path, value, gentle=false) {} // method for writing propery into this object using path (used to generate input values for calculation stage)\r\n removePathId(path) {} // remove path\r\n clearPath(obj, path) {} // clears path\r\n isPathInside(path, srcPath) {} // checks if path inside\r\n \r\n addInputField(selector, name, params) {}\r\n addDynamicField(name, params){}\r\n addGroup(nameOrNames, checker, options) {}\r\n \r\n processGroup(group, sender, autoValidation) { } // Parses group with internal checks (between elements inside group)\r\n\r\n parse(sender, autoValidation) { } // Parses all input fields and initialises connected variables\r\n resetInputFields(params) {}\r\n \r\n addOutputField(selector, name, params, forced = false) {}\r\n\r\n render() {}\r\n\r\n forceRender() {}\r\n\r\n toggleCustomClasses() {}\r\n\r\n renderError() {}\r\n\r\n /**\r\n * Submits form\r\n * - calls beforeSubmit (if it returns false, stops)\r\n * - parse\r\n * - toggling reset buttons\r\n * - Is_Started stat send\r\n * - calls isReady (if false, breaks, but almost always should be true)\r\n * - if parse result is valid:\r\n * - toggle custom classes\r\n * - call calculate\r\n * - if calculation is not valid, hides result part, otherwise \r\n * call beforeRender, then render, then generateExportObject, then shows results\r\n * - renders error for invalid parsing result\r\n * - calls afterSubmit\r\n */\r\n submitForm(sender, autoValidation, skipValueChangesCheck = false) {} \r\n autoValidate(sender) {} \r\n}","class BaseOutputField {\r\n constructor(calculator, selector, name, params) {\r\n this.calculator = calculator;\r\n this.container = $(selector);\r\n this.name = name;\r\n this.params = params;\r\n this.setup();\r\n }\r\n\r\n setup() {}\r\n\r\n get(paramName, defaultValue) {\r\n if (this.params !== undefined && this.params[paramName] !== undefined)\r\n return this.params[paramName];\r\n return defaultValue;\r\n }\r\n\r\n get renderMethod() {\r\n if (this.get('html') !== undefined) {\r\n return 'html';\r\n }\r\n return 'text';\r\n }\r\n\r\n get type() {\r\n return this.get('type', 'text');\r\n }\r\n\r\n get value() {\r\n return this.calculator[this.name];\r\n }\r\n\r\n compose() {\r\n const val = this.value;\r\n if (this.params === undefined && val !== undefined) {\r\n if (val.hasOwnProperty('text'))\r\n return val.text;\r\n return val;\r\n }\r\n }\r\n\r\n compose_() {\r\n const renderFunc = this.get('render');\r\n if (renderFunc === undefined) {\r\n return this.compose();\r\n }\r\n return renderFunc(this.value);\r\n }\r\n\r\n render() {\r\n this.container[this.renderMethod](this.compose_());\r\n }\r\n\r\n renderExport(exportObject) {\r\n exportObject[this.name + '_' + this.type] = this.compose_();\r\n }\r\n}\r\n\r\nclass RenderRequiredOutputField extends BaseOutputField {\r\n setup() {\r\n const renderFunc = this.get('render');\r\n if (renderFunc == undefined) {\r\n console.error(`You must write render method for [${this.type}] type of output field.`);\r\n }\r\n this.renderFunc = renderFunc;\r\n }\r\n\r\n compose() {\r\n return this.renderFunc(this.value);\r\n }\r\n}\r\n\r\nclass HtmlOutputField extends BaseOutputField {\r\n get renderMethod() { return 'html'; }\r\n}\r\n\r\nclass TextField extends HtmlOutputField {\r\n compose() { return this.value; }\r\n}\r\n\r\nclass LocaleNumOutputField extends BaseOutputField {\r\n compose() {\r\n const options = {\r\n minPrecision: this.get('minPrecision'),\r\n maxPrecision: this.get('maxPrecision')\r\n };\r\n return tools.getLocaleNumber(this.value, options);\r\n }\r\n}\r\n\r\nclass LocaleSumOutputField extends BaseOutputField {\r\n compose() { return tools.getLocaleSum(this.value); }\r\n}\r\n\r\nclass MoneyRubleOutputField extends HtmlOutputField {\r\n compose() { return tools.getLocaleSumInRubbles(this.value); }\r\n}\r\n\r\nclass MoneyTextOutputField extends BaseOutputField {\r\n compose() { return tools.verboseNumber(this.value); }\r\n}\r\n\r\nclass MoneyRoundedRubleField extends HtmlOutputField {\r\n compose() { return tools.getRoundedNumberInRubbles(this.value); }\r\n}\r\n\r\nclass MoneyRoundedRubleOutputField extends HtmlOutputField {\r\n compose() { return tools.getRoundedNumberInRubbles(this.value); }\r\n}\r\n\r\nclass PeriodOutputField extends BaseOutputField {\r\n compose() {\r\n const from_ = this.value.dateFrom.toLocaleFormat();\r\n const to_ = this.value.dateTo.toLocaleFormat();\r\n switch (this.get('kind', 'with-duration')) {\r\n case 'with-duration':\r\n return `с ${from_} по ${to_} (${this.value.duration.inDays} дн.)`;\r\n case 'with-full-duration':\r\n return `с ${from_} по ${to_} (${tools.verboseCountingValue(this.value.duration.inDays, [['день', 'дня', 'дней']])})`;\r\n }\r\n }\r\n}\r\n\r\nclass DateOutputField extends BaseOutputField {\r\n compose() { return this.value.toLocaleFormat(); }\r\n}\r\n\r\nclass DayOutputField extends BaseOutputField {\r\n compose() { \r\n return tools.verboseCountingValue(this.value, [[\"день\", \"дня\", \"дней\"]]);}\r\n}\r\n\r\nclass PercentOutputField extends HtmlOutputField {\r\n compose() {\r\n const options = {\r\n minPrecision: this.get('minPrecision'),\r\n maxPrecision: this.get('maxPrecision')\r\n };\r\n\r\n return tools.getLocaleNumber(this.value, options) + \"%\";\r\n }\r\n}\r\n\r\nclass NoteOutputField extends RenderRequiredOutputField {\r\n render() {\r\n const result = this.compose_();\r\n this.container.removeClass('active only-print');\r\n if (result === 'print' || result === true) {\r\n this.container.addClass('active');\r\n if (result === 'print') {\r\n this.container.addClass('only-print');\r\n }\r\n }\r\n }\r\n\r\n renderExport(exportObject) {\r\n const result = this.compose_();\r\n if (result === 'print' || result === true) {\r\n exportObject.notes.push(tools.convertElemToTextWithLinksForExport(this.container));\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * works with only direct children elements\r\n * Takes optional params: \r\n * - parseLink : true if convertElemToTextWithLinksForExport is needed\r\n * - selector : selector for additional logic\r\n */\r\nclass ExportVisibleOutputField extends BaseOutputField {\r\n renderExport(exportObject) {\r\n const selector = this.get('selector', '> *');\r\n const htmlObject = this.container.find(`${selector}:visible`).toArray().filter(x=>$(x).text())[0];\r\n\r\n exportObject[this.name] = this.get(\"parseLink\") && htmlObject \r\n ? tools.convertElemToTextWithLinksForExport(htmlObject) \r\n : $(htmlObject).text();\r\n }\r\n}\r\n\r\n/**\r\n * Takes optional params: \r\n * - duration : object with slideUp and slideDown time or true to use default time\r\n */\r\nclass ToggleOutputField extends RenderRequiredOutputField {\r\n render() {\r\n const slideUpTime = this.get('duration', {slideUp : undefined}).slideUp;\r\n const slideDownTime = this.get('duration', {slideDown : undefined}).slideDown;\r\n\r\n const show = () => this.get('duration') ? this.container.slideDown(slideUpTime || 400) : this.container.show();\r\n const hide = () => this.get('duration') ? this.container.slideUp(slideDownTime || 400) : this.container.hide();\r\n\r\n if (this.compose_())\r\n show();\r\n else\r\n hide();\r\n }\r\n}\r\n\r\nclass ConditionalBlockOutputField extends RenderRequiredOutputField {\r\n setup() {\r\n super.setup();\r\n const alternativeBlockSelector = this.get('alternativeBlock', '');\r\n if (alternativeBlockSelector === '') {\r\n console.warn(\"It's bad way to use `conditionalBlock` with empty alternativeBlock param. Try to use `toggle` instead.\")\r\n }\r\n this.alternativeBlock = $(alternativeBlockSelector);\r\n }\r\n\r\n render() {\r\n if (this.compose_()) {\r\n this.container.show();\r\n this.alternativeBlock.hide();\r\n }\r\n else {\r\n this.container.hide();\r\n this.alternativeBlock.show();\r\n }\r\n }\r\n}\r\n\r\nclass ShareOutputField extends HtmlOutputField {\r\n compose() {\r\n return this.value.text.replace('%', ' %');\r\n }\r\n}\r\n\r\nclass MoneyLocalRoundedOutField extends HtmlOutputField {\r\n compose() {\r\n return tools.getLocaleSumInRubbles(tools.getRoundedNumber(this.value))\r\n }\r\n}\r\n\r\nfunction createOutputField(calculator, selector, name, params) {\r\n let params_ = params || {};\r\n let class_ = undefined;\r\n switch (params_.type) {\r\n case 'localeNumber': class_ = LocaleNumOutputField; break;\r\n case 'localeSum': class_ = LocaleSumOutputField; break;\r\n case 'moneyRuble': class_ = MoneyRubleOutputField; break;\r\n case 'moneyRoundedRuble': class_ = MoneyRoundedRubleOutputField; break;\r\n case 'moneyText': class_ = MoneyTextOutputField; break;\r\n case 'moneyRoundedRuble': class_ = MoneyRoundedRubleField; break;\r\n case 'moneyLocalRoundedRuble': class_ = MoneyLocalRoundedOutField; break\r\n case 'period': class_ = PeriodOutputField; break;\r\n case 'date': class_ = DateOutputField; break;\r\n case 'percent': class_ = PercentOutputField; break;\r\n case 'note': class_ = NoteOutputField; break;\r\n case 'toggle': class_ = ToggleOutputField; break;\r\n case 'conditionalBlock': class_ = ConditionalBlockOutputField; break;\r\n case 'day': class_ = DayOutputField; break;\r\n case 'share': class_ = ShareOutputField; break;\r\n case 'text': class_ = TextField; break;\r\n case 'exportVisible' : class_ = ExportVisibleOutputField; break\r\n default: class_ = BaseOutputField; break;\r\n }\r\n\r\n return new class_(calculator, selector, name, params);\r\n}\r\n\r\nexport { createOutputField };","import {fields as basicFields} from \"../basic_fields.js\";\r\nimport {CalculatorComplex} from \"./calc_complex.js\";\r\nimport {createOutputField} from \"./output_fields.js\";\r\nexport {ShowErrorWay} from \"./utils.js\";\r\n\r\n\r\n/**\r\n * TODO: Move inline-radio to web-component\r\n * TODO: Move datetime-segment elem to web-component\r\n * \r\n * */\r\nexport class Calculator extends CalculatorComplex {\r\n\r\n constructor() {\r\n super();\r\n this._fieldTypes = basicFields;\r\n this.showVersionBanner = ShowVersionBanner;\r\n this.setupVersionBanner();\r\n this.setupHandlers();\r\n this.autoAddFields();\r\n this.initialize();\r\n this.forceRender();\r\n }\r\n \r\n log(...args) {\r\n if (this.debug) {\r\n console.log(...args);\r\n }\r\n }\r\n\r\n setupVersionBanner() {\r\n if(this.showVersionBanner){\r\n $('.old-version-alert')?.show();\r\n $('.old-version-alert')?.find('.close-button')?.click(function () {\r\n $('.old-version-alert').slideUp(200);\r\n });\r\n\r\n $('.new-version-alert')?.show();\r\n $('.new-version-alert')?.find('.close-button')?.click(function () {\r\n $('.new-version-alert').slideUp(200);\r\n });\r\n }\r\n }\r\n\r\n setupHandlers() {\r\n const self = this;\r\n $(\"#printResult\").click(function () {\r\n if (self.isActive){\r\n window.print();\r\n const message = self._statistic.printMessage;\r\n self.sendStatisticMessage(typeof(message) === \"function\" ? message() : message);\r\n }\r\n return false;\r\n });\r\n\r\n $(\"#wordResult\").click(function () {\r\n if (self.isActive) {\r\n const formData = new FormData();\r\n formData.append(\"calcType\", self.type());\r\n formData.append(\"json\", JSON.stringify(self._exportObjectFinal));\r\n\r\n $.ajax({\r\n url: ExportWordHost,\r\n type: \"POST\",\r\n data: formData,\r\n processData: false,\r\n contentType: false,\r\n cache: false,\r\n xhr:function(){\r\n var xhr = new XMLHttpRequest();\r\n xhr.onloadstart = function(ev) {\r\n xhr.responseType = \"blob\";\r\n };\r\n return xhr;\r\n },\r\n success: function(response, textStatus, jQxhr) {\r\n const name = decodeURI(jQxhr.getResponseHeader(\"Content-Disposition\").split(\"filename*=UTF-8''\")[1]);\r\n const blob = new Blob([response], {type:\"application/ms-word\"});\r\n if (window.navigator.msSaveOrOpenBlob) {\r\n navigator.msSaveOrOpenBlob(blob, name);\r\n } else {\r\n const link = document.createElement(\"a\");\r\n link.download = name;\r\n link.href = URL.createObjectURL(blob);\r\n link.click(); \r\n }\r\n return true;\r\n }, \r\n });\r\n\r\n const message = self._statistic.exportMessage;\r\n self.sendStatisticMessage(typeof(message) === \"function\" ? message() : message);\r\n }\r\n return false;\r\n });\r\n\r\n }\r\n /**\r\n * \r\n * @param {string} hash - place where need to redirect\r\n */\r\n setHash(hash){\r\n if (hash)\r\n window.location.hash = hash;\r\n else\r\n window.history.pushState(\"\", document.title, window.location.pathname);\r\n }\r\n\r\n checkHash(hash) {\r\n const currentHash = this.getHash();\r\n return currentHash.match(new RegExp(`^${hash}$`));\r\n }\r\n\r\n getHash() {\r\n return document.location.hash.substring(1);\r\n }\r\n\r\n autoSubmit(sender, skipValueChangesCheck) {\r\n sender = sender || null;\r\n this.submitForm(sender, false, skipValueChangesCheck);\r\n }\r\n \r\n autoAddFields() {\r\n const fields = this.fetchFields();\r\n fields.inputs.forEach(args => { if (args !== null) this.addInputField(...args); });\r\n fields.outputs.forEach(args => { if (args !== null) this.addOutputField(...args); });\r\n }\r\n\r\n loadDescription(feedbackBottom = true) {\r\n const self = this;\r\n return new Promise(function (resolve, reject) {\r\n $(\"#calcDescription\").load(\"/conf/calc_\"+self.code()+\"/promo.html?v=\" + DataVersionSalt, function () {\r\n $(\".smart-link\").each(function () {\r\n tools.initSmartLink(this);\r\n });\r\n\r\n tools.setWarningMessage(this);\r\n\r\n if (!IsAuthEnabled) {\r\n const mailSubject = `Обратная связь`;\r\n if (feedbackBottom) {\r\n $(\".calc-div-input-footer\").append($(mailSubject));\r\n }\r\n else {\r\n $(\"#calcDescription\").prepend($(`
${mailSubject}
`));\r\n }\r\n }\r\n resolve();\r\n });\r\n });\r\n }\r\n\r\n patchFieldTypes(newFieldTypes) {\r\n this._fieldTypes = this._fieldTypes.concat(newFieldTypes);\r\n }\r\n\r\n showResults() {\r\n $(\".calc-div-results\").addClass(\"show-results\");\r\n }\r\n\r\n hideResults() {\r\n $(\".calc-div-results\").removeClass(\"show-results\");\r\n }\r\n\r\n generateExportObject() {\r\n return this._exportObject;\r\n }\r\n\r\n get defaultFilled(){\r\n return false;\r\n }\r\n\r\n /**\r\n * Sets up part which works with statistic\r\n * @param {object} params\r\n * - calcName (required) uses in message gen\r\n * - prefix ('Calculation_' by default) uses in message gen\r\n * - printMessage ('Print' by default) you can use object here (@see {sendStattisticMessage}) or even function which returns string_or_object\r\n * - exportMessage ('Export' by default) the same as previous but for export\r\n */\r\n setupStatistic(params) {\r\n params = params || {};\r\n this._statistic = params;\r\n this._statistic.startedSent = params.isStartedEventIgnore || false;\r\n if (this._statistic.prefix === undefined)\r\n this._statistic.prefix = \"Calculation_\";\r\n\r\n if (this._statistic.printMessage === undefined)\r\n this._statistic.printMessage = \"Print\";\r\n\r\n if (this._statistic.exportMessage === undefined)\r\n this._statistic.exportMessage = \"Export\";\r\n }\r\n\r\n /**\r\n * Sends statistic message\r\n * @param {any} string_or_object\r\n * If this value is object it could contain next props:\r\n * - message (required)\r\n * - args, if you need to send additional arguments\r\n * - prefix, if you need to redefine prefix for specific stat message\r\n * Otherwise it uses like an object with only `message` prop filled\r\n */\r\n sendStatisticMessage(string_or_object) {\r\n let params = string_or_object;\r\n if (typeof (string_or_object) === \"string\") { \r\n params = {\r\n message: string_or_object\r\n };\r\n }\r\n const prefix = params.prefix !== undefined ? params.prefix : this._statistic.prefix;\r\n\r\n if (this._statistic.calcName === undefined) {\r\n console.warn(\"Calculator's name is not set up. Use method `setupStatistic` for it.\");\r\n }\r\n\r\n ym(ymId, ymReachGoal, prefix + params.message + \"_\" + this._statistic.calcName, params.args);\r\n }\r\n\r\n submitOnClick(selectorOrElem) {\r\n var self = this;\r\n $(selectorOrElem).click(function () { self.submitForm(null, false, true); });\r\n }\r\n\r\n submitOnChange() {\r\n this._submitOnChange = true;\r\n }\r\n\r\n addResetButton(selector, hideOnDefault) {\r\n hideOnDefault = hideOnDefault === undefined ? true : hideOnDefault;\r\n var self = this;\r\n var elem = $(selector);\r\n elem.click(function () {\r\n if (self.isActive){\r\n self.resetInputFields();\r\n self.sendStatisticMessage(\"Default\");\r\n }\r\n });\r\n if (hideOnDefault) {\r\n this.resetButtons.push(elem);\r\n }\r\n }\r\n\r\n removePathId(path) {\r\n return path.replace(/[:]\\d+/g, \"\");\r\n }\r\n\r\n clearPath(obj, path) {\r\n const parts = path.split(\".\");\r\n const part0 = parts[0];\r\n obj[part0.replace(/\\[|\\]/g, \"\")] = undefined;\r\n }\r\n\r\n /**\r\n * Checks that path inside srcPath\r\n * @param {object} obj\r\n * @param {string} path\r\n * @param {string} srcPath\r\n */\r\n isPathInside(path, srcPath) {\r\n return (path.indexOf(srcPath + \".\") == 0 || path.indexOf(srcPath + \"[]\") == 0 || path === srcPath);\r\n }\r\n\r\n /**\r\n * Method for adding input fields (instead of parsing form)\r\n * @param {stringOrElement} selector\r\n * @param {string} name (where value saves: this.)\r\n * @param {Object} params has next keys:\r\n * - type - one of (money, int). Some can be detected automatically ()\r\n * - defaultValue - (for reseting)\r\n * - errClassElem - (optional, set it if it's requires to add err class not to $(selector) elem but to different)\r\n * - showErrorWay - (optional - redefines global setting)\r\n * - disableAutoCheck - (optional - otherwise will check on change)\r\n * - errors - list of objects {check: func(v), selector: strOrElem, errClassElem: strOrElem[optional]}\r\n * - options - for some fieldTypes this options is useful\r\n * - preInit - (optional, will be called before init call)\r\n * - unsilence - (optional - array of other field names that would have non-silent check when this field is a sender)\r\n */\r\n addInputField(selector, name, params) {\r\n params = params || {};\r\n const self = this;\r\n\r\n if (params.dynamic) {\r\n params.table = selector;\r\n return this.addDynamicField(name, params);\r\n }\r\n\r\n const elem = $(selector);\r\n const ftype = params.type === undefined ? this._detectFieldType(elem) : params.type;\r\n const field = this._makeFieldObject(elem, ftype, params.options);\r\n params.showErrorWay = params.showErrorWay || self.showErrorWay;\r\n field.params_ = params;\r\n field.varName = name;\r\n field.name = self.removePathId(name);\r\n field.defaultValue = (params.defaultValue === undefined ? field.getClearValue() : params.defaultValue);\r\n\r\n if (!params.disableAutoCheck) {\r\n field.onChange(function (sender) {\r\n if (!params.disabledSubmitting) {\r\n self.submitForm(sender, !self._submitOnChange);\r\n }\r\n });\r\n }\r\n\r\n if (params.preInit !== undefined)\r\n params.preInit(field);\r\n\r\n field.init();\r\n\r\n this.inputFields.push(field);\r\n return field;\r\n }\r\n\r\n _detectFieldType(elem) {\r\n var result = undefined;\r\n this._fieldTypes.some(function (ft) {\r\n if (ft.detect(elem)) {\r\n result = ft.keyName();\r\n return true;\r\n }\r\n });\r\n if (result === undefined) {\r\n console.error(\"Can't detect field type\", elem);\r\n }\r\n return result;\r\n }\r\n\r\n _makeFieldObject(elem, fieldType, options) {\r\n var result = undefined;\r\n if (!this._fieldTypes.some(function (ft) {\r\n if (ft.keyName() === fieldType) {\r\n result = new ft(elem, options);\r\n return true;\r\n }\r\n })) {\r\n console.error(\"Can't find class for field type\", fieldType, \"of element\", elem);\r\n }\r\n return result;\r\n }\r\n \r\n /**\r\n * Parses group with internal checks (between elements inside group)\r\n * @param {any} group\r\n */\r\n processGroup(group, sender, autoValidation) {\r\n const result = group.check(sender, autoValidation);\r\n if (result.artifacts !== undefined) {\r\n for (const key in result.artifacts) {\r\n this[key] = result.artifacts[key];\r\n }\r\n }\r\n return result.valid; \r\n }\r\n \r\n resetInputFields(params) {\r\n const self = this;\r\n if (!this.isActive) return;\r\n params = params || {};\r\n this.inputFields.forEach(function (f) {\r\n if (params.fields === undefined || params.fields.some(f => self.isPathInside(f.name, f)))\r\n f.reset(params);\r\n });\r\n this.lastValuesString = \"\";\r\n\r\n this._dynamicFields.map((item) => item.reset());\r\n this.onReset();\r\n this.forceRender();\r\n\r\n this.resetButtons.forEach(function (elem) {\r\n elem.hide();\r\n });\r\n }\r\n\r\n /**\r\n * Method for rendering from variables (instead of render function)\r\n * @param {any} selector\r\n * @param {any} name\r\n * @param {any} params\r\n * @param {any} forced\r\n */\r\n addOutputField(selector, name, params, forced = false) {\r\n const field = createOutputField(this, selector, name, params);\r\n this.outputFields.push(field);\r\n if (forced)\r\n this.forceOutputs.push(field);\r\n return field;\r\n }\r\n\r\n render() {\r\n const self = this;\r\n const orderedFields = this.outputFields.map(x => x);\r\n const priorities = orderedFields.map(f => f.get(\"priority\", 0));\r\n if (priorities.length > 0 && priorities.some(x => x != priorities[0]))\r\n orderedFields.sort((a, b) => a.get(\"priority\", 0) - b.get(\"priority\", 0));\r\n orderedFields.forEach(function (field) {\r\n field.render(self);\r\n field.renderExport(self._exportObject.render);\r\n });\r\n }\r\n\r\n forceRender() {\r\n this.forceOutputs.forEach((field) => {\r\n field.render(this);\r\n });\r\n }\r\n\r\n toggleCustomClasses() {\r\n this.toggleClasses.map(customClass => {\r\n customClass.toggle();\r\n });\r\n }\r\n\r\n renderError() {\r\n if (!this._submitOnChange) {\r\n $(\".calc-div-results\").removeClass(\"show-results\");\r\n }\r\n }\r\n \r\n autoValidate(sender) {\r\n sender = sender || null;\r\n this.submitForm(sender, true);\r\n }\r\n \r\n}"],"sourceRoot":""}