{"version":3,"sources":["components/shared/Spinner/Spinner.js","components/shared/BubbleButton/BubbleButton.js","assets/apple.svg","services/LogService.js","services/FetchService.js","services/AxiosService.js","services/HttpService.js","services/RecaptchaService.js","services/BootstrapService.js","components/shared/Navbar/Navbar.js","components/Home/Exposition/Exposition.js","components/Home/List/List.js","assets/course-plug.svg","components/Home/List/Items/CourseItem.js","components/Home/List/Items/HowItWorksItem.js","components/Home/List/Items/WhyUsItem.js","components/Home/SingleCourse/SingleCourse.js","assets/google.svg","components/Home/AppStore/AppStore.js","components/Home/Spacer/Spacer.js","assets/error.svg","components/shared/FullNameInput/FullNameInput.js","services/SessionService.js","services/MemberService.js","services/FormService.js","components/Home/TryForFree/TryForFree.js","components/Home/Plans/Plans.js","components/shared/Reviews/util/jqueryShim.js","components/shared/Reviews/assets/arrow-right.svg","assets/avatar-plug.svg","components/shared/Reviews/Reviews.js","assets/check-mark.svg","components/shared/Subscribe/Subscribe.js","components/shared/Footer/Footer.js","assets/chevron-left.svg","assets/cancel.svg","components/Home/GroupsModal/GroupsModal.js","components/Home/Home.js","components/Approvals/Approvals.js","utils/debounce.js","utils/key.js","components/shared/Pages/Pages.js","components/shared/Empty/Empty.js","assets/filter-bars.svg","components/Courses/Courses.js","assets/less-than.svg","assets/greater-than.svg","assets/clock.svg","services/ScheduleService.js","components/shared/Calendar/Calendar.js","services/PaymentService.js","components/CourseDetails/CourseDetails.js","components/Pricing/Plans/Membership.js","components/Pricing/Plans/IndividualCourse.js","components/shared/RadioButton/RadioButton.js","components/Pricing/Plans/CourseBundle.js","components/Pricing/Plans/GroupPlan.js","components/Pricing/Plans/Webinar.js","components/Pricing/Pricing.js","components/Buy/Buy.js","components/Payment/Payment.js","assets/social.svg","assets/phone.svg","assets/world.svg","assets/letter.svg","components/Requirements/Requirements.js","components/Login/Login.js","components/Register/Register.js","components/ForgotPassword/ForgotPassword.js","components/ResetPassword/ResetPassword.js","assets/location.svg","assets/printer.svg","components/Help/Help.js","services/FaqService.js","components/Faq/Faq.js","utils/string.js","utils/array.js","assets/arrow-down.svg","components/PrivacyPolicy/PrivacyPolicy.js","components/Terms/Terms.js","components/AffiliatedSites/AffiliatedSites.js","components/ConfirmEmail/ConfirmEmail.js","components/CompleteProfile/CompleteProfile.js","components/CreateGroup/CreateGroup.js","components/RefundPolicy/RefundPolicy.js","components/ComplaintPolicy/ComplaintPolicy.js","components/CustomPage/CustomPage.js","components/shared/Error/Error.js","components/shared/AppError/AppError.js","App.js","reportWebVitals.js","index.js"],"names":["Spinner","className","aria-hidden","React","Component","BubbleButton","e","bubble","target","querySelector","rect","getBoundingClientRect","y","clientY","top","x","clientX","left","gsap","to","this","props","onMouseEnter","handleBubble","onMouseLeave","ref","innerRef","type","formNoValidate","onClick","children","forwardRef","_extends","Object","assign","i","arguments","length","source","key","prototype","hasOwnProperty","call","apply","_objectWithoutProperties","excluded","sourceKeys","keys","indexOf","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","d","SvgApple","_ref","svgRef","title","titleId","viewBox","xmlns","id","ForwardRef","logService","log","message","push","fetchService","response","console","error","add","Promise","reject","Error","ok","contentType","headers","get","includes","text","json","status","statusText","url","headersString","entries","map","value","join","errorDetails","then","body","catch","requestOptions","method","fetch","getResponse","JSON","stringify","data","request","code","navigator","onLine","timeout","axios","handleError","post","put","delete","HttpSelector","freeze","UseFetch","UseAxios","ApiSelector","UseApi","UseApp","httpService","httpSelector","apiSelector","apiToken","sessionId","refreshingApiToken","hssEdClientId","hssEdClientSecret","hssEdClientPlatform","metaSiteName","document","siteName","getAttribute","startsWith","metaSessionId","metaSlot","slot","metaLocal","local","toLowerCase","apiUrl","metaColor","color","documentElement","style","setProperty","warn","expiration","Date","setDate","getDate","cookie","selection","resolve","clear","startTime","performance","now","checkApi","success","elapsedTime","reportError","useFetchUseApi","useAxiosUseApi","useFetchUseApp","useAxiosUseApp","useThirdParty","getVersion","noApi","setApiRoutingCookie","errorModel","lineNo","columnNo","stack","window","location","href","referrer","tryUseFetchUseApi","tryUseAxiosUseApi","tryUseFetchUseApp","tryUseAxiosUseApp","tryThirdPartyRequest","tryGetVersion","tryGetVersionImpl","func","getHttpFunc","tryThirdPartyRequestImpl","userId","getPreBootstrap","getPreBootstrapImpl","succeeded","errors","userAgent","lowerCaseUserAgent","some","keyword","browserInfo","userAgentData","brands","isChromiumBased","chrome","brand","isFirefox","isWebKit","isBot","fetchImplementation","getFetchImplementationIdentifier","connection","mozConnection","webkitConnection","effectiveType","downlink","rtt","saveData","getHeaders","bind","postNoResponse","axiosService","useAuth","expiresIn","apiTokenExpire","setSession","result","accessToken","accessTokenLifetime","verify","expireInSeconds","refreshApiToken","verifyApiToken","endpoint","getEndpoint","recaptchaCallbackName","ready","recaptchaService","_ready","_readyCallbacks","_siteKey","forEach","cb","grecaptcha","render","element","siteKey","theme","callback","action","execute","script","createElement","src","async","defer","head","appendChild","bootstrapService","primaryColor","secondaryColor","defaultPlanType","defaultStateName","apiTokenLifetime","recaptchaSiteKey","setDefaultProperties","setSingleCourseId","setAllColors","landing","sections","plansSection","find","s","name","plans","defaultPlan","p","isDefault","pages","requirementsPage","requirements","defaultState","r","authorityName","courseCatalog","courses","singleCourseId","site","rgb","hexToRgb","g","b","primaryLightColor","hex","exec","parseInt","credits","creditTerm","creditsTerm","ceTerm","getCategoryTerm","showAddress","showReleaseDate","paymentOptions","Navbar","navbar","scrollBarWidth","innerWidth","clientWidth","state","previousY","isMobileNavbarOpened","scrollNavbar","toggleMobileNavbar","clickHome","clickTryForFree","setupScrollAnimation","addEventListener","setState","classList","remove","getComputedStyle","paddingRight","pageYOffset","isPageStart","hideMobilelNavbar","showMobileNavbar","scrollTo","behavior","clickTry","backgroundColor","activeLink","navs","logo","logoUrl","appStoreData","appleUrl","tryForFreeData","tryForFreeLabel","actionLabel","getCETerm","div","alt","n","page","header","pathname","tryForFree","role","aria-label","Exposition","actionLink","imageUrl","imageBackgroundUrl","highlighted","data-aos","isMobileOnly","undefined","data-aos-duration","data-aos-easing","List","registerPlugin","ScrollTrigger","info","setupListScroll","matchMedia","create","trigger","pin","start","end","offsetHeight","scrub","CourseItem","courseId","description","shortDescription","substring","split","slice","courseImage","getCreditsTerm","toFixed","HowItWorksItem","WhyUsItem","SingleCourse","course","releaseDate","schedules","getShowReleaseDate","toDateString","startDate","toLocaleDateString","weekday","month","day","fill","_ref3","_ref4","_ref5","SvgGoogle","xmlnsXlink","AppStore","googleUrl","Spacer","onLoad","refresh","cx","cy","SvgError","width","height","FullNameInput","fullNameInput","fullNameGroup","firstNameInput","middleNameInput","lastNameInput","lastNameInputTextField","useFullNameInput","firstName","middleName","lastName","checkFullNameInput","setupNameInputs","setTimeout","changeNameInputs","ignoreFullName","display","currentTarget","focus","$","hide","show","fullName","getFullName","required","placeholder","defaultValue","onChange","htmlFor","input","sessionService","accessTokenObject","member","memberDigest","session","refreshToken","userSessionId","disableAutoLogin","requiresEmailConfirm","tokenPayload","jwt","jws","JWS","readSafeJSONString","accessTokenNotBefore","nbf","accessTokenExpire","exp","accessTokenExpireLocal","accessTokenName","Array","isArray","email","jsonSession","localStorage","setItem","eraseUserSessionCookie","setUserSessionCookie","days","expires","date","setTime","getTime","toUTCString","cookieValue","encodeURIComponent","MemberType","memberService","confirmEmailValidated","completeProfileValidated","successRedirect","replace","subscribeRequest","loginRequest","setLocalUserSession","checkEmailRequest","mtcId","getItem","row","registerRequest","requestType","confirmAccount","autoLogin","origin","timezoneOffset","getTimezoneOffset","contactId","getMtcId","forgotPasswordRequest","resetPasswordRequest","token","completeProfileRequest","validateMemberRequest","joinGroupRequest","recaptchaToken","registerCode","groupCode","formService","form","button","setAttribute","removeAttribute","inputs","querySelectorAll","inputDiv","innerText","duration","results","hideAllErrors","contains","requiredOK","checkRequired","nameOK","checkName","emailOK","checkEmail","passwordOK","checkPassword","creditCardOK","checkCreditCard","expMonthOK","checkExpirationMonth","expYearOK","checkExpirationYear","cvvOK","checkCvv","numberOK","checkNumber","questionOK","checkQuestion","every","control","attributes","trim","test","isValidCreditCardNo","nCheck","bEven","cDigit","charAt","nDigit","isNaN","getFullYear","TryForFree","useFullName","submitForm","preventDefault","isFormValid","validate","password","confirm","showInputError","hideLoadingButton","showLoadingButton","memberRequest","getToken","memberType","checkEmailInUse","isInUse","register","goToMembers","showFormError","onSubmit","Plans","plan","index","data-aos-delay","data-aos-anchor-placement","data-type","openGroupPlanModal","withRouter","jQuery","SvgArrowRight","stroke","strokeWidth","strokeLinecap","SvgAvatarPlug","Reviews","carousel","clickNextReview","setupCarousel","owlCarousel","animateOut","smartSpeed","autoWidth","margin","reviewsData","reviews","testimonials","review","cursor","comment","SvgCheckMark","Subscribe","successMessage","subscribeRequirement","subscribe","subscribeData","section","Footer","siteData","footers","logoLightUrl","defaultPassType","phone","sitePhone","fax","siteFax","siteEmail","address","siteAddress","street","concat","city","zip","getShowAddress","year","rel","opacity","SvgChevronLeft","vectorEffect","strokeLinejoin","SvgCancel","GroupsModal","modal","screen1","screen2","screen3","toggleModal","showCreateGroup","showJoinGroup","clickCreateGroup","clickJoinGroup","clickBack","setupSelects","select2","minimumResultsForSearch","on","shouldIgnore","stopPropagation","dataset","clearAllInputs","validateJoinGroup","goToJoinGroup","goToCreateGroup","disabled","Home","groupPlanModal","tryForFreeSection","toggleGroupPlanModal","setupScroll","scrollIntoView","block","toggleOverflowForModal","history","homeData","heroData","approvalsData","coursesData","spacer1Data","howItWorksData","spacer2Data","whyUsData","plansData","siteEmailFromName","works","work","features","feature","Approvals","orgApprovals","organizationApprovals","courseApprovals","approval","dangerouslySetInnerHTML","__html","f","debounce","wait","immediate","context","args","later","callNow","clearTimeout","getKey","uuid","Pages","Pagination","withStyles","root","Empty","emptyTitle","emptyImg","noResultsImageUrl","x1","y1","x2","y2","SvgFilterBars","Courses","filterMenu","mobileFilterMenu","mobileSubmitButton","coursesList","categoryFilter","searchFilter","sortFilter","pageNumber","openMobileFilterMenu","closeMobileFilterMenu","clickMobileFilterItem","clickMobileSubmit","changeCoursesPage","searchCourses","searchCoursesMobile","updateSelects","filterType","setMobileFilterActive","filterCourses","sortCourses","first","hasClass","filterValue","filter","addClass","siblings","removeClass","select","val","filterOption","enableMobileSpinner","disableMobileSpinner","sortOption","c","subjectArea","search","sort","a","aval","order","bval","categoryFilters","subjectAreaFilters","sortOptions","getCourses","pagedCourses","renderKey","data-filter-type","option","data-value","ul","data-aos-offset","placeholderImage","deliveryMethod","count","Math","ceil","size","SvgLessThan","SvgGreaterThan","SvgClock","scheduleService","getMonth","getDay","getDaysInMonth","today","short","full","timeZoneName","shortIndex","Calendar","currentSchedule","currentMonth","currentYear","getYear","clickPreviousMonth","clickNextMonth","clickDay","clickBuy","setupSchedules","getDays","selectSchedule","firstDayOfWeek","getFirstDayOfWeek","lastDayOfWeek","getLastDayOfWeek","daysInMonth","daysinPreviousMonth","getDaysInPreviousMonth","unselected","selected","schedule","previousMonth","nextMonth","buySchedule","item","currentMonthAndYear","selectedDate","selectedTime","toLocaleTimeString","hour","minute","endDate","selectedDuration","abs","rowIndex","dayIndex","canClick","getTimeZone","paymentService","paymentType","group","creditCard","sandboxTicket","paypalValidated","buyRequest","quantity","scheduleId","groupName","isAdminOnly","creditCardNo","expirationMonth","expirationYear","securityCode","payerId","orderId","paymentRequestId","CourseDetails","courseDescription","courseDescriptionButton","authorBios","authorBiosButtons","courseObjectives","courseObjectivesButton","clickReadMoreDescription","clickReadMoreBio","clickReadMoreObjectives","goToBuy","setupReadMoreButtons","bio","price","reset","bundles","courseBundleTypes","bundlesWithCourse","bundle","courseDigests","match","params","categoryTerm","memberships","passTypes","getBundles","audience","knowledgeLevel","advancePreparation","prerequisites","commercialSupport","jointProvidership","authors","author","designations","sectionIndex","objectives","objective","objectiveIndex","String","membership","descriptionText","cIndex","Membership","featureIndex","IndividualCourse","goToCourse","category","courseNo","RadioButton","defaultChecked","CourseBundle","webinars","webinar","changeSchedule","courseIndex","scheduleIndex","GroupPlan","minMembers","memberCountMin","maxMembers","memberCountMax","Webinar","Pricing","planFilter","mobilePlanFilter","plansList","currentPlan","clickMobileFilterSubmit","changePlansPage","setupMobileFilter","updateCurrentPlan","shouldIgnoreHistory","filterPlans","sortPlans","each","onpopstate","path","sorter","sortPassTypes","sortBundleTypes","groupTypes","sortGroupTypes","pricingData","bodyText","itemsFilter","getPlans","pagedPlans","planType","getCurrentPlanType","Buy","userSwitcher","userSwitch","nameInput","passwordInput","confirmInput","clickSwitch","fillSandboxForm","setupSwitcher","userSelections","offsetWidth","offsetLeft","toggleAccountInputs","selectedSwitch","setSwitchActive","hideInputs","css","showInputs","parent","ctrlKey","metaKey","validateMember","Payment","getPaymentOptions","useCreditCard","useCreditCardSandbox","usePayPal","usePayPalSandbox","useOffline","numPaymentMethods","paymentSwitcher","paymentSwitch","paymentInputs","paymentParagraph","getSandboxTicket","paymentSelections","togglePaymentInputs","enableForm","disableForm","submitCreditCard","submitPayPal","submitCheckOrPhone","card","mm","yyyy","cvv","buyItemCreditCard","buyItemPayPal","orderRequest","paymentRequests","secureAcceptanceUrl","buyItemOffline","creditCardLabel","payPalLabel","span","cardError","fillRule","clipRule","_ref6","_ref7","SvgSocial","SvgPhone","SvgWorld","SvgLetter","Requirements","content","mobileSelect","currentState","clickState","searchStates","updateCurrentState","stateName","scrollY","requirementsData","allRequirements","currentRequirement","requirement","statename","requirementText","organizationName","organizationPhone","organizationUrl","organizationEmail","Login","login","Register","groupRegisterCode","ForgotPassword","paragraph","forgotPassword","animate","html","emailError","ResetPassword","resetPassword","SvgLocation","SvgPrinter","Help","helpData","address1","address2","fullAddress","faqService","faqRequest","Faq","accordianItems","questionForm","clickAccordianItem","submitQuestion","setupAccordian","closeItem","parentElement","closeAllItems","toggle","question","askQuestion","faqData","faqs","faq","li","answer","splitBody","middle","floor","before","lastIndexOf","after","substr","splitArray","list","half","splice","SvgArrowDown","PrivacyPolicy","topicRefs","clickTopic","topic","policyData","effectiveDate","topics","body1","body2","class","itemIndex","firstItems","secondItems","Terms","termsData","AffiliatedSites","affiliatedData","sites","ConfirmEmail","errorBody","setBootstrapCallback","setCallback","validateToken","validateConfirmEmailToken","forceUpdate","tokenValidated","CompleteProfile","requireFirstName","requireLastName","requirePassword","validateCompleteProfileToken","completeProfile","confirmError","CompleteGroup","groupSwitcher","groupSwitch","numberOfMembers","RefundPolicy","ComplaintPolicy","CustomPage","errorCode","errorTitle","errorDescription","errorImg","errorImageUrl","AppError","App","dataLoading","dataError","onerror","msg","setupAOS","selectApi","getBootstrap","AOS","init","once","delay","easing","maxDistance","anchorPlacement","loading","exact","component","CreateGroup","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","ReactDOM","StrictMode","getElementById"],"mappings":"07BAYeA,G,qMANP,OACI,qBAAKC,UAAU,aAAaC,eAAa,Q,GAJ/BC,IAAMC,Y,6CCAtBC,E,2KAEWC,GACT,IAAMC,EAASD,EAAEE,OAAOC,cAAc,2BACtC,GAAGF,EAAQ,CACP,IAAMG,EAAOJ,EAAEE,OAAOG,wBAChBC,EAAIN,EAAEO,QAAUH,EAAKI,IACrBC,EAAIT,EAAEU,QAAUN,EAAKO,KAE3BC,IAAKC,GAAGZ,EAAQ,CACZO,IAAKF,EACLK,KAAMF,GACP,M,+BAMP,OACI,yBAAQd,UAAW,kBAAoBmB,KAAKC,MAAMpB,UAC1CqB,aAAcF,KAAKG,aACnBC,aAAcJ,KAAKG,aACnBE,IAAKL,KAAKC,MAAMK,SAChBC,KAAMP,KAAKC,MAAMM,KACjBC,eAAgBR,KAAKC,MAAMO,eAC3BC,QAAST,KAAKC,MAAMQ,QAN5B,UAOKT,KAAKC,MAAMS,SACZ,sBAAM7B,UAAU,gBAAhB,SACI,kC,GA5BOE,IAAMC,WAmClBD,MAAM4B,YAAW,SAACV,EAAOI,GAAR,OAAgB,cAAC,EAAD,aAC9CC,SAAUD,GAASJ,OCvCrB,SAASW,IAA2Q,OAA9PA,EAAWC,OAAOC,QAAU,SAAU1B,GAAU,IAAK,IAAI2B,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CAAE,IAAIG,EAASF,UAAUD,GAAI,IAAK,IAAII,KAAOD,EAAcL,OAAOO,UAAUC,eAAeC,KAAKJ,EAAQC,KAAQ/B,EAAO+B,GAAOD,EAAOC,IAAY,OAAO/B,IAA2BmC,MAAMvB,KAAMgB,WAEhT,SAASQ,EAAyBN,EAAQO,GAAY,GAAc,MAAVP,EAAgB,MAAO,GAAI,IAAkEC,EAAKJ,EAAnE3B,EAEzF,SAAuC8B,EAAQO,GAAY,GAAc,MAAVP,EAAgB,MAAO,GAAI,IAA2DC,EAAKJ,EAA5D3B,EAAS,GAAQsC,EAAab,OAAOc,KAAKT,GAAqB,IAAKH,EAAI,EAAGA,EAAIW,EAAWT,OAAQF,IAAOI,EAAMO,EAAWX,GAAQU,EAASG,QAAQT,IAAQ,IAAa/B,EAAO+B,GAAOD,EAAOC,IAAQ,OAAO/B,EAFxMyC,CAA8BX,EAAQO,GAAuB,GAAIZ,OAAOiB,sBAAuB,CAAE,IAAIC,EAAmBlB,OAAOiB,sBAAsBZ,GAAS,IAAKH,EAAI,EAAGA,EAAIgB,EAAiBd,OAAQF,IAAOI,EAAMY,EAAiBhB,GAAQU,EAASG,QAAQT,IAAQ,GAAkBN,OAAOO,UAAUY,qBAAqBV,KAAKJ,EAAQC,KAAgB/B,EAAO+B,GAAOD,EAAOC,IAAU,OAAO/B,EAMne,IAAI,EAAqB,gBAAoB,OAAQ,CACnD6C,EAAG,87CAGL,SAASC,EAASC,EAAMC,GACtB,IAAIC,EAAQF,EAAKE,MACbC,EAAUH,EAAKG,QACfrC,EAAQuB,EAAyBW,EAAM,CAAC,QAAS,YAErD,OAAoB,gBAAoB,MAAOvB,EAAS,CACtD2B,QAAS,YACTC,MAAO,6BACPnC,IAAK+B,EACL,kBAAmBE,GAClBrC,GAAQoC,EAAqB,gBAAoB,QAAS,CAC3DI,GAAIH,GACHD,GAAS,KAAM,GAGpB,IAAIK,EAA0B,aAAiBR,G,gBCXhCS,EADI,I,iDAdfC,IAAM,G,gDAEFC,GACI7C,KAAK4C,IAAI3B,OAAS,MAClBjB,KAAK4C,IAAM,IAEf5C,KAAK4C,IAAIE,KAAKD,K,8BAId7C,KAAK4C,IAAM,O,MCsKJG,EADM,I,WA7KjB,aAAe,oB,wDAGHC,GACR,IACI,IAAKA,EAGD,OAFAC,QAAQC,MAAM,6DACdP,EAAWQ,IAAI,4DACRC,QAAQC,OAAO,IAAIC,MAAM,kCAGpC,GAAIN,EAASO,GAAI,CACb,IAAMC,EAAcR,EAASS,QAAQC,IAAI,gBAGzC,GAFAf,EAAWQ,IAAX,2DAAmEK,IAE/DA,EAAYG,SAAS,cAErB,OADAhB,EAAWQ,IAAI,qDACRH,EAASY,OACb,GAAIJ,EAAYG,SAAS,oBAE5B,OADAhB,EAAWQ,IAAI,qDACRH,EAASa,OAEhB,MAAM,IAAIP,MAAM,4BAIxBX,EAAWQ,IAAI,8CACfR,EAAWQ,IAAX,wDAAgEH,EAASc,SACzEnB,EAAWQ,IAAX,4DAAoEH,EAASe,aAC7EpB,EAAWQ,IAAX,qDAA6DH,EAASgB,MAEtE,IACMC,EADY,YAAOjB,EAASS,QAAQS,WAErCC,KAAI,mCAAEhD,EAAF,KAAOiD,EAAP,qBAAqBjD,EAArB,aAA6BiD,MACjCC,KAAK,MACV1B,EAAWQ,IAAX,yDAAiEc,IAGjE,IAAMK,EAAe,CACjBR,OAAQd,EAASc,OACjBC,WAAYf,EAASe,WACrBC,IAAKhB,EAASgB,IACdP,QAAQ,YAAKT,EAASS,QAAQS,YAIlC,OAAOlB,EAASa,OACXU,MAAK,SAACC,GAGH,OAFAF,EAAaE,KAAOA,EACpBvB,QAAQC,MAAM,8CAA+CsB,GACtDpB,QAAQC,OAAOiB,MAEzBG,OAAM,WAEH,OAAOrB,QAAQC,OAAOiB,MAEhC,MAAOpB,GAGL,OAFAD,QAAQC,MAAM,iDAAkDA,GAChEP,EAAWQ,IAAX,wDAAgED,IACzDE,QAAQC,OAAOH,M,0BAI1Bc,EAAKP,GAAU,IAAD,OACRiB,EAAiB,CACnBC,OAAQ,MACRlB,QAASA,GAKb,OAFAd,EAAWQ,IAAX,4CAAoDa,IAE7CY,MAAMZ,EAAKU,GACbH,MAAK,SAAAvB,GAEF,OADAL,EAAWQ,IAAI,4CACR,EAAK0B,YAAY7B,MAE3ByB,OAAM,SAAAvB,GAIH,MAHAD,QAAQC,MAAM,kDAAmDc,GACjEf,QAAQC,MAAM,6CAA8CA,GAC5DP,EAAWQ,IAAX,oDAA4DD,IACtDA,O,2BAIbc,EAAKP,EAASe,GAAO,IAAD,OACfE,EAAiB,CACnBC,OAAQ,OACRlB,QAASA,EACTe,KAAMM,KAAKC,UAAUP,IAKzB,OAFA7B,EAAWQ,IAAX,6CAAqDa,IAE9CY,MAAMZ,EAAKU,GACbH,MAAK,SAAAvB,GAEF,OADAL,EAAWQ,IAAI,6CACR,EAAK0B,YAAY7B,MAE3ByB,OAAM,SAAAvB,GAIH,MAHAD,QAAQC,MAAM,mDAAoDc,GAClEf,QAAQC,MAAM,8CAA+CA,GAC7DP,EAAWQ,IAAX,qDAA6DD,IACvDA,O,qCAIHc,EAAKP,EAASe,GACzB,IAAME,EAAiB,CACnBC,OAAQ,OACRlB,QAASA,EACTe,KAAMM,KAAKC,UAAUP,IAKzB,OAFA7B,EAAWQ,IAAX,uDAA+Da,IAExDY,MAAMZ,EAAKU,GACbH,MAAK,SAAAvB,GAEF,OADAL,EAAWQ,IAAI,sDACRH,KAEVyB,OAAM,SAAAvB,GAIH,MAHAD,QAAQC,MAAM,6DAA8Dc,GAC5Ef,QAAQC,MAAM,wDAAyDA,GACvEP,EAAWQ,IAAX,+DAAuED,IACjEA,O,0BAIdc,EAAKP,EAASe,GAAO,IAAD,OACdE,EAAiB,CACnBC,OAAQ,MACRlB,QAASA,EACTe,KAAMM,KAAKC,UAAUP,IAKzB,OAFA7B,EAAWQ,IAAX,4CAAoDa,IAE7CY,MAAMZ,EAAKU,GACbH,MAAK,SAAAvB,GAEF,OADAL,EAAWQ,IAAI,4CACR,EAAK0B,YAAY7B,MAE3ByB,OAAM,SAAAvB,GAIH,MAHAD,QAAQC,MAAM,kDAAmDc,GACjEf,QAAQC,MAAM,6CAA8CA,GAC5DP,EAAWQ,IAAX,oDAA4DD,IACtDA,O,6BAIXc,EAAKP,EAASe,GAAO,IAAD,OACjBE,EAAiB,CACnBC,OAAQ,SACRlB,QAASA,EACTe,KAAMM,KAAKC,UAAUP,IAKzB,OAFA7B,EAAWQ,IAAX,+CAAuDa,IAEhDY,MAAMZ,EAAKU,GACbH,MAAK,SAAAvB,GAEF,OADAL,EAAWQ,IAAI,+CACR,EAAK0B,YAAY7B,MAE3ByB,OAAM,SAAAvB,GAIH,MAHAD,QAAQC,MAAM,qDAAsDc,GACpEf,QAAQC,MAAM,gDAAiDA,GAC/DP,EAAWQ,IAAX,uDAA+DD,IACzDA,S,eCfPH,EADM,I,WAvJjB,aAAe,oB,wDAGHG,GACJA,EAAMF,UAGNL,EAAWQ,IAAI,wCACfR,EAAWQ,IAAX,gCAAwCD,EAAMF,SAASc,SAEvDb,QAAQC,MAAM,mCACdD,QAAQC,MAAM,UAAWA,EAAMF,SAASc,QACxCb,QAAQC,MAAM,WAAYA,EAAMF,SAASS,SACzCR,QAAQC,MAAM,QAASA,EAAMF,SAASgC,OAC/B9B,EAAM+B,SAEbtC,EAAWQ,IAAI,4BACfR,EAAWQ,IAAX,8BAAsCD,EAAMgC,OAC5CvC,EAAWQ,IAAX,iCAAyCD,EAAML,UAE/CI,QAAQC,MAAM,oCAAqCA,GACnDD,QAAQC,MAAM,cAAeA,EAAMgC,MACnCjC,QAAQC,MAAM,iBAAkBA,EAAML,SACtCI,QAAQC,MAAMA,EAAM+B,WAGpBtC,EAAWQ,IAAI,2CACfR,EAAWQ,IAAX,8BAAsCD,EAAMgC,OAC5CvC,EAAWQ,IAAX,iCAAyCD,EAAML,UAE/CI,QAAQC,MAAM,8BAA+BA,EAAML,UAIpC,iBAAfK,EAAMgC,MACNvC,EAAWQ,IAAI,yCAEfF,QAAQC,MAAM,8BACc,IAArBiC,UAAUC,SACjBzC,EAAWQ,IAAI,uCAEfF,QAAQC,MAAM,6B,0BAIlBc,EAAKP,GAAU,IAAD,OACdA,EAAO,WAAiB,OACxB,IAAMiB,EAAiB,CACnBjB,QAASA,EACT4B,QAAS,KAKb,OAFA1C,EAAWQ,IAAI,qCAERmC,IAAM5B,IAAIM,EAAKU,GACjBH,MAAK,SAAAvB,GAEF,OADAL,EAAWQ,IAAI,0CACRH,EAASgC,QAEnBP,OAAM,SAAAvB,GAIH,MAHAD,QAAQC,MAAM,0CAA2CA,GACzDP,EAAWQ,IAAX,kDAA0DD,IAC1D,EAAKqC,YAAYrC,GACXA,O,2BAIbc,EAAKP,EAASe,GAAO,IAAD,OACrBf,EAAO,WAAiB,OACxB,IAAMiB,EAAiB,CACnBjB,QAASA,EACT4B,QAAS,KAKb,OAFA1C,EAAWQ,IAAI,sCAERmC,IAAME,KAAKxB,EAAKQ,EAAME,GACxBH,MAAK,SAAAvB,GAEF,OADAL,EAAWQ,IAAI,wBACRH,EAASgC,QAEnBP,OAAM,SAAAvB,GAKH,MAHAD,QAAQC,MAAM,4CAA6CA,GAC3DP,EAAWQ,IAAX,oDAA4DD,IAC5D,EAAKqC,YAAYrC,GACXA,O,qCAIHc,EAAKP,EAASe,GAAO,IAAD,OAC/Bf,EAAO,WAAiB,OACxB,IAAMiB,EAAiB,CACnBjB,QAASA,EACT4B,QAAS,KAGb,OAAOC,IAAME,KAAKxB,EAAKQ,EAAME,GACxBH,MAAK,SAAAvB,GAEF,OADAL,EAAWQ,IAAI,kCACRH,EAASgC,QAEnBP,OAAM,SAAAvB,GAIH,MAHAD,QAAQC,MAAM,sDAAuDA,GACrEP,EAAWQ,IAAX,8DAAsED,IACtE,EAAKqC,YAAYrC,GACXA,O,0BAIdc,EAAKP,EAASe,GAAO,IAAD,OACpBf,EAAO,WAAiB,OACxB,IAAMiB,EAAiB,CACnBjB,QAASA,EACT4B,QAAS,KAGb,OAAOC,IAAMG,IAAIzB,EAAKQ,EAAME,GACvBH,MAAK,SAAAvB,GAEF,OADAL,EAAWQ,IAAI,uBACRH,EAASgC,QAEnBP,OAAM,SAAAvB,GAIH,MAHAD,QAAQC,MAAM,0CAA2CA,GACzDP,EAAWQ,IAAX,kDAA0DD,IAC1D,EAAKqC,YAAYrC,GACXA,O,6BAIXc,EAAKP,EAASe,GAAO,IAAD,OACvBf,EAAO,WAAiB,OACxB,IAAMiB,EAAiB,CACnBjB,QAASA,EACT4B,QAAS,KAGb,OAAOC,IAAMI,OAAO1B,EAAKQ,EAAME,GAC1BH,MAAK,SAAAvB,GAEF,OADAL,EAAWQ,IAAI,0BACRH,EAASgC,QAEnBP,OAAM,SAAAvB,GAIH,MAHAD,QAAQC,MAAM,gDAAiDA,GAC/DP,EAAWQ,IAAX,wDAAgED,IAChE,EAAKqC,YAAYrC,GACXA,S,MClJhByC,EAAe9E,OAAO+E,OAAO,CAC/BC,SAAU,WACVC,SAAU,aAGRC,EAAclF,OAAO+E,OAAO,CAC9BI,OAAQ,SACRC,OAAQ,WA2zBNC,EAAc,I,WAvzBhB,aAAe,oBACXlG,KAAKmG,aAAeR,EAAaE,SACjC7F,KAAKoG,YAAcL,EAAYC,OAE/BhG,KAAKqG,SAAW,KAChBrG,KAAKsG,UAAY,KACjBtG,KAAKuG,oBAAqB,EAG1BvG,KAAKwG,cAAgB,uCACrBxG,KAAKyG,kBAAoB,uCACzBzG,KAAK0G,oBAAsB,MAE3B,IAAIC,EAAeC,SAASvH,cAAc,4BACtCsH,IACA3G,KAAK6G,SAAWF,EAAaG,aAAa,WACtC9G,KAAK6G,SAASE,WAAW,OACzB/G,KAAK6G,SAAW,oBAMxB,IAAIG,EAAgBJ,SAASvH,cAAc,6BACvC2H,IACAhH,KAAKsG,UAAYU,EAAcF,aAAa,WACxC9G,KAAKsG,UAAUS,WAAW,OAC1B/G,KAAKsG,UAAY,OAGzB,IAAIW,EAAWL,SAASvH,cAAc,wBAClC4H,IACAjH,KAAKkH,KAAOD,EAASH,aAAa,YAEjC9G,KAAKkH,OAAQlH,KAAKkH,KAAKH,WAAW,OACnC/G,KAAKkH,KAAO,QAGhB,IAAIC,EAAYP,SAASvH,cAAc,yBAevC,GAdI8H,IACAnH,KAAKoH,MAAQD,EAAUL,aAAa,YAEpC9G,KAAKoH,MACDpH,KAAKoH,MAAML,WAAW,KACtB/G,KAAKoH,OAAQ,EAGbpH,KAAKoH,MAAqC,SAA7BpH,KAAKoH,MAAMC,cAG5BrH,KAAKoH,OAAQ,EAGbpH,KAAKoH,MACLpH,KAAKsH,OAAS,6BAOd,OAAQtH,KAAKkH,MACT,IAAK,MACDlH,KAAKsH,OAAS,qCAEd,MACJ,IAAK,UACDtH,KAAKsH,OAAS,gCACd,MACJ,QACItH,KAAKsH,OAAS,qCAK1B,IAAIC,EAAYX,SAASvH,cAAc,yBACnCkI,IACAvH,KAAKwH,MAAQD,EAAUT,aAAa,WACpCF,SAASa,gBAAgBC,MAAMC,YAAY,kBAAmB3H,KAAKwH,QAElExH,KAAKwH,QAASxH,KAAKwH,MAAMT,WAAW,OACrC/G,KAAKwH,MAAQ,KACbZ,SAASa,gBAAgBC,MAAMC,YAAY,kBAAmB,YAGlE1E,QAAQ2E,KAAR,kCAAwC5H,KAAK6G,WAC7C5D,QAAQ2E,KAAR,8BAAoC5H,KAAKkH,OACzCjE,QAAQ2E,KAAR,+BAAqC5H,KAAKoH,QAC1CnE,QAAQ2E,KAAR,gCAAsC5H,KAAKsH,S,kEAK3C,IAEMO,EAAa,IAAIC,KACvBD,EAAWE,QAAQF,EAAWG,UAAY,GAE1CpB,SAASqB,OAAT,UALmB,eAKnB,YAJoB,YAIpB,c,kCAGyB,IAAD,OAAlBC,EAAkB,uDAAN,KAElB,OAAiB,MAAbA,GACAlI,KAAKmG,aAAe+B,EAAU/B,aAC9BnG,KAAKoG,YAAc8B,EAAU9B,YAE7BnD,QAAQL,IAAI,0CAA2C5C,KAAKmG,cAC5DlD,QAAQL,IAAI,yCAA0C5C,KAAKoG,aAEpDhD,QAAQ+E,SAAQ,KAGvBxF,EAAWyF,QACXzF,EAAWQ,IAAI,6CACfnD,KAAKqI,UAAYC,YAAYC,MAEtBvI,KAAKwI,WACPjE,MAAK,SAAAkE,GACF,GAAIA,EAAS,CACT,IAAIC,EAAeJ,YAAYC,MAAQ,EAAKF,UACxCM,GAAe,EAAKC,eACpB/F,EAAU,GACdA,GAAY,EAAK+F,eAAkC,GAAjB,eAClC/F,GAAY,EAAKgG,eAAoC,GAAnB,iBAClChG,GAAY,EAAKiG,eAAoC,GAAnB,iBAClCjG,GAAY,EAAKkG,eAAoC,GAAnB,iBAClClG,GAAY,EAAK+F,gBAAkB,EAAKI,cAA2C,GAAtB,mBAC7DnG,GAAY,EAAK+F,eAA4E,GAA1D,EAAKK,WAAa,gBAAkB,mBACvE,IAAIC,GAAQ,EAsCZ,GApCI,EAAKN,gBACL,EAAKzC,aAAeR,EAAaE,SACjC,EAAKO,YAAcL,EAAYC,QAE1B,EAAK6C,gBACV,EAAK1C,aAAeR,EAAaG,SACjC,EAAKM,YAAcL,EAAYC,QAE1B,EAAK8C,gBACV,EAAK3C,aAAeR,EAAaE,SACjC,EAAKO,YAAcL,EAAYE,QAE1B,EAAK8C,gBACV,EAAK5C,aAAeR,EAAaG,SACjC,EAAKM,YAAcL,EAAYE,QAG/BiD,GAAQ,EAGR,EAAK9C,aAAeL,EAAYE,QAChC,EAAKkD,sBAGM,IAAXtG,IACAF,EAAWQ,IAAX,kCAA0CN,IAE1CI,QAAQL,IAAR,kCAAuCC,KAG3CF,EAAWQ,IAAX,iDAAyD,EAAKgD,eAC9DxD,EAAWQ,IAAX,gDAAwD,EAAKiD,cAE7DnD,QAAQL,IAAI,0CAA2C,EAAKuD,cAC5DlD,QAAQL,IAAI,yCAA0C,EAAKwD,aAEvDuC,EAAa,CACb,IAAIS,EAAa,CACbtF,OAAQoF,EAAQ,SAAW,aAC3BhI,OAAQ,YACR2B,QAASA,EACTwG,OAAQ,EACRC,SAAU,EACVC,MAAO,iBACPvF,IAAKwF,OAAOC,SAASC,KACrBC,SAAU/C,SAAS+C,SACnBjB,YAAaA,EACb9F,IAAKD,EAAWC,KAEpB,EAAK+F,YAAYS,GAGrB,OAAO,EAGX,OADAnG,QAAQC,MAAM,iCAAkCP,EAAWC,MACpD,KAEV6B,OAAM,SAACvF,GAEJ,OADA+D,QAAQC,MAAM,gCAAiCP,EAAWC,MACnD,Q,iCAKX,IAAD,OAGP,OADAD,EAAWQ,IAAI,qDACRnD,KAAK4J,oBACPrF,MAAK,SAAAkE,GAIF,OAHA,EAAKG,eAAiBH,EAEtB9F,EAAWQ,IAAI,qDACR,EAAK0G,oBACPtF,MAAK,SAAAkE,GAIF,OAHA,EAAKI,eAAiBJ,EAEtB9F,EAAWQ,IAAI,qDACR,EAAK2G,oBACPvF,MAAK,SAAAkE,GAIF,OAHA,EAAKK,eAAiBL,EAEtB9F,EAAWQ,IAAI,qDACR,EAAK4G,oBACPxF,MAAK,SAAAkE,GAGF,OAFA,EAAKM,eAAiBN,EAEf,EAAKuB,uBACPzF,MAAK,SAAAkE,GAGF,OAFA,EAAKO,cAAgBP,EAEd,EAAKwB,gBACP1F,MAAK,SAAAkE,GAGF,OAFA,EAAKQ,WAAaR,EAEX,EAAKG,gBAAkB,EAAKC,gBAAkB,EAAKC,gBAAkB,EAAKC,mC,sCAUjI,OAAO/I,KAAKkK,oBACP3F,MAAK,SAACkE,GACH,QAAIA,KAOPhE,OAAM,SAACvF,GACJ,OAAO,O,0CAKf,GAAKc,KAAK4I,eA0BN,OAAOxF,QAAQ+E,SAAQ,GAzBvBnI,KAAKmG,aAAeR,EAAaE,SACjC7F,KAAKoG,YAAcL,EAAYC,OAE/B,IAMImE,EAAOnK,KAAKoK,YAAY,OAC5B,OAAID,EACOA,EARC,oCAEI,CACZ,eAAgB,eAMX5F,MAAK,SAAAX,GAEF,OADAjB,EAAWQ,IAAX,qDAA6DS,IACtDA,KAEVa,OAAM,SAAAvB,GAGH,MAFAD,QAAQC,MAAM,8CAA+CA,GAC7DP,EAAWQ,IAAX,qDAA6DD,IACvDA,KAGXE,QAAQC,OAAO,IAAIC,MAAM,mB,6CAQpC,OAAOtD,KAAKqK,2BACP9F,MAAK,SAACkE,GACH,QAAIA,KAOPhE,OAAM,SAACvF,GACJ,OAAO,O,iDAKf,GAAKc,KAAK4I,eAgCN,OAAOxF,QAAQ+E,SAAQ,GA/BvBnI,KAAKmG,aAAeR,EAAaE,SACjC7F,KAAKoG,YAAcL,EAAYC,OAE/B,IAYImE,EAAOnK,KAAKoK,YAAY,QAC5B,OAAID,EACOA,EAdC,6CAEI,CACZ,eAAgB,mCAGP,CACT9H,MAAO,MACPmC,KAAM,MACN8F,OAAQ,IAMH/F,MAAK,SAAAV,GAEF,OADAlB,EAAWQ,IAAX,4DAAoE2B,KAAKC,UAAUlB,KAC5EA,KAEVY,OAAM,SAAAvB,GAGH,MAFAD,QAAQC,MAAM,qDAAsDA,GACpEP,EAAWQ,IAAX,4DAAoED,IAC9DA,KAGXE,QAAQC,OAAO,IAAIC,MAAM,mB,0CAUpC,OAFAtD,KAAKmG,aAAeR,EAAaE,SACjC7F,KAAKoG,YAAcL,EAAYC,OACxBhG,KAAKuK,oB,0CAMZ,OAFAvK,KAAKmG,aAAeR,EAAaG,SACjC9F,KAAKoG,YAAcL,EAAYC,OACxBhG,KAAKuK,oB,0CAMZ,OAFAvK,KAAKmG,aAAeR,EAAaE,SACjC7F,KAAKoG,YAAcL,EAAYE,OACxBjG,KAAKuK,oB,0CAMZ,OAFAvK,KAAKmG,aAAeR,EAAaG,SACjC9F,KAAKoG,YAAcL,EAAYE,OACxBjG,KAAKuK,oB,wCAIZ,OAAOvK,KAAKwK,sBACPjG,MAAK,SAACkE,GACH,QAAIA,KAOPhE,OAAM,SAACvF,GACJ,OAAO,O,4CAKf,IAAM8E,EAAG,gCAA4BkC,EAAYW,SAAxC,YAqBT,OAFAlE,EAAWQ,IAAX,kEAA0Ea,IAEnEhE,KAAKwF,KAAKxB,EApBJ,CACT,UAAY,EACZ,YAAc,EACd,mBAAqB,EACrB,YAAc,EACd,UAAY,EACZ,eAAiB,EACjB,eAAiB,EACjB,cAAgB,EAChB,sBAAwB,EACxB,eAAiB,EACjB,gBAAkB,EAClB,iBAAmB,EACnB,cAAgB,EAChB,iBAAmB,EACnB,kBAAoB,IAKI,GACvBO,MAAK,SAAAV,GACF,OAAIA,GAAQA,EAAK4G,WACb9H,EAAWQ,IAAI,0CACR,IAGHU,GACAZ,QAAQC,MAAM,yCAA0CW,EAAK6G,QAE7D/H,EAAWQ,IAAI,iDACfR,EAAWQ,IAAI,0CAGfF,QAAQC,MAAM,wCAEdP,EAAWQ,IAAI,+CACfR,EAAWQ,IAAI,yCAGhBC,QAAQC,OAAO,IAAIC,MAAM,oCAEnCmB,OAAM,SAAAvB,GAKH,MAJAD,QAAQC,MAAM,uEAAwEA,GAEtFP,EAAWQ,IAAX,8EAAsFD,IACtFP,EAAWQ,IAAI,wCACTD,O,4BAIZyH,GACF,IAAKA,EAAW,OAAO,EAGvB,IAwBMC,EAAqBD,EAAUtD,cAGrC,MA3BoB,CAChB,MACA,QACA,SACA,QACA,cACA,gBACA,SACA,SACA,QACA,cACA,UACA,aACA,WACA,aACA,iBACA,YACA,UACA,cACA,OACA,QAOewD,MAAK,SAAAC,GAAO,OAAIF,EAAmBjH,SAASmH,Q,yDAI/D,IAAMH,EAAYxF,UAAUwF,UAGtBI,EAAc5F,UAAU6F,cAAgB7F,UAAU6F,cAAcC,OAAS,KAGzEC,IACA1B,OAAO2B,UACNJ,GAAeA,EAAYF,MAAK,SAAAO,GAAK,OAAIA,EAAMA,MAAMzH,SAAS,eAE/D0H,EAAYV,EAAUhH,SAAS,WAC/B2H,EAAWX,EAAUhH,SAAS,iBAAmBuH,EAEvD,OAAIA,EACO,gCACAG,EACA,wBACAC,EACA,wBACA,UAAW9B,OACX,gCAEA,4B,kCAIHtG,GAgBR,GAbKA,EAAMhC,SACPgC,EAAMhC,OAASgF,EAAYW,UAG1B3D,EAAMyH,YACPzH,EAAMyH,UAAYxF,UAAUwF,WAEhCzH,EAAMqI,MAAQvL,KAAKuL,MAAMrI,EAAMyH,WAE1BzH,EAAMsI,sBACPtI,EAAMsI,oBAAsBxL,KAAKyL,qCAGhCvI,EAAMwI,WACP,GAAI,eAAgBvG,UAAW,CAC3B,IAAMuG,EAAavG,UAAUuG,YAAcvG,UAAUwG,eAAiBxG,UAAUyG,iBAChF1I,EAAMwI,WAAN,gBAA4BA,EAAWnL,MAAQ,UAA/C,4BAA4EmL,EAAWG,eAAiB,UAAxG,uBAAgIH,EAAWI,UAAY,UAAvJ,kBAA0KJ,EAAWK,KAAO,UAA5L,uBAAoNL,EAAWM,WAAY,QAE3O9I,EAAMwI,WAAa,2CAI3BzI,QAAQC,MAAM,+BAAgC4B,KAAKC,UAAU7B,EAAO,KAAM,IAE1E,IAAIiH,EAAOnK,KAAKoK,YAAY,kBAC5B,OAAID,EAGOA,EA9BC,kBA4BQnK,KAAKiM,YAAW,GAEN/I,GAEvBE,QAAQC,OAAO,IAAIC,MAAM,mB,kCAGxBqB,GACR,OAAQ3E,KAAKmG,cACT,KAAKR,EAAaE,SACd,OAAQlB,GACJ,IAAK,MACD,OAAO5B,EAAaW,IAAIwI,KAAKnJ,GACjC,IAAK,OACD,OAAOA,EAAayC,KAAK0G,KAAKnJ,GAClC,IAAK,iBACD,OAAOA,EAAaoJ,eAAeD,KAAKnJ,GAC5C,IAAK,MACD,OAAOA,EAAa0C,IAAIyG,KAAKnJ,GACjC,IAAK,SACD,OAAOA,EAAa2C,OAAOwG,KAAKnJ,GAExC,OAAO,KACX,KAAK4C,EAAaG,SACd,OAAQnB,GACJ,IAAK,MACD,OAAOyH,EAAa1I,IAAIwI,KAAKE,GACjC,IAAK,OACD,OAAOA,EAAa5G,KAAK0G,KAAKE,GAClC,IAAK,iBACD,OAAOA,EAAaD,eAAeD,KAAKE,GAC5C,IAAK,MACD,OAAOA,EAAa3G,IAAIyG,KAAKE,GACjC,IAAK,SACD,OAAOA,EAAa1G,OAAOwG,KAAKE,GAExC,OAAO,KAEf,OAAO,O,kCAGCpI,GACR,GAAIA,EAAI+C,WAAW,QACf,OAAO/C,EAGX,OAAQhE,KAAKoG,aACT,KAAKL,EAAYC,OACb,MAAM,GAAN,OAAUhG,KAAKsH,OAAf,YAAyBtD,GAC7B,KAAK+B,EAAYE,OACb,OAAOjC,EAEf,OAAO,O,iCAGAqI,GACP,IAAI5I,EAAU,GAUd,OATI4I,IACA5I,EAAO,cAAP,iBAAqCyC,EAAYG,WAErD5C,EAAO,cAAoBzD,KAAK6G,SAChCpD,EAAO,eAAqBzD,KAAKsG,UACjC7C,EAAO,cAAoBzD,KAAKwG,cAChC/C,EAAO,kBAAwBzD,KAAKyG,kBACpChD,EAAO,oBAA0BzD,KAAK0G,oBACtCjD,EAAQ,gBAAkB,mBACnBA,I,iCAGA4C,EAAUC,GAA8B,IAAnBgG,EAAkB,uDAAN,KACxCtM,KAAKqG,SAAWA,EAChBrG,KAAKsG,UAAYA,EACjBtG,KAAKuM,eAAkBzE,KAAKS,MAAQ,IAAQ+D,I,wCAK7B,IAAD,OAGdtM,KAAKuG,oBAAqB,EAK1B,OAAOvG,KAAKwF,KAHA,qBACC,IAEe,GACvBjB,MAAK,SAAAV,GAEF,OADA,EAAK0C,oBAAqB,EACtB1C,GAAQA,EAAK4G,WAEb,EAAK+B,WAAW3I,EAAK4I,OAAOC,YAAa,EAAKpG,UAAWzC,EAAK4I,OAAOE,qBAC9D9I,IAEXZ,QAAQC,MAAM,qDAAsDW,GAC7DA,MAEVY,OAAM,SAAAvB,GAGH,OAFA,EAAKqD,oBAAqB,EAC1BtD,QAAQC,MAAM,kEAAmEA,GAC1EE,QAAQC,OAAOH,Q,uCAIH,IAAhB0J,IAAe,yDAC1B,GAAIA,EAAQ,CACR,GAAI5M,KAAKqG,SAAU,CACf,IAAIwG,EAAkB7M,KAAKuM,eAAkBzE,KAAKS,MAAQ,IAE1D,OADAtF,QAAQ2E,KAAR,kDAAwDiF,IACpDA,EAAkB,EAEX7M,KAAK8M,kBAGT1J,QAAQ+E,QAAQ,CAAEsC,WAAW,IAIxC,OAFAxH,QAAQC,MAAM,iDAEPE,QAAQ+E,QAAQ,CAAEsC,WAAW,IAExC,OAAOrH,QAAQ+E,QAAQ,CAAEsC,WAAW,M,0BAGpCzG,GAAqB,IAAD,OAAf4I,IAAe,yDAGpB,OAFAjK,EAAWQ,IAAI,6CAERnD,KAAK+M,eAAeH,GACtBrI,MAAK,SAAAkI,GACF,GAAIA,GAAUA,EAAOhC,UAAW,CAC5B,IAAMhH,EAAU,EAAKwI,WAAWW,GAE5BI,EAAW,EAAKC,YAAYjJ,GAChC,GAAIgJ,EAAU,CACV,IAAI7C,EAAO,EAAKC,YAAY,OAC5B,GAAID,EACA,OAAOA,EAAK6C,EAAUvJ,GACjBc,MAAK,SAAAvB,GAEF,OADAL,EAAWQ,IAAI,mCACRH,KAEVyB,OAAM,SAAAvB,GAGH,MAFAD,QAAQC,MAAM,oCAAqCA,GACnDP,EAAWQ,IAAX,2CAAmDD,IAC7CA,KAKtB,OADAP,EAAWQ,IAAX,iCACOC,QAAQC,OAAO,IAAIC,MAAJ,kCAI1B,OAFAL,QAAQC,MAAMuJ,GACd9J,EAAWQ,IAAX,0DAAkEsJ,IAC3DrJ,QAAQC,OAAO,IAAIC,MAAJ,0DAA6DmJ,QAEtFhI,OAAM,SAAAvB,GAGH,MAFAD,QAAQC,MAAM,qDAAsDA,GACpEP,EAAWQ,IAAX,4DAAoED,IAC9DA,O,2BAIbc,EAAKQ,GAAsB,IAAD,OAAfoI,IAAe,yDAG3B,OAFAjK,EAAWQ,IAAI,8CAERnD,KAAK+M,eAAeH,GACtBrI,MAAK,SAAAkI,GACF,GAAIA,GAAUA,EAAOhC,UAAW,CAC5B,IAAMhH,EAAU,EAAKwI,WAAWW,GAEhCjK,EAAWQ,IAAI,qCAEf,IAAI6J,EAAW,EAAKC,YAAYjJ,GAChC,GAAIgJ,EAAU,CACV,IAAI7C,EAAO,EAAKC,YAAY,QAC5B,GAAID,EACA,OAAOA,EAAK6C,EAAUvJ,EAASe,GAC1BD,MAAK,SAAAvB,GAEF,OADAL,EAAWQ,IAAI,oCACRH,KAEVyB,OAAM,SAAAvB,GAGH,MAFAD,QAAQC,MAAM,qCAAsCA,GACpDP,EAAWQ,IAAX,4CAAoDD,IAC9CA,KAKtB,OADAP,EAAWQ,IAAX,mCACOC,QAAQC,OAAO,IAAIC,MAAJ,oCAI1B,OAFAL,QAAQC,MAAMuJ,GACd9J,EAAWQ,IAAX,2DAAmEsJ,IAC5DrJ,QAAQC,OAAO,IAAIC,MAAJ,2DAA8DmJ,QAEvFhI,OAAM,SAAAvB,GAGH,MAFAD,QAAQC,MAAM,sDAAuDA,GACrEP,EAAWQ,IAAX,6DAAqED,IAC/DA,O,qCAIHc,EAAKQ,GAAsB,IAAD,OAAfoI,IAAe,yDACrC,OAAO5M,KAAK+M,eAAeH,GACtBrI,MAAK,SAAAkI,GACF,GAAIA,GAAUA,EAAOhC,UAAW,CAC5B,IAAMhH,EAAU,EAAKwI,WAAWW,GAE5BI,EAAW,EAAKC,YAAYjJ,GAChC,GAAIgJ,EAAU,CACV,IAAI7C,EAAO,EAAKC,YAAY,kBAC5B,GAAID,EACA,OAAOA,EAAK6C,EAAUvJ,EAASe,GAC1BD,MAAK,SAAAvB,GAEF,OADAL,EAAWQ,IAAI,8CACRH,KAEVyB,OAAM,SAAAvB,GAGH,MAFAD,QAAQC,MAAM,+CAAgDA,GAC9DP,EAAWQ,IAAX,sDAA8DD,IACxDA,KAKtB,OADAP,EAAWQ,IAAX,uDACOC,QAAQC,OAAO,IAAIC,MAAJ,wDAI1B,OAFAL,QAAQC,MAAMuJ,GACd9J,EAAWQ,IAAX,qEAA6EsJ,IACtErJ,QAAQC,OAAO,IAAIC,MAAJ,qEAAwEmJ,QAEjGhI,OAAM,SAAAvB,GAGH,MAFAD,QAAQC,MAAM,gEAAiEA,GAC/EP,EAAWQ,IAAX,uEAA+ED,IACzEA,O,0BAIdc,EAAKQ,GAAsB,IAAD,OAAfoI,IAAe,yDAC1B,OAAO5M,KAAK+M,eAAeH,GACtBrI,MAAK,SAAAkI,GACF,GAAIA,GAAUA,EAAOhC,UAAW,CAC5B,IAAMhH,EAAU,EAAKwI,WAAWW,GAE5BI,EAAW,EAAKC,YAAYjJ,GAChC,GAAIgJ,EAAU,CACV,IAAI7C,EAAO,EAAKC,YAAY,OAC5B,GAAID,EACA,OAAOA,EAAK6C,EAAUvJ,EAASe,GAC1BD,MAAK,SAAAvB,GAEF,OADAL,EAAWQ,IAAI,mCACRH,KAEVyB,OAAM,SAAAvB,GAGH,MAFAD,QAAQC,MAAM,oCAAqCA,GACnDP,EAAWQ,IAAX,2CAAmDD,IAC7CA,KAKtB,OADAP,EAAWQ,IAAX,iCACOC,QAAQC,OAAO,IAAIC,MAAJ,kCAI1B,OAFAL,QAAQC,MAAMuJ,GACd9J,EAAWQ,IAAX,0DAAkEsJ,IAC3DrJ,QAAQC,OAAO,IAAIC,MAAJ,0DAA6DmJ,QAEtFhI,OAAM,SAAAvB,GAGH,MAFAD,QAAQC,MAAM,qDAAsDA,GACpEP,EAAWQ,IAAX,4DAAoED,IAC9DA,O,6BAIXc,EAAKQ,GAAsB,IAAD,OAAfoI,IAAe,yDAC7B,OAAO5M,KAAK+M,eAAeH,GACtBrI,MAAK,SAAAkI,GACF,GAAIA,GAAUA,EAAOhC,UAAW,CAC5B,IAAMhH,EAAU,EAAKwI,WAAWW,GAE5BI,EAAW,EAAKC,YAAYjJ,GAChC,GAAIgJ,EAAU,CACV,IAAI7C,EAAO,EAAKC,YAAY,UAC5B,GAAID,EACA,OAAOA,EAAK6C,EAAUvJ,EAASe,GAC1BD,MAAK,SAAAvB,GAEF,OADAL,EAAWQ,IAAI,sCACRH,KAEVyB,OAAM,SAAAvB,GAGH,MAFAD,QAAQC,MAAM,uCAAwCA,GACtDP,EAAWQ,IAAX,8CAAsDD,IAChDA,KAKtB,OADAP,EAAWQ,IAAX,uCACOC,QAAQC,OAAO,IAAIC,MAAJ,wCAI1B,OAFAL,QAAQC,MAAMuJ,GACd9J,EAAWQ,IAAX,6DAAqEsJ,IAC9DrJ,QAAQC,OAAO,IAAIC,MAAJ,6DAAgEmJ,QAEzFhI,OAAM,SAAAvB,GAGH,MAFAD,QAAQC,MAAM,wDAAyDA,GACvEP,EAAWQ,IAAX,+DAAuED,IACjEA,S,MAMPgD,ICv0BTgH,EAAwB,oBACxBC,EAAQ,IAAI/J,SAAQ,SAAA+E,GAAO,OAAIqB,OAAM,kBAA0BrB,KA4DtDiF,EADU,I,WAvDrB,aAAe,IAAD,2BACVpN,KAAKqN,QAAS,EACdrN,KAAKsN,gBAAkB,GACvBtN,KAAKuN,SAAW,KAEhBJ,EAAM5I,MAAK,WACP,EAAK8I,QAAS,EAEV,EAAKC,gBAAgBrM,OAAS,IAC9B,EAAKqM,gBAAgBE,SAAQ,SAAAC,GACzBjE,OAAOkE,WAAWC,OAAOF,EAAGG,QAAS,CACjCC,QAAS,EAAKN,SACdO,MAAOL,EAAGK,MACVC,SAAUN,EAAGM,cAGrB,EAAKT,gBAAkB,O,uDAmBL,IAAD,OAApBU,EAAoB,uDAAX,UACd,OAAIhO,KAAKqN,OAEE7D,OAAOkE,WAAWO,QAAQjO,KAAK6N,QAAS,CAAEG,OAAQA,KAGzD/K,QAAQL,IAAI,+BACL,IAAIQ,SAAQ,SAAC+E,EAAS9E,GACrB,EAAKgK,OAELlF,EAAQqB,OAAOkE,WAAWO,QAAQ,EAAKJ,QAAS,CAAEG,OAAQA,KAG1D3K,EAAO,IAAIC,MAAM,+B,8BA3BjB,OAAOtD,KAAKuN,U,aAChBnJ,GAER,IAAKpE,KAAKqN,SAAWrN,KAAKuN,SAAU,CAChCvN,KAAKuN,SAAWnJ,EAEhB,IAAI8J,EAAStH,SAASuH,cAAc,UACpCD,EAAOE,IAAP,yDAA+DlB,EAA/D,mBAA+FlN,KAAKuN,UACpGW,EAAOG,OAAQ,EACfH,EAAOI,OAAQ,EACf1H,SAAS2H,KAAKC,YAAYN,Q,MC6KvBO,EADU,I,WAzMrB,aAAe,oBACXzO,KAAKgF,KAAO,KAEZhF,KAAK0O,aAAe,KACpB1O,KAAK2O,eAAiB,KAEtB3O,KAAK4O,gBAAkB,KACvB5O,KAAK6O,iBAAmB,KAExB7O,KAAK+N,SAAW,K,wDAGRA,GACR/N,KAAK+N,SAAWA,I,qCAIJ,IAAD,OACL/J,EAAG,6BAAyBkC,EAAYW,SAArC,YAsBT,OAHAlE,EAAWyF,QACXzF,EAAWQ,IAAI,6DAER+C,EAAYV,KAAKxB,EArBX,CACT,UAAY,EACZ,YAAc,EACd,mBAAqB,EACrB,YAAc,EACd,UAAY,EACZ,eAAiB,EACjB,eAAiB,EACjB,cAAgB,EAChB,sBAAwB,EACxB,eAAiB,EACjB,gBAAkB,EAClB,iBAAmB,EACnB,cAAgB,EAChB,iBAAmB,EACnB,kBAAoB,IAMW,GAC9BO,MAAK,SAAAV,GACF,OAAIA,GAAQA,EAAK4G,WAEbvE,EAAYsG,WAAW3I,EAAK4I,OAAOpG,SAAUxC,EAAK4I,OAAOnG,UAAWzC,EAAK4I,OAAOqC,kBAChF1B,EAAiBS,QAAUhK,EAAK4I,OAAOsC,iBAGvC,EAAK/J,KAAOnB,EAAK4I,OAGjB,EAAKuC,qBAAqBnL,GAG1B,EAAKoL,kBAAkBpL,GAGvB,EAAKqL,aAAarL,IAGd,EAAKkK,UACE,EAAKA,aAKZlK,GACAZ,QAAQC,MAAM,qCAAsCW,EAAK6G,QACzD/H,EAAWQ,IAAI,iDAGfF,QAAQC,MAAM,oCACdP,EAAWQ,IAAI,8CAGhBC,QAAQC,OAAO,IAAIC,MAAM,qCAEnCmB,OAAM,SAAAvB,GAGH,MAFAD,QAAQC,MAAM,qEAAsEA,GACpFP,EAAWQ,IAAX,4EAAoFD,IAC9EA,O,2CAIGW,GACjB,GAAIA,EAAK4I,OAAO0C,QAAQC,SAAU,CAC9B,IAAIC,EAAexL,EAAK4I,OAAO0C,QAAQC,SAASE,MAAK,SAAAC,GAAC,MAAe,UAAXA,EAAEC,QAC5D,GAAIH,EAEA,GADYA,EAAaI,MACd,CACP,IAAIC,EAAc7L,EAAK4I,OAAO0C,QAAQC,SAASE,MAAK,SAAAC,GAAC,MAAe,UAAXA,EAAEC,QAAkBC,MAAMH,MAAK,SAAAK,GAAC,OAAoB,IAAhBA,EAAEC,aAC/F5P,KAAK4O,gBAAkBc,EAAcA,EAAYnP,KAAO,MAIpE,GAAIsD,EAAK4I,OAAO0C,QAAQU,MAAO,CAC3B,IAAIC,EAAmBjM,EAAK4I,OAAO0C,QAAQU,MAAMP,MAAK,SAAAK,GAAC,MAAe,iBAAXA,EAAEH,QAC7D,GAAIM,EAAkB,CAClB,IAAIC,EAAeD,EAAiBC,aACpC,GAAIA,EAAc,CACd,IAAIC,EAAeD,EAAaT,MAAK,SAAAW,GAAC,OAAoB,IAAhBA,EAAEL,aAC5C5P,KAAK6O,iBAAmBmB,EAAeA,EAAaE,cAAc7I,cAAgB,U,wCAMhFxD,GACVA,EAAK4I,OAAO0D,eAAiBtM,EAAK4I,OAAO0D,cAAcC,SAAwD,IAA7CvM,EAAK4I,OAAO0D,cAAcC,QAAQnP,SACpGjB,KAAKqQ,eAAiBxM,EAAK4I,OAAO0D,cAAcC,QAAQ,GAAG3N,M,mCAItDoB,GACT,GAAIA,EAAK4I,OAAO6D,KAAM,CAClB,GAAIzM,EAAK4I,OAAO6D,KAAK5B,aAAc,CAC/B1O,KAAK0O,aAAe7K,EAAK4I,OAAO6D,KAAK5B,aACrC9H,SAASa,gBAAgBC,MAAMC,YAAY,YAAa9D,EAAK4I,OAAO6D,KAAK5B,cACzE,IAAI6B,EAAMvQ,KAAKwQ,SAAS3M,EAAK4I,OAAO6D,KAAK5B,cACrC6B,IACA3J,SAASa,gBAAgBC,MAAMC,YAAY,aAAc4I,EAAIN,GAC7DrJ,SAASa,gBAAgBC,MAAMC,YAAY,aAAc4I,EAAIE,GAC7D7J,SAASa,gBAAgBC,MAAMC,YAAY,aAAc4I,EAAIG,IAGrE,GAAI7M,EAAK4I,OAAO6D,KAAK3B,eAAgB,CACjC3O,KAAK2O,eAAiB9K,EAAK4I,OAAO6D,KAAK3B,eACvC/H,SAASa,gBAAgBC,MAAMC,YAAY,cAAe9D,EAAK4I,OAAO6D,KAAK3B,gBAC3E,IAAI4B,EAAMvQ,KAAKwQ,SAAS3M,EAAK4I,OAAO6D,KAAK3B,gBACrC4B,IACA3J,SAASa,gBAAgBC,MAAMC,YAAY,eAAgB4I,EAAIN,GAC/DrJ,SAASa,gBAAgBC,MAAMC,YAAY,eAAgB4I,EAAIE,GAC/D7J,SAASa,gBAAgBC,MAAMC,YAAY,eAAgB4I,EAAIG,IAGvE,GAAI7M,EAAK4I,OAAO6D,KAAKK,kBAAmB,CACpC/J,SAASa,gBAAgBC,MAAMC,YAAY,kBAAmB9D,EAAK4I,OAAO6D,KAAKK,mBAC/E,IAAIJ,EAAMvQ,KAAKwQ,SAAS3M,EAAK4I,OAAO6D,KAAKK,mBACrCJ,IACA3J,SAASa,gBAAgBC,MAAMC,YAAY,mBAAoB4I,EAAIN,GACnErJ,SAASa,gBAAgBC,MAAMC,YAAY,mBAAoB4I,EAAIE,GACnE7J,SAASa,gBAAgBC,MAAMC,YAAY,mBAAoB4I,EAAIG,Q,+BAM1EE,GACL,IAAInE,EAAS,4CAA4CoE,KAAKD,GAC9D,OAAOnE,EAAS,CACZwD,EAAGa,SAASrE,EAAO,GAAI,IACvBgE,EAAGK,SAASrE,EAAO,GAAI,IACvBiE,EAAGI,SAASrE,EAAO,GAAI,KACvB,O,qCAGOsE,GACX,OAAgB,IAAZA,EACO/Q,KAAKgF,KAAKsL,KAAKU,WAEjBD,EAAU,EACR/Q,KAAKgF,KAAKsL,KAAKW,iBADrB,I,kCAML,OAAIjR,KAAKgF,KAAKsL,KAAKY,OACRlR,KAAKgF,KAAKsL,KAAKY,OAGf,O,wCAKX,OAAIlR,KAAKgF,KAAKsL,KAAKa,gBACRnR,KAAKgF,KAAKsL,KAAKa,gBAGf,a,uCAKX,OAAInR,KAAKgF,KAAKsL,MACHtQ,KAAKgF,KAAKsL,KAAKc,c,2CAQ1B,OAAOpR,KAAKgF,KAAKsL,OAA2C,IAAnCtQ,KAAKgF,KAAKsL,KAAKe,kB,0CAIxC,OAAOrR,KAAKgF,KAAKsM,mB,MC6HVC,E,kDA5TX,WAAYtR,GAAQ,IAAD,8BACf,cAAMA,IAGDuR,OAAS,KAGd,EAAKC,eAAiBjI,OAAOkI,WAAa9K,SAASa,gBAAgBkK,YACnE,EAAKC,MAAQ,CACTC,UAAW,EACXC,sBAAsB,GAI1B,EAAKC,aAAe,EAAKA,aAAa7F,KAAlB,gBACpB,EAAK8F,mBAAqB,EAAKA,mBAAmB9F,KAAxB,gBAC1B,EAAK+F,UAAY,EAAKA,UAAU/F,KAAf,gBACjB,EAAKgG,gBAAkB,EAAKA,gBAAgBhG,KAArB,gBAjBR,E,gEAsBflM,KAAKmS,yB,6CAKL3I,OAAO4I,iBAAiB,SAAUpS,KAAK+R,gB,yCAIvC/R,KAAKqS,SAAS,CAAEP,sBAAsB,IACtClL,SAASpC,KAAK8N,UAAUnP,IAAI,mBAC5BnD,KAAKwR,OAAOc,UAAUnP,IAAI,W,0CAI1BnD,KAAKqS,SAAS,CAAEP,sBAAsB,IACtClL,SAASpC,KAAK8N,UAAUC,OAAO,mBAC/BvS,KAAKwR,OAAOc,UAAUC,OAAO,W,+CAKF,IADbC,iBAAiBxS,KAAKwR,QAC1BiB,aACNzS,KAAKwR,OAAO9J,MAAM+K,aAAlB,UAAoCzS,KAAKyR,eAAzC,MAGAzR,KAAKwR,OAAO9J,MAAM+K,aAAe,I,qCAMrC,GAAIzS,KAAKwR,OAAQ,CACb,IAAMhS,EAAIgK,OAAOkJ,YAEXC,EAAcnT,EAAI,GACpBA,GAAK,IACLQ,KAAKwR,OAAOc,UAAUC,OAAO,UAG7BI,GAAe3S,KAAK4R,MAAMC,UAAYrS,EACtCQ,KAAKwR,OAAOc,UAAUC,OAAO,SAE7BvS,KAAKwR,OAAOc,UAAUnP,IAAI,QAAS,UAGvCnD,KAAKqS,SAAS,CAAER,UAAWrS,O,2CAK3BQ,KAAK4R,MAAME,qBACX9R,KAAK4S,oBAEL5S,KAAK6S,qB,kCAKT7S,KAAK4S,oBACLpJ,OAAOsJ,SAAS,CACZpT,IAAK,EACLG,KAAM,EACNkT,SAAU,a,wCAKd/S,KAAK4S,oBAED5S,KAAKC,MAAM+S,UACXhT,KAAKC,MAAM+S,a,+BAKT,IAAD,SACmChT,KAAKC,MAArCgT,EADH,EACGA,gBAAiBC,EADpB,EACoBA,WAEnBC,EAAO1E,EAAiBzJ,KAAKmK,QAAQ1L,QACrC2P,EAAO3E,EAAiBzJ,KAAKsL,KAAK+C,QAClCxD,EAAQpB,EAAiBzJ,KAAKmK,QAAQU,MAEtCyD,EAAe7E,EAAiBzJ,KAAKmK,QAAQC,SAASE,MAAK,SAAAC,GAAC,MAAe,aAAXA,EAAEC,QAClE+D,EAAWD,EAAeA,EAAaC,SAAW,KAElDC,EAAiB/E,EAAiBzJ,KAAKmK,QAAQC,SAASE,MAAK,SAAAC,GAAC,MAAe,eAAXA,EAAEC,QACpEiE,EAAkBD,GAAkBA,EAAeE,YAAcF,EAAeE,YAAc,eAE9F9E,EAAkBH,EAAiBG,gBACnCC,EAAmBJ,EAAiBI,iBAEpCqC,EAASzC,EAAiBkF,YAEhC,OACI,sBAAK9U,UAAW,cAAgBoU,GAAoC,IAAK5S,IAAK,SAAAuT,GAAG,OAAI,EAAKpC,OAASoC,GAAnG,UACI,sBAAK/U,UAAU,sBAAf,UACI,qBAAKA,UAAU,kBAAf,SACI,cAAC,IAAD,CAAMkB,GAAG,IAAIU,QAAST,KAAKiS,UAA3B,SACI,qBAAKpT,UAAU,QAAf,SACI,qBAAKuP,IAAKgF,EAAMS,IAAI,WAIhC,qBAAIhV,UAAU,iBAAd,UAEQsU,EAAK7D,MAAK,SAAAwE,GAAC,MAAU,cAANA,MACf,oBAAIjV,UAAW,uBAAwC,cAAfqU,EAA6B,WAAa,IAAlF,SACI,cAAC,IAAD,CAAMnT,GAAG,aAAT,6BAIJoT,EAAK7D,MAAK,SAAAwE,GAAC,MAAU,YAANA,MACf,qBAAIjV,UAAW,uBAAwC,YAAfqU,EAA2B,WAAa,IAAhF,UAEQzE,EAAiB4B,gBACjB,cAAC,IAAD,CAAMtQ,GAAE,kBAAa0O,EAAiB4B,gBAAtC,yBAGC5B,EAAiB4B,gBAClB,cAAC,IAAD,CAAMtQ,GAAG,WAAT,4BAKRoT,EAAK7D,MAAK,SAAAwE,GAAC,MAAU,YAANA,MACf,oBAAIjV,UAAW,uBAAwC,YAAfqU,EAA2B,WAAa,IAAhF,SACI,cAAC,IAAD,CAAMnT,GAAE,mBAAc6O,GAAtB,uBAIJuE,EAAK7D,MAAK,SAAAwE,GAAC,MAAU,iBAANA,MACf,oBAAIjV,UAAW,uBAAwC,iBAAfqU,EAAgC,WAAa,IAArF,SACI,eAAC,IAAD,CAAMnT,GAAE,wBAAmB8O,GAA3B,UAAgDqC,EAAhD,qBAIJiC,EAAKhP,KAAI,SAAAqL,GACL,IAAK,CAAC,YAAY,UAAU,UAAU,eAAe,eAAe,WAAW,eAAe7L,SAAS6L,GAAO,CAC1G,IAAMuE,EAAOlE,EAAMP,MAAK,SAAAK,GAAC,OAAIA,EAAEH,OAASA,KACxC,OAAO,oBAAI3Q,UAAW,uBAAyBqU,IAAe1D,EAAO,WAAa,IAA3E,SAAgF,cAAC,IAAD,CAAMzP,GAAE,WAAMyP,GAAd,SAAuBuE,EAAKC,kBAKnI,sBAAKnV,UAAU,uBAAf,UACI,qBAAKA,UAAU,oBAAf,SACI,qBAAIA,UAAU,8BAAd,WAESsU,EAAK7D,MAAK,SAAAwE,GAAC,MAAU,aAANA,MAChB,oBAAIjV,UAAW,oCAAqD,UAAfqU,EAAyB,WAAa,IAA3F,SACI,cAAC,IAAD,CAAMnT,GAAG,SAAT,sBAIHoT,EAAK7D,MAAK,SAAAwE,GAAC,MAAU,gBAANA,MAChB,oBAAIjV,UAAW,oCAAqD,aAAfqU,EAA4B,WAAa,IAA9F,SACI,cAAC,IAAD,CAAMnT,GAAG,YAAT,4BAMZoT,EAAK7D,MAAK,SAAAwE,GAAC,MAAU,iBAANA,MACf,qCAEQ9T,KAAKC,MAAM+S,UACX,qBAAKnU,UAAU,qBAAqB4B,QAAST,KAAKkS,gBAAlD,SACI,cAAC,EAAD,CAAcrT,UAAU,aAAxB,SAAsC4U,OAIzCzT,KAAKC,MAAM+S,UACZ,qBAAKnU,UAAU,qBAAf,SACI,cAAC,IAAD,CAAMkB,GAAI,CAACkU,SAAU,IAAKrC,MAAO,CAACsC,YAAY,IAAQzT,QAAST,KAAKkS,gBAApE,SACI,cAAC,EAAD,CAAcrT,UAAU,aAAxB,SAAsC4U,WAO1D,qBAAK5U,UAAU,oBAAf,SAEQ0U,GACA,qBAAK1U,UAAU,yBAAf,SACI,mBAAG6K,KAAM6J,EAAT,SACI,eAAC,EAAD,CAAc1U,UAAU,eAAxB,UACI,qBAAKA,UAAU,oBAAf,SACI,qBAAKA,UAAU,0BAAf,SACI,cAAC,EAAD,QAGR,sBAAKA,UAAU,oBAAf,0BAAgD,sDAMpE,qBAAKA,UAAU,wBAAwB4B,QAAST,KAAKgS,mBAArD,SACI,yBAAQnT,UAAU,uBAAuB0B,KAAK,SAAS4T,KAAK,aAAaC,aAAW,kBAApF,UACI,sBAAMvV,UAAU,aAChB,sBAAMA,UAAU,SAAhB,SAAyB,sBAAMA,UAAU,wBAKzD,sBAAKA,UAAU,gBAAf,UACI,qBAAKA,UAAU,yBACf,sBAAKA,UAAU,wBAAf,UACI,qBAAKA,UAAU,qBAAf,SACI,qBAAKA,UAAU,2BAAf,SACI,qBAAIA,UAAU,qBAAd,UAEQsU,EAAK7D,MAAK,SAAAwE,GAAC,MAAU,cAANA,MACf,oBAAIjV,UAAW,2BAA6C,cAAfqU,EAA6B,WAAa,IAAvF,SACI,cAAC,IAAD,CAAMnT,GAAG,aAAaU,QAAST,KAAKgS,mBAApC,6BAIJmB,EAAK7D,MAAK,SAAAwE,GAAC,MAAU,YAANA,MACf,qBAAIjV,UAAW,2BAA4C,YAAfqU,EAA2B,WAAa,IAApF,UAEQzE,EAAiB4B,gBACjB,cAAC,IAAD,CAAMtQ,GAAE,kBAAa0O,EAAiB4B,gBAAkB5P,QAAST,KAAKgS,mBAAtE,yBAGCvD,EAAiB4B,gBAClB,cAAC,IAAD,CAAMtQ,GAAG,WAAWU,QAAST,KAAKgS,mBAAlC,4BAMRmB,EAAK7D,MAAK,SAAAwE,GAAC,MAAU,YAANA,MACf,oBAAIjV,UAAW,2BAA4C,YAAfqU,EAA2B,WAAa,IAApF,SACI,cAAC,IAAD,CAAMnT,GAAE,mBAAc6O,GAAmBnO,QAAST,KAAKgS,mBAAvD,uBAIJmB,EAAK7D,MAAK,SAAAwE,GAAC,MAAU,iBAANA,MACf,oBAAIjV,UAAW,2BAA4C,iBAAfqU,EAAgC,WAAa,IAAzF,SACI,eAAC,IAAD,CAAMnT,GAAE,wBAAmB8O,GAAoBpO,QAAST,KAAKgS,mBAA7D,UAAkFd,EAAlF,qBAIJiC,EAAKhP,KAAI,SAAAqL,GACL,IAAK,CAAC,YAAY,UAAU,UAAU,eAAe,eAAe,WAAW,eAAe7L,SAAS6L,GAAO,CAC1G,IAAMuE,EAAOlE,EAAMP,MAAK,SAAAK,GAAC,OAAIA,EAAEH,OAASA,KACxC,OAAO,oBAAI3Q,UAAW,uBAAyBqU,IAAe1D,EAAO,WAAa,IAA3E,SAAgF,cAAC,IAAD,CAAMzP,GAAE,WAAMyP,GAAd,SAAuBuE,EAAKC,gBAK1Hb,EAAK7D,MAAK,SAAAwE,GAAC,MAAU,aAANA,MAChB,oBAAIjV,UAAW,2BAA4C,UAAfqU,EAAyB,WAAa,IAAKzQ,GAAG,YAA1F,SACI,cAAC,IAAD,CAAM1C,GAAG,SAASU,QAAST,KAAKgS,mBAAhC,sBAIHmB,EAAK7D,MAAK,SAAAwE,GAAC,MAAU,gBAANA,MAChB,oBAAIjV,UAAW,2BAA4C,aAAfqU,EAA4B,WAAa,IAAKzQ,GAAG,UAA7F,SACI,cAAC,IAAD,CAAM1C,GAAG,YAAYU,QAAST,KAAKgS,mBAAnC,8BAOhBmB,EAAK7D,MAAK,SAAAwE,GAAC,MAAU,iBAANA,MACf,qBAAKjV,UAAU,iCAAf,SACI,sBAAKA,UAAU,6BAAf,UAEQmB,KAAKC,MAAM+S,UACX,qBAAKvS,QAAST,KAAKkS,gBAAnB,SACI,wBAAQrT,UAAU,oBAAlB,SAAuC4U,OAI1CzT,KAAKC,MAAM+S,UACZ,cAAC,IAAD,CAAMjT,GAAI,CAACkU,SAAU,IAAKrC,MAAO,CAACsC,YAAY,IAAQzT,QAAST,KAAKkS,gBAApE,SACI,wBAAQrT,UAAU,oBAAlB,SAAuC4U,wB,GAjT9D1U,IAAMC,W,eC6BZqV,E,uKA/BD,IAAD,EAC4ErU,KAAKC,MAAM+E,KAApFvB,EADH,EACGA,QAASe,EADZ,EACYA,KAAMkP,EADlB,EACkBA,YAAaY,EAD/B,EAC+BA,WAAYC,EAD3C,EAC2CA,SAAUC,EADrD,EACqDA,mBACpDjU,EAAOP,KAAKC,MAAMM,KAClBkU,EAAczU,KAAKC,MAAMwU,YAE/B,OACI,qBAAK5V,UAAW,kBAAoB0B,EAAO,IAAMA,EAAO,IAAM,KAAOkU,EAAc,eAAiB,IAApG,SACI,qBAAK5V,UAAU,0BAAf,SACI,sBAAKA,UAAU,wBAAf,UACI,sBAAKA,UAAU,qBAAf,UACI,qBAAIA,UAAU,sBAAsB6V,WAAUC,oBAAeC,EAAY,UAAzE,UAAqFnR,EAAQ,GAA7F,IAAiG,uBAAM5E,UAAU,eAAhB,UAAgC4E,EAAQ,GAAxC,OAAoDA,EAAQ,MAC7J,mBAAG5E,UAAU,4BAA4B6V,WAAUC,oBAAeC,EAAY,UAAWC,oBAAkB,OAA3G,SAAmHrQ,IACnH,qBAAK3F,UAAU,wBAAwB6V,WAAUC,oBAAeC,EAAY,UAAWC,oBAAkB,OAAzG,SACI,cAAC,IAAD,CAAM9U,GAAIuU,GAA0B,GAApC,SACI,eAAC,EAAD,CAAczV,UAAU,WAAxB,UAAoC6U,EAApC,cAIZ,sBAAK7U,UAAU,6BAAf,UAEQ2V,GAAsB,qBAAKpG,IAAKoG,EAAoB3V,UAAU,wCAAwCgV,IAAI,KAE9G,qBAAKzF,IAAKmG,EAAUG,WAAUC,oBAAeC,EAAY,UAAWE,kBAAgB,gBAAgBjB,IAAI,mB,GAxB3G9U,IAAMC,W,gBC+EhB+V,E,kDA3EX,WAAY9U,GAAQ,IAAD,6BACf,cAAMA,GAGNH,IAAKkV,eAAeC,KAGpB,EAAKzQ,KAAO,KACZ,EAAK0Q,KAAO,KARG,E,gEAaflV,KAAKmV,oB,wCAIU,IAAD,OACdF,IAAcG,WAAW,CACrB,qBAAsB,WAClBH,IAAcI,OAAO,CACjBC,QAAS,EAAK9Q,KACd+Q,IAAK,EAAKL,KACVM,MAAO,+BACPC,IAAK,0CAAwB,EAAKP,KAAO,EAAKA,KAAKQ,aAAe,EAA7D,OACLC,OAAO,S,+BAOb,IAAD,SAC8C3V,KAAKC,MAAM+E,KAAtDvB,EADH,EACGA,QAASe,EADZ,EACYA,KAAMkP,EADlB,EACkBA,YAAaY,EAD/B,EAC+BA,WAC9B/T,EAAOP,KAAKC,MAAMM,KAClBkU,EAAczU,KAAKC,MAAMwU,YAE/B,OACI,qBAAK5V,UAAY,YAAc0B,GAASkU,EAAc,gBAAkB,IAAxE,SACI,qBAAK5V,UAAU,oBAAf,SACI,qBAAKA,UAAU,kBAAf,SACI,sBAAKA,UAAU,eAAewB,IAAK,SAAAuT,GAAG,OAAI,EAAKpP,KAAOoP,GAAtD,UACI,sBAAK/U,UAAU,eAAewB,IAAK,SAAAuT,GAAG,OAAI,EAAKsB,KAAOtB,GAAtD,UACI,qBAAI/U,UAAU,gBAAgB6V,WAAUC,oBAAeC,EAAY,UAAnE,UACKnR,EAAQ,GADb,IACiB,sBAAM5E,UAAU,eAAhB,SAAgC4E,EAAQ,KADzD,IACqEA,EAAQ,MAE7E,mBAAG5E,UAAU,sBAAsB6V,WAAUC,oBAAeC,EAAY,UAAWC,oBAAkB,OAArG,SAA6GrQ,IAEzG8P,GACA,qBAAKzV,UAAU,uBAAuB6V,WAAUC,oBAAeC,EAAY,UAAWC,oBAAkB,OAAxG,SACI,cAAC,IAAD,CAAM9U,GAAIuU,EAAV,SACI,cAAC,EAAD,CAAczV,UAAU,WAAxB,SAAoC6U,WAKpD,oBAAI7U,UAAU,gBAAd,SACKmB,KAAKC,MAAMS,WAGZ4T,GACA,qBAAKzV,UAAU,kBAAkB6V,WAAUC,oBAAeC,EAAY,UAAtE,SACI,cAAC,IAAD,CAAM7U,GAAIuU,EAAV,SACI,cAAC,EAAD,CAAczV,UAAU,WAAxB,SAAoC6U,qB,GAjEzD3U,IAAMC,WCTV,ujCCuCA4W,E,uKA7BD,IAAD,EACuD5V,KAAKC,MAAM+E,KAA/D6Q,EADH,EACGA,SAAUxT,EADb,EACaA,MAAOyT,EADpB,EACoBA,YAAavB,EADjC,EACiCA,SAAUxD,EAD3C,EAC2CA,QAE1C9P,EAASsT,EAAW,IAAM,IAC1BwB,EAAmBD,EAAcA,EAAYE,UAAU,EAAG/U,GAAQgV,MAAM,KAAKC,MAAM,GAAI,GAAG7R,KAAK,KAAO,MAAQ,KAEpH,OACI,oBAAIxF,UAAU,qBAAd,SACI,eAAC,IAAD,CAAMkB,GAAE,kBAAa8V,GAArB,UAEQtB,GACA,qBAAK1V,UAAU,2BAA2B6V,WAAUC,oBAAeC,EAAY,UAAWC,oBAAkB,MAA5G,SACI,qBAAKzG,IAAKmG,GAAsB4B,EAAatC,IAAI,OAGzD,sBAAKhV,UAAU,0BAAf,UACI,oBAAIA,UAAU,2BAA2B6V,WAAUC,oBAAeC,EAAY,UAAWC,oBAAkB,OAA3G,SAAmHxS,IACnH,sBAAKxD,UAAU,6BAA6B6V,WAAUC,oBAAeC,EAAY,UAAWC,oBAAkB,OAA9G,UACI,sBAAKhW,UAAU,mCAAf,UAAmD4P,EAAiB2H,eAAe,GAAnF,OACA,+BAAOrF,EAAQsF,QAAQ,QAE3B,mBAAGxX,UAAU,0CAA0C6V,WAAUC,oBAAeC,EAAY,UAAWC,oBAAkB,OAAzH,SAAiIkB,gB,GAvBhIhX,IAAMC,WCYhBsX,E,uKAfD,IAAD,EACoBtW,KAAKC,MAAM+E,KAA5BgP,EADH,EACGA,OAAQxP,EADX,EACWA,KAEhB,OACI,qBAAI3F,UAAU,qBAAqB6V,WAAUC,oBAAeC,EAAY,UAAxE,UACI,qBAAK/V,UAAU,8BACf,sBAAKA,UAAU,0BAAf,UACI,oBAAIA,UAAU,2BAAd,SAA0CmV,IAC1C,mBAAGnV,UAAU,iCAAb,SAA+C2F,c,GAVtCzF,IAAMC,WCqBpBuX,E,uKAnBD,IAAD,EAC8BvW,KAAKC,MAAM+E,KAAtCgP,EADH,EACGA,OAAQxP,EADX,EACWA,KAAM+P,EADjB,EACiBA,SAEtB,OACI,qBAAI1V,UAAU,qBAAd,UACI,qBAAKA,UAAU,2BAA2B6V,WAAUC,oBAAeC,EAAY,UAAWC,oBAAkB,MAA5G,SACI,qBAAKzG,IAAKmG,EAAUV,IAAI,OAE5B,qBAAKhV,UAAU,0BAAf,SACI,sBAAKA,UAAU,0BAAf,UACI,oBAAIA,UAAU,2BAA2B6V,WAAUC,oBAAeC,EAAY,UAAWC,oBAAkB,OAA3G,SAAmHb,IACnH,mBAAGnV,UAAU,iCAAiC6V,WAAUC,oBAAeC,EAAY,UAAWC,oBAAkB,OAAhH,SAAwHrQ,gB,GAbxHzF,IAAMC,WCiEfwX,G,6KAzDD,IACE/S,EAAYzD,KAAKC,MAAM+E,KAAvBvB,QADH,EAE+EzD,KAAKC,MAAMwW,OAAvFZ,EAFH,EAEGA,SAAUxT,EAFb,EAEaA,MAAO0O,EAFpB,EAEoBA,QAAS2F,EAF7B,EAE6BA,YAAaZ,EAF1C,EAE0CA,YAAavB,EAFvD,EAEuDA,SAAUoC,EAFjE,EAEiEA,UAEhE1V,EAASsT,EAAW,IAAM,IAC1BwB,EAAmBD,EAAYE,UAAU,EAAG/U,GAAQgV,MAAM,KAAKC,MAAM,GAAI,GAAG7R,KAAK,KAAO,MAExFgN,EAAkB5C,EAAiBmI,qBAEzC,OACI,qBAAK/X,UAAU,gCAAf,SACI,qBAAKA,UAAU,6BAAf,SACI,sBAAKA,UAAU,0BAAf,UACI,qBAAIA,UAAU,0BAA0B6V,WAAUC,oBAAeC,EAAY,UAA7E,UAAyFnR,EAAQ,GAAjG,IAAqG,sBAAM5E,UAAU,eAAhB,SAAgC4E,EAAQ,QAC7I,sBAAK5E,UAAU,2BAAf,UACI,sBAAKA,UAAU,2BAAf,UACI,oBAAIA,UAAU,yBAAyB6V,WAAUC,oBAAeC,EAAY,UAA5E,SAAwFvS,IACxF,sBAAKxD,UAAU,wBAAwB6V,WAAUC,oBAAeC,EAAY,UAAWC,oBAAkB,OAAzG,UACI,sBAAKhW,UAAU,6BAAf,UACI,sBAAKA,UAAU,8BAAf,UAA8C4P,EAAiB2H,eAAerF,GAA9E,OACA,+BAAOA,EAAQsF,QAAQ,QAE3B,sBAAKxX,UAAU,oCAAf,WAEK8X,GAAatF,GAAmBqF,GACjC,qCACI,qBAAK7X,UAAU,8BAAf,2BACA,+BAAO,IAAIiJ,KAAK4O,GAAaG,eAAeZ,MAAM,KAAKC,MAAM,GAAG7R,KAAK,UAIzEsS,GACA,qCACI,qBAAK9X,UAAU,8BAAf,2BACA,+BAAO,IAAIiJ,KAAK6O,EAAU,GAAGG,WAAWC,mBAAmB,QAAS,CAACC,QAAS,OAAQC,MAAO,QAASC,IAAK,uBAKvH,mBAAGrY,UAAU,+BAA+B6V,WAAUC,oBAAeC,EAAY,UAAWC,oBAAkB,OAA9G,SAAsHkB,IACtH,qBAAKlX,UAAU,2BAA2B6V,WAAUC,oBAAeC,EAAY,UAAWC,oBAAkB,OAA5G,SACI,cAAC,IAAD,CAAM9U,GAAE,kBAAa8V,GAArB,SACI,cAAC,EAAD,CAAchX,UAAU,WAAxB,gCAIZ,qBAAKA,UAAU,gCAAf,SACI,qBAAKuP,IAAKmG,EAAUG,WAAUC,oBAAeC,EAAY,UAAWE,kBAAgB,gBAAgBjB,IAAI,qB,GAjD7G9U,IAAMC,Y,MCTjC,SAAS,IAA2Q,OAA9P,EAAW6B,OAAOC,QAAU,SAAU1B,GAAU,IAAK,IAAI2B,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CAAE,IAAIG,EAASF,UAAUD,GAAI,IAAK,IAAII,KAAOD,EAAcL,OAAOO,UAAUC,eAAeC,KAAKJ,EAAQC,KAAQ/B,EAAO+B,GAAOD,EAAOC,IAAY,OAAO/B,IAA2BmC,MAAMvB,KAAMgB,WAEhT,SAAS,EAAyBE,EAAQO,GAAY,GAAc,MAAVP,EAAgB,MAAO,GAAI,IAAkEC,EAAKJ,EAAnE3B,EAEzF,SAAuC8B,EAAQO,GAAY,GAAc,MAAVP,EAAgB,MAAO,GAAI,IAA2DC,EAAKJ,EAA5D3B,EAAS,GAAQsC,EAAab,OAAOc,KAAKT,GAAqB,IAAKH,EAAI,EAAGA,EAAIW,EAAWT,OAAQF,IAAOI,EAAMO,EAAWX,GAAQU,EAASG,QAAQT,IAAQ,IAAa/B,EAAO+B,GAAOD,EAAOC,IAAQ,OAAO/B,EAFxM,CAA8B8B,EAAQO,GAAuB,GAAIZ,OAAOiB,sBAAuB,CAAE,IAAIC,EAAmBlB,OAAOiB,sBAAsBZ,GAAS,IAAKH,EAAI,EAAGA,EAAIgB,EAAiBd,OAAQF,IAAOI,EAAMY,EAAiBhB,GAAQU,EAASG,QAAQT,IAAQ,GAAkBN,OAAOO,UAAUY,qBAAqBV,KAAKJ,EAAQC,KAAgB/B,EAAO+B,GAAOD,EAAOC,IAAU,OAAO/B,EAMne,IAAI,GAAqB,gBAAoB,OAAQ,CACnD6C,EAAG,8FACHkV,KAAM,YAGJC,GAAqB,gBAAoB,OAAQ,CACnDnV,EAAG,0FACHkV,KAAM,YAGJE,GAAqB,gBAAoB,OAAQ,CACnDpV,EAAG,sEACHkV,KAAM,YAGJG,GAAqB,gBAAoB,OAAQ,CACnDrV,EAAG,uDACHkV,KAAM,YAGR,SAASI,GAAUpV,EAAMC,GACvB,IAAIC,EAAQF,EAAKE,MACbC,EAAUH,EAAKG,QACfrC,EAAQ,EAAyBkC,EAAM,CAAC,QAAS,YAErD,OAAoB,gBAAoB,MAAO,EAAS,CACtDK,MAAO,6BACPgV,WAAY,+BACZjV,QAAS,eACTlC,IAAK+B,EACL,kBAAmBE,GAClBrC,GAAQoC,EAAqB,gBAAoB,QAAS,CAC3DI,GAAIH,GACHD,GAAS,KAAM,GAAO+U,GAAOC,GAAOC,IAGzC,IAAI,GAA0B,aAAiBC,ICuBhCE,G,uKAzDD,IAAD,EACoDzX,KAAKC,MAAM+E,KAA5DvB,EADH,EACGA,QAASe,EADZ,EACYA,KAAM+O,EADlB,EACkBA,SAAUmE,EAD5B,EAC4BA,UAAWnD,EADvC,EACuCA,SAE5C,OACI,yBAAS1V,UAAU,cAAnB,SACI,qBAAKA,UAAU,wBAAf,SACI,sBAAKA,UAAU,sBAAf,UACI,sBAAKA,UAAU,mBAAf,UACI,qBAAKA,UAAU,oBAAf,SACI,qBAAI6V,WAAUC,oBAAeC,EAAY,UAAzC,UAAoD,uBAAM/V,UAAU,eAAhB,UAAgC4E,EAAQ,GAAxC,OAAoDA,EAAQ,QAEpH,qBAAK5E,UAAU,0BAA0B6V,WAAUC,oBAAeC,EAAY,UAAWC,oBAAkB,OAA3G,SACI,4BAAIrQ,MAER,sBAAK3F,UAAU,sBAAf,UAEQ0U,GACA,qBAAK1U,UAAU,2BAA2B6V,WAAUC,oBAAeC,EAAY,UAAWC,oBAAkB,OAA5G,SACI,mBAAGnL,KAAM6J,EAAT,SACI,eAAC,EAAD,CAAc1U,UAAU,eAAxB,UACI,qBAAKA,UAAU,oBAAf,SACI,qBAAKA,UAAU,0BAAf,SACI,cAAC,EAAD,QAGR,sBAAKA,UAAU,oBAAf,0BAAgD,oDAM5D6Y,GACA,qBAAK7Y,UAAU,2BAA2B6V,WAAUC,oBAAeC,EAAY,UAAWC,oBAAkB,OAA5G,SACI,mBAAGnL,KAAMgO,EAAT,SACI,eAAC,EAAD,CAAc7Y,UAAU,eAAxB,UACI,qBAAKA,UAAU,oBAAf,SACI,qBAAKA,UAAU,4BAAf,SACI,cAAC,GAAD,QAGR,sBAAKA,UAAU,oBAAf,uBAA6C,4DAOrE,qBAAKA,UAAU,qBAAqB6V,WAAUC,oBAAeC,EAAY,UAAzE,SACI,qBAAKxG,IAAKmG,EAAUV,IAAI,kB,GAlD7B9U,IAAMC,WCuBd2Y,I,6KAxBD,IAAD,EACoC3X,KAAKC,MAAM+E,KAA5CuP,EADH,EACGA,SAAUC,EADb,EACaA,mBACZjU,EAAOP,KAAKC,MAAMM,KAClB0S,EAAkBjT,KAAKC,MAAMgT,gBAEnC,OACI,yBAASpU,UAAS,qBAAgB0B,GAAlC,SACI,sBAAK1B,UAAU,sBAAf,UACI,qBAAKA,UAAW,oBAAsBoU,IACtC,qBAAKpU,UAAU,oBAAf,SACI,sBAAKA,UAAU,4BAAf,UAEQ2V,GACA,qBAAK3V,UAAU,+BAA+BuP,IAAKoG,EAAoBX,IAAI,KAE/E,qBAAKzF,IAAKmG,EAAUG,WAAUC,oBAAeC,EAAY,UAAWE,kBAAgB,gBAAgBjB,IAAI,GAAG+D,OAAQ,kBAAM3C,IAAc4C,2B,GAjB9I9Y,IAAMC,Y,kCCL3B,SAAS,KAA2Q,OAA9P,GAAW6B,OAAOC,QAAU,SAAU1B,GAAU,IAAK,IAAI2B,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CAAE,IAAIG,EAASF,UAAUD,GAAI,IAAK,IAAII,KAAOD,EAAcL,OAAOO,UAAUC,eAAeC,KAAKJ,EAAQC,KAAQ/B,EAAO+B,GAAOD,EAAOC,IAAY,OAAO/B,IAA2BmC,MAAMvB,KAAMgB,WAEhT,SAAS,GAAyBE,EAAQO,GAAY,GAAc,MAAVP,EAAgB,MAAO,GAAI,IAAkEC,EAAKJ,EAAnE3B,EAEzF,SAAuC8B,EAAQO,GAAY,GAAc,MAAVP,EAAgB,MAAO,GAAI,IAA2DC,EAAKJ,EAA5D3B,EAAS,GAAQsC,EAAab,OAAOc,KAAKT,GAAqB,IAAKH,EAAI,EAAGA,EAAIW,EAAWT,OAAQF,IAAOI,EAAMO,EAAWX,GAAQU,EAASG,QAAQT,IAAQ,IAAa/B,EAAO+B,GAAOD,EAAOC,IAAQ,OAAO/B,EAFxM,CAA8B8B,EAAQO,GAAuB,GAAIZ,OAAOiB,sBAAuB,CAAE,IAAIC,EAAmBlB,OAAOiB,sBAAsBZ,GAAS,IAAKH,EAAI,EAAGA,EAAIgB,EAAiBd,OAAQF,IAAOI,EAAMY,EAAiBhB,GAAQU,EAASG,QAAQT,IAAQ,GAAkBN,OAAOO,UAAUY,qBAAqBV,KAAKJ,EAAQC,KAAgB/B,EAAO+B,GAAOD,EAAOC,IAAU,OAAO/B,EAMne,IAAI,GAAqB,gBAAoB,SAAU,CACrD0Y,GAAI,GACJC,GAAI,GACJ9H,EAAG,GACHkH,KAAM,YAGJ,GAAqB,gBAAoB,OAAQ,CACnDlV,EAAG,sFACHkV,KAAM,UAGR,SAASa,GAAS7V,EAAMC,GACtB,IAAIC,EAAQF,EAAKE,MACbC,EAAUH,EAAKG,QACfrC,EAAQ,GAAyBkC,EAAM,CAAC,QAAS,YAErD,OAAoB,gBAAoB,MAAO,GAAS,CACtD8V,MAAO,GACPC,OAAQ,GACR3V,QAAS,YACT4U,KAAM,OACN3U,MAAO,6BACPnC,IAAK+B,EACL,kBAAmBE,GAClBrC,GAAQoC,EAAqB,gBAAoB,QAAS,CAC3DI,GAAIH,GACHD,GAAS,KAAM,GAAO,IAG3B,IAAI,GAA0B,aAAiB2V,IC2IhCG,G,kDAzKX,WAAYlY,GAAQ,IAAD,8BACf,cAAMA,IAGDmY,cAAgB,KACrB,EAAKC,cAAgB,KACrB,EAAKC,eAAiB,KACtB,EAAKC,gBAAkB,KACvB,EAAKC,cAAgB,KACrB,EAAKC,uBAAyB,KAG9B,EAAK7G,MAAQ,CACT8G,kBAAkB,EAClBC,UAAW,EAAK1Y,MAAM0Y,UACtBC,WAAY,EAAK3Y,MAAM2Y,WACvBC,SAAU,EAAK5Y,MAAM4Y,UAIzB,EAAKC,mBAAqB,EAAKA,mBAAmB5M,KAAxB,gBApBX,E,gEAyBflM,KAAK+Y,oB,wCAIU,IAAD,OAEdC,YAAW,WACH,EAAKpH,MAAM+G,WAAa,EAAK/G,MAAMgH,YAAc,EAAKhH,MAAMiH,WAC5D5V,QAAQL,IAAI,aAEZ,EAAKqW,mBAGL,EAAKhZ,MAAMiZ,iBAGX,EAAK7G,SAAS,CAAEqG,kBAAkB,OAEvC,K,yCAKH1Y,KAAKoY,cAAc9F,UAAUnP,IAAI,aACjCnD,KAAKoY,cAAc1Q,MAAMyR,QAAU,OAGnCnZ,KAAKsY,eAAehG,UAAUC,OAAO,aACrCvS,KAAKsY,eAAe5Q,MAAMyR,QAAU,QAGpCnZ,KAAKuY,gBAAgBjG,UAAUC,OAAO,aACtCvS,KAAKuY,gBAAgB7Q,MAAMyR,QAAU,QAGrCnZ,KAAKwY,cAAclG,UAAUC,OAAO,aACpCvS,KAAKwY,cAAc9Q,MAAMyR,QAAU,U,yCAIpBja,GAAI,IAAD,OACdA,EAAEka,cAAchV,MAAM6R,MAAM,KAAKhV,OAAS,IAE1CjB,KAAKiZ,mBAGLjZ,KAAKC,MAAMiZ,iBAGXlZ,KAAKqS,SAAS,CACVqG,kBAAkB,EAClBC,UAAWzZ,EAAEka,cAAchV,MAAM6R,MAAM,KAAK,GAC5C2C,WAAY1Z,EAAEka,cAAchV,MAAM6R,MAAM,KAAK,KAC9C,WACC,EAAKwC,uBAAuBrU,MAAQ,GACpC,EAAKqU,uBAAuBY,c,mCAMhCrZ,KAAK4R,MAAM8G,kBACX1Y,KAAKoY,cAAc9F,UAAUnP,IAAI,aACjCmW,KAAEtZ,KAAKoY,eAAemB,KAAK,OAG3BvZ,KAAKsY,eAAehG,UAAUnP,IAAI,aAClCnD,KAAKuY,gBAAgBjG,UAAUnP,IAAI,aACnCnD,KAAKwY,cAAclG,UAAUnP,IAAI,aACjCmW,KAAEtZ,KAAKqY,eAAekB,KAAK,Q,mCAIrB,IAAD,OACLvZ,KAAK4R,MAAM8G,iBACXY,KAAEtZ,KAAKoY,eAAeoB,KAAK,GAAG,WAC1B,EAAKpB,cAAc9F,UAAUC,OAAO,gBAIxC+G,KAAEtZ,KAAKqY,eAAemB,KAAK,GAAG,WAC1B,EAAKlB,eAAehG,UAAUC,OAAO,aACrC,EAAKgG,gBAAgBjG,UAAUC,OAAO,aACtC,EAAKiG,cAAclG,UAAUC,OAAO,kB,oCAM5C,OAAIvS,KAAK4R,MAAM+G,WAAa3Y,KAAK4R,MAAMgH,YAAc5Y,KAAK4R,MAAMiH,SACrD7Y,KAAK4R,MAAM+G,UAAY,IAAM3Y,KAAK4R,MAAMgH,WAAa,IAAM5Y,KAAK4R,MAAMiH,SAExE7Y,KAAK4R,MAAM+G,WAAa3Y,KAAK4R,MAAMiH,SACjC7Y,KAAK4R,MAAM+G,UAAY,IAAM3Y,KAAK4R,MAAMiH,SAGxC,K,+BAIL,IAAD,OACCY,EAAWzZ,KAAK0Z,cAEtB,OACI,qCACI,sBAAK7a,UAAU,WAAWwB,IAAK,SAAAuT,GAAG,OAAI,EAAKwE,cAAgBxE,GAA3D,UACI,uBAAOpE,KAAK,WAAWmK,UAAQ,EAACC,YAAY,YAAYC,aAAcJ,EAAUK,SAAU9Z,KAAK8Y,qBAC/F,uBAAOiB,QAAQ,WAAf,uBACA,sBAAMlb,UAAU,iBAAhB,kCACA,qBAAKA,UAAU,qCAAf,SACI,cAAC,GAAD,SAGR,sBAAKA,UAAU,iBAAiBwB,IAAK,SAAAuT,GAAG,OAAI,EAAKyE,cAAgBzE,GAAjE,UACI,sBAAK/U,UAAU,+BAA+BwB,IAAK,SAAAuT,GAAG,OAAI,EAAK0E,eAAiB1E,GAAhF,UACI,uBAAOpE,KAAK,YAAYmK,UAAQ,EAACC,YAAY,aAAaC,aAAc7Z,KAAK4R,MAAM+G,YACnF,uBAAOoB,QAAQ,YAAf,wBACA,sBAAMlb,UAAU,mBAChB,qBAAKA,UAAU,qCAAf,SACI,cAAC,GAAD,SAGR,sBAAKA,UAAU,gCAAgCwB,IAAK,SAAAuT,GAAG,OAAI,EAAK2E,gBAAkB3E,GAAlF,UACI,uBAAOpE,KAAK,aAAaoK,YAAY,cAAcC,aAAc7Z,KAAK4R,MAAMgH,aAC5E,uBAAOmB,QAAQ,aAAf,yBACA,sBAAMlb,UAAU,mBAChB,qBAAKA,UAAU,qCAAf,SACI,cAAC,GAAD,SAGR,sBAAKA,UAAU,8BAA8BwB,IAAK,SAAAuT,GAAG,OAAI,EAAK4E,cAAgB5E,GAA9E,UACI,uBAAOpE,KAAK,WAAWmK,UAAQ,EAACC,YAAY,YAAYC,aAAc7Z,KAAK4R,MAAMiH,SAAUxY,IAAK,SAAA2Z,GAAK,OAAI,EAAKvB,uBAAyBuB,KACvI,uBAAOD,QAAQ,WAAf,uBACA,sBAAMlb,UAAU,mBAChB,qBAAKA,UAAU,qCAAf,SACI,cAAC,GAAD,mB,GAlKAE,IAAMC,W,SCmGnBib,GADQ,I,4GAnGCpW,GAChB,GAAIA,EAAK4G,WACD5G,EAAK4I,OAAQ,CAIb,IAAIyN,EAAoB,KACpBrW,EAAK4I,OAAO0N,QAAUtW,EAAK4I,OAAO0N,OAAOzN,YACzCwN,EAAoBrW,EAAK4I,OAAO0N,OAE3BtW,EAAK4I,OAAOC,cACjBwN,EAAoBrW,EAAK4I,QAG7B,IAAI0N,EAAS,KACTC,EAAe,KAYnB,GAXIvW,EAAK4I,OAAO0N,QAAUtW,EAAK4I,OAAO0N,OAAOzN,YACzCyN,EAAStW,EAAK4I,OAAO0N,OAEhBtW,EAAK4I,OAAO2N,eACjBA,EAAevW,EAAK4I,OAAO2N,cAO3BF,IAAsBC,GAAUC,GAAe,CAE/C,IAAIC,EAAU,CACV3N,YAAawN,EAAkBxN,YAC/B4N,aAAcJ,EAAkBI,aAChCC,cAAeL,EAAkBK,eAgBrC,GAbIJ,GACAE,EAAQ1B,UAAYwB,EAAOxB,UAC3B0B,EAAQxB,SAAWsB,EAAOtB,SAC1BwB,EAAQG,iBAAmBL,EAAOK,iBAClCH,EAAQI,qBAAuBN,EAAOM,sBAEjCL,IACLC,EAAQ1B,UAAYyB,EAAazB,UACjC0B,EAAQxB,SAAWuB,EAAavB,SAChCwB,EAAQG,iBAAmBJ,EAAaI,iBACxCH,EAAQI,qBAAuBL,EAAaK,sBAG5CJ,EAAQ3N,YAAa,CAErB,IAAIgO,EAAeC,QAASC,IAAIC,IAAIC,mBAAmBH,cAAeN,EAAQ3N,YAAYuJ,MAAM,KAAK,KACrGoE,EAAQU,qBAAuBL,EAAaM,IAC5CX,EAAQY,kBAAoBP,EAAaQ,IACzCb,EAAQc,uBAA0BrT,KAAKS,MAAQ,KAASmS,EAAaQ,IAAMR,EAAaM,KACxFX,EAAQe,gBAAkBV,EAAalL,KACnC6L,MAAMC,QAAQZ,EAAaa,OACvBb,EAAaa,MAAMta,OAAS,IAC5BoZ,EAAQ7K,KAAOkL,EAAalL,KAC5B6K,EAAQkB,MAAQb,EAAaa,MAAM,KAIvClB,EAAQ7K,KAAOkL,EAAalL,KAC5B6K,EAAQkB,MAAQb,EAAaa,OAIrC,IAAIC,EAAc1W,KAAKC,UAAUsV,GACjC7Q,OAAOiS,aAAaC,QAAQ,cAAeF,GAGvCnB,EAAQG,kBAAoBH,EAAQI,sBAAyBJ,EAAQkB,OAASlB,EAAQkB,MAAMxU,WAAW,SACvG/G,KAAK2b,yBAGL3b,KAAK4b,qBAAqBvB,IAK1C,OAAOxW,I,2CAGUwW,GAAqB,IAAZwB,EAAW,uDAAJ,GAC7BC,EAAU,GACd,GAAID,EAAM,CACN,IAAIE,EAAO,IAAIjU,KACfiU,EAAKC,QAAQD,EAAKE,UAAoB,GAAPJ,EAAY,GAAK,GAAK,KACrDC,EAAU,aAAeC,EAAKG,cAElC,IAAIC,EAAcC,mBAAmB,MAAD,OAAO/B,EAAQ3N,aAAe,GAA9B,gBAAwC2N,EAAQY,mBAAqB,KACzGrU,SAASqB,OAAS,OAASkU,EAAcL,EAAU,uB,+CAInDlV,SAASqB,OAAS,2D,MCjGboU,GACA,EADAA,GAEC,EAFDA,GAGG,EA4KDC,GADO,I,WAtKlB,aAAe,oBACXtc,KAAKuc,uBAAwB,EAC7Bvc,KAAKwc,0BAA2B,E,wDAGxBC,GAGRjT,OAAOC,SAASiT,QAAQD,GAAoC,c,gCAGtDE,GAGN,OAAOzW,EAAYV,KAFP,uBAEiBmX,K,4BAG3BC,GAGF,OAAO1W,EAAYV,KAFP,mBAEiBoX,GACxBrY,MAAK,SAAAV,GAIF,OAHIA,GAAQA,EAAK4G,WACbwP,GAAe4C,oBAAoBhZ,GAEhCA,O,sCAIHiZ,GAGZ,OAAO5W,EAAYV,KAFP,yBAEiBsX,GACxBvY,MAAK,SAAAV,GACF,GAAIA,GAAQA,EAAK4G,UACb,OAAO5G,EAAK4I,OAGZxJ,QAAQL,IAAIiB,EAAK6G,a,iCAO7B,IACY,EADRqS,EAAQtB,aAAauB,QAAQ,UAC5BD,IAEDA,EAAK,UAAGnW,SAASqB,OAAOgO,MAAM,MAAM3G,MAAK,SAAA2N,GAAG,OAAIA,EAAIlW,WAAW,qBAA1D,aAAG,EAAoEkP,MAAM,KAAK,KAGnFwF,aAAaC,QAAQ,SAAUqB,GAGvC,OAAOA,I,+BAGFG,GAUL,OAPAA,EAAgBC,YAAc,EAC9BD,EAAgBE,gBAAiB,EACjCF,EAAgBG,WAAY,EAC5BH,EAAgBI,OAAS9T,OAAOC,SAAS6T,OACzCJ,EAAgBK,iBAAmB,IAAIzV,MAAO0V,oBAAsB,GACpEN,EAAgBO,UAAYzd,KAAK0d,WAE1BxX,EAAYV,KATP,sBASiB0X,GACxB3Y,MAAK,SAAAV,GAIF,OAHIA,GAAQA,EAAK4G,WACbwP,GAAe4C,oBAAoBhZ,GAEhCA,O,qCAIJ8Z,GAKX,OAFAA,EAAsBL,OAAS9T,OAAOC,SAAS6T,OAExCpX,EAAYV,KAJP,kCAIiBmY,K,oCAGnBC,GAGV,OAAO1X,EAAYV,KAFP,8BAEiBoY,GACxBrZ,MAAK,SAAAV,GAIF,OAHIA,GAAQA,EAAK4G,WACbwP,GAAe4C,oBAAoBhZ,GAEhCA,O,gDAIOga,GAAQ,IAAD,OAEvBrZ,EAAO,CACT,kBAAqBqZ,EACrB,OAAUrU,OAAOC,SAAS6T,QAM9B,OAFAtd,KAAKuc,uBAAwB,EAEtBrW,EAAYV,KATP,0BASiBhB,GACxBD,MAAK,SAAAV,GAKF,OAJIA,GAAQA,EAAK4G,WAAoC,IAAvB5G,EAAK4I,OAAO3I,SACtC,EAAKyY,uBAAwB,GAG1B1Y,O,mDAIUga,GAAQ,IAAD,OAOhC,OAFA7d,KAAKwc,0BAA2B,EAEzBtW,EAAYV,KANP,8CACC,IAMRjB,MAAK,SAAAV,GAKF,OAJIA,GAAQA,EAAK4G,WAAoC,IAAvB5G,EAAK4I,OAAO3I,SACtC,EAAK0Y,0BAA2B,GAG7B3Y,O,sCAIHia,GAOZ,OAJAA,EAAuBR,OAAS9T,OAAOC,SAAS6T,OAChDQ,EAAuBP,iBAAmB,IAAIzV,MAAO0V,oBAAsB,GAC3EM,EAAuBL,UAAYzd,KAAK0d,WAEjCxX,EAAYV,KANP,6BAMiBsY,GACxBvZ,MAAK,SAAAV,GAIF,OAHIA,GAAQA,EAAK4G,WACbwP,GAAe4C,oBAAoBhZ,GAEhCA,O,qCAIJka,GAGX,OAAO7X,EAAYV,KAFP,sBAEiBuY,K,wCAGfC,GACd,IACMxZ,EAAO,CACTyZ,eAAgBD,EAAiBC,eACjCC,aAAcF,EAAiBG,WAGnC,OAAOjY,EAAYV,KANP,4BAMiBhB,O,eCkItB4Z,GADK,I,0GAzSEC,GACd,IAAMC,EAASD,EAAKhf,cAAc,mBAClCif,EAAOC,aAAa,YAAY,GAChCD,EAAOhM,UAAUnP,IAAI,c,wCAGPkb,GACd,IAAMC,EAASD,EAAKhf,cAAc,mBAClCif,EAAOhM,UAAUC,OAAO,YACxB+L,EAAOE,gBAAgB,c,qCAIZH,EAAM7O,EAAMtM,GACvB,IAD8B,EACxBub,EAASJ,EAAKK,iBAAiB,aADP,eAEPD,GAFO,IAE9B,2BAA+B,CAAC,IAArBE,EAAoB,QAE3B,GADcA,EAAStf,cAAc,mBAC3BmQ,OAASA,EAIf,OAHamP,EAAStf,cAAc,QAC/Buf,UAAY1b,OACjByb,EAASrM,UAAUnP,IAAI,WAPD,iC,oCAapBkb,EAAMnb,GAChB,IAAMyM,EAAI0O,EAAKhf,cAAc,kBAC7BsQ,EAAEiP,UAAY1b,EACdpD,IAAKC,GAAG4P,EAAG,CACPwJ,QAAS,QACT0F,SAAU,IACX,K,oCAGOR,GACV,IADgB,EACVI,EAASJ,EAAKK,iBAAiB,aADrB,eAEID,GAFJ,IAEhB,2BAA4B,SAClBnM,UAAUC,OAAO,WAHX,8BAMhB,IAAMrP,EAAQmb,EAAKhf,cAAc,kBAC7B6D,IACAA,EAAM0b,UAAY,GAClB9e,IAAKC,GAAGmD,EAAO,CACXiW,QAAS,OACT0F,SAAU,IACX,M,qCAIIR,GACX,IADiB,EACXI,EAASJ,EAAKK,iBAAiB,aADpB,eAEMD,GAFN,IAEjB,2BAA+B,SACJpf,cAAc,mBAC/B+E,MAAQ,IAJD,iC,+BASZia,GAAO,IAAD,OACPS,EAAU,GAyBd,OAvBA9e,KAAK+e,cAAcV,GAEJA,EAAKK,iBAAiB,aAC9BlR,SAAQ,SAACwM,GACZ,GAAKA,EAAM1H,UAAU0M,SAAS,aAe1BF,EAAQhc,MAAK,OAf2B,CACxC,IAAMmc,EAAa,EAAKC,cAAclF,GAChCmF,EAAS,EAAKC,UAAUpF,GACxBqF,EAAU,EAAKC,WAAWtF,GAC1BuF,EAAa,EAAKC,cAAcxF,GAChCyF,EAAe,EAAKC,gBAAgB1F,GACpC2F,EAAa,EAAKC,qBAAqB5F,GACvC6F,EAAY,EAAKC,oBAAoB9F,GACrC+F,EAAQ,EAAKC,SAAShG,GACtBiG,EAAW,EAAKC,YAAYlG,GAC5BmG,EAAa,EAAKC,cAAcpG,GAEtC8E,EAAQhc,KAAKmc,GAAcE,GAAUE,GAAWE,GAAcE,GAAgBE,GAAcE,GAAaE,GAASE,GAAYE,OAO/HrB,EAAQuB,OAAM,SAAAtf,GAAC,OAAIA,O,oCAGhBiZ,GACV,IAAMsG,EAAUtG,EAAM3a,cAAc,mBAEpC,OAAIihB,IAAUA,EAAQC,WAAW5G,UACA,KAAzB2G,EAAQlc,MAAMoc,SACdxG,EAAM1H,UAAUnP,IAAI,WACb,K,gCAMT6W,GACN,IAAMsG,EAAUtG,EAAM3a,cAAc,mBAEpC,GAAIihB,EAAS,CACT,IAAM9Q,EAAO8Q,EAAQxZ,aAAa,QAC5B5D,EAAQ8W,EAAM3a,cAAc,mBAElC,GAAa,aAATmQ,EAAqB,CAGrB,GAFAtM,EAAM0b,UAAY,uBAEG,KAAlB0B,EAAQlc,QAAiBkc,EAAQlc,MAAM6R,MAAM,KAAKhV,OAAS,GAAqC,KAAhCqf,EAAQlc,MAAM6R,MAAM,KAAK,IAGxF,OAFA/S,EAAM0b,UAAY,qCAClB5E,EAAM1H,UAAUnP,IAAI,WACb,EAEN,GAAsB,KAAlBmd,EAAQlc,OAAgBkc,EAAQlc,MAAMnD,OAAS,GAGpD,OAFAiC,EAAM0b,UAAY,mBAClB5E,EAAM1H,UAAUnP,IAAI,WACb,OAGV,IAAa,cAATqM,GAAiC,eAATA,GAAkC,aAATA,KACtDtM,EAAM0b,UAAY,GAEI,KAAlB0B,EAAQlc,OAAgBkc,EAAQlc,MAAMnD,OAAS,IAG/C,OAFAiC,EAAM0b,UAAY,mBAClB5E,EAAM1H,UAAUnP,IAAI,WACb,EAInB,OAAO,I,iCAGA6W,GACP,IAAMsG,EAAUtG,EAAM3a,cAAc,mBAEpC,GAAIihB,GAA2C,UAAjCA,EAAQxZ,aAAa,QAA6B,CAC5D,IACM5D,EAAQ8W,EAAM3a,cAAc,mBAGlC,GAFA6D,EAAM0b,UAAY,sBAEI,KAAlB0B,EAAQlc,OAAgBkc,EAAQlc,MAAMnD,OAAS,IAG/C,OAFAiC,EAAM0b,UAAY,oBAClB5E,EAAM1H,UAAUnP,IAAI,WACb,EAGX,GAAqB,KAAlBmd,EAAQlc,QAVQ,wJAUoBqc,KAAKH,EAAQlc,MAAMoc,QAEtD,OADAxG,EAAM1H,UAAUnP,IAAI,WACb,EAGf,OAAO,I,oCAGG6W,GACV,IAAMsG,EAAUtG,EAAM3a,cAAc,mBAEpC,GAAIihB,IAA2C,aAAjCA,EAAQxZ,aAAa,SAA2D,YAAjCwZ,EAAQxZ,aAAa,SAA+B,CAC7G,IAAM5D,EAAQ8W,EAAM3a,cAAc,mBAGlC,GAFA6D,EAAM0b,UAAY,yBAEI,KAAlB0B,EAAQlc,OAAgBkc,EAAQlc,MAAMnD,OAAS,IAG/C,OAFAiC,EAAM0b,UAAY,uBAClB5E,EAAM1H,UAAUnP,IAAI,WACb,EAGX,GAAqB,KAAlBmd,EAAQlc,OAAgBkc,EAAQlc,MAAMnD,OAAS,EAG9C,OAFAiC,EAAM0b,UAAY,yCAClB5E,EAAM1H,UAAUnP,IAAI,WACb,EAGf,OAAO,I,sCAGK6W,GACZ,IAAMsG,EAAUtG,EAAM3a,cAAc,mBAEpC,GAAIihB,GAA2C,SAAjCA,EAAQxZ,aAAa,UACjBkT,EAAM3a,cAAc,mBAC5Buf,UAAY,4BAEG,KAAlB0B,EAAQlc,QAAiBpE,KAAK0gB,oBAAoBJ,EAAQlc,QAEzD,OADA4V,EAAM1H,UAAUnP,IAAI,WACb,EAGf,OAAO,I,0CAGSiB,GAEhB,GAAI,aAAaqc,KAAKrc,GAAQ,OAAO,EAIrC,IAFA,IAAIuc,EAAS,EAAGC,GAAQ,EAEf9M,GADT1P,EAAQA,EAAMsY,QAAQ,MAAO,KACVzb,OAAS,EAAG6S,GAAK,EAAGA,IAAK,CACxC,IAAI+M,EAASzc,EAAM0c,OAAOhN,GAC1BiN,EAASjQ,SAAS+P,EAAQ,IACtBD,IACCG,GAAU,GAAK,IAAGA,GAAU,GAEjCJ,GAAUI,EACVH,GAASA,EAEb,GAAKD,EAAS,KAAQ,EAAG,CACrB,GAAqB,KAAjBvc,EAAMnD,SAAkBmD,EAAM2C,WAAW,OAAS3C,EAAM2C,WAAW,OAEvE,OAAO,EAEF,IAAsB,KAAjB3C,EAAMnD,QAAkC,KAAjBmD,EAAMnD,SAAkBmD,EAAM2C,WAAW,KAE1E,OAAO,EAEF,GAAsB,KAAjB3C,EAAMnD,SAAmBmD,EAAM2C,WAAW,OAAS3C,EAAM2C,WAAW,OAAS3C,EAAM2C,WAAW,OAAS3C,EAAM2C,WAAW,OAAS3C,EAAM2C,WAAW,OAE5J,OAAO,EAEF,GAAsB,KAAjB3C,EAAMnD,QAAiBmD,EAAM2C,WAAW,SAA8B,KAAjB3C,EAAMnD,QAAiBmD,EAAM2C,WAAW,KAEvG,OAAO,EAGX,OAAO,I,2CAGUiT,GACjB,IAAMsG,EAAUtG,EAAM3a,cAAc,mBAEpC,OAAIihB,GAA2C,OAAjCA,EAAQxZ,aAAa,SACV,KAAlBwZ,EAAQlc,SAAiB4c,MAAMV,EAAQlc,QAAWkc,EAAQlc,MAAQ,GAAKkc,EAAQlc,MAAQ,MACtF4V,EAAM1H,UAAUnP,IAAI,WACb,K,0CAMC6W,GAChB,IAAMsG,EAAUtG,EAAM3a,cAAc,mBACpC,OAAIihB,GAA2C,SAAjCA,EAAQxZ,aAAa,SACV,KAAlBwZ,EAAQlc,SAAiB4c,MAAMV,EAAQlc,QAAmC,IAAzBkc,EAAQlc,MAAMnD,QAAiBqf,EAAQlc,OAAQ,IAAI0D,MAAOmZ,iBAC1GjH,EAAM1H,UAAUnP,IAAI,WACb,K,+BAMV6W,GACL,IAAMsG,EAAUtG,EAAM3a,cAAc,mBAEpC,OAAIihB,GAA2C,QAAjCA,EAAQxZ,aAAa,SACV,KAAlBwZ,EAAQlc,SAAiB4c,MAAMV,EAAQlc,QAAWkc,EAAQlc,MAAMnD,OAAS,GAAKqf,EAAQlc,MAAMnD,OAAS,KACpG+Y,EAAM1H,UAAUnP,IAAI,WACb,K,kCAMP6W,GACR,IAAMsG,EAAUtG,EAAM3a,cAAc,mBAEpC,GAAIihB,GAA2C,oBAAjCA,EAAQxZ,aAAa,QAAuC,CACtE,IAAM5D,EAAQ8W,EAAM3a,cAAc,mBAGlC,GAFA6D,EAAM0b,UAAY,8BAEG,KAAlB0B,EAAQlc,OAAgB4c,MAAMV,EAAQlc,OAGrC,OAFAlB,EAAM0b,UAAY,uBAClB5E,EAAM1H,UAAUnP,IAAI,WACb,EAGf,OAAO,I,oCAGG6W,GACV,IAAMsG,EAAUtG,EAAM3a,cAAc,mBAEpC,GAAIihB,GAA2C,aAAjCA,EAAQxZ,aAAa,UACjBkT,EAAM3a,cAAc,mBAC5Buf,UAAY,yBAEG,KAAlB0B,EAAQlc,OAEP,OADA4V,EAAM1H,UAAUnP,IAAI,WACb,EAGf,OAAO,M,MC5RT+d,G,kDAEF,WAAYjhB,GAAQ,IAAD,8BACf,cAAMA,IAGDoe,KAAO,KAGZ,EAAKzM,MAAQ,CACTuP,aAAa,GAIjB,EAAKjI,eAAiB,EAAKA,eAAehN,KAApB,gBACtB,EAAKkV,WAAa,EAAKA,WAAWlV,KAAhB,gBAbH,E,6DAkBflM,KAAKqS,SAAS,CAAE8O,aAAa,M,iCAGtBjiB,GAAI,IAAD,OACVA,EAAEmiB,iBAEF,IAAMC,EAAclD,GAAYmD,SAASvhB,KAAKqe,MAExC9C,EAAQrc,EAAEE,OAAOmc,MAAMnX,MAAMoc,OAC7BgB,EAAWtiB,EAAEE,OAAOoiB,SAASpd,MAC7Bqd,EAAUviB,EAAEE,OAAOqiB,QAAQrd,MAE7BuU,EAAY,GACZC,EAAa,GACbC,EAAW,GAYf,GAVI7Y,KAAK4R,MAAMuP,aACXxI,EAAYzZ,EAAEE,OAAOqa,SAASrV,MAAM6R,MAAM,KAAK,GAC/C4C,EAAW3Z,EAAEE,OAAOqa,SAASrV,MAAM6R,MAAM,KAAK,KAG9C0C,EAAYzZ,EAAEE,OAAOuZ,UAAUvU,MAC/BwU,EAAa1Z,EAAEE,OAAOwZ,WAAWxU,MACjCyU,EAAW3Z,EAAEE,OAAOyZ,SAASzU,OAG7Bod,IAAaC,EAGb,OAFArD,GAAYsD,eAAe1hB,KAAKqe,KAAM,UAAW,qCACjDD,GAAYuD,kBAAkB3hB,KAAKqe,MAIvC,GAAIiD,EAAJ,CAEAlD,GAAYwD,kBAAkB5hB,KAAKqe,MAEnC,IAAIwD,EAAgB,CAACtG,QAAOiG,WAAU7I,YAAWC,aAAYC,YAE7DzL,EAAiB0U,SAAS,YACzBvd,MAAK,SAAAsZ,GACFgE,EAAc5D,eAAiBJ,EAC/BgE,EAAcE,WAAa1F,GAC3BwF,EAAcpE,UAAYnB,GAAcoB,WAExCpB,GAAc0F,gBAAgBH,GAC7Btd,MAAK,SAAC0d,GACCA,GACA7D,GAAYW,cAAc,EAAKV,MAC/BD,GAAYuD,kBAAkB,EAAKtD,MACnCD,GAAYsD,eAAe,EAAKrD,KAAM,QAAS,wCAG/C/B,GAAc4F,SAASL,GACtBtd,MAAK,SAAAV,GACEA,EAAK4G,UACL6R,GAAc6F,YAAYte,EAAK4I,OAAOgQ,kBAGtC2B,GAAYW,cAAc,EAAKV,MAC/BD,GAAYuD,kBAAkB,EAAKtD,MACnCD,GAAYgE,cAAc,EAAK/D,KAAMxa,EAAK6G,OAAO,iB,+BAS/D,IAAD,SACkC1K,KAAKC,MAAM+E,KAA1CvB,EADH,EACGA,QAASe,EADZ,EACYA,KAAMkP,EADlB,EACkBA,YAEvB,OACI,yBAAS7U,UAAU,oBAAoBwB,IAAKL,KAAKC,MAAMK,SAAvD,SACI,qBAAKzB,UAAU,8BAAf,SACI,sBAAKA,UAAU,4BAAf,UACI,sBAAKA,UAAU,yBAAf,UACI,qBAAIA,UAAU,0BAA0B6V,WAAUC,oBAAeC,EAAY,UAA7E,UAAyFnR,EAAQ,GAAjG,IAAqG,sBAAM5E,UAAU,eAAhB,SAAgC4E,EAAQ,KAA7I,IAAyJA,EAAQ,MACjK,mBAAG5E,UAAU,gCAAgC6V,WAAUC,oBAAeC,EAAY,UAAlF,SAA8FpQ,OAElG,uBAAM3F,UAAU,yBAAyB6V,WAAUC,oBAAeC,EAAY,UAAWvU,IAAK,SAAAge,GAAI,OAAI,EAAKA,KAAOA,GAAMgE,SAAUriB,KAAKohB,WAAvI,UACI,qBAAKviB,UAAU,0BAAf,SACI,cAAC,GAAD,CAAeqa,eAAgBlZ,KAAKkZ,mBAExC,qBAAKra,UAAU,0BAAf,SACI,sBAAKA,UAAU,WAAf,UACI,uBAAO2Q,KAAK,QAAQjP,KAAK,QAAQoZ,UAAQ,EAACC,YAAY,mBACtD,uBAAOG,QAAQ,QAAf,4BACA,sBAAMlb,UAAU,iBAAhB,0CACA,qBAAKA,UAAU,qCAAf,SACI,cAAC,GAAD,WAIZ,qBAAKA,UAAU,0BAAf,SACI,sBAAKA,UAAU,WAAf,UACI,uBAAO2Q,KAAK,WAAWoK,YAAY,WAAWD,UAAQ,EAACpZ,KAAK,aAC5D,uBAAOwZ,QAAQ,WAAf,sBACA,sBAAMlb,UAAU,iBAAhB,oCACA,qBAAKA,UAAU,qCAAf,SACI,cAAC,GAAD,WAIZ,qBAAKA,UAAU,0BAAf,SACI,sBAAKA,UAAU,WAAf,UACI,uBAAO2Q,KAAK,UAAUoK,YAAY,mBAAmBD,UAAQ,EAACpZ,KAAK,aACnE,uBAAOwZ,QAAQ,WAAf,8BACA,sBAAMlb,UAAU,iBAAhB,oCACA,qBAAKA,UAAU,qCAAf,SACI,cAAC,GAAD,WAIZ,mBAAGA,UAAU,kBACb,sBAAKA,UAAU,4BAAf,UACI,cAAC,EAAD,CAAcA,UAAU,0BAA0B0B,KAAK,SAASC,gBAAc,EAA9E,SACI,4BAAIkT,MAER,cAAC,IAAD,CAAM3T,GAAG,SAASlB,UAAU,sBAA5B,yCAEJ,sBAAKA,UAAU,0BAAf,iDAEI,cAAC,IAAD,CAAMkB,GAAG,wBAAwBlB,UAAU,YAA3C,SAAuD,gE,GA/I9DE,IAAMC,WAyJhBD,OAAM4B,YAAW,SAACV,EAAOI,GAAR,OAAgB,cAAC,GAAD,aAC9CC,SAAUD,GAASJ,OCnKfqiB,I,6KAEQ,IAAD,OACC7e,EAAUzD,KAAKC,MAAM+E,KAAKvB,QAC1BgM,EAAQzP,KAAKC,MAAM+E,KAAKyK,MAE9B,OACI,yBAAS5Q,UAAU,eAAnB,SACI,qBAAKA,UAAU,yBAAf,SACI,sBAAKA,UAAU,uBAAf,UACI,qBAAKA,UAAU,qBAAqB6V,WAAUC,oBAAeC,EAAY,UAAzE,SACI,+BAAKnR,EAAQ,GAAb,IAAiB,sBAAM5E,UAAU,eAAhB,SAAgC4E,EAAQ,UAIzDzD,KAAKC,MAAM+E,MAAyB,IAAjByK,EAAMxO,QACzB,oBAAIpC,UAAU,mBAAd,SAEI4Q,EAAMtL,KAAI,SAACoe,EAAMC,GACb,OAAO,qBAAI3jB,UAAU,gCAAgC6V,WAAUC,oBAAeC,EAAY,UAAW6N,iBAAA,UAAmB,IAAc,IAARD,GAAeE,4BAA0B,aAAhK,UAEe,gBAAdH,EAAKhiB,MACL,cAAC,IAAD,CAAMR,GAAE,mBAAcwiB,EAAKhiB,MAA3B,SACI,sBAAK1B,UAAU,gCAAgC8jB,YAAWJ,EAAKhiB,KAA/D,UACI,qBAAK1B,UAAU,8BAAf,SACI,qBAAKuP,IAAKmU,EAAKhO,SAAU0D,MAAM,QAAQC,OAAO,QAAQrE,IAAI,OAE9D,qBAAKhV,UAAU,8BAAf,SACI,6BAAK0jB,EAAKlgB,UAEd,qBAAKxD,UAAU,oCAAf,SACI,4BACI,sBAAMA,UAAU,iCAAhB,SAAkD0jB,EAAKzM,uBAOzD,gBAAdyM,EAAKhiB,MACL,sBAAK1B,UAAU,gCAAgC8jB,YAAWJ,EAAKhiB,KAAME,QAAS,EAAKR,MAAM2iB,mBAAzF,UACI,qBAAK/jB,UAAU,8BAAf,SACI,qBAAKuP,IAAKmU,EAAKhO,SAAU0D,MAAM,QAAQC,OAAO,QAAQrE,IAAI,OAE9D,qBAAKhV,UAAU,8BAAf,SACI,6BAAK0jB,EAAKlgB,UAEd,qBAAKxD,UAAU,oCAAf,SACI,4BACI,sBAAMA,UAAU,mCAAhB,SAAoD0jB,EAAKzM,uBA9B4G0M,QA0CjMxiB,KAAKC,MAAM+E,MAAQyK,EAAMxO,OAAS,GAAKwO,EAAMxO,OAAS,IAAM,GAC5D,oBAAIpC,UAAU,oBAAd,SAEI4Q,EAAMtL,KAAI,SAACoe,EAAMC,GACb,OAAO,qBAAI3jB,UAAU,iCAAiC6V,WAAUC,oBAAeC,EAAY,UAAW6N,iBAAA,UAAmB,IAAc,IAARD,GAAeE,4BAA0B,aAAjK,UAEe,gBAAdH,EAAKhiB,MACL,cAAC,IAAD,CAAMR,GAAE,mBAAcwiB,EAAKhiB,MAA3B,SACI,sBAAK1B,UAAU,iCAAiC8jB,YAAWJ,EAAKhiB,KAAhE,UACI,qBAAK1B,UAAU,+BAAf,SACI,qBAAKuP,IAAKmU,EAAKhO,SAAU0D,MAAM,QAAQC,OAAO,QAAQrE,IAAI,OAE9D,qBAAKhV,UAAU,+BAAf,SACI,6BAAK0jB,EAAKlgB,UAEd,qBAAKxD,UAAU,qCAAf,SACI,4BACI,sBAAMA,UAAU,mCAAhB,SAAoD0jB,EAAKzM,uBAO3D,gBAAdyM,EAAKhiB,MACL,sBAAK1B,UAAU,iCAAiC8jB,YAAWJ,EAAKhiB,KAAME,QAAS,EAAKR,MAAM2iB,mBAA1F,UACI,qBAAK/jB,UAAU,+BAAf,SACI,qBAAKuP,IAAKmU,EAAKhO,SAAU0D,MAAM,QAAQC,OAAO,QAAQrE,IAAI,OAE9D,qBAAKhV,UAAU,+BAAf,SACI,6BAAK0jB,EAAKlgB,UAEd,qBAAKxD,UAAU,qCAAf,SACI,4BACI,sBAAMA,UAAU,mCAAhB,SAAoD0jB,EAAKzM,uBA9B6G0M,QA0ClMxiB,KAAKC,MAAM+E,MAAQyK,EAAMxO,OAAS,GAAKwO,EAAMxO,OAAS,IAAM,GAC5D,oBAAIpC,UAAU,qBAAd,SAEI4Q,EAAMtL,KAAI,SAACoe,EAAMC,GACb,OAAO,qBAAI3jB,UAAU,kCAAkC6V,WAAUC,oBAAeC,EAAY,UAAW6N,iBAAA,UAAmB,IAAc,IAARD,GAAeE,4BAA0B,aAAlK,UAEe,gBAAdH,EAAKhiB,MACL,cAAC,IAAD,CAAMR,GAAE,mBAAcwiB,EAAKhiB,MAA3B,SACI,sBAAK1B,UAAU,kCAAf,UACI,qBAAKA,UAAU,gCAAf,SACI,qBAAKuP,IAAKmU,EAAKhO,SAAUV,IAAI,OAEjC,qBAAKhV,UAAU,gCAAf,SACI,6BAAK0jB,EAAKlgB,UAEd,qBAAKxD,UAAU,sCAAf,SACI,4BACI,sBAAMA,UAAU,mCAAhB,SAAoD0jB,EAAKzM,uBAO3D,gBAAdyM,EAAKhiB,MACL,sBAAK1B,UAAU,kCAAkC8jB,YAAWJ,EAAKhiB,KAAME,QAAS,EAAKR,MAAM2iB,mBAA3F,UACI,qBAAK/jB,UAAU,gCAAf,SACI,qBAAKuP,IAAKmU,EAAKhO,SAAUV,IAAI,OAEjC,qBAAKhV,UAAU,gCAAf,SACI,6BAAK0jB,EAAKlgB,UAEd,qBAAKxD,UAAU,sCAAf,SACI,4BACI,sBAAMA,UAAU,mCAAhB,SAAoD0jB,EAAKzM,uBA9B8G0M,mB,GA/G3MzjB,IAAMC,YA8JX6jB,eAAWP,ICjK1B9Y,OAAO8P,EAAIA,KACX9P,OAAOsZ,OAASxJ,KAEDA,UAAf,E,kBCLA,SAAS,KAA2Q,OAA9P,GAAWzY,OAAOC,QAAU,SAAU1B,GAAU,IAAK,IAAI2B,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CAAE,IAAIG,EAASF,UAAUD,GAAI,IAAK,IAAII,KAAOD,EAAcL,OAAOO,UAAUC,eAAeC,KAAKJ,EAAQC,KAAQ/B,EAAO+B,GAAOD,EAAOC,IAAY,OAAO/B,IAA2BmC,MAAMvB,KAAMgB,WAEhT,SAAS,GAAyBE,EAAQO,GAAY,GAAc,MAAVP,EAAgB,MAAO,GAAI,IAAkEC,EAAKJ,EAAnE3B,EAEzF,SAAuC8B,EAAQO,GAAY,GAAc,MAAVP,EAAgB,MAAO,GAAI,IAA2DC,EAAKJ,EAA5D3B,EAAS,GAAQsC,EAAab,OAAOc,KAAKT,GAAqB,IAAKH,EAAI,EAAGA,EAAIW,EAAWT,OAAQF,IAAOI,EAAMO,EAAWX,GAAQU,EAASG,QAAQT,IAAQ,IAAa/B,EAAO+B,GAAOD,EAAOC,IAAQ,OAAO/B,EAFxM,CAA8B8B,EAAQO,GAAuB,GAAIZ,OAAOiB,sBAAuB,CAAE,IAAIC,EAAmBlB,OAAOiB,sBAAsBZ,GAAS,IAAKH,EAAI,EAAGA,EAAIgB,EAAiBd,OAAQF,IAAOI,EAAMY,EAAiBhB,GAAQU,EAASG,QAAQT,IAAQ,GAAkBN,OAAOO,UAAUY,qBAAqBV,KAAKJ,EAAQC,KAAgB/B,EAAO+B,GAAOD,EAAOC,IAAU,OAAO/B,EAMne,IAAI,GAAqB,gBAAoB,OAAQ,CACnD6C,EAAG,qdACHkV,KAAM,YAGR,SAAS4L,GAAc5gB,EAAMC,GAC3B,IAAIC,EAAQF,EAAKE,MACbC,EAAUH,EAAKG,QACfrC,EAAQ,GAAyBkC,EAAM,CAAC,QAAS,YAErD,OAAoB,gBAAoB,MAAO,GAAS,CACtDI,QAAS,YACT4U,KAAM,OACN3U,MAAO,6BACPnC,IAAK+B,EACL,kBAAmBE,GAClBrC,GAAQoC,EAAqB,gBAAoB,QAAS,CAC3DI,GAAIH,GACHD,GAAS,KAAM,IAGpB,IAAI,GAA0B,aAAiB0gB,IC7B/C,SAAS,KAA2Q,OAA9P,GAAWliB,OAAOC,QAAU,SAAU1B,GAAU,IAAK,IAAI2B,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CAAE,IAAIG,EAASF,UAAUD,GAAI,IAAK,IAAII,KAAOD,EAAcL,OAAOO,UAAUC,eAAeC,KAAKJ,EAAQC,KAAQ/B,EAAO+B,GAAOD,EAAOC,IAAY,OAAO/B,IAA2BmC,MAAMvB,KAAMgB,WAEhT,SAAS,GAAyBE,EAAQO,GAAY,GAAc,MAAVP,EAAgB,MAAO,GAAI,IAAkEC,EAAKJ,EAAnE3B,EAEzF,SAAuC8B,EAAQO,GAAY,GAAc,MAAVP,EAAgB,MAAO,GAAI,IAA2DC,EAAKJ,EAA5D3B,EAAS,GAAQsC,EAAab,OAAOc,KAAKT,GAAqB,IAAKH,EAAI,EAAGA,EAAIW,EAAWT,OAAQF,IAAOI,EAAMO,EAAWX,GAAQU,EAASG,QAAQT,IAAQ,IAAa/B,EAAO+B,GAAOD,EAAOC,IAAQ,OAAO/B,EAFxM,CAA8B8B,EAAQO,GAAuB,GAAIZ,OAAOiB,sBAAuB,CAAE,IAAIC,EAAmBlB,OAAOiB,sBAAsBZ,GAAS,IAAKH,EAAI,EAAGA,EAAIgB,EAAiBd,OAAQF,IAAOI,EAAMY,EAAiBhB,GAAQU,EAASG,QAAQT,IAAQ,GAAkBN,OAAOO,UAAUY,qBAAqBV,KAAKJ,EAAQC,KAAgB/B,EAAO+B,GAAOD,EAAOC,IAAU,OAAO/B,EAMne,IAAI,GAAqB,gBAAoB,SAAU,CACrD0Y,GAAI,GACJC,GAAI,GACJ9H,EAAG,GACHkH,KAAM,YAGJ,GAAqB,gBAAoB,SAAU,CACrDW,GAAI,GACJC,GAAI,GACJ9H,EAAG,KACH+S,OAAQ,eACRC,YAAa,MAGX,GAAqB,gBAAoB,OAAQ,CACnDhhB,EAAG,wFACH+gB,OAAQ,eACRC,YAAa,IACbC,cAAe,UAGjB,SAASC,GAAchhB,EAAMC,GAC3B,IAAIC,EAAQF,EAAKE,MACbC,EAAUH,EAAKG,QACfrC,EAAQ,GAAyBkC,EAAM,CAAC,QAAS,YAErD,OAAoB,gBAAoB,MAAO,GAAS,CACtD8V,MAAO,GACPC,OAAQ,GACR3V,QAAS,YACT4U,KAAM,OACN3U,MAAO,6BACPnC,IAAK+B,EACL,kBAAmBE,GAClBrC,GAAQoC,EAAqB,gBAAoB,QAAS,CAC3DI,GAAIH,GACHD,GAAS,KAAM,GAAO,GAAO,IAGlC,IAAI,GAA0B,aAAiB8gB,ICmEhCC,G,kDArGX,WAAYnjB,GAAQ,IAAD,8BACf,cAAMA,IAGDojB,SAAW,KAGhB,EAAKC,gBAAkB,EAAKA,gBAAgBpX,KAArB,gBAPR,E,gEAYflM,KAAKujB,kB,sCAKLjK,GAAE,2BAA2BkK,YAAY,CACrCC,WAAY,QACZC,WAAY,IACZC,WAAW,EACXC,OAAQ,O,wCAMZtK,GAAEtZ,KAAKqjB,UAAU/N,QAAQ,uB,+BAInB,IAAD,OACCuO,EAAcpV,EAAiBzJ,KAAKmK,QAAQC,SAASE,MAAK,SAAAC,GAAC,MAAe,iBAAXA,EAAEC,QAEjEwE,EAAS6P,EAAcA,EAAY7P,OAAS,KAC5CxP,EAAOqf,EAAcA,EAAYrf,KAAO,KACxCsf,EAAUD,EAAcA,EAAYE,aAAe,KAEzD,OACI,mCAEQF,GACA,yBAAShlB,UAAU,oBAAnB,SACI,qBAAKA,UAAU,mCAAf,SACI,qBAAKA,UAAU,iCAAf,SACI,gCACI,sBAAKA,UAAU,yBAAf,UACI,qBAAKA,UAAU,0BAA0B6V,WAAUC,oBAAeC,EAAY,UAA9E,SACI,6BAAKZ,MAET,qBAAKnV,UAAU,gCAAgC6V,WAAUC,oBAAeC,EAAY,UAApF,SACI,4BAAIpQ,SAGZ,qBAAK3F,UAAU,WAAf,SACI,sBAAKA,UAAU,mCAAf,UACI,qBAAKA,UAAU,iCAAiC4B,QAAST,KAAKsjB,gBAA9D,SACI,qBAAKzkB,UAAU,oCAAf,SACI,cAAC,GAAD,CAAYsY,KAAM1I,EAAiBC,mBAG3C,oBAAI7P,UAAU,sCAAsCwB,IAAK,SAAAuT,GAAG,OAAI,EAAKyP,SAAWzP,GAAhF,SAEQkQ,EAAQ3f,KAAI,SAAC6f,EAAQxB,GACjB,OAAO,qBAAI3jB,UAAU,8BAA8B6V,WAAUC,oBAAeC,EAAY,UAAuBlN,MAAO,CAACuc,OAAQ,QAAxH,UACH,sBAAKplB,UAAU,mCAAf,UACI,sBAAKA,UAAU,0CAAf,UAEQmlB,EAAOzP,UACP,qBAAKnG,IAAK4V,EAAOzP,SAAU2D,OAAO,KAAKD,MAAM,KAAKpE,IAAI,MAGrDmQ,EAAOzP,UACR,cAAC,GAAD,CAAQ2D,OAAO,KAAKD,MAAM,UAIlC,sBAAKpZ,UAAU,wCAAf,UACI,qBAAKA,UAAU,wCAAf,SAAwDmlB,EAAOxU,OAC/D,qBAAK3Q,UAAU,wCAAf,SAAwDmlB,EAAOva,iBAGvE,qBAAK5K,UAAU,qCAAf,SACI,4BAAImlB,EAAOE,cAnBqF1B,4B,GAlE1IzjB,IAAMC,W,OCZ5B,SAAS,KAA2Q,OAA9P,GAAW6B,OAAOC,QAAU,SAAU1B,GAAU,IAAK,IAAI2B,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CAAE,IAAIG,EAASF,UAAUD,GAAI,IAAK,IAAII,KAAOD,EAAcL,OAAOO,UAAUC,eAAeC,KAAKJ,EAAQC,KAAQ/B,EAAO+B,GAAOD,EAAOC,IAAY,OAAO/B,IAA2BmC,MAAMvB,KAAMgB,WAEhT,SAAS,GAAyBE,EAAQO,GAAY,GAAc,MAAVP,EAAgB,MAAO,GAAI,IAAkEC,EAAKJ,EAAnE3B,EAEzF,SAAuC8B,EAAQO,GAAY,GAAc,MAAVP,EAAgB,MAAO,GAAI,IAA2DC,EAAKJ,EAA5D3B,EAAS,GAAQsC,EAAab,OAAOc,KAAKT,GAAqB,IAAKH,EAAI,EAAGA,EAAIW,EAAWT,OAAQF,IAAOI,EAAMO,EAAWX,GAAQU,EAASG,QAAQT,IAAQ,IAAa/B,EAAO+B,GAAOD,EAAOC,IAAQ,OAAO/B,EAFxM,CAA8B8B,EAAQO,GAAuB,GAAIZ,OAAOiB,sBAAuB,CAAE,IAAIC,EAAmBlB,OAAOiB,sBAAsBZ,GAAS,IAAKH,EAAI,EAAGA,EAAIgB,EAAiBd,OAAQF,IAAOI,EAAMY,EAAiBhB,GAAQU,EAASG,QAAQT,IAAQ,GAAkBN,OAAOO,UAAUY,qBAAqBV,KAAKJ,EAAQC,KAAgB/B,EAAO+B,GAAOD,EAAOC,IAAU,OAAO/B,EAMne,IAAI,GAAqB,gBAAoB,OAAQ,CACnD6C,EAAG,oBACH+gB,OAAQ,UACRC,YAAa,EACbC,cAAe,QACf/L,KAAM,gBAGR,SAASgN,GAAahiB,EAAMC,GAC1B,IAAIC,EAAQF,EAAKE,MACbC,EAAUH,EAAKG,QACfrC,EAAQ,GAAyBkC,EAAM,CAAC,QAAS,YAErD,OAAoB,gBAAoB,MAAO,GAAS,CACtDI,QAAS,YACT4U,KAAM,OACN3U,MAAO,6BACPnC,IAAK+B,EACL,kBAAmBE,GAClBrC,GAAQoC,EAAqB,gBAAoB,QAAS,CAC3DI,GAAIH,GACHD,GAAS,KAAM,IAGpB,IAAI,GAA0B,aAAiB8hB,ICsFhCC,G,kDAvGX,WAAYnkB,GAAQ,IAAD,8BACf,cAAMA,IAGDoe,KAAO,KACZ,EAAKgG,eAAiB,KAGtB,EAAKjD,WAAa,EAAKA,WAAWlV,KAAhB,gBARH,E,uDAYRhN,GAAI,IAAD,OAKV,GAJAA,EAAEmiB,iBAEkBjD,GAAYmD,SAASvhB,KAAKqe,MAE9C,CAEAD,GAAYwD,kBAAkB5hB,KAAKqe,MAEnC,IAAM9C,EAAQrc,EAAEE,OAAOmc,MAAMnX,MAAMoc,OAEnCpT,EAAiB0U,SAAS,aACzBvd,MAAK,SAAAsZ,GACF,IAAIyG,EAAuB,CAAC/I,QAAO0C,eAAgBJ,GAEnDvB,GAAciI,UAAUD,GACvB/f,MAAK,SAACV,GACCA,EAAK4G,UACL,EAAK4Z,eAAe/R,UAAUnP,IAAI,aAGlCib,GAAYW,cAAc,EAAKV,MAC/BD,GAAYuD,kBAAkB,EAAKtD,MACnCD,GAAYgE,cAAc,EAAK/D,KAAMxa,EAAK6G,OAAO,c,+BAOvD,IAAD,OACC8Z,EAAgB/V,EAAiBzJ,KAAKmK,QAAQC,SAASE,MAAK,SAAAC,GAAC,MAAe,eAAXA,EAAEC,QAEnE/L,EAAU+gB,EAAgBA,EAAc/gB,QAAU,KAClDe,EAAOggB,EAAgBA,EAAchgB,KAAO,KAElD,OACI,mCAEQggB,GACA,yBAAS3lB,UAAU,oBAAnB,SACI,qBAAKA,UAAU,8BAAf,SACI,sBAAKA,UAAU,4BAAf,UACI,sBAAKA,UAAU,yBAAf,UACI,qBAAKA,UAAU,0BAA0B6V,WAAUC,oBAAeC,EAAY,UAA9E,SACI,+BAAKnR,EAAQ,GAAb,IAAiB,sBAAM5E,UAAU,eAAhB,SAAgC4E,EAAQ,KAAzD,IAAqEA,EAAQ,QAEjF,qBAAK5E,UAAU,gCAAgC6V,WAAUC,oBAAeC,EAAY,UAApF,SACI,4BAAIpQ,SAGZ,uBAAM3F,UAAU,yBAAyB6V,WAAUC,oBAAeC,EAAY,UAAWvU,IAAK,SAAAge,GAAI,OAAI,EAAKA,KAAOA,GAAMgE,SAAUriB,KAAKohB,WAAvI,UACI,qBAAKviB,UAAU,gCAAgCC,eAAa,IAC5D,0BAASD,UAAU,iCAAnB,UACI,sBAAKA,UAAU,WAAf,UACI,uBAAO2Q,KAAK,QAAQjP,KAAK,QAAQoZ,UAAQ,EAACC,YAAY,mBACtD,uBAAOG,QAAQ,QAAf,4BACA,sBAAMlb,UAAU,iBAAhB,0CACA,qBAAKA,UAAU,qCAAf,SACI,cAAC,GAAD,SAGR,mBAAGA,UAAU,kBACb,qBAAKA,UAAU,iCAAf,SACI,cAAC,EAAD,CAAcA,UAAU,0BAA0B0B,KAAK,SAASC,gBAAc,EAA9E,SACI,8CAGR,qBAAK3B,UAAU,gCAAf,SACI,sEAGR,0BAASA,UAAU,0CAA0CwB,IAAK,SAAAokB,GAAO,OAAI,EAAKJ,eAAiBI,GAAnG,UACI,iCACI,qBAAK5lB,UAAU,8BAAf,SACI,cAAC,GAAD,CAAWmkB,OAAQvU,EAAiBC,mBAG5C,4CACA,mG,GA7FhB3P,IAAMC,WC8Lf0lB,I,8KA9LP,IAAMC,EAAWlW,EAAiBzJ,KAAKsL,KACjC6C,EAAO1E,EAAiBzJ,KAAKmK,QAAQyV,QAErCxR,EAAO3E,EAAiBzJ,KAAKsL,KAAKuU,aAElCC,EAAkBrW,EAAiBG,gBACnCC,EAAmBJ,EAAiBI,iBAEpChI,EAAW8d,EAASnV,KACpBuV,EAAQJ,EAASK,UACjBC,EAAMN,EAASO,QACf3J,EAAQoJ,EAASQ,UACjBC,EAAUT,EAASU,YAAYC,OAAOC,OAAO,IAAKZ,EAASU,YAAYG,KAAM,KAAMb,EAASU,YAAYzT,MAAO,IAAK+S,EAASU,YAAYI,KAGzInS,EADW7E,EAAiBzJ,KAAKmK,QACTC,SAASE,MAAK,SAAAC,GAAC,MAAe,aAAXA,EAAEC,QAC7C+D,EAAWD,EAAeA,EAAaC,SAAW,KAClDmE,EAAYpE,EAAeA,EAAaoE,UAAY,KAEpDxG,EAASzC,EAAiBkF,YAE1BvC,EAAc3C,EAAiBiX,iBAE/BC,GAAO,IAAI7d,MAAOmZ,cAExB,OACI,yBAASpiB,UAAU,YAAnB,SACI,sBAAKA,UAAU,sBAAf,UACI,qBAAKA,UAAU,qBACf,sBAAKA,UAAU,oBAAf,UACI,sBAAKA,UAAU,iBAAf,UACI,gCACI,qBAAKA,UAAU,iBAAf,SACI,qBAAKuP,IAAKgF,EAAMS,IAAI,OAExB,sBAAKhV,UAAU,sBAAf,4BAAkD8mB,EAAlD,IAAyD9e,QAE7D,sBAAKhI,UAAU,sBAAf,UAEQ0U,GACA,mBAAG7J,KAAM6J,EAAUnU,OAAO,SAASwmB,IAAI,aAAvC,SACI,eAAC,EAAD,CAAc/mB,UAAU,gCAAxB,UACI,qBAAKA,UAAU,oBAAf,SACI,qBAAKA,UAAU,0BAAf,SACI,cAAC,EAAD,QAGR,sBAAKA,UAAU,oBAAf,0BAAgD,kDAKxD6Y,GACA,mBAAGhO,KAAMgO,EAAWtY,OAAO,SAASwmB,IAAI,aAAxC,SACI,eAAC,EAAD,CAAc/mB,UAAU,gCAAxB,UACI,qBAAKA,UAAU,oBAAf,SACI,qBAAKA,UAAU,4BAAf,SACI,cAAC,GAAD,QAGR,sBAAKA,UAAU,oBAAf,uBAA6C,0DAMjE,sBAAKA,UAAU,kBAAf,UACI,qBAAKA,UAAU,iBAAf,SACI,sBAAKA,UAAU,uBAAf,UACI,yCACA,+BAEQsU,EAAK7D,MAAK,SAAAwE,GAAC,MAAU,cAANA,MACf,6BACI,cAAC,IAAD,CAAM/T,GAAG,aAAT,6BAIJoT,EAAK7D,MAAK,SAAAwE,GAAC,MAAU,YAANA,MACf,+BAEQrF,EAAiB4B,gBACjB,cAAC,IAAD,CAAMtQ,GAAE,kBAAa0O,EAAiB4B,gBAAtC,yBAGC5B,EAAiB4B,gBAClB,cAAC,IAAD,CAAMtQ,GAAG,WAAT,4BAKRoT,EAAK7D,MAAK,SAAAwE,GAAC,MAAU,YAANA,MACf,6BACI,cAAC,IAAD,CAAM/T,GAAE,mBAAc+kB,GAAtB,uBAIJ3R,EAAK7D,MAAK,SAAAwE,GAAC,MAAU,QAANA,MACf,6BACI,cAAC,IAAD,CAAM/T,GAAG,OAAT,2BAMpB,qBAAKlB,UAAU,iBAAf,SACI,sBAAKA,UAAU,uBAAf,UACI,8CACA,+BAEQsU,EAAK7D,MAAK,SAAAwE,GAAC,MAAU,iBAANA,MACf,6BACI,cAAC,IAAD,CAAM/T,GAAG,oBAAT,8BAIJoT,EAAK7D,MAAK,SAAAwE,GAAC,MAAU,iBAANA,MACf,6BACI,eAAC,IAAD,CAAM/T,GAAE,wBAAmB8O,GAA3B,UAAgDqC,EAAhD,qBAIJiC,EAAK7D,MAAK,SAAAwE,GAAC,MAAU,cAANA,MACf,6BACI,cAAC,IAAD,CAAM/T,GAAG,oBAAT,gCAIJoT,EAAK7D,MAAK,SAAAwE,GAAC,MAAU,UAANA,MACf,6BACI,cAAC,IAAD,CAAM/T,GAAG,wBAAT,kCAIJoT,EAAK7D,MAAK,SAAAwE,GAAC,MAAU,YAANA,MACf,6BACI,cAAC,IAAD,CAAM/T,GAAG,kBAAT,8BAIJoT,EAAK7D,MAAK,SAAAwE,GAAC,MAAU,kBAANA,MACf,6BACI,cAAC,IAAD,CAAM/T,GAAG,iBAAT,6BAIJoT,EAAK7D,MAAK,SAAAwE,GAAC,MAAU,gCAANA,MACf,6BACI,cAAC,IAAD,CAAM/T,GAAG,+BAAT,mDAMpB,qBAAKlB,UAAU,iBAAf,SACA,sBAAKA,UAAU,uBAAf,UACQ,yCACA,+BACI,qBAAIA,UAAU,6BAAd,mBAEI,oBAAG6K,KAAI,iBAAY6R,GAASnc,OAAO,SAASwmB,IAAI,aAAhD,cAA+DrK,QAEnE,wCAEI,oBAAG7R,KAAI,cAASqb,GAAhB,cAA2BA,QAE/B,sCAEI,oBAAGrb,KAAI,cAASub,GAAhB,cAAyBA,QAGzB7T,GACA,0CAEI,oBAAG1H,KAAI,oCAA+B0b,GAAWhmB,OAAO,SAASwmB,IAAI,aAArE,kBACYR,+B,GAlLvCrmB,IAAMC,Y,aCV3B,SAAS,KAA2Q,OAA9P,GAAW6B,OAAOC,QAAU,SAAU1B,GAAU,IAAK,IAAI2B,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CAAE,IAAIG,EAASF,UAAUD,GAAI,IAAK,IAAII,KAAOD,EAAcL,OAAOO,UAAUC,eAAeC,KAAKJ,EAAQC,KAAQ/B,EAAO+B,GAAOD,EAAOC,IAAY,OAAO/B,IAA2BmC,MAAMvB,KAAMgB,WAEhT,SAAS,GAAyBE,EAAQO,GAAY,GAAc,MAAVP,EAAgB,MAAO,GAAI,IAAkEC,EAAKJ,EAAnE3B,EAEzF,SAAuC8B,EAAQO,GAAY,GAAc,MAAVP,EAAgB,MAAO,GAAI,IAA2DC,EAAKJ,EAA5D3B,EAAS,GAAQsC,EAAab,OAAOc,KAAKT,GAAqB,IAAKH,EAAI,EAAGA,EAAIW,EAAWT,OAAQF,IAAOI,EAAMO,EAAWX,GAAQU,EAASG,QAAQT,IAAQ,IAAa/B,EAAO+B,GAAOD,EAAOC,IAAQ,OAAO/B,EAFxM,CAA8B8B,EAAQO,GAAuB,GAAIZ,OAAOiB,sBAAuB,CAAE,IAAIC,EAAmBlB,OAAOiB,sBAAsBZ,GAAS,IAAKH,EAAI,EAAGA,EAAIgB,EAAiBd,OAAQF,IAAOI,EAAMY,EAAiBhB,GAAQU,EAASG,QAAQT,IAAQ,GAAkBN,OAAOO,UAAUY,qBAAqBV,KAAKJ,EAAQC,KAAgB/B,EAAO+B,GAAOD,EAAOC,IAAU,OAAO/B,EAMne,IAAI,GAAqB,gBAAoB,OAAQ,CACnDymB,QAAS,GACT5jB,EAAG,eACH+gB,OAAQ,UACRC,YAAa,EACbC,cAAe,UAGjB,SAAS4C,GAAe3jB,EAAMC,GAC5B,IAAIC,EAAQF,EAAKE,MACbC,EAAUH,EAAKG,QACfrC,EAAQ,GAAyBkC,EAAM,CAAC,QAAS,YAErD,OAAoB,gBAAoB,MAAO,GAAS,CACtDI,QAAS,WACT4U,KAAM,OACN3U,MAAO,6BACPnC,IAAK+B,EACL,kBAAmBE,GAClBrC,GAAQoC,EAAqB,gBAAoB,QAAS,CAC3DI,GAAIH,GACHD,GAAS,KAAM,IAGpB,IAAI,GAA0B,aAAiByjB,IChC/C,SAAS,KAA2Q,OAA9P,GAAWjlB,OAAOC,QAAU,SAAU1B,GAAU,IAAK,IAAI2B,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CAAE,IAAIG,EAASF,UAAUD,GAAI,IAAK,IAAII,KAAOD,EAAcL,OAAOO,UAAUC,eAAeC,KAAKJ,EAAQC,KAAQ/B,EAAO+B,GAAOD,EAAOC,IAAY,OAAO/B,IAA2BmC,MAAMvB,KAAMgB,WAEhT,SAAS,GAAyBE,EAAQO,GAAY,GAAc,MAAVP,EAAgB,MAAO,GAAI,IAAkEC,EAAKJ,EAAnE3B,EAEzF,SAAuC8B,EAAQO,GAAY,GAAc,MAAVP,EAAgB,MAAO,GAAI,IAA2DC,EAAKJ,EAA5D3B,EAAS,GAAQsC,EAAab,OAAOc,KAAKT,GAAqB,IAAKH,EAAI,EAAGA,EAAIW,EAAWT,OAAQF,IAAOI,EAAMO,EAAWX,GAAQU,EAASG,QAAQT,IAAQ,IAAa/B,EAAO+B,GAAOD,EAAOC,IAAQ,OAAO/B,EAFxM,CAA8B8B,EAAQO,GAAuB,GAAIZ,OAAOiB,sBAAuB,CAAE,IAAIC,EAAmBlB,OAAOiB,sBAAsBZ,GAAS,IAAKH,EAAI,EAAGA,EAAIgB,EAAiBd,OAAQF,IAAOI,EAAMY,EAAiBhB,GAAQU,EAASG,QAAQT,IAAQ,GAAkBN,OAAOO,UAAUY,qBAAqBV,KAAKJ,EAAQC,KAAgB/B,EAAO+B,GAAOD,EAAOC,IAAU,OAAO/B,EAMne,IAAI,GAAqB,gBAAoB,OAAQ,CACnD6C,EAAG,aACH8jB,aAAc,qBACd/C,OAAQ,eACRC,YAAa,EACbC,cAAe,QACf8C,eAAgB,UAGd,GAAqB,gBAAoB,OAAQ,CACnD/jB,EAAG,mBACH8jB,aAAc,qBACd/C,OAAQ,eACRC,YAAa,EACbC,cAAe,QACf8C,eAAgB,UAGlB,SAASC,GAAU9jB,EAAMC,GACvB,IAAIC,EAAQF,EAAKE,MACbC,EAAUH,EAAKG,QACfrC,EAAQ,GAAyBkC,EAAM,CAAC,QAAS,YAErD,OAAoB,gBAAoB,MAAO,GAAS,CACtDI,QAAS,YACT4U,KAAM,OACN3U,MAAO,6BACPnC,IAAK+B,EACL,kBAAmBE,GAClBrC,GAAQoC,EAAqB,gBAAoB,QAAS,CAC3DI,GAAIH,GACHD,GAAS,KAAM,GAAO,IAG3B,IAAI,GAA0B,aAAiB4jB,ICoLhCC,G,kDA9MX,WAAYjmB,GAAQ,IAAD,8BACf,cAAMA,IAGDwR,eAAiBjI,OAAOkI,WAAa9K,SAASa,gBAAgBkK,YAGnE,EAAKwU,MAAQ,KACb,EAAKC,QAAU,KACf,EAAKC,QAAU,KACf,EAAKC,QAAU,KAGf,EAAKC,YAAc,EAAKA,YAAYra,KAAjB,gBACnB,EAAKsa,gBAAkB,EAAKA,gBAAgBta,KAArB,gBACvB,EAAKua,cAAgB,EAAKA,cAAcva,KAAnB,gBACrB,EAAKwa,iBAAmB,EAAKA,iBAAiBxa,KAAtB,gBACxB,EAAKya,eAAiB,EAAKA,eAAeza,KAApB,gBACtB,EAAK0a,UAAY,EAAKA,UAAU1a,KAAf,gBAlBF,E,gEAuBflM,KAAK6mB,iB,2CAIL7mB,KAAK6mB,iB,qCAKLvN,KAAE,qBAAqBwN,QAAQ,CAC3BC,yBAA0B,IAG9BzN,KAAE,qBAAqB0N,GAAG,UAAU,SAAC9nB,EAAG+nB,GAEpC,GADA/nB,EAAEgoB,mBACGD,EAAc,CAAC,IACR1E,EAASrjB,EAAEka,cAAc+N,QAAzB5E,KACRtf,QAAQL,IAAI,YAAc2f,S,kCAM1BrjB,GACJA,GAAGA,EAAEgoB,kBAEJlnB,KAAKmmB,MAAM7T,UAAU0M,SAAS,YAS/Bhf,KAAKmmB,MAAM7T,UAAUC,OAAO,WAC5B3L,SAASpC,KAAK8N,UAAUC,OAAO,mBAC/B3L,SAASpC,KAAKkD,MAAM+K,aAAe,EACnCzS,KAAKqmB,QAAQ3e,MAAMyR,QAAU,OAC7BnZ,KAAKsmB,QAAQ5e,MAAMyR,QAAU,SAZ7BnZ,KAAKmmB,MAAM7T,UAAUnP,IAAI,WACzByD,SAASpC,KAAK8N,UAAUnP,IAAI,mBAC5ByD,SAASpC,KAAKkD,MAAM+K,aAApB,UAAsCzS,KAAKyR,eAA3C,MACAzR,KAAKomB,QAAQ1e,MAAMyR,QAAU,QAC7BnZ,KAAKqmB,QAAQ3e,MAAMyR,QAAU,OAC7BnZ,KAAKsmB,QAAQ5e,MAAMyR,QAAU,U,sCAWrBja,GACZA,EAAEgoB,kBACFlnB,KAAKomB,QAAQ1e,MAAMyR,QAAU,OAC7BnZ,KAAKqmB,QAAQ3e,MAAMyR,QAAU,U,oCAGnBja,GACVA,EAAEgoB,kBAEF9I,GAAYgJ,eAAepnB,KAAKsmB,SAChClI,GAAYW,cAAc/e,KAAKsmB,SAE/BtmB,KAAKomB,QAAQ1e,MAAMyR,QAAU,OAC7BnZ,KAAKsmB,QAAQ5e,MAAMyR,QAAU,U,uCAGhBja,GACbA,EAAEgoB,kBACFlnB,KAAKumB,gB,qCAGMrnB,GAAI,IAAD,OAId,GAHAA,EAAEgoB,kBAEkB9I,GAAYmD,SAASvhB,KAAKsmB,SAC9C,CAEA,IAAMnI,EAAYne,KAAKsmB,QAAQjnB,cAAc,SAAS+E,MAEtDga,GAAYwD,kBAAkB5hB,KAAKsmB,SAEnC,IAAItI,EAAmB,CAAEG,aAEzB/Q,EAAiB0U,SAAS,aACzBvd,MAAK,SAAAsZ,GACFG,EAAiBC,eAAiBJ,EAElCvB,GAAc+K,kBAAkBrJ,GAC/BzZ,MAAK,SAAAV,GACEA,EAAK4G,UACL,EAAKxK,MAAMqnB,cAAcnJ,IAGzBC,GAAYW,cAAc,EAAKuH,SAC/BlI,GAAYuD,kBAAkB,EAAK2E,SACZ,qBAAnBziB,EAAK6G,OAAO,GACZ0T,GAAYsD,eAAe,EAAK4E,QAAS,YAAa,sBAGtDlI,GAAYsD,eAAe,EAAK4E,QAAS,YAAaziB,EAAK6G,OAAO,c,gCAO5ExL,GACNA,EAAEgoB,kBACFlnB,KAAKsmB,QAAQ5e,MAAMyR,QAAU,OAC7BnZ,KAAKqmB,QAAQ3e,MAAMyR,QAAU,OAC7BnZ,KAAKomB,QAAQ1e,MAAMyR,QAAU,U,sCAGjBja,GACZA,EAAEgoB,oB,+BAII,IAAD,OACL,OACI,qBAAKroB,UAAU,WAAWwB,IAAK,SAAAuT,GAAG,OAAI,EAAKuS,MAAQvS,GAAKnT,QAAST,KAAKumB,YAAtE,SACI,sBAAK1nB,UAAU,mBAAmB4B,QAAST,KAAKknB,gBAAhD,UACI,qBAAKroB,UAAU,sCAAsC4B,QAAST,KAAKumB,YAAnE,SACI,cAAC,GAAD,MAEJ,sBAAK1nB,UAAU,qBAAf,UACI,sBAAKA,UAAU,oBAAoBwB,IAAK,SAAAuT,GAAG,OAAI,EAAKwS,QAAUxS,GAA9D,UACI,wBAAQ/U,UAAU,2BAAlB,wCACA,sBAAKA,UAAU,+BAAf,UACI,cAAC,EAAD,CAAcA,UAAU,sBAAsB4B,QAAST,KAAKC,MAAMsnB,gBAAlE,8BAGA,qBAAK1oB,UAAU,sCAAsC0B,KAAK,SAASE,QAAST,KAAKymB,cAAjF,uCAKR,sBAAK5nB,UAAU,oBAAoBwB,IAAK,SAAAuT,GAAG,OAAI,EAAKyS,QAAUzS,GAA9D,UACI,qBAAK/U,UAAU,oCAAoC4B,QAAST,KAAK4mB,UAAjE,SACI,cAAC,GAAD,MAEJ,wBAAQ/nB,UAAU,2BAAlB,8BACA,sBAAKA,UAAU,WAAf,UACI,uBAAO2Q,KAAK,QAAQoK,YAAY,4BAA4BD,UAAQ,EAAClZ,QAAST,KAAKknB,kBACnF,uBAAOnN,QAAQ,QAAf,6BACA,sBAAMlb,UAAU,mBAChB,qBAAKA,UAAU,qCAAf,SACI,cAAC,GAAD,SAGR,qBAAKA,UAAU,YAAf,SACI,yBAAQgb,aAAc,WAAYpZ,QAAST,KAAKknB,gBAAhD,UACI,wBAAQ9iB,MAAM,WAAWojB,UAAQ,EAAjC,mCACA,wBAAQjF,KAAK,QAAb,oBACA,wBAAQA,KAAK,QAAb,oBACA,wBAAQA,KAAK,QAAb,yBAGR,qBAAK1jB,UAAU,+BAAf,SACI,cAAC,EAAD,CAAcA,UAAU,WAAW4B,QAAST,KAAK0mB,iBAAjD,yBAKR,sBAAK7nB,UAAU,sBAAsBwB,IAAK,SAAAuT,GAAG,OAAI,EAAK0S,QAAU1S,GAAhE,UACI,qBAAK/U,UAAU,oCAAoC4B,QAAST,KAAK4mB,UAAjE,SACI,cAAC,GAAD,MAEJ,wBAAQ/nB,UAAU,2BAAlB,0CACA,sBAAKA,UAAU,WAAf,UACI,uBAAO2Q,KAAK,YAAYoK,YAAY,aAAaD,UAAQ,EAAClZ,QAAST,KAAKknB,kBACxE,uBAAOnN,QAAQ,YAAf,wBACA,sBAAMlb,UAAU,iBAAhB,gCACA,qBAAKA,UAAU,qCAAf,SACI,cAAC,GAAD,SAGR,qBAAKA,UAAU,+BAAf,SACI,cAAC,EAAD,CAAcA,UAAU,0BAA0B4B,QAAST,KAAK2mB,eAAhE,mC,GApMN5nB,IAAMC,WC4JjByoB,G,kDAlJX,WAAYxnB,GAAQ,IAAD,8BACf,cAAMA,IAGDuR,OAAS,KACd,EAAKkW,eAAiB,KACtB,EAAKC,kBAAoB,KAGzB,EAAKzV,gBAAkB,EAAKA,gBAAgBhG,KAArB,gBACvB,EAAK0b,qBAAuB,EAAKA,qBAAqB1b,KAA1B,gBAC5B,EAAKqb,gBAAkB,EAAKA,gBAAgBrb,KAArB,gBACvB,EAAKob,cAAgB,EAAKA,cAAcpb,KAAnB,gBAZN,E,gEAiBflM,KAAK6nB,gB,oCAIM,IAAD,OACN7nB,KAAKC,MAAMwJ,SAASmI,OAAS5R,KAAKC,MAAMwJ,SAASmI,MAAMsC,WACvD8E,YAAW,WACH,EAAK2O,mBACL,EAAKA,kBAAkBG,eAAe,CAAE/U,SAAU,SAAUgV,MAAO,YAExE,KAGHve,OAAOsJ,SAAS,EAAG,K,wCAMvB9S,KAAK2nB,kBAAkBG,eAAe,CAAE/U,SAAU,SAAUgV,MAAO,Y,6CAInE/nB,KAAK0nB,eAAenB,cACpBvmB,KAAKwR,OAAOwW,2B,sCAGA9oB,GACZc,KAAK4nB,uBACL5nB,KAAKC,MAAMgoB,QAAQnlB,KAAK,0B,oCAGdqb,GACVne,KAAK4nB,uBACL5nB,KAAKC,MAAMgoB,QAAQnlB,KAAnB,oBAAqCqb,M,+BAI/B,IAAD,OACC+J,EAAWzZ,EAAiBzJ,KAAKmK,QAEjCgZ,EAAWD,EAAS9Y,SAASE,MAAK,SAAAC,GAAC,MAAe,UAAXA,EAAEC,QACzC4Y,EAAgBF,EAAS9Y,SAASE,MAAK,SAAAC,GAAC,MAAe,cAAXA,EAAEC,QAC9C6Y,EAAcH,EAAS9Y,SAASE,MAAK,SAAAC,GAAC,MAAe,YAAXA,EAAEC,QAC5C8D,EAAe4U,EAAS9Y,SAASE,MAAK,SAAAC,GAAC,MAAe,aAAXA,EAAEC,QAC7C8Y,EAAcJ,EAAS9Y,SAASE,MAAK,SAAAC,GAAC,MAAe,YAAXA,EAAEC,QAC5C+Y,EAAiBL,EAAS9Y,SAASE,MAAK,SAAAC,GAAC,MAAe,UAAXA,EAAEC,QAC/CgE,EAAiB0U,EAAS9Y,SAASE,MAAK,SAAAC,GAAC,MAAe,eAAXA,EAAEC,QAC/CgZ,EAAcN,EAAS9Y,SAASE,MAAK,SAAAC,GAAC,MAAe,YAAXA,EAAEC,QAC5CiZ,EAAYP,EAAS9Y,SAASE,MAAK,SAAAC,GAAC,MAAe,aAAXA,EAAEC,QAC1CkZ,EAAYR,EAAS9Y,SAASE,MAAK,SAAAC,GAAC,MAAe,UAAXA,EAAEC,QAE1CnN,EAAQoM,EAAiBzJ,KAAKsL,KAAKqY,kBAEzC,OACI,qCACI,cAAC,aAAD,CAAYtmB,MAAOA,IAEnB,cAAC,EAAD,CAAQhC,IAAK,SAAAmR,GAAM,OAAI,EAAKA,OAASA,GAAQwB,SAAUhT,KAAKkS,kBAC5D,qBAAKrT,UAAU,UAAf,SACI,qBAAKA,UAAU,oBAAf,SACI,sBAAKA,UAAU,kBAAf,UAEQspB,GAAY,cAAC,EAAD,CAAYnjB,KAAMmjB,EAAU5nB,KAAK,OAAOkU,aAAa,IAGjE2T,GAAiB,cAAC,EAAD,CAAYpjB,KAAMojB,EAAe7nB,KAAK,cAGvD8nB,GAAeA,EAAYjY,QAAQnP,OAAS,GAC5C,cAAC,EAAD,CAAM+D,KAAMqjB,EAAa9nB,KAAK,UAAUkU,aAAa,EAArD,SAEQ4T,EAAYjY,QAAQjM,KAAI,SAACsS,EAAQ+L,GAC7B,OAAO,cAAC,EAAD,CAAYxd,KAAMyR,GAAa+L,QAMlD6F,GAA8C,IAA/BA,EAAYjY,QAAQnP,QACnC,cAAC,EAAD,CAAe+D,KAAMqjB,EAAa5R,OAAQ4R,EAAYjY,QAAQ,KAG9DkD,GAAgB,cAAC,GAAD,CAAUtO,KAAMsO,IAGhCgV,GAAe,cAAC,GAAD,CAAQtjB,KAAMsjB,EAAa/nB,KAAK,MAAM0S,gBAAgB,kBAGrEsV,GACA,cAAC,EAAD,CAAMvjB,KAAMujB,EAAgBhoB,KAAK,aAAjC,SAEQgoB,EAAeK,MAAMzkB,KAAI,SAAC0kB,EAAMrG,GAC5B,OAAO,cAAC,EAAD,CAAgBxd,KAAM6jB,GAAWrG,QAMpDhP,GAAkB,cAAC,GAAD,CAAYxO,KAAMwO,EAAgBnT,IAAK,SAAAokB,GAAO,OAAI,EAAKkD,kBAAoBlD,KAG7F+D,GAAe,cAAC,GAAD,CAAQxjB,KAAMwjB,EAAajoB,KAAK,MAAM0S,gBAAgB,kBAGrEwV,GACA,cAAC,EAAD,CAAMzjB,KAAMyjB,EAAWloB,KAAK,QAA5B,SAEQkoB,EAAUK,SAAS3kB,KAAI,SAAC4kB,EAASvG,GAC7B,OAAO,cAAC,EAAD,CAAWxd,KAAM+jB,GAAcvG,QAMlDkG,GAAa,cAAC,GAAD,CAAO1jB,KAAM0jB,EAAW9F,mBAAoB5iB,KAAK4nB,uBAElE,cAAC,GAAD,IACA,cAAC,GAAD,IACA,cAAC,GAAD,WAIZ,cAAC,GAAD,CAAavnB,IAAK,SAAA8lB,GAAK,OAAI,EAAKuB,eAAiBvB,GAAOoB,gBAAiBvnB,KAAKunB,gBAAiBD,cAAetnB,KAAKsnB,uB,GA9IhHvoB,IAAMC,WCyGVgqB,I,yLAhHPxf,OAAOsJ,SAAS,EAAG,K,+BAKnB,IAAMsV,EAAiB3Z,EAAiBzJ,KAAKmK,QAAQU,MAAMP,MAAK,SAAAK,GAAC,MAAe,cAAXA,EAAEH,QAEjEwE,EAASoU,EAAgBA,EAAcpU,OAAS,KAChDO,EAAW6T,EAAgBA,EAAc7T,SAAW,KACpD0U,EAAeb,EAAgBA,EAAcc,sBAAwB,KACrEC,EAAkBf,EAAgBA,EAAce,gBAAkB,KAExE,OACI,mCAEQf,GACA,qCACI,cAAC,EAAD,CAAQlV,WAAW,cACnB,qBAAKrU,UAAU,UAAf,SACI,sBAAKA,UAAU,yBAAf,UACI,sBAAKA,UAAU,yBAAf,UACI,yBAASA,UAAU,oBAAnB,SACI,qBAAKA,UAAU,8BAAf,SACI,sBAAKA,UAAU,4BAAf,UACI,qBAAKA,UAAU,iCAAiC6V,WAAUC,oBAAeC,EAAY,UAAW6N,iBAAe,IAAIC,4BAA0B,aAA7I,SACI,qBAAKtU,IAAKmG,EAAUV,IAAI,OAE5B,qBAAKhV,UAAU,0BAA0B6V,WAAUC,oBAAeC,EAAY,UAAW6N,iBAAe,MAAMC,4BAA0B,aAAxI,SACI,6BAAK1O,aAKrB,yBAASnV,UAAU,2BAAnB,SACI,qBAAKA,UAAU,qCAAf,SACI,sBAAKA,UAAU,mCAAf,UAEQoqB,GAAgBA,EAAahoB,OAAS,GACtC,sBAAKpC,UAAU,iCAAf,UACI,qBAAKA,UAAU,uCAAuC6V,WAAUC,oBAAeC,EAAY,UAAW6N,iBAAe,IAAIC,4BAA0B,aAAnJ,SACI,8DAEJ,yBAAS7jB,UAAU,oBAAnB,SAEQoqB,EAAa9kB,KAAI,SAACilB,EAAU5G,GACxB,OAAO,oBAAG9Y,KAAM0f,EAASplB,IAAK5E,OAAO,SAASwmB,IAAI,aAAa/mB,UAAU,sCAAlE,UACH,qBAAKA,UAAU,+BAA+B6V,WAAUC,oBAAeC,EAAY,UAAnF,SACI,qBAAKxG,IAAKgb,EAAS7U,SAAW6U,EAAS7U,SAAW4B,EAAatC,IAAI,OAEvE,sBAAKhV,UAAU,+BAAf,UACI,qBAAKA,UAAU,qCAAqC6V,WAAUC,oBAAeC,EAAY,UAAzF,SACI,6BAAKwU,EAASpV,WAElB,qBAAKnV,UAAU,2CAA2C6V,WAAUC,oBAAeC,EAAY,UAA/F,SACI,mBAAGyU,wBAAyB,CAAEC,OAAQF,EAAS5kB,eATyDge,WAmBpI2G,GAAmBA,EAAgBloB,OAAS,GAC5C,sBAAKpC,UAAU,iCAAf,UACI,qBAAKA,UAAU,uCAAuC6V,WAAUC,oBAAeC,EAAY,UAAW6N,iBAAe,IAAIC,4BAA0B,aAAnJ,SACI,6DAEJ,yBAAS7jB,UAAU,oBAAnB,SAEQsqB,EAAgBhlB,KAAI,SAACilB,EAAU5G,GAC3B,OAAO,oBAAG9Y,KAAM0f,EAASplB,IAAK5E,OAAO,SAASwmB,IAAI,aAAa/mB,UAAU,sCAAlE,UACH,qBAAKA,UAAU,+BAA+B6V,WAAUC,oBAAeC,EAAY,UAAnF,SACI,qBAAKxG,IAAKgb,EAAS7U,SAAW6U,EAAS7U,SAAW4B,EAAatC,IAAI,OAEvE,sBAAKhV,UAAU,+BAAf,UACI,qBAAKA,UAAU,qCAAqC6V,WAAUC,oBAAeC,EAAY,UAAzF,SACI,6BAAKwU,EAASpV,WAElB,sBAAKU,WAAUC,oBAAeC,EAAY,UAA1C,UACI,qBAAK/V,UAAU,2CAAf,SACI,mBAAGwqB,wBAAyB,CAAEC,OAAQF,EAAS5kB,UAEnD,qBAAK3F,UAAU,uCAAf,SACI,cAAC,IAAD,CAAMkB,GAAE,kBAAaqpB,EAASN,SAASxZ,MAAK,SAAAia,GAAC,MAAe,aAAXA,EAAE/Z,QAAqBpL,OAAxE,SACI,sBAAMvF,UAAU,eAAhB,wCAdgG2jB,qBA6BxJ,cAAC,GAAD,IACA,cAAC,GAAD,kB,GAzGRzjB,IAAMC,Y,OCZvB,SAASwqB,GAASrf,EAAMsf,EAAMC,GACjC,IAAIrkB,EAEJ,OAAO,WACH,IAAIskB,EAAU3pB,KACV4pB,EAAO5oB,UAEP6oB,EAAQ,WACRxkB,EAAU,KACLqkB,GACDvf,EAAK5I,MAAMooB,EAASC,IAIxBE,EAAUJ,IAAcrkB,EAE5B0kB,aAAa1kB,GAEbA,EAAU2T,WAAW6Q,EAAOJ,GAExBK,GACA3f,EAAK5I,MAAMooB,EAASC,I,cCnBzB,SAASI,KACZ,OAAOC,e,8BCgBLC,G,uKAGE,OACI,qBAAKrrB,UAAU,gBAAf,SACI,cAACsrB,GAAA,EAAD,eAAgBnqB,KAAKC,c,GALjBlB,IAAMC,WAWXorB,iBAxBA,SAAAtc,GAAK,MAAK,CACrBuc,KAAM,CACF,kBAAmB,CACf7iB,MAAO,QACPyL,gBAAiB,kBAErB,kCAAmC,CAC/BzL,MAAO,QACPyL,gBAAiB,eAgBdmX,CAAmBF,ICvB5BI,I,8KAEE,IAAMC,EAAavqB,KAAKC,MAAMwJ,SAASmI,MAAQ5R,KAAKC,MAAMwJ,SAASmI,MAAMvP,MAAQ,iCAC3EmoB,EAAW/b,EAAiBzJ,KAAOyJ,EAAiBzJ,KAAKsL,KAAKma,kBAAoB,GAExF,OACI,qBAAK5rB,UAAU,WAAf,SACI,qBAAKA,UAAU,sBAAf,SACI,qBAAKA,UAAU,gCAAf,SACI,sBAAKA,UAAS,uCAAkCmB,KAAKC,MAAMuP,MAA3D,UACI,qBAAK3Q,UAAU,2BAAf,SACI,oBAAIA,UAAU,4BAA4B6V,WAAUC,oBAAeC,EAAY,UAA/E,SAA2F2V,MAE/F,qBAAK1rB,UAAU,mCAAf,SACI,qBAAKuP,IAAKoc,EAAU9V,WAAUC,oBAAeC,EAAY,UAAWE,kBAAgB,gBAAgBjB,IAAI,oB,GAdpH9U,IAAMC,YAwBX6jB,eAAWyH,IC/B1B,SAAS,KAA2Q,OAA9P,GAAWzpB,OAAOC,QAAU,SAAU1B,GAAU,IAAK,IAAI2B,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CAAE,IAAIG,EAASF,UAAUD,GAAI,IAAK,IAAII,KAAOD,EAAcL,OAAOO,UAAUC,eAAeC,KAAKJ,EAAQC,KAAQ/B,EAAO+B,GAAOD,EAAOC,IAAY,OAAO/B,IAA2BmC,MAAMvB,KAAMgB,WAEhT,SAAS,GAAyBE,EAAQO,GAAY,GAAc,MAAVP,EAAgB,MAAO,GAAI,IAAkEC,EAAKJ,EAAnE3B,EAEzF,SAAuC8B,EAAQO,GAAY,GAAc,MAAVP,EAAgB,MAAO,GAAI,IAA2DC,EAAKJ,EAA5D3B,EAAS,GAAQsC,EAAab,OAAOc,KAAKT,GAAqB,IAAKH,EAAI,EAAGA,EAAIW,EAAWT,OAAQF,IAAOI,EAAMO,EAAWX,GAAQU,EAASG,QAAQT,IAAQ,IAAa/B,EAAO+B,GAAOD,EAAOC,IAAQ,OAAO/B,EAFxM,CAA8B8B,EAAQO,GAAuB,GAAIZ,OAAOiB,sBAAuB,CAAE,IAAIC,EAAmBlB,OAAOiB,sBAAsBZ,GAAS,IAAKH,EAAI,EAAGA,EAAIgB,EAAiBd,OAAQF,IAAOI,EAAMY,EAAiBhB,GAAQU,EAASG,QAAQT,IAAQ,GAAkBN,OAAOO,UAAUY,qBAAqBV,KAAKJ,EAAQC,KAAgB/B,EAAO+B,GAAOD,EAAOC,IAAU,OAAO/B,EAMne,IAAI,GAAqB,gBAAoB,OAAQ,CACnDsrB,GAAI,GACJC,GAAI,GACJC,GAAI,KACJC,GAAI,GACJ7H,OAAQ,UACRE,cAAe,UAGb,GAAqB,gBAAoB,OAAQ,CACnDwH,GAAI,QACJC,GAAI,IACJC,GAAI,QACJC,GAAI,IACJ7H,OAAQ,UACRE,cAAe,UAGb,GAAqB,gBAAoB,OAAQ,CACnDwH,GAAI,QACJC,GAAI,IACJC,GAAI,QACJC,GAAI,IACJ7H,OAAQ,UACRE,cAAe,UAGjB,SAAS4H,GAAc3oB,EAAMC,GAC3B,IAAIC,EAAQF,EAAKE,MACbC,EAAUH,EAAKG,QACfrC,EAAQ,GAAyBkC,EAAM,CAAC,QAAS,YAErD,OAAoB,gBAAoB,MAAO,GAAS,CACtDI,QAAS,WACT4U,KAAM,OACN3U,MAAO,6BACPnC,IAAK+B,EACL,kBAAmBE,GAClBrC,GAAQoC,EAAqB,gBAAoB,QAAS,CAC3DI,GAAIH,GACHD,GAAS,KAAM,GAAO,GAAO,IAGlC,IAAI,GAA0B,aAAiByoB,ICqchCC,G,kDAjeX,WAAY9qB,GAAQ,IAAD,8BACf,cAAMA,IAGD+qB,WAAa,KAClB,EAAKC,iBAAmB,KACxB,EAAKC,mBAAqB,KAC1B,EAAKC,YAAc,KAGnB,EAAKvZ,MAAQ,CACTwZ,eAAgB,KAChBC,aAAc,KACdC,WAAY,KACZC,WAAY,GAIhB,EAAKC,qBAAuB,EAAKA,qBAAqBtf,KAA1B,gBAC5B,EAAKuf,sBAAwB,EAAKA,sBAAsBvf,KAA3B,gBAC7B,EAAKwf,sBAAwB,EAAKA,sBAAsBxf,KAA3B,gBAC7B,EAAKyf,kBAAoB,EAAKA,kBAAkBzf,KAAvB,gBACzB,EAAK0f,kBAAoB,EAAKA,kBAAkB1f,KAAvB,gBACzB,EAAK2f,cAAgBrC,GAAS,EAAKqC,cAAc3f,KAAnB,gBAA+B,KAC7D,EAAK4f,oBAAsBtC,GAAS,EAAKsC,oBAAoB5f,KAAzB,gBAAqC,KAxB1D,E,gEA6Bf1C,OAAOsJ,SAAS,EAAG,GACnB9S,KAAK6mB,iB,2CAIL7mB,KAAK+rB,kB,qCAIO,IAAD,OACXzS,KAAE,qBAAqBwN,QAAQ,CAC3BC,yBAA0B,IAG9BzN,KAAE,qBAAqB0N,GAAG,UAAU,SAAC9nB,EAAG+nB,GACpC,IAAKA,EAAc,CAAC,IACR+E,EAAe9sB,EAAEka,cAAc+N,QAA/B6E,WACR,EAAKC,sBAAsBD,EAAY9sB,EAAEka,cAAchV,OAEpC,aAAf4nB,EACA,EAAKE,cAAchtB,EAAEka,cAAchV,OAEf,SAAf4nB,GACL,EAAKG,YAAYjtB,EAAEka,cAAchV,a,sCAOxCkV,KAAE,qBAAqB8S,QAAQC,SAAS,8BACzCrsB,KAAK6mB,iB,4CAISmF,EAAYM,GAC9B,IAAMC,EAASjT,KAAEtZ,KAAKirB,kBAAkB3b,KAAzB,yDAAgF0c,EAAhF,0BAA4GM,EAA5G,OACfC,EAAOC,SAAS,WAChBD,EAAOE,SAAS,YAAYC,YAAY,WAExC,IAAMC,EAASrT,KAAEtZ,KAAKgrB,YAAY1b,KAAnB,mCAAoD0c,EAApD,OACfW,EAAOC,IAAIL,EAAOvnB,OAAOZ,OACzBuoB,EAAOrX,QAAQ,UAAU,K,oCAGfuX,GACV7sB,KAAK8sB,sBACL9sB,KAAKqS,SAAS,CACV+Y,eAAiC,KAAjByB,EAAsBA,EAAe,KACrDtB,WAAY,GACbvrB,KAAK+sB,0B,kCAGAC,GACRhtB,KAAK8sB,sBACL9sB,KAAKqS,SAAS,CACViZ,WAAY0B,EACZzB,WAAY,GACbvrB,KAAK+sB,0B,4CAIR/sB,KAAKkrB,mBAAmB3M,aAAa,YAAY,GACjDve,KAAKkrB,mBAAmB5Y,UAAUnP,IAAI,c,6CAIlCnD,KAAKkrB,qBACLlrB,KAAKkrB,mBAAmB1M,gBAAgB,YACxCxe,KAAKkrB,mBAAmB5Y,UAAUC,OAAO,e,6CAM7C3L,SAASpC,KAAK8N,UAAUnP,IAAI,mBAC5BnD,KAAKirB,iBAAiB3Y,UAAUnP,IAAI,SACpCnD,KAAK+sB,yB,8CAILnmB,SAASpC,KAAK8N,UAAUC,OAAO,mBAC/BvS,KAAKirB,iBAAiB3Y,UAAUC,OAAO,W,4CAGrBrT,GAAI,IAAD,OACrBc,KAAK8sB,sBADgB,MAGS5tB,EAAEka,cAAc+N,QAAtC6E,EAHa,EAGbA,WAAY5nB,EAHC,EAGDA,MACpBpE,KAAKisB,sBAAsBD,EAAY5nB,GAEvC4U,YAAW,SAACgT,EAAY5nB,GACD,aAAf4nB,EACA,EAAKE,cAAc9nB,GAEC,SAAf4nB,GACL,EAAKG,YAAY/nB,KAEtB,IAAM4nB,EAAY5nB,K,0CAIrBpE,KAAKyrB,0B,oCAGKvsB,GACVoa,KAAEtZ,KAAKirB,kBAAkB3b,KAAK,aAAaA,KAAK,SAASsd,IAAI1tB,EAAEE,OAAOgF,OACtEpE,KAAKqS,SAAS,CACVgZ,aAAiC,KAAnBnsB,EAAEE,OAAOgF,MAAelF,EAAEE,OAAOgF,MAAMiD,cAAgB,KACrEkkB,WAAY,M,0CAIArsB,GAAI,IAAD,OACnBc,KAAK8sB,sBACLxT,KAAEtZ,KAAKgrB,YAAY1b,KAAK,aAAaA,KAAK,SAASsd,IAAI1tB,EAAEE,OAAOgF,OAEhE4U,YAAW,WACP,EAAK3G,SAAS,CACVgZ,aAAiC,KAAnBnsB,EAAEE,OAAOgF,MAAelF,EAAEE,OAAOgF,MAAMiD,cAAgB,KACrEkkB,WAAY,GACb,EAAKwB,0BACT,O,wCAGW7tB,EAAG6U,GACjBvK,OAAOsJ,SAAS,EAAG,GACnB9S,KAAKqS,SAAS,CAAEkZ,WAAYxX,EAAO,M,mCAIzB,IAAD,OAEL3D,EADe3B,EAAiBzJ,KAAOyJ,EAAiBzJ,KAAKmL,cAAcC,QAAU,KA6DzF,OA1DIA,GAAWpQ,KAAK4R,MAAMwZ,iBACtBhb,EAAUA,EAAQmc,QAAO,SAAAU,GAAC,OAAIA,EAAEC,YAAYxQ,QAAQ,OAAQ,KAAK8D,OAAOnZ,gBAAkB,EAAKuK,MAAMwZ,mBAGrGhb,GAAWpQ,KAAK4R,MAAMyZ,eACtBjb,EAAUA,EAAQmc,QAAO,SAAAU,GAAC,OAAIA,EAAE5qB,MAAMgF,cAAc8lB,OAAO,EAAKvb,MAAMyZ,eAAiB,MAGvFjb,GAAWpQ,KAAK4R,MAAM0Z,aACQ,YAA1BtrB,KAAK4R,MAAM0Z,WACXlb,EAAUA,EAAQgd,MAAK,SAAUC,EAAG3c,GAEhC,IAAI4c,EAA0B,qBAAZD,EAAEE,MAAwBF,EAAEE,MAAQ,KAClDC,EAA0B,qBAAZ9c,EAAE6c,MAAwB7c,EAAE6c,MAAQ,KACtD,OAAID,IAASE,EAELH,EAAEhrB,QAAUqO,EAAErO,MACP,EAEJgrB,EAAEhrB,MAAQqO,EAAErO,OAAS,EAAI,EAE7BirB,EAAOE,GAAQ,EAAI,KAGC,UAA1BxtB,KAAK4R,MAAM0Z,WAChBlb,EAAUA,EAAQgd,MAAK,SAAUC,EAAG3c,GAChC,OAAI2c,EAAEhrB,QAAUqO,EAAErO,MACP,EAEJgrB,EAAEhrB,MAAQqO,EAAErO,OAAS,EAAI,KAGL,YAA1BrC,KAAK4R,MAAM0Z,WAChBlb,EAAUA,EAAQgd,MAAK,SAAUC,EAAG3c,GAEhC,OAAI2c,EAAEtc,UAAYL,EAAEK,QAEZsc,EAAEhrB,QAAUqO,EAAErO,MACP,EAEJgrB,EAAEhrB,MAAQqO,EAAErO,OAAS,EAAI,EAE7BgrB,EAAEtc,QAAUL,EAAEK,SAAW,EAAI,KAGT,iBAA1B/Q,KAAK4R,MAAM0Z,WAChBlb,EAAUA,EAAQgd,MAAK,SAAUC,EAAG3c,GAChC,OAAI2c,EAAE3W,cAAgBhG,EAAEgG,YACb,EAEJ2W,EAAE3W,YAAchG,EAAEgG,aAAe,EAAI,KAIhDzT,QAAQL,IAAI,wBAIbwN,I,+BAID,IAAD,OACCiY,EAAc5Z,EAAiBzJ,KAAKmK,QAAQU,MAAMP,MAAK,SAAAK,GAAC,MAAe,mBAAXA,EAAEH,QAE9DwE,EAASqU,EAAcA,EAAYrU,OAAS,KAC5CyZ,EAAkBpF,EAAcA,EAAYqF,mBAAqB,KACjEC,EAActF,EAAcA,EAAYsF,YAAc,KAEtDvd,EAAUpQ,KAAK4tB,aACfC,EAAezd,EAAUA,EAAQ8F,MAAM,GAAKlW,KAAK4R,MAAM2Z,WAAY,GAAKvrB,KAAK4R,MAAM2Z,WAAa,IAAM,KAEtGuC,EAAY9D,KAEZ3Y,EAAkB5C,EAAiBmI,qBAEzC,OACI,mCAEQyR,GACA,qCACI,cAAC,EAAD,CAAQpV,gBAAgB,iBAAiBC,WAAW,YACpD,qBAAKrU,UAAU,UAAf,SACI,sBAAKA,UAAU,8BAAf,UACI,yBAASA,UAAU,0BAAnB,SACI,qBAAKA,UAAU,8BAA8B6V,WAAUC,oBAAeC,EAAY,UAAW6N,iBAAe,KAAKC,4BAA0B,aAA3I,SACI,6BAAK1O,QAGb,yBAASnV,UAAU,iCAAnB,SACI,sBAAKA,UAAU,2CAAf,UACI,sBAAKA,UAAU,yCAAyC6V,WAAUC,oBAAeC,EAAY,UAAWvU,IAAK,SAAAuT,GAAG,OAAI,EAAKoX,WAAapX,GAAtI,UACI,qBAAK/U,UAAU,qDAAf,SACI,yBAAQA,UAAU,SAAS4D,GAAG,kBAAkBhC,QAAST,KAAKwrB,qBAA9D,UACI,4BACI,qBAAK3sB,UAAU,eAAf,SACI,cAAC,GAAD,CAAYmkB,OAAQvU,EAAiBE,qBAG7C,+CAKR,sBAAK9P,UAAU,2CAAf,UAEQ4uB,GAAmBA,EAAgBxsB,OAAS,GAC5C,qBAAKpC,UAAU,cAAc4D,GAAG,kBAAhC,SACI,qBAAK5D,UAAU,YAAf,SACI,yBAAQkvB,mBAAiB,WAAzB,UACI,wBAAQ3pB,MAAM,GAAd,4BAEIqpB,EAAgBtpB,KAAI,SAACooB,EAAQ/J,GACzB,OAAO,wBAAQpe,MAAOmoB,EAAO7P,QAAQ,OAAQ,KAAK8D,OAAOnZ,cAAlD,SAA8EklB,GAAR/J,aAOrG,sBAAK3jB,UAAU,+BAAf,UACI,uBAAO8a,UAAQ,EAACC,YAAY,SAASE,SAAU9Z,KAAK6rB,gBACpD,2CACA,sBAAMhtB,UAAU,mBAChB,qBAAKA,UAAU,qCAAf,SACI,cAAC,GAAD,YAIZ,qBAAKA,UAAU,2CAAf,SAEQ8uB,GAAeA,EAAY1sB,OAAS,GACpC,qCACI,qBAAKpC,UAAU,+CAAf,SACI,wCAEJ,qBAAK4D,GAAG,cAAR,SACI,qBAAK5D,UAAU,YAAf,SACI,yBAAQkvB,mBAAiB,OAAzB,UACI,wBAAQ3pB,MAAM,UAAd,qBAEIupB,EAAYxpB,KAAI,SAAC6pB,EAAQxL,GACrB,OAAO,wBAAQpe,MAAO4pB,EAAOtR,QAAQ,OAAQ,KAAK8D,OAAOnZ,cAAlD,SAAyF,YAAX2mB,EAAuBvf,EAAiB2H,eAAe,GAAO4X,GAAtExL,qBAUjH,qBAAK3jB,UAAU,wBAAwBwB,IAAK,SAAAuT,GAAG,OAAI,EAAKqX,iBAAmBrX,GAA3E,SACI,sBAAK/U,UAAU,6BAAf,UACI,sBAAKA,UAAU,2BAAf,UACI,sBAAKA,UAAU,uBAAf,UACI,qBAAKA,UAAU,yBAAf,SACI,0CAEJ,qBAAKA,UAAU,0BAA0B4B,QAAST,KAAKyrB,sBAAvD,SACI,qBAAK5sB,UAAU,uBAAf,SACI,cAAC,GAAD,WAIZ,qBAAKA,UAAU,0BAAf,SACI,sBAAKA,UAAU,+BAAf,UACI,uBAAO8a,UAAQ,EAACC,YAAY,SAASE,SAAU9Z,KAAK8rB,sBACpD,2CACA,sBAAMjtB,UAAU,mBAChB,qBAAKA,UAAU,qCAAf,SACI,cAAC,GAAD,WAIZ,qBAAKA,UAAU,wBAAf,SAEQ4uB,GAAmBA,EAAgBxsB,OAAS,GAC5C,qCACI,qBAAKpC,UAAU,8BAAf,SACI,4CAEJ,qBAAIA,UAAU,yBAAd,UACI,oBAAIA,UAAU,sCAAsCkvB,mBAAiB,WAAWE,aAAW,GAAWxtB,QAAST,KAAK0rB,sBAApH,SACI,mDAD+F,GAI/F+B,GAAmBA,EAAgBxsB,OAAS,GAAKwsB,EAAgBtpB,KAAI,SAACooB,EAAQ/J,GAC1E,OAAO,oBAAI3jB,UAAU,8BAA8BkvB,mBAAiB,WAAWE,aAAY1B,EAAO7P,QAAQ,OAAQ,KAAK8D,OAAOnZ,cAA+B5G,QAAS,EAAKirB,sBAApK,SACH,+BAAOa,KADuI/J,EAAQ,cASlL,qBAAK3jB,UAAU,wBAAf,SAEQ8uB,GAAeA,EAAY1sB,OAAS,GACpC,qCACI,qBAAKpC,UAAU,8BAAf,SACI,wCAEJ,qBAAIA,UAAU,yBAAd,UACI,oBAAIA,UAAU,sCAAsCkvB,mBAAiB,OAAOE,aAAW,UAAkBxtB,QAAST,KAAK0rB,sBAAvH,SACI,4CADkG,GAIlGiC,GAAeA,EAAY1sB,OAAS,GAAK0sB,EAAYxpB,KAAI,SAAC6pB,EAAQxL,GAC9D,OAAO,oBAAI3jB,UAAU,8BAA8BkvB,mBAAiB,OAAOE,aAAYD,EAAOtR,QAAQ,OAAQ,KAAK8D,OAAOnZ,cAA+B5G,QAAS,EAAKirB,sBAAhK,SACH,+BAAkB,YAAXsC,EAAuBvf,EAAiB2H,eAAe,GAAO4X,KADqExL,EAAQ,iBAUlL,qBAAK3jB,UAAU,2BAAf,SACI,yBAAQA,UAAU,kBAAkBwB,IAAK,SAAAie,GAAM,OAAI,EAAK4M,mBAAqB5M,GAAQ7d,QAAST,KAAK2rB,kBAAnG,sBAEI,uBAAM9sB,UAAU,wCAAhB,UAAyDuR,EAAUA,EAAQnP,OAAS,EAApF,6BAOxB,yBAASpC,UAAU,yBAAnB,SACI,qBAAKA,UAAU,mCAAf,SACI,sBAAKA,UAAU,iCAAf,UACI,oBAAIA,UAAU,+BAA+BwB,IAAK,SAAA6tB,GAAE,OAAI,EAAK/C,YAAc+C,GAA3E,SAEQL,GACAA,EAAa1pB,KAAI,SAACsS,EAAQ+L,GACtB,IAAM1M,EAAcW,EAAOX,YAAcW,EAAOX,YAAYE,UAAU,EAAG,KAAKC,MAAM,KAAKC,MAAM,GAAI,GAAG7R,KAAK,KAAO,MAAQ,MAE1H,OAAO,6BACH,eAAC,IAAD,CAAMtE,GAAE,kBAAa0W,EAAOhU,IAAM5D,UAAU,oCAA5C,UAEQ4X,EAAOlC,UACP,qBAAK1V,UAAU,0CAA0C6V,WAAUC,oBAAeC,EAAY,UAAWuZ,kBAAgB,KAAzH,SACI,qBAAK/f,IAAKqI,EAAOlC,SAAWkC,EAAOlC,SAAW6Z,EAAkBva,IAAI,OAG5E,sBAAKhV,UAAU,4CAAf,UACI,qBAAKA,UAAU,0CAA0C6V,WAAUC,oBAAeC,EAAY,UAAWuZ,kBAAgB,KAAzH,SACI,6BAAK1X,EAAOpU,UAEhB,sBAAKxD,UAAU,yCAAyC6V,WAAUC,oBAAeC,EAAY,UAAWuZ,kBAAgB,KAAxH,UACI,sBAAKtvB,UAAU,8CAAf,UACI,sBAAKA,UAAU,+CAAf,UAA+D4P,EAAiB2H,eAAe,GAA/F,OACA,+BAAOK,EAAO1F,QAAQsF,QAAQ,QAElC,sBAAKxX,UAAU,qDAAf,UAEIwS,GAAmBoF,EAAOC,aAC1B,qCACI,qBAAK7X,UAAU,+CAAf,2BACA,+BAAO,IAAIiJ,KAAK2O,EAAOC,aAAaK,mBAAmB,QAAS,CAACE,MAAO,QAAS0O,KAAM,kBAI1FtU,GACD,qCACI,qBAAKxS,UAAU,+CAAf,8BACA,+BAAO4X,EAAO4X,wBAKjBhd,GAAmBoF,EAAOE,WAAaF,EAAOE,UAAU,IACzD,sBAAK9X,UAAU,qDAAf,UACI,qBAAKA,UAAU,+CAAf,2BACA,+BAAO,IAAIiJ,KAAK2O,EAAOE,UAAU,GAAGG,WAAWC,mBAAmB,QAAS,CAACE,MAAO,QAASC,IAAK,oBAI7G,sBAAKrY,UAAU,8CAA8C6V,WAAUC,oBAAeC,EAAY,UAAWuZ,kBAAgB,KAA7H,UACI,qBAAKtvB,UAAU,gDAAf,SACKiX,IAEL,qBAAKjX,UAAU,4CAAf,SACI,0DA9CJ2jB,QAyDxBpS,GAAWA,EAAQnP,OAAS,IAC5B,cAAC,GAAD,CAAOqtB,MAAOC,KAAKC,KAAKpe,EAAQnP,OAAS,IAAK8S,KAAM/T,KAAK4R,MAAM2Z,WAAa,EAAGkD,KAAK,QAAQ3U,SAAU9Z,KAAK4rB,qBAG1G5rB,KAAK4R,MAAMwZ,gBAAkBprB,KAAK4R,MAAMyZ,eAAoC,IAAnBjb,EAAQnP,QAClE,cAAC,GAAD,CAAOuO,KAAK,kBAvEqBse,GA4EjD,cAAC,GAAD,IACA,cAAC,GAAD,kB,GAzdV/uB,IAAMC,W,cCrB5B,SAAS,KAA2Q,OAA9P,GAAW6B,OAAOC,QAAU,SAAU1B,GAAU,IAAK,IAAI2B,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CAAE,IAAIG,EAASF,UAAUD,GAAI,IAAK,IAAII,KAAOD,EAAcL,OAAOO,UAAUC,eAAeC,KAAKJ,EAAQC,KAAQ/B,EAAO+B,GAAOD,EAAOC,IAAY,OAAO/B,IAA2BmC,MAAMvB,KAAMgB,WAEhT,SAAS,GAAyBE,EAAQO,GAAY,GAAc,MAAVP,EAAgB,MAAO,GAAI,IAAkEC,EAAKJ,EAAnE3B,EAEzF,SAAuC8B,EAAQO,GAAY,GAAc,MAAVP,EAAgB,MAAO,GAAI,IAA2DC,EAAKJ,EAA5D3B,EAAS,GAAQsC,EAAab,OAAOc,KAAKT,GAAqB,IAAKH,EAAI,EAAGA,EAAIW,EAAWT,OAAQF,IAAOI,EAAMO,EAAWX,GAAQU,EAASG,QAAQT,IAAQ,IAAa/B,EAAO+B,GAAOD,EAAOC,IAAQ,OAAO/B,EAFxM,CAA8B8B,EAAQO,GAAuB,GAAIZ,OAAOiB,sBAAuB,CAAE,IAAIC,EAAmBlB,OAAOiB,sBAAsBZ,GAAS,IAAKH,EAAI,EAAGA,EAAIgB,EAAiBd,OAAQF,IAAOI,EAAMY,EAAiBhB,GAAQU,EAASG,QAAQT,IAAQ,GAAkBN,OAAOO,UAAUY,qBAAqBV,KAAKJ,EAAQC,KAAgB/B,EAAO+B,GAAOD,EAAOC,IAAU,OAAO/B,EAMne,IAAI,GAAqB,gBAAoB,OAAQ,CACnD6C,EAAG,eACH+gB,OAAQ,UACRC,YAAa,EACbC,cAAe,UAGjB,SAASwL,GAAYvsB,EAAMC,GACzB,IAAIC,EAAQF,EAAKE,MACbC,EAAUH,EAAKG,QACfrC,EAAQ,GAAyBkC,EAAM,CAAC,QAAS,YAErD,OAAoB,gBAAoB,MAAO,GAAS,CACtDI,QAAS,WACT4U,KAAM,OACN3U,MAAO,6BACPnC,IAAK+B,EACL,kBAAmBE,GAClBrC,GAAQoC,EAAqB,gBAAoB,QAAS,CAC3DI,GAAIH,GACHD,GAAS,KAAM,IAGpB,IAAI,GAA0B,aAAiBqsB,IC/B/C,SAAS,KAA2Q,OAA9P,GAAW7tB,OAAOC,QAAU,SAAU1B,GAAU,IAAK,IAAI2B,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CAAE,IAAIG,EAASF,UAAUD,GAAI,IAAK,IAAII,KAAOD,EAAcL,OAAOO,UAAUC,eAAeC,KAAKJ,EAAQC,KAAQ/B,EAAO+B,GAAOD,EAAOC,IAAY,OAAO/B,IAA2BmC,MAAMvB,KAAMgB,WAEhT,SAAS,GAAyBE,EAAQO,GAAY,GAAc,MAAVP,EAAgB,MAAO,GAAI,IAAkEC,EAAKJ,EAAnE3B,EAEzF,SAAuC8B,EAAQO,GAAY,GAAc,MAAVP,EAAgB,MAAO,GAAI,IAA2DC,EAAKJ,EAA5D3B,EAAS,GAAQsC,EAAab,OAAOc,KAAKT,GAAqB,IAAKH,EAAI,EAAGA,EAAIW,EAAWT,OAAQF,IAAOI,EAAMO,EAAWX,GAAQU,EAASG,QAAQT,IAAQ,IAAa/B,EAAO+B,GAAOD,EAAOC,IAAQ,OAAO/B,EAFxM,CAA8B8B,EAAQO,GAAuB,GAAIZ,OAAOiB,sBAAuB,CAAE,IAAIC,EAAmBlB,OAAOiB,sBAAsBZ,GAAS,IAAKH,EAAI,EAAGA,EAAIgB,EAAiBd,OAAQF,IAAOI,EAAMY,EAAiBhB,GAAQU,EAASG,QAAQT,IAAQ,GAAkBN,OAAOO,UAAUY,qBAAqBV,KAAKJ,EAAQC,KAAgB/B,EAAO+B,GAAOD,EAAOC,IAAU,OAAO/B,EAMne,IAAI,GAAqB,gBAAoB,OAAQ,CACnD6C,EAAG,sBACH+gB,OAAQ,UACRC,YAAa,EACbC,cAAe,UAGjB,SAASyL,GAAexsB,EAAMC,GAC5B,IAAIC,EAAQF,EAAKE,MACbC,EAAUH,EAAKG,QACfrC,EAAQ,GAAyBkC,EAAM,CAAC,QAAS,YAErD,OAAoB,gBAAoB,MAAO,GAAS,CACtDI,QAAS,WACT4U,KAAM,OACN3U,MAAO,6BACPnC,IAAK+B,EACL,kBAAmBE,GAClBrC,GAAQoC,EAAqB,gBAAoB,QAAS,CAC3DI,GAAIH,GACHD,GAAS,KAAM,IAGpB,IAAI,GAA0B,aAAiBssB,IC/B/C,SAAS,KAA2Q,OAA9P,GAAW9tB,OAAOC,QAAU,SAAU1B,GAAU,IAAK,IAAI2B,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CAAE,IAAIG,EAASF,UAAUD,GAAI,IAAK,IAAII,KAAOD,EAAcL,OAAOO,UAAUC,eAAeC,KAAKJ,EAAQC,KAAQ/B,EAAO+B,GAAOD,EAAOC,IAAY,OAAO/B,IAA2BmC,MAAMvB,KAAMgB,WAEhT,SAAS,GAAyBE,EAAQO,GAAY,GAAc,MAAVP,EAAgB,MAAO,GAAI,IAAkEC,EAAKJ,EAAnE3B,EAEzF,SAAuC8B,EAAQO,GAAY,GAAc,MAAVP,EAAgB,MAAO,GAAI,IAA2DC,EAAKJ,EAA5D3B,EAAS,GAAQsC,EAAab,OAAOc,KAAKT,GAAqB,IAAKH,EAAI,EAAGA,EAAIW,EAAWT,OAAQF,IAAOI,EAAMO,EAAWX,GAAQU,EAASG,QAAQT,IAAQ,IAAa/B,EAAO+B,GAAOD,EAAOC,IAAQ,OAAO/B,EAFxM,CAA8B8B,EAAQO,GAAuB,GAAIZ,OAAOiB,sBAAuB,CAAE,IAAIC,EAAmBlB,OAAOiB,sBAAsBZ,GAAS,IAAKH,EAAI,EAAGA,EAAIgB,EAAiBd,OAAQF,IAAOI,EAAMY,EAAiBhB,GAAQU,EAASG,QAAQT,IAAQ,GAAkBN,OAAOO,UAAUY,qBAAqBV,KAAKJ,EAAQC,KAAgB/B,EAAO+B,GAAOD,EAAOC,IAAU,OAAO/B,EAMne,IAAI,GAAqB,gBAAoB,OAAQ,CACnD6C,EAAG,2fACHkV,KAAM,YAGR,SAASyX,GAASzsB,EAAMC,GACtB,IAAIC,EAAQF,EAAKE,MACbC,EAAUH,EAAKG,QACfrC,EAAQ,GAAyBkC,EAAM,CAAC,QAAS,YAErD,OAAoB,gBAAoB,MAAO,GAAS,CACtDI,QAAS,YACT4U,KAAM,OACN3U,MAAO,6BACPnC,IAAK+B,EACL,kBAAmBE,GAClBrC,GAAQoC,EAAqB,gBAAoB,QAAS,CAC3DI,GAAIH,GACHD,GAAS,KAAM,IAGpB,IAAI,GAA0B,aAAiBusB,IC2BhCC,GADS,I,+FArDb9S,GACH,OAAO,IAAIjU,KAAKiU,GAAM/T,Y,+BAGjB+T,GACL,OAAO,IAAIjU,KAAKiU,GAAM+S,a,8BAGlB/S,GACJ,OAAO,IAAIjU,KAAKiU,GAAMkF,gB,wCAGRhK,EAAO0O,GACrB,OAAO,IAAI7d,KAAK6d,EAAM1O,EAAO,GAAG8X,W,uCAGnB9X,EAAO0O,GACpB,OAAO,IAAI7d,KAAK6d,EAAM1O,EAAOjX,KAAKgvB,eAAe/X,EAAO0O,IAAOoJ,W,qCAGpD9X,EAAO0O,GAClB,OAAO,IAAI7d,KAAK6d,EAAM1O,EAAQ,EAAG,GAAGjP,Y,6CAGjBiP,EAAO0O,GAC1B,OAAO,IAAI7d,KAAK6d,EAAM1O,EAAO,GAAGjP,Y,yCAGjBiP,EAAO0O,GACtB,OAAO,IAAI7d,KAAK6d,EAAM1O,EAAQ,EAAG,GAAGjP,Y,oCAIpC,IAAMinB,EAAQ,IAAInnB,KACZonB,EAAQD,EAAMlY,wBAAmBnC,GACjCua,EAAOF,EAAMlY,wBAAmBnC,EAAW,CAAEwa,aAAc,UAG3DC,EAAaF,EAAKvtB,QAAQstB,GAChC,OAAIG,GAAc,GACEF,EAAKnZ,UAAU,EAAGqZ,GAAcF,EAAKnZ,UAAUqZ,EAAaH,EAAMjuB,SAInEyb,QAAQ,6BAA8B,IAI9CyS,M,MCiKJG,G,kDAvMX,WAAYrvB,GAAQ,IAAD,8BACf,cAAMA,IAGD2R,MAAQ,CACT2d,gBAAiB,EAAKtvB,MAAM0W,UAAU,GACtC6Y,aAAcX,GAAgBC,SAAS,EAAK7uB,MAAM0W,UAAU,GAAGG,WAC/D2Y,YAAaZ,GAAgBa,QAAQ,EAAKzvB,MAAM0W,UAAU,GAAGG,WAC7D+E,KAAM,IAIV,EAAK8T,mBAAqB,EAAKA,mBAAmBzjB,KAAxB,gBAC1B,EAAK0jB,eAAiB,EAAKA,eAAe1jB,KAApB,gBACtB,EAAK2jB,SAAW,EAAKA,SAAS3jB,KAAd,gBAChB,EAAK4jB,SAAW,EAAKA,SAAS5jB,KAAd,gBAfD,E,gEAoBflM,KAAK+vB,mB,uCAKL,IAAMlU,EAAO7b,KAAKgwB,QAAQnB,GAAgBC,SAAS9uB,KAAK4R,MAAM2d,gBAAgBzY,WAAY+X,GAAgBa,QAAQ1vB,KAAK4R,MAAM2d,gBAAgBzY,WAAY9W,KAAK4R,MAAM2d,iBACpKvvB,KAAKqS,SAAS,CAAEwJ,KAAMA,GAAQ7b,KAAKC,MAAMgwB,eAAejwB,KAAK4R,MAAM2d,oB,8BAG/DtY,EAAO0O,EAAM4J,GASjB,IATmC,IAAD,OAC5BW,EAAiBrB,GAAgBsB,kBAAkBlZ,EAAO0O,GAC1DyK,EAAgBvB,GAAgBwB,iBAAiBpZ,EAAO0O,GACxD2K,EAAczB,GAAgBG,eAAe/X,EAAO0O,GACpD4K,EAAsB1B,GAAgB2B,uBAAuBvZ,EAAO0O,GAEtE9J,EAAO,GAGF9a,EAAIwvB,EAAsBL,EAAiB,EAAGnvB,GAAKwvB,EAAqBxvB,IAC7E8a,EAAK/Y,KAAK,CAAE,IAAO/B,EAAG,UAAY,EAAM,YAAc,EAAO,UAAY,IAI7E,IAdkC,eAczBA,GAEL,IAAI0vB,GAAa,EACbC,GAAW,EAEf,EAAKzwB,MAAM0W,UAAU4V,QAAO,SAAAhd,GAAC,OAAIsf,GAAgBC,SAASvf,EAAEuH,aAAeG,GAAS4X,GAAgBa,QAAQngB,EAAEuH,aAAe6O,KAAMnY,SAAQ,SAACmjB,EAAUnO,GACtIqM,GAAgBE,OAAO4B,EAAS7Z,aAChC/V,IACR0vB,GAAa,EAETE,EAAS7Z,YAAcyY,EAAgBzY,YACvC4Z,GAAW,OAKvB7U,EAAK/Y,KAAK,CAAE,IAAO/B,EAAG,UAAY,EAAO,WAAc0vB,EAAY,SAAYC,KAhB1E3vB,EAAI,EAAGA,GAAKuvB,EAAavvB,IAAM,EAA/BA,GAoBT,IAAK,IAAIA,EAAI,EAAGA,GAAK,EAAEqvB,EAAervB,IAClC8a,EAAK/Y,KAAK,CAAE,IAAO/B,EAAG,UAAY,EAAM,YAAc,EAAO,UAAY,IAG7E,OAAO8a,I,yCAIQ3c,GACfA,EAAEmiB,iBAEF,IAAIuP,EAAgB5wB,KAAK4R,MAAM4d,aAAe,EAC1C7J,EAAO3lB,KAAK4R,MAAM6d,aACC,IAAnBmB,IACAA,EAAgB,GAChBjL,GAAc,GAGlB,IAAM9J,EAAO7b,KAAKgwB,QAAQY,EAAejL,EAAM3lB,KAAK4R,MAAM2d,iBAC1DvvB,KAAKqS,SAAS,CAAEmd,aAAcoB,EAAenB,YAAa9J,EAAM9J,KAAMA,M,qCAG3D3c,GACXA,EAAEmiB,iBAEF,IAAIwP,EAAY7wB,KAAK4R,MAAM4d,aAAe,EACtC7J,EAAO3lB,KAAK4R,MAAM6d,YACJ,KAAdoB,IACAA,EAAY,EACZlL,GAAc,GAGlB,IAAM9J,EAAO7b,KAAKgwB,QAAQa,EAAWlL,EAAM3lB,KAAK4R,MAAM2d,iBACtDvvB,KAAKqS,SAAS,CAAEmd,aAAcqB,EAAWpB,YAAa9J,EAAM9J,KAAMA,M,+BAG7D3E,GAAM,IAAD,OACVlX,KAAKC,MAAM0W,UAAUnJ,SAAQ,SAACmjB,EAAUnO,GACpC,GAAIqM,GAAgBE,OAAO4B,EAAS7Z,aAAeI,EAAIA,KAAO2X,GAAgBC,SAAS6B,EAAS7Z,aAAe,EAAKlF,MAAM4d,cAAgBX,GAAgBa,QAAQiB,EAAS7Z,aAAe,EAAKlF,MAAM6d,YAAa,CAC9M,IAAM5T,EAAO,EAAKmU,QAAQ,EAAKpe,MAAM4d,aAAc,EAAK5d,MAAM6d,YAAakB,GAC3E,EAAKte,SAAS,CAAEwJ,KAAMA,EAAM0T,gBAAiBoB,GAAY,EAAK1wB,MAAMgwB,eAAeU,U,+BAKtFzxB,GACLA,EAAEgoB,kBACFlnB,KAAKC,MAAM6wB,YAAY9wB,KAAKC,MAAM8wB,Q,+BAI5B,IAAD,OAECC,EAAsB,IAAIlpB,KAAK9H,KAAK4R,MAAM6d,YAAazvB,KAAK4R,MAAM4d,cAAczY,mBAAmB,QAAS,CAACE,MAAO,OAAQ0O,KAAM,YAClI9J,EAAO7b,KAAK4R,MAAMiK,KAElBoV,EAAe,IAAInpB,KAAK9H,KAAK4R,MAAM2d,gBAAgBzY,WAAWC,mBAAmB,QAAS,CAACC,QAAS,OAAQC,MAAO,OAAQC,IAAK,YAChIga,EAAY,UAAM,IAAIppB,KAAK9H,KAAK4R,MAAM2d,gBAAgBzY,WAAWqa,mBAAmB,QAAS,CAACC,KAAM,UAAWC,OAAQ,YAA3G,cAA4H,IAAIvpB,KAAK9H,KAAK4R,MAAM2d,gBAAgB+B,SAASH,mBAAmB,QAAS,CAACC,KAAM,UAAWC,OAAQ,aAC3OE,EAAgB,UAAMhD,KAAKiD,IAAI,IAAI1pB,KAAK9H,KAAK4R,MAAM2d,gBAAgB+B,SAAW,IAAIxpB,KAAK9H,KAAK4R,MAAM2d,gBAAgBzY,YAAc,KAAhH,UAEtB,OACI,qBAAKjY,UAAU,cAAf,SACI,sBAAKA,UAAU,wBAAf,UACI,sBAAKA,UAAU,sBAAf,UACI,sBAAKA,UAAU,qBAAf,UACI,qBAAKA,UAAU,mCAAf,SACI,6BAAKmyB,MAET,sBAAKnyB,UAAU,8BAAf,UACI,qBAAKA,UAAU,+CAA+C4B,QAAST,KAAK2vB,mBAA5E,SACI,qBAAK9wB,UAAU,eAAf,SACI,cAAC,GAAD,CAAgBmkB,OAAQvU,EAAiBC,mBAGjD,qBAAK7P,UAAU,qCAAqC4B,QAAST,KAAK4vB,eAAlE,SACI,qBAAK/wB,UAAU,eAAf,SACI,cAAC,GAAD,CAAYmkB,OAAQvU,EAAiBC,yBAKrD,sBAAK7P,UAAU,mBAAf,UACI,qBAAKA,UAAU,uBAAuB6I,MAAO,CAAC,cAAiB,OAA/D,SA9BD,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,OAgCrBvD,KAAI,SAAC+S,EAAKsL,GACjB,OAAO,qBAAiB3jB,UAAU,wBAA3B,SACH,qBAAKA,UAAU,0BAAf,SAA0CqY,KAD7BsL,QAOrB,YAAInH,MAAM,IAAIlX,KAAI,SAAC8Y,EAAKwU,GACpB,OAAO,qBAAoB5yB,UAAU,uBAA9B,SAEHgd,EAAK3F,MAAiB,EAAXub,EAA2B,GAAZA,EAAS,IAAMttB,KAAI,SAAC+S,EAAKwa,GAC/C,IAAMC,EAAWza,EAAIuZ,YAAcvZ,EAAIwZ,SACvC,OAAO,qBAAoB7xB,UAAS,gCAA2BqY,EAAIsQ,SAAW,YAAc,GAAxD,YAA8DtQ,EAAIuZ,WAAa,cAAgB,GAA/F,YAAqGvZ,EAAIwZ,SAAW,YAAc,IAAMjwB,QAASkxB,EAAW,kBAAM,EAAK9B,SAAS3Y,SAAOtC,EAApN,SACH,qBAAK/V,UAAU,uBAAf,SAAuCqY,EAAIA,OAD9Bwa,OAJRD,YAejC,sBAAK5yB,UAAU,mBAAf,UACI,sBAAKA,UAAU,wBAAf,UACI,qBAAKA,UAAU,yBAAf,kBACA,qBAAKA,UAAU,wBAAf,SAAwCoyB,OAE5C,sBAAKpyB,UAAU,wBAAf,UACI,qBAAKA,UAAU,yBAAf,kBACA,sBAAKA,UAAU,wBAAf,UAAwCqyB,EAAxC,KAAwDrC,GAAgB+C,cAAxE,UAEJ,sBAAK/yB,UAAU,wBAAf,UACI,qBAAKA,UAAU,yBAAf,sBACA,sBAAKA,UAAU,kCAAf,UACI,qBAAKA,UAAU,eAAf,SACI,cAAC,GAAD,CAAOsY,KAAM1I,EAAiBC,iBAEjC6iB,QAGT,qBAAK1yB,UAAU,6BAAf,SACI,cAAC,EAAD,CAAc4B,QAAST,KAAK8vB,SAAUjxB,UAAU,kCAAhD,mC,GAhMLE,IAAMC,WCsNd6yB,GADQ,I,WAxNnB,aAAe,oBAEX7xB,KAAK+hB,WAAa,WAClB/hB,KAAK8xB,YAAc,KAGnB9xB,KAAKma,OAAS,KACdna,KAAK+wB,KAAO,KACZ/wB,KAAK2wB,SAAW,KAChB3wB,KAAK+xB,MAAQ,KACb/xB,KAAKgyB,WAAa,KAClBhyB,KAAKiyB,cAAgB,KAGrBjyB,KAAKkyB,iBAAkB,E,oDAIvBlyB,KAAK+hB,WAAa,WAClB/hB,KAAK8xB,YAAc,KAEnB9xB,KAAKma,OAAS,KACdna,KAAK+wB,KAAO,KACZ/wB,KAAK2wB,SAAW,KAChB3wB,KAAK+xB,MAAQ,KACb/xB,KAAKgyB,WAAa,KAClBhyB,KAAKiyB,cAAgB,O,yCAGL,IAAD,OAIf,OAAO/rB,EAAYV,KAHP,0BACC,IAGZjB,MAAK,SAAAV,GAKF,OAJIA,EAAK4G,YACL,EAAKwnB,cAAgBpuB,EAAKO,OAGvBP,O,wCAIGsuB,GACd,GAAInyB,KAAKma,QAAUna,KAAK+wB,MAAQ/wB,KAAKgyB,WAAY,CAC7C,IACMxtB,EAAO,CACT,eAAkB2tB,EAAWlU,eAC7B,eAAiB,EACjB,cAAiB,CACb,YAAeje,KAAKma,OAAOgD,YAC3B,MAASnd,KAAKma,OAAOoB,MACrB,SAAYvb,KAAKma,OAAOqH,SACxB,UAAaxhB,KAAKma,OAAOxB,UACzB,SAAY3Y,KAAKma,OAAOtB,SACxB,WAAcwD,GACd,WAAa,EACb,OAAU7S,OAAOC,SAAS6T,OAC1B,eAAkBtd,KAAKma,OAAOoD,eAC9B,UAAajB,GAAcoB,YAE/B,aAAgB,CACZ,CACI,OAAU1d,KAAK+wB,KAAKtuB,GACpB,SAAYzC,KAAK+wB,KAAKqB,SACtB,WAAcpyB,KAAK2wB,SAAW3wB,KAAK2wB,SAAS0B,WAAa,KACzD,KAAQ,CACJ,KAAQryB,KAAK+xB,MAAQ/xB,KAAK+xB,MAAMO,UAAY,KAC5C,UAAatyB,KAAK+xB,MAAQ/xB,KAAK+xB,MAAMQ,YAAc,QAI/D,gBAAmB,CACf,CACI,YAAe,EACf,aAAgBvyB,KAAKgyB,WAAWQ,aAChC,gBAAmBxyB,KAAKgyB,WAAWS,gBACnC,eAAkBzyB,KAAKgyB,WAAWU,eAClC,aAAgB1yB,KAAKgyB,WAAWW,aAChC,cAAiB3yB,KAAKiyB,iBAKlC,OAAO/rB,EAAYV,KAvCP,oBAuCiBhB,GAC5BD,MAAK,SAAAV,GAIF,OAHIA,EAAK4G,WACLwP,GAAe4C,oBAAoBhZ,GAEhCA,KAIXZ,QAAQL,IAAI,6C,oCAINuvB,GACV,GAAInyB,KAAKma,QAAUna,KAAK+wB,KAAM,CAC1B,IACMvsB,EAAO,CACT,eAAkB2tB,EAAWlU,eAC7B,eAAiB,EACjB,cAAiB,CACb,YAAeje,KAAKma,OAAOgD,YAC3B,MAASnd,KAAKma,OAAOoB,MACrB,SAAYvb,KAAKma,OAAOqH,SACxB,UAAaxhB,KAAKma,OAAOxB,UACzB,SAAY3Y,KAAKma,OAAOtB,SACxB,WAAcwD,GACd,WAAa,EACb,OAAU7S,OAAOC,SAAS6T,OAC1B,eAAkBtd,KAAKma,OAAOoD,eAC9B,UAAajB,GAAcoB,YAE/B,aAAgB,CACZ,CACI,OAAU1d,KAAK+wB,KAAKtuB,GACpB,SAAYzC,KAAK+wB,KAAKqB,SACtB,WAAcpyB,KAAK2wB,SAAW3wB,KAAK2wB,SAAS0B,WAAa,KACzD,KAAQ,CACJ,KAAQryB,KAAK+xB,MAAQ/xB,KAAK+xB,MAAMviB,KAAO,KACvC,UAAaxP,KAAK+xB,MAAQ/xB,KAAK+xB,MAAMQ,YAAc,QAI/D,gBAAmB,CACf,CACI,YAAe,EACf,SAAY,IACZ,KAAQ,UACR,gBAAkB,GAAlB,OAAsB/oB,OAAOC,SAAS6T,OAAtC,oBACA,aAAgB,KAChB,gBAAmB,KACnB,eAAkB,KAClB,aAAgB,KAChB,cAAiBtd,KAAKiyB,cACtB,QAAWE,EAAWS,WAKlC,OAAO1sB,EAAYV,KA3CP,oBA2CiBhB,GAG7BvB,QAAQL,IAAI,2C,qCAILuvB,GACX,GAAInyB,KAAKma,QAAUna,KAAK+wB,KAAM,CAC1B,IACMvsB,EAAO,CACT,eAAkB2tB,EAAWlU,eAC7B,eAAiB,EACjB,cAAiB,CACb,YAAeje,KAAKma,OAAOgD,YAC3B,MAASnd,KAAKma,OAAOoB,MACrB,SAAYvb,KAAKma,OAAOqH,SACxB,UAAaxhB,KAAKma,OAAOxB,UACzB,SAAY3Y,KAAKma,OAAOtB,SACxB,WAAcwD,GACd,WAAa,EACb,OAAU7S,OAAOC,SAAS6T,OAC1B,eAAkBtd,KAAKma,OAAOoD,eAC9B,UAAajB,GAAcoB,YAE/B,aAAgB,CACZ,CACI,OAAU1d,KAAK+wB,KAAKtuB,GACpB,SAAYzC,KAAK+wB,KAAKqB,SACtB,WAAcpyB,KAAK2wB,SAAW3wB,KAAK2wB,SAAS0B,WAAa,KACzD,KAAQ,CACJ,KAAQryB,KAAK+xB,MAAQ/xB,KAAK+xB,MAAMviB,KAAO,KACvC,UAAaxP,KAAK+xB,MAAQ/xB,KAAK+xB,MAAMQ,YAAc,QAI/D,gBAAmB,CACf,CACI,YAAe,EACf,cAAiBvyB,KAAKiyB,iBAKlC,OAAO/rB,EAAYV,KAnCP,oBAmCiBhB,GAC5BD,MAAK,SAAAV,GAIF,OAHIA,EAAK4G,WACLwP,GAAe4C,oBAAoBhZ,GAEhCA,KAIXZ,QAAQL,IAAI,2C,qCAILib,GACX,IACMrZ,EAAO,CACTqZ,MAAOA,GAGX,OAAO3X,EAAYV,KALP,sBAKiBhB,K,0CAGbquB,EAASC,GAIzB,OAAO5sB,EAAYV,KAHP,0DACC,U,MCoTNutB,G,kDA1fX,WAAY9yB,GAAQ,IAAD,8BACf,cAAMA,IAGD+yB,kBAAoB,KACzB,EAAKC,wBAA0B,KAC/B,EAAKC,WAAa,GAClB,EAAKC,kBAAoB,GACzB,EAAKC,iBAAmB,KACxB,EAAKC,uBAAyB,KAG9B,EAAKzhB,MAAQ,CACT+e,SAAU,MAId,EAAK2C,yBAA2B,EAAKA,yBAAyBpnB,KAA9B,gBAChC,EAAKqnB,iBAAmB,EAAKA,iBAAiBrnB,KAAtB,gBACxB,EAAKsnB,wBAA0B,EAAKA,wBAAwBtnB,KAA7B,gBAC/B,EAAKunB,QAAU,EAAKA,QAAQvnB,KAAb,gBACf,EAAK+jB,eAAiB,EAAKA,eAAe/jB,KAApB,gBACtB,EAAK4kB,YAAc,EAAKA,YAAY5kB,KAAjB,gBAtBJ,E,gEA2Bf1C,OAAOsJ,SAAS,EAAG,GACnB9S,KAAK0zB,yB,6CAIe,IAAD,OAEnB1a,YAAW,WACP,GAAI,EAAKga,kBAAmB,CACxB,IAAMtrB,EAAQ8K,iBAAiB,EAAKwgB,mBAEhCliB,SAASpJ,EAAMwQ,QAAU,MACzB,EAAK+a,wBAAwBvrB,MAAMyR,QAAU,QAsBrD,GAfI,EAAK+Z,WAAWjyB,OAAS,GAEzB,EAAKiyB,WAAW1lB,SAAQ,SAACmmB,EAAKnR,GAE1B,IAAM9a,EAAQ8K,iBAAiBmhB,GAE3B7iB,SAASpJ,EAAMwQ,QAAU,MACzB,EAAKib,kBAAkB3Q,GAAO9a,MAAMyR,QAAU,WAQtD,EAAKia,iBAAkB,CACvB,IAAM1rB,EAAQ8K,iBAAiB,EAAK4gB,kBAEhCtiB,SAASpJ,EAAMwQ,QAAU,MACzB,EAAKmb,uBAAuB3rB,MAAMyR,QAAU,WAMrD,K,+CAIkBja,GACrBA,EAAEmiB,iBACFrhB,KAAKgzB,kBAAkB1gB,UAAUnP,IAAI,SACrCnD,KAAKizB,wBAAwBvrB,MAAMyR,QAAU,S,uCAGhCja,GACbA,EAAEmiB,iBACF,IAAMmB,EAAQtjB,EAAEka,cAActS,aAAa,SAC3C9G,KAAKkzB,WAAW1Q,GAAOlQ,UAAUnP,IAAI,SACrCnD,KAAKmzB,kBAAkB3Q,GAAO9a,MAAMyR,QAAU,S,8CAG1Bja,GACpBA,EAAEmiB,iBACFrhB,KAAKozB,iBAAiB9gB,UAAUnP,IAAI,SACpCnD,KAAKqzB,uBAAuB3rB,MAAMyR,QAAU,S,8BAGxC4X,GACAA,EAAK6C,OACL/B,GAAegC,QACfhC,GAAed,KAAf,2BAA2BA,GAA3B,IAAiCqB,SAAU,IAEvCpyB,KAAK4R,MAAM+e,WACXkB,GAAelB,SAAW3wB,KAAK4R,MAAM+e,UAGzC3wB,KAAKC,MAAMgoB,QAAQnlB,KAAK,SAGxB9C,KAAKC,MAAMgoB,QAAQnlB,KAAK,CAAEmR,SAAU,IAAKrC,MAAO,CAAEsC,YAAY,O,qCAIvDyc,GACX3wB,KAAKqS,SAAS,CAAEse,SAAUA,M,kCAGlBI,GACR/wB,KAAKyzB,QAAQ1C,K,iCAINlb,GACP,IAAMie,EAAUrlB,EAAiBzJ,KAAK+uB,kBACtC,GAAID,EAAS,CACT,IAAIE,EAAoB,GAMxB,OALAF,EAAQtmB,SAAQ,SAACymB,EAAQzR,GACjByR,EAAOC,eAAiBD,EAAOC,cAAc3H,QAAO,SAAAU,GAAC,OAAIA,EAAExqB,KAAOoT,KAAU5U,OAAS,GACrF+yB,EAAkBlxB,KAAKmxB,MAGxBD,EAAkB/yB,OAAS,EAAI+yB,EAAoB,Q,+BAKxD,IAAD,OAECvd,EADUhI,EAAiBzJ,KAAKmL,cAAcC,QAC7Bd,MAAK,SAAA2d,GAAC,OAAIA,EAAExqB,KAAO,EAAKxC,MAAMk0B,MAAMC,OAAO3xB,MAElE,IAAKgU,EAED,OADAzW,KAAKC,MAAMgoB,QAAQnlB,KAAK,YACjB,KAGX,IAAMuxB,EAAe5lB,EAAiB0C,kBAChCuF,EAAcD,EAAS,IAAI3O,KAAK2O,EAAOC,aAAaG,eAAeZ,MAAM,KAAKC,MAAM,GAAG7R,KAAK,KAAO,KAEnGiwB,EAAc7lB,EAAiBzJ,KAAKuvB,UACpCT,EAAUrd,EAASzW,KAAKw0B,WAAW/d,EAAOhU,IAAM,KAEhDkuB,EAAW3wB,KAAK4R,MAAM+e,SAAW,IAAI7oB,KAAK9H,KAAK4R,MAAM+e,SAAS7Z,WAAWC,mBAAmB,QAAS,CAAEC,QAAS,OAAQC,MAAO,OAAQC,IAAK,YAAe,KAE3J7F,EAAkB5C,EAAiBmI,qBAEzC,OACI,qCACI,cAAC,EAAD,CAAQ1D,WAAYzE,EAAiB4B,eAAiB,UAAY,KAE9DoG,GACA,qBAAK5X,UAAU,UAAf,SACI,sBAAKA,UAAU,8BAAf,UACI,yBAASA,UAAU,yBAAnB,SACI,qBAAKA,UAAU,mCAAf,SACI,sBAAKA,UAAU,iCAAf,UAEQ4X,EAAOlC,UACP,qBAAK1V,UAAU,+BAA+B6V,WAAUC,oBAAeC,EAAY,UAAnF,SACI,qBAAKxG,IAAKqI,EAAOlC,SAAWkC,EAAOlC,SAAW6Z,EAAkBva,IAAI,OAG5E,qBAAKhV,UAAU,+BAA+B6V,WAAUC,oBAAeC,EAAY,UAAnF,SACI,6BAAK6B,EAAOpU,iBAK5B,yBAASxD,UAAU,yBAAnB,SACI,qBAAKA,UAAU,mCAAf,SACI,sBAAKA,UAAU,iCAAf,UACI,qBAAKA,UAAU,8BAA8B6V,WAAUC,oBAAeC,EAAY,UAAlF,SACI,qBAAI/V,UAAU,yBAAd,UAMQ4X,EAAOyW,aACP,qBAAIruB,UAAU,8BAAd,UACI,sBAAKA,UAAU,oCAAf,UAAoDw1B,EAApD,OACA,qBAAKx1B,UAAU,mCAAf,SAAmD4X,EAAOyW,iBAI9DzW,EAAOge,UACP,qBAAI51B,UAAU,8BAAd,UACI,qBAAKA,UAAU,oCAAf,2BACA,qBAAKA,UAAU,mCAAf,SAAmD4X,EAAOge,cAI9Dhe,EAAO4X,gBACP,qBAAIxvB,UAAU,8BAAd,UACI,qBAAKA,UAAU,oCAAf,8BACA,qBAAKA,UAAU,mCAAf,SAAmD4X,EAAO4X,oBAI9D5X,EAAOE,WAAaF,EAAOE,UAAU,IACrC,qBAAI9X,UAAU,8BAAd,UACI,qBAAKA,UAAU,oCAAf,2BACA,qBAAKA,UAAU,mCAAf,SAAmD,IAAIiJ,KAAK2O,EAAOE,UAAU,GAAGG,WAAWC,mBAAmB,QAAS,CAACC,QAAS,OAAQC,MAAO,QAASC,IAAK,iBAIlKT,EAAOie,gBACP,qBAAI71B,UAAU,8BAAd,UACI,qBAAKA,UAAU,oCAAf,8BACA,qBAAKA,UAAU,mCAAf,SAAmD4X,EAAOie,oBAI9Dje,EAAOke,oBACP,qBAAI91B,UAAU,8BAAd,UACI,qBAAKA,UAAU,oCAAf,kCACA,qBAAKA,UAAU,mCAAf,SAAmD4X,EAAOke,wBAI9Dle,EAAOme,eACP,qBAAI/1B,UAAU,8BAAd,UACI,qBAAKA,UAAU,oCAAf,4BACA,qBAAKA,UAAU,mCAAf,SAAmD4X,EAAOme,mBAI9Dne,EAAOoe,mBACP,qBAAIh2B,UAAU,8BAAd,UACI,qBAAKA,UAAU,oCAAf,iCACA,qBAAKA,UAAU,mCAAf,SAAmD4X,EAAOoe,uBAI9Dpe,EAAOqe,mBACP,qBAAIj2B,UAAU,8BAAd,UACI,qBAAKA,UAAU,oCAAf,iCACA,qBAAKA,UAAU,mCAAf,SAAmD4X,EAAOqe,uBAI9DzjB,GAAmBqF,GACnB,qBAAI7X,UAAU,8BAAd,UACI,qBAAKA,UAAU,oCAAf,2BACA,qBAAKA,UAAU,mCAAf,SAAmD6X,OAG3D,qBAAI7X,UAAU,8BAAd,UACI,sBAAKA,UAAU,oCAAf,UAAoD4P,EAAiB2H,eAAe,GAApF,OACA,qBAAKvX,UAAU,mCAAf,SAAmD4X,EAAO1F,QAAQsF,QAAQ,aAItF,sBAAKxX,UAAU,8BAAf,UACI,sBAAKA,UAAU,0BAAf,UACI,qBAAKA,UAAU,gCAAgC6V,WAAUC,oBAAeC,EAAY,UAApF,SACI,gDAEJ,sBAAKF,WAAUC,oBAAeC,EAAY,UAA1C,UACI,qBAAK/V,UAAU,sCAAsCwB,IAAK,SAAAuT,GAAG,OAAI,EAAKof,kBAAoBpf,GAAKyV,wBAAyB,CAAEC,OAAQ7S,EAAOX,eAEzI,qBAAKjX,UAAU,kCAAf,SACI,wBAAQwB,IAAK,SAAAie,GAAM,OAAI,EAAK2U,wBAA0B3U,GAAQ7d,QAAST,KAAKszB,yBAA5E,+BAKR7c,EAAOse,SAAWte,EAAOse,QAAQ5wB,KAAI,SAAC6wB,EAAQxS,GAC1C,OAAO,sBAAK3jB,UAAU,gCAAf,UACH,sBAAKA,UAAU,qCAAqC6V,WAAUC,oBAAeC,EAAY,UAAzF,UACI,sBAAK/V,UAAU,uCAAf,UAEQm2B,EAAOzgB,UACP,qBAAKnG,IAAK4mB,EAAOzgB,SAAUV,IAAI,MAG9BmhB,EAAOzgB,UACR,cAAC,GAAD,OAGR,sBAAK1V,UAAU,wCAAf,UACI,qBAAKA,UAAU,qCAAf,oBACA,sBAAKA,UAAU,qCAAf,UAAqDm2B,EAAOxlB,KAA5D,cAAiFwlB,EAAOC,sBAI5FD,EAAOrB,KACP,sBAAKjf,WAAUC,oBAAeC,EAAY,UAA1C,UACI,qBAAK/V,UAAU,wCAAwCwB,IAAK,SAAAuT,GAAG,OAAI,EAAKsf,WAAW1Q,GAAS5O,GAAKyV,wBAAyB,CAAEC,OAAQ0L,EAAOrB,OAE3I,qBAAK90B,UAAU,kCAAf,SACI,wBAAQ2jB,MAAOA,EAAOniB,IAAK,SAAAie,GAAM,OAAI,EAAK6U,kBAAkB3Q,GAASlE,GAAQ7d,QAAS,EAAK8yB,iBAA3F,8BAvB2C/Q,gBAmC/E/L,EAAOrH,UACP,yBAASvQ,UAAU,+BAAnB,SACI,qBAAKA,UAAU,yCAAf,SACI,sBAAKA,UAAU,uCAAf,UACI,qBAAKA,UAAU,oCAAoC6V,WAAUC,oBAAeC,EAAY,UAAxF,SACI,wDAEJ,sBAAK/V,UAAU,oCAAf,UACI,qBAAKA,UAAU,wCAAwCwB,IAAK,SAAAuT,GAAG,OAAI,EAAKwf,iBAAmBxf,GAA3F,SAEQ6C,EAAOrH,SAASjL,KAAI,SAACsgB,EAASyQ,GAC1B,OAAO,sBAAKr2B,UAAU,uCAAf,UACH,qBAAKA,UAAU,8CAA8C6V,WAAUC,oBAAeC,EAAY,UAAlG,SAA8G6P,EAAQpiB,QACtH,oBAAIxD,UAAU,oCAAd,SAEQ4lB,EAAQ0Q,WAAWhxB,KAAI,SAACixB,EAAWC,GAC/B,OAAO,qBAAIx2B,UAAU,yCAA8D6V,WAAUC,oBAAeC,EAAY,UAAjH,UACH,qBAAK/V,UAAU,kDACf,qBAAKA,UAAU,8CAAf,SACI,mBAAGA,UAAU,qDAAb,SAAmEu2B,QAHRC,UALjBH,QAkB9E,qBAAKr2B,UAAU,uCAAuC6V,WAAUC,oBAAeC,EAAY,UAA3F,SACI,wBAAQvU,IAAK,SAAAie,GAAM,OAAI,EAAK+U,uBAAyB/U,GAAQ7d,QAAST,KAAKwzB,wBAA3E,mCAQpB/c,EAAOE,WACP,yBAAS9X,UAAU,8BAAnB,SACI,qBAAKA,UAAU,wCAAf,SACI,sBAAKA,UAAU,sCAAf,UACI,qBAAKA,UAAU,mCAAmC6V,WAAUC,oBAAeC,EAAY,UAAvF,SACI,kDAEJ,qBAAK/V,UAAU,mCAAmC6V,WAAUC,oBAAeC,EAAY,UAAvF,SACI,cAAC,GAAD,CAAU+B,UAAWF,EAAOE,UAAWsZ,eAAgBjwB,KAAKiwB,eAAgBa,YAAa9wB,KAAK8wB,YAAaC,KAAMta,EAAOsa,gBAM5I,0BAASlyB,UAAU,4BAAnB,UAEQ4X,EAAOsa,MACP,qBAAKlyB,UAAU,mCAAf,SACI,qBAAKA,UAAU,2BAA2B6V,WAAUC,oBAAeC,EAAY,UAAWC,oBAAkB,OAAO4N,iBAAe,IAAIC,4BAA0B,aAAhK,SACI,sBAAK7jB,UAAU,sBAAf,UACI,sBAAKA,UAAU,yBAAf,UACI,qBAAIA,UAAU,uBAAd,UAAsC4X,EAAOsa,KAAK6C,MAAQ,MAAQ,OAAlE,aACA,mBAAG/0B,UAAU,6BAAb,SAA2C4X,EAAOpU,QAClD,mBAAGxD,UAAU,0BAAb,SAAwC8xB,IACxC,qBAAK9xB,UAAU,oCAAf,SACI,eAAC,EAAD,CAAc4B,QAAS,kBAAM,EAAKgzB,QAAQhd,EAAOsa,OAAOlyB,UAAU,kCAAlE,UAAqG4X,EAAOsa,KAAK6C,MAAQ,MAAQ,OAAjI,eAGR,sBAAK/0B,UAAU,yBAAf,UACI,qBAAKA,UAAU,uBAAf,SACI,oBAAGA,UAAU,8BAAb,UACI,uBAAMA,UAAU,2BAAhB,cAA6Cy2B,OAAO7e,EAAOsa,KAAK6C,OAAO3d,MAAM,KAAK,MAClF,uBAAMpX,UAAU,6BAAhB,cAA+Cy2B,OAAO7e,EAAOsa,KAAK6C,OAAO3d,MAAM,KAAK,GAAKqf,OAAO7e,EAAOsa,KAAK6C,OAAO3d,MAAM,KAAK,GAAK,aAG3I,qBAAKpX,UAAS,kCAA6B8xB,EAAW,gBAAkB,IAAxE,SACI,eAAC,EAAD,CAAclwB,QAAS,kBAAM,EAAKgzB,QAAQhd,EAAOsa,OAAOlyB,UAAU,kCAAlE,UAAqG4X,EAAOsa,KAAK6C,MAAQ,MAAQ,OAAjI,sBAQpBU,GACA,qBAAKz1B,UAAU,sCAAf,SACI,sBAAKA,UAAU,oCAAf,UACI,oBAAIA,UAAU,kCAAkC6V,WAAUC,oBAAeC,EAAY,UAAWC,oBAAkB,OAAO4N,iBAAe,IAAIC,4BAA0B,aAAtK,yBACA,oBAAI7jB,UAAU,kBAAd,SAEQy1B,EAAYnwB,KAAI,SAACoxB,EAAY/S,GACzB,OAAO,qBAAK3jB,UAAU,4BAAwC6V,WAAUC,oBAAeC,EAAY,UAAWC,oBAAkB,OAAO4N,iBAAe,IAAIC,4BAA0B,aAA7K,SACH,sBAAK7jB,UAAU,uBAAf,UACI,sBAAKA,UAAU,0BAAf,UACI,oBAAIA,UAAU,wBAAd,SAAuC02B,EAAWxE,KAAK1uB,QACvD,mBAAGxD,UAAU,8BAAb,SAA4C02B,EAAWxE,KAAKyE,kBAC5D,qBAAK32B,UAAU,qCAAf,SACI,cAAC,EAAD,CAAc4B,QAAS,kBAAM,EAAKgzB,QAAQ8B,EAAWxE,OAAOlyB,UAAU,6CAAtE,0BAGR,sBAAKA,UAAU,0BAAf,UACI,qBAAKA,UAAU,wBAAf,SACI,oBAAGA,UAAU,+BAAb,UACI,uBAAMA,UAAU,4BAAhB,cAA8Cy2B,OAAOC,EAAWxE,KAAK6C,OAAO3d,MAAM,KAAK,MACvF,uBAAMpX,UAAU,8BAAhB,cAAgDy2B,OAAOC,EAAWxE,KAAK6C,OAAO3d,MAAM,KAAK,GAAKqf,OAAOC,EAAWxE,KAAK6C,OAAO3d,MAAM,KAAK,GAAK,aAGpJ,qBAAKpX,UAAU,2BAAf,SACI,cAAC,EAAD,CAAc4B,QAAS,kBAAM,EAAKgzB,QAAQ8B,EAAWxE,OAAOlyB,UAAU,6CAAtE,8BAjBuC2jB,aA6B3EsR,GACA,qBAAKj1B,UAAU,sCAAf,SACI,sBAAKA,UAAU,oCAAf,UACI,oBAAIA,UAAU,kCAAkC6V,WAAUC,oBAAeC,EAAY,UAAWC,oBAAkB,OAAO4N,iBAAe,IAAIC,4BAA0B,aAAtK,4BACA,oBAAI7jB,UAAU,kBAAd,SAEQi1B,EAAQ3vB,KAAI,SAAC8vB,EAAQzR,GACjB,OAAO,oBAAI3jB,UAAU,2CAAuD6V,WAAUC,oBAAeC,EAAY,UAAWC,oBAAkB,OAAO4N,iBAAe,IAAIC,4BAA0B,aAA3L,SACH,sBAAK7jB,UAAU,uBAAf,UACI,sBAAKA,UAAU,0BAAf,UACI,oBAAIA,UAAU,wBAAd,SAAuCo1B,EAAOlD,KAAK1uB,QACnD,mBAAGxD,UAAU,8BAAb,SAA4Co1B,EAAOlD,KAAKyE,kBACxD,qBAAK32B,UAAU,qCAAf,SACI,cAAC,EAAD,CAAc4B,QAAS,kBAAM,EAAKgzB,QAAQQ,EAAOlD,OAAOlyB,UAAU,6CAAlE,uBAEJ,oBAAIA,UAAU,4CAAd,SAEQo1B,EAAOC,cAAc/vB,KAAI,SAAC8oB,EAAGwI,GACzB,OAAO,qBAAI52B,UAAU,iDAAd,UAECouB,EAAExqB,KAAOgU,EAAOhU,IAChB,qCACI,qBAAK5D,UAAU,eAAf,SACI,cAAC,GAAD,CAAWmkB,OAAQvU,EAAiBC,iBAExC,sBAAM7P,UAAU,gDAAhB,SAAiEouB,EAAE5qB,WAIvE4qB,EAAExqB,KAAOgU,EAAOhU,IAChB,qCACI,qBAAK5D,UAAU,eAAf,SACI,cAAC,GAAD,CAAWmkB,OAAQvU,EAAiBC,iBAExC,sBAAM7P,UAAU,uCAAhB,SAAwDouB,EAAE5qB,aAhBKozB,WAwB3F,sBAAK52B,UAAU,yCAAf,UACI,qBAAKA,UAAU,wBAAf,SACI,oBAAGA,UAAU,+BAAb,UACI,uBAAMA,UAAU,4BAAhB,cAA8Cy2B,OAAOrB,EAAOlD,KAAK6C,OAAO3d,MAAM,KAAK,MACnF,uBAAMpX,UAAU,8BAAhB,cAAgDy2B,OAAOrB,EAAOlD,KAAK6C,OAAO3d,MAAM,KAAK,GAAKqf,OAAOrB,EAAOlD,KAAK6C,OAAO3d,MAAM,KAAK,GAAK,aAG5I,qBAAKpX,UAAU,0CAAf,SACI,cAAC,EAAD,CAAc4B,QAAS,kBAAM,EAAKgzB,QAAQQ,EAAOlD,OAAOlyB,UAAU,6CAAlE,8BA3CqD2jB,gBAuDjG,yBAAS3jB,UAAU,oBAAnB,SACI,qBAAKA,UAAU,8BAAf,SACI,qBAAKA,UAAU,4BAAf,SACI,cAAC,GAAD,UAIZ,cAAC,GAAD,IACA,cAAC,GAAD,gB,GAnfAE,IAAMC,WCT5B02B,I,gEACF,WAAYz1B,GAAQ,IAAD,8BACf,cAAMA,IAGDwzB,QAAU,EAAKA,QAAQvnB,KAAb,gBAJA,E,oDAQXhN,GACJ2yB,GAAegC,QACfhC,GAAed,KAAf,2BAA2B/wB,KAAKC,MAAM+E,KAAK+rB,MAA3C,IAAiDqB,SAAU,IAC3DpyB,KAAKC,MAAMgoB,QAAQnlB,KAAK,U,+BAKxB,IAAMT,EAAQrC,KAAKC,MAAM+E,KAAK+rB,KAAK1uB,MAC7ByT,EAAc9V,KAAKC,MAAM+E,KAAK+rB,KAAKyE,gBACnC1M,EAAW9oB,KAAKC,MAAM+E,KAAK8jB,SAC3B8K,EAAQ5zB,KAAKC,MAAM+E,KAAK+rB,KAAK6C,MAE7B7d,EAAmBD,EAAY7U,OAAS,IAAM6U,EAAYE,UAAU,EAAG,KAAKC,MAAM,KAAKC,MAAM,GAAI,GAAG7R,KAAK,KAAO,MAAQyR,EAE9H,OACI,oBAAIjX,UAAU,oBAAoB6V,WAAUC,oBAAeC,EAAY,UAAWC,oBAAkB,OAAO4N,iBAAe,IAAIC,4BAA0B,aAAxJ,SACI,sBAAK7jB,UAAU,eAAf,UACI,sBAAKA,UAAU,kBAAf,UACI,oBAAIA,UAAU,gBAAd,SAA+BwD,IAC/B,mBAAGxD,UAAU,sBAAb,SAAoCkX,IAChC,sBAAKlX,UAAU,6BAAf,UACI,cAAC,EAAD,CAAc4B,QAAST,KAAKyzB,QAAS50B,UAAU,2BAA/C,qBACA,oBAAIA,UAAU,iCAAd,SAEQiqB,EAAS3kB,KAAI,SAAC4kB,EAAS4M,GACnB,OAAO,qBAAI92B,UAAU,sCAAd,UACH,qBAAKA,UAAU,+BAAf,SACI,qBAAKuP,IAAK2a,EAAQxU,SAAUV,IAAI,OAEpC,sBAAMhV,UAAU,+BAAhB,SAAgDkqB,EAAQ3kB,UAJIuxB,cAWxF,sBAAK92B,UAAU,kBAAf,UACI,qBAAKA,UAAU,gBAAf,SACI,oBAAGA,UAAU,uBAAb,UACI,uBAAMA,UAAU,oBAAhB,cAAsCy2B,OAAO1B,GAAO3d,MAAM,KAAK,MAC/D,uBAAMpX,UAAU,sBAAhB,cAAwCy2B,OAAO1B,GAAO3d,MAAM,KAAK,GAAKqf,OAAO1B,GAAO3d,MAAM,KAAK,GAAK,aAG5G,qBAAKpX,UAAU,+BAAf,SACI,cAAC,EAAD,CAAc4B,QAAST,KAAKyzB,QAAS50B,UAAU,2BAA/C,mC,GAtDHE,IAAMC,YA+DhB6jB,eAAW6S,IC9DpBE,G,kDAEF,WAAY31B,GAAQ,IAAD,8BACf,cAAMA,IAGD41B,WAAa,EAAKA,WAAW3pB,KAAhB,gBAClB,EAAKunB,QAAU,EAAKA,QAAQvnB,KAAb,gBALA,E,uDASRhN,GACHsK,OAAOkI,WAAa,KACpB1R,KAAKC,MAAMgoB,QAAQnlB,KAAnB,kBAAmC9C,KAAKC,MAAM+E,KAAKvC,O,8BAInDvD,GACAc,KAAKC,MAAM+E,KAAK+rB,KAAK6C,OACrB/B,GAAegC,QACfhC,GAAed,KAAf,2BAA2B/wB,KAAKC,MAAM+E,KAAK+rB,MAA3C,IAAiDqB,SAAU,IAC3DpyB,KAAKC,MAAMgoB,QAAQnlB,KAAK,SAGxB9C,KAAKC,MAAMgoB,QAAQnlB,KAAK,CAAEmR,SAAU,IAAKrC,MAAO,CAAEsC,YAAY,O,+BAMlE,IAAM2B,EAAW7V,KAAKC,MAAM+E,KAAKvC,GAC3BJ,EAAQrC,KAAKC,MAAM+E,KAAK3C,MAExB0T,EADc/V,KAAKC,MAAM+E,KAAK8Q,YACCE,UAAU,EAAG,KAAKC,MAAM,KAAKC,MAAM,GAAI,GAAG7R,KAAK,KAAO,MACrFyxB,EAAW91B,KAAKC,MAAM+E,KAAKkoB,YAC3Bnc,EAAU/Q,KAAKC,MAAM+E,KAAK+L,QAE1Bsd,GADWruB,KAAKC,MAAM+E,KAAK+wB,SACV/1B,KAAKC,MAAM+E,KAAKqpB,gBACjCuF,EAAQ5zB,KAAKC,MAAM+E,KAAK+rB,KAAK6C,MAE7BS,EAAe5lB,EAAiB0C,kBAEtC,OACI,oBAAItS,UAAU,uCAAuC6V,WAAUC,oBAAeC,EAAY,UAAWC,oBAAkB,OAAO4N,iBAAe,IAAIC,4BAA0B,aAA3K,SACI,sBAAK7jB,UAAU,eAAf,UACI,sBAAKA,UAAU,kBAAf,UACI,oBAAIA,UAAU,mCAAmC4B,QAAST,KAAK61B,WAA/D,SAA4ExzB,IAC5E,mBAAGxD,UAAU,yCAAyC4B,QAAST,KAAK61B,WAApE,SAAiF9f,IACjF,qBAAIlX,UAAU,wCAAd,UACI,qBAAIA,UAAU,6CAAd,UACI,sBAAMA,UAAU,gCAAhB,SAAgD,uBAAMA,UAAU,eAAhB,UAAgCw1B,EAAhC,SAChD,sBAAMx1B,UAAU,gCAAhB,SAAiDi3B,OAErD,qBAAIj3B,UAAU,6CAAd,UACI,sBAAMA,UAAU,gCAAhB,SAAgD,sBAAMA,UAAU,eAAhB,+BAChD,sBAAMA,UAAU,gCAAhB,SAAiDwvB,OAErD,qBAAIxvB,UAAU,6CAAd,UACI,sBAAMA,UAAU,gCAAhB,SAAgD,uBAAMA,UAAU,eAAhB,UAAgC4P,EAAiB2H,eAAe,GAAhE,SAChD,sBAAMvX,UAAU,gCAAhB,SAAiDkS,EAAQsF,QAAQ,cAI7E,sBAAKxX,UAAU,kBAAf,UACI,qBAAKA,UAAU,mCAAf,SACI,oBAAGA,UAAU,uBAAb,UACI,uBAAMA,UAAU,oBAAhB,cAAsCy2B,OAAO1B,GAAO3d,MAAM,KAAK,MAC/D,uBAAMpX,UAAU,sBAAhB,cAAwCy2B,OAAO1B,GAAO3d,MAAM,KAAK,GAAKqf,OAAO1B,GAAO3d,MAAM,KAAK,GAAK,aAG5G,sBAAKpX,UAAU,mBAAf,UACI,eAAC,EAAD,CAAc4B,QAAST,KAAKyzB,QAAS50B,UAAU,2BAA/C,UAA2E+0B,EAAQ,MAAQ,OAA3F,UACA,cAAC,IAAD,CAAM7zB,GAAE,kBAAa8V,GAAYhX,UAAU,wCAA3C,yC,GAxEGE,IAAMC,WAkFtB6jB,eAAW+S,IC5EXI,I,8KATP,OACI,wBAAOn3B,UAAU,WAAjB,cAA8BmB,KAAKC,MAAM2D,KACrC,uBAAOrD,KAAK,QAAQiP,KAAI,eAAUxP,KAAKC,MAAMwW,QAAUrS,MAAOpE,KAAKC,MAAMmE,MAAO6xB,eAAqC,IAArBj2B,KAAKC,MAAMuiB,QAC3G,sBAAM3jB,UAAU,2B,GANNE,IAAMC,YCS1Bk3B,G,kDACF,WAAYj2B,GAAQ,IAAD,sBAIf,IAAMk2B,GAHN,cAAMl2B,IAGgBA,MAAM+E,KAAKkvB,cAAc3H,QAAO,SAAAU,GAAC,OAAIA,EAAEtW,aAJ9C,OAKf,EAAKyf,QAAUD,EAASl1B,OAAS,EAAIk1B,EAAS,GAAK,KAGnD,EAAKvkB,MAAQ,CACT+e,SAAU,EAAKyF,QAAU,EAAKA,QAAQzf,UAAU,GAAK,MAIzD,EAAK8c,QAAU,EAAKA,QAAQvnB,KAAb,gBACf,EAAKmqB,eAAiB,EAAKA,eAAenqB,KAApB,gBAdP,E,oDAkBXhN,GACJ2yB,GAAegC,QACfhC,GAAed,KAAf,2BAA2B/wB,KAAKC,MAAM+E,KAAK+rB,MAA3C,IAAiDqB,SAAU,IAC3DP,GAAelB,SAAW3wB,KAAK4R,MAAM+e,SACrC3wB,KAAKC,MAAMgoB,QAAQnlB,KAAK,U,qCAGb5D,GACXc,KAAKqS,SAAS,CAAEse,SAAU3wB,KAAKo2B,QAAQzf,UAAUzX,EAAEE,OAAOgF,W,+BAIpD,IAAD,OACC/B,EAAQrC,KAAKC,MAAM+E,KAAK+rB,KAAK1uB,MAC7ByT,EAAc9V,KAAKC,MAAM+E,KAAK+rB,KAAKyE,gBACnCplB,EAAUpQ,KAAKC,MAAM+E,KAAKkvB,cAC1BN,EAAQ5zB,KAAKC,MAAM+E,KAAK+rB,KAAK6C,MAE7B7d,EAAmBD,EAAY7U,OAAS,IAAM6U,EAAYE,UAAU,EAAG,KAAKC,MAAM,KAAKC,MAAM,GAAI,GAAG7R,KAAK,KAAO,MAAQyR,EAE9H,OACI,oBAAIjX,UAAU,mCAAmC6V,WAAUC,oBAAeC,EAAY,UAAWC,oBAAkB,OAAO4N,iBAAe,IAAIC,4BAA0B,aAAvK,SACI,sBAAK7jB,UAAU,eAAf,UACI,sBAAKA,UAAU,kBAAf,UACI,oBAAIA,UAAU,gBAAd,SAA+BwD,IAC/B,mBAAGxD,UAAU,qCAAb,SAAmDkX,IACnD,oBAAIlX,UAAU,oCAAd,SAEQuR,EAAQjM,KAAI,SAACsS,EAAQ6f,GACjB,OAAO,qBAAIz3B,UAAU,yCAAd,UACH,qBAAKA,UAAU,eAAf,SACI,cAAC,GAAD,CAAWmkB,OAAQvU,EAAiBC,iBAExC,sBAAM7P,UAAU,+BAAhB,SAAgD4X,EAAOpU,UAJQi0B,QAU3Et2B,KAAKo2B,SACL,oBAAIv3B,UAAU,8BAA8Bib,SAAU9Z,KAAKq2B,eAA3D,SAEIr2B,KAAKo2B,QAAQzf,UAAUT,MAAM,EAAG,GAAG/R,KAAI,SAACwsB,EAAU4F,GAC9C,OAAO,qBAAI13B,UAAU,mCAAd,UACH,cAAC,GAAD,CAAauF,MAAOmyB,EAAe/T,MAAO+T,EAAe9f,OAAQ,EAAK2f,QAAQ3zB,KAC9E,uBAAM5D,UAAU,+BAAhB,UAAgD,IAAIiJ,KAAK6oB,EAAS7Z,WAAWC,mBAAmB,QAAS,CAACC,QAAS,OAAQC,MAAO,QAASC,IAAK,YAAhJ,KAA+J,IAAIpP,KAAK6oB,EAAS7Z,WAAWqa,mBAAmB,QAAS,CAACC,KAAM,UAAWC,OAAQ,YAAlP,MAAkQ,IAAIvpB,KAAK6oB,EAASW,SAASH,mBAAmB,QAAS,CAACC,KAAM,UAAWC,OAAQ,YAAnV,KAAkWxC,GAAgB+C,cAAlX,SAFyD2E,WAS7E,sBAAK13B,UAAU,kBAAf,UACI,qBAAKA,UAAU,gBAAf,SACI,oBAAGA,UAAU,uBAAb,UACI,uBAAMA,UAAU,oBAAhB,cAAsCy2B,OAAO1B,GAAO3d,MAAM,KAAK,MAC/D,uBAAMpX,UAAU,sBAAhB,cAAwCy2B,OAAO1B,GAAO3d,MAAM,KAAK,GAAKqf,OAAO1B,GAAO3d,MAAM,KAAK,GAAK,aAG5G,qBAAKpX,UAAU,mBAAf,SACI,cAAC,EAAD,CAAc4B,QAAST,KAAKyzB,QAAS50B,UAAU,2BAA/C,mC,GA/EDE,IAAMC,WAwFlB6jB,eAAWqT,IC5FpBM,G,kDACF,WAAYv2B,GAAQ,IAAD,8BACf,cAAMA,IAGDsnB,gBAAkB,EAAKA,gBAAgBrb,KAArB,gBAJR,E,4DAQHhN,GACZ2yB,GAAegC,QACfhC,GAAed,KAAO/wB,KAAKC,MAAM+E,KAAK+rB,KACtCc,GAAeE,MAAQ,CAAEQ,aAAa,EAAOkE,WAAYz2B,KAAKC,MAAM+E,KAAK0xB,eAAgBC,WAAY32B,KAAKC,MAAM+E,KAAK4xB,gBACrH52B,KAAKC,MAAMgoB,QAAQnlB,KAAK,mB,+BAKxB,IAAMT,EAAQrC,KAAKC,MAAM+E,KAAK+rB,KAAK1uB,MAC7ByT,EAAc9V,KAAKC,MAAM+E,KAAK+rB,KAAKyE,gBACnC1M,EAAW9oB,KAAKC,MAAM+E,KAAK8jB,SAC3B8K,EAAQ5zB,KAAKC,MAAM+E,KAAK+rB,KAAK6C,MAE7B7d,EAAmBD,EAAY7U,OAAS,IAAM6U,EAAYE,UAAU,EAAG,KAAKC,MAAM,KAAKC,MAAM,GAAI,GAAG7R,KAAK,KAAO,MAAQyR,EAE9H,OACI,oBAAIjX,UAAU,oBAAoB6V,WAAUC,oBAAeC,EAAY,UAAWC,oBAAkB,OAAO4N,iBAAe,IAAIC,4BAA0B,aAAxJ,SACI,sBAAK7jB,UAAU,eAAf,UACI,sBAAKA,UAAU,8BAAf,UACI,oBAAIA,UAAU,gBAAd,SAA+BwD,IAC/B,mBAAGxD,UAAU,sBAAb,SAAoCkX,IAChC,sBAAKlX,UAAU,6BAAf,UACI,cAAC,EAAD,CAAc4B,QAAST,KAAKunB,gBAAiB1oB,UAAU,2BAAvD,qBACA,oBAAIA,UAAU,iCAAd,SAEQiqB,EAAS3kB,KAAI,SAAC4kB,EAAS4M,GACnB,OAAO,qBAAI92B,UAAU,sCAAd,UACH,qBAAKA,UAAU,+BAAf,SACI,qBAAKuP,IAAK2a,EAAQxU,SAAUV,IAAI,OAEpC,sBAAMhV,UAAU,+BAAhB,SAAgDkqB,EAAQ3kB,UAJIuxB,cAWxF,sBAAK92B,UAAU,8BAAf,UACI,sBAAKA,UAAU,4BAAf,UACI,oBAAGA,UAAU,uBAAb,UACI,uBAAMA,UAAU,oBAAhB,cAAsCy2B,OAAO1B,GAAO3d,MAAM,KAAK,MAC/D,uBAAMpX,UAAU,sBAAhB,cAAwCy2B,OAAO1B,GAAO3d,MAAM,KAAK,GAAKqf,OAAO1B,GAAO3d,MAAM,KAAK,GAAK,WAExG,iDAEJ,qBAAKpX,UAAU,+BAAf,SACI,cAAC,EAAD,CAAc4B,QAAST,KAAKunB,gBAAiB1oB,UAAU,2BAAvD,mC,GAxDJE,IAAMC,WAiEf6jB,eAAW2T,IC9DpBK,G,kDACF,WAAY52B,GAAQ,IAAD,8BACf,cAAMA,IAGD2R,MAAQ,CACT+e,SAAU,EAAK1wB,MAAM+E,KAAK2R,UAAU,IAIxC,EAAK8c,QAAU,EAAKA,QAAQvnB,KAAb,gBACf,EAAKmqB,eAAiB,EAAKA,eAAenqB,KAApB,gBAVP,E,uDAcRhN,GACHsK,OAAOkI,WAAa,KACpB1R,KAAKC,MAAMgoB,QAAQnlB,KAAnB,kBAAmC9C,KAAKC,MAAM+E,KAAKvC,O,8BAInDvD,GACJ2yB,GAAegC,QACfhC,GAAed,KAAf,2BAA2B/wB,KAAKC,MAAM+E,KAAK+rB,MAA3C,IAAiDqB,SAAU,IAC3DP,GAAelB,SAAW3wB,KAAK4R,MAAM+e,SACrC3wB,KAAKC,MAAMgoB,QAAQnlB,KAAK,U,qCAGb5D,GACXc,KAAKqS,SAAS,CAAEse,SAAU3wB,KAAKC,MAAM+E,KAAK2R,UAAUzX,EAAEE,OAAOgF,W,+BAK7D,IAAMyR,EAAW7V,KAAKC,MAAM+E,KAAKvC,GAC3BJ,EAAQrC,KAAKC,MAAM+E,KAAK+rB,KAAK1uB,MAC7ByT,EAAc9V,KAAKC,MAAM+E,KAAK+rB,KAAKyE,gBACnCM,EAAW91B,KAAKC,MAAM+E,KAAKkoB,YAC3Bnc,EAAU/Q,KAAKC,MAAM+E,KAAK+L,QAE1Bsd,GADWruB,KAAKC,MAAM+E,KAAK+wB,SACV/1B,KAAKC,MAAM+E,KAAKqpB,gBACjC1X,EAAY3W,KAAKC,MAAM+E,KAAK2R,UAC5Bid,EAAQ5zB,KAAKC,MAAM+E,KAAK+rB,KAAK6C,MAE7B7d,EAAmBD,EAAY7U,OAAS,IAAM6U,EAAYE,UAAU,EAAG,KAAKC,MAAM,KAAKC,MAAM,GAAI,GAAG7R,KAAK,KAAO,MAAQyR,EAExHue,EAAe5lB,EAAiB0C,kBAEtC,OACI,oBAAItS,UAAU,mCAAmC6V,WAAUC,oBAAeC,EAAY,UAAWC,oBAAkB,OAAO4N,iBAAe,IAAIC,4BAA0B,aAAvK,SACI,sBAAK7jB,UAAU,eAAf,UACI,sBAAKA,UAAU,2BAAf,UACI,oBAAIA,UAAU,gBAAgB4B,QAAST,KAAK61B,WAA5C,SAAyDxzB,IACzD,mBAAGxD,UAAU,qCAAqC4B,QAAST,KAAK61B,WAAhE,SAA6E9f,IAC7E,qBAAIlX,UAAU,wCAAd,UACI,qBAAIA,UAAU,6CAAd,UACI,sBAAMA,UAAU,gCAAhB,SAAgD,uBAAMA,UAAU,eAAhB,UAAgCw1B,EAAhC,SAChD,sBAAMx1B,UAAU,gCAAhB,SAAiDi3B,OAErD,qBAAIj3B,UAAU,6CAAd,UACI,sBAAMA,UAAU,gCAAhB,SAAgD,sBAAMA,UAAU,eAAhB,+BAChD,sBAAMA,UAAU,gCAAhB,SAAiDwvB,OAErD,qBAAIxvB,UAAU,6CAAd,UACI,sBAAMA,UAAU,gCAAhB,SAAgD,uBAAMA,UAAU,eAAhB,UAAgC4P,EAAiB2H,eAAe,GAAhE,SAChD,sBAAMvX,UAAU,gCAAhB,SAAiDkS,EAAQsF,QAAQ,WAGzE,qBAAIxX,UAAU,8BAA8Bib,SAAU9Z,KAAKq2B,eAA3D,UACI,oBAAIx3B,UAAU,yCAAd,SACI,sBAAMA,UAAU,gCAAhB,SAAgD,sBAAMA,UAAU,eAAhB,gCAGhD8X,EAAUT,MAAM,EAAG,GAAG/R,KAAI,SAACwsB,EAAU4F,GACjC,OAAO,qBAAI13B,UAAU,mCAAd,UACH,cAAC,GAAD,CAAauF,MAAOmyB,EAAe/T,MAAO+T,EAAe9f,OAAQZ,IACjE,uBAAMhX,UAAU,+BAAhB,UAAgD,IAAIiJ,KAAK6oB,EAAS7Z,WAAWC,mBAAmB,QAAS,CAACC,QAAS,OAAQC,MAAO,QAASC,IAAK,YAAhJ,KAA+J,IAAIpP,KAAK6oB,EAAS7Z,WAAWqa,mBAAmB,QAAS,CAACC,KAAM,UAAWC,OAAQ,YAAlP,MAAkQ,IAAIvpB,KAAK6oB,EAASW,SAASH,mBAAmB,QAAS,CAACC,KAAM,UAAWC,OAAQ,YAAnV,KAAkWxC,GAAgB+C,cAAlX,SAFyD2E,YAQ7E,sBAAK13B,UAAU,2BAAf,UACI,qBAAKA,UAAU,gBAAf,SACI,oBAAGA,UAAU,uBAAb,UACI,uBAAMA,UAAU,oBAAhB,cAAsCy2B,OAAO1B,GAAO3d,MAAM,KAAK,MAC/D,uBAAMpX,UAAU,sBAAhB,cAAwCy2B,OAAO1B,GAAO3d,MAAM,KAAK,GAAKqf,OAAO1B,GAAO3d,MAAM,KAAK,GAAK,aAG5G,sBAAKpX,UAAU,mBAAf,UACI,cAAC,EAAD,CAAc4B,QAAST,KAAKyzB,QAAS50B,UAAU,2BAA/C,qBACA,cAAC,IAAD,CAAMkB,GAAE,kBAAa8V,GAAYhX,UAAU,wCAA3C,yC,GA3FNE,IAAMC,WAoGb6jB,eAAWgU,IC2dXC,G,kDA/iBX,WAAY72B,GAAQ,IAAD,8BACf,cAAMA,IAGD+qB,WAAa,KAClB,EAAK+L,WAAa,KAClB,EAAK9L,iBAAmB,KACxB,EAAK+L,iBAAmB,KACxB,EAAK9L,mBAAqB,KAC1B,EAAK+L,UAAY,KAGjB,EAAKrlB,MAAQ,CACTslB,YAAa,EAAKj3B,MAAMk0B,MAAMC,OAAO7R,KACrC8I,aAAc,KACdC,WAAY,KACZC,WAAY,GAIhB,EAAKC,qBAAuB,EAAKA,qBAAqBtf,KAA1B,gBAC5B,EAAKuf,sBAAwB,EAAKA,sBAAsBvf,KAA3B,gBAC7B,EAAKwf,sBAAwB,EAAKA,sBAAsBxf,KAA3B,gBAC7B,EAAKirB,wBAA0B,EAAKA,wBAAwBjrB,KAA7B,gBAC/B,EAAKkrB,gBAAkB,EAAKA,gBAAgBlrB,KAArB,gBACvB,EAAK2f,cAAgBrC,GAAS,EAAKqC,cAAc3f,KAAnB,gBAA+B,KAC7D,EAAK4f,oBAAsBtC,GAAS,EAAKsC,oBAAoB5f,KAAzB,gBAAqC,KA1B1D,E,gEA+Bf1C,OAAOsJ,SAAS,EAAG,GACnB9S,KAAK6mB,eACL7mB,KAAKq3B,sB,2CAILr3B,KAAK+rB,gBACL/rB,KAAKs3B,sB,qCAIO,IAAD,OACXhe,KAAE,qBAAqBwN,QAAQ,CAC3BC,yBAA0B,IAG9BzN,KAAE,qBAAqB0N,GAAG,UAAU,SAAC9nB,EAAG+nB,EAAcsQ,GAClD,IAAKtQ,EAAc,CAAC,IACR+E,EAAe9sB,EAAEka,cAAc+N,QAA/B6E,WACR,EAAKC,sBAAsBD,EAAY9sB,EAAEka,cAAchV,OAEpC,aAAf4nB,EACI,EAAKpa,MAAMslB,cAAgBh4B,EAAEka,cAAchV,QAC3C,EAAKozB,YAAYt4B,EAAEka,cAAchV,OAE5BmzB,GACD,EAAKt3B,MAAMgoB,QAAQnlB,KAAnB,mBAAoC5D,EAAEka,cAAchV,SAIxC,SAAf4nB,GACL,EAAKyL,UAAUv4B,EAAEka,cAAchV,WAK3CkV,KAAEtZ,KAAK+2B,YAAYr2B,WAAWg3B,MAAK,SAAClV,EAAOD,GACnCA,EAAKne,QAAU,EAAKwN,MAAMslB,cAC1B5d,KAAE,EAAKyd,YAAYnK,IAAIrK,EAAKne,OAC5BkV,KAAE,EAAKyd,YAAYzhB,QAAQ,SAAU,EAAC,GAAO,U,sCAMhDgE,KAAE,qBAAqB8S,QAAQC,SAAS,8BACzCrsB,KAAK6mB,iB,0CAIQ,IAAD,OAEhBrd,OAAOmuB,WAAa,SAACz4B,GACb,EAAKe,MAAMk0B,MAAMC,OAAO7R,OAAS,EAAK3Q,MAAMslB,cAC5C5d,KAAE,EAAKyd,YAAYnK,IAAI,EAAK3sB,MAAMk0B,MAAMC,OAAO7R,MAC/CjJ,KAAE,EAAKyd,YAAYzhB,QAAQ,SAAU,EAAC,GAAO,Q,4CAKnC0W,EAAYM,GAC9B,IAAMC,EAASjT,KAAEtZ,KAAKirB,kBAAkB3b,KAAzB,yDAAgF0c,EAAhF,0BAA4GM,EAA5G,OACfC,EAAOC,SAAS,WAChBD,EAAOE,SAAS,YAAYC,YAAY,WAExC,IAAMC,EAASrT,KAAEtZ,KAAKgrB,YAAY1b,KAAnB,mCAAoD0c,EAApD,OACfW,EAAOC,IAAIL,EAAOvnB,OAAOZ,OACzBuoB,EAAOrX,QAAQ,UAAU,K,0CAGR,IAAD,OAChBgE,KAAEtZ,KAAKg3B,kBAAkBt2B,WAAWg3B,MAAK,SAAClV,EAAOD,GACzCA,EAAK4E,QAAQ/iB,QAAU,EAAKwzB,MAC5BrV,EAAKjQ,UAAUnP,IAAI,gB,kCAKnB0pB,GACR7sB,KAAK8sB,sBACL9sB,KAAKqS,SAAS,CACV6kB,YAA8B,KAAjBrK,EAAsBA,EAAe,MACnD7sB,KAAK+sB,0B,gCAGFC,GACNhtB,KAAK8sB,sBACL9sB,KAAKqS,SAAS,CACViZ,WAAY0B,GACbhtB,KAAK+sB,0B,4CAIR/sB,KAAKkrB,mBAAmB3M,aAAa,YAAY,GACjDve,KAAKkrB,mBAAmB5Y,UAAUnP,IAAI,c,6CAIlCnD,KAAKkrB,qBACLlrB,KAAKkrB,mBAAmB1M,gBAAgB,YACxCxe,KAAKkrB,mBAAmB5Y,UAAUC,OAAO,e,6CAM7C3L,SAASpC,KAAK8N,UAAUnP,IAAI,mBAC5BnD,KAAKirB,iBAAiB3Y,UAAUnP,IAAI,SACpCnD,KAAK+sB,yB,8CAILnmB,SAASpC,KAAK8N,UAAUC,OAAO,mBAC/BvS,KAAKirB,iBAAiB3Y,UAAUC,OAAO,W,4CAGrBrT,GAAI,IAAD,OACrBc,KAAK8sB,sBADgB,MAGS5tB,EAAEka,cAAc+N,QAAtC6E,EAHa,EAGbA,WAAY5nB,EAHC,EAGDA,MACpBpE,KAAKisB,sBAAsBD,EAAY5nB,GAEvC4U,YAAW,SAACgT,EAAY5nB,GACD,aAAf4nB,GACA,EAAKwL,YAAYpzB,GACjB,EAAKnE,MAAMgoB,QAAQnlB,KAAnB,mBAAoCsB,KAEhB,SAAf4nB,GACL,EAAKyL,UAAUrzB,KAEpB,IAAK4nB,EAAY5nB,K,gDAIpBpE,KAAKyrB,0B,sCAGOvsB,EAAG6U,GACfvK,OAAOsJ,SAAS,EAAG,GACnB9S,KAAKqS,SAAU,CAAEkZ,WAAYxX,EAAK,M,oCAGxB7U,GACVoa,KAAEtZ,KAAKirB,kBAAkB3b,KAAK,aAAaA,KAAK,SAASsd,IAAI1tB,EAAEE,OAAOgF,OACtEpE,KAAKqS,SAAS,CACVgZ,aAAiC,KAAnBnsB,EAAEE,OAAOgF,MAAelF,EAAEE,OAAOgF,MAAMiD,cAAgB,S,0CAIzDnI,GAAI,IAAD,OACnBc,KAAK8sB,sBACLxT,KAAEtZ,KAAKgrB,YAAY1b,KAAK,aAAaA,KAAK,SAASsd,IAAI1tB,EAAEE,OAAOgF,OAEhE4U,YAAW,WACP,EAAK3G,SAAS,CACVgZ,aAAiC,KAAnBnsB,EAAEE,OAAOgF,MAAelF,EAAEE,OAAOgF,MAAMiD,cAAgB,MACtE,EAAK0lB,0BACT,O,kCAGKM,EAAG3c,GAEX,IAAI4c,EAA0B,qBAAZD,EAAEE,MAAwBF,EAAEE,MAAQ,KAClDC,EAA0B,qBAAZ9c,EAAE6c,MAAwB7c,EAAE6c,MAAQ,KACtD,OAAID,IAASE,EAELH,EAAEhrB,QAAUqO,EAAErO,MACP,EAEJgrB,EAAEhrB,MAAQqO,EAAErO,OAAS,EAAI,EAE7BirB,EAAOE,GAAQ,EAAI,I,oCAGhBH,EAAG3c,GAEb,IAAI4c,EAA0B,qBAAZD,EAAEE,MAAwBF,EAAEE,MAAQ,KAClDC,EAA0B,qBAAZ9c,EAAE6c,MAAwB7c,EAAE6c,MAAQ,KACtD,OAAID,IAASE,EAELH,EAAE7d,OAASkB,EAAElB,KACN,EAEJ6d,EAAE7d,KAAOkB,EAAElB,MAAQ,EAAI,EAE3B8d,EAAOE,GAAQ,EAAI,I,sCAGdH,EAAG3c,GAEf,IAAI4c,EAA0B,qBAAZD,EAAEE,MAAwBF,EAAEE,MAAQ,KAClDC,EAA0B,qBAAZ9c,EAAE6c,MAAwB7c,EAAE6c,MAAQ,KACtD,OAAID,IAAQE,EAEJH,EAAE7d,OAASkB,EAAElB,KACN,EAEJ6d,EAAE7d,KAAOkB,EAAElB,MAAQ,EAAI,EAE3B8d,EAAOE,GAAQ,EAAI,I,qCAGfH,EAAG3c,GAEd,IAAI4c,EAA0B,qBAAZD,EAAEE,MAAwBF,EAAEE,MAAQ,KAClDC,EAA0B,qBAAZ9c,EAAE6c,MAAwB7c,EAAE6c,MAAQ,KACtD,OAAID,IAASE,EAELH,EAAE7d,OAASkB,EAAElB,KACN,EAEJ6d,EAAE7d,KAAOkB,EAAElB,MAAQ,EAAI,EAE3B8d,EAAOE,GAAQ,EAAI,I,iCAIlB,IAAD,OACH/d,EAAQ,KACRooB,EAAS,KAoDb,OAlDIppB,EAAiBzJ,OACc,gBAA3BhF,KAAK4R,MAAMslB,aACXznB,EAAQhB,EAAiBzJ,KAAKuvB,UAC9BsD,EAAS73B,KAAK83B,eAEkB,uBAA3B93B,KAAK4R,MAAMslB,aAChBznB,EAAQhB,EAAiBzJ,KAAKmL,cAAcC,QAAQmc,QAAO,SAAAU,GAAC,OAAIA,EAAE5rB,eAAe,WACjFw2B,EAAS73B,KAAKmsB,aAEkB,mBAA3BnsB,KAAK4R,MAAMslB,aAChBznB,EAAQhB,EAAiBzJ,KAAK+uB,kBAC9B8D,EAAS73B,KAAK+3B,iBAEkB,gBAA3B/3B,KAAK4R,MAAMslB,cAChBznB,EAAQhB,EAAiBzJ,KAAKgzB,WAC9BH,EAAS73B,KAAKi4B,iBAIlBxoB,GAASzP,KAAK4R,MAAMyZ,eACpB5b,EAAQA,EAAM8c,QAAO,SAAA5c,GAAC,OAAIA,EAAEtN,MAAMgF,cAAc8lB,OAAO,EAAKvb,MAAMyZ,eAAiB,MAGnF5b,GAASzP,KAAK4R,MAAM0Z,aACU,YAA1BtrB,KAAK4R,MAAM0Z,WACX7b,EAAQA,EAAM2d,KAAKyK,GAEY,UAA1B73B,KAAK4R,MAAM0Z,WAChB7b,EAAQA,EAAM2d,MAAK,SAASC,EAAG3c,GAC3B,OAAI2c,EAAE0D,KAAK1uB,QAAUqO,EAAEqgB,KAAK1uB,MACjB,EAGJgrB,EAAE0D,KAAK1uB,MAAQqO,EAAEqgB,KAAK1uB,OAAS,EAAI,KAGf,UAA1BrC,KAAK4R,MAAM0Z,WAChB7b,EAAQA,EAAM2d,MAAK,SAASC,EAAG3c,GAC3B,OAAI2c,EAAE0D,KAAK6C,QAAUljB,EAAEqgB,KAAK6C,MACjB,EAGJvG,EAAE0D,KAAK6C,MAAQljB,EAAEqgB,KAAK6C,OAAS,EAAI,KAI9C3wB,QAAQL,IAAI,wBAIb6M,I,2CAIP,MAA+B,gBAA3BzP,KAAK4R,MAAMslB,YACJ,cAEyB,uBAA3Bl3B,KAAK4R,MAAMslB,YACT,UAEyB,mBAA3Bl3B,KAAK4R,MAAMslB,YACT,UAEyB,gBAA3Bl3B,KAAK4R,MAAMslB,YACT,cAGJ,U,+BAID,IAAD,OACCgB,EAAezpB,EAAiBzJ,KAAKmK,QAAQU,MAAMP,MAAK,SAAAK,GAAC,MAAe,YAAXA,EAAEH,QAE/DwE,EAASkkB,EAAcA,EAAYlkB,OAAS,KAC5CxP,EAAO0zB,EAAcA,EAAYC,SAAW,KAC5C1K,EAAkByK,EAAcA,EAAYE,YAAc,KAC1DzK,EAAcuK,EAAcA,EAAYvK,YAAc,KAEtDle,EAAQzP,KAAKq4B,WACbC,EAAa7oB,EAAQA,EAAMyG,MAAM,GAAGlW,KAAK4R,MAAM2Z,WAAY,GAAGvrB,KAAK4R,MAAM2Z,WAAW,IAAM,KAE1FgN,EAAWv4B,KAAKw4B,qBAEhB1K,EAAY9D,KAElB,OACI,mCAEQkO,GACA,qCACI,cAAC,EAAD,CAAQjlB,gBAAgB,iBAAiBC,WAAW,YACpD,qBAAKrU,UAAU,UAAf,SACI,sBAAKA,UAAU,uBAAf,UACI,wBAAQA,UAAU,oBAAlB,SACI,sBAAKA,UAAU,uBAAf,UACI,0BAASA,UAAU,wBAAnB,UACI,qBAAKA,UAAU,iCACf,oBAAIA,UAAU,QAAQ6V,WAAUC,oBAAeC,EAAY,UAA3D,SAAuEZ,IACvE,mBAAGnV,UAAU,cAAc6V,WAAUC,oBAAeC,EAAY,UAAhE,SAA4EpQ,OAEhF,0BAAS3F,UAAU,0BAAnB,UACI,qBAAKA,UAAU,mCACf,sBAAKA,UAAU,oCAAf,UACI,sBAAKA,UAAU,kCAAkC6V,WAAUC,oBAAeC,EAAY,UAAW6N,iBAAe,KAAKC,4BAA0B,aAAariB,IAAK,SAAAuT,GAAG,OAAI,EAAKoX,WAAapX,GAA1L,UACI,qBAAK/U,UAAU,8CAAf,SACI,yBAAQA,UAAU,SAAS4D,GAAG,kBAAkBhC,QAAST,KAAKwrB,qBAA9D,UACI,4BACI,qBAAK3sB,UAAU,eAAf,SACI,cAAC,GAAD,CAAYmkB,OAAQvU,EAAiBE,qBAG7C,+CAKR,sBAAK9P,UAAU,oCAAf,UAEQ4uB,GAAmBA,EAAgBxsB,OAAS,GAC5C,qBAAKpC,UAAU,cAAc4D,GAAG,kBAAhC,SACI,qBAAK5D,UAAU,YAAf,SACI,wBAAQkvB,mBAAiB,WAAW1tB,IAAK,SAAAssB,GAAM,OAAI,EAAKoK,WAAapK,GAArE,SAEQc,EAAgBtpB,KAAI,SAACooB,EAAQ/J,GACzB,OAAO,wBAAQpe,MAAOmoB,EAAO7P,QAAQ,OAAQ,KAAK8D,OAAOnZ,cAAlD,SAA8EklB,GAAR/J,YAQtE,uBAA3BxiB,KAAK4R,MAAMslB,aACX,sBAAKr4B,UAAU,+BAA+B6V,WAAUC,oBAAeC,EAAY,OAAnF,UACI,uBAAO+E,UAAQ,EAACC,YAAY,SAASE,SAAU9Z,KAAK6rB,gBACpD,2CACA,sBAAMhtB,UAAU,mBAChB,qBAAKA,UAAU,qCAAf,SACI,cAAC,GAAD,YAKhB,qBAAKA,UAAU,oCAAf,SAEQ8uB,GAAeA,EAAY1sB,OAAS,GACpC,qCACI,qBAAKpC,UAAU,wCAAf,SACI,wCAEJ,qBAAK4D,GAAG,cAAR,SACI,qBAAK5D,UAAU,YAAf,SACI,yBAAQkvB,mBAAiB,OAAzB,UACI,wBAAQ3pB,MAAM,UAAd,oBAA6B,GAEzBupB,EAAYxpB,KAAI,SAAC6pB,EAAQxL,GACrB,OAAO,wBAAQpe,MAAO4pB,EAAOtR,QAAQ,OAAQ,KAAK8D,OAAOnZ,cAAlD,SAAgF2mB,GAAVxL,EAAM,qBAUvH,qBAAK3jB,UAAU,wBAAwBwB,IAAK,SAAAuT,GAAG,OAAI,EAAKqX,iBAAmBrX,GAA3E,SACI,sBAAK/U,UAAU,6BAAf,UACI,sBAAKA,UAAU,2BAAf,UACI,sBAAKA,UAAU,uBAAf,UACI,qBAAKA,UAAU,yBAAf,SACI,0CAEJ,qBAAKA,UAAU,0BAA0B4B,QAAST,KAAKyrB,sBAAvD,SACI,qBAAK5sB,UAAU,uBAAf,SACI,cAAC,GAAD,WAKmB,uBAA3BmB,KAAK4R,MAAMslB,aACX,qBAAKr4B,UAAU,0BAAf,SACI,sBAAKA,UAAU,+BAA+B6V,WAAUC,oBAAeC,EAAY,OAAnF,UACI,uBAAO+E,UAAQ,EAACC,YAAY,SAASE,SAAU9Z,KAAK8rB,sBACpD,2CACA,sBAAMjtB,UAAU,mBAChB,qBAAKA,UAAU,qCAAf,SACI,cAAC,GAAD,WAKhB,qBAAKA,UAAU,wBAAf,SAEQ4uB,GAAmBA,EAAgBxsB,OAAS,GAC5C,qCACI,qBAAKpC,UAAU,8BAAf,SACI,4CAEJ,oBAAIA,UAAU,yBAAyBwB,IAAK,SAAA6tB,GAAE,OAAI,EAAK8I,iBAAmB9I,GAA1E,SAEQT,EAAgBtpB,KAAI,SAACooB,EAAQ/J,GACzB,OAAO,oBAAI3jB,UAAU,8BAA8BkvB,mBAAiB,WAAWE,aAAY1B,EAAO7P,QAAQ,OAAQ,KAAK8D,OAAOnZ,cAA2B5G,QAAS,EAAKirB,sBAAhK,SACH,+BAAOa,KADuI/J,aAS1K,qBAAK3jB,UAAU,wBAAf,SAEQ8uB,GAAeA,EAAY1sB,OAAS,GACpC,qCACI,qBAAKpC,UAAU,8BAAf,SACI,wCAEJ,qBAAIA,UAAU,yBAAd,UACI,oBAAIA,UAAU,sCAAsCkvB,mBAAiB,OAAOE,aAAW,UAAkBxtB,QAAST,KAAK0rB,sBAAvH,SACI,4CADkG,GAIlGiC,EAAYxpB,KAAI,SAAC6pB,EAAQxL,GACrB,OAAO,oBAAI3jB,UAAU,8BAA8BkvB,mBAAiB,OAAOE,aAAYD,EAAOtR,QAAQ,OAAQ,KAAK8D,OAAOnZ,cAA6B5G,QAAS,EAAKirB,sBAA9J,SACH,+BAAOsC,KADmIxL,EAAM,iBAUhL,qBAAK3jB,UAAU,2BAAf,SACI,yBAAQA,UAAU,kBAAkBwB,IAAK,SAAAie,GAAM,OAAI,EAAK4M,mBAAqB5M,GAAQ7d,QAAST,KAAKm3B,wBAAnG,sBAEI,uBAAMt4B,UAAU,wCAAhB,UAAyD4Q,EAAQA,EAAMxO,OAAS,GAAhF,QAA2Fs3B,0BAS3H,sBAAK15B,UAAU,uBAAf,UACI,0BAASA,UAAU,yBAAnB,UACI,oBAAIA,UAAU,kBAAkBwB,IAAK,SAAA6tB,GAAE,OAAI,EAAK+I,UAAY/I,GAA5D,SAEIoK,GACA,qCAEmC,gBAA3Bt4B,KAAK4R,MAAMslB,aACXoB,EAAWn0B,KAAI,SAACoxB,EAAY/S,GACxB,OAAO,cAAC,GAAD,CAAwBxd,KAAMuwB,GAAb/S,MAID,uBAA3BxiB,KAAK4R,MAAMslB,aACXoB,EAAWn0B,KAAI,SAACsS,EAAQ+L,GACpB,OAAI/L,EAAOE,UACA,cAAC,GAAD,CAAqB3R,KAAMyR,GAAb+L,GAGd,cAAC,GAAD,CAA8Bxd,KAAMyR,GAAb+L,MAMX,mBAA3BxiB,KAAK4R,MAAMslB,aACXoB,EAAWn0B,KAAI,SAAC8vB,EAAQzR,GACpB,OAAO,cAAC,GAAD,CAA0Bxd,KAAMivB,GAAbzR,MAIH,gBAA3BxiB,KAAK4R,MAAMslB,aACXoB,EAAWn0B,KAAI,SAACoe,EAAMC,GAClB,OAAO,cAAC,GAAD,CAAuBxd,KAAMud,GAAbC,WAOnC/S,GAASA,EAAMxO,OAAS,IACxB,cAAC,GAAD,CAAOqtB,MAAOC,KAAKC,KAAK/e,EAAMxO,OAAO,IAAK8S,KAAM/T,KAAK4R,MAAM2Z,WAAa,EAAGkD,KAAK,QAAQ3U,SAAU9Z,KAAKo3B,kBAGvGp3B,KAAK4R,MAAMyZ,cAAiC,IAAjB5b,EAAMxO,QACjC,cAAC,GAAD,CAAOuO,KAAK,cA5C6Bse,GA+CjD,cAAC,GAAD,IACA,cAAC,GAAD,qB,GAtiBd/uB,IAAMC,WC0Tby5B,I,yDA5TX,WAAYx4B,GAAQ,IAAD,8BACf,cAAMA,IAGDoe,KAAO,KACZ,EAAKqa,aAAe,KACpB,EAAKC,WAAa,KAClB,EAAKC,UAAY,KACjB,EAAKC,cAAgB,KACrB,EAAKC,aAAe,KAGpB,EAAKlnB,MAAQ,CACTuP,aAAa,GAIjB,EAAK4X,YAAc,EAAKA,YAAY7sB,KAAjB,gBACnB,EAAKgN,eAAiB,EAAKA,eAAehN,KAApB,gBACtB,EAAK8sB,gBAAkB,EAAKA,gBAAgB9sB,KAArB,gBACvB,EAAKkV,WAAa,EAAKA,WAAWlV,KAAhB,gBApBH,E,gEAyBf1C,OAAOsJ,SAAS,EAAG,GACnB9S,KAAK6mB,eACL7mB,KAAKi5B,kB,2CAILj5B,KAAK6mB,iB,sCAKL,GAAI7mB,KAAK04B,aAAc,CACnB,IAAMQ,EAAiBl5B,KAAK04B,aAAaha,iBAAiB,0BAExB,aAA9BmT,GAAe9P,YACfmX,EAAe,GAAG5mB,UAAUnP,IAAI,WAChCnD,KAAK24B,WAAWjxB,MAAMuQ,MAAQihB,EAAe,GAAGC,YAAc,EAAI,KAClEn5B,KAAK24B,WAAWjxB,MAAM7H,KAAOq5B,EAAe,GAAGE,WAAa,GAAK,KACjEp5B,KAAKq5B,oBAAoB,cAGzBH,EAAe,GAAG5mB,UAAUnP,IAAI,WAChCnD,KAAK24B,WAAWjxB,MAAMuQ,MAAQihB,EAAe,GAAGC,YAAc,EAAI,KAClEn5B,KAAK24B,WAAWjxB,MAAM7H,KAAOq5B,EAAe,GAAGE,WAAa,GAAK,KACjEp5B,KAAKq5B,oBAAoB,a,qCAKrB,IAAD,OACX/f,KAAE,qBAAqBwN,QAAQ,CAC3BC,yBAA0B,IAG9BzN,KAAE,6EAA6E0N,GAAG,UAAU,SAAC9nB,EAAG+nB,GAC5F,IAAKA,EAAc,CACf,IAAMqS,EAAiBhgB,KAAE,EAAKof,cAAcppB,KAAK,0BAA0Bid,OAApD,uBAA2ErtB,EAAEka,cAAchV,MAA3F,OAAsG,GAEzHk1B,IACA,EAAKC,gBAAgBD,GACrB,EAAKD,oBAAoBn6B,EAAEka,cAAchV,OACzCytB,GAAe9P,WAAa7iB,EAAEka,cAAchV,a,sCAM5C8D,GACZkW,GAAYW,cAAc/e,KAAKqe,MAE/B/E,KAAEpR,GAAWukB,WAAWC,YAAY,WACpCxkB,EAAUoK,UAAUnP,IAAI,WAExBrD,IAAKC,GAAGC,KAAK24B,WAAY,CACrB1gB,MAAO/P,EAAUixB,YACjBt5B,KAAMqI,EAAUkxB,WAAa,GAC7Bva,SAAU,O,0CAIEza,GAAQ,IAAD,OACT,UAAVA,GACApE,KAAK44B,UAAUY,aAEflgB,KAAEtZ,KAAK64B,eAAeY,IAAI,gBAAiB,GAC3Cz5B,KAAK84B,aAAaxmB,UAAUnP,IAAI,aAChCmW,KAAEtZ,KAAK84B,cAAcvf,KAAK,OAG1BvZ,KAAK44B,UAAUc,aAEfpgB,KAAEtZ,KAAK84B,cAActf,KAAK,GAAG,WACzBF,KAAE,EAAKuf,eAAeY,IAAI,gBAAiB,IAC3C,EAAKX,aAAaxmB,UAAUC,OAAO,mB,kCAMnCrT,GACR,IAAKA,EAAEka,cAAc9G,UAAU0M,SAAS,WAAY,CAChDhf,KAAKu5B,gBAAgBr6B,EAAEka,eACvBpZ,KAAKq5B,oBAAoBn6B,EAAEka,cAAc+N,QAAQ/iB,OAEjD,IAAMuoB,EAASrT,KAAEpa,EAAEka,eAAeugB,SAASrqB,KAAK,UAChDqd,EAAOC,IAAI1tB,EAAEka,cAAc+N,QAAQ/iB,OACnCuoB,EAAOrX,QAAQ,UAAU,GAEzBuc,GAAe9P,WAAa7iB,EAAEka,cAAc+N,QAAQ/iB,S,sCAI5ClF,GAGZ,GAFAA,EAAEmiB,iBAEEniB,EAAE06B,SAAW16B,EAAE26B,QAAS,CAExB,IAAMpb,EAASze,KAAKqe,KAAKK,iBAAiB,aAE1CD,EAAO,GAAGpf,cAAc,mBAAmB+E,MAAQ,eACnDqa,EAAO,GAAGpf,cAAc,mBAAmB+E,MAAQ,kBACnDqa,EAAO,GAAGpf,cAAc,mBAAmB+E,MAAQ,c,uCAKvDpE,KAAKqS,SAAS,CAAE8O,aAAa,M,iCAGtBjiB,GAAI,IAAD,OACVA,EAAEmiB,iBAEF,IAAMC,EAAclD,GAAYmD,SAASvhB,KAAKqe,MAExC9C,EAAQrc,EAAEE,OAAOmc,MAAMnX,MAAMoc,OAC7BgB,EAAWtiB,EAAEE,OAAOoiB,SAASpd,MAC7Bqd,EAAUviB,EAAEE,OAAOqiB,QAAQrd,MAEjC,GAAkC,aAA9BytB,GAAe9P,YAA6BP,IAAaC,EAGzD,OAFArD,GAAYsD,eAAe1hB,KAAKqe,KAAM,UAAW,qCACjDD,GAAYuD,kBAAkB3hB,KAAKqe,MAIvC,GAAIiD,EAAJ,CAEAlD,GAAYwD,kBAAkB5hB,KAAKqe,MAEnC,IAAIwD,EAAgB,CAACtG,QAAOiG,YAE5BpU,EAAiB0U,SAAS+P,GAAeC,aACxCvtB,MAAK,SAAAsZ,GACFgE,EAAc5D,eAAiBJ,EAEG,aAA9BgU,GAAe9P,YACfF,EAAc1E,YAAc,EAC5B0E,EAAcE,WAAa1F,GAC3BwF,EAActE,iBAAmB,IAAIzV,MAAO0V,oBAAsB,GAClEqE,EAAcpE,UAAYnB,GAAcoB,WAEpC,EAAK9L,MAAMuP,aACXU,EAAclJ,UAAYzZ,EAAEE,OAAOqa,SAASrV,MAAM6R,MAAM,KAAK,GAC7D4L,EAAchJ,SAAW3Z,EAAEE,OAAOqa,SAASrV,MAAM6R,MAAM,KAAK,KAG5D4L,EAAclJ,UAAYzZ,EAAEE,OAAOuZ,UAAUvU,MAC7Cyd,EAAcjJ,WAAa1Z,EAAEE,OAAOwZ,WAAWxU,MAC/Cyd,EAAchJ,SAAW3Z,EAAEE,OAAOyZ,SAASzU,OAG/CkY,GAAc0F,gBAAgBH,GAC7Btd,MAAK,SAAC0d,GACCA,GACA7D,GAAYW,cAAc,EAAKV,MAC/BD,GAAYuD,kBAAkB,EAAKtD,MACnCD,GAAYsD,eAAe,EAAKrD,KAAM,QAAS,wCAG/C/B,GAAcwd,eAAejY,GAC5Btd,MAAK,SAAAV,GACEA,EAAK4G,WACLonB,GAAe1X,OAAS0H,EACxB,EAAK5hB,MAAMgoB,QAAQnlB,KAAK,cAGxBsb,GAAYW,cAAc,EAAKV,MAC/BD,GAAYuD,kBAAkB,EAAKtD,MACnCD,GAAYgE,cAAc,EAAK/D,KAAMxa,EAAK6G,OAAO,YAM9B,UAA9BmnB,GAAe9P,aACpBF,EAAc1E,YAAc,EAC5B0E,EAAcpE,UAAYnB,GAAcoB,WAExCpB,GAAcwd,eAAejY,GAC5Btd,MAAK,SAAAV,GACEA,EAAK4G,WACLonB,GAAe1X,OAAS0H,EACxB,EAAK5hB,MAAMgoB,QAAQnlB,KAAK,cAGxBsb,GAAYW,cAAc,EAAKV,MAC/BD,GAAYuD,kBAAkB,EAAKtD,MACnCD,GAAYgE,cAAc,EAAK/D,KAAMxa,EAAK6G,OAAO,e,+BAQ3D,IAAD,OAEL,IAAKmnB,GAAed,KAEhB,OADA/wB,KAAKC,MAAMgoB,QAAQnlB,KAAnB,mBAAoC2L,EAAiBG,kBAC9C,KAGX,IAAMvM,EAAQwvB,GAAed,KAAOc,GAAed,KAAK1uB,MAAQ,KAC1DsuB,EAAWkB,GAAelB,SAAf,UAA6B,IAAI7oB,KAAK+pB,GAAelB,SAAS7Z,WAAWC,mBAAmB,QAAS,CAACC,QAAS,OAAQC,MAAO,QAASC,IAAK,YAA5I,aAA4J,IAAIpP,KAAK+pB,GAAelB,SAAS7Z,WAAWqa,mBAAmB,QAAS,CAACC,KAAM,UAAWC,OAAQ,YAA9P,cAA+Q,IAAIvpB,KAAK+pB,GAAelB,SAASW,SAASH,mBAAmB,QAAS,CAACC,KAAM,UAAWC,OAAQ,YAA/W,aAA+XxC,GAAgB+C,cAA/Y,KAAka,KAE7ajZ,EAAYkZ,GAAe1X,OAAS0X,GAAe1X,OAAOxB,UAAY,GACtEC,EAAaiZ,GAAe1X,OAAS0X,GAAe1X,OAAOvB,WAAa,GACxEC,EAAWgZ,GAAe1X,OAAS0X,GAAe1X,OAAOtB,SAAW,GACpE0C,EAAQsW,GAAe1X,OAAS0X,GAAe1X,OAAOoB,MAAQ,GAC9DiG,EAAWqQ,GAAe1X,OAAS0X,GAAe1X,OAAOqH,SAAW,GAE1E,OACI,qCACI,cAAC,EAAD,IACA,qBAAK3iB,UAAU,UAAf,SACI,qBAAKA,UAAU,mBAAf,SACI,yBAASA,UAAU,mBAAnB,SACI,sBAAKA,UAAU,iBAAiB6V,WAAUC,oBAAeC,EAAY,UAArE,UACI,yBAAQ/V,UAAU,eAAlB,UACI,6BACKwD,IAGDsuB,GACA,6BACKA,OAIb,uBAAM9xB,UAAU,cAAcwB,IAAK,SAAAge,GAAI,OAAI,EAAKA,KAAOA,GAAMgE,SAAUriB,KAAKohB,WAA5E,UACI,sBAAKviB,UAAU,oBAAf,UACI,sBAAKA,UAAU,6CAA6CwB,IAAK,SAAAuT,GAAG,OAAI,EAAK8kB,aAAe9kB,GAA5F,UACI,sBAAK/U,UAAU,mDAAf,UACI,qBAAKA,UAAU,sBAAf,SACI,yBAAQgb,aAAa,WAArB,UACI,wBAAQzV,MAAM,WAAd,gCACA,wBAAQA,MAAM,QAAd,sCAGR,qBAAKvF,UAAU,wCAAwC0B,KAAK,SAAS0tB,aAAW,WAAWxtB,QAAST,KAAK+4B,YAAzG,gCAGA,qBAAKl6B,UAAU,wCAAwC0B,KAAK,SAAS0tB,aAAW,QAAQxtB,QAAST,KAAK+4B,YAAtG,oCAIJ,qBAAKl6B,UAAU,cAAcwB,IAAK,SAAAuT,GAAG,OAAI,EAAK+kB,WAAa/kB,QAE/D,cAAC,GAAD,CAAevT,IAAK,SAAAuT,GAAG,OAAI,EAAKglB,UAAYhlB,GAAKsF,eAAgBlZ,KAAKkZ,eAAgBP,UAAWA,EAAWC,WAAYA,EAAYC,SAAUA,IAC9I,sBAAKha,UAAU,WAAf,UACI,uBAAO2Q,KAAK,QAAQmK,UAAQ,EAACC,YAAY,iBAAiBC,aAAc0B,IACxE,uBAAOxB,QAAQ,QAAf,4BACA,sBAAMlb,UAAU,iBAAhB,0CACA,qBAAKA,UAAU,qCAAf,SACI,cAAC,GAAD,SAGR,sBAAKA,UAAU,WAAWwB,IAAK,SAAAuT,GAAG,OAAI,EAAKilB,cAAgBjlB,GAA3D,UACI,uBAAOpE,KAAK,WAAWoK,YAAY,WAAWD,UAAQ,EAACpZ,KAAK,WAAWsZ,aAAc2H,IACrF,uBAAOzH,QAAQ,WAAf,sBACA,sBAAMlb,UAAU,iBAAhB,oCACA,qBAAKA,UAAU,qCAAf,SACI,cAAC,GAAD,SAGR,sBAAKA,UAAU,WAAWwB,IAAK,SAAAuT,GAAG,OAAI,EAAKklB,aAAellB,GAA1D,UACI,uBAAOpE,KAAK,UAAUoK,YAAY,mBAAmBD,UAAQ,EAACpZ,KAAK,WAAWsZ,aAAc2H,IAC5F,uBAAOzH,QAAQ,WAAf,8BACA,sBAAMlb,UAAU,iBAAhB,oCACA,qBAAKA,UAAU,qCAAf,SACI,cAAC,GAAD,YAIZ,mBAAGA,UAAU,kBACb,cAAC,EAAD,CAAcA,UAAU,iCAAiC0B,KAAK,SAASC,gBAAc,EAArF,gCAGA,qBAAK3B,UAAU,oBAAoB4B,QAAST,KAAKg5B,gBAAjD,qFAQpB,cAAC,GAAD,W,GAxTEj6B,IAAMC,YCoaT+6B,I,yDAnaX,WAAY95B,GAAQ,IAAD,8BACf,cAAMA,IAGDqR,eAAiB7C,EAAiBurB,oBACnC,EAAK1oB,iBACL,EAAK2oB,cAAgB,EAAK3oB,eAAe2oB,cACzC,EAAKC,qBAAuB,EAAK5oB,eAAe4oB,qBAChD,EAAKC,UAAY,EAAK7oB,eAAe6oB,UACrC,EAAKC,iBAAmB,EAAK9oB,eAAe8oB,iBAC5C,EAAKC,WAAa,EAAK/oB,eAAe+oB,WACtC,EAAKC,mBAAqB,EAAKL,cAAgB,EAAI,IAAM,EAAKE,UAAY,EAAI,IAAM,EAAKE,WAAa,EAAI,IAI9G,EAAKhc,KAAO,KACZ,EAAKkc,gBAAkB,KACvB,EAAKC,cAAgB,KACrB,EAAKC,cAAgB,KACrB,EAAKC,iBAAmB,KAGxB,EAAK3B,YAAc,EAAKA,YAAY7sB,KAAjB,gBACnB,EAAKyuB,iBAAmB,EAAKA,iBAAiBzuB,KAAtB,gBACxB,EAAKkV,WAAa,EAAKA,WAAWlV,KAAhB,gBAxBH,E,gEA6Bf1C,OAAOsJ,SAAS,EAAG,GACnB9S,KAAK6mB,eACL7mB,KAAKi5B,kB,2CAILj5B,KAAK6mB,iB,sCAKL,GAAI7mB,KAAKu6B,gBAAiB,CACtB,IAAMK,EAAoB56B,KAAKu6B,gBAAgB7b,iBAAiB,8BAE7B,OAA/BmT,GAAeC,aACf8I,EAAkB,GAAGtoB,UAAUnP,IAAI,WACnCnD,KAAKw6B,cAAc9yB,MAAMuQ,MAAQ2iB,EAAkB,GAAGzB,YAAc,EAAI,KACxEn5B,KAAKw6B,cAAc9yB,MAAM7H,KAAO+6B,EAAkB,GAAGxB,WAAa,GAAK,MAEnC,OAA/BvH,GAAeC,aACpB8I,EAAkB,GAAGtoB,UAAUnP,IAAI,WACnCnD,KAAKw6B,cAAc9yB,MAAMuQ,MAAQ2iB,EAAkB,GAAGzB,YAAc,EAAI,KACxEn5B,KAAKw6B,cAAc9yB,MAAM7H,KAAO+6B,EAAkB,GAAGxB,WAAa,GAAK,OAGvEwB,EAAkB,GAAGtoB,UAAUnP,IAAI,WACnCnD,KAAKw6B,cAAc9yB,MAAMuQ,MAAQ2iB,EAAkB,GAAGzB,YAAc,EAAI,KACxEn5B,KAAKw6B,cAAc9yB,MAAM7H,KAAO+6B,EAAkB,GAAGxB,WAAa,MAGtEp5B,KAAK66B,oBAAoBhJ,GAAeC,gB,qCAIhC,IAAD,OACXxY,KAAE,qBAAqBwN,QAAQ,CAC3BC,yBAA0B,IAG9BzN,KAAE,qFAAqF0N,GAAG,UAAU,SAAC9nB,EAAG+nB,GACpG,IAAKA,EAAc,CACf,IAAMqS,EAAiBhgB,KAAE,EAAKihB,iBAAiBjrB,KAAK,8BAA8Bid,OAA3D,uBAAkFrtB,EAAEka,cAAchV,MAAlG,OAA6G,GAEhIk1B,IACA,EAAKC,gBAAgBD,GACrB,EAAKuB,oBAAoB37B,EAAEka,cAAchV,OACzCytB,GAAeC,YAAc5yB,EAAEka,cAAchV,a,sCAM7C8D,GACZkW,GAAYW,cAAc/e,KAAKqe,MAE/B/E,KAAEpR,GAAWukB,WAAWC,YAAY,WACpCxkB,EAAUoK,UAAUnP,IAAI,WAExBrD,IAAKC,GAAGC,KAAKw6B,cAAe,CACxBviB,MAAO/P,EAAUixB,YACjBt5B,KAAMqI,EAAUkxB,WAAa,GAC7Bva,SAAU,O,0CAIEza,GAAQ,IAAD,OACjBq2B,EAAgBnhB,KAAEtZ,KAAKy6B,eAAenrB,KAAK,aAEnC,OAAVlL,GACAkV,KAAEtZ,KAAK06B,kBAAkBnhB,OACzBD,KAAEtZ,KAAKy6B,eAAejhB,KAAK,GAAG,WAC1B,EAAKshB,WAAWL,QAIpBz6B,KAAK+6B,YAAYN,GAGbz6B,KAAK06B,iBAAiB9b,UADZ,OAAVxa,EACkC,6DAGA,8EAGtCkV,KAAEtZ,KAAKy6B,eAAelhB,KAAK,KAC3BD,KAAEtZ,KAAK06B,kBAAkBlhB,U,kCAIrBihB,GACRA,EAAc/C,MAAK,SAAClV,EAAOxI,GACvBA,EAAM1H,UAAUnP,IAAI,kB,iCAIjBs3B,GACPA,EAAc/C,MAAK,SAAClV,EAAOxI,GACvBA,EAAM1H,UAAUC,OAAO,kB,kCAKnBrT,GACR,IAAKA,EAAEka,cAAc9G,UAAU0M,SAAS,WAAY,CAChDhf,KAAKu5B,gBAAgBr6B,EAAEka,eACvBpZ,KAAK66B,oBAAoB37B,EAAEka,cAAc+N,QAAQ/iB,OAEjD,IAAMuoB,EAASrT,KAAEpa,EAAEka,eAAeugB,SAASrqB,KAAK,UAChDqd,EAAOC,IAAI1tB,EAAEka,cAAc+N,QAAQ/iB,OACnCuoB,EAAOrX,QAAQ,UAAU,GAEzBuc,GAAeC,YAAc5yB,EAAEka,cAAc+N,QAAQ/iB,S,uCAI5ClF,GAOb,GANAA,EAAEmiB,kBAGkC,OAA/BwQ,GAAeC,aAAwB9xB,KAAKk6B,sBACb,OAA/BrI,GAAeC,aAAwB9xB,KAAKo6B,oBAGzCl7B,EAAE06B,SAAW16B,EAAE26B,SAAS,CAExB,IAAMpb,EAASze,KAAKqe,KAAKK,iBAAiB,aAE1CmT,GAAe8I,mBACVp2B,MAAK,SAAAV,GACEA,EAAK4G,UAC8B,OAA/BonB,GAAeC,cACfrT,EAAO,GAAGpf,cAAc,mBAAmB+E,MAAQ,gBACnDqa,EAAO,GAAGpf,cAAc,mBAAmB+E,MAAQ,KACnDqa,EAAO,GAAGpf,cAAc,mBAAmB+E,MAAQ,OACnDqa,EAAO,GAAGpf,cAAc,mBAAmB+E,MAAQ,OAIvDnB,QAAQL,IAAIiB,EAAK6G,c,iCAO9BxL,GACPA,EAAEmiB,iBAEiC,OAA/BwQ,GAAeC,YACf9xB,KAAKg7B,mBAE+B,OAA/BnJ,GAAeC,YACpB9xB,KAAKi7B,eAE+B,YAA/BpJ,GAAeC,aACpB9xB,KAAKk7B,uB,yCAKO,IAAD,OAEf,GADoB9c,GAAYmD,SAASvhB,KAAKqe,MAC9C,CAEAD,GAAYwD,kBAAkB5hB,KAAKqe,MAEnC,IAKM2T,EAAa,CAAEQ,aALAxyB,KAAKqe,KAAK8c,KAAK/2B,MAKDquB,gBAJXzyB,KAAKqe,KAAK+c,GAAGh3B,MAIesuB,eAH7B1yB,KAAKqe,KAAKgd,KAAKj3B,MAG8BuuB,aAF/C3yB,KAAKqe,KAAKid,IAAIl3B,OAGnCytB,GAAeG,WAAaA,EAE5B5kB,EAAiB0U,SAAS,OACrBvd,MAAK,SAAAsZ,GACF,IAAIsU,EAAa,CAAElU,eAAgBJ,GAEnCgU,GAAe0J,kBAAkBpJ,GAC5B5tB,MAAK,SAAAV,GACEA,EAAK4G,UACL6R,GAAc6F,eAGd/D,GAAYW,cAAc,EAAKV,MAC/BD,GAAYuD,kBAAkB,EAAKtD,MACnCD,GAAYgE,cAAc,EAAK/D,KAAMxa,EAAK6G,OAAO,c,qCAMzD,IAAD,OACX0T,GAAYgJ,eAAepnB,KAAKqe,MAChCD,GAAYwD,kBAAkB5hB,KAAKqe,MAEnCjR,EAAiB0U,SAAS,OACrBvd,MAAK,SAAAsZ,GACF,IAAIsU,EAAa,CAAElU,eAAgBJ,GAEnCgU,GAAe2J,cAAcrJ,GACxB5tB,MAAK,SAAAV,GACF,GAAIA,EAAK4G,UAAW,CAChB,IAAIoT,EAAQha,EAAK4I,OAAOgvB,aAAaC,gBAAgB,GAAG7d,MACxD,GAAIA,EAEIgU,GAAeI,cACfzoB,OAAOC,SAASC,KAAhB,sGAAsHmU,GAGtHrU,OAAOC,SAASC,KAAhB,8FAA8GmU,OAGjH,CAED,IAAI8d,EAAsB93B,EAAK4I,OAAOgvB,aAAaC,gBAAgB,GAAGC,oBAClEA,IACAnyB,OAAOC,SAASC,KAAOiyB,SAK/B14B,QAAQL,IAAIiB,EAAK6G,QACjB0T,GAAYuD,kBAAkB,EAAKtD,MACnC,EAAKqc,iBAAiB9b,UAAY,uF,2CAMpC,IAAD,OACjBR,GAAYgJ,eAAepnB,KAAKqe,MAChCD,GAAYwD,kBAAkB5hB,KAAKqe,MAEnCjR,EAAiB0U,SAAS,OACrBvd,MAAK,SAAAsZ,GACF,IAAIsU,EAAa,CAAElU,eAAgBJ,GAEnCgU,GAAe+J,eAAezJ,GACzB5tB,MAAK,SAAAV,GACEA,EAAK4G,UACL6R,GAAc6F,eAGdlf,QAAQL,IAAIiB,EAAK6G,QACjB0T,GAAYuD,kBAAkB,EAAKtD,MACnC,EAAKqc,iBAAiB9b,UAAY,yF,+BAOhD,IAAD,OAEL,IAAKiT,GAAed,OAASc,GAAe1X,OAOxC,OANI0X,GAAeE,MACf/xB,KAAKC,MAAMgoB,QAAQnlB,KAAK,mBAGxB9C,KAAKC,MAAMgoB,QAAQnlB,KAAK,QAErB,KAGX,IAAMT,EAAQwvB,GAAed,KAAOc,GAAed,KAAK1uB,MAAQ,GAC1DsuB,EAAWkB,GAAelB,SAAf,UAA6B,IAAI7oB,KAAK+pB,GAAelB,SAAS7Z,WAAWC,mBAAmB,QAAS,CAAEC,QAAS,OAAQC,MAAO,QAASC,IAAK,YAA7I,aAA8J,IAAIpP,KAAK+pB,GAAelB,SAAS7Z,WAAWqa,mBAAmB,QAAS,CAAEC,KAAM,UAAWC,OAAQ,YAAjQ,cAAmR,IAAIvpB,KAAK+pB,GAAelB,SAASW,SAASH,mBAAmB,QAAS,CAAEC,KAAM,UAAWC,OAAQ,YAApX,aAAqYxC,GAAgB+C,cAArZ,KAAwa,KACnbgC,EAAQ/B,GAAed,MAAQc,GAAed,KAAK6C,MAAQ/B,GAAed,KAAKqB,UAAU/b,QAAQ,GAAK,GAEtGwlB,EAA6C,IAA3B77B,KAAKs6B,kBAA0B,cAAgB,uBACjEwB,EAAyC,IAA3B97B,KAAKs6B,kBAA0B,SAAW,kBAE9D,OACI,qCACI,cAAC,EAAD,IACA,qBAAKz7B,UAAU,UAAf,SACI,qBAAKA,UAAU,uBAAf,SACI,yBAASA,UAAU,uBAAnB,SACI,sBAAKA,UAAU,qBAAqB6V,WAAUC,oBAAeC,EAAY,UAAzE,UACI,yBAAQ/V,UAAU,mBAAlB,UACI,6BACKwD,IAGDsuB,GACA,6BACKA,OAIb,uBAAM9xB,UAAU,kBAAkBwB,IAAK,SAAAge,GAAI,OAAI,EAAKA,KAAOA,GAA3D,UACI,sBAAKxf,UAAU,wBAAf,UACI,sBAAKA,UAAU,oDAAoDwB,IAAK,SAAAuT,GAAG,OAAI,EAAK2mB,gBAAkB3mB,GAAtG,UACI,sBAAK/U,UAAU,8DAAf,UACI,qBAAKA,UAAU,sBAAf,SACI,yBAAQ2Q,KAAK,eAAeqK,aAAa,KAAzC,UAEI7Z,KAAKi6B,eACL,wBAAQ71B,MAAM,KAAd,yBAGApE,KAAKm6B,WACL,wBAAQ/1B,MAAM,KAAd,oBAGApE,KAAKq6B,YACL,wBAAQj2B,MAAM,UAAd,iCAKJpE,KAAKi6B,eACL,qBAAKp7B,UAAU,4CAA4C0B,KAAK,SAAS0tB,aAAW,KAAKxtB,QAAST,KAAK+4B,YAAvG,SACK8C,IAIL77B,KAAKm6B,WACL,qBAAKt7B,UAAU,4CAA4C0B,KAAK,SAAS0tB,aAAW,KAAKxtB,QAAST,KAAK+4B,YAAvG,SACK+C,IAIL97B,KAAKq6B,YACL,qBAAKx7B,UAAU,4CAA4C0B,KAAK,SAAS0tB,aAAW,UAAUxtB,QAAST,KAAK+4B,YAA5G,+BAKR,qBAAKl6B,UAAU,cAAcwB,IAAK,SAAAuT,GAAG,OAAI,EAAK4mB,cAAgB5mB,QAElE,sBAAK/U,UAAU,YAAYwB,IAAK,SAAAuT,GAAG,OAAI,EAAK6mB,cAAgB7mB,GAA5D,UACI,sBAAK/U,UAAU,WAAf,UACI,uBAAO2Q,KAAK,OAAOoK,YAAY,UAAUD,UAAQ,IACjD,uBAAOI,QAAQ,OAAf,qBACA,sBAAMlb,UAAU,iBAAiBwB,IAAK,SAAA07B,GAAI,OAAI,EAAKC,UAAYD,KAC/D,qBAAKl9B,UAAU,qCAAf,SACI,cAAC,GAAD,SAGR,sBAAKA,UAAU,oCAAf,UACI,sBAAKA,UAAU,WAAf,UACI,uBAAO2Q,KAAK,KAAKoK,YAAY,KAAKD,UAAQ,IAC1C,uBAAOI,QAAQ,KAAf,gBACA,sBAAMlb,UAAU,mBAChB,qBAAKA,UAAU,qCAAf,SACI,cAAC,GAAD,SAGR,sBAAKA,UAAU,WAAf,UACI,uBAAO2Q,KAAK,OAAOoK,YAAY,OAAOD,UAAQ,IAC9C,uBAAOI,QAAQ,OAAf,kBACA,sBAAMlb,UAAU,mBAChB,qBAAKA,UAAU,qCAAf,SACI,cAAC,GAAD,SAGR,sBAAKA,UAAU,WAAf,UACI,uBAAO2Q,KAAK,MAAMoK,YAAY,MAAMrZ,KAAK,WAAWoZ,UAAQ,IAC5D,uBAAOI,QAAQ,MAAf,iBACA,sBAAMlb,UAAU,mBAChB,qBAAKA,UAAU,qCAAf,SACI,cAAC,GAAD,eAKhB,mBAAGA,UAAU,kBACb,mBAAGA,UAAU,4BAA4BwB,IAAK,SAAAsP,GAAC,OAAI,EAAK+qB,iBAAmB/qB,QAE/E,eAAC,EAAD,CAAc9Q,UAAU,iCAAiC0B,KAAK,SAASE,QAAST,KAAKohB,WAAY5gB,gBAAc,EAA/G,2BACqBozB,KAErB,sBAAK/0B,UAAU,wBAAwB4B,QAAST,KAAK26B,iBAArD,sDAEI,cAAC,IAAD,CAAM56B,GAAG,wBAAwBlB,UAAU,kBAA3C,SACI,8DAQ5B,cAAC,GAAD,W,GA/ZME,IAAMC,Y,OCpB5B,SAAS,KAA2Q,OAA9P,GAAW6B,OAAOC,QAAU,SAAU1B,GAAU,IAAK,IAAI2B,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CAAE,IAAIG,EAASF,UAAUD,GAAI,IAAK,IAAII,KAAOD,EAAcL,OAAOO,UAAUC,eAAeC,KAAKJ,EAAQC,KAAQ/B,EAAO+B,GAAOD,EAAOC,IAAY,OAAO/B,IAA2BmC,MAAMvB,KAAMgB,WAEhT,SAAS,GAAyBE,EAAQO,GAAY,GAAc,MAAVP,EAAgB,MAAO,GAAI,IAAkEC,EAAKJ,EAAnE3B,EAEzF,SAAuC8B,EAAQO,GAAY,GAAc,MAAVP,EAAgB,MAAO,GAAI,IAA2DC,EAAKJ,EAA5D3B,EAAS,GAAQsC,EAAab,OAAOc,KAAKT,GAAqB,IAAKH,EAAI,EAAGA,EAAIW,EAAWT,OAAQF,IAAOI,EAAMO,EAAWX,GAAQU,EAASG,QAAQT,IAAQ,IAAa/B,EAAO+B,GAAOD,EAAOC,IAAQ,OAAO/B,EAFxM,CAA8B8B,EAAQO,GAAuB,GAAIZ,OAAOiB,sBAAuB,CAAE,IAAIC,EAAmBlB,OAAOiB,sBAAsBZ,GAAS,IAAKH,EAAI,EAAGA,EAAIgB,EAAiBd,OAAQF,IAAOI,EAAMY,EAAiBhB,GAAQU,EAASG,QAAQT,IAAQ,GAAkBN,OAAOO,UAAUY,qBAAqBV,KAAKJ,EAAQC,KAAgB/B,EAAO+B,GAAOD,EAAOC,IAAU,OAAO/B,EAMne,IAAI,GAAqB,gBAAoB,OAAQ,CACnD68B,SAAU,UACVC,SAAU,UACVj6B,EAAG,oUACHkV,KAAM,YAGJ,GAAqB,gBAAoB,OAAQ,CACnD8kB,SAAU,UACVC,SAAU,UACVj6B,EAAG,oUACHkV,KAAM,YAGJ,GAAqB,gBAAoB,OAAQ,CACnD8kB,SAAU,UACVC,SAAU,UACVj6B,EAAG,mVACHkV,KAAM,YAGJ,GAAqB,gBAAoB,OAAQ,CACnD8kB,SAAU,UACVC,SAAU,UACVj6B,EAAG,wOACHkV,KAAM,YAGJglB,GAAqB,gBAAoB,OAAQ,CACnDF,SAAU,UACVC,SAAU,UACVj6B,EAAG,uOACHkV,KAAM,YAGJilB,GAAqB,gBAAoB,OAAQ,CACnDH,SAAU,UACVC,SAAU,UACVj6B,EAAG,oPACHkV,KAAM,YAGR,SAASklB,GAAUl6B,EAAMC,GACvB,IAAIC,EAAQF,EAAKE,MACbC,EAAUH,EAAKG,QACfrC,EAAQ,GAAyBkC,EAAM,CAAC,QAAS,YAErD,OAAoB,gBAAoB,MAAO,GAAS,CACtD8V,MAAO,GACPC,OAAQ,GACR3V,QAAS,YACT4U,KAAM,OACN3U,MAAO,6BACPnC,IAAK+B,EACL,kBAAmBE,GAClBrC,GAAQoC,EAAqB,gBAAoB,QAAS,CAC3DI,GAAIH,GACHD,GAAS,KAAM,GAAO,GAAO,GAAO,GAAO85B,GAAOC,IAGvD,IAAI,GAA0B,aAAiBC,ICpE/C,SAAS,KAA2Q,OAA9P,GAAWx7B,OAAOC,QAAU,SAAU1B,GAAU,IAAK,IAAI2B,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CAAE,IAAIG,EAASF,UAAUD,GAAI,IAAK,IAAII,KAAOD,EAAcL,OAAOO,UAAUC,eAAeC,KAAKJ,EAAQC,KAAQ/B,EAAO+B,GAAOD,EAAOC,IAAY,OAAO/B,IAA2BmC,MAAMvB,KAAMgB,WAEhT,SAAS,GAAyBE,EAAQO,GAAY,GAAc,MAAVP,EAAgB,MAAO,GAAI,IAAkEC,EAAKJ,EAAnE3B,EAEzF,SAAuC8B,EAAQO,GAAY,GAAc,MAAVP,EAAgB,MAAO,GAAI,IAA2DC,EAAKJ,EAA5D3B,EAAS,GAAQsC,EAAab,OAAOc,KAAKT,GAAqB,IAAKH,EAAI,EAAGA,EAAIW,EAAWT,OAAQF,IAAOI,EAAMO,EAAWX,GAAQU,EAASG,QAAQT,IAAQ,IAAa/B,EAAO+B,GAAOD,EAAOC,IAAQ,OAAO/B,EAFxM,CAA8B8B,EAAQO,GAAuB,GAAIZ,OAAOiB,sBAAuB,CAAE,IAAIC,EAAmBlB,OAAOiB,sBAAsBZ,GAAS,IAAKH,EAAI,EAAGA,EAAIgB,EAAiBd,OAAQF,IAAOI,EAAMY,EAAiBhB,GAAQU,EAASG,QAAQT,IAAQ,GAAkBN,OAAOO,UAAUY,qBAAqBV,KAAKJ,EAAQC,KAAgB/B,EAAO+B,GAAOD,EAAOC,IAAU,OAAO/B,EAMne,IAAI,GAAqB,gBAAoB,OAAQ,CACnD6C,EAAG,gOACH+gB,OAAQ,UACR7L,KAAM,cACN8L,YAAa,MAGX,GAAqB,gBAAoB,SAAU,CACrDnL,GAAI,OACJC,GAAI,QACJ9H,EAAG,MACHkH,KAAM,YAGJ,GAAqB,gBAAoB,OAAQ,CACnDlV,EAAG,oBACH+gB,OAAQ,UACRC,YAAa,IACb9L,KAAM,cACN+L,cAAe,UAGb,GAAqB,gBAAoB,OAAQ,CACnDjhB,EAAG,uBACH+gB,OAAQ,UACRC,YAAa,IACb9L,KAAM,cACN+L,cAAe,UAGjB,SAASoZ,GAASn6B,EAAMC,GACtB,IAAIC,EAAQF,EAAKE,MACbC,EAAUH,EAAKG,QACfrC,EAAQ,GAAyBkC,EAAM,CAAC,QAAS,YAErD,OAAoB,gBAAoB,MAAO,GAAS,CACtD8V,MAAO,GACPC,OAAQ,GACR3V,QAAS,YACT4U,KAAM,OACN3U,MAAO,6BACPnC,IAAK+B,EACL,kBAAmBE,GAClBrC,GAAQoC,EAAqB,gBAAoB,QAAS,CAC3DI,GAAIH,GACHD,GAAS,KAAM,GAAO,GAAO,GAAO,IAGzC,IAAI,GAA0B,aAAiBi6B,ICxD/C,SAAS,KAA2Q,OAA9P,GAAWz7B,OAAOC,QAAU,SAAU1B,GAAU,IAAK,IAAI2B,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CAAE,IAAIG,EAASF,UAAUD,GAAI,IAAK,IAAII,KAAOD,EAAcL,OAAOO,UAAUC,eAAeC,KAAKJ,EAAQC,KAAQ/B,EAAO+B,GAAOD,EAAOC,IAAY,OAAO/B,IAA2BmC,MAAMvB,KAAMgB,WAEhT,SAAS,GAAyBE,EAAQO,GAAY,GAAc,MAAVP,EAAgB,MAAO,GAAI,IAAkEC,EAAKJ,EAAnE3B,EAEzF,SAAuC8B,EAAQO,GAAY,GAAc,MAAVP,EAAgB,MAAO,GAAI,IAA2DC,EAAKJ,EAA5D3B,EAAS,GAAQsC,EAAab,OAAOc,KAAKT,GAAqB,IAAKH,EAAI,EAAGA,EAAIW,EAAWT,OAAQF,IAAOI,EAAMO,EAAWX,GAAQU,EAASG,QAAQT,IAAQ,IAAa/B,EAAO+B,GAAOD,EAAOC,IAAQ,OAAO/B,EAFxM,CAA8B8B,EAAQO,GAAuB,GAAIZ,OAAOiB,sBAAuB,CAAE,IAAIC,EAAmBlB,OAAOiB,sBAAsBZ,GAAS,IAAKH,EAAI,EAAGA,EAAIgB,EAAiBd,OAAQF,IAAOI,EAAMY,EAAiBhB,GAAQU,EAASG,QAAQT,IAAQ,GAAkBN,OAAOO,UAAUY,qBAAqBV,KAAKJ,EAAQC,KAAgB/B,EAAO+B,GAAOD,EAAOC,IAAU,OAAO/B,EAMne,IAAI,GAAqB,gBAAoB,OAAQ,CACnD68B,SAAU,UACVC,SAAU,UACVj6B,EAAG,0hIACHkV,KAAM,YAGR,SAASolB,GAASp6B,EAAMC,GACtB,IAAIC,EAAQF,EAAKE,MACbC,EAAUH,EAAKG,QACfrC,EAAQ,GAAyBkC,EAAM,CAAC,QAAS,YAErD,OAAoB,gBAAoB,MAAO,GAAS,CACtD8V,MAAO,GACPC,OAAQ,GACR3V,QAAS,YACT4U,KAAM,OACN3U,MAAO,6BACPnC,IAAK+B,EACL,kBAAmBE,GAClBrC,GAAQoC,EAAqB,gBAAoB,QAAS,CAC3DI,GAAIH,GACHD,GAAS,KAAM,IAGpB,IAAI,GAA0B,aAAiBk6B,ICjC/C,SAAS,KAA2Q,OAA9P,GAAW17B,OAAOC,QAAU,SAAU1B,GAAU,IAAK,IAAI2B,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CAAE,IAAIG,EAASF,UAAUD,GAAI,IAAK,IAAII,KAAOD,EAAcL,OAAOO,UAAUC,eAAeC,KAAKJ,EAAQC,KAAQ/B,EAAO+B,GAAOD,EAAOC,IAAY,OAAO/B,IAA2BmC,MAAMvB,KAAMgB,WAEhT,SAAS,GAAyBE,EAAQO,GAAY,GAAc,MAAVP,EAAgB,MAAO,GAAI,IAAkEC,EAAKJ,EAAnE3B,EAEzF,SAAuC8B,EAAQO,GAAY,GAAc,MAAVP,EAAgB,MAAO,GAAI,IAA2DC,EAAKJ,EAA5D3B,EAAS,GAAQsC,EAAab,OAAOc,KAAKT,GAAqB,IAAKH,EAAI,EAAGA,EAAIW,EAAWT,OAAQF,IAAOI,EAAMO,EAAWX,GAAQU,EAASG,QAAQT,IAAQ,IAAa/B,EAAO+B,GAAOD,EAAOC,IAAQ,OAAO/B,EAFxM,CAA8B8B,EAAQO,GAAuB,GAAIZ,OAAOiB,sBAAuB,CAAE,IAAIC,EAAmBlB,OAAOiB,sBAAsBZ,GAAS,IAAKH,EAAI,EAAGA,EAAIgB,EAAiBd,OAAQF,IAAOI,EAAMY,EAAiBhB,GAAQU,EAASG,QAAQT,IAAQ,GAAkBN,OAAOO,UAAUY,qBAAqBV,KAAKJ,EAAQC,KAAgB/B,EAAO+B,GAAOD,EAAOC,IAAU,OAAO/B,EAMne,IAAI,GAAqB,gBAAoB,OAAQ,CACnD68B,SAAU,UACVC,SAAU,UACVj6B,EAAG,2uBACHkV,KAAM,YAGR,SAASqlB,GAAUr6B,EAAMC,GACvB,IAAIC,EAAQF,EAAKE,MACbC,EAAUH,EAAKG,QACfrC,EAAQ,GAAyBkC,EAAM,CAAC,QAAS,YAErD,OAAoB,gBAAoB,MAAO,GAAS,CACtDI,QAAS,YACT4U,KAAM,OACN3U,MAAO,6BACPnC,IAAK+B,EACL,kBAAmBE,GAClBrC,GAAQoC,EAAqB,gBAAoB,QAAS,CAC3DI,GAAIH,GACHD,GAAS,KAAM,IAGpB,IAAI,GAA0B,aAAiBm6B,IC6NhCC,G,kDAzOX,WAAYx8B,GAAQ,IAAD,8BACf,cAAMA,IAGDy8B,QAAU,KACf,EAAKC,aAAe,KAGpB,EAAK/qB,MAAQ,CACTgrB,aAAc,EAAK38B,MAAMk0B,MAAMC,OAAOxiB,MACtCyZ,aAAc,MAIlB,EAAKwR,WAAa,EAAKA,WAAW3wB,KAAhB,gBAClB,EAAK4wB,aAAetT,GAAS,EAAKsT,aAAa5wB,KAAlB,gBAA8B,KAf5C,E,gEAoBf1C,OAAOsJ,SAAS,EAAG,GACnB9S,KAAK6mB,iB,2CAIL7mB,KAAK+rB,gBACL/rB,KAAK+8B,uB,qCAIO,IAAD,OACXzjB,KAAE,qBAAqBwN,QAAQ,CAC3BC,yBAA0B,IAG9BzN,KAAE,qBAAqB0N,GAAG,UAAU,SAAC9nB,EAAG+nB,EAAcsQ,GAC7CtQ,IACD,EAAK5U,SAAS,CAAEuqB,aAAc19B,EAAEka,cAAchV,QAEzCmzB,GACD,EAAKt3B,MAAMgoB,QAAQnlB,KAAnB,wBAAyC5D,EAAEka,cAAchV,YAKrEkV,KAAEtZ,KAAK28B,cAAc/P,IAAI5sB,KAAK4R,MAAMgrB,cACpCtjB,KAAEtZ,KAAK28B,cAAcrnB,QAAQ,SAAU,EAAC,GAAO,M,sCAI1CgE,KAAE,qBAAqB8S,QAAQC,SAAS,8BACzCrsB,KAAK6mB,iB,2CAIS,IAAD,OAEjBrd,OAAOmuB,WAAa,SAACz4B,GACb,EAAKe,MAAMk0B,MAAMC,OAAOxiB,QAAU,EAAKA,MAAMgrB,cAC7C,EAAKvqB,SAAS,CAAEuqB,aAAc,EAAK38B,MAAMk0B,MAAMC,OAAOxiB,QAAS,WAC3D0H,KAAE,qBAAqBsT,IAAI,EAAK3sB,MAAMk0B,MAAMC,OAAOxiB,OACnD0H,KAAE,qBAAqBhE,QAAQ,SAAU,EAAC,GAAO,U,iCAOtDpW,GAAI,IAAD,OACJ89B,EAAY99B,EAAEka,cAActS,aAAa,aAC/C9G,KAAKqS,SAAS,CAAEuqB,aAAcI,IAAa,WACnCxzB,OAAOyzB,QAAU,KACjB,EAAKP,QAAQ5U,eAAe,CAAE/U,SAAU,SAAUgV,MAAO,UAG7D,EAAK9nB,MAAMgoB,QAAQnlB,KAAnB,wBAAyCk6B,IACzC1jB,KAAE,qBAAqBsT,IAAIoQ,GAC3B1jB,KAAE,qBAAqBhE,QAAQ,UAAU,Q,mCAIpCpW,GACTc,KAAKqS,SAAS,CAAEgZ,aAAiC,KAAnBnsB,EAAEE,OAAOgF,MAAelF,EAAEE,OAAOgF,MAAMiD,cAAgB,S,+BAI/E,IAAD,OACC61B,EAAmBzuB,EAAiBzJ,KAAKmK,QAAQU,MAAMP,MAAK,SAAAK,GAAC,MAAe,iBAAXA,EAAEH,QAEnEwE,EAASkpB,EAAmBA,EAAiBlpB,OAAS,KAEtDmpB,EAAkBD,EAAmBA,EAAiBntB,aAAe,KACrEA,EAAeotB,GAAmBn9B,KAAK4R,MAAMyZ,aAAe8R,EAAgB5Q,QAAO,SAAAtc,GAAC,OAAIA,EAAEC,cAAc7I,cAAc8lB,OAAO,EAAKvb,MAAMyZ,eAAiB,KAAK8R,EAC9JC,EAAqBD,EAAkBA,EAAgB7tB,MAAK,SAAAW,GAAC,OAAIA,EAAEC,cAAc7I,gBAAkB,EAAKuK,MAAMgrB,gBAAgB,KAE9H9O,EAAY9tB,KAAK4R,MAAMgrB,aAE7B,OACI,mCAEQM,GACA,qCACI,cAAC,EAAD,CAAQhqB,WAAW,iBACnB,qBAAKrU,UAAU,UAAf,SACI,sBAAKA,UAAU,kBAAf,UACI,sBAAKA,UAAU,kBAAf,UACI,qBAAKA,UAAU,mBAAmB6V,WAAUC,oBAAeC,EAAY,UAAvE,SACI,oBAAI/V,UAAU,QAAd,SAAuBmV,MAE3B,sBAAKnV,UAAU,gBAAgBwB,IAAK,SAAAuT,GAAG,OAAI,EAAK8oB,QAAU9oB,GAA1D,UAEQupB,EAAgBl8B,OAAS,GACzB,sBAAKpC,UAAU,qBAAf,UACI,sBAAKA,UAAU,6BAA6B6V,WAAUC,oBAAeC,EAAY,UAAjF,UACI,qBAAK/V,UAAU,mCAAf,+BAGA,qBAAKA,UAAU,YAAf,SACI,wBAAQwB,IAAK,SAAAssB,GAAM,OAAI,EAAKgQ,aAAehQ,GAA3C,SAEQwQ,EAAgBh5B,KAAI,SAACk5B,EAAa7a,GAC9B,OAAO,wBAAQpe,MAAOi5B,EAAYntB,cAAc7I,cAAzC,SAAqEg2B,EAAYntB,eAApBsS,UAKpF,sBAAK3jB,UAAU,+BAAf,UACI,uBAAO8a,UAAQ,EAACC,YAAY,SAASE,SAAU9Z,KAAK88B,eACpD,2CACA,sBAAMj+B,UAAU,mBAChB,qBAAKA,UAAU,qCAAf,SACI,cAAC,GAAD,YAIZ,sBAAKA,UAAU,0BAA0B6V,WAAUC,oBAAeC,EAAY,UAA9E,UACI,qBAAK/V,UAAU,iCACf,6BAEQkR,EAAa5L,KAAI,SAACk5B,EAAa7a,GAC3B,OAAO,oBAAI3jB,UAAWw+B,EAAYntB,iBAAmBktB,EAAqBA,EAAmBltB,cAAgB,MAAQ,UAAY,GAAgBxI,MAAO,CAACuc,OAAQ,WAA1J,SACH,qBAAKqZ,UAAWD,EAAYntB,cAAc7I,cAAe5G,QAAS,EAAKo8B,WAAvE,SAAoFQ,EAAYntB,iBADsCsS,QAOlJxiB,KAAK4R,MAAMyZ,cAAwC,IAAxBtb,EAAa9O,QACxC,qBAAKpC,UAAU,qCAAf,SACI,wEAMpB,qBAAKA,UAAU,aAAf,SAEQu+B,GACA,qCACI,sBAAKv+B,UAAU,gBAAf,UACI,qBAAKA,UAAU,sBAAsB6V,WAAUC,oBAAeC,EAAY,UAA1E,SACI,6BAAKwoB,EAAmBltB,kBAE5B,qBAAKrR,UAAU,wBAAwB6V,WAAUC,oBAAeC,EAAY,UAAWyU,wBAAyB,CAAEC,OAAQ8T,EAAmBG,sBAGjJ,sBAAK1+B,UAAU,qBAAqB6V,WAAUC,oBAAeC,EAAY,UAAzE,UACI,qBAAK/V,UAAU,2BAAf,SACI,6BAAKu+B,EAAmBI,qBAE5B,sBAAK3+B,UAAU,0BAAf,UACI,qBAAKA,UAAU,+BAAf,SACI,qBAAKA,UAAU,sCAAf,SACI,cAAC,GAAD,CAAQsY,KAAM1I,EAAiBC,mBAGvC,sBAAK7P,UAAU,+BAAf,UACI,qBAAKA,UAAU,gCAAf,2BACA,qBAAKA,UAAU,+BAAf,SAA+Cu+B,EAAmBI,yBAG1E,sBAAK3+B,UAAU,0BAAf,UACI,qBAAKA,UAAU,+BAAf,SACI,qBAAKA,UAAU,qCAAf,SACI,cAAC,GAAD,CAAOmkB,OAAQvU,EAAiBC,mBAGxC,sBAAK7P,UAAU,+BAAf,UACI,qBAAKA,UAAU,gCAAf,oBACA,mBAAG6K,KAAI,cAAS0zB,EAAmBK,mBAAqB5+B,UAAU,+BAAlE,SAAkGu+B,EAAmBK,0BAG7H,sBAAK5+B,UAAU,0BAAf,UACI,qBAAKA,UAAU,+BAAf,SACI,qBAAKA,UAAU,qCAAf,SACI,cAAC,GAAD,CAAOsY,KAAM1I,EAAiBC,mBAGtC,sBAAK7P,UAAU,+BAAf,UACI,qBAAKA,UAAU,gCAAf,sBACA,mBAAG6K,KAAM0zB,EAAmBM,gBAAiB7+B,UAAU,+BAA+BO,OAAO,SAASwmB,IAAI,aAA1G,SAAwHwX,EAAmBM,wBAI/IN,EAAmBO,mBACnB,sBAAK9+B,UAAU,0BAAf,UACI,qBAAKA,UAAU,+BAAf,SACI,qBAAKA,UAAU,sCAAf,SACI,cAAC,GAAD,CAAQsY,KAAM1I,EAAiBC,mBAGvC,sBAAK7P,UAAU,+BAAf,UACI,qBAAKA,UAAU,gCAAf,oBACA,mBAAG6K,KAAI,iBAAY0zB,EAAmBO,mBAAqB9+B,UAAU,+BAArE,SAAqGu+B,EAAmBO,iCA1DnH7P,SAoEzC,cAAC,GAAD,kB,GAjOL/uB,IAAMC,WC2GlB4+B,G,kDA7GX,WAAY39B,GAAQ,IAAD,8BACf,cAAMA,IAGDoe,KAAO,KAGZ,EAAK+C,WAAa,EAAKA,WAAWlV,KAAhB,gBAPH,E,gEAYf1C,OAAOsJ,SAAS,EAAG,K,iCAIZ5T,GAAI,IAAD,OAIV,GAHAA,EAAEmiB,iBAEkBjD,GAAYmD,SAASvhB,KAAKqe,MAC9C,CAEAD,GAAYwD,kBAAkB5hB,KAAKqe,MAEnC,IAGIwD,EAAgB,CAACtG,MAHPrc,EAAEE,OAAOmc,MAAMnX,MAAMoc,OAGPgB,SAFXtiB,EAAEE,OAAOoiB,SAASpd,OAInCgJ,EAAiB0U,SAAS,SACzBvd,MAAK,SAAAsZ,GACFgE,EAAc5D,eAAiBJ,EAC/BgE,EAAcpE,UAAYnB,GAAcoB,WAExCpB,GAAcuhB,MAAMhc,GACnBtd,MAAK,SAAAV,GACEA,GAAQA,EAAK4G,UACb6R,GAAc6F,eAGd/D,GAAYW,cAAc,EAAKV,MAC/BD,GAAYuD,kBAAkB,EAAKtD,MAC/Bxa,GAAQA,EAAK6G,QAAU7G,EAAK6G,OAAOzJ,OACnCmd,GAAYgE,cAAc,EAAK/D,KAAMxa,EAAK6G,OAAO,IAGjD0T,GAAYgE,cAAc,EAAK/D,KAAM,uC,+BAQ/C,IAAD,OACL,OACI,qCACI,cAAC,EAAD,CAAQnL,WAAW,UACnB,qBAAKrU,UAAU,UAAf,SACI,uBAAMA,UAAU,2BAAhB,UACI,sBAAKA,UAAU,2BAAf,UACI,0BAASA,UAAU,yBAAnB,UACI,qBAAKA,UAAU,wBACf,sBAAKA,UAAU,uBAAuB6V,WAAUC,oBAAeC,EAAY,UAA3E,UACI,oBAAI/V,UAAU,qBAAd,mBACA,uBAAMA,UAAU,eAAewB,IAAK,SAAAge,GAAI,OAAI,EAAKA,KAAOA,GAAMgE,SAAUriB,KAAKohB,WAA7E,UACI,sBAAKviB,UAAU,WAAf,UACI,uBAAO2Q,KAAK,QAAQjP,KAAK,QAAQoZ,UAAQ,EAACC,YAAY,mBACtD,uBAAOG,QAAQ,QAAf,4BACA,sBAAMlb,UAAU,iBAAhB,0CACA,qBAAKA,UAAU,qCAAf,SACI,cAAC,GAAD,SAGR,sBAAKA,UAAU,WAAf,UACI,uBAAO2Q,KAAK,WAAWoK,YAAY,WAAWD,UAAQ,EAACpZ,KAAK,aAC5D,uBAAOwZ,QAAQ,WAAf,sBACA,sBAAMlb,UAAU,iBAAhB,oCACA,qBAAKA,UAAU,qCAAf,SACI,cAAC,GAAD,SAGR,mBAAGA,UAAU,kBACb,0BAASA,UAAU,uBAAnB,UACI,cAAC,EAAD,CAAcA,UAAU,0BAA0B0B,KAAK,SAASC,gBAAc,EAA9E,SACI,wCAEJ,cAAC,IAAD,CAAMT,GAAG,mBAAT,SACI,oEAMpB,uBAAOlB,UAAU,qBAAqB6V,WAAUC,oBAAeC,EAAY,UAAW6N,iBAAe,MAArG,SACI,oEAEI,cAAC,IAAD,CAAM1iB,GAAG,YAAYlB,UAAU,eAA/B,kCAIZ,cAAC,GAAD,gB,GAvGJE,IAAMC,WCkKX8+B,G,kDA9JX,WAAY79B,GAAQ,IAAD,8BACf,cAAMA,IAGDoe,KAAO,KAGZ,EAAKzM,MAAQ,CACTuP,aAAa,GAIjB,EAAKjI,eAAiB,EAAKA,eAAehN,KAApB,gBACtB,EAAKkV,WAAa,EAAKA,WAAWlV,KAAhB,gBAbH,E,gEAkBf1C,OAAOsJ,SAAS,EAAG,K,uCAKnB9S,KAAKqS,SAAS,CAAE8O,aAAa,M,iCAGtBjiB,GAAI,IAAD,OACVA,EAAEmiB,iBAEF,IAAMC,EAAclD,GAAYmD,SAASvhB,KAAKqe,MAExC9C,EAAQrc,EAAEE,OAAOmc,MAAMnX,MAAMoc,OAC7BgB,EAAWtiB,EAAEE,OAAOoiB,SAASpd,MAC7Bqd,EAAUviB,EAAEE,OAAOqiB,QAAQrd,MAE7BuU,EAAY,GACZC,EAAa,GACbC,EAAW,GAYf,GAVI7Y,KAAK4R,MAAMuP,aACXxI,EAAYzZ,EAAEE,OAAOqa,SAASrV,MAAM6R,MAAM,KAAK,GAC/C4C,EAAW3Z,EAAEE,OAAOqa,SAASrV,MAAM6R,MAAM,KAAK,KAG9C0C,EAAYzZ,EAAEE,OAAOuZ,UAAUvU,MAC/BwU,EAAa1Z,EAAEE,OAAOwZ,WAAWxU,MACjCyU,EAAW3Z,EAAEE,OAAOyZ,SAASzU,OAG7Bod,IAAaC,EAGb,OAFArD,GAAYsD,eAAe1hB,KAAKqe,KAAM,UAAW,qCACjDD,GAAYuD,kBAAkB3hB,KAAKqe,MAIvC,GAAKiD,EAAL,CAEAlD,GAAYwD,kBAAkB5hB,KAAKqe,MAEnC,IAAIwD,EAAgB,CAAEtG,QAAOiG,WAAU7I,YAAWC,aAAYC,YAG1D7Y,KAAKC,MAAMk0B,MAAMC,OAAOrC,QACxBlQ,EAAckc,kBAAoB/9B,KAAKC,MAAMk0B,MAAMC,OAAOrC,OAG9D3kB,EAAiB0U,SAAS,YACrBvd,MAAK,SAAAsZ,GACFgE,EAAc5D,eAAiBJ,EAC/BgE,EAAcE,WAAa1F,GAC3BwF,EAAcpE,UAAYnB,GAAcoB,WAExCpB,GAAc0F,gBAAgBH,GACzBtd,MAAK,SAAC0d,GACCA,GACA7D,GAAYW,cAAc,EAAKV,MAC/BD,GAAYuD,kBAAkB,EAAKtD,MACnCD,GAAYsD,eAAe,EAAKrD,KAAM,QAAS,wCAG/C/B,GAAc4F,SAASL,GAClBtd,MAAK,SAAAV,GACEA,EAAK4G,UACL6R,GAAc6F,eAGd/D,GAAYW,cAAc,EAAKV,MAC/BD,GAAYuD,kBAAkB,EAAKtD,MACnCD,GAAYgE,cAAc,EAAK/D,KAAMxa,EAAK6G,OAAO,iB,+BAS3E,IAAD,OACL,OACI,qCACI,cAAC,EAAD,CAAQwI,WAAW,aACnB,qBAAKrU,UAAU,UAAf,SACI,uBAAMA,UAAU,8BAAhB,UACI,sBAAKA,UAAU,8BAAf,UACI,0BAASA,UAAU,yBAAnB,UACI,qBAAKA,UAAU,wBACf,sBAAKA,UAAU,uBAAuB6V,WAAUC,oBAAeC,EAAY,UAA3E,UACI,qBAAI/V,UAAU,qBAAd,UAAmC,sBAAMA,UAAU,eAAhB,kBAAnC,SACA,uBAAMA,UAAU,eAAewB,IAAK,SAAAge,GAAI,OAAI,EAAKA,KAAOA,GAAMgE,SAAUriB,KAAKohB,WAA7E,UACI,cAAC,GAAD,CAAelI,eAAgBlZ,KAAKkZ,iBACpC,sBAAKra,UAAU,WAAf,UACI,uBAAO2Q,KAAK,QAAQmK,UAAQ,EAACC,YAAY,mBACzC,uBAAOG,QAAQ,QAAf,4BACA,sBAAMlb,UAAU,iBAAhB,0CACA,qBAAKA,UAAU,qCAAf,SACI,cAAC,GAAD,SAGR,sBAAKA,UAAU,WAAf,UACI,uBAAO2Q,KAAK,WAAWoK,YAAY,WAAWD,UAAQ,EAACpZ,KAAK,aAC5D,uBAAOwZ,QAAQ,WAAf,sBACA,sBAAMlb,UAAU,iBAAhB,oCACA,qBAAKA,UAAU,qCAAf,SACI,cAAC,GAAD,SAGR,sBAAKA,UAAU,WAAf,UACI,uBAAO2Q,KAAK,UAAUoK,YAAY,mBAAmBD,UAAQ,EAACpZ,KAAK,aACnE,uBAAOwZ,QAAQ,WAAf,8BACA,sBAAMlb,UAAU,iBAAhB,oCACA,qBAAKA,UAAU,qCAAf,SACI,cAAC,GAAD,SAGR,mBAAGA,UAAU,kBACb,yBAASA,UAAU,6BAAnB,SACI,cAAC,EAAD,CAAcA,UAAU,0BAA0B0B,KAAK,SAASC,gBAAc,EAA9E,SACI,4DAMpB,uBAAO3B,UAAU,qBAAqB6V,WAAUC,oBAAeC,EAAY,UAAW6N,iBAAe,MAArG,SACI,iEAEI,cAAC,IAAD,CAAM1iB,GAAG,SAASlB,UAAU,eAA5B,2BAIZ,cAAC,GAAD,gB,GAxJDE,IAAMC,WCqHdg/B,G,kDApHX,WAAY/9B,GAAQ,IAAD,8BACf,cAAMA,IAGDy8B,QAAU,KACf,EAAKuB,UAAY,KACjB,EAAK5f,KAAO,KAGZ,EAAK+C,WAAa,EAAKA,WAAWlV,KAAhB,gBATH,E,gEAcf1C,OAAOsJ,SAAS,EAAG,K,iCAIZ5T,GAAI,IAAD,OAIV,GAHAA,EAAEmiB,iBAEkBjD,GAAYmD,SAASvhB,KAAKqe,MAC9C,CAEAD,GAAYwD,kBAAkB5hB,KAAKqe,MAEnC,IAEIV,EAAwB,CAACpC,MAFfrc,EAAEE,OAAOmc,MAAMnX,MAAMoc,QAInCpT,EAAiB0U,SAAS,kBACzBvd,MAAK,SAAAsZ,GACFF,EAAsBM,eAAiBJ,EAEvCvB,GAAc4hB,eAAevgB,GAC5BpZ,MAAK,SAAAV,GACEA,EAAK4G,WACL,EAAKiyB,QAAQpqB,UAAUnP,IAAI,YAC3BmW,KAAE,EAAK2kB,WAAWE,QAAQ,CAAEtY,QAAS,GAAK,KAAK,WAC3CvM,KAAEtZ,MACGo+B,KACG,0IAEHD,QAAQ,CAAEtY,QAAS,GAAK,UAIjC,EAAK6W,QAAQpqB,UAAUnP,IAAI,YAC3BmW,KAAE,EAAK2kB,WAAWE,QAAQ,CAAEtY,QAAS,GAAK,KAAK,WAC3CvM,KAAEtZ,MACGo+B,KACG,2LAEHD,QAAQ,CAAEtY,QAAS,GAAK,kB,+BAkBvC,IAAD,OACL,OACI,qCACI,cAAC,EAAD,IACA,qBAAKhnB,UAAU,UAAf,SACI,uBAAMA,UAAU,oBAAhB,UACI,sBAAKA,UAAU,2BAAf,UACI,0BAASA,UAAU,yBAAnB,UACI,qBAAKA,UAAU,wBACf,sBAAKA,UAAU,uBAAuB6V,WAAUC,oBAAeC,EAAY,UAAWvU,IAAK,SAAAuT,GAAG,OAAI,EAAK8oB,QAAU9oB,GAAjH,UACI,qBAAI/U,UAAU,qBAAd,UAAmC,sBAAMA,UAAU,eAAhB,oBAAnC,qBACA,oBAAGwB,IAAK,SAAAsP,GAAC,OAAI,EAAKsuB,UAAYtuB,GAA9B,uDAA2E,uBAA3E,oCACA,uBAAM9Q,UAAU,eAAewB,IAAK,SAAAge,GAAI,OAAI,EAAKA,KAAOA,GAAMgE,SAAUriB,KAAKohB,WAA7E,UACI,sBAAKviB,UAAU,WAAf,UACI,uBAAO2Q,KAAK,QAAQmK,UAAQ,EAACC,YAAY,mBACzC,uBAAOG,QAAQ,QAAf,4BACA,sBAAMlb,UAAU,iBAAiBwB,IAAK,SAAA07B,GAAI,OAAI,EAAKsC,WAAatC,GAAhE,0CACA,qBAAKl9B,UAAU,qCAAf,SACI,cAAC,GAAD,SAGR,mBAAGA,UAAU,kBACb,yBAASA,UAAU,uBAAnB,SACI,cAAC,EAAD,CAAcA,UAAU,0BAA0B0B,KAAK,SAASC,gBAAc,EAA9E,SACI,gEAMpB,uBAAO3B,UAAU,qBAAqB6V,WAAUC,oBAAeC,EAAY,UAAW6N,iBAAe,MAArG,SACI,iEAEI,cAAC,IAAD,CAAM1iB,GAAG,SAASlB,UAAU,eAA5B,2BAIZ,cAAC,GAAD,gB,GA9GKE,IAAMC,WCwGpBs/B,G,kDAzGX,WAAYr+B,GAAQ,IAAD,8BACf,cAAMA,IAGDoe,KAAO,KAGZ,EAAK+C,WAAa,EAAKA,WAAWlV,KAAhB,gBAPH,E,gEAYf1C,OAAOsJ,SAAS,EAAG,K,iCAIZ5T,GAAI,IAAD,OACVA,EAAEmiB,iBAEF,IAAMC,EAAclD,GAAYmD,SAASvhB,KAAKqe,MAExCR,EAAQ7d,KAAKC,MAAMk0B,MAAMC,OAAOvW,MAChC2D,EAAWtiB,EAAEE,OAAOoiB,SAASpd,MAGnC,GAAIod,IAFYtiB,EAAEE,OAAOqiB,QAAQrd,MAK7B,OAFAga,GAAYsD,eAAe1hB,KAAKqe,KAAM,UAAW,qCACjDD,GAAYuD,kBAAkB3hB,KAAKqe,MAIvC,GAAIiD,EAAJ,CAEAlD,GAAYwD,kBAAkB5hB,KAAKqe,MAEnC,IAAIT,EAAuB,CAACC,QAAO2D,YAEnCpU,EAAiB0U,SAAS,iBACzBvd,MAAK,SAAAsZ,GACFD,EAAqBK,eAAiBJ,EAEtCvB,GAAciiB,cAAc3gB,GAC3BrZ,MAAK,SAAAV,GACEA,EAAK4G,UACL6R,GAAc6F,eAGd/D,GAAYW,cAAc,EAAKV,MAC/BD,GAAYuD,kBAAkB,EAAKtD,MACnCD,GAAYgE,cAAc,EAAK/D,KAAMxa,EAAK6G,OAAO,c,+BAOvD,IAAD,OACL,OACI,qCACI,cAAC,EAAD,IACA,qBAAK7L,UAAU,UAAf,SACI,uBAAMA,UAAU,oBAAhB,UACI,sBAAKA,UAAU,2BAAf,UACI,0BAASA,UAAU,yBAAnB,UACI,qBAAKA,UAAU,wBACf,sBAAKA,UAAU,uBAAuB6V,WAAUC,oBAAeC,EAAY,UAA3E,UACI,qBAAI/V,UAAU,qBAAd,UAAmC,sBAAMA,UAAU,eAAhB,mBAAnC,oBACA,yDACA,uBAAMA,UAAU,eAAewB,IAAK,SAAAge,GAAI,OAAI,EAAKA,KAAOA,GAAMgE,SAAUriB,KAAKohB,WAA7E,UACI,sBAAKviB,UAAU,WAAf,UACI,uBAAO2Q,KAAK,WAAWoK,YAAY,WAAWD,UAAQ,EAACpZ,KAAK,aAC5D,uBAAOwZ,QAAQ,WAAf,0BACA,sBAAMlb,UAAU,iBAAhB,oCACA,qBAAKA,UAAU,qCAAf,SACI,cAAC,GAAD,SAGR,sBAAKA,UAAU,WAAf,UACI,uBAAO2Q,KAAK,UAAUoK,YAAY,wBAAwBD,UAAQ,EAACpZ,KAAK,aACxE,uBAAOwZ,QAAQ,WAAf,mCACA,sBAAMlb,UAAU,iBAAhB,oCACA,qBAAKA,UAAU,qCAAf,SACI,cAAC,GAAD,SAGR,mBAAGA,UAAU,kBACb,yBAASA,UAAU,uBAAnB,SACI,cAAC,EAAD,CAAcA,UAAU,0BAA0B0B,KAAK,SAASC,gBAAc,EAA9E,SACI,4DAMpB,uBAAO3B,UAAU,qBAAqB6V,WAAUC,oBAAeC,EAAY,UAAW6N,iBAAe,WAGzG,cAAC,GAAD,gB,GAnGI1jB,IAAMC,W,OCXlC,SAAS,KAA2Q,OAA9P,GAAW6B,OAAOC,QAAU,SAAU1B,GAAU,IAAK,IAAI2B,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CAAE,IAAIG,EAASF,UAAUD,GAAI,IAAK,IAAII,KAAOD,EAAcL,OAAOO,UAAUC,eAAeC,KAAKJ,EAAQC,KAAQ/B,EAAO+B,GAAOD,EAAOC,IAAY,OAAO/B,IAA2BmC,MAAMvB,KAAMgB,WAEhT,SAAS,GAAyBE,EAAQO,GAAY,GAAc,MAAVP,EAAgB,MAAO,GAAI,IAAkEC,EAAKJ,EAAnE3B,EAEzF,SAAuC8B,EAAQO,GAAY,GAAc,MAAVP,EAAgB,MAAO,GAAI,IAA2DC,EAAKJ,EAA5D3B,EAAS,GAAQsC,EAAab,OAAOc,KAAKT,GAAqB,IAAKH,EAAI,EAAGA,EAAIW,EAAWT,OAAQF,IAAOI,EAAMO,EAAWX,GAAQU,EAASG,QAAQT,IAAQ,IAAa/B,EAAO+B,GAAOD,EAAOC,IAAQ,OAAO/B,EAFxM,CAA8B8B,EAAQO,GAAuB,GAAIZ,OAAOiB,sBAAuB,CAAE,IAAIC,EAAmBlB,OAAOiB,sBAAsBZ,GAAS,IAAKH,EAAI,EAAGA,EAAIgB,EAAiBd,OAAQF,IAAOI,EAAMY,EAAiBhB,GAAQU,EAASG,QAAQT,IAAQ,GAAkBN,OAAOO,UAAUY,qBAAqBV,KAAKJ,EAAQC,KAAgB/B,EAAO+B,GAAOD,EAAOC,IAAU,OAAO/B,EAMne,IAAI,GAAqB,gBAAoB,OAAQ,CACnD68B,SAAU,UACVC,SAAU,UACVj6B,EAAG,keACH+gB,OAAQ,UACRC,YAAa,EACb9L,KAAM,gBAGJ,GAAqB,gBAAoB,SAAU,CACrD8kB,SAAU,UACVC,SAAU,UACVpkB,GAAI,OACJC,GAAI,QACJ9H,EAAG,IACH+S,OAAQ,UACRC,YAAa,EACb9L,KAAM,gBAGJ,GAAqB,gBAAoB,OAAQ,CACnD8kB,SAAU,UACVC,SAAU,UACVj6B,EAAG,+MACH+gB,OAAQ,UACRC,YAAa,EACbC,cAAe,QACf/L,KAAM,gBAGR,SAASqnB,GAAYr8B,EAAMC,GACzB,IAAIC,EAAQF,EAAKE,MACbC,EAAUH,EAAKG,QACfrC,EAAQ,GAAyBkC,EAAM,CAAC,QAAS,YAErD,OAAoB,gBAAoB,MAAO,GAAS,CACtDI,QAAS,YACT4U,KAAM,OACN3U,MAAO,6BACPnC,IAAK+B,EACL,kBAAmBE,GAClBrC,GAAQoC,EAAqB,gBAAoB,QAAS,CAC3DI,GAAIH,GACHD,GAAS,KAAM,GAAO,GAAO,IAGlC,IAAI,GAA0B,aAAiBm8B,ICtD/C,SAAS,KAA2Q,OAA9P,GAAW39B,OAAOC,QAAU,SAAU1B,GAAU,IAAK,IAAI2B,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CAAE,IAAIG,EAASF,UAAUD,GAAI,IAAK,IAAII,KAAOD,EAAcL,OAAOO,UAAUC,eAAeC,KAAKJ,EAAQC,KAAQ/B,EAAO+B,GAAOD,EAAOC,IAAY,OAAO/B,IAA2BmC,MAAMvB,KAAMgB,WAEhT,SAAS,GAAyBE,EAAQO,GAAY,GAAc,MAAVP,EAAgB,MAAO,GAAI,IAAkEC,EAAKJ,EAAnE3B,EAEzF,SAAuC8B,EAAQO,GAAY,GAAc,MAAVP,EAAgB,MAAO,GAAI,IAA2DC,EAAKJ,EAA5D3B,EAAS,GAAQsC,EAAab,OAAOc,KAAKT,GAAqB,IAAKH,EAAI,EAAGA,EAAIW,EAAWT,OAAQF,IAAOI,EAAMO,EAAWX,GAAQU,EAASG,QAAQT,IAAQ,IAAa/B,EAAO+B,GAAOD,EAAOC,IAAQ,OAAO/B,EAFxM,CAA8B8B,EAAQO,GAAuB,GAAIZ,OAAOiB,sBAAuB,CAAE,IAAIC,EAAmBlB,OAAOiB,sBAAsBZ,GAAS,IAAKH,EAAI,EAAGA,EAAIgB,EAAiBd,OAAQF,IAAOI,EAAMY,EAAiBhB,GAAQU,EAASG,QAAQT,IAAQ,GAAkBN,OAAOO,UAAUY,qBAAqBV,KAAKJ,EAAQC,KAAgB/B,EAAO+B,GAAOD,EAAOC,IAAU,OAAO/B,EAMne,IAAI,GAAqB,gBAAoB,OAAQ,CACnD6C,EAAG,6PACH+gB,OAAQ,UACRC,YAAa,EACbC,cAAe,QACf/L,KAAM,gBAGJ,GAAqB,gBAAoB,OAAQ,CACnDlV,EAAG,+GACH+gB,OAAQ,UACRC,YAAa,EACb9L,KAAM,gBAGJ,GAAqB,gBAAoB,OAAQ,CACnDlV,EAAG,yKACH+gB,OAAQ,UACRC,YAAa,EACb9L,KAAM,gBAGJ,GAAqB,gBAAoB,OAAQ,CACnDuT,GAAI,QACJC,GAAI,QACJC,GAAI,QACJC,GAAI,QACJ7H,OAAQ,UACRC,YAAa,EACbC,cAAe,QACf/L,KAAM,gBAGR,SAASsnB,GAAWt8B,EAAMC,GACxB,IAAIC,EAAQF,EAAKE,MACbC,EAAUH,EAAKG,QACfrC,EAAQ,GAAyBkC,EAAM,CAAC,QAAS,YAErD,OAAoB,gBAAoB,MAAO,GAAS,CACtDI,QAAS,YACT4U,KAAM,OACN3U,MAAO,6BACPnC,IAAK+B,EACL,kBAAmBE,GAClBrC,GAAQoC,EAAqB,gBAAoB,QAAS,CAC3DI,GAAIH,GACHD,GAAS,KAAM,GAAO,GAAO,GAAO,IAGzC,IAAI,GAA0B,aAAiBo8B,IC4EhCC,G,kLAlHPl1B,OAAOsJ,SAAS,EAAG,K,+BAKnB,IAAM6rB,EAAWlwB,EAAiBzJ,KAAKmK,QAAQU,MAAMP,MAAK,SAAAK,GAAC,MAAe,iBAAXA,EAAEH,QAE3DwE,EAAS2qB,EAAWA,EAAS3qB,OAAS,KACtCxP,EAAOm6B,EAAWA,EAASxG,SAAW,KAEtCxT,EAAWlW,EAAiBzJ,KAAKsL,KAEjCiL,EAAQoJ,EAASQ,UACjBJ,EAAQJ,EAASK,UACjB4Z,EAAWja,EAASU,YAAYC,OAChCuZ,EAAWla,EAASU,YAAYG,KAAKD,OAAO,KAAMZ,EAASU,YAAYzT,MAAO,IAAK+S,EAASU,YAAYI,KACxGqZ,EAAcF,EAASrZ,OAAO,IAAKsZ,GACnC76B,EAAM2gB,EAASnV,KACfyV,EAAMN,EAASO,QAErB,OACI,mCAEQyZ,GAAYha,GACZ,qCACI,cAAC,EAAD,IACA,qBAAK9lB,UAAU,UAAf,SACI,sBAAKA,UAAU,gCAAf,UACI,sBAAKA,UAAU,oCAAf,UACI,sBAAKA,UAAU,qCAAqC6V,WAAUC,oBAAeC,EAAY,UAAzF,UACI,oBAAI/V,UAAU,QAAd,SAAuBmV,IACvB,mBAAGnV,UAAU,cAAb,SAA4B2F,OAEhC,qBAAK3F,UAAU,+BAA+B6V,WAAUC,oBAAeC,EAAY,UAAnF,SACI,qBAAI/V,UAAU,oCAAd,UACI,qBAAIA,UAAU,yCAAd,UACI,sBAAKA,UAAU,8CAAf,UACI,qBAAKA,UAAU,+CAAf,oBACA,mBAAG6K,KAAI,iBAAY6R,GAASnc,OAAO,SAASwmB,IAAI,aAAhD,SACI,qBAAK/mB,UAAU,+CAAf,SAA+D0c,SAGvE,qBAAK1c,UAAU,8CAAf,SACI,qBAAKA,UAAU,sCAAf,SACI,cAAC,GAAD,CAAQsY,KAAM1I,EAAiBC,sBAI3C,qBAAI7P,UAAU,yCAAd,UACI,sBAAKA,UAAU,8CAAf,UACI,qBAAKA,UAAU,+CAAf,oBACA,mBAAG6K,KAAI,cAASqb,GAAhB,SACI,qBAAKlmB,UAAU,+CAAf,SAA+DkmB,SAGvE,qBAAKlmB,UAAU,8CAAf,SACI,qBAAKA,UAAU,qCAAf,SACI,cAAC,GAAD,CAAOmkB,OAAQvU,EAAiBC,sBAI5C,qBAAI7P,UAAU,yCAAd,UACI,sBAAKA,UAAU,8CAAf,UACI,qBAAKA,UAAU,+CAAf,8BACA,mBAAG6K,KAAI,oCAA+Bo1B,GAAe1/B,OAAO,SAASwmB,IAAI,aAAzE,SACI,sBAAK/mB,UAAU,+CAAf,UAA+D+/B,EAAS,uBAAUC,UAG1F,qBAAKhgC,UAAU,8CAAf,SACI,qBAAKA,UAAU,wCAAf,SACI,cAAC,GAAD,CAAUmkB,OAAQvU,EAAiBC,sBAI/C,qBAAI7P,UAAU,yCAAd,UACI,sBAAKA,UAAU,8CAAf,UACI,qBAAKA,UAAU,+CAAf,sBACA,mBAAG6K,KAAI,kBAAa1F,GAAO5E,OAAO,SAASwmB,IAAI,aAA/C,SACI,sBAAK/mB,UAAU,+CAAf,qBAAuEmF,UAG/E,qBAAKnF,UAAU,8CAAf,SACI,qBAAKA,UAAU,qCAAf,SACI,cAAC,GAAD,CAAOsY,KAAM1I,EAAiBC,sBAI1C,qBAAI7P,UAAU,yCAAd,UACI,sBAAKA,UAAU,8CAAf,UACI,qBAAKA,UAAU,+CAAf,kBACA,mBAAG6K,KAAI,cAASub,GAAhB,SACI,qBAAKpmB,UAAU,+CAAf,SAA+DomB,SAGvE,qBAAKpmB,UAAU,8CAAf,SACI,qBAAKA,UAAU,uCAAf,SACI,cAAC,GAAD,CAASmkB,OAAQvU,EAAiBC,8BAO1D,cAAC,GAAD,IACA,cAAC,GAAD,kB,GA5Gb3P,IAAMC,WCHV+/B,I,OADI,I,oGAPHC,GAGR,OAAO94B,EAAYV,KAFP,eAEiBw5B,O,OC0NtBC,G,kDA9MX,WAAYh/B,GAAQ,IAAD,8BACf,cAAMA,IAGDi/B,eAAiB,IAAI7jB,MAAM,IAChC,EAAK8jB,aAAe,KACpB,EAAK9a,eAAiB,KAGtB,EAAK+a,mBAAqB,EAAKA,mBAAmBlzB,KAAxB,gBAC1B,EAAKmzB,eAAiB,EAAKA,eAAenzB,KAApB,gBAVP,E,gEAef1C,OAAOsJ,SAAS,EAAG,GACnB9S,KAAKs/B,mB,2CAILt/B,KAAKs/B,mB,uCAIS,IAAD,iBACMt/B,KAAKk/B,gBADX,IACb,2BAAwC,CAAC,IAA9BnO,EAA6B,QAC9BkN,EAAY3kB,KAAEyX,GAAMzhB,KAAK,gDACzB4I,IAAW+lB,EAAU/lB,SAAW,IACtC+lB,EAAUxE,IAAI,aAAcvhB,IAJnB,iC,gCAQP+lB,GACN,IAAM/lB,IAAW+lB,EAAU/lB,SAAW,IACtC+lB,EAAUxE,IAAI,aAAcvhB,K,sCAGf,IAAD,iBACOlY,KAAKk/B,gBADZ,IACZ,2BAAwC,CAAC,IAA9BnO,EAA6B,QACpC,GAAIA,EAAKze,UAAU0M,SAAS,WAAY,CACpC,IAAMif,EAAY3kB,KAAEyX,GAAMzhB,KAAK,gDAC/BtP,KAAKu/B,UAAUtB,GACflN,EAAKze,UAAUC,OAAO,aALlB,iC,yCAWGrT,GACf,IAAM6xB,EAAO7xB,EAAEka,cAAcomB,cACvBvB,EAAY3kB,KAAEyX,GAAMzhB,KAAK,gDAE1ByhB,EAAKze,UAAU0M,SAAS,WAOzBhf,KAAKu/B,UAAUtB,IANfA,EAAUzkB,KAAK,GAAG,WACdykB,EAAUxE,IAAI,aAAc,OAEhCz5B,KAAKy/B,iBAMT1O,EAAKze,UAAUotB,OAAO,a,qCAGXxgC,GAAI,IAAD,OAId,GAHAA,EAAEmiB,iBAEkBjD,GAAYmD,SAASvhB,KAAKm/B,cAC9C,CAEA/gB,GAAYwD,kBAAkB5hB,KAAKm/B,cAEnC,IAGIH,EAAa,CAACzjB,MAHJrc,EAAEE,OAAOmc,MAAMnX,MAAMoc,OAGVmf,SAFRzgC,EAAEE,OAAOugC,SAASv7B,OAInCgJ,EAAiB0U,SAAS,UACzBvd,MAAK,SAAAsZ,GACFmhB,EAAW/gB,eAAiBJ,EAE5BkhB,GAAWa,YAAYZ,GACtBz6B,MAAK,SAAAV,GACEA,EAAK4G,UACL,EAAK4Z,eAAe/R,UAAUnP,IAAI,aAGlCib,GAAYW,cAAc,EAAKogB,cAC/B/gB,GAAYuD,kBAAkB,EAAKwd,cACnC/gB,GAAYsD,eAAe,EAAKyd,aAAc,WAAYt7B,EAAK6G,OAAO,c,+BAO5E,IAAD,OACCm1B,EAAUpxB,EAAiBzJ,KAAKmK,QAAQU,MAAMP,MAAK,SAAAK,GAAC,MAAe,QAAXA,EAAEH,QAE1DwE,EAAS6rB,EAAUA,EAAQ7rB,OAAS,KACpC8rB,EAAOD,EAAUA,EAAQC,KAAO,KAKtC,OAHA78B,QAAQL,IAAI,2BAA4B6L,EAAiBzJ,MACzD/B,QAAQL,IAAI,aAAci9B,GAGtB,mCAEQA,GACA,qCACI,cAAC,EAAD,IACA,qBAAKhhC,UAAU,UAAf,SACI,sBAAKA,UAAU,mBAAf,UACI,sBAAKA,UAAU,mBAAf,UACI,qBAAKA,UAAU,oBAAoB6V,WAAUC,oBAAeC,EAAY,UAAxE,SACI,qBAAK/V,UAAU,4BAAf,SACI,oBAAIA,UAAU,QAAd,SAAuBmV,QAG/B,qBAAKnV,UAAU,gBAAf,SACI,qBAAKA,UAAU,wBAAf,SACI,oBAAIA,UAAU,0BAAd,SAEQihC,EAAK37B,KAAI,SAAC47B,EAAKvd,GACX,OAAO,qBAAI3jB,UAAU,+BAA+B6V,WAAUC,oBAAeC,EAAY,UAAuBvU,IAAK,SAAA2/B,GAAE,OAAI,EAAKd,eAAe1c,GAASwd,GAAjJ,UACH,sBAAKnhC,UAAU,oCAAoC4B,QAAS,EAAK2+B,mBAAjE,UACI,oBAAIvgC,UAAU,0CAA0CwqB,wBAAyB,CAAEC,OAAQyW,EAAIJ,YAC/F,sBAAM9gC,UAAU,yCAAhB,SACI,qBAAKA,UAAU,yBAGvB,qBAAKA,UAAU,sCACf,qBAAKA,UAAU,uCAAf,SACI,qBAAKA,UAAU,8CAA8CwqB,wBAAyB,CAAEC,OAAQyW,EAAIE,cATHzd,YAiB7H,qBAAK3jB,UAAU,kBAAf,SACI,qBAAKA,UAAU,0BAAf,SACI,qBAAKA,UAAU,uBAAuB6V,WAAUC,oBAAeC,EAAY,UAA3E,SACI,sBAAK/V,UAAU,+BAAf,UACI,qBAAKA,UAAU,6BAAf,SACI,+BAAI,sBAAMA,UAAU,eAAhB,qCAAJ,0BAEJ,qBAAKA,UAAU,4BAAf,SACI,uBAAMwB,IAAK,SAAAge,GAAI,OAAI,EAAK8gB,aAAe9gB,GAAMgE,SAAUriB,KAAKq/B,eAA5D,UACI,0BAASxgC,UAAU,oCAAnB,UACI,qBAAKA,UAAU,gBAAf,SACI,sBAAKA,UAAU,WAAf,UACI,0BAAU+a,YAAY,gBAAgBD,UAAQ,EAACnK,KAAK,aACpD,uBAAOuK,QAAQ,WAAf,2BACA,sBAAMlb,UAAU,mBAChB,qBAAKA,UAAU,qCAAf,SACI,cAAC,GAAD,WAIZ,qBAAKA,UAAU,gBAAf,SACI,sBAAKA,UAAU,WAAf,UACI,uBAAO2Q,KAAK,QAAQjP,KAAK,QAAQoZ,UAAQ,EAACC,YAAY,mBACtD,uBAAOG,QAAQ,QAAf,4BACA,sBAAMlb,UAAU,mBAChB,qBAAKA,UAAU,qCAAf,SACI,cAAC,GAAD,WAIZ,qBAAKA,UAAU,kBAAf,SACI,cAAC,EAAD,CAAcA,UAAU,0BAA0B0B,KAAK,SAASC,gBAAc,EAA9E,yBAKR,mBAAG3B,UAAU,gBAAb,kDACA,0BAASA,UAAU,6CAA6CwB,IAAK,SAAAokB,GAAO,OAAI,EAAKJ,eAAiBI,GAAtG,UACI,iCACI,qBAAK5lB,UAAU,8BAAf,SACQ,cAAC,GAAD,CAAWmkB,OAAQvU,EAAiBC,mBAGhD,+BAAI,sBAAM7P,UAAU,eAAhB,uBAAJ,wBACA,gFAShC,cAAC,GAAD,IACA,cAAC,GAAD,kB,GAtMdE,IAAMC,W,OCjBjB,SAASkhC,GAAU17B,GACtB,IAAKA,EAAM,MAAO,CAAC,KAAM,MAEzB,IAAI27B,EAAS5R,KAAK6R,MAAM57B,EAAKvD,OAAS,GAClCo/B,EAAS77B,EAAK87B,YAAY,IAAKH,GAC/BI,EAAQ/7B,EAAK5C,QAAQ,IAAKu+B,EAAS,GAWvC,OARIA,GADY,IAAZE,IAA6B,IAAXE,GAAgBJ,EAASE,GAAUE,EAAQJ,EACpDI,EAEAF,EAMN,CAHE77B,EAAKg8B,OAAO,EAAGL,GACf37B,EAAKg8B,OAAOL,EAAS,ICd3B,SAASM,GAAWC,GACvB,IAAMC,EAAOpS,KAAKC,KAAKkS,EAAKz/B,OAAS,GAKrC,MAAO,CAHWy/B,EAAKE,OAAO,EAAGD,GACdD,EAAKE,QAAQD,ICJpC,SAAS,KAA2Q,OAA9P,GAAW9/B,OAAOC,QAAU,SAAU1B,GAAU,IAAK,IAAI2B,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CAAE,IAAIG,EAASF,UAAUD,GAAI,IAAK,IAAII,KAAOD,EAAcL,OAAOO,UAAUC,eAAeC,KAAKJ,EAAQC,KAAQ/B,EAAO+B,GAAOD,EAAOC,IAAY,OAAO/B,IAA2BmC,MAAMvB,KAAMgB,WAEhT,SAAS,GAAyBE,EAAQO,GAAY,GAAc,MAAVP,EAAgB,MAAO,GAAI,IAAkEC,EAAKJ,EAAnE3B,EAEzF,SAAuC8B,EAAQO,GAAY,GAAc,MAAVP,EAAgB,MAAO,GAAI,IAA2DC,EAAKJ,EAA5D3B,EAAS,GAAQsC,EAAab,OAAOc,KAAKT,GAAqB,IAAKH,EAAI,EAAGA,EAAIW,EAAWT,OAAQF,IAAOI,EAAMO,EAAWX,GAAQU,EAASG,QAAQT,IAAQ,IAAa/B,EAAO+B,GAAOD,EAAOC,IAAQ,OAAO/B,EAFxM,CAA8B8B,EAAQO,GAAuB,GAAIZ,OAAOiB,sBAAuB,CAAE,IAAIC,EAAmBlB,OAAOiB,sBAAsBZ,GAAS,IAAKH,EAAI,EAAGA,EAAIgB,EAAiBd,OAAQF,IAAOI,EAAMY,EAAiBhB,GAAQU,EAASG,QAAQT,IAAQ,GAAkBN,OAAOO,UAAUY,qBAAqBV,KAAKJ,EAAQC,KAAgB/B,EAAO+B,GAAOD,EAAOC,IAAU,OAAO/B,EAMne,IAAI,GAAqB,gBAAoB,OAAQ,CACnD6C,EAAG,yaACHkV,KAAM,YAGR,SAAS0pB,GAAa1+B,EAAMC,GAC1B,IAAIC,EAAQF,EAAKE,MACbC,EAAUH,EAAKG,QACfrC,EAAQ,GAAyBkC,EAAM,CAAC,QAAS,YAErD,OAAoB,gBAAoB,MAAO,GAAS,CACtDI,QAAS,YACT4U,KAAM,OACN3U,MAAO,6BACPnC,IAAK+B,EACL,kBAAmBE,GAClBrC,GAAQoC,EAAqB,gBAAoB,QAAS,CAC3DI,GAAIH,GACHD,GAAS,KAAM,IAGpB,IAAI,GAA0B,aAAiBw+B,ICgKhCC,G,kDA/KX,WAAY7gC,GAAQ,IAAD,8BACf,cAAMA,IAGD8gC,UAAY,IAAI1lB,MAAM,IAG3B,EAAK2lB,WAAa,EAAKA,WAAW90B,KAAhB,gBAPH,E,gEAYf1C,OAAOsJ,SAAS,EAAG,K,iCAIZ5T,GACP,IADU,EACJ+hC,EAAQ/hC,EAAEka,cAActS,aAAa,SADjC,eAEQ9G,KAAK+gC,WAFb,IAEV,2BAAkC,CAAC,IAAxB1gC,EAAuB,QAC9B,GAAIA,EAAIyG,aAAa,WAAam6B,EAE9B,YADA5gC,EAAIynB,eAAe,CAAE/U,SAAU,SAAUgV,MAAO,YAJ9C,iC,+BAWJ,IAAD,OACCmZ,EAAazyB,EAAiBzJ,KAAKmK,QAAQU,MAAMP,MAAK,SAAAK,GAAC,MAAe,YAAXA,EAAEH,QAE7DwE,EAASktB,EAAaA,EAAWltB,OAAS,KAC1CmtB,EAAgBD,EAAaA,EAAWC,cAAgB,KACxD38B,EAAO08B,EAAaA,EAAW18B,KAAO,KACtC48B,EAASF,EAAaA,EAAWE,OAAS,KAN3C,EAQkBlB,GAAU17B,GAR5B,mBAQE68B,EARF,KAQSC,EART,KAUL,OACI,mCAEQJ,GACA,qCACI,cAAC,EAAD,IACA,sBAAKriC,UAAU,UAAf,UACI,qBAAKA,UAAU,sBAAf,SACI,sBAAKA,UAAU,sBAAf,UACI,qBAAKA,UAAU,uBAAuB6V,WAAUC,oBAAeC,EAAY,UAA3E,SACI,oBAAI/V,UAAU,QAAd,SAAuBmV,MAE3B,sBAAKnV,UAAU,gBAAgB6V,WAAUC,oBAAeC,EAAY,UAApE,UACI,qBAAI/V,UAAU,QAAd,6BAAuCsiC,EAAvC,OACA,sBAAKtiC,UAAU,OAAf,UACI,qBAAKA,UAAU,SAAf,SACI,4BAAG,sBAAMA,UAAU,eAAewqB,wBAAyB,CAAEC,OAAQ+X,SAEzE,qBAAKxiC,UAAU,SAAf,SACI,4BAAG,sBAAMA,UAAU,eAAewqB,wBAAyB,CAAEC,OAAQgY,eAIjF,sBAAKziC,UAAU,2BAA2B6V,WAAUC,oBAAeC,EAAY,UAA/E,UACI,oBAAI/V,UAAU,QAAd,8BACA,sBAAKA,UAAU,gBAAf,UACI,qBAAKA,UAAU,uBAEXuiC,EAAOngC,QAAU,IACjB,6BAEQmgC,EAAOj9B,KAAI,SAAC88B,EAAOze,GACf,OAAO,6BACH,wBAAQye,MAAOA,EAAMzxB,KAAKnI,cAAek6B,MAAM,4BAA4B9gC,QAAS,EAAKugC,WAAzF,SAAsGC,EAAMzxB,QADhGgT,QAQ5B4e,EAAOngC,OAAS,IAChB,qCACI,6BAEQmgC,EAAOlrB,MAAM,EAAGqY,KAAKC,KAAK4S,EAAOngC,OAAS,IAAIkD,KAAI,SAAC88B,EAAOze,GACtD,OAAO,6BACH,wBAAQye,MAAOA,EAAMzxB,KAAKnI,cAAek6B,MAAM,4BAA4B9gC,QAAS,EAAKugC,WAAzF,SAAsGC,EAAMzxB,QADhGgT,QAM5B,6BAEQ4e,EAAOlrB,MAAMqY,KAAKC,KAAK4S,EAAOngC,OAAS,GAAImgC,EAAOngC,QAAQkD,KAAI,SAAC88B,EAAOze,GAClE,OAAO,6BACH,wBAAQye,MAAOA,EAAMzxB,KAAKnI,cAAek6B,MAAM,4BAA4B9gC,QAAS,EAAKugC,WAAzF,SAAsGC,EAAMzxB,QADhGgT,WAQpC,qBAAK3jB,UAAU,wBAAf,SACI,qBAAKA,UAAU,0CAAf,SACI,cAAC,GAAD,CAAWsY,KAAM1I,EAAiBC,yBAKlD,qBAAK7P,UAAU,mBAAmB6V,WAAUC,oBAAeC,EAAY,UAAvE,SAEQwsB,EAAOj9B,KAAI,SAAC88B,EAAOze,GACf,GAA8B,IAA1Bye,EAAM7xB,SAASnO,OACf,OAAO,sBAAKpC,UAAU,QAAoBoiC,MAAOA,EAAMzxB,KAAKnI,cAAehH,IAAK,SAAAuT,GAAG,OAAI,EAAKmtB,UAAUve,GAAS5O,GAAxG,UACH,oBAAI/U,UAAU,cAAd,SAA6BoiC,EAAMzxB,OACnC,qBAAK3Q,UAAU,OAAf,SAEQoiC,EAAM7xB,SAASjL,KAAI,SAAC4sB,EAAMyQ,GACtB,OAAO,gCAECzQ,EAAK1uB,OACL,oBAAIxD,UAAU,QAAd,SAAuBkyB,EAAK/c,SAEhC,sBAAMnV,UAAU,cAA8BwqB,wBAAyB,CAAEC,OAAQyH,EAAKvsB,OAAnDg9B,KALtBA,UALEhf,GAiBjC,IAAD,EACiCie,GAAWQ,EAAM7xB,UADlD,mBACMqyB,EADN,KACkBC,EADlB,KAED,OAAO,sBAAK7iC,UAAU,QAAoBoiC,MAAOA,EAAMzxB,KAAKnI,cAAehH,IAAK,SAAAuT,GAAG,OAAI,EAAKmtB,UAAUve,GAAS5O,GAAxG,UACH,oBAAI/U,UAAU,cAAd,SAA6BoiC,EAAMzxB,OACnC,sBAAK3Q,UAAU,OAAf,UACI,qBAAKA,UAAU,SAAf,SAEQ4iC,EAAWt9B,KAAI,SAAC4sB,EAAMyQ,GAClB,OAAO,qCAECzQ,EAAK1uB,OACL,oBAAIxD,UAAU,QAAd,SAAuCkyB,EAAK/c,QAAjBwtB,GAE/B,sBAAM3iC,UAAU,cAAcwqB,wBAAyB,CAAEC,OAAQyH,EAAKvsB,gBAKtF,qBAAK3F,UAAU,SAAf,SAEQ6iC,EAAYv9B,KAAI,SAAC4sB,EAAMyQ,GACnB,OAAO,qCAECzQ,EAAK1uB,OACL,oBAAIxD,UAAU,QAAd,SAAuCkyB,EAAK/c,QAAjBwtB,GAE/B,sBAAM3iC,UAAU,cAAcwqB,wBAAyB,CAAEC,OAAQyH,EAAKvsB,qBAxB3Dge,aAqC3D,cAAC,GAAD,gB,GAxKAzjB,IAAMC,WCiLnB2iC,I,yDA/KX,WAAY1hC,GAAQ,IAAD,8BACf,cAAMA,IAGD8gC,UAAY,IAAI1lB,MAAM,IAG3B,EAAK2lB,WAAa,EAAKA,WAAW90B,KAAhB,gBAPH,E,gEAYf1C,OAAOsJ,SAAS,EAAG,K,iCAIZ5T,GACP,IADU,EACJ+hC,EAAQ/hC,EAAEka,cAActS,aAAa,SADjC,eAEQ9G,KAAK+gC,WAFb,IAEV,2BAAkC,CAAC,IAAxB1gC,EAAuB,QAC9B,GAAIA,EAAIyG,aAAa,WAAam6B,EAE9B,YADA5gC,EAAIynB,eAAe,CAAE/U,SAAU,SAAUgV,MAAO,YAJ9C,iC,+BAWJ,IAAD,OACC6Z,EAAYnzB,EAAiBzJ,KAAOyJ,EAAiBzJ,KAAKmK,QAAQU,MAAMP,MAAK,SAAAK,GAAC,MAAe,UAAXA,EAAEH,QAAoB,KAExGwE,EAAS4tB,EAAYA,EAAU5tB,OAAS,KACxCmtB,EAAgBS,EAAYA,EAAUT,cAAgB,KACtD38B,EAAOo9B,EAAYA,EAAUp9B,KAAO,KACpC48B,EAASQ,EAAYA,EAAUR,OAAS,KANzC,EAQkBlB,GAAU17B,GAR5B,mBAQE68B,EARF,KAQSC,EART,KAUL,OACI,mCAEQM,GACA,qCACI,cAAC,EAAD,IACA,sBAAK/iC,UAAU,UAAf,UACI,qBAAKA,UAAU,qBAAf,SACI,sBAAKA,UAAU,qBAAf,UACI,qBAAKA,UAAU,sBAAsB6V,WAAUC,oBAAeC,EAAY,UAA1E,SACI,oBAAI/V,UAAU,QAAd,SAAuBmV,MAE3B,sBAAKnV,UAAU,eAAe6V,WAAUC,oBAAeC,EAAY,UAAnE,UACI,qBAAI/V,UAAU,QAAd,6BAAuCsiC,EAAvC,OACA,sBAAKtiC,UAAU,OAAf,UACI,qBAAKA,UAAU,SAAf,SACI,4BAAG,sBAAMA,UAAU,eAAewqB,wBAAyB,CAAEC,OAAQ+X,SAEzE,qBAAKxiC,UAAU,SAAf,SACI,4BAAG,sBAAMA,UAAU,eAAewqB,wBAAyB,CAAEC,OAAQgY,eAIjF,sBAAKziC,UAAU,0BAA0B6V,WAAUC,oBAAeC,EAAY,UAA9E,UACI,oBAAI/V,UAAU,QAAd,8BACA,sBAAKA,UAAU,gBAAf,UACI,qBAAKA,UAAU,uBAEXuiC,EAAOngC,QAAU,IACjB,6BAEQmgC,EAAOj9B,KAAI,SAAC88B,EAAOze,GACf,OAAO,6BACJ,wBAAQye,MAAOA,EAAMzxB,KAAKnI,cAAek6B,MAAM,4BAA4B9gC,QAAS,EAAKugC,WAAzF,SAAsGC,EAAMzxB,QAD/FgT,QAQ5B4e,EAAOngC,OAAS,IAChB,qCACI,6BAEQmgC,EAAOlrB,MAAM,EAAGqY,KAAKC,KAAK4S,EAAOngC,OAAS,IAAIkD,KAAI,SAAC88B,EAAOze,GACtD,OAAO,6BACH,wBAAQye,MAAOA,EAAMzxB,KAAKnI,cAAek6B,MAAM,4BAA4B9gC,QAAS,EAAKugC,WAAzF,SAAsGC,EAAMzxB,QADhGgT,QAM5B,6BAEQ4e,EAAOlrB,MAAMqY,KAAKC,KAAK4S,EAAOngC,OAAS,GAAImgC,EAAOngC,QAAQkD,KAAI,SAAC88B,EAAOze,GAClE,OAAO,6BACH,wBAAQye,MAAOA,EAAMzxB,KAAKnI,cAAek6B,MAAM,4BAA4B9gC,QAAS,EAAKugC,WAAzF,SAAsGC,EAAMzxB,QADhGgT,WAQpC,qBAAK3jB,UAAU,wBAAf,SACI,qBAAKA,UAAU,0CAAf,SACI,cAAC,GAAD,CAAWsY,KAAM1I,EAAiBC,yBAKlD,qBAAK7P,UAAU,mBAAmB6V,WAAUC,oBAAeC,EAAY,UAAvE,SAEQwsB,EAAOj9B,KAAI,SAAC88B,EAAOze,GACf,GAA8B,IAA1Bye,EAAM7xB,SAASnO,OACf,OAAO,sBAAKpC,UAAU,QAAoBoiC,MAAOA,EAAMzxB,KAAKnI,cAAehH,IAAK,SAAAuT,GAAG,OAAI,EAAKmtB,UAAUve,GAAS5O,GAAxG,UACH,oBAAI/U,UAAU,cAAd,SAA6BoiC,EAAMzxB,OACnC,qBAAK3Q,UAAU,OAAf,SAEQoiC,EAAM7xB,SAASjL,KAAI,SAAC4sB,EAAMyQ,GACtB,OAAO,gCAECzQ,EAAK1uB,OACL,oBAAIxD,UAAU,QAAd,SAAuBkyB,EAAK/c,SAEhC,sBAAMnV,UAAU,cAA8BwqB,wBAAyB,CAAEC,OAAQyH,EAAKvsB,OAAnDg9B,KALtBA,UALEhf,GAiBjC,IAAD,EACiCie,GAAWQ,EAAM7xB,UADlD,mBACMqyB,EADN,KACkBC,EADlB,KAED,OAAO,sBAAK7iC,UAAU,QAAoBoiC,MAAOA,EAAMzxB,KAAKnI,cAAehH,IAAK,SAAAuT,GAAG,OAAI,EAAKmtB,UAAUve,GAAS5O,GAAxG,UACH,oBAAI/U,UAAU,cAAd,SAA6BoiC,EAAMzxB,OACnC,sBAAK3Q,UAAU,OAAf,UACI,qBAAKA,UAAU,SAAf,SAEQ4iC,EAAWt9B,KAAI,SAAC4sB,EAAMyQ,GAClB,OAAO,gCAECzQ,EAAK1uB,OACL,oBAAIxD,UAAU,QAAd,SAAuBkyB,EAAK/c,SAEhC,sBAAMnV,UAAU,cAA8BwqB,wBAAyB,CAAEC,OAAQyH,EAAKvsB,OAAnDg9B,KALtBA,QAU7B,qBAAK3iC,UAAU,SAAf,SAEQ6iC,EAAYv9B,KAAI,SAAC4sB,EAAMyQ,GACnB,OAAO,gCAECzQ,EAAK1uB,OACL,oBAAIxD,UAAU,QAAd,SAAuBkyB,EAAK/c,SAEhC,sBAAMnV,UAAU,cAAcwqB,wBAAyB,CAAEC,OAAQyH,EAAKvsB,UALzDg9B,aAnBFhf,aAqC3D,cAAC,GAAD,gB,GAxKRzjB,IAAMC,YCuDX6iC,I,yLApDPr4B,OAAOsJ,SAAS,EAAG,K,+BAKnB,IAAMgvB,EAAiBrzB,EAAiBzJ,KAAKmK,QAAQU,MAAMP,MAAK,SAAAK,GAAC,MAAe,cAAXA,EAAEH,QAEjEwE,EAAS8tB,EAAiBA,EAAe9tB,OAAS,KAClDxP,EAAOs9B,EAAiBA,EAAe3J,SAAW,KAClD4J,EAAQD,EAAiBA,EAAeC,MAAQ,KAEtD,OACI,mCAEQD,GACA,qCACI,cAAC,EAAD,IACA,qBAAKjjC,UAAU,UAAf,SACI,sBAAKA,UAAU,gCAAf,UACI,sBAAKA,UAAU,gCAAf,UACI,sBAAKA,UAAU,iCAAiC6V,WAAUC,oBAAeC,EAAY,UAArF,UACI,oBAAI/V,UAAU,QAAd,SAAuBmV,IACvB,mBAAGnV,UAAU,cAAb,SAA4B2F,OAEhC,qBAAK3F,UAAU,2BAA2B6V,WAAUC,oBAAeC,EAAY,UAA/E,SACI,oBAAI/V,UAAU,iCAAd,SAEQkjC,EAAM59B,KAAI,SAACmM,EAAMkS,GACb,OAAO,qBAAI3jB,UAAU,sCAAd,UACH,qBAAKA,UAAU,2CAAf,SACI,mBAAG6K,KAAM4G,EAAKtM,IAAK5E,OAAO,SAASwmB,IAAI,aAAvC,SACI,qBAAKxX,IAAKkC,EAAKiE,SAAWjE,EAAKiE,SAAW6Z,EAAkBva,IAAI,SAGxE,mBAAGhV,UAAU,2CAAb,SAAyDyR,EAAK9L,SANFge,aAapF,cAAC,GAAD,IACA,cAAC,GAAD,kB,GA9CFzjB,IAAMC,YC4HrBgjC,G,kDA1HX,WAAY/hC,GAAQ,IAAD,8BACf,cAAMA,IAGD2R,MAAQ,CACTqwB,UAAW,6CALA,E,gEAWfz4B,OAAOsJ,SAAS,EAAG,GACnB9S,KAAKkiC,yB,6CAIe,IAAD,OACnBzzB,EAAiB0zB,aAAY,WACzB,OAAO,EAAKC,qB,sCAIH,IAAD,OACNvkB,EAAQ7d,KAAKC,MAAMk0B,MAAMC,OAAOvW,MAEtC,OAAOvB,GAAc+lB,0BAA0BxkB,GAC9CtZ,MAAK,SAAAV,GACEA,EAAK4G,UACsB,IAAvB5G,EAAK4I,OAAO3I,OACZ,EAAKw+B,cAEuB,IAAvBz+B,EAAK4I,OAAO3I,OACjB,EAAKuO,SAAS,CAAE4vB,UAAW,wEAEC,IAAvBp+B,EAAK4I,OAAO3I,OACjB,EAAKuO,SAAS,CAAE4vB,UAAW,wEAEC,IAAvBp+B,EAAK4I,OAAO3I,OACjB,EAAKuO,SAAS,CAAE4vB,UAAW,mGAEC,IAAvBp+B,EAAK4I,OAAO3I,QACjB,EAAKuO,SAAS,CAAE4vB,UAAW,qFAI/B,EAAK5vB,SAAS,CAAE4vB,UAAU,qDAAD,OAAuDp+B,EAAK6G,OAAO,W,+BAOpG,IAAM63B,EAAiBjmB,GAAcC,sBAC/B0lB,EAAYjiC,KAAK4R,MAAMqwB,UAE7B,OACI,qCACI,cAAC,EAAD,IACA,qBAAKpjC,UAAU,UAAf,SACI,uBAAMA,UAAU,oBAAhB,UAEQ0jC,GACA,sBAAK1jC,UAAU,oBAAf,UACI,0BAASA,UAAU,yBAAnB,UACI,qBAAKA,UAAU,wBACf,sBAAKA,UAAU,qCAAqC6V,WAAUC,oBAAeC,EAAY,UAAzF,UACI,qBAAI/V,UAAU,qBAAd,UAAmC,sBAAMA,UAAU,eAAhB,mBAAnC,yBACA,4EAA8C,uBAA9C,0CACA,sBAAMA,UAAU,eAAewjB,SAAUriB,KAAKohB,WAA9C,SACI,yBAASviB,UAAU,uBAAnB,SACI,cAAC,IAAD,CAAMkB,GAAG,SAAT,SACI,cAAC,EAAD,CAAclB,UAAU,WAAW0B,KAAK,SAASC,gBAAc,EAA/D,SACI,+DAOxB,uBAAO3B,UAAU,qBAAqB6V,WAAUC,oBAAeC,EAAY,UAAW6N,iBAAe,MAArG,SACI,oEAEI,cAAC,IAAD,CAAM1iB,GAAG,YAAYlB,UAAU,eAA/B,oCAMX0jC,GACD,sBAAK1jC,UAAU,oBAAf,UACI,0BAASA,UAAU,yBAAnB,UACI,qBAAKA,UAAU,wBACf,sBAAKA,UAAU,qCAAqC6V,WAAUC,oBAAeC,EAAY,UAAzF,UACI,qBAAI/V,UAAU,qBAAd,2BAAiD,sBAAMA,UAAU,eAAhB,sBACjD,mBAAGwqB,wBAAyB,CAAEC,OAAQ2Y,KACtC,sBAAMpjC,UAAU,eAAewjB,SAAUriB,KAAKohB,WAA9C,SACI,yBAASviB,UAAU,uBAAnB,SACI,cAAC,IAAD,CAAMkB,GAAG,oBAAT,SACI,cAAC,EAAD,CAAclB,UAAU,WAAW0B,KAAK,SAASC,gBAAc,EAA/D,SACI,uDAOxB,uBAAO3B,UAAU,qBAAqB6V,WAAUC,oBAAeC,EAAY,UAAW6N,iBAAe,MAArG,SACI,oEAEI,cAAC,IAAD,CAAM1iB,GAAG,YAAYlB,UAAU,eAA/B,mCAKhB,cAAC,GAAD,gB,GApHGE,IAAMC,WCmQlBwjC,G,kDA9PX,WAAYviC,GAAQ,IAAD,8BACf,cAAMA,IAGDoe,KAAO,KAGZ,EAAKzM,MAAQ,CACT6wB,kBAAkB,EAClBC,iBAAiB,EACjBC,iBAAiB,EACjBpnB,MAAO,KACP5C,UAAW,KACXC,WAAY,KACZC,SAAU,KACVopB,UAAW,uCAIf,EAAK7gB,WAAa,EAAKA,WAAWlV,KAAhB,gBAnBH,E,gEAwBf1C,OAAOsJ,SAAS,EAAG,GACnB9S,KAAKkiC,yB,6CAIe,IAAD,OACnBzzB,EAAiB0zB,aAAY,WACzB,OAAO,EAAKC,qB,sCAIH,IAAD,OACNvkB,EAAQ7d,KAAKC,MAAMk0B,MAAMC,OAAOvW,MAEtC,OAAOvB,GAAcsmB,6BAA6B/kB,GACjDtZ,MAAK,SAAAV,GACEA,EAAK4G,UACsB,IAAvB5G,EAAK4I,OAAO3I,OACZ,EAAKuO,SAAS,CACVowB,iBAAkB5+B,EAAK4I,OAAOg2B,iBAC9BC,gBAAiB7+B,EAAK4I,OAAOi2B,gBAC7BC,gBAAiB9+B,EAAK4I,OAAOk2B,gBAE7BpnB,MAAO1X,EAAK4I,OAAO8O,MACnB5C,UAAW9U,EAAK4I,OAAOkM,UACvBC,WAAY/U,EAAK4I,OAAOmM,WACxBC,SAAUhV,EAAK4I,OAAOoM,WAGE,IAAvBhV,EAAK4I,OAAO3I,OACjB,EAAKuO,SAAS,CAAE4vB,UAAW,kEAEC,IAAvBp+B,EAAK4I,OAAO3I,OACjB,EAAKuO,SAAS,CAAE4vB,UAAW,oEAEC,IAAvBp+B,EAAK4I,OAAO3I,OACjB,EAAKuO,SAAS,CAAE4vB,UAAW,sEAEC,IAAvBp+B,EAAK4I,OAAO3I,OACjB,EAAKuO,SAAS,CAAE4vB,UAAW,kEAEC,IAAvBp+B,EAAK4I,OAAO3I,OACjB,EAAKuO,SAAS,CAAE4vB,UAAW,kEAEC,IAAvBp+B,EAAK4I,OAAO3I,QACjB,EAAKuO,SAAS,CAAE4vB,UAAW,kFAI/B,EAAK5vB,SAAS,CAAE4vB,UAAU,+CAAD,OAAiDp+B,EAAK6G,OAAO,W,iCAMvFxL,GAAI,IAAD,OACVA,EAAEmiB,iBAEF,IAAMC,EAAclD,GAAYmD,SAASvhB,KAAKqe,MAExC1F,EAAY3Y,KAAK4R,MAAM6wB,iBAAmBvjC,EAAEE,OAAOuZ,UAAUvU,MAAQ,GACrEwU,EAAa1Z,EAAEE,OAAOwZ,WAAWxU,MACjCyU,EAAW7Y,KAAK4R,MAAM8wB,gBAAkBxjC,EAAEE,OAAOyZ,SAASzU,MAAQ,GAClEod,EAAWxhB,KAAK4R,MAAM+wB,gBAAkBzjC,EAAEE,OAAOoiB,SAASpd,MAAQ,GAClEqd,EAAUzhB,KAAK4R,MAAM+wB,gBAAkBzjC,EAAEE,OAAOqiB,QAAQrd,MAAQ,GAEtE,GAAIpE,KAAK4R,MAAM+wB,iBAAoBnhB,IAAaC,EAG5C,OAFArD,GAAYsD,eAAe1hB,KAAKqe,KAAM,UAAW,qCACjDD,GAAYuD,kBAAkB3hB,KAAKqe,MAIvC,GAAIiD,EAAJ,CAEAlD,GAAYwD,kBAAkB5hB,KAAKqe,MAEnC,IAAIP,EAAyB,CAACnF,YAAWC,aAAYC,WAAU2I,YAC/D1D,EAAuBD,MAAQ7d,KAAKC,MAAMk0B,MAAMC,OAAOvW,MAEvDzQ,EAAiB0U,SAAS,mBACzBvd,MAAK,SAAAsZ,GACFC,EAAuBG,eAAiBJ,EAExCvB,GAAcumB,gBAAgB/kB,GAC7BvZ,MAAK,SAAAV,GACEA,EAAK4G,UACL6R,GAAc6F,eAGd/D,GAAYW,cAAc,EAAKV,MAC/BD,GAAYuD,kBAAkB,EAAKtD,MACnCD,GAAYgE,cAAc,EAAK/D,KAAMxa,EAAK6G,OAAO,c,+BAOvD,IAAD,OACC63B,EAAiBjmB,GAAcE,yBAE/BjB,EAAQvb,KAAK4R,MAAM2J,MACnB5C,EAAY3Y,KAAK4R,MAAM+G,UAAY3Y,KAAK4R,MAAM+G,UAAY,GAC1DC,EAAa5Y,KAAK4R,MAAMgH,WAAa5Y,KAAK4R,MAAMgH,WAAa,GAC7DC,EAAW7Y,KAAK4R,MAAMiH,SAAW7Y,KAAK4R,MAAMiH,SAAW,GAEvD4pB,EAAmBziC,KAAK4R,MAAM6wB,iBAC9BC,EAAkB1iC,KAAK4R,MAAM8wB,gBAC7BC,EAAkB3iC,KAAK4R,MAAM+wB,gBAE7BV,EAAYjiC,KAAK4R,MAAMqwB,UAE7B,OACI,qCACI,cAAC,EAAD,CAAQ/uB,WAAW,aACnB,qBAAKrU,UAAU,UAAf,SACI,uBAAMA,UAAU,8BAAhB,UAEQ0jC,GACA,sBAAK1jC,UAAU,8BAAf,UACI,0BAASA,UAAU,yBAAnB,UACI,qBAAKA,UAAU,wBACf,sBAAKA,UAAU,uBAAuB6V,WAAUC,oBAAeC,EAAY,UAA3E,UACI,qBAAI/V,UAAU,qBAAd,UAAmC,sBAAMA,UAAU,eAAhB,sBAAnC,cACA,uBAAMA,UAAU,eAAewB,IAAK,SAAAge,GAAI,OAAI,EAAKA,KAAOA,GAAMgE,SAAUriB,KAAKohB,WAA7E,UACI,sBAAKviB,UAAU,WAAf,UACI,uBAAO2Q,KAAK,YAAYmK,UAAQ,EAACC,YAAY,aAAaC,aAAclB,EAAW6O,UAAWib,IAC9F,uBAAO1oB,QAAQ,YAAf,wBACA,sBAAMlb,UAAU,iBAAhB,mCACA,qBAAKA,UAAU,qCAAf,SACI,cAAC,GAAD,SAGR,sBAAKA,UAAU,WAAf,UACI,uBAAO2Q,KAAK,aAAaoK,YAAY,cAAcC,aAAcjB,IACjE,uBAAOmB,QAAQ,aAAf,oCACA,sBAAMlb,UAAU,mBAChB,qBAAKA,UAAU,qCAAf,SACI,cAAC,GAAD,SAGR,sBAAKA,UAAU,WAAf,UACI,uBAAO2Q,KAAK,WAAWmK,UAAQ,EAACC,YAAY,YAAYC,aAAchB,EAAU2O,UAAWkb,IAC3F,uBAAO3oB,QAAQ,WAAf,uBACA,sBAAMlb,UAAU,iBAAhB,kCACA,qBAAKA,UAAU,qCAAf,SACI,cAAC,GAAD,SAGR,sBAAKA,UAAU,WAAf,UACI,uBAAO2Q,KAAK,QAAQmK,UAAQ,EAACC,YAAY,iBAAiBxV,MAAOmX,EAAOiM,UAAU,IAClF,uBAAOzN,QAAQ,QAAf,4BACA,sBAAMlb,UAAU,iBAAiBwB,IAAK,SAAA07B,GAAI,OAAI,EAAKsC,WAAatC,GAAhE,0CACA,qBAAKl9B,UAAU,qCAAf,SACI,cAAC,GAAD,SAIJ8jC,GACA,qCACI,sBAAK9jC,UAAU,WAAf,UACI,uBAAO2Q,KAAK,WAAWoK,YAAY,WAAWD,UAAQ,EAACpZ,KAAK,aAC5D,uBAAOwZ,QAAQ,WAAf,sBACA,sBAAMlb,UAAU,iBAAhB,oCACA,qBAAKA,UAAU,qCAAf,SACI,cAAC,GAAD,SAGR,sBAAKA,UAAU,WAAf,UACI,uBAAO2Q,KAAK,UAAUoK,YAAY,mBAAmBD,UAAQ,EAACpZ,KAAK,aACnE,uBAAOwZ,QAAQ,WAAf,8BACA,sBAAMlb,UAAU,iBAAiBwB,IAAK,SAAA07B,GAAI,OAAI,EAAK+G,aAAe/G,GAAlE,oCACA,qBAAKl9B,UAAU,qCAAf,SACI,cAAC,GAAD,YAKhB,mBAAGA,UAAU,kBACb,yBAASA,UAAU,6BAAnB,SACI,cAAC,EAAD,CAAcA,UAAU,0BAA0B0B,KAAK,SAASC,gBAAc,EAA9E,SACI,4DAMpB,uBAAO3B,UAAU,qBAAqB6V,WAAUC,oBAAeC,EAAY,UAAW6N,iBAAe,MAArG,SACI,iEAEI,cAAC,IAAD,CAAM1iB,GAAG,SAASlB,UAAU,eAA5B,6BAMX0jC,GACD,sBAAK1jC,UAAU,oBAAf,UACI,0BAASA,UAAU,yBAAnB,UACI,qBAAKA,UAAU,wBACf,sBAAKA,UAAU,qCAAqC6V,WAAUC,oBAAeC,EAAY,UAAzF,UACI,qBAAI/V,UAAU,qBAAd,8BAAoD,sBAAMA,UAAU,eAAhB,sBACpD,mBAAGwqB,wBAAyB,CAAEC,OAAQ2Y,KACtC,sBAAMpjC,UAAU,eAAewjB,SAAUriB,KAAKohB,WAA9C,SACI,yBAASviB,UAAU,uBAAnB,SACI,cAAC,IAAD,CAAMkB,GAAG,oBAAT,SACI,cAAC,EAAD,CAAclB,UAAU,WAAW0B,KAAK,SAASC,gBAAc,EAA/D,SACI,uDAOxB,uBAAO3B,UAAU,qBAAqB6V,WAAUC,oBAAeC,EAAY,UAAW6N,iBAAe,MAArG,SACI,oEAEI,cAAC,IAAD,CAAM1iB,GAAG,YAAYlB,UAAU,eAA/B,mCAKhB,cAAC,GAAD,gB,GAxPME,IAAMC,WCyMrB+jC,I,yDArMX,WAAY9iC,GAAQ,IAAD,8BACf,cAAMA,IAGDoe,KAAO,KACZ,EAAK2kB,cAAgB,KACrB,EAAKC,YAAc,KAGnB,EAAKlK,YAAc,EAAKA,YAAY7sB,KAAjB,gBACnB,EAAKkV,WAAa,EAAKA,WAAWlV,KAAhB,gBAVH,E,gEAef1C,OAAOsJ,SAAS,EAAG,GACnB9S,KAAK6mB,eACL7mB,KAAKi5B,kB,2CAILj5B,KAAK6mB,iB,sCAKL,GAAI7mB,KAAKgjC,eAAiBnR,GAAeE,MAAO,CAC5C,IAAMmH,EAAiBl5B,KAAKgjC,cAActkB,iBAAiB,qCAEtDmT,GAAeE,MAAMQ,aAMtB2G,EAAe,GAAG5mB,UAAUnP,IAAI,WAChCnD,KAAKijC,YAAYv7B,MAAMuQ,MAAQihB,EAAe,GAAGC,YAAc,EAAI,KACnEn5B,KAAKijC,YAAYv7B,MAAM7H,KAAOq5B,EAAe,GAAGE,WAAa,OAP7DF,EAAe,GAAG5mB,UAAUnP,IAAI,WAChCnD,KAAKijC,YAAYv7B,MAAMuQ,MAAQihB,EAAe,GAAGC,YAAc,EAAI,KACnEn5B,KAAKijC,YAAYv7B,MAAM7H,KAAOq5B,EAAe,GAAGE,WAAa,S,qCAUzD,IAAD,OACX9f,KAAE,qBAAqBwN,QAAQ,CAC3BC,yBAA0B,IAG9BzN,KAAE,mGAAmG0N,GAAG,UAAU,SAAC9nB,EAAG+nB,GAClH,IAAKA,EAAc,CACf,IAAMqS,EAAiBhgB,KAAE,EAAK0pB,eAAe1zB,KAAK,qCAAqCid,OAAhE,uBAAuFrtB,EAAEka,cAAchV,MAAvG,OAAkH,GAErIk1B,IACA,EAAKC,gBAAgBD,GACrBzH,GAAeE,MAAMQ,YAAwC,UAA1BrzB,EAAEka,cAAchV,a,sCAMnD8D,GACZoR,KAAEpR,GAAWukB,WAAWC,YAAY,WACpCxkB,EAAUoK,UAAUnP,IAAI,WAExBrD,IAAKC,GAAGC,KAAKijC,YAAa,CACtBhrB,MAAO/P,EAAUixB,YACjBt5B,KAAMqI,EAAUkxB,WAChBva,SAAU,O,kCAKN3f,GACR,IAAKA,EAAEka,cAAc9G,UAAU0M,SAAS,WAAY,CAChDhf,KAAKu5B,gBAAgBr6B,EAAEka,eAEvB,IAAMuT,EAASrT,KAAEpa,EAAEka,eAAeugB,SAASrqB,KAAK,UAChDqd,EAAOC,IAAI1tB,EAAEka,cAAc+N,QAAQ/iB,OACnCuoB,EAAOrX,QAAQ,UAAU,GAEzBuc,GAAeE,MAAMQ,YAAgD,UAAlCrzB,EAAEka,cAAc+N,QAAQ/iB,S,iCAIxDlF,GACPA,EAAEmiB,iBAEF,IAAMC,EAAclD,GAAYmD,SAASvhB,KAAKqe,MAExCiU,EAAYpzB,EAAEE,OAAOkzB,UAAUluB,MAC/B8+B,EAAkBhkC,EAAEE,OAAO8jC,gBAAgB9+B,MAE3CqyB,EAAa5E,GAAeE,MAAM0E,WAClCE,EAAa9E,GAAeE,MAAM4E,WAExC,MAAwB,KAApBuM,GAA0BA,EAAkBzM,GAC5CrY,GAAYsD,eAAe1hB,KAAKqe,KAAM,kBAAtC,0CAA4FoY,SAC5FrY,GAAYuD,kBAAkB3hB,KAAKqe,OAGV,KAApB6kB,GAA0BvM,GAAcuM,EAAkBvM,GAC/DvY,GAAYsD,eAAe1hB,KAAKqe,KAAM,kBAAtC,uCAAyFsY,SACzFvY,GAAYuD,kBAAkB3hB,KAAKqe,YAInCiD,IAEJlD,GAAYwD,kBAAkB5hB,KAAKqe,MAEnCwT,GAAeE,MAAMO,UAAYA,EACjCT,GAAeE,MAAMmR,gBAAkBA,EAEvCrR,GAAed,KAAKqB,SAAW8Q,EAE/BljC,KAAKC,MAAMgoB,QAAQnlB,KAAK,Y,+BAIlB,IAAD,OAEL,GAAI2L,EAAiBzJ,QAAU6sB,GAAed,OAASc,GAAeE,OAElE,OADA/xB,KAAKC,MAAMgoB,QAAQnlB,KAAnB,wBACO,KAGX,IAAMT,EAAQwvB,GAAed,KAAf,iBAAgCc,GAAed,KAAK1uB,OAAS,GACrEiwB,EAAYT,GAAeE,MAAQF,GAAeE,MAAMO,UAAY,GACpE4Q,EAAkBrR,GAAeE,MAAQF,GAAeE,MAAMmR,gBAAkB,GAChFzM,EAAa5E,GAAeE,MAAQF,GAAeE,MAAM0E,WAAa,GACtEE,EAAa9E,GAAeE,OAASF,GAAeE,MAAM4E,WAA7C,YAA+D9E,GAAeE,MAAM4E,YAAe,IAEtH,OACI,qCACI,cAAC,EAAD,IACA,qBAAK93B,UAAU,UAAf,SACI,qBAAKA,UAAU,8BAAf,SACI,yBAASA,UAAU,8BAAnB,SACI,sBAAKA,UAAU,4BAA4B6V,WAAUC,oBAAeC,EAAY,UAAhF,UACI,wBAAQ/V,UAAU,0BAAlB,SACI,6BACKwD,MAGT,uBAAMxD,UAAU,yBAAyBwB,IAAK,SAAAge,GAAI,OAAI,EAAKA,KAAOA,GAAMgE,SAAUriB,KAAKohB,WAAvF,UACI,sBAAKviB,UAAU,+BAAf,UACI,sBAAKA,UAAU,wDAAwDwB,IAAK,SAAAuT,GAAG,OAAI,EAAKovB,cAAgBpvB,GAAxG,UACI,sBAAK/U,UAAU,yEAAf,UACI,qBAAKA,UAAU,sBAAf,SACI,yBAAQgb,aAAa,WAArB,UACI,wBAAQzV,MAAM,SAAd,oCACA,wBAAQA,MAAM,QAAd,uCAGR,qBAAKvF,UAAU,mDAAmD0B,KAAK,SAAS0tB,aAAW,SAASxtB,QAAST,KAAK+4B,YAAlH,oCAGA,qBAAKl6B,UAAU,mDAAmD0B,KAAK,SAAS0tB,aAAW,QAAQxtB,QAAST,KAAK+4B,YAAjH,qCAIJ,qBAAKl6B,UAAU,cAAcwB,IAAK,SAAAuT,GAAG,OAAI,EAAKqvB,YAAcrvB,QAEhE,sBAAK/U,UAAU,WAAf,UACI,uBAAO2Q,KAAK,YAAYmK,UAAQ,EAACC,YAAY,aAAaC,aAAcyY,IACxE,uBAAOvY,QAAQ,OAAf,wBACA,sBAAMlb,UAAU,iBAAhB,gCACA,qBAAKA,UAAU,qCAAf,SACI,cAAC,GAAD,SAGR,sBAAKA,UAAU,WAAf,UACI,uBAAO2Q,KAAK,kBAAkBmK,UAAQ,EAACC,YAAW,6BAAwB6c,GAAxB,OAAqCE,EAArC,KAAoD9c,aAAcqpB,IACpH,uBAAOnpB,QAAQ,kBAAf,+BACA,sBAAMlb,UAAU,iBAAhB,yCACA,qBAAKA,UAAU,qCAAf,SACI,cAAC,GAAD,YAIZ,mBAAGA,UAAU,kBACb,cAAC,EAAD,CAAcA,UAAU,iCAAiC0B,KAAK,SAASC,gBAAc,EAArF,qCAGA,qBAAK3B,UAAU,+BAAf,qFAQpB,cAAC,GAAD,W,GAjMYE,IAAMC,YCkHnBmkC,I,yLAhHP35B,OAAOsJ,SAAS,EAAG,K,+BAKnB,IAAMouB,EAAazyB,EAAiBzJ,KAAKmK,QAAQU,MAAMP,MAAK,SAAAK,GAAC,MAAe,kBAAXA,EAAEH,QAE7DwE,EAASktB,EAAaA,EAAWltB,OAAS,KAC1CmtB,EAAgBD,EAAaA,EAAWC,cAAgB,KAJzD,EAOkBjB,GAFVgB,EAAaA,EAAW18B,KAAO,MALvC,mBAOE68B,EAPF,KAOSC,EAPT,KASC3c,EAAWlW,EAAiBzJ,KAAKsL,KAEjCiL,EAAQoJ,EAASQ,UACjBJ,EAAQJ,EAASK,UACjB4Z,EAAWja,EAASU,YAAYC,OAChCuZ,EAAWla,EAASU,YAAYG,KAAKD,OAAO,KAAMZ,EAASU,YAAYzT,MAAO,IAAK+S,EAASU,YAAYI,KACxGqZ,EAAcF,EAASrZ,OAAO,IAAKsZ,GACnC5Z,EAAMN,EAASO,QAErB,OACI,mCAEQgc,GACA,qCACI,cAAC,EAAD,IACA,sBAAKriC,UAAU,UAAf,UACI,qBAAKA,UAAU,sBAAf,SACI,sBAAKA,UAAU,sBAAf,UACI,qBAAKA,UAAU,uBAAuB6V,WAAUC,oBAAeC,EAAY,UAA3E,SACI,oBAAI/V,UAAU,QAAd,SAAuBmV,MAE3B,sBAAKnV,UAAU,gBAAgB6V,WAAUC,oBAAeC,EAAY,UAApE,UACI,qBAAI/V,UAAU,QAAd,6BAAuCsiC,EAAvC,OACA,sBAAKtiC,UAAU,OAAf,UACI,qBAAKA,UAAU,SAAf,SACI,4BAAG,sBAAMA,UAAU,eAAewqB,wBAAyB,CAAEC,OAAQ+X,SAEzE,qBAAKxiC,UAAU,SAAf,SACI,4BAAG,sBAAMA,UAAU,eAAewqB,wBAAyB,CAAEC,OAAQgY,eAIjF,qBAAKziC,UAAU,qBAAqB6V,WAAUC,oBAAeC,EAAY,UAAzE,SACI,qBAAI/V,UAAU,0BAAd,UACI,qBAAIA,UAAU,+BAAd,UACI,sBAAKA,UAAU,oCAAf,UACI,qBAAKA,UAAU,qCAAf,oBACA,mBAAG6K,KAAI,iBAAY6R,GAAnB,SACI,qBAAK1c,UAAU,qCAAf,SAAqD0c,SAG7D,qBAAK1c,UAAU,oCAAf,SACI,qBAAKA,UAAU,sCAAf,SACI,cAAC,GAAD,CAAQsY,KAAM1I,EAAiBC,sBAI3C,qBAAI7P,UAAU,+BAAd,UACI,sBAAKA,UAAU,oCAAf,UACI,qBAAKA,UAAU,qCAAf,oBACA,mBAAG6K,KAAI,cAASqb,GAAhB,SACI,qBAAKlmB,UAAU,qCAAf,SAAqDkmB,SAG7D,qBAAKlmB,UAAU,oCAAf,SACI,qBAAKA,UAAU,qCAAf,SACI,cAAC,GAAD,CAAOmkB,OAAQvU,EAAiBC,sBAI5C,qBAAI7P,UAAU,+BAAd,UACI,sBAAKA,UAAU,oCAAf,UACI,qBAAKA,UAAU,qCAAf,8BACA,mBAAG6K,KAAI,oCAA+Bo1B,GAAe1/B,OAAO,SAASwmB,IAAI,aAAzE,SACI,sBAAK/mB,UAAU,qCAAf,UAAqD+/B,EAAS,uBAAUC,UAGhF,qBAAKhgC,UAAU,oCAAf,SACI,qBAAKA,UAAU,wCAAf,SACI,cAAC,GAAD,CAAUmkB,OAAQvU,EAAiBC,sBAI/C,qBAAI7P,UAAU,+BAAd,UACI,sBAAKA,UAAU,oCAAf,UACI,qBAAKA,UAAU,qCAAf,kBACA,mBAAG6K,KAAI,cAASub,GAAhB,SACI,qBAAKpmB,UAAU,qCAAf,SAAqDomB,SAG7D,qBAAKpmB,UAAU,oCAAf,SACI,qBAAKA,UAAU,uCAAf,SACI,cAAC,GAAD,CAASmkB,OAAQvU,EAAiBC,gCAQ9D,cAAC,GAAD,gB,GA3GD3P,IAAMC,YCoHlBokC,I,yLAhHP55B,OAAOsJ,SAAS,EAAG,K,+BAKnB,IAAMouB,EAAazyB,EAAiBzJ,KAAKmK,QAAQU,MAAMP,MAAK,SAAAK,GAAC,MAAe,gCAAXA,EAAEH,QAE7DwE,EAASktB,EAAaA,EAAWltB,OAAS,KAC1CmtB,EAAgBD,EAAaA,EAAWC,cAAgB,KAJzD,EAOkBjB,GAFVgB,EAAaA,EAAW18B,KAAO,MALvC,mBAOE68B,EAPF,KAOSC,EAPT,KASC3c,EAAWlW,EAAiBzJ,KAAKsL,KAEjCiL,EAAQoJ,EAASQ,UACjBJ,EAAQJ,EAASK,UACjB4Z,EAAWja,EAASU,YAAYC,OAChCuZ,EAAWla,EAASU,YAAYG,KAAKD,OAAO,KAAMZ,EAASU,YAAYzT,MAAO,IAAK+S,EAASU,YAAYI,KACxGqZ,EAAcF,EAASrZ,OAAO,IAAKsZ,GACnC5Z,EAAMN,EAASO,QAErB,OACI,mCAEQgc,GACA,qCACI,cAAC,EAAD,IACA,sBAAKriC,UAAU,UAAf,UACI,qBAAKA,UAAU,sBAAf,SACI,sBAAKA,UAAU,sBAAf,UACI,qBAAKA,UAAU,uBAAuB6V,WAAUC,oBAAeC,EAAY,UAA3E,SACI,oBAAI/V,UAAU,QAAd,SAAuBmV,MAE3B,sBAAKnV,UAAU,gBAAgB6V,WAAUC,oBAAeC,EAAY,UAApE,UACI,qBAAI/V,UAAU,QAAd,6BAAuCsiC,EAAvC,OACA,sBAAKtiC,UAAU,OAAf,UACI,qBAAKA,UAAU,SAAf,SACI,4BAAG,sBAAMA,UAAU,eAAewqB,wBAAyB,CAAEC,OAAQ+X,SAEzE,qBAAKxiC,UAAU,SAAf,SACI,4BAAG,sBAAMA,UAAU,eAAewqB,wBAAyB,CAAEC,OAAQgY,eAIjF,qBAAKziC,UAAU,qBAAqB6V,WAAUC,oBAAeC,EAAY,UAAzE,SACI,qBAAI/V,UAAU,0BAAd,UACI,qBAAIA,UAAU,+BAAd,UACI,sBAAKA,UAAU,oCAAf,UACI,qBAAKA,UAAU,qCAAf,oBACA,mBAAG6K,KAAI,iBAAY6R,GAAnB,SACI,qBAAK1c,UAAU,qCAAf,SAAqD0c,SAG7D,qBAAK1c,UAAU,oCAAf,SACI,qBAAKA,UAAU,sCAAf,SACI,cAAC,GAAD,CAAQsY,KAAM1I,EAAiBC,sBAI3C,qBAAI7P,UAAU,+BAAd,UACI,sBAAKA,UAAU,oCAAf,UACI,qBAAKA,UAAU,qCAAf,oBACA,mBAAG6K,KAAI,cAASqb,GAAhB,SACI,qBAAKlmB,UAAU,qCAAf,SAAqDkmB,SAG7D,qBAAKlmB,UAAU,oCAAf,SACI,qBAAKA,UAAU,qCAAf,SACI,cAAC,GAAD,CAAOmkB,OAAQvU,EAAiBC,sBAI5C,qBAAI7P,UAAU,+BAAd,UACI,sBAAKA,UAAU,oCAAf,UACI,qBAAKA,UAAU,qCAAf,8BACA,mBAAG6K,KAAI,oCAA+Bo1B,GAAe1/B,OAAO,SAASwmB,IAAI,aAAzE,SACI,sBAAK/mB,UAAU,qCAAf,UAAqD+/B,EAAS,uBAAUC,UAGhF,qBAAKhgC,UAAU,oCAAf,SACI,qBAAKA,UAAU,wCAAf,SACI,cAAC,GAAD,CAAUmkB,OAAQvU,EAAiBC,sBAI/C,qBAAI7P,UAAU,+BAAd,UACI,sBAAKA,UAAU,oCAAf,UACI,qBAAKA,UAAU,qCAAf,kBACA,mBAAG6K,KAAI,cAASub,GAAhB,SACI,qBAAKpmB,UAAU,qCAAf,SAAqDomB,SAG7D,qBAAKpmB,UAAU,oCAAf,SACI,qBAAKA,UAAU,uCAAf,SACI,cAAC,GAAD,CAASmkB,OAAQvU,EAAiBC,gCAQ9D,cAAC,GAAD,gB,GA3GE3P,IAAMC,YC6CrBqkC,I,yDA/CX,WAAYpjC,GAAQ,uCACVA,G,gEAKNuJ,OAAOsJ,SAAS,EAAG,K,+BAIb,IAAD,OAECiB,EADStF,EAAiBzJ,KAAKmK,QAAQU,MAC1BP,MAAK,SAAAK,GAAC,OAAIA,EAAEH,OAAS,EAAKvP,MAAMk0B,MAAMC,OAAO5kB,QAEhE,IAAKuE,EAED,OADA/T,KAAKC,MAAMgoB,QAAQnlB,KAAK,KACjB,KAGX,IAAMkR,EAASD,EAAOA,EAAKC,OAAS,KAC9BxP,EAAOuP,EAAOA,EAAKvP,KAAO,KAEhC,OACI,mCAEQuP,GACA,qCACI,cAAC,EAAD,IACA,qBAAKlV,UAAU,UAAf,SACI,sBAAKA,UAAU,2BAAf,UACI,qBAAKA,UAAU,2BAAf,SACI,sBAAKA,UAAU,4BAA4B6V,WAAUC,oBAAeC,EAAY,UAAhF,UACI,oBAAI/V,UAAU,QAAd,SAAuBmV,IACvB,qBAAKnV,UAAU,sBAAsBwqB,wBAAyB,CAAEC,OAAQ9kB,UAGhF,cAAC,GAAD,IACA,cAAC,GAAD,kB,GAvCPzF,IAAMC,YCEzBsE,I,8KACQ,IAAD,OACCggC,EAAYtjC,KAAKC,MAAMwJ,SAASmI,MAAQ5R,KAAKC,MAAMwJ,SAASmI,MAAM1M,KAAO,MACzEq+B,EAAavjC,KAAKC,MAAMwJ,SAASmI,MAAQ5R,KAAKC,MAAMwJ,SAASmI,MAAMvP,MAAQ,iBAC3EmhC,EAAmBxjC,KAAKC,MAAMwJ,SAASmI,MAAQ5R,KAAKC,MAAMwJ,SAASmI,MAAMkE,YAAc,2FACvF2tB,EAAWh1B,EAAiBzJ,KAAOyJ,EAAiBzJ,KAAKsL,KAAKozB,cAAgB,GAEpF,OACI,qCACI,cAAC,EAAD,CAAQrjC,IAAK,SAAAmR,GAAM,OAAI,EAAKA,OAASA,GAAQwB,SAAUhT,KAAKkS,kBAC5D,qBAAKrT,UAAU,UAAf,SACI,qBAAKA,UAAU,qBAAf,SACI,sBAAKA,UAAU,mBAAf,UACI,qBAAKA,UAAW,mCAAhB,SACI,qBAAKA,UAAU,gCAAf,SACI,sBAAKA,UAAU,8BAAf,UACI,sBAAKA,UAAU,2BAAf,UACI,oBAAIA,UAAU,2BAA2B6V,WAAUC,oBAAeC,EAAY,UAA9E,SAA0F0uB,IAC1F,oBAAIzkC,UAAU,4BAA4B6V,WAAUC,oBAAeC,EAAY,UAA/E,SAA0F,sBAAM/V,UAAU,eAAhB,SAAgC0kC,MAC1H,mBAAG1kC,UAAU,kCAAkC6V,WAAUC,oBAAeC,EAAY,UAAWC,oBAAkB,OAAOwU,wBAAyB,CAAEC,OAAQka,KAC3J,qBAAK3kC,UAAU,8BAA8B6V,WAAUC,oBAAeC,EAAY,UAAWC,oBAAkB,OAA/G,SACI,cAAC,IAAD,CAAM9U,GAAG,IAAT,SACI,cAAC,EAAD,CAAclB,UAAU,WAAxB,sCAIZ,qBAAKA,UAAU,mCAAf,SACI,qBAAKuP,IAAKq1B,EAAU/uB,WAAUC,oBAAeC,EAAY,UAAWE,kBAAgB,gBAAgBjB,IAAI,cAKxH,cAAC,GAAD,kB,GAhCR9U,IAAMC,YAyCX6jB,eAAWvf,ICzBXqgC,I,8KAtBP,OACI,qBAAK9kC,UAAU,UAAf,SACI,qBAAKA,UAAU,yBAAf,SACI,qBAAKA,UAAU,uBAAf,SACI,qBAAKA,UAAW,uCAAhB,SACI,qBAAKA,UAAU,oCAAf,SACI,qBAAKA,UAAU,kCAAf,SACI,sBAAKA,UAAU,+BAA+B6V,WAAUC,oBAAeC,EAAY,UAAnF,UACI,oBAAI/V,UAAU,+BAAd,mBACA,oBAAIA,UAAU,gCAAd,SAA8C,sBAAMA,UAAU,eAAhB,0BAC9C,oBAAGA,UAAU,sCAAb,kDAAwF,uBAAxF,kDAAgJ,uBAAhJ,mC,GAZjBE,IAAMC,YC4Kd4kC,G,kDAxIb,WAAY3jC,GAAQ,IAAD,8BACjB,cAAMA,IAGD2R,MAAQ,CACXiyB,aAAa,EACbC,WAAW,GAGbt6B,OAAOu6B,QAAU,SAACC,EAAKhgC,EAAKqF,EAAQC,EAAUpG,GAC5CgD,EAAYyC,YAAY,CACtBD,YAAa,EACb7F,QAASmhC,EACThgC,IAAKA,GAAO,cACZqF,OAAQA,GAAU,EAClBC,SAAUA,GAAY,EACtBC,MAAOrG,GAASA,EAAMqG,MAAf,UAA0BrG,EAAMqG,OAAU,oBAhBpC,E,gEAsBE,IAAD,OAClBvJ,KAAKikC,WAEL/9B,EAAYg+B,YACT3/B,MAAK,SAAAkE,GACAA,EACF,EAAK07B,eAGL,EAAK9xB,SAAS,CAAEyxB,WAAW,S,iCAOjCM,IAAIC,KAAK,CACPC,MAAM,EACNzlB,SAAU,KACV0lB,MAAO,IACPC,OAAQ,UACRC,YAAa,GACbC,gBAAiB,iB,qCAKL,IAAD,OACb,OAAOj2B,EAAiB01B,eACrB5/B,MAAK,SAACkE,GACL,OAAIA,GACF,EAAK4J,SAAS,CAAEwxB,aAAa,KACtB,IAGP5gC,QAAQC,MAAM,6BACd,EAAKmP,SAAS,CAAEyxB,WAAW,KACpB,MAGVr/B,OAAM,SAACvF,GACN+D,QAAQC,MAAM,8BAA+BhE,GAC7C,EAAKmT,SAAS,CAAEyxB,WAAW,S,+BAO/B,IAAMa,EAAU3kC,KAAK4R,MAAMiyB,YACrB3gC,EAAQlD,KAAK4R,MAAMkyB,UAEzB,OACE,qCAEIa,IAAYzhC,GACZ,qBAAKrE,UAAU,oBAAf,SACE,cAAC,EAAD,OAKD8lC,IAAYzhC,GACb,cAAC,IAAD,UACE,eAAC,IAAD,WAEE,cAAC,IAAD,CAAO00B,KAAK,IAAIgN,OAAK,EAACC,UAAWpd,KACjC,cAAC,IAAD,CAAOmQ,KAAK,aAAagN,OAAK,EAACC,UAAW7b,KAC1C,cAAC,IAAD,CAAO4O,KAAK,WAAWgN,OAAK,EAACC,UAAW9Z,KACxC,cAAC,IAAD,CAAO6M,KAAK,cAAcgN,OAAK,EAACC,UAAW9R,KAC3C,cAAC,IAAD,CAAO6E,KAAK,iBAAiBgN,OAAK,EAACC,UAAW/N,KAC9C,cAAC,IAAD,CAAOc,KAAK,uBAAuBgN,OAAK,EAACC,UAAWpI,KACpD,cAAC,IAAD,CAAO7E,KAAK,OAAOgN,OAAK,EAACC,UAAWpM,KACpC,cAAC,IAAD,CAAOb,KAAK,WAAWgN,OAAK,EAACC,UAAW9K,KACxC,cAAC,IAAD,CAAOnC,KAAK,SAASgN,OAAK,EAACC,UAAWjH,KACtC,cAAC,IAAD,CAAOhG,KAAK,YAAYgN,OAAK,EAACC,UAAW/G,KACzC,cAAC,IAAD,CAAOlG,KAAK,mBAAmBgN,OAAK,EAACC,UAAW/G,KAChD,cAAC,IAAD,CAAOlG,KAAK,mBAAmBgN,OAAK,EAACC,UAAW7G,KAChD,cAAC,IAAD,CAAOpG,KAAK,yBAAyBgN,OAAK,EAACC,UAAWvG,KACtD,cAAC,IAAD,CAAO1G,KAAK,oBAAoBgN,OAAK,EAACC,UAAWnG,KACjD,cAAC,IAAD,CAAO9G,KAAK,OAAOgN,OAAK,EAACC,UAAW5F,KACpC,cAAC,IAAD,CAAOrH,KAAK,oBAAoBgN,OAAK,EAACC,UAAWhD,KACjD,cAAC,IAAD,CAAOjK,KAAK,kBAAkBgN,OAAK,EAACC,UAAW/D,KAC/C,cAAC,IAAD,CAAOlJ,KAAK,wBAAwBgN,OAAK,EAACC,UAAWlD,KACrD,cAAC,IAAD,CAAO/J,KAAK,wBAAwBgN,OAAK,EAACC,UAAW7C,KACrD,cAAC,IAAD,CAAOpK,KAAK,2BAA2BgN,OAAK,EAACC,UAAWrC,KACxD,cAAC,IAAD,CAAO5K,KAAK,iBAAiBgN,OAAK,EAACC,UAAWC,KAC9C,cAAC,IAAD,CAAOlN,KAAK,iBAAiBgN,OAAK,EAACC,UAAW1B,KAC9C,cAAC,IAAD,CAAOvL,KAAK,+BAA+BgN,OAAK,EAACC,UAAWzB,KAG5D,cAAC,IAAD,CAAOwB,OAAK,EAAChN,KAAK,WAAlB,SAA6B,cAAC,IAAD,CAAU73B,GAAE,mBAAc0O,EAAiBG,qBAGxE,cAAC,IAAD,CAAOgpB,KAAK,SAASgN,OAAK,EAACC,UAAWxB,KAGtC,cAAC,IAAD,CAAOwB,UAAWvhC,UAOtBJ,GACA,qBAAKrE,UAAU,kBAAf,SACE,cAAC,GAAD,a,GAjIME,IAAMC,WC3BT+lC,GAZS,SAAAC,GAClBA,GAAeA,aAAuBC,UACxC,8BAAqB1gC,MAAK,YAAkD,IAA/C2gC,EAA8C,EAA9CA,OAAQC,EAAsC,EAAtCA,OAAQC,EAA8B,EAA9BA,OAAQC,EAAsB,EAAtBA,OAAQC,EAAc,EAAdA,QAC3DJ,EAAOF,GACPG,EAAOH,GACPI,EAAOJ,GACPK,EAAOL,GACPM,EAAQN,OCFdO,IAAS53B,OACP,cAAC,IAAM63B,WAAP,UACE,cAAC,GAAD,MAEF5+B,SAAS6+B,eAAe,SAM1BV,Q","file":"static/js/main.d5caa18a.chunk.js","sourcesContent":["import React from 'react'\r\nimport './Spinner.scss'\r\n\r\nclass Spinner extends React.Component {\r\n // Component\r\n render() {\r\n return (\r\n <div className=\"a4-spinner\" aria-hidden={true}></div>\r\n )\r\n }\r\n}\r\n\r\nexport default Spinner;","import React from 'react'\r\nimport gsap from 'gsap'\r\n\r\nclass BubbleButton extends React.Component {\r\n // Event Handlers\r\n handleBubble(e) {\r\n const bubble = e.target.querySelector('span.a4-btn-bubble span')\r\n if(bubble) {\r\n const rect = e.target.getBoundingClientRect();\r\n const y = e.clientY - rect.top;\r\n const x = e.clientX - rect.left;\r\n\r\n gsap.to(bubble, {\r\n top: y,\r\n left: x\r\n }, 0);\r\n }\r\n }\r\n\r\n // Component\r\n render() {\r\n return (\r\n <button className={\"a4-btn -bubble \" + this.props.className} \r\n onMouseEnter={this.handleBubble} \r\n onMouseLeave={this.handleBubble} \r\n ref={this.props.innerRef} \r\n type={this.props.type} \r\n formNoValidate={this.props.formNoValidate} \r\n onClick={this.props.onClick}>\r\n {this.props.children}\r\n <span className=\"a4-btn-bubble\">\r\n <span></span>\r\n </span>\r\n </button>\r\n )\r\n }\r\n}\r\n\r\nexport default React.forwardRef((props, ref) => <BubbleButton \r\n innerRef={ref} {...props}\r\n/>);","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19.0748 17.121C18.7909 17.8241 18.4549 18.4713 18.0656 19.0663C17.5348 19.8775 17.1003 20.439 16.7654 20.7508C16.2463 21.2626 15.6901 21.5247 15.0945 21.5397C14.6669 21.5397 14.1513 21.4092 13.551 21.1446C12.9488 20.8813 12.3954 20.7508 11.8893 20.7508C11.3586 20.7508 10.7894 20.8813 10.1806 21.1446C9.57089 21.4092 9.07969 21.5471 8.70413 21.5608C8.13298 21.5869 7.56368 21.3173 6.99542 20.7508C6.63273 20.4117 6.17907 19.8303 5.63561 19.0067C5.05252 18.1272 4.57314 17.1073 4.19758 15.9446C3.79538 14.6887 3.59375 13.4725 3.59375 12.2951C3.59375 10.9464 3.8656 9.78316 4.4101 8.80837C4.83803 8.02538 5.40733 7.40774 6.11986 6.95432C6.83238 6.5009 7.60226 6.26984 8.43136 6.25506C8.88502 6.25506 9.47993 6.40549 10.2192 6.70115C10.9564 6.9978 11.4298 7.14823 11.6373 7.14823C11.7925 7.14823 12.3183 6.97233 13.2098 6.62164C14.0528 6.29642 14.7642 6.16176 15.3471 6.21481C16.9265 6.35146 18.1131 7.01891 18.9022 8.22141C17.4897 9.13893 16.7909 10.424 16.8048 12.0726C16.8176 13.3567 17.2521 14.4253 18.1061 15.2738C18.4931 15.6676 18.9254 15.9719 19.4063 16.1881C19.302 16.5123 19.1919 16.8228 19.0748 17.121ZM15.4525 1.84011C15.4525 2.84659 15.1096 3.78634 14.4259 4.65616C13.6008 5.69021 12.6029 6.28773 11.5207 6.19344C11.507 6.0727 11.499 5.94561 11.499 5.81207C11.499 4.84585 11.8913 3.81181 12.5881 2.96633C12.9359 2.53826 13.3784 2.18232 13.9149 1.89838C14.4502 1.61867 14.9566 1.46399 15.4328 1.4375C15.4468 1.57205 15.4525 1.70661 15.4525 1.8401V1.84011Z\"\n});\n\nfunction SvgApple(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 23 23\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgApple);\nexport default \"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjMgMjMiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQo8cGF0aCBkPSJNMTkuMDc0OCAxNy4xMjFDMTguNzkwOSAxNy44MjQxIDE4LjQ1NDkgMTguNDcxMyAxOC4wNjU2IDE5LjA2NjNDMTcuNTM0OCAxOS44Nzc1IDE3LjEwMDMgMjAuNDM5IDE2Ljc2NTQgMjAuNzUwOEMxNi4yNDYzIDIxLjI2MjYgMTUuNjkwMSAyMS41MjQ3IDE1LjA5NDUgMjEuNTM5N0MxNC42NjY5IDIxLjUzOTcgMTQuMTUxMyAyMS40MDkyIDEzLjU1MSAyMS4xNDQ2QzEyLjk0ODggMjAuODgxMyAxMi4zOTU0IDIwLjc1MDggMTEuODg5MyAyMC43NTA4QzExLjM1ODYgMjAuNzUwOCAxMC43ODk0IDIwLjg4MTMgMTAuMTgwNiAyMS4xNDQ2QzkuNTcwODkgMjEuNDA5MiA5LjA3OTY5IDIxLjU0NzEgOC43MDQxMyAyMS41NjA4QzguMTMyOTggMjEuNTg2OSA3LjU2MzY4IDIxLjMxNzMgNi45OTU0MiAyMC43NTA4QzYuNjMyNzMgMjAuNDExNyA2LjE3OTA3IDE5LjgzMDMgNS42MzU2MSAxOS4wMDY3QzUuMDUyNTIgMTguMTI3MiA0LjU3MzE0IDE3LjEwNzMgNC4xOTc1OCAxNS45NDQ2QzMuNzk1MzggMTQuNjg4NyAzLjU5Mzc1IDEzLjQ3MjUgMy41OTM3NSAxMi4yOTUxQzMuNTkzNzUgMTAuOTQ2NCAzLjg2NTYgOS43ODMxNiA0LjQxMDEgOC44MDgzN0M0LjgzODAzIDguMDI1MzggNS40MDczMyA3LjQwNzc0IDYuMTE5ODYgNi45NTQzMkM2LjgzMjM4IDYuNTAwOSA3LjYwMjI2IDYuMjY5ODQgOC40MzEzNiA2LjI1NTA2QzguODg1MDIgNi4yNTUwNiA5LjQ3OTkzIDYuNDA1NDkgMTAuMjE5MiA2LjcwMTE1QzEwLjk1NjQgNi45OTc4IDExLjQyOTggNy4xNDgyMyAxMS42MzczIDcuMTQ4MjNDMTEuNzkyNSA3LjE0ODIzIDEyLjMxODMgNi45NzIzMyAxMy4yMDk4IDYuNjIxNjRDMTQuMDUyOCA2LjI5NjQyIDE0Ljc2NDIgNi4xNjE3NiAxNS4zNDcxIDYuMjE0ODFDMTYuOTI2NSA2LjM1MTQ2IDE4LjExMzEgNy4wMTg5MSAxOC45MDIyIDguMjIxNDFDMTcuNDg5NyA5LjEzODkzIDE2Ljc5MDkgMTAuNDI0IDE2LjgwNDggMTIuMDcyNkMxNi44MTc2IDEzLjM1NjcgMTcuMjUyMSAxNC40MjUzIDE4LjEwNjEgMTUuMjczOEMxOC40OTMxIDE1LjY2NzYgMTguOTI1NCAxNS45NzE5IDE5LjQwNjMgMTYuMTg4MUMxOS4zMDIgMTYuNTEyMyAxOS4xOTE5IDE2LjgyMjggMTkuMDc0OCAxNy4xMjFaTTE1LjQ1MjUgMS44NDAxMUMxNS40NTI1IDIuODQ2NTkgMTUuMTA5NiAzLjc4NjM0IDE0LjQyNTkgNC42NTYxNkMxMy42MDA4IDUuNjkwMjEgMTIuNjAyOSA2LjI4NzczIDExLjUyMDcgNi4xOTM0NEMxMS41MDcgNi4wNzI3IDExLjQ5OSA1Ljk0NTYxIDExLjQ5OSA1LjgxMjA3QzExLjQ5OSA0Ljg0NTg1IDExLjg5MTMgMy44MTE4MSAxMi41ODgxIDIuOTY2MzNDMTIuOTM1OSAyLjUzODI2IDEzLjM3ODQgMi4xODIzMiAxMy45MTQ5IDEuODk4MzhDMTQuNDUwMiAxLjYxODY3IDE0Ljk1NjYgMS40NjM5OSAxNS40MzI4IDEuNDM3NUMxNS40NDY4IDEuNTcyMDUgMTUuNDUyNSAxLjcwNjYxIDE1LjQ1MjUgMS44NDAxVjEuODQwMTFaIiAvPg0KPC9zdmc+DQo=\";\nexport { ForwardRef as ReactComponent };","class LogService {\r\n log = [];\r\n\r\n add(message) {\r\n if (this.log.length > 200) {\r\n this.log = [];\r\n }\r\n this.log.push(message);\r\n }\r\n\r\n clear() {\r\n this.log = [];\r\n }\r\n}\r\n\r\nconst logService = new LogService();\r\nexport default logService;","import logService from './LogService'\r\n\r\nclass FetchService {\r\n constructor() {\r\n }\r\n\r\n getResponse(response) {\r\n try {\r\n if (!response) {\r\n console.error(\"http-service.getResponse()) Response is null or undefined\");\r\n logService.add(\"fetchService.getResponse() Response is null or undefined\");\r\n return Promise.reject(new Error(\"Response is null or undefined\"));\r\n }\r\n\r\n if (response.ok) {\r\n const contentType = response.headers.get('Content-Type');\r\n logService.add(`fetchService.getResponse() response content-type ${contentType}`);\r\n\r\n if (contentType.includes('text/plain')) {\r\n logService.add(\"fetchService.getResponse() return response.text()\");\r\n return response.text();\r\n } else if (contentType.includes('application/json')) {\r\n logService.add(\"fetchService.getResponse() return response.json()\");\r\n return response.json();\r\n } else {\r\n throw new Error('Unsupported content type');\r\n }\r\n }\r\n\r\n logService.add(\"fetchService.getResponse() response not ok\");\r\n logService.add(`fetchService.getResponse() response.status = ${response.status}`);\r\n logService.add(`fetchService.getResponse() response.statusText = ${response.statusText}`);\r\n logService.add(`fetchService.getResponse() response.url = ${response.url}`);\r\n\r\n const headersArray = [...response.headers.entries()]; // Convert headers to an array\r\n const headersString = headersArray\r\n .map(([key, value]) => `${key}: ${value}`) // Format each header as \"key: value\"\r\n .join(', '); // Join them with newlines\r\n logService.add(`fetchService.getResponse() response.headers = ${headersString}`);\r\n\r\n // Handle HTTP error responses\r\n const errorDetails = {\r\n status: response.status,\r\n statusText: response.statusText,\r\n url: response.url,\r\n headers: [...response.headers.entries()] // Include headers if needed\r\n };\r\n\r\n // Try parsing the response body for more error details\r\n return response.json()\r\n .then((body) => {\r\n errorDetails.body = body;\r\n console.error(\"http-service.getResponse() response body = \", body);\r\n return Promise.reject(errorDetails);\r\n })\r\n .catch(() => {\r\n // Reject with error details if the body is not JSON\r\n return Promise.reject(errorDetails);\r\n });\r\n } catch (error) {\r\n console.error(\"http-service.getResponse() Unexpected error = \", error);\r\n logService.add(`fetchService.getResponse() Unexpected error = ${error}`);\r\n return Promise.reject(error); // Handle unexpected errors\r\n }\r\n }\r\n\r\n get(url, headers) {\r\n const requestOptions = {\r\n method: \"GET\",\r\n headers: headers,\r\n }\r\n\r\n logService.add(`fetchService.get() return fetch() ${url}`);\r\n\r\n return fetch(url, requestOptions)\r\n .then(response => {\r\n logService.add('fetchService.get() fetch().then() return');\r\n return this.getResponse(response);\r\n })\r\n .catch(error => {\r\n console.error('fetchService.get() fetch() caught error, url = ', url);\r\n console.error('fetchService.get() fetch() caught error = ', error);\r\n logService.add(`fetchService.get() fetch() caught error = ${error}`);\r\n throw error;\r\n });\r\n }\r\n\r\n post(url, headers, body) {\r\n const requestOptions = {\r\n method: \"POST\",\r\n headers: headers,\r\n body: JSON.stringify(body)\r\n };\r\n\r\n logService.add(`fetchService.post() return fetch() ${url}`);\r\n\r\n return fetch(url, requestOptions)\r\n .then(response => {\r\n logService.add('fetchService.post() fetch().then() return');\r\n return this.getResponse(response);\r\n })\r\n .catch(error => {\r\n console.error('fetchService.post() fetch() caught error, url = ', url);\r\n console.error('fetchService.post() fetch() caught error = ', error);\r\n logService.add(`fetchService.post() fetch() caught error = ${error}`);\r\n throw error;\r\n });\r\n }\r\n\r\n postNoResponse(url, headers, body) {\r\n const requestOptions = {\r\n method: \"POST\",\r\n headers: headers,\r\n body: JSON.stringify(body)\r\n }\r\n\r\n logService.add(`fetchService.postNoResponse() return fetch() ${url}`);\r\n\r\n return fetch(url, requestOptions)\r\n .then(response => {\r\n logService.add('fetchService.post() postNoResponse().then() return');\r\n return response;\r\n })\r\n .catch(error => {\r\n console.error('fetchService.postNoResponse() fetch() caught error, url = ', url);\r\n console.error('fetchService.postNoResponse() fetch() caught error = ', error);\r\n logService.add(`fetchService.postNoResponse() fetch() caught error = ${error}`);\r\n throw error;\r\n });\r\n }\r\n\r\n put(url, headers, body) {\r\n const requestOptions = {\r\n method: \"PUT\",\r\n headers: headers,\r\n body: JSON.stringify(body)\r\n }\r\n\r\n logService.add(`fetchService.put() return fetch() ${url}`);\r\n\r\n return fetch(url, requestOptions)\r\n .then(response => {\r\n logService.add('fetchService.put() fetch().then() return');\r\n return this.getResponse(response);\r\n })\r\n .catch(error => {\r\n console.error('fetchService.put() fetch() caught error, url = ', url);\r\n console.error('fetchService.put() fetch() caught error = ', error);\r\n logService.add(`fetchService.put() fetch() caught error = ${error}`);\r\n throw error;\r\n });\r\n }\r\n\r\n delete(url, headers, body) {\r\n const requestOptions = {\r\n method: \"DELETE\",\r\n headers: headers,\r\n body: JSON.stringify(body)\r\n }\r\n\r\n logService.add(`fetchService.delete() return fetch() ${url}`);\r\n\r\n return fetch(url, requestOptions)\r\n .then(response => {\r\n logService.add('fetchService.delete() fetch().then() return');\r\n return this.getResponse(response);\r\n })\r\n .catch(error => {\r\n console.error('fetchService.delete() fetch() caught error, url = ', url);\r\n console.error('fetchService.delete() fetch() caught error = ', error);\r\n logService.add(`fetchService.delete() fetch() caught error = ${error}`);\r\n throw error;\r\n });\r\n }\r\n}\r\n\r\nconst fetchService = new FetchService();\r\nexport default fetchService;","import logService from './LogService'\r\nimport axios from 'axios'\r\n\r\nclass FetchService {\r\n constructor() {\r\n }\r\n\r\n handleError(error) {\r\n if (error.response) {\r\n // The request was made, and the server responded with a status code\r\n // that falls outside the range of 2xx\r\n logService.add('axiosService responded with an error');\r\n logService.add(`axiosService status = ${error.response.status}`);\r\n\r\n console.error('Server responded with an error:');\r\n console.error('Status:', error.response.status);\r\n console.error('Headers:', error.response.headers);\r\n console.error('Data:', error.response.data);\r\n } else if (error.request) {\r\n // The request was made, but no response was received\r\n logService.add('axiosService no response');\r\n logService.add(`axiosService code = ${error.code}`);\r\n logService.add(`axiosService message = ${error.message}`);\r\n\r\n console.error('No response received from server:', error);\r\n console.error('Error code:', error.code);\r\n console.error('Error message:', error.message);\r\n console.error(error.request);\r\n } else {\r\n // Something else happened while setting up the request\r\n logService.add('axiosService error during request setup');\r\n logService.add(`axiosService code = ${error.code}`);\r\n logService.add(`axiosService message = ${error.message}`);\r\n\r\n console.error('Error during request setup:', error.message);\r\n }\r\n\r\n // Optionally handle specific errors (e.g., timeout, network issues)\r\n if (error.code === 'ECONNABORTED') {\r\n logService.add('axiosService Request timeout occurred');\r\n\r\n console.error('Request timeout occurred');\r\n } else if (navigator.onLine === false) {\r\n logService.add('axiosService No internet connection');\r\n\r\n console.error('No internet connection');\r\n }\r\n }\r\n\r\n get(url, headers) {\r\n headers[\"UsingAxios\"] = \"true\";\r\n const requestOptions = {\r\n headers: headers,\r\n timeout: 30000\r\n }\r\n\r\n logService.add('axiosService.get() return fetch()');\r\n\r\n return axios.get(url, requestOptions)\r\n .then(response => {\r\n logService.add('axiosService.get() get().then() return');\r\n return response.data;\r\n })\r\n .catch(error => {\r\n console.error('axiosService.get() get() caught error ', error);\r\n logService.add(`axiosService.get() get() caught error = ${error}`);\r\n this.handleError(error);\r\n throw error;\r\n });\r\n }\r\n\r\n post(url, headers, body) {\r\n headers[\"UsingAxios\"] = \"true\";\r\n const requestOptions = {\r\n headers: headers,\r\n timeout: 30000\r\n }\r\n\r\n logService.add('axiosService.post() return fetch()');\r\n\r\n return axios.post(url, body, requestOptions)\r\n .then(response => {\r\n logService.add('axios.post() success');\r\n return response.data;\r\n })\r\n .catch(error => {\r\n // Handle different types of errors\r\n console.error('axiosService.post() post() caught error ', error);\r\n logService.add(`axiosService.post() post() caught error = ${error}`);\r\n this.handleError(error);\r\n throw error;\r\n });\r\n }\r\n\r\n postNoResponse(url, headers, body) {\r\n headers[\"UsingAxios\"] = \"true\";\r\n const requestOptions = {\r\n headers: headers,\r\n timeout: 30000\r\n }\r\n\r\n return axios.post(url, body, requestOptions)\r\n .then(response => {\r\n logService.add('axios.postNoResponse() success');\r\n return response.data;\r\n })\r\n .catch(error => {\r\n console.error('axiosService.postNoResponse() post() caught error ', error);\r\n logService.add(`axiosService.postNoResponse() post() caught error = ${error}`);\r\n this.handleError(error);\r\n throw error;\r\n });\r\n }\r\n\r\n put(url, headers, body) {\r\n headers[\"UsingAxios\"] = \"true\";\r\n const requestOptions = {\r\n headers: headers,\r\n timeout: 30000\r\n }\r\n\r\n return axios.put(url, body, requestOptions)\r\n .then(response => {\r\n logService.add('axios.put() success');\r\n return response.data;\r\n })\r\n .catch(error => {\r\n console.error('axiosService.put() put() caught error ', error);\r\n logService.add(`axiosService.put() put() caught error = ${error}`);\r\n this.handleError(error);\r\n throw error;\r\n });\r\n }\r\n\r\n delete(url, headers, body) {\r\n headers[\"UsingAxios\"] = \"true\";\r\n const requestOptions = {\r\n headers: headers,\r\n timeout: 30000\r\n }\r\n\r\n return axios.delete(url, body, requestOptions)\r\n .then(response => {\r\n logService.add('axios.delete() success');\r\n return response.data;\r\n })\r\n .catch(error => {\r\n console.error('axiosService.delete() delete() caught error ', error);\r\n logService.add(`axiosService.delete() delete() caught error = ${error}`);\r\n this.handleError(error);\r\n throw error;\r\n });\r\n }\r\n}\r\n\r\nconst fetchService = new FetchService();\r\nexport default fetchService;","import fetchService from './FetchService'\r\nimport axiosService from './AxiosService'\r\nimport logService from './LogService'\r\n\r\nconst HttpSelector = Object.freeze({\r\n UseFetch: 'UseFetch',\r\n UseAxios: 'UseAxios'\r\n});\r\n\r\nconst ApiSelector = Object.freeze({\r\n UseApi: 'UseApi',\r\n UseApp: 'UseApp'\r\n});\r\n\r\nclass HttpService {\r\n constructor() {\r\n this.httpSelector = HttpSelector.UseFetch;\r\n this.apiSelector = ApiSelector.UseApi;\r\n\r\n this.apiToken = null;\r\n this.sessionId = null;\r\n this.refreshingApiToken = false;\r\n\r\n //client = cubert-landing\r\n this.hssEdClientId = '39b11001-4269-4b26-a138-db50c2bbdf69';\r\n this.hssEdClientSecret = '40015df8-380c-456e-abf1-254791cb9509';\r\n this.hssEdClientPlatform = 'web';\r\n\r\n let metaSiteName = document.querySelector('meta[name=hssedsitename]');\r\n if (metaSiteName) {\r\n this.siteName = metaSiteName.getAttribute('content');\r\n if (this.siteName.startsWith('@')) {\r\n this.siteName = \"nursececlub.com\";\r\n // NURSING = nursececlub.com accelerated-ce.com ohionursepracticeactce.com newyorkinfectioncontrolce.com paact31training.com cnaceu.com oregon-afh-ce.com michigan-implicit-bias-training.com\r\n // ACCOUNTING = cpelite.com, affordable-new-jersey-law-ethics.com\r\n }\r\n }\r\n\r\n let metaSessionId = document.querySelector('meta[name=hssedsessionid]');\r\n if (metaSessionId) {\r\n this.sessionId = metaSessionId.getAttribute('content');\r\n if (this.sessionId.startsWith('@'))\r\n this.sessionId = null;\r\n }\r\n\r\n let metaSlot = document.querySelector('meta[name=hssedslot]');\r\n if (metaSlot) {\r\n this.slot = metaSlot.getAttribute('content');\r\n }\r\n if (!this.slot || this.slot.startsWith('@')) {\r\n this.slot = 'prod';\r\n }\r\n\r\n let metaLocal = document.querySelector('meta[name=hssedlocal]');\r\n if (metaLocal) {\r\n this.local = metaLocal.getAttribute('content');\r\n }\r\n if (this.local) {\r\n if (this.local.startsWith('@')) {\r\n this.local = false;\r\n }\r\n else {\r\n this.local = this.local.toLowerCase() === \"true\";\r\n }\r\n } else {\r\n this.local = false;\r\n }\r\n\r\n if (this.local) {\r\n this.apiUrl = \"http://localhost:7002\";\r\n }\r\n else {\r\n // const hostname = window.location.hostname;\r\n // const apiHostname = `api.${hostname}`;\r\n // this.apiAliasUrl = `${window.location.protocol}//${apiHostname}`;\r\n\r\n switch (this.slot) {\r\n case 'dev':\r\n this.apiUrl = \"https://hssedapi.azurewebsites.net\";\r\n //this.apiUrl = \"https://api-dev.hssed.com\";\r\n break;\r\n case 'staging':\r\n this.apiUrl = \"https://api-staging.hssed.com\";\r\n break;\r\n default:\r\n this.apiUrl = \"https://hssedapi.azurewebsites.net\";\r\n break;\r\n }\r\n }\r\n\r\n let metaColor = document.querySelector('meta[name=hssedcolor]');\r\n if (metaColor) {\r\n this.color = metaColor.getAttribute('content');\r\n document.documentElement.style.setProperty('--spinner-color', this.color);\r\n }\r\n if (!this.color || this.color.startsWith('@')) {\r\n this.color = null; //DEFAULT COLOR\r\n document.documentElement.style.setProperty('--spinner-color', \"#4AD5C6\");\r\n }\r\n\r\n console.warn(`http-service.siteName = ${this.siteName}`)\r\n console.warn(`http-service.slot = ${this.slot}`)\r\n console.warn(`http-service.local = ${this.local}`)\r\n console.warn(`http-service.apiUrl = ${this.apiUrl}`)\r\n }\r\n\r\n setApiRoutingCookie() {\r\n // Set a cookie named `routeBackend` with a value `appServer` that expires in 1 day\r\n const cookieName = \"routeBackend\";\r\n const cookieValue = \"appServer\";\r\n const expiration = new Date();\r\n expiration.setDate(expiration.getDate() + 1); // 1 day expiration\r\n\r\n document.cookie = `${cookieName}=${cookieValue}; path=/`;\r\n }\r\n\r\n selectApi(selection = null) {\r\n\r\n if (selection != null) {\r\n this.httpSelector = selection.httpSelector;\r\n this.apiSelector = selection.apiSelector;\r\n\r\n console.log('httpService.selectApi() httpSelector = ', this.httpSelector);\r\n console.log('httpService.selectApi() apiSelector = ', this.apiSelector);\r\n\r\n return Promise.resolve(true);\r\n }\r\n else {\r\n logService.clear();\r\n logService.add('httpService.selectApi() return checkApi()');\r\n this.startTime = performance.now();\r\n\r\n return this.checkApi()\r\n .then(success => {\r\n if (success) {\r\n let elapsedTime = (performance.now() - this.startTime);\r\n let reportError = !this.useFetchUseApi;\r\n let message = '';\r\n message += !this.useFetchUseApi ? 'no-fetch-api' : '';\r\n message += !this.useAxiosUseApi ? ', no-axios-api' : '';\r\n message += !this.useFetchUseApp ? ', no-fetch-app' : '';\r\n message += !this.useAxiosUseApp ? ', no-axios-app' : '';\r\n message += !this.useFetchUseApi ? (this.useThirdParty ? '' : ', no-third-party') : '';\r\n message += !this.useFetchUseApi ? (this.getVersion ? ', got-version' : ', no-get-version') : '';\r\n let noApi = false;\r\n\r\n if (this.useFetchUseApi) {\r\n this.httpSelector = HttpSelector.UseFetch;\r\n this.apiSelector = ApiSelector.UseApi;\r\n }\r\n else if (this.useAxiosUseApi) {\r\n this.httpSelector = HttpSelector.UseAxios;\r\n this.apiSelector = ApiSelector.UseApi;\r\n }\r\n else if (this.useFetchUseApp) {\r\n this.httpSelector = HttpSelector.UseFetch;\r\n this.apiSelector = ApiSelector.UseApp;\r\n }\r\n else if (this.useAxiosUseApp) {\r\n this.httpSelector = HttpSelector.UseAxios;\r\n this.apiSelector = ApiSelector.UseApp;\r\n }\r\n else {\r\n noApi = true;\r\n }\r\n\r\n if (this.apiSelector == ApiSelector.UseApp) {\r\n this.setApiRoutingCookie();\r\n }\r\n\r\n if (message != '') {\r\n logService.add(`httpService.selectApi() ${message}`);\r\n\r\n console.log(`httpService.selectApi() ${message}`);\r\n }\r\n\r\n logService.add(`httpService.selectApi() httpSelector = ${this.httpSelector}`);\r\n logService.add(`httpService.selectApi() apiSelector = ${this.apiSelector}`);\r\n\r\n console.log('httpService.selectApi() httpSelector = ', this.httpSelector);\r\n console.log('httpService.selectApi() apiSelector = ', this.apiSelector);\r\n\r\n if (reportError) {\r\n let errorModel = {\r\n status: noApi ? \"failed\" : \"workaround\",\r\n source: \"selectApi\",\r\n message: message,\r\n lineNo: 0,\r\n columnNo: 0,\r\n stack: \"No stack trace\",\r\n url: window.location.href,\r\n referrer: document.referrer,\r\n elapsedTime: elapsedTime,\r\n log: logService.log\r\n };\r\n this.reportError(errorModel);\r\n }\r\n\r\n return true;\r\n }\r\n console.error('httpService.selectApi() failed', logService.log);\r\n return false;\r\n })\r\n .catch((e) => {\r\n console.error('httpService.selectApi() error', logService.log);\r\n return false;\r\n });\r\n }\r\n }\r\n\r\n checkApi() {\r\n //console.log('calling tryUseFetchUseApi...');\r\n logService.add('httpService.checkApi() return tryUseFetchUseApi()');\r\n return this.tryUseFetchUseApi()\r\n .then(success => {\r\n this.useFetchUseApi = success;\r\n //console.log('calling tryUseAxiosUseApi...');\r\n logService.add('httpService.checkApi() return tryUseAxiosUseApi()');\r\n return this.tryUseAxiosUseApi()\r\n .then(success => {\r\n this.useAxiosUseApi = success;\r\n //console.log('calling tryUseFetchUseApp...');\r\n logService.add('httpService.checkApi() return tryUseFetchUseApp()');\r\n return this.tryUseFetchUseApp()\r\n .then(success => {\r\n this.useFetchUseApp = success;\r\n //console.log('calling tryUseFetchUseApp...');\r\n logService.add('httpService.checkApi() return tryUseAxiosUseApp()');\r\n return this.tryUseAxiosUseApp()\r\n .then(success => {\r\n this.useAxiosUseApp = success;\r\n //console.log('calling tryThirdPartyRequest...');\r\n return this.tryThirdPartyRequest()\r\n .then(success => {\r\n this.useThirdParty = success;\r\n //console.log('calling tryGetVersion...');\r\n return this.tryGetVersion()\r\n .then(success => {\r\n this.getVersion = success;\r\n\r\n return this.useFetchUseApi || this.useAxiosUseApi || this.useFetchUseApp || this.useAxiosUseApp;\r\n });\r\n });\r\n });\r\n });\r\n });\r\n });\r\n }\r\n\r\n tryGetVersion() {\r\n return this.tryGetVersionImpl()\r\n .then((success) => {\r\n if (success) {\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n })\r\n .catch((e) => {\r\n return false;\r\n });\r\n }\r\n\r\n tryGetVersionImpl() {\r\n if (!this.useFetchUseApi) {\r\n this.httpSelector = HttpSelector.UseFetch;\r\n this.apiSelector = ApiSelector.UseApi;\r\n\r\n const url = 'https://api.hssed.com/api/version';\r\n\r\n const headers = {\r\n 'Content-type': 'text/plain'\r\n };\r\n\r\n let func = this.getHttpFunc('get');\r\n if (func) {\r\n return func(url, headers)\r\n .then(text => {\r\n logService.add(`httpService.tryGetVersion() then() returns ${text}`);\r\n return text;\r\n })\r\n .catch(error => {\r\n console.error('http-service.tryGetVersion() caught error ', error);\r\n logService.add(`httpService.tryGetVersion() caught error = ${error}`);\r\n throw error;\r\n });\r\n }\r\n return Promise.reject(new Error('No http func'));\r\n }\r\n else {\r\n return Promise.resolve(true);\r\n }\r\n }\r\n\r\n tryThirdPartyRequest() {\r\n return this.tryThirdPartyRequestImpl()\r\n .then((success) => {\r\n if (success) {\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n })\r\n .catch((e) => {\r\n return false;\r\n });\r\n }\r\n\r\n tryThirdPartyRequestImpl() {\r\n if (!this.useFetchUseApi) {\r\n this.httpSelector = HttpSelector.UseFetch;\r\n this.apiSelector = ApiSelector.UseApi;\r\n\r\n const url = 'https://jsonplaceholder.typicode.com/posts';\r\n\r\n const headers = {\r\n 'Content-type': 'application/json; charset=UTF-8'\r\n };\r\n\r\n const body = {\r\n title: 'foo',\r\n body: 'bar',\r\n userId: 1,\r\n };\r\n\r\n let func = this.getHttpFunc('post');\r\n if (func) {\r\n return func(url, headers, body)\r\n .then(json => {\r\n logService.add(`httpService.tryThirdPartyRequest() then() returns ${JSON.stringify(json)}`);\r\n return json;\r\n })\r\n .catch(error => {\r\n console.error('http-service.tryThirdPartyRequest() caught error ', error);\r\n logService.add(`httpService.tryThirdPartyRequest() caught error = ${error}`);\r\n throw error;\r\n });\r\n }\r\n return Promise.reject(new Error('No http func'));\r\n }\r\n else {\r\n return Promise.resolve(true);\r\n }\r\n }\r\n\r\n tryUseFetchUseApi() {\r\n this.httpSelector = HttpSelector.UseFetch;\r\n this.apiSelector = ApiSelector.UseApi;\r\n return this.getPreBootstrap();\r\n }\r\n\r\n tryUseAxiosUseApi() {\r\n this.httpSelector = HttpSelector.UseAxios;\r\n this.apiSelector = ApiSelector.UseApi;\r\n return this.getPreBootstrap();\r\n }\r\n\r\n tryUseFetchUseApp() {\r\n this.httpSelector = HttpSelector.UseFetch;\r\n this.apiSelector = ApiSelector.UseApp;\r\n return this.getPreBootstrap();\r\n }\r\n\r\n tryUseAxiosUseApp() {\r\n this.httpSelector = HttpSelector.UseAxios;\r\n this.apiSelector = ApiSelector.UseApp;\r\n return this.getPreBootstrap();\r\n }\r\n\r\n getPreBootstrap() {\r\n return this.getPreBootstrapImpl()\r\n .then((success) => {\r\n if (success) {\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n })\r\n .catch((e) => {\r\n return false;\r\n });\r\n }\r\n\r\n getPreBootstrapImpl() {\r\n const url = `api/site/prebootstrap/${httpService.siteName}/cuberto`;\r\n const body = {\r\n \"useCache\": true,\r\n \"useLanding\": true,\r\n \"usePaymentOptions\": true,\r\n \"useCatalog\": true,\r\n \"usePages\": true,\r\n \"useHeaderNavs\": true,\r\n \"useFooterNavs\": true,\r\n \"usePassTypes\": true,\r\n \"useCourseBundleTypes\": true,\r\n \"useGroupTypes\": true,\r\n \"injectApiToken\": true,\r\n \"injectImageSets\": true,\r\n \"injectColors\": true,\r\n \"injectImageUrls\": true,\r\n \"injectImageBytes\": false\r\n };\r\n\r\n logService.add(`httpService.getPreBootstrap() return httpService.post() ${url}`);\r\n\r\n return this.post(url, body, false)\r\n .then(json => {\r\n if (json && json.succeeded) {\r\n logService.add('httpService.getPreBootstrap() SUCCESS');\r\n return true;\r\n }\r\n else {\r\n if (json) {\r\n console.error(\"Cannot get pre bootstrap - json errors\", json.errors);\r\n\r\n logService.add('httpService.getPreBootstrapImpl() json errors');\r\n logService.add('httpService.getPreBootstrap() FAILED');\r\n }\r\n else {\r\n console.error(\"Cannot get pre bootstrap - null json\");\r\n\r\n logService.add('httpService.getPreBootstrapImpl() null json');\r\n logService.add('httpService.getPreBootstrap() FAILED');\r\n }\r\n }\r\n return Promise.reject(new Error(\"Failed to get pre bootstrap\"));\r\n })\r\n .catch(error => {\r\n console.error('httpService.getPreBootstrapImpl() httpService.post() caught error = ', error);\r\n\r\n logService.add(`httpService.getPreBootstrapImpl() httpService.post() caught error = ${error}`);\r\n logService.add('httpService.getPreBootstrap() FAILED');\r\n throw error;\r\n });\r\n }\r\n\r\n isBot(userAgent) {\r\n if (!userAgent) return false; // Ensure a valid userAgent is provided\r\n\r\n // Common bot identifiers in user-agent strings\r\n const botKeywords = [\r\n \"bot\",\r\n \"crawl\",\r\n \"spider\",\r\n \"slurp\",\r\n \"bingpreview\",\r\n \"mediapartners\", // Google AdSense\r\n \"google\", // General Google crawlers\r\n \"yandex\",\r\n \"baidu\",\r\n \"duckduckbot\",\r\n \"facebot\",\r\n \"twitterbot\",\r\n \"applebot\",\r\n \"semrushbot\",\r\n \"screaming frog\",\r\n \"ahrefsbot\",\r\n \"mj12bot\",\r\n \"uptimerobot\",\r\n \"curl\", // Command-line tool often used for scraping\r\n \"wget\", // Command-line tool\r\n ];\r\n\r\n // Convert the user-agent to lowercase for case-insensitive matching\r\n const lowerCaseUserAgent = userAgent.toLowerCase();\r\n\r\n // Check if the user-agent contains any bot keywords\r\n return botKeywords.some(keyword => lowerCaseUserAgent.includes(keyword));\r\n }\r\n\r\n getFetchImplementationIdentifier() {\r\n const userAgent = navigator.userAgent;\r\n\r\n // Modern browsers support userAgentData (more reliable than userAgent)\r\n const browserInfo = navigator.userAgentData ? navigator.userAgentData.brands : null;\r\n\r\n // Check for the presence of features tied to specific engines\r\n const isChromiumBased =\r\n !!window.chrome ||\r\n (!!browserInfo && browserInfo.some(brand => brand.brand.includes(\"Chromium\")));\r\n\r\n const isFirefox = userAgent.includes(\"Firefox\");\r\n const isWebKit = userAgent.includes(\"AppleWebKit\") && !isChromiumBased;\r\n\r\n if (isChromiumBased) {\r\n return \"Chromium-based (Blink engine)\";\r\n } else if (isFirefox) {\r\n return \"Gecko-based (Firefox)\";\r\n } else if (isWebKit) {\r\n return \"WebKit-based (Safari)\";\r\n } else if ('fetch' in window) {\r\n return \"Unknown (Fetch API supported)\";\r\n } else {\r\n return \"Fetch API not supported\";\r\n }\r\n }\r\n\r\n reportError(error) {\r\n const url = 'api/reporterror';\r\n\r\n if (!error.source) {\r\n error.source = httpService.siteName;\r\n }\r\n\r\n if (!error.userAgent) {\r\n error.userAgent = navigator.userAgent;\r\n }\r\n error.isBot = this.isBot(error.userAgent);\r\n\r\n if (!error.fetchImplementation) {\r\n error.fetchImplementation = this.getFetchImplementationIdentifier();\r\n }\r\n\r\n if (!error.connection) {\r\n if ('connection' in navigator) {\r\n const connection = navigator.connection || navigator.mozConnection || navigator.webkitConnection;\r\n error.connection = `type: ${connection.type || 'unknown'}, effectiveType: ${connection.effectiveType || 'unknown'}, downlink: ${connection.downlink || 'unknown'}, rtt: ${connection.rtt || 'unknown'}, saveData: ${connection.saveData || false}`;\r\n } else {\r\n error.connection = 'Network Information API is not supported';\r\n }\r\n }\r\n\r\n console.error('httpService.reportError() = ', JSON.stringify(error, null, 2));\r\n\r\n let func = this.getHttpFunc('postNoResponse');\r\n if (func) {\r\n const headers = this.getHeaders(false);\r\n\r\n return func(url, headers, error)\r\n }\r\n return Promise.reject(new Error('No http func'));\r\n }\r\n\r\n getHttpFunc(method) {\r\n switch (this.httpSelector) {\r\n case HttpSelector.UseFetch:\r\n switch (method) {\r\n case 'get':\r\n return fetchService.get.bind(fetchService);\r\n case 'post':\r\n return fetchService.post.bind(fetchService);\r\n case 'postNoResponse':\r\n return fetchService.postNoResponse.bind(fetchService);\r\n case 'put':\r\n return fetchService.put.bind(fetchService);\r\n case 'delete':\r\n return fetchService.delete.bind(fetchService);\r\n }\r\n return null;\r\n case HttpSelector.UseAxios:\r\n switch (method) {\r\n case 'get':\r\n return axiosService.get.bind(axiosService);\r\n case 'post':\r\n return axiosService.post.bind(axiosService);\r\n case 'postNoResponse':\r\n return axiosService.postNoResponse.bind(axiosService);\r\n case 'put':\r\n return axiosService.put.bind(axiosService);\r\n case 'delete':\r\n return axiosService.delete.bind(axiosService);\r\n }\r\n return null;\r\n }\r\n return null;\r\n }\r\n\r\n getEndpoint(url) {\r\n if (url.startsWith('http')) {\r\n return url;\r\n }\r\n\r\n switch (this.apiSelector) {\r\n case ApiSelector.UseApi:\r\n return `${this.apiUrl}/${url}`;\r\n case ApiSelector.UseApp:\r\n return url;\r\n }\r\n return null;\r\n }\r\n\r\n getHeaders(useAuth) {\r\n let headers = {};\r\n if (useAuth) {\r\n headers[\"Authorization\"] = `Bearer ${httpService.apiToken}`;\r\n }\r\n headers[\"HssEdSiteName\"] = this.siteName;\r\n headers[\"HssEdSessionId\"] = this.sessionId;\r\n headers[\"HssEdClientId\"] = this.hssEdClientId;\r\n headers[\"HssEdClientSecret\"] = this.hssEdClientSecret;\r\n headers[\"HssEdClientPlatform\"] = this.hssEdClientPlatform;\r\n headers[\"Content-Type\"] = \"application/json\";\r\n return headers;\r\n }\r\n\r\n setSession(apiToken, sessionId, expiresIn = 3599) {\r\n this.apiToken = apiToken;\r\n this.sessionId = sessionId;\r\n this.apiTokenExpire = (Date.now() / 1000) + expiresIn;\r\n\r\n //console.log(`http-service.setSession: api token expires in ${expiresIn} seconds`);\r\n }\r\n\r\n refreshApiToken() {\r\n //console.log('http-service.refreshApiToken...');\r\n\r\n this.refreshingApiToken = true;\r\n\r\n const url = 'api/identity/token';\r\n const body = {};\r\n\r\n return this.post(url, body, false)\r\n .then(json => {\r\n this.refreshingApiToken = false;\r\n if (json && json.succeeded) {\r\n //console.log('http-service.refreshApiToken: got new api token', json);\r\n this.setSession(json.result.accessToken, this.sessionId, json.result.accessTokenLifetime);\r\n return json;\r\n }\r\n console.error('http-service.refreshApiToken: cannot get api token', json);\r\n return json;\r\n })\r\n .catch(error => {\r\n this.refreshingApiToken = false;\r\n console.error('http-service.refreshApiToken: error in getting new api token...', error);\r\n return Promise.reject(error);\r\n });\r\n }\r\n\r\n verifyApiToken(verify = true) {\r\n if (verify) {\r\n if (this.apiToken) {\r\n let expireInSeconds = this.apiTokenExpire - (Date.now() / 1000);\r\n console.warn(`http-service.verifyApiToken: expires in ${expireInSeconds}`);\r\n if (expireInSeconds < 0) {\r\n //api token has expired, so refresh\r\n return this.refreshApiToken();\r\n }\r\n //api token has not expired\r\n return Promise.resolve({ succeeded: true });\r\n }\r\n console.error('http-service.verifyApiToken: missing apiToken');\r\n //no api token\r\n return Promise.resolve({ succeeded: false });\r\n }\r\n return Promise.resolve({ succeeded: true });\r\n }\r\n\r\n get(url, verify = true) {\r\n logService.add('httpService.get() return verifyApiToken()');\r\n\r\n return this.verifyApiToken(verify)\r\n .then(result => {\r\n if (result && result.succeeded) {\r\n const headers = this.getHeaders(verify);\r\n\r\n let endpoint = this.getEndpoint(url);\r\n if (endpoint) {\r\n let func = this.getHttpFunc('get');\r\n if (func) {\r\n return func(endpoint, headers)\r\n .then(response => {\r\n logService.add('httpService.get() then() return');\r\n return response;\r\n })\r\n .catch(error => {\r\n console.error('http-service.get() caught error ', error);\r\n logService.add(`httpService.get() caught error = ${error}`);\r\n throw error;\r\n });\r\n }\r\n }\r\n logService.add(`httpService.get() no get func`);\r\n return Promise.reject(new Error(`httpService.get() no get func`));\r\n }\r\n console.error(result);\r\n logService.add(`httpService.get() verifyApiToken() bad result = ${result}`);\r\n return Promise.reject(new Error(`httpService.get() verifyApiToken() bad result = ${result}`));\r\n })\r\n .catch(error => {\r\n console.error('http-service.get() verifyApiToken() caught error ', error);\r\n logService.add(`httpService.get() verifyApiToken() caught error = ${error}`);\r\n throw error;\r\n });\r\n }\r\n\r\n post(url, body, verify = true) {\r\n logService.add('httpService.post() return verifyApiToken()');\r\n\r\n return this.verifyApiToken(verify)\r\n .then(result => {\r\n if (result && result.succeeded) {\r\n const headers = this.getHeaders(verify);\r\n\r\n logService.add('httpService.post() return fetch()');\r\n\r\n let endpoint = this.getEndpoint(url);\r\n if (endpoint) {\r\n let func = this.getHttpFunc('post');\r\n if (func) {\r\n return func(endpoint, headers, body)\r\n .then(response => {\r\n logService.add('httpService.post() then() return');\r\n return response;\r\n })\r\n .catch(error => {\r\n console.error('http-service.post() caught error ', error);\r\n logService.add(`httpService.post() caught error = ${error}`);\r\n throw error;\r\n });\r\n }\r\n }\r\n logService.add(`httpService.post() no post func`);\r\n return Promise.reject(new Error(`httpService.post() no post func`));\r\n }\r\n console.error(result);\r\n logService.add(`httpService.post() verifyApiToken() bad result = ${result}`);\r\n return Promise.reject(new Error(`httpService.post() verifyApiToken() bad result = ${result}`));\r\n })\r\n .catch(error => {\r\n console.error('http-service.post() verifyApiToken() caught error ', error);\r\n logService.add(`httpService.post() verifyApiToken() caught error = ${error}`);\r\n throw error;\r\n });\r\n }\r\n\r\n postNoResponse(url, body, verify = true) {\r\n return this.verifyApiToken(verify)\r\n .then(result => {\r\n if (result && result.succeeded) {\r\n const headers = this.getHeaders(verify);\r\n\r\n let endpoint = this.getEndpoint(url);\r\n if (endpoint) {\r\n let func = this.getHttpFunc('postNoResponse');\r\n if (func) {\r\n return func(endpoint, headers, body)\r\n .then(response => {\r\n logService.add('httpService.postNoResponse() then() return');\r\n return response;\r\n })\r\n .catch(error => {\r\n console.error('http-service.postNoResponse() caught error ', error);\r\n logService.add(`httpService.postNoResponse() caught error = ${error}`);\r\n throw error;\r\n });\r\n }\r\n }\r\n logService.add(`httpService.postNoResponse() no postNoResponse func`);\r\n return Promise.reject(new Error(`httpService.postNoResponse() no postNoResponse func`));\r\n }\r\n console.error(result);\r\n logService.add(`httpService.postNoResponse() verifyApiToken() bad result = ${result}`);\r\n return Promise.reject(new Error(`httpService.postNoResponse() verifyApiToken() bad result = ${result}`));\r\n })\r\n .catch(error => {\r\n console.error('http-service.postNoResponse() verifyApiToken() caught error ', error);\r\n logService.add(`httpService.postNoResponse() verifyApiToken() caught error = ${error}`);\r\n throw error;\r\n });\r\n }\r\n\r\n put(url, body, verify = true) {\r\n return this.verifyApiToken(verify)\r\n .then(result => {\r\n if (result && result.succeeded) {\r\n const headers = this.getHeaders(verify);\r\n\r\n let endpoint = this.getEndpoint(url);\r\n if (endpoint) {\r\n let func = this.getHttpFunc('put');\r\n if (func) {\r\n return func(endpoint, headers, body)\r\n .then(response => {\r\n logService.add('httpService.put() then() return');\r\n return response;\r\n })\r\n .catch(error => {\r\n console.error('http-service.put() caught error ', error);\r\n logService.add(`httpService.put() caught error = ${error}`);\r\n throw error;\r\n });\r\n }\r\n }\r\n logService.add(`httpService.put() no put func`);\r\n return Promise.reject(new Error(`httpService.put() no put func`));\r\n }\r\n console.error(result);\r\n logService.add(`httpService.put() verifyApiToken() bad result = ${result}`);\r\n return Promise.reject(new Error(`httpService.put() verifyApiToken() bad result = ${result}`));\r\n })\r\n .catch(error => {\r\n console.error('http-service.put() verifyApiToken() caught error ', error);\r\n logService.add(`httpService.put() verifyApiToken() caught error = ${error}`);\r\n throw error;\r\n });\r\n }\r\n\r\n delete(url, body, verify = true) {\r\n return this.verifyApiToken(verify)\r\n .then(result => {\r\n if (result && result.succeeded) {\r\n const headers = this.getHeaders(verify);\r\n\r\n let endpoint = this.getEndpoint(url);\r\n if (endpoint) {\r\n let func = this.getHttpFunc('delete');\r\n if (func) {\r\n return func(endpoint, headers, body)\r\n .then(response => {\r\n logService.add('httpService.delete() then() return');\r\n return response;\r\n })\r\n .catch(error => {\r\n console.error('http-service.delete() caught error ', error);\r\n logService.add(`httpService.delete() caught error = ${error}`);\r\n throw error;\r\n });\r\n }\r\n }\r\n logService.add(`httpService.delete() no delete func`);\r\n return Promise.reject(new Error(`httpService.delete() no delete func`));\r\n }\r\n console.error(result);\r\n logService.add(`httpService.delete() verifyApiToken() bad result = ${result}`);\r\n return Promise.reject(new Error(`httpService.delete() verifyApiToken() bad result = ${result}`));\r\n })\r\n .catch(error => {\r\n console.error('http-service.delete() verifyApiToken() caught error ', error);\r\n logService.add(`httpService.delete() verifyApiToken() caught error = ${error}`);\r\n throw error;\r\n });\r\n }\r\n}\r\n\r\nconst httpService = new HttpService();\r\nexport default httpService;\r\n\r\nexport { HttpSelector, ApiSelector };","const recaptchaCallbackName = 'setRecaptchaReady';\r\nconst ready = new Promise(resolve => window[recaptchaCallbackName] = resolve);\r\n\r\nclass RecaptchaService {\r\n\r\n constructor() {\r\n this._ready = false;\r\n this._readyCallbacks = [];\r\n this._siteKey = null;\r\n \r\n ready.then(() => {\r\n this._ready = true;\r\n //console.log('recaptcha3 ready...');\r\n if (this._readyCallbacks.length > 0) {\r\n this._readyCallbacks.forEach(cb => {\r\n window.grecaptcha.render(cb.element, {\r\n siteKey: this._siteKey,\r\n theme: cb.theme,\r\n callback: cb.callback\r\n });\r\n });\r\n this._readyCallbacks = [];\r\n }\r\n });\r\n }\r\n\r\n get siteKey() { return this._siteKey; }\r\n set siteKey(value) {\r\n //console.log('set siteKey...', value);\r\n if (!this._ready && !this._siteKey) {\r\n this._siteKey = value;\r\n\r\n let script = document.createElement('script');\r\n script.src = `https://www.google.com/recaptcha/api.js?onload=${recaptchaCallbackName}&render=${this._siteKey}`;\r\n script.async = true;\r\n script.defer = true;\r\n document.head.appendChild(script);\r\n }\r\n }\r\n \r\n getToken(action = 'default') {\r\n if (this._ready) {\r\n //console.log('recaptcha3 getting token...');\r\n return window.grecaptcha.execute(this.siteKey, { action: action });\r\n } \r\n else {\r\n console.log('recaptcha3 not yet ready...');\r\n return new Promise((resolve, reject) => {\r\n if (this._ready) {\r\n //console.log('recaptcha3 now ready resolving...');\r\n resolve(window.grecaptcha.execute(this.siteKey, { action: action }));\r\n } else {\r\n //console.log('recaptcha3 not yet ready rejecting...');\r\n reject(new Error('recaptcha3 not ready'));\r\n }\r\n });\r\n }\r\n }\r\n}\r\n\r\nconst recaptchaService = new RecaptchaService();\r\nexport default recaptchaService;","import httpService from './HttpService'\r\nimport recaptchaService from './RecaptchaService'\r\nimport logService from './LogService'\r\n// import axios from 'axios'\r\n\r\nclass BootstrapService {\r\n\r\n constructor() {\r\n this.data = null;\r\n\r\n this.primaryColor = null;\r\n this.secondaryColor = null;\r\n\r\n this.defaultPlanType = null;\r\n this.defaultStateName = null;\r\n\r\n this.callback = null;\r\n }\r\n\r\n setCallback(callback) {\r\n this.callback = callback;\r\n }\r\n\r\n \r\n getBootstrap() {\r\n const url = `api/site/bootstrap/${httpService.siteName}/cuberto`;\r\n const body = {\r\n \"useCache\": true,\r\n \"useLanding\": true,\r\n \"usePaymentOptions\": true,\r\n \"useCatalog\": true,\r\n \"usePages\": true,\r\n \"useHeaderNavs\": true,\r\n \"useFooterNavs\": true,\r\n \"usePassTypes\": true,\r\n \"useCourseBundleTypes\": true,\r\n \"useGroupTypes\": true,\r\n \"injectApiToken\": true,\r\n \"injectImageSets\": true,\r\n \"injectColors\": true,\r\n \"injectImageUrls\": true,\r\n \"injectImageBytes\": false\r\n };\r\n\r\n logService.clear();\r\n logService.add('bootstrapService.getBootstrap() return httpService.post()');\r\n\r\n return httpService.post(url, body, false)\r\n .then(json => {\r\n if (json && json.succeeded) {\r\n // HTTP & Recaptcha\r\n httpService.setSession(json.result.apiToken, json.result.sessionId, json.result.apiTokenLifetime);\r\n recaptchaService.siteKey = json.result.recaptchaSiteKey;\r\n\r\n // Data\r\n this.data = json.result;\r\n \r\n // Default Properties\r\n this.setDefaultProperties(json);\r\n\r\n // Single Course Id\r\n this.setSingleCourseId(json);\r\n\r\n // Colors\r\n this.setAllColors(json);\r\n\r\n // Callback\r\n if (this.callback) {\r\n return this.callback();\r\n }\r\n return true;\r\n }\r\n else {\r\n if (json) {\r\n console.error(\"Cannot get bootstrap - json errors\", json.errors);\r\n logService.add('bootstrapService.getBootstrap() json errors');\r\n }\r\n else {\r\n console.error(\"Cannot get bootstrap - null json\");\r\n logService.add('bootstrapService.getBootstrap() null json');\r\n }\r\n }\r\n return Promise.reject(new Error(\"Failed to get bootstrap data\"));\r\n })\r\n .catch(error => {\r\n console.error('bootstrapService.getBootstrap() httpService.post() caught error = ', error);\r\n logService.add(`bootstrapService.getBootstrap() httpService.post() caught error = ${error}`);\r\n throw error;\r\n });\r\n }\r\n\r\n setDefaultProperties(json) {\r\n if (json.result.landing.sections) {\r\n let plansSection = json.result.landing.sections.find(s => s.name === \"plans\");\r\n if (plansSection) {\r\n let plans = plansSection.plans;\r\n if (plans) {\r\n let defaultPlan = json.result.landing.sections.find(s => s.name === \"plans\").plans.find(p => p.isDefault === true);\r\n this.defaultPlanType = defaultPlan ? defaultPlan.type : null;\r\n }\r\n }\r\n }\r\n if (json.result.landing.pages) {\r\n let requirementsPage = json.result.landing.pages.find(p => p.name === \"requirements\");\r\n if (requirementsPage) {\r\n let requirements = requirementsPage.requirements;\r\n if (requirements) {\r\n let defaultState = requirements.find(r => r.isDefault === true);\r\n this.defaultStateName = defaultState ? defaultState.authorityName.toLowerCase() : null;\r\n }\r\n }\r\n }\r\n }\r\n\r\n setSingleCourseId(json) {\r\n if (json.result.courseCatalog && json.result.courseCatalog.courses && json.result.courseCatalog.courses.length === 1) {\r\n this.singleCourseId = json.result.courseCatalog.courses[0].id;\r\n }\r\n }\r\n\r\n setAllColors(json) {\r\n if (json.result.site) {\r\n if (json.result.site.primaryColor) {\r\n this.primaryColor = json.result.site.primaryColor;\r\n document.documentElement.style.setProperty('--primary', json.result.site.primaryColor);\r\n let rgb = this.hexToRgb(json.result.site.primaryColor);\r\n if (rgb) {\r\n document.documentElement.style.setProperty('--primaryR', rgb.r);\r\n document.documentElement.style.setProperty('--primaryG', rgb.g);\r\n document.documentElement.style.setProperty('--primaryB', rgb.b);\r\n }\r\n }\r\n if (json.result.site.secondaryColor) {\r\n this.secondaryColor = json.result.site.secondaryColor;\r\n document.documentElement.style.setProperty('--secondary', json.result.site.secondaryColor);\r\n let rgb = this.hexToRgb(json.result.site.secondaryColor);\r\n if (rgb) {\r\n document.documentElement.style.setProperty('--secondaryR', rgb.r);\r\n document.documentElement.style.setProperty('--secondaryG', rgb.g);\r\n document.documentElement.style.setProperty('--secondaryB', rgb.b);\r\n }\r\n }\r\n if (json.result.site.primaryLightColor) {\r\n document.documentElement.style.setProperty('--primary-light', json.result.site.primaryLightColor);\r\n let rgb = this.hexToRgb(json.result.site.primaryLightColor);\r\n if (rgb) {\r\n document.documentElement.style.setProperty('--primary-lightR', rgb.r);\r\n document.documentElement.style.setProperty('--primary-lightG', rgb.g);\r\n document.documentElement.style.setProperty('--primary-lightB', rgb.b);\r\n }\r\n }\r\n }\r\n }\r\n\r\n hexToRgb(hex) {\r\n var result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\r\n return result ? {\r\n r: parseInt(result[1], 16),\r\n g: parseInt(result[2], 16),\r\n b: parseInt(result[3], 16)\r\n } : null;\r\n }\r\n\r\n getCreditsTerm(credits) {\r\n if (credits === 1) {\r\n return this.data.site.creditTerm;\r\n }\r\n else if (credits > 1) {\r\n return this.data.site.creditsTerm;\r\n }\r\n }\r\n\r\n getCETerm() {\r\n if (this.data.site.ceTerm) {\r\n return this.data.site.ceTerm;\r\n }\r\n else {\r\n return \"CE\";\r\n }\r\n }\r\n\r\n getCategoryTerm() {\r\n if (this.data.site.getCategoryTerm) {\r\n return this.data.site.getCategoryTerm\r\n }\r\n else {\r\n return \"Category\"\r\n }\r\n }\r\n\r\n getShowAddress() {\r\n if (this.data.site) {\r\n return this.data.site.showAddress\r\n }\r\n else {\r\n return true\r\n }\r\n }\r\n\r\n getShowReleaseDate() {\r\n return this.data.site ? (this.data.site.showReleaseDate === false ? false : true) : true;\r\n }\r\n\r\n getPaymentOptions() {\r\n return this.data.paymentOptions;\r\n }\r\n}\r\n\r\nconst bootstrapService = new BootstrapService();\r\nexport default bootstrapService;","import React from 'react'\r\nimport './Navbar.scss'\r\nimport { Link } from 'react-router-dom'\r\n\r\nimport BubbleButton from '../BubbleButton/BubbleButton'\r\nimport { ReactComponent as Apple } from '../../../assets/apple.svg'\r\n// import { ReactComponent as Login } from './assets/login.svg'\r\n// import { ReactComponent as Register } from './assets/register.svg'\r\n\r\nimport bootstrapService from '../../../services/BootstrapService'\r\n\r\nclass Navbar extends React.Component {\r\n // Constructor\r\n constructor(props) {\r\n super(props);\r\n\r\n // Refs\r\n this.navbar = null;\r\n\r\n // State\r\n this.scrollBarWidth = window.innerWidth - document.documentElement.clientWidth;\r\n this.state = {\r\n previousY: 0,\r\n isMobileNavbarOpened: false,\r\n }\r\n\r\n // This Binding\r\n this.scrollNavbar = this.scrollNavbar.bind(this);\r\n this.toggleMobileNavbar = this.toggleMobileNavbar.bind(this);\r\n this.clickHome = this.clickHome.bind(this);\r\n this.clickTryForFree = this.clickTryForFree.bind(this);\r\n }\r\n\r\n // Lifecycle\r\n componentDidMount() {\r\n this.setupScrollAnimation()\r\n }\r\n\r\n // Helpers\r\n setupScrollAnimation() {\r\n window.addEventListener(\"scroll\", this.scrollNavbar);\r\n }\r\n\r\n showMobileNavbar() {\r\n this.setState({ isMobileNavbarOpened: true });\r\n document.body.classList.add(\"overflow-hidden\");\r\n this.navbar.classList.add('-open');\r\n }\r\n\r\n hideMobilelNavbar() {\r\n this.setState({ isMobileNavbarOpened: false });\r\n document.body.classList.remove(\"overflow-hidden\");\r\n this.navbar.classList.remove('-open');\r\n }\r\n\r\n toggleOverflowForModal() {\r\n const style = getComputedStyle(this.navbar)\r\n if (style.paddingRight === 0) {\r\n this.navbar.style.paddingRight = `${this.scrollBarWidth}px`;\r\n }\r\n else {\r\n this.navbar.style.paddingRight = 0;\r\n }\r\n }\r\n\r\n // Event Handlers\r\n scrollNavbar() {\r\n if (this.navbar) {\r\n const y = window.pageYOffset;\r\n\r\n const isPageStart = y < 50;\r\n if (y <= 10) {\r\n this.navbar.classList.remove(\"-fixed\");\r\n }\r\n\r\n if (isPageStart || this.state.previousY > y) {\r\n this.navbar.classList.remove(\"-hide\");\r\n } else {\r\n this.navbar.classList.add(\"-hide\", \"-fixed\");\r\n }\r\n\r\n this.setState({ previousY: y });\r\n }\r\n }\r\n\r\n toggleMobileNavbar() {\r\n if (this.state.isMobileNavbarOpened) {\r\n this.hideMobilelNavbar();\r\n } else {\r\n this.showMobileNavbar();\r\n }\r\n }\r\n\r\n clickHome() {\r\n this.hideMobilelNavbar();\r\n window.scrollTo({\r\n top: 0,\r\n left: 0,\r\n behavior: \"smooth\",\r\n });\r\n }\r\n\r\n clickTryForFree() {\r\n this.hideMobilelNavbar();\r\n\r\n if (this.props.clickTry) {\r\n this.props.clickTry();\r\n }\r\n }\r\n\r\n // Component\r\n render() { \r\n const { backgroundColor, activeLink } = this.props;\r\n\r\n const navs = bootstrapService.data.landing.headers;\r\n const logo = bootstrapService.data.site.logoUrl;\r\n const pages = bootstrapService.data.landing.pages;\r\n\r\n const appStoreData = bootstrapService.data.landing.sections.find(s => s.name === \"appStore\");\r\n const appleUrl = appStoreData ? appStoreData.appleUrl : null;\r\n\r\n const tryForFreeData = bootstrapService.data.landing.sections.find(s => s.name === \"tryForFree\");\r\n const tryForFreeLabel = tryForFreeData && tryForFreeData.actionLabel ? tryForFreeData.actionLabel : 'Try For Free';\r\n\r\n const defaultPlanType = bootstrapService.defaultPlanType;\r\n const defaultStateName = bootstrapService.defaultStateName;\r\n\r\n const ceTerm = bootstrapService.getCETerm();\r\n\r\n return (\r\n <div className={\"a4-navbar \" + (backgroundColor ? backgroundColor : \"\")} ref={div => this.navbar = div}>\r\n <div className=\"a4-navbar-container\">\r\n <div className=\"a4-navbar-brand\">\r\n <Link to=\"/\" onClick={this.clickHome}>\r\n <div className=\"-logo\">\r\n <img src={logo} alt=\"\" />\r\n </div>\r\n </Link>\r\n </div>\r\n <ul className=\"a4-navbar-menu\">\r\n {\r\n navs.find(n => n === \"approvals\") &&\r\n <li className={\"a4-navbar-menu-item\" + (activeLink === \"approvals\" ? \" -active\" : \"\")}>\r\n <Link to=\"/approvals\">Our Approvals</Link>\r\n </li>\r\n }\r\n {\r\n navs.find(n => n === \"courses\") &&\r\n <li className={\"a4-navbar-menu-item\" + (activeLink === \"courses\" ? \" -active\" : \"\")}>\r\n {\r\n bootstrapService.singleCourseId &&\r\n <Link to={`/course/${bootstrapService.singleCourseId}`}>The Course</Link>\r\n }\r\n {\r\n !bootstrapService.singleCourseId &&\r\n <Link to=\"/courses\">Our Courses</Link>\r\n }\r\n </li>\r\n }\r\n {\r\n navs.find(n => n === \"pricing\") &&\r\n <li className={\"a4-navbar-menu-item\" + (activeLink === \"pricing\" ? \" -active\" : \"\")}>\r\n <Link to={`/pricing/${defaultPlanType}`}>Pricing</Link>\r\n </li>\r\n }\r\n {\r\n navs.find(n => n === \"requirements\") &&\r\n <li className={\"a4-navbar-menu-item\" + (activeLink === \"requirements\" ? \" -active\" : \"\")}>\r\n <Link to={`/requirements/${defaultStateName}`}>{ceTerm} Requirements</Link>\r\n </li>\r\n }\r\n {\r\n navs.map(name => {\r\n if (!['approvals','courses','pricing','requirements','try-for-free','no-login','no-register'].includes(name)) {\r\n const page = pages.find(p => p.name === name);\r\n return <li className={\"a4-navbar-menu-item\" + (activeLink === name ? \" -active\" : \"\")}><Link to={`/${name}`}>{page.header}</Link></li>;\r\n }\r\n })\r\n }\r\n </ul>\r\n <div className=\"a4-navbar-navigation\">\r\n <div className=\"a4-navbar-account\">\r\n <ul className=\"a4-navbar-account-base-list\">\r\n {\r\n !navs.find(n => n === \"no-login\") &&\r\n <li className={\"a4-navbar-account-base-list-item\" + (activeLink === \"login\" ? \" -active\" : \"\")}>\r\n <Link to=\"/login\">Login</Link>\r\n </li>\r\n }\r\n {\r\n !navs.find(n => n === \"no-register\") &&\r\n <li className={\"a4-navbar-account-base-list-item\" + (activeLink === \"register\" ? \" -active\" : \"\")}>\r\n <Link to=\"/register\">Sign Up</Link>\r\n </li>\r\n }\r\n </ul>\r\n </div>\r\n {\r\n navs.find(n => n === \"try-for-free\") &&\r\n <>\r\n {\r\n this.props.clickTry &&\r\n <div className=\"a4-navbar-try_free\" onClick={this.clickTryForFree}>\r\n <BubbleButton className=\"-secondary\">{tryForFreeLabel}</BubbleButton>\r\n </div>\r\n }\r\n {\r\n !this.props.clickTry &&\r\n <div className=\"a4-navbar-try_free\">\r\n <Link to={{pathname: \"/\", state: {tryForFree: true}}} onClick={this.clickTryForFree}>\r\n <BubbleButton className=\"-secondary\">{tryForFreeLabel}</BubbleButton>\r\n </Link>\r\n </div>\r\n }\r\n </>\r\n \r\n }\r\n <div className=\"a4-navbar-control\">\r\n {\r\n appleUrl &&\r\n <div className=\"a4-navbar-control-item\">\r\n <a href={appleUrl}>\r\n <BubbleButton className=\"a4-btn_store\">\r\n <div className=\"a4-btn_store-icon\">\r\n <svg className=\"a4-svgsprite -app-store\">\r\n <Apple />\r\n </svg>\r\n </div>\r\n <div className=\"a4-btn_store-text\">Available in <b>App Store</b></div>\r\n </BubbleButton>\r\n </a>\r\n </div>\r\n }\r\n </div>\r\n <div className=\"a4-navbar-menu-toggle\" onClick={this.toggleMobileNavbar}>\r\n <button className=\"a4-btn a4-btn-burger\" type=\"button\" role=\"navigation\" aria-label=\"Open navigation\">\r\n <span className=\"backdrop\"></span>\r\n <span className=\"burger\"><span className=\"middle\"></span></span>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div className=\"a4-navbar-nav\">\r\n <div className=\"a4-navbar-nav-filler\"></div>\r\n <div className=\"a4-navbar-nav-content\">\r\n <div className=\"a4-navbar-nav-body\">\r\n <div className=\"a4-navbar-nav-body-inner\">\r\n <ul className=\"a4-navbar-nav-list\">\r\n {\r\n navs.find(n => n === \"approvals\") &&\r\n <li className={\"a4-navbar-nav-list-item\" + (activeLink === \"approvals\" ? \" -active\" : \"\")}>\r\n <Link to=\"/approvals\" onClick={this.toggleMobileNavbar}>Our Approvals</Link>\r\n </li>\r\n }\r\n {\r\n navs.find(n => n === \"courses\") &&\r\n <li className={\"a4-navbar-nav-list-item\" + (activeLink === \"courses\" ? \" -active\" : \"\")}>\r\n {\r\n bootstrapService.singleCourseId &&\r\n <Link to={`/course/${bootstrapService.singleCourseId}`} onClick={this.toggleMobileNavbar}>The Course</Link>\r\n }\r\n {\r\n !bootstrapService.singleCourseId &&\r\n <Link to=\"/courses\" onClick={this.toggleMobileNavbar}>Our Courses</Link>\r\n }\r\n \r\n </li>\r\n }\r\n {\r\n navs.find(n => n === \"pricing\") &&\r\n <li className={\"a4-navbar-nav-list-item\" + (activeLink === \"pricing\" ? \" -active\" : \"\")}>\r\n <Link to={`/pricing/${defaultPlanType}`} onClick={this.toggleMobileNavbar}>Pricing</Link>\r\n </li>\r\n }\r\n {\r\n navs.find(n => n === \"requirements\") &&\r\n <li className={\"a4-navbar-nav-list-item\" + (activeLink === \"requirements\" ? \" -active\" : \"\")}>\r\n <Link to={`/requirements/${defaultStateName}`} onClick={this.toggleMobileNavbar}>{ceTerm} Requirements</Link>\r\n </li>\r\n }\r\n {\r\n navs.map(name => {\r\n if (!['approvals','courses','pricing','requirements','try-for-free','no-login','no-register'].includes(name)) {\r\n const page = pages.find(p => p.name === name);\r\n return <li className={\"a4-navbar-menu-item\" + (activeLink === name ? \" -active\" : \"\")}><Link to={`/${name}`}>{page.header}</Link></li>;\r\n }\r\n })\r\n }\r\n {\r\n !navs.find(n => n === \"no-login\") &&\r\n <li className={\"a4-navbar-nav-list-item\" + (activeLink === \"login\" ? \" -active\" : \"\")} id=\"nav-login\">\r\n <Link to=\"/login\" onClick={this.toggleMobileNavbar}>Login</Link>\r\n </li>\r\n }\r\n {\r\n !navs.find(n => n === \"no-register\") &&\r\n <li className={\"a4-navbar-nav-list-item\" + (activeLink === \"register\" ? \" -active\" : \"\")} id=\"nav-reg\">\r\n <Link to=\"/register\" onClick={this.toggleMobileNavbar}>Sign Up</Link>\r\n </li>\r\n }\r\n </ul>\r\n </div>\r\n </div>\r\n {\r\n navs.find(n => n === \"try-for-free\") &&\r\n <div className=\"a4-navbar-nav-footer lg_hidden\">\r\n <div className=\"a4-navbar-nav-footer-inner\">\r\n {\r\n this.props.clickTry &&\r\n <div onClick={this.clickTryForFree}>\r\n <button className=\"a4-btn -secondary\">{tryForFreeLabel}</button>\r\n </div>\r\n }\r\n {\r\n !this.props.clickTry &&\r\n <Link to={{pathname: \"/\", state: {tryForFree: true}}} onClick={this.clickTryForFree}>\r\n <button className=\"a4-btn -secondary\">{tryForFreeLabel}</button>\r\n </Link>\r\n }\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n )\r\n }\r\n}\r\n\r\nexport default Navbar;","import React from 'react'\r\nimport './Exposition.scss'\r\nimport { Link } from 'react-router-dom'\r\nimport { isMobileOnly } from 'react-device-detect'\r\n\r\nimport BubbleButton from '../../shared/BubbleButton/BubbleButton'\r\n\r\nclass Exposition extends React.Component {\r\n // Component\r\n render() {\r\n const { headers, body, actionLabel, actionLink, imageUrl, imageBackgroundUrl } = this.props.data;\r\n const type = this.props.type;\r\n const highlighted = this.props.highlighted;\r\n\r\n return (\r\n <div className={\"a4-exposition \" + (type ? \"-\" + type + \" \" : \"\") + (highlighted ? \"-highlighted\" : \"\")}>\r\n <div className=\"a4-exposition-container\">\r\n <div className=\"a4-exposition-content\">\r\n <div className=\"a4-exposition-info\">\r\n <h1 className=\"a4-exposition-title\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>{headers[0]} <span className=\"text-primary\">{headers[1]} </span>{headers[2]}</h1>\r\n <p className=\"a4-exposition-description\" data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-duration=\"1300\">{body}</p>\r\n <div className=\"a4-exposition-control\" data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-duration=\"1400\">\r\n <Link to={actionLink ? actionLink : \"\"}>\r\n <BubbleButton className=\"-primary\">{actionLabel} </BubbleButton>\r\n </Link>\r\n </div>\r\n </div>\r\n <div className=\"a4-exposition-illustration\">\r\n {\r\n imageBackgroundUrl && <img src={imageBackgroundUrl} className=\"a4-exposition-illustration-background\" alt=\"\" />\r\n }\r\n <img src={imageUrl} data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-easing=\"ease-out-quad\" alt=\"\" />\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n )\r\n }\r\n}\r\n\r\nexport default Exposition;","import React from 'react'\r\nimport './List.scss'\r\nimport { Link } from 'react-router-dom'\r\nimport gsap from 'gsap'\r\nimport { ScrollTrigger } from 'gsap/ScrollTrigger'\r\nimport { isMobileOnly } from 'react-device-detect'\r\n\r\nimport BubbleButton from '../../shared/BubbleButton/BubbleButton'\r\n\r\nclass List extends React.Component {\r\n // Constructor\r\n constructor(props) {\r\n super(props);\r\n\r\n // GSAP\r\n gsap.registerPlugin(ScrollTrigger);\r\n\r\n // Refs\r\n this.body = null;\r\n this.info = null;\r\n }\r\n\r\n // Lifecycle\r\n componentDidMount() {\r\n this.setupListScroll()\r\n }\r\n\r\n // Helpers\r\n setupListScroll() {\r\n ScrollTrigger.matchMedia({\r\n \"(min-width: 768px)\": () => {\r\n ScrollTrigger.create({\r\n trigger: this.body,\r\n pin: this.info,\r\n start: () => `top center`,\r\n end: () => `bottom center+=${this.info ? this.info.offsetHeight : 0}px`,\r\n scrub: true,\r\n });\r\n },\r\n });\r\n }\r\n\r\n // Component\r\n render() {\r\n const { headers, body, actionLabel, actionLink } = this.props.data;\r\n const type = this.props.type;\r\n const highlighted = this.props.highlighted;\r\n\r\n return (\r\n <div className={(\"a4-list -\" + type) + (highlighted ? \" -highlighted\" : \"\")}>\r\n <div className=\"a4-list-container\">\r\n <div className=\"a4-list-content\">\r\n <div className=\"a4-list-body\" ref={div => this.body = div}>\r\n <div className=\"a4-list-info\" ref={div => this.info = div}>\r\n <h2 className=\"a4-list-title\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n {headers[0]} <span className=\"text-primary\">{headers[1]}</span> {headers[2]}\r\n </h2>\r\n <p className=\"a4-list-description\" data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-duration=\"1300\">{body}</p>\r\n {\r\n actionLink && \r\n <div className=\"a4-list-info-control\" data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-duration=\"1400\">\r\n <Link to={actionLink}>\r\n <BubbleButton className=\"-primary\">{actionLabel}</BubbleButton>\r\n </Link>\r\n </div>\r\n }\r\n </div>\r\n <ul className=\"a4-list-items\">\r\n {this.props.children}\r\n </ul>\r\n {\r\n actionLink && \r\n <div className=\"a4-list-control\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n <Link to={actionLink}>\r\n <BubbleButton className=\"-primary\">{actionLabel}</BubbleButton>\r\n </Link>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n )\r\n }\r\n}\r\n\r\nexport default List;","export default \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEwIiBoZWlnaHQ9IjIxMCIgdmlld0JveD0iMCAwIDIxMCAyMTAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQo8cmVjdCB3aWR0aD0iMjEwIiBoZWlnaHQ9IjIxMCIgcng9IjMwIiBmaWxsPSJ3aGl0ZSIvPg0KPHJlY3Qgd2lkdGg9IjIxMCIgaGVpZ2h0PSIyMTAiIHJ4PSIzMCIgZmlsbD0iIzI0RDhDNSIgZmlsbC1vcGFjaXR5PSIwLjE1Ii8+DQo8Y2lyY2xlIGN4PSI4My4xMTYxIiBjeT0iOTAuMjc2OCIgcj0iNC45OTEwNyIgc3Ryb2tlPSIjMjREOEM1IiBzdHJva2Utd2lkdGg9IjMiLz4NCjxwYXRoIGQ9Ik04My4zNDgxIDEyNC44M0gxMjcuNjgzQzEyOS44NDQgMTI0LjgzIDEzMS4yOTYgMTIyLjYxNiAxMzAuNDM1IDEyMC42MzRMMTE4Ljk4OSA5NC4zMDk1QzExOC4wNjUgOTIuMTgzOCAxMTUuMTgyIDkxLjg2NDYgMTEzLjgxNSA5My43MzY2TDEwMC45OCAxMTEuMzE2QzEwMC4wMTUgMTEyLjYzNyA5OC4xNjg0IDExMi45NDIgOTYuODMwMiAxMTJMOTEuNTQ2NyAxMDguMjgyQzkwLjEwOTQgMTA3LjI3IDg4LjExNDQgMTA3LjcwNiA4Ny4yMjg5IDEwOS4yMjRMODAuNzU2OCAxMjAuMzE5Qzc5LjU5MDEgMTIyLjMxOSA4MS4wMzI3IDEyNC44MyA4My4zNDgxIDEyNC44M1oiIHN0cm9rZT0iIzI0RDhDNSIgc3Ryb2tlLXdpZHRoPSIzIi8+DQo8cmVjdCB4PSI2My41IiB5PSI3NC41IiB3aWR0aD0iODMiIGhlaWdodD0iNjEuNSIgcng9IjUuNSIgc3Ryb2tlPSIjMjREOEM1IiBzdHJva2Utd2lkdGg9IjMiLz4NCjwvc3ZnPg0K\"","import React from 'react'\r\nimport { Link } from 'react-router-dom'\r\nimport { isMobileOnly } from 'react-device-detect'\r\n\r\nimport courseImage from '../../../../assets/course-plug.svg'\r\n\r\nimport bootstrapService from '../../../../services/BootstrapService'\r\n\r\nclass CourseItem extends React.Component {\r\n // Component\r\n render() {\r\n const { courseId, title, description, imageUrl, credits } = this.props.data;\r\n\r\n const length = imageUrl ? 150 : 250;\r\n const shortDescription = description ? description.substring(0, length).split(\" \").slice(0, -1).join(\" \") + \"...\" : null;\r\n\r\n return (\r\n <li className=\"a4-list-items-item\">\r\n <Link to={`/course/${courseId}`}>\r\n {\r\n imageUrl &&\r\n <div className=\"a4-list-items-item-image\" data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-duration=\"700\">\r\n <img src={imageUrl ? imageUrl : courseImage} alt=\"\" />\r\n </div>\r\n }\r\n <div className=\"a4-list-items-item-info\">\r\n <h3 className=\"a4-list-items-item-title\" data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-duration=\"1300\">{title}</h3>\r\n <div className=\"a4-list-items-item-details\" data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-duration=\"1400\">\r\n <div className=\"a4-list-items-item-details-label\">{bootstrapService.getCreditsTerm(2)}:</div>\r\n <span>{credits.toFixed(1)}</span>\r\n </div>\r\n <p className=\"a4-list-items-item-description -courses\" data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-duration=\"1400\">{shortDescription}</p>\r\n </div>\r\n </Link>\r\n </li>\r\n )\r\n }\r\n}\r\n\r\nexport default CourseItem;","import React from 'react'\r\nimport { isMobileOnly } from 'react-device-detect'\r\n\r\nclass HowItWorksItem extends React.Component {\r\n // Component\r\n render() {\r\n const { header, body } = this.props.data;\r\n \r\n return (\r\n <li className=\"a4-list-items-item\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n <div className=\"a4-list-items-item-number\"></div>\r\n <div className=\"a4-list-items-item-info\">\r\n <h3 className=\"a4-list-items-item-title\">{header}</h3>\r\n <p className=\"a4-list-items-item-description\">{body}</p>\r\n </div>\r\n </li>\r\n )\r\n }\r\n}\r\n\r\nexport default HowItWorksItem;","import React from 'react'\r\nimport { isMobileOnly } from 'react-device-detect'\r\n\r\nclass WhyUsItem extends React.Component {\r\n // Component\r\n render() {\r\n const { header, body, imageUrl } = this.props.data;\r\n\r\n return (\r\n <li className=\"a4-list-items-item\">\r\n <div className=\"a4-list-items-item-image\" data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-duration=\"700\">\r\n <img src={imageUrl} alt=\"\" />\r\n </div>\r\n <div className=\"a4-list-items-item-info\">\r\n <div className=\"a4-list-items-item-info\">\r\n <h3 className=\"a4-list-items-item-title\" data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-duration=\"1300\">{header}</h3>\r\n <p className=\"a4-list-items-item-description\" data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-duration=\"1400\">{body}</p>\r\n </div>\r\n </div>\r\n </li>\r\n )\r\n }\r\n}\r\n\r\nexport default WhyUsItem;","import React from 'react'\r\nimport './SingleCourse.scss'\r\nimport { Link } from 'react-router-dom'\r\nimport { isMobileOnly } from 'react-device-detect'\r\n\r\nimport BubbleButton from '../../shared/BubbleButton/BubbleButton'\r\n\r\nimport bootstrapService from '../../../services/BootstrapService'\r\n\r\nclass SingleCourse extends React.Component {\r\n // Component\r\n render() {\r\n const { headers } = this.props.data;\r\n const { courseId, title, credits, releaseDate, description, imageUrl, schedules } = this.props.course;\r\n\r\n const length = imageUrl ? 200 : 300;\r\n const shortDescription = description.substring(0, length).split(\" \").slice(0, -1).join(\" \") + \"...\";\r\n\r\n const showReleaseDate = bootstrapService.getShowReleaseDate();\r\n\r\n return (\r\n <div className=\"a4-single-course -highlighted\">\r\n <div className=\"a4-single-course-container\">\r\n <div className=\"a4-single-course-column\">\r\n <h1 className=\"a4-single-course-header\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>{headers[0]} <span className=\"text-primary\">{headers[1]}</span></h1>\r\n <div className=\"a4-single-course-content\">\r\n <div className=\"a4-single-course-details\">\r\n <h1 className=\"a4-single-course-title\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>{title}</h1>\r\n <div className=\"a4-single-course-info\" data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-duration=\"1200\">\r\n <div className=\"a4-single-course-info-item\">\r\n <div className=\"a4-single-course-info-label\">{bootstrapService.getCreditsTerm(credits)}:</div>\r\n <span>{credits.toFixed(1)}</span>\r\n </div>\r\n <div className=\"a4-single-course-info-item -right\">\r\n {\r\n !schedules && showReleaseDate && releaseDate &&\r\n <>\r\n <div className=\"a4-single-course-info-label\">Publish Date:</div>\r\n <span>{new Date(releaseDate).toDateString().split(' ').slice(1).join(' ')}</span>\r\n </>\r\n }\r\n {\r\n schedules &&\r\n <>\r\n <div className=\"a4-single-course-info-label\">Next Session:</div>\r\n <span>{new Date(schedules[0].startDate).toLocaleDateString(\"en-US\", {weekday: 'long', month: 'short', day: 'numeric'})}</span>\r\n </>\r\n } \r\n </div>\r\n </div>\r\n <p className=\"a4-single-course-description\" data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-duration=\"1300\">{shortDescription}</p>\r\n <div className=\"a4-single-course-control\" data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-duration=\"1400\">\r\n <Link to={`/course/${courseId}`}>\r\n <BubbleButton className=\"-primary\">View Course</BubbleButton>\r\n </Link>\r\n </div>\r\n </div>\r\n <div className=\"a4-single-course-illustration\">\r\n <img src={imageUrl} data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-easing=\"ease-out-quad\" alt=\"\" />\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n )\r\n }\r\n}\r\n\r\nexport default SingleCourse;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M.58.49A2.47,2.47,0,0,0,0,2.24V29.76a2.47,2.47,0,0,0,.58,1.75l.1.08L16.27,16.18v-.36L.68.4Z\",\n fill: \"#00ceff\"\n});\n\nvar _ref3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M21.47,21.32l-5.2-5.14v-.36l5.2-5.14.12.06,6.16,3.47c1.76,1,1.76,2.6,0,3.59l-6.16,3.45Z\",\n fill: \"#ffe300\"\n});\n\nvar _ref4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M21.59,21.25,16.27,16,.58,31.51a2.08,2.08,0,0,0,2.62.07L21.59,21.25\",\n fill: \"#ff3a44\"\n});\n\nvar _ref5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M21.59,10.74,3.2.41A2.09,2.09,0,0,0,.58.49L16.27,16Z\",\n fill: \"#00f085\"\n});\n\nfunction SvgGoogle(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n viewBox: \"0 0 29.07 32\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2, _ref3, _ref4, _ref5);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgGoogle);\nexport default \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgMjkuMDcgMzIiPg0KICA8cGF0aCBkPSJNLjU4LjQ5QTIuNDcsMi40NywwLDAsMCwwLDIuMjRWMjkuNzZhMi40NywyLjQ3LDAsMCwwLC41OCwxLjc1bC4xLjA4TDE2LjI3LDE2LjE4di0uMzZMLjY4LjRaIiBmaWxsPSIjMDBjZWZmIi8+DQogIDxwYXRoIGQ9Ik0yMS40NywyMS4zMmwtNS4yLTUuMTR2LS4zNmw1LjItNS4xNC4xMi4wNiw2LjE2LDMuNDdjMS43NiwxLDEuNzYsMi42LDAsMy41OWwtNi4xNiwzLjQ1WiIgZmlsbD0iI2ZmZTMwMCIvPg0KICA8cGF0aCBkPSJNMjEuNTksMjEuMjUsMTYuMjcsMTYsLjU4LDMxLjUxYTIuMDgsMi4wOCwwLDAsMCwyLjYyLjA3TDIxLjU5LDIxLjI1IiBmaWxsPSIjZmYzYTQ0Ii8+DQogIDxwYXRoIGQ9Ik0yMS41OSwxMC43NCwzLjIuNDFBMi4wOSwyLjA5LDAsMCwwLC41OC40OUwxNi4yNywxNloiIGZpbGw9IiMwMGYwODUiLz4NCjwvc3ZnPg==\";\nexport { ForwardRef as ReactComponent };","import React from 'react'\r\nimport './AppStore.scss'\r\nimport { isMobileOnly } from 'react-device-detect'\r\n\r\nimport BubbleButton from '../../shared/BubbleButton/BubbleButton'\r\nimport { ReactComponent as Apple } from '../../../assets/apple.svg'\r\nimport { ReactComponent as Google } from '../../../assets/google.svg'\r\n\r\nclass AppStore extends React.Component {\r\n // Component\r\n render() {\r\n const { headers, body, appleUrl, googleUrl, imageUrl } = this.props.data;\r\n\r\n return (\r\n <section className=\"a4-appstore\">\r\n <div className=\"a4-appstore-container\">\r\n <div className=\"a4-appstore-content\">\r\n <div className=\"a4-appstore-info\">\r\n <div className=\"a4-appstore-title\">\r\n <h2 data-aos={isMobileOnly ? undefined : \"fade-up\"}><span className=\"text-primary\">{headers[0]} </span>{headers[1]}</h2>\r\n </div>\r\n <div className=\"a4-appstore-description\" data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-duration=\"1300\">\r\n <p>{body}</p>\r\n </div>\r\n <div className=\"a4-appstore-control\">\r\n {\r\n appleUrl &&\r\n <div className=\"a4-appstore-control-item\" data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-duration=\"1400\">\r\n <a href={appleUrl}>\r\n <BubbleButton className=\"a4-btn_store\">\r\n <div className=\"a4-btn_store-icon\">\r\n <svg className=\"a4-svgsprite -app-store\">\r\n <Apple />\r\n </svg>\r\n </div>\r\n <div className=\"a4-btn_store-text\">Available in <b>App Store</b></div>\r\n </BubbleButton>\r\n </a>\r\n </div>\r\n }\r\n {\r\n googleUrl &&\r\n <div className=\"a4-appstore-control-item\" data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-duration=\"1600\">\r\n <a href={googleUrl}>\r\n <BubbleButton className=\"a4-btn_store\">\r\n <div className=\"a4-btn_store-icon\">\r\n <svg className=\"a4-svgsprite -gplay-store\">\r\n <Google />\r\n </svg>\r\n </div>\r\n <div className=\"a4-btn_store-text\">Get it on <b>Google Play</b></div>\r\n </BubbleButton>\r\n </a>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n <div className=\"a4-appstore-gadget\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n <img src={imageUrl} alt=\"\" />\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n )\r\n }\r\n}\r\n\r\nexport default AppStore;","import React from 'react'\r\nimport './Spacer.scss'\r\nimport { ScrollTrigger } from 'gsap/ScrollTrigger'\r\nimport { isMobileOnly } from 'react-device-detect'\r\n\r\nclass Spacer extends React.Component {\r\n // Component\r\n render() {\r\n const { imageUrl, imageBackgroundUrl } = this.props.data;\r\n const type = this.props.type;\r\n const backgroundColor = this.props.backgroundColor;\r\n\r\n return (\r\n <section className={`a4-spacer -${type}`}>\r\n <div className=\"a4-spacer-container\">\r\n <div className={\"a4-spacer-filler \" + backgroundColor}></div>\r\n <div className=\"a4-spacer-content\">\r\n <div className=\"a4-spacer-content-wrapper\">\r\n {\r\n imageBackgroundUrl &&\r\n <img className=\"a4-spacer-content-background\" src={imageBackgroundUrl} alt=\"\" />\r\n }\r\n <img src={imageUrl} data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-easing=\"ease-out-quad\" alt=\"\" onLoad={() => ScrollTrigger.refresh()}/>\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n )\r\n }\r\n}\r\n\r\nexport default Spacer;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 10,\n cy: 10,\n r: 10,\n fill: \"#EB9191\"\n});\n\nvar _ref3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M9.15039 15.08V13.533H10.8374V15.08H9.15039ZM9.15039 12.56V5H10.8374V12.56H9.15039Z\",\n fill: \"white\"\n});\n\nfunction SvgError(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 20,\n height: 20,\n viewBox: \"0 0 20 20\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2, _ref3);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgError);\nexport default \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCjxjaXJjbGUgY3g9IjEwIiBjeT0iMTAiIHI9IjEwIiBmaWxsPSIjRUI5MTkxIi8+DQo8cGF0aCBkPSJNOS4xNTAzOSAxNS4wOFYxMy41MzNIMTAuODM3NFYxNS4wOEg5LjE1MDM5Wk05LjE1MDM5IDEyLjU2VjVIMTAuODM3NFYxMi41Nkg5LjE1MDM5WiIgZmlsbD0id2hpdGUiLz4NCjwvc3ZnPg0K\";\nexport { ForwardRef as ReactComponent };","import React from 'react'\r\nimport './FullNameInput.scss'\r\nimport $ from 'jquery'\r\n\r\nimport { ReactComponent as Error } from '../../../assets/error.svg'\r\n\r\nclass FullNameInput extends React.Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n // Refs\r\n this.fullNameInput = null;\r\n this.fullNameGroup = null;\r\n this.firstNameInput = null;\r\n this.middleNameInput = null;\r\n this.lastNameInput = null;\r\n this.lastNameInputTextField = null;\r\n\r\n // State\r\n this.state = {\r\n useFullNameInput: true,\r\n firstName: this.props.firstName,\r\n middleName: this.props.middleName,\r\n lastName: this.props.lastName,\r\n }\r\n\r\n // This Binding\r\n this.checkFullNameInput = this.checkFullNameInput.bind(this);\r\n }\r\n\r\n // Lifecycle\r\n componentDidMount() {\r\n this.setupNameInputs();\r\n }\r\n\r\n // Helpers\r\n setupNameInputs() {\r\n // Timeout hack ensures function runs after Render (so that REFs are set)\r\n setTimeout(() => {\r\n if (this.state.firstName && this.state.middleName && this.state.lastName) {\r\n console.log(\"full name\")\r\n // Change Name Inputs\r\n this.changeNameInputs();\r\n\r\n // Update Parent Component (Form)\r\n this.props.ignoreFullName();\r\n\r\n // Update State\r\n this.setState({ useFullNameInput: false });\r\n }\r\n }, 0);\r\n }\r\n\r\n changeNameInputs() {\r\n // Hide Full Name\r\n this.fullNameInput.classList.add(\"-disabled\");\r\n this.fullNameInput.style.display = \"none\";\r\n\r\n // Show First Name\r\n this.firstNameInput.classList.remove(\"-disabled\");\r\n this.firstNameInput.style.display = \"block\";\r\n\r\n // Show Middle Name\r\n this.middleNameInput.classList.remove(\"-disabled\");\r\n this.middleNameInput.style.display = \"block\";\r\n\r\n // Show Last Name\r\n this.lastNameInput.classList.remove(\"-disabled\");\r\n this.lastNameInput.style.display = \"block\";\r\n }\r\n\r\n // Event Handlers\r\n checkFullNameInput(e) {\r\n if (e.currentTarget.value.split(\" \").length > 2) {\r\n // Change Name Inputs\r\n this.changeNameInputs();\r\n\r\n // Update Parent Component (Form)\r\n this.props.ignoreFullName();\r\n\r\n // Update State\r\n this.setState({\r\n useFullNameInput: false,\r\n firstName: e.currentTarget.value.split(\" \")[0],\r\n middleName: e.currentTarget.value.split(\" \")[1],\r\n }, () => {\r\n this.lastNameInputTextField.value = \"\";\r\n this.lastNameInputTextField.focus();\r\n });\r\n }\r\n }\r\n\r\n hideInputs() {\r\n if (this.state.useFullNameInput) {\r\n this.fullNameInput.classList.add(\"-disabled\");\r\n $(this.fullNameInput).hide(200);\r\n }\r\n else {\r\n this.firstNameInput.classList.add(\"-disabled\");\r\n this.middleNameInput.classList.add(\"-disabled\");\r\n this.lastNameInput.classList.add(\"-disabled\");\r\n $(this.fullNameGroup).hide(200);\r\n }\r\n }\r\n\r\n showInputs() {\r\n if (this.state.useFullNameInput) {\r\n $(this.fullNameInput).show(0, () => {\r\n this.fullNameInput.classList.remove(\"-disabled\");\r\n });\r\n }\r\n else {\r\n $(this.fullNameGroup).show(0, () => {\r\n this.firstNameInput.classList.remove(\"-disabled\");\r\n this.middleNameInput.classList.remove(\"-disabled\");\r\n this.lastNameInput.classList.remove(\"-disabled\");\r\n });\r\n }\r\n }\r\n\r\n getFullName() {\r\n if (this.state.firstName && this.state.middleName && this.state.lastName) {\r\n return this.state.firstName + \" \" + this.state.middleName + \" \" + this.state.lastName;\r\n }\r\n else if (this.state.firstName && this.state.lastName) {\r\n return this.state.firstName + \" \" + this.state.lastName\r\n }\r\n else {\r\n return \"\";\r\n }\r\n }\r\n\r\n render() {\r\n const fullName = this.getFullName();\r\n\r\n return (\r\n <>\r\n <div className=\"a4-input\" ref={div => this.fullNameInput = div}>\r\n <input name=\"fullName\" required placeholder=\"Full Name\" defaultValue={fullName} onChange={this.checkFullNameInput}/>\r\n <label htmlFor=\"fullName\">Full Name</label>\r\n <span className=\"a4-input-error\">Enter your full name</span>\r\n <svg className=\"a4-svgsprite -error text-secondary\">\r\n <Error />\r\n </svg>\r\n </div>\r\n <div className=\"a4-input-group\" ref={div => this.fullNameGroup = div}>\r\n <div className=\"a4-input firstName -disabled\" ref={div => this.firstNameInput = div}>\r\n <input name=\"firstName\" required placeholder=\"First Name\" defaultValue={this.state.firstName} />\r\n <label htmlFor=\"firstName\">First Name</label>\r\n <span className=\"a4-input-error\"></span>\r\n <svg className=\"a4-svgsprite -error text-secondary\">\r\n <Error />\r\n </svg>\r\n </div>\r\n <div className=\"a4-input middleName -disabled\" ref={div => this.middleNameInput = div}>\r\n <input name=\"middleName\" placeholder=\"Middle Name\" defaultValue={this.state.middleName} />\r\n <label htmlFor=\"middleName\">Middle Name</label>\r\n <span className=\"a4-input-error\"></span>\r\n <svg className=\"a4-svgsprite -error text-secondary\">\r\n <Error />\r\n </svg>\r\n </div>\r\n <div className=\"a4-input lastName -disabled\" ref={div => this.lastNameInput = div}>\r\n <input name=\"lastName\" required placeholder=\"Last Name\" defaultValue={this.state.lastName} ref={input => this.lastNameInputTextField = input} />\r\n <label htmlFor=\"lastName\">Last Name</label>\r\n <span className=\"a4-input-error\"></span>\r\n <svg className=\"a4-svgsprite -error text-secondary\">\r\n <Error />\r\n </svg>\r\n </div>\r\n </div>\r\n </>\r\n )\r\n }\r\n}\r\n\r\nexport default FullNameInput;","import * as jwt from 'jsrsasign'\r\n\r\nclass SessionService {\r\n\r\n //save the user session in local storage so that the member site will see user is logged in\r\n setLocalUserSession(json) {\r\n if (json.succeeded) {\r\n if (json.result) {\r\n // could be LoginMemberResult (result.member has accessToken, result.Member has member info)\r\n // could be Order (result has accessToken, result.memberDigest has member info)\r\n \r\n let accessTokenObject = null;\r\n if (json.result.member && json.result.member.accessToken) {\r\n accessTokenObject = json.result.member;\r\n }\r\n else if (json.result.accessToken) {\r\n accessTokenObject = json.result;\r\n }\r\n\r\n let member = null;\r\n let memberDigest = null;\r\n if (json.result.member && json.result.member.accessToken) {\r\n member = json.result.member; \r\n }\r\n else if (json.result.memberDigest) {\r\n memberDigest = json.result.memberDigest;\r\n }\r\n\r\n // console.log('accessTokenObject = ', accessTokenObject);\r\n // console.log('member = ', member);\r\n // console.log('memberDigest = ', memberDigest);\r\n \r\n if (accessTokenObject && (member || memberDigest)) {\r\n\r\n let session = {\r\n accessToken: accessTokenObject.accessToken,\r\n refreshToken: accessTokenObject.refreshToken,\r\n userSessionId: accessTokenObject.userSessionId\r\n };\r\n\r\n if (member) {\r\n session.firstName = member.firstName;\r\n session.lastName = member.lastName;\r\n session.disableAutoLogin = member.disableAutoLogin;\r\n session.requiresEmailConfirm = member.requiresEmailConfirm;\r\n }\r\n else if (memberDigest) {\r\n session.firstName = memberDigest.firstName;\r\n session.lastName = memberDigest.lastName; \r\n session.disableAutoLogin = memberDigest.disableAutoLogin;\r\n session.requiresEmailConfirm = memberDigest.requiresEmailConfirm;\r\n }\r\n\r\n if (session.accessToken) {\r\n // let tokenHeader = jwt.KJUR.jws.JWS.readSafeJSONString(jwt.b64utoutf8(session.accessToken.split(\".\")[0]));\r\n let tokenPayload = jwt.KJUR.jws.JWS.readSafeJSONString(jwt.b64utoutf8(session.accessToken.split(\".\")[1]));\r\n session.accessTokenNotBefore = tokenPayload.nbf;\r\n session.accessTokenExpire = tokenPayload.exp;\r\n session.accessTokenExpireLocal = (Date.now() / 1000) + (tokenPayload.exp - tokenPayload.nbf);\r\n session.accessTokenName = tokenPayload.name;\r\n if (Array.isArray(tokenPayload.email)) {\r\n if (tokenPayload.email.length > 0) {\r\n session.name = tokenPayload.name;\r\n session.email = tokenPayload.email[0];\r\n }\r\n } \r\n else {\r\n session.name = tokenPayload.name;\r\n session.email = tokenPayload.email;\r\n }\r\n }\r\n\r\n let jsonSession = JSON.stringify(session);\r\n window.localStorage.setItem('userSession', jsonSession);\r\n\r\n //create user session cookie\r\n if (session.disableAutoLogin || session.requiresEmailConfirm || (session.email && session.email.startsWith('test_'))) {\r\n this.eraseUserSessionCookie();\r\n }\r\n else {\r\n this.setUserSessionCookie(session);\r\n }\r\n }\r\n }\r\n }\r\n return json;\r\n }\r\n\r\n setUserSessionCookie(session, days = 30) {\r\n var expires = \"\";\r\n if (days) {\r\n var date = new Date();\r\n date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));\r\n expires = \"; expires=\" + date.toUTCString();\r\n }\r\n var cookieValue = encodeURIComponent(`at=${session.accessToken || ''};atl=${session.accessTokenExpire || ''}`);\r\n document.cookie = '_us=' + cookieValue + expires + \"; path=/; SameSite\";\r\n }\r\n\r\n eraseUserSessionCookie() {\r\n document.cookie = '_us=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT;';\r\n }\r\n}\r\n\r\nconst sessionService = new SessionService();\r\nexport default sessionService;","import httpService from './HttpService'\r\nimport sessionService from './SessionService'\r\n\r\nexport const MemberType = {\r\n Payment: 0,\r\n Register: 1,\r\n TryForFree: 2,\r\n}\r\n\r\nclass MemberService {\r\n\r\n constructor() {\r\n this.confirmEmailValidated = false;\r\n this.completeProfileValidated = false;\r\n }\r\n\r\n goToMembers(successRedirect) {\r\n //console.log('gotToMembers redirect = ', successRedirect);\r\n\r\n window.location.replace(successRedirect ? successRedirect : '/members');\r\n }\r\n\r\n subscribe(subscribeRequest) {\r\n const url = 'api/member/subscribe';\r\n\r\n return httpService.post(url, subscribeRequest);\r\n }\r\n\r\n login(loginRequest) {\r\n const url = 'api/member/login';\r\n\r\n return httpService.post(url, loginRequest)\r\n .then(json => {\r\n if (json && json.succeeded) {\r\n sessionService.setLocalUserSession(json);\r\n }\r\n return json;\r\n });\r\n }\r\n\r\n checkEmailInUse(checkEmailRequest) {\r\n const url = 'api/member/email/inuse';\r\n\r\n return httpService.post(url, checkEmailRequest)\r\n .then(json => {\r\n if (json && json.succeeded) {\r\n return json.result;\r\n }\r\n else {\r\n console.log(json.errors);\r\n }\r\n })\r\n }\r\n\r\n getMtcId() {\r\n // Check local storage first\r\n let mtcId = localStorage.getItem('mtc_id');\r\n if (!mtcId) {\r\n // Fallback to cookies if not in local storage\r\n mtcId = document.cookie.split('; ').find(row => row.startsWith('mtc_id='))?.split('=')[1];\r\n if (mtcId) {\r\n // Sync to local storage for future access\r\n localStorage.setItem('mtc_id', mtcId);\r\n }\r\n }\r\n return mtcId;\r\n }\r\n\r\n register(registerRequest) {\r\n const url = 'api/member/register';\r\n\r\n registerRequest.requestType = 1;\r\n registerRequest.confirmAccount = false;\r\n registerRequest.autoLogin = true;\r\n registerRequest.origin = window.location.origin;\r\n registerRequest.timezoneOffset = -(new Date().getTimezoneOffset() / 60);\r\n registerRequest.contactId = this.getMtcId();\r\n\r\n return httpService.post(url, registerRequest)\r\n .then(json => { \r\n if (json && json.succeeded) {\r\n sessionService.setLocalUserSession(json);\r\n }\r\n return json;\r\n });\r\n }\r\n\r\n forgotPassword(forgotPasswordRequest) {\r\n const url = 'api/member/requestresetpassword';\r\n\r\n forgotPasswordRequest.origin = window.location.origin;\r\n\r\n return httpService.post(url, forgotPasswordRequest);\r\n }\r\n\r\n resetPassword(resetPasswordRequest) {\r\n const url = 'api/member/setresetpassword';\r\n\r\n return httpService.post(url, resetPasswordRequest)\r\n .then(json => {\r\n if (json && json.succeeded) {\r\n sessionService.setLocalUserSession(json);\r\n }\r\n return json;\r\n });\r\n }\r\n\r\n validateConfirmEmailToken(token) {\r\n const url = 'api/member/confirmemail';\r\n const body = {\r\n \"confirmEmailToken\": token,\r\n \"origin\": window.location.origin\r\n };\r\n\r\n // Reset\r\n this.confirmEmailValidated = false;\r\n\r\n return httpService.post(url, body)\r\n .then(json => {\r\n if (json && json.succeeded && json.result.status === 0) {\r\n this.confirmEmailValidated = true;\r\n }\r\n\r\n return json;\r\n });\r\n }\r\n\r\n validateCompleteProfileToken(token) {\r\n const url = 'api/member/validatecompleteprofile/${token}';\r\n const body = {};\r\n\r\n // Reset\r\n this.completeProfileValidated = false;\r\n\r\n return httpService.post(url, body)\r\n .then(json => {\r\n if (json && json.succeeded && json.result.status === 0) {\r\n this.completeProfileValidated = true;\r\n }\r\n\r\n return json;\r\n });\r\n }\r\n\r\n completeProfile(completeProfileRequest) {\r\n const url = 'api/member/completeprofile';\r\n\r\n completeProfileRequest.origin = window.location.origin;\r\n completeProfileRequest.timezoneOffset = -(new Date().getTimezoneOffset() / 60);\r\n completeProfileRequest.contactId = this.getMtcId();\r\n\r\n return httpService.post(url, completeProfileRequest)\r\n .then(json => {\r\n if (json && json.succeeded) {\r\n sessionService.setLocalUserSession(json);\r\n }\r\n return json;\r\n });\r\n }\r\n\r\n validateMember(validateMemberRequest) {\r\n const url = 'api/member/validate';\r\n\r\n return httpService.post(url, validateMemberRequest);\r\n }\r\n\r\n validateJoinGroup(joinGroupRequest) {\r\n const url = 'api/group/register/verify';\r\n const body = {\r\n recaptchaToken: joinGroupRequest.recaptchaToken,\r\n registerCode: joinGroupRequest.groupCode,\r\n };\r\n\r\n return httpService.post(url, body);\r\n }\r\n}\r\n\r\nconst memberService = new MemberService();\r\nexport default memberService;","import gsap from 'gsap'\r\n\r\nclass FormService {\r\n\r\n // Submit Button\r\n showLoadingButton(form) {\r\n const button = form.querySelector(\".a4-form-submit\");\r\n button.setAttribute(\"disabled\", true);\r\n button.classList.add(\"-loading\");\r\n }\r\n \r\n hideLoadingButton(form) {\r\n const button = form.querySelector(\".a4-form-submit\");\r\n button.classList.remove(\"-loading\");\r\n button.removeAttribute(\"disabled\");\r\n }\r\n\r\n // Show/Hide Errors\r\n showInputError(form, name, error) {\r\n const inputs = form.querySelectorAll(\".a4-input\");\r\n for (const inputDiv of inputs) {\r\n const input = inputDiv.querySelector(\"input, textarea\");\r\n if (input.name === name) {\r\n const span = inputDiv.querySelector(\"span\");\r\n span.innerText = error;\r\n inputDiv.classList.add(\"-error\");\r\n return;\r\n }\r\n }\r\n }\r\n \r\n showFormError(form, error) {\r\n const p = form.querySelector(\".a4-form-error\");\r\n p.innerText = error;\r\n gsap.to(p, {\r\n display: \"block\",\r\n duration: 0.2,\r\n }, 0);\r\n }\r\n \r\n hideAllErrors(form) {\r\n const inputs = form.querySelectorAll(\".a4-input\");\r\n for (const input of inputs) {\r\n input.classList.remove(\"-error\");\r\n }\r\n \r\n const error = form.querySelector(\".a4-form-error\");\r\n if (error) {\r\n error.innerText = \"\";\r\n gsap.to(error, {\r\n display: \"none\",\r\n duration: 0.2,\r\n }, 0);\r\n }\r\n }\r\n \r\n clearAllInputs(form) {\r\n const inputs = form.querySelectorAll(\".a4-input\");\r\n for (const inputDiv of inputs) {\r\n const input = inputDiv.querySelector(\"input, textarea\");\r\n input.value = \"\";\r\n }\r\n }\r\n \r\n // Error Validation\r\n validate(form) {\r\n let results = [];\r\n \r\n this.hideAllErrors(form);\r\n \r\n const inputs = form.querySelectorAll('.a4-input');\r\n inputs.forEach((input) => {\r\n if (!input.classList.contains(\"-disabled\")) {\r\n const requiredOK = this.checkRequired(input);\r\n const nameOK = this.checkName(input);\r\n const emailOK = this.checkEmail(input);\r\n const passwordOK = this.checkPassword(input);\r\n const creditCardOK = this.checkCreditCard(input);\r\n const expMonthOK = this.checkExpirationMonth(input);\r\n const expYearOK = this.checkExpirationYear(input);\r\n const cvvOK = this.checkCvv(input);\r\n const numberOK = this.checkNumber(input);\r\n const questionOK = this.checkQuestion(input);\r\n \r\n results.push(requiredOK && nameOK && emailOK && passwordOK && creditCardOK && expMonthOK && expYearOK && cvvOK && numberOK && questionOK);\r\n }\r\n else {\r\n results.push(true);\r\n }\r\n });\r\n \r\n return results.every(i => i);\r\n }\r\n \r\n checkRequired(input) {\r\n const control = input.querySelector(\"input, textarea\");\r\n \r\n if (control ? control.attributes.required : false) {\r\n if (control.value.trim() === \"\") {\r\n input.classList.add(\"-error\");\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n \r\n checkName(input) {\r\n const control = input.querySelector(\"input, textarea\");\r\n \r\n if (control) {\r\n const name = control.getAttribute(\"name\");\r\n const error = input.querySelector(\".a4-input-error\");\r\n\r\n if (name === \"fullName\") {\r\n error.innerText = \"Enter your full name\";\r\n\r\n if(control.value !== \"\" && (control.value.split(\" \").length < 2 || control.value.split(\" \")[1] === \"\")) {\r\n error.innerText = \"Full name must be at least 2 words\";\r\n input.classList.add(\"-error\");\r\n return false;\r\n }\r\n else if (control.value !== \"\" && control.value.length > 70) {\r\n error.innerText = \"Name is too long\";\r\n input.classList.add(\"-error\");\r\n return false;\r\n }\r\n }\r\n else if (name === \"firstName\" || name === \"middleName\" || name === \"lastName\") {\r\n error.innerText = \"\";\r\n\r\n if (control.value !== \"\" && control.value.length > 35) {\r\n error.innerText = \"Name is too long\";\r\n input.classList.add(\"-error\");\r\n return false;\r\n }\r\n }\r\n }\r\n return true;\r\n }\r\n \r\n checkEmail(input) {\r\n const control = input.querySelector(\"input, textarea\");\r\n \r\n if (control ? control.getAttribute(\"name\") === \"email\" : false) {\r\n const emailRegex = /^(([^<>()[\\]\\\\.,;:\\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,}))$/;\r\n const error = input.querySelector(\".a4-input-error\");\r\n error.innerText = \"Enter a valid email\";\r\n\r\n if (control.value !== \"\" && control.value.length > 256) {\r\n error.innerText = \"Email is too long\";\r\n input.classList.add(\"-error\");\r\n return false;\r\n }\r\n \r\n if(control.value !== \"\" && !emailRegex.test(control.value.trim())) {\r\n input.classList.add(\"-error\");\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n \r\n checkPassword(input) {\r\n const control = input.querySelector(\"input, textarea\");\r\n \r\n if (control ? control.getAttribute(\"name\") === \"password\" || control.getAttribute(\"name\") === \"confirm\" : false) {\r\n const error = input.querySelector(\".a4-input-error\");\r\n error.innerText = \"Enter a valid password\";\r\n\r\n if (control.value !== \"\" && control.value.length > 128) {\r\n error.innerText = \"Password is too long\";\r\n input.classList.add(\"-error\");\r\n return false;\r\n }\r\n \r\n if(control.value !== \"\" && control.value.length < 6) {\r\n error.innerText = \"Password must be at least 6 characters\"\r\n input.classList.add(\"-error\");\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n \r\n checkCreditCard(input) {\r\n const control = input.querySelector(\"input, textarea\");\r\n \r\n if (control ? control.getAttribute(\"name\") === \"card\" : false) {\r\n const error = input.querySelector(\".a4-input-error\");\r\n error.innerText = \"Enter a valid credit card\";\r\n \r\n if(control.value !== \"\" && !this.isValidCreditCardNo(control.value)) {\r\n input.classList.add(\"-error\");\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n \r\n isValidCreditCardNo(value) {\r\n // accept only digits, dashes or spaces\r\n if (/[^0-9-\\s]+/.test(value)) return false;\r\n // The Luhn Algorithm. It's so pretty.\r\n let nCheck = 0, bEven = false; // , nDigit = 0\r\n value = value.replace(/\\D/g, \"\");\r\n for (var n = value.length - 1; n >= 0; n--) {\r\n let cDigit = value.charAt(n),\r\n nDigit = parseInt(cDigit, 10);\r\n if (bEven) {\r\n if ((nDigit *= 2) > 9) nDigit -= 9;\r\n }\r\n nCheck += nDigit;\r\n bEven = !bEven;\r\n }\r\n if ((nCheck % 10) === 0) {\r\n if (value.length === 15 && (value.startsWith('34') || value.startsWith('37'))) {\r\n //amex\r\n return true;\r\n }\r\n else if ((value.length === 13 || value.length === 16) && value.startsWith('4')) {\r\n //visa\r\n return true;\r\n }\r\n else if ((value.length === 16) && (value.startsWith('51') || value.startsWith('52') || value.startsWith('53') || value.startsWith('54') || value.startsWith('55'))) {\r\n //mastercard\r\n return true;\r\n }\r\n else if ((value.length === 16 && value.startsWith('6011')) || (value.length === 15 && value.startsWith('5'))) {\r\n //discover\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n \r\n checkExpirationMonth(input) {\r\n const control = input.querySelector(\"input, textarea\");\r\n \r\n if (control ? control.getAttribute(\"name\") === \"mm\" : false) {\r\n if(control.value !== \"\" && (isNaN(control.value) || (control.value < 1 || control.value > 12))) {\r\n input.classList.add(\"-error\");\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n \r\n checkExpirationYear(input) {\r\n const control = input.querySelector(\"input, textarea\");\r\n if (control ? control.getAttribute(\"name\") === \"yyyy\" : false) {\r\n if(control.value !== \"\" && (isNaN(control.value) || control.value.length !== 4 || (control.value < new Date().getFullYear()))) {\r\n input.classList.add(\"-error\");\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n \r\n checkCvv(input) {\r\n const control = input.querySelector(\"input, textarea\");\r\n \r\n if (control ? control.getAttribute(\"name\") === \"cvv\" : false) {\r\n if(control.value !== \"\" && (isNaN(control.value) || (control.value.length < 3 || control.value.length > 4))) {\r\n input.classList.add(\"-error\");\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n checkNumber(input) {\r\n const control = input.querySelector(\"input, textarea\");\r\n \r\n if (control ? control.getAttribute(\"name\") === \"numberOfMembers\" : false) {\r\n const error = input.querySelector(\".a4-input-error\");\r\n error.innerText = \"Enter the number of members\";\r\n\r\n if(control.value !== \"\" && isNaN(control.value)) {\r\n error.innerText = \"Enter a valid number\";\r\n input.classList.add(\"-error\");\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n checkQuestion(input) {\r\n const control = input.querySelector(\"input, textarea\");\r\n \r\n if (control ? control.getAttribute(\"name\") === \"question\" : false) {\r\n const error = input.querySelector(\".a4-input-error\");\r\n error.innerText = \"Enter a valid question\";\r\n \r\n if(control.value === \"\") {\r\n input.classList.add(\"-error\");\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n}\r\n\r\nconst formService = new FormService();\r\nexport default formService;","import React from 'react'\r\nimport './TryForFree.scss'\r\nimport { Link } from 'react-router-dom'\r\nimport { isMobileOnly } from 'react-device-detect'\r\n \r\nimport FullNameInput from '../../shared/FullNameInput/FullNameInput'\r\nimport BubbleButton from '../../shared/BubbleButton/BubbleButton'\r\nimport { ReactComponent as Error } from '../../../assets/error.svg'\r\n\r\nimport memberService from '../../../services/MemberService'\r\nimport formService from '../../../services/FormService'\r\nimport recaptchaService from '../../../services/RecaptchaService'\r\nimport { MemberType } from '../../../services/MemberService'\r\n\r\nclass TryForFree extends React.Component {\r\n // Constructor\r\n constructor(props) {\r\n super(props);\r\n\r\n // Refs\r\n this.form = null;\r\n\r\n // State\r\n this.state = {\r\n useFullName: true,\r\n }\r\n\r\n // This Binding\r\n this.ignoreFullName = this.ignoreFullName.bind(this);\r\n this.submitForm = this.submitForm.bind(this);\r\n }\r\n\r\n // Event Handlers\r\n ignoreFullName() {\r\n this.setState({ useFullName: false });\r\n }\r\n\r\n submitForm(e) {\r\n e.preventDefault();\r\n\r\n const isFormValid = formService.validate(this.form);\r\n\r\n const email = e.target.email.value.trim();\r\n const password = e.target.password.value;\r\n const confirm = e.target.confirm.value;\r\n \r\n let firstName = \"\";\r\n let middleName = \"\";\r\n let lastName = \"\";\r\n\r\n if (this.state.useFullName) {\r\n firstName = e.target.fullName.value.split(\" \")[0];\r\n lastName = e.target.fullName.value.split(\" \")[1];\r\n }\r\n else {\r\n firstName = e.target.firstName.value;\r\n middleName = e.target.middleName.value;\r\n lastName = e.target.lastName.value;\r\n }\r\n\r\n if (password !== confirm) {\r\n formService.showInputError(this.form, \"confirm\", \"This password does not match\");\r\n formService.hideLoadingButton(this.form);\r\n return;\r\n }\r\n\r\n if(!isFormValid) return;\r\n\r\n formService.showLoadingButton(this.form);\r\n\r\n let memberRequest = {email, password, firstName, middleName, lastName};\r\n\r\n recaptchaService.getToken(\"register\")\r\n .then(token => {\r\n memberRequest.recaptchaToken = token;\r\n memberRequest.memberType = MemberType.TryForFree;\r\n memberRequest.contactId = memberService.getMtcId();\r\n\r\n memberService.checkEmailInUse(memberRequest)\r\n .then((isInUse) => {\r\n if (isInUse) {\r\n formService.hideAllErrors(this.form);\r\n formService.hideLoadingButton(this.form);\r\n formService.showInputError(this.form, \"email\", \"This email address is already taken\");\r\n }\r\n else {\r\n memberService.register(memberRequest)\r\n .then(json => {\r\n if (json.succeeded) {\r\n memberService.goToMembers(json.result.successRedirect);\r\n }\r\n else {\r\n formService.hideAllErrors(this.form);\r\n formService.hideLoadingButton(this.form);\r\n formService.showFormError(this.form, json.errors[0]);\r\n }\r\n });\r\n }\r\n })\r\n })\r\n }\r\n\r\n // Component\r\n render() {\r\n const { headers, body, actionLabel } = this.props.data;\r\n \r\n return (\r\n <section className=\"a4-create-account\" ref={this.props.innerRef}>\r\n <div className=\"a4-create-account-container\">\r\n <div className=\"a4-create-account-content\">\r\n <div className=\"a4-create-account-info\">\r\n <h2 className=\"a4-create-account-title\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>{headers[0]} <span className=\"text-primary\">{headers[1]}</span> {headers[2]}</h2>\r\n <p className=\"a4-create-account-description\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>{body}</p>\r\n </div>\r\n <form className=\"a4-create-account-form\" data-aos={isMobileOnly ? undefined : \"fade-up\"} ref={form => this.form = form} onSubmit={this.submitForm}>\r\n <div className=\"a4-create-account-group\">\r\n <FullNameInput ignoreFullName={this.ignoreFullName} /> \r\n </div>\r\n <div className=\"a4-create-account-group\">\r\n <div className=\"a4-input\">\r\n <input name=\"email\" type='email' required placeholder=\"E-mail address\" />\r\n <label htmlFor=\"email\">E-mail address</label>\r\n <span className=\"a4-input-error\">Enter a valid e-mail address</span>\r\n <svg className=\"a4-svgsprite -error text-secondary\">\r\n <Error />\r\n </svg>\r\n </div>\r\n </div>\r\n <div className=\"a4-create-account-group\">\r\n <div className=\"a4-input\">\r\n <input name=\"password\" placeholder=\"Password\" required type=\"password\" />\r\n <label htmlFor=\"password\">Password</label>\r\n <span className=\"a4-input-error\">Enter a valid password</span>\r\n <svg className=\"a4-svgsprite -error text-secondary\">\r\n <Error />\r\n </svg>\r\n </div>\r\n </div>\r\n <div className=\"a4-create-account-group\">\r\n <div className=\"a4-input\">\r\n <input name=\"confirm\" placeholder=\"Confirm Password\" required type=\"password\" />\r\n <label htmlFor=\"password\">Confirm Password</label>\r\n <span className=\"a4-input-error\">Enter a valid password</span>\r\n <svg className=\"a4-svgsprite -error text-secondary\">\r\n <Error />\r\n </svg>\r\n </div>\r\n </div>\r\n <p className=\"a4-form-error\"></p>\r\n <div className=\"a4-create-account-control\">\r\n <BubbleButton className=\"a4-form-submit -primary\" type=\"submit\" formNoValidate>\r\n <b>{actionLabel}</b>\r\n </BubbleButton>\r\n <Link to=\"/login\" className=\"a4-already-have-acc\">Already have an account?</Link>\r\n </div>\r\n <div className=\"a4-create-account-terms\">\r\n By registering you agree to our \r\n <Link to=\"/terms-and-conditions\" className=\"md_inline\"><b>Terms of Use</b></Link>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n </section>\r\n )\r\n }\r\n}\r\n\r\nexport default React.forwardRef((props, ref) => <TryForFree \r\n innerRef={ref} {...props}\r\n/>);","import React from 'react'\r\nimport './Plans.scss'\r\nimport { Link, withRouter } from 'react-router-dom'\r\nimport { isMobileOnly } from 'react-device-detect'\r\n\r\nclass Plans extends React.Component {\r\n // Component\r\n render() {\r\n const headers = this.props.data.headers;\r\n const plans = this.props.data.plans;\r\n\r\n return (\r\n <section className=\"a4-find-plan\">\r\n <div className=\"a4-find-plan-container\">\r\n <div className=\"a4-find-plan-content\">\r\n <div className=\"a4-find-plan-title\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n <h1>{headers[0]} <span className=\"text-primary\">{headers[1]}</span></h1>\r\n </div>\r\n {/* ONLY 1 PLAN */}\r\n {\r\n this.props.data && plans.length === 1 && \r\n <ul className=\"a4-one-plan-list\">\r\n {\r\n plans.map((plan, index) => {\r\n return <li className=\"a4-one-plan-list-item-wrapper\" data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-delay={`${100 + index * 150}`} data-aos-anchor-placement=\"top-bottom\" key={index}>\r\n {\r\n plan.type !== \"group-plans\" &&\r\n <Link to={`/pricing/${plan.type}`}>\r\n <div className=\"a4-one-plan-list-item -active\" data-type={plan.type}>\r\n <div className=\"a4-one-plan-list-item-image\">\r\n <img src={plan.imageUrl} width=\"153px\" height=\"147px\" alt=\"\" />\r\n </div>\r\n <div className=\"a4-one-plan-list-item-title\">\r\n <h4>{plan.title}</h4>\r\n </div>\r\n <div className=\"a4-one-plan-list-item-description\">\r\n <p>\r\n <span className=\"a4-one-plan-list-item-programs\">{plan.description}</span>\r\n </p>\r\n </div>\r\n </div>\r\n </Link>\r\n }\r\n {\r\n plan.type === \"group-plans\" &&\r\n <div className=\"a4-one-plan-list-item -active\" data-type={plan.type} onClick={this.props.openGroupPlanModal}>\r\n <div className=\"a4-one-plan-list-item-image\">\r\n <img src={plan.imageUrl} width=\"153px\" height=\"147px\" alt=\"\" />\r\n </div>\r\n <div className=\"a4-one-plan-list-item-title\">\r\n <h4>{plan.title}</h4>\r\n </div>\r\n <div className=\"a4-one-plan-list-item-description\">\r\n <p>\r\n <span className=\"a4-three-plan-list-item-programs\">{plan.description}</span>\r\n </p>\r\n </div>\r\n </div>\r\n }\r\n </li>\r\n })\r\n }\r\n </ul>\r\n }\r\n {/* EVEN NUMBER OF PLANS */}\r\n {\r\n this.props.data && plans.length > 1 && plans.length % 2 === 0 && \r\n <ul className=\"a4-four-plan-list\">\r\n {\r\n plans.map((plan, index) => {\r\n return <li className=\"a4-four-plan-list-item-wrapper\" data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-delay={`${100 + index * 150}`} data-aos-anchor-placement=\"top-bottom\" key={index}>\r\n {\r\n plan.type !== \"group-plans\" &&\r\n <Link to={`/pricing/${plan.type}`}>\r\n <div className=\"a4-four-plan-list-item -active\" data-type={plan.type}>\r\n <div className=\"a4-four-plan-list-item-image\">\r\n <img src={plan.imageUrl} width=\"153px\" height=\"147px\" alt=\"\" />\r\n </div>\r\n <div className=\"a4-four-plan-list-item-title\">\r\n <h4>{plan.title}</h4>\r\n </div>\r\n <div className=\"a4-four-plan-list-item-description\">\r\n <p>\r\n <span className=\"a4-three-plan-list-item-programs\">{plan.description}</span>\r\n </p>\r\n </div>\r\n </div>\r\n </Link>\r\n }\r\n {\r\n plan.type === \"group-plans\" &&\r\n <div className=\"a4-four-plan-list-item -active\" data-type={plan.type} onClick={this.props.openGroupPlanModal}>\r\n <div className=\"a4-four-plan-list-item-image\">\r\n <img src={plan.imageUrl} width=\"153px\" height=\"147px\" alt=\"\" />\r\n </div>\r\n <div className=\"a4-four-plan-list-item-title\">\r\n <h4>{plan.title}</h4>\r\n </div>\r\n <div className=\"a4-four-plan-list-item-description\">\r\n <p>\r\n <span className=\"a4-three-plan-list-item-programs\">{plan.description}</span>\r\n </p>\r\n </div>\r\n </div>\r\n }\r\n </li>\r\n })\r\n }\r\n </ul>\r\n }\r\n {/* ODD NUMBER OF PLANS */}\r\n {\r\n this.props.data && plans.length > 1 && plans.length % 2 === 1 &&\r\n <ul className=\"a4-three-plan-list\">\r\n {\r\n plans.map((plan, index) => {\r\n return <li className=\"a4-three-plan-list-item-wrapper\" data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-delay={`${100 + index * 150}`} data-aos-anchor-placement=\"top-bottom\" key={index}>\r\n {\r\n plan.type !== \"group-plans\" &&\r\n <Link to={`/pricing/${plan.type}`}>\r\n <div className=\"a4-three-plan-list-item -active\">\r\n <div className=\"a4-three-plan-list-item-image\">\r\n <img src={plan.imageUrl} alt=\"\" />\r\n </div>\r\n <div className=\"a4-three-plan-list-item-title\">\r\n <h4>{plan.title}</h4>\r\n </div>\r\n <div className=\"a4-three-plan-list-item-description\">\r\n <p>\r\n <span className=\"a4-three-plan-list-item-programs\">{plan.description}</span>\r\n </p>\r\n </div>\r\n </div>\r\n </Link>\r\n }\r\n {\r\n plan.type === \"group-plans\" &&\r\n <div className=\"a4-three-plan-list-item -active\" data-type={plan.type} onClick={this.props.openGroupPlanModal}>\r\n <div className=\"a4-three-plan-list-item-image\">\r\n <img src={plan.imageUrl} alt=\"\" />\r\n </div>\r\n <div className=\"a4-three-plan-list-item-title\">\r\n <h4>{plan.title}</h4>\r\n </div>\r\n <div className=\"a4-three-plan-list-item-description\">\r\n <p>\r\n <span className=\"a4-three-plan-list-item-programs\">{plan.description}</span>\r\n </p>\r\n </div>\r\n </div>\r\n }\r\n </li>\r\n }) \r\n } \r\n </ul>\r\n }\r\n </div>\r\n </div>\r\n </section>\r\n )\r\n }\r\n}\r\n\r\nexport default withRouter(Plans);","import $ from 'jquery'\r\n\r\nwindow.$ = $;\r\nwindow.jQuery = $;\r\n\r\nexport default $;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M1.42847 7C0.876182 7 0.428467 7.44772 0.428467 8C0.428467 8.55228 0.876182 9 1.42847 9L1.42847 7ZM19.2784 8.70711C19.669 8.31658 19.669 7.68342 19.2784 7.29289L12.9145 0.928931C12.5239 0.538407 11.8908 0.538407 11.5003 0.928931C11.1097 1.31946 11.1097 1.95262 11.5003 2.34314L17.1571 8L11.5003 13.6569C11.1097 14.0474 11.1097 14.6805 11.5003 15.0711C11.8908 15.4616 12.5239 15.4616 12.9145 15.0711L19.2784 8.70711ZM1.42847 9L18.5713 9L18.5713 7L1.42847 7L1.42847 9Z\",\n fill: \"current\"\n});\n\nfunction SvgArrowRight(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 20 16\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgArrowRight);\nexport default \"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjAgMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQo8cGF0aCBkPSJNMS40Mjg0NyA3QzAuODc2MTgyIDcgMC40Mjg0NjcgNy40NDc3MiAwLjQyODQ2NyA4QzAuNDI4NDY3IDguNTUyMjggMC44NzYxODIgOSAxLjQyODQ3IDlMMS40Mjg0NyA3Wk0xOS4yNzg0IDguNzA3MTFDMTkuNjY5IDguMzE2NTggMTkuNjY5IDcuNjgzNDIgMTkuMjc4NCA3LjI5Mjg5TDEyLjkxNDUgMC45Mjg5MzFDMTIuNTIzOSAwLjUzODQwNyAxMS44OTA4IDAuNTM4NDA3IDExLjUwMDMgMC45Mjg5MzFDMTEuMTA5NyAxLjMxOTQ2IDExLjEwOTcgMS45NTI2MiAxMS41MDAzIDIuMzQzMTRMMTcuMTU3MSA4TDExLjUwMDMgMTMuNjU2OUMxMS4xMDk3IDE0LjA0NzQgMTEuMTA5NyAxNC42ODA1IDExLjUwMDMgMTUuMDcxMUMxMS44OTA4IDE1LjQ2MTYgMTIuNTIzOSAxNS40NjE2IDEyLjkxNDUgMTUuMDcxMUwxOS4yNzg0IDguNzA3MTFaTTEuNDI4NDcgOUwxOC41NzEzIDlMMTguNTcxMyA3TDEuNDI4NDcgN0wxLjQyODQ3IDlaIiBmaWxsPSJjdXJyZW50Ii8+DQo8L3N2Zz4NCg==\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 25,\n cy: 25,\n r: 25,\n fill: \"#F4FDFC\"\n});\n\nvar _ref3 = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 25,\n cy: 19,\n r: 3.75,\n stroke: \"currentColor\",\n strokeWidth: 2.5\n});\n\nvar _ref4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M34 33.9999C34 29.792 29.9706 26.3809 25 26.3809C20.0294 26.3809 16 29.792 16 33.9999\",\n stroke: \"currentColor\",\n strokeWidth: 2.5,\n strokeLinecap: \"round\"\n});\n\nfunction SvgAvatarPlug(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 50,\n height: 50,\n viewBox: \"0 0 50 50\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2, _ref3, _ref4);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgAvatarPlug);\nexport default \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIHZpZXdCb3g9IjAgMCA1MCA1MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCjxjaXJjbGUgY3g9IjI1IiBjeT0iMjUiIHI9IjI1IiBmaWxsPSIjRjRGREZDIi8+DQo8Y2lyY2xlIGN4PSIyNSIgY3k9IjE5IiByPSIzLjc1IiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyLjUiIC8+DQo8cGF0aCBkPSJNMzQgMzMuOTk5OUMzNCAyOS43OTIgMjkuOTcwNiAyNi4zODA5IDI1IDI2LjM4MDlDMjAuMDI5NCAyNi4zODA5IDE2IDI5Ljc5MiAxNiAzMy45OTk5IiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyLjUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPg0KPC9zdmc+DQo=\";\nexport { ForwardRef as ReactComponent };","import React from 'react'\r\nimport $ from './util/jqueryShim'\r\nimport 'owl.carousel'\r\nimport 'owl.carousel/dist/assets/owl.carousel.css'\r\nimport './Reviews.scss'\r\nimport { isMobileOnly } from 'react-device-detect'\r\n\r\nimport { ReactComponent as ArrowRight } from './assets/arrow-right.svg'\r\nimport { ReactComponent as Avatar } from '../../../assets/avatar-plug.svg'\r\n\r\nimport bootstrapService from '../../../services/BootstrapService'\r\n\r\nclass Reviews extends React.Component {\r\n // Constructor\r\n constructor(props) {\r\n super(props);\r\n\r\n // Refs\r\n this.carousel = null;\r\n\r\n // This Binding\r\n this.clickNextReview = this.clickNextReview.bind(this);\r\n }\r\n\r\n // Lifecycle\r\n componentDidMount() {\r\n this.setupCarousel();\r\n }\r\n\r\n // Helpers\r\n setupCarousel() {\r\n $(\".a4-client-reviews-list\").owlCarousel({\r\n animateOut: \"azaza\",\r\n smartSpeed: 700,\r\n autoWidth: true,\r\n margin: 26,\r\n });\r\n }\r\n\r\n // Event Handlers\r\n clickNextReview() {\r\n $(this.carousel).trigger(\"next.owl.carousel\");\r\n }\r\n\r\n // Component\r\n render() {\r\n const reviewsData = bootstrapService.data.landing.sections.find(s => s.name === \"testimonials\");\r\n\r\n const header = reviewsData ? reviewsData.header : null;\r\n const body = reviewsData ? reviewsData.body : null;\r\n const reviews = reviewsData ? reviewsData.testimonials : null;\r\n\r\n return (\r\n <>\r\n {\r\n reviewsData &&\r\n <section className=\"a4-client-reviews\">\r\n <div className=\"a4-main-client-reviews-container\">\r\n <div className=\"a4-main-client-reviews-content\">\r\n <div>\r\n <div className=\"a4-client-reviews-info\">\r\n <div className=\"a4-client-reviews-title\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n <h2>{header}</h2>\r\n </div>\r\n <div className=\"a4-client-reviews-description\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n <p>{body}</p>\r\n </div>\r\n </div>\r\n <div className=\"relative\">\r\n <div className=\"a4-client-reviews-list-container\">\r\n <div className=\"a4-client-reviews-list-control\" onClick={this.clickNextReview}>\r\n <svg className=\"a4-svgsprite -logo text-secondary\">\r\n <ArrowRight fill={bootstrapService.primaryColor}/>\r\n </svg>\r\n </div>\r\n <ul className=\"a4-client-reviews-list owl-carousel\" ref={div => this.carousel = div}>\r\n {\r\n reviews.map((review, index) => {\r\n return <li className=\"a4-client-reviews-list-item\" data-aos={isMobileOnly ? undefined : \"fade-up\"} key={index} style={{cursor: \"grab\"}}>\r\n <div className=\"a4-client-reviews-list-item-user\">\r\n <div className=\"a4-client-reviews-list-item-user-avatar\">\r\n {\r\n review.imageUrl &&\r\n <img src={review.imageUrl} height=\"50\" width=\"50\" alt=\"\" />\r\n }\r\n {\r\n !review.imageUrl &&\r\n <Avatar height=\"50\" width=\"50\" />\r\n }\r\n \r\n </div>\r\n <div className=\"a4-client-reviews-list-item-user-info\">\r\n <div className=\"a4-client-reviews-list-item-user-name\">{review.name}</div>\r\n <div className=\"a4-client-reviews-list-item-user-from\">{review.location}</div>\r\n </div>\r\n </div>\r\n <div className=\"a4-client-reviews-list-item-review\">\r\n <p>{review.comment}</p>\r\n </div>\r\n </li>\r\n })\r\n }\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n }\r\n </>\r\n )\r\n }\r\n}\r\n\r\nexport default Reviews;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M1 5L5 9L12.5 1.5\",\n stroke: \"current\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n fill: \"transparent\"\n});\n\nfunction SvgCheckMark(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 14 11\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgCheckMark);\nexport default \"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTQgMTEiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQo8cGF0aCBkPSJNMSA1TDUgOUwxMi41IDEuNSIgc3Ryb2tlPSJjdXJyZW50IiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgZmlsbD0ndHJhbnNwYXJlbnQnLz4NCjwvc3ZnPg0K\";\nexport { ForwardRef as ReactComponent };","import React from 'react'\r\nimport './Subscribe.scss'\r\nimport { isMobileOnly } from 'react-device-detect'\r\n\r\nimport BubbleButton from '../BubbleButton/BubbleButton'\r\nimport { ReactComponent as Error } from '../../../assets/error.svg'\r\nimport { ReactComponent as CheckMark } from '../../../assets/check-mark.svg'\r\n\r\nimport bootstrapService from '../../../services/BootstrapService'\r\nimport formService from '../../../services/FormService'\r\nimport memberService from '../../../services/MemberService'\r\nimport recaptchaService from '../../../services/RecaptchaService'\r\n\r\nclass Subscribe extends React.Component {\r\n // Constructor\r\n constructor(props) {\r\n super(props);\r\n\r\n // Refs\r\n this.form = null;\r\n this.successMessage = null;\r\n\r\n // This Binding\r\n this.submitForm = this.submitForm.bind(this);\r\n }\r\n\r\n // Event Handlers\r\n submitForm(e) {\r\n e.preventDefault();\r\n\r\n const isFormValid = formService.validate(this.form);\r\n\r\n if(!isFormValid) return;\r\n\r\n formService.showLoadingButton(this.form);\r\n\r\n const email = e.target.email.value.trim();\r\n\r\n recaptchaService.getToken(\"subscribe\")\r\n .then(token => {\r\n let subscribeRequirement = {email, recaptchaToken: token};\r\n\r\n memberService.subscribe(subscribeRequirement)\r\n .then((json) => {\r\n if (json.succeeded) {\r\n this.successMessage.classList.add(\"-visible\");\r\n }\r\n else {\r\n formService.hideAllErrors(this.form);\r\n formService.hideLoadingButton(this.form);\r\n formService.showFormError(this.form, json.errors[0]);\r\n }\r\n });\r\n });\r\n }\r\n\r\n // Component\r\n render() {\r\n const subscribeData = bootstrapService.data.landing.sections.find(s => s.name === \"newsletter\");\r\n\r\n const headers = subscribeData ? subscribeData.headers : null;\r\n const body = subscribeData ? subscribeData.body : null;\r\n\r\n return (\r\n <>\r\n {\r\n subscribeData &&\r\n <section className=\"a4-special-offers\">\r\n <div className=\"a4-special-offers-container\">\r\n <div className=\"a4-special-offers-content\">\r\n <div className=\"a4-special-offers-info\">\r\n <div className=\"a4-special-offers-title\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n <h2>{headers[0]} <span className=\"text-primary\">{headers[1]}</span> {headers[2]}</h2>\r\n </div>\r\n <div className=\"a4-special-offers-description\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n <p>{body}</p>\r\n </div>\r\n </div>\r\n <form className=\"a4-special-offers-form\" data-aos={isMobileOnly ? undefined : \"fade-up\"} ref={form => this.form = form} onSubmit={this.submitForm}>\r\n <div className=\"a4-special-offers-form-filler\" aria-hidden={true}></div>\r\n <section className=\"a4-special-offers-form-section\">\r\n <div className=\"a4-input\">\r\n <input name=\"email\" type='email' required placeholder=\"E-mail address\" />\r\n <label htmlFor=\"email\">E-mail address</label>\r\n <span className=\"a4-input-error\">Enter a valid e-mail address</span>\r\n <svg className=\"a4-svgsprite -error text-secondary\">\r\n <Error />\r\n </svg>\r\n </div>\r\n <p className=\"a4-form-error\"></p>\r\n <div className=\"a4-special-offers-form-control\">\r\n <BubbleButton className=\"a4-form-submit -primary\" type=\"submit\" formNoValidate>\r\n <b>Subscribe</b>\r\n </BubbleButton>\r\n </div>\r\n <div className=\"a4-special-offers-sub-anytime\">\r\n <p>You can unsubscribe at any time.</p>\r\n </div>\r\n </section>\r\n <section className=\"a4-special-offers-form-section -success\" ref={section => this.successMessage = section}> \r\n <figure>\r\n <svg className=\"a4-svgsprite text-secondary\">\r\n <CheckMark stroke={bootstrapService.primaryColor} />\r\n </svg>\r\n </figure>\r\n <h3>Thank you!</h3>\r\n <p>Your subscription has been successfully issued.</p>\r\n </section>\r\n </form>\r\n </div>\r\n </div>\r\n </section>\r\n }\r\n </>\r\n )\r\n }\r\n}\r\n\r\nexport default Subscribe;","import React from 'react'\r\nimport './Footer.scss'\r\nimport { Link } from 'react-router-dom'\r\n\r\nimport BubbleButton from '../BubbleButton/BubbleButton'\r\nimport { ReactComponent as Apple } from '../../../assets/apple.svg'\r\nimport { ReactComponent as Google } from '../../../assets/google.svg'\r\n\r\nimport bootstrapService from '../../../services/BootstrapService'\r\n\r\nclass Footer extends React.Component {\r\n // Component\r\n render() {\r\n const siteData = bootstrapService.data.site;\r\n const navs = bootstrapService.data.landing.footers;\r\n\r\n const logo = bootstrapService.data.site.logoLightUrl;\r\n\r\n const defaultPassType = bootstrapService.defaultPlanType;\r\n const defaultStateName = bootstrapService.defaultStateName;\r\n\r\n const siteName = siteData.name;\r\n const phone = siteData.sitePhone;\r\n const fax = siteData.siteFax;\r\n const email = siteData.siteEmail;\r\n const address = siteData.siteAddress.street.concat(\" \", siteData.siteAddress.city, \", \", siteData.siteAddress.state, \" \", siteData.siteAddress.zip);\r\n\r\n const homeData = bootstrapService.data.landing;\r\n const appStoreData = homeData.sections.find(s => s.name === \"appStore\");\r\n const appleUrl = appStoreData ? appStoreData.appleUrl : null;\r\n const googleUrl = appStoreData ? appStoreData.googleUrl : null;\r\n\r\n const ceTerm = bootstrapService.getCETerm();\r\n\r\n const showAddress = bootstrapService.getShowAddress();\r\n\r\n const year = new Date().getFullYear()\r\n\r\n return (\r\n <section className=\"a4-footer\">\r\n <div className=\"a4-footer-container\">\r\n <div className=\"a4-footer-filler\"></div>\r\n <div className=\"a4-footer-content\">\r\n <div className=\"a4-footer-left\">\r\n <div>\r\n <div className=\"a4-footer-logo\">\r\n <img src={logo} alt=\"\" />\r\n </div>\r\n <div className=\"a4-footer-copyright\">© Copyright {year} {siteName}</div>\r\n </div>\r\n <div className=\"a4-footer-app-store\">\r\n {\r\n appleUrl &&\r\n <a href={appleUrl} target=\"_blank\" rel=\"noreferrer\">\r\n <BubbleButton className=\"a4-btn_store -fixed -bordered\">\r\n <div className=\"a4-btn_store-icon\">\r\n <svg className=\"a4-svgsprite -app-store\">\r\n <Apple />\r\n </svg>\r\n </div>\r\n <div className=\"a4-btn_store-text\">Available in <b>App Store</b></div>\r\n </BubbleButton>\r\n </a>\r\n }\r\n {\r\n googleUrl &&\r\n <a href={googleUrl} target=\"_blank\" rel=\"noreferrer\">\r\n <BubbleButton className=\"a4-btn_store -fixed -bordered\">\r\n <div className=\"a4-btn_store-icon\">\r\n <svg className=\"a4-svgsprite -gplay-store\">\r\n <Google />\r\n </svg>\r\n </div>\r\n <div className=\"a4-btn_store-text\">Get it on <b>Google Play</b></div>\r\n </BubbleButton>\r\n </a>\r\n }\r\n </div>\r\n </div>\r\n <div className=\"a4-footer-right\">\r\n <div className=\"a4-footer-list\">\r\n <div className=\"a4-footer-list-title\">\r\n <h4>Company</h4>\r\n <ul>\r\n {\r\n navs.find(n => n === \"approvals\") &&\r\n <li>\r\n <Link to=\"/approvals\">Our Approvals</Link>\r\n </li>\r\n }\r\n {\r\n navs.find(n => n === \"courses\") &&\r\n <li>\r\n {\r\n bootstrapService.singleCourseId &&\r\n <Link to={`/course/${bootstrapService.singleCourseId}`}>The Course</Link>\r\n }\r\n {\r\n !bootstrapService.singleCourseId &&\r\n <Link to=\"/courses\">Our Courses</Link>\r\n }\r\n </li>\r\n }\r\n {\r\n navs.find(n => n === \"pricing\") &&\r\n <li>\r\n <Link to={`/pricing/${defaultPassType}`}>Pricing</Link>\r\n </li>\r\n }\r\n {\r\n navs.find(n => n === \"faq\") &&\r\n <li>\r\n <Link to=\"/faq\">FAQ</Link>\r\n </li>\r\n }\r\n </ul>\r\n </div>\r\n </div>\r\n <div className=\"a4-footer-list\">\r\n <div className=\"a4-footer-list-title\">\r\n <h4>Useful Links</h4>\r\n <ul>\r\n {\r\n navs.find(n => n === \"help-support\") &&\r\n <li>\r\n <Link to=\"/help-and-support\">Help & Support</Link>\r\n </li>\r\n }\r\n {\r\n navs.find(n => n === \"requirements\") &&\r\n <li>\r\n <Link to={`/requirements/${defaultStateName}`}>{ceTerm} Requirements</Link>\r\n </li>\r\n }\r\n {\r\n navs.find(n => n === \"our-sites\") &&\r\n <li>\r\n <Link to=\"/affiliated-sites\">Affiliated Sites</Link>\r\n </li>\r\n }\r\n {\r\n navs.find(n => n === \"terms\") &&\r\n <li>\r\n <Link to=\"/terms-and-conditions\">Terms & Conditions</Link>\r\n </li>\r\n }\r\n {\r\n navs.find(n => n === \"privacy\") &&\r\n <li>\r\n <Link to=\"/privacy-policy\">Privacy Policy</Link>\r\n </li>\r\n }\r\n {\r\n navs.find(n => n === \"refund-policy\") &&\r\n <li>\r\n <Link to=\"/refund-policy\">Refund Policy</Link>\r\n </li>\r\n }\r\n {\r\n navs.find(n => n === \"complaint-resolution-policy\") &&\r\n <li>\r\n <Link to=\"/complaint-resolution-policy\">Complaint Resolution Policy</Link>\r\n </li>\r\n }\r\n </ul>\r\n </div>\r\n </div>\r\n <div className=\"a4-footer-list\">\r\n <div className=\"a4-footer-list-title\">\r\n <h4>Contact</h4>\r\n <ul>\r\n <li className=\"a4-footer-list-item-nowrap\"> \r\n Email: \r\n <a href={`mailto:${email}`} target=\"_blank\" rel=\"noreferrer\"> {email}</a>\r\n </li>\r\n <li> \r\n Phone:\r\n <a href={`tel:${phone}`}> {phone}</a>\r\n </li>\r\n <li> \r\n Fax:\r\n <a href={`fax:${fax}`}> {fax}</a>\r\n </li>\r\n {\r\n showAddress &&\r\n <li>\r\n Address:\r\n <a href={`http://maps.google.com/?q=${address}`} target=\"_blank\" rel=\"noreferrer\">\r\n {address}\r\n </a>\r\n </li>\r\n }\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n )\r\n }\r\n}\r\n\r\nexport default Footer;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n opacity: 0.3,\n d: \"M6 1L2 5L6 9\",\n stroke: \"#D1D4DA\",\n strokeWidth: 2,\n strokeLinecap: \"round\"\n});\n\nfunction SvgChevronLeft(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 7 10\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgChevronLeft);\nexport default \"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgNyAxMCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCjxwYXRoIG9wYWNpdHk9IjAuMyIgZD0iTTYgMUwyIDVMNiA5IiBzdHJva2U9IiNEMUQ0REEiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+DQo8L3N2Zz4NCg==\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M23 23L3 3\",\n vectorEffect: \"non-scaling-stroke\",\n stroke: \"currentColor\",\n strokeWidth: 3,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n});\n\nvar _ref3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M3.00004 23L23 3\",\n vectorEffect: \"non-scaling-stroke\",\n stroke: \"currentColor\",\n strokeWidth: 3,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n});\n\nfunction SvgCancel(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 26 26\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2, _ref3);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgCancel);\nexport default \"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjYgMjYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgPHBhdGggZD0iTTIzIDIzTDMgMyIgdmVjdG9yLWVmZmVjdD0ibm9uLXNjYWxpbmctc3Ryb2tlIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIzIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIC8+DQogICAgPHBhdGggZD0iTTMuMDAwMDQgMjNMMjMgMyIgdmVjdG9yLWVmZmVjdD0ibm9uLXNjYWxpbmctc3Ryb2tlIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIzIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIC8+DQo8L3N2Zz4NCg==\";\nexport { ForwardRef as ReactComponent };","import React from 'react'\r\nimport './GroupsModal.scss'\r\nimport $ from 'jquery'\r\nimport 'select2'\r\n\r\nimport BubbleButton from '../../shared/BubbleButton/BubbleButton'\r\nimport { ReactComponent as BackButton } from '../../../assets/chevron-left.svg'\r\nimport { ReactComponent as Cancel } from '../../../assets/cancel.svg'\r\nimport { ReactComponent as Error } from '../../../assets/error.svg'\r\n\r\nimport formService from '../../../services/FormService'\r\nimport memberService from '../../../services/MemberService'\r\nimport recaptchaService from '../../../services/RecaptchaService'\r\n\r\nclass GroupsModal extends React.Component {\r\n // Constructor\r\n constructor(props) {\r\n super(props);\r\n\r\n // State\r\n this.scrollBarWidth = window.innerWidth - document.documentElement.clientWidth;\r\n\r\n // Refs\r\n this.modal = null;\r\n this.screen1 = null;\r\n this.screen2 = null;\r\n this.screen3 = null;\r\n\r\n // This Binding\r\n this.toggleModal = this.toggleModal.bind(this);\r\n this.showCreateGroup = this.showCreateGroup.bind(this);\r\n this.showJoinGroup = this.showJoinGroup.bind(this);\r\n this.clickCreateGroup = this.clickCreateGroup.bind(this);\r\n this.clickJoinGroup = this.clickJoinGroup.bind(this);\r\n this.clickBack = this.clickBack.bind(this);\r\n }\r\n\r\n // Lifecycle\r\n componentDidMount() {\r\n this.setupSelects();\r\n }\r\n \r\n componentDidUpdate() {\r\n this.setupSelects();\r\n }\r\n\r\n // Helpers\r\n setupSelects() {\r\n $('.a4-select select').select2({\r\n minimumResultsForSearch: -1,\r\n });\r\n\r\n $('.a4-select select').on(\"change\", (e, shouldIgnore) => {\r\n e.stopPropagation();\r\n if (!shouldIgnore) {\r\n const { plan } = e.currentTarget.dataset;\r\n console.log(\"SELECTED \" + plan);\r\n }\r\n });\r\n }\r\n \r\n // Event Handlers\r\n toggleModal(e) {\r\n if (e) e.stopPropagation(); // Prevent toggleModal from firing twice on Cancel\r\n \r\n if (!this.modal.classList.contains(\"-opened\")) {\r\n this.modal.classList.add(\"-opened\");\r\n document.body.classList.add(\"overflow-hidden\");\r\n document.body.style.paddingRight = `${this.scrollBarWidth}px`;\r\n this.screen1.style.display = \"block\";\r\n this.screen2.style.display = \"none\";\r\n this.screen3.style.display = \"none\";\r\n }\r\n else {\r\n this.modal.classList.remove(\"-opened\");\r\n document.body.classList.remove(\"overflow-hidden\");\r\n document.body.style.paddingRight = 0;\r\n this.screen2.style.display = \"none\";\r\n this.screen3.style.display = \"none\";\r\n }\r\n }\r\n\r\n showCreateGroup(e) {\r\n e.stopPropagation();\r\n this.screen1.style.display = \"none\";\r\n this.screen2.style.display = \"block\";\r\n }\r\n\r\n showJoinGroup(e) {\r\n e.stopPropagation();\r\n \r\n formService.clearAllInputs(this.screen3)\r\n formService.hideAllErrors(this.screen3)\r\n\r\n this.screen1.style.display = \"none\";\r\n this.screen3.style.display = \"block\";\r\n }\r\n\r\n clickCreateGroup(e) {\r\n e.stopPropagation();\r\n this.toggleModal();\r\n }\r\n\r\n clickJoinGroup(e) {\r\n e.stopPropagation();\r\n \r\n const isFormValid = formService.validate(this.screen3);\r\n if(!isFormValid) return;\r\n\r\n const groupCode = this.screen3.querySelector(\"input\").value;\r\n\r\n formService.showLoadingButton(this.screen3);\r\n\r\n let joinGroupRequest = { groupCode };\r\n\r\n recaptchaService.getToken(\"joinGroup\")\r\n .then(token => {\r\n joinGroupRequest.recaptchaToken = token;\r\n\r\n memberService.validateJoinGroup(joinGroupRequest)\r\n .then(json => { \r\n if (json.succeeded) {\r\n this.props.goToJoinGroup(groupCode);\r\n }\r\n else {\r\n formService.hideAllErrors(this.screen3);\r\n formService.hideLoadingButton(this.screen3);\r\n if (json.errors[0] === \"Cannot get group\") {\r\n formService.showInputError(this.screen3, \"groupCode\", \"Invalid group code\");\r\n }\r\n else {\r\n formService.showInputError(this.screen3, \"groupCode\", json.errors[0]);\r\n } \r\n }\r\n });\r\n })\r\n }\r\n\r\n clickBack(e) {\r\n e.stopPropagation();\r\n this.screen3.style.display = \"none\";\r\n this.screen2.style.display = \"none\";\r\n this.screen1.style.display = \"block\";\r\n }\r\n\r\n stopPropagation(e) {\r\n e.stopPropagation();\r\n }\r\n\r\n // Component\r\n render() {\r\n return (\r\n <div className=\"a4-modal\" ref={div => this.modal = div} onClick={this.toggleModal}>\r\n <div className=\"a4-modal-content\" onClick={this.stopPropagation}>\r\n <svg className=\"a4-svgsprite -cancel text-secondary\" onClick={this.toggleModal}>\r\n <Cancel />\r\n </svg>\r\n <div className=\"a4-find-plan-modal\">\r\n <div className=\"screen screen-one\" ref={div => this.screen1 = div}>\r\n <header className=\"a4-find-plan-modal-title\">What would you like to do?</header>\r\n <div className=\"a4-find-plan-modal-btn-group\">\r\n <BubbleButton className=\"-primary -new-group\" onClick={this.props.goToCreateGroup}>\r\n Create New Group\r\n </BubbleButton>\r\n <div className=\"button a4-btn -inverted -join-group\" type=\"button\" onClick={this.showJoinGroup}>\r\n Join Existing Group\r\n </div>\r\n </div>\r\n </div>\r\n <div className=\"screen screen-two\" ref={div => this.screen2 = div}>\r\n <svg className=\"a4-svgsprite -back text-secondary\" onClick={this.clickBack}>\r\n <BackButton />\r\n </svg>\r\n <header className=\"a4-find-plan-modal-title\">Create New Group</header>\r\n <div className=\"a4-input\">\r\n <input name=\"users\" placeholder=\"Enter the number of users\" required onClick={this.stopPropagation}/>\r\n <label htmlFor=\"users\">Number of users</label>\r\n <span className=\"a4-input-error\"></span>\r\n <svg className=\"a4-svgsprite -error text-secondary\">\r\n <Error />\r\n </svg>\r\n </div>\r\n <div className=\"a4-select\">\r\n <select defaultValue={\"selected\"} onClick={this.stopPropagation}>\r\n <option value=\"selected\" disabled>Select the group plan</option>\r\n <option plan=\"plan1\">Plan 1</option>\r\n <option plan=\"plan2\">Plan 2</option>\r\n <option plan=\"plan3\">Plan 3</option>\r\n </select>\r\n </div>\r\n <div className=\"a4-find-plan-modal-btn-group\">\r\n <BubbleButton className=\"-primary\" onClick={this.clickCreateGroup}>\r\n Create\r\n </BubbleButton>\r\n </div>\r\n </div>\r\n <div className=\"screen screen-three\" ref={div => this.screen3 = div}>\r\n <svg className=\"a4-svgsprite -back text-secondary\" onClick={this.clickBack}>\r\n <BackButton />\r\n </svg>\r\n <header className=\"a4-find-plan-modal-title\">Please enter your group code</header>\r\n <div className=\"a4-input\">\r\n <input name=\"groupCode\" placeholder=\"Group Code\" required onClick={this.stopPropagation} />\r\n <label htmlFor=\"groupCode\">Group Code</label>\r\n <span className=\"a4-input-error\">Enter a valid code</span>\r\n <svg className=\"a4-svgsprite -error text-secondary\">\r\n <Error />\r\n </svg>\r\n </div>\r\n <div className=\"a4-find-plan-modal-btn-group\">\r\n <BubbleButton className=\"a4-form-submit -primary\" onClick={this.clickJoinGroup}>\r\n Join\r\n </BubbleButton>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n )\r\n }\r\n}\r\n\r\nexport default GroupsModal;\r\n","import React from 'react'\r\nimport {ReactTitle} from 'react-meta-tags'\r\nimport './Home.scss'\r\n\r\nimport Navbar from '../shared/Navbar/Navbar'\r\nimport Exposition from './Exposition/Exposition'\r\nimport List from './List/List'\r\nimport CourseItem from './List/Items/CourseItem'\r\nimport HowItWorksItem from './List/Items/HowItWorksItem'\r\nimport WhyUsItem from './List/Items/WhyUsItem'\r\nimport SingleCourse from './SingleCourse/SingleCourse'\r\nimport AppStore from './AppStore/AppStore'\r\nimport Spacer from './Spacer/Spacer'\r\nimport TryForFree from './TryForFree/TryForFree'\r\nimport Plans from './Plans/Plans'\r\nimport Reviews from '../shared/Reviews/Reviews'\r\nimport Subscribe from '../shared/Subscribe/Subscribe'\r\nimport Footer from '../shared/Footer/Footer'\r\nimport GroupsModal from './GroupsModal/GroupsModal'\r\n\r\nimport bootstrapService from '../../services/BootstrapService'\r\n\r\nclass Home extends React.Component {\r\n // Constructor\r\n constructor(props) {\r\n super(props);\r\n\r\n // Refs\r\n this.navbar = null;\r\n this.groupPlanModal = null;\r\n this.tryForFreeSection = null;\r\n\r\n // This Binding\r\n this.clickTryForFree = this.clickTryForFree.bind(this);\r\n this.toggleGroupPlanModal = this.toggleGroupPlanModal.bind(this);\r\n this.goToCreateGroup = this.goToCreateGroup.bind(this);\r\n this.goToJoinGroup = this.goToJoinGroup.bind(this);\r\n }\r\n\r\n // Lifecycle\r\n componentDidMount() {\r\n this.setupScroll();\r\n }\r\n\r\n // Helpers\r\n setupScroll() {\r\n if (this.props.location.state && this.props.location.state.tryForFree) {\r\n setTimeout(() => {\r\n if (this.tryForFreeSection) {\r\n this.tryForFreeSection.scrollIntoView({ behavior: 'smooth', block: 'start' });\r\n }\r\n }, 300);\r\n }\r\n else {\r\n window.scrollTo(0, 0);\r\n }\r\n }\r\n\r\n // Event Handlers\r\n clickTryForFree() {\r\n this.tryForFreeSection.scrollIntoView({ behavior: 'smooth', block: 'start' });\r\n }\r\n\r\n toggleGroupPlanModal() {\r\n this.groupPlanModal.toggleModal();\r\n this.navbar.toggleOverflowForModal();\r\n }\r\n\r\n goToCreateGroup(e) {\r\n this.toggleGroupPlanModal();\r\n this.props.history.push(\"/pricing/group-plans\");\r\n }\r\n\r\n goToJoinGroup(groupCode) {\r\n this.toggleGroupPlanModal();\r\n this.props.history.push(`/register/${groupCode}`);\r\n }\r\n\r\n // Component\r\n render() {\r\n const homeData = bootstrapService.data.landing;\r\n\r\n const heroData = homeData.sections.find(s => s.name === \"intro\");\r\n const approvalsData = homeData.sections.find(s => s.name === \"approvals\");\r\n const coursesData = homeData.sections.find(s => s.name === \"catalog\");\r\n const appStoreData = homeData.sections.find(s => s.name === \"appStore\");\r\n const spacer1Data = homeData.sections.find(s => s.name === \"spacer1\");\r\n const howItWorksData = homeData.sections.find(s => s.name === \"works\");\r\n const tryForFreeData = homeData.sections.find(s => s.name === \"tryForFree\");\r\n const spacer2Data = homeData.sections.find(s => s.name === \"spacer2\");\r\n const whyUsData = homeData.sections.find(s => s.name === \"features\");\r\n const plansData = homeData.sections.find(s => s.name === \"plans\");\r\n\r\n const title = bootstrapService.data.site.siteEmailFromName;\r\n\r\n return (\r\n <>\r\n <ReactTitle title={title} />\r\n\r\n <Navbar ref={navbar => this.navbar = navbar} clickTry={this.clickTryForFree} />\r\n <div className=\"a4-view\">\r\n <div className=\"a4-layout a4-home\">\r\n <div className=\"a4-home-content\">\r\n {\r\n heroData && <Exposition data={heroData} type=\"hero\" highlighted={true} />\r\n }\r\n {\r\n approvalsData && <Exposition data={approvalsData} type=\"approvals\" />\r\n }\r\n {\r\n coursesData && coursesData.courses.length > 1 &&\r\n <List data={coursesData} type=\"courses\" highlighted={true}>\r\n {\r\n coursesData.courses.map((course, index) => {\r\n return <CourseItem data={course} key={index} />\r\n })\r\n }\r\n </List>\r\n }\r\n {\r\n coursesData && coursesData.courses.length === 1 &&\r\n <SingleCourse data={coursesData} course={coursesData.courses[0]}/>\r\n }\r\n {\r\n appStoreData && <AppStore data={appStoreData} />\r\n }\r\n {\r\n spacer1Data && <Spacer data={spacer1Data} type=\"one\" backgroundColor=\"primary_light\" />\r\n }\r\n {\r\n howItWorksData &&\r\n <List data={howItWorksData} type=\"howItWorks\">\r\n {\r\n howItWorksData.works.map((work, index) => {\r\n return <HowItWorksItem data={work} key={index} />\r\n })\r\n }\r\n </List>\r\n }\r\n {\r\n tryForFreeData && <TryForFree data={tryForFreeData} ref={section => this.tryForFreeSection = section} />\r\n }\r\n {\r\n spacer2Data && <Spacer data={spacer2Data} type=\"two\" backgroundColor=\"primary_light\" />\r\n }\r\n {\r\n whyUsData &&\r\n <List data={whyUsData} type=\"whyUs\">\r\n {\r\n whyUsData.features.map((feature, index) => {\r\n return <WhyUsItem data={feature} key={index} />\r\n })\r\n }\r\n </List>\r\n }\r\n {\r\n plansData && <Plans data={plansData} openGroupPlanModal={this.toggleGroupPlanModal} />\r\n }\r\n <Reviews />\r\n <Subscribe />\r\n <Footer />\r\n </div>\r\n </div>\r\n </div>\r\n <GroupsModal ref={modal => this.groupPlanModal = modal} goToCreateGroup={this.goToCreateGroup} goToJoinGroup={this.goToJoinGroup}/>\r\n </>\r\n )\r\n }\r\n}\r\n\r\nexport default Home;","import React from 'react'\r\nimport './Approvals.scss'\r\nimport { Link } from 'react-router-dom'\r\nimport { isMobileOnly } from 'react-device-detect'\r\n\r\nimport Navbar from '../shared/Navbar/Navbar'\r\nimport Subscribe from '../shared/Subscribe/Subscribe'\r\nimport Footer from '../shared/Footer/Footer'\r\nimport courseImage from '../../assets/course-plug.svg'\r\n\r\nimport bootstrapService from '../../services/BootstrapService'\r\n\r\nclass Approvals extends React.Component {\r\n // Lifecycle\r\n componentDidMount() {\r\n window.scrollTo(0, 0);\r\n }\r\n\r\n // Component\r\n render() {\r\n const approvalsData = bootstrapService.data.landing.pages.find(p => p.name === \"approvals\");\r\n\r\n const header = approvalsData ? approvalsData.header : null;\r\n const imageUrl = approvalsData ? approvalsData.imageUrl : null;\r\n const orgApprovals = approvalsData ? approvalsData.organizationApprovals : null;\r\n const courseApprovals = approvalsData ? approvalsData.courseApprovals : null;\r\n\r\n return (\r\n <>\r\n {\r\n approvalsData &&\r\n <>\r\n <Navbar activeLink=\"approvals\" />\r\n <div className=\"a4-view\">\r\n <div className=\"a4-layout a4-approvals\">\r\n <div className=\"a4-approvals-container\">\r\n <section className=\"a4-approvals-main\">\r\n <div className=\"a4-approvals-main-container\">\r\n <div className=\"a4-approvals-main-content\">\r\n <div className=\"a4-approvals-main-illustration\" data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-delay=\"0\" data-aos-anchor-placement=\"top-bottom\">\r\n <img src={imageUrl} alt=\"\" />\r\n </div>\r\n <div className=\"a4-approvals-main-title\" data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-delay=\"100\" data-aos-anchor-placement=\"top-bottom\">\r\n <h1>{header}</h1>\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n <section className=\"a4-approvals-app-and-acc\">\r\n <div className=\"a4-approvals-app-and-acc-container\">\r\n <div className=\"a4-approvals-app-and-acc-content\">\r\n {\r\n orgApprovals && orgApprovals.length > 0 &&\r\n <div className=\"a4-approvals-app-and-acc-topic\">\r\n <div className=\"a4-approvals-app-and-acc-topic-title\" data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-delay=\"0\" data-aos-anchor-placement=\"top-bottom\">\r\n <h2>Approvals & Accreditations</h2>\r\n </div>\r\n <section className=\"a4-approvals-list\">\r\n {\r\n orgApprovals.map((approval, index) => {\r\n return <a href={approval.url} target=\"_blank\" rel=\"noreferrer\" className=\"a4-approvals-list-item -highlighted\" key={index}>\r\n <div className=\"a4-approvals-list-item-image\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n <img src={approval.imageUrl ? approval.imageUrl : courseImage} alt=\"\" />\r\n </div>\r\n <div className=\"a4-approvals-list-item-block\">\r\n <div className=\"a4-approvals-list-item-block-title\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n <h3>{approval.header}</h3>\r\n </div>\r\n <div className=\"a4-approvals-list-item-block-description\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n <p dangerouslySetInnerHTML={{ __html: approval.body}}></p>\r\n </div>\r\n </div>\r\n </a>\r\n })\r\n }\r\n </section>\r\n </div>\r\n }\r\n {\r\n courseApprovals && courseApprovals.length > 0 &&\r\n <div className=\"a4-approvals-app-and-acc-topic\">\r\n <div className=\"a4-approvals-app-and-acc-topic-title\" data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-delay=\"0\" data-aos-anchor-placement=\"top-bottom\">\r\n <h2>Course Specific Approvals</h2>\r\n </div>\r\n <section className=\"a4-approvals-list\">\r\n {\r\n courseApprovals.map((approval, index) => {\r\n return <a href={approval.url} target=\"_blank\" rel=\"noreferrer\" className=\"a4-approvals-list-item -highlighted\" key={index}>\r\n <div className=\"a4-approvals-list-item-image\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n <img src={approval.imageUrl ? approval.imageUrl : courseImage} alt=\"\" />\r\n </div>\r\n <div className=\"a4-approvals-list-item-block\">\r\n <div className=\"a4-approvals-list-item-block-title\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n <h3>{approval.header}</h3>\r\n </div>\r\n <div data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n <div className=\"a4-approvals-list-item-block-description\">\r\n <p dangerouslySetInnerHTML={{ __html: approval.body}}></p>\r\n </div>\r\n <div className=\"a4-approvals-list-item-block-control\">\r\n <Link to={`/course/${approval.features.find(f => f.name === \"courseId\").value}`}>\r\n <span className=\"text-primary\">Course Details</span>\r\n </Link>\r\n </div>\r\n </div>\r\n </div>\r\n </a>\r\n })\r\n }\r\n </section>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n </section>\r\n </div>\r\n <Subscribe />\r\n <Footer />\r\n </div>\r\n </div>\r\n </>\r\n } \r\n </>\r\n )\r\n }\r\n}\r\n\r\nexport default Approvals;","export function debounce(func, wait, immediate) {\r\n var timeout;\r\n\r\n return function executedFunction() {\r\n var context = this;\r\n var args = arguments;\r\n\r\n var later = function () {\r\n timeout = null;\r\n if (!immediate) {\r\n func.apply(context, args);\r\n }\r\n };\r\n\r\n var callNow = immediate && !timeout;\r\n\r\n clearTimeout(timeout);\r\n\r\n timeout = setTimeout(later, wait);\r\n\r\n if (callNow) {\r\n func.apply(context, args);\r\n }\r\n };\r\n};","import { v4 as uuid } from 'uuid';\r\n\r\nexport function getKey() {\r\n return uuid();\r\n}","import React from 'react'\r\nimport './Pages.scss'\r\n\r\nimport { withStyles } from \"@material-ui/core/styles\";\r\nimport Pagination from '@material-ui/lab/Pagination';\r\n\r\nconst styles = theme => ({\r\n root: {\r\n \"& .Mui-selected\": {\r\n color: \"white\",\r\n backgroundColor: \"var(--primary)\",\r\n },\r\n \"& .MuiPaginationItem-root:hover\": {\r\n color: \"black\",\r\n backgroundColor: \"#F8F9FA\",\r\n }\r\n }\r\n});\r\n\r\nclass Pages extends React.Component {\r\n // Component\r\n render() {\r\n return (\r\n <div className=\"a4-pagination\">\r\n <Pagination {...this.props} />\r\n </div>\r\n )\r\n }\r\n}\r\n\r\nexport default withStyles(styles)(Pages);","import React from 'react'\r\nimport './Empty.scss'\r\nimport { withRouter } from 'react-router-dom'\r\nimport { isMobileOnly } from 'react-device-detect'\r\n\r\nimport bootstrapService from '../../../services/BootstrapService'\r\n\r\nclass Empty extends React.Component {\r\n render() {\r\n const emptyTitle = this.props.location.state ? this.props.location.state.title : \"No courses matched your search\";\r\n const emptyImg = bootstrapService.data ? bootstrapService.data.site.noResultsImageUrl : \"\";\r\n\r\n return (\r\n <div className=\"a4-empty\">\r\n <div className=\"a4-empty-exposition\">\r\n <div className=\"a4-empty-exposition-container\">\r\n <div className={`a4-empty-exposition-content -${this.props.name}`}>\r\n <div className=\"a4-empty-exposition-info\">\r\n <h1 className=\"a4-empty-exposition-title\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>{emptyTitle}</h1>\r\n </div>\r\n <div className=\"a4-empty-exposition-illustration\">\r\n <img src={emptyImg} data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-easing=\"ease-out-quad\" alt=\"\" />\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n )\r\n }\r\n}\r\n\r\nexport default withRouter(Empty);","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"line\", {\n x1: 0.5,\n y1: 0.5,\n x2: 10.5,\n y2: 0.5,\n stroke: \"#A3A9B6\",\n strokeLinecap: \"round\"\n});\n\nvar _ref3 = /*#__PURE__*/React.createElement(\"line\", {\n x1: 1.96655,\n y1: 4.5,\n x2: 9.03322,\n y2: 4.5,\n stroke: \"#A3A9B6\",\n strokeLinecap: \"round\"\n});\n\nvar _ref4 = /*#__PURE__*/React.createElement(\"line\", {\n x1: 3.43335,\n y1: 8.5,\n x2: 7.56668,\n y2: 8.5,\n stroke: \"#A3A9B6\",\n strokeLinecap: \"round\"\n});\n\nfunction SvgFilterBars(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 11 9\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2, _ref3, _ref4);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgFilterBars);\nexport default \"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTEgOSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCjxsaW5lIHgxPSIwLjUiIHkxPSIwLjUiIHgyPSIxMC41IiB5Mj0iMC41IiBzdHJva2U9IiNBM0E5QjYiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPg0KPGxpbmUgeDE9IjEuOTY2NTUiIHkxPSI0LjUiIHgyPSI5LjAzMzIyIiB5Mj0iNC41IiBzdHJva2U9IiNBM0E5QjYiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPg0KPGxpbmUgeDE9IjMuNDMzMzUiIHkxPSI4LjUiIHgyPSI3LjU2NjY4IiB5Mj0iOC41IiBzdHJva2U9IiNBM0E5QjYiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPg0KPC9zdmc+DQo=\";\nexport { ForwardRef as ReactComponent };","import React from 'react'\r\nimport './Courses.scss'\r\nimport { Link } from 'react-router-dom'\r\nimport $ from 'jquery'\r\nimport 'select2'\r\nimport { debounce } from '../../utils/debounce'\r\nimport { getKey } from '../../utils/key'\r\nimport { isMobileOnly } from 'react-device-detect'\r\n\r\nimport Navbar from '../shared/Navbar/Navbar'\r\nimport Pages from '../shared/Pages/Pages'\r\nimport Empty from '../shared/Empty/Empty'\r\nimport Subscribe from '../shared/Subscribe/Subscribe'\r\nimport Footer from '../shared/Footer/Footer'\r\nimport placeholderImage from '../../assets/course-plug.svg'\r\nimport { ReactComponent as FilterBars } from '../../assets/filter-bars.svg'\r\nimport { ReactComponent as Error } from '../../assets/error.svg'\r\nimport { ReactComponent as Cancel } from '../../assets/cancel.svg'\r\n\r\nimport bootstrapService from '../../services/BootstrapService'\r\n\r\nclass Courses extends React.Component {\r\n // Constructor\r\n constructor(props) {\r\n super(props);\r\n\r\n // Refs\r\n this.filterMenu = null;\r\n this.mobileFilterMenu = null;\r\n this.mobileSubmitButton = null;\r\n this.coursesList = null;\r\n\r\n // State\r\n this.state = {\r\n categoryFilter: null,\r\n searchFilter: null,\r\n sortFilter: null,\r\n pageNumber: 0,\r\n }\r\n\r\n // This Binding\r\n this.openMobileFilterMenu = this.openMobileFilterMenu.bind(this);\r\n this.closeMobileFilterMenu = this.closeMobileFilterMenu.bind(this);\r\n this.clickMobileFilterItem = this.clickMobileFilterItem.bind(this);\r\n this.clickMobileSubmit = this.clickMobileSubmit.bind(this);\r\n this.changeCoursesPage = this.changeCoursesPage.bind(this);\r\n this.searchCourses = debounce(this.searchCourses.bind(this), 400);\r\n this.searchCoursesMobile = debounce(this.searchCoursesMobile.bind(this), 400);\r\n }\r\n\r\n // Lifecyle\r\n componentDidMount() {\r\n window.scrollTo(0, 0);\r\n this.setupSelects();\r\n }\r\n\r\n componentDidUpdate() {\r\n this.updateSelects();\r\n }\r\n\r\n // Helpers\r\n setupSelects() {\r\n $('.a4-select select').select2({\r\n minimumResultsForSearch: -1,\r\n });\r\n\r\n $('.a4-select select').on(\"change\", (e, shouldIgnore) => {\r\n if (!shouldIgnore) {\r\n const { filterType } = e.currentTarget.dataset;\r\n this.setMobileFilterActive(filterType, e.currentTarget.value);\r\n\r\n if (filterType === \"category\") {\r\n this.filterCourses(e.currentTarget.value)\r\n }\r\n else if (filterType === \"sort\") {\r\n this.sortCourses(e.currentTarget.value)\r\n }\r\n }\r\n });\r\n }\r\n\r\n updateSelects() {\r\n if (!$('.a4-select select').first().hasClass(\"select2-hidden-accessible\")) {\r\n this.setupSelects();\r\n }\r\n }\r\n\r\n setMobileFilterActive(filterType, filterValue) {\r\n const filter = $(this.mobileFilterMenu).find(`.a4-mobile-filter-items-item[data-filter-type='${filterType}'][data-value='${filterValue}']`);\r\n filter.addClass(\"-active\");\r\n filter.siblings(\".-active\").removeClass(\"-active\");\r\n\r\n const select = $(this.filterMenu).find(`select[data-filter-type='${filterType}']`);\r\n select.val(filter.data().value);\r\n select.trigger(\"change\", true);\r\n }\r\n\r\n filterCourses(filterOption) {\r\n this.enableMobileSpinner();\r\n this.setState({\r\n categoryFilter: filterOption !== \"\" ? filterOption : null,\r\n pageNumber: 0,\r\n }, this.disableMobileSpinner())\r\n }\r\n\r\n sortCourses(sortOption) {\r\n this.enableMobileSpinner();\r\n this.setState({\r\n sortFilter: sortOption,\r\n pageNumber: 0,\r\n }, this.disableMobileSpinner())\r\n }\r\n\r\n enableMobileSpinner() {\r\n this.mobileSubmitButton.setAttribute(\"disabled\", true);\r\n this.mobileSubmitButton.classList.add(\"-loading\");\r\n }\r\n\r\n disableMobileSpinner() {\r\n if (this.mobileSubmitButton) {\r\n this.mobileSubmitButton.removeAttribute(\"disabled\");\r\n this.mobileSubmitButton.classList.remove(\"-loading\");\r\n }\r\n }\r\n\r\n // Event Handlers\r\n openMobileFilterMenu() {\r\n document.body.classList.add(\"overflow-hidden\");\r\n this.mobileFilterMenu.classList.add(\"-open\");\r\n this.disableMobileSpinner();\r\n }\r\n\r\n closeMobileFilterMenu() {\r\n document.body.classList.remove(\"overflow-hidden\");\r\n this.mobileFilterMenu.classList.remove(\"-open\");\r\n }\r\n\r\n clickMobileFilterItem(e) {\r\n this.enableMobileSpinner();\r\n\r\n const { filterType, value } = e.currentTarget.dataset;\r\n this.setMobileFilterActive(filterType, value);\r\n\r\n setTimeout((filterType, value) => {\r\n if (filterType === \"category\") {\r\n this.filterCourses(value);\r\n }\r\n else if (filterType === \"sort\") {\r\n this.sortCourses(value);\r\n }\r\n }, 1000, filterType, value);\r\n }\r\n\r\n clickMobileSubmit() {\r\n this.closeMobileFilterMenu();\r\n }\r\n\r\n searchCourses(e) {\r\n $(this.mobileFilterMenu).find(\".a4-input\").find(\"input\").val(e.target.value)\r\n this.setState({\r\n searchFilter: e.target.value !== \"\" ? e.target.value.toLowerCase() : null,\r\n pageNumber: 0,\r\n });\r\n }\r\n\r\n searchCoursesMobile(e) {\r\n this.enableMobileSpinner();\r\n $(this.filterMenu).find(\".a4-input\").find(\"input\").val(e.target.value)\r\n\r\n setTimeout(() => {\r\n this.setState({\r\n searchFilter: e.target.value !== \"\" ? e.target.value.toLowerCase() : null,\r\n pageNumber: 0,\r\n }, this.disableMobileSpinner());\r\n }, 600);\r\n }\r\n\r\n changeCoursesPage(e, page) {\r\n window.scrollTo(0, 0);\r\n this.setState({ pageNumber: page - 1 });\r\n }\r\n\r\n // Data\r\n getCourses() {\r\n const allCourses = bootstrapService.data ? bootstrapService.data.courseCatalog.courses : null;\r\n let courses = allCourses;\r\n\r\n if (courses && this.state.categoryFilter) {\r\n courses = courses.filter(c => c.subjectArea.replace(/\\s+/g, \"-\").trim().toLowerCase() === this.state.categoryFilter)\r\n }\r\n\r\n if (courses && this.state.searchFilter) {\r\n courses = courses.filter(c => c.title.toLowerCase().search(this.state.searchFilter) > -1)\r\n }\r\n\r\n if (courses && this.state.sortFilter) {\r\n if (this.state.sortFilter === \"default\") {\r\n courses = courses.sort(function (a, b) {\r\n //sort by course.order (first)\r\n let aval = typeof a.order !== 'undefined' ? a.order : null;\r\n let bval = typeof b.order !== 'undefined' ? b.order : null;\r\n if (aval === bval) {\r\n //sort by course.title (second, when order is same)\r\n if (a.title === b.title) {\r\n return 0;\r\n }\r\n return a.title < b.title ? -1 : 1;\r\n }\r\n return aval > bval ? -1 : 1;\r\n })\r\n }\r\n else if (this.state.sortFilter === \"title\") {\r\n courses = courses.sort(function (a, b) {\r\n if (a.title === b.title) {\r\n return 0;\r\n }\r\n return a.title < b.title ? -1 : 1;\r\n })\r\n }\r\n else if (this.state.sortFilter === \"credits\") {\r\n courses = courses.sort(function (a, b) {\r\n //sort by course.credits (first)\r\n if (a.credits === b.credits) {\r\n //sort by course.title (second, when order is same)\r\n if (a.title === b.title) {\r\n return 0;\r\n }\r\n return a.title < b.title ? -1 : 1;\r\n }\r\n return a.credits < b.credits ? -1 : 1;\r\n })\r\n }\r\n else if (this.state.sortFilter === \"release-date\") {\r\n courses = courses.sort(function (a, b) {\r\n if (a.releaseDate === b.releaseDate) {\r\n return 0;\r\n }\r\n return a.releaseDate > b.releaseDate ? -1 : 1;\r\n })\r\n }\r\n else {\r\n console.log(\"INVALID SORT OPTION\")\r\n }\r\n }\r\n\r\n return courses\r\n }\r\n\r\n // Component\r\n render() {\r\n const coursesData = bootstrapService.data.landing.pages.find(p => p.name === \"course-catalog\");\r\n\r\n const header = coursesData ? coursesData.header : null;\r\n const categoryFilters = coursesData ? coursesData.subjectAreaFilters : null;\r\n const sortOptions = coursesData ? coursesData.sortOptions : null;\r\n\r\n const courses = this.getCourses();\r\n const pagedCourses = courses ? courses.slice(10 * this.state.pageNumber, 10 * this.state.pageNumber + 10) : null;\r\n\r\n const renderKey = getKey();\r\n\r\n const showReleaseDate = bootstrapService.getShowReleaseDate();\r\n\r\n return (\r\n <>\r\n {\r\n coursesData &&\r\n <>\r\n <Navbar backgroundColor=\"-primary-light\" activeLink=\"courses\" />\r\n <div className=\"a4-view\">\r\n <div className=\"a4-layout a4-course-catalog\">\r\n <section className=\"a4-course-catalog-title\">\r\n <div className=\"a4-course-catalog-container\" data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-delay=\"50\" data-aos-anchor-placement=\"top-bottom\">\r\n <h1>{header}</h1>\r\n </div>\r\n </section>\r\n <section className=\"a4-course-catalog-filter-panel\">\r\n <div className=\"a4-course-catalog-filter-panel-container\">\r\n <div className=\"a4-course-catalog-filter-panel-content\" data-aos={isMobileOnly ? undefined : \"fade-up\"} ref={div => this.filterMenu = div}>\r\n <div className=\"a4-course-catalog-filter-panel-section-1 md_hidden\">\r\n <button className=\"a4-btn\" id=\"filter-menu-btn\" onClick={this.openMobileFilterMenu}>\r\n <i>\r\n <svg className=\"a4-svgsprite\">\r\n <FilterBars stroke={bootstrapService.secondaryColor} />\r\n </svg>\r\n </i>\r\n <span>\r\n Browse\r\n </span>\r\n </button>\r\n </div>\r\n <div className=\"a4-course-catalog-filter-panel-section-2\">\r\n {\r\n categoryFilters && categoryFilters.length > 0 &&\r\n <div className=\"filter-item\" id=\"category-filter\">\r\n <div className=\"a4-select\">\r\n <select data-filter-type=\"category\">\r\n <option value=''>All Categories</option>\r\n {\r\n categoryFilters.map((filter, index) => {\r\n return <option value={filter.replace(/\\s+/g, \"-\").trim().toLowerCase()} key={index}>{filter}</option>\r\n })\r\n }\r\n </select>\r\n </div>\r\n </div>\r\n }\r\n <div className=\"a4-input -search filter-item\">\r\n <input required placeholder=\"Search\" onChange={this.searchCourses} />\r\n <label>Search</label>\r\n <span className=\"a4-input-error\"></span>\r\n <svg className=\"a4-svgsprite -error text-secondary\">\r\n <Error />\r\n </svg>\r\n </div>\r\n </div>\r\n <div className=\"a4-course-catalog-filter-panel-section-3\">\r\n {\r\n sortOptions && sortOptions.length > 0 &&\r\n <>\r\n <div className=\"a4-course-catalog-filter-panel-section-title\">\r\n <h4>Sort</h4>\r\n </div>\r\n <div id=\"sort-filter\">\r\n <div className=\"a4-select\">\r\n <select data-filter-type=\"sort\">\r\n <option value='default'>Default</option>\r\n {\r\n sortOptions.map((option, index) => {\r\n return <option value={option.replace(/\\s+/g, \"-\").trim().toLowerCase()} key={index}>{option === \"Credits\" ? bootstrapService.getCreditsTerm(2.0) : option}</option>\r\n })\r\n }\r\n </select>\r\n </div>\r\n </div>\r\n </>\r\n }\r\n </div>\r\n </div>\r\n <div className=\"a4-mobile-filter-menu\" ref={div => this.mobileFilterMenu = div}>\r\n <div className=\"a4-mobile-filter-container\">\r\n <div className=\"a4-mobile-filter-content\">\r\n <div className=\"a4-mobile-filter-top\">\r\n <div className=\"a4-mobile-filter-title\">\r\n <h4>Browse</h4>\r\n </div>\r\n <div className=\"a4-mobile-filter-cancel\" onClick={this.closeMobileFilterMenu}>\r\n <svg className=\"a4-svgsprite -cancel\">\r\n <Cancel />\r\n </svg>\r\n </div>\r\n </div>\r\n <div className=\"a4-mobile-filter-search\">\r\n <div className=\"a4-input -search filter-item\">\r\n <input required placeholder=\"Search\" onChange={this.searchCoursesMobile} />\r\n <label>Search</label>\r\n <span className=\"a4-input-error\"></span>\r\n <svg className=\"a4-svgsprite -error text-secondary\">\r\n <Error />\r\n </svg>\r\n </div>\r\n </div>\r\n <div className=\"a4-mobile-filter-list\">\r\n {\r\n categoryFilters && categoryFilters.length > 0 &&\r\n <>\r\n <div className=\"a4-mobile-filter-list-title\">\r\n <h4>Category</h4>\r\n </div>\r\n <ul className=\"a4-mobile-filter-items\">\r\n <li className=\"a4-mobile-filter-items-item -active\" data-filter-type=\"category\" data-value=\"\" key={0} onClick={this.clickMobileFilterItem}>\r\n <span>All Categories</span>\r\n </li>\r\n {\r\n categoryFilters && categoryFilters.length > 0 && categoryFilters.map((filter, index) => {\r\n return <li className=\"a4-mobile-filter-items-item\" data-filter-type=\"category\" data-value={filter.replace(/\\s+/g, \"-\").trim().toLowerCase()} key={index + 1} onClick={this.clickMobileFilterItem}>\r\n <span>{filter}</span>\r\n </li>\r\n })\r\n }\r\n </ul>\r\n </>\r\n }\r\n </div>\r\n <div className=\"a4-mobile-filter-list\">\r\n {\r\n sortOptions && sortOptions.length > 0 &&\r\n <>\r\n <div className=\"a4-mobile-filter-list-title\">\r\n <h4>Sort</h4>\r\n </div>\r\n <ul className=\"a4-mobile-filter-items\">\r\n <li className=\"a4-mobile-filter-items-item -active\" data-filter-type=\"sort\" data-value=\"default\" key={0} onClick={this.clickMobileFilterItem}>\r\n <span>Default</span>\r\n </li>\r\n {\r\n sortOptions && sortOptions.length > 0 && sortOptions.map((option, index) => {\r\n return <li className=\"a4-mobile-filter-items-item\" data-filter-type=\"sort\" data-value={option.replace(/\\s+/g, \"-\").trim().toLowerCase()} key={index + 1} onClick={this.clickMobileFilterItem}>\r\n <span>{option === \"Credits\" ? bootstrapService.getCreditsTerm(2.0) : option}</span>\r\n </li>\r\n })\r\n }\r\n </ul>\r\n </>\r\n }\r\n </div>\r\n </div>\r\n <div className=\"a4-mobile-filter-control\">\r\n <button className=\"a4-btn -primary\" ref={button => this.mobileSubmitButton = button} onClick={this.clickMobileSubmit}>\r\n Show \r\n <span className=\"a4-mobile-filter-control-course-count\">{courses ? courses.length : 0} courses</span>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n <section className=\"a4-course-catalog-list\" key={renderKey}>\r\n <div className=\"a4-course-catalog-list-container\">\r\n <div className=\"a4-course-catalog-list-content\">\r\n <ul className=\"a4-course-catalog-list-items\" ref={ul => this.coursesList = ul}>\r\n {\r\n pagedCourses &&\r\n pagedCourses.map((course, index) => {\r\n const description = course.description ? course.description.substring(0, 220).split(\" \").slice(0, -1).join(\" \") + \"...\" : \"...\";\r\n\r\n return <li key={index}>\r\n <Link to={`/course/${course.id}`} className=\"a4-course-catalog-list-items-item\">\r\n {\r\n course.imageUrl &&\r\n <div className=\"a4-course-catalog-list-items-item-image\" data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-offset=\"-1\">\r\n <img src={course.imageUrl ? course.imageUrl : placeholderImage} alt=\"\" />\r\n </div>\r\n }\r\n <div className=\"a4-course-catalog-list-items-item-details\">\r\n <div className=\"a4-course-catalog-list-items-item-title\" data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-offset=\"-1\">\r\n <h4>{course.title}</h4>\r\n </div>\r\n <div className=\"a4-course-catalog-list-items-item-info\" data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-offset=\"-1\">\r\n <div className=\"a4-course-catalog-list-items-item-info-item\">\r\n <div className=\"a4-course-catalog-list-items-item-info-label\">{bootstrapService.getCreditsTerm(2)}:</div>\r\n <span>{course.credits.toFixed(1)}</span>\r\n </div>\r\n <div className=\"a4-course-catalog-list-items-item-info-item -right\">\r\n {\r\n showReleaseDate && course.releaseDate &&\r\n <>\r\n <div className=\"a4-course-catalog-list-items-item-info-label\">Publish Date:</div>\r\n <span>{new Date(course.releaseDate).toLocaleDateString(\"en-US\", {month: 'short', year: 'numeric'})}</span>\r\n </>\r\n }\r\n {\r\n !showReleaseDate &&\r\n <>\r\n <div className=\"a4-course-catalog-list-items-item-info-label\">Delivery Method:</div>\r\n <span>{course.deliveryMethod}</span>\r\n </>\r\n }\r\n </div>\r\n {\r\n !showReleaseDate && course.schedules && course.schedules[0] &&\r\n <div className=\"a4-course-catalog-list-items-item-info-item -right\">\r\n <div className=\"a4-course-catalog-list-items-item-info-label\">Next Session:</div>\r\n <span>{new Date(course.schedules[0].startDate).toLocaleDateString(\"en-US\", {month: 'short', day: 'numeric'})}</span>\r\n </div>\r\n }\r\n </div>\r\n <div className=\"a4-course-catalog-list-items-item-container\" data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-offset=\"-1\">\r\n <div className=\"a4-course-catalog-list-items-item-description\">\r\n {description}\r\n </div>\r\n <div className=\"a4-course-catalog-list-items-item-control\">\r\n <span>Learn More</span>\r\n </div>\r\n </div>\r\n \r\n </div>\r\n </Link>\r\n </li>\r\n })\r\n }\r\n </ul>\r\n {\r\n courses && courses.length > 10 &&\r\n <Pages count={Math.ceil(courses.length / 10)} page={this.state.pageNumber + 1} size=\"large\" onChange={this.changeCoursesPage} />\r\n }\r\n {\r\n (this.state.categoryFilter || this.state.searchFilter) && courses.length === 0 &&\r\n <Empty name=\"courses\"/>\r\n }\r\n </div>\r\n </div>\r\n </section>\r\n <Subscribe />\r\n <Footer />\r\n </div>\r\n </div>\r\n </>\r\n }\r\n </>\r\n )\r\n }\r\n}\r\n\r\nexport default Courses;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M6 9L2 5L6 1\",\n stroke: \"current\",\n strokeWidth: 2,\n strokeLinecap: \"round\"\n});\n\nfunction SvgLessThan(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 7 10\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgLessThan);\nexport default \"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgNyAxMCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCjxwYXRoIGQ9Ik02IDlMMiA1TDYgMSIgc3Ryb2tlPSJjdXJyZW50IiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPg0KPC9zdmc+DQo=\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M1 9L5 5L0.999999 1\",\n stroke: \"current\",\n strokeWidth: 2,\n strokeLinecap: \"round\"\n});\n\nfunction SvgGreaterThan(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 7 10\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgGreaterThan);\nexport default \"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgNyAxMCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCjxwYXRoIGQ9Ik0xIDlMNSA1TDAuOTk5OTk5IDEiIHN0cm9rZT0iY3VycmVudCIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz4NCjwvc3ZnPg0K\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8.99297 0.666504C4.39297 0.666504 0.667969 4.39984 0.667969 8.99984C0.667969 13.5998 4.39297 17.3332 8.99297 17.3332C13.6013 17.3332 17.3346 13.5998 17.3346 8.99984C17.3346 4.39984 13.6013 0.666504 8.99297 0.666504ZM9.0013 15.6665C5.31797 15.6665 2.33464 12.6832 2.33464 8.99984C2.33464 5.3165 5.31797 2.33317 9.0013 2.33317C12.6846 2.33317 15.668 5.3165 15.668 8.99984C15.668 12.6832 12.6846 15.6665 9.0013 15.6665ZM9.41797 4.83317H8.16797V9.83317L12.543 12.4582L13.168 11.4332L9.41797 9.20817V4.83317Z\",\n fill: \"current\"\n});\n\nfunction SvgClock(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 18 18\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgClock);\nexport default \"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTggMTgiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQo8cGF0aCBkPSJNOC45OTI5NyAwLjY2NjUwNEM0LjM5Mjk3IDAuNjY2NTA0IDAuNjY3OTY5IDQuMzk5ODQgMC42Njc5NjkgOC45OTk4NEMwLjY2Nzk2OSAxMy41OTk4IDQuMzkyOTcgMTcuMzMzMiA4Ljk5Mjk3IDE3LjMzMzJDMTMuNjAxMyAxNy4zMzMyIDE3LjMzNDYgMTMuNTk5OCAxNy4zMzQ2IDguOTk5ODRDMTcuMzM0NiA0LjM5OTg0IDEzLjYwMTMgMC42NjY1MDQgOC45OTI5NyAwLjY2NjUwNFpNOS4wMDEzIDE1LjY2NjVDNS4zMTc5NyAxNS42NjY1IDIuMzM0NjQgMTIuNjgzMiAyLjMzNDY0IDguOTk5ODRDMi4zMzQ2NCA1LjMxNjUgNS4zMTc5NyAyLjMzMzE3IDkuMDAxMyAyLjMzMzE3QzEyLjY4NDYgMi4zMzMxNyAxNS42NjggNS4zMTY1IDE1LjY2OCA4Ljk5OTg0QzE1LjY2OCAxMi42ODMyIDEyLjY4NDYgMTUuNjY2NSA5LjAwMTMgMTUuNjY2NVpNOS40MTc5NyA0LjgzMzE3SDguMTY3OTdWOS44MzMxN0wxMi41NDMgMTIuNDU4MkwxMy4xNjggMTEuNDMzMkw5LjQxNzk3IDkuMjA4MTdWNC44MzMxN1oiIGZpbGw9ImN1cnJlbnQiLz4NCjwvc3ZnPg0K\";\nexport { ForwardRef as ReactComponent };","class ScheduleService {\r\n\r\n getDay(date) {\r\n return new Date(date).getDate();\r\n }\r\n\r\n getMonth(date) {\r\n return new Date(date).getMonth();\r\n }\r\n\r\n getYear(date) {\r\n return new Date(date).getFullYear();\r\n }\r\n\r\n getFirstDayOfWeek(month, year) {\r\n return new Date(year, month, 1).getDay();\r\n }\r\n\r\n getLastDayOfWeek(month, year) {\r\n return new Date(year, month, this.getDaysInMonth(month, year)).getDay();\r\n }\r\n\r\n getDaysInMonth(month, year) {\r\n return new Date(year, month + 1, 0).getDate();\r\n }\r\n\r\n getDaysInPreviousMonth(month, year) {\r\n return new Date(year, month, 0).getDate();\r\n }\r\n\r\n getDaysInNextMonth(month, year) {\r\n return new Date(year, month + 2, 0).getDate();\r\n }\r\n\r\n getTimeZone() {\r\n const today = new Date();\r\n const short = today.toLocaleDateString(undefined);\r\n const full = today.toLocaleDateString(undefined, { timeZoneName: 'short' });\r\n\r\n // Trying to remove date from the string in a locale-agnostic way\r\n const shortIndex = full.indexOf(short);\r\n if (shortIndex >= 0) {\r\n const trimmed = full.substring(0, shortIndex) + full.substring(shortIndex + short.length);\r\n \r\n // by this time `trimmed` should be the timezone's name with some punctuation -\r\n // trim it from both sides\r\n return trimmed.replace(/^[\\s,.\\-:;]+|[\\s,.\\-:;]+$/g, '');\r\n\r\n } else {\r\n // in some magic case when short representation of date is not present in the long one, just return the long one as a fallback, since it should contain the timezone's name\r\n return full;\r\n }\r\n }\r\n}\r\n\r\nconst scheduleService = new ScheduleService();\r\nexport default scheduleService;","import React from 'react'\r\nimport './Calendar.scss'\r\n\r\nimport BubbleButton from '../BubbleButton/BubbleButton'\r\nimport { ReactComponent as PreviousButton } from '../../../assets/less-than.svg'\r\nimport { ReactComponent as NextButton } from '../../../assets/greater-than.svg'\r\nimport { ReactComponent as Clock } from '../../../assets/clock.svg'\r\nimport bootstrapService from '../../../services/BootstrapService'\r\nimport scheduleService from '../../../services/ScheduleService'\r\n\r\nclass Calendar extends React.Component {\r\n // Constructor\r\n constructor(props) {\r\n super(props);\r\n\r\n // State\r\n this.state = {\r\n currentSchedule: this.props.schedules[0],\r\n currentMonth: scheduleService.getMonth(this.props.schedules[0].startDate),\r\n currentYear: scheduleService.getYear(this.props.schedules[0].startDate),\r\n days: [],\r\n }\r\n\r\n // This Binding\r\n this.clickPreviousMonth = this.clickPreviousMonth.bind(this);\r\n this.clickNextMonth = this.clickNextMonth.bind(this);\r\n this.clickDay = this.clickDay.bind(this);\r\n this.clickBuy = this.clickBuy.bind(this);\r\n }\r\n\r\n // Lifecyle\r\n componentDidMount() {\r\n this.setupSchedules();\r\n }\r\n\r\n // Helpers\r\n setupSchedules() {\r\n const days = this.getDays(scheduleService.getMonth(this.state.currentSchedule.startDate), scheduleService.getYear(this.state.currentSchedule.startDate), this.state.currentSchedule);\r\n this.setState({ days: days }, this.props.selectSchedule(this.state.currentSchedule));\r\n }\r\n\r\n getDays(month, year, currentSchedule) {\r\n const firstDayOfWeek = scheduleService.getFirstDayOfWeek(month, year);\r\n const lastDayOfWeek = scheduleService.getLastDayOfWeek(month, year);\r\n const daysInMonth = scheduleService.getDaysInMonth(month, year);\r\n const daysinPreviousMonth = scheduleService.getDaysInPreviousMonth(month, year);\r\n\r\n let days = [];\r\n\r\n // Add Previous Month's Days\r\n for (let i = daysinPreviousMonth - firstDayOfWeek + 1; i <= daysinPreviousMonth; i++) {\r\n days.push({ \"day\": i, \"disabled\": true, \"unselected\": false, \"selected\": false })\r\n }\r\n\r\n // Add This Month's Days\r\n for (let i = 1; i <= daysInMonth; i++) {\r\n\r\n let unselected = false;\r\n let selected = false;\r\n\r\n this.props.schedules.filter(s => scheduleService.getMonth(s.startDate) === month && scheduleService.getYear(s.startDate) === year).forEach((schedule, index) => {\r\n const day = scheduleService.getDay(schedule.startDate);\r\n if (day === i) {\r\n unselected = true;\r\n\r\n if (schedule.startDate === currentSchedule.startDate) {\r\n selected = true;\r\n }\r\n }\r\n })\r\n\r\n days.push({ \"day\": i, \"disabled\": false, \"unselected\": unselected, \"selected\": selected })\r\n }\r\n\r\n // Add Next Month's Days\r\n for (let i = 1; i <= 6-lastDayOfWeek; i++) {\r\n days.push({ \"day\": i, \"disabled\": true, \"unselected\": false, \"selected\": false });\r\n }\r\n\r\n return days;\r\n }\r\n\r\n // Event Handlers\r\n clickPreviousMonth(e) {\r\n e.preventDefault();\r\n\r\n let previousMonth = this.state.currentMonth - 1;\r\n let year = this.state.currentYear;\r\n if (previousMonth === -1) {\r\n previousMonth = 11;\r\n year = year - 1;\r\n }\r\n\r\n const days = this.getDays(previousMonth, year, this.state.currentSchedule);\r\n this.setState({ currentMonth: previousMonth, currentYear: year, days: days });\r\n }\r\n\r\n clickNextMonth(e) {\r\n e.preventDefault();\r\n\r\n let nextMonth = this.state.currentMonth + 1;\r\n let year = this.state.currentYear;\r\n if (nextMonth === 12) {\r\n nextMonth = 0;\r\n year = year + 1;\r\n }\r\n\r\n const days = this.getDays(nextMonth, year, this.state.currentSchedule);\r\n this.setState({ currentMonth: nextMonth, currentYear: year, days: days });\r\n }\r\n\r\n clickDay(day) {\r\n this.props.schedules.forEach((schedule, index) => {\r\n if (scheduleService.getDay(schedule.startDate) === day.day && scheduleService.getMonth(schedule.startDate) === this.state.currentMonth && scheduleService.getYear(schedule.startDate) === this.state.currentYear) {\r\n const days = this.getDays(this.state.currentMonth, this.state.currentYear, schedule);\r\n this.setState({ days: days, currentSchedule: schedule }, this.props.selectSchedule(schedule));\r\n }\r\n })\r\n }\r\n\r\n clickBuy(e) {\r\n e.stopPropagation();\r\n this.props.buySchedule(this.props.item);\r\n }\r\n\r\n // Component\r\n render() {\r\n const daysOfWeek = [\"SUN\",\"MON\",\"TUE\",\"WED\",\"THU\",\"FRI\",\"SAT\"];\r\n const currentMonthAndYear = new Date(this.state.currentYear, this.state.currentMonth).toLocaleDateString(\"en-US\", {month: 'long', year: 'numeric'});;\r\n const days = this.state.days;\r\n\r\n const selectedDate = new Date(this.state.currentSchedule.startDate).toLocaleDateString(\"en-US\", {weekday: 'long', month: 'long', day: 'numeric'});\r\n const selectedTime = `${new Date(this.state.currentSchedule.startDate).toLocaleTimeString(\"en-US\", {hour: \"2-digit\", minute: \"2-digit\"})} - ${new Date(this.state.currentSchedule.endDate).toLocaleTimeString(\"en-US\", {hour: \"2-digit\", minute: \"2-digit\"})}`;\r\n const selectedDuration = `${Math.abs(new Date(this.state.currentSchedule.endDate) - new Date(this.state.currentSchedule.startDate)) / 36e5} hours`;\r\n\r\n return (\r\n <div className=\"a4-calendar\">\r\n <div className=\"a4-calendar-container\">\r\n <div className=\"a4-calendar-content\">\r\n <div className=\"a4-calendar-header\">\r\n <div className=\"a4-calendar-header-current-month\">\r\n <h3>{currentMonthAndYear}</h3>\r\n </div>\r\n <div className=\"a4-calendar-header-controls\">\r\n <div className=\"a4-calendar-header-controls-button -previous\" onClick={this.clickPreviousMonth}>\r\n <svg className=\"a4-svgsprite\">\r\n <PreviousButton stroke={bootstrapService.primaryColor} />\r\n </svg>\r\n </div>\r\n <div className=\"a4-calendar-header-controls-button\" onClick={this.clickNextMonth}>\r\n <svg className=\"a4-svgsprite\">\r\n <NextButton stroke={bootstrapService.primaryColor} />\r\n </svg>\r\n </div>\r\n </div>\r\n </div>\r\n <div className=\"a4-calendar-days\">\r\n <div className=\"a4-calendar-days-row\" style={{\"paddingBottom\": \"5px\"}}>\r\n {\r\n daysOfWeek.map((day, index) => {\r\n return <div key={index} className=\"a4-calendar-days-cell\">\r\n <div className=\"a4-calendar-days-header\">{day}</div>\r\n </div>\r\n })\r\n }\r\n </div>\r\n {\r\n [...Array(6)].map((row, rowIndex) => {\r\n return <div key={rowIndex} className=\"a4-calendar-days-row\">\r\n {\r\n days.slice(rowIndex * 7, (rowIndex+1)*7).map((day, dayIndex) => {\r\n const canClick = day.unselected || day.selected;\r\n return <div key={dayIndex} className={`a4-calendar-days-cell ${day.disabled ? \"-disabled\" : \"\"} ${day.unselected ? \"-unselected\" : \"\"} ${day.selected ? \"-selected\" : \"\"}`} onClick={canClick ? () => this.clickDay(day) : undefined}>\r\n <div className=\"a4-calendar-days-day\">{day.day}</div>\r\n </div>\r\n })\r\n }\r\n </div>\r\n })\r\n }\r\n \r\n </div>\r\n </div>\r\n <div className=\"a4-calendar-info\">\r\n <div className=\"a4-calendar-info-item\">\r\n <div className=\"a4-calendar-info-label\">Date</div>\r\n <div className=\"a4-calendar-info-text\">{selectedDate}</div>\r\n </div>\r\n <div className=\"a4-calendar-info-item\">\r\n <div className=\"a4-calendar-info-label\">Time</div>\r\n <div className=\"a4-calendar-info-text\">{selectedTime} ({scheduleService.getTimeZone()})</div>\r\n </div>\r\n <div className=\"a4-calendar-info-item\">\r\n <div className=\"a4-calendar-info-label\">Duration</div>\r\n <div className=\"a4-calendar-info-text -duration\">\r\n <svg className=\"a4-svgsprite\">\r\n <Clock fill={bootstrapService.primaryColor} />\r\n </svg>\r\n {selectedDuration}\r\n </div>\r\n </div>\r\n <div className=\"a4-calendar-info-item -buy\">\r\n <BubbleButton onClick={this.clickBuy} className=\"a4-course-plan-buy-now -primary\">Buy Now</BubbleButton>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n )\r\n }\r\n}\r\n\r\nexport default Calendar;","import httpService from './HttpService';\r\nimport sessionService from './SessionService'\r\nimport memberService from './MemberService'\r\nimport { MemberType } from './MemberService'\r\n\r\nclass PaymentService {\r\n\r\n constructor() {\r\n // State\r\n this.memberType = \"register\";\r\n this.paymentType = \"cc\";\r\n\r\n // Data\r\n this.member = null;\r\n this.item = null;\r\n this.schedule = null;\r\n this.group = null;\r\n this.creditCard = null;\r\n this.sandboxTicket = null;\r\n\r\n // Validation\r\n this.paypalValidated = false;\r\n }\r\n\r\n reset() {\r\n this.memberType = \"register\";\r\n this.paymentType = \"cc\";\r\n \r\n this.member = null;\r\n this.item = null;\r\n this.schedule = null;\r\n this.group = null;\r\n this.creditCard = null;\r\n this.sandboxTicket = null;\r\n }\r\n \r\n getSandboxTicket() {\r\n const url = 'api/test/sandbox/ticket';\r\n const body = {};\r\n\r\n return httpService.post(url, body)\r\n .then(json => {\r\n if (json.succeeded) {\r\n this.sandboxTicket = json.value;\r\n }\r\n\r\n return json;\r\n });\r\n }\r\n\r\n buyItemCreditCard(buyRequest) {\r\n if (this.member && this.item && this.creditCard) {\r\n const url = 'api/order/process';\r\n const body = {\r\n \"recaptchaToken\": buyRequest.recaptchaToken,\r\n \"acceptedTerms\": true,\r\n \"memberRequest\": {\r\n \"requestType\": this.member.requestType,\r\n \"email\": this.member.email,\r\n \"password\": this.member.password,\r\n \"firstName\": this.member.firstName,\r\n \"lastName\": this.member.lastName,\r\n \"memberType\": MemberType.Payment,\r\n \"autoLogin\": true,\r\n \"origin\": window.location.origin,\r\n \"timezoneOffset\": this.member.timezoneOffset,\r\n \"contactId\": memberService.getMtcId()\r\n },\r\n \"itemRequests\": [\r\n {\r\n \"itemId\": this.item.id,\r\n \"quantity\": this.item.quantity,\r\n \"scheduleId\": this.schedule ? this.schedule.scheduleId : null,\r\n \"args\": {\r\n \"name\": this.group ? this.group.groupName : null,\r\n \"adminOnly\": this.group ? this.group.isAdminOnly : null,\r\n }\r\n }\r\n ],\r\n \"paymentRequests\": [\r\n {\r\n \"paymentType\": 1,\r\n \"creditCardNo\": this.creditCard.creditCardNo,\r\n \"expirationMonth\": this.creditCard.expirationMonth,\r\n \"expirationYear\": this.creditCard.expirationYear,\r\n \"securityCode\": this.creditCard.securityCode,\r\n \"sandboxTicket\": this.sandboxTicket\r\n }\r\n ]\r\n };\r\n\r\n return httpService.post(url, body)\r\n .then(json => {\r\n if (json.succeeded) {\r\n sessionService.setLocalUserSession(json);\r\n }\r\n return json;\r\n });\r\n }\r\n else {\r\n console.log(\"Buy Item Register Failed - Missing Data\");\r\n }\r\n }\r\n\r\n buyItemPayPal(buyRequest) {\r\n if (this.member && this.item) {\r\n const url = 'api/order/process';\r\n const body = {\r\n \"recaptchaToken\": buyRequest.recaptchaToken,\r\n \"acceptedTerms\": true,\r\n \"memberRequest\": {\r\n \"requestType\": this.member.requestType,\r\n \"email\": this.member.email,\r\n \"password\": this.member.password,\r\n \"firstName\": this.member.firstName,\r\n \"lastName\": this.member.lastName,\r\n \"memberType\": MemberType.Payment,\r\n \"autoLogin\": true,\r\n \"origin\": window.location.origin,\r\n \"timezoneOffset\": this.member.timezoneOffset,\r\n \"contactId\": memberService.getMtcId()\r\n },\r\n \"itemRequests\": [\r\n {\r\n \"itemId\": this.item.id,\r\n \"quantity\": this.item.quantity,\r\n \"scheduleId\": this.schedule ? this.schedule.scheduleId : null,\r\n \"args\": {\r\n \"name\": this.group ? this.group.name : null,\r\n \"adminOnly\": this.group ? this.group.isAdminOnly : null,\r\n }\r\n }\r\n ],\r\n \"paymentRequests\": [\r\n {\r\n \"paymentType\": 2,\r\n \"pathname\": \"/\",\r\n \"hash\": \"Pricing\",\r\n \"payPalReturnUrl\": `${window.location.origin}/complete-paypal`,\r\n \"creditCardNo\": null,\r\n \"expirationMonth\": null,\r\n \"expirationYear\": null,\r\n \"securityCode\": null,\r\n \"sandboxTicket\": this.sandboxTicket,\r\n \"payerId\": buyRequest.payerId,\r\n }\r\n ]\r\n };\r\n\r\n return httpService.post(url, body);\r\n }\r\n else {\r\n console.log(\"Buy Item PayPal Failed - Missing Data\")\r\n }\r\n }\r\n\r\n buyItemOffline(buyRequest) {\r\n if (this.member && this.item) {\r\n const url = 'api/order/process';\r\n const body = {\r\n \"recaptchaToken\": buyRequest.recaptchaToken,\r\n \"acceptedTerms\": true,\r\n \"memberRequest\": {\r\n \"requestType\": this.member.requestType,\r\n \"email\": this.member.email,\r\n \"password\": this.member.password,\r\n \"firstName\": this.member.firstName,\r\n \"lastName\": this.member.lastName,\r\n \"memberType\": MemberType.Payment,\r\n \"autoLogin\": true,\r\n \"origin\": window.location.origin,\r\n \"timezoneOffset\": this.member.timezoneOffset,\r\n \"contactId\": memberService.getMtcId()\r\n },\r\n \"itemRequests\": [\r\n {\r\n \"itemId\": this.item.id,\r\n \"quantity\": this.item.quantity,\r\n \"scheduleId\": this.schedule ? this.schedule.scheduleId : null,\r\n \"args\": {\r\n \"name\": this.group ? this.group.name : null,\r\n \"adminOnly\": this.group ? this.group.isAdminOnly : null,\r\n }\r\n }\r\n ],\r\n \"paymentRequests\": [\r\n {\r\n \"paymentType\": 4,\r\n \"sandboxTicket\": this.sandboxTicket\r\n }\r\n ]\r\n };\r\n\r\n return httpService.post(url, body)\r\n .then(json => {\r\n if (json.succeeded) {\r\n sessionService.setLocalUserSession(json);\r\n }\r\n return json;\r\n });\r\n }\r\n else {\r\n console.log(\"Buy Item PayPal Failed - Missing Data\")\r\n }\r\n }\r\n\r\n getPayPalOrder(token) {\r\n const url = 'api/order/filterone';\r\n const body = {\r\n token: token,\r\n };\r\n\r\n return httpService.post(url, body);\r\n }\r\n\r\n cancelPayPalPayment(orderId, paymentRequestId) {\r\n const url = 'api/order/${orderId}/payment/${paymentRequestId}/cancel';\r\n const body = null;\r\n\r\n return httpService.post(url, body);\r\n }\r\n}\r\n\r\nconst paymentService = new PaymentService();\r\nexport default paymentService;","import React from 'react'\r\nimport './CourseDetails.scss'\r\nimport { isMobileOnly } from 'react-device-detect'\r\n\r\nimport Navbar from '../shared/Navbar/Navbar'\r\nimport Reviews from '../shared/Reviews/Reviews'\r\nimport Subscribe from '../shared/Subscribe/Subscribe'\r\nimport Footer from '../shared/Footer/Footer'\r\nimport BubbleButton from '../shared/BubbleButton/BubbleButton'\r\nimport Calendar from '../shared/Calendar/Calendar'\r\nimport placeholderImage from '../../assets/course-plug.svg'\r\nimport { ReactComponent as Avatar } from '../../assets/avatar-plug.svg'\r\nimport { ReactComponent as CheckMark } from '../../assets/check-mark.svg'\r\n\r\nimport bootstrapService from '../../services/BootstrapService'\r\nimport paymentService from '../../services/PaymentService'\r\n\r\nclass CourseDetails extends React.Component {\r\n // Constructor\r\n constructor(props) {\r\n super(props);\r\n\r\n // Refs\r\n this.courseDescription = null;\r\n this.courseDescriptionButton = null;\r\n this.authorBios = [];\r\n this.authorBiosButtons = [];\r\n this.courseObjectives = null;\r\n this.courseObjectivesButton = null;\r\n\r\n // State\r\n this.state = {\r\n schedule: null\r\n }\r\n\r\n // This Binding\r\n this.clickReadMoreDescription = this.clickReadMoreDescription.bind(this);\r\n this.clickReadMoreBio = this.clickReadMoreBio.bind(this);\r\n this.clickReadMoreObjectives = this.clickReadMoreObjectives.bind(this);\r\n this.goToBuy = this.goToBuy.bind(this);\r\n this.selectSchedule = this.selectSchedule.bind(this);\r\n this.buySchedule = this.buySchedule.bind(this);\r\n }\r\n\r\n // Lifecycle\r\n componentDidMount() {\r\n window.scrollTo(0, 0);\r\n this.setupReadMoreButtons();\r\n }\r\n\r\n // Helpers\r\n setupReadMoreButtons() {\r\n // Timeout hack ensures function runs after Render (so that REFs are set)\r\n setTimeout(() => {\r\n if (this.courseDescription) {\r\n const style = getComputedStyle(this.courseDescription);\r\n // console.log(\"description = \" + parseInt(style.height))\r\n if (parseInt(style.height) < 200) {\r\n this.courseDescriptionButton.style.display = \"none\";\r\n }\r\n // else {\r\n // this.courseDescription.classList.add(\"-blur\");\r\n // }\r\n }\r\n\r\n if (this.authorBios.length > 0) {\r\n\r\n this.authorBios.forEach((bio, index) => {\r\n\r\n const style = getComputedStyle(bio);\r\n // console.log(\"bio = \" + parseInt(style.height))\r\n if (parseInt(style.height) < 100) {\r\n this.authorBiosButtons[index].style.display = \"none\";\r\n }\r\n // else {\r\n // this.authorBios[index].classList.add(\"-blur\");\r\n // }\r\n })\r\n }\r\n\r\n if (this.courseObjectives) {\r\n const style = getComputedStyle(this.courseObjectives);\r\n // console.log(\"objectives = \" + parseInt(style.height))\r\n if (parseInt(style.height) < 300) {\r\n this.courseObjectivesButton.style.display = \"none\";\r\n }\r\n // else {\r\n // this.courseObjectives.classList.add(\"-blur\");\r\n // }\r\n }\r\n }, 0);\r\n }\r\n\r\n // Event Hanlders\r\n clickReadMoreDescription(e) {\r\n e.preventDefault();\r\n this.courseDescription.classList.add(\"-show\");\r\n this.courseDescriptionButton.style.display = \"none\";\r\n }\r\n\r\n clickReadMoreBio(e) {\r\n e.preventDefault();\r\n const index = e.currentTarget.getAttribute(\"index\")\r\n this.authorBios[index].classList.add(\"-show\");\r\n this.authorBiosButtons[index].style.display = \"none\";\r\n }\r\n\r\n clickReadMoreObjectives(e) {\r\n e.preventDefault();\r\n this.courseObjectives.classList.add(\"-show\");\r\n this.courseObjectivesButton.style.display = \"none\";\r\n }\r\n\r\n goToBuy(item) {\r\n if (item.price) {\r\n paymentService.reset();\r\n paymentService.item = { ...item, quantity: 1 };\r\n\r\n if (this.state.schedule) {\r\n paymentService.schedule = this.state.schedule;\r\n }\r\n\r\n this.props.history.push(\"/buy\");\r\n }\r\n else {\r\n this.props.history.push({ pathname: \"/\", state: { tryForFree: true } });\r\n }\r\n }\r\n\r\n selectSchedule(schedule) {\r\n this.setState({ schedule: schedule });\r\n }\r\n\r\n buySchedule(item) {\r\n this.goToBuy(item)\r\n }\r\n\r\n // Data\r\n getBundles(courseId) {\r\n const bundles = bootstrapService.data.courseBundleTypes;\r\n if (bundles) {\r\n let bundlesWithCourse = [];\r\n bundles.forEach((bundle, index) => {\r\n if (bundle.courseDigests && bundle.courseDigests.filter(c => c.id === courseId).length > 0) {\r\n bundlesWithCourse.push(bundle);\r\n }\r\n })\r\n return bundlesWithCourse.length > 0 ? bundlesWithCourse : null;\r\n }\r\n }\r\n\r\n // Component\r\n render() {\r\n const courses = bootstrapService.data.courseCatalog.courses;\r\n const course = courses.find(c => c.id === this.props.match.params.id);\r\n\r\n if (!course) {\r\n this.props.history.push(\"/courses\");\r\n return null;\r\n }\r\n\r\n const categoryTerm = bootstrapService.getCategoryTerm();\r\n const releaseDate = course ? new Date(course.releaseDate).toDateString().split(' ').slice(1).join(' ') : null;\r\n\r\n const memberships = bootstrapService.data.passTypes;\r\n const bundles = course ? this.getBundles(course.id) : null;\r\n\r\n const schedule = this.state.schedule ? new Date(this.state.schedule.startDate).toLocaleDateString(\"en-US\", { weekday: 'long', month: 'long', day: 'numeric' }) : null;\r\n\r\n const showReleaseDate = bootstrapService.getShowReleaseDate();\r\n\r\n return (\r\n <>\r\n <Navbar activeLink={bootstrapService.singleCourseId ? \"courses\" : \"\"} />\r\n {\r\n course &&\r\n <div className=\"a4-view\">\r\n <div className=\"a4-layout a4-course-details\">\r\n <section className=\"a4-course-details-main\">\r\n <div className=\"a4-course-details-main-container\">\r\n <div className=\"a4-course-details-main-content\">\r\n {\r\n course.imageUrl &&\r\n <div className=\"a4-course-details-main-cover\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n <img src={course.imageUrl ? course.imageUrl : placeholderImage} alt=\"\" />\r\n </div>\r\n }\r\n <div className=\"a4-course-details-main-title\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n <h1>{course.title}</h1>\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n <section className=\"a4-course-details-info\">\r\n <div className=\"a4-course-details-info-container\">\r\n <div className=\"a4-course-details-info-content\">\r\n <div className=\"a4-course-details-info-side\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n <ul className=\"a4-course-details-list\">\r\n {/* <li className=\"a4-course-details-list-item\">\r\n <div className=\"a4-course-details-list-item-label\">Course No:</div>\r\n <div className=\"a4-course-details-list-item-text\">{course.courseNo}</div>\r\n </li> */}\r\n {\r\n course.subjectArea &&\r\n <li className=\"a4-course-details-list-item\">\r\n <div className=\"a4-course-details-list-item-label\">{categoryTerm}:</div>\r\n <div className=\"a4-course-details-list-item-text\">{course.subjectArea}</div>\r\n </li>\r\n }\r\n {\r\n course.audience &&\r\n <li className=\"a4-course-details-list-item\">\r\n <div className=\"a4-course-details-list-item-label\">Designed For:</div>\r\n <div className=\"a4-course-details-list-item-text\">{course.audience}</div>\r\n </li>\r\n }\r\n {\r\n course.deliveryMethod &&\r\n <li className=\"a4-course-details-list-item\">\r\n <div className=\"a4-course-details-list-item-label\">Delivery Method:</div>\r\n <div className=\"a4-course-details-list-item-text\">{course.deliveryMethod}</div>\r\n </li>\r\n }\r\n {\r\n course.schedules && course.schedules[0] &&\r\n <li className=\"a4-course-details-list-item\">\r\n <div className=\"a4-course-details-list-item-label\">Next Session:</div>\r\n <div className=\"a4-course-details-list-item-text\">{new Date(course.schedules[0].startDate).toLocaleDateString(\"en-US\", {weekday: 'long', month: 'short', day: 'numeric'})}</div>\r\n </li>\r\n }\r\n {\r\n course.knowledgeLevel &&\r\n <li className=\"a4-course-details-list-item\">\r\n <div className=\"a4-course-details-list-item-label\">Knowledge Level:</div>\r\n <div className=\"a4-course-details-list-item-text\">{course.knowledgeLevel}</div>\r\n </li>\r\n }\r\n {\r\n course.advancePreparation &&\r\n <li className=\"a4-course-details-list-item\">\r\n <div className=\"a4-course-details-list-item-label\">Advance Preparation:</div>\r\n <div className=\"a4-course-details-list-item-text\">{course.advancePreparation}</div>\r\n </li>\r\n }\r\n {\r\n course.prerequisites &&\r\n <li className=\"a4-course-details-list-item\">\r\n <div className=\"a4-course-details-list-item-label\">Prerequisites:</div>\r\n <div className=\"a4-course-details-list-item-text\">{course.prerequisites}</div>\r\n </li>\r\n }\r\n {\r\n course.commercialSupport &&\r\n <li className=\"a4-course-details-list-item\">\r\n <div className=\"a4-course-details-list-item-label\">Commercial Support:</div>\r\n <div className=\"a4-course-details-list-item-text\">{course.commercialSupport}</div>\r\n </li>\r\n }\r\n {\r\n course.jointProvidership &&\r\n <li className=\"a4-course-details-list-item\">\r\n <div className=\"a4-course-details-list-item-label\">Joint Providership:</div>\r\n <div className=\"a4-course-details-list-item-text\">{course.jointProvidership}</div>\r\n </li>\r\n }\r\n {\r\n showReleaseDate && releaseDate &&\r\n <li className=\"a4-course-details-list-item\">\r\n <div className=\"a4-course-details-list-item-label\">Publish Date:</div>\r\n <div className=\"a4-course-details-list-item-text\">{releaseDate}</div>\r\n </li>\r\n }\r\n <li className=\"a4-course-details-list-item\">\r\n <div className=\"a4-course-details-list-item-label\">{bootstrapService.getCreditsTerm(2)}:</div>\r\n <div className=\"a4-course-details-list-item-text\">{course.credits.toFixed(1)}</div>\r\n </li>\r\n </ul>\r\n </div>\r\n <div className=\"a4-course-details-info-body\">\r\n <div className=\"a4-course-details-about\">\r\n <div className=\"a4-course-details-about-title\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n <h2>About Course</h2>\r\n </div>\r\n <div data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n <div className=\"a4-course-details-about-description\" ref={div => this.courseDescription = div} dangerouslySetInnerHTML={{ __html: course.description }}>\r\n </div>\r\n <div className=\"a4-course-details-about-control\">\r\n <button ref={button => this.courseDescriptionButton = button} onClick={this.clickReadMoreDescription}>Read More</button>\r\n </div>\r\n </div>\r\n </div>\r\n {\r\n course.authors && course.authors.map((author, index) => {\r\n return <div className=\"a4-course-details-from-author\" key={index}>\r\n <div className=\"a4-course-details-from-author-info\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n <div className=\"a4-course-details-from-author-avatar\">\r\n {\r\n author.imageUrl &&\r\n <img src={author.imageUrl} alt=\"\" />\r\n }\r\n {\r\n !author.imageUrl &&\r\n <Avatar />\r\n }\r\n </div>\r\n <div className=\"a4-course-details-from-author-details\">\r\n <div className=\"a4-course-details-from-author-name\">Author</div>\r\n <div className=\"a4-course-details-from-author-from\">{author.name} {author.designations}</div>\r\n </div>\r\n </div>\r\n {\r\n author.bio &&\r\n <div data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n <div className=\"a4-course-details-from-author-comment\" ref={div => this.authorBios[index] = div} dangerouslySetInnerHTML={{ __html: author.bio }}>\r\n </div>\r\n <div className=\"a4-course-details-about-control\">\r\n <button index={index} ref={button => this.authorBiosButtons[index] = button} onClick={this.clickReadMoreBio}>Read More</button>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n })\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n {\r\n course.sections &&\r\n <section className=\"a4-course-details-objectives\">\r\n <div className=\"a4-course-details-objectives-container\">\r\n <div className=\"a4-course-details-objectives-content\">\r\n <div className=\"a4-course-details-objectives-side\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n <h3>Learning Objectives:</h3>\r\n </div>\r\n <div className=\"a4-course-details-objectives-body\">\r\n <div className=\"a4-course-details-objectives-sections\" ref={div => this.courseObjectives = div}>\r\n {\r\n course.sections.map((section, sectionIndex) => {\r\n return <div className=\"a4-course-details-objectives-section\" key={sectionIndex}>\r\n <div className=\"a4-course-details-objectives-section-header\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>{section.title}</div>\r\n <ul className=\"a4-course-details-objectives-list\">\r\n {\r\n section.objectives.map((objective, objectiveIndex) => {\r\n return <li className=\"a4-course-details-objectives-list-item\" key={objectiveIndex} data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n <div className=\"a4-course-details-objectives-list-item-number\"></div>\r\n <div className=\"a4-course-details-objectives-list-item-info\">\r\n <p className=\"a4-course-details-objectives-list-item-description\">{objective}</p>\r\n </div>\r\n </li>\r\n })\r\n }\r\n </ul>\r\n </div>\r\n })\r\n }\r\n </div>\r\n <div className=\"a4-course-details-objectives-control\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n <button ref={button => this.courseObjectivesButton = button} onClick={this.clickReadMoreObjectives}>Read More</button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n }\r\n {\r\n course.schedules &&\r\n <section className=\"a4-course-details-schedules\">\r\n <div className=\"a4-course-details-schedules-container\">\r\n <div className=\"a4-course-details-schedules-content\">\r\n <div className=\"a4-course-details-schedules-side\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n <h3>Dates & Times:</h3>\r\n </div>\r\n <div className=\"a4-course-details-schedules-body\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n <Calendar schedules={course.schedules} selectSchedule={this.selectSchedule} buySchedule={this.buySchedule} item={course.item} /> \r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n }\r\n <section className=\"a4-course-details-pricing\">\r\n {\r\n course.item &&\r\n <div className=\"a4-course-details-pricing-course\">\r\n <div className=\"a4-course-plan-container\" data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-duration='1400' data-aos-delay=\"0\" data-aos-anchor-placement=\"top-bottom\">\r\n <div className=\"a4-course-plan-item\">\r\n <div className=\"a4-course-plan-section\">\r\n <h3 className=\"a4-course-plan-title\">{course.item.price ? 'Buy' : 'Take'} Course</h3>\r\n <p className=\"a4-course-plan-description\">{course.title}</p>\r\n <p className=\"a4-course-plan-schedule\">{schedule}</p>\r\n <div className=\"a4-course-plan-section-subsection\">\r\n <BubbleButton onClick={() => this.goToBuy(course.item)} className=\"a4-course-plan-buy-now -primary\">{course.item.price ? 'Buy' : 'Take'} Now</BubbleButton>\r\n </div>\r\n </div>\r\n <div className=\"a4-course-plan-section\">\r\n <div className=\"a4-course-plan-price\">\r\n <b className=\"a4-course-plan-price-digits\">\r\n <span className=\"a4-course-plan-price-int\">${String(course.item.price).split('.')[0]}</span>\r\n <span className=\"a4-course-plan-price-float\">.{String(course.item.price).split('.')[1] ? String(course.item.price).split('.')[1] : '00'}</span>\r\n </b>\r\n </div>\r\n <div className={`a4-course-plan-controls ${schedule ? \"-bottomMargin\" : \"\"}`}>\r\n <BubbleButton onClick={() => this.goToBuy(course.item)} className=\"a4-course-plan-buy-now -primary\">{course.item.price ? 'Buy' : 'Take'} Now</BubbleButton>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n {\r\n memberships &&\r\n <div className=\"a4-course-details-pricing-container\">\r\n <div className=\"a4-course-details-pricing-content\">\r\n <h3 className=\"a4-course-details-pricing-title\" data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-duration='1400' data-aos-delay=\"0\" data-aos-anchor-placement=\"top-bottom\">Memberships</h3>\r\n <ul className=\"a4-pricing-list\">\r\n {\r\n memberships.map((membership, index) => {\r\n return <div className=\"a4-pricing-plan-container\" key={index} data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-duration='1400' data-aos-delay=\"0\" data-aos-anchor-placement=\"top-bottom\">\r\n <div className=\"a4-pricing-plan-item\">\r\n <div className=\"a4-pricing-plan-section\">\r\n <h3 className=\"a4-pricing-plan-title\">{membership.item.title}</h3>\r\n <p className=\"a4-pricing-plan-description\">{membership.item.descriptionText}</p>\r\n <div className=\"a4-pricing-plan-section-subsection\">\r\n <BubbleButton onClick={() => this.goToBuy(membership.item)} className=\"a4-pricing-plan-buy-now -primary -inverted\">Buy Now</BubbleButton>\r\n </div>\r\n </div>\r\n <div className=\"a4-pricing-plan-section\">\r\n <div className=\"a4-pricing-plan-price\">\r\n <b className=\"a4-pricing-plan-price-digits\">\r\n <span className=\"a4-pricing-plan-price-int\">${String(membership.item.price).split('.')[0]}</span>\r\n <span className=\"a4-pricing-plan-price-float\">.{String(membership.item.price).split('.')[1] ? String(membership.item.price).split('.')[1] : '00'}</span>\r\n </b>\r\n </div>\r\n <div className=\"a4-pricing-plan-controls\">\r\n <BubbleButton onClick={() => this.goToBuy(membership.item)} className=\"a4-pricing-plan-buy-now -primary -inverted\">Buy Now</BubbleButton>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n })\r\n }\r\n </ul>\r\n </div>\r\n </div>\r\n }\r\n {\r\n bundles &&\r\n <div className=\"a4-course-details-pricing-container\">\r\n <div className=\"a4-course-details-pricing-content\">\r\n <h3 className=\"a4-course-details-pricing-title\" data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-duration='1400' data-aos-delay=\"0\" data-aos-anchor-placement=\"top-bottom\">Course Bundles</h3>\r\n <ul className=\"a4-pricing-list\">\r\n {\r\n bundles.map((bundle, index) => {\r\n return <li className=\"a4-pricing-plan-container -course-bundle\" key={index} data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-duration='1400' data-aos-delay=\"0\" data-aos-anchor-placement=\"top-bottom\">\r\n <div className=\"a4-pricing-plan-item\">\r\n <div className=\"a4-pricing-plan-section\">\r\n <h3 className=\"a4-pricing-plan-title\">{bundle.item.title}</h3>\r\n <p className=\"a4-pricing-plan-description\">{bundle.item.descriptionText}</p>\r\n <div className=\"a4-pricing-plan-section-subsection\">\r\n <BubbleButton onClick={() => this.goToBuy(bundle.item)} className=\"a4-pricing-plan-buy-now -primary -inverted\">Buy Now</BubbleButton>\r\n </div>\r\n <ul className=\"a4-pricing-plan-advantages -course-bundle\">\r\n {\r\n bundle.courseDigests.map((c, cIndex) => {\r\n return <li className=\"a4-pricing-plan-advantages-item -course-bundle\" key={cIndex}>\r\n {\r\n c.id === course.id &&\r\n <>\r\n <svg className=\"a4-svgsprite\">\r\n <CheckMark stroke={bootstrapService.primaryColor} />\r\n </svg>\r\n <span className=\"a4-pricing-plan-advantages-item-text -primary\">{c.title}</span>\r\n </>\r\n }\r\n {\r\n c.id !== course.id &&\r\n <>\r\n <svg className=\"a4-svgsprite\">\r\n <CheckMark stroke={bootstrapService.primaryColor} />\r\n </svg>\r\n <span className=\"a4-pricing-plan-advantages-item-text\">{c.title}</span>\r\n </>\r\n }\r\n </li>\r\n })\r\n }\r\n </ul>\r\n </div>\r\n <div className=\"a4-pricing-plan-section -course-bundle\">\r\n <div className=\"a4-pricing-plan-price\">\r\n <b className=\"a4-pricing-plan-price-digits\">\r\n <span className=\"a4-pricing-plan-price-int\">${String(bundle.item.price).split('.')[0]}</span>\r\n <span className=\"a4-pricing-plan-price-float\">.{String(bundle.item.price).split('.')[1] ? String(bundle.item.price).split('.')[1] : '00'}</span>\r\n </b>\r\n </div>\r\n <div className=\"a4-pricing-plan-controls -course-bundle\">\r\n <BubbleButton onClick={() => this.goToBuy(bundle.item)} className=\"a4-pricing-plan-buy-now -primary -inverted\">Buy Now</BubbleButton>\r\n </div>\r\n </div>\r\n </div>\r\n </li>\r\n })\r\n }\r\n </ul>\r\n </div>\r\n </div>\r\n }\r\n </section>\r\n <section className=\"a4-client-reviews\">\r\n <div className=\"a4-client-reviews-container\">\r\n <div className=\"a4-client-reviews-content\">\r\n <Reviews />\r\n </div>\r\n </div>\r\n </section>\r\n <Subscribe />\r\n <Footer />\r\n </div>\r\n </div>\r\n }\r\n </>\r\n )\r\n }\r\n}\r\n\r\nexport default CourseDetails;","import React from 'react'\r\nimport { withRouter } from 'react-router-dom'\r\nimport { isMobileOnly } from 'react-device-detect'\r\n\r\nimport BubbleButton from '../../shared/BubbleButton/BubbleButton'\r\n\r\nimport paymentService from '../../../services/PaymentService'\r\n\r\nclass Membership extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n // This Binding\r\n this.goToBuy = this.goToBuy.bind(this);\r\n }\r\n\r\n // Event Handlers\r\n goToBuy(e) {\r\n paymentService.reset();\r\n paymentService.item = { ...this.props.data.item, quantity: 1 };\r\n this.props.history.push(\"/buy\");\r\n }\r\n\r\n // Component\r\n render() {\r\n const title = this.props.data.item.title; \r\n const description = this.props.data.item.descriptionText;\r\n const features = this.props.data.features;\r\n const price = this.props.data.item.price;\r\n\r\n const shortDescription = description.length > 300 ? description.substring(0, 350).split(\" \").slice(0, -1).join(\" \") + \"...\" : description;\r\n\r\n return (\r\n <li className=\"a4-plan-container\" data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-duration='1400' data-aos-delay=\"0\" data-aos-anchor-placement=\"top-bottom\">\r\n <div className=\"a4-plan-item\">\r\n <div className=\"a4-plan-section\">\r\n <h3 className=\"a4-plan-title\">{title}</h3>\r\n <p className=\"a4-plan-description\">{shortDescription}</p>\r\n <div className=\"a4-plan-section-subsection\">\r\n <BubbleButton onClick={this.goToBuy} className=\"a4-plan-buy-now -primary\">Buy Now</BubbleButton>\r\n <ul className=\"a4-plan-advantages -membership\">\r\n {\r\n features.map((feature, featureIndex) => {\r\n return <li className=\"a4-plan-advantages-item -membership\" key={featureIndex}>\r\n <div className=\"a4-plan-advantages-item-icon\">\r\n <img src={feature.imageUrl} alt=\"\" />\r\n </div>\r\n <span className=\"a4-plan-advantages-item-text\">{feature.value}</span>\r\n </li>\r\n })\r\n }\r\n </ul>\r\n </div>\r\n </div>\r\n <div className=\"a4-plan-section\">\r\n <div className=\"a4-plan-price\">\r\n <b className=\"a4-plan-price-digits\">\r\n <span className=\"a4-plan-price-int\">${String(price).split('.')[0]}</span>\r\n <span className=\"a4-plan-price-float\">.{String(price).split('.')[1] ? String(price).split('.')[1] : '00'}</span>\r\n </b>\r\n </div>\r\n <div className=\"a4-plan-controls -membership\">\r\n <BubbleButton onClick={this.goToBuy} className=\"a4-plan-buy-now -primary\">Buy Now</BubbleButton>\r\n </div>\r\n </div>\r\n </div>\r\n </li>\r\n )\r\n }\r\n}\r\n\r\nexport default withRouter(Membership);;","import React from 'react'\r\nimport { Link, withRouter } from 'react-router-dom'\r\nimport { isMobileOnly } from 'react-device-detect'\r\n\r\nimport BubbleButton from '../../shared/BubbleButton/BubbleButton'\r\n\r\nimport bootstrapService from '../../../services/BootstrapService'\r\nimport paymentService from '../../../services/PaymentService'\r\n\r\nclass IndividualCourse extends React.Component {\r\n // Constructor\r\n constructor(props) {\r\n super(props);\r\n\r\n // This Binding\r\n this.goToCourse = this.goToCourse.bind(this);\r\n this.goToBuy = this.goToBuy.bind(this);\r\n }\r\n\r\n // Event Handlers\r\n goToCourse(e) {\r\n if (window.innerWidth < 768) {\r\n this.props.history.push(`/course/${this.props.data.id}`);\r\n }\r\n }\r\n\r\n goToBuy(e) {\r\n if (this.props.data.item.price) {\r\n paymentService.reset();\r\n paymentService.item = { ...this.props.data.item, quantity: 1 };\r\n this.props.history.push(\"/buy\");\r\n }\r\n else {\r\n this.props.history.push({ pathname: \"/\", state: { tryForFree: true } });\r\n }\r\n }\r\n\r\n // Component\r\n render() {\r\n const courseId = this.props.data.id;\r\n const title = this.props.data.title;\r\n const description = this.props.data.description;\r\n const shortDescription = description.substring(0, 280).split(\" \").slice(0, -1).join(\" \") + \"...\";\r\n const category = this.props.data.subjectArea;\r\n const credits = this.props.data.credits;\r\n const courseNo = this.props.data.courseNo;\r\n const deliveryMethod = this.props.data.deliveryMethod;\r\n const price = this.props.data.item.price;\r\n\r\n const categoryTerm = bootstrapService.getCategoryTerm();\r\n\r\n return (\r\n <li className=\"a4-plan-container -individual-course\" data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-duration='1400' data-aos-delay=\"0\" data-aos-anchor-placement=\"top-bottom\">\r\n <div className=\"a4-plan-item\">\r\n <div className=\"a4-plan-section\">\r\n <h3 className=\"a4-plan-title -individual-course\" onClick={this.goToCourse}>{title}</h3>\r\n <p className=\"a4-plan-description -individual-course\" onClick={this.goToCourse}>{shortDescription}</p>\r\n <ul className=\"a4-plan-advantages -individual-course\">\r\n <li className=\"a4-plan-advantages-item -individual-course\">\r\n <span className=\"a4-plan-advantages-item-title\"><span className=\"text-primary\">{categoryTerm}:</span></span>\r\n <span className=\"a4-plan-advantages-item-value\">{category}</span>\r\n </li>\r\n <li className=\"a4-plan-advantages-item -individual-course\">\r\n <span className=\"a4-plan-advantages-item-title\"><span className=\"text-primary\">Delivery Method</span></span>\r\n <span className=\"a4-plan-advantages-item-value\">{deliveryMethod}</span>\r\n </li>\r\n <li className=\"a4-plan-advantages-item -individual-course\">\r\n <span className=\"a4-plan-advantages-item-title\"><span className=\"text-primary\">{bootstrapService.getCreditsTerm(2)}:</span></span>\r\n <span className=\"a4-plan-advantages-item-value\">{credits.toFixed(1)}</span>\r\n </li>\r\n </ul>\r\n </div>\r\n <div className=\"a4-plan-section\">\r\n <div className=\"a4-plan-price -individual-course\">\r\n <b className=\"a4-plan-price-digits\">\r\n <span className=\"a4-plan-price-int\">${String(price).split('.')[0]}</span>\r\n <span className=\"a4-plan-price-float\">.{String(price).split('.')[1] ? String(price).split('.')[1] : '00'}</span>\r\n </b>\r\n </div>\r\n <div className=\"a4-plan-controls\">\r\n <BubbleButton onClick={this.goToBuy} className=\"a4-plan-buy-now -primary\">{price ? 'Buy' : 'Take'} Now</BubbleButton>\r\n <Link to={`/course/${courseId}`} className=\"a4-plan-learn-more -individual-course\">About Course</Link>\r\n </div>\r\n </div>\r\n </div>\r\n </li>\r\n\r\n )\r\n }\r\n}\r\n\r\nexport default withRouter(IndividualCourse);","import React from 'react'\r\nimport './RadioButton.scss'\r\n\r\nclass RadioButton extends React.Component {\r\n // Component\r\n render() {\r\n return (\r\n <label className=\"a4-radio\"> {this.props.text}\r\n <input type=\"radio\" name={`radio${this.props.course}`} value={this.props.value} defaultChecked={this.props.index === 0} />\r\n <span className=\"a4-radio-button\"></span>\r\n </label>\r\n )\r\n }\r\n}\r\n\r\nexport default RadioButton;","import React from 'react'\r\nimport { withRouter } from 'react-router-dom'\r\nimport { isMobileOnly } from 'react-device-detect'\r\n\r\nimport BubbleButton from '../../shared/BubbleButton/BubbleButton'\r\nimport RadioButton from '../../shared/RadioButton/RadioButton'\r\nimport { ReactComponent as CheckMark } from '../../../assets/check-mark.svg'\r\n\r\nimport bootstrapService from '../../../services/BootstrapService'\r\nimport paymentService from '../../../services/PaymentService'\r\nimport scheduleService from '../../../services/ScheduleService'\r\n\r\nclass CourseBundle extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n // Constants\r\n const webinars = this.props.data.courseDigests.filter(c => c.schedules)\r\n this.webinar = webinars.length > 0 ? webinars[0] : null\r\n\r\n // State\r\n this.state = {\r\n schedule: this.webinar ? this.webinar.schedules[0] : null\r\n }\r\n\r\n // This Binding\r\n this.goToBuy = this.goToBuy.bind(this);\r\n this.changeSchedule = this.changeSchedule.bind(this);\r\n }\r\n\r\n // Event Handlers\r\n goToBuy(e) {\r\n paymentService.reset();\r\n paymentService.item = { ...this.props.data.item, quantity: 1 };\r\n paymentService.schedule = this.state.schedule;\r\n this.props.history.push(\"/buy\");\r\n }\r\n\r\n changeSchedule(e) {\r\n this.setState({ schedule: this.webinar.schedules[e.target.value] });\r\n }\r\n\r\n // Component\r\n render() {\r\n const title = this.props.data.item.title;\r\n const description = this.props.data.item.descriptionText;\r\n const courses = this.props.data.courseDigests;\r\n const price = this.props.data.item.price;\r\n\r\n const shortDescription = description.length > 300 ? description.substring(0, 350).split(\" \").slice(0, -1).join(\" \") + \"...\" : description;\r\n\r\n return (\r\n <li className=\"a4-plan-container -course-bundle\" data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-duration='1400' data-aos-delay=\"0\" data-aos-anchor-placement=\"top-bottom\">\r\n <div className=\"a4-plan-item\">\r\n <div className=\"a4-plan-section\">\r\n <h3 className=\"a4-plan-title\">{title}</h3>\r\n <p className=\"a4-plan-description -course-bundle\">{shortDescription}</p>\r\n <ul className=\"a4-plan-advantages -course-bundle\">\r\n {\r\n courses.map((course, courseIndex) => {\r\n return <li className=\"a4-plan-advantages-item -course-bundle\" key={courseIndex}>\r\n <svg className=\"a4-svgsprite\">\r\n <CheckMark stroke={bootstrapService.primaryColor} />\r\n </svg>\r\n <span className=\"a4-plan-advantages-item-text\">{course.title}</span>\r\n </li>\r\n })\r\n }\r\n </ul>\r\n {\r\n this.webinar &&\r\n <ul className=\"a4-plan-advantages -webinar\" onChange={this.changeSchedule}>\r\n {\r\n this.webinar.schedules.slice(0, 6).map((schedule, scheduleIndex) => {\r\n return <li className=\"a4-plan-advantages-item -webinar\" key={scheduleIndex}>\r\n <RadioButton value={scheduleIndex} index={scheduleIndex} course={this.webinar.id} />\r\n <span className=\"a4-plan-advantages-item-text\">{new Date(schedule.startDate).toLocaleDateString(\"en-US\", {weekday: 'long', month: 'short', day: 'numeric'})}, {new Date(schedule.startDate).toLocaleTimeString(\"en-US\", {hour: \"2-digit\", minute: \"2-digit\"})} - {new Date(schedule.endDate).toLocaleTimeString(\"en-US\", {hour: \"2-digit\", minute: \"2-digit\"})} ({scheduleService.getTimeZone()})</span>\r\n </li>\r\n })\r\n }\r\n </ul>\r\n }\r\n </div>\r\n <div className=\"a4-plan-section\">\r\n <div className=\"a4-plan-price\">\r\n <b className=\"a4-plan-price-digits\">\r\n <span className=\"a4-plan-price-int\">${String(price).split('.')[0]}</span>\r\n <span className=\"a4-plan-price-float\">.{String(price).split('.')[1] ? String(price).split('.')[1] : '00'}</span>\r\n </b>\r\n </div>\r\n <div className=\"a4-plan-controls\">\r\n <BubbleButton onClick={this.goToBuy} className=\"a4-plan-buy-now -primary\">Buy Now</BubbleButton>\r\n </div>\r\n </div>\r\n </div>\r\n </li>\r\n )\r\n }\r\n}\r\n\r\nexport default withRouter(CourseBundle);","import React from 'react'\r\nimport { withRouter } from 'react-router-dom'\r\nimport { isMobileOnly } from 'react-device-detect'\r\n\r\nimport BubbleButton from '../../shared/BubbleButton/BubbleButton'\r\n\r\nimport paymentService from '../../../services/PaymentService'\r\n\r\nclass GroupPlan extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n // This Binding\r\n this.goToCreateGroup = this.goToCreateGroup.bind(this);\r\n }\r\n\r\n // Event Handlers\r\n goToCreateGroup(e) {\r\n paymentService.reset();\r\n paymentService.item = this.props.data.item;\r\n paymentService.group = { isAdminOnly: false, minMembers: this.props.data.memberCountMin, maxMembers: this.props.data.memberCountMax };\r\n this.props.history.push(\"/create-group\");\r\n }\r\n\r\n // Component\r\n render() {\r\n const title = this.props.data.item.title; \r\n const description = this.props.data.item.descriptionText;\r\n const features = this.props.data.features;\r\n const price = this.props.data.item.price;\r\n\r\n const shortDescription = description.length > 300 ? description.substring(0, 350).split(\" \").slice(0, -1).join(\" \") + \"...\" : description;\r\n\r\n return (\r\n <li className=\"a4-plan-container\" data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-duration='1400' data-aos-delay=\"0\" data-aos-anchor-placement=\"top-bottom\">\r\n <div className=\"a4-plan-item\">\r\n <div className=\"a4-plan-section -group-plan\">\r\n <h3 className=\"a4-plan-title\">{title}</h3>\r\n <p className=\"a4-plan-description\">{shortDescription}</p>\r\n <div className=\"a4-plan-section-subsection\">\r\n <BubbleButton onClick={this.goToCreateGroup} className=\"a4-plan-buy-now -primary\">Buy Now</BubbleButton>\r\n <ul className=\"a4-plan-advantages -membership\">\r\n {\r\n features.map((feature, featureIndex) => {\r\n return <li className=\"a4-plan-advantages-item -membership\" key={featureIndex}>\r\n <div className=\"a4-plan-advantages-item-icon\">\r\n <img src={feature.imageUrl} alt=\"\" />\r\n </div>\r\n <span className=\"a4-plan-advantages-item-text\">{feature.value}</span>\r\n </li>\r\n })\r\n }\r\n </ul>\r\n </div>\r\n </div>\r\n <div className=\"a4-plan-section -group-plan\">\r\n <div className=\"a4-plan-price -group-plan\">\r\n <b className=\"a4-plan-price-digits\">\r\n <span className=\"a4-plan-price-int\">${String(price).split('.')[0]}</span>\r\n <span className=\"a4-plan-price-float\">.{String(price).split('.')[1] ? String(price).split('.')[1] : '00'}</span>\r\n </b>\r\n <span>Per Member</span>\r\n </div>\r\n <div className=\"a4-plan-controls -membership\">\r\n <BubbleButton onClick={this.goToCreateGroup} className=\"a4-plan-buy-now -primary\">Buy Now</BubbleButton>\r\n </div>\r\n </div>\r\n </div>\r\n </li>\r\n )\r\n }\r\n}\r\n\r\nexport default withRouter(GroupPlan);;","import React from 'react'\r\nimport { Link, withRouter } from 'react-router-dom'\r\nimport { isMobileOnly } from 'react-device-detect'\r\n\r\nimport BubbleButton from '../../shared/BubbleButton/BubbleButton'\r\nimport RadioButton from '../../shared/RadioButton/RadioButton'\r\n\r\nimport bootstrapService from '../../../services/BootstrapService'\r\nimport paymentService from '../../../services/PaymentService'\r\nimport scheduleService from '../../../services/ScheduleService'\r\n\r\nclass Webinar extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n // State\r\n this.state = {\r\n schedule: this.props.data.schedules[0]\r\n }\r\n\r\n // This Binding\r\n this.goToBuy = this.goToBuy.bind(this);\r\n this.changeSchedule = this.changeSchedule.bind(this);\r\n }\r\n\r\n // Event Handlers\r\n goToCourse(e) {\r\n if (window.innerWidth < 768) {\r\n this.props.history.push(`/course/${this.props.data.id}`);\r\n }\r\n }\r\n\r\n goToBuy(e) {\r\n paymentService.reset();\r\n paymentService.item = { ...this.props.data.item, quantity: 1};\r\n paymentService.schedule = this.state.schedule;\r\n this.props.history.push(\"/buy\");\r\n }\r\n\r\n changeSchedule(e) {\r\n this.setState({ schedule: this.props.data.schedules[e.target.value] });\r\n }\r\n\r\n // Component\r\n render() {\r\n const courseId = this.props.data.id;\r\n const title = this.props.data.item.title;\r\n const description = this.props.data.item.descriptionText;\r\n const category = this.props.data.subjectArea;\r\n const credits = this.props.data.credits;\r\n const courseNo = this.props.data.courseNo;\r\n const deliveryMethod = this.props.data.deliveryMethod;\r\n const schedules = this.props.data.schedules;\r\n const price = this.props.data.item.price;\r\n\r\n const shortDescription = description.length > 300 ? description.substring(0, 350).split(\" \").slice(0, -1).join(\" \") + \"...\" : description;\r\n\r\n const categoryTerm = bootstrapService.getCategoryTerm();\r\n\r\n return (\r\n <li className=\"a4-plan-container -course-bundle\" data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-duration='1400' data-aos-delay=\"0\" data-aos-anchor-placement=\"top-bottom\">\r\n <div className=\"a4-plan-item\">\r\n <div className=\"a4-plan-section -webinar\">\r\n <h3 className=\"a4-plan-title\" onClick={this.goToCourse}>{title}</h3>\r\n <p className=\"a4-plan-description -course-bundle\" onClick={this.goToCourse}>{shortDescription}</p>\r\n <ul className=\"a4-plan-advantages -individual-course\">\r\n <li className=\"a4-plan-advantages-item -individual-course\">\r\n <span className=\"a4-plan-advantages-item-title\"><span className=\"text-primary\">{categoryTerm}:</span></span>\r\n <span className=\"a4-plan-advantages-item-value\">{category}</span>\r\n </li>\r\n <li className=\"a4-plan-advantages-item -individual-course\">\r\n <span className=\"a4-plan-advantages-item-title\"><span className=\"text-primary\">Delivery Method</span></span>\r\n <span className=\"a4-plan-advantages-item-value\">{deliveryMethod}</span>\r\n </li>\r\n <li className=\"a4-plan-advantages-item -individual-course\">\r\n <span className=\"a4-plan-advantages-item-title\"><span className=\"text-primary\">{bootstrapService.getCreditsTerm(2)}:</span></span>\r\n <span className=\"a4-plan-advantages-item-value\">{credits.toFixed(1)}</span>\r\n </li>\r\n </ul>\r\n <ul className=\"a4-plan-advantages -webinar\" onChange={this.changeSchedule}>\r\n <li className=\"a4-plan-advantages-item -webinar-title\">\r\n <span className=\"a4-plan-advantages-item-title\"><span className=\"text-primary\">Dates & Times:</span></span>\r\n </li>\r\n {\r\n schedules.slice(0, 6).map((schedule, scheduleIndex) => {\r\n return <li className=\"a4-plan-advantages-item -webinar\" key={scheduleIndex}>\r\n <RadioButton value={scheduleIndex} index={scheduleIndex} course={courseId} />\r\n <span className=\"a4-plan-advantages-item-text\">{new Date(schedule.startDate).toLocaleDateString(\"en-US\", {weekday: 'long', month: 'short', day: 'numeric'})}, {new Date(schedule.startDate).toLocaleTimeString(\"en-US\", {hour: \"2-digit\", minute: \"2-digit\"})} - {new Date(schedule.endDate).toLocaleTimeString(\"en-US\", {hour: \"2-digit\", minute: \"2-digit\"})} ({scheduleService.getTimeZone()})</span>\r\n </li>\r\n })\r\n }\r\n </ul>\r\n </div> \r\n <div className=\"a4-plan-section -webinar\">\r\n <div className=\"a4-plan-price\">\r\n <b className=\"a4-plan-price-digits\">\r\n <span className=\"a4-plan-price-int\">${String(price).split('.')[0]}</span>\r\n <span className=\"a4-plan-price-float\">.{String(price).split('.')[1] ? String(price).split('.')[1] : '00'}</span>\r\n </b>\r\n </div>\r\n <div className=\"a4-plan-controls\">\r\n <BubbleButton onClick={this.goToBuy} className=\"a4-plan-buy-now -primary\">Buy Now</BubbleButton>\r\n <Link to={`/course/${courseId}`} className=\"a4-plan-learn-more -individual-course\">About Course</Link>\r\n </div>\r\n </div>\r\n </div>\r\n </li>\r\n )\r\n }\r\n}\r\n\r\nexport default withRouter(Webinar);","import React from 'react'\r\nimport './Pricing.scss'\r\nimport './Plans.scss'\r\nimport $ from 'jquery'\r\nimport 'select2'\r\nimport { debounce } from '../../utils/debounce'\r\nimport { getKey } from '../../utils/key'\r\nimport { isMobileOnly } from 'react-device-detect'\r\n\r\nimport Navbar from '../shared/Navbar/Navbar'\r\nimport Membership from './Plans/Membership'\r\nimport IndividualCourse from './Plans/IndividualCourse'\r\nimport CourseBundle from './Plans/CourseBundle'\r\nimport GroupPlan from './Plans/GroupPlan'\r\nimport Webinar from './Plans/Webinar'\r\nimport Pages from '../shared/Pages/Pages'\r\nimport Empty from '../shared/Empty/Empty'\r\nimport Subscribe from '../shared/Subscribe/Subscribe'\r\nimport Footer from '../shared/Footer/Footer'\r\nimport { ReactComponent as FilterBars } from '../../assets/filter-bars.svg'\r\nimport { ReactComponent as Error } from '../../assets/error.svg'\r\nimport { ReactComponent as Cancel } from '../../assets/cancel.svg'\r\n\r\nimport bootstrapService from '../../services/BootstrapService'\r\n\r\nclass Pricing extends React.Component {\r\n // Constructor\r\n constructor(props) {\r\n super(props);\r\n\r\n // Refs\r\n this.filterMenu = null;\r\n this.planFilter = null;\r\n this.mobileFilterMenu = null;\r\n this.mobilePlanFilter = null;\r\n this.mobileSubmitButton = null;\r\n this.plansList = null;\r\n\r\n // State\r\n this.state = {\r\n currentPlan: this.props.match.params.plan,\r\n searchFilter: null,\r\n sortFilter: null,\r\n pageNumber: 0,\r\n }\r\n\r\n // Event Binding\r\n this.openMobileFilterMenu = this.openMobileFilterMenu.bind(this);\r\n this.closeMobileFilterMenu = this.closeMobileFilterMenu.bind(this);\r\n this.clickMobileFilterItem = this.clickMobileFilterItem.bind(this);\r\n this.clickMobileFilterSubmit = this.clickMobileFilterSubmit.bind(this);\r\n this.changePlansPage = this.changePlansPage.bind(this);\r\n this.searchCourses = debounce(this.searchCourses.bind(this), 400);\r\n this.searchCoursesMobile = debounce(this.searchCoursesMobile.bind(this), 400);\r\n }\r\n\r\n // Lifecyle\r\n componentDidMount() {\r\n window.scrollTo(0, 0);\r\n this.setupSelects();\r\n this.setupMobileFilter();\r\n }\r\n\r\n componentDidUpdate() {\r\n this.updateSelects();\r\n this.updateCurrentPlan();\r\n }\r\n\r\n // Helpers\r\n setupSelects() {\r\n $('.a4-select select').select2({\r\n minimumResultsForSearch: -1,\r\n });\r\n\r\n $('.a4-select select').on(\"change\", (e, shouldIgnore, shouldIgnoreHistory) => {\r\n if (!shouldIgnore) {\r\n const { filterType } = e.currentTarget.dataset;\r\n this.setMobileFilterActive(filterType, e.currentTarget.value);\r\n \r\n if (filterType === \"category\") {\r\n if (this.state.currentPlan !== e.currentTarget.value) {\r\n this.filterPlans(e.currentTarget.value)\r\n\r\n if (!shouldIgnoreHistory) {\r\n this.props.history.push(`/pricing/${e.currentTarget.value}`);\r\n }\r\n }\r\n }\r\n else if (filterType === \"sort\") {\r\n this.sortPlans(e.currentTarget.value)\r\n }\r\n }\r\n });\r\n\r\n $(this.planFilter).children().each((index, plan) => {\r\n if (plan.value === this.state.currentPlan) {\r\n $(this.planFilter).val(plan.value);\r\n $(this.planFilter).trigger(\"change\", [false, false]);\r\n }\r\n });\r\n }\r\n\r\n updateSelects() {\r\n if (!$('.a4-select select').first().hasClass(\"select2-hidden-accessible\")) {\r\n this.setupSelects();\r\n }\r\n }\r\n\r\n updateCurrentPlan() {\r\n // Back Button Clicked\r\n window.onpopstate = (e) => {\r\n if (this.props.match.params.plan !== this.state.currentPlan) {\r\n $(this.planFilter).val(this.props.match.params.plan);\r\n $(this.planFilter).trigger(\"change\", [false, true]);\r\n }\r\n } \r\n }\r\n\r\n setMobileFilterActive(filterType, filterValue) {\r\n const filter = $(this.mobileFilterMenu).find(`.a4-mobile-filter-items-item[data-filter-type='${filterType}'][data-value='${filterValue}']`);\r\n filter.addClass(\"-active\");\r\n filter.siblings(\".-active\").removeClass(\"-active\");\r\n\r\n const select = $(this.filterMenu).find(`select[data-filter-type='${filterType}']`);\r\n select.val(filter.data().value);\r\n select.trigger(\"change\", true);\r\n }\r\n\r\n setupMobileFilter() {\r\n $(this.mobilePlanFilter).children().each((index, plan) => {\r\n if (plan.dataset.value === this.path) {\r\n plan.classList.add(\"-active\")\r\n }\r\n });\r\n }\r\n\r\n filterPlans(filterOption) {\r\n this.enableMobileSpinner();\r\n this.setState({\r\n currentPlan: filterOption !== \"\" ? filterOption : null,\r\n }, this.disableMobileSpinner())\r\n }\r\n\r\n sortPlans(sortOption) {\r\n this.enableMobileSpinner();\r\n this.setState({\r\n sortFilter: sortOption,\r\n }, this.disableMobileSpinner());\r\n }\r\n\r\n enableMobileSpinner() {\r\n this.mobileSubmitButton.setAttribute(\"disabled\", true);\r\n this.mobileSubmitButton.classList.add(\"-loading\");\r\n }\r\n\r\n disableMobileSpinner() {\r\n if (this.mobileSubmitButton) {\r\n this.mobileSubmitButton.removeAttribute(\"disabled\");\r\n this.mobileSubmitButton.classList.remove(\"-loading\");\r\n }\r\n }\r\n\r\n // Event Handlers\r\n openMobileFilterMenu() {\r\n document.body.classList.add(\"overflow-hidden\");\r\n this.mobileFilterMenu.classList.add(\"-open\");\r\n this.disableMobileSpinner();\r\n }\r\n\r\n closeMobileFilterMenu() {\r\n document.body.classList.remove(\"overflow-hidden\");\r\n this.mobileFilterMenu.classList.remove(\"-open\");\r\n }\r\n\r\n clickMobileFilterItem(e) {\r\n this.enableMobileSpinner();\r\n\r\n const { filterType, value } = e.currentTarget.dataset;\r\n this.setMobileFilterActive(filterType, value);\r\n\r\n setTimeout((filterType, value) => {\r\n if (filterType === \"category\") {\r\n this.filterPlans(value)\r\n this.props.history.push(`/pricing/${value}`);\r\n }\r\n else if (filterType === \"sort\") {\r\n this.sortPlans(value);\r\n }\r\n }, 500, filterType, value);\r\n }\r\n\r\n clickMobileFilterSubmit() {\r\n this.closeMobileFilterMenu();\r\n }\r\n\r\n changePlansPage(e, page) {\r\n window.scrollTo(0, 0);\r\n this.setState( { pageNumber: page-1 });\r\n }\r\n\r\n searchCourses(e) {\r\n $(this.mobileFilterMenu).find(\".a4-input\").find(\"input\").val(e.target.value)\r\n this.setState({\r\n searchFilter: e.target.value !== \"\" ? e.target.value.toLowerCase() : null,\r\n });\r\n }\r\n\r\n searchCoursesMobile(e) {\r\n this.enableMobileSpinner();\r\n $(this.filterMenu).find(\".a4-input\").find(\"input\").val(e.target.value)\r\n \r\n setTimeout(() => {\r\n this.setState({\r\n searchFilter: e.target.value !== \"\" ? e.target.value.toLowerCase() : null,\r\n }, this.disableMobileSpinner());\r\n }, 600);\r\n }\r\n\r\n sortCourses(a, b) {\r\n //sort by course.order (first)\r\n let aval = typeof a.order !== 'undefined' ? a.order : null;\r\n let bval = typeof b.order !== 'undefined' ? b.order : null;\r\n if (aval === bval) {\r\n //sort by course.title (second, when order is same)\r\n if (a.title === b.title) {\r\n return 0;\r\n }\r\n return a.title < b.title ? -1 : 1;\r\n }\r\n return aval > bval ? -1 : 1;\r\n }\r\n\r\n sortPassTypes(a, b) {\r\n //sort by passType.order (first)\r\n let aval = typeof a.order !== 'undefined' ? a.order : null;\r\n let bval = typeof b.order !== 'undefined' ? b.order : null;\r\n if (aval === bval) {\r\n //sort by passType.name (second, when order is same)\r\n if (a.name === b.name) {\r\n return 0;\r\n }\r\n return a.name < b.name ? -1 : 1;\r\n }\r\n return aval > bval ? -1 : 1;\r\n }\r\n\r\n sortBundleTypes(a, b) {\r\n //sort by bundleType.order (first)\r\n let aval = typeof a.order !== 'undefined' ? a.order : null;\r\n let bval = typeof b.order !== 'undefined' ? b.order : null;\r\n if (aval ===bval) {\r\n //sort by bundleType.name (second, when order is same)\r\n if (a.name === b.name) {\r\n return 0;\r\n }\r\n return a.name < b.name ? -1 : 1;\r\n }\r\n return aval > bval ? -1 : 1;\r\n }\r\n\r\n sortGroupTypes(a, b) {\r\n //sort by groupType.order (first)\r\n let aval = typeof a.order !== 'undefined' ? a.order : null;\r\n let bval = typeof b.order !== 'undefined' ? b.order : null;\r\n if (aval === bval) {\r\n //sort by groupType.name (second, when order is same)\r\n if (a.name === b.name) {\r\n return 0;\r\n }\r\n return a.name < b.name ? -1 : 1;\r\n }\r\n return aval > bval ? -1 : 1;\r\n }\r\n\r\n // Data\r\n getPlans() {\r\n let plans = null;\r\n let sorter = null;\r\n\r\n if (bootstrapService.data) {\r\n if (this.state.currentPlan === \"memberships\") {\r\n plans = bootstrapService.data.passTypes;\r\n sorter = this.sortPassTypes;\r\n }\r\n else if (this.state.currentPlan === \"individual-courses\") {\r\n plans = bootstrapService.data.courseCatalog.courses.filter(c => c.hasOwnProperty(\"item\"));\r\n sorter = this.sortCourses;\r\n }\r\n else if (this.state.currentPlan === \"course-bundles\") {\r\n plans = bootstrapService.data.courseBundleTypes;\r\n sorter = this.sortBundleTypes;\r\n }\r\n else if (this.state.currentPlan === \"group-plans\") {\r\n plans = bootstrapService.data.groupTypes;\r\n sorter = this.sortGroupTypes;\r\n }\r\n }\r\n\r\n if (plans && this.state.searchFilter) {\r\n plans = plans.filter(p => p.title.toLowerCase().search(this.state.searchFilter) > -1)\r\n }\r\n\r\n if (plans && this.state.sortFilter) {\r\n if (this.state.sortFilter === \"default\") {\r\n plans = plans.sort(sorter)\r\n }\r\n else if (this.state.sortFilter === \"title\") {\r\n plans = plans.sort(function(a, b) {\r\n if (a.item.title === b.item.title) {\r\n return 0;\r\n }\r\n\r\n return a.item.title < b.item.title ? -1 : 1;\r\n })\r\n }\r\n else if (this.state.sortFilter === \"price\") {\r\n plans = plans.sort(function(a, b) {\r\n if (a.item.price === b.item.price) {\r\n return 0;\r\n }\r\n\r\n return a.item.price < b.item.price ? -1 : 1;\r\n })\r\n }\r\n else {\r\n console.log(\"INVALID SORT OPTION\")\r\n }\r\n }\r\n\r\n return plans;\r\n }\r\n\r\n getCurrentPlanType() {\r\n if (this.state.currentPlan === \"memberships\") {\r\n return \"Memberships\"\r\n }\r\n else if (this.state.currentPlan === \"individual-courses\") {\r\n return \"Courses\"\r\n }\r\n else if (this.state.currentPlan === \"course-bundles\") {\r\n return \"Bundles\"\r\n }\r\n else if (this.state.currentPlan === \"group-plans\") {\r\n return \"Group Plans\"\r\n }\r\n\r\n return \"Plans\";\r\n }\r\n\r\n // Component\r\n render() {\r\n const pricingData = bootstrapService.data.landing.pages.find(p => p.name === \"pricing\");\r\n\r\n const header = pricingData ? pricingData.header : null;\r\n const body = pricingData ? pricingData.bodyText : null;\r\n const categoryFilters = pricingData ? pricingData.itemsFilter : null;\r\n const sortOptions = pricingData ? pricingData.sortOptions : null;\r\n\r\n const plans = this.getPlans();\r\n const pagedPlans = plans ? plans.slice(10*this.state.pageNumber, 10*this.state.pageNumber+10) : null;\r\n\r\n const planType = this.getCurrentPlanType();\r\n\r\n const renderKey = getKey();\r\n\r\n return (\r\n <>\r\n {\r\n pricingData &&\r\n <>\r\n <Navbar backgroundColor=\"-primary-light\" activeLink=\"pricing\" />\r\n <div className=\"a4-view\">\r\n <div className=\"a4-layout a4-pricing\">\r\n <header className=\"a4-pricing-header\">\r\n <div className=\"a4-pricing-container\">\r\n <section className=\"a4-pricing-page-title\">\r\n <div className=\"a4-pricing-page-title-filler\"></div>\r\n <h1 className=\"title\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>{header}</h1>\r\n <p className=\"description\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>{body}</p>\r\n </section>\r\n <section className=\"a4-pricing-filter-panel\">\r\n <div className=\"a4-pricing-filter-panel-filler\"></div>\r\n <div className=\"a4-pricing-filter-panel-container\">\r\n <div className=\"a4-pricing-filter-panel-content\" data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-delay=\"50\" data-aos-anchor-placement=\"top-bottom\" ref={div => this.filterMenu = div}>\r\n <div className=\"a4-pricing-filter-panel-section-1 md_hidden\">\r\n <button className=\"a4-btn\" id=\"filter-menu-btn\" onClick={this.openMobileFilterMenu}>\r\n <i>\r\n <svg className=\"a4-svgsprite\">\r\n <FilterBars stroke={bootstrapService.secondaryColor} />\r\n </svg>\r\n </i>\r\n <span>\r\n Browse\r\n </span>\r\n </button> \r\n </div>\r\n <div className=\"a4-pricing-filter-panel-section-2\">\r\n {\r\n categoryFilters && categoryFilters.length > 0 &&\r\n <div className=\"filter-item\" id=\"category-filter\">\r\n <div className=\"a4-select\">\r\n <select data-filter-type=\"category\" ref={select => this.planFilter = select}>\r\n {\r\n categoryFilters.map((filter, index) => {\r\n return <option value={filter.replace(/\\s+/g, \"-\").trim().toLowerCase()} key={index}>{filter}</option>\r\n })\r\n }\r\n </select>\r\n </div>\r\n </div> \r\n }\r\n {\r\n this.state.currentPlan === \"individual-courses\" &&\r\n <div className=\"a4-input -search filter-item\" data-aos={isMobileOnly ? undefined : \"fade\"}>\r\n <input required placeholder=\"Search\" onChange={this.searchCourses} />\r\n <label>Search</label>\r\n <span className=\"a4-input-error\"></span>\r\n <svg className=\"a4-svgsprite -error text-secondary\">\r\n <Error />\r\n </svg>\r\n </div>\r\n }\r\n </div>\r\n <div className=\"a4-pricing-filter-panel-section-3\">\r\n {\r\n sortOptions && sortOptions.length > 0 &&\r\n <>\r\n <div className=\"a4-pricing-filter-panel-section-title\">\r\n <h4>Sort</h4>\r\n </div>\r\n <div id=\"sort-filter\">\r\n <div className=\"a4-select\">\r\n <select data-filter-type='sort'>\r\n <option value=\"default\" key={0}>Default</option>\r\n {\r\n sortOptions.map((option, index) => {\r\n return <option value={option.replace(/\\s+/g, \"-\").trim().toLowerCase()} key={index+1}>{option}</option>\r\n })\r\n }\r\n </select>\r\n </div>\r\n </div>\r\n </>\r\n }\r\n </div>\r\n </div>\r\n <div className=\"a4-mobile-filter-menu\" ref={div => this.mobileFilterMenu = div}>\r\n <div className=\"a4-mobile-filter-container\">\r\n <div className=\"a4-mobile-filter-content\">\r\n <div className=\"a4-mobile-filter-top\">\r\n <div className=\"a4-mobile-filter-title\">\r\n <h4>Browse</h4>\r\n </div>\r\n <div className=\"a4-mobile-filter-cancel\" onClick={this.closeMobileFilterMenu}>\r\n <svg className=\"a4-svgsprite -cancel\">\r\n <Cancel />\r\n </svg>\r\n </div>\r\n </div>\r\n {\r\n this.state.currentPlan === \"individual-courses\" &&\r\n <div className=\"a4-mobile-filter-search\">\r\n <div className=\"a4-input -search filter-item\" data-aos={isMobileOnly ? undefined : \"fade\"}>\r\n <input required placeholder=\"Search\" onChange={this.searchCoursesMobile} />\r\n <label>Search</label>\r\n <span className=\"a4-input-error\"></span>\r\n <svg className=\"a4-svgsprite -error text-secondary\">\r\n <Error />\r\n </svg>\r\n </div>\r\n </div>\r\n }\r\n <div className=\"a4-mobile-filter-list\">\r\n {\r\n categoryFilters && categoryFilters.length > 0 &&\r\n <>\r\n <div className=\"a4-mobile-filter-list-title\">\r\n <h4>Category</h4>\r\n </div>\r\n <ul className=\"a4-mobile-filter-items\" ref={ul => this.mobilePlanFilter = ul}>\r\n {\r\n categoryFilters.map((filter, index) => {\r\n return <li className=\"a4-mobile-filter-items-item\" data-filter-type=\"category\" data-value={filter.replace(/\\s+/g, \"-\").trim().toLowerCase()} key={index} onClick={this.clickMobileFilterItem}>\r\n <span>{filter}</span>\r\n </li>\r\n })\r\n }\r\n </ul>\r\n </>\r\n }\r\n </div>\r\n <div className=\"a4-mobile-filter-list\">\r\n {\r\n sortOptions && sortOptions.length > 0 &&\r\n <>\r\n <div className=\"a4-mobile-filter-list-title\">\r\n <h4>Sort</h4>\r\n </div>\r\n <ul className=\"a4-mobile-filter-items\">\r\n <li className=\"a4-mobile-filter-items-item -active\" data-filter-type=\"sort\" data-value=\"default\" key={0} onClick={this.clickMobileFilterItem}>\r\n <span>Default</span>\r\n </li> \r\n {\r\n sortOptions.map((option, index) => {\r\n return <li className=\"a4-mobile-filter-items-item\" data-filter-type=\"sort\" data-value={option.replace(/\\s+/g, \"-\").trim().toLowerCase()} key={index+1} onClick={this.clickMobileFilterItem}>\r\n <span>{option}</span>\r\n </li>\r\n })\r\n }\r\n </ul>\r\n </>\r\n }\r\n </div>\r\n </div>\r\n <div className=\"a4-mobile-filter-control\">\r\n <button className=\"a4-btn -primary\" ref={button => this.mobileSubmitButton = button} onClick={this.clickMobileFilterSubmit}>\r\n Show \r\n <span className=\"a4-mobile-filter-control-course-count\">{plans ? plans.length : \"\"} {planType}</span>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n </div>\r\n </header>\r\n <div className=\"a4-pricing-container\">\r\n <section className=\"a4-pricing-memberships\" key={renderKey}>\r\n <ul className=\"a4-pricing-list\" ref={ul => this.plansList = ul}>\r\n {\r\n pagedPlans &&\r\n <>\r\n {\r\n this.state.currentPlan === \"memberships\" &&\r\n pagedPlans.map((membership, index) => {\r\n return <Membership key={index} data={membership} />\r\n })\r\n }\r\n {\r\n this.state.currentPlan === \"individual-courses\" &&\r\n pagedPlans.map((course, index) => {\r\n if (course.schedules) {\r\n return <Webinar key={index} data={course} />\r\n }\r\n else {\r\n return <IndividualCourse key={index} data={course} />\r\n }\r\n \r\n })\r\n }\r\n {\r\n this.state.currentPlan === \"course-bundles\" &&\r\n pagedPlans.map((bundle, index) => {\r\n return <CourseBundle key={index} data={bundle} />\r\n })\r\n }\r\n {\r\n this.state.currentPlan === \"group-plans\" &&\r\n pagedPlans.map((plan, index) => {\r\n return <GroupPlan key={index} data={plan} />\r\n })\r\n }\r\n </>\r\n }\r\n </ul>\r\n {\r\n plans && plans.length > 10 &&\r\n <Pages count={Math.ceil(plans.length/10)} page={this.state.pageNumber + 1} size=\"large\" onChange={this.changePlansPage}/>\r\n }\r\n {\r\n this.state.searchFilter && plans.length === 0 &&\r\n <Empty name=\"pricing\"/>\r\n }\r\n </section>\r\n <Subscribe />\r\n <Footer />\r\n </div>\r\n </div>\r\n </div>\r\n </>\r\n }\r\n </>\r\n )\r\n }\r\n}\r\n\r\nexport default Pricing;","import React from 'react'\r\nimport './Buy.scss'\r\nimport $ from 'jquery'\r\nimport 'select2'\r\nimport gsap from 'gsap'\r\nimport { isMobileOnly } from 'react-device-detect'\r\n\r\nimport Navbar from '../shared/Navbar/Navbar'\r\nimport Footer from '../shared/Footer/Footer'\r\nimport FullNameInput from '../shared/FullNameInput/FullNameInput'\r\nimport BubbleButton from '../shared/BubbleButton/BubbleButton'\r\nimport { ReactComponent as Error } from '../../assets/error.svg'\r\n\r\nimport bootstrapService from '../../services/BootstrapService'\r\nimport formService from '../../services/FormService'\r\nimport paymentService from '../../services/PaymentService'\r\nimport memberService from '../../services/MemberService'\r\nimport recaptchaService from '../../services/RecaptchaService'\r\nimport scheduleService from '../../services/ScheduleService'\r\nimport { MemberType } from '../../services/MemberService'\r\n\r\nclass Buy extends React.Component {\r\n // Constructor\r\n constructor(props) {\r\n super(props);\r\n\r\n // Refs\r\n this.form = null;\r\n this.userSwitcher = null;\r\n this.userSwitch = null;\r\n this.nameInput = null;\r\n this.passwordInput = null;\r\n this.confirmInput = null;\r\n\r\n // State\r\n this.state = {\r\n useFullName: true,\r\n }\r\n\r\n // This Binding\r\n this.clickSwitch = this.clickSwitch.bind(this);\r\n this.ignoreFullName = this.ignoreFullName.bind(this);\r\n this.fillSandboxForm = this.fillSandboxForm.bind(this);\r\n this.submitForm = this.submitForm.bind(this);\r\n }\r\n\r\n // Lifecyle\r\n componentDidMount() {\r\n window.scrollTo(0, 0);\r\n this.setupSelects();\r\n this.setupSwitcher();\r\n }\r\n\r\n componentDidUpdate() {\r\n this.setupSelects();\r\n }\r\n\r\n // Helpers\r\n setupSwitcher() {\r\n if (this.userSwitcher) {\r\n const userSelections = this.userSwitcher.querySelectorAll(\".a4-buy-form-selection\");\r\n \r\n if (paymentService.memberType === \"register\") {\r\n userSelections[0].classList.add(\"-active\");\r\n this.userSwitch.style.width = userSelections[0].offsetWidth + 5 + \"px\";\r\n this.userSwitch.style.left = userSelections[0].offsetLeft + 20 + \"px\";\r\n this.toggleAccountInputs(\"register\");\r\n }\r\n else {\r\n userSelections[1].classList.add(\"-active\");\r\n this.userSwitch.style.width = userSelections[1].offsetWidth + 5 + \"px\";\r\n this.userSwitch.style.left = userSelections[1].offsetLeft + 20 + \"px\";\r\n this.toggleAccountInputs(\"login\");\r\n }\r\n }\r\n }\r\n\r\n setupSelects() {\r\n $('.a4-select select').select2({\r\n minimumResultsForSearch: -1,\r\n });\r\n\r\n $('.a4-buy-form-btn-group-user select, .a4-buy-form-btn-group-payment select').on(\"change\", (e, shouldIgnore) => {\r\n if (!shouldIgnore) {\r\n const selectedSwitch = $(this.userSwitcher).find(\".a4-buy-form-selection\").filter(`[data-value=\"${e.currentTarget.value}\"]`)[0];\r\n\r\n if (selectedSwitch) {\r\n this.setSwitchActive(selectedSwitch);\r\n this.toggleAccountInputs(e.currentTarget.value);\r\n paymentService.memberType = e.currentTarget.value;\r\n }\r\n }\r\n });\r\n }\r\n\r\n setSwitchActive(selection) {\r\n formService.hideAllErrors(this.form);\r\n \r\n $(selection).siblings().removeClass(\"-active\");\r\n selection.classList.add(\"-active\");\r\n\r\n gsap.to(this.userSwitch, {\r\n width: selection.offsetWidth,\r\n left: selection.offsetLeft + 20,\r\n duration: 0.2,\r\n });\r\n }\r\n \r\n toggleAccountInputs(value) {\r\n if (value === \"login\") {\r\n this.nameInput.hideInputs();\r\n\r\n $(this.passwordInput).css(\"margin-bottom\", 0)\r\n this.confirmInput.classList.add(\"-disabled\");\r\n $(this.confirmInput).hide(200);\r\n\r\n } else {\r\n this.nameInput.showInputs();\r\n\r\n $(this.confirmInput).show(0, () => {\r\n $(this.passwordInput).css(\"margin-bottom\", 34)\r\n this.confirmInput.classList.remove(\"-disabled\");\r\n });\r\n }\r\n }\r\n\r\n // Event Handlers\r\n clickSwitch(e) {\r\n if (!e.currentTarget.classList.contains(\"-active\")) {\r\n this.setSwitchActive(e.currentTarget);\r\n this.toggleAccountInputs(e.currentTarget.dataset.value);\r\n\r\n const select = $(e.currentTarget).parent().find(\"select\");\r\n select.val(e.currentTarget.dataset.value);\r\n select.trigger(\"change\", true);\r\n\r\n paymentService.memberType = e.currentTarget.dataset.value;\r\n }\r\n }\r\n\r\n fillSandboxForm(e) {\r\n e.preventDefault();\r\n\r\n if (e.ctrlKey || e.metaKey) {\r\n\r\n const inputs = this.form.querySelectorAll('.a4-input');\r\n\r\n inputs[0].querySelector(\"input, textarea\").value = \"Erick Harris\"\r\n inputs[1].querySelector(\"input, textarea\").value = \"eh1@harris5.com\"\r\n inputs[2].querySelector(\"input, textarea\").value = \"password\"\r\n }\r\n }\r\n\r\n ignoreFullName() {\r\n this.setState({ useFullName: false });\r\n }\r\n\r\n submitForm(e) {\r\n e.preventDefault();\r\n\r\n const isFormValid = formService.validate(this.form);\r\n\r\n const email = e.target.email.value.trim();\r\n const password = e.target.password.value;\r\n const confirm = e.target.confirm.value;\r\n\r\n if (paymentService.memberType === \"register\" && password !== confirm) {\r\n formService.showInputError(this.form, \"confirm\", \"This password does not match\");\r\n formService.hideLoadingButton(this.form);\r\n return;\r\n }\r\n\r\n if(!isFormValid) return;\r\n\r\n formService.showLoadingButton(this.form);\r\n\r\n let memberRequest = {email, password};\r\n\r\n recaptchaService.getToken(paymentService.paymentType)\r\n .then(token => {\r\n memberRequest.recaptchaToken = token;\r\n\r\n if (paymentService.memberType === \"register\") {\r\n memberRequest.requestType = 1;\r\n memberRequest.memberType = MemberType.Payment;\r\n memberRequest.timezoneOffset = -(new Date().getTimezoneOffset() / 60);\r\n memberRequest.contactId = memberService.getMtcId();\r\n\r\n if (this.state.useFullName) {\r\n memberRequest.firstName = e.target.fullName.value.split(\" \")[0];\r\n memberRequest.lastName = e.target.fullName.value.split(\" \")[1];\r\n }\r\n else {\r\n memberRequest.firstName = e.target.firstName.value;\r\n memberRequest.middleName = e.target.middleName.value;\r\n memberRequest.lastName = e.target.lastName.value;\r\n }\r\n \r\n memberService.checkEmailInUse(memberRequest)\r\n .then((isInUse) => {\r\n if (isInUse) {\r\n formService.hideAllErrors(this.form);\r\n formService.hideLoadingButton(this.form);\r\n formService.showInputError(this.form, \"email\", \"This email address is already taken\")\r\n }\r\n else {\r\n memberService.validateMember(memberRequest)\r\n .then(json => {\r\n if (json.succeeded) {\r\n paymentService.member = memberRequest;\r\n this.props.history.push(\"/payment\");\r\n }\r\n else {\r\n formService.hideAllErrors(this.form);\r\n formService.hideLoadingButton(this.form);\r\n formService.showFormError(this.form, json.errors[0]);\r\n }\r\n });\r\n }\r\n }) \r\n }\r\n else if (paymentService.memberType === \"login\") {\r\n memberRequest.requestType = 0;\r\n memberRequest.contactId = memberService.getMtcId();\r\n\r\n memberService.validateMember(memberRequest)\r\n .then(json => {\r\n if (json.succeeded) {\r\n paymentService.member = memberRequest;\r\n this.props.history.push(\"/payment\");\r\n }\r\n else {\r\n formService.hideAllErrors(this.form);\r\n formService.hideLoadingButton(this.form);\r\n formService.showFormError(this.form, json.errors[0]);\r\n }\r\n }) \r\n }\r\n })\r\n }\r\n\r\n // Component\r\n render() {\r\n // Go Home If No Payment Data\r\n if (!paymentService.item) {\r\n this.props.history.push(`/pricing/${bootstrapService.defaultPlanType}`);\r\n return null;\r\n }\r\n\r\n const title = paymentService.item ? paymentService.item.title : null;\r\n const schedule = paymentService.schedule ? `${new Date(paymentService.schedule.startDate).toLocaleDateString(\"en-US\", {weekday: 'long', month: 'short', day: 'numeric'})}, ${new Date(paymentService.schedule.startDate).toLocaleTimeString(\"en-US\", {hour: \"2-digit\", minute: \"2-digit\"})} - ${new Date(paymentService.schedule.endDate).toLocaleTimeString(\"en-US\", {hour: \"2-digit\", minute: \"2-digit\"})} (${scheduleService.getTimeZone()})` : null;\r\n\r\n const firstName = paymentService.member ? paymentService.member.firstName : \"\";\r\n const middleName = paymentService.member ? paymentService.member.middleName : \"\";\r\n const lastName = paymentService.member ? paymentService.member.lastName : \"\";\r\n const email = paymentService.member ? paymentService.member.email : \"\";\r\n const password = paymentService.member ? paymentService.member.password : \"\";\r\n\r\n return (\r\n <>\r\n <Navbar />\r\n <div className=\"a4-view\">\r\n <div className=\"a4-layout a4-buy\">\r\n <section className=\"a4-buy-container\">\r\n <div className=\"a4-buy-content\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n <header className=\"a4-buy-title\">\r\n <h1>\r\n {title}\r\n </h1>\r\n {\r\n schedule &&\r\n <h3>\r\n {schedule}\r\n </h3>\r\n } \r\n </header>\r\n <form className=\"a4-buy-form\" ref={form => this.form = form} onSubmit={this.submitForm}>\r\n <div className=\"a4-buy-form-group\">\r\n <div className=\"a4-buy-form-group-switcher-container -user\" ref={div => this.userSwitcher = div}>\r\n <div className=\"a4-buy-form-btn-group a4-buy-form-btn-group-user\">\r\n <div className=\"a4-select sm_hidden\">\r\n <select defaultValue=\"register\">\r\n <option value=\"register\">Create New Account</option>\r\n <option value=\"login\">Login To My Account</option>\r\n </select>\r\n </div>\r\n <div className=\"a4-buy-form-selection hidden sm_block\" type=\"button\" data-value=\"register\" onClick={this.clickSwitch}>\r\n Create New Account\r\n </div>\r\n <div className=\"a4-buy-form-selection hidden sm_block\" type=\"button\" data-value=\"login\" onClick={this.clickSwitch}>\r\n Login To My Account\r\n </div>\r\n </div>\r\n <div className=\"a4-switcher\" ref={div => this.userSwitch = div}></div>\r\n </div>\r\n <FullNameInput ref={div => this.nameInput = div} ignoreFullName={this.ignoreFullName} firstName={firstName} middleName={middleName} lastName={lastName}/>\r\n <div className=\"a4-input\">\r\n <input name=\"email\" required placeholder=\"E-mail address\" defaultValue={email} />\r\n <label htmlFor=\"email\">E-mail address</label>\r\n <span className=\"a4-input-error\">Enter a valid e-mail address</span>\r\n <svg className=\"a4-svgsprite -error text-secondary\">\r\n <Error />\r\n </svg>\r\n </div>\r\n <div className=\"a4-input\" ref={div => this.passwordInput = div}>\r\n <input name=\"password\" placeholder=\"Password\" required type=\"password\" defaultValue={password} />\r\n <label htmlFor=\"password\">Password</label>\r\n <span className=\"a4-input-error\">Enter a valid password</span>\r\n <svg className=\"a4-svgsprite -error text-secondary\">\r\n <Error />\r\n </svg>\r\n </div>\r\n <div className=\"a4-input\" ref={div => this.confirmInput = div}>\r\n <input name=\"confirm\" placeholder=\"Confirm Password\" required type=\"password\" defaultValue={password} />\r\n <label htmlFor=\"password\">Confirm Password</label>\r\n <span className=\"a4-input-error\">Enter a valid password</span>\r\n <svg className=\"a4-svgsprite -error text-secondary\">\r\n <Error />\r\n </svg>\r\n </div>\r\n </div>\r\n <p className=\"a4-form-error\"></p>\r\n <BubbleButton className=\"a4-form-submit -primary -fixed\" type=\"submit\" formNoValidate>\r\n Proceed to Payment\r\n </BubbleButton>\r\n <div className=\"a4-buy-form-terms\" onClick={this.fillSandboxForm}>\r\n Your payment information will be collected on the next page\r\n </div>\r\n </form>\r\n </div>\r\n </section>\r\n </div>\r\n </div>\r\n <Footer />\r\n </>\r\n )\r\n }\r\n}\r\n\r\nexport default Buy;","import React from 'react'\r\nimport './Payment.scss'\r\nimport { Link } from \"react-router-dom\"\r\nimport $ from 'jquery'\r\nimport 'select2'\r\nimport gsap from 'gsap'\r\nimport { isMobileOnly } from 'react-device-detect'\r\n\r\nimport Navbar from '../shared/Navbar/Navbar'\r\nimport Footer from '../shared/Footer/Footer'\r\nimport BubbleButton from '../shared/BubbleButton/BubbleButton'\r\nimport { ReactComponent as Error } from '../../assets/error.svg'\r\n\r\nimport formService from '../../services/FormService'\r\nimport paymentService from '../../services/PaymentService'\r\nimport memberService from '../../services/MemberService'\r\nimport recaptchaService from '../../services/RecaptchaService'\r\nimport scheduleService from '../../services/ScheduleService'\r\nimport bootstrapService from '../../services/BootstrapService'\r\n\r\nclass Payment extends React.Component {\r\n // Constructor\r\n constructor(props) {\r\n super(props);\r\n\r\n //Payment options\r\n this.paymentOptions = bootstrapService.getPaymentOptions();\r\n if (this.paymentOptions) {\r\n this.useCreditCard = this.paymentOptions.useCreditCard;\r\n this.useCreditCardSandbox = this.paymentOptions.useCreditCardSandbox;\r\n this.usePayPal = this.paymentOptions.usePayPal;\r\n this.usePayPalSandbox = this.paymentOptions.usePayPalSandbox;\r\n this.useOffline = this.paymentOptions.useOffline;\r\n this.numPaymentMethods = (this.useCreditCard ? 1 : 0) + (this.usePayPal ? 1 : 0) + (this.useOffline ? 1 : 0);\r\n }\r\n\r\n // Refs\r\n this.form = null;\r\n this.paymentSwitcher = null;\r\n this.paymentSwitch = null;\r\n this.paymentInputs = null;\r\n this.paymentParagraph = null;\r\n\r\n // This Binding\r\n this.clickSwitch = this.clickSwitch.bind(this);\r\n this.getSandboxTicket = this.getSandboxTicket.bind(this);\r\n this.submitForm = this.submitForm.bind(this);\r\n }\r\n\r\n // Lifecyle\r\n componentDidMount() {\r\n window.scrollTo(0, 0);\r\n this.setupSelects();\r\n this.setupSwitcher();\r\n }\r\n\r\n componentDidUpdate() {\r\n this.setupSelects();\r\n }\r\n\r\n // Helpers\r\n setupSwitcher() {\r\n if (this.paymentSwitcher) {\r\n const paymentSelections = this.paymentSwitcher.querySelectorAll(\".a4-payment-form-selection\");\r\n\r\n if (paymentService.paymentType === \"cc\") {\r\n paymentSelections[0].classList.add(\"-active\");\r\n this.paymentSwitch.style.width = paymentSelections[0].offsetWidth + 5 + \"px\";\r\n this.paymentSwitch.style.left = paymentSelections[0].offsetLeft + 40 + \"px\";\r\n }\r\n else if (paymentService.paymentType === \"pp\") {\r\n paymentSelections[1].classList.add(\"-active\");\r\n this.paymentSwitch.style.width = paymentSelections[1].offsetWidth + 5 + \"px\";\r\n this.paymentSwitch.style.left = paymentSelections[1].offsetLeft + 40 + \"px\";\r\n }\r\n else {\r\n paymentSelections[2].classList.add(\"-active\");\r\n this.paymentSwitch.style.width = paymentSelections[2].offsetWidth + 5 + \"px\";\r\n this.paymentSwitch.style.left = paymentSelections[2].offsetLeft + \"px\";\r\n }\r\n\r\n this.togglePaymentInputs(paymentService.paymentType);\r\n }\r\n }\r\n\r\n setupSelects() {\r\n $('.a4-select select').select2({\r\n minimumResultsForSearch: -1,\r\n });\r\n\r\n $('.a4-payment-form-btn-group-user select, .a4-payment-form-btn-group-payment select').on(\"change\", (e, shouldIgnore) => {\r\n if (!shouldIgnore) {\r\n const selectedSwitch = $(this.paymentSwitcher).find(\".a4-payment-form-selection\").filter(`[data-value=\"${e.currentTarget.value}\"]`)[0];\r\n\r\n if (selectedSwitch) {\r\n this.setSwitchActive(selectedSwitch);\r\n this.togglePaymentInputs(e.currentTarget.value);\r\n paymentService.paymentType = e.currentTarget.value;\r\n }\r\n }\r\n });\r\n }\r\n\r\n setSwitchActive(selection) {\r\n formService.hideAllErrors(this.form);\r\n\r\n $(selection).siblings().removeClass(\"-active\");\r\n selection.classList.add(\"-active\");\r\n\r\n gsap.to(this.paymentSwitch, {\r\n width: selection.offsetWidth,\r\n left: selection.offsetLeft + 40,\r\n duration: 0.2,\r\n });\r\n }\r\n\r\n togglePaymentInputs(value) {\r\n const paymentInputs = $(this.paymentInputs).find(\".a4-input\");\r\n\r\n if (value === \"cc\") {\r\n $(this.paymentParagraph).hide();\r\n $(this.paymentInputs).show(0, () => {\r\n this.enableForm(paymentInputs);\r\n });\r\n\r\n } else {\r\n this.disableForm(paymentInputs);\r\n\r\n if (value === \"pp\") {\r\n this.paymentParagraph.innerText = \"You will be redirected to PayPal to complete your payment.\";\r\n }\r\n else {\r\n this.paymentParagraph.innerText = \"You will be provided with instructions to provide your payment information.\";\r\n }\r\n\r\n $(this.paymentInputs).hide(200);\r\n $(this.paymentParagraph).show();\r\n }\r\n }\r\n\r\n disableForm(paymentInputs) {\r\n paymentInputs.each((index, input) => {\r\n input.classList.add(\"-disabled\");\r\n });\r\n }\r\n\r\n enableForm(paymentInputs) {\r\n paymentInputs.each((index, input) => {\r\n input.classList.remove(\"-disabled\");\r\n });\r\n }\r\n\r\n // Event Handlers\r\n clickSwitch(e) {\r\n if (!e.currentTarget.classList.contains(\"-active\")) {\r\n this.setSwitchActive(e.currentTarget);\r\n this.togglePaymentInputs(e.currentTarget.dataset.value);\r\n\r\n const select = $(e.currentTarget).parent().find(\"select\");\r\n select.val(e.currentTarget.dataset.value);\r\n select.trigger(\"change\", true);\r\n\r\n paymentService.paymentType = e.currentTarget.dataset.value;\r\n }\r\n }\r\n\r\n getSandboxTicket(e) {\r\n e.preventDefault();\r\n\r\n const useSandbox =\r\n (paymentService.paymentType === \"cc\" && this.useCreditCardSandbox) ||\r\n (paymentService.paymentType === \"pp\" && this.usePayPalSandbox);\r\n\r\n if (useSandbox) {\r\n if (e.ctrlKey || e.metaKey) {\r\n\r\n const inputs = this.form.querySelectorAll('.a4-input');\r\n\r\n paymentService.getSandboxTicket()\r\n .then(json => {\r\n if (json.succeeded) {\r\n if (paymentService.paymentType === \"cc\") {\r\n inputs[0].querySelector(\"input, textarea\").value = \"4007000000027\"\r\n inputs[1].querySelector(\"input, textarea\").value = \"12\"\r\n inputs[2].querySelector(\"input, textarea\").value = \"2025\"\r\n inputs[3].querySelector(\"input, textarea\").value = \"123\"\r\n }\r\n }\r\n else {\r\n console.log(json.errors);\r\n }\r\n })\r\n }\r\n }\r\n }\r\n\r\n submitForm(e) {\r\n e.preventDefault();\r\n\r\n if (paymentService.paymentType === \"cc\") {\r\n this.submitCreditCard();\r\n }\r\n else if (paymentService.paymentType === \"pp\") {\r\n this.submitPayPal();\r\n }\r\n else if (paymentService.paymentType === \"offline\") {\r\n this.submitCheckOrPhone();\r\n }\r\n }\r\n\r\n // Payment Methods\r\n submitCreditCard() {\r\n const isFormValid = formService.validate(this.form);\r\n if (!isFormValid) return;\r\n\r\n formService.showLoadingButton(this.form);\r\n\r\n const creditCardNo = this.form.card.value;\r\n const expirationMonth = this.form.mm.value;\r\n const expirationYear = this.form.yyyy.value;\r\n const securityCode = this.form.cvv.value;\r\n\r\n const creditCard = { creditCardNo, expirationMonth, expirationYear, securityCode };\r\n paymentService.creditCard = creditCard;\r\n\r\n recaptchaService.getToken(\"buy\")\r\n .then(token => {\r\n let buyRequest = { recaptchaToken: token };\r\n\r\n paymentService.buyItemCreditCard(buyRequest)\r\n .then(json => {\r\n if (json.succeeded) {\r\n memberService.goToMembers();\r\n }\r\n else {\r\n formService.hideAllErrors(this.form);\r\n formService.hideLoadingButton(this.form);\r\n formService.showFormError(this.form, json.errors[0]);\r\n }\r\n })\r\n })\r\n }\r\n\r\n submitPayPal() {\r\n formService.clearAllInputs(this.form);\r\n formService.showLoadingButton(this.form);\r\n\r\n recaptchaService.getToken(\"buy\")\r\n .then(token => {\r\n let buyRequest = { recaptchaToken: token };\r\n\r\n paymentService.buyItemPayPal(buyRequest)\r\n .then(json => {\r\n if (json.succeeded) {\r\n let token = json.result.orderRequest.paymentRequests[0].token\r\n if (token) {\r\n //PayPal payment handler for PayPal\r\n if (paymentService.sandboxTicket) {\r\n window.location.href = `https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_express-checkout&useraction=commit&token=${token}`;\r\n }\r\n else {\r\n window.location.href = `https://www.paypal.com/cgi-bin/webscr?cmd=_express-checkout&useraction=commit&token=${token}`;\r\n }\r\n }\r\n else {\r\n //Authorize.net payment handler for PayPal\r\n let secureAcceptanceUrl = json.result.orderRequest.paymentRequests[0].secureAcceptanceUrl\r\n if (secureAcceptanceUrl) {\r\n window.location.href = secureAcceptanceUrl;\r\n }\r\n }\r\n }\r\n else {\r\n console.log(json.errors)\r\n formService.hideLoadingButton(this.form);\r\n this.paymentParagraph.innerText = \"PayPal payment unsuccessful. Please try again or use another payment method.\";\r\n }\r\n })\r\n });\r\n }\r\n\r\n submitCheckOrPhone() {\r\n formService.clearAllInputs(this.form);\r\n formService.showLoadingButton(this.form);\r\n\r\n recaptchaService.getToken(\"buy\")\r\n .then(token => {\r\n let buyRequest = { recaptchaToken: token };\r\n\r\n paymentService.buyItemOffline(buyRequest)\r\n .then(json => {\r\n if (json.succeeded) {\r\n memberService.goToMembers();\r\n }\r\n else {\r\n console.log(json.errors)\r\n formService.hideLoadingButton(this.form);\r\n this.paymentParagraph.innerText = \"Offline payment unsuccessful. Please try again or use another payment method.\";\r\n }\r\n })\r\n });\r\n }\r\n\r\n // Component\r\n render() {\r\n // Go Home If No Payment Data\r\n if (!paymentService.item || !paymentService.member) {\r\n if (paymentService.group) {\r\n this.props.history.push(\"/complete-group\");\r\n }\r\n else {\r\n this.props.history.push(\"/buy\");\r\n }\r\n return null;\r\n }\r\n\r\n const title = paymentService.item ? paymentService.item.title : \"\";\r\n const schedule = paymentService.schedule ? `${new Date(paymentService.schedule.startDate).toLocaleDateString(\"en-US\", { weekday: 'long', month: 'short', day: 'numeric' })}, ${new Date(paymentService.schedule.startDate).toLocaleTimeString(\"en-US\", { hour: \"2-digit\", minute: \"2-digit\" })} - ${new Date(paymentService.schedule.endDate).toLocaleTimeString(\"en-US\", { hour: \"2-digit\", minute: \"2-digit\" })} (${scheduleService.getTimeZone()})` : null;\r\n const price = paymentService.item ? (paymentService.item.price * paymentService.item.quantity).toFixed(2) : \"\";\r\n\r\n const creditCardLabel = this.numPaymentMethods === 3 ? \"Credit Card\" : \"Pay With Credit Card\";\r\n const payPalLabel = this.numPaymentMethods === 3 ? \"PayPal\" : \"Pay With PayPal\";\r\n \r\n return (\r\n <>\r\n <Navbar />\r\n <div className=\"a4-view\">\r\n <div className=\"a4-layout a4-payment\">\r\n <section className=\"a4-payment-container\">\r\n <div className=\"a4-payment-content\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n <header className=\"a4-payment-title\">\r\n <h1>\r\n {title}\r\n </h1>\r\n {\r\n schedule &&\r\n <h3>\r\n {schedule}\r\n </h3>\r\n }\r\n </header>\r\n <form className=\"a4-payment-form\" ref={form => this.form = form}>\r\n <div className=\"a4-payment-form-group\">\r\n <div className=\"a4-payment-form-group-switcher-container -payment\" ref={div => this.paymentSwitcher = div}>\r\n <div className=\"a4-payment-form-btn-group a4-payment-form-btn-group-payment\">\r\n <div className=\"a4-select sm_hidden\">\r\n <select name=\"payment_type\" defaultValue=\"cc\">\r\n {\r\n this.useCreditCard && \r\n <option value=\"cc\">Credit Card</option>\r\n }\r\n {\r\n this.usePayPal && \r\n <option value=\"pp\">PayPal</option>\r\n }\r\n {\r\n this.useOffline && \r\n <option value=\"offline\">Check or Phone</option>\r\n }\r\n </select>\r\n </div>\r\n {\r\n this.useCreditCard &&\r\n <div className=\"a4-payment-form-selection hidden sm_block\" type=\"button\" data-value=\"cc\" onClick={this.clickSwitch}>\r\n {creditCardLabel}\r\n </div>\r\n } \r\n {\r\n this.usePayPal &&\r\n <div className=\"a4-payment-form-selection hidden sm_block\" type=\"button\" data-value=\"pp\" onClick={this.clickSwitch}>\r\n {payPalLabel}\r\n </div>\r\n }\r\n {\r\n this.useOffline &&\r\n <div className=\"a4-payment-form-selection hidden sm_block\" type=\"button\" data-value=\"offline\" onClick={this.clickSwitch}>\r\n Check or Phone\r\n </div>\r\n }\r\n </div>\r\n <div className=\"a4-switcher\" ref={div => this.paymentSwitch = div}></div>\r\n </div>\r\n <div className=\"a4-inputs\" ref={div => this.paymentInputs = div}>\r\n <div className=\"a4-input\">\r\n <input name=\"card\" placeholder=\"Card No\" required />\r\n <label htmlFor=\"card\">Card No</label>\r\n <span className=\"a4-input-error\" ref={span => this.cardError = span}></span>\r\n <svg className=\"a4-svgsprite -error text-secondary\">\r\n <Error />\r\n </svg>\r\n </div>\r\n <div className=\"a4-payment-form-small-input-group\">\r\n <div className=\"a4-input\">\r\n <input name=\"mm\" placeholder=\"MM\" required />\r\n <label htmlFor=\"mm\">MM</label>\r\n <span className=\"a4-input-error\"></span>\r\n <svg className=\"a4-svgsprite -error text-secondary\">\r\n <Error />\r\n </svg>\r\n </div>\r\n <div className=\"a4-input\">\r\n <input name=\"yyyy\" placeholder=\"YYYY\" required />\r\n <label htmlFor=\"yyyy\">YYYY</label>\r\n <span className=\"a4-input-error\"></span>\r\n <svg className=\"a4-svgsprite -error text-secondary\">\r\n <Error />\r\n </svg>\r\n </div>\r\n <div className=\"a4-input\">\r\n <input name=\"cvv\" placeholder=\"CVV\" type=\"password\" required />\r\n <label htmlFor=\"cvv\">CVV</label>\r\n <span className=\"a4-input-error\"></span>\r\n <svg className=\"a4-svgsprite -error text-secondary\">\r\n <Error />\r\n </svg>\r\n </div>\r\n </div>\r\n </div>\r\n <p className=\"a4-form-error\"></p>\r\n <p className=\"a4-payment-form-paragraph\" ref={p => this.paymentParagraph = p}></p>\r\n </div>\r\n <BubbleButton className=\"a4-form-submit -primary -fixed\" type=\"button\" onClick={this.submitForm} formNoValidate>\r\n Buy Now ${price}\r\n </BubbleButton>\r\n <div className=\"a4-payment-form-terms\" onClick={this.getSandboxTicket}>\r\n By clicking Buy Now you agree to our \r\n <Link to=\"/terms-and-conditions\" className=\"block sm_inline\">\r\n <b>Terms of Use</b>\r\n </Link>\r\n </div>\r\n </form>\r\n </div>\r\n </section>\r\n </div>\r\n </div>\r\n <Footer />\r\n </>\r\n )\r\n }\r\n}\r\n\r\nexport default Payment;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M17.5 3.25C15.7051 3.25 14.25 4.70507 14.25 6.5C14.25 8.29493 15.7051 9.75 17.5 9.75C19.2949 9.75 20.75 8.29493 20.75 6.5C20.75 4.70507 19.2949 3.25 17.5 3.25ZM11.75 6.5C11.75 3.32436 14.3244 0.75 17.5 0.75C20.6756 0.75 23.25 3.32436 23.25 6.5C23.25 9.67564 20.6756 12.25 17.5 12.25C14.3244 12.25 11.75 9.67564 11.75 6.5Z\",\n fill: \"current\"\n});\n\nvar _ref3 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M6.5 22.25C4.70507 22.25 3.25 23.7051 3.25 25.5C3.25 27.2949 4.70507 28.75 6.5 28.75C8.29493 28.75 9.75 27.2949 9.75 25.5C9.75 23.7051 8.29493 22.25 6.5 22.25ZM0.75 25.5C0.75 22.3244 3.32436 19.75 6.5 19.75C9.67564 19.75 12.25 22.3244 12.25 25.5C12.25 28.6756 9.67564 31.25 6.5 31.25C3.32436 31.25 0.75 28.6756 0.75 25.5Z\",\n fill: \"current\"\n});\n\nvar _ref4 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M28.1 22.25C26.3051 22.25 24.85 23.7051 24.85 25.5C24.85 27.2949 26.3051 28.75 28.1 28.75C29.8949 28.75 31.35 27.2949 31.35 25.5C31.35 23.7051 29.8949 22.25 28.1 22.25ZM22.35 25.5C22.35 22.3244 24.9244 19.75 28.1 19.75C31.2756 19.75 33.85 22.3244 33.85 25.5C33.85 28.6756 31.2756 31.25 28.1 31.25C24.9244 31.25 22.35 28.6756 22.35 25.5Z\",\n fill: \"current\"\n});\n\nvar _ref5 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M13.559 12.882C14.1765 13.1907 14.4268 13.9416 14.118 14.559L12.118 18.559C11.8093 19.1765 11.0585 19.4268 10.441 19.1181C9.82351 18.8093 9.57323 18.0585 9.88197 17.441L11.882 13.441C12.1907 12.8235 12.9415 12.5733 13.559 12.882Z\",\n fill: \"current\"\n});\n\nvar _ref6 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M21.441 12.882C20.8235 13.1907 20.5732 13.9416 20.882 14.559L22.882 18.559C23.1907 19.1765 23.9415 19.4268 24.559 19.1181C25.1765 18.8093 25.4268 18.0585 25.118 17.441L23.118 13.441C22.8093 12.8235 22.0585 12.5733 21.441 12.882Z\",\n fill: \"current\"\n});\n\nvar _ref7 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M13.6446 25.3335C13.6447 26.0238 14.2043 26.5834 14.8947 26.5834L19.5613 26.5833C20.2517 26.5833 20.8113 26.0237 20.8113 25.3333C20.8113 24.6429 20.2516 24.0833 19.5613 24.0833L14.8946 24.0834C14.2043 24.0834 13.6446 24.6431 13.6446 25.3335Z\",\n fill: \"current\"\n});\n\nfunction SvgSocial(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 34,\n height: 32,\n viewBox: \"0 0 34 32\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2, _ref3, _ref4, _ref5, _ref6, _ref7);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgSocial);\nexport default \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzQiIGhlaWdodD0iMzIiIHZpZXdCb3g9IjAgMCAzNCAzMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMTcuNSAzLjI1QzE1LjcwNTEgMy4yNSAxNC4yNSA0LjcwNTA3IDE0LjI1IDYuNUMxNC4yNSA4LjI5NDkzIDE1LjcwNTEgOS43NSAxNy41IDkuNzVDMTkuMjk0OSA5Ljc1IDIwLjc1IDguMjk0OTMgMjAuNzUgNi41QzIwLjc1IDQuNzA1MDcgMTkuMjk0OSAzLjI1IDE3LjUgMy4yNVpNMTEuNzUgNi41QzExLjc1IDMuMzI0MzYgMTQuMzI0NCAwLjc1IDE3LjUgMC43NUMyMC42NzU2IDAuNzUgMjMuMjUgMy4zMjQzNiAyMy4yNSA2LjVDMjMuMjUgOS42NzU2NCAyMC42NzU2IDEyLjI1IDE3LjUgMTIuMjVDMTQuMzI0NCAxMi4yNSAxMS43NSA5LjY3NTY0IDExLjc1IDYuNVoiIGZpbGw9ImN1cnJlbnQiLz4NCjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNNi41IDIyLjI1QzQuNzA1MDcgMjIuMjUgMy4yNSAyMy43MDUxIDMuMjUgMjUuNUMzLjI1IDI3LjI5NDkgNC43MDUwNyAyOC43NSA2LjUgMjguNzVDOC4yOTQ5MyAyOC43NSA5Ljc1IDI3LjI5NDkgOS43NSAyNS41QzkuNzUgMjMuNzA1MSA4LjI5NDkzIDIyLjI1IDYuNSAyMi4yNVpNMC43NSAyNS41QzAuNzUgMjIuMzI0NCAzLjMyNDM2IDE5Ljc1IDYuNSAxOS43NUM5LjY3NTY0IDE5Ljc1IDEyLjI1IDIyLjMyNDQgMTIuMjUgMjUuNUMxMi4yNSAyOC42NzU2IDkuNjc1NjQgMzEuMjUgNi41IDMxLjI1QzMuMzI0MzYgMzEuMjUgMC43NSAyOC42NzU2IDAuNzUgMjUuNVoiIGZpbGw9ImN1cnJlbnQiLz4NCjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMjguMSAyMi4yNUMyNi4zMDUxIDIyLjI1IDI0Ljg1IDIzLjcwNTEgMjQuODUgMjUuNUMyNC44NSAyNy4yOTQ5IDI2LjMwNTEgMjguNzUgMjguMSAyOC43NUMyOS44OTQ5IDI4Ljc1IDMxLjM1IDI3LjI5NDkgMzEuMzUgMjUuNUMzMS4zNSAyMy43MDUxIDI5Ljg5NDkgMjIuMjUgMjguMSAyMi4yNVpNMjIuMzUgMjUuNUMyMi4zNSAyMi4zMjQ0IDI0LjkyNDQgMTkuNzUgMjguMSAxOS43NUMzMS4yNzU2IDE5Ljc1IDMzLjg1IDIyLjMyNDQgMzMuODUgMjUuNUMzMy44NSAyOC42NzU2IDMxLjI3NTYgMzEuMjUgMjguMSAzMS4yNUMyNC45MjQ0IDMxLjI1IDIyLjM1IDI4LjY3NTYgMjIuMzUgMjUuNVoiIGZpbGw9ImN1cnJlbnQiLz4NCjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMTMuNTU5IDEyLjg4MkMxNC4xNzY1IDEzLjE5MDcgMTQuNDI2OCAxMy45NDE2IDE0LjExOCAxNC41NTlMMTIuMTE4IDE4LjU1OUMxMS44MDkzIDE5LjE3NjUgMTEuMDU4NSAxOS40MjY4IDEwLjQ0MSAxOS4xMTgxQzkuODIzNTEgMTguODA5MyA5LjU3MzIzIDE4LjA1ODUgOS44ODE5NyAxNy40NDFMMTEuODgyIDEzLjQ0MUMxMi4xOTA3IDEyLjgyMzUgMTIuOTQxNSAxMi41NzMzIDEzLjU1OSAxMi44ODJaIiBmaWxsPSJjdXJyZW50Ii8+DQo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTIxLjQ0MSAxMi44ODJDMjAuODIzNSAxMy4xOTA3IDIwLjU3MzIgMTMuOTQxNiAyMC44ODIgMTQuNTU5TDIyLjg4MiAxOC41NTlDMjMuMTkwNyAxOS4xNzY1IDIzLjk0MTUgMTkuNDI2OCAyNC41NTkgMTkuMTE4MUMyNS4xNzY1IDE4LjgwOTMgMjUuNDI2OCAxOC4wNTg1IDI1LjExOCAxNy40NDFMMjMuMTE4IDEzLjQ0MUMyMi44MDkzIDEyLjgyMzUgMjIuMDU4NSAxMi41NzMzIDIxLjQ0MSAxMi44ODJaIiBmaWxsPSJjdXJyZW50Ii8+DQo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTEzLjY0NDYgMjUuMzMzNUMxMy42NDQ3IDI2LjAyMzggMTQuMjA0MyAyNi41ODM0IDE0Ljg5NDcgMjYuNTgzNEwxOS41NjEzIDI2LjU4MzNDMjAuMjUxNyAyNi41ODMzIDIwLjgxMTMgMjYuMDIzNyAyMC44MTEzIDI1LjMzMzNDMjAuODExMyAyNC42NDI5IDIwLjI1MTYgMjQuMDgzMyAxOS41NjEzIDI0LjA4MzNMMTQuODk0NiAyNC4wODM0QzE0LjIwNDMgMjQuMDgzNCAxMy42NDQ2IDI0LjY0MzEgMTMuNjQ0NiAyNS4zMzM1WiIgZmlsbD0iY3VycmVudCIvPg0KPC9zdmc+DQo=\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M1.75 5.25C1.75 3.17893 3.42893 1.5 5.5 1.5H15.625C17.6961 1.5 19.375 3.17893 19.375 5.25V7.33203V10.3672V21.4961V25.543V27.625C19.375 29.6961 17.6961 31.375 15.625 31.375H5.5C3.42893 31.375 1.75 29.6961 1.75 27.625V5.25Z\",\n stroke: \"current\",\n fill: \"transparent\",\n strokeWidth: 2.5\n});\n\nvar _ref3 = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 10.875,\n cy: 27.6875,\n r: 0.9375,\n fill: \"current\"\n});\n\nvar _ref4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M5.75 7.25H15.375\",\n stroke: \"current\",\n strokeWidth: 2.5,\n fill: \"transparent\",\n strokeLinecap: \"round\"\n});\n\nvar _ref5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M5.75 24.1387H15.375\",\n stroke: \"current\",\n strokeWidth: 2.5,\n fill: \"transparent\",\n strokeLinecap: \"round\"\n});\n\nfunction SvgPhone(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 21,\n height: 33,\n viewBox: \"0 0 21 33\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2, _ref3, _ref4, _ref5);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgPhone);\nexport default \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMzMiIHZpZXdCb3g9IjAgMCAyMSAzMyIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCjxwYXRoIGQ9Ik0xLjc1IDUuMjVDMS43NSAzLjE3ODkzIDMuNDI4OTMgMS41IDUuNSAxLjVIMTUuNjI1QzE3LjY5NjEgMS41IDE5LjM3NSAzLjE3ODkzIDE5LjM3NSA1LjI1VjcuMzMyMDNWMTAuMzY3MlYyMS40OTYxVjI1LjU0M1YyNy42MjVDMTkuMzc1IDI5LjY5NjEgMTcuNjk2MSAzMS4zNzUgMTUuNjI1IDMxLjM3NUg1LjVDMy40Mjg5MyAzMS4zNzUgMS43NSAyOS42OTYxIDEuNzUgMjcuNjI1VjUuMjVaIiBzdHJva2U9ImN1cnJlbnQiIGZpbGw9InRyYW5zcGFyZW50IiBzdHJva2Utd2lkdGg9IjIuNSIvPg0KPGNpcmNsZSBjeD0iMTAuODc1IiBjeT0iMjcuNjg3NSIgcj0iMC45Mzc1IiBmaWxsPSJjdXJyZW50Ii8+DQo8cGF0aCBkPSJNNS43NSA3LjI1SDE1LjM3NSIgc3Ryb2tlPSJjdXJyZW50IiBzdHJva2Utd2lkdGg9IjIuNSIgZmlsbD0idHJhbnNwYXJlbnQiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPg0KPHBhdGggZD0iTTUuNzUgMjQuMTM4N0gxNS4zNzUiIHN0cm9rZT0iY3VycmVudCIgc3Ryb2tlLXdpZHRoPSIyLjUiIGZpbGw9InRyYW5zcGFyZW50IiBzdHJva2UtbGluZWNhcD0icm91bmQiIC8+DQo8L3N2Zz4NCg==\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M11.25 0.0402285C11.5798 0.0135822 11.9133 0 12.25 0C12.5867 0 12.9202 0.0135822 13.25 0.0402286C13.4023 0.0525369 13.5539 0.0676326 13.7046 0.0854647C16.9868 0.473791 19.8714 2.15978 21.8312 4.61617C21.8472 4.63633 21.8633 4.65654 21.8792 4.6768C23.3274 6.51557 24.2602 8.77923 24.4598 11.25C24.4864 11.5798 24.5 11.9133 24.5 12.25C24.5 12.5867 24.4864 12.9202 24.4598 13.25C24.2604 15.7178 23.3296 17.9789 21.8845 19.8165C21.8161 19.9034 21.7466 19.9894 21.676 20.0744C19.7207 22.4273 16.9012 24.0363 13.7046 24.4145C13.5539 24.4324 13.4023 24.4475 13.25 24.4598C12.9202 24.4864 12.5867 24.5 12.25 24.5C11.9133 24.5 11.5798 24.4864 11.25 24.4598C11.0977 24.4475 10.9461 24.4324 10.7954 24.4145C7.59876 24.0363 4.7793 22.4273 2.82405 20.0744C2.7534 19.9894 2.68387 19.9034 2.6155 19.8165C1.17036 17.9789 0.239603 15.7178 0.0402286 13.25C0.0135822 12.9202 0 12.5867 0 12.25C0 11.9133 0.0135822 11.5798 0.0402285 11.25C0.239846 8.77923 1.17263 6.51557 2.62079 4.6768C2.63674 4.65654 2.65276 4.63633 2.66884 4.61618C4.62856 2.15978 7.51316 0.473791 10.7954 0.0854647C10.9461 0.0676326 11.0977 0.0525369 11.25 0.0402285ZM8.96499 2.53772C7.54734 3.01705 6.2687 3.79806 5.20548 4.80435C5.4201 5.02683 5.68112 5.26749 5.99342 5.50928C6.30888 5.7535 6.6799 6.00145 7.11277 6.2339C7.59685 4.94052 8.18658 3.80303 8.77215 2.8466C8.83647 2.74153 8.9008 2.63857 8.96499 2.53772ZM6.50833 8.17141C5.83317 7.83994 5.25643 7.46803 4.76908 7.09072C4.43226 6.82996 4.14033 6.56837 3.8896 6.31847C2.88129 7.7371 2.22501 9.42341 2.04816 11.25H6.03041C6.09649 10.164 6.26688 9.13521 6.50833 8.17141ZM8.03467 11.25C8.09177 10.4266 8.21693 9.63896 8.39183 8.89133C9.23574 9.13173 10.1855 9.30272 11.25 9.36926V11.25H8.03467ZM6.03041 13.25H2.04816C2.22003 15.0251 2.84468 16.6677 3.80518 18.0609C4.00135 17.8537 4.22558 17.6411 4.48118 17.4296C5.01321 16.9893 5.67009 16.5624 6.47587 16.1968C6.25161 15.2712 6.09348 14.2867 6.03041 13.25ZM8.37612 15.5408C8.20943 14.8134 8.09004 14.0485 8.03467 13.25H11.25V15.1257C10.1713 15.1822 9.21776 15.3295 8.37612 15.5408ZM7.06306 18.1317C6.5246 18.3983 6.09576 18.6895 5.75632 18.9704C5.49446 19.1871 5.28062 19.4019 5.10737 19.6016C6.18968 20.6533 7.50346 21.4681 8.96499 21.9623C8.9008 21.8614 8.83647 21.7585 8.77215 21.6534C8.16638 20.664 7.55616 19.4808 7.06306 18.1317ZM11.25 21.7714C11.0005 21.4243 10.7392 21.036 10.4779 20.6091C9.92919 19.7129 9.38494 18.6551 8.94686 17.4598C9.6132 17.2981 10.3765 17.1802 11.25 17.1287V21.7714ZM13.25 17.1287V21.7714C13.4995 21.4243 13.7608 21.036 14.0221 20.6091C14.5708 19.7129 15.1151 18.6551 15.5531 17.4598C14.8868 17.2981 14.1235 17.1802 13.25 17.1287ZM17.4369 18.1317C16.9438 19.4808 16.3336 20.664 15.7279 21.6534C15.6635 21.7585 15.5992 21.8614 15.535 21.9623C16.9965 21.4681 18.3103 20.6533 19.3926 19.6016C19.2194 19.4019 19.0055 19.1871 18.7437 18.9704C18.4042 18.6895 17.9754 18.3983 17.4369 18.1317ZM20.6948 18.0609C20.4987 17.8537 20.2744 17.6411 20.0188 17.4296C19.4868 16.9893 18.8299 16.5624 18.0241 16.1969C18.2484 15.2712 18.4065 14.2867 18.4696 13.25H22.4518C22.28 15.0251 21.6553 16.6677 20.6948 18.0609ZM22.4518 11.25C22.275 9.42341 21.6187 7.7371 20.6104 6.31847C20.3597 6.56837 20.0677 6.82996 19.7309 7.09072C19.2436 7.46803 18.6668 7.83994 17.9917 8.17141C18.2331 9.13521 18.4035 10.164 18.4696 11.25H22.4518ZM16.4653 11.25C16.4082 10.4266 16.2831 9.63896 16.1082 8.89133C15.2643 9.13173 14.3145 9.30272 13.25 9.36926V11.25H16.4653ZM13.25 13.25V15.1257C14.3287 15.1822 15.2822 15.3295 16.1239 15.5408C16.2906 14.8134 16.41 14.0485 16.4653 13.25H13.25ZM13.25 7.36476C14.1045 7.30322 14.8613 7.16458 15.5297 6.97649C15.0957 5.80729 14.561 4.77111 14.0221 3.8909C13.7608 3.46403 13.4995 3.07566 13.25 2.72862V7.36476ZM15.535 2.53772C15.5992 2.63857 15.6635 2.74153 15.7279 2.8466C16.3134 3.80303 16.9031 4.94052 17.3872 6.2339C17.8201 6.00145 18.1911 5.7535 18.5066 5.50928C18.8189 5.26749 19.0799 5.02683 19.2945 4.80435C18.2313 3.79806 16.9527 3.01705 15.535 2.53772ZM11.25 2.72862C11.0005 3.07566 10.7392 3.46403 10.4779 3.8909C9.93895 4.77111 9.4043 5.80729 8.97035 6.97649C9.63866 7.16458 10.3955 7.30322 11.25 7.36476V2.72862Z\",\n fill: \"current\"\n});\n\nfunction SvgWorld(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 25,\n height: 25,\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgWorld);\nexport default \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjUiIGhlaWdodD0iMjUiIHZpZXdCb3g9IjAgMCAyNSAyNSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMTEuMjUgMC4wNDAyMjg1QzExLjU3OTggMC4wMTM1ODIyIDExLjkxMzMgMCAxMi4yNSAwQzEyLjU4NjcgMCAxMi45MjAyIDAuMDEzNTgyMiAxMy4yNSAwLjA0MDIyODZDMTMuNDAyMyAwLjA1MjUzNjkgMTMuNTUzOSAwLjA2NzYzMjYgMTMuNzA0NiAwLjA4NTQ2NDdDMTYuOTg2OCAwLjQ3Mzc5MSAxOS44NzE0IDIuMTU5NzggMjEuODMxMiA0LjYxNjE3QzIxLjg0NzIgNC42MzYzMyAyMS44NjMzIDQuNjU2NTQgMjEuODc5MiA0LjY3NjhDMjMuMzI3NCA2LjUxNTU3IDI0LjI2MDIgOC43NzkyMyAyNC40NTk4IDExLjI1QzI0LjQ4NjQgMTEuNTc5OCAyNC41IDExLjkxMzMgMjQuNSAxMi4yNUMyNC41IDEyLjU4NjcgMjQuNDg2NCAxMi45MjAyIDI0LjQ1OTggMTMuMjVDMjQuMjYwNCAxNS43MTc4IDIzLjMyOTYgMTcuOTc4OSAyMS44ODQ1IDE5LjgxNjVDMjEuODE2MSAxOS45MDM0IDIxLjc0NjYgMTkuOTg5NCAyMS42NzYgMjAuMDc0NEMxOS43MjA3IDIyLjQyNzMgMTYuOTAxMiAyNC4wMzYzIDEzLjcwNDYgMjQuNDE0NUMxMy41NTM5IDI0LjQzMjQgMTMuNDAyMyAyNC40NDc1IDEzLjI1IDI0LjQ1OThDMTIuOTIwMiAyNC40ODY0IDEyLjU4NjcgMjQuNSAxMi4yNSAyNC41QzExLjkxMzMgMjQuNSAxMS41Nzk4IDI0LjQ4NjQgMTEuMjUgMjQuNDU5OEMxMS4wOTc3IDI0LjQ0NzUgMTAuOTQ2MSAyNC40MzI0IDEwLjc5NTQgMjQuNDE0NUM3LjU5ODc2IDI0LjAzNjMgNC43NzkzIDIyLjQyNzMgMi44MjQwNSAyMC4wNzQ0QzIuNzUzNCAxOS45ODk0IDIuNjgzODcgMTkuOTAzNCAyLjYxNTUgMTkuODE2NUMxLjE3MDM2IDE3Ljk3ODkgMC4yMzk2MDMgMTUuNzE3OCAwLjA0MDIyODYgMTMuMjVDMC4wMTM1ODIyIDEyLjkyMDIgMCAxMi41ODY3IDAgMTIuMjVDMCAxMS45MTMzIDAuMDEzNTgyMiAxMS41Nzk4IDAuMDQwMjI4NSAxMS4yNUMwLjIzOTg0NiA4Ljc3OTIzIDEuMTcyNjMgNi41MTU1NyAyLjYyMDc5IDQuNjc2OEMyLjYzNjc0IDQuNjU2NTQgMi42NTI3NiA0LjYzNjMzIDIuNjY4ODQgNC42MTYxOEM0LjYyODU2IDIuMTU5NzggNy41MTMxNiAwLjQ3Mzc5MSAxMC43OTU0IDAuMDg1NDY0N0MxMC45NDYxIDAuMDY3NjMyNiAxMS4wOTc3IDAuMDUyNTM2OSAxMS4yNSAwLjA0MDIyODVaTTguOTY0OTkgMi41Mzc3MkM3LjU0NzM0IDMuMDE3MDUgNi4yNjg3IDMuNzk4MDYgNS4yMDU0OCA0LjgwNDM1QzUuNDIwMSA1LjAyNjgzIDUuNjgxMTIgNS4yNjc0OSA1Ljk5MzQyIDUuNTA5MjhDNi4zMDg4OCA1Ljc1MzUgNi42Nzk5IDYuMDAxNDUgNy4xMTI3NyA2LjIzMzlDNy41OTY4NSA0Ljk0MDUyIDguMTg2NTggMy44MDMwMyA4Ljc3MjE1IDIuODQ2NkM4LjgzNjQ3IDIuNzQxNTMgOC45MDA4IDIuNjM4NTcgOC45NjQ5OSAyLjUzNzcyWk02LjUwODMzIDguMTcxNDFDNS44MzMxNyA3LjgzOTk0IDUuMjU2NDMgNy40NjgwMyA0Ljc2OTA4IDcuMDkwNzJDNC40MzIyNiA2LjgyOTk2IDQuMTQwMzMgNi41NjgzNyAzLjg4OTYgNi4zMTg0N0MyLjg4MTI5IDcuNzM3MSAyLjIyNTAxIDkuNDIzNDEgMi4wNDgxNiAxMS4yNUg2LjAzMDQxQzYuMDk2NDkgMTAuMTY0IDYuMjY2ODggOS4xMzUyMSA2LjUwODMzIDguMTcxNDFaTTguMDM0NjcgMTEuMjVDOC4wOTE3NyAxMC40MjY2IDguMjE2OTMgOS42Mzg5NiA4LjM5MTgzIDguODkxMzNDOS4yMzU3NCA5LjEzMTczIDEwLjE4NTUgOS4zMDI3MiAxMS4yNSA5LjM2OTI2VjExLjI1SDguMDM0NjdaTTYuMDMwNDEgMTMuMjVIMi4wNDgxNkMyLjIyMDAzIDE1LjAyNTEgMi44NDQ2OCAxNi42Njc3IDMuODA1MTggMTguMDYwOUM0LjAwMTM1IDE3Ljg1MzcgNC4yMjU1OCAxNy42NDExIDQuNDgxMTggMTcuNDI5NkM1LjAxMzIxIDE2Ljk4OTMgNS42NzAwOSAxNi41NjI0IDYuNDc1ODcgMTYuMTk2OEM2LjI1MTYxIDE1LjI3MTIgNi4wOTM0OCAxNC4yODY3IDYuMDMwNDEgMTMuMjVaTTguMzc2MTIgMTUuNTQwOEM4LjIwOTQzIDE0LjgxMzQgOC4wOTAwNCAxNC4wNDg1IDguMDM0NjcgMTMuMjVIMTEuMjVWMTUuMTI1N0MxMC4xNzEzIDE1LjE4MjIgOS4yMTc3NiAxNS4zMjk1IDguMzc2MTIgMTUuNTQwOFpNNy4wNjMwNiAxOC4xMzE3QzYuNTI0NiAxOC4zOTgzIDYuMDk1NzYgMTguNjg5NSA1Ljc1NjMyIDE4Ljk3MDRDNS40OTQ0NiAxOS4xODcxIDUuMjgwNjIgMTkuNDAxOSA1LjEwNzM3IDE5LjYwMTZDNi4xODk2OCAyMC42NTMzIDcuNTAzNDYgMjEuNDY4MSA4Ljk2NDk5IDIxLjk2MjNDOC45MDA4IDIxLjg2MTQgOC44MzY0NyAyMS43NTg1IDguNzcyMTUgMjEuNjUzNEM4LjE2NjM4IDIwLjY2NCA3LjU1NjE2IDE5LjQ4MDggNy4wNjMwNiAxOC4xMzE3Wk0xMS4yNSAyMS43NzE0QzExLjAwMDUgMjEuNDI0MyAxMC43MzkyIDIxLjAzNiAxMC40Nzc5IDIwLjYwOTFDOS45MjkxOSAxOS43MTI5IDkuMzg0OTQgMTguNjU1MSA4Ljk0Njg2IDE3LjQ1OThDOS42MTMyIDE3LjI5ODEgMTAuMzc2NSAxNy4xODAyIDExLjI1IDE3LjEyODdWMjEuNzcxNFpNMTMuMjUgMTcuMTI4N1YyMS43NzE0QzEzLjQ5OTUgMjEuNDI0MyAxMy43NjA4IDIxLjAzNiAxNC4wMjIxIDIwLjYwOTFDMTQuNTcwOCAxOS43MTI5IDE1LjExNTEgMTguNjU1MSAxNS41NTMxIDE3LjQ1OThDMTQuODg2OCAxNy4yOTgxIDE0LjEyMzUgMTcuMTgwMiAxMy4yNSAxNy4xMjg3Wk0xNy40MzY5IDE4LjEzMTdDMTYuOTQzOCAxOS40ODA4IDE2LjMzMzYgMjAuNjY0IDE1LjcyNzkgMjEuNjUzNEMxNS42NjM1IDIxLjc1ODUgMTUuNTk5MiAyMS44NjE0IDE1LjUzNSAyMS45NjIzQzE2Ljk5NjUgMjEuNDY4MSAxOC4zMTAzIDIwLjY1MzMgMTkuMzkyNiAxOS42MDE2QzE5LjIxOTQgMTkuNDAxOSAxOS4wMDU1IDE5LjE4NzEgMTguNzQzNyAxOC45NzA0QzE4LjQwNDIgMTguNjg5NSAxNy45NzU0IDE4LjM5ODMgMTcuNDM2OSAxOC4xMzE3Wk0yMC42OTQ4IDE4LjA2MDlDMjAuNDk4NyAxNy44NTM3IDIwLjI3NDQgMTcuNjQxMSAyMC4wMTg4IDE3LjQyOTZDMTkuNDg2OCAxNi45ODkzIDE4LjgyOTkgMTYuNTYyNCAxOC4wMjQxIDE2LjE5NjlDMTguMjQ4NCAxNS4yNzEyIDE4LjQwNjUgMTQuMjg2NyAxOC40Njk2IDEzLjI1SDIyLjQ1MThDMjIuMjggMTUuMDI1MSAyMS42NTUzIDE2LjY2NzcgMjAuNjk0OCAxOC4wNjA5Wk0yMi40NTE4IDExLjI1QzIyLjI3NSA5LjQyMzQxIDIxLjYxODcgNy43MzcxIDIwLjYxMDQgNi4zMTg0N0MyMC4zNTk3IDYuNTY4MzcgMjAuMDY3NyA2LjgyOTk2IDE5LjczMDkgNy4wOTA3MkMxOS4yNDM2IDcuNDY4MDMgMTguNjY2OCA3LjgzOTk0IDE3Ljk5MTcgOC4xNzE0MUMxOC4yMzMxIDkuMTM1MjEgMTguNDAzNSAxMC4xNjQgMTguNDY5NiAxMS4yNUgyMi40NTE4Wk0xNi40NjUzIDExLjI1QzE2LjQwODIgMTAuNDI2NiAxNi4yODMxIDkuNjM4OTYgMTYuMTA4MiA4Ljg5MTMzQzE1LjI2NDMgOS4xMzE3MyAxNC4zMTQ1IDkuMzAyNzIgMTMuMjUgOS4zNjkyNlYxMS4yNUgxNi40NjUzWk0xMy4yNSAxMy4yNVYxNS4xMjU3QzE0LjMyODcgMTUuMTgyMiAxNS4yODIyIDE1LjMyOTUgMTYuMTIzOSAxNS41NDA4QzE2LjI5MDYgMTQuODEzNCAxNi40MSAxNC4wNDg1IDE2LjQ2NTMgMTMuMjVIMTMuMjVaTTEzLjI1IDcuMzY0NzZDMTQuMTA0NSA3LjMwMzIyIDE0Ljg2MTMgNy4xNjQ1OCAxNS41Mjk3IDYuOTc2NDlDMTUuMDk1NyA1LjgwNzI5IDE0LjU2MSA0Ljc3MTExIDE0LjAyMjEgMy44OTA5QzEzLjc2MDggMy40NjQwMyAxMy40OTk1IDMuMDc1NjYgMTMuMjUgMi43Mjg2MlY3LjM2NDc2Wk0xNS41MzUgMi41Mzc3MkMxNS41OTkyIDIuNjM4NTcgMTUuNjYzNSAyLjc0MTUzIDE1LjcyNzkgMi44NDY2QzE2LjMxMzQgMy44MDMwMyAxNi45MDMxIDQuOTQwNTIgMTcuMzg3MiA2LjIzMzlDMTcuODIwMSA2LjAwMTQ1IDE4LjE5MTEgNS43NTM1IDE4LjUwNjYgNS41MDkyOEMxOC44MTg5IDUuMjY3NDkgMTkuMDc5OSA1LjAyNjgzIDE5LjI5NDUgNC44MDQzNUMxOC4yMzEzIDMuNzk4MDYgMTYuOTUyNyAzLjAxNzA1IDE1LjUzNSAyLjUzNzcyWk0xMS4yNSAyLjcyODYyQzExLjAwMDUgMy4wNzU2NiAxMC43MzkyIDMuNDY0MDMgMTAuNDc3OSAzLjg5MDlDOS45Mzg5NSA0Ljc3MTExIDkuNDA0MyA1LjgwNzI5IDguOTcwMzUgNi45NzY0OUM5LjYzODY2IDcuMTY0NTggMTAuMzk1NSA3LjMwMzIyIDExLjI1IDcuMzY0NzZWMi43Mjg2MloiIGZpbGw9ImN1cnJlbnQiLz4NCjwvc3ZnPg0K\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M5.46652 5.94685C5.91008 5.5368 6.60208 5.56398 7.01212 6.00754L11.3365 10.6854C12.6751 12.1335 14.9796 12.0821 16.2523 10.5757L20.0811 6.04411C20.4709 5.58269 21.161 5.52468 21.6224 5.91453C22.0838 6.30438 22.1418 6.99447 21.752 7.45589L17.9233 11.9875C15.8021 14.4981 11.9613 14.5838 9.73016 12.1703L5.40582 7.49246C4.99578 7.04889 5.02295 6.3569 5.46652 5.94685ZM22.75 2.8125H4.375C3.16688 2.8125 2.1875 3.79188 2.1875 5V19C2.1875 20.2081 3.16688 21.1875 4.375 21.1875H22.75C23.9581 21.1875 24.9375 20.2081 24.9375 19V5C24.9375 3.79188 23.9581 2.8125 22.75 2.8125ZM4.375 0.625H22.75C25.1662 0.625 27.125 2.58375 27.125 5V19C27.125 21.4162 25.1662 23.375 22.75 23.375H4.375C1.95876 23.375 0 21.4162 0 19V5C0 2.58375 1.95875 0.625 4.375 0.625Z\",\n fill: \"current\"\n});\n\nfunction SvgLetter(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 28 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgLetter);\nexport default \"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjggMjQiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTUuNDY2NTIgNS45NDY4NUM1LjkxMDA4IDUuNTM2OCA2LjYwMjA4IDUuNTYzOTggNy4wMTIxMiA2LjAwNzU0TDExLjMzNjUgMTAuNjg1NEMxMi42NzUxIDEyLjEzMzUgMTQuOTc5NiAxMi4wODIxIDE2LjI1MjMgMTAuNTc1N0wyMC4wODExIDYuMDQ0MTFDMjAuNDcwOSA1LjU4MjY5IDIxLjE2MSA1LjUyNDY4IDIxLjYyMjQgNS45MTQ1M0MyMi4wODM4IDYuMzA0MzggMjIuMTQxOCA2Ljk5NDQ3IDIxLjc1MiA3LjQ1NTg5TDE3LjkyMzMgMTEuOTg3NUMxNS44MDIxIDE0LjQ5ODEgMTEuOTYxMyAxNC41ODM4IDkuNzMwMTYgMTIuMTcwM0w1LjQwNTgyIDcuNDkyNDZDNC45OTU3OCA3LjA0ODg5IDUuMDIyOTUgNi4zNTY5IDUuNDY2NTIgNS45NDY4NVpNMjIuNzUgMi44MTI1SDQuMzc1QzMuMTY2ODggMi44MTI1IDIuMTg3NSAzLjc5MTg4IDIuMTg3NSA1VjE5QzIuMTg3NSAyMC4yMDgxIDMuMTY2ODggMjEuMTg3NSA0LjM3NSAyMS4xODc1SDIyLjc1QzIzLjk1ODEgMjEuMTg3NSAyNC45Mzc1IDIwLjIwODEgMjQuOTM3NSAxOVY1QzI0LjkzNzUgMy43OTE4OCAyMy45NTgxIDIuODEyNSAyMi43NSAyLjgxMjVaTTQuMzc1IDAuNjI1SDIyLjc1QzI1LjE2NjIgMC42MjUgMjcuMTI1IDIuNTgzNzUgMjcuMTI1IDVWMTlDMjcuMTI1IDIxLjQxNjIgMjUuMTY2MiAyMy4zNzUgMjIuNzUgMjMuMzc1SDQuMzc1QzEuOTU4NzYgMjMuMzc1IDAgMjEuNDE2MiAwIDE5VjVDMCAyLjU4Mzc1IDEuOTU4NzUgMC42MjUgNC4zNzUgMC42MjVaIiBmaWxsPSJjdXJyZW50Ii8+DQo8L3N2Zz4NCg==\";\nexport { ForwardRef as ReactComponent };","import React from 'react'\r\nimport './Requirements.scss'\r\nimport $ from 'jquery'\r\nimport 'select2'\r\nimport { debounce } from '../../utils/debounce'\r\nimport { isMobileOnly } from 'react-device-detect'\r\n\r\nimport Navbar from '../shared/Navbar/Navbar'\r\nimport Footer from '../shared/Footer/Footer'\r\nimport { ReactComponent as Error } from '../../assets/error.svg'\r\nimport { ReactComponent as Social } from '../../assets/social.svg'\r\nimport { ReactComponent as Phone } from '../../assets/phone.svg'\r\nimport { ReactComponent as World } from '../../assets/world.svg'\r\nimport { ReactComponent as Letter } from '../../assets/letter.svg'\r\n\r\nimport bootstrapService from '../../services/BootstrapService'\r\n\r\nclass Requirements extends React.Component {\r\n // Constructor\r\n constructor(props) {\r\n super(props);\r\n\r\n // Refs\r\n this.content = null;\r\n this.mobileSelect = null;\r\n\r\n // State\r\n this.state = {\r\n currentState: this.props.match.params.state,\r\n searchFilter: null,\r\n }\r\n\r\n // This Binding\r\n this.clickState = this.clickState.bind(this);\r\n this.searchStates = debounce(this.searchStates.bind(this), 400);\r\n }\r\n\r\n // Lifecycle\r\n componentDidMount() {\r\n window.scrollTo(0, 0);\r\n this.setupSelects();\r\n }\r\n\r\n componentDidUpdate() {\r\n this.updateSelects();\r\n this.updateCurrentState();\r\n }\r\n\r\n // Helpers\r\n setupSelects() {\r\n $('.a4-select select').select2({\r\n minimumResultsForSearch: -1,\r\n });\r\n\r\n $('.a4-select select').on(\"change\", (e, shouldIgnore, shouldIgnoreHistory) => {\r\n if (!shouldIgnore) {\r\n this.setState({ currentState: e.currentTarget.value });\r\n\r\n if (!shouldIgnoreHistory) {\r\n this.props.history.push(`/requirements/${e.currentTarget.value}`);\r\n }\r\n }\r\n });\r\n\r\n $(this.mobileSelect).val(this.state.currentState);\r\n $(this.mobileSelect).trigger(\"change\", [false, true]);\r\n }\r\n\r\n updateSelects() {\r\n if (!$('.a4-select select').first().hasClass(\"select2-hidden-accessible\")) {\r\n this.setupSelects();\r\n }\r\n }\r\n\r\n updateCurrentState() {\r\n // Back Button Clicked\r\n window.onpopstate = (e) => {\r\n if (this.props.match.params.state !== this.state.currentState) {\r\n this.setState({ currentState: this.props.match.params.state }, () => {\r\n $('.a4-select select').val(this.props.match.params.state);\r\n $('.a4-select select').trigger(\"change\", [false, true]);\r\n })\r\n }\r\n } \r\n }\r\n\r\n // Event Handlers\r\n clickState(e) {\r\n const stateName = e.currentTarget.getAttribute('statename');\r\n this.setState({ currentState: stateName }, () => {\r\n if (window.scrollY > 300) {\r\n this.content.scrollIntoView({ behavior: 'smooth', block: 'start' });\r\n }\r\n \r\n this.props.history.push(`/requirements/${stateName}`);\r\n $('.a4-select select').val(stateName);\r\n $('.a4-select select').trigger(\"change\", true);\r\n })\r\n }\r\n\r\n searchStates(e) {\r\n this.setState({ searchFilter: e.target.value !== \"\" ? e.target.value.toLowerCase() : null });\r\n }\r\n\r\n // Component\r\n render() {\r\n const requirementsData = bootstrapService.data.landing.pages.find(p => p.name === \"requirements\");\r\n\r\n const header = requirementsData ? requirementsData.header : null;\r\n\r\n const allRequirements = requirementsData ? requirementsData.requirements : null;\r\n const requirements = allRequirements && this.state.searchFilter ? allRequirements.filter(r => r.authorityName.toLowerCase().search(this.state.searchFilter) > -1) : allRequirements;\r\n const currentRequirement = allRequirements ? allRequirements.find(r => r.authorityName.toLowerCase() === this.state.currentState) : null;\r\n\r\n const renderKey = this.state.currentState; // only re-render when state changes\r\n\r\n return (\r\n <>\r\n {\r\n requirementsData && \r\n <>\r\n <Navbar activeLink=\"requirements\" />\r\n <div className=\"a4-view\">\r\n <div className=\"a4-layout a4-ce\">\r\n <div className=\"a4-ce-container\">\r\n <div className=\"a4-ce-page-title\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n <h1 className=\"title\">{header}</h1>\r\n </div>\r\n <div className=\"a4-ce-content\" ref={div => this.content = div}>\r\n {\r\n allRequirements.length > 1 && \r\n <div className=\"a4-ce-states-panel\">\r\n <div className=\"a4-ce-states-panel-control\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n <div className=\"a4-ce-states-panel-control-label\">\r\n Choose your state\r\n </div>\r\n <div className=\"a4-select\">\r\n <select ref={select => this.mobileSelect = select}>\r\n {\r\n allRequirements.map((requirement, index) => {\r\n return <option value={requirement.authorityName.toLowerCase()} key={index}>{requirement.authorityName}</option>\r\n })\r\n }\r\n </select>\r\n </div>\r\n <div className=\"a4-input -search filter-item\">\r\n <input required placeholder=\"Search\" onChange={this.searchStates} />\r\n <label>Search</label>\r\n <span className=\"a4-input-error\"></span>\r\n <svg className=\"a4-svgsprite -error text-secondary\">\r\n <Error />\r\n </svg>\r\n </div>\r\n </div>\r\n <div className=\"a4-ce-states-panel-list\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n <div className=\"a4-ce-states-panel-list-fill\"></div>\r\n <ul>\r\n {\r\n requirements.map((requirement, index) => {\r\n return <li className={requirement.authorityName === (currentRequirement ? currentRequirement.authorityName : null) ? \"-active\" : \"\"} key={index} style={{cursor: \"pointer\"}}>\r\n <div statename={requirement.authorityName.toLowerCase()} onClick={this.clickState}>{requirement.authorityName}</div>\r\n </li>\r\n })\r\n }\r\n </ul>\r\n {\r\n this.state.searchFilter && requirements.length === 0 &&\r\n <div className=\"a4-ce-states-panel-list-no-results\">\r\n <div>No states matched your search</div>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n }\r\n <div className=\"a4-ce-info\" key={renderKey}>\r\n {\r\n currentRequirement &&\r\n <>\r\n <div className=\"a4-ce-article\">\r\n <div className=\"a4-ce-article-title\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n <h2>{currentRequirement.authorityName}</h2>\r\n </div>\r\n <div className=\"a4-ce-article-content\" data-aos={isMobileOnly ? undefined : \"fade-up\"} dangerouslySetInnerHTML={{ __html: currentRequirement.requirementText }}>\r\n </div>\r\n </div>\r\n <div className=\"a4-ce-contact-card\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n <div className=\"a4-ce-contact-card-title\">\r\n <h4>{currentRequirement.organizationName}</h4>\r\n </div>\r\n <div className=\"a4-ce-contact-card-item\">\r\n <div className=\"a4-ce-contact-card-item-icon\">\r\n <svg className=\"a4-svgsprite -social text-secondary\">\r\n <Social fill={bootstrapService.primaryColor} />\r\n </svg>\r\n </div>\r\n <div className=\"a4-ce-contact-card-item-info\">\r\n <div className=\"a4-ce-contact-card-item-label\">Organization:</div>\r\n <div className=\"a4-ce-contact-card-item-text\">{currentRequirement.organizationName}</div>\r\n </div>\r\n </div>\r\n <div className=\"a4-ce-contact-card-item\">\r\n <div className=\"a4-ce-contact-card-item-icon\">\r\n <svg className=\"a4-svgsprite -phone text-secondary\">\r\n <Phone stroke={bootstrapService.primaryColor} />\r\n </svg>\r\n </div>\r\n <div className=\"a4-ce-contact-card-item-info\">\r\n <div className=\"a4-ce-contact-card-item-label\">Phone:</div>\r\n <a href={`tel:${currentRequirement.organizationPhone}`} className=\"a4-ce-contact-card-item-text\">{currentRequirement.organizationPhone}</a>\r\n </div>\r\n </div>\r\n <div className=\"a4-ce-contact-card-item\">\r\n <div className=\"a4-ce-contact-card-item-icon\">\r\n <svg className=\"a4-svgsprite -world text-secondary\">\r\n <World fill={bootstrapService.primaryColor} />\r\n </svg>\r\n </div>\r\n <div className=\"a4-ce-contact-card-item-info\">\r\n <div className=\"a4-ce-contact-card-item-label\">Website:</div>\r\n <a href={currentRequirement.organizationUrl} className=\"a4-ce-contact-card-item-text\" target=\"_blank\" rel=\"noreferrer\">{currentRequirement.organizationUrl}</a>\r\n </div>\r\n </div>\r\n {\r\n currentRequirement.organizationEmail &&\r\n <div className=\"a4-ce-contact-card-item\">\r\n <div className=\"a4-ce-contact-card-item-icon\">\r\n <svg className=\"a4-svgsprite -letter text-secondary\">\r\n <Letter fill={bootstrapService.primaryColor} />\r\n </svg>\r\n </div>\r\n <div className=\"a4-ce-contact-card-item-info\">\r\n <div className=\"a4-ce-contact-card-item-label\">Email:</div>\r\n <a href={`mailto:${currentRequirement.organizationEmail}`} className=\"a4-ce-contact-card-item-text\">{currentRequirement.organizationEmail}</a>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n <Footer />\r\n </div>\r\n </div>\r\n </>\r\n }\r\n </>\r\n )\r\n }\r\n}\r\n\r\nexport default Requirements;","import React from 'react'\r\nimport { Link } from 'react-router-dom'\r\nimport { isMobileOnly } from 'react-device-detect'\r\n\r\nimport Navbar from '../shared/Navbar/Navbar'\r\nimport Footer from '../shared/Footer/Footer'\r\nimport BubbleButton from '../shared/BubbleButton/BubbleButton'\r\nimport { ReactComponent as Error } from '../../assets/error.svg'\r\n\r\nimport formService from '../../services/FormService'\r\nimport memberService from '../../services/MemberService'\r\nimport recaptchaService from '../../services/RecaptchaService'\r\n\r\nclass Login extends React.Component {\r\n // Constructor\r\n constructor(props) {\r\n super(props);\r\n\r\n // Refs\r\n this.form = null;\r\n\r\n // This Binding\r\n this.submitForm = this.submitForm.bind(this);\r\n }\r\n\r\n // Lifecycle\r\n componentDidMount() {\r\n window.scrollTo(0, 0);\r\n }\r\n\r\n // Event Handlers\r\n submitForm(e) {\r\n e.preventDefault();\r\n\r\n const isFormValid = formService.validate(this.form);\r\n if (!isFormValid) return;\r\n\r\n formService.showLoadingButton(this.form);\r\n\r\n const email = e.target.email.value.trim();\r\n const password = e.target.password.value;\r\n\r\n let memberRequest = {email, password}\r\n\r\n recaptchaService.getToken(\"login\")\r\n .then(token => {\r\n memberRequest.recaptchaToken = token;\r\n memberRequest.contactId = memberService.getMtcId();\r\n \r\n memberService.login(memberRequest)\r\n .then(json => {\r\n if (json && json.succeeded) {\r\n memberService.goToMembers();\r\n }\r\n else {\r\n formService.hideAllErrors(this.form);\r\n formService.hideLoadingButton(this.form);\r\n if (json && json.errors && json.errors.length) {\r\n formService.showFormError(this.form, json.errors[0]);\r\n }\r\n else {\r\n formService.showFormError(this.form, 'Sorry, there was an error');\r\n }\r\n }\r\n });\r\n });\r\n }\r\n\r\n // Component\r\n render() {\r\n return (\r\n <>\r\n <Navbar activeLink=\"login\" />\r\n <div className=\"a4-view\">\r\n <main className=\"a4-layout a4-auth -login\">\r\n <div className=\"a4-auth-container -login\">\r\n <section className=\"a4-auth-item-container\">\r\n <div className=\"a4-auth-item-shadow\"></div>\r\n <div className=\"a4-auth-item-content\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n <h1 className=\"a4-auth-item-title\">Login</h1>\r\n <form className=\"a4-auth-form\" ref={form => this.form = form} onSubmit={this.submitForm}>\r\n <div className=\"a4-input\">\r\n <input name=\"email\" type='email' required placeholder=\"E-mail address\" />\r\n <label htmlFor=\"email\">E-mail address</label>\r\n <span className=\"a4-input-error\">Enter a valid e-mail address</span>\r\n <svg className=\"a4-svgsprite -error text-secondary\">\r\n <Error />\r\n </svg>\r\n </div>\r\n <div className=\"a4-input\">\r\n <input name=\"password\" placeholder=\"Password\" required type=\"password\" />\r\n <label htmlFor=\"password\">Password</label>\r\n <span className=\"a4-input-error\">Enter a valid password</span>\r\n <svg className=\"a4-svgsprite -error text-secondary\">\r\n <Error />\r\n </svg>\r\n </div>\r\n <p className=\"a4-form-error\"></p>\r\n <section className=\"a4-auth-form-control\">\r\n <BubbleButton className=\"a4-form-submit -primary\" type=\"submit\" formNoValidate>\r\n <b>Login</b>\r\n </BubbleButton>\r\n <Link to=\"/forgot-password\">\r\n <b>Forgot your password?</b>\r\n </Link>\r\n </section>\r\n </form>\r\n </div>\r\n </section>\r\n <aside className=\"a4-auth-additional\" data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-delay='100'>\r\n <span>\r\n Don’t have an Account? \r\n <Link to=\"/register\" className=\"text-primary\">Sign up now!</Link>\r\n </span>\r\n </aside>\r\n </div>\r\n <Footer />\r\n </main>\r\n </div>\r\n </>\r\n )\r\n }\r\n}\r\n\r\nexport default Login;","import React from 'react'\r\nimport { Link } from 'react-router-dom'\r\nimport { isMobileOnly } from 'react-device-detect'\r\n\r\nimport Navbar from '../shared/Navbar/Navbar'\r\nimport Footer from '../shared/Footer/Footer'\r\nimport FullNameInput from '../shared/FullNameInput/FullNameInput'\r\nimport BubbleButton from '../shared/BubbleButton/BubbleButton'\r\nimport { ReactComponent as Error } from '../../assets/error.svg'\r\n\r\nimport formService from '../../services/FormService'\r\nimport memberService from '../../services/MemberService'\r\nimport recaptchaService from '../../services/RecaptchaService'\r\nimport { MemberType } from '../../services/MemberService'\r\n\r\nclass Register extends React.Component {\r\n // Constructor\r\n constructor(props) {\r\n super(props);\r\n\r\n // Refs\r\n this.form = null;\r\n\r\n // State\r\n this.state = {\r\n useFullName: true,\r\n }\r\n\r\n // This Binding\r\n this.ignoreFullName = this.ignoreFullName.bind(this);\r\n this.submitForm = this.submitForm.bind(this);\r\n }\r\n\r\n // Lifecycle\r\n componentDidMount() {\r\n window.scrollTo(0, 0);\r\n }\r\n\r\n // Event Handlers\r\n ignoreFullName() {\r\n this.setState({ useFullName: false });\r\n }\r\n\r\n submitForm(e) {\r\n e.preventDefault();\r\n\r\n const isFormValid = formService.validate(this.form);\r\n\r\n const email = e.target.email.value.trim();\r\n const password = e.target.password.value;\r\n const confirm = e.target.confirm.value;\r\n\r\n let firstName = \"\";\r\n let middleName = \"\";\r\n let lastName = \"\";\r\n\r\n if (this.state.useFullName) {\r\n firstName = e.target.fullName.value.split(\" \")[0];\r\n lastName = e.target.fullName.value.split(\" \")[1];\r\n }\r\n else {\r\n firstName = e.target.firstName.value;\r\n middleName = e.target.middleName.value;\r\n lastName = e.target.lastName.value;\r\n }\r\n\r\n if (password !== confirm) {\r\n formService.showInputError(this.form, \"confirm\", \"This password does not match\");\r\n formService.hideLoadingButton(this.form);\r\n return;\r\n }\r\n\r\n if (!isFormValid) return;\r\n\r\n formService.showLoadingButton(this.form);\r\n\r\n let memberRequest = { email, password, firstName, middleName, lastName };\r\n\r\n // Check if Joining Group\r\n if (this.props.match.params.group) {\r\n memberRequest.groupRegisterCode = this.props.match.params.group;\r\n }\r\n\r\n recaptchaService.getToken(\"register\")\r\n .then(token => {\r\n memberRequest.recaptchaToken = token;\r\n memberRequest.memberType = MemberType.Register;\r\n memberRequest.contactId = memberService.getMtcId();\r\n\r\n memberService.checkEmailInUse(memberRequest)\r\n .then((isInUse) => {\r\n if (isInUse) {\r\n formService.hideAllErrors(this.form);\r\n formService.hideLoadingButton(this.form);\r\n formService.showInputError(this.form, \"email\", \"This email address is already taken\");\r\n }\r\n else {\r\n memberService.register(memberRequest)\r\n .then(json => {\r\n if (json.succeeded) {\r\n memberService.goToMembers();\r\n }\r\n else {\r\n formService.hideAllErrors(this.form);\r\n formService.hideLoadingButton(this.form);\r\n formService.showFormError(this.form, json.errors[0]);\r\n }\r\n });\r\n }\r\n })\r\n });\r\n }\r\n\r\n // Component\r\n render() {\r\n return (\r\n <>\r\n <Navbar activeLink=\"register\" />\r\n <div className=\"a4-view\">\r\n <main className=\"a4-layout a4-auth -register\">\r\n <div className=\"a4-auth-container -register\">\r\n <section className=\"a4-auth-item-container\">\r\n <div className=\"a4-auth-item-shadow\"></div>\r\n <div className=\"a4-auth-item-content\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n <h1 className=\"a4-auth-item-title\"><span className=\"text-primary\">Sign</span> Up</h1>\r\n <form className=\"a4-auth-form\" ref={form => this.form = form} onSubmit={this.submitForm}>\r\n <FullNameInput ignoreFullName={this.ignoreFullName} />\r\n <div className=\"a4-input\">\r\n <input name=\"email\" required placeholder=\"E-mail address\" />\r\n <label htmlFor=\"email\">E-mail address</label>\r\n <span className=\"a4-input-error\">Enter a valid e-mail address</span>\r\n <svg className=\"a4-svgsprite -error text-secondary\">\r\n <Error />\r\n </svg>\r\n </div>\r\n <div className=\"a4-input\">\r\n <input name=\"password\" placeholder=\"Password\" required type=\"password\" />\r\n <label htmlFor=\"password\">Password</label>\r\n <span className=\"a4-input-error\">Enter a valid password</span>\r\n <svg className=\"a4-svgsprite -error text-secondary\">\r\n <Error />\r\n </svg>\r\n </div>\r\n <div className=\"a4-input\">\r\n <input name=\"confirm\" placeholder=\"Confirm Password\" required type=\"password\" />\r\n <label htmlFor=\"password\">Confirm Password</label>\r\n <span className=\"a4-input-error\">Enter a valid password</span>\r\n <svg className=\"a4-svgsprite -error text-secondary\">\r\n <Error />\r\n </svg>\r\n </div>\r\n <p className=\"a4-form-error\"></p>\r\n <section className=\"a4-auth-form-control -join\">\r\n <BubbleButton className=\"a4-form-submit -primary\" type=\"submit\" formNoValidate>\r\n <b>Create Account</b>\r\n </BubbleButton>\r\n </section>\r\n </form>\r\n </div>\r\n </section>\r\n <aside className=\"a4-auth-additional\" data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-delay='100'>\r\n <span>\r\n Already have an account? \r\n <Link to=\"/login\" className=\"text-primary\">Login</Link>\r\n </span>\r\n </aside>\r\n </div>\r\n <Footer />\r\n </main>\r\n </div>\r\n </>\r\n )\r\n }\r\n}\r\n\r\nexport default Register;","import React from 'react'\r\nimport { Link } from 'react-router-dom'\r\nimport $ from 'jquery'\r\nimport { isMobileOnly } from 'react-device-detect'\r\n\r\nimport Navbar from '../shared/Navbar/Navbar'\r\nimport Footer from '../shared/Footer/Footer'\r\nimport BubbleButton from '../shared/BubbleButton/BubbleButton'\r\nimport { ReactComponent as Error } from '../../assets/error.svg'\r\n\r\nimport formService from '../../services/FormService'\r\nimport memberService from '../../services/MemberService'\r\nimport recaptchaService from '../../services/RecaptchaService'\r\n\r\nclass ForgotPassword extends React.Component {\r\n // Constructor\r\n constructor(props) {\r\n super(props);\r\n\r\n // Refs\r\n this.content = null;\r\n this.paragraph = null;\r\n this.form = null;\r\n\r\n // This Binding\r\n this.submitForm = this.submitForm.bind(this);\r\n }\r\n\r\n // Lifecycle\r\n componentDidMount() {\r\n window.scrollTo(0, 0);\r\n }\r\n\r\n // Event Handlers\r\n submitForm(e) {\r\n e.preventDefault();\r\n\r\n const isFormValid = formService.validate(this.form);\r\n if(!isFormValid) return;\r\n\r\n formService.showLoadingButton(this.form);\r\n\r\n const email = e.target.email.value.trim();\r\n\r\n let forgotPasswordRequest = {email};\r\n\r\n recaptchaService.getToken(\"forgotPassword\")\r\n .then(token => {\r\n forgotPasswordRequest.recaptchaToken = token;\r\n\r\n memberService.forgotPassword(forgotPasswordRequest)\r\n .then(json => {\r\n if (json.succeeded) {\r\n this.content.classList.add(\"-success\");\r\n $(this.paragraph).animate({ opacity: 0 }, 300, function () {\r\n $(this)\r\n .html(\r\n \"We’ve emailed you a link to reset your password. If you don’t see it, please check your spam folder before getting in touch!\"\r\n )\r\n .animate({ opacity: 1 }, 100);\r\n });\r\n }\r\n else {\r\n this.content.classList.add(\"-success\");\r\n $(this.paragraph).animate({ opacity: 0 }, 300, function () {\r\n $(this)\r\n .html(\r\n \"If there is an account with your email address then we have emailed you a link to reset your password. If you don’t see it, please check your spam folder before getting in touch!\"\r\n )\r\n .animate({ opacity: 1 }, 100);\r\n });\r\n\r\n // formService.hideAllErrors(this.form);\r\n // formService.hideLoadingButton(this.form);\r\n\r\n // if (json.errors[0] === \"Cannot get user\") {\r\n // formService.showInputError(this.form, \"email\", \"This email address is not recognized\");\r\n // }\r\n // else {\r\n // formService.showFormError(this.form, json.errors[0]);\r\n // } \r\n }\r\n });\r\n });\r\n }\r\n\r\n // Component\r\n render() {\r\n return (\r\n <>\r\n <Navbar />\r\n <div className=\"a4-view\">\r\n <main className=\"a4-layout a4-auth\">\r\n <div className=\"a4-auth-container -login\">\r\n <section className=\"a4-auth-item-container\">\r\n <div className=\"a4-auth-item-shadow\"></div>\r\n <div className=\"a4-auth-item-content\" data-aos={isMobileOnly ? undefined : \"fade-up\"} ref={div => this.content = div}>\r\n <h1 className=\"a4-auth-item-title\"><span className=\"text-primary\">Forgot</span> your password?</h1>\r\n <p ref={p => this.paragraph = p}>Enter your account email, you will be sent<br></br>a link to reset your password.</p>\r\n <form className=\"a4-auth-form\" ref={form => this.form = form} onSubmit={this.submitForm}>\r\n <div className=\"a4-input\">\r\n <input name=\"email\" required placeholder=\"E-mail address\" />\r\n <label htmlFor=\"email\">E-mail address</label>\r\n <span className=\"a4-input-error\" ref={span => this.emailError = span}>Enter a valid e-mail address</span>\r\n <svg className=\"a4-svgsprite -error text-secondary\">\r\n <Error />\r\n </svg>\r\n </div>\r\n <p className=\"a4-form-error\"></p>\r\n <section className=\"a4-auth-form-control\">\r\n <BubbleButton className=\"a4-form-submit -primary\" type=\"submit\" formNoValidate>\r\n <b>Send me reset link</b>\r\n </BubbleButton>\r\n </section>\r\n </form>\r\n </div>\r\n </section>\r\n <aside className=\"a4-auth-additional\" data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-delay='100'>\r\n <span>\r\n Already have an Account? \r\n <Link to=\"/login\" className=\"text-primary\">Login</Link>\r\n </span>\r\n </aside>\r\n </div>\r\n <Footer />\r\n </main>\r\n </div>\r\n </>\r\n )\r\n }\r\n}\r\n\r\nexport default ForgotPassword;","import React from 'react'\r\nimport Navbar from '../shared/Navbar/Navbar'\r\nimport Footer from '../shared/Footer/Footer'\r\nimport BubbleButton from '../shared/BubbleButton/BubbleButton'\r\nimport { ReactComponent as Error } from '../../assets/error.svg'\r\nimport { isMobileOnly } from 'react-device-detect'\r\n\r\nimport formService from '../../services/FormService'\r\nimport memberService from '../../services/MemberService'\r\nimport recaptchaService from '../../services/RecaptchaService'\r\n\r\nclass ResetPassword extends React.Component {\r\n // Constructor\r\n constructor(props) {\r\n super(props);\r\n\r\n // Refs\r\n this.form = null;\r\n\r\n // This Binding\r\n this.submitForm = this.submitForm.bind(this);\r\n }\r\n\r\n // Lifecycle\r\n componentDidMount() {\r\n window.scrollTo(0, 0);\r\n }\r\n \r\n // Event Handlers\r\n submitForm(e) {\r\n e.preventDefault();\r\n\r\n const isFormValid = formService.validate(this.form);\r\n\r\n const token = this.props.match.params.token;\r\n const password = e.target.password.value;\r\n const confirm = e.target.confirm.value;\r\n\r\n if (password !== confirm) {\r\n formService.showInputError(this.form, \"confirm\", \"This password does not match\");\r\n formService.hideLoadingButton(this.form);\r\n return;\r\n }\r\n\r\n if(!isFormValid) return;\r\n\r\n formService.showLoadingButton(this.form);\r\n\r\n let resetPasswordRequest = {token, password}\r\n\r\n recaptchaService.getToken(\"resetPassword\")\r\n .then(token => {\r\n resetPasswordRequest.recaptchaToken = token;\r\n\r\n memberService.resetPassword(resetPasswordRequest)\r\n .then(json => {\r\n if (json.succeeded) {\r\n memberService.goToMembers();\r\n }\r\n else {\r\n formService.hideAllErrors(this.form);\r\n formService.hideLoadingButton(this.form);\r\n formService.showFormError(this.form, json.errors[0]);\r\n }\r\n });\r\n });\r\n }\r\n\r\n // Component\r\n render() {\r\n return (\r\n <>\r\n <Navbar />\r\n <div className=\"a4-view\">\r\n <main className=\"a4-layout a4-auth\">\r\n <div className=\"a4-auth-container -login\">\r\n <section className=\"a4-auth-item-container\">\r\n <div className=\"a4-auth-item-shadow\"></div>\r\n <div className=\"a4-auth-item-content\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n <h1 className=\"a4-auth-item-title\"><span className=\"text-primary\">Reset</span> your password</h1>\r\n <p>Enter your new password.</p>\r\n <form className=\"a4-auth-form\" ref={form => this.form = form} onSubmit={this.submitForm}>\r\n <div className=\"a4-input\">\r\n <input name=\"password\" placeholder=\"Password\" required type=\"password\" />\r\n <label htmlFor=\"password\">New Password</label>\r\n <span className=\"a4-input-error\">Enter a valid password</span>\r\n <svg className=\"a4-svgsprite -error text-secondary\">\r\n <Error />\r\n </svg>\r\n </div>\r\n <div className=\"a4-input\">\r\n <input name=\"confirm\" placeholder=\"Re-enter New Password\" required type=\"password\" />\r\n <label htmlFor=\"password\">Re-enter New Password</label>\r\n <span className=\"a4-input-error\">Enter a valid password</span>\r\n <svg className=\"a4-svgsprite -error text-secondary\">\r\n <Error />\r\n </svg>\r\n </div>\r\n <p className=\"a4-form-error\"></p>\r\n <section className=\"a4-auth-form-control\">\r\n <BubbleButton className=\"a4-form-submit -primary\" type=\"submit\" formNoValidate>\r\n <b>Reset password</b>\r\n </BubbleButton>\r\n </section>\r\n </form>\r\n </div>\r\n </section>\r\n <aside className=\"a4-auth-additional\" data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-delay='100'>\r\n </aside>\r\n </div>\r\n <Footer />\r\n </main>\r\n </div>\r\n </>\r\n )\r\n }\r\n}\r\n\r\nexport default ResetPassword;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M17.9848 9.57389C17.9848 10.612 17.4915 12.0763 16.6208 13.791C15.7675 15.4716 14.6193 17.2653 13.4551 18.9219C12.2935 20.5748 11.1298 22.0719 10.2555 23.1569C9.9958 23.4791 9.76199 23.7645 9.56175 24.0064C9.36151 23.7645 9.1277 23.4791 8.86802 23.1569C7.99367 22.0719 6.83 20.5748 5.66839 18.9219C4.50424 17.2653 3.35596 15.4716 2.50267 13.791C1.63201 12.0763 1.13867 10.612 1.13867 9.57389C1.13867 4.98668 4.89981 1.25 9.56175 1.25C14.2237 1.25 17.9848 4.98668 17.9848 9.57389Z\",\n stroke: \"current\",\n strokeWidth: 2,\n fill: \"transparent\"\n});\n\nvar _ref3 = /*#__PURE__*/React.createElement(\"circle\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n cx: 9.5625,\n cy: 9.13477,\n r: 2.5,\n stroke: \"current\",\n strokeWidth: 2,\n fill: \"transparent\"\n});\n\nvar _ref4 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M6.3664 25.0195C4.88188 25.3386 3.9082 25.8737 3.9082 26.4801C3.9082 27.4577 6.43952 28.2503 9.56205 28.2503C12.6846 28.2503 15.2159 27.4577 15.2159 26.4801C15.2159 25.8737 14.2422 25.3386 12.7577 25.0195\",\n stroke: \"current\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n fill: \"transparent\"\n});\n\nfunction SvgLocation(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 19 30\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2, _ref3, _ref4);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgLocation);\nexport default \"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTkgMzAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTE3Ljk4NDggOS41NzM4OUMxNy45ODQ4IDEwLjYxMiAxNy40OTE1IDEyLjA3NjMgMTYuNjIwOCAxMy43OTFDMTUuNzY3NSAxNS40NzE2IDE0LjYxOTMgMTcuMjY1MyAxMy40NTUxIDE4LjkyMTlDMTIuMjkzNSAyMC41NzQ4IDExLjEyOTggMjIuMDcxOSAxMC4yNTU1IDIzLjE1NjlDOS45OTU4IDIzLjQ3OTEgOS43NjE5OSAyMy43NjQ1IDkuNTYxNzUgMjQuMDA2NEM5LjM2MTUxIDIzLjc2NDUgOS4xMjc3IDIzLjQ3OTEgOC44NjgwMiAyMy4xNTY5QzcuOTkzNjcgMjIuMDcxOSA2LjgzIDIwLjU3NDggNS42NjgzOSAxOC45MjE5QzQuNTA0MjQgMTcuMjY1MyAzLjM1NTk2IDE1LjQ3MTYgMi41MDI2NyAxMy43OTFDMS42MzIwMSAxMi4wNzYzIDEuMTM4NjcgMTAuNjEyIDEuMTM4NjcgOS41NzM4OUMxLjEzODY3IDQuOTg2NjggNC44OTk4MSAxLjI1IDkuNTYxNzUgMS4yNUMxNC4yMjM3IDEuMjUgMTcuOTg0OCA0Ljk4NjY4IDE3Ljk4NDggOS41NzM4OVoiIHN0cm9rZT0iY3VycmVudCIgc3Ryb2tlLXdpZHRoPSIyIiBmaWxsPSJ0cmFuc3BhcmVudCIvPg0KPGNpcmNsZSBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgY3g9IjkuNTYyNSIgY3k9IjkuMTM0NzciIHI9IjIuNSIgc3Ryb2tlPSJjdXJyZW50IiBzdHJva2Utd2lkdGg9IjIiIGZpbGw9InRyYW5zcGFyZW50Ii8+DQo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTYuMzY2NCAyNS4wMTk1QzQuODgxODggMjUuMzM4NiAzLjkwODIgMjUuODczNyAzLjkwODIgMjYuNDgwMUMzLjkwODIgMjcuNDU3NyA2LjQzOTUyIDI4LjI1MDMgOS41NjIwNSAyOC4yNTAzQzEyLjY4NDYgMjguMjUwMyAxNS4yMTU5IDI3LjQ1NzcgMTUuMjE1OSAyNi40ODAxQzE1LjIxNTkgMjUuODczNyAxNC4yNDIyIDI1LjMzODYgMTIuNzU3NyAyNS4wMTk1IiBzdHJva2U9ImN1cnJlbnQiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBmaWxsPSJ0cmFuc3BhcmVudCIvPg0KPC9zdmc+DQo=\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M23.9519 23.1875H25.125C26.7819 23.1875 28.125 21.8444 28.125 20.1875C28.125 17.8125 28.125 15.4375 28.125 13.0625C28.125 11.4056 26.7819 10.0625 25.125 10.0625H4C2.34315 10.0625 1 11.4056 1 13.0625V20.1875C1 21.8444 2.34314 23.1875 4 23.1875H5.17308\",\n stroke: \"current\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n fill: \"transparent\"\n});\n\nvar _ref3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M5.47754 3C5.47754 1.89543 6.37297 1 7.47754 1H21.6474C22.752 1 23.6474 1.89543 23.6474 3V6.21875H5.47754V3Z\",\n stroke: \"current\",\n strokeWidth: 2,\n fill: \"transparent\"\n});\n\nvar _ref4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M20.8652 24.125C20.8652 25.2296 19.9698 26.125 18.8652 26.125L10.2595 26.125C9.15489 26.125 8.25946 25.2296 8.25946 24.125L8.25946 20.25L20.8652 20.25L20.8652 24.125Z\",\n stroke: \"current\",\n strokeWidth: 2,\n fill: \"transparent\"\n});\n\nvar _ref5 = /*#__PURE__*/React.createElement(\"line\", {\n x1: 5.47754,\n y1: 13.6562,\n x2: 8.34613,\n y2: 13.6562,\n stroke: \"current\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n fill: \"transparent\"\n});\n\nfunction SvgPrinter(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 30 28\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2, _ref3, _ref4, _ref5);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgPrinter);\nexport default \"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMzAgMjgiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQo8cGF0aCBkPSJNMjMuOTUxOSAyMy4xODc1SDI1LjEyNUMyNi43ODE5IDIzLjE4NzUgMjguMTI1IDIxLjg0NDQgMjguMTI1IDIwLjE4NzVDMjguMTI1IDE3LjgxMjUgMjguMTI1IDE1LjQzNzUgMjguMTI1IDEzLjA2MjVDMjguMTI1IDExLjQwNTYgMjYuNzgxOSAxMC4wNjI1IDI1LjEyNSAxMC4wNjI1SDRDMi4zNDMxNSAxMC4wNjI1IDEgMTEuNDA1NiAxIDEzLjA2MjVWMjAuMTg3NUMxIDIxLjg0NDQgMi4zNDMxNCAyMy4xODc1IDQgMjMuMTg3NUg1LjE3MzA4IiBzdHJva2U9ImN1cnJlbnQiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBmaWxsPSJ0cmFuc3BhcmVudCIvPg0KPHBhdGggZD0iTTUuNDc3NTQgM0M1LjQ3NzU0IDEuODk1NDMgNi4zNzI5NyAxIDcuNDc3NTQgMUgyMS42NDc0QzIyLjc1MiAxIDIzLjY0NzQgMS44OTU0MyAyMy42NDc0IDNWNi4yMTg3NUg1LjQ3NzU0VjNaIiBzdHJva2U9ImN1cnJlbnQiIHN0cm9rZS13aWR0aD0iMiIgZmlsbD0idHJhbnNwYXJlbnQiIC8+DQo8cGF0aCBkPSJNMjAuODY1MiAyNC4xMjVDMjAuODY1MiAyNS4yMjk2IDE5Ljk2OTggMjYuMTI1IDE4Ljg2NTIgMjYuMTI1TDEwLjI1OTUgMjYuMTI1QzkuMTU0ODkgMjYuMTI1IDguMjU5NDYgMjUuMjI5NiA4LjI1OTQ2IDI0LjEyNUw4LjI1OTQ2IDIwLjI1TDIwLjg2NTIgMjAuMjVMMjAuODY1MiAyNC4xMjVaIiBzdHJva2U9ImN1cnJlbnQiIHN0cm9rZS13aWR0aD0iMiIgZmlsbD0idHJhbnNwYXJlbnQiLz4NCjxsaW5lIHgxPSI1LjQ3NzU0IiB5MT0iMTMuNjU2MiIgeDI9IjguMzQ2MTMiIHkyPSIxMy42NTYyIiBzdHJva2U9ImN1cnJlbnQiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBmaWxsPSJ0cmFuc3BhcmVudCIvPg0KPC9zdmc+DQo=\";\nexport { ForwardRef as ReactComponent };","import React from 'react'\r\nimport './Help.scss'\r\nimport { isMobileOnly } from 'react-device-detect'\r\n\r\nimport Navbar from '../shared/Navbar/Navbar'\r\nimport Subscribe from '../shared/Subscribe/Subscribe'\r\nimport Footer from '../shared/Footer/Footer'\r\nimport { ReactComponent as Letter } from '../../assets/letter.svg'\r\nimport { ReactComponent as Phone } from '../../assets/phone.svg'\r\nimport { ReactComponent as Location } from '../../assets/location.svg'\r\nimport { ReactComponent as World } from '../../assets/world.svg'\r\nimport { ReactComponent as Printer } from '../../assets/printer.svg'\r\n\r\nimport bootstrapService from '../../services/BootstrapService'\r\n\r\nclass Help extends React.Component {\r\n\r\n // Lifecycle\r\n componentDidMount() {\r\n window.scrollTo(0, 0);\r\n }\r\n\r\n // Component\r\n render() {\r\n const helpData = bootstrapService.data.landing.pages.find(p => p.name === \"help-support\");\r\n\r\n const header = helpData ? helpData.header : null;\r\n const body = helpData ? helpData.bodyText : null;\r\n\r\n const siteData = bootstrapService.data.site;\r\n\r\n const email = siteData.siteEmail;\r\n const phone = siteData.sitePhone;\r\n const address1 = siteData.siteAddress.street;\r\n const address2 = siteData.siteAddress.city.concat(\", \", siteData.siteAddress.state, \" \", siteData.siteAddress.zip);\r\n const fullAddress = address1.concat(\" \", address2);\r\n const url = siteData.name;\r\n const fax = siteData.siteFax;\r\n\r\n return (\r\n <>\r\n {\r\n helpData && siteData &&\r\n <>\r\n <Navbar />\r\n <div className=\"a4-view\">\r\n <div className=\"a4-layout a4-help-and-support\">\r\n <div className=\"a4- a4-help-and-support-container\">\r\n <div className=\"a4- a4-help-and-support-page-title\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n <h1 className=\"title\">{header}</h1>\r\n <p className=\"description\">{body}</p>\r\n </div>\r\n <div className=\"a4-help-and-support-contacts\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n <ul className=\"a4-help-and-support-contacts-list\">\r\n <li className=\"a4-help-and-support-contacts-list-item\">\r\n <div className=\"a4-help-and-support-contacts-list-item-info\">\r\n <div className=\"a4-help-and-support-contacts-list-item-label\">Email:</div>\r\n <a href={`mailto:${email}`} target=\"_blank\" rel=\"noreferrer\">\r\n <div className=\"a4-help-and-support-contacts-list-item-value\">{email}</div>\r\n </a>\r\n </div>\r\n <div className=\"a4-help-and-support-contacts-list-item-icon\">\r\n <svg className=\"a4-svgsprite -letter text-secondary\">\r\n <Letter fill={bootstrapService.primaryColor} />\r\n </svg>\r\n </div>\r\n </li>\r\n <li className=\"a4-help-and-support-contacts-list-item\">\r\n <div className=\"a4-help-and-support-contacts-list-item-info\">\r\n <div className=\"a4-help-and-support-contacts-list-item-label\">Phone:</div>\r\n <a href={`tel:${phone}`}>\r\n <div className=\"a4-help-and-support-contacts-list-item-value\">{phone}</div>\r\n </a>\r\n </div>\r\n <div className=\"a4-help-and-support-contacts-list-item-icon\">\r\n <svg className=\"a4-svgsprite -phone text-secondary\">\r\n <Phone stroke={bootstrapService.primaryColor} />\r\n </svg>\r\n </div>\r\n </li>\r\n <li className=\"a4-help-and-support-contacts-list-item\">\r\n <div className=\"a4-help-and-support-contacts-list-item-info\">\r\n <div className=\"a4-help-and-support-contacts-list-item-label\">Mailing Address:</div>\r\n <a href={`http://maps.google.com/?q=${fullAddress}`} target=\"_blank\" rel=\"noreferrer\">\r\n <div className=\"a4-help-and-support-contacts-list-item-value\">{address1}<br></br>{address2}</div>\r\n </a>\r\n </div>\r\n <div className=\"a4-help-and-support-contacts-list-item-icon\">\r\n <svg className=\"a4-svgsprite -location text-secondary\">\r\n <Location stroke={bootstrapService.primaryColor} />\r\n </svg>\r\n </div>\r\n </li>\r\n <li className=\"a4-help-and-support-contacts-list-item\">\r\n <div className=\"a4-help-and-support-contacts-list-item-info\">\r\n <div className=\"a4-help-and-support-contacts-list-item-label\">Website:</div>\r\n <a href={`https://${url}`} target=\"_blank\" rel=\"noreferrer\">\r\n <div className=\"a4-help-and-support-contacts-list-item-value\">https://{url}</div>\r\n </a>\r\n </div>\r\n <div className=\"a4-help-and-support-contacts-list-item-icon\">\r\n <svg className=\"a4-svgsprite -world text-secondary\">\r\n <World fill={bootstrapService.primaryColor} />\r\n </svg>\r\n </div>\r\n </li>\r\n <li className=\"a4-help-and-support-contacts-list-item\">\r\n <div className=\"a4-help-and-support-contacts-list-item-info\">\r\n <div className=\"a4-help-and-support-contacts-list-item-label\">Fax:</div>\r\n <a href={`fax:${fax}`}>\r\n <div className=\"a4-help-and-support-contacts-list-item-value\">{fax}</div>\r\n </a>\r\n </div>\r\n <div className=\"a4-help-and-support-contacts-list-item-icon\">\r\n <svg className=\"a4-svgsprite -printer text-secondary\">\r\n <Printer stroke={bootstrapService.primaryColor} />\r\n </svg>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n <Subscribe />\r\n <Footer />\r\n </div>\r\n </div>\r\n </>\r\n }\r\n </>\r\n )\r\n }\r\n}\r\n\r\nexport default Help;","import httpService from './HttpService';\r\n\r\nclass FaqService {\r\n \r\n askQuestion(faqRequest) {\r\n const url = 'api/faqs/ask';\r\n\r\n return httpService.post(url, faqRequest);\r\n }\r\n}\r\n\r\nconst faqService = new FaqService();\r\nexport default faqService;","import React from 'react'\r\nimport './Faq.scss'\r\nimport $ from 'jquery'\r\nimport { isMobileOnly } from 'react-device-detect'\r\n\r\nimport Navbar from '../shared/Navbar/Navbar'\r\nimport Subscribe from '../shared/Subscribe/Subscribe'\r\nimport Footer from '../shared/Footer/Footer'\r\nimport BubbleButton from '../shared/BubbleButton/BubbleButton'\r\nimport { ReactComponent as CheckMark } from '../../assets/check-mark.svg'\r\nimport { ReactComponent as Error } from '../../assets/error.svg'\r\n\r\nimport bootstrapService from '../../services/BootstrapService'\r\nimport formService from '../../services/FormService'\r\nimport faqService from '../../services/FaqService'\r\nimport recaptchaService from '../../services/RecaptchaService'\r\n\r\nclass Faq extends React.Component {\r\n // Constructor\r\n constructor(props) {\r\n super(props);\r\n\r\n // Refs\r\n this.accordianItems = new Array([]);\r\n this.questionForm = null;\r\n this.successMessage = null;\r\n\r\n // This Binding\r\n this.clickAccordianItem = this.clickAccordianItem.bind(this);\r\n this.submitQuestion = this.submitQuestion.bind(this);\r\n }\r\n\r\n // Lifecycle\r\n componentDidMount() {\r\n window.scrollTo(0, 0);\r\n this.setupAccordian();\r\n }\r\n\r\n componentDidUpdate() {\r\n this.setupAccordian();\r\n }\r\n\r\n // Helpers\r\n setupAccordian() {\r\n for (const item of this.accordianItems) {\r\n const paragraph = $(item).find(\".a4-faq-topics-accordion-item-content-answer\");\r\n const height = -(paragraph.height() + 20);\r\n paragraph.css(\"margin-top\", height);\r\n }\r\n }\r\n\r\n closeItem(paragraph) {\r\n const height = -(paragraph.height() + 20);\r\n paragraph.css(\"margin-top\", height);\r\n }\r\n\r\n closeAllItems() {\r\n for (const item of this.accordianItems) {\r\n if (item.classList.contains(\"-opened\")) {\r\n const paragraph = $(item).find(\".a4-faq-topics-accordion-item-content-answer\");\r\n this.closeItem(paragraph);\r\n item.classList.remove(\"-opened\");\r\n }\r\n }\r\n }\r\n\r\n // Event Handlers\r\n clickAccordianItem(e) {\r\n const item = e.currentTarget.parentElement;\r\n const paragraph = $(item).find(\".a4-faq-topics-accordion-item-content-answer\");\r\n\r\n if (!item.classList.contains(\"-opened\")) {\r\n paragraph.show(0, () => {\r\n paragraph.css(\"margin-top\", \"\");\r\n });\r\n this.closeAllItems();\r\n } \r\n else {\r\n this.closeItem(paragraph);\r\n }\r\n\r\n item.classList.toggle(\"-opened\");\r\n }\r\n\r\n submitQuestion(e) {\r\n e.preventDefault();\r\n\r\n const isFormValid = formService.validate(this.questionForm);\r\n if(!isFormValid) return;\r\n\r\n formService.showLoadingButton(this.questionForm);\r\n\r\n const email = e.target.email.value.trim();\r\n const question = e.target.question.value;\r\n\r\n let faqRequest = {email, question};\r\n\r\n recaptchaService.getToken(\"askFaq\")\r\n .then(token => {\r\n faqRequest.recaptchaToken = token;\r\n\r\n faqService.askQuestion(faqRequest)\r\n .then(json => {\r\n if (json.succeeded) {\r\n this.successMessage.classList.add(\"-visible\");\r\n }\r\n else {\r\n formService.hideAllErrors(this.questionForm);\r\n formService.hideLoadingButton(this.questionForm);\r\n formService.showInputError(this.questionForm, \"question\", json.errors[0]);\r\n }\r\n });\r\n });\r\n }\r\n \r\n // Component\r\n render() {\r\n const faqData = bootstrapService.data.landing.pages.find(p => p.name === \"faq\");\r\n\r\n const header = faqData ? faqData.header : null;\r\n const faqs = faqData ? faqData.faqs : null;\r\n\r\n console.log('bootstrapService.data = ', bootstrapService.data);\r\n console.log('faqData = ', faqData);\r\n\r\n return (\r\n <>\r\n {\r\n faqData && \r\n <>\r\n <Navbar />\r\n <div className=\"a4-view\">\r\n <div className=\"a4-layout a4-faq\">\r\n <div className=\"a4-faq-container\">\r\n <div className=\"a4-faq-page-title\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n <div className=\"a4-faq-page-title-content\">\r\n <h1 className=\"title\">{header}</h1>\r\n </div>\r\n </div>\r\n <div className=\"a4-faq-topics\">\r\n <div className=\"a4-faq-topics-content\">\r\n <ul className=\"a4-faq-topics-accordion\">\r\n {\r\n faqs.map((faq, index) => {\r\n return <li className=\"a4-faq-topics-accordion-item\" data-aos={isMobileOnly ? undefined : \"fade-up\"} key={index} ref={li => this.accordianItems[index] = li}>\r\n <div className=\"a4-faq-topics-accordion-item-head\" onClick={this.clickAccordianItem}>\r\n <h3 className=\"a4-faq-topics-accordion-item-head-title\" dangerouslySetInnerHTML={{ __html: faq.question}}></h3> \r\n <span className=\"a4-faq-topics-accordion-item-head-icon\">\r\n <div className=\"a4-dynamic-plus\"></div>\r\n </span>\r\n </div>\r\n <div className=\"a4-faq-topics-accordion-item-fill\"></div>\r\n <div className=\"a4-faq-topics-accordion-item-content\">\r\n <div className=\"a4-faq-topics-accordion-item-content-answer\" dangerouslySetInnerHTML={{ __html: faq.answer}}></div>\r\n </div>\r\n </li>\r\n })\r\n }\r\n </ul>\r\n </div>\r\n </div>\r\n <div className=\"a4-faq-question\">\r\n <div className=\"a4-faq-question-content\">\r\n <div className=\"a4-faq-question-card\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n <div className=\"a4-faq-question-card-content\">\r\n <div className=\"a4-faq-question-card-title\">\r\n <h2><span className=\"primary-text\">Did not find the answer</span> to your question?</h2>\r\n </div>\r\n <div className=\"a4-faq-question-card-form\">\r\n <form ref={form => this.questionForm = form} onSubmit={this.submitQuestion}>\r\n <section className=\"a4-faq-question-card-form-section\">\r\n <div className=\"a4-form-group\">\r\n <div className=\"a4-input\">\r\n <textarea placeholder='Your question' required name='question'></textarea>\r\n <label htmlFor=\"question\">Your question</label>\r\n <span className=\"a4-input-error\"></span>\r\n <svg className=\"a4-svgsprite -error text-secondary\">\r\n <Error />\r\n </svg>\r\n </div>\r\n </div>\r\n <div className=\"a4-form-group\">\r\n <div className=\"a4-input\">\r\n <input name=\"email\" type='email' required placeholder=\"E-mail address\" />\r\n <label htmlFor=\"email\">E-mail address</label>\r\n <span className=\"a4-input-error\"></span>\r\n <svg className=\"a4-svgsprite -error text-secondary\">\r\n <Error />\r\n </svg>\r\n </div>\r\n </div>\r\n <div className=\"a4-form-control\">\r\n <BubbleButton className=\"a4-form-submit -primary\" type=\"submit\" formNoValidate>\r\n Submit\r\n </BubbleButton>\r\n </div>\r\n </section>\r\n <p className=\"a4-form-error\">Cannot make faq request at this time</p>\r\n <section className=\"a4-faq-question-card-form-section -success\" ref={section => this.successMessage = section}>\r\n <figure>\r\n <svg className=\"a4-svgsprite text-secondary\">\r\n <CheckMark stroke={bootstrapService.primaryColor} />\r\n </svg>\r\n </figure>\r\n <h3><span className=\"text-primary\">Thank you</span> for the question!</h3>\r\n <p>We will answer you shortly.</p>\r\n </section>\r\n </form>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <Subscribe />\r\n <Footer />\r\n </div>\r\n </div>\r\n </>\r\n }\r\n </>\r\n )\r\n }\r\n}\r\n\r\nexport default Faq;","export function splitBody(body) {\r\n if (!body) return [null, null];\r\n\r\n var middle = Math.floor(body.length / 2);\r\n var before = body.lastIndexOf(' ', middle);\r\n var after = body.indexOf(' ', middle + 1);\r\n\r\n if (before === -1 || (after !== -1 && middle - before >= after - middle)) {\r\n middle = after;\r\n } else {\r\n middle = before;\r\n }\r\n\r\n var s1 = body.substr(0, middle);\r\n var s2 = body.substr(middle + 1);\r\n\r\n return [s1, s2];\r\n}\r\n\r\nexport function getParameterByName(name, url = window.location.href) {\r\n name = name.replace(/\\[\\]]/g, '\\\\$&'); // old = /[\\[\\]]/g, '\\\\$&'\r\n var regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)'),\r\n results = regex.exec(url);\r\n if (!results) return null;\r\n if (!results[2]) return '';\r\n return decodeURIComponent(results[2].replace(/\\+/g, ' '));\r\n}","export function splitArray(list) {\r\n const half = Math.ceil(list.length / 2); \r\n\r\n const firstHalf = list.splice(0, half);\r\n const secondHalf = list.splice(-half);\r\n\r\n return [firstHalf, secondHalf];\r\n}","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M9 1C9 0.447715 8.55228 -2.41411e-08 8 0C7.44772 2.41411e-08 7 0.447715 7 1L9 1ZM7.29289 21.7071C7.68342 22.0976 8.31658 22.0976 8.70711 21.7071L15.0711 15.3431C15.4616 14.9526 15.4616 14.3195 15.0711 13.9289C14.6805 13.5384 14.0474 13.5384 13.6569 13.9289L8 19.5858L2.34315 13.9289C1.95262 13.5384 1.31946 13.5384 0.928933 13.9289C0.538408 14.3195 0.538408 14.9526 0.928933 15.3431L7.29289 21.7071ZM7 1L7 21L9 21L9 1L7 1Z\",\n fill: \"current\"\n});\n\nfunction SvgArrowDown(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 16 22\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgArrowDown);\nexport default \"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTYgMjIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQo8cGF0aCBkPSJNOSAxQzkgMC40NDc3MTUgOC41NTIyOCAtMi40MTQxMWUtMDggOCAwQzcuNDQ3NzIgMi40MTQxMWUtMDggNyAwLjQ0NzcxNSA3IDFMOSAxWk03LjI5Mjg5IDIxLjcwNzFDNy42ODM0MiAyMi4wOTc2IDguMzE2NTggMjIuMDk3NiA4LjcwNzExIDIxLjcwNzFMMTUuMDcxMSAxNS4zNDMxQzE1LjQ2MTYgMTQuOTUyNiAxNS40NjE2IDE0LjMxOTUgMTUuMDcxMSAxMy45Mjg5QzE0LjY4MDUgMTMuNTM4NCAxNC4wNDc0IDEzLjUzODQgMTMuNjU2OSAxMy45Mjg5TDggMTkuNTg1OEwyLjM0MzE1IDEzLjkyODlDMS45NTI2MiAxMy41Mzg0IDEuMzE5NDYgMTMuNTM4NCAwLjkyODkzMyAxMy45Mjg5QzAuNTM4NDA4IDE0LjMxOTUgMC41Mzg0MDggMTQuOTUyNiAwLjkyODkzMyAxNS4zNDMxTDcuMjkyODkgMjEuNzA3MVpNNyAxTDcgMjFMOSAyMUw5IDFMNyAxWiIgZmlsbD0iY3VycmVudCIvPg0KPC9zdmc+DQo=\";\nexport { ForwardRef as ReactComponent };","import React from 'react'\r\nimport './PrivacyPolicy.scss'\r\nimport { splitBody } from '../../utils/string'\r\nimport { splitArray } from '../../utils/array'\r\nimport { isMobileOnly } from 'react-device-detect'\r\n\r\nimport Navbar from '../shared/Navbar/Navbar'\r\nimport Footer from '../shared/Footer/Footer'\r\nimport { ReactComponent as ArrowDown } from '../../assets/arrow-down.svg'\r\n\r\nimport bootstrapService from '../../services/BootstrapService'\r\n\r\nclass PrivacyPolicy extends React.Component {\r\n // Constructor\r\n constructor(props) {\r\n super(props);\r\n\r\n // Refs\r\n this.topicRefs = new Array([]);\r\n\r\n // This Binding\r\n this.clickTopic = this.clickTopic.bind(this);\r\n }\r\n\r\n // Lifecycle\r\n componentDidMount() {\r\n window.scrollTo(0, 0);\r\n }\r\n\r\n // Event Handlers\r\n clickTopic(e) {\r\n const topic = e.currentTarget.getAttribute(\"topic\");\r\n for (const ref of this.topicRefs) {\r\n if (ref.getAttribute(\"topic\") === topic) {\r\n ref.scrollIntoView({ behavior: 'smooth', block: 'center' });\r\n return;\r\n }\r\n }\r\n }\r\n \r\n // Component\r\n render() {\r\n const policyData = bootstrapService.data.landing.pages.find(p => p.name === \"privacy\");\r\n\r\n const header = policyData ? policyData.header : null;\r\n const effectiveDate = policyData ? policyData.effectiveDate : null;\r\n const body = policyData ? policyData.body : null;\r\n const topics = policyData ? policyData.topics : null;\r\n\r\n const [body1, body2] = splitBody(body);\r\n \r\n return (\r\n <>\r\n {\r\n policyData &&\r\n <>\r\n <Navbar />\r\n <div className=\"a4-view\">\r\n <div className=\"a4-layout a4-policy\">\r\n <div className=\"a4-policy-container\">\r\n <div className=\"a4-policy-page-title\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n <h1 className=\"title\">{header}</h1>\r\n </div>\r\n <div className=\"a4-policy-pre\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n <h4 className=\"title\">Effective date: {effectiveDate}.</h4>\r\n <div className=\"cols\">\r\n <div className=\"column\">\r\n <p><span className=\"text-primary\" dangerouslySetInnerHTML={{ __html: body1 }}></span></p>\r\n </div>\r\n <div className=\"column\">\r\n <p><span className=\"text-primary\" dangerouslySetInnerHTML={{ __html: body2 }}></span></p>\r\n </div>\r\n </div>\r\n </div>\r\n <div className=\"a4-policy-topics-summary\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n <h2 className=\"title\">Choose the topic</h2>\r\n <div className=\"summary-items\">\r\n <div className=\"summary-items-fill\"></div>\r\n {\r\n topics.length <= 10 &&\r\n <ul>\r\n {\r\n topics.map((topic, index) => {\r\n return <li key={index}>\r\n <button topic={topic.name.toLowerCase()} class=\"summary-items-fill-button\" onClick={this.clickTopic}>{topic.name}</button>\r\n </li>\r\n })\r\n }\r\n </ul>\r\n }\r\n {\r\n topics.length > 10 &&\r\n <>\r\n <ul>\r\n {\r\n topics.slice(0, Math.ceil(topics.length / 2)).map((topic, index) => {\r\n return <li key={index}>\r\n <button topic={topic.name.toLowerCase()} class=\"summary-items-fill-button\" onClick={this.clickTopic}>{topic.name}</button>\r\n </li>\r\n })\r\n }\r\n </ul>\r\n <ul>\r\n {\r\n topics.slice(Math.ceil(topics.length / 2), topics.length).map((topic, index) => {\r\n return <li key={index}>\r\n <button topic={topic.name.toLowerCase()} class=\"summary-items-fill-button\" onClick={this.clickTopic}>{topic.name}</button>\r\n </li>\r\n })\r\n }\r\n </ul>\r\n </>\r\n }\r\n <div className=\"summary-items-control\">\r\n <svg className=\"a4-svgsprite -arrow-down text-secondary\">\r\n <ArrowDown fill={bootstrapService.primaryColor} />\r\n </svg>\r\n </div>\r\n </div>\r\n </div>\r\n <div className=\"a4-policy-topics\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n {\r\n topics.map((topic, index) => {\r\n if (topic.sections.length === 1) {\r\n return <div className=\"topic\" key={index} topic={topic.name.toLowerCase()} ref={div => this.topicRefs[index] = div}>\r\n <h2 className=\"topic-title\">{topic.name}</h2>\r\n <div className=\"cols\">\r\n {\r\n topic.sections.map((item, itemIndex) => {\r\n return <div key={itemIndex}>\r\n {\r\n item.title &&\r\n <h3 className=\"title\">{item.header}</h3>\r\n }\r\n <span className=\"description\" key={itemIndex} dangerouslySetInnerHTML={{ __html: item.body }}></span>\r\n </div>\r\n })\r\n }\r\n </div>\r\n </div>\r\n }\r\n else {\r\n const [firstItems, secondItems] = splitArray(topic.sections);\r\n return <div className=\"topic\" key={index} topic={topic.name.toLowerCase()} ref={div => this.topicRefs[index] = div}>\r\n <h2 className=\"topic-title\">{topic.name}</h2>\r\n <div className=\"cols\">\r\n <div className=\"column\">\r\n {\r\n firstItems.map((item, itemIndex) => {\r\n return <>\r\n {\r\n item.title &&\r\n <h3 className=\"title\" key={itemIndex}>{item.header}</h3>\r\n }\r\n <span className=\"description\" dangerouslySetInnerHTML={{ __html: item.body }}></span>\r\n </>\r\n })\r\n }\r\n </div>\r\n <div className=\"column\">\r\n {\r\n secondItems.map((item, itemIndex) => {\r\n return <>\r\n {\r\n item.title &&\r\n <h3 className=\"title\" key={itemIndex}>{item.header}</h3>\r\n }\r\n <span className=\"description\" dangerouslySetInnerHTML={{ __html: item.body }}></span>\r\n </>\r\n })\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n })\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n <Footer />\r\n </div>\r\n </>\r\n }\r\n </>\r\n )\r\n }\r\n}\r\n\r\nexport default PrivacyPolicy;","import React from 'react'\r\nimport './Terms.scss'\r\nimport { splitBody } from '../../utils/string'\r\nimport { splitArray } from '../../utils/array'\r\nimport { isMobileOnly } from 'react-device-detect'\r\n\r\nimport Navbar from '../shared/Navbar/Navbar'\r\nimport Footer from '../shared/Footer/Footer'\r\nimport { ReactComponent as ArrowDown } from '../../assets/arrow-down.svg'\r\n\r\nimport bootstrapService from '../../services/BootstrapService'\r\n\r\nclass Terms extends React.Component {\r\n // Constructor\r\n constructor(props) {\r\n super(props);\r\n\r\n // Refs\r\n this.topicRefs = new Array([]);\r\n\r\n // This Binding\r\n this.clickTopic = this.clickTopic.bind(this);\r\n }\r\n\r\n // Lifecycle\r\n componentDidMount() {\r\n window.scrollTo(0, 0);\r\n }\r\n\r\n // Event Handlers\r\n clickTopic(e) {\r\n const topic = e.currentTarget.getAttribute(\"topic\");\r\n for (const ref of this.topicRefs) {\r\n if (ref.getAttribute(\"topic\") === topic) {\r\n ref.scrollIntoView({ behavior: 'smooth', block: 'center' });\r\n return;\r\n }\r\n }\r\n }\r\n\r\n // Component\r\n render() {\r\n const termsData = bootstrapService.data ? bootstrapService.data.landing.pages.find(p => p.name === \"terms\") : null;\r\n\r\n const header = termsData ? termsData.header : null;\r\n const effectiveDate = termsData ? termsData.effectiveDate : null;\r\n const body = termsData ? termsData.body : null;\r\n const topics = termsData ? termsData.topics : null;\r\n\r\n const [body1, body2] = splitBody(body);\r\n\r\n return (\r\n <>\r\n {\r\n termsData &&\r\n <>\r\n <Navbar />\r\n <div className=\"a4-view\">\r\n <div className=\"a4-layout a4-terms\">\r\n <div className=\"a4-terms-container\">\r\n <div className=\"a4-terms-page-title\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n <h1 className=\"title\">{header}</h1>\r\n </div>\r\n <div className=\"a4-terms-pre\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n <h4 className=\"title\">Effective date: {effectiveDate}.</h4>\r\n <div className=\"cols\">\r\n <div className=\"column\">\r\n <p><span className=\"text-primary\" dangerouslySetInnerHTML={{ __html: body1 }}></span></p>\r\n </div>\r\n <div className=\"column\">\r\n <p><span className=\"text-primary\" dangerouslySetInnerHTML={{ __html: body2 }}></span></p>\r\n </div>\r\n </div>\r\n </div>\r\n <div className=\"a4-terms-topics-summary\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n <h2 className=\"title\">Choose the terms</h2>\r\n <div className=\"summary-items\">\r\n <div className=\"summary-items-fill\"></div>\r\n {\r\n topics.length <= 10 &&\r\n <ul>\r\n {\r\n topics.map((topic, index) => {\r\n return <li key={index}>\r\n <button topic={topic.name.toLowerCase()} class=\"summary-items-fill-button\" onClick={this.clickTopic}>{topic.name}</button>\r\n </li>\r\n })\r\n }\r\n </ul>\r\n }\r\n {\r\n topics.length > 10 &&\r\n <>\r\n <ul>\r\n {\r\n topics.slice(0, Math.ceil(topics.length / 2)).map((topic, index) => {\r\n return <li key={index}>\r\n <button topic={topic.name.toLowerCase()} class=\"summary-items-fill-button\" onClick={this.clickTopic}>{topic.name}</button>\r\n </li>\r\n })\r\n }\r\n </ul>\r\n <ul>\r\n {\r\n topics.slice(Math.ceil(topics.length / 2), topics.length).map((topic, index) => {\r\n return <li key={index}>\r\n <button topic={topic.name.toLowerCase()} class=\"summary-items-fill-button\" onClick={this.clickTopic}>{topic.name}</button>\r\n </li>\r\n })\r\n }\r\n </ul>\r\n </>\r\n }\r\n <div className=\"summary-items-control\">\r\n <svg className=\"a4-svgsprite -arrow-down text-secondary\">\r\n <ArrowDown fill={bootstrapService.primaryColor} />\r\n </svg>\r\n </div>\r\n </div>\r\n </div>\r\n <div className=\"a4-policy-topics\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n {\r\n topics.map((topic, index) => {\r\n if (topic.sections.length === 1) {\r\n return <div className=\"topic\" key={index} topic={topic.name.toLowerCase()} ref={div => this.topicRefs[index] = div}>\r\n <h2 className=\"topic-title\">{topic.name}</h2>\r\n <div className=\"cols\">\r\n {\r\n topic.sections.map((item, itemIndex) => {\r\n return <div key={itemIndex}>\r\n {\r\n item.title &&\r\n <h3 className=\"title\">{item.header}</h3>\r\n }\r\n <span className=\"description\" key={itemIndex} dangerouslySetInnerHTML={{ __html: item.body }}></span>\r\n </div>\r\n })\r\n }\r\n </div>\r\n </div>\r\n }\r\n else {\r\n const [firstItems, secondItems] = splitArray(topic.sections);\r\n return <div className=\"topic\" key={index} topic={topic.name.toLowerCase()} ref={div => this.topicRefs[index] = div}>\r\n <h2 className=\"topic-title\">{topic.name}</h2>\r\n <div className=\"cols\">\r\n <div className=\"column\">\r\n {\r\n firstItems.map((item, itemIndex) => {\r\n return <div key={itemIndex}>\r\n {\r\n item.title &&\r\n <h3 className=\"title\">{item.header}</h3>\r\n }\r\n <span className=\"description\" key={itemIndex} dangerouslySetInnerHTML={{ __html: item.body }}></span>\r\n </div>\r\n })\r\n }\r\n </div>\r\n <div className=\"column\">\r\n {\r\n secondItems.map((item, itemIndex) => {\r\n return <div key={itemIndex}>\r\n {\r\n item.title &&\r\n <h3 className=\"title\">{item.header}</h3>\r\n }\r\n <span className=\"description\" dangerouslySetInnerHTML={{ __html: item.body }}></span>\r\n </div>\r\n })\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n })\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n <Footer />\r\n </div>\r\n </>\r\n }\r\n </>\r\n )\r\n }\r\n}\r\n\r\nexport default Terms;","import React from 'react'\r\nimport './AffiliatedSites.scss'\r\nimport { isMobileOnly } from 'react-device-detect'\r\n\r\nimport Navbar from '../shared/Navbar/Navbar'\r\nimport Subscribe from '../shared/Subscribe/Subscribe'\r\nimport Footer from '../shared/Footer/Footer'\r\nimport placeholderImage from '../../assets/course-plug.svg'\r\n\r\nimport bootstrapService from '../../services/BootstrapService'\r\n\r\nclass AffiliatedSites extends React.Component {\r\n\r\n // Lifecycle\r\n componentDidMount() {\r\n window.scrollTo(0, 0);\r\n }\r\n\r\n // Component\r\n render() {\r\n const affiliatedData = bootstrapService.data.landing.pages.find(p => p.name === \"our-sites\");\r\n\r\n const header = affiliatedData ? affiliatedData.header : null;\r\n const body = affiliatedData ? affiliatedData.bodyText : null;\r\n const sites = affiliatedData ? affiliatedData.sites : null;\r\n\r\n return (\r\n <>\r\n {\r\n affiliatedData &&\r\n <>\r\n <Navbar />\r\n <div className=\"a4-view\">\r\n <div className=\"a4-layout a4-affiliated-sites\">\r\n <div className=\"a4-affiliated-sites-container\">\r\n <div className=\"a4-affiliated-sites-page-title\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n <h1 className=\"title\">{header}</h1>\r\n <p className=\"description\">{body}</p>\r\n </div>\r\n <div className=\"a4-affiliated-sites-list\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n <ul className=\"a4-affiliated-sites-list-items\">\r\n {\r\n sites.map((site, index) => {\r\n return <li className=\"a4-affiliated-sites-list-items-item\" key={index}>\r\n <div className=\"a4-affiliated-sites-list-items-item-logo\">\r\n <a href={site.url} target=\"_blank\" rel=\"noreferrer\">\r\n <img src={site.imageUrl ? site.imageUrl : placeholderImage} alt=\"\" />\r\n </a>\r\n </div>\r\n <p className=\"a4-affiliated-sites-list-items-item-text\">{site.body}</p>\r\n </li>\r\n })\r\n }\r\n </ul>\r\n </div>\r\n </div>\r\n <Subscribe />\r\n <Footer />\r\n </div>\r\n </div>\r\n </>\r\n }\r\n </>\r\n )\r\n }\r\n}\r\n\r\nexport default AffiliatedSites;","import React from 'react'\r\nimport { Link } from 'react-router-dom'\r\nimport { isMobileOnly } from 'react-device-detect'\r\n\r\nimport Navbar from '../shared/Navbar/Navbar'\r\nimport Footer from '../shared/Footer/Footer'\r\nimport BubbleButton from '../shared/BubbleButton/BubbleButton'\r\n\r\nimport bootstrapService from '../../services/BootstrapService'\r\nimport memberService from '../../services/MemberService'\r\n\r\nclass ConfirmEmail extends React.Component {\r\n // Constructor\r\n constructor(props) {\r\n super(props);\r\n\r\n // State\r\n this.state = {\r\n errorBody: \"Your email address could not be verified.\"\r\n }\r\n }\r\n\r\n // Lifecycle\r\n componentDidMount() {\r\n window.scrollTo(0, 0);\r\n this.setBootstrapCallback();\r\n }\r\n\r\n // Helpers\r\n setBootstrapCallback() {\r\n bootstrapService.setCallback(() => {\r\n return this.validateToken();\r\n })\r\n }\r\n\r\n validateToken() {\r\n const token = this.props.match.params.token;\r\n\r\n return memberService.validateConfirmEmailToken(token)\r\n .then(json => {\r\n if (json.succeeded) {\r\n if (json.result.status === 0) {\r\n this.forceUpdate();\r\n }\r\n else if (json.result.status === 1) {\r\n this.setState({ errorBody: \"Your email address could not be verified.<br></br>Token is invalid.\" });\r\n }\r\n else if (json.result.status === 2) {\r\n this.setState({ errorBody: \"Your email address could not be verified.<br></br>Token is expired.\" });\r\n }\r\n else if (json.result.status === 3) {\r\n this.setState({ errorBody: \"Your email address could not be verified.<br></br>Token is expired. A new email has been sent.\" });\r\n }\r\n else if (json.result.status === 4) {\r\n this.setState({ errorBody: \"Your email address could not be verified.<br></br>Confirm email is not required.\" });\r\n }\r\n }\r\n else {\r\n this.setState({ errorBody: `Your email address could not be verified.<br></br>${json.errors[0]}` });\r\n }\r\n })\r\n }\r\n\r\n // Component\r\n render() {\r\n const tokenValidated = memberService.confirmEmailValidated;\r\n const errorBody = this.state.errorBody;\r\n\r\n return (\r\n <>\r\n <Navbar />\r\n <div className=\"a4-view\">\r\n <main className=\"a4-layout a4-auth\">\r\n {\r\n tokenValidated &&\r\n <div className=\"a4-auth-container\">\r\n <section className=\"a4-auth-item-container\">\r\n <div className=\"a4-auth-item-shadow\"></div>\r\n <div className=\"a4-auth-item-content confirm-email\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n <h1 className=\"a4-auth-item-title\"><span className=\"text-primary\">Email</span> has been verified!</h1>\r\n <p>Thank you for verifying your email address.<br></br>Please login using the button below.</p>\r\n <form className=\"a4-auth-form\" onSubmit={this.submitForm}>\r\n <section className=\"a4-auth-form-control\">\r\n <Link to=\"/login\">\r\n <BubbleButton className=\"-primary\" type=\"submit\" formNoValidate>\r\n <b>Login to account</b>\r\n </BubbleButton>\r\n </Link>\r\n </section>\r\n </form>\r\n </div>\r\n </section>\r\n <aside className=\"a4-auth-additional\" data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-delay='100'>\r\n <span>\r\n Don’t have an Account? \r\n <Link to=\"/register\" className=\"text-primary\">Register now!</Link>\r\n </span>\r\n </aside>\r\n </div>\r\n }\r\n {\r\n !tokenValidated &&\r\n <div className=\"a4-auth-container\">\r\n <section className=\"a4-auth-item-container\">\r\n <div className=\"a4-auth-item-shadow\"></div>\r\n <div className=\"a4-auth-item-content confirm-email\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n <h1 className=\"a4-auth-item-title\">Confirm Email <span className=\"text-primary\">Error</span></h1>\r\n <p dangerouslySetInnerHTML={{ __html: errorBody}}></p>\r\n <form className=\"a4-auth-form\" onSubmit={this.submitForm}>\r\n <section className=\"a4-auth-form-control\">\r\n <Link to=\"/help-and-support\">\r\n <BubbleButton className=\"-primary\" type=\"submit\" formNoValidate>\r\n <b>Get Help</b>\r\n </BubbleButton>\r\n </Link>\r\n </section>\r\n </form>\r\n </div>\r\n </section>\r\n <aside className=\"a4-auth-additional\" data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-delay='100'>\r\n <span>\r\n Don’t have an Account? \r\n <Link to=\"/register\" className=\"text-primary\">Register now!</Link>\r\n </span>\r\n </aside>\r\n </div>\r\n }\r\n <Footer />\r\n </main>\r\n </div>\r\n </>\r\n )\r\n }\r\n}\r\n\r\nexport default ConfirmEmail;","import React from 'react'\r\nimport { Link } from 'react-router-dom'\r\nimport { isMobileOnly } from 'react-device-detect'\r\n\r\nimport Navbar from '../shared/Navbar/Navbar'\r\nimport Footer from '../shared/Footer/Footer'\r\nimport BubbleButton from '../shared/BubbleButton/BubbleButton'\r\nimport { ReactComponent as Error } from '../../assets/error.svg'\r\n\r\nimport bootstrapService from '../../services/BootstrapService'\r\nimport formService from '../../services/FormService'\r\nimport memberService from '../../services/MemberService'\r\nimport recaptchaService from '../../services/RecaptchaService'\r\n\r\nclass CompleteProfile extends React.Component {\r\n // Constructor\r\n constructor(props) {\r\n super(props);\r\n\r\n // Refs\r\n this.form = null;\r\n\r\n // State\r\n this.state = {\r\n requireFirstName: true,\r\n requireLastName: true,\r\n requirePassword: true,\r\n email: null,\r\n firstName: null,\r\n middleName: null,\r\n lastName: null,\r\n errorBody: \"Your account could not be verified.\",\r\n }\r\n\r\n // This Binding\r\n this.submitForm = this.submitForm.bind(this);\r\n }\r\n\r\n // Lifecycle\r\n componentDidMount() {\r\n window.scrollTo(0, 0);\r\n this.setBootstrapCallback();\r\n }\r\n\r\n // Helpers\r\n setBootstrapCallback() {\r\n bootstrapService.setCallback(() => {\r\n return this.validateToken();\r\n })\r\n }\r\n\r\n validateToken() {\r\n const token = this.props.match.params.token;\r\n\r\n return memberService.validateCompleteProfileToken(token)\r\n .then(json => {\r\n if (json.succeeded) {\r\n if (json.result.status === 0) {\r\n this.setState({ \r\n requireFirstName: json.result.requireFirstName,\r\n requireLastName: json.result.requireLastName,\r\n requirePassword: json.result.requirePassword,\r\n\r\n email: json.result.email,\r\n firstName: json.result.firstName,\r\n middleName: json.result.middleName,\r\n lastName: json.result.lastName,\r\n });\r\n }\r\n else if (json.result.status === 1) {\r\n this.setState({ errorBody: \"Your account could not be verified.<br></br>Cannot find user.\" });\r\n }\r\n else if (json.result.status === 2) {\r\n this.setState({ errorBody: \"Your account could not be verified.<br></br>Cannot find member.\" });\r\n }\r\n else if (json.result.status === 3) {\r\n this.setState({ errorBody: \"Your account could not be verified.<br></br>Cannot update member.\" });\r\n }\r\n else if (json.result.status === 4) {\r\n this.setState({ errorBody: \"Your account could not be verified.<br></br>Token is invalid.\" }); \r\n }\r\n else if (json.result.status === 5) {\r\n this.setState({ errorBody: \"Your account could not be verified.<br></br>Token is expired.\" });\r\n }\r\n else if (json.result.status === 6) {\r\n this.setState({ errorBody: \"Your account could not be verified.<br></br>Complete profile is not required.\" });\r\n }\r\n }\r\n else {\r\n this.setState({ errorBody: `Your account could not be verified.<br></br>${json.errors[0]}` });\r\n }\r\n })\r\n }\r\n\r\n // Event Handlers\r\n submitForm(e) {\r\n e.preventDefault();\r\n\r\n const isFormValid = formService.validate(this.form);\r\n\r\n const firstName = this.state.requireFirstName ? e.target.firstName.value : \"\";\r\n const middleName = e.target.middleName.value;\r\n const lastName = this.state.requireLastName ? e.target.lastName.value : \"\";\r\n const password = this.state.requirePassword ? e.target.password.value : \"\";\r\n const confirm = this.state.requirePassword ? e.target.confirm.value : \"\"; \r\n\r\n if (this.state.requirePassword && (password !== confirm)) {\r\n formService.showInputError(this.form, \"confirm\", \"This password does not match\");\r\n formService.hideLoadingButton(this.form);\r\n return;\r\n }\r\n\r\n if(!isFormValid) return;\r\n\r\n formService.showLoadingButton(this.form);\r\n\r\n let completeProfileRequest = {firstName, middleName, lastName, password};\r\n completeProfileRequest.token = this.props.match.params.token;\r\n\r\n recaptchaService.getToken(\"completeProfile\")\r\n .then(token => {\r\n completeProfileRequest.recaptchaToken = token;\r\n\r\n memberService.completeProfile(completeProfileRequest)\r\n .then(json => { \r\n if (json.succeeded) {\r\n memberService.goToMembers();\r\n }\r\n else {\r\n formService.hideAllErrors(this.form);\r\n formService.hideLoadingButton(this.form);\r\n formService.showFormError(this.form, json.errors[0]);\r\n }\r\n });\r\n });\r\n }\r\n\r\n // Component\r\n render() {\r\n const tokenValidated = memberService.completeProfileValidated;\r\n\r\n const email = this.state.email;\r\n const firstName = this.state.firstName ? this.state.firstName : \"\";\r\n const middleName = this.state.middleName ? this.state.middleName : \"\";\r\n const lastName = this.state.lastName ? this.state.lastName : \"\";\r\n\r\n const requireFirstName = this.state.requireFirstName;\r\n const requireLastName = this.state.requireLastName;\r\n const requirePassword = this.state.requirePassword;\r\n\r\n const errorBody = this.state.errorBody;\r\n\r\n return (\r\n <>\r\n <Navbar activeLink=\"register\" />\r\n <div className=\"a4-view\">\r\n <main className=\"a4-layout a4-auth -register\">\r\n {\r\n tokenValidated &&\r\n <div className=\"a4-auth-container -register\">\r\n <section className=\"a4-auth-item-container\">\r\n <div className=\"a4-auth-item-shadow\"></div>\r\n <div className=\"a4-auth-item-content\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n <h1 className=\"a4-auth-item-title\"><span className=\"text-primary\">Complete</span> Profile</h1>\r\n <form className=\"a4-auth-form\" ref={form => this.form = form} onSubmit={this.submitForm}>\r\n <div className=\"a4-input\">\r\n <input name=\"firstName\" required placeholder=\"First Name\" defaultValue={firstName} disabled={!requireFirstName} />\r\n <label htmlFor=\"firstName\">First Name</label>\r\n <span className=\"a4-input-error\">Enter your first name</span>\r\n <svg className=\"a4-svgsprite -error text-secondary\">\r\n <Error />\r\n </svg>\r\n </div>\r\n <div className=\"a4-input\">\r\n <input name=\"middleName\" placeholder=\"Middle Name\" defaultValue={middleName} />\r\n <label htmlFor=\"middleName\">Middle Name (Optional)</label>\r\n <span className=\"a4-input-error\"></span>\r\n <svg className=\"a4-svgsprite -error text-secondary\">\r\n <Error />\r\n </svg>\r\n </div>\r\n <div className=\"a4-input\">\r\n <input name=\"lastName\" required placeholder=\"Last Name\" defaultValue={lastName} disabled={!requireLastName} />\r\n <label htmlFor=\"lastName\">Last Name</label>\r\n <span className=\"a4-input-error\">Enter your last name</span>\r\n <svg className=\"a4-svgsprite -error text-secondary\">\r\n <Error />\r\n </svg>\r\n </div>\r\n <div className=\"a4-input\">\r\n <input name=\"email\" required placeholder=\"E-mail address\" value={email} disabled={true} />\r\n <label htmlFor=\"email\">E-mail address</label>\r\n <span className=\"a4-input-error\" ref={span => this.emailError = span}>Enter a valid e-mail address</span>\r\n <svg className=\"a4-svgsprite -error text-secondary\">\r\n <Error />\r\n </svg>\r\n </div>\r\n {\r\n requirePassword &&\r\n <>\r\n <div className=\"a4-input\">\r\n <input name=\"password\" placeholder=\"Password\" required type=\"password\" />\r\n <label htmlFor=\"password\">Password</label>\r\n <span className=\"a4-input-error\">Enter a valid password</span>\r\n <svg className=\"a4-svgsprite -error text-secondary\">\r\n <Error />\r\n </svg>\r\n </div>\r\n <div className=\"a4-input\">\r\n <input name=\"confirm\" placeholder=\"Confirm Password\" required type=\"password\" />\r\n <label htmlFor=\"password\">Confirm Password</label>\r\n <span className=\"a4-input-error\" ref={span => this.confirmError = span}>Enter a valid password</span>\r\n <svg className=\"a4-svgsprite -error text-secondary\">\r\n <Error />\r\n </svg>\r\n </div>\r\n </>\r\n }\r\n <p className=\"a4-form-error\"></p>\r\n <section className=\"a4-auth-form-control -join\">\r\n <BubbleButton className=\"a4-form-submit -primary\" type=\"submit\" formNoValidate>\r\n <b>Create Account</b>\r\n </BubbleButton>\r\n </section>\r\n </form>\r\n </div>\r\n </section>\r\n <aside className=\"a4-auth-additional\" data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-delay='100'>\r\n <span>\r\n Already have an account? \r\n <Link to=\"/login\" className=\"text-primary\">Login.</Link>\r\n </span>\r\n </aside>\r\n </div>\r\n }\r\n {\r\n !tokenValidated &&\r\n <div className=\"a4-auth-container\">\r\n <section className=\"a4-auth-item-container\">\r\n <div className=\"a4-auth-item-shadow\"></div>\r\n <div className=\"a4-auth-item-content confirm-email\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n <h1 className=\"a4-auth-item-title\">Complete Profile <span className=\"text-primary\">Error</span></h1>\r\n <p dangerouslySetInnerHTML={{ __html: errorBody}}></p>\r\n <form className=\"a4-auth-form\" onSubmit={this.submitForm}>\r\n <section className=\"a4-auth-form-control\">\r\n <Link to=\"/help-and-support\">\r\n <BubbleButton className=\"-primary\" type=\"submit\" formNoValidate>\r\n <b>Get Help</b>\r\n </BubbleButton>\r\n </Link>\r\n </section>\r\n </form>\r\n </div>\r\n </section>\r\n <aside className=\"a4-auth-additional\" data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-delay='100'>\r\n <span>\r\n Don’t have an Account? \r\n <Link to=\"/register\" className=\"text-primary\">Register now!</Link>\r\n </span>\r\n </aside>\r\n </div>\r\n }\r\n <Footer />\r\n </main>\r\n </div>\r\n </>\r\n )\r\n }\r\n}\r\n\r\nexport default CompleteProfile;","import React from 'react'\r\nimport './CreateGroup.scss'\r\nimport $ from 'jquery'\r\nimport 'select2'\r\nimport gsap from 'gsap'\r\nimport { isMobileOnly } from 'react-device-detect'\r\n\r\nimport Navbar from '../shared/Navbar/Navbar'\r\nimport Footer from '../shared/Footer/Footer'\r\nimport BubbleButton from '../shared/BubbleButton/BubbleButton'\r\nimport { ReactComponent as Error } from '../../assets/error.svg'\r\n\r\nimport bootstrapService from '../../services/BootstrapService'\r\nimport formService from '../../services/FormService'\r\nimport paymentService from '../../services/PaymentService'\r\n\r\nclass CompleteGroup extends React.Component {\r\n // Constructor\r\n constructor(props) {\r\n super(props);\r\n\r\n // Refs\r\n this.form = null;\r\n this.groupSwitcher = null;\r\n this.groupSwitch = null;\r\n\r\n // This Binding\r\n this.clickSwitch = this.clickSwitch.bind(this);\r\n this.submitForm = this.submitForm.bind(this);\r\n }\r\n\r\n // Lifecyle\r\n componentDidMount() {\r\n window.scrollTo(0, 0);\r\n this.setupSelects();\r\n this.setupSwitcher();\r\n }\r\n\r\n componentDidUpdate() {\r\n this.setupSelects();\r\n }\r\n\r\n // Helpers\r\n setupSwitcher() {\r\n if (this.groupSwitcher && paymentService.group) {\r\n const userSelections = this.groupSwitcher.querySelectorAll(\".a4-complete-group-form-selection\");\r\n \r\n if (!paymentService.group.isAdminOnly) {\r\n userSelections[0].classList.add(\"-active\");\r\n this.groupSwitch.style.width = userSelections[0].offsetWidth + 5 + \"px\";\r\n this.groupSwitch.style.left = userSelections[0].offsetLeft + \"px\";\r\n }\r\n else {\r\n userSelections[1].classList.add(\"-active\");\r\n this.groupSwitch.style.width = userSelections[1].offsetWidth + 5 + \"px\";\r\n this.groupSwitch.style.left = userSelections[1].offsetLeft + \"px\";\r\n }\r\n }\r\n }\r\n\r\n setupSelects() {\r\n $('.a4-select select').select2({\r\n minimumResultsForSearch: -1,\r\n });\r\n\r\n $('.a4-complete-group-form-btn-group-user select, .a4-complete-group-form-btn-group-payment select').on(\"change\", (e, shouldIgnore) => {\r\n if (!shouldIgnore) {\r\n const selectedSwitch = $(this.groupSwitcher).find(\".a4-complete-group-form-selection\").filter(`[data-value=\"${e.currentTarget.value}\"]`)[0];\r\n\r\n if (selectedSwitch) {\r\n this.setSwitchActive(selectedSwitch);\r\n paymentService.group.isAdminOnly = e.currentTarget.value === \"admin\";\r\n }\r\n }\r\n });\r\n }\r\n\r\n setSwitchActive(selection) {\r\n $(selection).siblings().removeClass(\"-active\");\r\n selection.classList.add(\"-active\");\r\n\r\n gsap.to(this.groupSwitch, {\r\n width: selection.offsetWidth,\r\n left: selection.offsetLeft,\r\n duration: 0.2,\r\n });\r\n }\r\n\r\n // Event Handlers\r\n clickSwitch(e) {\r\n if (!e.currentTarget.classList.contains(\"-active\")) {\r\n this.setSwitchActive(e.currentTarget);\r\n\r\n const select = $(e.currentTarget).parent().find(\"select\");\r\n select.val(e.currentTarget.dataset.value);\r\n select.trigger(\"change\", true);\r\n\r\n paymentService.group.isAdminOnly = e.currentTarget.dataset.value === \"admin\";\r\n }\r\n }\r\n\r\n submitForm(e) {\r\n e.preventDefault();\r\n\r\n const isFormValid = formService.validate(this.form);\r\n\r\n const groupName = e.target.groupName.value;\r\n const numberOfMembers = e.target.numberOfMembers.value;\r\n\r\n const minMembers = paymentService.group.minMembers;\r\n const maxMembers = paymentService.group.maxMembers;\r\n\r\n if (numberOfMembers !== \"\" && numberOfMembers < minMembers) {\r\n formService.showInputError(this.form, \"numberOfMembers\", `The number must be greater than ${minMembers}`);\r\n formService.hideLoadingButton(this.form);\r\n return;\r\n }\r\n else if (numberOfMembers !== \"\" && maxMembers && numberOfMembers > maxMembers) {\r\n formService.showInputError(this.form, \"numberOfMembers\", `The number must be less than ${maxMembers}`);\r\n formService.hideLoadingButton(this.form);\r\n return;\r\n }\r\n\r\n if(!isFormValid) return;\r\n\r\n formService.showLoadingButton(this.form);\r\n\r\n paymentService.group.groupName = groupName;\r\n paymentService.group.numberOfMembers = numberOfMembers;\r\n\r\n paymentService.item.quantity = numberOfMembers;\r\n\r\n this.props.history.push(\"/buy\");\r\n }\r\n\r\n // Component\r\n render() {\r\n // Go Home If No Payment Data\r\n if (bootstrapService.data && (!paymentService.item || !paymentService.group)) {\r\n this.props.history.push(`/pricing/group-plans`);\r\n return null;\r\n }\r\n\r\n const title = paymentService.item ? `Create ${paymentService.item.title}`: \"\";\r\n const groupName = paymentService.group ? paymentService.group.groupName : \"\";\r\n const numberOfMembers = paymentService.group ? paymentService.group.numberOfMembers : \"\";\r\n const minMembers = paymentService.group ? paymentService.group.minMembers : \"\";\r\n const maxMembers = paymentService.group && paymentService.group.maxMembers ? `- ${paymentService.group.maxMembers}` : \"+\";\r\n\r\n return (\r\n <>\r\n <Navbar />\r\n <div className=\"a4-view\">\r\n <div className=\"a4-layout a4-complete-group\">\r\n <section className=\"a4-complete-group-container\">\r\n <div className=\"a4-complete-group-content\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n <header className=\"a4-complete-group-title\">\r\n <h1>\r\n {title}\r\n </h1>\r\n </header>\r\n <form className=\"a4-complete-group-form\" ref={form => this.form = form} onSubmit={this.submitForm}>\r\n <div className=\"a4-complete-group-form-group\">\r\n <div className=\"a4-complete-group-form-group-switcher-container -user\" ref={div => this.groupSwitcher = div}>\r\n <div className=\"a4-complete-group-form-btn-group a4-complete-group-form-btn-group-user\">\r\n <div className=\"a4-select sm_hidden\">\r\n <select defaultValue=\"register\">\r\n <option value=\"member\">Create as Group Member</option>\r\n <option value=\"admin\">Create as Admin Only</option>\r\n </select>\r\n </div>\r\n <div className=\"a4-complete-group-form-selection hidden sm_block\" type=\"button\" data-value=\"member\" onClick={this.clickSwitch}>\r\n Create as Group Member\r\n </div>\r\n <div className=\"a4-complete-group-form-selection hidden sm_block\" type=\"button\" data-value=\"admin\" onClick={this.clickSwitch}>\r\n Create as Admin Only\r\n </div>\r\n </div>\r\n <div className=\"a4-switcher\" ref={div => this.groupSwitch = div}></div>\r\n </div>\r\n <div className=\"a4-input\">\r\n <input name=\"groupName\" required placeholder=\"Group Name\" defaultValue={groupName} />\r\n <label htmlFor=\"name\">Group Name</label>\r\n <span className=\"a4-input-error\">Enter a group name</span>\r\n <svg className=\"a4-svgsprite -error text-secondary\">\r\n <Error />\r\n </svg>\r\n </div>\r\n <div className=\"a4-input\">\r\n <input name=\"numberOfMembers\" required placeholder={`Number of Members (${minMembers}${maxMembers})`} defaultValue={numberOfMembers} />\r\n <label htmlFor=\"numberOfMembers\">Number of Members</label>\r\n <span className=\"a4-input-error\">Enter the number of members</span>\r\n <svg className=\"a4-svgsprite -error text-secondary\">\r\n <Error />\r\n </svg>\r\n </div>\r\n </div>\r\n <p className=\"a4-form-error\"></p>\r\n <BubbleButton className=\"a4-form-submit -primary -fixed\" type=\"submit\" formNoValidate>\r\n Proceed to Registration\r\n </BubbleButton>\r\n <div className=\"a4-complete-group-form-terms\">\r\n Your account information will be collected on the next page\r\n </div>\r\n </form>\r\n </div>\r\n </section>\r\n </div>\r\n </div>\r\n <Footer />\r\n </>\r\n )\r\n }\r\n}\r\n\r\nexport default CompleteGroup;","import React from 'react'\r\nimport './RefundPolicy.scss'\r\nimport { splitBody } from '../../utils/string'\r\nimport { isMobileOnly } from 'react-device-detect'\r\n\r\nimport Navbar from '../shared/Navbar/Navbar'\r\nimport Footer from '../shared/Footer/Footer'\r\nimport { ReactComponent as Letter } from '../../assets/letter.svg'\r\nimport { ReactComponent as Phone } from '../../assets/phone.svg'\r\nimport { ReactComponent as Location } from '../../assets/location.svg'\r\nimport { ReactComponent as Printer } from '../../assets/printer.svg'\r\n\r\nimport bootstrapService from '../../services/BootstrapService'\r\n\r\nclass RefundPolicy extends React.Component {\r\n\r\n // Lifecycle\r\n componentDidMount() {\r\n window.scrollTo(0, 0);\r\n }\r\n \r\n // Component\r\n render() {\r\n const policyData = bootstrapService.data.landing.pages.find(p => p.name === \"refund-policy\");\r\n\r\n const header = policyData ? policyData.header : null;\r\n const effectiveDate = policyData ? policyData.effectiveDate : null;\r\n const body = policyData ? policyData.body : null;\r\n\r\n const [body1, body2] = splitBody(body);\r\n\r\n const siteData = bootstrapService.data.site;\r\n\r\n const email = siteData.siteEmail;\r\n const phone = siteData.sitePhone;\r\n const address1 = siteData.siteAddress.street;\r\n const address2 = siteData.siteAddress.city.concat(\", \", siteData.siteAddress.state, \" \", siteData.siteAddress.zip);\r\n const fullAddress = address1.concat(\" \", address2);\r\n const fax = siteData.siteFax;\r\n \r\n return (\r\n <>\r\n {\r\n policyData &&\r\n <>\r\n <Navbar />\r\n <div className=\"a4-view\">\r\n <div className=\"a4-layout a4-policy\">\r\n <div className=\"a4-policy-container\">\r\n <div className=\"a4-policy-page-title\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n <h1 className=\"title\">{header}</h1>\r\n </div>\r\n <div className=\"a4-policy-pre\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n <h4 className=\"title\">Effective date: {effectiveDate}.</h4>\r\n <div className=\"cols\">\r\n <div className=\"column\">\r\n <p><span className=\"text-primary\" dangerouslySetInnerHTML={{ __html: body1 }}></span></p>\r\n </div>\r\n <div className=\"column\">\r\n <p><span className=\"text-primary\" dangerouslySetInnerHTML={{ __html: body2 }}></span></p>\r\n </div>\r\n </div>\r\n </div>\r\n <div className=\"a4-policy-contacts\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n <ul className=\"a4-policy-contacts-list\">\r\n <li className=\"a4-policy-contacts-list-item\">\r\n <div className=\"a4-policy-contacts-list-item-info\">\r\n <div className=\"a4-policy-contacts-list-item-label\">Email:</div>\r\n <a href={`mailto:${email}`}>\r\n <div className=\"a4-policy-contacts-list-item-value\">{email}</div>\r\n </a>\r\n </div>\r\n <div className=\"a4-policy-contacts-list-item-icon\">\r\n <svg className=\"a4-svgsprite -letter text-secondary\">\r\n <Letter fill={bootstrapService.primaryColor} />\r\n </svg>\r\n </div>\r\n </li>\r\n <li className=\"a4-policy-contacts-list-item\">\r\n <div className=\"a4-policy-contacts-list-item-info\">\r\n <div className=\"a4-policy-contacts-list-item-label\">Phone:</div>\r\n <a href={`tel:${phone}`}>\r\n <div className=\"a4-policy-contacts-list-item-value\">{phone}</div>\r\n </a>\r\n </div>\r\n <div className=\"a4-policy-contacts-list-item-icon\">\r\n <svg className=\"a4-svgsprite -phone text-secondary\">\r\n <Phone stroke={bootstrapService.primaryColor} />\r\n </svg>\r\n </div>\r\n </li>\r\n <li className=\"a4-policy-contacts-list-item\">\r\n <div className=\"a4-policy-contacts-list-item-info\">\r\n <div className=\"a4-policy-contacts-list-item-label\">Mailing Address:</div>\r\n <a href={`http://maps.google.com/?q=${fullAddress}`} target=\"_blank\" rel=\"noreferrer\">\r\n <div className=\"a4-policy-contacts-list-item-value\">{address1}<br></br>{address2}</div>\r\n </a>\r\n </div>\r\n <div className=\"a4-policy-contacts-list-item-icon\">\r\n <svg className=\"a4-svgsprite -location text-secondary\">\r\n <Location stroke={bootstrapService.primaryColor} />\r\n </svg>\r\n </div>\r\n </li>\r\n <li className=\"a4-policy-contacts-list-item\">\r\n <div className=\"a4-policy-contacts-list-item-info\">\r\n <div className=\"a4-policy-contacts-list-item-label\">Fax:</div>\r\n <a href={`fax:${fax}`}>\r\n <div className=\"a4-policy-contacts-list-item-value\">{fax}</div>\r\n </a>\r\n </div>\r\n <div className=\"a4-policy-contacts-list-item-icon\">\r\n <svg className=\"a4-svgsprite -printer text-secondary\">\r\n <Printer stroke={bootstrapService.primaryColor} />\r\n </svg>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n <Footer />\r\n </div>\r\n </>\r\n }\r\n </>\r\n )\r\n }\r\n}\r\n\r\nexport default RefundPolicy;","import React from 'react'\r\nimport './ComplaintPolicy.scss'\r\nimport { splitBody } from '../../utils/string'\r\nimport { isMobileOnly } from 'react-device-detect'\r\n\r\nimport Navbar from '../shared/Navbar/Navbar'\r\nimport Footer from '../shared/Footer/Footer'\r\nimport { ReactComponent as Letter } from '../../assets/letter.svg'\r\nimport { ReactComponent as Phone } from '../../assets/phone.svg'\r\nimport { ReactComponent as Location } from '../../assets/location.svg'\r\nimport { ReactComponent as Printer } from '../../assets/printer.svg'\r\n\r\nimport bootstrapService from '../../services/BootstrapService'\r\n\r\nclass ComplaintPolicy extends React.Component {\r\n\r\n // Lifecycle\r\n componentDidMount() {\r\n window.scrollTo(0, 0);\r\n }\r\n \r\n // Component\r\n render() {\r\n const policyData = bootstrapService.data.landing.pages.find(p => p.name === \"complaint-resolution-policy\");\r\n\r\n const header = policyData ? policyData.header : null;\r\n const effectiveDate = policyData ? policyData.effectiveDate : null;\r\n const body = policyData ? policyData.body : null;\r\n\r\n const [body1, body2] = splitBody(body);\r\n\r\n const siteData = bootstrapService.data.site;\r\n\r\n const email = siteData.siteEmail;\r\n const phone = siteData.sitePhone;\r\n const address1 = siteData.siteAddress.street;\r\n const address2 = siteData.siteAddress.city.concat(\", \", siteData.siteAddress.state, \" \", siteData.siteAddress.zip);\r\n const fullAddress = address1.concat(\" \", address2);\r\n const fax = siteData.siteFax;\r\n \r\n return (\r\n <>\r\n {\r\n policyData &&\r\n <>\r\n <Navbar />\r\n <div className=\"a4-view\">\r\n <div className=\"a4-layout a4-policy\">\r\n <div className=\"a4-policy-container\">\r\n <div className=\"a4-policy-page-title\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n <h1 className=\"title\">{header}</h1>\r\n </div>\r\n <div className=\"a4-policy-pre\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n <h4 className=\"title\">Effective date: {effectiveDate}.</h4>\r\n <div className=\"cols\">\r\n <div className=\"column\">\r\n <p><span className=\"text-primary\" dangerouslySetInnerHTML={{ __html: body1 }}></span></p>\r\n </div>\r\n <div className=\"column\">\r\n <p><span className=\"text-primary\" dangerouslySetInnerHTML={{ __html: body2 }}></span></p>\r\n </div>\r\n </div>\r\n </div>\r\n <div className=\"a4-policy-contacts\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n <ul className=\"a4-policy-contacts-list\">\r\n <li className=\"a4-policy-contacts-list-item\">\r\n <div className=\"a4-policy-contacts-list-item-info\">\r\n <div className=\"a4-policy-contacts-list-item-label\">Email:</div>\r\n <a href={`mailto:${email}`}>\r\n <div className=\"a4-policy-contacts-list-item-value\">{email}</div>\r\n </a>\r\n </div>\r\n <div className=\"a4-policy-contacts-list-item-icon\">\r\n <svg className=\"a4-svgsprite -letter text-secondary\">\r\n <Letter fill={bootstrapService.primaryColor} />\r\n </svg>\r\n </div>\r\n </li>\r\n <li className=\"a4-policy-contacts-list-item\">\r\n <div className=\"a4-policy-contacts-list-item-info\">\r\n <div className=\"a4-policy-contacts-list-item-label\">Phone:</div>\r\n <a href={`tel:${phone}`}>\r\n <div className=\"a4-policy-contacts-list-item-value\">{phone}</div>\r\n </a>\r\n </div>\r\n <div className=\"a4-policy-contacts-list-item-icon\">\r\n <svg className=\"a4-svgsprite -phone text-secondary\">\r\n <Phone stroke={bootstrapService.primaryColor} />\r\n </svg>\r\n </div>\r\n </li>\r\n <li className=\"a4-policy-contacts-list-item\">\r\n <div className=\"a4-policy-contacts-list-item-info\">\r\n <div className=\"a4-policy-contacts-list-item-label\">Mailing Address:</div>\r\n <a href={`http://maps.google.com/?q=${fullAddress}`} target=\"_blank\" rel=\"noreferrer\">\r\n <div className=\"a4-policy-contacts-list-item-value\">{address1}<br></br>{address2}</div>\r\n </a>\r\n </div>\r\n <div className=\"a4-policy-contacts-list-item-icon\">\r\n <svg className=\"a4-svgsprite -location text-secondary\">\r\n <Location stroke={bootstrapService.primaryColor} />\r\n </svg>\r\n </div>\r\n </li>\r\n <li className=\"a4-policy-contacts-list-item\">\r\n <div className=\"a4-policy-contacts-list-item-info\">\r\n <div className=\"a4-policy-contacts-list-item-label\">Fax:</div>\r\n <a href={`fax:${fax}`}>\r\n <div className=\"a4-policy-contacts-list-item-value\">{fax}</div>\r\n </a>\r\n </div>\r\n <div className=\"a4-policy-contacts-list-item-icon\">\r\n <svg className=\"a4-svgsprite -printer text-secondary\">\r\n <Printer stroke={bootstrapService.primaryColor} />\r\n </svg>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n <Footer />\r\n </div>\r\n </>\r\n }\r\n </>\r\n )\r\n }\r\n}\r\n\r\nexport default ComplaintPolicy;\r\n","import React from 'react'\r\nimport './CustomPage.scss'\r\nimport { isMobileOnly } from 'react-device-detect'\r\n\r\nimport Navbar from '../shared/Navbar/Navbar'\r\nimport Subscribe from '../shared/Subscribe/Subscribe'\r\nimport Footer from '../shared/Footer/Footer'\r\n\r\nimport bootstrapService from '../../services/BootstrapService'\r\n\r\nclass CustomPage extends React.Component {\r\n // Constructor\r\n constructor(props) {\r\n super(props);\r\n }\r\n\r\n // Lifecycle\r\n componentDidMount() {\r\n window.scrollTo(0, 0);\r\n }\r\n\r\n // Component\r\n render() {\r\n const pages = bootstrapService.data.landing.pages;\r\n const page = pages.find(p => p.name === this.props.match.params.name);\r\n\r\n if (!page) {\r\n this.props.history.push(\"/\");\r\n return null;\r\n }\r\n\r\n const header = page ? page.header : null;\r\n const body = page ? page.body : null;\r\n\r\n return (\r\n <>\r\n {\r\n page &&\r\n <>\r\n <Navbar />\r\n <div className=\"a4-view\">\r\n <div className=\"a4-layout a4-custom-page\">\r\n <div className=\"a4-custom-page-container\">\r\n <div className=\"a4-custom-page-page-title\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n <h1 className=\"title\">{header}</h1>\r\n <div className=\"a4-custom-page-body\" dangerouslySetInnerHTML={{ __html: body }}></div>\r\n </div>\r\n </div>\r\n <Subscribe />\r\n <Footer />\r\n </div>\r\n </div>\r\n </>\r\n }\r\n </>\r\n )\r\n }\r\n}\r\n\r\nexport default CustomPage;","import React from 'react'\r\nimport './Error.scss'\r\nimport { Link } from 'react-router-dom'\r\nimport { withRouter } from 'react-router-dom'\r\nimport { isMobileOnly } from 'react-device-detect'\r\n\r\nimport Navbar from '../Navbar/Navbar'\r\nimport Footer from '../Footer/Footer'\r\nimport BubbleButton from '../BubbleButton/BubbleButton'\r\n\r\nimport bootstrapService from '../../../services/BootstrapService'\r\n\r\nclass Error extends React.Component {\r\n render() {\r\n const errorCode = this.props.location.state ? this.props.location.state.code : \"404\"\r\n const errorTitle = this.props.location.state ? this.props.location.state.title : \"Page not found\"\r\n const errorDescription = this.props.location.state ? this.props.location.state.description : \"Looks like we can't find this page right now.<br /> You can visit our home page instead.\"\r\n const errorImg = bootstrapService.data ? bootstrapService.data.site.errorImageUrl : \"\";\r\n\r\n return (\r\n <>\r\n <Navbar ref={navbar => this.navbar = navbar} clickTry={this.clickTryForFree} />\r\n <div className=\"a4-view\">\r\n <div className=\"a4-layout a4-error\">\r\n <div className=\"a4-error-content\">\r\n <div className={\"a4-error-exposition -highlighted\"}>\r\n <div className=\"a4-error-exposition-container\">\r\n <div className=\"a4-error-exposition-content\">\r\n <div className=\"a4-error-exposition-info\">\r\n <h1 className=\"a4-error-exposition-code\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>{errorCode}</h1>\r\n <h3 className=\"a4-error-exposition-title\" data-aos={isMobileOnly ? undefined : \"fade-up\"}><span className=\"text-primary\">{errorTitle}</span></h3>\r\n <p className=\"a4-error-exposition-description\" data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-duration=\"1300\" dangerouslySetInnerHTML={{ __html: errorDescription}}></p>\r\n <div className=\"a4-error-exposition-control\" data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-duration=\"1400\">\r\n <Link to=\"/\">\r\n <BubbleButton className=\"-primary\">Back to home page</BubbleButton>\r\n </Link>\r\n </div>\r\n </div>\r\n <div className=\"a4-error-exposition-illustration\">\r\n <img src={errorImg} data-aos={isMobileOnly ? undefined : \"fade-up\"} data-aos-easing=\"ease-out-quad\" alt=\"\" />\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <Footer />\r\n </div>\r\n </div>\r\n </div>\r\n </>\r\n )\r\n }\r\n}\r\n\r\nexport default withRouter(Error);","import React from 'react'\r\nimport './AppError.scss'\r\nimport { isMobileOnly } from 'react-device-detect'\r\n\r\nclass AppError extends React.Component {\r\n render() {\r\n return (\r\n <div className=\"a4-view\">\r\n <div className=\"a4-layout a4-app-error\">\r\n <div className=\"a4-app-error-content\">\r\n <div className={\"a4-app-error-exposition -highlighted\"}>\r\n <div className=\"a4-app-error-exposition-container\">\r\n <div className=\"a4-app-error-exposition-content\">\r\n <div className=\"a4-app-error-exposition-info\" data-aos={isMobileOnly ? undefined : \"fade-up\"}>\r\n <h1 className=\"a4-app-error-exposition-code\">Error</h1>\r\n <h3 className=\"a4-app-error-exposition-title\"><span className=\"text-primary\">App Failed</span></h3>\r\n <p className=\"a4-app-error-exposition-description\">The application failed to initialize.<br></br>Please contact customer support for assistance.<br></br>Thank you.</p>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n )\r\n }\r\n}\r\n\r\nexport default AppError;","import React from 'react'\r\nimport { BrowserRouter as Router, Switch, Route, Redirect } from 'react-router-dom'\r\nimport AOS from 'aos'\r\nimport 'aos/dist/aos.css'\r\nimport 'select2/dist/css/select2.min.css'\r\nimport 'owl.carousel/dist/assets/owl.carousel.min.css'\r\nimport './App.scss' // must come after other css files\r\n\r\nimport Spinner from './components/shared/Spinner/Spinner'\r\nimport Home from './components/Home/Home'\r\nimport Approvals from './components/Approvals/Approvals'\r\nimport Courses from './components/Courses/Courses'\r\nimport CourseDetails from './components/CourseDetails/CourseDetails'\r\nimport Pricing from './components/Pricing/Pricing'\r\nimport Buy from './components/Buy/Buy'\r\nimport Payment from './components/Payment/Payment'\r\nimport Requirements from './components/Requirements/Requirements'\r\nimport Login from './components/Login/Login'\r\nimport Register from './components/Register/Register'\r\nimport ForgotPassword from './components/ForgotPassword/ForgotPassword'\r\nimport ResetPassword from './components/ResetPassword/ResetPassword'\r\nimport Help from './components/Help/Help'\r\nimport Faq from './components/Faq/Faq'\r\nimport PrivacyPolicy from './components/PrivacyPolicy/PrivacyPolicy'\r\nimport Terms from './components/Terms/Terms'\r\nimport AffiliatedSites from './components/AffiliatedSites/AffiliatedSites'\r\nimport ConfirmEmail from './components/ConfirmEmail/ConfirmEmail'\r\nimport CompleteProfile from './components/CompleteProfile/CompleteProfile'\r\nimport CreateGroup from './components/CreateGroup/CreateGroup'\r\nimport RefundPolicy from './components/RefundPolicy/RefundPolicy'\r\nimport ComplaintPolicy from './components/ComplaintPolicy/ComplaintPolicy'\r\nimport CustomPage from './components/CustomPage/CustomPage'\r\n\r\nimport Error from './components/shared/Error/Error'\r\nimport AppError from './components/shared/AppError/AppError'\r\n\r\nimport bootstrapService from './services/BootstrapService'\r\nimport httpService, { HttpSelector, ApiSelector } from './services/HttpService'\r\n\r\nclass App extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n // State\r\n this.state = {\r\n dataLoading: true,\r\n dataError: false,\r\n }\r\n\r\n window.onerror = (msg, url, lineNo, columnNo, error) => {\r\n httpService.reportError({\r\n elapsedTime: 0,\r\n message: msg,\r\n url: url || \"Unknown URL\",\r\n lineNo: lineNo || 0,\r\n columnNo: columnNo || 0,\r\n stack: error && error.stack ? `${error.stack}` : \"No stack trace\"\r\n });\r\n };\r\n }\r\n\r\n // Lifecycle\r\n componentDidMount() {\r\n this.setupAOS();\r\n //httpService.selectApi({ httpSelector: HttpSelector.UseFetch, apiSelector: ApiSelector.UseApp })\r\n httpService.selectApi()\r\n .then(success => {\r\n if (success) {\r\n this.getBootstrap();\r\n }\r\n else {\r\n this.setState({ dataError: true });\r\n }\r\n });\r\n }\r\n\r\n // Helpers\r\n setupAOS() {\r\n AOS.init({\r\n once: true,\r\n duration: 1200,\r\n delay: 190,\r\n easing: \"outexpo\",\r\n maxDistance: 75,\r\n anchorPlacement: \"top-bottom\",\r\n });\r\n }\r\n\r\n\r\n getBootstrap() {\r\n return bootstrapService.getBootstrap()\r\n .then((success) => {\r\n if (success) {\r\n this.setState({ dataLoading: false });\r\n return true;\r\n }\r\n else {\r\n console.error('App.getBootstrap() failed');\r\n this.setState({ dataError: true });\r\n return false;\r\n }\r\n })\r\n .catch((e) => {\r\n console.error('App.getBootstrap() error = ', e);\r\n this.setState({ dataError: true });\r\n });\r\n }\r\n\r\n\r\n // Component\r\n render() {\r\n const loading = this.state.dataLoading;\r\n const error = this.state.dataError;\r\n\r\n return (\r\n <>\r\n {\r\n loading && !error &&\r\n <div className=\"spinner-container\">\r\n <Spinner />\r\n </div>\r\n }\r\n\r\n {\r\n !loading && !error &&\r\n <Router>\r\n <Switch>\r\n {/* Routes */}\r\n <Route path=\"/\" exact component={Home} />\r\n <Route path=\"/approvals\" exact component={Approvals} />\r\n <Route path=\"/courses\" exact component={Courses} />\r\n <Route path=\"/course/:id\" exact component={CourseDetails} />\r\n <Route path=\"/pricing/:plan\" exact component={Pricing} />\r\n <Route path=\"/requirements/:state\" exact component={Requirements} />\r\n <Route path=\"/buy\" exact component={Buy} />\r\n <Route path=\"/payment\" exact component={Payment} />\r\n <Route path=\"/login\" exact component={Login} />\r\n <Route path=\"/register\" exact component={Register} />\r\n <Route path=\"/register/:group\" exact component={Register} />\r\n <Route path=\"/forgot-password\" exact component={ForgotPassword} />\r\n <Route path=\"/reset-password/:token\" exact component={ResetPassword} />\r\n <Route path=\"/help-and-support\" exact component={Help} />\r\n <Route path=\"/faq\" exact component={Faq} />\r\n <Route path=\"/affiliated-sites\" exact component={AffiliatedSites} />\r\n <Route path=\"/privacy-policy\" exact component={PrivacyPolicy} />\r\n <Route path=\"/terms-and-conditions\" exact component={Terms} />\r\n <Route path=\"/confirm-email/:token\" exact component={ConfirmEmail} />\r\n <Route path=\"/complete-profile/:token\" exact component={CompleteProfile} />\r\n <Route path=\"/create-group/\" exact component={CreateGroup} />\r\n <Route path=\"/refund-policy\" exact component={RefundPolicy} />\r\n <Route path=\"/complaint-resolution-policy\" exact component={ComplaintPolicy} />\r\n\r\n {/* Redirects */}\r\n <Route exact path=\"/pricing\"><Redirect to={`/pricing/${bootstrapService.defaultPlanType}`}></Redirect></Route>\r\n\r\n {/* generic page */}\r\n <Route path=\"/:name\" exact component={CustomPage} />\r\n\r\n {/* Not Found */}\r\n <Route component={Error} />\r\n </Switch>\r\n </Router>\r\n }\r\n\r\n {/* Bootstrap Error */}\r\n {\r\n error &&\r\n <div className=\"error-container\">\r\n <AppError />\r\n </div>\r\n }\r\n </>\r\n )\r\n }\r\n}\r\n\r\nexport default App;\r\n","const reportWebVitals = onPerfEntry => {\r\n if (onPerfEntry && onPerfEntry instanceof Function) {\r\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\r\n getCLS(onPerfEntry);\r\n getFID(onPerfEntry);\r\n getFCP(onPerfEntry);\r\n getLCP(onPerfEntry);\r\n getTTFB(onPerfEntry);\r\n });\r\n }\r\n};\r\n\r\nexport default reportWebVitals;\r\n","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport App from './App';\r\nimport reportWebVitals from './reportWebVitals';\r\n\r\nReactDOM.render(\r\n <React.StrictMode>\r\n <App />\r\n </React.StrictMode>,\r\n document.getElementById('root')\r\n);\r\n\r\n// If you want to start measuring performance in your app, pass a function\r\n// to log results (for example: reportWebVitals(console.log))\r\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\r\nreportWebVitals();\r\n"],"sourceRoot":""}