{"version":3,"sources":["components/IntegerSelector/IntegerSelector.module.css","screens/CodeActivated/CodeActivated.module.css","core/config/config.ts","navigation/domainRouter.ts","components/CertificateBlock/CertificateBlock.tsx","components/CustomButton/CustomButton.tsx","components/Footer/Footer.tsx","themes/default/defaultThemeText.ts","themes/black/blackThemeText.ts","themes/useTheme.tsx","screens/CertificateScreen/CertificateScreen.tsx","components/AdvicesBlock/AdvicesBlock.tsx","components/BottomMainBlock/BottomMainBlock.tsx","components/CustomInput/CustomInput.tsx","components/CustomCheckbox/CustomCheckbox.tsx","components/Selector/SubscriptionSelect.tsx","components/PaymentMethodSelector/PaymentMethodSelector.tsx","components/Calculator/Calculator.tsx","core/http/fetch.hook.ts","components/IntegerSelector/IntegerSelector.tsx","components/Selector/Selector.tsx","core/http/HttpService.ts","core/activateCodePromocode/api.ts","core/activateCodePromocode/controller.ts","components/PromoCalculator/PromoCalculator.tsx","components/UpperMainBlock/UpperMainBlock.tsx","themes/useTimer.tsx","core/buyGiftSubscription/api.ts","core/buyGiftSubscription/controller.ts","screens/MainScreen/MainScreen.tsx","screens/CertificateOpen/PartnerCertificate.tsx","screens/CertificateOpen/CertificateSheet.tsx","screens/CertificateOpen/CertificateOpen.tsx","navigation/MainRoutes.tsx","core/activatePromoCode/api.ts","core/activatePromoCode/controller.ts","screens/CodeActivation/CodeActivation.tsx","screens/CodeActivated/CodeActivated.tsx","navigation/CodeRoutes.tsx","components/CorporateCalculator/CorporateRadio.tsx","components/CorporateCalculator/CorporateCalculator.tsx","components/UpperCorporateBlock/UpperCorporateBlock.tsx","screens/CorporateSubscription/CorporateSubscription.tsx","core/buyCorporateSubscription/controller.ts","screens/ManagerScreen/ManagerScreen.tsx","navigation/CorporativeRoutes.tsx","core/buySubscription/api.ts","screens/BuySubscription/BuySubscription.tsx","core/buySubscription/controller.ts","navigation/DomainRoutes.tsx","navigation/PromoRoutes.tsx","index.tsx","components/CorporateCalculator/CorporateCalculator.module.css","screens/ManagerScreen/ManagerScreen.module.css","components/CorporateCalculator/CorporateRadio.module.css","themes/default/default.module.css","themes/pink/pink.module.css","themes/black/black.module.css","components/UpperCorporateBlock/UpperCorporateBlock.module.css"],"names":["module","exports","config","apiUrl","window","_prosto_env_","REACT_APP_API_URL","process","tinkoffTerminalKey","REACT_APP_TERMINAL_KEY","giftRoute","REACT_APP_GIFT_ROUTE","codeRoute","REACT_APP_CODE_ROUTE","corpRoute","REACT_APP_CORP_ROUTE","promoRoute","REACT_APP_PROMO_ROUTE","privacyUrl","rulesUrl","domainRouter","go","domain","location","host","currentHost","podarokItems","image","text","isForeverItems","pinkItems","blackFridayItems","CertificateInstructionsBlock","isBlackFriday","isPink","isForever","items","color","className","map","item","key","src","height","style","CustomButton","title","onClick","icon","disabled","downloadIcon","Footer","backgroundColor","textColor","linkColor","showSellerInfo","thisYear","Date","getFullYear","borderColor","href","defaultThemeText","calcTitle","calcSubtitle","subtitle","subtitleExtra","useHolidaysTheme","themeText","styles","nextTimeout","isHoliday","today","moment","get","thisMonth","format","isBirthday","defaultStyles","currentDayNumber","daysLeft","CertificateScreen","search","substring","yandexMetrikaCounters","accounts","options","ymOptions","version","display","flexDirection","alignItems","gap","width","marginTop","justifyContent","textAlign","marginBottom","marginLeft","TitleTextBottom","target","letter","certificate","wallet","corpItems","AdvicesBlock","isCorp","BottomMainBlock","onActivateClick","removeTitle","buttonTitle","firstImage","firstText","secondText","mainScreen","zIndex","id","CustomInput","placeholder","defaultValue","onChange","inputClassName","minLength","maxLength","type","CustomCheckbox","value","checked","htmlFor","fontFamily","fontSize","dates","SubscriptionSelect","availableSubscriptions","activeSubscription","onSelect","onSelectChange","useCallback","event","find","availableSubscription","months","Number","subscription","toString","alt","PaymentMethodSelector","onPaymentMethodChange","newValue","currentTarget","Root","RadioItem","RadioInput","Text","Calculator","data","onDataChange","setAvailableSubscriptions","useState","setActiveSubscription","price","discount1","discount2","finalPrice","response","subscriptionPrices","url","isLoading","setIsLoading","setResponse","useEffect","fetch","then","res","json","catch","err","console","log","useFetch","handleEmailChange","email","toLowerCase","trim","emailCheckboxTouched","setEmailCheckboxTouched","handleConfirmEmailCheckbox","isValidEmail","confirmEmail","onSelectSubscription","undefined","podarok","avo","length","sort","a","b","createMarkup","split","str","margin","paddingLeft","paymentMethod","loading","canPay","checkCanDecrease","IntegerSelector","setValue","canIncrease","setCanIncrease","canDecrease","setCanDecrease","updateCans","handleIncreaseClick","handleDecreaseClick","handleInputBlur","handleInputChange","parseInt","isNaN","IconContainer","LeftIcon","Disabled","InputContainer","Input","onBlur","RightIcon","Selector","getPrice","showCountSelector","useCorporateDiscount","promoCalculator","useAvoDiscount","count","setCount","setPrice","discount","setDiscount","corporateDiscount","setCorporateDiscount","benefit","Math","round","preciseBenefit","ceil","newPrice","month","handleMonthsChange","handleCountChange","async","request","method","timeout","headers","axiosResponse","axios","prepareData","transformRequest","requestData","requestHeaders","setHeaderContentType","serverData","makeResponse","httpStatus","status","responseStatus","statusCode","success","timestamp","message","error","e","params","FormData","JSON","stringify","httpService","queryData","settings","this","addQueryParams","post","delete","put","patch","resultUrl","isFirst","PROMO_CODES_CODE_URL","ActivatePromoCodeCodeApi","activate","promocode","encoding","ACTIVATE_ERRORS","ActivateCodePromocodeController","api","activateCodePromocode","errorMessage","PromoCalculator","controller","promocodeDiscount","setPromocodeDiscount","phone","setPhone","phoneFlag","setPhoneFlag","code","setCode","codeData","setCodeData","setError","codeReq","setCodeReq","dayDiscount","dayDiscountWithPromocode","priceInfo","floor","handleCodeChange","replace","toUpperCase","handlePhone","onClickCode","activateResult","sumBenefit","onClickResetCode","country","inputProps","required","autoFocus","specialLabel","toLocaleString","UpperMainBlock","onBuyClick","show","tillDate","useLayoutEffect","MegaTimer","UpperMainRoot","ProstoAppIcon","Timer","TimerText","BackgroundImageContainer","BackgroundImage","MainBlock","LeftTextContainer","MainContainer","HowItWorks","TextContainer","MainTitle","MainSubtitle","AdditionalText","WavesBackground","MobileTitle","PROMO_CODES_URL","BuyGiftSubscriptionApi","createPromoCode","BuyGiftSubscriptionController","buyPromoCode","promoCode","isCorporate","amountTotal","paymentLink","link","requestUserPayment","form","createTinkoffForm","totalPrice","orderId","description","pay","receiptData","Email","EmailCompany","Taxation","Items","Name","Price","Quantity","Amount","Tax","document","createElement","fields","createDocumentFragment","appendChild","createInput","name","input","test","MainScreen","screenState","setScreenState","promocodeId","handleDataChange","newState","handleBuyClick","debounce","generalPixel","postClick","alert","leading","trailing","handleActivateClick","PARTNERS","present","logo","gift","instructionsLink","info","PartnerCertificate","partner","copiedToClipboard","setCopiedToClipboard","copyCodeToClipboard","navigator","clipboard","writeText","paddingTop","lineHeight","alignSelf","background","borderRadius","padding","overflow","marginRight","alignContent","paddingRight","cursor","CertificateSheet","visible","setVisible","downloadPdf","PDF_DOWNLOAD_URL","position","top","opacity","transition","paddingBottom","fontWeight","textDecoration","border","flex","animationOptions","loop","autoplay","animationData","require","rendererSettings","preserveAspectRatio","introAnimation","introAnimationMobile","openAnimation","openAnimationMobile","openAnimationYear","openAnimationYearMobile","CertificateOpen","isMobile","screen","availWidth","URLSearchParams","introPlayed","setIntroPlayed","showOpenAnimation","setShowOpenAnimation","showCertificateSheet","setShowCertificateSheet","openCertificate","isClickToPauseDisabled","eventListeners","eventName","callback","MainRoutes","exact","path","component","ActivatePromoCodeApi","activatePromoCode","activatePromoCodeData","CodeActivation","activationType","setActivationType","setEmail","confirmCorrectInput","setConfirmCorrectInput","history","useHistory","validateForm","handleActivation","push","handleBuy","handleCode","phoneNumber","handleEmail","changeActivationType","enableLongNumbers","CodeActivated","handleIOsClick","handleAndroidClick","AppIcon","UpperBlock","ActivatedIcon","TitleText","Buttons","Button","CodeRoutes","CorporateRadio","handleChange","CorporateCalculator","handlePhoneChange","handleCompanyChange","companyName","handleINNChange","inn","handleWorkPhoneChange","workPhone","handleAddressChange","legalAddress","subscriptionCount","subscriptionDuration","subscriptionPrice","handlePromoCodeChange","handlePayMethodChange","payMethod","CalculatorBlock","CalculatorTitleContainer","CalculatorTitle","PhoneInput","CalculatorAdditionalText","CalculatorBottomBlock","CalculatorBottomLeftBlock","CalculatorTextFirst","CalculatorTextSecond","CalculatorText","CalculatorBottomRightBlock","CalculatorBottomRightBlockText","CalculatorText2x","PromoCodeInput","CalculatorFooter","CalculatorOffer","UpperCorporateBlock","discountCorporation","EMAIL_REG","isValidPhone","INN_REG","PROMO_CODE_REG","isValidPromoCode","isValidName","CorporateSubscription","screenStateCard","setScreenStateCard","ym","ManagerScreen","ManagerIcon","CorporativeRoutes","BuySubscriptionApi","createSubscription","buySubscription","BuySubscription","pathname","state","SCREENS","clickmap","trackLinks","accurateTrackBounce","webvisor","trackHash","DomainRoutes","Screen","ReactDOM","render","StrictMode","getElementById"],"mappings":"4OACAA,EAAOC,QAAU,CAAC,KAAO,8BAA8B,cAAgB,uCAAuC,SAAW,kCAAkC,SAAW,kCAAkC,UAAY,mCAAmC,eAAiB,wCAAwC,MAAQ,+B,2CCAxTD,EAAOC,QAAU,CAAC,KAAO,4BAA4B,QAAU,+BAA+B,cAAgB,qCAAqC,UAAY,iCAAiC,KAAO,4BAA4B,QAAU,+BAA+B,OAAS,8B,0njtXC4BtQC,MA7BA,CACbC,OACEC,OAAOC,aAAaC,mBACpBC,0KAAYD,mBACZ,GACFE,mBACEJ,OAAOC,aAAaI,wBACpBF,gBAEFG,UACEN,OAAOC,aAAaM,sBACpBJ,0KAAYI,sBACZ,GACFC,UACER,OAAOC,aAAaQ,sBACpBN,0KAAYM,sBACZ,GACFC,UACEV,OAAOC,aAAaU,sBACpBR,0KAAYQ,sBACZ,GACFC,WACAZ,OAAOC,aAAaY,uBACpBV,0KAAYU,uBACZ,GACAC,WAAY,+CACZC,SAAU,sCCfGC,MADM,IAVrB,MACEC,GAAGC,GACDlB,OAAOmB,SAASC,KAAOF,CACxB,CAED,eAAIG,GACF,OAAOrB,OAAOmB,SAASC,IACxB,G,aCJH,MAIME,EAAe,CACnB,CAAEC,MAAO,iCAAkCC,KAAM,2IACjD,CAAED,MAAO,oBAAqBC,KAAM,gZACpC,CAAED,MAAO,yBAA0BC,KAAM,meACzC,CAAED,MAAO,wBAAyBC,KAAM,0ZAGpCC,EAAiB,CACrB,CAAEF,MAAO,8BAA+BC,KAAM,2IAC9C,CAAED,MAAO,4BAA6BC,KAAM,gZAC5C,CAAED,MAAO,iCAAkCC,KAAM,wbACjD,CAAED,MAAO,gCAAiCC,KAAM,0ZAG5CE,EAAY,CAChB,CAAEH,MAAO,2BAA4BC,KAAM,2IAC3C,CAAED,MAAO,yBAA0BC,KAAM,gZACzC,CAAED,MAAO,yBAA0BC,KAAM,keACzC,CAAED,MAAO,6BAA8BC,KAAM,0ZAGzCG,EAAmB,CACvB,CAAEJ,MA1BU,gCA0BIC,KAAM,kjBACtB,CAAED,MA1Be,qCA0BIC,KAAM,8jBAC3B,CAAED,MA1BU,gCA0BIC,KAAM,8YA2CTI,MAjCwC,EACrDC,iBAAgB,EAAOC,SAAQC,gBAE/B,MAAMC,EAAQH,EAAgBF,EAC5BG,EAASJ,EACPK,EAAYN,EACVH,EAEAW,EAAQF,GAAaF,EAAgB,OAAS,OAEpD,OACE,qBAAKK,UAAU,uBAAf,SACGF,EAAMG,KAAI,CAACC,EAAMC,IAChB,sBAAeH,UAAU,uBAAzB,UACE,qBAAKA,UAAU,mBAAmBI,IAAKF,EAAKb,MAAOgB,OAAQV,EAAgB,IAAM,KACjF,mBAAGK,UAAU,kBAAkBM,MAAO,CAAEP,SAAxC,SAAkDG,EAAKZ,SAF/Ca,MAHhB,E,MCxBaI,MAZoC,EAAGC,QAAOC,UAASC,OAAMC,WAAUC,eAAcZ,YAAY,GAAIM,QAAQ,CAAC,KAEzH,qBAAKN,UAAY,qBAAoBA,IAArC,SACE,yBAAQA,UAAU,eAAeS,QAASA,EAASE,SAAUA,EAAUL,MAAOA,EAA9E,UACGI,GAAQ,qBAAKV,UAAU,aAAaI,IAAKM,IACzCE,GAAgB,qBAAKZ,UAAU,aAAaI,IAjB3B,wBAkBlB,+BAAOI,S,MCyBAK,MArCkB,EAAGC,kBAAiBC,YAAWC,YAAY,UAAWC,kBAAiB,MACtG,MAAMC,GAAW,IAAIC,MAAOC,cAE5B,OACE,sBAAKpB,UAAU,cAAcM,MAAO,CAAEQ,gBAAiBA,GAAmB,QAA1E,UACE,oBAAGd,UAAU,aAAaM,MAAO,CAAEP,MAAOgB,GAAa,QAAvD,uDAA2EG,KAC3E,sBAAKlB,UAAU,wBAAf,UACE,mBAAGM,MAAO,CAAEP,MAAOiB,EAAWK,YAAaL,GAAahB,UAAU,aAAasB,KAAK,wKAApF,sBAGA,mBAAGhB,MAAO,CAAEP,MAAOiB,EAAWK,YAAaL,GAAahB,UAAU,aAAasB,KAAK,0IAApF,2BAIF,oBAAGtB,UAAU,aAAaM,MAAO,CAAEP,MAAOgB,GAAa,QAAvD,wGAEE,mBAAGT,MAAO,CAAEP,MAAOiB,EAAWK,YAAaL,GAAaM,KAAK,2BAA2BtB,UAAU,aAAlG,mCAEF,uBAEA,oBAAGA,UAAU,aAAb,yLACkC,uBADlC,sJAICiB,GACC,mBAAGjB,UAAU,aAAb,geAtBN,ECZK,MAAMuB,EAAmB,CAC9BC,UAAW,gHACXC,aAAc,GACdjB,MAAO,qIACPkB,SAAU,ubACVC,cAAe,26B,oDCLV,MCSMC,EAAmB,KAC9B,IAAIC,EAAWC,EAA2BC,EAAnBC,GAAY,EACnC,MAAMC,EAAQC,MAASC,IAAI,QAG3B,MAAMC,EAAYF,MAASG,OAAO,MAG5BzC,GAFWsC,MAASC,IAAI,SAEf,GAETG,GAAa,EAEb3C,GAAgB,EAqBtB,OApBAqC,EAAoCrC,EAgBlCkC,EAAYN,EACZO,EAASS,IAGJ,CACLN,QACAG,YACAI,iBAhCqB,EAiCrBC,SAlCa,EAmCbZ,YACAC,SACAE,UA3BkCrC,MA4BlCC,SACA0C,aACA3C,gBACAoC,cAXF,E,4BC6HaW,MA3JqB,KAGlC,MAAM7C,EAAoD,cAAxC/B,OAAOmB,SAAS0D,OAAOC,UAAU,IAE7C,WAAEN,EAAF,cAAc3C,EAAd,OAA6BC,EAA7B,OAAqCkC,GAAWF,IAChDiB,EAAwBhD,EAAY,CAAC,UAAY,CAAC,UAGxD,OACE,qCACE,cAAC,gBAAD,CAAeiD,SAAUD,EAAuBE,QAASC,GAAWC,QAAQ,MAC5E,sBAAKjD,UAAWH,EAAY,0BAA4B,mBAAxD,UAGE,qBAAKS,MAAO,CAAE4C,QAAS,OAAQC,cAAe,SAAUC,WAAY,SAAUC,IAAK,IAAnF,SACGxD,EAAY,qCACX,qBAAKyD,MAAO,IAAKjD,OAAQ,GAAID,IAAK,wCAClC,qBAAKkD,MAAO,IAAKjD,OAAQ,GAAID,IAAK,oCAC9B,qCACJ,qBAAKkD,MAAO,GAAIjD,OAAQ,GAAID,IAAK,wBACjC,qBAAKkD,MAAO,IAAKjD,OAAQ,GAAID,IAAK,gCAMtC,qBAAKJ,UAAU,eAAf,SACE,sBAAKM,MAAO,CAAEgD,MAAO,OAAQJ,QAAS,OAAQC,cAAe,UAA7D,UACE,oBAAGnD,UAAU,YAAYM,MAAO,CAAEP,MAAOF,EAAY,OAAS,OAAQ0D,UAAW,IAAjF,kLAEE,uBACC1D,EACC,gGACkB,sBAAMS,MAAO,CAAEP,MAAO,WAAtB,yEADlB,mBAEM,+EACU,sBAAMO,MAAO,CAAEP,MAAO,WAAtB,yEADV,mBAIR,uBAVF,qHAaA,sBAAKO,MAAO,CAAE4C,QAAS,OAAQM,eAAgB,UAA/C,UACE,qBAAKF,MAAO,IAAKlD,IA9ChB,sBA+CD,oBAAGJ,UAAU,kBACXM,MAAO,CAAEP,MAAOF,EAAY,OAAS,OAAQyD,MAAO,IAAKG,UAAW,QADtE,4EAGe,wKAHf,0FAIE,uBAAM,uBAJR,gXAME,uBAAM,uBANR,gEAOa,uBAPb,kFAQgB,uBARhB,kFASgB,uBAThB,wFAUiB,uBAVjB,8FAWkB,uBAXlB,gHAYqB,uBAZrB,wFAaiB,uBAbjB,8FAckB,uBAdlB,6DAee,kCAMrB,qBAAKzD,UAAU,gBAAf,SAEE,sBAAKM,MAAO,CAAEgD,MAAO,OAAQJ,QAAS,OAAQC,cAAe,UAA7D,UACE,oBAAGnD,UAAU,YAAYM,MAAO,CAAEP,MAAOF,EAAY,OAAS,OAAQ0D,UAAW,IAAjF,wIACyB,uBADzB,oDAGE,uBACC1D,EACC,yFACW,sBAAMS,MAAO,CAAEP,MAAO,WAAtB,yEADX,mBAEM,wEACG,sBAAMO,MAAO,CAAEP,MAAO,WAAtB,yEADH,mBAIR,uBAXF,qHAcA,oBAAGC,UAAU,kBAAkBM,MAAO,CAAEP,MAAOF,EAAY,OAAS,QAApE,4EACe,0CADf,sDAC0C,uBAD1C,kFAGE,uBAAM,uBAHR,2LAIoC,uBAJpC,wLAME,0BAEF,uBACA,oBAAGG,UAAU,kBACXM,MAAO,CAAEP,MAAOF,EAAY,OAAS,OAAQ6D,cAAe,IAAKD,UAAW,OAAQE,WAAY,OADlG,0EAGa,uBAHb,kFAIgB,uBAJhB,kFAKgB,uBALhB,wFAMiB,uBANjB,8FAOkB,uBAPlB,gHAQqB,uBARrB,wFASiB,uBATjB,8FAUkB,uBAVlB,6DAWe,0BAEf,qBAAKvD,IA1GI,2BA0GekD,MAAO,cAInC,cAAC,EAAD,CACEtB,UAzGU,KA0GVrC,cAAeA,EACfC,OAAQA,EACRC,UAAWA,IAKT,qCACE,oBAAGG,UAAW8B,EAAO8B,iBAAmB,kBACtCtD,MAAO,CAAEP,MAAOF,EAAY,OAAS,QADvC,wSAIyB,oBAAIG,UAAU,kBAJvC,8GAKoB,uBALpB,2JASA,qBAAKM,MAAO,CAAE4C,QAAS,OAAQM,eAAgB,SAAUE,aAAc,IAAvE,SACE,mBAAG1D,UAAU,OAAOsB,KAAK,8CAA8CuC,OAAO,SAA9E,SACE,cAAC,EAAD,CACE7D,UAAW,eACXM,MAAO,CACLQ,gBAAiBjB,EAAY,UAAY,UACzCE,MAAOF,EAAY,OAAS,QAE9BW,MAAO,qEACPE,KAAMb,EAAY,6BAA+B,sCAQ7D,cAAC,EAAD,CACEoB,gBAAgB,EAChBH,gBAAiB,cACjBC,UAAWlB,EAAY,OAAS,OAChCmB,UAAWnB,EAAY,OAAS,iBA3IxC,E,OCRF,MAAMiE,EAAS,oBACTC,EAAc,yBAGdC,EAAS,oBAKTvE,EAAmB,CACvB,CACEJ,MANW,iCAOXC,KAAO,uhBAET,CACED,MATY,6BAUZC,KAAO,gVAET,CACED,MAZa,iCAabC,KAAO,2RAIL2E,EAAY,CAChB,CACE5E,MAAO2E,EACP1E,KAAM,iWAER,CACED,MAAOyE,EACPxE,KAAM,kbAER,CACED,MAAO0E,EACPzE,KAAO,meAILF,EAAe,CACnB,CACEC,MAAO2E,EACP1E,KAAM,qPAER,CACED,MAAOyE,EACPxE,KAAM,kbAER,CACED,MAAO0E,EACPzE,KAAO,meAILE,EAAY,CAChB,CACEH,MAAO,yBACPC,KAAM,8RAER,CACED,MAAO,yBACPC,KAAM,kbAER,CACED,MAAO,8BACPC,KAAO,meA6BI4E,MAxBwB,EACrCvE,iBAAgB,EAAOC,SAAQuE,UAAS,MAExC,MAAMrE,EAAQH,EAAgBF,EAC5B0E,EAASF,EACPrE,EAASJ,EAAYJ,EAEzB,OACE,sBAAKY,UAAU,eAAf,UACE,8BACGF,EAAMG,KAAI,CAACC,EAAMC,IAChB,sBAAeH,UAAU,mBAAzB,UACE,qBAAKA,UAAU,eAAeI,IAAKF,EAAKb,QACxC,mBAAGW,UAAU,mBAAb,SAAiCE,EAAKZ,SAF9Ba,OAMd,8BACE,qBAAKH,UAAU,qBAAqBI,IAAKT,EArFhB,mDADL,uCA2E1B,E,OC5CayE,MA5B2B,EAAGC,kBAAiBC,cAAaC,cAAa3D,eAAc4D,aAAYC,YAAWC,aAAYC,cAAa,EAAMR,UAAS,MACnK,MAAM,cAAExE,EAAF,OAAiBC,EAAjB,OAAyBkC,GAAWF,IAE1C,OACE,sBAAK5B,UAAU,kBAAkBM,MAAO,CACtCsE,OAAQ,EACR9D,gBAAiBnB,EAAgB,UAAY,QAF/C,UAIE,mBAAGkF,GAAG,UAAU7E,UAAU,QAA1B,qGAEA,cAAC,EAAD,CACEmE,OAAQA,EACRxE,cAAeA,EACfC,OAAQA,IAGV,qBAAKI,UAAU,wBAAf,SACE,cAAC,EAAD,CACEA,UAAW8B,EAAM,aACjBlB,aAAcA,EACdJ,MAAO+D,GAAe,4HACtB9D,QAAS4D,QAlBjB,E,OCgBaS,MAvBkC,EAC/CC,cACAC,eAAe,GACfC,WACAjF,YAAWkF,iBAAgB,QAC3BC,YAAWC,YACXC,UAGE,qBAAKrF,UAAWA,EAAhB,SACE,uBACEA,UAAWkF,EACXH,YAAaA,EACbE,SAAUA,EACVE,UAAWA,EACXC,UAAWA,EACXC,KAAMA,EACNL,aAAcA,M,cCCPM,MAtBwC,EAAG9E,QAAO+E,QAAON,WAAUtE,cAE9E,sBAAKX,UAAU,WAAf,UACE,uBACEQ,MAAM,mBACNR,UAAU,kBACV6E,GAAG,mBACHQ,KAAK,WACLG,QAASD,EACTN,SAAU,SAEZ,uBACEQ,QAAQ,mBACRnF,MAAO,CACLoF,WAAY,qBACZC,SAAU,IAEZlF,QAAS,KAAOE,GAAYsE,GAAUM,GANxC,SAMiD/E,O,MCtBvD,MAMMoF,EAAgB,CACpB,EAAG,mCACH,EAAG,yCACH,EAAG,+CACH,GAAI,iDAuDSC,MA9C8B,EAC3CC,yBAAwBC,qBAAoBC,eAS5C,MAAMC,EAAiBC,uBAAaC,IAClC,MAAM,MAAEZ,GAAUY,EAAMtC,OACxBmC,EAASF,EAAuBM,MAC9BC,GAAyBA,EAAsBC,SAAWC,OAAOhB,MAC9DO,EAAuB,GAF5B,GAGC,CAACE,EAAUF,IAEd,OACE,8BAEE,qBAAK9F,UAAU,WAAf,SACE,gCACE,wBACEQ,MAAM,SACNyE,SAAUgB,EACVjG,UAAU,YACVuF,MAAOQ,EAAmBO,OAJ5B,SASIR,EAAuB7F,KAAKuG,GAC1B,wBAAkCjB,MAAOiB,EAAaF,OAAtD,SACGV,EAAMY,EAAaF,OAAOG,aADhBD,EAAaF,YAM/BV,EAAMG,EAAmBO,QAC1B,qBAAKI,IAAI,SAAS1G,UAAU,gBAAgBI,IA1DjC,8BAoCnB,E,6BC7BK,MAAMuG,EAAwB,EAAGpB,QAAON,eAE7C,MAAM2B,EAAwBV,uBAC3BC,IACC,MAAMU,EAAWV,EAAMW,cAAcvB,MACjCsB,IAAatB,GACfN,EAAS4B,EACV,GACA,CAAC5B,EAAUM,IAEhB,OACE,sBAAKvF,UAAW8B,IAAOiF,KAAvB,UACE,eAAC,IAAD,CAAO/G,UAAW8B,IAAOkF,UAAzB,UACE,cAAC,IAAD,CACEhH,UAAW8B,IAAOmF,WAClB1B,MAAM,UACNC,QAAmB,YAAVD,EACTN,SAAU2B,IAEZ,sBAAM5G,UAAW8B,IAAOoF,KAAxB,iJAEF,eAAC,IAAD,CAAOlH,UAAW8B,IAAOkF,UAAzB,UACE,cAAC,IAAD,CACEhH,UAAW8B,IAAOmF,WAClB1B,MAAM,SACNC,QAAmB,WAAVD,EACTN,SAAU2B,IAEZ,sBAAM5G,UAAW8B,IAAOoF,KAAxB,sHAlBN,ECiNaC,MAxMgC,EAAG3G,QAAQ,gHAAuBkB,WAAU0F,OAAM3G,UAAS4G,eAAe,aACvH,MAAM,cAAE1H,EAAF,OAAiBmC,GAAWF,KAE3BkE,EAAwBwB,GAA6BC,mBAA0B,KAC/ExB,EAAoByB,GAAyBD,mBAClD,CACEjB,OAAQ,EACRmB,MAAO,IACPC,UAAW,EACXC,UAAW,EACXC,WAAY,OAIRC,SAAUC,GC1CKC,KACvB,MAAOC,EAAWC,GAAgBV,oBAAS,IACpCM,EAAUK,GAAeX,qBAgBhC,OAdAY,qBAAU,KACRF,GAAa,GACbG,MAAO,GAAExK,EAAOC,UAAUkK,KACvBM,MAAKC,GAAOA,EAAIC,SAChBF,MAAMR,IACLK,EAAYL,EAAST,MACrBa,GAAa,EAAb,IAEDO,OAAOC,IACNC,QAAQC,IAAI,YAAaF,GACzBR,GAAa,EAAb,GARJ,GAUC,IAEI,CACLD,YACAH,WAFF,EDwByCe,CAAS,qBAE5CC,EAAoB3C,uBAAaC,IAAgD,IAAD,EACpF,MAAM2C,EAAK,UAAG3C,EAAMtC,OAAO0B,aAAhB,QAAyB,GACpC8B,EAAa,IACRD,EACH0B,MAAOA,EAAMC,cAAcC,QAF7B,GAIC,CAAC5B,EAAMC,KAEH4B,EAAsBC,GAA2B3B,oBAAS,GAC3D4B,EAA6BjD,uBAAaX,IAC9C2D,EAAwB3D,GACL,KAAf6B,EAAK0B,OACJM,GAAahC,EAAK0B,QACvBzB,EAAa,IACRD,EACHiC,cAAcjC,EAAKiC,cAFrB,GAIC,CAACjC,EAAMC,IAEJiC,EAAuBpD,uBAAaM,IACxCgB,EAAsBhB,GACtBa,EAAa,IACRD,EACHd,OAAQE,EAAaF,OACrBmB,MAAOjB,EAAaoB,YAHtB,GAMC,CAACR,EAAMC,IAEVc,qBAAU,KACR,GAAIxI,EACF2J,EAAqB,CACnBhD,OAAQ,GACRmB,MAAO,KACPC,UAAW,EACXC,UAAW,EACXC,WAAY,YAGd,QAA2B2B,IAAvBzB,EAAkC,CACpC,MAAM3I,EAAcL,EAAaK,YACjCuJ,QAAQC,IAAI,cAAexJ,GAC3BuJ,QAAQC,IAAI,qBAAsBb,GAClC,MAAM,QAAE0B,EAAF,IAAWC,GAAQ3B,EACL,qBAAhB3I,IAAA,OAAsCsK,QAAtC,IAAsCA,OAAtC,EAAsCA,EAAKC,SAC7CD,EAAIE,MAAK,CAACC,EAAkBC,IACzBD,EAAEtD,OAASuD,EAAEvD,OAAU,GAAK,IAE/BgB,EAA0BmC,GAC1BjC,EAAsBiC,EAAI,IAC1BH,EAAqBG,EAAI,MACpB,OAAID,QAAJ,IAAIA,OAAJ,EAAIA,EAASE,UAClBF,EAAQG,MAAK,CAACC,EAAkBC,IAC7BD,EAAEtD,OAASuD,EAAEvD,OAAU,GAAK,IAE/BgB,EAA0BkC,GAC1BhC,EAAsBgC,EAAQ,IAC9BF,EAAqBE,EAAQ,IAEhC,CACF,GAEA,CAAC1B,IAEJ,MAAMgC,EAAgBxK,GACfA,EACEA,EAAKyK,MAAM,MAAM9J,KAAI,CAAC+J,EAAK7J,IAAQ,mBAAaG,MAAO,CAAE2J,OAAQ,GAA9B,SAAoCD,GAA5B7J,KADhC,GAIpB,OACE,sBAAKH,UAAU,kBAAf,UACE,gCACE,sBAAKA,UAAU,kBAAf,UACG8J,EAAatJ,GACd,mBAAGR,UAAU,oBAAb,SAAkC8J,EAAapI,QAGjD,cAAC,EAAD,CACEqD,YAAY,8HACZE,SAAU4D,IAGZ,mBAAG7I,UAAU,2BAAb,SACGL,EAAgB,4OAAgD,0PAElEA,EACC,qCACE,sBAAKK,UAAU,YAAf,UACE,oBAAGA,UAAU,iBAAb,qHACqB,uBADrB,WAEU,mBAAGA,UAAU,QAAb,4BAEV,mBAAGA,UAAU,yBAAb,2CAEF,sBAAKA,UAAU,YAAf,UACE,oBAAGA,UAAU,iBAAb,gIACsB,uBADtB,4EAEe,mBAAGA,UAAU,QAAb,4BAEf,mBAAGA,UAAU,yBAAb,6DAEF,sBAAKA,UAAU,YAAf,UACE,oBAAGA,UAAU,iBAAb,qHACqB,uBAAM,mBAAGA,UAAU,QAAb,4BAE3B,mBAAGA,UAAU,yBAAb,iEAEF,sBAAKA,UAAU,YAAf,UACE,mBAAGA,UAAU,iBAAb,wFAGA,mBAAGA,UAAU,iBAAb,SAA8B,mBAAGA,UAAU,QAAb,6BAC9B,mBAAGA,UAAU,iBAAb,SAA8B,qDAGlC,sBAAKA,UAAU,wBAAf,UACE,sBAAKA,UAAU,4BAAf,UACE,mBAAGA,UAAU,sBAAb,wDACA,mBAAGA,UAAU,iBAAb,wCACG+F,EAAmB2B,WAAa,mBAAG1H,UAAU,iBAAb,oDAChC+F,EAAmB4B,WAAa,mBAAG3H,UAAU,iBAAb,uEAChC+F,EAAmB2B,WAAa,mBAAG1H,UAAU,iBAAb,2FAErC,sBAAKA,UAAU,6BAAf,UACE,cAAC,EAAD,CACE8F,uBAAwBA,EACxBC,mBAAoBA,EACpBC,SAAUsD,IAEZ,sBAAKtJ,UAAU,iCAAf,UACE,oBAAGA,UAAU,iBAAb,UACG+F,EAAmB0B,MADtB,IAC6B,sBAAMzH,UAAU,YAAhB,yBAE1B+F,EAAmB2B,WAAa,oBAAG1H,UAAU,iBAAb,cAAgC+F,EAAmB2B,UAAnD,SAChC3B,EAAmB4B,WAAa,oBAAG3H,UAAU,iBAAb,cAAgC+F,EAAmB4B,UAAnD,SAChC5B,EAAmB2B,WACpB,oBAAG1H,UAAU,iBAAb,UACG+F,EAAmB6B,WADtB,IACkC,sBAAM5H,UAAU,YAAhB,mCAQ9C,sBAAKA,UAAU,mBAAf,UACE,qBAAKM,MAAO,CAAE4J,YAAa,IAA3B,SACE,cAAC,EAAD,CACE1J,MAAM,mKACN+E,MAAO6B,EAAKiC,aACZpE,SAAUkE,MAIbF,GAAuC,KAAf7B,EAAK0B,OAC5B,mBAAGxI,MAAO,CAAEmD,UAAW,SAAU1D,MAAO,OAAxC,qHAEDkJ,GAAuC,KAAf7B,EAAK0B,QAAiBM,GAAahC,EAAK0B,QAC/D,mBAAGxI,MAAO,CAAEmD,UAAW,SAAU1D,MAAO,OAAxC,yGAEF,cAAC4G,EAAD,CACEpB,MAAO6B,EAAK+C,cACZlF,SAAWM,IACT8B,EAAa,IACRD,EACH+C,cAAe5E,GAFjB,IAMJ,cAAC,EAAD,CACEvF,UAAW8B,EAAM,aACjBtB,MAAO4G,EAAKgD,QAAU,6DAAkB,mDACxC3J,QAASA,EACTE,UAAWyG,EAAKiD,SAElB,oBAAGrK,UAAU,kBAAb,UACG,6LACD,mBAAGA,UAAU,iBAAiBsB,KAAM1D,EAAOgB,WAAYiF,OAAO,SAA9D,iHA5GR,E,iBE1BF,SAASyG,EAAiB/E,GACxB,OAAOA,EAAQ,CAChB,CAEcgF,MArF2B,EAAGvK,YAAY,GAAIiF,WAAW,aACtE,MAAOM,EAAOiF,GAAYjD,mBAAiB,IACpCkD,EAAaC,GAAkBnD,oBA4E/B,IA3EAoD,EAAaC,GAAkBrD,mBAAS+C,EAAiB/E,IAE1DsF,EAAa3E,uBAAaW,IAC9B6D,GAwEK,GAvELE,EAAeN,EAAiBzD,GAAhC,GACC,IAEGiE,EAAsB5E,uBAAY,KACtC,GAAIuE,EAAa,CACf,MAAM5D,EAAWtB,EAAQ,EACzBsF,EAAWhE,GACX2D,EAAS3D,GACT5B,EAAS4B,EACV,IACA,CAAC4D,EAAalF,EAAOsF,EAAY5F,IAE9B8F,EAAsB7E,uBAAY,KACtC,GAAIyE,EAAa,CACf,MAAM9D,EAAWtB,EAAQ,EACzBsF,EAAWhE,GACX2D,EAAS3D,GACT5B,EAAS4B,EACV,IACA,CAAC8D,EAAapF,EAAOsF,EAAY5F,IAE9B+F,EAAkB9E,uBACrBC,IACKZ,GAAS,GACXiF,EAASjF,GACTN,EAASM,GACTsF,EAAWtF,KAEXiF,EAAS,GACTvF,EAAS,GACT4F,EAAW,GACZ,GAEH,CAAC5F,EAAUM,EAAOsF,IAGdI,EAAoB/E,uBACvBC,IACC,GAA2B,KAAvBA,EAAMtC,OAAO0B,MACf,OAAOiF,EAAS,GAElB,MAAM3D,EAAWN,OAAO2E,SAAS/E,EAAMtC,OAAO0B,QACzCgB,OAAO4E,MAAMtE,IAAaA,GAAY,GACzC2D,EAAS3D,EACV,GAEH,IAGF,OACE,sBAAK7G,UAAY,GAAE8B,IAAOiF,QAAQ/G,IAAlC,UACE,qBACEA,UAAY,GAAE8B,IAAOsJ,iBAAiBtJ,IAAOuJ,YAAYV,EAAc,GAAK7I,IAAOwJ,WACnF7K,QAASsK,EAFX,eAMA,qBAAK/K,UAAW8B,IAAOyJ,eAAvB,SACE,uBAAOvL,UAAW8B,IAAO0J,MAAOnG,KAAK,SAASE,MAAOA,GAAS,GAAIN,SAAUgG,EAAmBQ,OAAQT,MAEzG,qBACEhL,UAAY,GAAE8B,IAAOsJ,iBAAiBtJ,IAAO4J,aAAajB,EAAc,GAAK3I,IAAOwJ,WACpF7K,QAASqK,EAFX,iBAXJ,EC5DF,MAeMlF,EAAgB,CACpB,EAAK,mCACL,EAAK,yCACL,EAAK,+CACL,GAAM,iDA0FO+F,MAvF4B,EAAGC,WAAUC,oBAAmBC,uBAAsBC,kBAAiBC,qBAEhH,MAAOC,EAAOC,GAAY3E,mBAAS,IAC5BhC,EAAOiF,GAAYjD,mBAAUwE,EAAuB,EAAL,KAC/CtE,EAAO0E,GAAY5E,mBA1BT,KA0BiCwE,EAAuB,EAAL,MAC7DK,EAAUC,GAAe9E,mBAAUwE,EAAuB,GAAL,KACrDO,EAAmBC,GAAwBhF,mBAAS,IAE3DY,qBAAU,KACR,IAAIqE,EAAUC,KAAKC,MAAMjF,EAAQ2E,EAAW,KAE5C,GAAIN,EACF,GAAiB,IAAbM,EACFI,EAAU,MACL,CACL,MAAMG,EAAiBlF,GAAS,GAAK,EAAI2E,EAAW,MAAQ,EAAIE,EAAoB,MACpFE,EAAUC,KAAKG,KAAKD,EACrB,CAGCX,IACFQ,GAAoBC,KAAKG,KAAyB,KAAnBnF,EAAQ+E,KAGzCZ,EACE,CACEK,QACAY,SAAUpF,EACV2E,WACAE,oBACAE,UACAM,MAAOvH,GAPX,GAUC,CAACA,EAAO0G,IAEX,MAAMc,EAAqB7G,uBACxBC,IACCgG,EA5Da,IA4DJjB,SAAS/E,EAAMtC,OAAO0B,QAC/BiF,EAASU,SAAS/E,EAAMtC,OAAO0B,QACM,KAAjC2F,SAAS/E,EAAMtC,OAAO0B,QACxB8G,EAAY,IACZE,EAAqB,KACqB,IAAjCrB,SAAS/E,EAAMtC,OAAO0B,QAC/B8G,EAAYP,EAAuB,GAAK,IACxCS,EAAqB,KACqB,IAAjCrB,SAAS/E,EAAMtC,OAAO0B,QAC/B8G,EAAY,IACZE,EAAqB,KAErBF,EAAY,GACZE,EAAqB,GACtB,GAEH,CAAC/B,EAAU6B,EAAaP,IAGpBkB,EAAoB9G,uBAAaW,IAEjCA,GAAY,GACdqF,EAASrF,EACV,GACA,IAEH,OACE,gCACGgF,GAAqB,cAAC,EAAD,CAAiB7L,UAAU,kBAAkBiF,SAAU+H,IAC7E,qBAAKhN,UAAU,WAAf,SACE,gCACE,yBAAQiF,SAAU8H,EAAoB/M,UAAU,YAAYgF,aAAc,GAAIrE,SAAUqL,EAAxF,WACIF,GACA,wBAAQvG,MAAO,EAAf,+CAEAuG,GACA,wBAAQvG,MAAO,EAAf,oDAEF,wBAAQA,MAAO,EAAf,0DACA,wBAAQA,MAAO,GAAf,8DAEDK,EAAML,EAAMkB,YACb,qBAAKzG,UAAU,gBAAgBI,IArGpB,+BAqFnB,E,8CCFF6M,eAAeC,IAAQ,KAAE9F,EAAF,OAAQ+F,EAAR,QAAgBC,EAAhB,IAAyBrF,EAAzB,QAA8BsF,EAAU,CAAC,IAC9D,IAAK,IAAD,MACF,MAAMC,QAAsBC,KAAML,QAAQ,CACxCC,SACApF,MACAsF,UACAD,UACAhG,KAAMoG,GAAYpG,GAClBqG,iBAAkB,CAACC,EAAaC,KAyCtC,SAA8BN,GACvBA,EAAQ,kBACXA,EAAQ,gBAAkB,kCAE7B,CA5COO,CAAqBD,GACdD,KAILG,EAAaP,EAAclG,KACjC,OAAO0G,GAAa,CAClBC,WAAYT,EAAcU,OAC1BC,eAAgBJ,EAAWK,WAC3BC,QAASN,EAAWM,QACpBC,UAAWP,EAAWO,UACtBhH,KAAI,UAAEyG,EAAWzG,YAAb,QAAqB,KACzBiH,QAAO,UAAER,EAAWQ,eAAb,QAAwB,KAC/BC,MAAK,UAAET,EAAWS,aAAb,QAAsB,MAE9B,CAAC,MAAOC,GAAI,IAAD,gBACV,MAAMV,EAAU,iBAAGU,QAAH,IAAGA,GAAH,UAAGA,EAAG1G,gBAAN,aAAG,EAAaT,YAAhB,QAAwB,CAAC,EACzC,OAAO0G,GAAa,CAClBC,WAAU,iBAAEQ,QAAF,IAAEA,GAAF,UAAEA,EAAG1G,gBAAL,aAAE,EAAamG,cAAf,QAAyB,EACnCC,eAAc,UAAEJ,EAAWK,kBAAb,QAA2B,KACzCC,SAAS,EACT/G,KAAI,UAAEyG,EAAWzG,YAAb,QAAqB,KACzBkH,MAAK,UAAET,EAAWS,aAAb,QAAsB,KAC3BD,QAAO,UAAER,EAAWQ,eAAb,QAAwB,MAElC,CACF,CAED,SAASP,GAAaU,GAAwC,IAAD,cAC3D,MAAO,CACLT,WAAU,UAAES,EAAOT,kBAAT,QAAuB,EACjCE,eAAc,UAAEO,EAAOP,sBAAT,QAA2B,KACzCE,QAAO,UAAEK,EAAOL,eAAT,SACP/G,KAAI,UAAEoH,EAAOpH,YAAT,QAAiB,KACrBgH,UAAS,UAAEI,EAAOJ,iBAAT,QAAsB,KAC/BE,MAAK,UAAEE,EAAOF,aAAT,QAAkB,KACvBD,QAAO,UAAEG,EAAOH,eAAT,QAAoB,KAE9B,CAQD,SAASb,GAAYpG,GACnB,OAAIA,aAAgBqH,SACXrH,EAGU,iBAARA,GAA4B,MAARA,EACtBsH,KAAKC,UAAUvH,GAGjBA,CACR,CAGcwH,OADK,IArIpB,MACEzM,IAAI4F,EAAa8G,EAAwB,CAAC,EAAGC,EAA6B,CAAC,GAEzE,OAAO5B,GAAQ,CACbC,OAAQ,MACRpF,IAHmBgH,KAAKC,eAAejH,EAAK8G,MAIzCC,GAEN,CAEDG,KAAKlH,EAAaX,EAAgB,CAAC,EAAG0H,EAA6B,CAAC,GAClE,OAAO5B,GAAQ,CACbnF,MACAX,OACA+F,OAAQ,UACL2B,GAEN,CAEDI,OAAOnH,EAAa+G,EAA6B,CAAC,GAChD,OAAO5B,GAAQ,CACbnF,MACAoF,OAAQ,YACL2B,GAEN,CAEDK,IAAIpH,EAAaX,EAAgB,CAAC,EAAG0H,EAA6B,CAAC,GACjE,OAAO5B,GAAQ,CACbnF,MACAX,OACA+F,OAAQ,SACL2B,GAEN,CAEDM,MAAMrH,EAAaX,EAAgB,CAAC,EAAG0H,EAA6B,CAAC,GACnE,OAAO5B,GAAQ,CACbnF,MACAX,OACA+F,OAAQ,WACL2B,GAEN,CAEDE,eAAejH,EAAayG,GAC1B,IAAIa,EAAYtH,EACZuH,GAAU,EACd,IAAK,MAAMnP,KAAOqO,EAAQ,CAExBa,GAAc,GADCC,EAAU,IAAM,MACNnP,KAAOqO,EAAOrO,KACvCmP,GAAU,CACX,CACD,OAAOD,CACR,GC1EH,MAAME,GAAwB,GAAE3R,EAAOC,gCAYxB2R,OANf,MACEC,SAASrI,GACP,OAAOwH,GAAYzM,IAAK,GAAEoN,6BAA+CnI,EAAKsI,iBAAanG,EAAW,CAAC8D,QAAS,CAAC,eAAgB,mBAAoBsC,SAAU,UAChK,GCVH,MAAMC,GAA0C,CAC9C,KAAM,yIACN,KAAM,qGACN,KAAM,2GACN,KAAM,oLACN,KAAM,sLAyBOC,OAhBf,MAAuC,cAAD,KAC5BC,IAAM,IAAIN,EADkB,CAGpC,2BAAMO,CAAsBL,GAA8C,IAAD,EACvE,MAAM7H,QAAiBkH,KAAKe,IAAIL,SAAS,CACvCC,cAGF,MAAO,CACLvB,QAAStG,EAASsG,QAClB/G,KAAMS,EAAST,KACf4I,aAAY,UAAEJ,GAAgB/H,EAASoG,uBAA3B,aAA+C1E,EAE9D,GCuIY0G,OAnJqC,EAAG7I,OAAM3G,UAAS4G,eAAe,SAAW0E,sBAC9F,MAAOtE,EAAO0E,GAAY5E,mBACxB,CACEsF,SAAU,IACVT,SAAU,GACVI,QAAS,EACTM,MAAO,KAGLoD,EAAa,IAAIL,IAChBM,EAAmBC,GAAwB7I,mBAAS,IACpD8I,EAAOC,GAAY/I,mBAAS,KAC5BgJ,EAAWC,GAAgBjJ,oBAAS,IACpCkJ,EAAMC,GAAWnJ,oBAAS,IAC1BoJ,EAAUC,GAAerJ,mBAAS,KAClC+G,EAAOuC,GAAYtJ,oBAAS,IAC5BuJ,EAASC,GAAcxJ,oBAAS,GACjCyJ,EAAevJ,EAAMoF,SAAWpF,EAAMqF,MAAWrF,EAAMoF,SAAWpF,EAAMqF,OAAUrF,EAAM2E,SAAW,KACnG6E,EAA4BR,IAASnC,EAAU0C,GAAeb,EAAoB,KAAQ,EAG1FvE,EAAW1F,uBAAagL,IAC5B/E,EAAS+E,GACT7J,EAAa,IACRD,EACHd,OAAQ4K,EAAUpE,MAClBrF,MAAOgF,KAAK0E,MAAOD,EAAUrE,SAAWqE,EAAU1E,SAAYiE,IAASnC,GAAY4C,EAAUrE,SAAWqE,EAAU1E,SAAW2D,EAAqB,IAAO,IACzJ/D,SAAU8E,EAAU9E,UAJtB,GAMC,CAAChF,EAAMC,EAAc8E,IAElBiF,EAAmBlL,uBACtBC,IACC,MAAM7G,EAAO6G,EAAMtC,OAAO0B,MAAM8L,QAAQ,MAAO,IAAIC,cACnDV,EAAYtR,GACTA,EAAKoK,OAAS,EACfqH,GAAW,GAEXA,GAAW,EACZ,GACF,CAACH,EAAaD,IAEXY,EAAcrL,uBACjBmK,IACCC,EAASD,GACThJ,EAAa,IACRD,EACHiJ,UAEEA,EAAM3G,QAAU,GAAK2G,EAAM3G,QAAU,GACvC8G,GAAa,GAEbA,GAAa,EACd,GACF,CAACF,EAAUE,EAAcpJ,EAAMC,IAE5BmK,EAActL,uBAAY+G,UAC9B,MAAMwE,QAAuBvB,EAAWH,sBAAsBY,GAC9D,GAAIc,EAAetD,QAAnB,CACEuC,GAAQ,GACRG,GAAS,GACTT,EAAqBqB,EAAerK,KAAKgF,UACzC,MAAMsF,EAAajK,EAAMoF,SAAWpF,EAAM+E,QAC1CnF,EAAa,IACRD,EACHK,MAAOgF,KAAK0E,MAAOO,EAAeA,EAAaD,EAAerK,KAAKgF,SAAY,MAYlF,KATM,CACL,MAAMsF,EAAajK,EAAMoF,SAAWpF,EAAM+E,QAC1CqE,GAAS,GACTH,GAAQ,GACRN,EAAqB,GACrB/I,EAAa,IACRD,EACHK,MAAOgF,KAAK0E,MAAMO,IAErB,IACA,CAAChB,EAASC,EAAUtJ,EAAc+I,EAAsBD,IAErDwB,EAAmBzL,uBAAY,KACnC0K,EAAY,IACZ,MAAMc,EAAajK,EAAMoF,SAAWpF,EAAM+E,QAC1C4D,EAAqB,GACnB/I,EAAa,IACRD,EACHK,MAAOgF,KAAK0E,MAAMO,KAEtBX,GAAW,GACXL,GAAQ,EAAR,GACC,CAACA,IAEJ,OACE,sBAAK1Q,UAAU,kBAAf,UACE,gCACE,mBAAGA,UAAU,kBAAb,+GACA,qBAAKA,UAAU,uBAAf,SACE,cAAC,IAAD,CAAY4R,QAAS,KAAMrM,MAAO8K,EAAOwB,WAAY,CAACC,UAAU,EAAMC,WAAW,GAAO9M,SAAUsM,EAAaS,aAAa,OAE9H,mBAAGhS,UAAU,2BAAb,0QACA,sBAAKA,UAAU,wBAAf,UACE,sBAAKA,UAAU,4BAAf,UACE,mBAAGA,UAAU,sBAAb,wDACA,mBAAGA,UAAU,iBAAb,sCACiB,IAAhByH,EAAMqF,OAAe,mBAAG9M,UAAU,iBAAb,oGACrByQ,GAAQ,mBAAGzQ,UAAU,iBAAb,wFACR,mBAAGA,UAAU,oBAAb,wFACgB,IAAhByH,EAAMqF,OAAe,mBAAG9M,UAAU,qBAAb,uFAExB,sBAAKA,UAAU,6BAAf,UACE,cAAC,EAAD,CAAU4L,SAAUA,EAAUG,gBAAiBA,IAC/C,sBAAK/L,UAAU,iCAAf,UACE,oBAAGA,UAAU,iBAAb,UAAgCyH,EAAMoF,SAAUoF,eAAe,UAAY,EAA3E,IAA8E,sBAAMjS,UAAU,YAAhB,uBAC7D,IAAhByH,EAAMqF,OAAe,oBAAG9M,UAAU,iBAAb,cAAgCyH,EAAM2E,SAAtC,OACrBqE,GAAQ,oBAAGzQ,UAAU,iBAAb,cAAgCmQ,EAAhC,OACR,oBAAGnQ,UAAU,oBAAb,WAAmCyH,EAAMoF,SAAWpF,EAAM+E,SAAYiE,IAASnC,GAAY7G,EAAMoF,SAAWpF,EAAM+E,SAAW2D,EAAqB,IAAO,IAAI8B,eAAe,UAAY,EAAxL,IAA2L,sBAAMjS,UAAU,YAAhB,uBAC3K,IAAhByH,EAAMqF,OAAe,oBAAG9M,UAAU,qBAAb,WAAqCyH,EAAMoF,SAAWpF,EAAMqF,MAAWrF,EAAMoF,SAAWpF,EAAMqF,OAAUrF,EAAM2E,SAAW,KAAQ6E,GAA0BgB,eAAe,UAAY,EAAtL,IAAyL,sBAAMjS,UAAU,gBAAhB,mCAMvN,sBAAKA,UAAU,mBAAf,UACE,sBAAKA,UAAU,8BAAf,UACE,sBAAKA,UAAU,0BAAf,WACIyQ,GAAQ,cAAC,EAAD,CAAa1L,YAAY,gIAA4BE,SAAWM,GAAU6L,EAAiB7L,GAAQL,eAAe,0BAA0BC,UAAW,EAAGC,UAAW,KAC9KqL,IAASnC,GAAS,mBAAGtO,UAAU,qBAAb,gJACjByQ,GAAQ,cAAC,EAAD,CAAcjQ,MAAM,yDAAYC,QAAS+Q,EAAaxR,UAAU,2BAA2BW,SAAUmQ,OAEhHL,GAAQ,qBAAKzQ,UAAU,uBAAf,SACN,cAAC,EAAD,CAAcQ,MAAM,mDAAWC,QAASkR,EAAkB3R,UAAU,kCAGxEsO,GAAS,qBAAKtO,UAAU,uBAAf,SACP,mBAAGA,UAAU,0BAAb,sSAGH,cAAC,EAAD,CAAcQ,MAAM,yFAAmBC,QAASA,EAASE,UAAW4P,IACpE,oBAAGvQ,UAAU,kBAAb,UACG,6LACD,mBAAGA,UAAU,iBAAiBsB,KAAM1D,EAAOgB,WAAYiF,OAAO,SAA9D,iHAhDR,ECjCaqO,OA5D0B,EAAG9K,OAAM+K,aAAY9K,eAAc0E,sBAC1E,MAAM,iBAAEvJ,EAAF,SAAoBC,EAApB,UAA8BZ,EAA9B,OAAyCC,EAAzC,UAAiDE,EAAjD,OAA4DpC,EAA5D,WAAoE0C,EAApE,cAAgF3C,EAAhF,YAA+FoC,GAAgBH,ICd/F,IAACwQ,EAAeC,EAAfD,EDgBdpQ,EChB6BqQ,EDgBlBtQ,ECXpBuQ,2BAAgB,KACTF,GAEL,IAAItU,OAAOyU,UADD,oCAEH,CACH,KAAQ,CAAC,EAAG,EAAG,EAAG,GACpB,KAAQ,CACN,YAAe,IACf,OAAU,CAAE,UAAY,EAAO,GAAM,IAAK,IAAOF,IAEnD,OAAU,CACR,KAAQ,QACR,OAAU,CACR,MAAS,IACT,WAAc,UACd,OAAU,QACV,MAAS,IACT,mBAAoB,KACpB,qBAAsB,CACpB,OAAU,YAAa,KAAQ,oHAEjC,mBAAoB,KACpB,oBAAqB,UACrB,QAAW,IACX,gBAAgB,EAChB,iBAAkB,IAClB,WAAW,EACX,mBAAoB,CAClB,OAAU,SAEZ,iBAAkB,KAClB,kBAAmB,YAGvB,SAAY,EACZ,MAAS,QACT,MAAS,IACT,OAAU,IAlCZ,GAoCC,CAACD,ID1BJ,MAAMtI,EAAe,CAACxK,EAAc2K,IAC7B3K,EACEA,EAAKyK,MAAM,MAAM9J,KAAI,CAAC+J,EAAK7J,IAAQ,mBAAaG,MAAO,CAAE2J,OAAQA,GAAU,GAAxC,SAA8CD,GAAtC7J,KADhC,GAIpB,OACE,sBAAKH,UAAW8B,EAAO0Q,cAAvB,UACGlQ,EACC,qBAAKtC,UAAU,UAAUI,IAvBZ,4BAwBb,qBAAKJ,UAAW8B,EAAO2Q,gBAEvBzQ,GAAaD,GACb,sBAAK/B,UAAW8B,EAAO4Q,MAAOpS,MAAO,CAAEmD,UAAW,UAAlD,UACE,sBAAKzD,UAAW8B,EAAO6Q,UAAvB,yDACY/S,GAAU6C,EAAW,EAAID,EAAmB,sBAAS,GADjE,uFAGA,qBAAKlC,MAAO,CAAED,OAAQ,KAAOwE,GAAG,8CAGpC,qBAAK7E,UAAW8B,EAAO8Q,yBAAvB,SACE,qBAAK5S,UAAW8B,EAAO+Q,oBAEzB,sBAAK7S,UAAW8B,EAAOgR,UAAvB,UACE,qBAAK9S,UAAW8B,EAAOiR,oBACvB,qBAAK/S,UAAW8B,EAAOkR,cAAvB,SACGjH,EACG,cAAC,GAAD,CAAiB3E,KAAMA,EAAM3G,QAAS0R,EAAY9K,aAAcA,EAAc0E,gBAAiBA,IAC/F,cAAC,EAAD,CACAvL,MAAOqB,EAAUL,UACjBE,SAAUG,EAAUJ,aACpB2F,KAAMA,EACN3G,QAAS0R,EACT9K,aAAcA,MAGpB,mBAAGrH,UAAW8B,EAAOmR,WAAY3R,KAAK,WAAtC,qGACA,sBAAKtB,UAAW8B,EAAOoR,cAAvB,UACE,qBAAKlT,UAAW8B,EAAOqR,UAAvB,SAAmCrJ,EAAajI,EAAUrB,MAAO,MACjE,qBAAKR,UAAW8B,EAAOsR,cAAgBtR,EAAOuR,eAA9C,SAA+DvJ,EAAajI,EAAUH,SAAU,MAChG,qBAAK1B,UAAW8B,EAAOuR,eAAvB,SAAwCvJ,EAAajI,EAAUF,cAAe,SAG/EhC,GAAiB,qBAAKK,UAAW8B,EAAOwR,kBACxC3T,GACC,oBAAGK,UAAW8B,EAAOyR,YAArB,UACGzJ,EAAajI,EAAUL,WACxB,mBAAGxB,UAAU,oBAAb,SAAkC6B,EAAUJ,eAC5C,qBAAKrB,IA7DD,qBA6DekD,MAAO,iBA1CpC,EErBF,MAAMkQ,GAAmB,GAAE5V,EAAOC,oBA4CnB4V,OAPf,MACE,qBAAMC,CAAgBtM,GACpB,MAAMS,QAAiB+G,GAAYK,KAAM,GAAEuE,SAAuBpM,GAClE,OAAOS,EAASsG,QAAUtG,EAAST,KAAmC,IACvE,G,OCmEYuM,OAnGf,MAAqC,cAAD,KAC1B7D,IAAM,IAAI2D,EADgB,CAGlC,kBAAMG,CAAa9K,EAAexC,EAAgBmB,EAAe2E,EAAkBjC,EAA+BtK,GAChH,MAAMgU,QAAkB9E,KAAK2E,gBAAgB5K,EAAOxC,EAAQmB,EAAO2E,EAAUjC,EAAetK,GAC5F,OAAKgU,IACI,CAOV,CAED,qBAAcH,CAAgB5K,EAAexC,EAAgBmB,EAAe2E,EAAkBjC,EAAgCtK,GAC5H,MAAMgI,QAAiBkH,KAAKe,IAAI4D,gBAAgB,CAC9CI,aAAa,EACb3G,OAAQ,OACR4G,YAAa,EACbjL,QACAxC,SACAmB,QACA2E,WACAjC,gBACAtK,cAGF,OAAKgI,EAIE,CACLhD,GAAIgD,EAAShD,GACbvF,KAAMuI,EAASvI,KACfmI,MAAOI,EAASJ,MAChBsM,YAAalM,EAASkM,YACtBC,YAAanM,EAASoM,MARf,IAUV,CAED,wBAAcC,CAAmBpL,EAAe+K,EAAuBvN,GACrE,MAAM6N,EAAOpF,KAAKqF,kBAAkB,CAClCC,WAAYR,EAAUE,YAAcF,EAAUpM,MAC9C6M,QAAST,EAAUhP,GACnB0P,YAAc,iEAAcjO,mEAAsBwC,IAClDA,UAGF,OADAhL,OAAO0W,IAAIL,IACJ,CACR,CAEOC,kBAAkB5F,GAMxB,MAAMiG,EACN,CACEC,MAAOlG,EAAO1F,MACd6L,aAAc,qBACdC,SAAU,aACVC,MAAO,CAAC,CACNC,KAAM,yMACNC,MAA2B,IAApBvG,EAAO6F,WACdW,SAAU,EACVC,OAA4B,IAApBzG,EAAO6F,WACfa,IAAK,UAIHf,EAAOgB,SAASC,cAAc,QAE9BC,EAASF,SAASG,yBAaxB,OAZAD,EAAOE,YAAYxG,KAAKyG,YAAY,cAAe5X,EAAOM,qBAC1DmX,EAAOE,YAAYxG,KAAKyG,YAAY,QAAS,SAC7CH,EAAOE,YAAYxG,KAAKyG,YAAY,WAAY,OAChDH,EAAOE,YAAYxG,KAAKyG,YAAY,SAAUhH,EAAO6F,WAAW5N,aAChE4O,EAAOE,YAAYxG,KAAKyG,YAAY,QAAShH,EAAO8F,QAAQ7N,aAC5D4O,EAAOE,YAAYxG,KAAKyG,YAAY,cAAehH,EAAO+F,cAC1Dc,EAAOE,YAAYxG,KAAKyG,YAAY,QAAShH,EAAO1F,QACpDuM,EAAOE,YAAYxG,KAAKyG,YAAY,UAAW9G,KAAKC,UAAU8F,KAG9DN,EAAKoB,YAAYF,GAEVlB,CACR,CAEOqB,YAAYC,EAAclQ,GAChC,MAAMmQ,EAAQP,SAASC,cAAc,SAIrC,OAHAM,EAAMrQ,KAAO,SACbqQ,EAAMD,KAAOA,EACbC,EAAMnQ,MAAQA,EACPmQ,CACR,G,oBClGH,MAAMxF,GAAa,IAAIyD,GAuEhB,SAASvK,GAAa7D,GAE3B,MADkB,yJACDoQ,KAAKpQ,EACvB,CAOcqQ,OAhFc,KAC3BlN,QAAQC,IAAI,WACZ,MAAM,cAAEhJ,GAAiBiC,KAElBiU,EAAaC,GAAkBvO,mBAA2B,CAC/DuB,MAAO,GACPO,cAAc,EACd0M,YAAa,KACbzW,KAAM,GACNgH,OAAQ,EACRmB,MAAO,EACP4I,MAAO,GACPjE,SAAU,EACV/B,QAAQ,EACRF,cAAe,YAGX6L,EAAmB9P,uBAAa+P,IACpCH,EAAe,IACVG,EACH5L,OAAQjB,GAAa6M,EAASnN,QAAUmN,EAAS5M,cAFnD,GAIC,IAEG6M,EAAiBhQ,sBAAYiQ,MAASlJ,UAE1CnP,OAAOsY,aAAaC,UAAU,MAC9B,MAAM,MAAEvN,EAAF,OAASxC,EAAT,MAAiBmB,EAAjB,SAAwB2E,EAAxB,cAAkCjC,GAAkB0L,EACpDnG,QAAkBQ,GAAW0D,aAAa9K,EAAOxC,EAAQmB,EAAO2E,EAAUjC,GAIhF,GAFA2L,EAAe,IAAKD,EAAazL,SAAS,KAErCsF,EAGH,OAFAoG,EAAe,IAAKD,EAAazL,SAAS,SAC1CkM,MAAM,kLAIJ5G,EAAUsE,YACZlW,OAAOmB,SAASqC,KAAOoO,EAAUsE,aAEjC8B,EAAe,IAAKD,EAAazL,SAAS,IAC1CkM,MAAM,wVACP,GAEA,IAAM,CAAEC,SAAS,EAAMC,UAAU,IAAU,CAACX,IAEzCY,EAAsBvQ,uBAAY,KACtCpH,EAAaC,GAAGnB,EAAOU,UAAvB,GACC,IAMH,OACE,qCACE,cAAC,GAAD,CACE8I,KAAMyO,EACNxO,aAAc2O,EACd7D,WAAY+D,IAEd,cAAC,EAAD,CACE7R,gBAAiBoS,IAEnB,cAAC,EAAD,CAAQ3V,gBAAiBnB,EAAgB,UAAY,WAVzD,E,oBC9DF,MAAM+W,GAAgB,CACpB,MAAS,CAAC,EACV,SAAY,CACVjB,KAAM,WACN1V,MAAO,UACP4W,QAAS,uCACTC,KAAM,+BACNpW,MAAO,mRACPqW,KAAM,sJACNpG,KAAM,YACNqG,iBAAkB,mCAClBC,KAAM,qCAER,MAAS,CACPtB,KAAM,2BACN1V,MAAO,UACP4W,QAAS,oCACTC,KAAM,4BACNpW,MAAO,2QACPqW,KAAM,wKACNpG,KAAM,QACNqG,iBAAkB,gCAClBC,KAAM,kCAER,QAAW,CACTtB,KAAM,iFACN1V,MAAO,UACP4W,QAAS,sCACTC,KAAM,8BACNpW,MAAQ,q6BAKRqW,KAAM,sJACNpG,KAAM,uCACNqG,iBAAkB,sCAClBC,KAAM,oCAER,MAAS,CACPtB,KAAM,SACN1V,MAAO,UACP4W,QAAS,oCACTC,KAAM,4BACNpW,MAAQ,qNACRqW,KAAM,gPACNpG,KAAM,SACNqG,iBAAkB,sCAClBC,KAAM,kCAER,OAAU,CACRtB,KAAM,gBACN1V,MAAO,UACP4W,QAAS,qCACTC,KAAM,6BACNpW,MAAQ,iUACRqW,KAAM,yJACNpG,KAAM,SACNqG,iBAAkB,iCAClBC,KAAM,oCAuTKC,OAnTY,EAAGC,cAE5B,MAAMzI,EAASkI,GAASO,GAAW,UAE5BC,EAAmBC,GAAwB5P,oBAAS,GAErD6P,EAAsBlR,uBAAY,KACtC,GAAIgR,EACF,OAAOC,GAAqB,GAE9BE,UAAUC,UAAUC,UAAU/I,EAAOiC,MAAQ,IAC7C0G,GAAqB,EAArB,GACC,CAAC3I,EAAQ0I,IAEZ,OACQ,OAAN1I,QAAM,IAANA,OAAA,EAAAA,EAAQiH,MACN,qCACE,sBAAKzV,UAAU,eAAeM,MAAO,CACnCkX,WAAY,GACZtU,QAAS,OACTC,cAAe,SACfuC,WAAY,qBACZC,SAAU,OACV8R,WAAY,QANd,UAQE,8BACE,qBAAKrX,IAAKoO,EAAOmI,QAASrT,MAAM,MAAMjD,OAAO,SAG/C,mBAAGC,MAAO,CACRoF,WAAY,kBACZC,SAAU,GACVpC,UAAW,IAHb,sHAOA,sBAAKjD,MAAO,CACVgD,MAAO,IACPoU,UAAW,SACXxU,QAAS,OACTC,cAAe,MACfK,eAAgB,SAChBmU,WAAY,UACZC,aAAc,GACdC,QAAS,GACTC,SAAU,UATZ,UAWE,qBAAKxX,MAAO,CAAEyX,YAAa,IAA3B,SACE,qBAAK3X,IAAKoO,EAAOoI,KAAMtT,MAAM,OAAOjD,OAAO,SAE7C,sBAAKC,MAAO,CACV4C,QAAS,OACTC,cAAe,SACf6U,aAAc,aACdC,aAAc,IAJhB,UAME,oBAAG3X,MAAO,CAAEmD,UAAW,OAAQF,UAAW,GAA1C,UACE,mBAAGjD,MAAO,CAAEP,MAAOyO,EAAOzO,OAA1B,SAAoCyO,EAAOiH,OAD7C,MAC0DjH,EAAOhO,SAEjE,mBAAGF,MAAO,CACRiD,UAAW,EACXE,UAAW,OACXiC,WAAY,kBACZC,SAAU,GACV8R,WAAY,OACZ1X,MAAOyO,EAAOzO,OANhB,SAQGyO,EAAOqI,OAEG,WAAZI,EAAuB,mCACtB,sBAAK3W,MAAO,CAAE4C,QAAS,OAAQC,cAAe,SAAUC,WAAY,cAApE,UACE,mBAAG9B,KAAMkN,EAAOsI,iBAAhB,SACE,qBAAK1W,IAAK,kCAAmCkD,MAAM,MAAMjD,OAAO,SAElE,sBAAKC,MAAO,CAAE4C,QAAS,OAAQG,IAAK,GAAID,WAAY,SAAUG,UAAW,IAAzE,mEAEE,qBAAKnD,IAAK,mCAAoCkD,MAAM,KAAKjD,OAAO,OAFlE,mDAIE,qBAAKD,IAAK,mCAAoCkD,MAAM,KAAKjD,OAAO,OAJlE,iEAQE,qCACJ,sBAAKC,MAAO,CACV4C,QAAS,OACTE,WAAY,SACZsC,WAAY,kBACZC,SAAU,IAJZ,6DAOE,qBAAKrF,MAAO,CACVqD,WAAY,GACZL,MAAO,IACPjD,OAAQ,GACRsX,WAAYT,EAAoB,OAAS,OACzCU,aAAc,EACd1U,QAAS,OACTE,WAAY,SACZ8U,OAAQ,WAERzX,QAAS2W,EAVX,SAYGF,EACC,mBAAG5W,MAAO,CACR2J,OAAQ,SACR4N,QAAS,EACT9X,MAAO,OACP2F,WAAY,kBACZC,SAAU,IALZ,SAQG,uEAEH,qCACE,mBAAGrF,MAAO,CACR2J,OAAQ,SACR4N,QAAS,EACTnS,WAAY,cACZC,SAAU,IAJZ,SAOG6I,EAAOiC,OAEV,qBACErQ,IAAI,uBACJkD,MAAM,KACNjD,OAAO,KACPC,MAAO,CAAEyX,YAAa,cAMhC,oBAAGzX,MAAO,CACRiD,UAAW,GACXE,UAAW,QAFb,oJAIE,mBAAGnD,MAAO,CACRP,MAAOyO,EAAOzO,MACd4D,WAAY,GAEZrC,KAAMkN,EAAOsI,iBAJf,yEAUN,qBAAKxW,MAAO,CACV4C,QAAS,OACTC,cAAe,SACfG,MAAO,KAHT,SAKE,qBAAKlD,IAAKoO,EAAOuI,KAAMzT,MAAM,MAAMjD,OAAO,iBAIhD,qBAAKL,UAAU,gBAAgBM,MAAO,CACpCkX,WAAY,GACZtU,QAAS,OACTC,cAAe,SACfuC,WAAY,qBACZC,SAAU,OACV8R,WAAY,QANd,SASE,qBAAKnX,MAAO,CACVgD,MAAO,IACPoU,UAAW,SACXC,WAAY,UACZC,aAAc,GACdE,SAAU,UALZ,SAOE,sBAAKxX,MAAO,CACV4C,QAAS,OACTC,cAAe,SACfC,WAAY,SACZyU,QAAS,GACTL,WAAY,IALd,UAOE,qBAAKpX,IAAKoO,EAAOmI,QAASrT,MAAM,MAAMjD,OAAO,OAC7C,oBAAGC,MAAO,CACRoF,WAAY,kBACZC,SAAU,GACV8R,WAAY,OACZlU,UAAW,IAJb,wDAMU,uBANV,mEASA,sBAAKjD,MAAO,CAAE4C,QAAS,QAAvB,UACE,qBAAK5C,MAAO,CAAEyX,YAAa,IAA3B,SACE,qBAAK3X,IAAKoO,EAAOoI,KAAMtT,MAAM,OAAOjD,OAAO,SAE7C,oBAAGC,MAAO,CAAEmD,UAAW,OAAQkC,SAAU,GAAIpC,UAAW,GAAxD,UACE,mBAAGjD,MAAO,CAAEP,MAAOyO,EAAOzO,OAA1B,SAAoCyO,EAAOiH,OAD7C,MAC0DjH,EAAOhO,YAGnE,mBAAGF,MAAO,CACRiD,UAAW,EACXE,UAAW,SACXiC,WAAY,kBACZC,SAAU,GACV8R,WAAY,OACZ1X,MAAOyO,EAAOzO,OANhB,SAQGyO,EAAOqI,OAEG,WAAZI,EAAuB,mCACtB,sBAAK3W,MAAO,CAAE4C,QAAS,OAAQC,cAAe,SAAUC,WAAY,UAApE,UACE,mBAAG9B,KAAMkN,EAAOsI,iBAAhB,SACE,qBAAK1W,IAAK,kCAAmCkD,MAAM,MAAMjD,OAAO,SAElE,sBAAKC,MAAO,CAAE4C,QAAS,OAAQG,IAAK,GAAID,WAAY,SAAUG,UAAW,GAAIG,aAAc,GAAIiC,SAAU,IAAzG,mEAEE,qBAAKvF,IAAK,mCAAoCkD,MAAM,KAAKjD,OAAO,OAFlE,mDAIE,qBAAKD,IAAK,mCAAoCkD,MAAM,KAAKjD,OAAO,OAJlE,iEAQE,qCACJ,sBAAKC,MAAO,CACV4C,QAAS,OACTC,cAAe,SACfC,WAAY,UAHd,UAKE,mBAAG9C,MAAO,CACRuX,QAAS,EACT5N,OAAQ,EACRvE,WAAY,kBACZC,SAAU,GACVjC,aAAc,IALhB,8DAQA,qBAAKpD,MAAO,CACVqD,WAAY,GACZL,MAAO,IACPjD,OAAQ,GACRsX,WAAYT,EAAoB,OAAS,OACzCU,aAAc,EACd1U,QAAS,OACTE,WAAY,SACZ8U,OAAQ,WAERzX,QAAS2W,EAVX,SAYGF,EACC,mBAAG5W,MAAO,CACR2J,OAAQ,SACR4N,QAAS,EACT9X,MAAO,OACP2F,WAAY,kBACZC,SAAU,IALZ,SAQG,uEAEH,qCACE,mBAAGrF,MAAO,CACR2J,OAAQ,SACR4N,QAAS,EACTnS,WAAY,cACZC,SAAU,IAJZ,SAOG6I,EAAOiC,OAEV,qBACErQ,IAAI,uBACJkD,MAAM,KACNjD,OAAO,KACPC,MAAO,CAAEyX,YAAa,cAMhC,oBAAGzX,MAAO,CACRiD,UAAW,GACXE,UAAW,SACXkC,SAAU,GACVjC,aAAc,IAJhB,qJAK6B,uBAC3B,mBAAGpD,MAAO,CACRP,MAAOyO,EAAOzO,MACd4D,WAAY,GAEZrC,KAAMkN,EAAOsI,iBAJf,sEAQJ,qBAAKxW,MAAO,CACV4C,QAAS,OACTwU,UAAW,SACXvU,cAAe,UAHjB,SAKE,qBAAK/C,IAAKoO,EAAOuI,KAAMzT,MAAM,MAAMjD,OAAO,qBAOlD,4BAjSN,EC+hBa8X,OAtmBU,EAAG1H,OAAM5L,KAAIhF,YAAWoX,cAE/C,MAAOmB,EAASC,GAAc9Q,oBAAS,IAChC2P,EAAmBC,GAAwB5P,oBAAS,GAErD6P,EAAsBlR,uBAAY,KACtC,GAAIgR,EACF,OAAOC,GAAqB,GAE9BE,UAAUC,UAAUC,UAAU9G,GAAQ,IACtC0G,GAAqB,EAArB,GACC,CAAC1G,EAAMyG,IAEJoB,EAAcpS,uBAAY,KAC9B,GAAW,OAAPrB,EAAa,OAAOyR,MAAM,8HAC9B,MAAMiC,EAAoB,GAAE3a,EAAOC,oBACnCC,OAAOmB,SAASqC,KAAQ,GAAEiX,KAAoB1T,sBAAuB4L,GAArE,GACC,CAACA,EAAM5L,IAMV,OAJAsD,qBAAU,KACRkQ,GAAW,EAAX,IAIA,qCACE,sBAAKrY,UAAU,eAAeM,MAAO,CACnCkY,SAAU,WACVC,IAAK,EACLC,QAASN,EAAU,EAAI,EACvBxT,OAAQ,IACR+T,WAAY,qBACZjB,UAAW,SACXpU,MAAO,OACPH,cAAe,SACfrC,gBAAiB,OACjBmJ,OAAQ,SACRxG,UAAW,SACXmV,cAAe,IAZjB,UAcE,qBAAKtY,MAAO,CAAEuX,QAAS,IAAvB,SACE,qBAAKzX,IAAI,oDAAoDkD,MAAM,KAAKjD,OAAO,SAEjF,sBAAKC,MAAO,CAAEsE,OAAQ,EAAGtB,MAAO,IAAKoU,UAAW,UAAhD,UACE,qBACEtX,IAAI,yCACJkD,MAAM,MACNjD,OAAO,QAEM,OAAdR,EACC,6BACA,oBAAGS,MAAO,CACRkY,SAAU,WACV7U,WAAY,IACZJ,WAAY,IACZD,MAAO,IACPqC,SAAU,OACV8R,WAAY,OACZhU,UAAW,SACX1D,MAAO,WART,0LAWgC,SAAdF,EAAuB,oDAAc,mCAXvD,IAWkE,uBAXlE,qEAiBJ,sBAAKS,MAAO,CACViD,WAAY,IACZmU,UAAW,SACX5W,gBAAiB,UACjBwC,MAAO,KACPsU,aAAc,GACdE,SAAU,SACVN,WAAY,KAPd,UASE,mBAAGxX,UAAU,YACXM,MAAO,CACL2J,OAAQ,SACR4N,QAAS,GAHb,uIAQA,qBAAKvX,MAAO,CACVgD,MAAO,IACPjD,OAAQ,GACR4J,OAAQ,sBACR0N,WAAYT,EAAoB,UAAY,OAC5CU,aAAc,GACd1U,QAAS,OACTE,WAAY,SACZ8U,OAAQ,WAERzX,QAAS2W,EAVX,SAYGF,EACC,mBAAG5W,MAAO,CACR2J,OAAQ,SACR4N,QAAS,EACT9X,MAAO,OACP8Y,WAAY,QAJd,SAOG,uEAEH,qCACE,mBAAG7Y,UAAU,YACXM,MAAO,CACL2J,OAAQ,SACR4N,QAAS,GAHb,SAMGpH,GAAQ,KAEX,qBACErQ,IAAI,uBACJkD,MAAM,KACNjD,OAAO,KACPC,MAAO,CAAEyX,YAAa,WAK9B,oBAAGzX,MAAO,CAAEwY,eAAgB,OAAQ/Y,MAAO,QAAUuB,KAAK,4BAA1D,4HACuB,qDAEvB,sBAAKhB,MAAO,CACVgD,MAAO,IACPjD,OAAQ,GACR4J,OAAQ,YACR2N,aAAc,EACdmB,OAAQ,iBACR7V,QAAS,OACTM,eAAgB,SAChBJ,WAAY,SACZ8U,OAAQ,WAERzX,QAAS6X,EAXX,UAaE,qBACElY,IAAI,wBACJkD,MAAM,KACNjD,OAAO,OAET,mBAAGC,MAAO,CAAEqD,WAAY,GAAxB,SACG,6EAeP,mBAAGrD,MAAO,CACRoF,WAAY,kBACZC,SAAU,IAFZ,0GAMA,sBAAKrF,MAAO,CACV4C,QAAS,OACTC,cAAe,MACfK,eAAgB,UAHlB,UAKE,sBAAKlD,MAAO,CACV4C,QAAS,OACTC,cAAe,SACf6U,aAAc,aACdC,aAAc,IAJhB,UAME,sBAAK3X,MAAO,CACV4C,QAAS,OACTC,cAAe,MACfI,UAAW,IAHb,UAKE,qBACEnD,IAAK,yBACLkD,MAAO,GACPjD,OAAQ,GACRC,MAAO,CACLiD,UAAW,GACX0U,aAAc,MAGlB,oBAAGjY,UAAU,kBAAkBM,MAAO,CAAEmD,UAAW,QAAnD,8FACkB,uBAChB,mBAAGnD,MAAO,CAAEP,MAAO,WACjBuB,KAAK,4BADP,iCAC0D,uBAH5D,mIAQF,sBAAKhB,MAAO,CACV4C,QAAS,OACTC,cAAe,OAFjB,UAIE,qBACE/C,IAAK,yBACLkD,MAAO,GACPjD,OAAQ,GACRC,MAAO,CACLiD,UAAW,GACX0U,aAAc,MAGlB,oBAAGjY,UAAU,kBAAkBM,MAAO,CAAEmD,UAAW,QAAnD,+LACmC,uBADnC,2LAEoC,uBAFpC,8HAQF,sBAAKnD,MAAO,CACV4C,QAAS,OACTC,cAAe,OAFjB,UAKE,qBACE/C,IAAK,uBACLkD,MAAO,GACPjD,OAAQ,GACRC,MAAO,CACLiD,UAAW,GACX0U,aAAc,MAGlB,oBAAGjY,UAAU,kBAAkBM,MAAO,CAAEmD,UAAW,QAAnD,2IACiC,uBADjC,qKAEkC,uBAFlC,8HAGwC,uBAHxC,yMAIwC,uBAJxC,qGASF,sBAAKnD,MAAO,CACV4C,QAAS,OACTC,cAAe,OAFjB,UAIE,qBACE/C,IAAK,wBACLkD,MAAO,GACPjD,OAAQ,GACRC,MAAO,CACLiD,UAAW,GACX0U,aAAc,MAGlB,oBAAGjY,UAAU,kBAAkBM,MAAO,CAAEmD,UAAW,QAAnD,qMACoC,uBADpC,8LAEoC,uBAFpC,4GAIE,uBAAMnD,MAAO,CAAEP,MAAO,UAAW4D,WAAY,GAA7C,yFACkB,uBADlB,qLASN,qBAAKrD,MAAO,CACV4C,QAAS,OACTC,cAAe,UAFjB,SAIE,qBACE/C,IAAmB,SAAdP,EAAuB,iCAAmC,sCAC/DyD,MAAM,MACNjD,OAAO,aAKb,cAAC,GAAD,CAAoB4W,QAASA,IAE7B,sBAAK3W,MAAO,CACV4C,QAAS,OACTC,cAAe,SACfG,MAAO,IACPoU,UAAW,SACXtU,WAAY,SACZG,UAAW,GACXG,aAAc,IAPhB,UASE,qBAAKJ,MAAO,GAAIjD,OAAQ,GAAID,IAAK,wBACjC,oBAAGJ,UAAU,aAAaM,MAAO,CAAEP,MAAO,OAAQ4F,SAAU,IAA5D,sFACe,uBADf,kCAEkB,uBAAM,uBACtB,mBAAGrE,KAAK,6BAA6BtB,UAAU,aAAaM,MAAO,CAAEwY,eAAgB,QAArF,gCAGA,uBAAM,0BAER,sBAAKxY,MAAO,CAAE4C,QAAS,QAAvB,UACE,mBAAGlD,UAAU,aAAasB,KAAK,wKAA/B,sBAGA,mBAAGtB,UAAU,aAAasB,KAAK,0IAA/B,iCAQN,sBAAKtB,UAAU,gBAAgBM,MAAO,CACpCkY,SAAU,WACVC,IAAK,EACLC,QAASN,EAAU,EAAI,EACvBxT,OAAQ,IACR+T,WAAY,qBACZjB,UAAW,SACXpU,MAAO,OACPH,cAAe,SACfrC,gBAAiB,OACjBmJ,OAAQ,SACRxG,UAAW,SACXmV,cAAe,IAZjB,UAcE,sBAAKtY,MAAO,CACV4C,QAAS,OACTC,cAAe,SACfC,WAAY,SACZyU,QAAS,IAJX,UAME,qBAAKzX,IAAI,oDAAoDkD,MAAM,KAAKjD,OAAO,OAC/E,oBAAGC,MAAO,CACRuX,QAAS,EACT5N,OAAQ,EACR1G,UAAW,GACXoC,SAAU,GACV5F,MAAO,mBALT,8FAOyB,uBAPzB,wJAWF,sBAAKO,MAAO,CAAEsE,OAAQ,EAAGtB,MAAO,IAAKoU,UAAW,UAAhD,UACE,qBACEtX,IAAI,gDACJkD,MAAM,MACNjD,OAAO,QAEM,OAAdR,EACC,6BACA,oBAAGS,MAAO,CACRkY,SAAU,WACV7U,WAAY,GACZJ,WAAY,IACZD,MAAO,IACPqC,SAAU,OACV8R,WAAY,OACZhU,UAAW,SACX1D,MAAO,WART,0LAWgC,SAAdF,EAAuB,oDAAc,mCAXvD,IAWkE,uBAXlE,qEAiBJ,sBAAKS,MAAO,CACViD,WAAY,IACZmU,UAAW,SACX5W,gBAAiB,UACjBwC,MAAO,OACPsU,aAAc,GACdE,SAAU,SACVN,WAAY,KAPd,UASE,oBAAGxX,UAAU,YACXM,MAAO,CACL2J,OAAQ,SACR4N,QAAS,EACTlS,SAAU,IAJd,yEAOY,uBAPZ,mEASA,qBAAKrF,MAAO,CACVgD,MAAO,IACPjD,OAAQ,GACR4J,OAAQ,sBACR0N,WAAYT,EAAoB,UAAY,OAC5CU,aAAc,GACd1U,QAAS,OACTE,WAAY,SACZ8U,OAAQ,WAERzX,QAAS2W,EAVX,SAYGF,EACC,mBAAG5W,MAAO,CACR2J,OAAQ,SACR4N,QAAS,EACT9X,MAAO,OACP8Y,WAAY,QAJd,SAOG,uEAEH,sBAAKvY,MAAO,CACV4C,QAAS,OACT8V,KAAM,EACNxV,eAAgB,gBAChBJ,WAAY,UAJd,UAME,mBAAGpD,UAAU,YACXM,MAAO,CACL2J,OAAQ,EACR4N,QAAS,EACT3N,YAAa,IAJjB,SAOGuG,GAAQ,KAEX,qBACErQ,IAAI,uBACJkD,MAAM,KACNjD,OAAO,KACPC,MAAO,CAAEyX,YAAa,WAK9B,oBAAGzX,MAAO,CAAEwY,eAAgB,OAAQ/Y,MAAO,QAAUuB,KAAK,4BAA1D,4HACuB,uBACrB,qDAEF,sBAAKhB,MAAO,CACVgD,MAAO,IACPjD,OAAQ,GACR4J,OAAQ,YACR2N,aAAc,EACdmB,OAAQ,iBACR7V,QAAS,OACTM,eAAgB,SAChBJ,WAAY,SACZ8U,OAAQ,WAERzX,QAAS6X,EAXX,UAaE,qBACElY,IAAI,wBACJkD,MAAM,KACNjD,OAAO,OAET,mBAAGC,MAAO,CAAEqD,WAAY,GAAxB,SACG,6EAUP,mBAAGrD,MAAO,CACRoF,WAAY,kBACZC,SAAU,IAFZ,0GAMA,sBAAKrF,MAAO,CACV4C,QAAS,OACTC,cAAe,UAFjB,UAIE,sBAAK7C,MAAO,CACV4C,QAAS,OACTC,cAAe,UAFjB,UAIE,sBAAK7C,MAAO,CACV4C,QAAS,OACTC,cAAe,SACfC,WAAY,UAHd,UAKE,qBACEhD,IAAK,yBACLkD,MAAO,GACPjD,OAAQ,KAEV,oBAAGL,UAAU,kBAAb,8FACkB,uBAChB,mBAAGM,MAAO,CAAEP,MAAO,WACjBuB,KAAK,4BADP,iCAC0D,uBAH5D,4EAIe,uBAJf,yDASF,sBAAKhB,MAAO,CACV4C,QAAS,OACTC,cAAe,SACfC,WAAY,SACZG,UAAW,IAJb,UAME,qBACEnD,IAAK,yBACLkD,MAAO,GACPjD,OAAQ,KAEV,oBAAGL,UAAU,kBAAb,gJACyB,uBADzB,mIAE2B,uBAF3B,gHAGqB,uBAHrB,8HAQF,sBAAKM,MAAO,CACV4C,QAAS,OACTC,cAAe,SACfC,WAAY,SACZG,UAAW,IAJb,UAME,qBACEnD,IAAK,uBACLkD,MAAO,GACPjD,OAAQ,KAEV,oBAAGL,UAAU,kBAAb,2IACiC,uBADjC,kJAE8B,uBAF9B,uIAGkC,uBAHlC,yIAIoC,uBAJpC,gLASF,sBAAKM,MAAO,CACV4C,QAAS,OACTC,cAAe,SACfC,WAAY,SACZG,UAAW,IAJb,UAME,qBACEnD,IAAK,wBACLkD,MAAO,GACPjD,OAAQ,KAEV,oBAAGL,UAAU,kBAAb,0JAC4B,uBAD5B,qIAE2B,uBAF3B,qGAGoB,uBAHpB,4GAIsB,uBACpB,uBAAMM,MAAO,CAAEP,MAAO,WAAtB,0IAC2B,uBAD3B,oIAQN,qBAAKO,MAAO,CACV4C,QAAS,OACTC,cAAe,SACfuU,UAAW,SACXnU,UAAW,IAJb,SAME,qBACEnD,IAAmB,SAAdP,EAAuB,iCAAmC,sCAC/DyD,MAAM,MACNjD,OAAO,aAKb,cAAC,GAAD,CAAoB4W,QAASA,IAE7B,sBAAK3W,MAAO,CACV4C,QAAS,OACTC,cAAe,SACfG,MAAO,IACPoU,UAAW,SACXtU,WAAY,SACZG,UAAW,GACXG,aAAc,IAPhB,UASE,qBAAKJ,MAAO,GAAIjD,OAAQ,GAAID,IAAK,wBACjC,oBAAGJ,UAAU,aAAaM,MAAO,CAAEP,MAAO,OAAQ4F,SAAU,IAA5D,sFACe,uBADf,kCAEkB,uBAAM,uBACtB,mBAAGrE,KAAK,6BAA6BtB,UAAU,aAAaM,MAAO,CAAEwY,eAAgB,QAArF,gCAGA,uBAAM,0BAER,sBAAKxY,MAAO,CAAE4C,QAAS,QAAvB,UACE,mBAAGlD,UAAU,aAAasB,KAAK,wKAA/B,sBAGA,mBAAGtB,UAAU,aAAasB,KAAK,0IAA/B,mCAnkBV,EC/BF,MAAM2X,GAAmB,CACvBC,MAAM,EACNC,UAAU,EACVC,cAAeC,EAAQ,IACvBC,iBAAkB,CAChBC,oBAAqB,kBAInBC,GAAiBH,EAAQ,IACzBI,GAAuBJ,EAAQ,KAE/BK,GAAgBL,EAAQ,KACxBM,GAAsBN,EAAQ,KAC9BO,GAAoBP,EAAQ,KAC5BQ,GAA0BR,EAAQ,KA0FzBS,OAxFmB,KAChC,MAAMC,EAAWjc,OAAOkc,OAAOC,WAAa,IAEtCzL,EAAS,IAAI0L,gBAAgBpc,OAAOmB,SAAS0D,QAC7C8N,EAAOjC,EAAOrM,IAAI,QAClB0C,EAAK2J,EAAOrM,IAAI,MAChBtC,EAAY2O,EAAOrM,IAAI,aACvB8U,EAAUzI,EAAOrM,IAAI,YACpBgY,EAAaC,GAAkB7S,oBAAS,IACxC8S,EAAmBC,GAAwB/S,oBAAS,IACpDgT,EAAsBC,GAA2BjT,oBAAS,GAE3DkT,EAAkBvU,uBAAY,KAC7BiU,GACLG,GAAqB,EAArB,GACC,CAACH,IAEJ,OACE,sBAAK7Z,MAAO,CACVkY,SAAU,WACVb,WAAY,OACZrU,MAAO,OACPjD,OAAQ,OACR6C,QAAS,OACTC,cAAe,SACfK,eAAgB,UAPlB,UASI6W,EAuBA,qBACE/Z,MAAO,CACLgD,MAAO,OACPjD,OAAQ,OACRuE,OAAQ,KAJZ,SAOE,cAAC,KAAD,CACE8V,wBAAsB,EACtB3X,QAAS,IACJkW,GAEHG,cAAeW,EACE,SAAdla,EAAuB8Z,GAAsBE,GAC/B,SAAdha,EAAuB6Z,GAAgBE,IAG5Ce,eAAgB,CACd,CACEC,UAAW,WACXC,SAAU,IAAML,GAAwB,SA1ChD,qBAAKla,MAAO,CACVsE,OAAQ,IACRsT,OAAQ,UACR5U,MAAO,OACPjD,OAAQ,QAERI,QAASga,EANX,SAQE,cAAC,KAAD,CACEC,wBAAsB,EACtB3X,QAAS,IACJkW,GACHG,cAAeW,EAAWN,GAAuBD,IAEnDmB,eAAgB,CACd,CACEC,UAAW,WACXC,SAAU,IAAMT,GAAe,SA+BxCG,GACC,cAAC,GAAD,CACEnC,SAAO,EACP3H,KAAMA,EACN5L,GAAIA,EACJhF,UAAWA,EACXoX,QAASA,MAjEjB,ECAa6D,OA9Bc,IAGzB,8BACE,eAAC,IAAD,WACE,cAAC,IAAD,CACEC,OAAK,EAACC,KAAK,IACXC,UAAWrF,KAEb,cAAC,IAAD,CACEmF,OAAK,EAACC,KAAK,eACXC,UAAWvY,IAEb,cAAC,IAAD,CACEqY,OAAK,EAACC,KAAK,oBACXC,UAAWnB,U,OCpBrB,MAAMtG,GAAmB,GAAE5V,EAAOC,oBAanBqd,OANf,MACEzL,SAASrI,GACP,OAAOwH,GAAYK,KAAM,GAAEuE,cAA4BpM,EACxD,GCXH,MAAMwI,GAA0C,CAC9C,KAAM,yIACN,KAAM,qGACN,KAAM,2GACN,KAAM,oLACN,KAAM,sLCMR,MAGMM,GAAa,IDDnB,MAAmC,cAAD,KACxBJ,IAAM,IAAIoL,EADc,CAGhC,uBAAMC,CAAkBC,GAAuD,IAAD,EAE5E,MAAMvT,QAAiBkH,KAAKe,IAAIL,SAAS2L,GAEzC,MAAO,CACLjN,QAAStG,EAASsG,QAClB6B,aAAY,UAAEJ,GAAgB/H,EAASoG,uBAA3B,aAA+C1E,EAE9D,GCuJY8R,OA/JkB,KAC/B,MAAOC,EAAgBC,GAAqBhU,mBAA4B,UACjEkJ,EAAMC,GAAWnJ,mBAAS,KAC1B8I,EAAOC,GAAY/I,mBAAS,KAC5BuB,EAAO0S,GAAYjU,mBAAS,KAC5BkU,EAAqBC,GAA0BnU,oBAAS,IACxD+G,EAAOuC,GAAYtJ,mBAAwB,MAC5CoU,EAAUC,cAEVC,EAAe3V,uBAAY,KAI/B,IAFY,eACWyP,KAAKlF,IACTA,EAAK/G,OAAS,EAE/B,OADAmH,EAAS,sGACF,EAGT,GAAuB,UAAnByK,GACF,IAAKlS,GAAaN,GAEhB,OADA+H,EAAS,2DACF,OAIT,GADAnI,QAAQC,IAAI,QAAS0H,GACjBA,EAAM3G,OAAS,GAAK2G,EAAM3G,OAAS,GAErC,OADAmH,EAAS,qIACF,EAIX,OADA6K,GAAuB,IAChB,CAAP,GACC,CAACJ,EAAgB7K,EAAMJ,EAAOvH,EAAO+H,IAElCiL,EAAmB5V,uBAAY+G,UACnC,GAAI4O,IAAgB,CAAC,IAAD,EAClB,MAAMT,EAA6B,CAAE1L,UAAWe,GAEzB,UAAnB6K,EACFF,EAAqB,MAAYtS,EAEjCsS,EAAqB,MAAY/K,EAGnC,MAAMoB,QAAuBvB,GAAWiL,kBAAkBC,GAE1D,GAAI3J,EAAetD,QAEjB,YADAwN,EAAQI,KAAK,cAIflL,EAAQ,UAACY,EAAezB,oBAAhB,QAAgC,0GACzC,IACA,CAACsL,EAAgB7K,EAAMJ,EAAOvH,EAAO+H,IAElCmL,EAAY9V,uBAAY,KAC5BpH,EAAaC,GAAGnB,EAAOQ,UAAvB,GACC,IAEG6d,EAAa/V,uBAChBC,IACC,MAAM7G,EAAO6G,EAAMtC,OAAO0B,MAAM8L,QAAQ,MAAO,IAAIC,cACnDZ,EAAQpR,GACRuR,EAAS,KAAT,GACC,CAACH,EAASG,IAETU,EAAcrL,uBACjBgW,IACC5L,EAAS4L,GACTrL,EAAS,KAAT,GACC,CAACP,EAAUO,IAEVsL,EAAcjW,uBACjB4C,IACC0S,EAAS1S,GACT+H,EAAS,KAAT,GACC,CAAC2K,EAAU3K,IAEVuL,EAAuBlW,uBAAab,IACxCkW,EAAkBlW,GAClBqW,GAAuB,GACvB7K,EAAS,KAAT,GACC,IAGH,OACE,sBAAK7Q,UAAU,sBAAf,UACE,qBAAKA,UAAU,oBAAoBI,IA5FnB,6BA6FhB,sBAAKJ,UAAU,sBAAf,UACE,mBAAGA,UAAU,sBAAb,2HACA,sBAAKA,UAAU,yBAAf,UACE,wBACEA,UACqB,UAAnBsb,EAA6B,qCAAuC,+BAEtE7a,QAAS,IAAM2b,EAAqB,SAJtC,mBAOA,wBACEpc,UACqB,UAAnBsb,EAA6B,qCAAuC,+BAEtE7a,QAAS,IAAM2b,EAAqB,SAJtC,2DAQF,qBAAKpc,UAAU,qBAAf,gfAIA,sBAAKA,UAAU,qBAAf,UACE,8JADF,wkBAKA,sBAAKA,UAAU,2BAAf,UACE,qBAAKA,UAAU,sBAAf,SACsB,UAAnBsb,EACC,cAAC,IAAD,CACEe,mBAAiB,EACjBzK,QAAS,KACTrM,MAAO8K,EACPwB,WAAY,CAAEC,UAAU,EAAMC,WAAW,GACzC9M,SAAUsM,EACVS,aAAa,KAEf,cAAC,EAAD,CACEhS,UAAU,2BACV+E,YAAY,oGACZC,aAAc8D,EACd7D,SAAWsJ,GAAM4N,EAAY5N,EAAE1K,OAAO0B,WAI5C,qBAAKvF,UAAU,sBAAf,SACE,uBAAO+E,YAAY,mDAAWE,SAAUgX,EAAY1W,MAAOkL,EAAMtL,UAAW,EAAGC,UAAW,OAE5F,sBAAK9E,MAAO,CAAE4J,YAAa,GAAI0O,cAAe,GAAIrV,WAAY,IAA9D,UACE,cAAC,EAAD,CAAgB/C,MAAM,iHAAuB+E,MAAOkW,EAAqBxW,SAAU4W,IAEjFvN,GAAS,mBAAGhO,MAAO,CAAEP,MAAO,OAAnB,SAA6BuO,OAG1C,qBAAKtO,UAAU,sBAAf,SACE,cAAC,EAAD,CAAcQ,MAAM,2EAAeC,QAASqb,EAAkBnb,UAAW8a,SAG7E,sBAAKzb,UAAU,oBAAf,UACE,qBAAKA,UAAU,wBAAwBI,IAxJnB,uBAyJpB,qBAAKJ,UAAU,0BAAf,SACE,cAAC,EAAD,CAAcQ,MAAM,0IAA4BC,QAASub,YAI/D,cAAC,EAAD,MArEJ,E,oBClEaM,OA7BiB,KAC9B,MAAMC,EAAiBrW,uBAAY,KACjCpI,OAAOmB,SAASqC,KAAO,uKAAvB,GACC,IAEGkb,EAAqBtW,uBAAY,KACrCpI,OAAOmB,SAASqC,KAAO,yIAAvB,GACC,IAEH,OACE,sBAAKtB,UAAW8B,KAAOiF,KAAvB,UACE,qBAAK/G,UAAW8B,KAAO2a,QAASrc,IAdhB,6BAehB,sBAAKJ,UAAW8B,KAAO4a,WAAvB,UACE,qBAAK1c,UAAW8B,KAAO6a,cAAevc,IAfxB,wBAgBd,mBAAGJ,UAAW8B,KAAO8a,UAArB,4KACA,mBAAG5c,UAAW8B,KAAOoF,KAArB,slBAKF,sBAAKlH,UAAW8B,KAAO+a,QAAvB,UACE,cAAC,EAAD,CAAc7c,UAAW8B,KAAOgb,OAAQtc,MAAO,mEAAkBC,QAAS8b,IAC1E,cAAC,EAAD,CAAcvc,UAAW8B,KAAOgb,OAAQtc,MAAO,uEAAsBC,QAAS+b,OAEhF,cAAC,EAAD,MAfJ,ECMaO,OAlBc,IAGzB,8BACE,eAAC,IAAD,WACE,cAAC,IAAD,CACEhC,OAAK,EAACC,KAAK,IACXC,UAAWI,KAEb,cAAC,IAAD,CACEL,KAAK,aACLC,UAAWqB,U,sCC+BNU,OArC0B,EAAGzX,QAAO,OAAQN,WAAU,aACnE,MAAMgY,EAAe/W,uBAClBC,IACC,MAAMU,EAAWV,EAAMW,cAAcvB,MACjCsB,IAAatB,GACfN,EAAS4B,EACV,GAEH,CAAC5B,EAAUM,IAGb,OACE,sBAAKvF,UAAW8B,IAAOiF,KAAvB,UACE,eAAC,IAAD,CAAO/G,UAAW8B,IAAOkF,UAAzB,UACE,cAAC,IAAD,CACEhH,UAAW8B,IAAOmF,WAClB1B,MAAM,OACNC,QAAmB,SAAVD,EACTkQ,KAAK,iBACLxQ,SAAUgY,IAEZ,sBAAMjd,UAAW8B,IAAOoF,KAAxB,sGAEF,eAAC,IAAD,CAAOlH,UAAW8B,IAAOkF,UAAzB,UACE,cAAC,IAAD,CACEhH,UAAW8B,IAAOmF,WAClB1B,MAAM,OACNC,QAAmB,SAAVD,EACTkQ,KAAK,iBACLxQ,SAAUgY,IAEZ,sBAAMjd,UAAW8B,IAAOoF,KAAxB,kGApBN,EC4JagW,OAhKkD,EAAG9V,OAAM3G,UAAS4G,mBACjF,MAAOI,EAAO0E,GAAY5E,mBACxB,CACE0E,MAAO,EACPY,SAAU,IACVT,SAAU,GACVE,kBAAmB,GACnBE,QAAS,EACTM,MAAO,KAILqQ,EAAoBjX,uBAAagW,IACrC7U,EAAa,IACRD,EACHiJ,MAAO6L,GAFT,GAIC,CAAC9U,EAAMC,IAEJwB,EAAoB3C,uBAAaC,IACrCkB,EAAa,IACRD,EACH0B,MAAO3C,EAAMtC,OAAO0B,OAFtB,GAIC,CAAC6B,EAAMC,IAEJ+V,EAAsBlX,uBAAaC,IACvCkB,EAAa,IACRD,EACHiW,YAAalX,EAAMtC,OAAO0B,OAF5B,GAIC,CAAC6B,EAAMC,IAEJiW,EAAkBpX,uBAAaC,IACnCkB,EAAa,IACRD,EACHmW,IAAKpX,EAAMtC,OAAO0B,OAFpB,GAIC,CAAC6B,EAAMC,IAEJmW,EAAwBtX,uBAAagW,IACzC7U,EAAa,IACRD,EACHqW,UAAWvB,GAFb,GAIC,CAAC9U,EAAMC,IAEJqW,EAAsBxX,uBAAaC,IACvCkB,EAAa,IACRD,EACHuW,aAAcxX,EAAMtC,OAAO0B,OAF7B,GAIC,CAAC6B,EAAMC,IAEJuE,EAAW1F,uBAAagL,IAC5B/E,EAAS+E,GACT7J,EAAa,IACRD,EACHwW,kBAAmB1M,EAAUjF,MAC7B4R,qBAAsB3M,EAAUpE,MAChCgR,mBAAoB5M,EAAUrE,SAAWqE,EAAU1E,SAAW0E,EAAUjF,MACxEG,SAAU8E,EAAU9E,SACpBE,kBAAmB4E,EAAU5E,mBAN/B,GAQC,CAAClF,EAAMC,IAEJ0W,EAAwB7X,uBAAaC,IACzC,MACMU,EAAWV,EAAMtC,OAAO0B,MAAM+L,cADT,aAGJqE,KAAK9O,IAC1BQ,EAAa,IACRD,EACHyM,UAAWhN,GAEd,GACA,CAACO,EAAMC,IAEJ2W,EAAwB9X,uBAAaW,IACzCQ,EAAa,IACRD,EACH6W,UAAWpX,GAFb,GAKC,CAACO,EAAMC,IAGV,OACE,sBAAKrH,UAAW8B,KAAOoc,gBAAvB,UACE,gCACE,qBAAKle,UAAW8B,KAAOqc,yBAAvB,SACE,mBAAGne,UAAW8B,KAAOsc,gBAArB,8RAEF,qBAAKpe,UAAW8B,KAAOuc,WAAvB,SACE,cAAC,IAAD,CAAYzM,QAAS,KAAMrM,MAAO6B,EAAKiJ,MAAOwB,WAAY,CAAEC,UAAU,EAAMC,WAAW,GAAQ9M,SAAUkY,EAAmBnL,aAAa,OAE3I,cAAC,EAAD,CAAa3M,KAAK,QAAQrF,UAAW8B,KAAO4S,MAAOxP,eAAe,QAAQH,YAAY,6HAAyBE,SAAU4D,IACzH,mBAAG7I,UAAW8B,KAAOwc,yBAArB,mQACA,sBAAKte,UAAW8B,KAAOyc,sBAAvB,UACE,sBAAKve,UAAW8B,KAAO0c,0BAAvB,UACE,mBAAGxe,UAAW8B,KAAO2c,oBAArB,6FACA,mBAAGze,UAAW8B,KAAO4c,qBAArB,iFACA,mBAAG1e,UAAW8B,KAAO6c,eAArB,wCACGlX,EAAM2E,UAAY,mBAAGpM,UAAW8B,KAAO6c,eAArB,sGAClBlX,EAAM6E,mBAAqB,mBAAGtM,UAAW8B,KAAO6c,eAArB,iIAC9B,mBAAG3e,UAAW8B,KAAO6c,eAArB,2FAEF,sBAAK3e,UAAW8B,KAAO8c,2BAAvB,UACE,cAAC,EAAD,CAAUhT,SAAUA,EAAUC,mBAAiB,EAACC,sBAAoB,IACpE,sBAAK9L,UAAW8B,KAAO+c,+BAAvB,UACE,oBAAG7e,UAAW8B,KAAO6c,eAArB,UACGlX,EAAMoF,SAASoF,eAAe,UAAY,EAD7C,IACgD,sBAAMjS,UAAU,YAAhB,yBAE7CyH,EAAM2E,UAAY,oBAAGpM,UAAW8B,KAAO6c,eAArB,cAAuClX,EAAM2E,SAA7C,SAClB3E,EAAM6E,mBAAqB,oBAAGtM,UAAY,GAAE8B,KAAO6c,kBAAkB7c,KAAOgd,mBAAjD,cAAuErX,EAAM6E,kBAA7E,OAC9B,oBAAGtM,UAAW8B,KAAO6c,eAArB,YACKlX,EAAMoF,SAAWpF,EAAM+E,SAAW/E,EAAMwE,OAAOgG,eAAe,UAAY,EAD/E,IACkF,sBAAMjS,UAAU,YAAhB,gCAKxF,sBAAKA,UAAW8B,KAAO4S,MAAvB,UACE,uBACE1U,UAAW8B,KAAOid,eAClBha,YAAY,mDACZQ,MAAO6B,EAAKyM,UACZ5O,SAAU8Y,EACV5Y,UAAW,EACXC,UAAW,KAEb,mBAAGpF,UAAW8B,KAAOwc,yBAArB,0SAGJ,sBAAKte,UAAW8B,KAAOkd,iBAAvB,UAEE,cAAC,GAAD,CAAgBzZ,MAAO6B,EAAK6W,UAAWhZ,SAAU+Y,IAE5B,SAAnB5W,EAAK6W,WACL,cAAC,EAAD,CAAa5Y,KAAK,OAAOrF,UAAW8B,KAAO4S,MAAOxP,eAAe,QAAQH,YAAY,oGAAoBE,SAAUmY,EAAqBjY,UAAW,EAAGC,UAAW,MAC9I,SAAnBgC,EAAK6W,WACL,cAAC,EAAD,CAAa5Y,KAAK,OAAOrF,UAAW8B,KAAO4S,MAAOxP,eAAe,QAAQH,YAAY,qBAAME,SAAUqY,EAAiBnY,UAAW,GAAIC,UAAW,KAC7H,SAAnBgC,EAAK6W,WAAyB,qBAAKje,UAAW8B,KAAOuc,WAAvB,SAC9B,cAAC,IAAD,CAAY9Y,MAAO6B,EAAKqW,UAAW5L,WAAY,CAAEC,UAAU,GAAQ7M,SAAUuY,EAAuBxL,aAAa,GAAGjN,YAAY,4FAE7G,SAAnBqC,EAAK6W,WACL,cAAC,EAAD,CAAa5Y,KAAK,OAAOrF,UAAW8B,KAAO4S,MAAOxP,eAAe,QAAQH,YAAY,oGAAoBE,SAAUyY,EAAqBvY,UAAW,EAAGC,UAAW,KAEnK,qBAAK9E,MAAO,CAAEiD,UAAW,GAAIG,aAAc,IAA3C,SACE,cAAC,EAAD,CAAclD,MAAO4G,EAAKgD,QAAU,4DAAiB,6KAAkC3J,QAASA,EAASE,UAAWyG,EAAKiD,WAG3H,oBAAGrK,UAAW8B,KAAOmd,gBAArB,UACG,6LACD,mBAAGjf,UAAU,iBAAiBsB,KAAM1D,EAAOgB,WAAYiF,OAAO,SAA9D,iHAlER,ECnEaqb,OAzB+B,EAAG9X,OAAM+K,aAAY9K,kBAE/D,sBAAKrH,UAAW8B,KAAOiF,KAAvB,UACE,qBAAK/G,UAAW8B,KAAO2Q,gBACvB,sBAAKzS,UAAW8B,KAAOgR,UAAvB,UACE,qBAAK9S,UAAW8B,KAAOiR,oBACvB,qBAAK/S,UAAW8B,KAAOkR,cAAvB,SACE,cAAC,GAAD,CAAqB5L,KAAMA,EAAMC,aAAcA,EAAc5G,QAAS0R,MAExE,mBAAGnS,UAAW8B,KAAOmR,WAAY3R,KAAK,WAAtC,qGACA,sBAAKtB,UAAW8B,KAAOoR,cAAvB,UACE,mBAAGlT,UAAW8B,KAAOqR,UAArB,uIACA,mBAAGnT,UAAW8B,KAAOuR,eAArB,uyBAMJ,qBAAKrT,UAAW8B,KAAO8Q,yBAAvB,SACE,qBAAK5S,UAAW8B,KAAO+Q,uB,OCjB/B,MAAM3C,GAAa,ICanB,MAA0C,cAAD,KAC/BJ,IAAM,IAAI2D,EADqB,CAGvC,kBAAMG,CAAapF,GACjB,MAAMqF,QAAkB9E,KAAK2E,gBAAgBlF,GAC7C,OAAKqF,IAAkB,CAExB,CAED,qBAAcH,CAAgBlF,GAC5B,MAAM3G,QAAiBkH,KAAKe,IAAI4D,gBAAgB,CAC9CI,aAAa,EACb3G,OAAQqB,EAAOyP,UACflK,YAAavF,EAAOoP,kBACpBte,KAAMkP,EAAOqF,gBAAatK,EAC1B8G,MAAO7B,EAAO6B,MACdvH,MAAO0F,EAAO1F,MACdxC,OAAQkI,EAAOqP,qBACfpW,MAAO+G,EAAOsP,kBACd1R,SAAUoC,EAAOpC,SACjB+S,oBAAqB3Q,EAAOlC,kBAC5BnC,cAAe,YAGjB,OAAKtC,EAIE,CACLhD,GAAIgD,EAAShD,GACbvF,KAAMuI,EAASvI,KACfmI,MAAOI,EAASJ,MAChBsM,YAAalM,EAASkM,YACtBC,YAAanM,EAASoM,MARf,IAUV,GD8DGmL,GAAY,yJAClB,SAAShW,GAAa7D,GACpB,OAAO6Z,GAAUzJ,KAAKpQ,EACvB,CAED,SAAS8Z,GAAa9Z,GACpB,OAAIA,EAAMmE,QAAU,GAAKnE,EAAMmE,QAAU,EAK1C,CAED,MAAM4V,GAAU,WAKhB,MAAMC,GAAiB,yBACvB,SAASC,GAAiBja,GACxB,OAAOga,GAAe5J,KAAKpQ,EAC5B,CAED,SAASka,GAAYla,GACnB,QAAIA,CAKL,CAEcma,OA5IyB,KACtChX,QAAQC,IAAI,QACZ,MAAOkN,EAAaC,GAAkBvO,mBAAgC,CACpE8I,MAAO,GACPvH,MAAO,GACP8U,kBAAmB,EACnBC,qBAAsB,EACtBC,kBAAmB,EACnB1R,SAAU,EACVE,kBAAmB,EACnBuH,UAAW,GACXoK,UAAW,OACX5T,QAAQ,EACRgT,YAAa,GACbE,IAAK,GACLE,UAAW,GACXE,aAAc,MAGTgC,EAAiBC,GAAsBrY,mBAAgC,CAC5E8I,MAAO,GACPvH,MAAO,GACP8U,kBAAmB,EACnBC,qBAAsB,EACtBC,kBAAmB,EACnB1R,SAAU,EACVE,kBAAmB,EACnBuH,UAAW,GACXoK,UAAW,OACX5T,QAAQ,IAGJsR,EAAUC,cAEV5F,EAAmB9P,uBAAa+P,IAyFxC,IAAoB1Q,EAxFhBuQ,EAAe,IACVG,EACH5L,OAASjB,GAAa6M,EAASnN,QAC7BuW,GAAapJ,EAAS5F,QACtBmP,GAAiBvJ,EAASpC,YAAqC,SAAvBoC,EAASgI,WAC/C7U,GAAa6M,EAASnN,QACtBuW,GAAapJ,EAAS5F,QACtBmP,GAAiBvJ,EAASpC,YAAqC,SAAvBoC,EAASgI,WACjDoB,GAAapJ,EAASwH,aAgFZlY,EA/EC0Q,EAASsH,IAgFrB+B,GAAQ3J,KAAKpQ,KA/EZka,GAAYxJ,EAASoH,cACrBoC,GAAYxJ,EAAS0H,gBAE3BiC,EAAmB,IACd3J,EACH5L,OAASjB,GAAa6M,EAASnN,QAC7BuW,GAAapJ,EAAS5F,QACtBmP,GAAiBvJ,EAASpC,YACH,SAAvBoC,EAASgI,WALb,GAOC,IAEG/H,EAAiBhQ,sBAAYiQ,MAASlJ,UAE1C4S,IAAG,YAAa,kBAChB/hB,OAAOsY,aAAaC,UAAU,MAC9B,MAAMxC,QAAkB3D,GAAW0D,aAAa,IAC3C+L,IAKL,GAFA7J,EAAe,IAAID,EAAazL,SAAS,KAEpCyJ,EAGH,OAFAiC,EAAe,IAAID,EAAazL,SAAS,SACzCkM,MAAM,kLAIsB,SAA1BT,EAAYoI,UACVpK,EAAUG,YACZlW,OAAOmB,SAASqC,KAAOuS,EAAUG,aAEjC8B,EAAe,IAAID,EAAazL,SAAS,IACzCkM,MAAM,yVAGRqF,EAAQI,KAAK,kBACd,GACA,IAAM,CAAExF,SAAS,EAAMC,UAAU,IAAU,CAACX,IAEzCY,EAAsBvQ,uBAAY,KACtCpH,EAAaC,GAAGnB,EAAOU,UAAvB,GACC,IAMH,OACE,sBAAK0B,UAAU,cAAf,UACE,cAAC,GAAD,CACEoH,KAAMyO,EACNxO,aAAc2O,EACd7D,WAAY+D,IAEd,cAAC,EAAD,CACE7R,gBAAiBoS,EACjBtS,QAAM,IAER,cAAC,EAAD,MAXJ,E,oBEzFa2b,OAZiB,IAG5B,sBAAK9f,UAAW8B,KAAOge,cAAvB,UACE,qBAAK9f,UAAW8B,KAAO2a,QAASrc,IAPhB,6BAQhB,qBAAKJ,UAAW8B,KAAOie,YAAa3f,IAPtB,uBAQd,mBAAGJ,UAAW8B,KAAO8a,UAArB,kKACA,cAAC,EAAD,OCcSoD,OAtBqB,IAGhC,8BACE,eAAC,IAAD,WACE,cAAC,IAAD,CACEjF,OAAK,EAACC,KAAK,IACXC,UAAWyE,KAEb,cAAC,IAAD,CACE3E,OAAK,EAACC,KAAK,kBACXC,UAAW6E,KAEb,cAAC,IAAD,CACE/E,OAAK,EAACC,KAAK,eACXC,UAAWvY,SCjBrB,MAAM8Q,GAAmB,GAAE5V,EAAOC,oBAuCnBoiB,OAPf,MACE,wBAAMC,CAAmB9Y,GACvB,MAAMS,QAAiB+G,GAAYK,KAAM,GAAEuE,iBAA+BpM,GAC1E,OAAOS,EAASsG,QAAUtG,EAAST,KAAgC,IACpE,G,OC/BH,MAAM8I,GAAa,ICEnB,MAAiC,cAAD,KACtBJ,IAAM,IAAI2D,EADY,CAG9B,qBAAM0M,CAAgB7Z,EAAgBmB,EAAe2E,EAAkBiE,GACrE,MAAMwD,QAAkB9E,KAAKmR,mBAAmB5Z,EAAQmB,EAAO2E,EAAUiE,GACzE,OAAKwD,IAAkB,CAOxB,CAGD,wBAAcqM,CAAmB5Z,EAAgBmB,EAAe2E,EAAkBiE,GAChF,MAAMxI,QAAiBkH,KAAKe,IAAIoQ,mBAAmB,CACjDpM,aAAa,EACb3G,OAAQ,OACR4G,YAAa,EACbzN,SACAmB,QACA4I,QACAjE,aAGF,OAAKvE,EAIE,CACLhD,GAAIgD,EAAShD,GACbvF,KAAMuI,EAASvI,KACfmI,MAAOI,EAASJ,MAChBsM,YAAalM,EAASkM,aAPf,IASV,GDcYqM,OAlDmB,KAEhC,MAAOvK,EAAaC,GAAkBvO,mBAA2B,CAC/DuB,MAAO,GACPO,cAAc,EACd0M,YAAa,KACbzW,KAAM,GACN+Q,MAAO,GACP/J,OAAQ,EACRmB,MAAO,EACP2E,SAAU,EACV/B,QAAQ,EACRF,cAAe,YAEXwR,EAAUC,cAEV5F,EAAmB9P,uBAAa+P,IACpCH,EAAe,IACVG,GADL,GAGC,CAACH,IAEEI,EAAiBhQ,sBAAYiQ,MAASlJ,UAC1CnP,OAAOsY,aAAaC,UAAU,MAC9B,MAAM3G,QAAkBQ,GAAWiQ,gBAAgBtK,EAAYvP,OAAQuP,EAAYpO,MAAOoO,EAAYzJ,SAAUyJ,EAAYxF,OAEvHX,GAKLoG,EAAe,IAAKD,EAAaE,YAAarG,EAAU7K,GAAIvF,KAAMoQ,EAAUpQ,OAE5Eqc,EAAQI,KAAK,CACXsE,SAAU,aACVC,MAAO,CACLvK,YAAarG,EAAU7K,GACvBvF,KAAMoQ,EAAUpQ,SAVlBgX,MAAM,iTAMR,GAOC,IAAM,CAAEC,SAAS,EAAMC,UAAU,IAAU,CAACX,EAAYxF,MAAOwF,EAAYvP,OAAQuP,EAAYpO,QAElG,OACE,qCACE,cAAC,GAAD,CAAgBL,KAAMyO,EAAaxO,aAAc2O,EAAkB7D,WAAY+D,EAAgBnK,iBAAiB,IAChH,cAAC,EAAD,MAHJ,EExCF,MAAMwU,GAAU,CACd,CAAC3iB,EAAOQ,WAAY0c,GACpB,CAACld,EAAOU,WAAYye,GACpB,CAACnf,EAAOY,WAAYwhB,GACpB,CAACpiB,EAAOc,YCZoB,IAG1B,8BACE,eAAC,IAAD,WACE,cAAC,IAAD,CACEqc,OAAK,EAACC,KAAK,IACXC,UAAWmF,KAEb,cAAC,IAAD,CACEpF,KAAK,aACLC,UAAWqB,WDURtZ,GAAY,CACvBwd,UAAU,EACVC,YAAY,EACZC,qBAAqB,EACrBC,UAAU,EACVC,WAAW,GAuBEC,OApBwB,EAAG7gB,gBACxC,MAAM8gB,EAASP,GAAQzhB,EAAaK,aAKpC,OACE,qBAAKa,UAAWA,EAAhB,SAQG8gB,EAAS,cAACA,EAAD,IAAa,cAAC,GAAD,KAT3B,E,OEhCFC,IAASC,OACP,cAAC,IAAD,UACE,cAAC,IAAMC,WAAP,UAEE,cAAC,GAAD,CAAcjhB,UAAU,YAG5BmV,SAAS+L,eAAe,Q,oBCd1BxjB,EAAOC,QAAU,CAAC,gBAAkB,6CAA6C,yBAA2B,sDAAsD,WAAa,wCAAwC,gBAAkB,6CAA6C,MAAQ,mCAAmC,eAAiB,4CAA4C,yBAA2B,sDAAsD,eAAiB,4CAA4C,iBAAmB,8CAA8C,sBAAwB,mDAAmD,0BAA4B,uDAAuD,2BAA6B,wDAAwD,oBAAsB,iDAAiD,qBAAuB,kDAAkD,gBAAkB,6CAA6C,eAAiB,4CAA4C,iBAAmB,8CAA8C,+BAAiC,4D,qBCA9qCD,EAAOC,QAAU,CAAC,cAAgB,qCAAqC,QAAU,+BAA+B,YAAc,mCAAmC,UAAY,iC,oBCA7KD,EAAOC,QAAU,CAAC,KAAO,6BAA6B,UAAY,kCAAkC,WAAa,mCAAmC,KAAO,6B,qBCA3JD,EAAOC,QAAU,CAAC,cAAgB,+BAA+B,UAAY,2BAA2B,cAAgB,+BAA+B,gBAAkB,iCAAiC,UAAY,2BAA2B,eAAiB,gCAAgC,cAAgB,+BAA+B,cAAgB,+BAA+B,kBAAoB,mCAAmC,WAAa,4BAA4B,yBAA2B,0C,w/uWCA3fD,EAAOC,QAAU,CAAC,cAAgB,4BAA4B,UAAY,wBAAwB,cAAgB,4BAA4B,UAAY,wBAAwB,aAAe,2BAA2B,gBAAkB,8BAA8B,UAAY,wBAAwB,eAAiB,6BAA6B,cAAgB,4BAA4B,cAAgB,4BAA4B,kBAAoB,gCAAgC,WAAa,yBAAyB,QAAU,sBAAsB,uBAAyB,qCAAqC,qBAAuB,mC,qBCAroBD,EAAOC,QAAU,CAAC,cAAgB,6BAA6B,UAAY,yBAAyB,cAAgB,6BAA6B,MAAQ,qBAAqB,UAAY,yBAAyB,kBAAoB,iCAAiC,gBAAkB,+BAA+B,gBAAkB,+BAA+B,UAAY,yBAAyB,aAAe,4BAA4B,eAAiB,8BAA8B,cAAgB,6BAA6B,cAAgB,6BAA6B,WAAa,0BAA0B,YAAc,2BAA2B,UAAY,yBAAyB,qBAAuB,oCAAoC,gBAAkB,+BAA+B,yBAA2B,wCAAwC,kBAAoB,iC,oBCA33BD,EAAOC,QAAU,CAAC,KAAO,kCAAkC,UAAY,uCAAuC,cAAgB,2CAA2C,gBAAkB,6CAA6C,UAAY,uCAAuC,eAAiB,4CAA4C,cAAgB,2CAA2C,cAAgB,2CAA2C,kBAAoB,+CAA+C,WAAa,wCAAwC,yBAA2B,sD","file":"static/js/main.1a8371ec.chunk.js","sourcesContent":["// extracted by mini-css-extract-plugin\nmodule.exports = {\"Root\":\"IntegerSelector_Root__2_qT1\",\"IconContainer\":\"IntegerSelector_IconContainer__3WLTM\",\"Disabled\":\"IntegerSelector_Disabled__2zrZc\",\"LeftIcon\":\"IntegerSelector_LeftIcon__3nkpj\",\"RightIcon\":\"IntegerSelector_RightIcon__2fXI3\",\"InputContainer\":\"IntegerSelector_InputContainer__1C84y\",\"Input\":\"IntegerSelector_Input__Y_SrT\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"Root\":\"CodeActivated_Root__KLABe\",\"AppIcon\":\"CodeActivated_AppIcon__20Hhz\",\"ActivatedIcon\":\"CodeActivated_ActivatedIcon__3PowN\",\"TitleText\":\"CodeActivated_TitleText__3HKP_\",\"Text\":\"CodeActivated_Text__HU0qG\",\"Buttons\":\"CodeActivated_Buttons__3cBC2\",\"Button\":\"CodeActivated_Button__Tr0UK\"};","const config = {\n apiUrl:\n window._prosto_env_.REACT_APP_API_URL ||\n process.env.REACT_APP_API_URL ||\n \"\",\n tinkoffTerminalKey:\n window._prosto_env_.REACT_APP_TERMINAL_KEY ||\n process.env.REACT_APP_TERMINAL_KEY ||\n \"\",\n giftRoute:\n window._prosto_env_.REACT_APP_GIFT_ROUTE ||\n process.env.REACT_APP_GIFT_ROUTE ||\n \"\",\n codeRoute:\n window._prosto_env_.REACT_APP_CODE_ROUTE ||\n process.env.REACT_APP_CODE_ROUTE ||\n \"\",\n corpRoute:\n window._prosto_env_.REACT_APP_CORP_ROUTE ||\n process.env.REACT_APP_CORP_ROUTE ||\n \"\",\n promoRoute:\n window._prosto_env_.REACT_APP_PROMO_ROUTE ||\n process.env.REACT_APP_PROMO_ROUTE ||\n \"\",\n privacyUrl: 'https://help.prostoapp.ru/#!/tab/437811820-1',\n rulesUrl: 'https://help.prostoapp.ru/birthday',\n};\n\nexport default config;\n","class DomainRouter {\n go(domain: string): void {\n window.location.host = domain;\n }\n\n get currentHost(): string {\n return window.location.host;\n }\n}\n\nconst domainRouter = new DomainRouter();\nexport default domainRouter;\n","import React from 'react';\nimport './CertificateBlock.css';\n\nconst sleep = \"images/black-friday/sleep.png\";\nconst meditation = \"images/black-friday/meditation.png\";\nconst irena = \"images/black-friday/irena.png\";\n\nconst podarokItems = [\n { image: \"images/CertificateDownload.png\", text: 'Скачайте доступ из письма' },\n { image: \"images/Letter.png\", text: 'Распечатайте доступ и подарите, или перешлите его тому, кому делаете подарок' },\n { image: \"images/Certificate.png\", text: 'Получатель доступа сможет легко активировать промокод. Инструкция есть во вложении письма' },\n { image: \"images/screenshot.png\", text: 'Выложи скриншот о покупке в stories, отметь @prosto.meditation и участвуй в розыгрыше ценных призов' }\n]\n\nconst isForeverItems = [\n { image: \"images/forever/download.png\", text: 'Скачайте доступ из письма' },\n { image: \"images/forever/letter.png\", text: 'Распечатайте доступ и подарите, или перешлите его тому, кому делаете подарок' },\n { image: \"images/forever/certificate.png\", text: 'Получатель сможет легко активировать промокод. Инструкция есть во вложении письма' },\n { image: \"images/forever/screenshot.png\", text: 'Выложи скриншот о покупке в stories, отметь @prosto.meditation и участвуй в розыгрыше ценных призов' }\n]\n\nconst pinkItems = [\n { image: \"images/pink/download.png\", text: 'Скачайте доступ из письма' },\n { image: \"images/pink/letter.png\", text: 'Распечатайте доступ и подарите, или перешлите его тому, кому делаете подарок' },\n { image: \"images/pink/ticket.png\", text: 'Получатель сертификата сможет легко активировать промокод. Инструкция есть в сертификате' },\n { image: \"images/pink/screenshot.png\", text: 'Выложи скриншот о покупке в stories, отметь @prosto.meditation и участвуй в розыгрыше ценных призов' }\n]\n\nconst blackFridayItems = [\n { image: sleep, text: '«Prosto: медитация и сон» станет вашей внутренней опорой и поможет выработать привычку медитировать каждый день.' },\n { image: meditation, text: 'Практики ментальной устойчивости помогут побороть стресс, тревогу, злость, срывы в питании и проблемы со сном.' },\n { image: irena, text: 'Prosto.Конференция поможет выстроить гармоничные отношения с окружающим миром.' }\n]\n\ninterface IProps {\n isBlackFriday?: boolean\n isPink?: boolean\n isHoliday?: boolean\n isForever?: boolean\n}\n\nconst CertificateInstructionsBlock: React.FC = ({\n isBlackFriday = false, isPink, isForever\n}) => {\n const items = isBlackFriday ? blackFridayItems :\n isPink ? pinkItems :\n isForever ? isForeverItems :\n podarokItems\n\n const color = isForever || isBlackFriday ? '#fff' : '#000'\n\n return (\n
\n {items.map((item, key) => (\n
\n \n

{item.text}

\n
\n ))}\n {/* {isHoliday &&\n
\n \n

\n Выложи скриншот
\n о покупке в stories,
\n отметь @prosto.meditation
\n и участвуй в розыгрыше
\n ценных призов

\n
\n } */}\n
\n );\n}\n\nexport default CertificateInstructionsBlock;\n","import React from 'react';\nimport './CustomButton.css';\n\nconst downloadIconImage = \"images/Download.png\";\n\nexport interface ICustomButtonProps {\n title: string;\n onClick?: () => void;\n icon?: string\n disabled?: boolean;\n downloadIcon?: boolean;\n className?: string;\n style?: any\n}\n\nconst CustomButton: React.FC = ({ title, onClick, icon, disabled, downloadIcon, className = \"\", style = {} }) => {\n return (\n
\n \n
\n );\n}\n\nexport default CustomButton;\n","import React from 'react';\nimport './Footer.css';\n\ninterface IProps {\n backgroundColor?: string;\n textColor?: string;\n linkColor?: string;\n showSellerInfo?: boolean\n}\nconst Footer: React.FC = ({ backgroundColor, textColor, linkColor = '#33B49D', showSellerInfo = true }) => {\n const thisYear = new Date().getFullYear()\n\n return (\n
\n

© Просто {thisYear}

\n
\n \n Appstore\n \n \n GooglePlay\n \n
\n

\n Служба поддержки\n pr@prostoapp.com \n

\n
\n\n

\n *лучшее приложение для медитации
\n на русском языке по версии data.ai\n

\n {showSellerInfo &&\n

\n ИНДИВИДУАЛЬНЫЙ ПРЕДПРИНИМАТЕЛЬ БАРСУКОВ АЛЕКСАНДР АЛЕКСАНДРОВИЧ,\n ИНН 366208819519, ОГРН 316366800118452,\n pr@prostoapp.com, 89608576775\n

\n }\n\n
\n );\n}\n\n\nexport default Footer;\n","export const defaultThemeText = {\n calcTitle: 'Оплатить сертификат',\n calcSubtitle: '',\n title: 'Prosto — твоя внутренняя опора',\n subtitle: 'Многие из вас столкнулись с тем, что не могут продлить подписку на приложение в Apple Store и Google Play.',\n subtitleExtra: 'Чтобы вне зависимости от обстоятельств вы имели доступ к Prosto app, вы можете сегодня оплатить сертификат для себя или близкого человека на удобный для вас период, а активировать его позже.',\n}","export const blackThemeText = {\n calcTitle: `Prosto Box для \n ментального здоровья`,\n calcSubtitle: 'со скидкой 74%',\n title: 'Впервые за всю историю проекта мы устраиваем Чёрную пятницу',\n subtitle: `Только 24 ноября в продаже бокс для ментального здоровья вашей Кукушечки:`,\n subtitleExtra: `\n • Доступ Prosto на 3 года\n • Онлайн-практикум ментальной устойчивости, доступ на 6 месяцев \n • Онлайн-конференция Prosto, доступ навсегда\n ❤️ Можно оплатить банковской картой\n ❤️ Доступны ко всем материалам придут вам на почту\n ❤️ Все покупатели набора в Черную пятницу могут выиграть призы\n `,\n}","import { defaultThemeText } from \"./default/defaultThemeText\";\nimport { pinkThemeText } from \"./pink/pinkThemeText\";\nimport { birthdayThemeText } from \"./birthday/birthdayThemeText\";\nimport defaultStyles from './default/default.module.css';\nimport pinkStyles from './pink/pink.module.css';\nimport blackStyles from './black/black.module.css';\nimport moment from 'moment-timezone';\nimport { blackThemeText } from \"./black/blackThemeText\";\n\nexport const useHolidaysTheme = () => {\n let themeText, styles, isHoliday = false, nextTimeout\n const today = moment().get('date')\n let daysLeft = 0\n let currentDayNumber = 0\n const thisMonth = moment().format('MM')\n const thisYear = moment().get('year')\n // const isPink = moment().isBetween(`${thisYear}-01-11 10:00`, `${thisYear}-02-13 23:59`)\n const isPink = false\n // const isBirthday = moment().isBetween(`${thisYear}-09-21 10:30`, `${thisYear}-09-24 12:01`)\n const isBirthday = false\n // const isBlackFriday = moment().isBetween(`${thisYear}-11-22 00:00`, +moment.tz(`${thisYear}-11-25 13:30`, \"Europe/Moscow\").toDate())\n const isBlackFriday = false\n isHoliday = isBirthday || isPink || isBlackFriday\n if (isBirthday) {\n nextTimeout = +moment.tz(`${thisYear}-09-24 12:00`, \"Europe/Moscow\").toDate()\n themeText = birthdayThemeText\n styles = defaultStyles\n } else if (isPink) {\n nextTimeout = +moment.tz(`${thisYear}-02-14 20:00`, \"Europe/Moscow\").toDate()\n // daysLeft = 14 - today\n // currentDayNumber = today - 10\n themeText = pinkThemeText\n styles = pinkStyles\n } else if (isBlackFriday) {\n nextTimeout = +moment.tz(`${thisYear}-11-25 13:30`, \"Europe/Moscow\").toDate()\n themeText = blackThemeText\n styles = blackStyles\n } else {\n themeText = defaultThemeText\n styles = defaultStyles\n }\n\n return {\n today,\n thisMonth,\n currentDayNumber,\n daysLeft,\n themeText,\n styles,\n isHoliday,\n isPink,\n isBirthday,\n isBlackFriday,\n nextTimeout,\n }\n}","import React, { } from 'react';\nimport CertificateInstructionsBlock from '../../components/CertificateBlock/CertificateBlock';\nimport CustomButton from '../../components/CustomButton/CustomButton';\nimport Footer from '../../components/Footer/Footer';\nimport { useHolidaysTheme } from '../../themes/useTheme';\nimport './CertificateScreen.css';\nimport { YMInitializer } from 'react-yandex-metrika';\nimport { ymOptions } from '../../navigation/DomainRoutes';\n\nconst voices = \"images/voices.png\";\nconst voicesMobile = \"images/voices-mobile.png\";\n\nconst CertificateScreen: React.FC = () => {\n // domainRouter.currentHost\n // console.log('domainRouter.currentHost', domainRouter.currentHost)\n const isForever = window.location.search.substring(1) === 'isForever'\n const isHoliday = true\n const { isBirthday, isBlackFriday, isPink, styles } = useHolidaysTheme()\n const yandexMetrikaCounters = isForever ? [98501558] : [98498599]\n // console.log('yandexMetrikaCounters', yandexMetrikaCounters)\n\n return (\n <>\n \n
\n {/* {isBirthday && }\n {isPink && } */}\n
\n {isForever ? <>\n \n \n : <>\n \n \n }\n
\n\n {/* {isPink && } */}\n\n
\n
\n

\n Поздравляем с покупкой доступа\n
\n {isForever ?\n <>\n Prosto Навсегда со скидкой 67% 🎉\n : <>\n Prosto на год со скидкой 67% 🎉\n \n }\n
\n Проверьте вашу почту!\n

\n
\n \n

\n С нами более 3 миллионов пользователей — присоединяйся!\n

\n Российские звёзды медитируют сами и их голоса ведут тебя в медитациях:\n

\n Юра Борисов
\n Никита Ефремов
\n Максим Матвеев
\n Равшана Куркова
\n Дарья Мельникова
\n Марина Александрова
\n Ирена Понарошку
\n Сергей Чонишвили
\n Н. Н. Дроздов
\n

\n
\n
\n
\n\n
\n\n
\n

\n Поздравляем с покупкой
\n доступа Prosto \n
\n {isForever ?\n <>\n Навсегда со скидкой 67% 🎉\n : <>\n на год со скидкой 67% 🎉\n \n }\n
\n Проверьте вашу почту!\n

\n

\n С нами более 3 000 000 человек —
\n присоединяйся!\n

\n Российские звёзды медитируют сами
\n и их голоса ведут тебя в медитациях:\n
\n

\n
\n

\n Юра Борисов
\n Никита Ефремов
\n Максим Матвеев
\n Равшана Куркова
\n Дарья Мельникова
\n Марина Александрова
\n Ирена Понарошку
\n Сергей Чонишвили
\n Н. Н. Дроздов
\n

\n \n
\n
\n\n \n\n {\n isHoliday && (\n <>\n

\n Участвуй в розыгрыше подарков\n общей стоимостью более
1 000 000₽\n в наших соцсетях!
\n Жми, чтобы увидеть условия 👇\n

\n\n
\n \n \n \n
\n \n )\n }\n\n \n
\n \n );\n}\n\nexport default CertificateScreen;\n","import React from 'react';\nimport './AdvicesBlock.css';\n\ninterface IProps {\n isBlackFriday?: boolean\n isPink?: boolean\n isCorp?: boolean\n firstImage?: string;\n firstText?: string;\n secondText?: string;\n items?: any\n}\n\nconst letter = \"images/Letter.png\";\nconst certificate = \"images/Certificate.png\";\nconst certificateInLetter = \"images/CertificateInLetter.png\"\nconst blackCertificateInLetter = \"images/black-friday/BlackCertificateInLetter.png\"\nconst wallet = \"images/Wallet.png\";\nconst access = \"images/black-friday/access.png\"\nconst hours24 = \"images/black-friday/24.png\"\nconst envelope = \"images/black-friday/letter.png\"\n\nconst blackFridayItems = [\n {\n image: access,\n text: `Вы покупаете доступ к эксклюзивному контенту Prosto: конференции и онлайн-интенсива нет в открытом доступе`\n },\n {\n image: hours24,\n text: `Только 24 часа на покупку Prosto Box для ментального здоровья со скидкой 74%`\n },\n {\n image: envelope,\n text: `Доступы и инструкция придут вам на почту после оплаты`\n },\n]\n\nconst corpItems = [\n {\n image: wallet,\n text: \"Оплатите подарочный сертификат на подписку для ваших сотрудников\"\n },\n {\n image: letter,\n text: \"Вы получите сертификат, который можно распечатать или отправить через мессенджер\"\n },\n {\n image: certificate,\n text: `Получатель сертификата сможет легко активировать промокод, инструкция есть в сертификате`\n },\n]\n\nconst podarokItems = [\n {\n image: wallet,\n text: \"Купи сертификат на подписку в подарок или себе\"\n },\n {\n image: letter,\n text: \"Вы получите сертификат, который можно распечатать или отправить через мессенджер\"\n },\n {\n image: certificate,\n text: `Получатель сертификата сможет легко активировать промокод, инструкция есть в сертификате`\n },\n]\n\nconst pinkItems = [\n {\n image: \"images/pink/wallet.png\",\n text: \"Оплатите подарочный сертификат для себя или близкого\"\n },\n {\n image: \"images/pink/letter.png\",\n text: \"Вы получите сертификат, который можно распечатать или отправить через мессенджер\"\n },\n {\n image: \"images/pink/certificate.png\",\n text: `Получатель сертификата сможет легко активировать промокод, инструкция есть в сертификате`\n },\n]\n\n\nconst AdvicesBlock: React.FC = ({\n isBlackFriday = false, isPink, isCorp = false\n}) => {\n const items = isBlackFriday ? blackFridayItems :\n isCorp ? corpItems :\n isPink ? pinkItems : podarokItems\n\n return (\n
\n
\n {items.map((item, key) => (\n
\n \n

{item.text}

\n
\n ))}\n
\n
\n \n
\n
\n );\n}\n\nexport default AdvicesBlock;\n","import React from 'react';\nimport AdvicesBlock from '../AdvicesBlock/AdvicesBlock';\nimport CustomButton from '../CustomButton/CustomButton';\nimport { useHolidaysTheme } from '../../themes/useTheme';\nimport './BottomMainBlock.css';\n\ninterface IProps {\n onActivateClick: () => void;\n removeTitle?: boolean;\n buttonTitle?: string;\n downloadIcon?: boolean;\n firstImage?: string;\n firstText?: string;\n secondText?: string;\n mainScreen?: boolean;\n isCorp?: boolean\n}\n\nconst BottomMainBlock: React.FC = ({ onActivateClick, removeTitle, buttonTitle, downloadIcon, firstImage, firstText, secondText, mainScreen = true, isCorp = false }) => {\n const { isBlackFriday, isPink, styles } = useHolidaysTheme()\n\n return (\n
\n Как это работает?\n\n \n\n
\n \n
\n
\n );\n}\n\nexport default BottomMainBlock;\n","import React from 'react';\nimport './CustomInput.css';\n\nexport interface ICustomInputProps {\n placeholder: string;\n defaultValue?: string;\n onChange?: (event: React.ChangeEvent) => void;\n className?: string;\n inputClassName?: string;\n minLength?: number;\n maxLength?: number;\n type?: string;\n}\n\nconst CustomInput: React.FC = ({\n placeholder,\n defaultValue = '',\n onChange,\n className, inputClassName= \"Email\",\n minLength, maxLength,\n type\n}) => {\n return (\n
\n \n
\n );\n}\n\nexport default CustomInput;\n","import React from 'react';\nimport './CustomCheckbox.css';\n\nexport interface ICustomCheckboxProps {\n title: string;\n value: boolean;\n onChange: (val: boolean) => void;\n disabled?: boolean;\n}\n\nconst CustomCheckbox: React.FC = ({ title, value, onChange, disabled }) => {\n return (\n
\n { }}\n />\n !disabled && onChange(!value)}>{title}\n
\n );\n}\n\nexport default CustomCheckbox;\n","import React, { useCallback } from 'react';\nimport './Selector.css';\nimport IntegerSelector from \"../IntegerSelector/IntegerSelector\";\nimport { ISubscription } from '../Calculator/Calculator';\n\nconst selectorIcon = \"images/Selector.png\";\n\ninterface IDates {\n [key: string]: string;\n}\n\nconst dates: IDates = {\n 1: \"1 месяц\",\n 3: \"3 месяца\",\n 6: \"6 месяцев\",\n 12: \"12 месяцев\",\n};\n\ninterface IProps {\n availableSubscriptions: ISubscription[]\n activeSubscription: ISubscription\n onSelect: (subscription: ISubscription) => void\n}\n\nconst SubscriptionSelect: React.FC = ({\n availableSubscriptions, activeSubscription, onSelect,\n}) => {\n\n // const handleCountChange = useCallback((newValue: number) => {\n // if (newValue >= 3) {\n // setCount(newValue);\n // }\n // }, [])\n\n const onSelectChange = useCallback((event: React.ChangeEvent) => {\n const { value } = event.target\n onSelect(availableSubscriptions.find(\n availableSubscription => availableSubscription.months === Number(value)\n ) || availableSubscriptions[0])\n }, [onSelect, availableSubscriptions])\n\n return (\n
\n {/* {showCountSelector && } */}\n
\n
\n \n {\n availableSubscriptions.map((subscription) => (\n \n ))\n }\n \n {dates[activeSubscription.months]}\n select\n
\n
\n
\n );\n};\n\nexport default SubscriptionSelect;\n","import React, { useCallback } from \"react\";\nimport { Label, Radio } from \"theme-ui\";\nimport { TPaymentMethod } from \"../../core/buyGiftSubscription/controller\";\n\nimport styles from \"../CorporateCalculator/CorporateRadio.module.css\";\n\n\ninterface IPaymentMethodSelectorProps {\n value: TPaymentMethod;\n onChange: (value: TPaymentMethod) => void;\n}\n\nexport const PaymentMethodSelector = ({ value, onChange }: IPaymentMethodSelectorProps) => {\n\n const onPaymentMethodChange = useCallback(\n (event: React.ChangeEvent) => {\n const newValue = event.currentTarget.value;\n if (newValue !== value) {\n onChange(newValue as TPaymentMethod);\n }\n }, [onChange, value]);\n\n return (\n
\n \n \n
\n )\n}\n","import React, { useCallback, useEffect, useState } from 'react';\nimport CustomButton from '../CustomButton/CustomButton';\nimport CustomInput from '../CustomInput/CustomInput';\nimport './Calculator.css';\nimport { IMainScreenState } from \"../../types/IMainScreenState\";\nimport CustomCheckbox from '../CustomCheckbox/CustomCheckbox';\nimport SubscriptionSelect from '../Selector/SubscriptionSelect';\nimport { useFetch } from '../../core/http/fetch.hook';\nimport { PaymentMethodSelector } from '../PaymentMethodSelector/PaymentMethodSelector';\nimport config from '../../core/config/config';\nimport { useHolidaysTheme } from '../../themes/useTheme';\nimport { isValidEmail } from '../../screens/MainScreen/MainScreen';\nimport domainRouter from '../../navigation/domainRouter';\n\nexport interface ISubscription {\n months: number;\n price: number;\n discount1: number;\n discount2: number;\n finalPrice: number;\n}\n\nexport interface ICalculatorProps {\n title?: string\n subtitle?: string\n data: IMainScreenState;\n onClick?: () => void;\n onDataChange?: (state: IMainScreenState) => void;\n}\n\n// Podarok\nconst Calculator: React.FC = ({ title = 'Оплатить сертификат', subtitle, data, onClick, onDataChange = () => { } }) => {\n const { isBlackFriday, styles } = useHolidaysTheme()\n\n const [availableSubscriptions, setAvailableSubscriptions] = useState([])\n const [activeSubscription, setActiveSubscription] = useState(\n {\n months: 1,\n price: 379,\n discount1: 0,\n discount2: 0,\n finalPrice: 379\n }\n );\n\n const { response: subscriptionPrices } = useFetch('promocodes/prices')\n\n const handleEmailChange = useCallback((event: React.ChangeEvent) => {\n const email = event.target.value ?? \"\";\n onDataChange({\n ...data,\n email: email.toLowerCase().trim(),\n })\n }, [data, onDataChange])\n\n const [emailCheckboxTouched, setEmailCheckboxTouched] = useState(false)\n const handleConfirmEmailCheckbox = useCallback((value) => {\n setEmailCheckboxTouched(value)\n if (data.email === '') return\n if (!isValidEmail(data.email)) return\n onDataChange({\n ...data,\n confirmEmail: data.confirmEmail ? false : true,\n })\n }, [data, onDataChange])\n\n const onSelectSubscription = useCallback((subscription: ISubscription) => {\n setActiveSubscription(subscription)\n onDataChange({\n ...data,\n months: subscription.months,\n price: subscription.finalPrice,\n // discount: subscription.discount,\n });\n }, [data, onDataChange])\n\n useEffect(() => {\n if (isBlackFriday) {\n onSelectSubscription({\n months: 36,\n price: 4550,\n discount1: 0,\n discount2: 0,\n finalPrice: 4550,\n })\n } else {\n if (subscriptionPrices !== undefined) {\n const currentHost = domainRouter.currentHost\n console.log('currentHost', currentHost)\n console.log('subscriptionPrices', subscriptionPrices)\n const { podarok, avo } = subscriptionPrices\n if (currentHost === 'avo.prostoapp.ru' && avo?.length) {\n avo.sort((a: ISubscription, b: ISubscription) => (\n (a.months < b.months) ? 1 : -1\n ))\n setAvailableSubscriptions(avo)\n setActiveSubscription(avo[0])\n onSelectSubscription(avo[0])\n } else if (podarok?.length) {\n podarok.sort((a: ISubscription, b: ISubscription) => (\n (a.months < b.months) ? 1 : -1\n ))\n setAvailableSubscriptions(podarok)\n setActiveSubscription(podarok[0])\n onSelectSubscription(podarok[0])\n }\n }\n }\n\n }, [subscriptionPrices])\n\n const createMarkup = (text?: string) => {\n if (!text) return ''\n return text.split('\\n').map((str, key) =>

{str}

)\n }\n\n return (\n
\n
\n
\n {createMarkup(title)}\n

{createMarkup(subtitle)}

\n
\n\n \n\n

\n {isBlackFriday ? 'На указанную почту будут отправлены доступы' : 'На указанную почту будет отправлен сертификат'}\n

\n {isBlackFriday ?\n <>\n
\n

\n Доступ в приложение
\n Prosto 6300 ₽\n

\n

3 года

\n
\n
\n

\n Практикум ментальной
\n устойчивости 5100 ₽\n

\n

6 месяцев

\n
\n
\n

\n Онлайн-конференция
4900 ₽\n

\n

навсегда

\n
\n
\n

\n Итого к оплате\n

\n

17 100 ₽

\n

4 550 ₽

\n
\n :\n
\n
\n

Месяцев

\n

Цена

\n {!!activeSubscription.discount1 &&

Скидка

}\n {!!activeSubscription.discount2 &&

Доп.скидка

}\n {!!activeSubscription.discount1 &&

Итого к оплате

}\n
\n
\n \n
\n

\n {activeSubscription.price} \n

\n {!!activeSubscription.discount1 &&

-{activeSubscription.discount1}%

}\n {!!activeSubscription.discount2 &&

-{activeSubscription.discount2}%

}\n {!!activeSubscription.discount1 &&\n

\n {activeSubscription.finalPrice} \n

}\n
\n
\n
\n }\n\n
\n
\n
\n \n
\n\n {emailCheckboxTouched && data.email === '' &&\n

Необходимо ввести Email

\n }\n {emailCheckboxTouched && data.email !== '' && !isValidEmail(data.email) &&\n

Неверный формат Email

\n }\n {\n onDataChange({\n ...data,\n paymentMethod: value,\n })\n }}\n />\n \n

\n {\"Оформляя покупку, вы соглашаетесь с \"}\n Договором оферты\n

\n
\n
\n );\n}\n\nexport default Calculator;\n","import { useEffect, useState } from \"react\";\nimport config from \"../config/config\";\n\nexport const useFetch = (url: string) => {\n const [isLoading, setIsLoading] = useState(false)\n const [response, setResponse] = useState()\n\n useEffect(() => {\n setIsLoading(true)\n fetch(`${config.apiUrl}/${url}`)\n .then(res => res.json())\n .then((response) => {\n setResponse(response.data)\n setIsLoading(false)\n })\n .catch((err) => {\n console.log('fetch err', err);\n setIsLoading(false)\n })\n }, [])\n\n return {\n isLoading,\n response\n }\n}","import React, { useCallback, useState } from \"react\";\nimport styles from \"./IntegerSelector.module.css\";\n\ninterface IProps {\n className?: string;\n value?: number;\n onChange?: (newValue: number) => void;\n}\n\nconst IntegerSelector: React.FC = ({ className = \"\", onChange = () => {} }) => {\n const [value, setValue] = useState(3);\n const [canIncrease, setCanIncrease] = useState(checkCanIncrease(value));\n const [canDecrease, setCanDecrease] = useState(checkCanDecrease(value));\n\n const updateCans = useCallback((newValue: number) => {\n setCanIncrease(checkCanIncrease(newValue));\n setCanDecrease(checkCanDecrease(newValue));\n }, []);\n\n const handleIncreaseClick = useCallback(() => {\n if (canIncrease) {\n const newValue = value + 1;\n updateCans(newValue);\n setValue(newValue);\n onChange(newValue);\n }\n }, [canIncrease, value, updateCans, onChange]);\n\n const handleDecreaseClick = useCallback(() => {\n if (canDecrease) {\n const newValue = value - 1;\n updateCans(newValue);\n setValue(newValue);\n onChange(newValue);\n }\n }, [canDecrease, value, updateCans, onChange]);\n\n const handleInputBlur = useCallback(\n (event: React.ChangeEvent) => {\n if (value >= 3) {\n setValue(value);\n onChange(value);\n updateCans(value);\n } else {\n setValue(3);\n onChange(3);\n updateCans(3);\n }\n },\n [onChange, value, updateCans],\n );\n\n const handleInputChange = useCallback(\n (event: React.ChangeEvent) => {\n if (event.target.value === '') {\n return setValue(0)\n }\n const newValue = Number.parseInt(event.target.value);\n if (!Number.isNaN(newValue) && newValue >= 1) {\n setValue(newValue);\n }\n },\n [],\n );\n\n return (\n
\n \n -\n
\n
\n \n
\n \n +\n \n \n )\n}\n\nfunction checkCanIncrease(value: number): boolean {\n return true;\n}\n\nfunction checkCanDecrease(value: number): boolean {\n return value > 3;\n}\n\nexport default IntegerSelector;\n","import React, { useCallback, useEffect, useState } from 'react';\nimport { ICalculator } from '../../types/ICalculator';\nimport './Selector.css';\nimport IntegerSelector from \"../IntegerSelector/IntegerSelector\";\n\nconst monthPrice = 379;\nconst selectorIcon = \"images/Selector.png\";\n\nexport interface ISelectorProps {\n getPrice: (data: ICalculator) => void;\n showCountSelector?: boolean;\n useCorporateDiscount?: boolean;\n promoCalculator?: boolean;\n useAvoDiscount?: boolean;\n}\n\ninterface IDates {\n [key: string]: string;\n}\n\nconst dates: IDates = {\n \"1\": \"1 месяц\",\n \"3\": \"3 месяца\",\n \"6\": \"6 месяцев\",\n \"12\": \"12 месяцев\",\n};\n\nconst Selector: React.FC = ({ getPrice, showCountSelector, useCorporateDiscount, promoCalculator, useAvoDiscount }) => {\n\n const [count, setCount] = useState(3);\n const [value, setValue] = useState(!promoCalculator ? 12 : 6);\n const [price, setPrice] = useState(monthPrice * (!promoCalculator ? 12 : 6));\n const [discount, setDiscount] = useState(!promoCalculator ? 52 : 40);\n const [corporateDiscount, setCorporateDiscount] = useState(40);\n\n useEffect(() => {\n let benefit = Math.round(price * discount / 100);\n\n if (useCorporateDiscount) {\n if (discount === 0) {\n benefit = 0;\n } else {\n const preciseBenefit = price * (1 - (1 - discount / 100) * (1 - corporateDiscount / 100));\n benefit = Math.ceil(preciseBenefit);\n }\n }\n\n if (useAvoDiscount) {\n benefit = benefit + Math.ceil((price - benefit) * 0.55);\n }\n\n getPrice(\n {\n count,\n newPrice: price,\n discount,\n corporateDiscount,\n benefit,\n month: value\n }\n )\n }, [value, count]);\n\n const handleMonthsChange = useCallback(\n (event: React.ChangeEvent) => {\n setPrice(parseInt(event.target.value) * monthPrice);\n setValue(parseInt(event.target.value));\n if (parseInt(event.target.value) === 12) {\n setDiscount(52);\n setCorporateDiscount(40);\n } else if (parseInt(event.target.value) === 6) {\n setDiscount(useCorporateDiscount ? 40 : 54);\n setCorporateDiscount(40);\n } else if (parseInt(event.target.value) === 3) {\n setDiscount(30);\n setCorporateDiscount(0);\n } else {\n setDiscount(0);\n setCorporateDiscount(0);\n }\n },\n [setValue, setDiscount, useCorporateDiscount],\n );\n\n const handleCountChange = useCallback((newValue: number) => {\n \n if (newValue >= 3) {\n setCount(newValue);\n }\n }, [])\n\n return (\n
\n {showCountSelector && }\n
\n
\n \n {dates[value.toString()]}\n \n
\n
\n
\n );\n};\n\nexport default Selector;\n","import axios from \"axios\";\n\nexport interface IResponse {\n httpStatus: number;\n responseStatus: number | null;\n success: boolean;\n timestamp: string | null;\n data: any | null;\n error: string | null;\n message: string | null;\n}\n\nexport type TQueryData = Record;\n\nexport type THeaders = Record;\n\nexport interface IRequestSettings {\n headers?: THeaders;\n retryCount?: number;\n timeout?: number;\n encoding?: string;\n}\n\nclass HttpService {\n get(url: string, queryData: TQueryData = {}, settings: IRequestSettings = {}): Promise {\n const urlWithQuery = this.addQueryParams(url, queryData);\n return request({\n method: \"GET\",\n url: urlWithQuery,\n ...settings,\n });\n }\n\n post(url: string, data: unknown = {}, settings: IRequestSettings = {}): Promise {\n return request({\n url,\n data,\n method: \"POST\",\n ...settings,\n });\n }\n\n delete(url: string, settings: IRequestSettings = {}): Promise {\n return request({\n url,\n method: \"DELETE\",\n ...settings,\n });\n }\n\n put(url: string, data: unknown = {}, settings: IRequestSettings = {}): Promise {\n return request({\n url,\n data,\n method: \"PUT\",\n ...settings,\n });\n }\n\n patch(url: string, data: unknown = {}, settings: IRequestSettings = {}): Promise {\n return request({\n url,\n data,\n method: \"PATCH\",\n ...settings,\n });\n }\n\n addQueryParams(url: string, params: TQueryData) {\n let resultUrl = url;\n let isFirst = true;\n for (const key in params) {\n const prefix = isFirst ? \"?\" : \"&\";\n resultUrl += `${prefix}${key}=${params[key]}`;\n isFirst = false;\n }\n return resultUrl;\n }\n}\n\ninterface IRequestParams {\n method: \"GET\" | \"POST\" | \"DELETE\" | \"PATCH\" | \"PUT\";\n url: string;\n data?: unknown;\n headers?: THeaders;\n retryCount?: number;\n timeout?: number;\n}\n\nasync function request({ data, method, timeout, url, headers = {} }: IRequestParams): Promise {\n try {\n const axiosResponse = await axios.request({\n method,\n url,\n headers,\n timeout,\n data: prepareData(data),\n transformRequest: (requestData, requestHeaders) => {\n setHeaderContentType(requestHeaders);\n return requestData;\n },\n });\n\n const serverData = axiosResponse.data;\n return makeResponse({\n httpStatus: axiosResponse.status,\n responseStatus: serverData.statusCode,\n success: serverData.success,\n timestamp: serverData.timestamp,\n data: serverData.data ?? null,\n message: serverData.message ?? null,\n error: serverData.error ?? null,\n });\n } catch (e) {\n const serverData = e?.response?.data ?? {};\n return makeResponse({\n httpStatus: e?.response?.status ?? 0,\n responseStatus: serverData.statusCode ?? null,\n success: false,\n data: serverData.data ?? null,\n error: serverData.error ?? null,\n message: serverData.message ?? null,\n });\n }\n}\n\nfunction makeResponse(params: Partial): IResponse {\n return {\n httpStatus: params.httpStatus ?? 0,\n responseStatus: params.responseStatus ?? null,\n success: params.success ?? false,\n data: params.data ?? null,\n timestamp: params.timestamp ?? null,\n error: params.error ?? null,\n message: params.message ?? null,\n };\n}\n\nfunction setHeaderContentType(headers: THeaders) {\n if (!headers[\"Content-Type\"]) {\n headers[\"Content-Type\"] = \"application/json; charset=utf-8\";\n }\n}\n\nfunction prepareData(data: unknown) {\n if (data instanceof FormData) {\n return data;\n }\n\n if (typeof data == \"object\" && data != null) {\n return JSON.stringify(data);\n }\n\n return data;\n}\n\nconst httpService = new HttpService();\nexport default httpService;\n","import config from \"../config/config\";\nimport httpService, {IResponse} from \"../http/HttpService\";\n\nconst PROMO_CODES_CODE_URL = `${config.apiUrl}/promocode-certificates`;\n\ninterface IActivatePromocode {\n promocode: string;\n}\n\nclass ActivatePromoCodeCodeApi {\n activate(data: IActivatePromocode): Promise {\n return httpService.get(`${PROMO_CODES_CODE_URL}/verification?promocode=${data.promocode}`, undefined, {headers: {\"Content-type\": \"application/pdf\"}, encoding: \"binary\",});\n }\n}\n\nexport default ActivatePromoCodeCodeApi;\n\n","import ActivatePromoCodeCodeApi from \"./api\";\n\nconst ACTIVATE_ERRORS: Record = {\n 1013: \"Промокод уже активирован\",\n 1014: \"Промокод не найден\",\n 1015: \"Промокод не оплачен\",\n 1016: \"Некорректные символы в промокоде\",\n 1017: \"Вы уже активировали этот промокод\",\n};\n\ninterface IActivateResult {\n success: boolean;\n data: any;\n errorMessage?: string;\n}\n\nclass ActivateCodePromocodeController {\n private api = new ActivatePromoCodeCodeApi();\n\n async activateCodePromocode(promocode: string): Promise {\n const response = await this.api.activate({\n promocode\n });\n\n return {\n success: response.success,\n data: response.data,\n errorMessage: ACTIVATE_ERRORS[response.responseStatus!] ?? undefined,\n };\n }\n}\n\nexport default ActivateCodePromocodeController;\n","import React, { useCallback, useState } from 'react';\nimport CustomButton from '../CustomButton/CustomButton';\nimport Selector from '../Selector/Selector';\nimport './PromoCalculator.css';\nimport { IMainScreenState } from \"../../types/IMainScreenState\";\nimport PhoneInput from 'react-phone-input-2';\nimport CustomInput from '../CustomInput/CustomInput';\nimport ActivateCodePromocodeController from '../../core/activateCodePromocode/controller';\nimport config from '../../core/config/config';\n\nexport interface ICalculatorProps {\n data: IMainScreenState;\n onClick?: () => void;\n onDataChange?: (state: IMainScreenState) => void;\n promoCalculator: boolean;\n}\n\nconst PromoCalculator: React.FC = ({ data, onClick, onDataChange = () => { }, promoCalculator }) => {\n const [price, setPrice] = useState(\n {\n newPrice: 379,\n discount: 34,\n benefit: 0,\n month: 12,\n }\n );\n const controller = new ActivateCodePromocodeController();\n const [promocodeDiscount, setPromocodeDiscount] = useState(1);\n const [phone, setPhone] = useState(\"\");\n const [phoneFlag, setPhoneFlag] = useState(false);\n const [code, setCode] = useState(false);\n const [codeData, setCodeData] = useState(\"\");\n const [error, setError] = useState(false);\n const [codeReq, setCodeReq] = useState(true);\n const dayDiscount = (price.newPrice / price.month) - ((price.newPrice / price.month) * (price.discount / 100));\n const dayDiscountWithPromocode = (code && !error) ? (dayDiscount * (promocodeDiscount / 100)) : 0;\n\n\n const getPrice = useCallback((priceInfo) => {\n setPrice(priceInfo);\n onDataChange({\n ...data,\n months: priceInfo.month,\n price: Math.floor((priceInfo.newPrice - priceInfo.benefit - ((code && !error) ? (((priceInfo.newPrice - priceInfo.benefit) * promocodeDiscount) / 100) : 0))),\n discount: priceInfo.discount,\n });\n }, [data, onDataChange, setPrice]);\n\n const handleCodeChange = useCallback(\n (event: React.ChangeEvent) => {\n const text = event.target.value.replace(/\\W/g, '').toUpperCase();\n setCodeData(text);\n if(text.length > 3) {\n setCodeReq(false);\n } else {\n setCodeReq(true);\n }\n }, [setCodeData, codeData])\n\n const handlePhone = useCallback(\n (phone: string) => {\n setPhone(phone);\n onDataChange({\n ...data,\n phone,\n })\n if (phone.length >= 4 && phone.length <= 20) {\n setPhoneFlag(true);\n } else {\n setPhoneFlag(false);\n }\n }, [setPhone, setPhoneFlag, data, onDataChange])\n\n const onClickCode = useCallback(async () => {\n const activateResult = await controller.activateCodePromocode(codeData);\n if (activateResult.success) {\n setCode(true);\n setError(false);\n setPromocodeDiscount(activateResult.data.discount);\n const sumBenefit = price.newPrice - price.benefit;\n onDataChange({\n ...data,\n price: Math.floor((sumBenefit - ((sumBenefit * activateResult.data.discount) / 100) )),\n });\n return;\n } else {\n const sumBenefit = price.newPrice - price.benefit;\n setError(true);\n setCode(false);\n setPromocodeDiscount(1);\n onDataChange({\n ...data,\n price: Math.floor(sumBenefit),\n });\n }\n }, [setCode, codeData, onDataChange, setPromocodeDiscount, promocodeDiscount])\n\n const onClickResetCode = useCallback(() => {\n setCodeData('');\n const sumBenefit = price.newPrice - price.benefit;\n setPromocodeDiscount(1);\n onDataChange({\n ...data,\n price: Math.floor(sumBenefit),\n });\n setCodeReq(true);\n setCode(false);\n }, [setCode])\n\n return (\n
\n
\n

Оформить подписку

\n
\n \n
\n

На этот номер телефона будет оформлена подписка

\n
\n
\n

Месяцев

\n

Цена

\n {price.month !== 1 &&

Скидка за период

}\n {code &&

Скидка по коду

}\n {

Итого к оплате

}\n {price.month !== 1 &&

Цена за 1 месяц

}\n
\n
\n \n
\n

{(price.newPrice).toLocaleString('ru-RU') || 0}

\n {price.month !== 1 &&

-{price.discount}%

}\n {code &&

-{promocodeDiscount}%

}\n {

{(price.newPrice - price.benefit - ((code && !error) ? (((price.newPrice - price.benefit) * promocodeDiscount) / 100) : 0)).toLocaleString('ru-RU') || 0}

}\n {price.month !== 1 &&

{((price.newPrice / price.month) - ((price.newPrice / price.month) * (price.discount / 100)) - dayDiscountWithPromocode).toLocaleString('ru-RU') || 0}

}\n
\n
\n
\n \n
\n
\n
\n
\n {!code && handleCodeChange(value)} inputClassName=\"CalculatorDiscountInput\" minLength={4} maxLength={20} />}\n {code && !error &&

Ваш код успешно применен

}\n {!code && }\n
\n {code &&
\n \n
}\n
\n {error &&
\n

Указанный код на скидку не найден или не действителен

\n
}\n \n \n

\n {\"Оформляя покупку, вы соглашаетесь с \"}\n Договором оферты\n

\n
\n
\n );\n}\n\nexport default PromoCalculator;\nfunction setError(arg0: any) {\n throw new Error('Function not implemented.');\n}\n\n","import React, { } from 'react';\nimport Calculator from '../Calculator/Calculator';\nimport { IMainScreenState } from \"../../types/IMainScreenState\";\nimport PromoCalculator from '../PromoCalculator/PromoCalculator';\nimport { useHolidaysTheme } from '../../themes/useTheme';\nimport { useTimer } from '../../themes/useTimer';\nconst birthdayIcon = \"images/BirthdayIcon.png\";\nconst giftBox = \"images/GiftBox.png\";\n\ninterface IProps {\n promoCalculator?: boolean;\n data: IMainScreenState;\n onBuyClick: () => void;\n onDataChange: (newState: IMainScreenState) => void;\n}\n\nconst UpperMainBlock: React.FC = ({ data, onBuyClick, onDataChange, promoCalculator }) => {\n const { currentDayNumber, daysLeft, themeText, styles, isHoliday, isPink, isBirthday, isBlackFriday, nextTimeout } = useHolidaysTheme()\n // console.log('isHoliday', isHoliday)\n useTimer(isHoliday, nextTimeout)\n // console.log('nextTimeout', nextTimeout)\n const createMarkup = (text: string, margin?: number) => {\n if (!text) return ''\n return text.split('\\n').map((str, key) =>

{str}

)\n }\n\n return (\n
\n {isBirthday ?\n :\n
\n }\n {(isHoliday && nextTimeout) &&\n
\n
\n До конца {isPink && daysLeft > 0 ? currentDayNumber + ' дня' : ''} акции осталось:\n
\n
\n
\n }\n
\n
\n
\n
\n
\n
\n {promoCalculator\n ? \n : }\n
\n Как это работает?\n
\n
{createMarkup(themeText.title, 15)}
\n
{createMarkup(themeText.subtitle, 15)}
\n
{createMarkup(themeText.subtitleExtra, 15)}
\n
\n\n {isBlackFriday &&
}\n {isBlackFriday &&\n

\n {createMarkup(themeText.calcTitle)}\n

{themeText.calcSubtitle}

\n \n

\n }\n
\n
\n );\n}\n\nexport default UpperMainBlock;\n","import moment from \"moment\";\nimport { useLayoutEffect } from \"react\";\n\nexport const useTimer = (show: boolean, tillDate?: number) => {\n // console.log('tillDate', tillDate)\n\n // from https://megatimer.ru\n\n useLayoutEffect(() => {\n if (!show) return\n var _id = \"cec83824777491b4b59b1d363b66b0190\";\n new window.MegaTimer(\n _id, {\n \"view\": [1, 1, 1, 1],\n \"type\": {\n \"currentType\": \"1\",\n \"params\": { \"usertime\": false, \"tz\": \"3\", \"utc\": tillDate }\n },\n \"design\": {\n \"type\": \"plate\", \n \"params\": {\n \"round\": \"0\", \n \"background\": \"opacity\", \n \"effect\": \"slide\", \n \"space\": \"0\", \n \"separator-margin\": \"19\",\n \"number-font-family\": { \n \"family\": \"Comfortaa\", \"link\": \"\" \n },\n \"number-font-size\": \"24\", \n \"number-font-color\": \"#919191\", \n \"padding\": \"6\", \n \"separator-on\": true, \n \"separator-text\": \":\", \n \"text-on\": true,\n \"text-font-family\": { \n \"family\": \"Arial\" \n }, \n \"text-font-size\": \"12\", \n \"text-font-color\": \"#999999\"\n }\n }, \n \"designId\": 4, \n \"theme\": \"white\", \n \"width\": 630, \n \"height\": 98\n })\n }, [show])\n \n}","import { TPayMethod } from \"../../types/TPayMethod\";\nimport config from \"../config/config\";\nimport httpService from \"../http/HttpService\";\nimport { TPaymentMethod } from \"./controller\";\n\nconst PROMO_CODES_URL = `${config.apiUrl}/promocodes`;\n\ninterface ICreatePromoCodeRequest {\n phone?: string;\n email: string;\n months: number;\n amountTotal: number;\n price: number;\n isCorporate: boolean;\n method: TPayMethod;\n text?: string;\n discount?: number;\n discountCorporation?: number;\n companyName?: string,\n inn?: string,\n workPhone?: string,\n legalAddress?: string,\n paymentMethod?: TPaymentMethod,\n isForever?: boolean\n}\n\ninterface ICreatePromoCodeResponse {\n id: number;\n text: string;\n amountTotal: number;\n amountLeft: number;\n months: number;\n price: number;\n phone: string;\n email: string;\n method: string;\n isCorporate: boolean;\n creationDate: string;\n paymentDate: string;\n link?: string;\n}\n\nclass BuyGiftSubscriptionApi {\n async createPromoCode(data: ICreatePromoCodeRequest): Promise {\n const response = await httpService.post(`${PROMO_CODES_URL}/buy`, data);\n return response.success ? response.data as ICreatePromoCodeResponse : null;\n }\n}\n\nexport default BuyGiftSubscriptionApi;\n","import BuyGiftSubscriptionApi from \"./api\";\nimport config from \"../config/config\";\nimport \"./TinkoffFrameFix.css\";\n\ninterface IPromoCode {\n id: number;\n text: string;\n price: number;\n amountTotal: number;\n paymentLink?: string;\n}\n\nexport type TPaymentMethod = 'tinkoff' | 'stripe'\n\nclass BuyGiftSubscriptionController {\n private api = new BuyGiftSubscriptionApi();\n\n async buyPromoCode(email: string, months: number, price: number, discount: number, paymentMethod: TPaymentMethod, isForever?: boolean): Promise {\n const promoCode = await this.createPromoCode(email, months, price, discount, paymentMethod, isForever);\n if (!promoCode) {\n return false\n }\n // if (!await this.requestUserPayment(email, promoCode, months)) {\n // return false;\n // }\n\n return promoCode;\n }\n\n private async createPromoCode(email: string, months: number, price: number, discount: number, paymentMethod?: TPaymentMethod, isForever?: boolean): Promise {\n const response = await this.api.createPromoCode({\n isCorporate: false,\n method: \"card\",\n amountTotal: 1,\n email,\n months,\n price,\n discount,\n paymentMethod,\n isForever\n })\n\n if (!response) {\n return null;\n }\n\n return {\n id: response.id,\n text: response.text,\n price: response.price,\n amountTotal: response.amountTotal,\n paymentLink: response.link,\n }\n }\n\n private async requestUserPayment(email: string, promoCode: IPromoCode, months: number): Promise {\n const form = this.createTinkoffForm({\n totalPrice: promoCode.amountTotal * promoCode.price,\n orderId: promoCode.id,\n description: `Подписка на ${months} месяцев для ${email}`,\n email\n })\n window.pay(form);\n return true;\n }\n\n private createTinkoffForm(params: {\n totalPrice: number,\n orderId: number,\n description: string,\n email: string,\n }) {\n const receiptData =\n {\n Email: params.email,\n EmailCompany: \"help@prostoapp.com\",\n Taxation: \"usn_income\",\n Items: [{\n Name: \"Cертификат на подписку на приложение Prosto\",\n Price: params.totalPrice * 100,\n Quantity: 1.00,\n Amount: params.totalPrice * 100,\n Tax: \"none\",\n }],\n }\n\n const form = document.createElement(\"form\");\n\n const fields = document.createDocumentFragment();\n fields.appendChild(this.createInput(\"terminalkey\", config.tinkoffTerminalKey));\n fields.appendChild(this.createInput(\"frame\", \"true\"));\n fields.appendChild(this.createInput(\"language\", \"ru\"));\n fields.appendChild(this.createInput(\"amount\", params.totalPrice.toString()));\n fields.appendChild(this.createInput(\"order\", params.orderId.toString()));\n fields.appendChild(this.createInput(\"description\", params.description));\n fields.appendChild(this.createInput(\"email\", params.email));\n fields.appendChild(this.createInput(\"receipt\", JSON.stringify(receiptData)));\n\n\n form.appendChild(fields);\n\n return form;\n }\n\n private createInput(name: string, value: string) {\n const input = document.createElement(\"input\");\n input.type = \"hidden\";\n input.name = name;\n input.value = value;\n return input;\n }\n}\n\nexport default BuyGiftSubscriptionController\n","import React, { useCallback, useEffect, useState } from 'react';\nimport BottomMainBlock from '../../components/BottomMainBlock/BottomMainBlock';\nimport Footer from '../../components/Footer/Footer';\nimport UpperMainBlock from '../../components/UpperMainBlock/UpperMainBlock';\nimport BuyGiftSubscriptionController from \"../../core/buyGiftSubscription/controller\";\nimport { IMainScreenState } from \"../../types/IMainScreenState\";\nimport config from '../../core/config/config';\nimport domainRouter from \"../../navigation/domainRouter\";\nimport debounce from \"lodash.debounce\";\nimport { useHolidaysTheme } from '../../themes/useTheme';\nimport ym from 'react-yandex-metrika';\n\nconst controller = new BuyGiftSubscriptionController();\nconst MainScreen: React.FC = () => {\n console.log('podarok')\n const { isBlackFriday} = useHolidaysTheme()\n\n const [screenState, setScreenState] = useState({\n email: \"\",\n confirmEmail: false,\n promocodeId: null,\n text: \"\",\n months: 0,\n price: 0,\n phone: \"\",\n discount: 0,\n canPay: false,\n paymentMethod: 'tinkoff',\n });\n\n const handleDataChange = useCallback((newState: IMainScreenState) => {\n setScreenState({\n ...newState,\n canPay: isValidEmail(newState.email) && newState.confirmEmail,\n });\n }, []);\n\n const handleBuyClick = useCallback(debounce(async () => {\n // ym('reachGoal', 'oplatit');\n window.generalPixel.postClick('a2');\n const { email, months, price, discount, paymentMethod } = screenState\n const promocode = await controller.buyPromoCode(email, months, price, discount, paymentMethod);\n\n setScreenState({ ...screenState, loading: true })\n\n if (!promocode) {\n setScreenState({ ...screenState, loading: false })\n alert(\"Не получилось. Попробуйте ещё раз.\");\n return;\n }\n\n if (promocode.paymentLink) {\n window.location.href = promocode.paymentLink\n } else {\n setScreenState({ ...screenState, loading: false })\n alert(\"Не получилось сгенерировать форму для оплаты! Попробуйте ещё раз.\");\n }\n\n }, 2000, { leading: true, trailing: false }), [screenState])\n\n const handleActivateClick = useCallback(() => {\n domainRouter.go(config.codeRoute);\n }, []);\n\n // useEffect(() => {\n // window.location.replace(\"https://wow.prostoapp.ru\");\n // }, [])\n\n return (\n <>\n \n \n
\n \n );\n}\n\nexport function isValidEmail(value: string): boolean {\n const EMAIL_REG = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n return EMAIL_REG.test(value);\n}\n\nexport const createMarkup = (text?: string) => {\n if (!text) return ''\n return text.split('\\n').map((str, key) =>

{str}

)\n}\n\nexport default MainScreen;\n","import React, { useCallback, useState } from 'react';\n\ntype CertificateSheetProps = {\n partner?: string | null\n}\n\nconst PARTNERS: any = {\n 'empty': {},\n 'fitstars': {\n name: 'Fitstars',\n color: '#FD2BE6',\n present: \"images/partners/fitstars-present.png\",\n logo: \"images/partners/fitstars.png\",\n title: '№1 фитнес-платформа для домашних тренировок в России',\n gift: 'Месяц тренировок без оплаты',\n code: 'PROSTOAPP',\n instructionsLink: 'http://wow.prostoapp.ru/fitstars',\n info: \"images/partners/fitstars-info.png\",\n },\n 'yasno': {\n name: 'Ясно',\n color: '#42B2FC',\n present: \"images/partners/yasno-present.png\",\n logo: \"images/partners/yasno.png\",\n title: 'сервис подбора и консультаций с психологом онлайн',\n gift: 'Скидка 20% на первые 3 консультации',\n code: 'YASNO',\n instructionsLink: 'http://wow.prostoapp.ru/yasno',\n info: \"images/partners/yasno-info.png\",\n },\n 'synchro': {\n name: 'Синхронизация',\n color: '#A67CB6',\n present: \"images/partners/synchro-present.png\",\n logo: \"images/partners/synchro.png\",\n title: `это онлайн-лекторий с курсами, которые вдохновляют. \nВырвитесь из рутины и найдите новые \nтемы для общения с близкими, подарив\nсебе интересный и развивающий досуг \nна полгода вперед`,\n gift: 'Скидка 30% на 6 месяцев подписки',\n code: 'ПРОСТО',\n instructionsLink: 'http://wow.prostoapp.ru/synchronize',\n info: \"images/partners/synchro-info.png\",\n },\n 'sekta': {\n name: '#Sekta',\n color: '#3ED8C4',\n present: \"images/partners/sekta-present.png\",\n logo: \"images/partners/sekta.png\",\n title: `онлайн-школа фитнеса с научным подходом `,\n gift: 'Скидка 10% при оплате любого комплексного курса',\n code: 'PROSTO',\n instructionsLink: 'http://wow.prostoapp.ru/sektaschool',\n info: \"images/partners/sekta-info.png\",\n },\n 'studio': {\n name: 'Prosto Studio',\n color: '#5C84B2',\n present: \"images/partners/studio-present.png\",\n logo: \"images/partners/studio.png\",\n title: `телесные практики для управления эмоциональным состоянием.`,\n gift: 'Доступ к 3 занятиям без оплаты',\n code: 'PROSTO',\n instructionsLink: 'https://t.me/+UWSImQtTFVs2ZDNi',\n info: \"images/partners/studio-info.png\",\n }\n}\n\nconst PartnerCertificate = ({ partner }: CertificateSheetProps) => {\n\n const params = PARTNERS[partner || 'empty']\n\n const [copiedToClipboard, setCopiedToClipboard] = useState(false)\n\n const copyCodeToClipboard = useCallback(() => {\n if (copiedToClipboard) {\n return setCopiedToClipboard(false)\n }\n navigator.clipboard.writeText(params.code || '')\n setCopiedToClipboard(true)\n }, [params, copiedToClipboard])\n\n return (\n params?.name ?\n <>\n
\n
\n \n
\n\n

\n Подарок от партнёра\n

\n
\n
\n \n
\n
\n

\n {params.name} - {params.title}\n

\n

\n {params.gift}\n

\n {partner === 'studio' ? <>\n
\n \n \n \n
\n Состояние\n \n Действие\n \n Результат\n
\n
\n : <>\n
\n Промокод\n
\n {copiedToClipboard ?\n

\n {'Скопировано'}\n

:\n <>\n

\n {params.code}\n

\n \n \n }\n
\n
\n

Инструкция по промокоду —\n по ссылке.\n

\n \n }\n\n
\n
\n \n
\n
\n
\n
\n\n
\n
\n \n

\n Подарок
\n от партнёра\n

\n
\n
\n \n
\n

\n {params.name} - {params.title}\n

\n
\n

\n {params.gift}\n

\n {partner === 'studio' ? <>\n
\n \n \n \n
\n Состояние\n \n Действие\n \n Результат\n
\n
\n : <>\n
\n

Промокод

\n\n
\n {copiedToClipboard ?\n

\n {'Скопировано'}\n

:\n <>\n

\n {params.code}\n

\n \n \n }\n
\n
\n

Инструкция по промокоду —
\n по ссылке.\n

\n \n }\n
\n \n
\n\n
\n
\n
\n \n : <>\n );\n}\n\nexport default PartnerCertificate;\n","import React, { useCallback, useEffect, useState } from 'react';\nimport PartnerCertificate from './PartnerCertificate';\nimport config from '../../core/config/config';\n\ntype CertificateSheetProps = {\n visible: boolean\n code: string | null,\n id: string | null,\n isForever: string | null,\n partner: string | null,\n}\n\nconst CertificateSheet = ({ code, id, isForever, partner }: CertificateSheetProps) => {\n // console.log('visible', visible)\n const [visible, setVisible] = useState(false)\n const [copiedToClipboard, setCopiedToClipboard] = useState(false)\n\n const copyCodeToClipboard = useCallback(() => {\n if (copiedToClipboard) {\n return setCopiedToClipboard(false)\n }\n navigator.clipboard.writeText(code || '')\n setCopiedToClipboard(true)\n }, [code, copiedToClipboard])\n\n const downloadPdf = useCallback(() => {\n if (id === null) return alert('Сертификат не валидный')\n const PDF_DOWNLOAD_URL = `${config.apiUrl}/promocodes`;\n window.location.href = `${PDF_DOWNLOAD_URL}/${id}/certificate?text=${code}`\n }, [code, id])\n\n useEffect(() => {\n setVisible(true)\n })\n\n return (\n <>\n
\n
\n \n
\n
\n \n {isForever === null ?\n <> :\n

\n Поздравляем с покупкой\n доступа Prosto {isForever === 'true' ? 'Навсегда ' : 'на год '}
\n со скидкой 72%!\n

\n }\n
\n\n
\n

\n Подарочный сертификат\n

\n
\n {copiedToClipboard ?\n

\n {'Скопировано'}\n

:\n <>\n

\n {code || ''}\n

\n \n \n }\n
\n \n Активируйте на сайте code.prostoapp.ru\n \n
\n \n

\n {'Распечатать'}\n

\n
\n {/*
\n \n
*/}\n
\n\n

\n Как пользоваться?\n

\n
\n
\n
\n \n

\n Зайдите на сайт
\n code.prostoapp.ru
\n и активируйте промокод\n

\n
\n\n
\n \n

\n Выберите номер телефона или адрес
\n почты, который будете использовать
\n для входа в приложение\n

\n\n
\n\n
\n \n

\n Если у вас есть аккаунт Prosto,
\n проверьте логин в профиле — это
\n номер/почта, или если Apple ID/Google,
\n то добавьте адрес почты и используйте
\n его для активации\n

\n
\n\n
\n \n

\n После активации промокода войдите
\n в приложение под указанным номером
\n телефона или почтой.\n \n Если у вас была
\n активная подписка — отмените ее\n
\n

\n\n
\n\n
\n
\n \n
\n
\n\n \n\n
\n \n

\n Служба заботы
\n С 09:00 до 21:00

\n \n help@prostoapp.com\n \n

\n

\n \n
\n\n
\n\n
\n
\n \n

\n Prosto — Nº1 приложение
\n для медитации и сна в России\n

\n
\n
\n \n {isForever === null ?\n <> :\n

\n Поздравляем с покупкой\n доступа Prosto {isForever === 'true' ? 'Навсегда ' : 'на год '}
\n со скидкой 72%!\n

\n }\n
\n\n
\n

\n Подарочный
сертификат\n

\n
\n {copiedToClipboard ?\n

\n {'Скопировано'}\n

:\n
\n

\n {code || ''}\n

\n \n
\n }\n
\n \n Активируйте на сайте
\n code.prostoapp.ru\n
\n
\n \n

\n {'Распечатать'}\n

\n
\n {/* */}\n
\n\n

\n Как пользоваться?\n

\n
\n
\n
\n \n

\n Зайдите на сайт
\n code.prostoapp.ru
\n и активируйте
\n промокод\n

\n
\n\n
\n \n

\n Выберите номер телефона
\n или адрес почты, который
\n будете использовать
\n для входа в приложение\n

\n
\n\n
\n \n

\n Если у вас есть аккаунт Prosto,
\n проверьте логин в профиле —
\n это номер/почта, или если Apple
\n ID/Google, то добавьте адрес почты
\n и используйте его для активации\n

\n
\n\n
\n \n

\n После активации промокода
\n войдите в приложение под
\n указанным номером
\n телефона или почтой.
\n \n Если у вас была активная
подписка — отмените ее\n
\n

\n\n
\n\n
\n
\n \n
\n
\n\n \n\n
\n \n

\n Служба заботы
\n С 09:00 до 21:00

\n \n help@prostoapp.com\n \n

\n

\n \n
\n\n
\n\n \n );\n}\n\nexport default CertificateSheet;\n","import React, { useCallback, useState } from 'react';\nimport Lottie from 'react-lottie';\nimport CertificateSheet from './CertificateSheet';\n\nconst animationOptions = {\n loop: false,\n autoplay: true,\n animationData: require('../../assets/animations/1.json'),\n rendererSettings: {\n preserveAspectRatio: 'xMidYMid meet'\n }\n};\n\nconst introAnimation = require('../../assets/animations/1.json')\nconst introAnimationMobile = require('../../assets/animations/1-mobile.json')\n\nconst openAnimation = require('../../assets/animations/2.json')\nconst openAnimationMobile = require('../../assets/animations/2-mobile.json')\nconst openAnimationYear = require('../../assets/animations/2-year.json')\nconst openAnimationYearMobile = require('../../assets/animations/2-year-mobile.json')\n\nconst CertificateOpen: React.FC = () => {\n const isMobile = window.screen.availWidth < 801\n // console.log('isMobile', isMobile)\n const params = new URLSearchParams(window.location.search)\n const code = params.get(\"code\")\n const id = params.get(\"id\")\n const isForever = params.get(\"isForever\")\n const partner = params.get(\"partner\")\n const [introPlayed, setIntroPlayed] = useState(false)\n const [showOpenAnimation, setShowOpenAnimation] = useState(false)\n const [showCertificateSheet, setShowCertificateSheet] = useState(false)\n\n const openCertificate = useCallback(() => {\n if (!introPlayed) return\n setShowOpenAnimation(true)\n }, [introPlayed])\n\n return (\n
\n {!showOpenAnimation ?\n
\n setIntroPlayed(true),\n },\n ]}\n />\n
:\n \n setShowCertificateSheet(true),\n },\n ]}\n />\n
\n }\n {showCertificateSheet &&\n }\n
\n );\n}\n\nexport default CertificateOpen;\n","import React from 'react';\nimport { Route, Switch } from 'react-router-dom';\nimport CertificateScreen from '../screens/CertificateScreen/CertificateScreen';\nimport MainScreen from \"../screens/MainScreen/MainScreen\";\nimport HB24Screen from '../screens/HB24Screen/HB24Screen';\nimport ForeverScreen from '../screens/ForeverScreen/ForeverScreen';\nimport CertificateOpen from '../screens/CertificateOpen/CertificateOpen';\n\nconst MainRoutes: React.FC = () => {\n\n return (\n
\n \n \n \n \n {/* */}\n {/* */}\n \n
\n );\n}\n\nexport default MainRoutes;\n","import config from \"../config/config\";\nimport httpService, {IResponse} from \"../http/HttpService\";\n\nconst PROMO_CODES_URL = `${config.apiUrl}/promocodes`;\n\ninterface IActivateRequest {\n phone: string;\n promocode: string;\n}\n\nclass ActivatePromoCodeApi {\n activate(data: IActivateRequest): Promise {\n return httpService.post(`${PROMO_CODES_URL}/activate`, data);\n }\n}\n\nexport default ActivatePromoCodeApi;\n","import ActivatePromoCodeApi from \"./api\";\n\nconst ACTIVATE_ERRORS: Record = {\n 1013: \"Промокод уже активирован\",\n 1014: \"Промокод не найден\",\n 1015: \"Промокод не оплачен\",\n 1016: \"Некорректные символы в промокоде\",\n 1017: \"Вы уже активировали этот промокод\",\n};\n\ninterface IActivateResult {\n success: boolean;\n errorMessage?: string;\n}\n\nclass ActivatePromoCodeController {\n private api = new ActivatePromoCodeApi();\n\n async activatePromoCode(activatePromoCodeData: any): Promise {\n \n const response = await this.api.activate(activatePromoCodeData);\n\n return {\n success: response.success,\n errorMessage: ACTIVATE_ERRORS[response.responseStatus!] ?? undefined,\n };\n }\n}\n\nexport default ActivatePromoCodeController;\n","import React, { useCallback, useState } from 'react';\nimport { useHistory } from \"react-router-dom\";\nimport CustomButton from '../../components/CustomButton/CustomButton';\nimport Footer from '../../components/Footer/Footer';\nimport PhoneInput from 'react-phone-input-2'\nimport './CodeActivation.css';\nimport ActivatePromoCodeController from '../../core/activatePromoCode/controller';\nimport domainRouter from \"../../navigation/domainRouter\";\nimport config from '../../core/config/config';\nimport CustomCheckbox from '../../components/CustomCheckbox/CustomCheckbox';\nimport { isValidEmail } from '../MainScreen/MainScreen';\nimport CustomInput from '../../components/CustomInput/CustomInput';\n\nconst prostoAppIcon = \"images/ProstoappIcon.png\";\nconst CodeActivationPresent = \"images/Present.png\";\n\nconst controller = new ActivatePromoCodeController();\n\nconst CodeActivation: React.FC = () => {\n const [activationType, setActivationType] = useState<'email' | 'phone'>('email');\n const [code, setCode] = useState(\"\");\n const [phone, setPhone] = useState(\"\");\n const [email, setEmail] = useState(\"\");\n const [confirmCorrectInput, setConfirmCorrectInput] = useState(false);\n const [error, setError] = useState(null)\n const history = useHistory();\n\n const validateForm = useCallback(() => {\n // validate promo code\n const reg = /[A-Za-z0-9]+/;\n const validation = reg.test(code);\n if (!validation || code.length < 4) {\n setError('Неверный промокод')\n return false\n }\n // validate email\n if (activationType === 'email') {\n if (!isValidEmail(email)) {\n setError('Неверный email')\n return false\n }\n } else {\n console.log('phone', phone)\n if (phone.length < 4 || phone.length > 20) {\n setError('Неверный номер телефона')\n return false\n }\n }\n setConfirmCorrectInput(true)\n return true\n }, [activationType, code, phone, email, setError]);\n\n const handleActivation = useCallback(async () => {\n if (validateForm()) {\n const activatePromoCodeData: any = { promocode: code }\n\n if (activationType === 'email') {\n activatePromoCodeData['email'] = email\n } else {\n activatePromoCodeData['phone'] = phone\n }\n\n const activateResult = await controller.activatePromoCode(activatePromoCodeData);\n\n if (activateResult.success) {\n history.push(\"/activated\");\n return;\n }\n\n setError(activateResult.errorMessage ?? \"Неизвестная ошибка\");\n }\n }, [activationType, code, phone, email, setError]);\n\n const handleBuy = useCallback(() => {\n domainRouter.go(config.giftRoute);\n }, [])\n\n const handleCode = useCallback(\n (event: React.ChangeEvent) => {\n const text = event.target.value.replace(/\\W/g, '').toUpperCase();\n setCode(text);\n setError(null)\n }, [setCode, setError])\n\n const handlePhone = useCallback(\n (phoneNumber: string) => {\n setPhone(phoneNumber)\n setError(null)\n }, [setPhone, setError])\n\n const handleEmail = useCallback(\n (email: string) => {\n setEmail(email)\n setError(null)\n }, [setEmail, setError])\n\n const changeActivationType = useCallback((type: 'email' | 'phone') => {\n setActivationType(type)\n setConfirmCorrectInput(false)\n setError(null)\n }, [])\n\n\n return (\n
\n \n
\n

Активация промокода

\n
\n changeActivationType('email')}>\n Email\n \n changeActivationType('phone')} >\n Телефон\n \n
\n
\n Выберите номер телефона или адрес почты,\n который будете использовать для входа в приложение.\n
\n
\n Если у вас есть аккаунт Prosto, проверьте логин в профиле —\n это номер/почта, или если Apple ID/Google,\n то добавьте адрес почты и используйте его для активации\n
\n
\n
\n {activationType === 'phone' ?\n :\n handleEmail(e.target.value)}\n />\n }\n
\n
\n \n
\n
\n \n {\n error &&

{error}

\n }\n
\n
\n \n
\n
\n
\n \n
\n \n
\n
\n
\n
\n
\n );\n}\n\nexport default CodeActivation;\n","import styles from \"./CodeActivated.module.css\";\nimport React, { useCallback } from \"react\";\nimport CustomButton from \"../../components/CustomButton/CustomButton\";\nimport Footer from \"../../components/Footer/Footer\";\n\nconst prostoAppIcon = \"images/ProstoappIcon.png\";\nconst activatedIcon = \"images/Firework.png\";\n\nconst CodeActivated: React.FC = () => {\n const handleIOsClick = useCallback(() => {\n window.location.href = \"https://apps.apple.com/ru/app/просто-медитация-и-сон/id1490891826?mt=8\";\n }, []);\n\n const handleAndroidClick = useCallback(() => {\n window.location.href = \"https://play.google.com/store/apps/details?id=com.prostoapp&pcampaignid=pcampaignidMKT-Other-global-all-co-prtnr-py-PartBadge-Mar2515-1\";\n }, []);\n\n return (\n
\n \n
\n \n

Промокод успешно активирован

\n

\n Войдите в приложение под указанным email или номером телефона.\n Вы увидите сообщение, что получили подписку в подарок\n

\n
\n
\n \n \n
\n
\n
\n );\n}\n\nexport default CodeActivated;\n","import React from 'react';\nimport { Route, Switch } from 'react-router-dom';\nimport CodeActivation from '../screens/CodeActivation/CodeActivation';\nimport CodeActivated from \"../screens/CodeActivated/CodeActivated\";\n\nconst CodeRoutes: React.FC = () => {\n\n return (\n
\n \n \n \n \n
\n );\n}\n\nexport default CodeRoutes;\n","import React, { useCallback } from \"react\";\nimport styles from \"./CorporateRadio.module.css\";\nimport { Label, Radio } from \"theme-ui\";\nimport { TPayMethod } from \"../../types/TPayMethod\";\n\ninterface IProps {\n value?: TPayMethod;\n onChange?: (newValue: TPayMethod) => void;\n}\n\nconst CorporateRadio: React.FC = ({ value= \"card\", onChange= () => {} }) => {\n const handleChange = useCallback(\n (event: React.ChangeEvent) => {\n const newValue = event.currentTarget.value;\n if (newValue !== value) {\n onChange(newValue as TPayMethod);\n }\n },\n [onChange, value],\n );\n\n return (\n
\n \n \n
\n );\n}\n\nexport default CorporateRadio;\n","import styles from \"./CorporateCalculator.module.css\";\nimport React, { useCallback, useState } from \"react\";\nimport CustomInput from \"../CustomInput/CustomInput\";\nimport Selector from \"../Selector/Selector\";\nimport CustomButton from \"../CustomButton/CustomButton\";\nimport CorporateRadio from \"./CorporateRadio\";\nimport { ICorporateScreenState } from \"../../types/ICorporateScreenState\";\nimport { TPayMethod } from \"../../types/TPayMethod\";\nimport PhoneInput from \"react-phone-input-2\";\nimport config from \"../../core/config/config\";\n\nexport interface ICorporateCalculatorProps {\n data: ICorporateScreenState;\n onClick?: () => void;\n onDataChange: (state: ICorporateScreenState) => void;\n}\n\nconst CorporateCalculator: React.FC = ({ data, onClick, onDataChange }) => {\n const [price, setPrice] = useState(\n {\n count: 1,\n newPrice: 379,\n discount: 34,\n corporateDiscount: 40,\n benefit: 0,\n month: 12\n }\n );\n\n const handlePhoneChange = useCallback((phoneNumber: string) => {\n onDataChange({\n ...data,\n phone: phoneNumber,\n });\n }, [data, onDataChange]);\n\n const handleEmailChange = useCallback((event: React.ChangeEvent) => {\n onDataChange({\n ...data,\n email: event.target.value,\n });\n }, [data, onDataChange]);\n\n const handleCompanyChange = useCallback((event: React.ChangeEvent) => {\n onDataChange({\n ...data,\n companyName: event.target.value,\n });\n }, [data, onDataChange]);\n\n const handleINNChange = useCallback((event: React.ChangeEvent) => {\n onDataChange({\n ...data,\n inn: event.target.value,\n });\n }, [data, onDataChange]);\n\n const handleWorkPhoneChange = useCallback((phoneNumber: string) => {\n onDataChange({\n ...data,\n workPhone: phoneNumber,\n });\n }, [data, onDataChange]);\n\n const handleAddressChange = useCallback((event: React.ChangeEvent) => {\n onDataChange({\n ...data,\n legalAddress: event.target.value,\n });\n }, [data, onDataChange]);\n\n const getPrice = useCallback((priceInfo) => {\n setPrice(priceInfo);\n onDataChange({\n ...data,\n subscriptionCount: priceInfo.count,\n subscriptionDuration: priceInfo.month,\n subscriptionPrice: (priceInfo.newPrice - priceInfo.benefit) * priceInfo.count,\n discount: priceInfo.discount,\n corporateDiscount: priceInfo.corporateDiscount,\n })\n }, [data, onDataChange]);\n\n const handlePromoCodeChange = useCallback((event: React.ChangeEvent) => {\n const PROMO_CODE_SYMBOLS = /^[A-Z\\d]*$/;\n const newValue = event.target.value.toUpperCase();\n\n if (PROMO_CODE_SYMBOLS.test(newValue)) {\n onDataChange({\n ...data,\n promoCode: newValue,\n })\n }\n }, [data, onDataChange]);\n\n const handlePayMethodChange = useCallback((newValue: TPayMethod) => {\n onDataChange({\n ...data,\n payMethod: newValue\n })\n\n }, [data, onDataChange])\n\n\n return (\n
\n
\n
\n

Подарить спокойствие своим сотрудникам это просто.

\n
\n
\n \n
\n \n

На указанную почту будет отправлен сертификат

\n
\n
\n

Число подписок

\n

Тип подписки

\n

Цена

\n {!!price.discount &&

Скидка за период

}\n {!!price.corporateDiscount &&

Скидка корпоративная

}\n

Итого к оплате

\n
\n
\n \n
\n

\n {price.newPrice.toLocaleString('ru-RU') || 0} \n

\n {!!price.discount &&

-{price.discount}%

}\n {!!price.corporateDiscount &&

-{price.corporateDiscount}%

}\n

\n {((price.newPrice - price.benefit) * price.count).toLocaleString('ru-RU') || 0} \n

\n
\n
\n
\n
\n \n

Ваше пожелание по тому, как должен выглядеть промокод

\n
\n
\n
\n\n \n\n {(data.payMethod === 'bill') &&\n }\n {(data.payMethod === 'bill') &&\n }\n {(data.payMethod === 'bill') &&
\n \n
}\n {(data.payMethod === 'bill') &&\n }\n\n
\n \n
\n\n

\n {\"Оформляя покупку, вы соглашаетесь с \"}\n Договором оферты\n

\n
\n
\n );\n}\n\nexport default CorporateCalculator;\n","import React from \"react\";\nimport styles from \"./UpperCorporateBlock.module.css\";\nimport CorporateCalculator from \"../CorporateCalculator/CorporateCalculator\";\nimport { ICorporateScreenState } from \"../../types/ICorporateScreenState\";\n\ninterface IProps {\n data: ICorporateScreenState;\n onBuyClick: () => void;\n onDataChange: (newState: ICorporateScreenState) => void;\n}\n\n\nconst UpperCorporateBlock: React.FC = ({ data, onBuyClick, onDataChange }) => {\n return (\n
\n
\n
\n
\n
\n \n
\n Как это работает?\n
\n

Корпоративный подарок

\n

\n Поделись спокойствием, хорошим сном и осознанностью.\n Подарочный сертификат открывает доступ ко всем медитациям и образовательным видео приложения Prosto\n

\n
\n
\n
\n
\n
\n
\n );\n}\n\nexport default UpperCorporateBlock;\n","import React, { useCallback, useEffect, useState } from \"react\";\nimport UpperCorporateBlock from \"../../components/UpperCorporateBlock/UpperCorporateBlock\";\nimport BottomMainBlock from \"../../components/BottomMainBlock/BottomMainBlock\";\nimport Footer from \"../../components/Footer/Footer\";\nimport domainRouter from \"../../navigation/domainRouter\";\nimport config from \"../../core/config/config\";\nimport \"./CorporateSubscription.css\";\nimport { ICorporateScreenState } from \"../../types/ICorporateScreenState\";\nimport BuyCorporateSubscriptionController from \"../../core/buyCorporateSubscription/controller\";\nimport { useHistory } from \"react-router-dom\";\nimport debounce from \"lodash.debounce\";\nimport ym from \"react-yandex-metrika\";\n// import { withId } from 'react-yandex-metrika';\n\nconst controller = new BuyCorporateSubscriptionController();\nconst CorporateSubscription: React.FC = () => {\n console.log('corp')\n const [screenState, setScreenState] = useState({\n phone: \"\",\n email: \"\",\n subscriptionCount: 0,\n subscriptionDuration: 0,\n subscriptionPrice: 0,\n discount: 0,\n corporateDiscount: 0,\n promoCode: \"\",\n payMethod: \"card\",\n canPay: false,\n companyName: \"\",\n inn: \"\",\n workPhone: \"\",\n legalAddress: \"\"\n });\n\n const [screenStateCard, setScreenStateCard] = useState({\n phone: \"\",\n email: \"\",\n subscriptionCount: 0,\n subscriptionDuration: 0,\n subscriptionPrice: 0,\n discount: 0,\n corporateDiscount: 0,\n promoCode: \"\",\n payMethod: \"card\",\n canPay: false,\n });\n\n const history = useHistory();\n\n const handleDataChange = useCallback((newState: ICorporateScreenState) => {\n setScreenState({\n ...newState,\n canPay: (isValidEmail(newState.email) &&\n isValidPhone(newState.phone) &&\n isValidPromoCode(newState.promoCode) && newState.payMethod === 'card') || (\n isValidEmail(newState.email) &&\n isValidPhone(newState.phone) &&\n isValidPromoCode(newState.promoCode) && newState.payMethod === 'bill' &&\n isValidPhone(newState.workPhone!) &&\n isValidINN(newState.inn!) &&\n isValidName(newState.companyName!) &&\n isValidName(newState.legalAddress!))\n });\n setScreenStateCard({\n ...newState,\n canPay: (isValidEmail(newState.email) &&\n isValidPhone(newState.phone) &&\n isValidPromoCode(newState.promoCode) &&\n newState.payMethod === 'card')\n })\n }, []);\n\n const handleBuyClick = useCallback(debounce(async () => {\n // withId(92179976)('reachGoal','pressBuyCorpSubscription')\n ym('reachGoal', 'oformitpodarok');\n window.generalPixel.postClick('a2');\n const promoCode = await controller.buyPromoCode({\n ...screenStateCard,\n });\n\n setScreenState({...screenState, loading: true})\n\n if (!promoCode) {\n setScreenState({...screenState, loading: false})\n alert(\"Не получилось. Попробуйте ещё раз.\");\n return;\n }\n\n if (screenState.payMethod === \"card\") {\n if (promoCode.paymentLink) {\n window.location.href = promoCode.paymentLink\n } else {\n setScreenState({...screenState, loading: false})\n alert(\"Не получилось сгенерировать форму для оплаты! Попробуйте ещё раз.\");\n }\n } else {\n history.push(\"/manager_screen\");\n }\n }, 2000, { leading: true, trailing: false }), [screenState])\n\n const handleActivateClick = useCallback(() => {\n domainRouter.go(config.codeRoute);\n }, []);\n\n // useEffect(() => {\n // withId(92179976)('reachGoal', 'enteredCorp');\n // }, [withId])\n\n return (\n
\n \n \n
\n
\n );\n};\n\nconst EMAIL_REG = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\nfunction isValidEmail(value: string): boolean {\n return EMAIL_REG.test(value);\n}\n\nfunction isValidPhone(value: string): boolean {\n if (value.length >= 4 && value.length <= 20) {\n return true;\n } else {\n return false;\n }\n}\n\nconst INN_REG = /^[0-9]*$/;\nfunction isValidINN(value: string): boolean {\n return INN_REG.test(value);\n}\n\nconst PROMO_CODE_REG = /(^$)|(^[\\dA-Z]{4,16}$)/;\nfunction isValidPromoCode(value: string): boolean {\n return PROMO_CODE_REG.test(value);\n}\n\nfunction isValidName(value: string): boolean {\n if (value) {\n return true;\n } else {\n return false;\n };\n}\n\nexport default CorporateSubscription;\n","import { TPayMethod } from \"../../types/TPayMethod\";\nimport BuyGiftSubscriptionApi from \"../buyGiftSubscription/api\";\n\ninterface IPromoCode {\n id: number;\n text: string;\n price: number;\n amountTotal: number;\n paymentLink?: string;\n}\n\ninterface IBuyParams {\n phone: string;\n email: string;\n subscriptionCount: number;\n subscriptionDuration: number;\n subscriptionPrice: number;\n promoCode: string;\n payMethod: TPayMethod;\n discount: number;\n corporateDiscount?: number;\n companyName?: string,\n inn?: string,\n workPhone?: string,\n legalAddress?: string\n}\n\nclass BuyCorporateSubscriptionController {\n private api = new BuyGiftSubscriptionApi();\n\n async buyPromoCode(params: IBuyParams): Promise {\n const promoCode = await this.createPromoCode(params);\n if (!promoCode) return false;\n return promoCode;\n }\n\n private async createPromoCode(params: IBuyParams): Promise {\n const response = await this.api.createPromoCode({\n isCorporate: true,\n method: params.payMethod,\n amountTotal: params.subscriptionCount,\n text: params.promoCode || undefined,\n phone: params.phone,\n email: params.email,\n months: params.subscriptionDuration,\n price: params.subscriptionPrice,\n discount: params.discount,\n discountCorporation: params.corporateDiscount,\n paymentMethod: 'tinkoff',\n });\n\n if (!response) {\n return null;\n }\n\n return {\n id: response.id,\n text: response.text,\n price: response.price,\n amountTotal: response.amountTotal,\n paymentLink: response.link,\n }\n }\n\n // private async requestUserPayment({ subscriptionCount, subscriptionDuration, email }: IBuyParams, promoCode: IPromoCode): Promise {\n // const form = this.createTinkoffForm({\n // totalPrice: promoCode.price,\n // orderId: promoCode.id,\n // description: `${subscriptionCount} подписок на ${subscriptionDuration} месяцев для ${email}`,\n // email\n // })\n // window.pay(form);\n // return true;\n // }\n\n // private createTinkoffForm(params: {\n // totalPrice: number,\n // orderId: number,\n // description: string,\n // email: string,\n // }) {\n\n // const receiptData =\n // {\n // Email: params.email,\n // EmailCompany: \"help@prostoapp.com\",\n // Taxation: \"usn_income\",\n // Items: [{\n // Name: \"Cертификат на подписку на приложение Prosto\",\n // Price: params.totalPrice * 100,\n // Quantity: 1.00,\n // Amount: params.totalPrice * 100,\n // Tax: \"none\",\n // }],\n // }\n\n // const form = document.createElement(\"form\");\n\n // const fields = document.createDocumentFragment();\n // fields.appendChild(this.createInput(\"terminalkey\", config.tinkoffTerminalKey));\n // fields.appendChild(this.createInput(\"frame\", \"true\"));\n // fields.appendChild(this.createInput(\"language\", \"ru\"));\n // fields.appendChild(this.createInput(\"amount\", params.totalPrice.toString()));\n // fields.appendChild(this.createInput(\"order\", params.orderId.toString()));\n // fields.appendChild(this.createInput(\"description\", params.description));\n // fields.appendChild(this.createInput(\"email\", params.email));\n // fields.appendChild(this.createInput(\"receipt\", JSON.stringify(receiptData)));\n\n // form.appendChild(fields);\n\n // return form;\n // }\n\n // private createInput(name: string, value: string) {\n // const input = document.createElement(\"input\");\n // input.type = \"hidden\";\n // input.name = name;\n // input.value = value;\n // return input;\n // }\n}\n\nexport default BuyCorporateSubscriptionController;\n","import React from 'react';\nimport Footer from '../../components/Footer/Footer';\nimport styles from \"./ManagerScreen.module.css\";\n\nconst prostoAppIcon = \"images/ProstoappIcon.png\";\nconst managerIcon = \"images/Manager.png\";\n\nconst ManagerScreen: React.FC = () => {\n\n return (\n
\n \n \n

Наш менеджер свяжется с вами

\n
\n
\n );\n}\n\nexport default ManagerScreen;\n","import React from 'react';\nimport { Route, Switch } from 'react-router-dom';\nimport CertificateScreen from '../screens/CertificateScreen/CertificateScreen';\nimport CorporateSubscription from '../screens/CorporateSubscription/CorporateSubscription';\nimport ManagerScreen from '../screens/ManagerScreen/ManagerScreen';\n\nconst CorporativeRoutes: React.FC = () => {\n\n return (\n
\n \n \n \n \n \n
\n );\n}\n\nexport default CorporativeRoutes;\n","import { TPayMethod } from \"../../types/TPayMethod\";\nimport config from \"../config/config\";\nimport httpService from \"../http/HttpService\";\n\nconst PROMO_CODES_URL = `${config.apiUrl}/promocodes`;\n\ninterface IBuyPromoCodeRequest {\n phone?: string;\n months: number;\n amountTotal: number;\n price: number;\n isCorporate: boolean;\n method: TPayMethod;\n text?: string;\n discount?: number;\n discountCorporation?: number;\n companyName?: string,\n inn?: string,\n workPhone?: string,\n legalAddress?: string\n}\n\ninterface IBuyPromoCodeResponse {\n id: number;\n text: string;\n amountTotal: number;\n amountLeft: number;\n months: number;\n price: number;\n phone: string;\n method: string;\n isCorporate: boolean;\n creationDate: string;\n paymentDate: string;\n}\n\nclass BuySubscriptionApi {\n async createSubscription(data: IBuyPromoCodeRequest): Promise {\n const response = await httpService.post(`${PROMO_CODES_URL}/buy/binding`, data);\n return response.success ? response.data as IBuyPromoCodeResponse : null;\n }\n}\n\nexport default BuySubscriptionApi;\n","import React, { useCallback, useState } from 'react';\nimport Footer from '../../components/Footer/Footer';\nimport UpperMainBlock from '../../components/UpperMainBlock/UpperMainBlock';\nimport ym from 'react-yandex-metrika';\nimport { IMainScreenState } from \"../../types/IMainScreenState\";\nimport { useHistory } from 'react-router-dom';\nimport debounce from \"lodash.debounce\";\nimport BuySubscriptionController from '../../core/buySubscription/controller';\n\nconst controller = new BuySubscriptionController();\n\nconst BuySubscription: React.FC = () => {\n \n const [screenState, setScreenState] = useState({\n email: \"\",\n confirmEmail: false,\n promocodeId: null,\n text: \"\",\n phone: \"\",\n months: 0,\n price: 0,\n discount: 0,\n canPay: false,\n paymentMethod: 'tinkoff',\n });\n const history = useHistory();\n\n const handleDataChange = useCallback((newState: IMainScreenState) => {\n setScreenState({\n ...newState\n });\n }, [setScreenState]);\n\n const handleBuyClick = useCallback(debounce(async () => {\n window.generalPixel.postClick('a2');\n const promocode = await controller.buySubscription(screenState.months, screenState.price, screenState.discount, screenState.phone);\n\n if (!promocode) {\n alert(\"Не получилось сгенерировать промокод! Попробуйте ещё раз.\");\n return;\n }\n\n setScreenState({ ...screenState, promocodeId: promocode.id, text: promocode.text });\n // ym('reachGoal', 'buy_certificate');\n history.push({\n pathname: '/activated',\n state: {\n promocodeId: promocode.id,\n text: promocode.text,\n },\n });\n }, 2000, { leading: true, trailing: false }), [screenState.phone, screenState.months, screenState.price])\n\n return (\n <>\n \n