{"version":3,"sources":["webpack://web-frontend/./core.css","webpack://web-frontend/./bulma.sass","webpack://web-frontend/./core.css?756d","webpack://web-frontend/./bulma.sass?8a13","webpack://web-frontend/./app.tsx","webpack://web-frontend/./components/banner.tsx","webpack://web-frontend/./components/bannerBackgroundImage.tsx","webpack://web-frontend/./components/branchLoginForm.tsx","webpack://web-frontend/./components/disclosureModal.tsx","webpack://web-frontend/./components/footer.tsx","webpack://web-frontend/./components/headerPane.tsx","webpack://web-frontend/./components/header/accountLink.tsx","webpack://web-frontend/./components/header/index.tsx","webpack://web-frontend/./components/header/option1.tsx","webpack://web-frontend/./components/header/option2.tsx","webpack://web-frontend/./components/header/option3.tsx","webpack://web-frontend/./components/header/unknownLink.tsx","webpack://web-frontend/./components/logo.tsx","webpack://web-frontend/./components/pdf.tsx","webpack://web-frontend/./components/searchField.tsx","webpack://web-frontend/./components/table.tsx","webpack://web-frontend/./index.tsx","webpack://web-frontend/./lib/config.ts","webpack://web-frontend/./lib/googleAnalytics.ts","webpack://web-frontend/./pages/account/create.tsx","webpack://web-frontend/./pages/account/loginOrRegister.tsx","webpack://web-frontend/./pages/landing/components/faqItem.tsx","webpack://web-frontend/./pages/landing/components/faqPane.tsx","webpack://web-frontend/./pages/landing/components/getStartedPane.tsx","webpack://web-frontend/./pages/landing/components/product.tsx","webpack://web-frontend/./pages/landing/components/productsPane.tsx","webpack://web-frontend/./pages/landing/components/testimonyItem.tsx","webpack://web-frontend/./pages/landing/components/testimonyPane.tsx","webpack://web-frontend/./pages/landing/landing.tsx","webpack://web-frontend/../web-shared/components/button.tsx","webpack://web-frontend/../web-shared/components/externalLink.tsx","webpack://web-frontend/../web-shared/components/highlightText.tsx","webpack://web-frontend/../web-shared/components/htmlString.tsx","webpack://web-frontend/../web-shared/components/icon.tsx","webpack://web-frontend/../web-shared/components/input.tsx","webpack://web-frontend/../web-shared/components/loadingBar.tsx","webpack://web-frontend/../web-shared/components/loadingMessage.tsx","webpack://web-frontend/../web-shared/components/masonry.tsx","webpack://web-frontend/../web-shared/components/modal.tsx","webpack://web-frontend/../web-shared/components/nonIdealState.tsx","webpack://web-frontend/../web-shared/components/pager.tsx","webpack://web-frontend/../web-shared/components/relativeTime.tsx","webpack://web-frontend/../web-shared/components/routing/link.tsx","webpack://web-frontend/../web-shared/components/routing/privateRoute.tsx","webpack://web-frontend/../web-shared/components/routing/publicRoute.tsx","webpack://web-frontend/../web-shared/components/scrollIntoView.tsx","webpack://web-frontend/../web-shared/components/section.tsx","webpack://web-frontend/../web-shared/components/sectionHeader.tsx","webpack://web-frontend/../web-shared/components/spinners/BarLoader.tsx","webpack://web-frontend/../web-shared/components/spinners/ClipLoader.tsx","webpack://web-frontend/../web-shared/components/spinners/Spinner.tsx","webpack://web-frontend/../web-shared/components/steps.tsx","webpack://web-frontend/../web-shared/components/tabs/index.tsx","webpack://web-frontend/../web-shared/components/tabs/managedTabs.tsx","webpack://web-frontend/../web-shared/components/tabs/tab.tsx","webpack://web-frontend/../web-shared/components/templateString.tsx","webpack://web-frontend/../web-shared/components/timeline.tsx","webpack://web-frontend/../web-shared/components/toggle.tsx","webpack://web-frontend/../web-shared/components/tooltip.tsx","webpack://web-frontend/../web-shared/components/uploadModal.tsx","webpack://web-frontend/../web-shared/components/withAddon.tsx","webpack://web-frontend/../web-shared/lib/ajax.ts","webpack://web-frontend/../web-shared/lib/auth.ts","webpack://web-frontend/../web-shared/lib/base64ToBlob.ts","webpack://web-frontend/../web-shared/lib/chunk.ts","webpack://web-frontend/../web-shared/lib/clamp.ts","webpack://web-frontend/../web-shared/lib/classNames.ts","webpack://web-frontend/../web-shared/lib/convert/hexToCssVars.ts","webpack://web-frontend/../web-shared/lib/convert/hexToRgb.ts","webpack://web-frontend/../web-shared/lib/dbg.ts","webpack://web-frontend/../web-shared/lib/deepCompare.ts","webpack://web-frontend/../web-shared/lib/format/index.ts","webpack://web-frontend/../web-shared/lib/googleAnalytics.ts","webpack://web-frontend/../web-shared/lib/guid.ts","webpack://web-frontend/../web-shared/lib/initialize.ts","webpack://web-frontend/../web-shared/lib/isDevelopment.ts","webpack://web-frontend/../web-shared/lib/isPoBox.ts","webpack://web-frontend/../web-shared/lib/isTin.ts","webpack://web-frontend/../web-shared/lib/objectKeysToLowerCase.ts","webpack://web-frontend/../web-shared/lib/renderComponent.ts","webpack://web-frontend/../web-shared/lib/rxStore.ts","webpack://web-frontend/../web-shared/lib/serializeFormData.ts","webpack://web-frontend/../web-shared/lib/shadeColor.ts","webpack://web-frontend/../web-shared/lib/signalr.ts","webpack://web-frontend/../web-shared/lib/sort.ts","webpack://web-frontend/../web-shared/lib/throttle.ts","webpack://web-frontend/../web-shared/lib/usStatesAndTerritories.ts","webpack://web-frontend/../web-shared/lib/useApi.ts","webpack://web-frontend/../web-shared/lib/useEffectDeep.ts","webpack://web-frontend/../web-shared/lib/useHeaderLinks.ts","webpack://web-frontend/../web-shared/lib/useInterval.ts","webpack://web-frontend/../web-shared/lib/useMedia.ts","webpack://web-frontend/../web-shared/lib/useWindowScroll.ts","webpack://web-frontend/../web-shared/lib/useWindowSize.ts","webpack://web-frontend/../web-shared/lib/validatePasswordComplexity.ts","webpack://web-frontend/../web-shared/pages/instructions.ts","webpack://web-frontend/../web-shared/pages/login.tsx","webpack://web-frontend/../web-shared/pages/logoff.tsx","webpack://web-frontend/../web-shared/pages/notFound.tsx","webpack://web-frontend/../web-shared/store/auth.ts","webpack://web-frontend/../web-shared/store/ui.ts","webpack://web-frontend/webpack/bootstrap","webpack://web-frontend/webpack/runtime/chunk loaded","webpack://web-frontend/webpack/runtime/create fake namespace object","webpack://web-frontend/webpack/runtime/load script","webpack://web-frontend/webpack/runtime/amd define","webpack://web-frontend/webpack/runtime/amd options","webpack://web-frontend/webpack/runtime/compat get default export","webpack://web-frontend/webpack/runtime/define property getters","webpack://web-frontend/webpack/runtime/ensure chunk","webpack://web-frontend/webpack/runtime/get javascript chunk filename","webpack://web-frontend/webpack/runtime/global","webpack://web-frontend/webpack/runtime/harmony module decorator","webpack://web-frontend/webpack/runtime/hasOwnProperty shorthand","webpack://web-frontend/webpack/runtime/make namespace object","webpack://web-frontend/webpack/runtime/node module decorator","webpack://web-frontend/webpack/runtime/publicPath","webpack://web-frontend/webpack/runtime/jsonp chunk loading","webpack://web-frontend/webpack/startup"],"names":["exports","___CSS_LOADER_API_IMPORT___","push","module","id","api","content","__esModule","default","options","exported","locals","ForgotPage","React","ResetPage","VerifyPage","AccountSetupPage","MainLandingPage","QuestionsPage","AboutPage","UserPage","ApplicationDetailPage","RenewalDetailPage","ActionPage","SignupPage","ApplicationRenderer","AdminPage","AdminAppsPage","AdminAppDetailPage","PPPAdminPage","PPPAdminDetailPage","PppApplicationPage","ForgivenessApplicationPage","ForgivenessAdminPage","ForgivenessAdminDetailPage","AdminRoute","children","title","token","component","rest","render","props","authState","auth","admin","globalAdmin","NotFoundPage","initializeGoogleAnalytics","bugsnagClient","initializeBugsnag","ui","config","App","s","expires","location","useLocation","gaPageView","setState","Date","getTime","expireMs","timeout","setTimeout","clearTimeout","isPpp","securedSites","hasSecured","length","hasExpressLender","includes","hexToCssVars","okText","fullHeight","skipRedirect","option","fallback","spinner","exact","path","LogoffPage","LoginRegisterPage","applicationType","map","key","l","url","componentProps","faqConfig","LandingPage","HotApp","hot","Styles","styled","useLink","substr","Banner","showButton","banner","productNameOnly","highlightColor","backgroundColor","boxOpacity","buttons","b","color","linkUrl","toLowerCase","text","details","textColor","buttonText","imageUrl","className","style","position","overflow","boxShading","src","indexOf","bannerText","fontWeight","filter","i","contrastRatio","Color","type","borderColor","shadeColor","margin","dangerouslySetInnerHTML","__html","href","to","getHeight","w","window","innerWidth","BannerBackgroundImage","width","Math","ceil","imageSrc","BranchLoginForm","onClose","busy","error","userNameRef","passwordRef","e","preventDefault","current","value","response","errorMessage","maxWidth","padding","onSubmit","marginTop","size","htmlFor","ref","disabled","fullWidth","DisclosureModal","name","onOk","renewal","ppl","ppf","parameters","ready","failed","results","setResults","tokenSource","undefined","postJson","isError","payload","cancelSource","Axios","getDisclosureData","cancel","loadingMessage","fullPage","cancelText","isReady","bodyStyle","textAlign","icon","subTitle","colorSubTitle","pdfContent","downloadLink","documentMd5","scale","onDocumentComplete","gaEvent","onDocumentFailed","loading","versionString","Footer","branchLoginModalOpen","branchUser","footerImages","img","alt","target","onClick","HeaderPane","banners","small","useWindowSize","headerHeight","document","getElementsByClassName","clientHeight","bannerDivs","settings","dots","arrows","infinite","speed","slidesToShow","slidesToScroll","autoplay","autoplaySpeed","fade","swipe","draggable","_buildBanner","classNames","height","StyledListItem","AccountLink","email","expireDate","utcTime","Header","p","StyledDiv","NavbarEnd","NavItem","startsWith","userName","headerLinks","hideLoginLinks","siteLogo","clientLogo","v","isHidden","Logo","Menu","pageLinks","authLinks","open","setOpen","useOnClickOutside","link","role","userId","scrolled","useWindowScrolledTo","y","useWindowScrollPosition","opacity","max","min","fontSize","UnknownLink","urlString","h2","h3","h4","pdfjs","PdfjsWorker","PdfPage","page","canvasRef","renderPdf","canvas","context","getContext","viewport","getViewport","clearRect","renderTask","canvasContext","promise","getPdfFromByteArray","bytes","atob","byteLength","byteArray","Uint8Array","index","charCodeAt","Pdf","file","loadingScreen","pages","state","fetchPdf","loadingTask","data","isEvalSupported","pdf","numPages","getPage","ex","marginBottom","download","StyledColumn","SearchField","label","labelInfo","labelSize","tooltip","labelInfoFull","controlPaddingTopEm","inputAddonLeft","inputAddonRight","buttonRight","stack","Container","errors","c","mappedChildren","saveSort","sortRule","localStorage","setItem","JSON","stringify","loadSort","parse","getItem","desc","Table","columns","search","narrow","sticky","additionalState","useTable","autoResetSortBy","autoResetGlobalFilter","initialState","sortBy","useGlobalFilter","useSortBy","getTableProps","getTableBodyProps","headerGroups","rows","prepareRow","setGlobalFilter","headerGroup","getHeaderGroupProps","headers","column","getHeaderProps","getSortByToggleProps","isSorted","isSortedDesc","row","getRowProps","cells","cell","getCellProps","isDevelopment","metaData","client","ErrorBoundary","getPlugin","ReactDOM","getElementById","getConfigFromElement","initializeGa","Create","history","useHistory","loggingIn","useFormState","withIds","onBlur","classList","add","form","select","date","password","postData","Name","values","Email","newEmail","Password","newPassword","ReferralSource","referral","BirthDate","birthDate","BranchUser","loginResponse","clear","IsError","ErrorMessage","from","replace","fluid","tag","tabIndex","required","placeholder","hasLoggedInBefore","showOnlineBankingNote","FaqItem","question","answer","FaqPane","landing","faqs","items","fontStyle","marginLeft","f","pathname","GetStartedPane","heading","Product","feature","split","d","trim","summaryIcon","ProductsPane","features","featureSummaryText","highlightStyle","productHtml","summary","TestimonyItem","TestimonyPane","testimonies","t","customerName","formatUtcDate","testimonyDate","useHeaderLinks","getStarted","favorite","pageConfig","body","Button","colorClass","flex","btnStyle","ExternalLink","onProceed","hostname","HighlightText","query","queryStr","regex","RegExp","styleText","Object","keys","join","html","a","getParagraphs","processMarkup","markupText","substring","HtmlString","Icon","widthEm","sizeEm","marginRight","Input","isValid","showValidation","iconClass","addon","LoadingBar","left","interval","this","setInterval","animate","bind","clearInterval","active","LoadingMessage","headerIcon","Masonry","elementType","iOS","navigator","test","userAgent","MSStream","StyledBackdrop","StyledModal","StyledHeader","StyledFooter","Modal","subtitle","footerText","fullScreen","_handleClose","stopPropagation","rootElemRef","createElement","appendChild","remove","onClickOutside","onEscapeKey","shards","NonIdealState","marginEm","pre","heightEm","Pager","totalResults","pageSize","hideResults","maxPages","isNaN","onPageChange","numeral","format","getNextTimeout","ageInSeconds","RelativeTime","dateOnly","count","setCount","valueOf","next","timer","relativeTime","formatRelativeDateTime","formatUtcDateTime","whitelistKeys","Link","innerRef","toWithQuery","URLSearchParams","keepKeys","Array","k","newSearch","forEach","append","get","toString","PrivateRoute","pageBaseName","PublicRoute","ScrollIntoView","nodeRef","behavior","scrollMode","block","scrollIntoView","Section","css","_colors","none","white","primary","secondary","inverse","isSticky","stickyPos","container","StyledRoot","SectionHeader","center","direction","headerStyle","justifyContent","BarLoader","ClipLoader","HorizontalSpinner","CircleSpinner","Spinner","Component","inlineText","StyledSteps","Steps","vertical","currentStatus","horizontal","mapCloneElement","item","itemStyles","flexBasis","itemProps","stepNumber","status","StyledStep","Step","itemWidth","description","iconNode","STEP_STATUS_ICON","styles","finish","wait","process","func","child","handle","call","Tabs","tabPaneRenderer","tabChildren","defaultTab","findIndex","selectedTab","align","tabsRef","onTabChange","tab","tabs","hidden","cls","rendered","st","paddingTop","mt","paddingBottom","mb","top","preTabContent","TabNav","allTabErrors","adminState","reduce","all","tabErrors","validator","indexOverride","subTabErrors","scrollToTop","el","offsetTop","scrollTo","ManagedTabs","selectedTabId","setSelectedTabId","navigation","hashUpdate","submitting","setSubmitting","showErrors","setShowErrors","useMeasure","refMain","tabId","setTabId","changeTab","baseUrl","setFromHash","hash","onhashchange","visibleTabs","mainTab","find","mainTabIndex","visibleSubTabs","hasSubTabs","subTab","subTabIndex","visibleErrors","Set","msg","hide","allErrors","isLast","submitStatus","submit","submitText","hideNav","indicator","tabsHeader","onDoubleClick","field","Tab","regexReplace","TemplateString","template","variables","asHtml","vars","objectKeysToLowerCase","parts","prop","isVar","hasOwnProperty","variableValue","isObjectVar","highlight","getFormattedData","activities","logTimeUtc","userIp","dateStr","list","time","Timeline","users","dates","hoverUserId","setHoverUserId","hoverIp","setHoverIp","onHoverUser","hovering","onHoverIp","ip","user","u","TimlineItem","fullName","hover","onMouseOver","onMouseOut","Toggle","trueText","falseText","showText","Tooltip","UploadModal","onComplete","uploadUrl","uploadFields","accept","uploading","setUploading","setHighlight","files","setFiles","fileInputRef","cancelTokenRef","addFiles","fileList","newFiles","pct","fs","errorMsg","formData","FormData","String","postForm","round","loaded","total","reason","message","hasBegun","some","isComplete","every","nodrop","onDragOver","dataTransfer","dropEffect","onDragLeave","onDrop","click","multiple","onChange","_f","formatNumber","beginUpload","WithAddon","addonLeft","cancelToken","onUploadProgress","ajax","method","init","json","getToken","isFormData","Authorization","skipAuthorization","currentClientId","Number","axios","serializeFormData","statusText","payloadError","error_message","loginDataKey","branchLoginDataKey","getBranchLoginData","getTokenStorage","setBranchLoginData","storage","sessionStorage","err","getFakeStorage","clearBranchLoginData","removeItem","getBranchUserToken","branchLoginData","tokenExpirationString","tokenExpiration","access_token","getLoginData","setLoginData","remember","cookie","clearLoginData","loginData","ignoreExpires","fakeStorage","_index","getLocalStorage","global","base64ToBlob","base64","mimetype","slicesize","bytechars","bytearrays","offset","slice","bytenums","bytearray","Blob","chunk","arr","len","chunks","n","clamp","hasOwn","classes","arg","isArray","inner","apply","h","hexToRgb","r","g","dbg","console","groupCollapsed","groupEnd","deepCompare","o1","o2","leftChain","rightChain","compare2Objects","x","pop","asLocalDate","dateString","toDate","getUTCHours","getUTCFullYear","getUTCMonth","getUTCDate","parseISO","formatBase","fmt","parser","formatLocalDate","addSuffix","d1","d2","formatDistance","isDateValid","formatYesNo","daysElapsedInYear","moize","differenceInDays","startOfYear","repeatString","repeatCount","TypeError","str","RangeError","Infinity","floor","maxCount","log","formatMoney","decimals","hideZeroDecimal","formatNumberSuffix","num","getDecimalFormat","decimalFormat","googleAnalyticsCodes","enabled","clientId","gaCode","gaConfig","gtag","linker","domains","user_id","send_page_view","page_path","page_search","page_hash","category","action","gaUserCreate","gaLogin","s4","random","guid","envConfig","bugsnag","apiKey","releaseStage","env","use","bugsnagReact","elementId","element","textContent","innerText","innerHTML","poBoxRegex","isPoBox","address","match","isTin","tinString","tin","input","newObj","renderComponent","sheet","ServerStyleSheet","ReactDOMServer","collectStyles","styleTags","getStyleTags","getElementsByTagName","outerHTML","printHtml","iframe","doc","contentDocument","contentWindow","write","close","focus","print","removeChild","printComponent","withDevTools","__REDUX_DEVTOOLS_EXTENSION__","RxStore","computed","patchFilter","stateSubject","devTools","patches","BehaviorSubject","connect","subscribe","m","pipe","distinctUntilChanged","getValue","fn","nextState","produce","getStateSnapshot","_patches","send","actionName","actions","working","update","actionState","partialState","currentState","assign","selector","Error","stackLine","exec","val","setVal","getCurrentState","selectSubscription","equals","unsubscribe","formOptions","bindField","formState","updating","focused","subscriptions","submitAttempted","formStateRef","fields","updateFn","addField","fieldProps","updateRxState","bindText","bindNumeric","formatted","currency","percentage","comma","bindBoolean","bindDate","mask","index2","defaultValue","isSelectorFn","parseFn","isFocused","maskRegex","nv","getSelector","updateSelector","updateLocalState","updateRx","externalChange","maskValue","maskedValue","inputType","j","numericOptions","valueKey","valueOverride","checked","updateOnBlur","activeElement","disableOnBlur","nodeName","positive","whole","dec","fnString","result","params","executeSelector","i2","o","normalizedParts","getSelectorPaths","replaceIndexParts","flatMap","shift","obj","encodeURIComponent","percent","p2","sbcRip","RGB","inputParts","parseInt","parseFloat","colorStr","colorHex","keepAliveWarnAt","pingInterval","stringifySend","SignalR","version","negotiateCancelSource","startCancelSource","beatHandle","transportTimeoutHandle","transportConnectTimeout","totalTransportConnectTimeout","reconnectTimeout","pingIntervalId","beatInterval","keepAliveData","disconnectTimeout","reconnectWindow","lastMessageAt","lastActiveAt","configuredStopReconnectingTimeout","socket","appRelativeUrl","startRequested","startCompleted","connectionStopped","redirectQs","qs","messageId","webSocketServerUrl","buffer","onStartEvent","SimpleEventDispatcher","onStartingEvent","onReceivedEvent","onErrorEvent","onConnectionSlowEvent","onReconnectingEvent","onReconnectEvent","onStateChangedEvent","onDisconnectEvent","dispatch","asEvent","expectedState","newState","oldState","pingServer","addQs","pingResponse","Response","reconnecting","negotiate","res","ConnectionId","ConnectionToken","KeepAliveTimeout","activated","timeoutWarning","Url","DisconnectTimeout","TransportConnectTimeout","failCalled","onFailed","transportFailed","opened","WebSocket","wsProtocol","protocol","host","getUrl","onopen","clearReconnectTimeout","changeState","that","onclose","event","wasClean","reconnect","onmessage","processMessages","initReceived","ajaxPost","prepareQueryString","getAjaxUrl","startResponse","stop","monitorKeepAlive","startHeartbeat","configurePingInterval","drainBuffer","addEventListener","tryBuffer","minData","onInitialized","markLastMessage","maximizePersistentResponse","MessageId","Messages","triggerReceived","tryInitialize","persistentResponse","Initialized","wrappedError","preparedUrl","now","appender","firstChar","charAt","notifyServer","abort","stopMonitoringKeepAlive","clearBuffer","monitoring","reconnectKeepAliveUpdate","sub","verifyLastActive","ensureReconnectingState","start","beat","checkIfAlive","markActive","timeElapsed","userNotified","stopReconnectingTimeout","onReconnecting","onStateChanged","LOGGING","logging","toTimeString","debug","minPersistentResponse","C","M","S","ShouldReconnect","T","GroupsToken","G","E","wsClient","sort","array","compareFn","throttle","last","deferTimer","threshhold","scope","args","arguments","states","territories","useApi","requestPayload","setRequestPayload","__execute","debouncedPayload","useDebounce","debounce","setResultState","useEffectDeep","valid","then","catch","executeNow","deps","isFirst","prevDeps","isSame","links","hideLogin","useInterval","callback","delay","savedCallback","breakpoints","xxs","xs","sm","md","lg","getMediaQueries","bps","bpArray","bp","q","mediaQueries","useMedia","useState","useEffect","mediaQueryLists","mediaQueryList","matchMedia","getState","matches","listener","addListener","removeListener","throttleMs","pageXOffset","pageYOffset","scroll","setScroll","removeEventListener","yOffset","isScrolled","events","onResize","innerHeight","setSize","delete","validatePasswordComplexity","StyledInstructions","LoginForm","remember_default","checkbox","expiredUrl","autoFocus","back","AuthService","onAuthChangeCallback","onAuthChange","ClientId","Admin","GlobalAdmin","lenderAssisted","LenderAssisted","grant_type","username","error_description","error_uri","visible","tokenStorage","emailVerified","UIService","appName","pageTitle","__webpack_module_cache__","deferred","leafPrototypes","getProto","inProgress","dataWebpackPrefix","__webpack_require__","moduleId","cachedModule","__webpack_modules__","amdD","amdO","O","chunkIds","priority","notFulfilled","fulfilled","splice","getter","getPrototypeOf","mode","ns","create","def","getOwnPropertyNames","definition","defineProperty","enumerable","chunkId","Promise","promises","globalThis","Function","hmd","set","prototype","done","script","needAttach","scripts","getAttribute","charset","nc","setAttribute","onScriptComplete","prev","onerror","onload","doneFns","parentNode","head","Symbol","toStringTag","nmd","paths","installedChunks","installedChunkData","resolve","reject","errorType","realSrc","request","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","self","__webpack_exports__"],"mappings":"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","file":"app.e617fa7395f4495373d2.js","sourcesContent":["// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \"html, body { width: 100%; height: 100%; margin: 0; padding: 0; background-color: #efefef; font-size: 16px; }\\r\\nhtml { overflow-x: visible; overflow-y: visible; }\\r\\nbody.noscroll { overflow: hidden; }\\r\\n.row { margin-right: inherit; margin-left: inherit; }\\r\\n.center { text-align: center; }\\r\\n.apr { font-size: 16pt; }\\r\\n\\r\\n/* Bulma tweaks */\\r\\np { margin: 0 0 10px; }\\r\\n.heading { text-transform: none; letter-spacing: normal; margin-bottom: 0.5em; }\\r\\n\\r\\n.list-group-item { display: flex; align-items: baseline; border: 1px solid #ddd; padding: 10px 5px; margin-bottom: -1px; background-color: #fff; }\\r\\n.list-group-item > input { position: relative; top: 2px; margin: 0 0.5em; }\\r\\n.list-group-item:first-child {\\r\\n border-top-right-radius: 4px;\\r\\n border-top-left-radius: 4px;\\r\\n}\\r\\n.list-group-item:last-child {\\r\\n margin-bottom: 0;\\r\\n border-bottom-right-radius: 4px;\\r\\n border-bottom-left-radius: 4px;\\r\\n}\\r\\nlabel.list-group-item { cursor: pointer; }\\r\\nlabel.list-group-item.selected {\\r\\n background-color: #244062;\\r\\n background-color: var(--color-secondary);\\r\\n color: #fff;\\r\\n}\\r\\nlabel.list-group-item:hover {\\r\\n background-color: #c8cfd8;\\r\\n background-color: var(--color-secondary-light-75);\\r\\n}\\r\\nlabel.list-group-item.selected:hover {\\r\\n background-color: #92a0b1;\\r\\n background-color: var(--color-secondary-light-50);\\r\\n}\\r\\n\\r\\n.message.is-danger .message-header { background-color: #c0504d; }\\r\\n.message.is-danger .message-body { border-color: #c0504d; color: #c0504d; }\\r\\n@media(max-width: 768px) {\\r\\n .container.is-fluid { padding: 0; }\\r\\n label.columns, label.columns:last-child,\\r\\n div.columns, div.columns:last-child { display: block; margin: 1em 0; }\\r\\n .column { padding: .75rem 0; }\\r\\n}\\r\\n.input[disabled] { border-color: #dbdbdb; }\\r\\n\\r\\n.input[disabled], .textarea[disabled], .select select[disabled], fieldset[disabled] .input, fieldset[disabled] .textarea, fieldset[disabled] .select select, .select fieldset[disabled] select {\\r\\n border-color: #dbdbdb;\\r\\n}\\r\\n/* End Bulma tweaks */\\r\\n\\r\\ninput[type=checkbox], input[type=radio] {\\r\\n min-width: 1rem;\\r\\n}\\r\\n\\r\\ninput[data-error],\\r\\ntextarea[data-error],\\r\\nselect[data-error],\\r\\n.data-error {\\r\\n border-left: 2px solid #C0504D !important;\\r\\n}\\r\\n\\r\\na {\\r\\n color: #244062;\\r\\n color: var(--color-secondary);\\r\\n}\\r\\na.underline {\\r\\n text-decoration: underline;\\r\\n text-underline-position: under;\\r\\n}\\r\\n\\r\\n_:-ms-fullscreen, .column {}\\r\\n\\r\\n/* NavBar dropdown hover */\\r\\na.navbar-brand { padding-left: 6px; }\\r\\n\\r\\n.inline-link {\\r\\n font-weight: bold;\\r\\n text-decoration: underline;\\r\\n cursor: pointer;\\r\\n color: #F79646;\\r\\n}\\r\\n.inline-link:hover {\\r\\n color: #E26B0A;\\r\\n}\\r\\n\\r\\n.faqitem a { text-decoration: underline; font-weight: bold; }\\r\\n\\r\\n.faqExpand-enter { transition: max-height .25s; max-height: 0; }\\r\\n.faqExpand-enter.faqExpand-enter-active { max-height: 500px; }\\r\\n.faqExpand-leave { transition: max-height .25s; max-height: 500px; }\\r\\n.faqExpand-leave.faqExpand-leave-active { max-height: 0; }\\r\\n\\r\\n.slick-dots { bottom: -50px; z-index: 9; }\\r\\n.slick-next { right: 25px; }\\r\\n.slick-prev { left: 25px; }\\r\\n.slick-prev, .slick-next { top: 90%; z-index: 1; }\\r\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \"/*! bulma.io v0.9.3 | MIT License | github.com/jgthms/bulma */.pagination-previous,.pagination-next,.pagination-link,.pagination-ellipsis,.file-cta,.file-name,.select select,.textarea,.input,.button{-moz-appearance:none;-webkit-appearance:none;align-items:center;border:1px solid transparent;border-radius:4px;box-shadow:none;display:inline-flex;font-size:1rem;height:2.5em;justify-content:flex-start;line-height:1.5;padding-bottom:calc(0.5em - 1px);padding-left:calc(0.75em - 1px);padding-right:calc(0.75em - 1px);padding-top:calc(0.5em - 1px);position:relative;vertical-align:top}.pagination-previous:focus,.pagination-next:focus,.pagination-link:focus,.pagination-ellipsis:focus,.file-cta:focus,.file-name:focus,.select select:focus,.textarea:focus,.input:focus,.button:focus,.is-focused.pagination-previous,.is-focused.pagination-next,.is-focused.pagination-link,.is-focused.pagination-ellipsis,.is-focused.file-cta,.is-focused.file-name,.select select.is-focused,.is-focused.textarea,.is-focused.input,.is-focused.button,.pagination-previous:active,.pagination-next:active,.pagination-link:active,.pagination-ellipsis:active,.file-cta:active,.file-name:active,.select select:active,.textarea:active,.input:active,.button:active,.is-active.pagination-previous,.is-active.pagination-next,.is-active.pagination-link,.is-active.pagination-ellipsis,.is-active.file-cta,.is-active.file-name,.select select.is-active,.is-active.textarea,.is-active.input,.is-active.button{outline:none}[disabled].pagination-previous,[disabled].pagination-next,[disabled].pagination-link,[disabled].pagination-ellipsis,[disabled].file-cta,[disabled].file-name,.select select[disabled],[disabled].textarea,[disabled].input,[disabled].button,fieldset[disabled] .pagination-previous,fieldset[disabled] .pagination-next,fieldset[disabled] .pagination-link,fieldset[disabled] .pagination-ellipsis,fieldset[disabled] .file-cta,fieldset[disabled] .file-name,fieldset[disabled] .select select,.select fieldset[disabled] select,fieldset[disabled] .textarea,fieldset[disabled] .input,fieldset[disabled] .button{cursor:not-allowed}.is-unselectable,.tabs,.pagination-previous,.pagination-next,.pagination-link,.pagination-ellipsis,.breadcrumb,.file,.button{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.navbar-link:not(.is-arrowless)::after,.select:not(.is-multiple):not(.is-loading)::after{border:3px solid transparent;border-radius:2px;border-right:0;border-top:0;content:\\\" \\\";display:block;height:.625em;margin-top:-0.4375em;pointer-events:none;position:absolute;top:50%;transform:rotate(-45deg);transform-origin:center;width:.625em}.tabs:not(:last-child),.pagination:not(:last-child),.message:not(:last-child),.level:not(:last-child),.breadcrumb:not(:last-child),.block:not(:last-child),.title:not(:last-child),.subtitle:not(:last-child),.table-container:not(:last-child),.table:not(:last-child),.progress:not(:last-child),.notification:not(:last-child),.content:not(:last-child),.box:not(:last-child){margin-bottom:1.5rem}.modal-close,.delete{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-moz-appearance:none;-webkit-appearance:none;background-color:rgba(10,10,10,.2);border:none;border-radius:9999px;cursor:pointer;pointer-events:auto;display:inline-block;flex-grow:0;flex-shrink:0;font-size:0;height:20px;max-height:20px;max-width:20px;min-height:20px;min-width:20px;outline:none;position:relative;vertical-align:top;width:20px}.modal-close::before,.delete::before,.modal-close::after,.delete::after{background-color:#fff;content:\\\"\\\";display:block;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%) rotate(45deg);transform-origin:center center}.modal-close::before,.delete::before{height:2px;width:50%}.modal-close::after,.delete::after{height:50%;width:2px}.modal-close:hover,.delete:hover,.modal-close:focus,.delete:focus{background-color:rgba(10,10,10,.3)}.modal-close:active,.delete:active{background-color:rgba(10,10,10,.4)}.is-small.modal-close,.is-small.delete{height:16px;max-height:16px;max-width:16px;min-height:16px;min-width:16px;width:16px}.is-medium.modal-close,.is-medium.delete{height:24px;max-height:24px;max-width:24px;min-height:24px;min-width:24px;width:24px}.is-large.modal-close,.is-large.delete{height:32px;max-height:32px;max-width:32px;min-height:32px;min-width:32px;width:32px}.control.is-loading::after,.select.is-loading::after,.loader,.button.is-loading::after{animation:spinAround 500ms infinite linear;border:2px solid #dbdbdb;border-radius:9999px;border-right-color:transparent;border-top-color:transparent;content:\\\"\\\";display:block;height:1em;position:relative;width:1em}.hero-video,.is-overlay,.modal-background,.modal,.image.is-square img,.image.is-square .has-ratio,.image.is-1by1 img,.image.is-1by1 .has-ratio,.image.is-5by4 img,.image.is-5by4 .has-ratio,.image.is-4by3 img,.image.is-4by3 .has-ratio,.image.is-3by2 img,.image.is-3by2 .has-ratio,.image.is-5by3 img,.image.is-5by3 .has-ratio,.image.is-16by9 img,.image.is-16by9 .has-ratio,.image.is-2by1 img,.image.is-2by1 .has-ratio,.image.is-3by1 img,.image.is-3by1 .has-ratio,.image.is-4by5 img,.image.is-4by5 .has-ratio,.image.is-3by4 img,.image.is-3by4 .has-ratio,.image.is-2by3 img,.image.is-2by3 .has-ratio,.image.is-3by5 img,.image.is-3by5 .has-ratio,.image.is-9by16 img,.image.is-9by16 .has-ratio,.image.is-1by2 img,.image.is-1by2 .has-ratio,.image.is-1by3 img,.image.is-1by3 .has-ratio{bottom:0;left:0;position:absolute;right:0;top:0}.navbar-burger{-moz-appearance:none;-webkit-appearance:none;appearance:none;background:none;border:none;color:currentColor;font-family:inherit;font-size:1em;margin:0;padding:0}/*! minireset.css v0.0.6 | MIT License | github.com/jgthms/minireset.css */html,body,p,ol,ul,li,dl,dt,dd,blockquote,figure,fieldset,legend,textarea,pre,iframe,hr,h1,h2,h3,h4,h5,h6{margin:0;padding:0}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal}ul{list-style:none}button,input,select,textarea{margin:0}html{box-sizing:border-box}*,*::before,*::after{box-sizing:inherit}img,video{height:auto;max-width:100%}iframe{border:0}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}td:not([align]),th:not([align]){text-align:inherit}html{background-color:#fff;font-size:14px;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;min-width:300px;overflow-x:hidden;overflow-y:scroll;text-rendering:optimizeLegibility;text-size-adjust:100%}article,aside,figure,footer,header,hgroup,section{display:block}body,button,input,optgroup,select,textarea{font-family:Tahoma,sans-serif}code,pre{-moz-osx-font-smoothing:auto;-webkit-font-smoothing:auto;font-family:monospace}body{color:#4a4a4a;font-size:1em;font-weight:400;line-height:1.42857143}a{color:#485fc7;cursor:pointer;text-decoration:none}a strong{color:currentColor}a:hover{color:#363636}code{background-color:#f5f5f5;color:#da1039;font-size:.875em;font-weight:normal;padding:.25em .5em .25em}hr{background-color:#f5f5f5;border:none;display:block;height:2px;margin:1.5rem 0}img{height:auto;max-width:100%}input[type=checkbox],input[type=radio]{vertical-align:baseline}small{font-size:.875em}span{font-style:inherit;font-weight:inherit}strong{color:#363636;font-weight:700}fieldset{border:none}pre{-webkit-overflow-scrolling:touch;background-color:#f5f5f5;color:#4a4a4a;font-size:.875em;overflow-x:auto;padding:1.25rem 1.5rem;white-space:pre;word-wrap:normal}pre code{background-color:transparent;color:currentColor;font-size:1em;padding:0}table td,table th{vertical-align:top}table td:not([align]),table th:not([align]){text-align:inherit}table th{color:#363636}@keyframes spinAround{from{transform:rotate(0deg)}to{transform:rotate(359deg)}}.box{background-color:#fff;border-radius:6px;box-shadow:0 .5em 1em -0.125em rgba(10,10,10,.1),0 0px 0 1px rgba(10,10,10,.02);color:#4a4a4a;display:block;padding:1.25rem}a.box:hover,a.box:focus{box-shadow:0 .5em 1em -0.125em rgba(10,10,10,.1),0 0 0 1px #485fc7}a.box:active{box-shadow:inset 0 1px 2px rgba(10,10,10,.2),0 0 0 1px #485fc7}.button{background-color:#fff;border-color:#dbdbdb;border-width:1px;color:#363636;cursor:pointer;justify-content:center;padding-bottom:calc(0.5em - 1px);padding-left:1em;padding-right:1em;padding-top:calc(0.5em - 1px);text-align:center;white-space:nowrap}.button strong{color:inherit}.button .icon,.button .icon.is-small,.button .icon.is-medium,.button .icon.is-large{height:1.5em;width:1.5em}.button .icon:first-child:not(:last-child){margin-left:calc(-0.5em - 1px);margin-right:.25em}.button .icon:last-child:not(:first-child){margin-left:.25em;margin-right:calc(-0.5em - 1px)}.button .icon:first-child:last-child{margin-left:calc(-0.5em - 1px);margin-right:calc(-0.5em - 1px)}.button:hover,.button.is-hovered{border-color:#b5b5b5;color:#363636}.button:focus,.button.is-focused{border-color:#485fc7;color:#363636}.button:focus:not(:active),.button.is-focused:not(:active){box-shadow:0 0 0 .125em rgba(72,95,199,.25)}.button:active,.button.is-active{border-color:#4a4a4a;color:#363636}.button.is-text{background-color:transparent;border-color:transparent;color:#4a4a4a;text-decoration:underline}.button.is-text:hover,.button.is-text.is-hovered,.button.is-text:focus,.button.is-text.is-focused{background-color:#f5f5f5;color:#363636}.button.is-text:active,.button.is-text.is-active{background-color:#e8e8e8;color:#363636}.button.is-text[disabled],fieldset[disabled] .button.is-text{background-color:transparent;border-color:transparent;box-shadow:none}.button.is-ghost{background:none;border-color:transparent;color:#485fc7;text-decoration:none}.button.is-ghost:hover,.button.is-ghost.is-hovered{color:#485fc7;text-decoration:underline}.button.is-white{background-color:#fff;border-color:transparent;color:#0a0a0a}.button.is-white:hover,.button.is-white.is-hovered{background-color:#f9f9f9;border-color:transparent;color:#0a0a0a}.button.is-white:focus,.button.is-white.is-focused{border-color:transparent;color:#0a0a0a}.button.is-white:focus:not(:active),.button.is-white.is-focused:not(:active){box-shadow:0 0 0 .125em rgba(255,255,255,.25)}.button.is-white:active,.button.is-white.is-active{background-color:#f2f2f2;border-color:transparent;color:#0a0a0a}.button.is-white[disabled],fieldset[disabled] .button.is-white{background-color:#fff;border-color:transparent;box-shadow:none}.button.is-white.is-inverted{background-color:#0a0a0a;color:#fff}.button.is-white.is-inverted:hover,.button.is-white.is-inverted.is-hovered{background-color:#000}.button.is-white.is-inverted[disabled],fieldset[disabled] .button.is-white.is-inverted{background-color:#0a0a0a;border-color:transparent;box-shadow:none;color:#fff}.button.is-white.is-loading::after{border-color:transparent transparent #0a0a0a #0a0a0a !important}.button.is-white.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-white.is-outlined:hover,.button.is-white.is-outlined.is-hovered,.button.is-white.is-outlined:focus,.button.is-white.is-outlined.is-focused{background-color:#fff;border-color:#fff;color:#0a0a0a}.button.is-white.is-outlined.is-loading::after{border-color:transparent transparent #fff #fff !important}.button.is-white.is-outlined.is-loading:hover::after,.button.is-white.is-outlined.is-loading.is-hovered::after,.button.is-white.is-outlined.is-loading:focus::after,.button.is-white.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #0a0a0a #0a0a0a !important}.button.is-white.is-outlined[disabled],fieldset[disabled] .button.is-white.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-white.is-inverted.is-outlined{background-color:transparent;border-color:#0a0a0a;color:#0a0a0a}.button.is-white.is-inverted.is-outlined:hover,.button.is-white.is-inverted.is-outlined.is-hovered,.button.is-white.is-inverted.is-outlined:focus,.button.is-white.is-inverted.is-outlined.is-focused{background-color:#0a0a0a;color:#fff}.button.is-white.is-inverted.is-outlined.is-loading:hover::after,.button.is-white.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-white.is-inverted.is-outlined.is-loading:focus::after,.button.is-white.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}.button.is-white.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-white.is-inverted.is-outlined{background-color:transparent;border-color:#0a0a0a;box-shadow:none;color:#0a0a0a}.button.is-black{background-color:#0a0a0a;border-color:transparent;color:#fff}.button.is-black:hover,.button.is-black.is-hovered{background-color:#040404;border-color:transparent;color:#fff}.button.is-black:focus,.button.is-black.is-focused{border-color:transparent;color:#fff}.button.is-black:focus:not(:active),.button.is-black.is-focused:not(:active){box-shadow:0 0 0 .125em rgba(10,10,10,.25)}.button.is-black:active,.button.is-black.is-active{background-color:#000;border-color:transparent;color:#fff}.button.is-black[disabled],fieldset[disabled] .button.is-black{background-color:#0a0a0a;border-color:transparent;box-shadow:none}.button.is-black.is-inverted{background-color:#fff;color:#0a0a0a}.button.is-black.is-inverted:hover,.button.is-black.is-inverted.is-hovered{background-color:#f2f2f2}.button.is-black.is-inverted[disabled],fieldset[disabled] .button.is-black.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#0a0a0a}.button.is-black.is-loading::after{border-color:transparent transparent #fff #fff !important}.button.is-black.is-outlined{background-color:transparent;border-color:#0a0a0a;color:#0a0a0a}.button.is-black.is-outlined:hover,.button.is-black.is-outlined.is-hovered,.button.is-black.is-outlined:focus,.button.is-black.is-outlined.is-focused{background-color:#0a0a0a;border-color:#0a0a0a;color:#fff}.button.is-black.is-outlined.is-loading::after{border-color:transparent transparent #0a0a0a #0a0a0a !important}.button.is-black.is-outlined.is-loading:hover::after,.button.is-black.is-outlined.is-loading.is-hovered::after,.button.is-black.is-outlined.is-loading:focus::after,.button.is-black.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}.button.is-black.is-outlined[disabled],fieldset[disabled] .button.is-black.is-outlined{background-color:transparent;border-color:#0a0a0a;box-shadow:none;color:#0a0a0a}.button.is-black.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-black.is-inverted.is-outlined:hover,.button.is-black.is-inverted.is-outlined.is-hovered,.button.is-black.is-inverted.is-outlined:focus,.button.is-black.is-inverted.is-outlined.is-focused{background-color:#fff;color:#0a0a0a}.button.is-black.is-inverted.is-outlined.is-loading:hover::after,.button.is-black.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-black.is-inverted.is-outlined.is-loading:focus::after,.button.is-black.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #0a0a0a #0a0a0a !important}.button.is-black.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-black.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-light{background-color:#f5f5f5;border-color:transparent;color:rgba(0,0,0,.7)}.button.is-light:hover,.button.is-light.is-hovered{background-color:#eee;border-color:transparent;color:rgba(0,0,0,.7)}.button.is-light:focus,.button.is-light.is-focused{border-color:transparent;color:rgba(0,0,0,.7)}.button.is-light:focus:not(:active),.button.is-light.is-focused:not(:active){box-shadow:0 0 0 .125em rgba(245,245,245,.25)}.button.is-light:active,.button.is-light.is-active{background-color:#e8e8e8;border-color:transparent;color:rgba(0,0,0,.7)}.button.is-light[disabled],fieldset[disabled] .button.is-light{background-color:#f5f5f5;border-color:transparent;box-shadow:none}.button.is-light.is-inverted{background-color:rgba(0,0,0,.7);color:#f5f5f5}.button.is-light.is-inverted:hover,.button.is-light.is-inverted.is-hovered{background-color:rgba(0,0,0,.7)}.button.is-light.is-inverted[disabled],fieldset[disabled] .button.is-light.is-inverted{background-color:rgba(0,0,0,.7);border-color:transparent;box-shadow:none;color:#f5f5f5}.button.is-light.is-loading::after{border-color:transparent transparent rgba(0,0,0,.7) rgba(0,0,0,.7) !important}.button.is-light.is-outlined{background-color:transparent;border-color:#f5f5f5;color:#f5f5f5}.button.is-light.is-outlined:hover,.button.is-light.is-outlined.is-hovered,.button.is-light.is-outlined:focus,.button.is-light.is-outlined.is-focused{background-color:#f5f5f5;border-color:#f5f5f5;color:rgba(0,0,0,.7)}.button.is-light.is-outlined.is-loading::after{border-color:transparent transparent #f5f5f5 #f5f5f5 !important}.button.is-light.is-outlined.is-loading:hover::after,.button.is-light.is-outlined.is-loading.is-hovered::after,.button.is-light.is-outlined.is-loading:focus::after,.button.is-light.is-outlined.is-loading.is-focused::after{border-color:transparent transparent rgba(0,0,0,.7) rgba(0,0,0,.7) !important}.button.is-light.is-outlined[disabled],fieldset[disabled] .button.is-light.is-outlined{background-color:transparent;border-color:#f5f5f5;box-shadow:none;color:#f5f5f5}.button.is-light.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,.7);color:rgba(0,0,0,.7)}.button.is-light.is-inverted.is-outlined:hover,.button.is-light.is-inverted.is-outlined.is-hovered,.button.is-light.is-inverted.is-outlined:focus,.button.is-light.is-inverted.is-outlined.is-focused{background-color:rgba(0,0,0,.7);color:#f5f5f5}.button.is-light.is-inverted.is-outlined.is-loading:hover::after,.button.is-light.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-light.is-inverted.is-outlined.is-loading:focus::after,.button.is-light.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #f5f5f5 #f5f5f5 !important}.button.is-light.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-light.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,.7);box-shadow:none;color:rgba(0,0,0,.7)}.button.is-dark{background-color:#363636;border-color:transparent;color:#fff}.button.is-dark:hover,.button.is-dark.is-hovered{background-color:#2f2f2f;border-color:transparent;color:#fff}.button.is-dark:focus,.button.is-dark.is-focused{border-color:transparent;color:#fff}.button.is-dark:focus:not(:active),.button.is-dark.is-focused:not(:active){box-shadow:0 0 0 .125em rgba(54,54,54,.25)}.button.is-dark:active,.button.is-dark.is-active{background-color:#292929;border-color:transparent;color:#fff}.button.is-dark[disabled],fieldset[disabled] .button.is-dark{background-color:#363636;border-color:transparent;box-shadow:none}.button.is-dark.is-inverted{background-color:#fff;color:#363636}.button.is-dark.is-inverted:hover,.button.is-dark.is-inverted.is-hovered{background-color:#f2f2f2}.button.is-dark.is-inverted[disabled],fieldset[disabled] .button.is-dark.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#363636}.button.is-dark.is-loading::after{border-color:transparent transparent #fff #fff !important}.button.is-dark.is-outlined{background-color:transparent;border-color:#363636;color:#363636}.button.is-dark.is-outlined:hover,.button.is-dark.is-outlined.is-hovered,.button.is-dark.is-outlined:focus,.button.is-dark.is-outlined.is-focused{background-color:#363636;border-color:#363636;color:#fff}.button.is-dark.is-outlined.is-loading::after{border-color:transparent transparent #363636 #363636 !important}.button.is-dark.is-outlined.is-loading:hover::after,.button.is-dark.is-outlined.is-loading.is-hovered::after,.button.is-dark.is-outlined.is-loading:focus::after,.button.is-dark.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}.button.is-dark.is-outlined[disabled],fieldset[disabled] .button.is-dark.is-outlined{background-color:transparent;border-color:#363636;box-shadow:none;color:#363636}.button.is-dark.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-dark.is-inverted.is-outlined:hover,.button.is-dark.is-inverted.is-outlined.is-hovered,.button.is-dark.is-inverted.is-outlined:focus,.button.is-dark.is-inverted.is-outlined.is-focused{background-color:#fff;color:#363636}.button.is-dark.is-inverted.is-outlined.is-loading:hover::after,.button.is-dark.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-dark.is-inverted.is-outlined.is-loading:focus::after,.button.is-dark.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #363636 #363636 !important}.button.is-dark.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-dark.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-primary{background-color:#00d1b2;border-color:transparent;color:#fff}.button.is-primary:hover,.button.is-primary.is-hovered{background-color:#00c4a7;border-color:transparent;color:#fff}.button.is-primary:focus,.button.is-primary.is-focused{border-color:transparent;color:#fff}.button.is-primary:focus:not(:active),.button.is-primary.is-focused:not(:active){box-shadow:0 0 0 .125em rgba(0,209,178,.25)}.button.is-primary:active,.button.is-primary.is-active{background-color:#00b89c;border-color:transparent;color:#fff}.button.is-primary[disabled],fieldset[disabled] .button.is-primary{background-color:#00d1b2;border-color:transparent;box-shadow:none}.button.is-primary.is-inverted{background-color:#fff;color:#00d1b2}.button.is-primary.is-inverted:hover,.button.is-primary.is-inverted.is-hovered{background-color:#f2f2f2}.button.is-primary.is-inverted[disabled],fieldset[disabled] .button.is-primary.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#00d1b2}.button.is-primary.is-loading::after{border-color:transparent transparent #fff #fff !important}.button.is-primary.is-outlined{background-color:transparent;border-color:#00d1b2;color:#00d1b2}.button.is-primary.is-outlined:hover,.button.is-primary.is-outlined.is-hovered,.button.is-primary.is-outlined:focus,.button.is-primary.is-outlined.is-focused{background-color:#00d1b2;border-color:#00d1b2;color:#fff}.button.is-primary.is-outlined.is-loading::after{border-color:transparent transparent #00d1b2 #00d1b2 !important}.button.is-primary.is-outlined.is-loading:hover::after,.button.is-primary.is-outlined.is-loading.is-hovered::after,.button.is-primary.is-outlined.is-loading:focus::after,.button.is-primary.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}.button.is-primary.is-outlined[disabled],fieldset[disabled] .button.is-primary.is-outlined{background-color:transparent;border-color:#00d1b2;box-shadow:none;color:#00d1b2}.button.is-primary.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-primary.is-inverted.is-outlined:hover,.button.is-primary.is-inverted.is-outlined.is-hovered,.button.is-primary.is-inverted.is-outlined:focus,.button.is-primary.is-inverted.is-outlined.is-focused{background-color:#fff;color:#00d1b2}.button.is-primary.is-inverted.is-outlined.is-loading:hover::after,.button.is-primary.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-primary.is-inverted.is-outlined.is-loading:focus::after,.button.is-primary.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #00d1b2 #00d1b2 !important}.button.is-primary.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-primary.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-primary.is-light{background-color:#ebfffc;color:#00947e}.button.is-primary.is-light:hover,.button.is-primary.is-light.is-hovered{background-color:#defffa;border-color:transparent;color:#00947e}.button.is-primary.is-light:active,.button.is-primary.is-light.is-active{background-color:#d1fff8;border-color:transparent;color:#00947e}.button.is-link{background-color:#485fc7;border-color:transparent;color:#fff}.button.is-link:hover,.button.is-link.is-hovered{background-color:#3e56c4;border-color:transparent;color:#fff}.button.is-link:focus,.button.is-link.is-focused{border-color:transparent;color:#fff}.button.is-link:focus:not(:active),.button.is-link.is-focused:not(:active){box-shadow:0 0 0 .125em rgba(72,95,199,.25)}.button.is-link:active,.button.is-link.is-active{background-color:#3a51bb;border-color:transparent;color:#fff}.button.is-link[disabled],fieldset[disabled] .button.is-link{background-color:#485fc7;border-color:transparent;box-shadow:none}.button.is-link.is-inverted{background-color:#fff;color:#485fc7}.button.is-link.is-inverted:hover,.button.is-link.is-inverted.is-hovered{background-color:#f2f2f2}.button.is-link.is-inverted[disabled],fieldset[disabled] .button.is-link.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#485fc7}.button.is-link.is-loading::after{border-color:transparent transparent #fff #fff !important}.button.is-link.is-outlined{background-color:transparent;border-color:#485fc7;color:#485fc7}.button.is-link.is-outlined:hover,.button.is-link.is-outlined.is-hovered,.button.is-link.is-outlined:focus,.button.is-link.is-outlined.is-focused{background-color:#485fc7;border-color:#485fc7;color:#fff}.button.is-link.is-outlined.is-loading::after{border-color:transparent transparent #485fc7 #485fc7 !important}.button.is-link.is-outlined.is-loading:hover::after,.button.is-link.is-outlined.is-loading.is-hovered::after,.button.is-link.is-outlined.is-loading:focus::after,.button.is-link.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}.button.is-link.is-outlined[disabled],fieldset[disabled] .button.is-link.is-outlined{background-color:transparent;border-color:#485fc7;box-shadow:none;color:#485fc7}.button.is-link.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-link.is-inverted.is-outlined:hover,.button.is-link.is-inverted.is-outlined.is-hovered,.button.is-link.is-inverted.is-outlined:focus,.button.is-link.is-inverted.is-outlined.is-focused{background-color:#fff;color:#485fc7}.button.is-link.is-inverted.is-outlined.is-loading:hover::after,.button.is-link.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-link.is-inverted.is-outlined.is-loading:focus::after,.button.is-link.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #485fc7 #485fc7 !important}.button.is-link.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-link.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-link.is-light{background-color:#eff1fa;color:#3850b7}.button.is-link.is-light:hover,.button.is-link.is-light.is-hovered{background-color:#e6e9f7;border-color:transparent;color:#3850b7}.button.is-link.is-light:active,.button.is-link.is-light.is-active{background-color:#dce0f4;border-color:transparent;color:#3850b7}.button.is-info{background-color:#3e8ed0;border-color:transparent;color:#fff}.button.is-info:hover,.button.is-info.is-hovered{background-color:#3488ce;border-color:transparent;color:#fff}.button.is-info:focus,.button.is-info.is-focused{border-color:transparent;color:#fff}.button.is-info:focus:not(:active),.button.is-info.is-focused:not(:active){box-shadow:0 0 0 .125em rgba(62,142,208,.25)}.button.is-info:active,.button.is-info.is-active{background-color:#3082c5;border-color:transparent;color:#fff}.button.is-info[disabled],fieldset[disabled] .button.is-info{background-color:#3e8ed0;border-color:transparent;box-shadow:none}.button.is-info.is-inverted{background-color:#fff;color:#3e8ed0}.button.is-info.is-inverted:hover,.button.is-info.is-inverted.is-hovered{background-color:#f2f2f2}.button.is-info.is-inverted[disabled],fieldset[disabled] .button.is-info.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#3e8ed0}.button.is-info.is-loading::after{border-color:transparent transparent #fff #fff !important}.button.is-info.is-outlined{background-color:transparent;border-color:#3e8ed0;color:#3e8ed0}.button.is-info.is-outlined:hover,.button.is-info.is-outlined.is-hovered,.button.is-info.is-outlined:focus,.button.is-info.is-outlined.is-focused{background-color:#3e8ed0;border-color:#3e8ed0;color:#fff}.button.is-info.is-outlined.is-loading::after{border-color:transparent transparent #3e8ed0 #3e8ed0 !important}.button.is-info.is-outlined.is-loading:hover::after,.button.is-info.is-outlined.is-loading.is-hovered::after,.button.is-info.is-outlined.is-loading:focus::after,.button.is-info.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}.button.is-info.is-outlined[disabled],fieldset[disabled] .button.is-info.is-outlined{background-color:transparent;border-color:#3e8ed0;box-shadow:none;color:#3e8ed0}.button.is-info.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-info.is-inverted.is-outlined:hover,.button.is-info.is-inverted.is-outlined.is-hovered,.button.is-info.is-inverted.is-outlined:focus,.button.is-info.is-inverted.is-outlined.is-focused{background-color:#fff;color:#3e8ed0}.button.is-info.is-inverted.is-outlined.is-loading:hover::after,.button.is-info.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-info.is-inverted.is-outlined.is-loading:focus::after,.button.is-info.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #3e8ed0 #3e8ed0 !important}.button.is-info.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-info.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-info.is-light{background-color:#eff5fb;color:#296fa8}.button.is-info.is-light:hover,.button.is-info.is-light.is-hovered{background-color:#e4eff9;border-color:transparent;color:#296fa8}.button.is-info.is-light:active,.button.is-info.is-light.is-active{background-color:#dae9f6;border-color:transparent;color:#296fa8}.button.is-success{background-color:#48c78e;border-color:transparent;color:#fff}.button.is-success:hover,.button.is-success.is-hovered{background-color:#3ec487;border-color:transparent;color:#fff}.button.is-success:focus,.button.is-success.is-focused{border-color:transparent;color:#fff}.button.is-success:focus:not(:active),.button.is-success.is-focused:not(:active){box-shadow:0 0 0 .125em rgba(72,199,142,.25)}.button.is-success:active,.button.is-success.is-active{background-color:#3abb81;border-color:transparent;color:#fff}.button.is-success[disabled],fieldset[disabled] .button.is-success{background-color:#48c78e;border-color:transparent;box-shadow:none}.button.is-success.is-inverted{background-color:#fff;color:#48c78e}.button.is-success.is-inverted:hover,.button.is-success.is-inverted.is-hovered{background-color:#f2f2f2}.button.is-success.is-inverted[disabled],fieldset[disabled] .button.is-success.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#48c78e}.button.is-success.is-loading::after{border-color:transparent transparent #fff #fff !important}.button.is-success.is-outlined{background-color:transparent;border-color:#48c78e;color:#48c78e}.button.is-success.is-outlined:hover,.button.is-success.is-outlined.is-hovered,.button.is-success.is-outlined:focus,.button.is-success.is-outlined.is-focused{background-color:#48c78e;border-color:#48c78e;color:#fff}.button.is-success.is-outlined.is-loading::after{border-color:transparent transparent #48c78e #48c78e !important}.button.is-success.is-outlined.is-loading:hover::after,.button.is-success.is-outlined.is-loading.is-hovered::after,.button.is-success.is-outlined.is-loading:focus::after,.button.is-success.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}.button.is-success.is-outlined[disabled],fieldset[disabled] .button.is-success.is-outlined{background-color:transparent;border-color:#48c78e;box-shadow:none;color:#48c78e}.button.is-success.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-success.is-inverted.is-outlined:hover,.button.is-success.is-inverted.is-outlined.is-hovered,.button.is-success.is-inverted.is-outlined:focus,.button.is-success.is-inverted.is-outlined.is-focused{background-color:#fff;color:#48c78e}.button.is-success.is-inverted.is-outlined.is-loading:hover::after,.button.is-success.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-success.is-inverted.is-outlined.is-loading:focus::after,.button.is-success.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #48c78e #48c78e !important}.button.is-success.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-success.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-success.is-light{background-color:#effaf5;color:#257953}.button.is-success.is-light:hover,.button.is-success.is-light.is-hovered{background-color:#e6f7ef;border-color:transparent;color:#257953}.button.is-success.is-light:active,.button.is-success.is-light.is-active{background-color:#dcf4e9;border-color:transparent;color:#257953}.button.is-warning{background-color:#ffe08a;border-color:transparent;color:rgba(0,0,0,.7)}.button.is-warning:hover,.button.is-warning.is-hovered{background-color:#ffdc7d;border-color:transparent;color:rgba(0,0,0,.7)}.button.is-warning:focus,.button.is-warning.is-focused{border-color:transparent;color:rgba(0,0,0,.7)}.button.is-warning:focus:not(:active),.button.is-warning.is-focused:not(:active){box-shadow:0 0 0 .125em rgba(255,224,138,.25)}.button.is-warning:active,.button.is-warning.is-active{background-color:#ffd970;border-color:transparent;color:rgba(0,0,0,.7)}.button.is-warning[disabled],fieldset[disabled] .button.is-warning{background-color:#ffe08a;border-color:transparent;box-shadow:none}.button.is-warning.is-inverted{background-color:rgba(0,0,0,.7);color:#ffe08a}.button.is-warning.is-inverted:hover,.button.is-warning.is-inverted.is-hovered{background-color:rgba(0,0,0,.7)}.button.is-warning.is-inverted[disabled],fieldset[disabled] .button.is-warning.is-inverted{background-color:rgba(0,0,0,.7);border-color:transparent;box-shadow:none;color:#ffe08a}.button.is-warning.is-loading::after{border-color:transparent transparent rgba(0,0,0,.7) rgba(0,0,0,.7) !important}.button.is-warning.is-outlined{background-color:transparent;border-color:#ffe08a;color:#ffe08a}.button.is-warning.is-outlined:hover,.button.is-warning.is-outlined.is-hovered,.button.is-warning.is-outlined:focus,.button.is-warning.is-outlined.is-focused{background-color:#ffe08a;border-color:#ffe08a;color:rgba(0,0,0,.7)}.button.is-warning.is-outlined.is-loading::after{border-color:transparent transparent #ffe08a #ffe08a !important}.button.is-warning.is-outlined.is-loading:hover::after,.button.is-warning.is-outlined.is-loading.is-hovered::after,.button.is-warning.is-outlined.is-loading:focus::after,.button.is-warning.is-outlined.is-loading.is-focused::after{border-color:transparent transparent rgba(0,0,0,.7) rgba(0,0,0,.7) !important}.button.is-warning.is-outlined[disabled],fieldset[disabled] .button.is-warning.is-outlined{background-color:transparent;border-color:#ffe08a;box-shadow:none;color:#ffe08a}.button.is-warning.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,.7);color:rgba(0,0,0,.7)}.button.is-warning.is-inverted.is-outlined:hover,.button.is-warning.is-inverted.is-outlined.is-hovered,.button.is-warning.is-inverted.is-outlined:focus,.button.is-warning.is-inverted.is-outlined.is-focused{background-color:rgba(0,0,0,.7);color:#ffe08a}.button.is-warning.is-inverted.is-outlined.is-loading:hover::after,.button.is-warning.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-warning.is-inverted.is-outlined.is-loading:focus::after,.button.is-warning.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #ffe08a #ffe08a !important}.button.is-warning.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-warning.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,.7);box-shadow:none;color:rgba(0,0,0,.7)}.button.is-warning.is-light{background-color:#fffaeb;color:#946c00}.button.is-warning.is-light:hover,.button.is-warning.is-light.is-hovered{background-color:#fff6de;border-color:transparent;color:#946c00}.button.is-warning.is-light:active,.button.is-warning.is-light.is-active{background-color:#fff3d1;border-color:transparent;color:#946c00}.button.is-danger{background-color:#f14668;border-color:transparent;color:#fff}.button.is-danger:hover,.button.is-danger.is-hovered{background-color:#f03a5f;border-color:transparent;color:#fff}.button.is-danger:focus,.button.is-danger.is-focused{border-color:transparent;color:#fff}.button.is-danger:focus:not(:active),.button.is-danger.is-focused:not(:active){box-shadow:0 0 0 .125em rgba(241,70,104,.25)}.button.is-danger:active,.button.is-danger.is-active{background-color:#ef2e55;border-color:transparent;color:#fff}.button.is-danger[disabled],fieldset[disabled] .button.is-danger{background-color:#f14668;border-color:transparent;box-shadow:none}.button.is-danger.is-inverted{background-color:#fff;color:#f14668}.button.is-danger.is-inverted:hover,.button.is-danger.is-inverted.is-hovered{background-color:#f2f2f2}.button.is-danger.is-inverted[disabled],fieldset[disabled] .button.is-danger.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#f14668}.button.is-danger.is-loading::after{border-color:transparent transparent #fff #fff !important}.button.is-danger.is-outlined{background-color:transparent;border-color:#f14668;color:#f14668}.button.is-danger.is-outlined:hover,.button.is-danger.is-outlined.is-hovered,.button.is-danger.is-outlined:focus,.button.is-danger.is-outlined.is-focused{background-color:#f14668;border-color:#f14668;color:#fff}.button.is-danger.is-outlined.is-loading::after{border-color:transparent transparent #f14668 #f14668 !important}.button.is-danger.is-outlined.is-loading:hover::after,.button.is-danger.is-outlined.is-loading.is-hovered::after,.button.is-danger.is-outlined.is-loading:focus::after,.button.is-danger.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}.button.is-danger.is-outlined[disabled],fieldset[disabled] .button.is-danger.is-outlined{background-color:transparent;border-color:#f14668;box-shadow:none;color:#f14668}.button.is-danger.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-danger.is-inverted.is-outlined:hover,.button.is-danger.is-inverted.is-outlined.is-hovered,.button.is-danger.is-inverted.is-outlined:focus,.button.is-danger.is-inverted.is-outlined.is-focused{background-color:#fff;color:#f14668}.button.is-danger.is-inverted.is-outlined.is-loading:hover::after,.button.is-danger.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-danger.is-inverted.is-outlined.is-loading:focus::after,.button.is-danger.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #f14668 #f14668 !important}.button.is-danger.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-danger.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-danger.is-light{background-color:#feecf0;color:#cc0f35}.button.is-danger.is-light:hover,.button.is-danger.is-light.is-hovered{background-color:#fde0e6;border-color:transparent;color:#cc0f35}.button.is-danger.is-light:active,.button.is-danger.is-light.is-active{background-color:#fcd4dc;border-color:transparent;color:#cc0f35}.button.is-small{font-size:.75rem}.button.is-small:not(.is-rounded){border-radius:2px}.button.is-normal{font-size:1rem}.button.is-medium{font-size:1.25rem}.button.is-large{font-size:1.5rem}.button[disabled],fieldset[disabled] .button{background-color:#fff;border-color:#dbdbdb;box-shadow:none;opacity:.5}.button.is-fullwidth{display:flex;width:100%}.button.is-loading{color:transparent !important;pointer-events:none}.button.is-loading::after{position:absolute;left:calc(50% - (1em * 0.5));top:calc(50% - (1em * 0.5));position:absolute !important}.button.is-static{background-color:#f5f5f5;border-color:#dbdbdb;color:#7a7a7a;box-shadow:none;pointer-events:none}.button.is-rounded{border-radius:9999px;padding-left:calc(1em + 0.25em);padding-right:calc(1em + 0.25em)}.buttons{align-items:center;display:flex;flex-wrap:wrap;justify-content:flex-start}.buttons .button{margin-bottom:.5rem}.buttons .button:not(:last-child):not(.is-fullwidth){margin-right:.5rem}.buttons:last-child{margin-bottom:-0.5rem}.buttons:not(:last-child){margin-bottom:1rem}.buttons.are-small .button:not(.is-normal):not(.is-medium):not(.is-large){font-size:.75rem}.buttons.are-small .button:not(.is-normal):not(.is-medium):not(.is-large):not(.is-rounded){border-radius:2px}.buttons.are-medium .button:not(.is-small):not(.is-normal):not(.is-large){font-size:1.25rem}.buttons.are-large .button:not(.is-small):not(.is-normal):not(.is-medium){font-size:1.5rem}.buttons.has-addons .button:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.buttons.has-addons .button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0;margin-right:-1px}.buttons.has-addons .button:last-child{margin-right:0}.buttons.has-addons .button:hover,.buttons.has-addons .button.is-hovered{z-index:2}.buttons.has-addons .button:focus,.buttons.has-addons .button.is-focused,.buttons.has-addons .button:active,.buttons.has-addons .button.is-active,.buttons.has-addons .button.is-selected{z-index:3}.buttons.has-addons .button:focus:hover,.buttons.has-addons .button.is-focused:hover,.buttons.has-addons .button:active:hover,.buttons.has-addons .button.is-active:hover,.buttons.has-addons .button.is-selected:hover{z-index:4}.buttons.has-addons .button.is-expanded{flex-grow:1;flex-shrink:1}.buttons.is-centered{justify-content:center}.buttons.is-centered:not(.has-addons) .button:not(.is-fullwidth){margin-left:.25rem;margin-right:.25rem}.buttons.is-right{justify-content:flex-end}.buttons.is-right:not(.has-addons) .button:not(.is-fullwidth){margin-left:.25rem;margin-right:.25rem}.container{flex-grow:1;margin:0 auto;position:relative;width:auto}.container.is-fluid{max-width:none !important;padding-left:32px;padding-right:32px;width:100%}@media screen and (min-width: 1024px){.container{max-width:960px}}@media screen and (max-width: 1215px){.container.is-widescreen:not(.is-max-desktop){max-width:1152px}}@media screen and (max-width: 1407px){.container.is-fullhd:not(.is-max-desktop):not(.is-max-widescreen){max-width:1344px}}@media screen and (min-width: 1216px){.container:not(.is-max-desktop){max-width:1152px}}@media screen and (min-width: 1408px){.container:not(.is-max-desktop):not(.is-max-widescreen){max-width:1344px}}.content li+li{margin-top:.25em}.content p:not(:last-child),.content dl:not(:last-child),.content ol:not(:last-child),.content ul:not(:last-child),.content blockquote:not(:last-child),.content pre:not(:last-child),.content table:not(:last-child){margin-bottom:1em}.content h1,.content h2,.content h3,.content h4,.content h5,.content h6{color:#363636;font-weight:600;line-height:1.125}.content h1{font-size:2em;margin-bottom:.5em}.content h1:not(:first-child){margin-top:1em}.content h2{font-size:1.75em;margin-bottom:.5714em}.content h2:not(:first-child){margin-top:1.1428em}.content h3{font-size:1.5em;margin-bottom:.6666em}.content h3:not(:first-child){margin-top:1.3333em}.content h4{font-size:1.25em;margin-bottom:.8em}.content h5{font-size:1.125em;margin-bottom:.8888em}.content h6{font-size:1em;margin-bottom:1em}.content blockquote{background-color:#f5f5f5;border-left:5px solid #dbdbdb;padding:1.25em 1.5em}.content ol{list-style-position:outside;margin-left:2em;margin-top:1em}.content ol:not([type]){list-style-type:decimal}.content ol:not([type]).is-lower-alpha{list-style-type:lower-alpha}.content ol:not([type]).is-lower-roman{list-style-type:lower-roman}.content ol:not([type]).is-upper-alpha{list-style-type:upper-alpha}.content ol:not([type]).is-upper-roman{list-style-type:upper-roman}.content ul{list-style:disc outside;margin-left:2em;margin-top:1em}.content ul ul{list-style-type:circle;margin-top:.5em}.content ul ul ul{list-style-type:square}.content dd{margin-left:2em}.content figure{margin-left:2em;margin-right:2em;text-align:center}.content figure:not(:first-child){margin-top:2em}.content figure:not(:last-child){margin-bottom:2em}.content figure img{display:inline-block}.content figure figcaption{font-style:italic}.content pre{-webkit-overflow-scrolling:touch;overflow-x:auto;padding:1.25em 1.5em;white-space:pre;word-wrap:normal}.content sup,.content sub{font-size:75%}.content table{width:100%}.content table td,.content table th{border:1px solid #dbdbdb;border-width:0 0 1px;padding:.5em .75em;vertical-align:top}.content table th{color:#363636}.content table th:not([align]){text-align:inherit}.content table thead td,.content table thead th{border-width:0 0 2px;color:#363636}.content table tfoot td,.content table tfoot th{border-width:2px 0 0;color:#363636}.content table tbody tr:last-child td,.content table tbody tr:last-child th{border-bottom-width:0}.content .tabs li+li{margin-top:0}.content.is-small{font-size:.75rem}.content.is-normal{font-size:1rem}.content.is-medium{font-size:1.25rem}.content.is-large{font-size:1.5rem}.icon{align-items:center;display:inline-flex;justify-content:center;height:1.5rem;width:1.5rem}.icon.is-small{height:1rem;width:1rem}.icon.is-medium{height:2rem;width:2rem}.icon.is-large{height:3rem;width:3rem}.icon-text{align-items:flex-start;color:inherit;display:inline-flex;flex-wrap:wrap;line-height:1.5rem;vertical-align:top}.icon-text .icon{flex-grow:0;flex-shrink:0}.icon-text .icon:not(:last-child){margin-right:.25em}.icon-text .icon:not(:first-child){margin-left:.25em}div.icon-text{display:flex}.image{display:block;position:relative}.image img{display:block;height:auto;width:100%}.image img.is-rounded{border-radius:9999px}.image.is-fullwidth{width:100%}.image.is-square img,.image.is-square .has-ratio,.image.is-1by1 img,.image.is-1by1 .has-ratio,.image.is-5by4 img,.image.is-5by4 .has-ratio,.image.is-4by3 img,.image.is-4by3 .has-ratio,.image.is-3by2 img,.image.is-3by2 .has-ratio,.image.is-5by3 img,.image.is-5by3 .has-ratio,.image.is-16by9 img,.image.is-16by9 .has-ratio,.image.is-2by1 img,.image.is-2by1 .has-ratio,.image.is-3by1 img,.image.is-3by1 .has-ratio,.image.is-4by5 img,.image.is-4by5 .has-ratio,.image.is-3by4 img,.image.is-3by4 .has-ratio,.image.is-2by3 img,.image.is-2by3 .has-ratio,.image.is-3by5 img,.image.is-3by5 .has-ratio,.image.is-9by16 img,.image.is-9by16 .has-ratio,.image.is-1by2 img,.image.is-1by2 .has-ratio,.image.is-1by3 img,.image.is-1by3 .has-ratio{height:100%;width:100%}.image.is-square,.image.is-1by1{padding-top:100%}.image.is-5by4{padding-top:80%}.image.is-4by3{padding-top:75%}.image.is-3by2{padding-top:66.6666%}.image.is-5by3{padding-top:60%}.image.is-16by9{padding-top:56.25%}.image.is-2by1{padding-top:50%}.image.is-3by1{padding-top:33.3333%}.image.is-4by5{padding-top:125%}.image.is-3by4{padding-top:133.3333%}.image.is-2by3{padding-top:150%}.image.is-3by5{padding-top:166.6666%}.image.is-9by16{padding-top:177.7777%}.image.is-1by2{padding-top:200%}.image.is-1by3{padding-top:300%}.image.is-16x16{height:16px;width:16px}.image.is-24x24{height:24px;width:24px}.image.is-32x32{height:32px;width:32px}.image.is-48x48{height:48px;width:48px}.image.is-64x64{height:64px;width:64px}.image.is-96x96{height:96px;width:96px}.image.is-128x128{height:128px;width:128px}.notification{background-color:#f5f5f5;border-radius:4px;position:relative;padding:1.25rem 2.5rem 1.25rem 1.5rem}.notification a:not(.button):not(.dropdown-item){color:currentColor;text-decoration:underline}.notification strong{color:currentColor}.notification code,.notification pre{background:#fff}.notification pre code{background:transparent}.notification>.delete{right:.5rem;position:absolute;top:.5rem}.notification .title,.notification .subtitle,.notification .content{color:currentColor}.notification.is-white{background-color:#fff;color:#0a0a0a}.notification.is-black{background-color:#0a0a0a;color:#fff}.notification.is-light{background-color:#f5f5f5;color:rgba(0,0,0,.7)}.notification.is-dark{background-color:#363636;color:#fff}.notification.is-primary{background-color:#00d1b2;color:#fff}.notification.is-primary.is-light{background-color:#ebfffc;color:#00947e}.notification.is-link{background-color:#485fc7;color:#fff}.notification.is-link.is-light{background-color:#eff1fa;color:#3850b7}.notification.is-info{background-color:#3e8ed0;color:#fff}.notification.is-info.is-light{background-color:#eff5fb;color:#296fa8}.notification.is-success{background-color:#48c78e;color:#fff}.notification.is-success.is-light{background-color:#effaf5;color:#257953}.notification.is-warning{background-color:#ffe08a;color:rgba(0,0,0,.7)}.notification.is-warning.is-light{background-color:#fffaeb;color:#946c00}.notification.is-danger{background-color:#f14668;color:#fff}.notification.is-danger.is-light{background-color:#feecf0;color:#cc0f35}.progress{-moz-appearance:none;-webkit-appearance:none;border:none;border-radius:9999px;display:block;height:1rem;overflow:hidden;padding:0;width:100%}.progress::-webkit-progress-bar{background-color:#ededed}.progress::-webkit-progress-value{background-color:#4a4a4a}.progress::-moz-progress-bar{background-color:#4a4a4a}.progress::-ms-fill{background-color:#4a4a4a;border:none}.progress.is-white::-webkit-progress-value{background-color:#fff}.progress.is-white::-moz-progress-bar{background-color:#fff}.progress.is-white::-ms-fill{background-color:#fff}.progress.is-white:indeterminate{background-image:linear-gradient(to right, white 30%, #ededed 30%)}.progress.is-black::-webkit-progress-value{background-color:#0a0a0a}.progress.is-black::-moz-progress-bar{background-color:#0a0a0a}.progress.is-black::-ms-fill{background-color:#0a0a0a}.progress.is-black:indeterminate{background-image:linear-gradient(to right, #0a0a0a 30%, #ededed 30%)}.progress.is-light::-webkit-progress-value{background-color:#f5f5f5}.progress.is-light::-moz-progress-bar{background-color:#f5f5f5}.progress.is-light::-ms-fill{background-color:#f5f5f5}.progress.is-light:indeterminate{background-image:linear-gradient(to right, whitesmoke 30%, #ededed 30%)}.progress.is-dark::-webkit-progress-value{background-color:#363636}.progress.is-dark::-moz-progress-bar{background-color:#363636}.progress.is-dark::-ms-fill{background-color:#363636}.progress.is-dark:indeterminate{background-image:linear-gradient(to right, #363636 30%, #ededed 30%)}.progress.is-primary::-webkit-progress-value{background-color:#00d1b2}.progress.is-primary::-moz-progress-bar{background-color:#00d1b2}.progress.is-primary::-ms-fill{background-color:#00d1b2}.progress.is-primary:indeterminate{background-image:linear-gradient(to right, #00d1b2 30%, #ededed 30%)}.progress.is-link::-webkit-progress-value{background-color:#485fc7}.progress.is-link::-moz-progress-bar{background-color:#485fc7}.progress.is-link::-ms-fill{background-color:#485fc7}.progress.is-link:indeterminate{background-image:linear-gradient(to right, #485fc7 30%, #ededed 30%)}.progress.is-info::-webkit-progress-value{background-color:#3e8ed0}.progress.is-info::-moz-progress-bar{background-color:#3e8ed0}.progress.is-info::-ms-fill{background-color:#3e8ed0}.progress.is-info:indeterminate{background-image:linear-gradient(to right, #3e8ed0 30%, #ededed 30%)}.progress.is-success::-webkit-progress-value{background-color:#48c78e}.progress.is-success::-moz-progress-bar{background-color:#48c78e}.progress.is-success::-ms-fill{background-color:#48c78e}.progress.is-success:indeterminate{background-image:linear-gradient(to right, #48c78e 30%, #ededed 30%)}.progress.is-warning::-webkit-progress-value{background-color:#ffe08a}.progress.is-warning::-moz-progress-bar{background-color:#ffe08a}.progress.is-warning::-ms-fill{background-color:#ffe08a}.progress.is-warning:indeterminate{background-image:linear-gradient(to right, #ffe08a 30%, #ededed 30%)}.progress.is-danger::-webkit-progress-value{background-color:#f14668}.progress.is-danger::-moz-progress-bar{background-color:#f14668}.progress.is-danger::-ms-fill{background-color:#f14668}.progress.is-danger:indeterminate{background-image:linear-gradient(to right, #f14668 30%, #ededed 30%)}.progress:indeterminate{animation-duration:1.5s;animation-iteration-count:infinite;animation-name:moveIndeterminate;animation-timing-function:linear;background-color:#ededed;background-image:linear-gradient(to right, #4a4a4a 30%, #ededed 30%);background-position:top left;background-repeat:no-repeat;background-size:150% 150%}.progress:indeterminate::-webkit-progress-bar{background-color:transparent}.progress:indeterminate::-moz-progress-bar{background-color:transparent}.progress:indeterminate::-ms-fill{animation-name:none}.progress.is-small{height:.75rem}.progress.is-medium{height:1.25rem}.progress.is-large{height:1.5rem}@keyframes moveIndeterminate{from{background-position:200% 0}to{background-position:-200% 0}}.table{background-color:#fff;color:#363636}.table td,.table th{border:1px solid #dbdbdb;border-width:0 0 1px;padding:.5em .75em;vertical-align:top}.table td.is-white,.table th.is-white{background-color:#fff;border-color:#fff;color:#0a0a0a}.table td.is-black,.table th.is-black{background-color:#0a0a0a;border-color:#0a0a0a;color:#fff}.table td.is-light,.table th.is-light{background-color:#f5f5f5;border-color:#f5f5f5;color:rgba(0,0,0,.7)}.table td.is-dark,.table th.is-dark{background-color:#363636;border-color:#363636;color:#fff}.table td.is-primary,.table th.is-primary{background-color:#00d1b2;border-color:#00d1b2;color:#fff}.table td.is-link,.table th.is-link{background-color:#485fc7;border-color:#485fc7;color:#fff}.table td.is-info,.table th.is-info{background-color:#3e8ed0;border-color:#3e8ed0;color:#fff}.table td.is-success,.table th.is-success{background-color:#48c78e;border-color:#48c78e;color:#fff}.table td.is-warning,.table th.is-warning{background-color:#ffe08a;border-color:#ffe08a;color:rgba(0,0,0,.7)}.table td.is-danger,.table th.is-danger{background-color:#f14668;border-color:#f14668;color:#fff}.table td.is-narrow,.table th.is-narrow{white-space:nowrap;width:1%}.table td.is-selected,.table th.is-selected{background-color:#00d1b2;color:#fff}.table td.is-selected a,.table td.is-selected strong,.table th.is-selected a,.table th.is-selected strong{color:currentColor}.table td.is-vcentered,.table th.is-vcentered{vertical-align:middle}.table th{color:#363636}.table th:not([align]){text-align:inherit}.table tr.is-selected{background-color:#00d1b2;color:#fff}.table tr.is-selected a,.table tr.is-selected strong{color:currentColor}.table tr.is-selected td,.table tr.is-selected th{border-color:#fff;color:currentColor}.table thead{background-color:transparent}.table thead td,.table thead th{border-width:0 0 2px;color:#363636}.table tfoot{background-color:transparent}.table tfoot td,.table tfoot th{border-width:2px 0 0;color:#363636}.table tbody{background-color:transparent}.table tbody tr:last-child td,.table tbody tr:last-child th{border-bottom-width:0}.table.is-bordered td,.table.is-bordered th{border-width:1px}.table.is-bordered tr:last-child td,.table.is-bordered tr:last-child th{border-bottom-width:1px}.table.is-fullwidth{width:100%}.table.is-hoverable tbody tr:not(.is-selected):hover{background-color:#fafafa}.table.is-hoverable.is-striped tbody tr:not(.is-selected):hover{background-color:#fafafa}.table.is-hoverable.is-striped tbody tr:not(.is-selected):hover:nth-child(even){background-color:#f5f5f5}.table.is-narrow td,.table.is-narrow th{padding:.25em .5em}.table.is-striped tbody tr:not(.is-selected):nth-child(even){background-color:#fafafa}.table-container{-webkit-overflow-scrolling:touch;overflow:auto;overflow-y:hidden;max-width:100%}.tags{align-items:center;display:flex;flex-wrap:wrap;justify-content:flex-start}.tags .tag{margin-bottom:.5rem}.tags .tag:not(:last-child){margin-right:.5rem}.tags:last-child{margin-bottom:-0.5rem}.tags:not(:last-child){margin-bottom:1rem}.tags.are-medium .tag:not(.is-normal):not(.is-large){font-size:1rem}.tags.are-large .tag:not(.is-normal):not(.is-medium){font-size:1.25rem}.tags.is-centered{justify-content:center}.tags.is-centered .tag{margin-right:.25rem;margin-left:.25rem}.tags.is-right{justify-content:flex-end}.tags.is-right .tag:not(:first-child){margin-left:.5rem}.tags.is-right .tag:not(:last-child){margin-right:0}.tags.has-addons .tag{margin-right:0}.tags.has-addons .tag:not(:first-child){margin-left:0;border-top-left-radius:0;border-bottom-left-radius:0}.tags.has-addons .tag:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.tag:not(body){align-items:center;background-color:#f5f5f5;border-radius:4px;color:#4a4a4a;display:inline-flex;font-size:.75rem;height:2em;justify-content:center;line-height:1.5;padding-left:.75em;padding-right:.75em;white-space:nowrap}.tag:not(body) .delete{margin-left:.25rem;margin-right:-0.375rem}.tag:not(body).is-white{background-color:#fff;color:#0a0a0a}.tag:not(body).is-black{background-color:#0a0a0a;color:#fff}.tag:not(body).is-light{background-color:#f5f5f5;color:rgba(0,0,0,.7)}.tag:not(body).is-dark{background-color:#363636;color:#fff}.tag:not(body).is-primary{background-color:#00d1b2;color:#fff}.tag:not(body).is-primary.is-light{background-color:#ebfffc;color:#00947e}.tag:not(body).is-link{background-color:#485fc7;color:#fff}.tag:not(body).is-link.is-light{background-color:#eff1fa;color:#3850b7}.tag:not(body).is-info{background-color:#3e8ed0;color:#fff}.tag:not(body).is-info.is-light{background-color:#eff5fb;color:#296fa8}.tag:not(body).is-success{background-color:#48c78e;color:#fff}.tag:not(body).is-success.is-light{background-color:#effaf5;color:#257953}.tag:not(body).is-warning{background-color:#ffe08a;color:rgba(0,0,0,.7)}.tag:not(body).is-warning.is-light{background-color:#fffaeb;color:#946c00}.tag:not(body).is-danger{background-color:#f14668;color:#fff}.tag:not(body).is-danger.is-light{background-color:#feecf0;color:#cc0f35}.tag:not(body).is-normal{font-size:.75rem}.tag:not(body).is-medium{font-size:1rem}.tag:not(body).is-large{font-size:1.25rem}.tag:not(body) .icon:first-child:not(:last-child){margin-left:-0.375em;margin-right:.1875em}.tag:not(body) .icon:last-child:not(:first-child){margin-left:.1875em;margin-right:-0.375em}.tag:not(body) .icon:first-child:last-child{margin-left:-0.375em;margin-right:-0.375em}.tag:not(body).is-delete{margin-left:1px;padding:0;position:relative;width:2em}.tag:not(body).is-delete::before,.tag:not(body).is-delete::after{background-color:currentColor;content:\\\"\\\";display:block;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%) rotate(45deg);transform-origin:center center}.tag:not(body).is-delete::before{height:1px;width:50%}.tag:not(body).is-delete::after{height:50%;width:1px}.tag:not(body).is-delete:hover,.tag:not(body).is-delete:focus{background-color:#e8e8e8}.tag:not(body).is-delete:active{background-color:#dbdbdb}.tag:not(body).is-rounded{border-radius:9999px}a.tag:hover{text-decoration:underline}.title,.subtitle{word-break:break-word}.title em,.title span,.subtitle em,.subtitle span{font-weight:inherit}.title sub,.subtitle sub{font-size:.75em}.title sup,.subtitle sup{font-size:.75em}.title .tag,.subtitle .tag{vertical-align:middle}.title{color:#363636;font-size:2rem;font-weight:600;line-height:1.125}.title strong{color:inherit;font-weight:inherit}.title:not(.is-spaced)+.subtitle{margin-top:-1.25rem}.title.is-1{font-size:3rem}.title.is-2{font-size:2.5rem}.title.is-3{font-size:2rem}.title.is-4{font-size:1.5rem}.title.is-5{font-size:1.25rem}.title.is-6{font-size:1rem}.title.is-7{font-size:.75rem}.subtitle{color:#4a4a4a;font-size:1.25rem;font-weight:400;line-height:1.25}.subtitle strong{color:#363636;font-weight:600}.subtitle:not(.is-spaced)+.title{margin-top:-1.25rem}.subtitle.is-1{font-size:3rem}.subtitle.is-2{font-size:2.5rem}.subtitle.is-3{font-size:2rem}.subtitle.is-4{font-size:1.5rem}.subtitle.is-5{font-size:1.25rem}.subtitle.is-6{font-size:1rem}.subtitle.is-7{font-size:.75rem}.heading{display:block;font-size:11px;letter-spacing:1px;margin-bottom:5px;text-transform:uppercase}.number{align-items:center;background-color:#f5f5f5;border-radius:9999px;display:inline-flex;font-size:1.25rem;height:2em;justify-content:center;margin-right:1.5rem;min-width:2.5em;padding:.25rem .5rem;text-align:center;vertical-align:top}.select select,.textarea,.input{background-color:#fff;border-color:#dbdbdb;border-radius:4px;color:#363636}.select select::-moz-placeholder,.textarea::-moz-placeholder,.input::-moz-placeholder{color:rgba(54,54,54,.3)}.select select::-webkit-input-placeholder,.textarea::-webkit-input-placeholder,.input::-webkit-input-placeholder{color:rgba(54,54,54,.3)}.select select:-moz-placeholder,.textarea:-moz-placeholder,.input:-moz-placeholder{color:rgba(54,54,54,.3)}.select select:-ms-input-placeholder,.textarea:-ms-input-placeholder,.input:-ms-input-placeholder{color:rgba(54,54,54,.3)}.select select:hover,.textarea:hover,.input:hover,.select select.is-hovered,.is-hovered.textarea,.is-hovered.input{border-color:#b5b5b5}.select select:focus,.textarea:focus,.input:focus,.select select.is-focused,.is-focused.textarea,.is-focused.input,.select select:active,.textarea:active,.input:active,.select select.is-active,.is-active.textarea,.is-active.input{border-color:#485fc7;box-shadow:0 0 0 .125em rgba(72,95,199,.25)}.select select[disabled],[disabled].textarea,[disabled].input,fieldset[disabled] .select select,.select fieldset[disabled] select,fieldset[disabled] .textarea,fieldset[disabled] .input{background-color:#f5f5f5;border-color:#f5f5f5;box-shadow:none;color:#7a7a7a}.select select[disabled]::-moz-placeholder,[disabled].textarea::-moz-placeholder,[disabled].input::-moz-placeholder,fieldset[disabled] .select select::-moz-placeholder,.select fieldset[disabled] select::-moz-placeholder,fieldset[disabled] .textarea::-moz-placeholder,fieldset[disabled] .input::-moz-placeholder{color:rgba(122,122,122,.3)}.select select[disabled]::-webkit-input-placeholder,[disabled].textarea::-webkit-input-placeholder,[disabled].input::-webkit-input-placeholder,fieldset[disabled] .select select::-webkit-input-placeholder,.select fieldset[disabled] select::-webkit-input-placeholder,fieldset[disabled] .textarea::-webkit-input-placeholder,fieldset[disabled] .input::-webkit-input-placeholder{color:rgba(122,122,122,.3)}.select select[disabled]:-moz-placeholder,[disabled].textarea:-moz-placeholder,[disabled].input:-moz-placeholder,fieldset[disabled] .select select:-moz-placeholder,.select fieldset[disabled] select:-moz-placeholder,fieldset[disabled] .textarea:-moz-placeholder,fieldset[disabled] .input:-moz-placeholder{color:rgba(122,122,122,.3)}.select select[disabled]:-ms-input-placeholder,[disabled].textarea:-ms-input-placeholder,[disabled].input:-ms-input-placeholder,fieldset[disabled] .select select:-ms-input-placeholder,.select fieldset[disabled] select:-ms-input-placeholder,fieldset[disabled] .textarea:-ms-input-placeholder,fieldset[disabled] .input:-ms-input-placeholder{color:rgba(122,122,122,.3)}.textarea,.input{box-shadow:inset 0 .0625em .125em rgba(10,10,10,.05);max-width:100%;width:100%}[readonly].textarea,[readonly].input{box-shadow:none}.is-white.textarea,.is-white.input{border-color:#fff}.is-white.textarea:focus,.is-white.input:focus,.is-white.is-focused.textarea,.is-white.is-focused.input,.is-white.textarea:active,.is-white.input:active,.is-white.is-active.textarea,.is-white.is-active.input{box-shadow:0 0 0 .125em rgba(255,255,255,.25)}.is-black.textarea,.is-black.input{border-color:#0a0a0a}.is-black.textarea:focus,.is-black.input:focus,.is-black.is-focused.textarea,.is-black.is-focused.input,.is-black.textarea:active,.is-black.input:active,.is-black.is-active.textarea,.is-black.is-active.input{box-shadow:0 0 0 .125em rgba(10,10,10,.25)}.is-light.textarea,.is-light.input{border-color:#f5f5f5}.is-light.textarea:focus,.is-light.input:focus,.is-light.is-focused.textarea,.is-light.is-focused.input,.is-light.textarea:active,.is-light.input:active,.is-light.is-active.textarea,.is-light.is-active.input{box-shadow:0 0 0 .125em rgba(245,245,245,.25)}.is-dark.textarea,.is-dark.input{border-color:#363636}.is-dark.textarea:focus,.is-dark.input:focus,.is-dark.is-focused.textarea,.is-dark.is-focused.input,.is-dark.textarea:active,.is-dark.input:active,.is-dark.is-active.textarea,.is-dark.is-active.input{box-shadow:0 0 0 .125em rgba(54,54,54,.25)}.is-primary.textarea,.is-primary.input{border-color:#00d1b2}.is-primary.textarea:focus,.is-primary.input:focus,.is-primary.is-focused.textarea,.is-primary.is-focused.input,.is-primary.textarea:active,.is-primary.input:active,.is-primary.is-active.textarea,.is-primary.is-active.input{box-shadow:0 0 0 .125em rgba(0,209,178,.25)}.is-link.textarea,.is-link.input{border-color:#485fc7}.is-link.textarea:focus,.is-link.input:focus,.is-link.is-focused.textarea,.is-link.is-focused.input,.is-link.textarea:active,.is-link.input:active,.is-link.is-active.textarea,.is-link.is-active.input{box-shadow:0 0 0 .125em rgba(72,95,199,.25)}.is-info.textarea,.is-info.input{border-color:#3e8ed0}.is-info.textarea:focus,.is-info.input:focus,.is-info.is-focused.textarea,.is-info.is-focused.input,.is-info.textarea:active,.is-info.input:active,.is-info.is-active.textarea,.is-info.is-active.input{box-shadow:0 0 0 .125em rgba(62,142,208,.25)}.is-success.textarea,.is-success.input{border-color:#48c78e}.is-success.textarea:focus,.is-success.input:focus,.is-success.is-focused.textarea,.is-success.is-focused.input,.is-success.textarea:active,.is-success.input:active,.is-success.is-active.textarea,.is-success.is-active.input{box-shadow:0 0 0 .125em rgba(72,199,142,.25)}.is-warning.textarea,.is-warning.input{border-color:#ffe08a}.is-warning.textarea:focus,.is-warning.input:focus,.is-warning.is-focused.textarea,.is-warning.is-focused.input,.is-warning.textarea:active,.is-warning.input:active,.is-warning.is-active.textarea,.is-warning.is-active.input{box-shadow:0 0 0 .125em rgba(255,224,138,.25)}.is-danger.textarea,.is-danger.input{border-color:#f14668}.is-danger.textarea:focus,.is-danger.input:focus,.is-danger.is-focused.textarea,.is-danger.is-focused.input,.is-danger.textarea:active,.is-danger.input:active,.is-danger.is-active.textarea,.is-danger.is-active.input{box-shadow:0 0 0 .125em rgba(241,70,104,.25)}.is-small.textarea,.is-small.input{border-radius:2px;font-size:.75rem}.is-medium.textarea,.is-medium.input{font-size:1.25rem}.is-large.textarea,.is-large.input{font-size:1.5rem}.is-fullwidth.textarea,.is-fullwidth.input{display:block;width:100%}.is-inline.textarea,.is-inline.input{display:inline;width:auto}.input.is-rounded{border-radius:9999px;padding-left:calc(calc(0.75em - 1px) + 0.375em);padding-right:calc(calc(0.75em - 1px) + 0.375em)}.input.is-static{background-color:transparent;border-color:transparent;box-shadow:none;padding-left:0;padding-right:0}.textarea{display:block;max-width:100%;min-width:100%;padding:calc(0.75em - 1px);resize:vertical}.textarea:not([rows]){max-height:40em;min-height:8em}.textarea[rows]{height:initial}.textarea.has-fixed-size{resize:none}.radio,.checkbox{cursor:pointer;display:inline-block;line-height:1.25;position:relative}.radio input,.checkbox input{cursor:pointer}.radio:hover,.checkbox:hover{color:#363636}[disabled].radio,[disabled].checkbox,fieldset[disabled] .radio,fieldset[disabled] .checkbox,.radio input[disabled],.checkbox input[disabled]{color:#7a7a7a;cursor:not-allowed}.radio+.radio{margin-left:.5em}.select{display:inline-block;max-width:100%;position:relative;vertical-align:top}.select:not(.is-multiple){height:2.5em}.select:not(.is-multiple):not(.is-loading)::after{border-color:#485fc7;right:1.125em;z-index:4}.select.is-rounded select{border-radius:9999px;padding-left:1em}.select select{cursor:pointer;display:block;font-size:1em;max-width:100%;outline:none}.select select::-ms-expand{display:none}.select select[disabled]:hover,fieldset[disabled] .select select:hover{border-color:#f5f5f5}.select select:not([multiple]){padding-right:2.5em}.select select[multiple]{height:auto;padding:0}.select select[multiple] option{padding:.5em 1em}.select:not(.is-multiple):not(.is-loading):hover::after{border-color:#363636}.select.is-white:not(:hover)::after{border-color:#fff}.select.is-white select{border-color:#fff}.select.is-white select:hover,.select.is-white select.is-hovered{border-color:#f2f2f2}.select.is-white select:focus,.select.is-white select.is-focused,.select.is-white select:active,.select.is-white select.is-active{box-shadow:0 0 0 .125em rgba(255,255,255,.25)}.select.is-black:not(:hover)::after{border-color:#0a0a0a}.select.is-black select{border-color:#0a0a0a}.select.is-black select:hover,.select.is-black select.is-hovered{border-color:#000}.select.is-black select:focus,.select.is-black select.is-focused,.select.is-black select:active,.select.is-black select.is-active{box-shadow:0 0 0 .125em rgba(10,10,10,.25)}.select.is-light:not(:hover)::after{border-color:#f5f5f5}.select.is-light select{border-color:#f5f5f5}.select.is-light select:hover,.select.is-light select.is-hovered{border-color:#e8e8e8}.select.is-light select:focus,.select.is-light select.is-focused,.select.is-light select:active,.select.is-light select.is-active{box-shadow:0 0 0 .125em rgba(245,245,245,.25)}.select.is-dark:not(:hover)::after{border-color:#363636}.select.is-dark select{border-color:#363636}.select.is-dark select:hover,.select.is-dark select.is-hovered{border-color:#292929}.select.is-dark select:focus,.select.is-dark select.is-focused,.select.is-dark select:active,.select.is-dark select.is-active{box-shadow:0 0 0 .125em rgba(54,54,54,.25)}.select.is-primary:not(:hover)::after{border-color:#00d1b2}.select.is-primary select{border-color:#00d1b2}.select.is-primary select:hover,.select.is-primary select.is-hovered{border-color:#00b89c}.select.is-primary select:focus,.select.is-primary select.is-focused,.select.is-primary select:active,.select.is-primary select.is-active{box-shadow:0 0 0 .125em rgba(0,209,178,.25)}.select.is-link:not(:hover)::after{border-color:#485fc7}.select.is-link select{border-color:#485fc7}.select.is-link select:hover,.select.is-link select.is-hovered{border-color:#3a51bb}.select.is-link select:focus,.select.is-link select.is-focused,.select.is-link select:active,.select.is-link select.is-active{box-shadow:0 0 0 .125em rgba(72,95,199,.25)}.select.is-info:not(:hover)::after{border-color:#3e8ed0}.select.is-info select{border-color:#3e8ed0}.select.is-info select:hover,.select.is-info select.is-hovered{border-color:#3082c5}.select.is-info select:focus,.select.is-info select.is-focused,.select.is-info select:active,.select.is-info select.is-active{box-shadow:0 0 0 .125em rgba(62,142,208,.25)}.select.is-success:not(:hover)::after{border-color:#48c78e}.select.is-success select{border-color:#48c78e}.select.is-success select:hover,.select.is-success select.is-hovered{border-color:#3abb81}.select.is-success select:focus,.select.is-success select.is-focused,.select.is-success select:active,.select.is-success select.is-active{box-shadow:0 0 0 .125em rgba(72,199,142,.25)}.select.is-warning:not(:hover)::after{border-color:#ffe08a}.select.is-warning select{border-color:#ffe08a}.select.is-warning select:hover,.select.is-warning select.is-hovered{border-color:#ffd970}.select.is-warning select:focus,.select.is-warning select.is-focused,.select.is-warning select:active,.select.is-warning select.is-active{box-shadow:0 0 0 .125em rgba(255,224,138,.25)}.select.is-danger:not(:hover)::after{border-color:#f14668}.select.is-danger select{border-color:#f14668}.select.is-danger select:hover,.select.is-danger select.is-hovered{border-color:#ef2e55}.select.is-danger select:focus,.select.is-danger select.is-focused,.select.is-danger select:active,.select.is-danger select.is-active{box-shadow:0 0 0 .125em rgba(241,70,104,.25)}.select.is-small{border-radius:2px;font-size:.75rem}.select.is-medium{font-size:1.25rem}.select.is-large{font-size:1.5rem}.select.is-disabled::after{border-color:#7a7a7a}.select.is-fullwidth{width:100%}.select.is-fullwidth select{width:100%}.select.is-loading::after{margin-top:0;position:absolute;right:.625em;top:.625em;transform:none}.select.is-loading.is-small:after{font-size:.75rem}.select.is-loading.is-medium:after{font-size:1.25rem}.select.is-loading.is-large:after{font-size:1.5rem}.file{align-items:stretch;display:flex;justify-content:flex-start;position:relative}.file.is-white .file-cta{background-color:#fff;border-color:transparent;color:#0a0a0a}.file.is-white:hover .file-cta,.file.is-white.is-hovered .file-cta{background-color:#f9f9f9;border-color:transparent;color:#0a0a0a}.file.is-white:focus .file-cta,.file.is-white.is-focused .file-cta{border-color:transparent;box-shadow:0 0 .5em rgba(255,255,255,.25);color:#0a0a0a}.file.is-white:active .file-cta,.file.is-white.is-active .file-cta{background-color:#f2f2f2;border-color:transparent;color:#0a0a0a}.file.is-black .file-cta{background-color:#0a0a0a;border-color:transparent;color:#fff}.file.is-black:hover .file-cta,.file.is-black.is-hovered .file-cta{background-color:#040404;border-color:transparent;color:#fff}.file.is-black:focus .file-cta,.file.is-black.is-focused .file-cta{border-color:transparent;box-shadow:0 0 .5em rgba(10,10,10,.25);color:#fff}.file.is-black:active .file-cta,.file.is-black.is-active .file-cta{background-color:#000;border-color:transparent;color:#fff}.file.is-light .file-cta{background-color:#f5f5f5;border-color:transparent;color:rgba(0,0,0,.7)}.file.is-light:hover .file-cta,.file.is-light.is-hovered .file-cta{background-color:#eee;border-color:transparent;color:rgba(0,0,0,.7)}.file.is-light:focus .file-cta,.file.is-light.is-focused .file-cta{border-color:transparent;box-shadow:0 0 .5em rgba(245,245,245,.25);color:rgba(0,0,0,.7)}.file.is-light:active .file-cta,.file.is-light.is-active .file-cta{background-color:#e8e8e8;border-color:transparent;color:rgba(0,0,0,.7)}.file.is-dark .file-cta{background-color:#363636;border-color:transparent;color:#fff}.file.is-dark:hover .file-cta,.file.is-dark.is-hovered .file-cta{background-color:#2f2f2f;border-color:transparent;color:#fff}.file.is-dark:focus .file-cta,.file.is-dark.is-focused .file-cta{border-color:transparent;box-shadow:0 0 .5em rgba(54,54,54,.25);color:#fff}.file.is-dark:active .file-cta,.file.is-dark.is-active .file-cta{background-color:#292929;border-color:transparent;color:#fff}.file.is-primary .file-cta{background-color:#00d1b2;border-color:transparent;color:#fff}.file.is-primary:hover .file-cta,.file.is-primary.is-hovered .file-cta{background-color:#00c4a7;border-color:transparent;color:#fff}.file.is-primary:focus .file-cta,.file.is-primary.is-focused .file-cta{border-color:transparent;box-shadow:0 0 .5em rgba(0,209,178,.25);color:#fff}.file.is-primary:active .file-cta,.file.is-primary.is-active .file-cta{background-color:#00b89c;border-color:transparent;color:#fff}.file.is-link .file-cta{background-color:#485fc7;border-color:transparent;color:#fff}.file.is-link:hover .file-cta,.file.is-link.is-hovered .file-cta{background-color:#3e56c4;border-color:transparent;color:#fff}.file.is-link:focus .file-cta,.file.is-link.is-focused .file-cta{border-color:transparent;box-shadow:0 0 .5em rgba(72,95,199,.25);color:#fff}.file.is-link:active .file-cta,.file.is-link.is-active .file-cta{background-color:#3a51bb;border-color:transparent;color:#fff}.file.is-info .file-cta{background-color:#3e8ed0;border-color:transparent;color:#fff}.file.is-info:hover .file-cta,.file.is-info.is-hovered .file-cta{background-color:#3488ce;border-color:transparent;color:#fff}.file.is-info:focus .file-cta,.file.is-info.is-focused .file-cta{border-color:transparent;box-shadow:0 0 .5em rgba(62,142,208,.25);color:#fff}.file.is-info:active .file-cta,.file.is-info.is-active .file-cta{background-color:#3082c5;border-color:transparent;color:#fff}.file.is-success .file-cta{background-color:#48c78e;border-color:transparent;color:#fff}.file.is-success:hover .file-cta,.file.is-success.is-hovered .file-cta{background-color:#3ec487;border-color:transparent;color:#fff}.file.is-success:focus .file-cta,.file.is-success.is-focused .file-cta{border-color:transparent;box-shadow:0 0 .5em rgba(72,199,142,.25);color:#fff}.file.is-success:active .file-cta,.file.is-success.is-active .file-cta{background-color:#3abb81;border-color:transparent;color:#fff}.file.is-warning .file-cta{background-color:#ffe08a;border-color:transparent;color:rgba(0,0,0,.7)}.file.is-warning:hover .file-cta,.file.is-warning.is-hovered .file-cta{background-color:#ffdc7d;border-color:transparent;color:rgba(0,0,0,.7)}.file.is-warning:focus .file-cta,.file.is-warning.is-focused .file-cta{border-color:transparent;box-shadow:0 0 .5em rgba(255,224,138,.25);color:rgba(0,0,0,.7)}.file.is-warning:active .file-cta,.file.is-warning.is-active .file-cta{background-color:#ffd970;border-color:transparent;color:rgba(0,0,0,.7)}.file.is-danger .file-cta{background-color:#f14668;border-color:transparent;color:#fff}.file.is-danger:hover .file-cta,.file.is-danger.is-hovered .file-cta{background-color:#f03a5f;border-color:transparent;color:#fff}.file.is-danger:focus .file-cta,.file.is-danger.is-focused .file-cta{border-color:transparent;box-shadow:0 0 .5em rgba(241,70,104,.25);color:#fff}.file.is-danger:active .file-cta,.file.is-danger.is-active .file-cta{background-color:#ef2e55;border-color:transparent;color:#fff}.file.is-small{font-size:.75rem}.file.is-normal{font-size:1rem}.file.is-medium{font-size:1.25rem}.file.is-medium .file-icon .fa{font-size:21px}.file.is-large{font-size:1.5rem}.file.is-large .file-icon .fa{font-size:28px}.file.has-name .file-cta{border-bottom-right-radius:0;border-top-right-radius:0}.file.has-name .file-name{border-bottom-left-radius:0;border-top-left-radius:0}.file.has-name.is-empty .file-cta{border-radius:4px}.file.has-name.is-empty .file-name{display:none}.file.is-boxed .file-label{flex-direction:column}.file.is-boxed .file-cta{flex-direction:column;height:auto;padding:1em 3em}.file.is-boxed .file-name{border-width:0 1px 1px}.file.is-boxed .file-icon{height:1.5em;width:1.5em}.file.is-boxed .file-icon .fa{font-size:21px}.file.is-boxed.is-small .file-icon .fa{font-size:14px}.file.is-boxed.is-medium .file-icon .fa{font-size:28px}.file.is-boxed.is-large .file-icon .fa{font-size:35px}.file.is-boxed.has-name .file-cta{border-radius:4px 4px 0 0}.file.is-boxed.has-name .file-name{border-radius:0 0 4px 4px;border-width:0 1px 1px}.file.is-centered{justify-content:center}.file.is-fullwidth .file-label{width:100%}.file.is-fullwidth .file-name{flex-grow:1;max-width:none}.file.is-right{justify-content:flex-end}.file.is-right .file-cta{border-radius:0 4px 4px 0}.file.is-right .file-name{border-radius:4px 0 0 4px;border-width:1px 0 1px 1px;order:-1}.file-label{align-items:stretch;display:flex;cursor:pointer;justify-content:flex-start;overflow:hidden;position:relative}.file-label:hover .file-cta{background-color:#eee;color:#363636}.file-label:hover .file-name{border-color:#d5d5d5}.file-label:active .file-cta{background-color:#e8e8e8;color:#363636}.file-label:active .file-name{border-color:#cfcfcf}.file-input{height:100%;left:0;opacity:0;outline:none;position:absolute;top:0;width:100%}.file-cta,.file-name{border-color:#dbdbdb;border-radius:4px;font-size:1em;padding-left:1em;padding-right:1em;white-space:nowrap}.file-cta{background-color:#f5f5f5;color:#4a4a4a}.file-name{border-color:#dbdbdb;border-style:solid;border-width:1px 1px 1px 0;display:block;max-width:16em;overflow:hidden;text-align:inherit;text-overflow:ellipsis}.file-icon{align-items:center;display:flex;height:1em;justify-content:center;margin-right:.5em;width:1em}.file-icon .fa{font-size:14px}.label{color:#363636;display:block;font-size:1rem;font-weight:700}.label:not(:last-child){margin-bottom:.5em}.label.is-small{font-size:.75rem}.label.is-medium{font-size:1.25rem}.label.is-large{font-size:1.5rem}.help{display:block;font-size:.75rem;margin-top:.25rem}.help.is-white{color:#fff}.help.is-black{color:#0a0a0a}.help.is-light{color:#f5f5f5}.help.is-dark{color:#363636}.help.is-primary{color:#00d1b2}.help.is-link{color:#485fc7}.help.is-info{color:#3e8ed0}.help.is-success{color:#48c78e}.help.is-warning{color:#ffe08a}.help.is-danger{color:#f14668}.field:not(:last-child){margin-bottom:.75rem}.field.has-addons{display:flex;justify-content:flex-start}.field.has-addons .control:not(:last-child){margin-right:-1px}.field.has-addons .control:not(:first-child):not(:last-child) .button,.field.has-addons .control:not(:first-child):not(:last-child) .input,.field.has-addons .control:not(:first-child):not(:last-child) .select select{border-radius:0}.field.has-addons .control:first-child:not(:only-child) .button,.field.has-addons .control:first-child:not(:only-child) .input,.field.has-addons .control:first-child:not(:only-child) .select select{border-bottom-right-radius:0;border-top-right-radius:0}.field.has-addons .control:last-child:not(:only-child) .button,.field.has-addons .control:last-child:not(:only-child) .input,.field.has-addons .control:last-child:not(:only-child) .select select{border-bottom-left-radius:0;border-top-left-radius:0}.field.has-addons .control .button:not([disabled]):hover,.field.has-addons .control .button:not([disabled]).is-hovered,.field.has-addons .control .input:not([disabled]):hover,.field.has-addons .control .input:not([disabled]).is-hovered,.field.has-addons .control .select select:not([disabled]):hover,.field.has-addons .control .select select:not([disabled]).is-hovered{z-index:2}.field.has-addons .control .button:not([disabled]):focus,.field.has-addons .control .button:not([disabled]).is-focused,.field.has-addons .control .button:not([disabled]):active,.field.has-addons .control .button:not([disabled]).is-active,.field.has-addons .control .input:not([disabled]):focus,.field.has-addons .control .input:not([disabled]).is-focused,.field.has-addons .control .input:not([disabled]):active,.field.has-addons .control .input:not([disabled]).is-active,.field.has-addons .control .select select:not([disabled]):focus,.field.has-addons .control .select select:not([disabled]).is-focused,.field.has-addons .control .select select:not([disabled]):active,.field.has-addons .control .select select:not([disabled]).is-active{z-index:3}.field.has-addons .control .button:not([disabled]):focus:hover,.field.has-addons .control .button:not([disabled]).is-focused:hover,.field.has-addons .control .button:not([disabled]):active:hover,.field.has-addons .control .button:not([disabled]).is-active:hover,.field.has-addons .control .input:not([disabled]):focus:hover,.field.has-addons .control .input:not([disabled]).is-focused:hover,.field.has-addons .control .input:not([disabled]):active:hover,.field.has-addons .control .input:not([disabled]).is-active:hover,.field.has-addons .control .select select:not([disabled]):focus:hover,.field.has-addons .control .select select:not([disabled]).is-focused:hover,.field.has-addons .control .select select:not([disabled]):active:hover,.field.has-addons .control .select select:not([disabled]).is-active:hover{z-index:4}.field.has-addons .control.is-expanded{flex-grow:1;flex-shrink:1}.field.has-addons.has-addons-centered{justify-content:center}.field.has-addons.has-addons-right{justify-content:flex-end}.field.has-addons.has-addons-fullwidth .control{flex-grow:1;flex-shrink:0}.field.is-grouped{display:flex;justify-content:flex-start}.field.is-grouped>.control{flex-shrink:0}.field.is-grouped>.control:not(:last-child){margin-bottom:0;margin-right:.75rem}.field.is-grouped>.control.is-expanded{flex-grow:1;flex-shrink:1}.field.is-grouped.is-grouped-centered{justify-content:center}.field.is-grouped.is-grouped-right{justify-content:flex-end}.field.is-grouped.is-grouped-multiline{flex-wrap:wrap}.field.is-grouped.is-grouped-multiline>.control:last-child,.field.is-grouped.is-grouped-multiline>.control:not(:last-child){margin-bottom:.75rem}.field.is-grouped.is-grouped-multiline:last-child{margin-bottom:-0.75rem}.field.is-grouped.is-grouped-multiline:not(:last-child){margin-bottom:0}@media screen and (min-width: 769px),print{.field.is-horizontal{display:flex}}.field-label .label{font-size:inherit}@media screen and (max-width: 768px){.field-label{margin-bottom:.5rem}}@media screen and (min-width: 769px),print{.field-label{flex-basis:0;flex-grow:1;flex-shrink:0;margin-right:1.5rem;text-align:right}.field-label.is-small{font-size:.75rem;padding-top:.375em}.field-label.is-normal{padding-top:.375em}.field-label.is-medium{font-size:1.25rem;padding-top:.375em}.field-label.is-large{font-size:1.5rem;padding-top:.375em}}.field-body .field .field{margin-bottom:0}@media screen and (min-width: 769px),print{.field-body{display:flex;flex-basis:0;flex-grow:5;flex-shrink:1}.field-body .field{margin-bottom:0}.field-body>.field{flex-shrink:1}.field-body>.field:not(.is-narrow){flex-grow:1}.field-body>.field:not(:last-child){margin-right:.75rem}}.control{box-sizing:border-box;clear:both;font-size:1rem;position:relative;text-align:inherit}.control.has-icons-left .input:focus~.icon,.control.has-icons-left .select:focus~.icon,.control.has-icons-right .input:focus~.icon,.control.has-icons-right .select:focus~.icon{color:#4a4a4a}.control.has-icons-left .input.is-small~.icon,.control.has-icons-left .select.is-small~.icon,.control.has-icons-right .input.is-small~.icon,.control.has-icons-right .select.is-small~.icon{font-size:.75rem}.control.has-icons-left .input.is-medium~.icon,.control.has-icons-left .select.is-medium~.icon,.control.has-icons-right .input.is-medium~.icon,.control.has-icons-right .select.is-medium~.icon{font-size:1.25rem}.control.has-icons-left .input.is-large~.icon,.control.has-icons-left .select.is-large~.icon,.control.has-icons-right .input.is-large~.icon,.control.has-icons-right .select.is-large~.icon{font-size:1.5rem}.control.has-icons-left .icon,.control.has-icons-right .icon{color:#dbdbdb;height:2.5em;pointer-events:none;position:absolute;top:0;width:2.5em;z-index:4}.control.has-icons-left .input,.control.has-icons-left .select select{padding-left:2.5em}.control.has-icons-left .icon.is-left{left:0}.control.has-icons-right .input,.control.has-icons-right .select select{padding-right:2.5em}.control.has-icons-right .icon.is-right{right:0}.control.is-loading::after{position:absolute !important;right:.625em;top:.625em;z-index:4}.control.is-loading.is-small:after{font-size:.75rem}.control.is-loading.is-medium:after{font-size:1.25rem}.control.is-loading.is-large:after{font-size:1.5rem}.breadcrumb{font-size:1rem;white-space:nowrap}.breadcrumb a{align-items:center;color:#485fc7;display:flex;justify-content:center;padding:0 .75em}.breadcrumb a:hover{color:#363636}.breadcrumb li{align-items:center;display:flex}.breadcrumb li:first-child a{padding-left:0}.breadcrumb li.is-active a{color:#363636;cursor:default;pointer-events:none}.breadcrumb li+li::before{color:#b5b5b5;content:\\\"/\\\"}.breadcrumb ul,.breadcrumb ol{align-items:flex-start;display:flex;flex-wrap:wrap;justify-content:flex-start}.breadcrumb .icon:first-child{margin-right:.5em}.breadcrumb .icon:last-child{margin-left:.5em}.breadcrumb.is-centered ol,.breadcrumb.is-centered ul{justify-content:center}.breadcrumb.is-right ol,.breadcrumb.is-right ul{justify-content:flex-end}.breadcrumb.is-small{font-size:.75rem}.breadcrumb.is-medium{font-size:1.25rem}.breadcrumb.is-large{font-size:1.5rem}.breadcrumb.has-arrow-separator li+li::before{content:\\\"→\\\"}.breadcrumb.has-bullet-separator li+li::before{content:\\\"•\\\"}.breadcrumb.has-dot-separator li+li::before{content:\\\"·\\\"}.breadcrumb.has-succeeds-separator li+li::before{content:\\\"≻\\\"}.card{background-color:#fff;border-radius:.25rem;box-shadow:0 .5em 1em -0.125em rgba(10,10,10,.1),0 0px 0 1px rgba(10,10,10,.02);color:#4a4a4a;max-width:100%;position:relative}.card-footer:first-child,.card-content:first-child,.card-header:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card-footer:last-child,.card-content:last-child,.card-header:last-child{border-bottom-left-radius:.25rem;border-bottom-right-radius:.25rem}.card-header{background-color:transparent;align-items:stretch;box-shadow:0 .125em .25em rgba(10,10,10,.1);display:flex}.card-header-title{align-items:center;color:#363636;display:flex;flex-grow:1;font-weight:700;padding:.75rem 1rem}.card-header-title.is-centered{justify-content:center}.card-header-icon{-moz-appearance:none;-webkit-appearance:none;appearance:none;background:none;border:none;color:currentColor;font-family:inherit;font-size:1em;margin:0;padding:0;align-items:center;cursor:pointer;display:flex;justify-content:center;padding:.75rem 1rem}.card-image{display:block;position:relative}.card-image:first-child img{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card-image:last-child img{border-bottom-left-radius:.25rem;border-bottom-right-radius:.25rem}.card-content{background-color:transparent;padding:1.5rem}.card-footer{background-color:transparent;border-top:1px solid #ededed;align-items:stretch;display:flex}.card-footer-item{align-items:center;display:flex;flex-basis:0;flex-grow:1;flex-shrink:0;justify-content:center;padding:.75rem}.card-footer-item:not(:last-child){border-right:1px solid #ededed}.card .media:not(:last-child){margin-bottom:1.5rem}.dropdown{display:inline-flex;position:relative;vertical-align:top}.dropdown.is-active .dropdown-menu,.dropdown.is-hoverable:hover .dropdown-menu{display:block}.dropdown.is-right .dropdown-menu{left:auto;right:0}.dropdown.is-up .dropdown-menu{bottom:100%;padding-bottom:4px;padding-top:initial;top:auto}.dropdown-menu{display:none;left:0;min-width:12rem;padding-top:4px;position:absolute;top:100%;z-index:20}.dropdown-content{background-color:#fff;border-radius:4px;box-shadow:0 .5em 1em -0.125em rgba(10,10,10,.1),0 0px 0 1px rgba(10,10,10,.02);padding-bottom:.5rem;padding-top:.5rem}.dropdown-item{color:#4a4a4a;display:block;font-size:.875rem;line-height:1.5;padding:.375rem 1rem;position:relative}a.dropdown-item,button.dropdown-item{padding-right:3rem;text-align:inherit;white-space:nowrap;width:100%}a.dropdown-item:hover,button.dropdown-item:hover{background-color:#f5f5f5;color:#0a0a0a}a.dropdown-item.is-active,button.dropdown-item.is-active{background-color:#485fc7;color:#fff}.dropdown-divider{background-color:#ededed;border:none;display:block;height:1px;margin:.5rem 0}.level{align-items:center;justify-content:space-between}.level code{border-radius:4px}.level img{display:inline-block;vertical-align:top}.level.is-mobile{display:flex}.level.is-mobile .level-left,.level.is-mobile .level-right{display:flex}.level.is-mobile .level-left+.level-right{margin-top:0}.level.is-mobile .level-item:not(:last-child){margin-bottom:0;margin-right:.75rem}.level.is-mobile .level-item:not(.is-narrow){flex-grow:1}@media screen and (min-width: 769px),print{.level{display:flex}.level>.level-item:not(.is-narrow){flex-grow:1}}.level-item{align-items:center;display:flex;flex-basis:auto;flex-grow:0;flex-shrink:0;justify-content:center}.level-item .title,.level-item .subtitle{margin-bottom:0}@media screen and (max-width: 768px){.level-item:not(:last-child){margin-bottom:.75rem}}.level-left,.level-right{flex-basis:auto;flex-grow:0;flex-shrink:0}.level-left .level-item.is-flexible,.level-right .level-item.is-flexible{flex-grow:1}@media screen and (min-width: 769px),print{.level-left .level-item:not(:last-child),.level-right .level-item:not(:last-child){margin-right:.75rem}}.level-left{align-items:center;justify-content:flex-start}@media screen and (max-width: 768px){.level-left+.level-right{margin-top:1.5rem}}@media screen and (min-width: 769px),print{.level-left{display:flex}}.level-right{align-items:center;justify-content:flex-end}@media screen and (min-width: 769px),print{.level-right{display:flex}}.media{align-items:flex-start;display:flex;text-align:inherit}.media .content:not(:last-child){margin-bottom:.75rem}.media .media{border-top:1px solid rgba(219,219,219,.5);display:flex;padding-top:.75rem}.media .media .content:not(:last-child),.media .media .control:not(:last-child){margin-bottom:.5rem}.media .media .media{padding-top:.5rem}.media .media .media+.media{margin-top:.5rem}.media+.media{border-top:1px solid rgba(219,219,219,.5);margin-top:1rem;padding-top:1rem}.media.is-large+.media{margin-top:1.5rem;padding-top:1.5rem}.media-left,.media-right{flex-basis:auto;flex-grow:0;flex-shrink:0}.media-left{margin-right:1rem}.media-right{margin-left:1rem}.media-content{flex-basis:auto;flex-grow:1;flex-shrink:1;text-align:inherit}@media screen and (max-width: 768px){.media-content{overflow-x:auto}}.menu{font-size:1rem}.menu.is-small{font-size:.75rem}.menu.is-medium{font-size:1.25rem}.menu.is-large{font-size:1.5rem}.menu-list{line-height:1.25}.menu-list a{border-radius:2px;color:#4a4a4a;display:block;padding:.5em .75em}.menu-list a:hover{background-color:#f5f5f5;color:#363636}.menu-list a.is-active{background-color:#485fc7;color:#fff}.menu-list li ul{border-left:1px solid #dbdbdb;margin:.75em;padding-left:.75em}.menu-label{color:#7a7a7a;font-size:.75em;letter-spacing:.1em;text-transform:uppercase}.menu-label:not(:first-child){margin-top:1em}.menu-label:not(:last-child){margin-bottom:1em}.message{background-color:#f5f5f5;border-radius:4px;font-size:1rem}.message strong{color:currentColor}.message a:not(.button):not(.tag):not(.dropdown-item){color:currentColor;text-decoration:underline}.message.is-small{font-size:.75rem}.message.is-medium{font-size:1.25rem}.message.is-large{font-size:1.5rem}.message.is-white{background-color:#fff}.message.is-white .message-header{background-color:#fff;color:#0a0a0a}.message.is-white .message-body{border-color:#fff}.message.is-black{background-color:#fafafa}.message.is-black .message-header{background-color:#0a0a0a;color:#fff}.message.is-black .message-body{border-color:#0a0a0a}.message.is-light{background-color:#fafafa}.message.is-light .message-header{background-color:#f5f5f5;color:rgba(0,0,0,.7)}.message.is-light .message-body{border-color:#f5f5f5}.message.is-dark{background-color:#fafafa}.message.is-dark .message-header{background-color:#363636;color:#fff}.message.is-dark .message-body{border-color:#363636}.message.is-primary{background-color:#ebfffc}.message.is-primary .message-header{background-color:#00d1b2;color:#fff}.message.is-primary .message-body{border-color:#00d1b2;color:#00947e}.message.is-link{background-color:#eff1fa}.message.is-link .message-header{background-color:#485fc7;color:#fff}.message.is-link .message-body{border-color:#485fc7;color:#3850b7}.message.is-info{background-color:#eff5fb}.message.is-info .message-header{background-color:#3e8ed0;color:#fff}.message.is-info .message-body{border-color:#3e8ed0;color:#296fa8}.message.is-success{background-color:#effaf5}.message.is-success .message-header{background-color:#48c78e;color:#fff}.message.is-success .message-body{border-color:#48c78e;color:#257953}.message.is-warning{background-color:#fffaeb}.message.is-warning .message-header{background-color:#ffe08a;color:rgba(0,0,0,.7)}.message.is-warning .message-body{border-color:#ffe08a;color:#946c00}.message.is-danger{background-color:#feecf0}.message.is-danger .message-header{background-color:#f14668;color:#fff}.message.is-danger .message-body{border-color:#f14668;color:#cc0f35}.message-header{align-items:center;background-color:#4a4a4a;border-radius:4px 4px 0 0;color:#fff;display:flex;font-weight:700;justify-content:space-between;line-height:1.25;padding:.75em 1em;position:relative}.message-header .delete{flex-grow:0;flex-shrink:0;margin-left:.75em}.message-header+.message-body{border-width:0;border-top-left-radius:0;border-top-right-radius:0}.message-body{border-color:#dbdbdb;border-radius:4px;border-style:solid;border-width:0 0 0 4px;color:#4a4a4a;padding:1.25em 1.5em}.message-body code,.message-body pre{background-color:#fff}.message-body pre code{background-color:transparent}.modal{align-items:center;display:none;flex-direction:column;justify-content:center;overflow:hidden;position:fixed;z-index:40}.modal.is-active{display:flex}.modal-background{background-color:rgba(10,10,10,.86)}.modal-content,.modal-card{margin:0 20px;max-height:calc(100vh - 160px);overflow:auto;position:relative;width:100%}@media screen and (min-width: 769px){.modal-content,.modal-card{margin:0 auto;max-height:calc(100vh - 40px);width:640px}}.modal-close{background:none;height:40px;position:fixed;right:20px;top:20px;width:40px}.modal-card{display:flex;flex-direction:column;max-height:calc(100vh - 40px);overflow:hidden;-ms-overflow-y:visible}.modal-card-head,.modal-card-foot{align-items:center;background-color:#f5f5f5;display:flex;flex-shrink:0;justify-content:flex-start;padding:20px;position:relative}.modal-card-head{border-bottom:1px solid #dbdbdb;border-top-left-radius:6px;border-top-right-radius:6px}.modal-card-title{color:#363636;flex-grow:1;flex-shrink:0;font-size:1.5rem;line-height:1}.modal-card-foot{border-bottom-left-radius:6px;border-bottom-right-radius:6px;border-top:1px solid #dbdbdb}.modal-card-foot .button:not(:last-child){margin-right:.5em}.modal-card-body{-webkit-overflow-scrolling:touch;background-color:#fff;flex-grow:1;flex-shrink:1;overflow:auto;padding:20px}.navbar{background-color:#fff;min-height:3.25rem;position:relative;z-index:30}.navbar.is-white{background-color:#fff;color:#0a0a0a}.navbar.is-white .navbar-brand>.navbar-item,.navbar.is-white .navbar-brand .navbar-link{color:#0a0a0a}.navbar.is-white .navbar-brand>a.navbar-item:focus,.navbar.is-white .navbar-brand>a.navbar-item:hover,.navbar.is-white .navbar-brand>a.navbar-item.is-active,.navbar.is-white .navbar-brand .navbar-link:focus,.navbar.is-white .navbar-brand .navbar-link:hover,.navbar.is-white .navbar-brand .navbar-link.is-active{background-color:#f2f2f2;color:#0a0a0a}.navbar.is-white .navbar-brand .navbar-link::after{border-color:#0a0a0a}.navbar.is-white .navbar-burger{color:#0a0a0a}@media screen and (min-width: 550px){.navbar.is-white .navbar-start>.navbar-item,.navbar.is-white .navbar-start .navbar-link,.navbar.is-white .navbar-end>.navbar-item,.navbar.is-white .navbar-end .navbar-link{color:#0a0a0a}.navbar.is-white .navbar-start>a.navbar-item:focus,.navbar.is-white .navbar-start>a.navbar-item:hover,.navbar.is-white .navbar-start>a.navbar-item.is-active,.navbar.is-white .navbar-start .navbar-link:focus,.navbar.is-white .navbar-start .navbar-link:hover,.navbar.is-white .navbar-start .navbar-link.is-active,.navbar.is-white .navbar-end>a.navbar-item:focus,.navbar.is-white .navbar-end>a.navbar-item:hover,.navbar.is-white .navbar-end>a.navbar-item.is-active,.navbar.is-white .navbar-end .navbar-link:focus,.navbar.is-white .navbar-end .navbar-link:hover,.navbar.is-white .navbar-end .navbar-link.is-active{background-color:#f2f2f2;color:#0a0a0a}.navbar.is-white .navbar-start .navbar-link::after,.navbar.is-white .navbar-end .navbar-link::after{border-color:#0a0a0a}.navbar.is-white .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-white .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-white .navbar-item.has-dropdown.is-active .navbar-link{background-color:#f2f2f2;color:#0a0a0a}.navbar.is-white .navbar-dropdown a.navbar-item.is-active{background-color:#fff;color:#0a0a0a}}.navbar.is-black{background-color:#0a0a0a;color:#fff}.navbar.is-black .navbar-brand>.navbar-item,.navbar.is-black .navbar-brand .navbar-link{color:#fff}.navbar.is-black .navbar-brand>a.navbar-item:focus,.navbar.is-black .navbar-brand>a.navbar-item:hover,.navbar.is-black .navbar-brand>a.navbar-item.is-active,.navbar.is-black .navbar-brand .navbar-link:focus,.navbar.is-black .navbar-brand .navbar-link:hover,.navbar.is-black .navbar-brand .navbar-link.is-active{background-color:#000;color:#fff}.navbar.is-black .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-black .navbar-burger{color:#fff}@media screen and (min-width: 550px){.navbar.is-black .navbar-start>.navbar-item,.navbar.is-black .navbar-start .navbar-link,.navbar.is-black .navbar-end>.navbar-item,.navbar.is-black .navbar-end .navbar-link{color:#fff}.navbar.is-black .navbar-start>a.navbar-item:focus,.navbar.is-black .navbar-start>a.navbar-item:hover,.navbar.is-black .navbar-start>a.navbar-item.is-active,.navbar.is-black .navbar-start .navbar-link:focus,.navbar.is-black .navbar-start .navbar-link:hover,.navbar.is-black .navbar-start .navbar-link.is-active,.navbar.is-black .navbar-end>a.navbar-item:focus,.navbar.is-black .navbar-end>a.navbar-item:hover,.navbar.is-black .navbar-end>a.navbar-item.is-active,.navbar.is-black .navbar-end .navbar-link:focus,.navbar.is-black .navbar-end .navbar-link:hover,.navbar.is-black .navbar-end .navbar-link.is-active{background-color:#000;color:#fff}.navbar.is-black .navbar-start .navbar-link::after,.navbar.is-black .navbar-end .navbar-link::after{border-color:#fff}.navbar.is-black .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-black .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-black .navbar-item.has-dropdown.is-active .navbar-link{background-color:#000;color:#fff}.navbar.is-black .navbar-dropdown a.navbar-item.is-active{background-color:#0a0a0a;color:#fff}}.navbar.is-light{background-color:#f5f5f5;color:rgba(0,0,0,.7)}.navbar.is-light .navbar-brand>.navbar-item,.navbar.is-light .navbar-brand .navbar-link{color:rgba(0,0,0,.7)}.navbar.is-light .navbar-brand>a.navbar-item:focus,.navbar.is-light .navbar-brand>a.navbar-item:hover,.navbar.is-light .navbar-brand>a.navbar-item.is-active,.navbar.is-light .navbar-brand .navbar-link:focus,.navbar.is-light .navbar-brand .navbar-link:hover,.navbar.is-light .navbar-brand .navbar-link.is-active{background-color:#e8e8e8;color:rgba(0,0,0,.7)}.navbar.is-light .navbar-brand .navbar-link::after{border-color:rgba(0,0,0,.7)}.navbar.is-light .navbar-burger{color:rgba(0,0,0,.7)}@media screen and (min-width: 550px){.navbar.is-light .navbar-start>.navbar-item,.navbar.is-light .navbar-start .navbar-link,.navbar.is-light .navbar-end>.navbar-item,.navbar.is-light .navbar-end .navbar-link{color:rgba(0,0,0,.7)}.navbar.is-light .navbar-start>a.navbar-item:focus,.navbar.is-light .navbar-start>a.navbar-item:hover,.navbar.is-light .navbar-start>a.navbar-item.is-active,.navbar.is-light .navbar-start .navbar-link:focus,.navbar.is-light .navbar-start .navbar-link:hover,.navbar.is-light .navbar-start .navbar-link.is-active,.navbar.is-light .navbar-end>a.navbar-item:focus,.navbar.is-light .navbar-end>a.navbar-item:hover,.navbar.is-light .navbar-end>a.navbar-item.is-active,.navbar.is-light .navbar-end .navbar-link:focus,.navbar.is-light .navbar-end .navbar-link:hover,.navbar.is-light .navbar-end .navbar-link.is-active{background-color:#e8e8e8;color:rgba(0,0,0,.7)}.navbar.is-light .navbar-start .navbar-link::after,.navbar.is-light .navbar-end .navbar-link::after{border-color:rgba(0,0,0,.7)}.navbar.is-light .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-light .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-light .navbar-item.has-dropdown.is-active .navbar-link{background-color:#e8e8e8;color:rgba(0,0,0,.7)}.navbar.is-light .navbar-dropdown a.navbar-item.is-active{background-color:#f5f5f5;color:rgba(0,0,0,.7)}}.navbar.is-dark{background-color:#363636;color:#fff}.navbar.is-dark .navbar-brand>.navbar-item,.navbar.is-dark .navbar-brand .navbar-link{color:#fff}.navbar.is-dark .navbar-brand>a.navbar-item:focus,.navbar.is-dark .navbar-brand>a.navbar-item:hover,.navbar.is-dark .navbar-brand>a.navbar-item.is-active,.navbar.is-dark .navbar-brand .navbar-link:focus,.navbar.is-dark .navbar-brand .navbar-link:hover,.navbar.is-dark .navbar-brand .navbar-link.is-active{background-color:#292929;color:#fff}.navbar.is-dark .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-dark .navbar-burger{color:#fff}@media screen and (min-width: 550px){.navbar.is-dark .navbar-start>.navbar-item,.navbar.is-dark .navbar-start .navbar-link,.navbar.is-dark .navbar-end>.navbar-item,.navbar.is-dark .navbar-end .navbar-link{color:#fff}.navbar.is-dark .navbar-start>a.navbar-item:focus,.navbar.is-dark .navbar-start>a.navbar-item:hover,.navbar.is-dark .navbar-start>a.navbar-item.is-active,.navbar.is-dark .navbar-start .navbar-link:focus,.navbar.is-dark .navbar-start .navbar-link:hover,.navbar.is-dark .navbar-start .navbar-link.is-active,.navbar.is-dark .navbar-end>a.navbar-item:focus,.navbar.is-dark .navbar-end>a.navbar-item:hover,.navbar.is-dark .navbar-end>a.navbar-item.is-active,.navbar.is-dark .navbar-end .navbar-link:focus,.navbar.is-dark .navbar-end .navbar-link:hover,.navbar.is-dark .navbar-end .navbar-link.is-active{background-color:#292929;color:#fff}.navbar.is-dark .navbar-start .navbar-link::after,.navbar.is-dark .navbar-end .navbar-link::after{border-color:#fff}.navbar.is-dark .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-dark .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-dark .navbar-item.has-dropdown.is-active .navbar-link{background-color:#292929;color:#fff}.navbar.is-dark .navbar-dropdown a.navbar-item.is-active{background-color:#363636;color:#fff}}.navbar.is-primary{background-color:#00d1b2;color:#fff}.navbar.is-primary .navbar-brand>.navbar-item,.navbar.is-primary .navbar-brand .navbar-link{color:#fff}.navbar.is-primary .navbar-brand>a.navbar-item:focus,.navbar.is-primary .navbar-brand>a.navbar-item:hover,.navbar.is-primary .navbar-brand>a.navbar-item.is-active,.navbar.is-primary .navbar-brand .navbar-link:focus,.navbar.is-primary .navbar-brand .navbar-link:hover,.navbar.is-primary .navbar-brand .navbar-link.is-active{background-color:#00b89c;color:#fff}.navbar.is-primary .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-primary .navbar-burger{color:#fff}@media screen and (min-width: 550px){.navbar.is-primary .navbar-start>.navbar-item,.navbar.is-primary .navbar-start .navbar-link,.navbar.is-primary .navbar-end>.navbar-item,.navbar.is-primary .navbar-end .navbar-link{color:#fff}.navbar.is-primary .navbar-start>a.navbar-item:focus,.navbar.is-primary .navbar-start>a.navbar-item:hover,.navbar.is-primary .navbar-start>a.navbar-item.is-active,.navbar.is-primary .navbar-start .navbar-link:focus,.navbar.is-primary .navbar-start .navbar-link:hover,.navbar.is-primary .navbar-start .navbar-link.is-active,.navbar.is-primary .navbar-end>a.navbar-item:focus,.navbar.is-primary .navbar-end>a.navbar-item:hover,.navbar.is-primary .navbar-end>a.navbar-item.is-active,.navbar.is-primary .navbar-end .navbar-link:focus,.navbar.is-primary .navbar-end .navbar-link:hover,.navbar.is-primary .navbar-end .navbar-link.is-active{background-color:#00b89c;color:#fff}.navbar.is-primary .navbar-start .navbar-link::after,.navbar.is-primary .navbar-end .navbar-link::after{border-color:#fff}.navbar.is-primary .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-primary .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-primary .navbar-item.has-dropdown.is-active .navbar-link{background-color:#00b89c;color:#fff}.navbar.is-primary .navbar-dropdown a.navbar-item.is-active{background-color:#00d1b2;color:#fff}}.navbar.is-link{background-color:#485fc7;color:#fff}.navbar.is-link .navbar-brand>.navbar-item,.navbar.is-link .navbar-brand .navbar-link{color:#fff}.navbar.is-link .navbar-brand>a.navbar-item:focus,.navbar.is-link .navbar-brand>a.navbar-item:hover,.navbar.is-link .navbar-brand>a.navbar-item.is-active,.navbar.is-link .navbar-brand .navbar-link:focus,.navbar.is-link .navbar-brand .navbar-link:hover,.navbar.is-link .navbar-brand .navbar-link.is-active{background-color:#3a51bb;color:#fff}.navbar.is-link .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-link .navbar-burger{color:#fff}@media screen and (min-width: 550px){.navbar.is-link .navbar-start>.navbar-item,.navbar.is-link .navbar-start .navbar-link,.navbar.is-link .navbar-end>.navbar-item,.navbar.is-link .navbar-end .navbar-link{color:#fff}.navbar.is-link .navbar-start>a.navbar-item:focus,.navbar.is-link .navbar-start>a.navbar-item:hover,.navbar.is-link .navbar-start>a.navbar-item.is-active,.navbar.is-link .navbar-start .navbar-link:focus,.navbar.is-link .navbar-start .navbar-link:hover,.navbar.is-link .navbar-start .navbar-link.is-active,.navbar.is-link .navbar-end>a.navbar-item:focus,.navbar.is-link .navbar-end>a.navbar-item:hover,.navbar.is-link .navbar-end>a.navbar-item.is-active,.navbar.is-link .navbar-end .navbar-link:focus,.navbar.is-link .navbar-end .navbar-link:hover,.navbar.is-link .navbar-end .navbar-link.is-active{background-color:#3a51bb;color:#fff}.navbar.is-link .navbar-start .navbar-link::after,.navbar.is-link .navbar-end .navbar-link::after{border-color:#fff}.navbar.is-link .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-link .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-link .navbar-item.has-dropdown.is-active .navbar-link{background-color:#3a51bb;color:#fff}.navbar.is-link .navbar-dropdown a.navbar-item.is-active{background-color:#485fc7;color:#fff}}.navbar.is-info{background-color:#3e8ed0;color:#fff}.navbar.is-info .navbar-brand>.navbar-item,.navbar.is-info .navbar-brand .navbar-link{color:#fff}.navbar.is-info .navbar-brand>a.navbar-item:focus,.navbar.is-info .navbar-brand>a.navbar-item:hover,.navbar.is-info .navbar-brand>a.navbar-item.is-active,.navbar.is-info .navbar-brand .navbar-link:focus,.navbar.is-info .navbar-brand .navbar-link:hover,.navbar.is-info .navbar-brand .navbar-link.is-active{background-color:#3082c5;color:#fff}.navbar.is-info .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-info .navbar-burger{color:#fff}@media screen and (min-width: 550px){.navbar.is-info .navbar-start>.navbar-item,.navbar.is-info .navbar-start .navbar-link,.navbar.is-info .navbar-end>.navbar-item,.navbar.is-info .navbar-end .navbar-link{color:#fff}.navbar.is-info .navbar-start>a.navbar-item:focus,.navbar.is-info .navbar-start>a.navbar-item:hover,.navbar.is-info .navbar-start>a.navbar-item.is-active,.navbar.is-info .navbar-start .navbar-link:focus,.navbar.is-info .navbar-start .navbar-link:hover,.navbar.is-info .navbar-start .navbar-link.is-active,.navbar.is-info .navbar-end>a.navbar-item:focus,.navbar.is-info .navbar-end>a.navbar-item:hover,.navbar.is-info .navbar-end>a.navbar-item.is-active,.navbar.is-info .navbar-end .navbar-link:focus,.navbar.is-info .navbar-end .navbar-link:hover,.navbar.is-info .navbar-end .navbar-link.is-active{background-color:#3082c5;color:#fff}.navbar.is-info .navbar-start .navbar-link::after,.navbar.is-info .navbar-end .navbar-link::after{border-color:#fff}.navbar.is-info .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-info .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-info .navbar-item.has-dropdown.is-active .navbar-link{background-color:#3082c5;color:#fff}.navbar.is-info .navbar-dropdown a.navbar-item.is-active{background-color:#3e8ed0;color:#fff}}.navbar.is-success{background-color:#48c78e;color:#fff}.navbar.is-success .navbar-brand>.navbar-item,.navbar.is-success .navbar-brand .navbar-link{color:#fff}.navbar.is-success .navbar-brand>a.navbar-item:focus,.navbar.is-success .navbar-brand>a.navbar-item:hover,.navbar.is-success .navbar-brand>a.navbar-item.is-active,.navbar.is-success .navbar-brand .navbar-link:focus,.navbar.is-success .navbar-brand .navbar-link:hover,.navbar.is-success .navbar-brand .navbar-link.is-active{background-color:#3abb81;color:#fff}.navbar.is-success .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-success .navbar-burger{color:#fff}@media screen and (min-width: 550px){.navbar.is-success .navbar-start>.navbar-item,.navbar.is-success .navbar-start .navbar-link,.navbar.is-success .navbar-end>.navbar-item,.navbar.is-success .navbar-end .navbar-link{color:#fff}.navbar.is-success .navbar-start>a.navbar-item:focus,.navbar.is-success .navbar-start>a.navbar-item:hover,.navbar.is-success .navbar-start>a.navbar-item.is-active,.navbar.is-success .navbar-start .navbar-link:focus,.navbar.is-success .navbar-start .navbar-link:hover,.navbar.is-success .navbar-start .navbar-link.is-active,.navbar.is-success .navbar-end>a.navbar-item:focus,.navbar.is-success .navbar-end>a.navbar-item:hover,.navbar.is-success .navbar-end>a.navbar-item.is-active,.navbar.is-success .navbar-end .navbar-link:focus,.navbar.is-success .navbar-end .navbar-link:hover,.navbar.is-success .navbar-end .navbar-link.is-active{background-color:#3abb81;color:#fff}.navbar.is-success .navbar-start .navbar-link::after,.navbar.is-success .navbar-end .navbar-link::after{border-color:#fff}.navbar.is-success .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-success .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-success .navbar-item.has-dropdown.is-active .navbar-link{background-color:#3abb81;color:#fff}.navbar.is-success .navbar-dropdown a.navbar-item.is-active{background-color:#48c78e;color:#fff}}.navbar.is-warning{background-color:#ffe08a;color:rgba(0,0,0,.7)}.navbar.is-warning .navbar-brand>.navbar-item,.navbar.is-warning .navbar-brand .navbar-link{color:rgba(0,0,0,.7)}.navbar.is-warning .navbar-brand>a.navbar-item:focus,.navbar.is-warning .navbar-brand>a.navbar-item:hover,.navbar.is-warning .navbar-brand>a.navbar-item.is-active,.navbar.is-warning .navbar-brand .navbar-link:focus,.navbar.is-warning .navbar-brand .navbar-link:hover,.navbar.is-warning .navbar-brand .navbar-link.is-active{background-color:#ffd970;color:rgba(0,0,0,.7)}.navbar.is-warning .navbar-brand .navbar-link::after{border-color:rgba(0,0,0,.7)}.navbar.is-warning .navbar-burger{color:rgba(0,0,0,.7)}@media screen and (min-width: 550px){.navbar.is-warning .navbar-start>.navbar-item,.navbar.is-warning .navbar-start .navbar-link,.navbar.is-warning .navbar-end>.navbar-item,.navbar.is-warning .navbar-end .navbar-link{color:rgba(0,0,0,.7)}.navbar.is-warning .navbar-start>a.navbar-item:focus,.navbar.is-warning .navbar-start>a.navbar-item:hover,.navbar.is-warning .navbar-start>a.navbar-item.is-active,.navbar.is-warning .navbar-start .navbar-link:focus,.navbar.is-warning .navbar-start .navbar-link:hover,.navbar.is-warning .navbar-start .navbar-link.is-active,.navbar.is-warning .navbar-end>a.navbar-item:focus,.navbar.is-warning .navbar-end>a.navbar-item:hover,.navbar.is-warning .navbar-end>a.navbar-item.is-active,.navbar.is-warning .navbar-end .navbar-link:focus,.navbar.is-warning .navbar-end .navbar-link:hover,.navbar.is-warning .navbar-end .navbar-link.is-active{background-color:#ffd970;color:rgba(0,0,0,.7)}.navbar.is-warning .navbar-start .navbar-link::after,.navbar.is-warning .navbar-end .navbar-link::after{border-color:rgba(0,0,0,.7)}.navbar.is-warning .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-warning .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-warning .navbar-item.has-dropdown.is-active .navbar-link{background-color:#ffd970;color:rgba(0,0,0,.7)}.navbar.is-warning .navbar-dropdown a.navbar-item.is-active{background-color:#ffe08a;color:rgba(0,0,0,.7)}}.navbar.is-danger{background-color:#f14668;color:#fff}.navbar.is-danger .navbar-brand>.navbar-item,.navbar.is-danger .navbar-brand .navbar-link{color:#fff}.navbar.is-danger .navbar-brand>a.navbar-item:focus,.navbar.is-danger .navbar-brand>a.navbar-item:hover,.navbar.is-danger .navbar-brand>a.navbar-item.is-active,.navbar.is-danger .navbar-brand .navbar-link:focus,.navbar.is-danger .navbar-brand .navbar-link:hover,.navbar.is-danger .navbar-brand .navbar-link.is-active{background-color:#ef2e55;color:#fff}.navbar.is-danger .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-danger .navbar-burger{color:#fff}@media screen and (min-width: 550px){.navbar.is-danger .navbar-start>.navbar-item,.navbar.is-danger .navbar-start .navbar-link,.navbar.is-danger .navbar-end>.navbar-item,.navbar.is-danger .navbar-end .navbar-link{color:#fff}.navbar.is-danger .navbar-start>a.navbar-item:focus,.navbar.is-danger .navbar-start>a.navbar-item:hover,.navbar.is-danger .navbar-start>a.navbar-item.is-active,.navbar.is-danger .navbar-start .navbar-link:focus,.navbar.is-danger .navbar-start .navbar-link:hover,.navbar.is-danger .navbar-start .navbar-link.is-active,.navbar.is-danger .navbar-end>a.navbar-item:focus,.navbar.is-danger .navbar-end>a.navbar-item:hover,.navbar.is-danger .navbar-end>a.navbar-item.is-active,.navbar.is-danger .navbar-end .navbar-link:focus,.navbar.is-danger .navbar-end .navbar-link:hover,.navbar.is-danger .navbar-end .navbar-link.is-active{background-color:#ef2e55;color:#fff}.navbar.is-danger .navbar-start .navbar-link::after,.navbar.is-danger .navbar-end .navbar-link::after{border-color:#fff}.navbar.is-danger .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-danger .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-danger .navbar-item.has-dropdown.is-active .navbar-link{background-color:#ef2e55;color:#fff}.navbar.is-danger .navbar-dropdown a.navbar-item.is-active{background-color:#f14668;color:#fff}}.navbar>.container{align-items:stretch;display:flex;min-height:3.25rem;width:100%}.navbar.has-shadow{box-shadow:0 2px 0 0 #f5f5f5}.navbar.is-fixed-bottom,.navbar.is-fixed-top{left:0;position:fixed;right:0;z-index:30}.navbar.is-fixed-bottom{bottom:0}.navbar.is-fixed-bottom.has-shadow{box-shadow:0 -2px 0 0 #f5f5f5}.navbar.is-fixed-top{top:0}html.has-navbar-fixed-top,body.has-navbar-fixed-top{padding-top:3.25rem}html.has-navbar-fixed-bottom,body.has-navbar-fixed-bottom{padding-bottom:3.25rem}.navbar-brand,.navbar-tabs{align-items:stretch;display:flex;flex-shrink:0;min-height:3.25rem}.navbar-brand a.navbar-item:focus,.navbar-brand a.navbar-item:hover{background-color:transparent}.navbar-tabs{-webkit-overflow-scrolling:touch;max-width:100vw;overflow-x:auto;overflow-y:hidden}.navbar-burger{color:#4a4a4a;cursor:pointer;display:block;height:3.25rem;position:relative;width:3.25rem;margin-left:auto}.navbar-burger span{background-color:currentColor;display:block;height:1px;left:calc(50% - 8px);position:absolute;transform-origin:center;transition-duration:86ms;transition-property:background-color,opacity,transform;transition-timing-function:ease-out;width:16px}.navbar-burger span:nth-child(1){top:calc(50% - 6px)}.navbar-burger span:nth-child(2){top:calc(50% - 1px)}.navbar-burger span:nth-child(3){top:calc(50% + 4px)}.navbar-burger:hover{background-color:rgba(0,0,0,.05)}.navbar-burger.is-active span:nth-child(1){transform:translateY(5px) rotate(45deg)}.navbar-burger.is-active span:nth-child(2){opacity:0}.navbar-burger.is-active span:nth-child(3){transform:translateY(-5px) rotate(-45deg)}.navbar-menu{display:none}.navbar-item,.navbar-link{color:#4a4a4a;display:block;line-height:1.5;padding:.5rem .75rem;position:relative}.navbar-item .icon:only-child,.navbar-link .icon:only-child{margin-left:-0.25rem;margin-right:-0.25rem}a.navbar-item,.navbar-link{cursor:pointer}a.navbar-item:focus,a.navbar-item:focus-within,a.navbar-item:hover,a.navbar-item.is-active,.navbar-link:focus,.navbar-link:focus-within,.navbar-link:hover,.navbar-link.is-active{background-color:#fafafa;color:#485fc7}.navbar-item{flex-grow:0;flex-shrink:0}.navbar-item img{max-height:1.75rem}.navbar-item.has-dropdown{padding:0}.navbar-item.is-expanded{flex-grow:1;flex-shrink:1}.navbar-item.is-tab{border-bottom:1px solid transparent;min-height:3.25rem;padding-bottom:calc(.5rem - 1px)}.navbar-item.is-tab:focus,.navbar-item.is-tab:hover{background-color:transparent;border-bottom-color:#485fc7}.navbar-item.is-tab.is-active{background-color:transparent;border-bottom-color:#485fc7;border-bottom-style:solid;border-bottom-width:3px;color:#485fc7;padding-bottom:calc(0.5rem - 3px)}.navbar-content{flex-grow:1;flex-shrink:1}.navbar-link:not(.is-arrowless){padding-right:2.5em}.navbar-link:not(.is-arrowless)::after{border-color:#485fc7;margin-top:-0.375em;right:1.125em}.navbar-dropdown{font-size:.875rem;padding-bottom:.5rem;padding-top:.5rem}.navbar-dropdown .navbar-item{padding-left:1.5rem;padding-right:1.5rem}.navbar-divider{background-color:#f5f5f5;border:none;display:none;height:2px;margin:.5rem 0}@media screen and (max-width: 549px){.navbar>.container{display:block}.navbar-brand .navbar-item,.navbar-tabs .navbar-item{align-items:center;display:flex}.navbar-link::after{display:none}.navbar-menu{background-color:#fff;box-shadow:0 8px 16px rgba(10,10,10,.1);padding:.5rem 0}.navbar-menu.is-active{display:block}.navbar.is-fixed-bottom-touch,.navbar.is-fixed-top-touch{left:0;position:fixed;right:0;z-index:30}.navbar.is-fixed-bottom-touch{bottom:0}.navbar.is-fixed-bottom-touch.has-shadow{box-shadow:0 -2px 3px rgba(10,10,10,.1)}.navbar.is-fixed-top-touch{top:0}.navbar.is-fixed-top .navbar-menu,.navbar.is-fixed-top-touch .navbar-menu{-webkit-overflow-scrolling:touch;max-height:calc(100vh - 3.25rem);overflow:auto}html.has-navbar-fixed-top-touch,body.has-navbar-fixed-top-touch{padding-top:3.25rem}html.has-navbar-fixed-bottom-touch,body.has-navbar-fixed-bottom-touch{padding-bottom:3.25rem}}@media screen and (min-width: 550px){.navbar,.navbar-menu,.navbar-start,.navbar-end{align-items:stretch;display:flex}.navbar{min-height:3.25rem}.navbar.is-spaced{padding:1rem 2rem}.navbar.is-spaced .navbar-start,.navbar.is-spaced .navbar-end{align-items:center}.navbar.is-spaced a.navbar-item,.navbar.is-spaced .navbar-link{border-radius:4px}.navbar.is-transparent a.navbar-item:focus,.navbar.is-transparent a.navbar-item:hover,.navbar.is-transparent a.navbar-item.is-active,.navbar.is-transparent .navbar-link:focus,.navbar.is-transparent .navbar-link:hover,.navbar.is-transparent .navbar-link.is-active{background-color:transparent !important}.navbar.is-transparent .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:focus .navbar-link,.navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:focus-within .navbar-link,.navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:hover .navbar-link{background-color:transparent !important}.navbar.is-transparent .navbar-dropdown a.navbar-item:focus,.navbar.is-transparent .navbar-dropdown a.navbar-item:hover{background-color:#f5f5f5;color:#0a0a0a}.navbar.is-transparent .navbar-dropdown a.navbar-item.is-active{background-color:#f5f5f5;color:#485fc7}.navbar-burger{display:none}.navbar-item,.navbar-link{align-items:center;display:flex}.navbar-item.has-dropdown{align-items:stretch}.navbar-item.has-dropdown-up .navbar-link::after{transform:rotate(135deg) translate(0.25em, -0.25em)}.navbar-item.has-dropdown-up .navbar-dropdown{border-bottom:2px solid #dbdbdb;border-radius:6px 6px 0 0;border-top:none;bottom:100%;box-shadow:0 -8px 8px rgba(10,10,10,.1);top:auto}.navbar-item.is-active .navbar-dropdown,.navbar-item.is-hoverable:focus .navbar-dropdown,.navbar-item.is-hoverable:focus-within .navbar-dropdown,.navbar-item.is-hoverable:hover .navbar-dropdown{display:block}.navbar.is-spaced .navbar-item.is-active .navbar-dropdown,.navbar-item.is-active .navbar-dropdown.is-boxed,.navbar.is-spaced .navbar-item.is-hoverable:focus .navbar-dropdown,.navbar-item.is-hoverable:focus .navbar-dropdown.is-boxed,.navbar.is-spaced .navbar-item.is-hoverable:focus-within .navbar-dropdown,.navbar-item.is-hoverable:focus-within .navbar-dropdown.is-boxed,.navbar.is-spaced .navbar-item.is-hoverable:hover .navbar-dropdown,.navbar-item.is-hoverable:hover .navbar-dropdown.is-boxed{opacity:1;pointer-events:auto;transform:translateY(0)}.navbar-menu{flex-grow:1;flex-shrink:0}.navbar-start{justify-content:flex-start;margin-right:auto}.navbar-end{justify-content:flex-end;margin-left:auto}.navbar-dropdown{background-color:#fff;border-bottom-left-radius:6px;border-bottom-right-radius:6px;border-top:2px solid #dbdbdb;box-shadow:0 8px 8px rgba(10,10,10,.1);display:none;font-size:.875rem;left:0;min-width:100%;position:absolute;top:100%;z-index:20}.navbar-dropdown .navbar-item{padding:.375rem 1rem;white-space:nowrap}.navbar-dropdown a.navbar-item{padding-right:3rem}.navbar-dropdown a.navbar-item:focus,.navbar-dropdown a.navbar-item:hover{background-color:#f5f5f5;color:#0a0a0a}.navbar-dropdown a.navbar-item.is-active{background-color:#f5f5f5;color:#485fc7}.navbar.is-spaced .navbar-dropdown,.navbar-dropdown.is-boxed{border-radius:6px;border-top:none;box-shadow:0 8px 8px rgba(10,10,10,.1),0 0 0 1px rgba(10,10,10,.1);display:block;opacity:0;pointer-events:none;top:calc(100% + (-4px));transform:translateY(-5px);transition-duration:86ms;transition-property:opacity,transform}.navbar-dropdown.is-right{left:auto;right:0}.navbar-divider{display:block}.navbar>.container .navbar-brand,.container>.navbar .navbar-brand{margin-left:-0.75rem}.navbar>.container .navbar-menu,.container>.navbar .navbar-menu{margin-right:-0.75rem}.navbar.is-fixed-bottom-desktop,.navbar.is-fixed-top-desktop{left:0;position:fixed;right:0;z-index:30}.navbar.is-fixed-bottom-desktop{bottom:0}.navbar.is-fixed-bottom-desktop.has-shadow{box-shadow:0 -2px 3px rgba(10,10,10,.1)}.navbar.is-fixed-top-desktop{top:0}html.has-navbar-fixed-top-desktop,body.has-navbar-fixed-top-desktop{padding-top:3.25rem}html.has-navbar-fixed-bottom-desktop,body.has-navbar-fixed-bottom-desktop{padding-bottom:3.25rem}html.has-spaced-navbar-fixed-top,body.has-spaced-navbar-fixed-top{padding-top:5.25rem}html.has-spaced-navbar-fixed-bottom,body.has-spaced-navbar-fixed-bottom{padding-bottom:5.25rem}a.navbar-item.is-active,.navbar-link.is-active{color:#0a0a0a}a.navbar-item.is-active:not(:focus):not(:hover),.navbar-link.is-active:not(:focus):not(:hover){background-color:transparent}.navbar-item.has-dropdown:focus .navbar-link,.navbar-item.has-dropdown:hover .navbar-link,.navbar-item.has-dropdown.is-active .navbar-link{background-color:#fafafa}}.hero.is-fullheight-with-navbar{min-height:calc(100vh - 3.25rem)}.pagination{font-size:1rem;margin:-0.25rem}.pagination.is-small{font-size:.75rem}.pagination.is-medium{font-size:1.25rem}.pagination.is-large{font-size:1.5rem}.pagination.is-rounded .pagination-previous,.pagination.is-rounded .pagination-next{padding-left:1em;padding-right:1em;border-radius:9999px}.pagination.is-rounded .pagination-link{border-radius:9999px}.pagination,.pagination-list{align-items:center;display:flex;justify-content:center;text-align:center}.pagination-previous,.pagination-next,.pagination-link,.pagination-ellipsis{font-size:1em;justify-content:center;margin:.25rem;padding-left:.5em;padding-right:.5em;text-align:center}.pagination-previous,.pagination-next,.pagination-link{border-color:#dbdbdb;color:#363636;min-width:2.5em}.pagination-previous:hover,.pagination-next:hover,.pagination-link:hover{border-color:#b5b5b5;color:#363636}.pagination-previous:focus,.pagination-next:focus,.pagination-link:focus{border-color:#485fc7}.pagination-previous:active,.pagination-next:active,.pagination-link:active{box-shadow:inset 0 1px 2px rgba(10,10,10,.2)}.pagination-previous[disabled],.pagination-next[disabled],.pagination-link[disabled]{background-color:#dbdbdb;border-color:#dbdbdb;box-shadow:none;color:#7a7a7a;opacity:.5}.pagination-previous,.pagination-next{padding-left:.75em;padding-right:.75em;white-space:nowrap}.pagination-link.is-current{background-color:#485fc7;border-color:#485fc7;color:#fff}.pagination-ellipsis{color:#b5b5b5;pointer-events:none}.pagination-list{flex-wrap:wrap}.pagination-list li{list-style:none}@media screen and (max-width: 768px){.pagination{flex-wrap:wrap}.pagination-previous,.pagination-next{flex-grow:1;flex-shrink:1}.pagination-list li{flex-grow:1;flex-shrink:1}}@media screen and (min-width: 769px),print{.pagination-list{flex-grow:1;flex-shrink:1;justify-content:flex-start;order:1}.pagination-previous,.pagination-next,.pagination-link,.pagination-ellipsis{margin-bottom:0;margin-top:0}.pagination-previous{order:2}.pagination-next{order:3}.pagination{justify-content:space-between;margin-bottom:0;margin-top:0}.pagination.is-centered .pagination-previous{order:1}.pagination.is-centered .pagination-list{justify-content:center;order:2}.pagination.is-centered .pagination-next{order:3}.pagination.is-right .pagination-previous{order:1}.pagination.is-right .pagination-next{order:2}.pagination.is-right .pagination-list{justify-content:flex-end;order:3}}.panel{border-radius:6px;box-shadow:0 .5em 1em -0.125em rgba(10,10,10,.1),0 0px 0 1px rgba(10,10,10,.02);font-size:1rem}.panel:not(:last-child){margin-bottom:1.5rem}.panel.is-white .panel-heading{background-color:#fff;color:#0a0a0a}.panel.is-white .panel-tabs a.is-active{border-bottom-color:#fff}.panel.is-white .panel-block.is-active .panel-icon{color:#fff}.panel.is-black .panel-heading{background-color:#0a0a0a;color:#fff}.panel.is-black .panel-tabs a.is-active{border-bottom-color:#0a0a0a}.panel.is-black .panel-block.is-active .panel-icon{color:#0a0a0a}.panel.is-light .panel-heading{background-color:#f5f5f5;color:rgba(0,0,0,.7)}.panel.is-light .panel-tabs a.is-active{border-bottom-color:#f5f5f5}.panel.is-light .panel-block.is-active .panel-icon{color:#f5f5f5}.panel.is-dark .panel-heading{background-color:#363636;color:#fff}.panel.is-dark .panel-tabs a.is-active{border-bottom-color:#363636}.panel.is-dark .panel-block.is-active .panel-icon{color:#363636}.panel.is-primary .panel-heading{background-color:#00d1b2;color:#fff}.panel.is-primary .panel-tabs a.is-active{border-bottom-color:#00d1b2}.panel.is-primary .panel-block.is-active .panel-icon{color:#00d1b2}.panel.is-link .panel-heading{background-color:#485fc7;color:#fff}.panel.is-link .panel-tabs a.is-active{border-bottom-color:#485fc7}.panel.is-link .panel-block.is-active .panel-icon{color:#485fc7}.panel.is-info .panel-heading{background-color:#3e8ed0;color:#fff}.panel.is-info .panel-tabs a.is-active{border-bottom-color:#3e8ed0}.panel.is-info .panel-block.is-active .panel-icon{color:#3e8ed0}.panel.is-success .panel-heading{background-color:#48c78e;color:#fff}.panel.is-success .panel-tabs a.is-active{border-bottom-color:#48c78e}.panel.is-success .panel-block.is-active .panel-icon{color:#48c78e}.panel.is-warning .panel-heading{background-color:#ffe08a;color:rgba(0,0,0,.7)}.panel.is-warning .panel-tabs a.is-active{border-bottom-color:#ffe08a}.panel.is-warning .panel-block.is-active .panel-icon{color:#ffe08a}.panel.is-danger .panel-heading{background-color:#f14668;color:#fff}.panel.is-danger .panel-tabs a.is-active{border-bottom-color:#f14668}.panel.is-danger .panel-block.is-active .panel-icon{color:#f14668}.panel-tabs:not(:last-child),.panel-block:not(:last-child){border-bottom:1px solid #ededed}.panel-heading{background-color:#ededed;border-radius:6px 6px 0 0;color:#363636;font-size:1.25em;font-weight:700;line-height:1.25;padding:.75em 1em}.panel-tabs{align-items:flex-end;display:flex;font-size:.875em;justify-content:center}.panel-tabs a{border-bottom:1px solid #dbdbdb;margin-bottom:-1px;padding:.5em}.panel-tabs a.is-active{border-bottom-color:#4a4a4a;color:#363636}.panel-list a{color:#4a4a4a}.panel-list a:hover{color:#485fc7}.panel-block{align-items:center;color:#363636;display:flex;justify-content:flex-start;padding:.5em .75em}.panel-block input[type=checkbox]{margin-right:.75em}.panel-block>.control{flex-grow:1;flex-shrink:1;width:100%}.panel-block.is-wrapped{flex-wrap:wrap}.panel-block.is-active{border-left-color:#485fc7;color:#363636}.panel-block.is-active .panel-icon{color:#485fc7}.panel-block:last-child{border-bottom-left-radius:6px;border-bottom-right-radius:6px}a.panel-block,label.panel-block{cursor:pointer}a.panel-block:hover,label.panel-block:hover{background-color:#f5f5f5}.panel-icon{display:inline-block;font-size:14px;height:1em;line-height:1em;text-align:center;vertical-align:top;width:1em;color:#7a7a7a;margin-right:.75em}.panel-icon .fa{font-size:inherit;line-height:inherit}.tabs{-webkit-overflow-scrolling:touch;align-items:stretch;display:flex;font-size:1rem;justify-content:space-between;overflow:hidden;overflow-x:auto;white-space:nowrap}.tabs a{align-items:center;border-bottom-color:#dbdbdb;border-bottom-style:solid;border-bottom-width:2px;color:var(--color-secondary);display:flex;justify-content:center;margin-bottom:-2px;padding:.5em 1em;vertical-align:top}.tabs a:hover{border-bottom-color:var(--color-secondary);color:var(--color-secondary)}.tabs li{display:block}.tabs li.is-active a{border-bottom-color:var(--color-primary);color:var(--color-primary)}.tabs ul{align-items:center;border-bottom-color:#dbdbdb;border-bottom-style:solid;border-bottom-width:2px;display:flex;flex-grow:1;flex-shrink:0;justify-content:flex-start}.tabs ul.is-left{padding-right:.75em}.tabs ul.is-center{flex:none;justify-content:center;padding-left:.75em;padding-right:.75em}.tabs ul.is-right{justify-content:flex-end;padding-left:.75em}.tabs .icon:first-child{margin-right:.5em}.tabs .icon:last-child{margin-left:.5em}.tabs.is-centered ul{justify-content:center}.tabs.is-right ul{justify-content:flex-end}.tabs.is-boxed a{border:1px solid transparent;border-radius:4px 4px 0 0}.tabs.is-boxed a:hover{background-color:#f5f5f5;border-bottom-color:#dbdbdb}.tabs.is-boxed li.is-active a{background-color:#fff;border-color:#dbdbdb;border-bottom-color:transparent !important}.tabs.is-fullwidth li{flex-grow:1;flex-shrink:0}.tabs.is-toggle a{border-color:#dbdbdb;border-style:solid;border-width:1px;margin-bottom:0;position:relative}.tabs.is-toggle a:hover{background-color:#f5f5f5;border-color:#b5b5b5;z-index:2}.tabs.is-toggle li+li{margin-left:-1px}.tabs.is-toggle li:first-child a{border-top-left-radius:4px;border-bottom-left-radius:4px}.tabs.is-toggle li:last-child a{border-top-right-radius:4px;border-bottom-right-radius:4px}.tabs.is-toggle li.is-active a{background-color:#485fc7;border-color:#485fc7;color:#fff;z-index:1}.tabs.is-toggle ul{border-bottom:none}.tabs.is-toggle.is-toggle-rounded li:first-child a{border-bottom-left-radius:9999px;border-top-left-radius:9999px;padding-left:1.25em}.tabs.is-toggle.is-toggle-rounded li:last-child a{border-bottom-right-radius:9999px;border-top-right-radius:9999px;padding-right:1.25em}.tabs.is-small{font-size:.75rem}.tabs.is-medium{font-size:1.25rem}.tabs.is-large{font-size:1.5rem}.column{display:block;flex-basis:0;flex-grow:1;flex-shrink:1;padding:.75rem}.columns.is-mobile>.column.is-narrow{flex:none;width:unset}.columns.is-mobile>.column.is-full{flex:none;width:100%}.columns.is-mobile>.column.is-three-quarters{flex:none;width:75%}.columns.is-mobile>.column.is-two-thirds{flex:none;width:66.6666%}.columns.is-mobile>.column.is-half{flex:none;width:50%}.columns.is-mobile>.column.is-one-third{flex:none;width:33.3333%}.columns.is-mobile>.column.is-one-quarter{flex:none;width:25%}.columns.is-mobile>.column.is-one-fifth{flex:none;width:20%}.columns.is-mobile>.column.is-two-fifths{flex:none;width:40%}.columns.is-mobile>.column.is-three-fifths{flex:none;width:60%}.columns.is-mobile>.column.is-four-fifths{flex:none;width:80%}.columns.is-mobile>.column.is-offset-three-quarters{margin-left:75%}.columns.is-mobile>.column.is-offset-two-thirds{margin-left:66.6666%}.columns.is-mobile>.column.is-offset-half{margin-left:50%}.columns.is-mobile>.column.is-offset-one-third{margin-left:33.3333%}.columns.is-mobile>.column.is-offset-one-quarter{margin-left:25%}.columns.is-mobile>.column.is-offset-one-fifth{margin-left:20%}.columns.is-mobile>.column.is-offset-two-fifths{margin-left:40%}.columns.is-mobile>.column.is-offset-three-fifths{margin-left:60%}.columns.is-mobile>.column.is-offset-four-fifths{margin-left:80%}.columns.is-mobile>.column.is-0{flex:none;width:0%}.columns.is-mobile>.column.is-offset-0{margin-left:0%}.columns.is-mobile>.column.is-1{flex:none;width:8.33333337%}.columns.is-mobile>.column.is-offset-1{margin-left:8.33333337%}.columns.is-mobile>.column.is-2{flex:none;width:16.66666674%}.columns.is-mobile>.column.is-offset-2{margin-left:16.66666674%}.columns.is-mobile>.column.is-3{flex:none;width:25%}.columns.is-mobile>.column.is-offset-3{margin-left:25%}.columns.is-mobile>.column.is-4{flex:none;width:33.33333337%}.columns.is-mobile>.column.is-offset-4{margin-left:33.33333337%}.columns.is-mobile>.column.is-5{flex:none;width:41.66666674%}.columns.is-mobile>.column.is-offset-5{margin-left:41.66666674%}.columns.is-mobile>.column.is-6{flex:none;width:50%}.columns.is-mobile>.column.is-offset-6{margin-left:50%}.columns.is-mobile>.column.is-7{flex:none;width:58.33333337%}.columns.is-mobile>.column.is-offset-7{margin-left:58.33333337%}.columns.is-mobile>.column.is-8{flex:none;width:66.66666674%}.columns.is-mobile>.column.is-offset-8{margin-left:66.66666674%}.columns.is-mobile>.column.is-9{flex:none;width:75%}.columns.is-mobile>.column.is-offset-9{margin-left:75%}.columns.is-mobile>.column.is-10{flex:none;width:83.33333337%}.columns.is-mobile>.column.is-offset-10{margin-left:83.33333337%}.columns.is-mobile>.column.is-11{flex:none;width:91.66666674%}.columns.is-mobile>.column.is-offset-11{margin-left:91.66666674%}.columns.is-mobile>.column.is-12{flex:none;width:100%}.columns.is-mobile>.column.is-offset-12{margin-left:100%}@media screen and (max-width: 768px){.column.is-narrow-mobile{flex:none;width:unset}.column.is-full-mobile{flex:none;width:100%}.column.is-three-quarters-mobile{flex:none;width:75%}.column.is-two-thirds-mobile{flex:none;width:66.6666%}.column.is-half-mobile{flex:none;width:50%}.column.is-one-third-mobile{flex:none;width:33.3333%}.column.is-one-quarter-mobile{flex:none;width:25%}.column.is-one-fifth-mobile{flex:none;width:20%}.column.is-two-fifths-mobile{flex:none;width:40%}.column.is-three-fifths-mobile{flex:none;width:60%}.column.is-four-fifths-mobile{flex:none;width:80%}.column.is-offset-three-quarters-mobile{margin-left:75%}.column.is-offset-two-thirds-mobile{margin-left:66.6666%}.column.is-offset-half-mobile{margin-left:50%}.column.is-offset-one-third-mobile{margin-left:33.3333%}.column.is-offset-one-quarter-mobile{margin-left:25%}.column.is-offset-one-fifth-mobile{margin-left:20%}.column.is-offset-two-fifths-mobile{margin-left:40%}.column.is-offset-three-fifths-mobile{margin-left:60%}.column.is-offset-four-fifths-mobile{margin-left:80%}.column.is-0-mobile{flex:none;width:0%}.column.is-offset-0-mobile{margin-left:0%}.column.is-1-mobile{flex:none;width:8.33333337%}.column.is-offset-1-mobile{margin-left:8.33333337%}.column.is-2-mobile{flex:none;width:16.66666674%}.column.is-offset-2-mobile{margin-left:16.66666674%}.column.is-3-mobile{flex:none;width:25%}.column.is-offset-3-mobile{margin-left:25%}.column.is-4-mobile{flex:none;width:33.33333337%}.column.is-offset-4-mobile{margin-left:33.33333337%}.column.is-5-mobile{flex:none;width:41.66666674%}.column.is-offset-5-mobile{margin-left:41.66666674%}.column.is-6-mobile{flex:none;width:50%}.column.is-offset-6-mobile{margin-left:50%}.column.is-7-mobile{flex:none;width:58.33333337%}.column.is-offset-7-mobile{margin-left:58.33333337%}.column.is-8-mobile{flex:none;width:66.66666674%}.column.is-offset-8-mobile{margin-left:66.66666674%}.column.is-9-mobile{flex:none;width:75%}.column.is-offset-9-mobile{margin-left:75%}.column.is-10-mobile{flex:none;width:83.33333337%}.column.is-offset-10-mobile{margin-left:83.33333337%}.column.is-11-mobile{flex:none;width:91.66666674%}.column.is-offset-11-mobile{margin-left:91.66666674%}.column.is-12-mobile{flex:none;width:100%}.column.is-offset-12-mobile{margin-left:100%}}@media screen and (min-width: 769px),print{.column.is-narrow,.column.is-narrow-tablet{flex:none;width:unset}.column.is-full,.column.is-full-tablet{flex:none;width:100%}.column.is-three-quarters,.column.is-three-quarters-tablet{flex:none;width:75%}.column.is-two-thirds,.column.is-two-thirds-tablet{flex:none;width:66.6666%}.column.is-half,.column.is-half-tablet{flex:none;width:50%}.column.is-one-third,.column.is-one-third-tablet{flex:none;width:33.3333%}.column.is-one-quarter,.column.is-one-quarter-tablet{flex:none;width:25%}.column.is-one-fifth,.column.is-one-fifth-tablet{flex:none;width:20%}.column.is-two-fifths,.column.is-two-fifths-tablet{flex:none;width:40%}.column.is-three-fifths,.column.is-three-fifths-tablet{flex:none;width:60%}.column.is-four-fifths,.column.is-four-fifths-tablet{flex:none;width:80%}.column.is-offset-three-quarters,.column.is-offset-three-quarters-tablet{margin-left:75%}.column.is-offset-two-thirds,.column.is-offset-two-thirds-tablet{margin-left:66.6666%}.column.is-offset-half,.column.is-offset-half-tablet{margin-left:50%}.column.is-offset-one-third,.column.is-offset-one-third-tablet{margin-left:33.3333%}.column.is-offset-one-quarter,.column.is-offset-one-quarter-tablet{margin-left:25%}.column.is-offset-one-fifth,.column.is-offset-one-fifth-tablet{margin-left:20%}.column.is-offset-two-fifths,.column.is-offset-two-fifths-tablet{margin-left:40%}.column.is-offset-three-fifths,.column.is-offset-three-fifths-tablet{margin-left:60%}.column.is-offset-four-fifths,.column.is-offset-four-fifths-tablet{margin-left:80%}.column.is-0,.column.is-0-tablet{flex:none;width:0%}.column.is-offset-0,.column.is-offset-0-tablet{margin-left:0%}.column.is-1,.column.is-1-tablet{flex:none;width:8.33333337%}.column.is-offset-1,.column.is-offset-1-tablet{margin-left:8.33333337%}.column.is-2,.column.is-2-tablet{flex:none;width:16.66666674%}.column.is-offset-2,.column.is-offset-2-tablet{margin-left:16.66666674%}.column.is-3,.column.is-3-tablet{flex:none;width:25%}.column.is-offset-3,.column.is-offset-3-tablet{margin-left:25%}.column.is-4,.column.is-4-tablet{flex:none;width:33.33333337%}.column.is-offset-4,.column.is-offset-4-tablet{margin-left:33.33333337%}.column.is-5,.column.is-5-tablet{flex:none;width:41.66666674%}.column.is-offset-5,.column.is-offset-5-tablet{margin-left:41.66666674%}.column.is-6,.column.is-6-tablet{flex:none;width:50%}.column.is-offset-6,.column.is-offset-6-tablet{margin-left:50%}.column.is-7,.column.is-7-tablet{flex:none;width:58.33333337%}.column.is-offset-7,.column.is-offset-7-tablet{margin-left:58.33333337%}.column.is-8,.column.is-8-tablet{flex:none;width:66.66666674%}.column.is-offset-8,.column.is-offset-8-tablet{margin-left:66.66666674%}.column.is-9,.column.is-9-tablet{flex:none;width:75%}.column.is-offset-9,.column.is-offset-9-tablet{margin-left:75%}.column.is-10,.column.is-10-tablet{flex:none;width:83.33333337%}.column.is-offset-10,.column.is-offset-10-tablet{margin-left:83.33333337%}.column.is-11,.column.is-11-tablet{flex:none;width:91.66666674%}.column.is-offset-11,.column.is-offset-11-tablet{margin-left:91.66666674%}.column.is-12,.column.is-12-tablet{flex:none;width:100%}.column.is-offset-12,.column.is-offset-12-tablet{margin-left:100%}}@media screen and (max-width: 1023px){.column.is-narrow-touch{flex:none;width:unset}.column.is-full-touch{flex:none;width:100%}.column.is-three-quarters-touch{flex:none;width:75%}.column.is-two-thirds-touch{flex:none;width:66.6666%}.column.is-half-touch{flex:none;width:50%}.column.is-one-third-touch{flex:none;width:33.3333%}.column.is-one-quarter-touch{flex:none;width:25%}.column.is-one-fifth-touch{flex:none;width:20%}.column.is-two-fifths-touch{flex:none;width:40%}.column.is-three-fifths-touch{flex:none;width:60%}.column.is-four-fifths-touch{flex:none;width:80%}.column.is-offset-three-quarters-touch{margin-left:75%}.column.is-offset-two-thirds-touch{margin-left:66.6666%}.column.is-offset-half-touch{margin-left:50%}.column.is-offset-one-third-touch{margin-left:33.3333%}.column.is-offset-one-quarter-touch{margin-left:25%}.column.is-offset-one-fifth-touch{margin-left:20%}.column.is-offset-two-fifths-touch{margin-left:40%}.column.is-offset-three-fifths-touch{margin-left:60%}.column.is-offset-four-fifths-touch{margin-left:80%}.column.is-0-touch{flex:none;width:0%}.column.is-offset-0-touch{margin-left:0%}.column.is-1-touch{flex:none;width:8.33333337%}.column.is-offset-1-touch{margin-left:8.33333337%}.column.is-2-touch{flex:none;width:16.66666674%}.column.is-offset-2-touch{margin-left:16.66666674%}.column.is-3-touch{flex:none;width:25%}.column.is-offset-3-touch{margin-left:25%}.column.is-4-touch{flex:none;width:33.33333337%}.column.is-offset-4-touch{margin-left:33.33333337%}.column.is-5-touch{flex:none;width:41.66666674%}.column.is-offset-5-touch{margin-left:41.66666674%}.column.is-6-touch{flex:none;width:50%}.column.is-offset-6-touch{margin-left:50%}.column.is-7-touch{flex:none;width:58.33333337%}.column.is-offset-7-touch{margin-left:58.33333337%}.column.is-8-touch{flex:none;width:66.66666674%}.column.is-offset-8-touch{margin-left:66.66666674%}.column.is-9-touch{flex:none;width:75%}.column.is-offset-9-touch{margin-left:75%}.column.is-10-touch{flex:none;width:83.33333337%}.column.is-offset-10-touch{margin-left:83.33333337%}.column.is-11-touch{flex:none;width:91.66666674%}.column.is-offset-11-touch{margin-left:91.66666674%}.column.is-12-touch{flex:none;width:100%}.column.is-offset-12-touch{margin-left:100%}}@media screen and (min-width: 1024px){.column.is-narrow-desktop{flex:none;width:unset}.column.is-full-desktop{flex:none;width:100%}.column.is-three-quarters-desktop{flex:none;width:75%}.column.is-two-thirds-desktop{flex:none;width:66.6666%}.column.is-half-desktop{flex:none;width:50%}.column.is-one-third-desktop{flex:none;width:33.3333%}.column.is-one-quarter-desktop{flex:none;width:25%}.column.is-one-fifth-desktop{flex:none;width:20%}.column.is-two-fifths-desktop{flex:none;width:40%}.column.is-three-fifths-desktop{flex:none;width:60%}.column.is-four-fifths-desktop{flex:none;width:80%}.column.is-offset-three-quarters-desktop{margin-left:75%}.column.is-offset-two-thirds-desktop{margin-left:66.6666%}.column.is-offset-half-desktop{margin-left:50%}.column.is-offset-one-third-desktop{margin-left:33.3333%}.column.is-offset-one-quarter-desktop{margin-left:25%}.column.is-offset-one-fifth-desktop{margin-left:20%}.column.is-offset-two-fifths-desktop{margin-left:40%}.column.is-offset-three-fifths-desktop{margin-left:60%}.column.is-offset-four-fifths-desktop{margin-left:80%}.column.is-0-desktop{flex:none;width:0%}.column.is-offset-0-desktop{margin-left:0%}.column.is-1-desktop{flex:none;width:8.33333337%}.column.is-offset-1-desktop{margin-left:8.33333337%}.column.is-2-desktop{flex:none;width:16.66666674%}.column.is-offset-2-desktop{margin-left:16.66666674%}.column.is-3-desktop{flex:none;width:25%}.column.is-offset-3-desktop{margin-left:25%}.column.is-4-desktop{flex:none;width:33.33333337%}.column.is-offset-4-desktop{margin-left:33.33333337%}.column.is-5-desktop{flex:none;width:41.66666674%}.column.is-offset-5-desktop{margin-left:41.66666674%}.column.is-6-desktop{flex:none;width:50%}.column.is-offset-6-desktop{margin-left:50%}.column.is-7-desktop{flex:none;width:58.33333337%}.column.is-offset-7-desktop{margin-left:58.33333337%}.column.is-8-desktop{flex:none;width:66.66666674%}.column.is-offset-8-desktop{margin-left:66.66666674%}.column.is-9-desktop{flex:none;width:75%}.column.is-offset-9-desktop{margin-left:75%}.column.is-10-desktop{flex:none;width:83.33333337%}.column.is-offset-10-desktop{margin-left:83.33333337%}.column.is-11-desktop{flex:none;width:91.66666674%}.column.is-offset-11-desktop{margin-left:91.66666674%}.column.is-12-desktop{flex:none;width:100%}.column.is-offset-12-desktop{margin-left:100%}}@media screen and (min-width: 1216px){.column.is-narrow-widescreen{flex:none;width:unset}.column.is-full-widescreen{flex:none;width:100%}.column.is-three-quarters-widescreen{flex:none;width:75%}.column.is-two-thirds-widescreen{flex:none;width:66.6666%}.column.is-half-widescreen{flex:none;width:50%}.column.is-one-third-widescreen{flex:none;width:33.3333%}.column.is-one-quarter-widescreen{flex:none;width:25%}.column.is-one-fifth-widescreen{flex:none;width:20%}.column.is-two-fifths-widescreen{flex:none;width:40%}.column.is-three-fifths-widescreen{flex:none;width:60%}.column.is-four-fifths-widescreen{flex:none;width:80%}.column.is-offset-three-quarters-widescreen{margin-left:75%}.column.is-offset-two-thirds-widescreen{margin-left:66.6666%}.column.is-offset-half-widescreen{margin-left:50%}.column.is-offset-one-third-widescreen{margin-left:33.3333%}.column.is-offset-one-quarter-widescreen{margin-left:25%}.column.is-offset-one-fifth-widescreen{margin-left:20%}.column.is-offset-two-fifths-widescreen{margin-left:40%}.column.is-offset-three-fifths-widescreen{margin-left:60%}.column.is-offset-four-fifths-widescreen{margin-left:80%}.column.is-0-widescreen{flex:none;width:0%}.column.is-offset-0-widescreen{margin-left:0%}.column.is-1-widescreen{flex:none;width:8.33333337%}.column.is-offset-1-widescreen{margin-left:8.33333337%}.column.is-2-widescreen{flex:none;width:16.66666674%}.column.is-offset-2-widescreen{margin-left:16.66666674%}.column.is-3-widescreen{flex:none;width:25%}.column.is-offset-3-widescreen{margin-left:25%}.column.is-4-widescreen{flex:none;width:33.33333337%}.column.is-offset-4-widescreen{margin-left:33.33333337%}.column.is-5-widescreen{flex:none;width:41.66666674%}.column.is-offset-5-widescreen{margin-left:41.66666674%}.column.is-6-widescreen{flex:none;width:50%}.column.is-offset-6-widescreen{margin-left:50%}.column.is-7-widescreen{flex:none;width:58.33333337%}.column.is-offset-7-widescreen{margin-left:58.33333337%}.column.is-8-widescreen{flex:none;width:66.66666674%}.column.is-offset-8-widescreen{margin-left:66.66666674%}.column.is-9-widescreen{flex:none;width:75%}.column.is-offset-9-widescreen{margin-left:75%}.column.is-10-widescreen{flex:none;width:83.33333337%}.column.is-offset-10-widescreen{margin-left:83.33333337%}.column.is-11-widescreen{flex:none;width:91.66666674%}.column.is-offset-11-widescreen{margin-left:91.66666674%}.column.is-12-widescreen{flex:none;width:100%}.column.is-offset-12-widescreen{margin-left:100%}}@media screen and (min-width: 1408px){.column.is-narrow-fullhd{flex:none;width:unset}.column.is-full-fullhd{flex:none;width:100%}.column.is-three-quarters-fullhd{flex:none;width:75%}.column.is-two-thirds-fullhd{flex:none;width:66.6666%}.column.is-half-fullhd{flex:none;width:50%}.column.is-one-third-fullhd{flex:none;width:33.3333%}.column.is-one-quarter-fullhd{flex:none;width:25%}.column.is-one-fifth-fullhd{flex:none;width:20%}.column.is-two-fifths-fullhd{flex:none;width:40%}.column.is-three-fifths-fullhd{flex:none;width:60%}.column.is-four-fifths-fullhd{flex:none;width:80%}.column.is-offset-three-quarters-fullhd{margin-left:75%}.column.is-offset-two-thirds-fullhd{margin-left:66.6666%}.column.is-offset-half-fullhd{margin-left:50%}.column.is-offset-one-third-fullhd{margin-left:33.3333%}.column.is-offset-one-quarter-fullhd{margin-left:25%}.column.is-offset-one-fifth-fullhd{margin-left:20%}.column.is-offset-two-fifths-fullhd{margin-left:40%}.column.is-offset-three-fifths-fullhd{margin-left:60%}.column.is-offset-four-fifths-fullhd{margin-left:80%}.column.is-0-fullhd{flex:none;width:0%}.column.is-offset-0-fullhd{margin-left:0%}.column.is-1-fullhd{flex:none;width:8.33333337%}.column.is-offset-1-fullhd{margin-left:8.33333337%}.column.is-2-fullhd{flex:none;width:16.66666674%}.column.is-offset-2-fullhd{margin-left:16.66666674%}.column.is-3-fullhd{flex:none;width:25%}.column.is-offset-3-fullhd{margin-left:25%}.column.is-4-fullhd{flex:none;width:33.33333337%}.column.is-offset-4-fullhd{margin-left:33.33333337%}.column.is-5-fullhd{flex:none;width:41.66666674%}.column.is-offset-5-fullhd{margin-left:41.66666674%}.column.is-6-fullhd{flex:none;width:50%}.column.is-offset-6-fullhd{margin-left:50%}.column.is-7-fullhd{flex:none;width:58.33333337%}.column.is-offset-7-fullhd{margin-left:58.33333337%}.column.is-8-fullhd{flex:none;width:66.66666674%}.column.is-offset-8-fullhd{margin-left:66.66666674%}.column.is-9-fullhd{flex:none;width:75%}.column.is-offset-9-fullhd{margin-left:75%}.column.is-10-fullhd{flex:none;width:83.33333337%}.column.is-offset-10-fullhd{margin-left:83.33333337%}.column.is-11-fullhd{flex:none;width:91.66666674%}.column.is-offset-11-fullhd{margin-left:91.66666674%}.column.is-12-fullhd{flex:none;width:100%}.column.is-offset-12-fullhd{margin-left:100%}}.columns{margin-left:-0.75rem;margin-right:-0.75rem;margin-top:-0.75rem}.columns:last-child{margin-bottom:-0.75rem}.columns:not(:last-child){margin-bottom:calc(1.5rem - 0.75rem)}.columns.is-centered{justify-content:center}.columns.is-gapless{margin-left:0;margin-right:0;margin-top:0}.columns.is-gapless>.column{margin:0;padding:0 !important}.columns.is-gapless:not(:last-child){margin-bottom:1.5rem}.columns.is-gapless:last-child{margin-bottom:0}.columns.is-mobile{display:flex}.columns.is-multiline{flex-wrap:wrap}.columns.is-vcentered{align-items:center}@media screen and (min-width: 769px),print{.columns:not(.is-desktop){display:flex}}@media screen and (min-width: 1024px){.columns.is-desktop{display:flex}}.columns.is-variable{--columnGap: 0.75rem;margin-left:calc(-1*var(--columnGap));margin-right:calc(-1*var(--columnGap))}.columns.is-variable>.column{padding-left:var(--columnGap);padding-right:var(--columnGap)}.columns.is-variable.is-0{--columnGap: 0rem}@media screen and (max-width: 768px){.columns.is-variable.is-0-mobile{--columnGap: 0rem}}@media screen and (min-width: 769px),print{.columns.is-variable.is-0-tablet{--columnGap: 0rem}}@media screen and (min-width: 769px)and (max-width: 1023px){.columns.is-variable.is-0-tablet-only{--columnGap: 0rem}}@media screen and (max-width: 1023px){.columns.is-variable.is-0-touch{--columnGap: 0rem}}@media screen and (min-width: 1024px){.columns.is-variable.is-0-desktop{--columnGap: 0rem}}@media screen and (min-width: 1024px)and (max-width: 1215px){.columns.is-variable.is-0-desktop-only{--columnGap: 0rem}}@media screen and (min-width: 1216px){.columns.is-variable.is-0-widescreen{--columnGap: 0rem}}@media screen and (min-width: 1216px)and (max-width: 1407px){.columns.is-variable.is-0-widescreen-only{--columnGap: 0rem}}@media screen and (min-width: 1408px){.columns.is-variable.is-0-fullhd{--columnGap: 0rem}}.columns.is-variable.is-1{--columnGap: 0.25rem}@media screen and (max-width: 768px){.columns.is-variable.is-1-mobile{--columnGap: 0.25rem}}@media screen and (min-width: 769px),print{.columns.is-variable.is-1-tablet{--columnGap: 0.25rem}}@media screen and (min-width: 769px)and (max-width: 1023px){.columns.is-variable.is-1-tablet-only{--columnGap: 0.25rem}}@media screen and (max-width: 1023px){.columns.is-variable.is-1-touch{--columnGap: 0.25rem}}@media screen and (min-width: 1024px){.columns.is-variable.is-1-desktop{--columnGap: 0.25rem}}@media screen and (min-width: 1024px)and (max-width: 1215px){.columns.is-variable.is-1-desktop-only{--columnGap: 0.25rem}}@media screen and (min-width: 1216px){.columns.is-variable.is-1-widescreen{--columnGap: 0.25rem}}@media screen and (min-width: 1216px)and (max-width: 1407px){.columns.is-variable.is-1-widescreen-only{--columnGap: 0.25rem}}@media screen and (min-width: 1408px){.columns.is-variable.is-1-fullhd{--columnGap: 0.25rem}}.columns.is-variable.is-2{--columnGap: 0.5rem}@media screen and (max-width: 768px){.columns.is-variable.is-2-mobile{--columnGap: 0.5rem}}@media screen and (min-width: 769px),print{.columns.is-variable.is-2-tablet{--columnGap: 0.5rem}}@media screen and (min-width: 769px)and (max-width: 1023px){.columns.is-variable.is-2-tablet-only{--columnGap: 0.5rem}}@media screen and (max-width: 1023px){.columns.is-variable.is-2-touch{--columnGap: 0.5rem}}@media screen and (min-width: 1024px){.columns.is-variable.is-2-desktop{--columnGap: 0.5rem}}@media screen and (min-width: 1024px)and (max-width: 1215px){.columns.is-variable.is-2-desktop-only{--columnGap: 0.5rem}}@media screen and (min-width: 1216px){.columns.is-variable.is-2-widescreen{--columnGap: 0.5rem}}@media screen and (min-width: 1216px)and (max-width: 1407px){.columns.is-variable.is-2-widescreen-only{--columnGap: 0.5rem}}@media screen and (min-width: 1408px){.columns.is-variable.is-2-fullhd{--columnGap: 0.5rem}}.columns.is-variable.is-3{--columnGap: 0.75rem}@media screen and (max-width: 768px){.columns.is-variable.is-3-mobile{--columnGap: 0.75rem}}@media screen and (min-width: 769px),print{.columns.is-variable.is-3-tablet{--columnGap: 0.75rem}}@media screen and (min-width: 769px)and (max-width: 1023px){.columns.is-variable.is-3-tablet-only{--columnGap: 0.75rem}}@media screen and (max-width: 1023px){.columns.is-variable.is-3-touch{--columnGap: 0.75rem}}@media screen and (min-width: 1024px){.columns.is-variable.is-3-desktop{--columnGap: 0.75rem}}@media screen and (min-width: 1024px)and (max-width: 1215px){.columns.is-variable.is-3-desktop-only{--columnGap: 0.75rem}}@media screen and (min-width: 1216px){.columns.is-variable.is-3-widescreen{--columnGap: 0.75rem}}@media screen and (min-width: 1216px)and (max-width: 1407px){.columns.is-variable.is-3-widescreen-only{--columnGap: 0.75rem}}@media screen and (min-width: 1408px){.columns.is-variable.is-3-fullhd{--columnGap: 0.75rem}}.columns.is-variable.is-4{--columnGap: 1rem}@media screen and (max-width: 768px){.columns.is-variable.is-4-mobile{--columnGap: 1rem}}@media screen and (min-width: 769px),print{.columns.is-variable.is-4-tablet{--columnGap: 1rem}}@media screen and (min-width: 769px)and (max-width: 1023px){.columns.is-variable.is-4-tablet-only{--columnGap: 1rem}}@media screen and (max-width: 1023px){.columns.is-variable.is-4-touch{--columnGap: 1rem}}@media screen and (min-width: 1024px){.columns.is-variable.is-4-desktop{--columnGap: 1rem}}@media screen and (min-width: 1024px)and (max-width: 1215px){.columns.is-variable.is-4-desktop-only{--columnGap: 1rem}}@media screen and (min-width: 1216px){.columns.is-variable.is-4-widescreen{--columnGap: 1rem}}@media screen and (min-width: 1216px)and (max-width: 1407px){.columns.is-variable.is-4-widescreen-only{--columnGap: 1rem}}@media screen and (min-width: 1408px){.columns.is-variable.is-4-fullhd{--columnGap: 1rem}}.columns.is-variable.is-5{--columnGap: 1.25rem}@media screen and (max-width: 768px){.columns.is-variable.is-5-mobile{--columnGap: 1.25rem}}@media screen and (min-width: 769px),print{.columns.is-variable.is-5-tablet{--columnGap: 1.25rem}}@media screen and (min-width: 769px)and (max-width: 1023px){.columns.is-variable.is-5-tablet-only{--columnGap: 1.25rem}}@media screen and (max-width: 1023px){.columns.is-variable.is-5-touch{--columnGap: 1.25rem}}@media screen and (min-width: 1024px){.columns.is-variable.is-5-desktop{--columnGap: 1.25rem}}@media screen and (min-width: 1024px)and (max-width: 1215px){.columns.is-variable.is-5-desktop-only{--columnGap: 1.25rem}}@media screen and (min-width: 1216px){.columns.is-variable.is-5-widescreen{--columnGap: 1.25rem}}@media screen and (min-width: 1216px)and (max-width: 1407px){.columns.is-variable.is-5-widescreen-only{--columnGap: 1.25rem}}@media screen and (min-width: 1408px){.columns.is-variable.is-5-fullhd{--columnGap: 1.25rem}}.columns.is-variable.is-6{--columnGap: 1.5rem}@media screen and (max-width: 768px){.columns.is-variable.is-6-mobile{--columnGap: 1.5rem}}@media screen and (min-width: 769px),print{.columns.is-variable.is-6-tablet{--columnGap: 1.5rem}}@media screen and (min-width: 769px)and (max-width: 1023px){.columns.is-variable.is-6-tablet-only{--columnGap: 1.5rem}}@media screen and (max-width: 1023px){.columns.is-variable.is-6-touch{--columnGap: 1.5rem}}@media screen and (min-width: 1024px){.columns.is-variable.is-6-desktop{--columnGap: 1.5rem}}@media screen and (min-width: 1024px)and (max-width: 1215px){.columns.is-variable.is-6-desktop-only{--columnGap: 1.5rem}}@media screen and (min-width: 1216px){.columns.is-variable.is-6-widescreen{--columnGap: 1.5rem}}@media screen and (min-width: 1216px)and (max-width: 1407px){.columns.is-variable.is-6-widescreen-only{--columnGap: 1.5rem}}@media screen and (min-width: 1408px){.columns.is-variable.is-6-fullhd{--columnGap: 1.5rem}}.columns.is-variable.is-7{--columnGap: 1.75rem}@media screen and (max-width: 768px){.columns.is-variable.is-7-mobile{--columnGap: 1.75rem}}@media screen and (min-width: 769px),print{.columns.is-variable.is-7-tablet{--columnGap: 1.75rem}}@media screen and (min-width: 769px)and (max-width: 1023px){.columns.is-variable.is-7-tablet-only{--columnGap: 1.75rem}}@media screen and (max-width: 1023px){.columns.is-variable.is-7-touch{--columnGap: 1.75rem}}@media screen and (min-width: 1024px){.columns.is-variable.is-7-desktop{--columnGap: 1.75rem}}@media screen and (min-width: 1024px)and (max-width: 1215px){.columns.is-variable.is-7-desktop-only{--columnGap: 1.75rem}}@media screen and (min-width: 1216px){.columns.is-variable.is-7-widescreen{--columnGap: 1.75rem}}@media screen and (min-width: 1216px)and (max-width: 1407px){.columns.is-variable.is-7-widescreen-only{--columnGap: 1.75rem}}@media screen and (min-width: 1408px){.columns.is-variable.is-7-fullhd{--columnGap: 1.75rem}}.columns.is-variable.is-8{--columnGap: 2rem}@media screen and (max-width: 768px){.columns.is-variable.is-8-mobile{--columnGap: 2rem}}@media screen and (min-width: 769px),print{.columns.is-variable.is-8-tablet{--columnGap: 2rem}}@media screen and (min-width: 769px)and (max-width: 1023px){.columns.is-variable.is-8-tablet-only{--columnGap: 2rem}}@media screen and (max-width: 1023px){.columns.is-variable.is-8-touch{--columnGap: 2rem}}@media screen and (min-width: 1024px){.columns.is-variable.is-8-desktop{--columnGap: 2rem}}@media screen and (min-width: 1024px)and (max-width: 1215px){.columns.is-variable.is-8-desktop-only{--columnGap: 2rem}}@media screen and (min-width: 1216px){.columns.is-variable.is-8-widescreen{--columnGap: 2rem}}@media screen and (min-width: 1216px)and (max-width: 1407px){.columns.is-variable.is-8-widescreen-only{--columnGap: 2rem}}@media screen and (min-width: 1408px){.columns.is-variable.is-8-fullhd{--columnGap: 2rem}}.tile{align-items:stretch;display:block;flex-basis:0;flex-grow:1;flex-shrink:1;min-height:min-content}.tile.is-ancestor{margin-left:-0.75rem;margin-right:-0.75rem;margin-top:-0.75rem}.tile.is-ancestor:last-child{margin-bottom:-0.75rem}.tile.is-ancestor:not(:last-child){margin-bottom:.75rem}.tile.is-child{margin:0 !important}.tile.is-parent{padding:.75rem}.tile.is-vertical{flex-direction:column}.tile.is-vertical>.tile.is-child:not(:last-child){margin-bottom:1.5rem !important}@media screen and (min-width: 769px),print{.tile:not(.is-child){display:flex}.tile.is-1{flex:none;width:8.33333337%}.tile.is-2{flex:none;width:16.66666674%}.tile.is-3{flex:none;width:25%}.tile.is-4{flex:none;width:33.33333337%}.tile.is-5{flex:none;width:41.66666674%}.tile.is-6{flex:none;width:50%}.tile.is-7{flex:none;width:58.33333337%}.tile.is-8{flex:none;width:66.66666674%}.tile.is-9{flex:none;width:75%}.tile.is-10{flex:none;width:83.33333337%}.tile.is-11{flex:none;width:91.66666674%}.tile.is-12{flex:none;width:100%}}.has-text-white{color:#fff !important}a.has-text-white:hover,a.has-text-white:focus{color:#e6e6e6 !important}.has-background-white{background-color:#fff !important}.has-text-black{color:#0a0a0a !important}a.has-text-black:hover,a.has-text-black:focus{color:#000 !important}.has-background-black{background-color:#0a0a0a !important}.has-text-light{color:#f5f5f5 !important}a.has-text-light:hover,a.has-text-light:focus{color:#dbdbdb !important}.has-background-light{background-color:#f5f5f5 !important}.has-text-dark{color:#363636 !important}a.has-text-dark:hover,a.has-text-dark:focus{color:#1c1c1c !important}.has-background-dark{background-color:#363636 !important}.has-text-primary{color:#00d1b2 !important}a.has-text-primary:hover,a.has-text-primary:focus{color:#009e86 !important}.has-background-primary{background-color:#00d1b2 !important}.has-text-primary-light{color:#ebfffc !important}a.has-text-primary-light:hover,a.has-text-primary-light:focus{color:#b8fff4 !important}.has-background-primary-light{background-color:#ebfffc !important}.has-text-primary-dark{color:#00947e !important}a.has-text-primary-dark:hover,a.has-text-primary-dark:focus{color:#00c7a9 !important}.has-background-primary-dark{background-color:#00947e !important}.has-text-link{color:#485fc7 !important}a.has-text-link:hover,a.has-text-link:focus{color:#3449a8 !important}.has-background-link{background-color:#485fc7 !important}.has-text-link-light{color:#eff1fa !important}a.has-text-link-light:hover,a.has-text-link-light:focus{color:#c8cfee !important}.has-background-link-light{background-color:#eff1fa !important}.has-text-link-dark{color:#3850b7 !important}a.has-text-link-dark:hover,a.has-text-link-dark:focus{color:#576dcb !important}.has-background-link-dark{background-color:#3850b7 !important}.has-text-info{color:#3e8ed0 !important}a.has-text-info:hover,a.has-text-info:focus{color:#2b74b1 !important}.has-background-info{background-color:#3e8ed0 !important}.has-text-info-light{color:#eff5fb !important}a.has-text-info-light:hover,a.has-text-info-light:focus{color:#c6ddf1 !important}.has-background-info-light{background-color:#eff5fb !important}.has-text-info-dark{color:#296fa8 !important}a.has-text-info-dark:hover,a.has-text-info-dark:focus{color:#368ace !important}.has-background-info-dark{background-color:#296fa8 !important}.has-text-success{color:#48c78e !important}a.has-text-success:hover,a.has-text-success:focus{color:#34a873 !important}.has-background-success{background-color:#48c78e !important}.has-text-success-light{color:#effaf5 !important}a.has-text-success-light:hover,a.has-text-success-light:focus{color:#c8eedd !important}.has-background-success-light{background-color:#effaf5 !important}.has-text-success-dark{color:#257953 !important}a.has-text-success-dark:hover,a.has-text-success-dark:focus{color:#31a06e !important}.has-background-success-dark{background-color:#257953 !important}.has-text-warning{color:#ffe08a !important}a.has-text-warning:hover,a.has-text-warning:focus{color:#ffd257 !important}.has-background-warning{background-color:#ffe08a !important}.has-text-warning-light{color:#fffaeb !important}a.has-text-warning-light:hover,a.has-text-warning-light:focus{color:#ffecb8 !important}.has-background-warning-light{background-color:#fffaeb !important}.has-text-warning-dark{color:#946c00 !important}a.has-text-warning-dark:hover,a.has-text-warning-dark:focus{color:#c79200 !important}.has-background-warning-dark{background-color:#946c00 !important}.has-text-danger{color:#f14668 !important}a.has-text-danger:hover,a.has-text-danger:focus{color:#ee1742 !important}.has-background-danger{background-color:#f14668 !important}.has-text-danger-light{color:#feecf0 !important}a.has-text-danger-light:hover,a.has-text-danger-light:focus{color:#fabdc9 !important}.has-background-danger-light{background-color:#feecf0 !important}.has-text-danger-dark{color:#cc0f35 !important}a.has-text-danger-dark:hover,a.has-text-danger-dark:focus{color:#ee2049 !important}.has-background-danger-dark{background-color:#cc0f35 !important}.has-text-black-bis{color:#121212 !important}.has-background-black-bis{background-color:#121212 !important}.has-text-black-ter{color:#242424 !important}.has-background-black-ter{background-color:#242424 !important}.has-text-grey-darker{color:#363636 !important}.has-background-grey-darker{background-color:#363636 !important}.has-text-grey-dark{color:#4a4a4a !important}.has-background-grey-dark{background-color:#4a4a4a !important}.has-text-grey{color:#7a7a7a !important}.has-background-grey{background-color:#7a7a7a !important}.has-text-grey-light{color:#b5b5b5 !important}.has-background-grey-light{background-color:#b5b5b5 !important}.has-text-grey-lighter{color:#dbdbdb !important}.has-background-grey-lighter{background-color:#dbdbdb !important}.has-text-white-ter{color:#f5f5f5 !important}.has-background-white-ter{background-color:#f5f5f5 !important}.has-text-white-bis{color:#fafafa !important}.has-background-white-bis{background-color:#fafafa !important}.is-flex-direction-row{flex-direction:row !important}.is-flex-direction-row-reverse{flex-direction:row-reverse !important}.is-flex-direction-column{flex-direction:column !important}.is-flex-direction-column-reverse{flex-direction:column-reverse !important}.is-flex-wrap-nowrap{flex-wrap:nowrap !important}.is-flex-wrap-wrap{flex-wrap:wrap !important}.is-flex-wrap-wrap-reverse{flex-wrap:wrap-reverse !important}.is-justify-content-flex-start{justify-content:flex-start !important}.is-justify-content-flex-end{justify-content:flex-end !important}.is-justify-content-center{justify-content:center !important}.is-justify-content-space-between{justify-content:space-between !important}.is-justify-content-space-around{justify-content:space-around !important}.is-justify-content-space-evenly{justify-content:space-evenly !important}.is-justify-content-start{justify-content:start !important}.is-justify-content-end{justify-content:end !important}.is-justify-content-left{justify-content:left !important}.is-justify-content-right{justify-content:right !important}.is-align-content-flex-start{align-content:flex-start !important}.is-align-content-flex-end{align-content:flex-end !important}.is-align-content-center{align-content:center !important}.is-align-content-space-between{align-content:space-between !important}.is-align-content-space-around{align-content:space-around !important}.is-align-content-space-evenly{align-content:space-evenly !important}.is-align-content-stretch{align-content:stretch !important}.is-align-content-start{align-content:start !important}.is-align-content-end{align-content:end !important}.is-align-content-baseline{align-content:baseline !important}.is-align-items-stretch{align-items:stretch !important}.is-align-items-flex-start{align-items:flex-start !important}.is-align-items-flex-end{align-items:flex-end !important}.is-align-items-center{align-items:center !important}.is-align-items-baseline{align-items:baseline !important}.is-align-items-start{align-items:start !important}.is-align-items-end{align-items:end !important}.is-align-items-self-start{align-items:self-start !important}.is-align-items-self-end{align-items:self-end !important}.is-align-self-auto{align-self:auto !important}.is-align-self-flex-start{align-self:flex-start !important}.is-align-self-flex-end{align-self:flex-end !important}.is-align-self-center{align-self:center !important}.is-align-self-baseline{align-self:baseline !important}.is-align-self-stretch{align-self:stretch !important}.is-flex-grow-0{flex-grow:0 !important}.is-flex-grow-1{flex-grow:1 !important}.is-flex-grow-2{flex-grow:2 !important}.is-flex-grow-3{flex-grow:3 !important}.is-flex-grow-4{flex-grow:4 !important}.is-flex-grow-5{flex-grow:5 !important}.is-flex-shrink-0{flex-shrink:0 !important}.is-flex-shrink-1{flex-shrink:1 !important}.is-flex-shrink-2{flex-shrink:2 !important}.is-flex-shrink-3{flex-shrink:3 !important}.is-flex-shrink-4{flex-shrink:4 !important}.is-flex-shrink-5{flex-shrink:5 !important}.is-clearfix::after{clear:both;content:\\\" \\\";display:table}.is-pulled-left{float:left !important}.is-pulled-right{float:right !important}.is-radiusless{border-radius:0 !important}.is-shadowless{box-shadow:none !important}.is-clickable{cursor:pointer !important;pointer-events:all !important}.is-clipped{overflow:hidden !important}.is-relative{position:relative !important}.is-marginless{margin:0 !important}.is-paddingless{padding:0 !important}.m-0{margin:0 !important}.mt-0{margin-top:0 !important}.mr-0{margin-right:0 !important}.mb-0{margin-bottom:0 !important}.ml-0{margin-left:0 !important}.mx-0{margin-left:0 !important;margin-right:0 !important}.my-0{margin-top:0 !important;margin-bottom:0 !important}.m-1{margin:.25rem !important}.mt-1{margin-top:.25rem !important}.mr-1{margin-right:.25rem !important}.mb-1{margin-bottom:.25rem !important}.ml-1{margin-left:.25rem !important}.mx-1{margin-left:.25rem !important;margin-right:.25rem !important}.my-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.m-2{margin:.5rem !important}.mt-2{margin-top:.5rem !important}.mr-2{margin-right:.5rem !important}.mb-2{margin-bottom:.5rem !important}.ml-2{margin-left:.5rem !important}.mx-2{margin-left:.5rem !important;margin-right:.5rem !important}.my-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.m-3{margin:.75rem !important}.mt-3{margin-top:.75rem !important}.mr-3{margin-right:.75rem !important}.mb-3{margin-bottom:.75rem !important}.ml-3{margin-left:.75rem !important}.mx-3{margin-left:.75rem !important;margin-right:.75rem !important}.my-3{margin-top:.75rem !important;margin-bottom:.75rem !important}.m-4{margin:1rem !important}.mt-4{margin-top:1rem !important}.mr-4{margin-right:1rem !important}.mb-4{margin-bottom:1rem !important}.ml-4{margin-left:1rem !important}.mx-4{margin-left:1rem !important;margin-right:1rem !important}.my-4{margin-top:1rem !important;margin-bottom:1rem !important}.m-5{margin:1.5rem !important}.mt-5{margin-top:1.5rem !important}.mr-5{margin-right:1.5rem !important}.mb-5{margin-bottom:1.5rem !important}.ml-5{margin-left:1.5rem !important}.mx-5{margin-left:1.5rem !important;margin-right:1.5rem !important}.my-5{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.m-6{margin:3rem !important}.mt-6{margin-top:3rem !important}.mr-6{margin-right:3rem !important}.mb-6{margin-bottom:3rem !important}.ml-6{margin-left:3rem !important}.mx-6{margin-left:3rem !important;margin-right:3rem !important}.my-6{margin-top:3rem !important;margin-bottom:3rem !important}.m-auto{margin:auto !important}.mt-auto{margin-top:auto !important}.mr-auto{margin-right:auto !important}.mb-auto{margin-bottom:auto !important}.ml-auto{margin-left:auto !important}.mx-auto{margin-left:auto !important;margin-right:auto !important}.my-auto{margin-top:auto !important;margin-bottom:auto !important}.p-0{padding:0 !important}.pt-0{padding-top:0 !important}.pr-0{padding-right:0 !important}.pb-0{padding-bottom:0 !important}.pl-0{padding-left:0 !important}.px-0{padding-left:0 !important;padding-right:0 !important}.py-0{padding-top:0 !important;padding-bottom:0 !important}.p-1{padding:.25rem !important}.pt-1{padding-top:.25rem !important}.pr-1{padding-right:.25rem !important}.pb-1{padding-bottom:.25rem !important}.pl-1{padding-left:.25rem !important}.px-1{padding-left:.25rem !important;padding-right:.25rem !important}.py-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.p-2{padding:.5rem !important}.pt-2{padding-top:.5rem !important}.pr-2{padding-right:.5rem !important}.pb-2{padding-bottom:.5rem !important}.pl-2{padding-left:.5rem !important}.px-2{padding-left:.5rem !important;padding-right:.5rem !important}.py-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.p-3{padding:.75rem !important}.pt-3{padding-top:.75rem !important}.pr-3{padding-right:.75rem !important}.pb-3{padding-bottom:.75rem !important}.pl-3{padding-left:.75rem !important}.px-3{padding-left:.75rem !important;padding-right:.75rem !important}.py-3{padding-top:.75rem !important;padding-bottom:.75rem !important}.p-4{padding:1rem !important}.pt-4{padding-top:1rem !important}.pr-4{padding-right:1rem !important}.pb-4{padding-bottom:1rem !important}.pl-4{padding-left:1rem !important}.px-4{padding-left:1rem !important;padding-right:1rem !important}.py-4{padding-top:1rem !important;padding-bottom:1rem !important}.p-5{padding:1.5rem !important}.pt-5{padding-top:1.5rem !important}.pr-5{padding-right:1.5rem !important}.pb-5{padding-bottom:1.5rem !important}.pl-5{padding-left:1.5rem !important}.px-5{padding-left:1.5rem !important;padding-right:1.5rem !important}.py-5{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.p-6{padding:3rem !important}.pt-6{padding-top:3rem !important}.pr-6{padding-right:3rem !important}.pb-6{padding-bottom:3rem !important}.pl-6{padding-left:3rem !important}.px-6{padding-left:3rem !important;padding-right:3rem !important}.py-6{padding-top:3rem !important;padding-bottom:3rem !important}.p-auto{padding:auto !important}.pt-auto{padding-top:auto !important}.pr-auto{padding-right:auto !important}.pb-auto{padding-bottom:auto !important}.pl-auto{padding-left:auto !important}.px-auto{padding-left:auto !important;padding-right:auto !important}.py-auto{padding-top:auto !important;padding-bottom:auto !important}.is-size-1{font-size:3rem !important}.is-size-2{font-size:2.5rem !important}.is-size-3{font-size:2rem !important}.is-size-4{font-size:1.5rem !important}.is-size-5{font-size:1.25rem !important}.is-size-6{font-size:1rem !important}.is-size-7{font-size:.75rem !important}@media screen and (max-width: 768px){.is-size-1-mobile{font-size:3rem !important}.is-size-2-mobile{font-size:2.5rem !important}.is-size-3-mobile{font-size:2rem !important}.is-size-4-mobile{font-size:1.5rem !important}.is-size-5-mobile{font-size:1.25rem !important}.is-size-6-mobile{font-size:1rem !important}.is-size-7-mobile{font-size:.75rem !important}}@media screen and (min-width: 769px),print{.is-size-1-tablet{font-size:3rem !important}.is-size-2-tablet{font-size:2.5rem !important}.is-size-3-tablet{font-size:2rem !important}.is-size-4-tablet{font-size:1.5rem !important}.is-size-5-tablet{font-size:1.25rem !important}.is-size-6-tablet{font-size:1rem !important}.is-size-7-tablet{font-size:.75rem !important}}@media screen and (max-width: 1023px){.is-size-1-touch{font-size:3rem !important}.is-size-2-touch{font-size:2.5rem !important}.is-size-3-touch{font-size:2rem !important}.is-size-4-touch{font-size:1.5rem !important}.is-size-5-touch{font-size:1.25rem !important}.is-size-6-touch{font-size:1rem !important}.is-size-7-touch{font-size:.75rem !important}}@media screen and (min-width: 1024px){.is-size-1-desktop{font-size:3rem !important}.is-size-2-desktop{font-size:2.5rem !important}.is-size-3-desktop{font-size:2rem !important}.is-size-4-desktop{font-size:1.5rem !important}.is-size-5-desktop{font-size:1.25rem !important}.is-size-6-desktop{font-size:1rem !important}.is-size-7-desktop{font-size:.75rem !important}}@media screen and (min-width: 1216px){.is-size-1-widescreen{font-size:3rem !important}.is-size-2-widescreen{font-size:2.5rem !important}.is-size-3-widescreen{font-size:2rem !important}.is-size-4-widescreen{font-size:1.5rem !important}.is-size-5-widescreen{font-size:1.25rem !important}.is-size-6-widescreen{font-size:1rem !important}.is-size-7-widescreen{font-size:.75rem !important}}@media screen and (min-width: 1408px){.is-size-1-fullhd{font-size:3rem !important}.is-size-2-fullhd{font-size:2.5rem !important}.is-size-3-fullhd{font-size:2rem !important}.is-size-4-fullhd{font-size:1.5rem !important}.is-size-5-fullhd{font-size:1.25rem !important}.is-size-6-fullhd{font-size:1rem !important}.is-size-7-fullhd{font-size:.75rem !important}}.has-text-centered{text-align:center !important}.has-text-justified{text-align:justify !important}.has-text-left{text-align:left !important}.has-text-right{text-align:right !important}@media screen and (max-width: 768px){.has-text-centered-mobile{text-align:center !important}}@media screen and (min-width: 769px),print{.has-text-centered-tablet{text-align:center !important}}@media screen and (min-width: 769px)and (max-width: 1023px){.has-text-centered-tablet-only{text-align:center !important}}@media screen and (max-width: 1023px){.has-text-centered-touch{text-align:center !important}}@media screen and (min-width: 1024px){.has-text-centered-desktop{text-align:center !important}}@media screen and (min-width: 1024px)and (max-width: 1215px){.has-text-centered-desktop-only{text-align:center !important}}@media screen and (min-width: 1216px){.has-text-centered-widescreen{text-align:center !important}}@media screen and (min-width: 1216px)and (max-width: 1407px){.has-text-centered-widescreen-only{text-align:center !important}}@media screen and (min-width: 1408px){.has-text-centered-fullhd{text-align:center !important}}@media screen and (max-width: 768px){.has-text-justified-mobile{text-align:justify !important}}@media screen and (min-width: 769px),print{.has-text-justified-tablet{text-align:justify !important}}@media screen and (min-width: 769px)and (max-width: 1023px){.has-text-justified-tablet-only{text-align:justify !important}}@media screen and (max-width: 1023px){.has-text-justified-touch{text-align:justify !important}}@media screen and (min-width: 1024px){.has-text-justified-desktop{text-align:justify !important}}@media screen and (min-width: 1024px)and (max-width: 1215px){.has-text-justified-desktop-only{text-align:justify !important}}@media screen and (min-width: 1216px){.has-text-justified-widescreen{text-align:justify !important}}@media screen and (min-width: 1216px)and (max-width: 1407px){.has-text-justified-widescreen-only{text-align:justify !important}}@media screen and (min-width: 1408px){.has-text-justified-fullhd{text-align:justify !important}}@media screen and (max-width: 768px){.has-text-left-mobile{text-align:left !important}}@media screen and (min-width: 769px),print{.has-text-left-tablet{text-align:left !important}}@media screen and (min-width: 769px)and (max-width: 1023px){.has-text-left-tablet-only{text-align:left !important}}@media screen and (max-width: 1023px){.has-text-left-touch{text-align:left !important}}@media screen and (min-width: 1024px){.has-text-left-desktop{text-align:left !important}}@media screen and (min-width: 1024px)and (max-width: 1215px){.has-text-left-desktop-only{text-align:left !important}}@media screen and (min-width: 1216px){.has-text-left-widescreen{text-align:left !important}}@media screen and (min-width: 1216px)and (max-width: 1407px){.has-text-left-widescreen-only{text-align:left !important}}@media screen and (min-width: 1408px){.has-text-left-fullhd{text-align:left !important}}@media screen and (max-width: 768px){.has-text-right-mobile{text-align:right !important}}@media screen and (min-width: 769px),print{.has-text-right-tablet{text-align:right !important}}@media screen and (min-width: 769px)and (max-width: 1023px){.has-text-right-tablet-only{text-align:right !important}}@media screen and (max-width: 1023px){.has-text-right-touch{text-align:right !important}}@media screen and (min-width: 1024px){.has-text-right-desktop{text-align:right !important}}@media screen and (min-width: 1024px)and (max-width: 1215px){.has-text-right-desktop-only{text-align:right !important}}@media screen and (min-width: 1216px){.has-text-right-widescreen{text-align:right !important}}@media screen and (min-width: 1216px)and (max-width: 1407px){.has-text-right-widescreen-only{text-align:right !important}}@media screen and (min-width: 1408px){.has-text-right-fullhd{text-align:right !important}}.is-capitalized{text-transform:capitalize !important}.is-lowercase{text-transform:lowercase !important}.is-uppercase{text-transform:uppercase !important}.is-italic{font-style:italic !important}.is-underlined{text-decoration:underline !important}.has-text-weight-light{font-weight:300 !important}.has-text-weight-normal{font-weight:400 !important}.has-text-weight-medium{font-weight:500 !important}.has-text-weight-semibold{font-weight:600 !important}.has-text-weight-bold{font-weight:700 !important}.is-family-primary{font-family:Tahoma,sans-serif !important}.is-family-secondary{font-family:Tahoma,sans-serif !important}.is-family-sans-serif{font-family:Tahoma,sans-serif !important}.is-family-monospace{font-family:monospace !important}.is-family-code{font-family:monospace !important}.is-block{display:block !important}@media screen and (max-width: 768px){.is-block-mobile{display:block !important}}@media screen and (min-width: 769px),print{.is-block-tablet{display:block !important}}@media screen and (min-width: 769px)and (max-width: 1023px){.is-block-tablet-only{display:block !important}}@media screen and (max-width: 1023px){.is-block-touch{display:block !important}}@media screen and (min-width: 1024px){.is-block-desktop{display:block !important}}@media screen and (min-width: 1024px)and (max-width: 1215px){.is-block-desktop-only{display:block !important}}@media screen and (min-width: 1216px){.is-block-widescreen{display:block !important}}@media screen and (min-width: 1216px)and (max-width: 1407px){.is-block-widescreen-only{display:block !important}}@media screen and (min-width: 1408px){.is-block-fullhd{display:block !important}}.is-flex{display:flex !important}@media screen and (max-width: 768px){.is-flex-mobile{display:flex !important}}@media screen and (min-width: 769px),print{.is-flex-tablet{display:flex !important}}@media screen and (min-width: 769px)and (max-width: 1023px){.is-flex-tablet-only{display:flex !important}}@media screen and (max-width: 1023px){.is-flex-touch{display:flex !important}}@media screen and (min-width: 1024px){.is-flex-desktop{display:flex !important}}@media screen and (min-width: 1024px)and (max-width: 1215px){.is-flex-desktop-only{display:flex !important}}@media screen and (min-width: 1216px){.is-flex-widescreen{display:flex !important}}@media screen and (min-width: 1216px)and (max-width: 1407px){.is-flex-widescreen-only{display:flex !important}}@media screen and (min-width: 1408px){.is-flex-fullhd{display:flex !important}}.is-inline{display:inline !important}@media screen and (max-width: 768px){.is-inline-mobile{display:inline !important}}@media screen and (min-width: 769px),print{.is-inline-tablet{display:inline !important}}@media screen and (min-width: 769px)and (max-width: 1023px){.is-inline-tablet-only{display:inline !important}}@media screen and (max-width: 1023px){.is-inline-touch{display:inline !important}}@media screen and (min-width: 1024px){.is-inline-desktop{display:inline !important}}@media screen and (min-width: 1024px)and (max-width: 1215px){.is-inline-desktop-only{display:inline !important}}@media screen and (min-width: 1216px){.is-inline-widescreen{display:inline !important}}@media screen and (min-width: 1216px)and (max-width: 1407px){.is-inline-widescreen-only{display:inline !important}}@media screen and (min-width: 1408px){.is-inline-fullhd{display:inline !important}}.is-inline-block{display:inline-block !important}@media screen and (max-width: 768px){.is-inline-block-mobile{display:inline-block !important}}@media screen and (min-width: 769px),print{.is-inline-block-tablet{display:inline-block !important}}@media screen and (min-width: 769px)and (max-width: 1023px){.is-inline-block-tablet-only{display:inline-block !important}}@media screen and (max-width: 1023px){.is-inline-block-touch{display:inline-block !important}}@media screen and (min-width: 1024px){.is-inline-block-desktop{display:inline-block !important}}@media screen and (min-width: 1024px)and (max-width: 1215px){.is-inline-block-desktop-only{display:inline-block !important}}@media screen and (min-width: 1216px){.is-inline-block-widescreen{display:inline-block !important}}@media screen and (min-width: 1216px)and (max-width: 1407px){.is-inline-block-widescreen-only{display:inline-block !important}}@media screen and (min-width: 1408px){.is-inline-block-fullhd{display:inline-block !important}}.is-inline-flex{display:inline-flex !important}@media screen and (max-width: 768px){.is-inline-flex-mobile{display:inline-flex !important}}@media screen and (min-width: 769px),print{.is-inline-flex-tablet{display:inline-flex !important}}@media screen and (min-width: 769px)and (max-width: 1023px){.is-inline-flex-tablet-only{display:inline-flex !important}}@media screen and (max-width: 1023px){.is-inline-flex-touch{display:inline-flex !important}}@media screen and (min-width: 1024px){.is-inline-flex-desktop{display:inline-flex !important}}@media screen and (min-width: 1024px)and (max-width: 1215px){.is-inline-flex-desktop-only{display:inline-flex !important}}@media screen and (min-width: 1216px){.is-inline-flex-widescreen{display:inline-flex !important}}@media screen and (min-width: 1216px)and (max-width: 1407px){.is-inline-flex-widescreen-only{display:inline-flex !important}}@media screen and (min-width: 1408px){.is-inline-flex-fullhd{display:inline-flex !important}}.is-hidden{display:none !important}.is-sr-only{border:none !important;clip:rect(0, 0, 0, 0) !important;height:.01em !important;overflow:hidden !important;padding:0 !important;position:absolute !important;white-space:nowrap !important;width:.01em !important}@media screen and (max-width: 768px){.is-hidden-mobile{display:none !important}}@media screen and (min-width: 769px),print{.is-hidden-tablet{display:none !important}}@media screen and (min-width: 769px)and (max-width: 1023px){.is-hidden-tablet-only{display:none !important}}@media screen and (max-width: 1023px){.is-hidden-touch{display:none !important}}@media screen and (min-width: 1024px){.is-hidden-desktop{display:none !important}}@media screen and (min-width: 1024px)and (max-width: 1215px){.is-hidden-desktop-only{display:none !important}}@media screen and (min-width: 1216px){.is-hidden-widescreen{display:none !important}}@media screen and (min-width: 1216px)and (max-width: 1407px){.is-hidden-widescreen-only{display:none !important}}@media screen and (min-width: 1408px){.is-hidden-fullhd{display:none !important}}.is-invisible{visibility:hidden !important}@media screen and (max-width: 768px){.is-invisible-mobile{visibility:hidden !important}}@media screen and (min-width: 769px),print{.is-invisible-tablet{visibility:hidden !important}}@media screen and (min-width: 769px)and (max-width: 1023px){.is-invisible-tablet-only{visibility:hidden !important}}@media screen and (max-width: 1023px){.is-invisible-touch{visibility:hidden !important}}@media screen and (min-width: 1024px){.is-invisible-desktop{visibility:hidden !important}}@media screen and (min-width: 1024px)and (max-width: 1215px){.is-invisible-desktop-only{visibility:hidden !important}}@media screen and (min-width: 1216px){.is-invisible-widescreen{visibility:hidden !important}}@media screen and (min-width: 1216px)and (max-width: 1407px){.is-invisible-widescreen-only{visibility:hidden !important}}@media screen and (min-width: 1408px){.is-invisible-fullhd{visibility:hidden !important}}.hero{align-items:stretch;display:flex;flex-direction:column;justify-content:space-between}.hero .navbar{background:none}.hero .tabs ul{border-bottom:none}.hero.is-white{background-color:#fff;color:#0a0a0a}.hero.is-white a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-white strong{color:inherit}.hero.is-white .title{color:#0a0a0a}.hero.is-white .subtitle{color:rgba(10,10,10,.9)}.hero.is-white .subtitle a:not(.button),.hero.is-white .subtitle strong{color:#0a0a0a}@media screen and (max-width: 1023px){.hero.is-white .navbar-menu{background-color:#fff}}.hero.is-white .navbar-item,.hero.is-white .navbar-link{color:rgba(10,10,10,.7)}.hero.is-white a.navbar-item:hover,.hero.is-white a.navbar-item.is-active,.hero.is-white .navbar-link:hover,.hero.is-white .navbar-link.is-active{background-color:#f2f2f2;color:#0a0a0a}.hero.is-white .tabs a{color:#0a0a0a;opacity:.9}.hero.is-white .tabs a:hover{opacity:1}.hero.is-white .tabs li.is-active a{color:#fff !important;opacity:1}.hero.is-white .tabs.is-boxed a,.hero.is-white .tabs.is-toggle a{color:#0a0a0a}.hero.is-white .tabs.is-boxed a:hover,.hero.is-white .tabs.is-toggle a:hover{background-color:rgba(10,10,10,.1)}.hero.is-white .tabs.is-boxed li.is-active a,.hero.is-white .tabs.is-boxed li.is-active a:hover,.hero.is-white .tabs.is-toggle li.is-active a,.hero.is-white .tabs.is-toggle li.is-active a:hover{background-color:#0a0a0a;border-color:#0a0a0a;color:#fff}.hero.is-white.is-bold{background-image:linear-gradient(141deg, #e8e3e4 0%, white 71%, white 100%)}@media screen and (max-width: 768px){.hero.is-white.is-bold .navbar-menu{background-image:linear-gradient(141deg, #e8e3e4 0%, white 71%, white 100%)}}.hero.is-black{background-color:#0a0a0a;color:#fff}.hero.is-black a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-black strong{color:inherit}.hero.is-black .title{color:#fff}.hero.is-black .subtitle{color:rgba(255,255,255,.9)}.hero.is-black .subtitle a:not(.button),.hero.is-black .subtitle strong{color:#fff}@media screen and (max-width: 1023px){.hero.is-black .navbar-menu{background-color:#0a0a0a}}.hero.is-black .navbar-item,.hero.is-black .navbar-link{color:rgba(255,255,255,.7)}.hero.is-black a.navbar-item:hover,.hero.is-black a.navbar-item.is-active,.hero.is-black .navbar-link:hover,.hero.is-black .navbar-link.is-active{background-color:#000;color:#fff}.hero.is-black .tabs a{color:#fff;opacity:.9}.hero.is-black .tabs a:hover{opacity:1}.hero.is-black .tabs li.is-active a{color:#0a0a0a !important;opacity:1}.hero.is-black .tabs.is-boxed a,.hero.is-black .tabs.is-toggle a{color:#fff}.hero.is-black .tabs.is-boxed a:hover,.hero.is-black .tabs.is-toggle a:hover{background-color:rgba(10,10,10,.1)}.hero.is-black .tabs.is-boxed li.is-active a,.hero.is-black .tabs.is-boxed li.is-active a:hover,.hero.is-black .tabs.is-toggle li.is-active a,.hero.is-black .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#0a0a0a}.hero.is-black.is-bold{background-image:linear-gradient(141deg, black 0%, #0a0a0a 71%, #181616 100%)}@media screen and (max-width: 768px){.hero.is-black.is-bold .navbar-menu{background-image:linear-gradient(141deg, black 0%, #0a0a0a 71%, #181616 100%)}}.hero.is-light{background-color:#f5f5f5;color:rgba(0,0,0,.7)}.hero.is-light a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-light strong{color:inherit}.hero.is-light .title{color:rgba(0,0,0,.7)}.hero.is-light .subtitle{color:rgba(0,0,0,.9)}.hero.is-light .subtitle a:not(.button),.hero.is-light .subtitle strong{color:rgba(0,0,0,.7)}@media screen and (max-width: 1023px){.hero.is-light .navbar-menu{background-color:#f5f5f5}}.hero.is-light .navbar-item,.hero.is-light .navbar-link{color:rgba(0,0,0,.7)}.hero.is-light a.navbar-item:hover,.hero.is-light a.navbar-item.is-active,.hero.is-light .navbar-link:hover,.hero.is-light .navbar-link.is-active{background-color:#e8e8e8;color:rgba(0,0,0,.7)}.hero.is-light .tabs a{color:rgba(0,0,0,.7);opacity:.9}.hero.is-light .tabs a:hover{opacity:1}.hero.is-light .tabs li.is-active a{color:#f5f5f5 !important;opacity:1}.hero.is-light .tabs.is-boxed a,.hero.is-light .tabs.is-toggle a{color:rgba(0,0,0,.7)}.hero.is-light .tabs.is-boxed a:hover,.hero.is-light .tabs.is-toggle a:hover{background-color:rgba(10,10,10,.1)}.hero.is-light .tabs.is-boxed li.is-active a,.hero.is-light .tabs.is-boxed li.is-active a:hover,.hero.is-light .tabs.is-toggle li.is-active a,.hero.is-light .tabs.is-toggle li.is-active a:hover{background-color:rgba(0,0,0,.7);border-color:rgba(0,0,0,.7);color:#f5f5f5}.hero.is-light.is-bold{background-image:linear-gradient(141deg, #dfd8d9 0%, whitesmoke 71%, white 100%)}@media screen and (max-width: 768px){.hero.is-light.is-bold .navbar-menu{background-image:linear-gradient(141deg, #dfd8d9 0%, whitesmoke 71%, white 100%)}}.hero.is-dark{background-color:#363636;color:#fff}.hero.is-dark a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-dark strong{color:inherit}.hero.is-dark .title{color:#fff}.hero.is-dark .subtitle{color:rgba(255,255,255,.9)}.hero.is-dark .subtitle a:not(.button),.hero.is-dark .subtitle strong{color:#fff}@media screen and (max-width: 1023px){.hero.is-dark .navbar-menu{background-color:#363636}}.hero.is-dark .navbar-item,.hero.is-dark .navbar-link{color:rgba(255,255,255,.7)}.hero.is-dark a.navbar-item:hover,.hero.is-dark a.navbar-item.is-active,.hero.is-dark .navbar-link:hover,.hero.is-dark .navbar-link.is-active{background-color:#292929;color:#fff}.hero.is-dark .tabs a{color:#fff;opacity:.9}.hero.is-dark .tabs a:hover{opacity:1}.hero.is-dark .tabs li.is-active a{color:#363636 !important;opacity:1}.hero.is-dark .tabs.is-boxed a,.hero.is-dark .tabs.is-toggle a{color:#fff}.hero.is-dark .tabs.is-boxed a:hover,.hero.is-dark .tabs.is-toggle a:hover{background-color:rgba(10,10,10,.1)}.hero.is-dark .tabs.is-boxed li.is-active a,.hero.is-dark .tabs.is-boxed li.is-active a:hover,.hero.is-dark .tabs.is-toggle li.is-active a,.hero.is-dark .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#363636}.hero.is-dark.is-bold{background-image:linear-gradient(141deg, #1f191a 0%, #363636 71%, #46403f 100%)}@media screen and (max-width: 768px){.hero.is-dark.is-bold .navbar-menu{background-image:linear-gradient(141deg, #1f191a 0%, #363636 71%, #46403f 100%)}}.hero.is-primary{background-color:#00d1b2;color:#fff}.hero.is-primary a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-primary strong{color:inherit}.hero.is-primary .title{color:#fff}.hero.is-primary .subtitle{color:rgba(255,255,255,.9)}.hero.is-primary .subtitle a:not(.button),.hero.is-primary .subtitle strong{color:#fff}@media screen and (max-width: 1023px){.hero.is-primary .navbar-menu{background-color:#00d1b2}}.hero.is-primary .navbar-item,.hero.is-primary .navbar-link{color:rgba(255,255,255,.7)}.hero.is-primary a.navbar-item:hover,.hero.is-primary a.navbar-item.is-active,.hero.is-primary .navbar-link:hover,.hero.is-primary .navbar-link.is-active{background-color:#00b89c;color:#fff}.hero.is-primary .tabs a{color:#fff;opacity:.9}.hero.is-primary .tabs a:hover{opacity:1}.hero.is-primary .tabs li.is-active a{color:#00d1b2 !important;opacity:1}.hero.is-primary .tabs.is-boxed a,.hero.is-primary .tabs.is-toggle a{color:#fff}.hero.is-primary .tabs.is-boxed a:hover,.hero.is-primary .tabs.is-toggle a:hover{background-color:rgba(10,10,10,.1)}.hero.is-primary .tabs.is-boxed li.is-active a,.hero.is-primary .tabs.is-boxed li.is-active a:hover,.hero.is-primary .tabs.is-toggle li.is-active a,.hero.is-primary .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#00d1b2}.hero.is-primary.is-bold{background-image:linear-gradient(141deg, #009e6c 0%, #00d1b2 71%, #00e7eb 100%)}@media screen and (max-width: 768px){.hero.is-primary.is-bold .navbar-menu{background-image:linear-gradient(141deg, #009e6c 0%, #00d1b2 71%, #00e7eb 100%)}}.hero.is-link{background-color:#485fc7;color:#fff}.hero.is-link a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-link strong{color:inherit}.hero.is-link .title{color:#fff}.hero.is-link .subtitle{color:rgba(255,255,255,.9)}.hero.is-link .subtitle a:not(.button),.hero.is-link .subtitle strong{color:#fff}@media screen and (max-width: 1023px){.hero.is-link .navbar-menu{background-color:#485fc7}}.hero.is-link .navbar-item,.hero.is-link .navbar-link{color:rgba(255,255,255,.7)}.hero.is-link a.navbar-item:hover,.hero.is-link a.navbar-item.is-active,.hero.is-link .navbar-link:hover,.hero.is-link .navbar-link.is-active{background-color:#3a51bb;color:#fff}.hero.is-link .tabs a{color:#fff;opacity:.9}.hero.is-link .tabs a:hover{opacity:1}.hero.is-link .tabs li.is-active a{color:#485fc7 !important;opacity:1}.hero.is-link .tabs.is-boxed a,.hero.is-link .tabs.is-toggle a{color:#fff}.hero.is-link .tabs.is-boxed a:hover,.hero.is-link .tabs.is-toggle a:hover{background-color:rgba(10,10,10,.1)}.hero.is-link .tabs.is-boxed li.is-active a,.hero.is-link .tabs.is-boxed li.is-active a:hover,.hero.is-link .tabs.is-toggle li.is-active a,.hero.is-link .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#485fc7}.hero.is-link.is-bold{background-image:linear-gradient(141deg, #2959b3 0%, #485fc7 71%, #5658d2 100%)}@media screen and (max-width: 768px){.hero.is-link.is-bold .navbar-menu{background-image:linear-gradient(141deg, #2959b3 0%, #485fc7 71%, #5658d2 100%)}}.hero.is-info{background-color:#3e8ed0;color:#fff}.hero.is-info a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-info strong{color:inherit}.hero.is-info .title{color:#fff}.hero.is-info .subtitle{color:rgba(255,255,255,.9)}.hero.is-info .subtitle a:not(.button),.hero.is-info .subtitle strong{color:#fff}@media screen and (max-width: 1023px){.hero.is-info .navbar-menu{background-color:#3e8ed0}}.hero.is-info .navbar-item,.hero.is-info .navbar-link{color:rgba(255,255,255,.7)}.hero.is-info a.navbar-item:hover,.hero.is-info a.navbar-item.is-active,.hero.is-info .navbar-link:hover,.hero.is-info .navbar-link.is-active{background-color:#3082c5;color:#fff}.hero.is-info .tabs a{color:#fff;opacity:.9}.hero.is-info .tabs a:hover{opacity:1}.hero.is-info .tabs li.is-active a{color:#3e8ed0 !important;opacity:1}.hero.is-info .tabs.is-boxed a,.hero.is-info .tabs.is-toggle a{color:#fff}.hero.is-info .tabs.is-boxed a:hover,.hero.is-info .tabs.is-toggle a:hover{background-color:rgba(10,10,10,.1)}.hero.is-info .tabs.is-boxed li.is-active a,.hero.is-info .tabs.is-boxed li.is-active a:hover,.hero.is-info .tabs.is-toggle li.is-active a,.hero.is-info .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#3e8ed0}.hero.is-info.is-bold{background-image:linear-gradient(141deg, #208fbc 0%, #3e8ed0 71%, #4d83db 100%)}@media screen and (max-width: 768px){.hero.is-info.is-bold .navbar-menu{background-image:linear-gradient(141deg, #208fbc 0%, #3e8ed0 71%, #4d83db 100%)}}.hero.is-success{background-color:#48c78e;color:#fff}.hero.is-success a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-success strong{color:inherit}.hero.is-success .title{color:#fff}.hero.is-success .subtitle{color:rgba(255,255,255,.9)}.hero.is-success .subtitle a:not(.button),.hero.is-success .subtitle strong{color:#fff}@media screen and (max-width: 1023px){.hero.is-success .navbar-menu{background-color:#48c78e}}.hero.is-success .navbar-item,.hero.is-success .navbar-link{color:rgba(255,255,255,.7)}.hero.is-success a.navbar-item:hover,.hero.is-success a.navbar-item.is-active,.hero.is-success .navbar-link:hover,.hero.is-success .navbar-link.is-active{background-color:#3abb81;color:#fff}.hero.is-success .tabs a{color:#fff;opacity:.9}.hero.is-success .tabs a:hover{opacity:1}.hero.is-success .tabs li.is-active a{color:#48c78e !important;opacity:1}.hero.is-success .tabs.is-boxed a,.hero.is-success .tabs.is-toggle a{color:#fff}.hero.is-success .tabs.is-boxed a:hover,.hero.is-success .tabs.is-toggle a:hover{background-color:rgba(10,10,10,.1)}.hero.is-success .tabs.is-boxed li.is-active a,.hero.is-success .tabs.is-boxed li.is-active a:hover,.hero.is-success .tabs.is-toggle li.is-active a,.hero.is-success .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#48c78e}.hero.is-success.is-bold{background-image:linear-gradient(141deg, #29b35e 0%, #48c78e 71%, #56d2af 100%)}@media screen and (max-width: 768px){.hero.is-success.is-bold .navbar-menu{background-image:linear-gradient(141deg, #29b35e 0%, #48c78e 71%, #56d2af 100%)}}.hero.is-warning{background-color:#ffe08a;color:rgba(0,0,0,.7)}.hero.is-warning a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-warning strong{color:inherit}.hero.is-warning .title{color:rgba(0,0,0,.7)}.hero.is-warning .subtitle{color:rgba(0,0,0,.9)}.hero.is-warning .subtitle a:not(.button),.hero.is-warning .subtitle strong{color:rgba(0,0,0,.7)}@media screen and (max-width: 1023px){.hero.is-warning .navbar-menu{background-color:#ffe08a}}.hero.is-warning .navbar-item,.hero.is-warning .navbar-link{color:rgba(0,0,0,.7)}.hero.is-warning a.navbar-item:hover,.hero.is-warning a.navbar-item.is-active,.hero.is-warning .navbar-link:hover,.hero.is-warning .navbar-link.is-active{background-color:#ffd970;color:rgba(0,0,0,.7)}.hero.is-warning .tabs a{color:rgba(0,0,0,.7);opacity:.9}.hero.is-warning .tabs a:hover{opacity:1}.hero.is-warning .tabs li.is-active a{color:#ffe08a !important;opacity:1}.hero.is-warning .tabs.is-boxed a,.hero.is-warning .tabs.is-toggle a{color:rgba(0,0,0,.7)}.hero.is-warning .tabs.is-boxed a:hover,.hero.is-warning .tabs.is-toggle a:hover{background-color:rgba(10,10,10,.1)}.hero.is-warning .tabs.is-boxed li.is-active a,.hero.is-warning .tabs.is-boxed li.is-active a:hover,.hero.is-warning .tabs.is-toggle li.is-active a,.hero.is-warning .tabs.is-toggle li.is-active a:hover{background-color:rgba(0,0,0,.7);border-color:rgba(0,0,0,.7);color:#ffe08a}.hero.is-warning.is-bold{background-image:linear-gradient(141deg, #ffb657 0%, #ffe08a 71%, #fff6a3 100%)}@media screen and (max-width: 768px){.hero.is-warning.is-bold .navbar-menu{background-image:linear-gradient(141deg, #ffb657 0%, #ffe08a 71%, #fff6a3 100%)}}.hero.is-danger{background-color:#f14668;color:#fff}.hero.is-danger a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-danger strong{color:inherit}.hero.is-danger .title{color:#fff}.hero.is-danger .subtitle{color:rgba(255,255,255,.9)}.hero.is-danger .subtitle a:not(.button),.hero.is-danger .subtitle strong{color:#fff}@media screen and (max-width: 1023px){.hero.is-danger .navbar-menu{background-color:#f14668}}.hero.is-danger .navbar-item,.hero.is-danger .navbar-link{color:rgba(255,255,255,.7)}.hero.is-danger a.navbar-item:hover,.hero.is-danger a.navbar-item.is-active,.hero.is-danger .navbar-link:hover,.hero.is-danger .navbar-link.is-active{background-color:#ef2e55;color:#fff}.hero.is-danger .tabs a{color:#fff;opacity:.9}.hero.is-danger .tabs a:hover{opacity:1}.hero.is-danger .tabs li.is-active a{color:#f14668 !important;opacity:1}.hero.is-danger .tabs.is-boxed a,.hero.is-danger .tabs.is-toggle a{color:#fff}.hero.is-danger .tabs.is-boxed a:hover,.hero.is-danger .tabs.is-toggle a:hover{background-color:rgba(10,10,10,.1)}.hero.is-danger .tabs.is-boxed li.is-active a,.hero.is-danger .tabs.is-boxed li.is-active a:hover,.hero.is-danger .tabs.is-toggle li.is-active a,.hero.is-danger .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#f14668}.hero.is-danger.is-bold{background-image:linear-gradient(141deg, #fa0a62 0%, #f14668 71%, #f7595f 100%)}@media screen and (max-width: 768px){.hero.is-danger.is-bold .navbar-menu{background-image:linear-gradient(141deg, #fa0a62 0%, #f14668 71%, #f7595f 100%)}}.hero.is-small .hero-body{padding:1.5rem}@media screen and (min-width: 769px),print{.hero.is-medium .hero-body{padding:9rem 4.5rem}}@media screen and (min-width: 769px),print{.hero.is-large .hero-body{padding:18rem 6rem}}.hero.is-halfheight .hero-body,.hero.is-fullheight .hero-body,.hero.is-fullheight-with-navbar .hero-body{align-items:center;display:flex}.hero.is-halfheight .hero-body>.container,.hero.is-fullheight .hero-body>.container,.hero.is-fullheight-with-navbar .hero-body>.container{flex-grow:1;flex-shrink:1}.hero.is-halfheight{min-height:50vh}.hero.is-fullheight{min-height:100vh}.hero-video{overflow:hidden}.hero-video video{left:50%;min-height:100%;min-width:100%;position:absolute;top:50%;transform:translate3d(-50%, -50%, 0)}.hero-video.is-transparent{opacity:.3}@media screen and (max-width: 768px){.hero-video{display:none}}.hero-buttons{margin-top:1.5rem}@media screen and (max-width: 768px){.hero-buttons .button{display:flex}.hero-buttons .button:not(:last-child){margin-bottom:.75rem}}@media screen and (min-width: 769px),print{.hero-buttons{display:flex;justify-content:center}.hero-buttons .button:not(:last-child){margin-right:1.5rem}}.hero-head,.hero-foot{flex-grow:0;flex-shrink:0}.hero-body{flex-grow:1;flex-shrink:0;padding:3rem 1.5rem}@media screen and (min-width: 769px),print{.hero-body{padding:3rem 3rem}}.section{padding:1.5rem}@media screen and (min-width: 1024px){.section{padding:3rem 3rem}.section.is-medium{padding:9rem 4.5rem}.section.is-large{padding:18rem 6rem}}.footer{background-color:#fafafa;padding:3rem 1.5rem 6rem}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","var api = require(\"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n var content = require(\"!!../../node_modules/css-loader/dist/cjs.js!./core.css\");\n\n content = content.__esModule ? content.default : content;\n\n if (typeof content === 'string') {\n content = [[module.id, content, '']];\n }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\nvar exported = content.locals ? content.locals : {};\n\n\n\nmodule.exports = exported;","var api = require(\"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n var content = require(\"!!../../node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./bulma.sass\");\n\n content = content.__esModule ? content.default : content;\n\n if (typeof content === 'string') {\n content = [[module.id, content, '']];\n }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\nvar exported = content.locals ? content.locals : {};\n\n\n\nmodule.exports = exported;","import * as React from 'react';\r\nimport { hot } from 'react-hot-loader/root';\r\nimport { Switch, useLocation } from 'react-router-dom';\r\nimport { Route, RouteProps } from 'react-router-dom';\r\n\r\nimport { Modal, PublicRoute, PrivateRoute, NonIdealState } from 'web-shared/components';\r\nimport { Header, Footer } from 'web-frontend/components';\r\nimport { gaPageView, hexToCssVars } from 'web-shared/lib';\r\n\r\nimport { config } from 'web-frontend/lib';\r\nimport { auth, ui } from 'web-shared/store';\r\nimport { initializeBugsnag } from 'web-shared/lib/initialize';\r\n\r\nimport { LoginForm } from 'web-shared/pages/login';\r\nimport LoginRegisterPage from './pages/account/loginOrRegister';\r\nimport LogoffPage from 'web-shared/pages/logoff';\r\nimport NotFoundPage from 'web-shared/pages/notFound';\r\nimport { LandingPage } from './pages/landing/landing';\r\n\r\nconst ForgotPage = React.lazy(() => import('web-shared/pages/forgot'));\r\nconst ResetPage = React.lazy(() => import('web-shared/pages/reset'));\r\nconst VerifyPage = React.lazy(() => import('web-shared/pages/verify'));\r\nconst AccountSetupPage = React.lazy(() => import('./pages/account/account-setup'));\r\n\r\nconst MainLandingPage = React.lazy(() => import('./pages/landing'));\r\nconst QuestionsPage = React.lazy(() => import('./pages/questions/questions'));\r\nconst AboutPage = React.lazy(() => import('./pages/about'));\r\nconst UserPage = React.lazy(() => import('./pages/user'));\r\nconst ApplicationDetailPage = React.lazy(() => import('./pages/user/application[id]'));\r\nconst RenewalDetailPage = React.lazy(() => import('./pages/user/renewal[id]'));\r\nconst ActionPage = React.lazy(() => import('./pages/user/action[id]'));\r\nconst SignupPage = React.lazy(() => import(`./pages/signup`));\r\nconst ApplicationRenderer = React.lazy(() => import('./pages/secured/apply/index'));\r\n\r\nconst AdminPage = React.lazy(() => import('./pages/secured/admin'));\r\nconst AdminAppsPage = React.lazy(() => import('./pages/secured/admin/apps/applications'));\r\nconst AdminAppDetailPage = React.lazy(() => import('./pages/secured/admin/apps/detail'));\r\n\r\nconst PPPAdminPage = React.lazy(() => import(`./pages/ppp/loan/admin`));\r\nconst PPPAdminDetailPage = React.lazy(() => import(`./pages/ppp/loan/admin/ppl-detail`));\r\n\r\nconst PppApplicationPage = React.lazy(() => import('./pages/ppp/loan/application/apply'));\r\nconst ForgivenessApplicationPage = React.lazy(() => import('./pages/ppp/forgiveness/application/apply'));\r\nconst ForgivenessAdminPage = React.lazy(() => import(`./pages/ppp/forgiveness/admin/ppf-applications`));\r\nconst ForgivenessAdminDetailPage = React.lazy(() => import(`./pages/ppp/forgiveness/admin/ppf-detail`));\r\n\r\nconst AdminRoute: React.FC = ({ children, title, token, component, ...rest }) => {\r\n return {\r\n const authState = auth.getStateSnapshot();\r\n const isAdmin = authState.admin || authState.globalAdmin;\r\n if(!isAdmin) {\r\n return ;\r\n }\r\n return ;\r\n }\r\n } />;\r\n};\r\n\r\nimport { initializeGoogleAnalytics } from './lib/googleAnalytics';\r\ninitializeGoogleAnalytics();\r\n\r\nconst bugsnagClient = initializeBugsnag();\r\nauth.initialize(bugsnagClient);\r\nui.initialize(config.client.name);\r\n\r\nconst App: React.FC = function() {\r\n const { expires, token } = auth.useState(s => ({\r\n expires: s.expires,\r\n token: s.token,\r\n }));\r\n\r\n const location = useLocation();\r\n React.useEffect(() => {\r\n gaPageView(location);\r\n }, [location]);\r\n\r\n // Set a timer to refresh the page when login expires\r\n const [, setState] = React.useState(new Date().getTime());\r\n React.useEffect(() => {\r\n if(!expires) {\r\n return;\r\n }\r\n const expireMs = new Date(expires).getTime() - new Date().getTime() + 500;\r\n const timeout = setTimeout(() => {\r\n setState(new Date().getTime());\r\n }, expireMs);\r\n\r\n return () => { clearTimeout(timeout); };\r\n }, [expires]);\r\n\r\n const isPpp = config.site.type === 'paycheck';\r\n const hasMl = true;\r\n\r\n const { securedSites = [] } = config.site;\r\n const hasSecured = securedSites.length > 0;\r\n const hasExpressLender = securedSites.includes('express-lender');\r\n\r\n return <>\r\n {/* */}\r\n\r\n \r\n\r\n \r\n\r\n
\r\n {expires && new Date(expires) < new Date()\r\n ? \r\n \r\n : null}\r\n
\r\n
\r\n }>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n {/* Hard-coded SBA route for express lender */}\r\n {hasExpressLender ? : null}\r\n\r\n {/* Map all sites to a sub-path */}\r\n {securedSites.map(s => )}\r\n\r\n {/* Any secured app detail page */}\r\n {hasSecured ? : null}\r\n\r\n {/* Allow default routes */}\r\n {securedSites.length === 1 ? : null}\r\n\r\n {/* Render secured admin routes */}\r\n {hasSecured ? : null}\r\n {hasSecured ? : null}\r\n {hasSecured ? : null}\r\n\r\n {hasMl ? : null}\r\n {hasMl ? : null}\r\n {hasMl ? : null}\r\n\r\n {isPpp ? : null}\r\n {isPpp ? : null}\r\n {isPpp ? : null}\r\n {isPpp ? : null}\r\n {isPpp ? : null}\r\n {isPpp ? : null}\r\n\r\n \r\n \r\n\r\n {config.landingPages.map(l => )}\r\n {config.landingPages.map(l => )}\r\n\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n ;\r\n};\r\n\r\nexport const HotApp = hot(App);\r\n","import * as React from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport styled from 'styled-components';\r\n\r\nimport { HtmlString } from 'web-shared/components';\r\nimport { BannerBackgroundImage } from 'web-frontend/components';\r\nimport { shadeColor } from 'web-shared/lib';\r\nimport Color from 'ac-colors';\r\nimport { config } from 'web-frontend/lib';\r\n\r\nconst Styles = styled.div`\r\n .pre { white-space: pre-line; }\r\n .button {\r\n margin: 20px 1em; height: auto;\r\n }\r\n .button-title { font-weight: bold; font-size: 1.3em; text-decoration: underline; }\r\n`;\r\n\r\nfunction useLink(url: string | undefined) {\r\n return url && (url === '#' || url.substr(0, 4) === 'http');\r\n}\r\n\r\ninterface Props {\r\n showButton?: boolean;\r\n banner: api.LandingPageBanner;\r\n productNameOnly?: boolean;\r\n}\r\nexport const Banner: React.FC = function ({ showButton = false, banner, productNameOnly }) {\r\n // Get the requested banner\r\n const highlightColor = banner.highlightColor || '#76933C';\r\n const boxOpacity = banner.boxOpacity === null ? 0.7 : banner.boxOpacity;\r\n const backgroundColor = 'rgba(0, 0, 0, ' + boxOpacity + ')';\r\n\r\n // Get button configuration\r\n const buttons: api.SiteConfigBannerButton[] = banner.buttons?.length\r\n ? banner.buttons.map(b => ({\r\n color: b.color || banner.highlightColor,\r\n linkUrl: (b.linkUrl || '').toLowerCase(),\r\n text: b.text,\r\n details: b.details,\r\n textColor: b.textColor,\r\n }))\r\n : [{\r\n color: banner.highlightColor,\r\n linkUrl: (banner.linkUrl || '').toLowerCase(),\r\n text: banner.buttonText,\r\n }];\r\n const imageUrl = banner.imageUrl || '';\r\n\r\n return \r\n \r\n\r\n \r\n
\r\n ${config.site.name}` : banner.bannerText} style={{ color: highlightColor, fontWeight: 'bold' }} />\r\n {\r\n !showButton ? null : buttons.filter(b => b.linkUrl).map((b, i) => {\r\n const color = b.color || highlightColor;\r\n const contrastRatio = Color.contrastRatio(new Color({ color, type: 'hex' }), new Color({ color: [255, 255, 255] }));\r\n const style = {\r\n color: b.textColor || (contrastRatio < 3 ? '#000' : '#fff'),\r\n backgroundColor: color,\r\n borderColor: shadeColor(-12, color),\r\n margin: '1em',\r\n };\r\n const content =
\r\n
{b.text}
\r\n
\r\n
;\r\n\r\n return useLink(b.linkUrl)\r\n ? {content}\r\n : {content};\r\n })\r\n }\r\n
\r\n ;\r\n};\r\n","import * as React from 'react';\r\n\r\nfunction getHeight() {\r\n const w = window.innerWidth;\r\n if(w <= 767) return 550;\r\n if(w <= 991) return 600;\r\n if(w <= 1199) return 800;\r\n return 1000;\r\n}\r\n\r\nexport const BannerBackgroundImage: React.FC<{ src: string }> = function ({ src }) {\r\n const width = Math.ceil(window.innerWidth / 50) * 50;\r\n const imageSrc = `https://res.cloudinary.com/rcgiltner/image/fetch/w_${width || 1200},h_${getHeight()},f_auto,c_fill,g_face/${src}`;\r\n\r\n return
\r\n \r\n
;\r\n};\r\n","import * as React from 'react';\r\nimport { Modal, Section, SectionHeader, Spinner, Button } from 'web-shared/components';\r\nimport { auth } from 'web-shared/store';\r\n\r\ninterface Props {\r\n onClose: () => void;\r\n}\r\n\r\nexport const BranchLoginForm: React.FC = function ({ onClose }) {\r\n const [{ busy, error }, setState] = React.useState({\r\n busy: false,\r\n error: '',\r\n });\r\n const userNameRef = React.useRef(null);\r\n const passwordRef = React.useRef(null);\r\n\r\n function _modalClose() {\r\n onClose && onClose();\r\n }\r\n\r\n async function _login(e: React.FormEvent) {\r\n e.preventDefault();\r\n\r\n setState({ busy: true, error: '' });\r\n\r\n try {\r\n const response = await auth.branchLogin(userNameRef.current?.value || '', passwordRef.current?.value || '');\r\n\r\n setState({ busy: false, error: response.errorMessage || '' });\r\n if(!response.errorMessage) {\r\n onClose && onClose();\r\n }\r\n } catch(e) {\r\n setState({ busy: false, error: 'Unable to contact the login server.' });\r\n }\r\n }\r\n\r\n return \r\n \r\n\r\n
\r\n
\r\n
\r\n
\r\n Branch employee login!\r\n
\r\n Please enter your employee email address and password below.\r\n
\r\n
\r\n {error ?
\r\n
{error}
\r\n
: null}\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
;\r\n};\r\n","import * as React from 'react';\r\n\r\nimport { Modal, NonIdealState } from 'web-shared/components';\r\nimport { postJson } from 'web-shared/lib';\r\nimport Axios, { CancelTokenSource } from 'axios';\r\nimport { gaEvent } from 'web-shared/lib';\r\nimport { Pdf } from './pdf';\r\n\r\ninterface DisclosureResponse {\r\n pdfContent: string;\r\n documentMd5: string;\r\n}\r\ninterface Props {\r\n name: string;\r\n id: string | number;\r\n renewal?: boolean;\r\n ppl?: boolean;\r\n ppf?: boolean;\r\n parameters?: object;\r\n onOk: (id: string | number) => void;\r\n onClose?: () => void;\r\n}\r\nexport const DisclosureModal: React.FC = ({ name, id, onOk, onClose, renewal, ppl, ppf, parameters = {} }) => {\r\n const [{ ready, failed, error }, setState] = React.useState({\r\n ready: false,\r\n failed: false,\r\n error: '',\r\n });\r\n const [results, setResults] = React.useState();\r\n\r\n async function getDisclosureData(tokenSource: CancelTokenSource) {\r\n setState({ ready: false, failed: false, error: '' });\r\n setResults(undefined);\r\n\r\n // URL is different for renewals\r\n const type = typeof (id) === 'string' ? 'template' : 'version';\r\n const url = renewal ? `/api/user/renewal/disclosure/${id}/base64`\r\n : ppl ? `/api/ppl/disclosure/${type}/${id}`\r\n : ppf ? `/api/forgiveness/disclosure/version/${id}`\r\n : `/api/signup/disclosure/${type}/${id}`;\r\n\r\n const response = await postJson(url, parameters, tokenSource.token);\r\n if(response.isError) {\r\n setState({ ready: false, failed: false, error: response.error });\r\n }\r\n\r\n setResults(response.payload);\r\n }\r\n\r\n React.useEffect(() => {\r\n const cancelSource = Axios.CancelToken.source();\r\n getDisclosureData(cancelSource);\r\n\r\n return () => {\r\n cancelSource && cancelSource.cancel();\r\n };\r\n }, [name, id]);\r\n\r\n function _documentLoaded() {\r\n gaEvent('signup', 'ViewDisclosure');\r\n setState({ ready: true, failed: false, error: '' });\r\n }\r\n function _documentFailed() {\r\n setState({ ready: false, failed: true, error: '' });\r\n }\r\n\r\n const loadingMessage = ;\r\n const isError = error || failed;\r\n\r\n return onOk && onOk(id)}\r\n onClose={() => onClose && onClose()}\r\n isReady={ready}\r\n bodyStyle={{ backgroundColor: '#555' }}\r\n >\r\n
\r\n {isError ? : null}\r\n {!isError && !results?.pdfContent ? loadingMessage : null}\r\n {!isError && results?.pdfContent ?\r\n : null}\r\n
\r\n
;\r\n};\r\n","import * as React from 'react';\r\nimport { Link } from 'react-router-dom';\r\n\r\nimport { config } from 'web-frontend/lib';\r\nimport { BranchLoginForm } from 'web-frontend/components';\r\nimport { auth } from 'web-shared/store';\r\n\r\nconst versionString = 'v3.1.19';\r\n\r\ninterface Props { }\r\n\r\nexport const Footer: React.FC = function () {\r\n const branchLoginModalOpen = auth.useState(s => s.branchLoginModalOpen);\r\n const branchUser = auth.useState(s => s.branchUser);\r\n\r\n function _branchClick() {\r\n // Log the user out\r\n if(branchUser) {\r\n auth.branchLogoff();\r\n } else {\r\n auth.toggleBranchLoginModal(true);\r\n }\r\n }\r\n function _closeBranchLogin() {\r\n auth.toggleBranchLoginModal(false);\r\n }\r\n\r\n const footerImages = config.footerImages || [];\r\n\r\n return
\r\n \r\n {branchLoginModalOpen ? : null}\r\n
\r\n
\r\n
\r\n {footerImages.map((img, i) => \"Equal)}\r\n
\r\n
\r\n
\r\n
\r\n {config.aboutUsUrl ? About Us :\r\n About Us}\r\n {config.contactUrl ? Contact Us : null}\r\n {config.privacyPolicyUrl ? Privacy Policy : null}\r\n
\r\n \r\n {branchUser ? 'Branch Logout' : 'Branch Login'}\r\n \r\n {config.institutionNumber ? Institution ID #{config.institutionNumber} : null}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
{versionString}
\r\n
{branchUser}
\r\n
\r\n
\r\n
\r\n
;\r\n};\r\n","import * as React from 'react';\r\nimport Slider from 'react-slick';\r\nimport styled from 'styled-components';\r\n\r\nimport { Banner } from 'web-frontend/components';\r\nimport { classNames, useWindowSize } from 'web-shared/lib';\r\n\r\nconst Styles = styled.div`\r\n color: #fff; background: #fff; position: relative; top: 0;\r\n\r\n .banner { height: calc(100vh - 50px); margin-bottom: 2em; padding-top: 0; }\r\n .banner.small, .banner.small .banner-img { height: 450px; }\r\n .slick-slide { visibility: hidden; }\r\n .slick-active { visibility: visible; }\r\n\r\n .slick-slider, .slick-list, .slick-track, .slick-slide, .slick-slide > div, .slick-slide > div > div, .banner-img { height: 100%; }\r\n\r\n .text-center { margin: 0; padding: 0; }\r\n .hint { position: absolute; bottom: 0; width: 100%; height: 0.5em; }\r\n .hintLine {\r\n width: 100%; height: 100%;\r\n background-color: #244062;\r\n background-color: var(--color-secondary);\r\n }\r\n .hintCircle { left: 50%; width: 5em; height: 5em; position: absolute; top: 0; }\r\n .hintCircle2 {\r\n width: 5em; height: 5em; border-radius: 5em; position: absolute; top: -2.3em; left: -50%;\r\n background-color: #244062;\r\n background-color: var(--color-secondary);\r\n }\r\n .hintCircle3 {\r\n width: 4em; height: 4em; border-radius: 4em; margin-left: .5em; margin-top: .5em;\r\n background-color: #92a0b1;\r\n background-color: var(--color-secondary-light-50);\r\n }\r\n .hintIcon { font-size: 3em; margin-left: 0.17em; margin-top: 0.15em; display: inline-block; }\r\n`;\r\ninterface Props {\r\n banners: api.LandingPageBanner[];\r\n small?: boolean;\r\n}\r\nexport const HeaderPane: React.FC = ({ banners, small = false }) => {\r\n useWindowSize(); // Just needed to recalc when window size changes\r\n const headerEl = document.getElementsByClassName('navbar');\r\n const headerHeight = headerEl[0]?.clientHeight || 50;\r\n\r\n function _buildBanner() {\r\n // No banners defined. Do something default\r\n if(!banners || banners.length === 0)\r\n return null;\r\n\r\n const bannerDivs = banners.map((b, i) => );\r\n const settings = {\r\n dots: banners.length > 1,\r\n arrows: banners.length > 1,\r\n infinite: true,\r\n speed: 500,\r\n slidesToShow: 1,\r\n slidesToScroll: 1,\r\n autoplay: true,\r\n autoplaySpeed: 9000,\r\n fade: true,\r\n swipe: false,\r\n draggable: false,\r\n };\r\n return {bannerDivs};\r\n }\r\n\r\n const banner = _buildBanner();\r\n return \r\n
\r\n {banner}\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n ;\r\n};\r\n","import * as React from 'react';\r\nimport { UnknownLink } from './unknownLink';\r\nimport styled from 'styled-components';\r\nimport { RelativeTime } from 'web-shared/components';\r\nimport { auth } from 'web-shared/store';\r\n\r\nconst StyledListItem = styled.li`\r\n & a { display: flex; }\r\n & .user-info { text-align: right; font-size: 0.9em; line-height: 1.2em; }\r\n & .fa-user { display: inline-block; margin-left: 10px; font-size: 2.5em; }\r\n & .expires { font-size: 0.8em; }\r\n @media(max-width: 768px) {\r\n & a { flex-direction: row-reverse; justify-content: flex-end; }\r\n & .user-info { text-align: left; }\r\n & .fa-user { display: inline-block; margin-left: 0; margin-right: 10px; font-size: 2.5em; }\r\n }\r\n`;\r\n\r\nexport const AccountLink: React.FC<{ name: string, email: string }> = function ({ name, email }) {\r\n const expireDate = auth.useState(s => s.expires);\r\n return \r\n \r\n
\r\n
{name}
\r\n
{email}
\r\n {expireDate ?
(session expires )
: null}\r\n
\r\n \r\n
\r\n
;\r\n};\r\n","import * as React from 'react';\r\n\r\nimport { Header as Header1 } from './option1';\r\nimport { Header as Header2 } from './option2';\r\nimport { Header as Header3 } from './option3';\r\nimport { HeaderLink } from 'web-shared/store';\r\n\r\nexport interface HeaderProps {\r\n links?: HeaderLink[];\r\n}\r\n\r\ninterface Props {\r\n option: 1 | 2 | 3;\r\n}\r\n\r\nexport const Header: React.FC = ({ option, ...p }) => {\r\n switch(option) {\r\n default:\r\n case 1:\r\n return ;\r\n case 2:\r\n return ;\r\n case 3:\r\n return ;\r\n }\r\n};\r\n","import * as React from 'react';\r\nimport { Link } from 'react-router-dom';\r\n\r\nimport { auth, ui } from 'web-shared/store';\r\nimport { config } from 'web-frontend/lib';\r\nimport { UnknownLink } from './unknownLink';\r\nimport { AccountLink } from './accountLink';\r\nimport styled from 'styled-components';\r\n\r\nconst StyledDiv = styled.div`\r\n svg .color-primary { fill: ${config.colors.logo1}; }\r\n svg .color-secondary { fill: ${config.colors.logo2}; }\r\n`;\r\nconst NavbarEnd = styled.ul`\r\n & .navbar-item { padding: 0; }\r\n & .navbar-item a { padding: 0 0.75rem; color: #333; height: 100%; display: flex; align-items: center; }\r\n & .navbar-item:hover a {\r\n background-color: #244062;\r\n background-color: var(--color-secondary);\r\n color: #fff;\r\n }\r\n & .sign-out-text { display: none; }\r\n & .fa-sign-out { font-size: 1.3em; }\r\n @media(max-width: 768px) {\r\n & .sign-out { display: flex; align-items: center; }\r\n & .sign-out-text { display: inline; padding-left: 10px; }\r\n & .fa-sign-out { font-size: 2.5em; }\r\n }\r\n`;\r\n\r\ninterface NavItemProps {\r\n name: string | React.ReactElement;\r\n href: string;\r\n title?: string;\r\n}\r\nconst NavItem: React.FC = function ({ name, href, title }) {\r\n return
  • \r\n {name}\r\n
  • ;\r\n};\r\n\r\nfunction img(src: string = '', alt: string) {\r\n if(src.startsWith('\r\n }\r\n return {alt};\r\n}\r\n\r\n// Main application navbar\r\nexport const Header: React.FC<{}> = () => {\r\n const { userName, name } = auth.useState(s => ({\r\n userName: s.userName,\r\n name: s.name,\r\n }));\r\n const { headerLinks, hideLoginLinks } = ui.useState(s => ({\r\n headerLinks: s.headerLinks,\r\n hideLoginLinks: s.hideLoginLinks,\r\n }));\r\n\r\n const siteLogo = \r\n {img(config.site.logo, config.site.name)}\r\n ;\r\n const clientLogo = \r\n {img(config.client.logo, config.client.name)}\r\n ;\r\n\r\n return
    \r\n \r\n \r\n {config.hideClientLogo ? siteLogo :\r\n config.clientLogoFirst ? <>{clientLogo}{siteLogo} :\r\n <>{siteLogo}{clientLogo}}\r\n \r\n
    \r\n \r\n {headerLinks.map(v => v.isHidden ? null : )}\r\n {userName ? : null}\r\n {userName ? Sign Out} href=\"/logoff\" title=\"Log off\" /> : null}\r\n {!userName && !hideLoginLinks ? : null}\r\n {!userName && !hideLoginLinks ? : null}\r\n \r\n
    \r\n
    ;\r\n};\r\n","import * as React from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport useOnClickOutside from 'use-onclickoutside';\r\n\r\nimport { config } from 'web-frontend/lib';\r\nimport { useWindowScrolledTo, classNames } from 'web-shared/lib';\r\nimport { HeaderProps } from '..';\r\nimport { auth, ui } from 'web-shared/store';\r\n\r\nimport { AccountLink } from './accountLink';\r\nimport { UnknownLink } from './unknownLink';\r\n\r\nconst Logo: React.FC<{ name: string, src: string }> = ({ name, src }) => {\r\n return \r\n \r\n\r\n {name}\r\n ;\r\n};\r\n\r\nconst Menu: React.FC<{ pageLinks: JSX.Element[], authLinks: JSX.Element[] }> = ({ pageLinks, authLinks }) => {\r\n const [open, setOpen] = React.useState(false);\r\n\r\n const ref: React.MutableRefObject = React.useRef(null);\r\n useOnClickOutside(ref, () => setOpen(false));\r\n\r\n return
    \r\n \r\n\r\n
  • setOpen(s => !s)}>\r\n Menu \r\n
  • \r\n {open ?
      setOpen(false)}>\r\n {pageLinks.map((link, i) =>
    • {link}
    • )}\r\n
    • \r\n {authLinks.map((link, i) =>
    • {link}
    • )}\r\n
    : null}\r\n
    ;\r\n};\r\n\r\nexport const Header: React.FC = () => {\r\n const { userName, name, userId } = auth.useState(s => ({\r\n userName: s.userName,\r\n name: s.name,\r\n userId: s.userId,\r\n }));\r\n const headerLinks = ui.useState(s => s.headerLinks);\r\n\r\n const scrolled = useWindowScrolledTo(200);\r\n\r\n // Page Links\r\n const pageLinks = headerLinks.map(l => {l.name});\r\n const authLinks = [\r\n userId ? :\r\n Register,\r\n userId ? Log off :\r\n Login,\r\n ];\r\n\r\n return <>\r\n \r\n\r\n
    \r\n
    \r\n
      \r\n
    • \r\n \r\n \r\n
    • \r\n\r\n {pageLinks.map((link, i) =>
    • {link}
    • )}\r\n {authLinks.map((link, i) =>
    • {link}
    • )}\r\n\r\n \r\n
    \r\n
    \r\n
    \r\n ;\r\n};\r\n","import * as React from 'react';\r\nimport { Link } from 'react-router-dom';\r\n\r\nimport { auth, ui } from 'web-shared/store';\r\nimport { config } from 'web-frontend/lib';\r\nimport { UnknownLink } from './unknownLink';\r\nimport { AccountLink } from './accountLink';\r\nimport { useWindowScrollPosition } from 'web-shared/lib';\r\n\r\ninterface NavItemProps {\r\n name: string | React.ReactElement;\r\n href: string;\r\n title?: string;\r\n}\r\nconst NavItem: React.FC = function ({ name, href, title }) {\r\n return
  • \r\n {name}\r\n
  • ;\r\n};\r\n\r\nconst headerScrollHeight = 200;\r\n\r\n// Main application navbar\r\nexport const Header: React.FC<{}> = function () {\r\n const { userName, name } = auth.useState(s => ({\r\n userName: s.userName,\r\n name: s.name,\r\n }));\r\n const { headerLinks, hideLoginLinks } = ui.useState(s => ({\r\n headerLinks: s.headerLinks,\r\n hideLoginLinks: s.hideLoginLinks,\r\n }));\r\n\r\n const { y } = useWindowScrollPosition(50);\r\n\r\n const siteLogo = \r\n {config.site.name}\r\n ;\r\n const clientLogo = \r\n {config.client.name}\r\n ;\r\n\r\n const opacity = Math.max(0.4, Math.min(y / headerScrollHeight, 1));\r\n return
    \r\n \r\n
    \r\n {\r\n config.hideClientLogo ? siteLogo :\r\n config.clientLogoFirst\r\n ? <>{clientLogo}{siteLogo}\r\n : <>{siteLogo}
    by
    {clientLogo}\r\n }\r\n \r\n \r\n \r\n
    \r\n
    \r\n
      \r\n {headerLinks.map(v => v.isHidden ? null : )}\r\n {userName ? : null}\r\n {userName ? } href=\"/logoff\" title=\"Log off\" /> : null}\r\n {!userName && !hideLoginLinks ? : null}\r\n {!userName && !hideLoginLinks ? : null}\r\n
    \r\n
    \r\n
    ;\r\n};\r\n","import * as React from 'react';\r\nimport { Link } from 'react-router-dom';\r\n\r\nexport const UnknownLink: React.FC<{ url: string, title?: string }> = function ({ url, children, ...p }) {\r\n const urlString = (url || '').toLowerCase();\r\n if(!urlString)\r\n return null;\r\n\r\n const link = urlString.substr(0, 4) === 'http' || url.substr(0, 1) === '#'\r\n ? {children}\r\n : {children};\r\n\r\n return link;\r\n};\r\n","import * as React from 'react';\r\n\r\nimport { config } from 'web-frontend/lib';\r\n\r\ninterface Props {\r\n size: 'h2' | 'h3' | 'h4';\r\n}\r\nexport const Logo: React.FC = function ({ size = 'h4' }) {\r\n const styles = {\r\n h2: { height: 40 },\r\n h3: { height: 22 },\r\n h4: { height: 18 },\r\n };\r\n\r\n return {config.site.name}\r\n;\r\n};\r\n","import * as React from 'react';\r\nimport * as pdfjs from 'pdfjs-dist/legacy/build/pdf';\r\nimport PdfjsWorker from 'pdfjs-dist/legacy/build/pdf.worker';\r\n\r\nif(typeof window !== 'undefined' && 'Worker' in window) {\r\n pdfjs.GlobalWorkerOptions.workerPort = new PdfjsWorker();\r\n}\r\n\r\nexport const PdfPage: React.FC<{ scale: number; page: pdfjs.PDFPageProxy }> = function ({ page, scale }) {\r\n const canvasRef = React.useRef(null);\r\n\r\n React.useEffect(() => {\r\n const renderPdf = async () => {\r\n const canvas = canvasRef.current;\r\n const context = canvas?.getContext('2d');\r\n if(!canvas || !context)\r\n return;\r\n\r\n const viewport = page.getViewport({ scale });\r\n canvas.height = viewport.height;\r\n canvas.width = viewport.width;\r\n context.clearRect(0, 0, canvas.width, canvas.height);\r\n\r\n // Render PDF page into canvas context\r\n const renderTask = page.render({\r\n canvasContext: context!,\r\n viewport: viewport,\r\n });\r\n\r\n await renderTask.promise;\r\n };\r\n\r\n renderPdf();\r\n }, [page, scale]);\r\n\r\n return ;\r\n};\r\n\r\nfunction getPdfFromByteArray(content: string = '') {\r\n const bytes = window.atob(content);\r\n const byteLength = bytes.length;\r\n const byteArray = new Uint8Array(byteLength);\r\n for(let index = 0; index < byteLength; index++) {\r\n byteArray[index] = bytes.charCodeAt(index);\r\n }\r\n return byteArray;\r\n}\r\n\r\ninterface Props {\r\n file?: string;\r\n content?: string;\r\n scale: number;\r\n loading: React.ReactElement;\r\n downloadLink: string;\r\n onDocumentComplete: () => void;\r\n onDocumentFailed: () => void;\r\n}\r\nexport const Pdf: React.FC = ({ file, content, scale = 1.0, loading: loadingScreen, downloadLink, onDocumentComplete, onDocumentFailed }) => {\r\n const [state, setState] = React.useState({\r\n pages: [] as pdfjs.PDFPageProxy[],\r\n ready: false,\r\n });\r\n\r\n React.useEffect(() => {\r\n const fetchPdf = async () => {\r\n setState({ ready: false, pages: [] });\r\n\r\n // Load the PDF\r\n const loadingTask = pdfjs.getDocument({\r\n data: file ? file : getPdfFromByteArray(content),\r\n isEvalSupported: false,\r\n });\r\n const pdf = await loadingTask.promise;\r\n\r\n // Fetch all pages\r\n const pages = [];\r\n for(let i = 1; i <= pdf.numPages; i++) {\r\n const page = await pdf.getPage(i);\r\n\r\n // tslint:disable-next-line: no-array-mutation\r\n pages.push(page);\r\n }\r\n\r\n setState({ ready: true, pages });\r\n onDocumentComplete && onDocumentComplete();\r\n };\r\n\r\n try {\r\n fetchPdf();\r\n } catch(ex) {\r\n onDocumentFailed && onDocumentFailed();\r\n }\r\n }, [file, content]);\r\n\r\n if(!state.ready)\r\n return loadingScreen ||
    Loading PDF...
    ;\r\n\r\n return
    \r\n
    \r\n Save / Print\r\n
    \r\n {state.pages.map((page, i) => )}\r\n
    ;\r\n};\r\n","import * as React from 'react';\r\nimport { classNames } from 'web-shared/lib';\r\nimport styled from 'styled-components';\r\nimport { IconNames } from 'web-shared/components';\r\n\r\nconst StyledColumn = styled.div`\r\n @media(max-width: 768px) { padding: 0; }\r\n`;\r\n\r\ninterface Props {\r\n children: any;\r\n label: string;\r\n labelInfo?: string | JSX.Element;\r\n labelSize?: 'is-three-quarters' | 'is-two-thirds' | 'is-half' | 'is-one-third' | 'is-one-quarter' | 'is-full' | 'is-four-fifths' | 'is-three-fifths' | 'is-two-fifths' | 'is-one-fifth';\r\n tooltip?: string;\r\n labelInfoFull?: boolean;\r\n controlPaddingTopEm?: number;\r\n icon?: IconNames;\r\n inputAddonLeft?: string | JSX.Element;\r\n inputAddonRight?: string | JSX.Element;\r\n buttonRight?: string | JSX.Element;\r\n error?: string | null;\r\n\tclassName?: string;\r\n\tstack?: boolean;\r\n}\r\nexport const SearchField: React.FC = ({\r\n label, labelInfo, labelSize = '', tooltip, labelInfoFull, controlPaddingTopEm = 0, className, children, icon, inputAddonLeft, inputAddonRight, error, buttonRight, stack = false\r\n}) => {\r\n let Container: keyof JSX.IntrinsicElements = 'div';\r\n const errors = React.Children.map(children, (c: React.ReactElement<{ 'data-error'?: string }>) => {\r\n if(!c)\r\n return '';\r\n if(c.type === 'input' || c.type === 'select')\r\n Container = 'label';\r\n return (c.props && c.props['data-error']) || '';\r\n })\r\n .filter(e => e);\r\n\r\n const mappedChildren = React.Children.map(children, (c: React.ReactElement) => {\r\n if(c?.type === 'select')\r\n return
    {c}
    \r\n return c;\r\n });\r\n\r\n return
    \r\n \r\n\r\n \r\n\t\t\t\r\n {icon ? : null}\r\n {label} {tooltip ? : null}\r\n {labelInfo && !labelInfoFull ?
    {labelInfo}
    : null}\r\n
    \r\n\t\t\t\r\n
    0 })}>\r\n {inputAddonLeft ?\r\n
    \r\n
    \r\n \r\n \r\n {inputAddonLeft}\r\n \r\n \r\n \r\n {mappedChildren}\r\n \r\n
    \r\n
    \r\n : inputAddonRight ?
    \r\n
    \r\n \r\n {mappedChildren}\r\n \r\n \r\n \r\n {inputAddonRight}\r\n \r\n \r\n
    \r\n
    : buttonRight ?
    \r\n
    \r\n \r\n {mappedChildren}\r\n \r\n \r\n {buttonRight}\r\n \r\n
    \r\n
    : mappedChildren}\r\n
    \r\n
    {errors.map(e =>
    {e}
    )}
    \r\n {error ?
    {error}
    : null}\r\n
    \r\n
    \r\n {labelInfo && labelInfoFull ?
    {labelInfo}
    : null}\r\n
    ;\r\n};\r\n","import * as React from 'react';\r\nimport styled from 'styled-components';\r\nimport { useTable, useSortBy, useGlobalFilter, Column, SortingRule } from 'react-table';\r\nimport { classNames } from 'web-shared/lib';\r\n\r\nconst Styles = styled.div`\r\n .table.sticky th {\r\n position: -webkit-sticky;\r\n position: sticky;\r\n top: 0;\r\n z-index: 2;\r\n background-color: #fff;\r\n vertical-align: bottom;\r\n }\r\n th.indicator { text-align: center; }\r\n td.indicator { border-left: 1px solid #dbdbdb; text-align: center; }\r\n .fa-sort-desc, .fa-sort-asc { padding-left: 0.5em; font-size: 1.25em; }\r\n`;\r\n\r\nfunction saveSort(id: string, sortRule: SortingRule) {\r\n\tif('localStorage' in window)\r\n\t\tlocalStorage.setItem(`table-sort-${id}`, JSON.stringify(sortRule));\r\n}\r\nfunction loadSort(id: string): SortingRule {\r\n\ttry {\r\n\t\tif('localStorage' in window)\r\n\t\t\treturn JSON.parse(localStorage.getItem(`table-sort-${id}`) || '');\r\n\t} catch { }\r\n\treturn { id: '', desc: false };\r\n}\r\n\r\ninterface Props {\r\n\tid: string;\r\n\tcolumns: Column[];\r\n\tdata: D[];\r\n\tsearch?: string;\r\n\tnarrow?: boolean;\r\n\tsticky?: boolean;\r\n\tadditionalState?: object;\r\n}\r\nexport function Table({ id, columns, data, search, narrow, sticky, additionalState }: Props) {\r\n\tconst {\r\n\t\tgetTableProps,\r\n\t\tgetTableBodyProps,\r\n\t\theaderGroups,\r\n\t\trows,\r\n\t\tprepareRow,\r\n\t\tsetGlobalFilter,\r\n\t\tstate,\r\n\t} = useTable({\r\n\t\tcolumns,\r\n\t\tdata,\r\n\t\tautoResetSortBy: false,\r\n\t\tautoResetGlobalFilter: false,\r\n\t\tinitialState: {\r\n\t\t\tsortBy: [loadSort(id)],\r\n\t\t\t...(additionalState || {}),\r\n\t\t},\r\n\t}, useGlobalFilter, useSortBy);\r\n\r\n\tReact.useEffect(() => {\r\n\t\tsetGlobalFilter(search);\r\n\t}, [search]);\r\n\r\n\t// Save sort changes\r\n\tReact.useEffect(() => {\r\n\t\tsaveSort(id, state.sortBy[0]);\r\n\t}, [state.sortBy]);\r\n\r\n\treturn \r\n\t\t\r\n\t\t\t\r\n\t\t\t\t{headerGroups.map(headerGroup => (\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{headerGroup.headers.map(column => (\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t))}\r\n\t\t\t\t\t\r\n\t\t\t\t))}\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t{rows.map(row => {\r\n\t\t\t\t\tprepareRow(row)\r\n\t\t\t\t\treturn \r\n\t\t\t\t\t\t{row.cells.map(cell => {\r\n\t\t\t\t\t\t\treturn \r\n\t\t\t\t\t\t})}\r\n\t\t\t\t\t\r\n\t\t\t\t})}\r\n\t\t\t\r\n\t\t
    \r\n\t\t\t\t\t\t\t\t{column.render('Header')}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{column.isSorted ? column.isSortedDesc\r\n\t\t\t\t\t\t\t\t\t\t? \r\n\t\t\t\t\t\t\t\t\t\t: : ''}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t{cell.render('Cell')}\r\n\t\t\t\t\t\t\t
    \r\n\t
    ;\r\n};\r\n","import * as React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport { BrowserRouter as Router } from 'react-router-dom';\r\n\r\nimport 'core-js/stable';\r\nimport 'regenerator-runtime/runtime';\r\n\r\nimport './bulma.sass';\r\nimport './core.css';\r\n\r\nimport { config } from './lib/config';\r\nimport { HotApp } from './app';\r\nimport { isDevelopment } from 'web-shared/lib/isDevelopment';\r\nimport { initializeBugsnag } from 'web-shared/lib/initialize';\r\n\r\nif(isDevelopment) {\r\n // const axe = require('react-axe');\r\n // axe(React, ReactDOM, 1000);\r\n}\r\n\r\nconst bugsnagClient = initializeBugsnag();\r\nbugsnagClient.metaData = {\r\n client: {\r\n id: config.client.id,\r\n name: config.client.name,\r\n },\r\n};\r\nconst ErrorBoundary = bugsnagClient.getPlugin('react');\r\n\r\nReactDOM.render(\r\n \r\n \r\n \r\n \r\n \r\n ,\r\n document.getElementById('app_root'),\r\n);\r\n","import { getConfigFromElement } from \"web-shared/lib\";\r\n\r\nexport const config = getConfigFromElement('app_config') as api.SiteConfig;\r\n","import { initializeGa } from 'web-shared/lib';\r\nimport { config } from './config';\r\n\r\nexport const initializeGoogleAnalytics = () =>\r\n\tinitializeGa(config.client.id, config.googleAnalyticsCode);\r\n","import * as React from 'react';\r\nimport { useFormState } from 'react-use-form-state';\r\n\r\nimport { Section, SectionHeader, Button } from 'web-shared/components';\r\nimport { auth } from 'web-shared/store';\r\nimport { useHistory } from 'react-router';\r\nimport { postJson } from 'web-shared/lib';\r\nimport { StyledInstructions } from 'web-shared/pages/instructions';\r\n\r\ninterface FormFields {\r\n name: string;\r\n newEmail: string;\r\n newPassword: string;\r\n birthDate: Date;\r\n referral: string;\r\n}\r\n\r\nexport const Create: React.FC<{}> = () => {\r\n const history = useHistory();\r\n const [state, setState] = React.useState({\r\n busy: false,\r\n loggingIn: false,\r\n error: '',\r\n });\r\n const [form, { select, date, text, email, password, label }] = useFormState({}, {\r\n withIds: true,\r\n onBlur: e => e.target.classList.add('modified'),\r\n });\r\n const branchUser = auth.useState(s => s.branchUser);\r\n\r\n async function _submit(e: React.FormEvent) {\r\n e.preventDefault();\r\n\r\n setState(s => ({ ...s, busy: true, error: '' }));\r\n\r\n const postData = {\r\n Name: form.values.name,\r\n Email: form.values.newEmail,\r\n Password: form.values.newPassword,\r\n ReferralSource: form.values.referral,\r\n BirthDate: form.values.birthDate,\r\n BranchUser: branchUser,\r\n };\r\n\r\n const response = await postJson<{ id: number }>('/api/user/register', postData);\r\n\r\n setState(s => ({ ...s, busy: false, error: response.isError ? response.error : '' }));\r\n\r\n // Log the user in\r\n if(!response.isError && response.payload?.id) {\r\n setState(s => ({ ...s, loggingIn: true }));\r\n\r\n const loginResponse = await auth.login(form.values.newEmail, form.values.newPassword, false);\r\n\r\n // Clear the form\r\n form.clear();\r\n\r\n setState(s => ({\r\n ...s,\r\n loggingIn: false,\r\n error: 'IsError' in loginResponse && (loginResponse as any).IsError ? (loginResponse as any).ErrorMessage : '',\r\n }));\r\n\r\n // Redirect\r\n const { from = '/' } = history.location.state || {};\r\n history.replace(from);\r\n }\r\n }\r\n\r\n const ready = !state.busy && !state.loggingIn;\r\n const buttonText = state.busy ? 'Registering...'\r\n : (state.loggingIn ? 'Logging in...' : 'Create Login');\r\n\r\n return
    \r\n \r\n\r\n
    \r\n
    \r\n
    \r\n Create a login\r\n \r\n You will need to provide a valid email address and be able to receive/open PDF documents.\r\n \r\n
    \r\n\r\n {state.error ?
    \r\n
    {state.error}
    \r\n
    : null}\r\n\r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n You will receive an email asking you to confirm your email registration and documenting you\r\n can receive, open and read attached PDF disclosures.\r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    ;\r\n};\r\n","import * as React from 'react';\r\nimport { Create } from './create';\r\nimport { LoginForm } from 'web-shared/pages/login';\r\n\r\nconst LoginRegisterPage: React.FC = () => {\r\n let hasLoggedInBefore = false;\r\n\r\n try {\r\n if(localStorage['successful-login'] === 'true')\r\n hasLoggedInBefore = true;\r\n } catch(e) {}\r\n\r\n return
    \r\n \r\n\r\n
    \r\n
    \r\n {hasLoggedInBefore ? : }\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {hasLoggedInBefore ? : }\r\n
    \r\n
    \r\n
    ;\r\n};\r\n\r\nexport default LoginRegisterPage;\r\n","import * as React from 'react';\r\n\r\ninterface Props {\r\n question: string;\r\n answer: string;\r\n}\r\nexport const FaqItem: React.FC = function ({ question, answer }) {\r\n return
    \r\n \r\n\r\n
    \r\n
    \r\n \r\n

    {question}

    \r\n
    \r\n
    \r\n
    \r\n
    ;\r\n};\r\n","import * as React from 'react';\r\nimport { Link } from 'react-router-dom';\r\n\r\nimport { Section, SectionHeader } from 'web-shared/components';\r\nimport { FaqItem } from './faqItem';\r\n\r\ninterface Props {\r\n landing?: string;\r\n faqs: api.LandingPageFaq[];\r\n}\r\nexport const FaqPane: React.FC = ({ landing, faqs }) => {\r\n const items = faqs.length === 0\r\n ?
    No FAQs available at this time.
    \r\n : faqs.map((f, i) => );\r\n\r\n return
    \r\n \r\n \r\n Have questions? Want to learn more?\r\n \r\n \r\n\r\n
    \r\n {items}\r\n
    \r\n
    ;\r\n};\r\n","import * as React from 'react';\r\nimport { Link } from 'react-router-dom';\r\n\r\nimport { Section, HtmlString, Button, SectionHeader } from 'web-shared/components';\r\n\r\ninterface Props {\r\n heading?: string;\r\n text: string;\r\n url: string;\r\n}\r\nexport const GetStartedPane: React.FC = ({\r\n heading, text, url\r\n}) => {\r\n if(!url || !text)\r\n return null;\r\n\r\n return
    \r\n \r\n\r\n \r\n {heading || 'What are you waiting for? Get started now!'}\r\n \r\n
    \r\n \r\n\r\n {url.indexOf(\"http\") === 0 ? \r\n \r\n : \r\n \r\n }\r\n
    \r\n
    ;\r\n};\r\n","import * as React from 'react';\r\n\r\ninterface Props {\r\n feature: api.LandingPageContent;\r\n}\r\nexport const Product: React.FC = function ({ feature, children }) {\r\n const details = (feature.details || '').split(/(\\r\\n|\\n)/g).filter(d => d.trim() !== '');\r\n\r\n return
    \r\n \r\n\r\n
    \r\n
    \r\n \r\n
    {feature.name}
    \r\n
    \r\n
    \r\n {children}\r\n
    \r\n
    \r\n\r\n
    \r\n
    {feature.subTitle}
    \r\n {details.map((d, i) =>\r\n
    \r\n \r\n
    \r\n
    ,\r\n )}\r\n
    \r\n\r\n {feature.bannerText ?
    \r\n {feature.bannerText}\r\n
    : null}\r\n
    ;\r\n};\r\n","import * as React from 'react';\r\n\r\nimport { HtmlString, Section } from 'web-shared/components';\r\nimport { Product } from './product';\r\n\r\ninterface Props {\r\n features: api.LandingPageContent[];\r\n featureSummaryText: string;\r\n}\r\nexport const ProductsPane: React.FC = function ({ features = [], featureSummaryText }) {\r\n\r\n const highlightStyle: React.CSSProperties = { color: 'var(--color-highlight)', fontWeight: 'bold' };\r\n const productHtml = features.map((p, i) => {\r\n const summary = ;\r\n return \r\n {summary}\r\n ;\r\n });\r\n const summary = !featureSummaryText ? null :\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    ;\r\n\r\n return
    \r\n {summary}\r\n
    \r\n
    \r\n {productHtml}\r\n
    \r\n
    \r\n
    ;\r\n};\r\n","import * as React from 'react';\r\n\r\ninterface Props {\r\n name: string;\r\n date: string;\r\n}\r\nexport const TestimonyItem: React.FC = function ({ name, date, children }) {\r\n return
    \r\n \r\n\r\n
    \r\n
    \r\n
    \r\n
    {name}
    \r\n
    {date}
    \r\n
    \r\n
    \r\n
    \r\n \r\n {children}\r\n
    \r\n
    \r\n
    ;\r\n};\r\n","import * as React from 'react';\r\n\r\nimport { Section, SectionHeader } from 'web-shared/components';\r\nimport { TestimonyItem } from './testimonyItem';\r\nimport { formatUtcDate } from 'web-shared/lib';\r\n\r\ninterface Props {\r\n testimonies: api.SiteConfigTestimony[];\r\n}\r\nexport const TestimonyPane: React.FC = ({ testimonies }) => {\r\n\r\n // Dont show if there is nothing to show\r\n if(testimonies.length === 0)\r\n return null;\r\n\r\n return
    \r\n \r\n What others are saying...\r\n \r\n\r\n
    \r\n {testimonies.map((t, i) => \r\n {t.text}\r\n )}\r\n
    \r\n
    ;\r\n};\r\n","import * as React from 'react';\r\nimport { RouteChildrenProps } from 'react-router-dom';\r\n\r\nimport { useHeaderLinks } from 'web-shared/lib';\r\nimport { HeaderPane } from 'web-frontend/components';\r\nimport { ProductsPane, FaqPane, GetStartedPane } from './components';\r\n\r\nimport { config as pageConfig} from 'web-frontend/lib';\r\n\r\ninterface Props extends RouteChildrenProps {\r\n url: string;\r\n config: api.LandingPageConfig;\r\n}\r\nexport const LandingPage: React.FC = ({ url, config }) => {\r\n useHeaderLinks([]);\r\n\r\n const { getStarted } = config;\r\n const faqs = config.faqConfig?.faqs?.filter(f => f.favorite);\r\n\r\n return
    \r\n \r\n \r\n {faqs.length ? : null}\r\n {pageConfig.site.type !== 'paycheck' ? : null}\r\n
    ;\r\n};\r\n","import * as React from 'react';\r\nimport { classNames } from '../lib';\r\nimport { IconNames } from './icon';\r\n\r\ninterface Props {\r\n color?: 'primary' | 'secondary' | 'highlight' | 'danger' | 'white' | 'light' | 'dark' | 'black' | 'text' | 'success' | 'warning' | 'danger';\r\n size?: 'small' | 'normal' | 'medium' | 'large';\r\n fullWidth?: boolean;\r\n type?: 'submit' | 'button';\r\n name?: string;\r\n disabled?: boolean;\r\n onClick?: (e: React.MouseEvent) => void;\r\n borderColor?: string;\r\n flex?: boolean;\r\n icon?: IconNames;\r\n title?: string;\r\n loading?: boolean;\r\n className?: string;\r\n}\r\n\r\nexport const Button: React.FC = function ({\r\n color, size = 'normal', type = 'button', name, disabled, fullWidth, children, onClick, borderColor, flex, icon, title, loading, className\r\n}) {\r\n let btnStyle: React.CSSProperties = {};\r\n let colorClass;\r\n switch(color || '') {\r\n case 'primary':\r\n case 'danger':\r\n case 'secondary':\r\n case 'highlight':\r\n colorClass = `btn-${color}`;\r\n break;\r\n case '':\r\n break;\r\n default:\r\n colorClass = `is-${color || 'light'}` + ` btn-${color || 'light'}`\r\n break;\r\n }\r\n if(borderColor) {\r\n btnStyle.borderColor = borderColor;\r\n }\r\n if(flex) {\r\n btnStyle.height = 'auto';\r\n }\r\n\r\n return ;\r\n};\r\n","import * as React from 'react';\n\nimport { Modal } from './index';\n\ninterface Props {\n name: string;\n href: string;\n onProceed: () => void;\n onClose: () => void;\n}\nexport const ExternalLink: React.FC = ({ name, href, onClose, onProceed }) => {\n return \n \n\n
    \n

    Leaving {name}...

    \n\n

    \n You are leaving {location.hostname} and entering a website\n that {name} does not control.\n

    \n\n

    \n {name} has provided this link for your convenience, but does not endorse\n and is not responsible for the content, links, privacy policy, or security policy of\n this website.\n

    \n\n
    \n \n onProceed && onProceed()}>\n Proceed\n \n
    \n
    \n
    ;\n};\n","import * as React from 'react';\n\ninterface Props {\n text: string;\n query?: string;\n style?: React.CSSProperties;\n}\nexport const HighlightText: React.FC = function ({ text, query = '', style = {} }) {\n let queryStr: string | undefined = (query || '').toLowerCase().replace(/[.?*+^$[\\]\\\\(){}|-]/g, '\\\\$&');\n if(queryStr === '')\n queryStr = undefined;\n\n const regex = new RegExp(`(?:<[^>]+>)|(${query})`, 'gi');\n const styleText = Object.keys(style).map(key => {\n const value = (style as any)[key];\n switch(key) {\n case 'backgroundColor':\n return `background-color: ${value}`;\n case 'fontWeight':\n return `font-weight: ${value}`;\n case 'fontStyle':\n return `font-style: ${value}`;\n default:\n return '';\n }\n }).join(';');\n\n const html = (text || '').replace(regex, a => a.startsWith('<') ? a : `${a}`);\n return ;\n};\n","import * as React from 'react';\n\nconst regex = new RegExp('\\[^<]*)', 'gi');\n\nfunction getParagraphs(text: string) {\n return (text || '').split(/(\\r\\n|\\n)/gi);\n}\nfunction processMarkup(markupText: string, style: object) {\n // Split markup text with a regex\n return markupText.split(regex).map((p, i) => {\n // If the token starts with >, then we have a match for a tag\n if(p.toLowerCase().indexOf('>') === 0)\n return {p.substring(1)};\n return ;\n });\n}\n\ninterface Props {\n text?: string;\n tag?: string;\n style?: React.CSSProperties | undefined;\n}\nexport const HtmlString: React.FC = function ({ text, tag = 'div', style = {} }) {\n if(!text) {\n return
    ;\n }\n const paragraphs = getParagraphs(text);\n const results = paragraphs.map((p, i) => React.createElement(tag, { key: i }, processMarkup(p, style)));\n\n return
    {results}
    ;\n};\n","import * as React from 'react';\r\n\r\nexport type IconNames = '' | 'glass' | 'music' | 'search' | 'envelope-o' | 'heart' | 'star' | 'star-o' | 'user' | 'film' | 'th-large' | 'th' | 'th-list' | 'check' | 'remove' | 'close' | 'times' | 'search-plus' | 'search-minus' | 'power-off' | 'signal' | 'gear' | 'cog' | 'trash-o' | 'home' | 'file-o' | 'clock-o' | 'road' | 'download' | 'arrow-circle-o-down' | 'arrow-circle-o-up' | 'inbox' | 'play-circle-o' | 'rotate-right' | 'repeat' | 'refresh' | 'list-alt' | 'lock' | 'flag' | 'headphones' | 'volume-off' | 'volume-down' | 'volume-up' | 'qrcode' | 'barcode' | 'tag' | 'tags' | 'book' | 'bookmark' | 'print' | 'camera' | 'font' | 'bold' | 'italic' | 'text-height' | 'text-width' | 'align-left' | 'align-center' | 'align-right' | 'align-justify' | 'list' | 'dedent' | 'outdent' | 'indent' | 'video-camera' | 'photo' | 'image' | 'picture-o' | 'pencil' | 'map-marker' | 'adjust' | 'tint' | 'edit' | 'pencil-square-o' | 'share-square-o' | 'check-square-o' | 'arrows' | 'step-backward' | 'fast-backward' | 'backward' | 'play' | 'pause' | 'stop' | 'forward' | 'fast-forward' | 'step-forward' | 'eject' | 'chevron-left' | 'chevron-right' | 'plus-circle' | 'minus-circle' | 'times-circle' | 'check-circle' | 'question-circle' | 'info-circle' | 'crosshairs' | 'times-circle-o' | 'check-circle-o' | 'ban' | 'arrow-left' | 'arrow-right' | 'arrow-up' | 'arrow-down' | 'mail-forward' | 'share' | 'expand' | 'compress' | 'plus' | 'minus' | 'asterisk' | 'exclamation-circle' | 'gift' | 'leaf' | 'fire' | 'eye' | 'eye-slash' | 'warning' | 'exclamation-triangle' | 'plane' | 'calendar' | 'random' | 'comment' | 'magnet' | 'chevron-up' | 'chevron-down' | 'retweet' | 'shopping-cart' | 'folder' | 'folder-open' | 'arrows-v' | 'arrows-h' | 'bar-chart-o' | 'bar-chart' | 'twitter-square' | 'facebook-square' | 'camera-retro' | 'key' | 'gears' | 'cogs' | 'comments' | 'thumbs-o-up' | 'thumbs-o-down' | 'star-half' | 'heart-o' | 'sign-out' | 'linkedin-square' | 'thumb-tack' | 'external-link' | 'sign-in' | 'trophy' | 'github-square' | 'upload' | 'lemon-o' | 'phone' | 'square-o' | 'bookmark-o' | 'phone-square' | 'twitter' | 'facebook-f' | 'facebook' | 'github' | 'unlock' | 'credit-card' | 'feed' | 'rss' | 'hdd-o' | 'bullhorn' | 'bell' | 'certificate' | 'hand-o-right' | 'hand-o-left' | 'hand-o-up' | 'hand-o-down' | 'arrow-circle-left' | 'arrow-circle-right' | 'arrow-circle-up' | 'arrow-circle-down' | 'globe' | 'wrench' | 'tasks' | 'filter' | 'briefcase' | 'arrows-alt' | 'group' | 'users' | 'chain' | 'link' | 'cloud' | 'flask' | 'cut' | 'scissors' | 'copy' | 'files-o' | 'paperclip' | 'save' | 'floppy-o' | 'square' | 'navicon' | 'reorder' | 'bars' | 'list-ul' | 'list-ol' | 'strikethrough' | 'underline' | 'table' | 'magic' | 'truck' | 'pinterest' | 'pinterest-square' | 'google-plus-square' | 'google-plus' | 'money' | 'caret-down' | 'caret-up' | 'caret-left' | 'caret-right' | 'columns' | 'unsorted' | 'sort' | 'sort-down' | 'sort-desc' | 'sort-up' | 'sort-asc' | 'envelope' | 'linkedin' | 'rotate-left' | 'undo' | 'legal' | 'gavel' | 'dashboard' | 'tachometer' | 'comment-o' | 'comments-o' | 'flash' | 'bolt' | 'sitemap' | 'umbrella' | 'paste' | 'clipboard' | 'lightbulb-o' | 'exchange' | 'cloud-download' | 'cloud-upload' | 'user-md' | 'stethoscope' | 'suitcase' | 'bell-o' | 'coffee' | 'cutlery' | 'file-text-o' | 'building-o' | 'hospital-o' | 'ambulance' | 'medkit' | 'fighter-jet' | 'beer' | 'h-square' | 'plus-square' | 'angle-double-left' | 'angle-double-right' | 'angle-double-up' | 'angle-double-down' | 'angle-left' | 'angle-right' | 'angle-up' | 'angle-down' | 'desktop' | 'laptop' | 'tablet' | 'mobile-phone' | 'mobile' | 'circle-o' | 'quote-left' | 'quote-right' | 'spinner' | 'circle' | 'mail-reply' | 'reply' | 'github-alt' | 'folder-o' | 'folder-open-o' | 'smile-o' | 'frown-o' | 'meh-o' | 'gamepad' | 'keyboard-o' | 'flag-o' | 'flag-checkered' | 'terminal' | 'code' | 'mail-reply-all' | 'reply-all' | 'star-half-empty' | 'star-half-full' | 'star-half-o' | 'location-arrow' | 'crop' | 'code-fork' | 'unlink' | 'chain-broken' | 'question' | 'info' | 'exclamation' | 'superscript' | 'subscript' | 'eraser' | 'puzzle-piece' | 'microphone' | 'microphone-slash' | 'shield' | 'calendar-o' | 'fire-extinguisher' | 'rocket' | 'maxcdn' | 'chevron-circle-left' | 'chevron-circle-right' | 'chevron-circle-up' | 'chevron-circle-down' | 'html5' | 'css3' | 'anchor' | 'unlock-alt' | 'bullseye' | 'ellipsis-h' | 'ellipsis-v' | 'rss-square' | 'play-circle' | 'ticket' | 'minus-square' | 'minus-square-o' | 'level-up' | 'level-down' | 'check-square' | 'pencil-square' | 'external-link-square' | 'share-square' | 'compass' | 'toggle-down' | 'caret-square-o-down' | 'toggle-up' | 'caret-square-o-up' | 'toggle-right' | 'caret-square-o-right' | 'euro' | 'eur' | 'gbp' | 'dollar' | 'usd' | 'rupee' | 'inr' | 'cny' | 'rmb' | 'yen' | 'jpy' | 'ruble' | 'rouble' | 'rub' | 'won' | 'krw' | 'bitcoin' | 'btc' | 'file' | 'file-text' | 'sort-alpha-asc' | 'sort-alpha-desc' | 'sort-amount-asc' | 'sort-amount-desc' | 'sort-numeric-asc' | 'sort-numeric-desc' | 'thumbs-up' | 'thumbs-down' | 'youtube-square' | 'youtube' | 'xing' | 'xing-square' | 'youtube-play' | 'dropbox' | 'stack-overflow' | 'instagram' | 'flickr' | 'adn' | 'bitbucket' | 'bitbucket-square' | 'tumblr' | 'tumblr-square' | 'long-arrow-down' | 'long-arrow-up' | 'long-arrow-left' | 'long-arrow-right' | 'apple' | 'windows' | 'android' | 'linux' | 'dribbble' | 'skype' | 'foursquare' | 'trello' | 'female' | 'male' | 'gittip' | 'gratipay' | 'sun-o' | 'moon-o' | 'archive' | 'bug' | 'vk' | 'weibo' | 'renren' | 'pagelines' | 'stack-exchange' | 'arrow-circle-o-right' | 'arrow-circle-o-left' | 'toggle-left' | 'caret-square-o-left' | 'dot-circle-o' | 'wheelchair' | 'vimeo-square' | 'turkish-lira' | 'try' | 'plus-square-o' | 'space-shuttle' | 'slack' | 'envelope-square' | 'wordpress' | 'openid' | 'institution' | 'bank' | 'university' | 'mortar-board' | 'graduation-cap' | 'yahoo' | 'google' | 'reddit' | 'reddit-square' | 'stumbleupon-circle' | 'stumbleupon' | 'delicious' | 'digg' | 'pied-piper-pp' | 'pied-piper-alt' | 'drupal' | 'joomla' | 'language' | 'fax' | 'building' | 'child' | 'paw' | 'spoon' | 'cube' | 'cubes' | 'behance' | 'behance-square' | 'steam' | 'steam-square' | 'recycle' | 'automobile' | 'car' | 'cab' | 'taxi' | 'tree' | 'spotify' | 'deviantart' | 'soundcloud' | 'database' | 'file-pdf-o' | 'file-word-o' | 'file-excel-o' | 'file-powerpoint-o' | 'file-photo-o' | 'file-picture-o' | 'file-image-o' | 'file-zip-o' | 'file-archive-o' | 'file-sound-o' | 'file-audio-o' | 'file-movie-o' | 'file-video-o' | 'file-code-o' | 'vine' | 'codepen' | 'jsfiddle' | 'life-bouy' | 'life-buoy' | 'life-saver' | 'support' | 'life-ring' | 'circle-o-notch' | 'ra' | 'resistance' | 'rebel' | 'ge' | 'empire' | 'git-square' | 'git' | 'y-combinator-square' | 'yc-square' | 'hacker-news' | 'tencent-weibo' | 'qq' | 'wechat' | 'weixin' | 'send' | 'paper-plane' | 'send-o' | 'paper-plane-o' | 'history' | 'circle-thin' | 'header' | 'paragraph' | 'sliders' | 'share-alt' | 'share-alt-square' | 'bomb' | 'soccer-ball-o' | 'futbol-o' | 'tty' | 'binoculars' | 'plug' | 'slideshare' | 'twitch' | 'yelp' | 'newspaper-o' | 'wifi' | 'calculator' | 'paypal' | 'google-wallet' | 'cc-visa' | 'cc-mastercard' | 'cc-discover' | 'cc-amex' | 'cc-paypal' | 'cc-stripe' | 'bell-slash' | 'bell-slash-o' | 'trash' | 'copyright' | 'at' | 'eyedropper' | 'paint-brush' | 'birthday-cake' | 'area-chart' | 'pie-chart' | 'line-chart' | 'lastfm' | 'lastfm-square' | 'toggle-off' | 'toggle-on' | 'bicycle' | 'bus' | 'ioxhost' | 'angellist' | 'cc' | 'shekel' | 'sheqel' | 'ils' | 'meanpath' | 'buysellads' | 'connectdevelop' | 'dashcube' | 'forumbee' | 'leanpub' | 'sellsy' | 'shirtsinbulk' | 'simplybuilt' | 'skyatlas' | 'cart-plus' | 'cart-arrow-down' | 'diamond' | 'ship' | 'user-secret' | 'motorcycle' | 'street-view' | 'heartbeat' | 'venus' | 'mars' | 'mercury' | 'intersex' | 'transgender' | 'transgender-alt' | 'venus-double' | 'mars-double' | 'venus-mars' | 'mars-stroke' | 'mars-stroke-v' | 'mars-stroke-h' | 'neuter' | 'genderless' | 'facebook-official' | 'pinterest-p' | 'whatsapp' | 'server' | 'user-plus' | 'user-times' | 'hotel' | 'bed' | 'viacoin' | 'train' | 'subway' | 'medium' | 'yc' | 'y-combinator' | 'optin-monster' | 'opencart' | 'expeditedssl' | 'battery-4' | 'battery' | 'battery-full' | 'battery-3' | 'battery-three-quarters' | 'battery-2' | 'battery-half' | 'battery-1' | 'battery-quarter' | 'battery-0' | 'battery-empty' | 'mouse-pointer' | 'i-cursor' | 'object-group' | 'object-ungroup' | 'sticky-note' | 'sticky-note-o' | 'cc-jcb' | 'cc-diners-club' | 'clone' | 'balance-scale' | 'hourglass-o' | 'hourglass-1' | 'hourglass-start' | 'hourglass-2' | 'hourglass-half' | 'hourglass-3' | 'hourglass-end' | 'hourglass' | 'hand-grab-o' | 'hand-rock-o' | 'hand-stop-o' | 'hand-paper-o' | 'hand-scissors-o' | 'hand-lizard-o' | 'hand-spock-o' | 'hand-pointer-o' | 'hand-peace-o' | 'trademark' | 'registered' | 'creative-commons' | 'gg' | 'gg-circle' | 'tripadvisor' | 'odnoklassniki' | 'odnoklassniki-square' | 'get-pocket' | 'wikipedia-w' | 'safari' | 'chrome' | 'firefox' | 'opera' | 'internet-explorer' | 'tv' | 'television' | 'contao' | '500px' | 'amazon' | 'calendar-plus-o' | 'calendar-minus-o' | 'calendar-times-o' | 'calendar-check-o' | 'industry' | 'map-pin' | 'map-signs' | 'map-o' | 'map' | 'commenting' | 'commenting-o' | 'houzz' | 'vimeo' | 'black-tie' | 'fonticons' | 'reddit-alien' | 'edge' | 'credit-card-alt' | 'codiepie' | 'modx' | 'fort-awesome' | 'usb' | 'product-hunt' | 'mixcloud' | 'scribd' | 'pause-circle' | 'pause-circle-o' | 'stop-circle' | 'stop-circle-o' | 'shopping-bag' | 'shopping-basket' | 'hashtag' | 'bluetooth' | 'bluetooth-b' | 'percent' | 'gitlab' | 'wpbeginner' | 'wpforms' | 'envira' | 'universal-access' | 'wheelchair-alt' | 'question-circle-o' | 'blind' | 'audio-description' | 'volume-control-phone' | 'braille' | 'assistive-listening-systems' | 'asl-interpreting' | 'american-sign-language-interpreting' | 'deafness' | 'hard-of-hearing' | 'deaf' | 'glide' | 'glide-g' | 'signing' | 'sign-language' | 'low-vision' | 'viadeo' | 'viadeo-square' | 'snapchat' | 'snapchat-ghost' | 'snapchat-square' | 'pied-piper' | 'first-order' | 'yoast' | 'themeisle' | 'google-plus-circle' | 'google-plus-official' | 'fa' | 'font-awesome' | 'handshake-o' | 'envelope-open' | 'envelope-open-o' | 'linode' | 'address-book' | 'address-book-o' | 'vcard' | 'address-card' | 'vcard-o' | 'address-card-o' | 'user-circle' | 'user-circle-o' | 'user-o' | 'id-badge' | 'drivers-license' | 'id-card' | 'drivers-license-o' | 'id-card-o' | 'quora' | 'free-code-camp' | 'telegram' | 'thermometer-4' | 'thermometer' | 'thermometer-full' | 'thermometer-3' | 'thermometer-three-quarters' | 'thermometer-2' | 'thermometer-half' | 'thermometer-1' | 'thermometer-quarter' | 'thermometer-0' | 'thermometer-empty' | 'shower' | 'bathtub' | 's15' | 'bath' | 'podcast' | 'window-maximize' | 'window-minimize' | 'window-restore' | 'times-rectangle' | 'window-close' | 'times-rectangle-o' | 'window-close-o' | 'bandcamp' | 'grav' | 'etsy' | 'imdb' | 'ravelry' | 'eercast' | 'microchip' | 'snowflake-o' | 'superpowers' | 'wpexplorer' | 'meetup';\r\n\r\ninterface Props {\r\n name: IconNames;\r\n widthEm?: number;\r\n sizeEm?: number;\r\n color?: string;\r\n marginTop?: string;\r\n marginLeft?: string;\r\n marginRight?: string;\r\n}\r\nexport const Icon: React.FC = ({ name, widthEm, sizeEm, color, marginLeft, marginRight, marginTop }) => {\r\n return ;\r\n};\r\n","import * as React from 'react';\n\ninterface Props {\n type: string;\n autoFocus?: boolean;\n isValid: boolean;\n}\nexport const Input: React.FC = (props) => {\n const { isValid, ...p } = props;\n const showValidation = isValid !== undefined;\n const iconClass = 'fa fa-' + (isValid === true ? 'check' : 'times');\n\n const className = !showValidation ? ''\n : (isValid === true ? 'input-group has-success' : 'input-group has-error');\n\n const addon = !showValidation ? null :\n
    \n \n
    ;\n\n return
    \n \n\n
    \n \n {addon}\n
    \n\n {\n isValid === true || isValid === undefined || !isValid ? null :\n
    \n
    \n
    \n {isValid}\n
    \n
    \n }\n\n
    ;\n};\n","import * as React from 'react';\n\ninterface Props {\n active?: boolean;\n speed?: number;\n color?: string;\n height?: number;\n}\n\nexport class LoadingBar extends React.Component {\n state = {\n width: 0,\n left: 0,\n };\n interval = 0;\n\n componentDidMount() {\n const { speed = 20 } = this.props;\n this.interval = window.setInterval(this.animate.bind(this), speed);\n }\n componentWillUnmount() {\n window.clearInterval(this.interval);\n }\n\n animate() {\n const { active = false } = this.props;\n\n if(active !== true) {\n return false;\n }\n\n let { left, width } = this.state;\n if(left === 0 && width < 100) {\n width += 4;\n } else if(width <= 100 && left < 100) {\n left += 4;\n width -= 4;\n } else if(left === 100 && width === 0) {\n left = 0;\n }\n\n this.setState({ left: left, width: width });\n }\n\n render() {\n let { left, width } = this.state;\n const { active = false, height = 2, color = '#60d778' } = this.props;\n\n const style = {\n left: `${active ? left : 0}%`,\n width: `${active ? width : 100}%`,\n height: `${height}px`,\n backgroundColor: color,\n };\n return \n \n\n
    \n ;\n }\n}\n","import * as React from 'react';\nimport classNames from 'classnames';\nimport { LoadingBar } from './loadingBar';\nimport { SectionHeader } from './sectionHeader';\nimport { IconNames } from './icon';\n\ninterface Props {\n title?: string;\n icon?: IconNames;\n isError?: boolean;\n fullPage?: boolean;\n children?: string;\n}\n\nexport const LoadingMessage: React.FC = (props) => {\n const { isError, title, children, icon, fullPage } = props;\n\n const headerIcon = icon || (isError ? 'exclamation-circle' : 'clock-o');\n return \n \n\n
    \n {title || (isError ? 'Error...' : 'Loading...')}\n \n
    \n
    \n
    \n {children !== undefined ? children : (\n isError ? '' : 'Please wait while we retrieve this information.'\n )}\n
    \n
    \n
    \n
    \n
    ;\n};\n","import * as React from 'react';\nimport MasonryComponent, { MasonryOptions } from 'react-masonry-component';\n\ninterface Props {\n options?: MasonryOptions;\n style?: HTMLStyleElement;\n className?: string;\n elementType?: string;\n}\n\nexport const Masonry: React.FC = props => {\n const { children, options, style, className, elementType } = props;\n\n return \n {children}\n ;\n};\n","import * as React from 'react';\r\nimport * as ReactDOM from 'react-dom';\r\nimport { FocusOn } from 'react-focus-on';\r\nimport styled, { CSSProperties } from 'styled-components';\r\n\r\nlet iOS = false;\r\nif(typeof navigator !== 'undefined') {\r\n iOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !(window as any).MSStream;\r\n}\r\n\r\nconst StyledBackdrop = styled.div`background-color: #000; position: fixed; top: 0; bottom: 0; left: 0; right: 0; opacity: 0.8; z-index: 99; width: 100vw; height: 100vh;`;\r\nconst StyledModal = styled.div`\r\n position: fixed; z-index: 999; margin: 0;\r\n display: flex; width: 100vw; height: 100${iOS ? '%' : 'vh'};\r\n flex-direction: column; top: 0; left: 0;\r\n align-items: center;\r\n\r\n & > div {\r\n display: flex;\r\n flex-direction: column;\r\n width: 100vw;\r\n height: 100${iOS ? '%' : 'vh'};\r\n max-height: 100${iOS ? '%' : 'vh'};\r\n @media screen and (min-width: 767px) {\r\n padding: 2.5em;\r\n }\r\n }\r\n\r\n & .btn { background-color: #244062; background-color: var(--color-secondary); color: #fff; margin: 0; padding: 0 20px; border: 0; border-radius: 0; cursor: pointer; }\r\n & .btn:hover { background-color: #1b304a; background-color: var(--color-secondary-dark-25); }\r\n & .body { background-color: #fff; overflow-y: auto; flex: 1; padding: 1em; width: 100%; }\r\n`;\r\nconst StyledHeader = styled.div`\r\n background-color: #244062; background-color: var(--color-secondary); color: #fff; padding: 0; width: 100%; display: flex;\r\n & > div { flex: 1; padding: 5px 15px; margin: 0; }\r\n & .btn { font-size: 1.5em; }\r\n & .header-title { font-size: 2em; min-height: 1em; }\r\n & .header-subtitle { font-style: italic; }\r\n @media(max-width: 768px) {\r\n & .header-title { font-size: 1.3em; }\r\n & .header-subtitle { font-size: 0.8em; }\r\n }\r\n`;\r\nconst StyledFooter = styled.div`\r\n background-color: #244062; background-color: var(--color-secondary); color: #fff; padding: 0; width: 100%; display: flex; min-height: 50px;\r\n & > div { flex: 1; }\r\n & .btn { font-size: 1em; }\r\n & .footerText { float: left; padding: 14px; font-size: 1.1em; }\r\n & .btn-success { background-color: #4F6228; background-color: var(--color-primary); }\r\n & .btn-success:enabled:hover { background-color: #3b4a1e; background-color: var(--color-primary-dark-25); }\r\n & .btn-success:disabled { background-color: #728153; background-color: var(--color-primary-light-25); cursor: not-allowed; }\r\n @media(max-width: 768px) {\r\n & .footerText { font-size: 0.9em; }\r\n }\r\n`;\r\n\r\ninterface Props {\r\n title: string | React.ReactElement;\r\n subtitle?: string;\r\n footerText?: string | React.ReactElement;\r\n okText?: string;\r\n cancelText?: string;\r\n onOk?: () => void;\r\n onClose?: () => void;\r\n isReady?: boolean;\r\n bodyStyle?: React.CSSProperties;\r\n maxWidth?: 'fit-content' | 'min-content' | 'max-content' | (string & {});\r\n fullHeight?: boolean;\r\n fullScreen?: boolean;\r\n}\r\nexport const Modal: React.FC = (p) => {\r\n const { title = '', subtitle = '', okText = 'Ok', cancelText = '', footerText = '', children, onOk, onClose,\r\n maxWidth, fullHeight = true, bodyStyle = {}, isReady = true, fullScreen = false } = p;\r\n\r\n function _handleOk(e: React.MouseEvent | React.TouchEvent | Event | MouseEvent | TouchEvent) {\r\n e.stopPropagation();\r\n onOk && onOk();\r\n }\r\n function _handleClose(e: React.MouseEvent | React.TouchEvent | Event | MouseEvent | TouchEvent) {\r\n e.stopPropagation();\r\n onClose && onClose();\r\n }\r\n\r\n // Ref to hold the portal div\r\n const rootElemRef = React.useRef();\r\n if(!rootElemRef.current) {\r\n rootElemRef.current = document.createElement('aside');\r\n }\r\n\r\n // Hook to create add the portal div to the DOM\r\n React.useEffect(() => {\r\n const parentElem = document.body;\r\n // Add the detached element to the parent\r\n parentElem.appendChild(rootElemRef.current as Node);\r\n // This function is run on unmount\r\n return () => { rootElemRef.current?.remove(); };\r\n }, []);\r\n\r\n const style: CSSProperties = maxWidth ? { maxWidth } : {};\r\n if(!fullHeight)\r\n style.height = 'unset';\r\n if(fullScreen)\r\n style.padding = 0;\r\n\r\n return ReactDOM.createPortal(\r\n \r\n \r\n
    \r\n {title ? \r\n
    \r\n
    {title}
    \r\n {subtitle ?
    {subtitle}
    : null}\r\n
    \r\n \r\n
    : null}\r\n
    \r\n {children}\r\n
    \r\n {okText || cancelText ? \r\n
    {footerText}
    \r\n {cancelText ? : null}\r\n {okText ? : null}\r\n
    : null}\r\n
    \r\n
    \r\n
    , rootElemRef.current);\r\n};\r\n","import * as React from 'react';\r\nimport { Icon, IconNames, Spinner } from './index';\r\nimport { classNames } from 'web-shared/lib';\r\n\r\ninterface Props {\r\n title?: string | React.ReactNode;\r\n subTitle?: string;\r\n icon?: IconNames;\r\n marginEm?: number;\r\n spinner?: 'circle' | 'horizontal';\r\n color?: string;\r\n colorSubTitle?: string;\r\n fullPage?: boolean;\r\n sizeEm?: number;\r\n pre?: boolean;\r\n}\r\n\r\nexport const NonIdealState: React.FC = (props) => {\r\n const {\r\n children, title, subTitle, icon, marginEm, spinner, sizeEm = 1, pre,\r\n color = '#555', fullPage,\r\n colorSubTitle = '#777',\r\n } = props;\r\n\r\n return
    \r\n \r\n\r\n {icon === '' ? null :
    \r\n {spinner ? :\r\n }\r\n
    }\r\n\r\n {!title ? null :
    {title}
    }\r\n {subTitle ?
    {subTitle}
    : null}\r\n {children}\r\n
    ;\r\n};\r\n","import * as React from 'react';\nimport numeral from 'numeral';\n\ninterface Props {\n page: number;\n pageSize: number;\n totalResults: number;\n style?: {};\n hideResults?: boolean;\n onPageChange: (page: number) => any;\n}\n\nexport const Pager: React.FC = (props) => {\n function _onNextPage() {\n const { onPageChange, page } = props;\n onPageChange && onPageChange(page + 1);\n }\n function _onPreviousPage () {\n const { onPageChange, page } = props;\n onPageChange && onPageChange(page - 1);\n }\n\n const { page, totalResults, pageSize, hideResults = false, style } = props;\n const maxPages = isNaN(Math.ceil(totalResults / pageSize)) ? '??' : Math.ceil(totalResults / pageSize);\n\n return
    \n \n\n
      \n Page {page} of {maxPages}\n  \n
    • \n \n
    • \n  \n
    • \n \n
    • \n  \n { hideResults ? null : {numeral(totalResults).format('0,0')} Results }\n
    \n
    ;\n};\n","import * as React from 'react';\r\nimport { formatRelativeDateTime, formatUtcDateTime } from '../lib';\r\n\r\nfunction getNextTimeout(ageInSeconds: number) {\r\n // Get current age of item\r\n return ageInSeconds <= 60 ? 5000 :\r\n ageInSeconds <= 3600 ? 30000 : 120000;\r\n}\r\n\r\ninterface Props {\r\n utcTime: Date | string;\r\n dateOnly?: boolean;\r\n}\r\nexport const RelativeTime: React.FC = function ({ utcTime, dateOnly }) {\r\n const [count, setCount] = React.useState(0);\r\n\r\n const ageInSeconds = (new Date().valueOf() - new Date(utcTime).valueOf()) / 1000.0;\r\n React.useEffect(() => {\r\n if(dateOnly) return;\r\n\r\n const next = getNextTimeout(ageInSeconds);\r\n const timer = next > 0 ? window.setTimeout(() => setCount(count + 1), next) : undefined;\r\n\r\n return () => { timer && clearTimeout(timer); };\r\n }, [count]);\r\n\r\n const relativeTime = formatRelativeDateTime(utcTime);\r\n return {dateOnly && relativeTime.indexOf('hour') !== -1 ? 'the last 24 hours' : relativeTime};\r\n};\r\n","import * as React from 'react';\r\nimport { Link as ReactRouterLink } from 'react-router-dom';\r\n\r\ninterface LinkToObject {\r\n\tpathname: string;\r\n\tsearch?: string;\r\n\thash?: string;\r\n\tstate?: object;\r\n}\r\ninterface Props {\r\n\tto: string | LinkToObject;\r\n\treplace?: boolean;\r\n\tcomponent?: React.ComponentType;\r\n\tinnerRef?: React.Ref;\r\n}\r\n\r\nconst whitelistKeys = ['_ga'];\r\nexport const Link: React.FC = ({ to, replace, component, innerRef }) => {\r\n\tconst toWithQuery: LinkToObject = typeof (to) === 'string' ? { pathname: to, search: '' } : { ...to };\r\n\r\n\t// See if we have search params we want to persist\r\n\tconst search = new URLSearchParams(window.location.search);\r\n\tconst searchKeys = Array.from(search.keys());\r\n\tconst keepKeys = searchKeys.filter(k => whitelistKeys.indexOf(k) !== -1 || k.startsWith('utm_'));\r\n\r\n\tconst newSearch = new URLSearchParams();\r\n\tkeepKeys.forEach(k => {\r\n\t\tnewSearch.append(k, search.get(k));\r\n\t});\r\n\ttoWithQuery.search = newSearch.toString();\r\n\r\n\treturn ;\r\n};\r\n","import * as React from 'react';\r\nimport { Route, RouteProps, Redirect } from 'react-router-dom';\r\nimport { ui } from 'web-shared/store';\r\n\r\nexport const PrivateRoute: React.FC = ({ children, title, token, component, applicationType, ...rest }) => {\r\n return {\r\n if(token) {\r\n const pageBaseName = ui.getStateSnapshot().name;\r\n document.title = `${pageBaseName} - ${title}`;\r\n ui.setPageTitle(title);\r\n }\r\n return token ? children || React.createElement(component!, { ...props, applicationType })\r\n : ;\r\n }\r\n } />;\r\n};\r\n","import * as React from 'react';\nimport { Route, RouteProps } from 'react-router-dom';\nimport { ui } from 'web-shared/store';\n\ninterface Props extends RouteProps {\n title: string;\n componentProps?: object;\n}\nexport const PublicRoute: React.FC = ({ children, title, component, componentProps = {}, ...rest }) => {\n return {\n const pageBaseName = ui.getStateSnapshot().name;\n ui.setPageTitle(title);\n document.title = `${pageBaseName} - ${title}`;\n return children || React.createElement(component!, { ...props, ...componentProps });\n }\n } />;\n};\n","import * as React from 'react';\nimport scrollIntoView, { Options } from 'scroll-into-view-if-needed';\n// import { dbg } from '../lib';\n\ninterface Props {\n name?: string;\n active?: boolean;\n elementType?: string;\n options?: Options;\n}\nexport const ScrollIntoView: React.FC = (props) => {\n const {\n active = true,\n elementType = 'div',\n options = {},\n children,\n } = props;\n\n const nodeRef = React.useRef(undefined);\n React.useEffect(() => {\n if(active && nodeRef.current) {\n // props.name && dbg('ScrollIntoView', props.name, 'green');\n if(!options.behavior)\n options.behavior = 'smooth';\n if(!options.scrollMode)\n options.scrollMode = 'if-needed';\n if(!options.block)\n options.block = 'start';\n scrollIntoView(nodeRef.current, options);\n }\n }, [active]);\n\n return React.createElement(elementType, { ref: nodeRef }, children);\n};\n","import * as React from 'react';\r\n\r\nimport { classNames } from '../lib';\r\n\r\ninterface Props {\r\n id?: string;\r\n color?: 'none' | 'primary' | 'secondary' | 'inverse' | 'white' | 'primary-light' | 'secondary-light';\r\n style?: React.CSSProperties;\r\n fluid?: boolean;\r\n css?: string;\r\n sticky?: boolean | number;\r\n className?: string;\r\n}\r\nexport const Section: React.FC = function (props) {\r\n const { color = 'none', style = {}, fluid = false, css, sticky, className } = props;\r\n\r\n const _colors = {\r\n none: '',\r\n white: 'background-color: #fff;',\r\n primary: `color: #fff; background-color: #4f6228; background-color: var(--color-primary);`,\r\n 'primary-light': `color: #fff; background-color: #728153; background-color: var(--color-primary-light-25);`,\r\n secondary: `color: #fff; background-color: #244062; background-color: var(--color-secondary);`,\r\n 'secondary-light': `color: #fff; background-color: #506681; background-color: var(--color-secondary-light-25);`,\r\n inverse: `background-color: #222; color: #fff;`,\r\n };\r\n\r\n const isSticky = sticky !== undefined && sticky !== false;\r\n const stickyPos = sticky === true || !isSticky ? 0 : sticky as number;\r\n\r\n return
    \r\n \r\n\r\n
    \r\n {props.children}\r\n
    \r\n
    ;\r\n};\r\n","import * as React from 'react';\r\nimport { classNames } from '../lib';\r\nimport styled from 'styled-components';\r\n\r\ninterface Props {\r\n icon?: string;\r\n color?: string;\r\n size?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';\r\n center?: boolean;\r\n id?: string;\r\n direction?: 'row' | 'column' | 'row-reverse' | 'column-reverse';\r\n tag?: 'div' | 'span' | 'h1' | 'h2' | 'h3';\r\n tabIndex?: number;\r\n style?: React.CSSProperties;\r\n}\r\n\r\nconst StyledRoot = styled.div`\r\n margin: 10px 0;\r\n &.h1 { margin-top: 0; font-size: 3em; }\r\n &.h2 { margin-top: 0; font-size: 2.8em; }\r\n &.h3 { margin-top: 0; font-size: 2.6em; }\r\n &.h4 { margin-top: 0; font-size: 2.2em; }\r\n &.h5 { margin-top: 0; font-size: 1.8em; }\r\n &.h6 { margin-top: 0; font-size: 1.5em; }\r\n & .headerText { margin-top: 0; line-height: 1.1em; display: flex; }\r\n & .subText { font-size: 1.3em; margin-bottom: 10px; }\r\n & .icon { margin-right: 20px; font-size: 1.3em; height: 1em; width: 1em; float: left; }\r\n\r\n @media(max-width: 768px) {\r\n &.h1 { margin-top: 0; font-size: 2.5em; }\r\n &.h2 { margin-top: 0; font-size: 2em; }\r\n &.h3 { margin-top: 0; font-size: 1.6em; }\r\n &.h4 { margin-top: 0; font-size: 1.2em; }\r\n &.h5 { margin-top: 0; font-size: 1.1em; }\r\n &.h6 { margin-top: 0; font-size: 1em; }\r\n }\r\n`;\r\n\r\nexport const SectionHeader: React.FC = props => {\r\n const { icon, color, size = 'h2', tag = 'div', center = false, id, direction = 'row', tabIndex, children, style } = props;\r\n\r\n const headerStyle: React.CSSProperties = {};\r\n if(center) {\r\n headerStyle.textAlign = 'center';\r\n headerStyle.justifyContent = 'center';\r\n }\r\n if(color === 'danger') {\r\n headerStyle.color = '#C0504D';\r\n }\r\n\r\n return React.createElement(tag, { tabIndex, style: headerStyle, id },\r\n \r\n \r\n
    \r\n {icon ?
    : null}\r\n {children}\r\n
    \r\n ,\r\n );\r\n};\r\n","import * as React from 'react';\nimport { shadeColor } from '../../lib';\n\ninterface Props {\n loading?: boolean;\n color?: string;\n height?: string;\n width?: string;\n id?: string;\n}\n\nexport const BarLoader: React.FC = function ({ loading = true, color = '#555', width = '100%', height = '4px', id }) {\n return loading ?
    \n \n
    \n
    \n
    : null;\n};\n","import * as React from 'react';\n\ninterface Props {\n loading?: boolean;\n color?: string;\n size?: string;\n id?: string;\n className?: string;\n}\nexport const ClipLoader: React.FC = function ({ loading = true, color = '#555', size = '35px', id, className }) {\n return loading ?
    \n \n
    \n
    : null;\n};\n","import * as React from 'react';\r\n\r\nexport type SpinnerType = 'circle' | 'horizontal';\r\ninterface IProps {\r\n type?: SpinnerType;\r\n color?: string;\r\n center?: boolean;\r\n heightEm?: number;\r\n margin?: string | number;\r\n\r\n inlineText?: string;\r\n}\r\n\r\nconst HorizontalSpinner: React.FC = ({ color = '' }) => {\r\n return \r\n \r\n\r\n \r\n \r\n \r\n ;\r\n};\r\n\r\nconst CircleSpinner: React.FC = ({ color = '' }) => {\r\n return
    \r\n \r\n\r\n
    \r\n
    \r\n
    ;\r\n};\r\n\r\nexport const Spinner: React.FC = ({ inlineText, ...props }) => {\r\n let Component;\r\n switch(props.type) {\r\n case 'horizontal':\r\n Component = HorizontalSpinner;\r\n break;\r\n default:\r\n Component = CircleSpinner;\r\n break;\r\n }\r\n\r\n return
    \r\n \r\n\r\n \r\n \r\n \r\n {inlineText ? {inlineText} : null}\r\n
    ;\r\n};\r\n","import * as React from 'react';\r\nimport styled from 'styled-components';\r\nimport { classNames } from 'web-shared/lib';\r\nimport { IconNames } from './icon';\r\n\r\nconst StyledSteps = styled.div`\r\n--rs-icon-diameter: 30px;\r\n--steps-icon-spacing: 10px;\r\n--steps-icon-space-width: calc(var(--rs-icon-diameter) + var(--steps-icon-spacing));\r\n--steps-icon-size: 16px;\r\n--steps-icon-line-height: calc((var(--rs-icon-diameter) - 2px) / var(--steps-icon-size));\r\n\r\n--small-steps-icon-diameter: 24px;\r\n--small-steps-icon-space-width: calc(var(--small-steps-icon-diameter) + var(--steps-icon-spacing));\r\n--small-steps-icon-line-height: calc(((var(--small-steps-icon-diameter) - 2px) / calc(--font-size-base)));\r\n--small-steps-title-line-height: calc((var(--small-steps-icon-diameter) / var(--font-size-base)));\r\n--small-steps-icon-size: var(--font-size-base);\r\n--small-steps-description-font-size: var(--font-size-small);\r\n--small-steps-description-line-height: var(--line-height-small);\r\n--small-steps-description-margin-top: 12px;\r\n\r\n.rs-steps {\r\n min-height: var(--rs-icon-diameter);\r\n}\r\n\r\n// Item\r\n// --------------------------\r\n.rs-steps-item {\r\n padding-left: var(--steps-icon-space-width);\r\n position: relative;\r\n overflow: hidden;\r\n}\r\n\r\n// Item icon\r\n.rs-steps-item-icon-wrapper {\r\n width: var(--rs-icon-diameter);\r\n height: var(--rs-icon-diameter);\r\n text-align: center;\r\n font-size: var(--steps-icon-size);\r\n line-height: var(--steps-icon-line-height);\r\n color: var(--rs-text-secondary);\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n display: flex;\r\n align-items: center;\r\n border: 1px solid var(--rs-steps-border);\r\n border-radius: 50%;\r\n\r\n // Finish status show check mark.\r\n .rs-steps-item-status-finish & {\r\n border-color: var(--rs-steps-state-finish);\r\n color: var(--rs-steps-state-finish);\r\n }\r\n\r\n // Error status show X mark.\r\n .rs-steps-item-status-error & {\r\n border-color: var(--rs-steps-state-error);\r\n color: var(--rs-steps-state-error);\r\n }\r\n\r\n .rs-steps-item-status-process & {\r\n border-color: var(--rs-steps-state-process);\r\n background-color: var(--rs-steps-state-process);\r\n color: var(--rs-text-inverse);\r\n\r\n .rs-icon {\r\n color: var(--rs-steps-icon-state-process);\r\n }\r\n }\r\n\r\n &.rs-steps-item-custom-icon {\r\n border: none;\r\n background: none;\r\n }\r\n\r\n // Icon content\r\n > .rs-steps-item-icon {\r\n width: 100%;\r\n display: block;\r\n text-align: center;\r\n position: relative;\r\n\r\n .rs-icon {\r\n font-size: 14px;\r\n vertical-align: middle;\r\n }\r\n }\r\n}\r\n\r\n// Item content\r\n// --------------------------\r\n.rs-steps-item-content {\r\n color: var(--rs-text-secondary);\r\n display: inline-block;\r\n position: relative;\r\n width: 100%;\r\n\r\n .rs-steps-item-status-process & {\r\n color: var(--rs-text-primary);\r\n }\r\n\r\n .rs-steps-item-status-error & {\r\n color: var(--rs-text-error);\r\n }\r\n}\r\n\r\n// Item title\r\n.rs-steps-item-title {\r\n position: relative;\r\n font-size: var(--steps-title-font-size);\r\n line-height: var(--steps-title-line-height);\r\n min-height: var(--steps-title-font-size);\r\n padding-right: var(--steps-icon-spacing);\r\n display: inline-block;\r\n\r\n &:empty {\r\n padding-right: 0;\r\n }\r\n}\r\n\r\n// Item description\r\n.rs-steps-item-description {\r\n margin-top: var(--steps-description-margin-top);\r\n}\r\n\r\n.rs-steps-item-tail,\r\n.rs-steps-item-title::after {\r\n position: absolute;\r\n border-color: var(--rs-steps-border);\r\n\r\n .rs-steps-item-status-process & {\r\n border-color: var(--rs-steps-border);\r\n }\r\n\r\n .rs-steps-item-status-finish & {\r\n border-color: var(--rs-steps-state-finish);\r\n }\r\n\r\n .rs-steps-next-error & {\r\n border-color: var(--rs-steps-border-state-error);\r\n }\r\n}\r\n\r\n// Horizontal\r\n.rs-steps-horizontal {\r\n display: flex;\r\n justify-content: space-between;\r\n\r\n .rs-steps-item {\r\n flex-grow: 1;\r\n flex-shrink: 1;\r\n min-height: var(--rs-icon-diameter);\r\n\r\n // The last node is self-adaptive width.\r\n &:last-child {\r\n flex-grow: 0;\r\n flex-shrink: 0;\r\n\r\n // The last item hidden tail line\r\n .rs-steps-item-title::after {\r\n display: none;\r\n }\r\n }\r\n\r\n // There is a 10px spacing between each item.\r\n &:not(:first-child) {\r\n padding-left: calc(var(--steps-icon-space-width) + var(--steps-item-spacing));\r\n\r\n .rs-steps-item-icon-wrapper {\r\n left: var(--steps-item-spacing);\r\n }\r\n }\r\n }\r\n\r\n .rs-steps-item-content {\r\n height: calc(var(--steps-title-font-size) * var(--steps-title-line-height));\r\n }\r\n\r\n .rs-steps-item-title {\r\n &::after {\r\n content: '';\r\n top: calc(var(--rs-icon-diameter) / 2);\r\n left: 100%;\r\n width: 9999px;\r\n border-top-width: 1px;\r\n border-top-style: solid;\r\n }\r\n }\r\n}\r\n\r\n// Verticla\r\n.rs-steps-vertical {\r\n .rs-steps-item {\r\n padding-bottom: 20px;\r\n\r\n // There is a 10px spacing between each item.\r\n &:not(:first-child) {\r\n margin-top: var(--steps-item-spacing);\r\n }\r\n\r\n &:last-child .rs-steps-item-tail {\r\n display: none;\r\n }\r\n }\r\n\r\n .rs-steps-item-tail {\r\n top: var(--steps-icon-space-width);\r\n bottom: 0;\r\n left: calc(var(--rs-icon-diameter) / 2);\r\n border-left-width: 1px;\r\n border-left-style: solid;\r\n }\r\n}\r\n\r\n// Small\r\n// Resize: Diameter、font-size and so on.\r\n.rs-steps-small {\r\n min-height: var(--small-steps-icon-diameter);\r\n\r\n &.rs-steps-horizontal .rs-steps-item {\r\n min-height: var(--small-steps-icon-diameter);\r\n }\r\n\r\n &.rs-steps-horizontal .rs-steps-item:not(:first-child) {\r\n padding-left: calc(var(--small-steps-icon-space-width) + var(--steps-icon-spacing));\r\n }\r\n\r\n &.rs-steps-vertical .rs-steps-item-tail {\r\n\tleft: calc(var(--small-steps-icon-diameter) / 2);\r\n }\r\n\r\n &.rs-steps-horizontal .rs-steps-item-title::after {\r\n top: 12px;\r\n }\r\n\r\n .rs-steps-item {\r\n padding-left: var(--small-steps-icon-space-width);\r\n }\r\n\r\n .rs-steps-item-icon-wrapper {\r\n width: var(--small-steps-icon-diameter);\r\n height: var(--small-steps-icon-diameter);\r\n font-size: var(--small-steps-icon-size);\r\n line-height: var(--small-steps-icon-line-height);\r\n }\r\n\r\n .rs-steps-item-title {\r\n font-size: var(--small-steps-icon-size);\r\n line-height: var(--small-steps-title-line-height);\r\n }\r\n\r\n .rs-steps-item-description {\r\n margin-top: var(--small-steps-description-margin-top);\r\n font-size: var(--small-steps-description-font-size);\r\n line-height: var(--small-steps-description-line-height);\r\n }\r\n}\r\n`;\r\n\r\ninterface Props {\r\n\tvertical?: boolean;\r\n\tsmall?: boolean;\r\n\tcurrent?: number;\r\n\tcurrentStatus?: 'finish' | 'wait' | 'process' | 'error';\r\n}\r\nexport const Steps: React.FC = ({ children, vertical, small, current, currentStatus }) => {\r\n\tconst horizontal = !vertical;\r\n\tconst count = React.Children.count(children);\r\n\tconst items = mapCloneElement(children, (item, index) => {\r\n\t\tconst itemStyles = {\r\n\t\t\tflexBasis: index < count - 1 ? `${100 / (count - 1)}%` : undefined,\r\n\t\t\tmaxWidth: index === count - 1 ? `${100 / count}%` : undefined\r\n\t\t};\r\n\t\tconst itemProps = {\r\n\t\t\tstepNumber: index + 1,\r\n\t\t\tstatus: 'wait',\r\n\t\t\tstyle: horizontal ? itemStyles : undefined,\r\n\t\t\t...item.props\r\n\t\t};\r\n\r\n\t\t// fix tail color\r\n\t\tif(currentStatus === 'error' && index === current! - 1) {\r\n\t\t\titemProps.className = 'rs-steps-next-error';\r\n\t\t}\r\n\r\n\t\tif(!item.props.status) {\r\n\t\t\tif(index === current) {\r\n\t\t\t\titemProps.status = currentStatus;\r\n\t\t\t\titemProps.className = 'rs-steps-item-active';\r\n\t\t\t} else if(index < current!) {\r\n\t\t\t\titemProps.status = 'finish';\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn itemProps;\r\n\t});\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t{items}\r\n\t\t\r\n\t);\r\n};\r\n\r\nconst StyledStep = styled.div`\r\n`;\r\n\r\ninterface StepProps {\r\n\titemWidth?: number | string;\r\n\tstatus?: 'finish' | 'wait' | 'process' | 'error';\r\n\ticon?: IconNames;\r\n\tstepNumber?: number;\r\n\tdescription?: React.ReactNode;\r\n\ttitle?: React.ReactNode;\r\n}\r\nexport const Step: React.FC = ({ itemWidth, status, icon, stepNumber, description, title }) => {\r\n\tlet iconNode = \r\n\t\t{status ? STEP_STATUS_ICON[status] ?? stepNumber : stepNumber}\r\n\t;\r\n\r\n\tif(icon)\r\n\t\ticonNode = {icon};\r\n\r\n\tconst styles: React.CSSProperties = { width: itemWidth };\r\n\r\n\treturn \r\n\t\t
    \r\n\t\t
    {iconNode}
    \r\n\t\t
    \r\n\t\t\t{
    {title}
    }\r\n\t\t\t{description &&
    {description}
    }\r\n\t\t
    \r\n\t;\r\n};\r\n\r\nconst STEP_STATUS_ICON: {\r\n\t[key in NonNullable]: React.ReactElement | null;\r\n} = {\r\n\tfinish: ,\r\n\twait: null,\r\n\tprocess: null,\r\n\terror: \r\n};\r\n\r\ntype ReactChildrenMapFunc = (child: any, index: number) => any;\r\nfunction map(children: React.ReactNode, func: ReactChildrenMapFunc, context?: any) {\r\n\tlet index = 0;\r\n\treturn React.Children.map(children, child => {\r\n\t\tif(!React.isValidElement(child)) {\r\n\t\t\treturn child;\r\n\t\t}\r\n\t\tconst handle = func.call(context, child, index);\r\n\t\tindex += 1;\r\n\t\treturn handle;\r\n\t});\r\n}\r\nfunction mapCloneElement(children: React.ReactNode, func: ReactChildrenMapFunc, context?: any) {\r\n\treturn map(\r\n\t\tchildren,\r\n\t\t(child: React.DetailedReactHTMLElement, index: number) =>\r\n\t\t\tReact.cloneElement(child, {\r\n\t\t\t\tkey: index,\r\n\t\t\t\t...func(child, index)\r\n\t\t\t}),\r\n\t\tcontext\r\n\t);\r\n}\r\n","import * as React from 'react';\r\nimport styled from 'styled-components';\r\n\r\nimport { useHistory } from 'react-router';\r\nimport { classNames } from 'web-shared/lib';\r\nimport { Section } from '..';\r\nimport { Tab, TabProps } from './tab';\r\n\r\nexport { Tab };\r\nexport * from './managedTabs';\r\n\r\nconst StyledDiv = styled.div`\r\n background: inherit;\r\n\r\n &.sticky { position: sticky; z-index: 99; }\r\n & .tabs ul { display: flex; margin-bottom: 0; flex-wrap: wrap; flex-shrink: 1; width: 100%; background: inherit; }\r\n & .spacer { width: 2px; height: 1.5em; background-color: #dbdbdb; margin: 0 1em; }\r\n`;\r\n\r\ninterface Props {\r\n children: any;\r\n align?: 'left' | 'centered' | 'right';\r\n style?: 'boxed' | 'toggle' | 'toggle-rounded';\r\n fullWidth?: boolean;\r\n selectedTab?: number;\r\n buttons?: React.ReactElement;\r\n onTabChange?: (tabIndex: number, props: TabProps) => void;\r\n sticky?: boolean | number;\r\n preTabContent?: React.ReactNode;\r\n mt?: string;\r\n mb?: string;\r\n tabsRef?: React.Ref;\r\n}\r\nexport const Tabs: React.FC = (props) => {\r\n const history = useHistory();\r\n const tabChildren: React.ReactElement[] = React.Children.toArray(props.children);\r\n const defaultTab = tabChildren.findIndex(t => t.props.pathname === history.location.pathname);\r\n const [state, setState] = React.useState({\r\n selectedTab: defaultTab === -1 ? 0 : defaultTab,\r\n });\r\n\r\n const { children, buttons, selectedTab = state.selectedTab, align = 'left', style, fullWidth, sticky, tabsRef,\r\n onTabChange = (i: number) => {\r\n setState({ selectedTab: i });\r\n const tab = tabChildren[i];\r\n if(tab.props.pathname) {\r\n history.push(tab.props.pathname);\r\n }\r\n }\r\n } = props;\r\n\r\n // Set active and get the render function\r\n let tabPaneRenderer: TabProps['render'] | undefined;\r\n const tabs = React.Children.map(children,\r\n (tab: React.ReactElement, index) => {\r\n if(index === selectedTab && !tab.props.hidden) {\r\n tabPaneRenderer = tab.props.render;\r\n }\r\n\r\n if(!tab.props.name)\r\n return
    ;\r\n\r\n return onTabChange && onTabChange(index, tab.props)} />;\r\n },\r\n );\r\n\r\n const isSticky = sticky !== undefined && sticky !== false;\r\n const stickyPos = sticky === true || !isSticky ? 0 : sticky as number;\r\n const cls = classNames('tabs', `is-${align}`, style ? `is-${style}` : '', { 'is-fullwidth': fullWidth });\r\n const rendered = tabPaneRenderer && tabPaneRenderer();\r\n\r\n const st: React.CSSProperties = {\r\n paddingTop: props.mt,\r\n paddingBottom: props.mb,\r\n };\r\n\r\n return <>\r\n \r\n {props.preTabContent}\r\n
    \r\n
    \r\n
      \r\n {tabs}\r\n {buttons ?
    • : null}\r\n {buttons}\r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n {rendered ?
    \r\n
    \r\n {rendered}\r\n
    \r\n
    : null}\r\n ;\r\n};\r\n","import * as React from 'react';\r\nimport { IconNames, Tab, Tabs, Button, Section } from '..';\r\nimport styled from 'styled-components';\r\nimport useMeasure from 'react-use/lib/useMeasure';\r\n\r\nconst StyledDiv = styled.div`\r\n background: inherit;\r\n\r\n & section.tabs { padding-top: 0.5rem; }\r\n & .subTabs { padding: 0; background: inherit; }\r\n @media(max-height: 768px) {\r\n section.tabs { padding-bottom: 0.5rem; }\r\n }\r\n @media(max-height: 650px) {\r\n && .sticky { position: inherit; }\r\n }\r\n\r\n .error-details { font-style: italic; padding: 1em; }\r\n`;\r\nconst TabNav = styled.div`\r\n & .message { margin-top: 1em; }\r\n & .buttons { display: flex; margin-top: 1em; }\r\n & .fill { flex: 1; }\r\n`;\r\n\r\ntype TabName = string | ((s: S, indexOverride?: number) => string);\r\nexport interface ManagedTab {\r\n id?: string;\r\n name: TabName;\r\n component?: React.FC

    ;\r\n componentProps?: P,\r\n icon?: IconNames;\r\n tabs?: ManagedTab[],\r\n tabsHeader?: (s: S) => React.ReactElement,\r\n hidden?: (s: S) => boolean;\r\n hideNav?: boolean;\r\n validator?: (s: S, m: M, i?: number) => TabError[];\r\n submit?: (s: S, m: M, allErrors: TabError[]) => boolean | undefined;\r\n submitText?: string;\r\n indexOverride?: number;\r\n padding?: string;\r\n preTabContent?: any;\r\n}\r\n\r\ntype Level = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 'max';\r\ntype NextLevel =\r\n Level extends 0 ? 1\r\n : Level extends 1 ? 2\r\n : Level extends 2 ? 3\r\n : Level extends 3 ? 4\r\n : Level extends 4 ? 5\r\n : Level extends 5 ? 6\r\n : 'max';\r\ntype IndexLevel = 'i' | 'j' | 'k';\r\ntype NextIndexLevel = IndexLevel extends 'i' ? 'j'\r\n : IndexLevel extends 'j' ? 'k' : 'i';\r\ntype Primitive = string | number | bigint | boolean | undefined | symbol;\r\nexport type PropertyStringPath = {\r\n [K in keyof T]:\r\n L extends 'max' ? never :\r\n T[K] extends Primitive ? `${string & Prefix}${string & K}` :\r\n T[K] extends Array ? PropertyStringPath, NextIndexLevel> :\r\n `${string & Prefix}${(string | number) & K}` | PropertyStringPath, I>;\r\n}[keyof T];\r\n\r\nexport type TabError = {\r\n msg?: string;\r\n field?: PropertyStringPath;\r\n hide?: boolean;\r\n tab?: string;\r\n i?: number | string;\r\n j?: number | string;\r\n k?: number | string;\r\n} | null;\r\n\r\ninterface Props {\r\n tabs: ManagedTab[];\r\n state: S;\r\n adminState?: M;\r\n align?: 'left' | 'centered' | 'right';\r\n onSubmit?: () => void;\r\n selectedTabId?: string | null;\r\n setSelectedTabId?: (tabId: string) => void;\r\n sticky?: boolean | number;\r\n children?: React.ReactNode;\r\n navigation?: boolean;\r\n hashUpdate?: boolean;\r\n}\r\n\r\nexport function allTabErrors(tabs: ManagedTab[], state: S, adminState?: M): TabError[] {\r\n return tabs.reduce((all, tab) => {\r\n const tabErrors = tab.validator ? tab.validator(state, adminState, tab.indexOverride).filter(e => e) : [];\r\n const subTabErrors = tab.tabs ? allTabErrors(tab.tabs, state, adminState) : [];\r\n return [\r\n ...all,\r\n ...tabErrors.map(e => ({ ...e, tab: tab.id })),\r\n ...subTabErrors,\r\n ].filter(e => e != null);\r\n }, [] as TabError[]);\r\n}\r\n\r\nfunction scrollToTop() {\r\n // Scroll back to the top\r\n setTimeout(() => {\r\n const el = document?.getElementById(\"managed-tabs\");\r\n const offsetTop = el?.offsetTop || 0;\r\n window?.scrollTo({ top: offsetTop, behavior: 'smooth' });\r\n }, 0);\r\n}\r\n\r\nexport function ManagedTabs(props: Props): React.ReactElement {\r\n const { tabs, state, adminState, align, onSubmit, selectedTabId, setSelectedTabId, sticky, children, navigation = true, hashUpdate = true } = props;\r\n const [submitting, setSubmitting] = React.useState(false);\r\n const [showErrors, setShowErrors] = React.useState(false);\r\n const [refMain, { height }] = useMeasure();\r\n\r\n // Internal tab state\r\n let [tabId, setTabId] = React.useState(undefined);\r\n\r\n // Let parent manage selected tab\r\n if(selectedTabId !== undefined) {\r\n tabId = selectedTabId;\r\n setTabId = setSelectedTabId;\r\n }\r\n\r\n function changeTab(id: string) {\r\n setTabId(id);\r\n if(hashUpdate) {\r\n const baseUrl = window.location.href.split('#')[0];\r\n window.location.replace(`${baseUrl}#${id}`);\r\n }\r\n scrollToTop();\r\n }\r\n function setFromHash() {\r\n const hash = window.location.hash?.replace('#', '');\r\n if(hash && hash !== tabId) {\r\n setTabId(hash);\r\n }\r\n }\r\n\r\n React.useEffect(() => {\r\n if(!hashUpdate)\r\n return;\r\n\r\n // Set initial tab from URL hash\r\n setFromHash();\r\n\r\n // Watch for hash changes\r\n if((\"onhashchange\" in window)) {\r\n window.onhashchange = function () {\r\n setFromHash();\r\n }\r\n }\r\n\r\n return () => {\r\n window.onhashchange = undefined;\r\n };\r\n }, []);\r\n\r\n // Find the selected tab\r\n const visibleTabs = tabs.filter(t => !t.hidden || !t.hidden(state));\r\n const mainTab = visibleTabs.find(t => {\r\n return t.id && t.id === tabId || t.tabs?.find(s => s.id === tabId);\r\n }) || visibleTabs[0];\r\n const mainTabIndex = visibleTabs.findIndex(t => t.id === mainTab?.id);\r\n\r\n // Find the selected subTab\r\n const visibleSubTabs = mainTab.tabs?.filter(t => !t.hidden || !t.hidden(state)) || [];\r\n const hasSubTabs = visibleSubTabs.length > 0;\r\n const subTab = visibleSubTabs.find(t => t.id && t.id === tabId) || (hasSubTabs ? visibleSubTabs[0] : undefined);\r\n const subTabIndex = visibleSubTabs.findIndex(t => t.id === subTab?.id);\r\n\r\n // Get selected tab errors\r\n const errors: TabError[] = subTab || mainTab ? allTabErrors([subTab || mainTab], state, adminState) : [];\r\n const visibleErrors = [...new Set([\r\n errors.filter(e => !e.msg).length ? { msg: 'Some required fields are missing.' } : null,\r\n ...errors.filter(e => !e.hide && e.msg),\r\n ].filter(e => e).map(e => e.msg))];\r\n\r\n // Get all visible tab errors\r\n const allErrors = allTabErrors(visibleTabs, state, adminState);\r\n\r\n const isLast = mainTabIndex + 1 === visibleTabs.length;\r\n const submitStatus = mainTab?.submit ? mainTab.submit(state, adminState, allErrors) : subTab?.submit ? subTab?.submit(state, adminState, allErrors) : undefined;\r\n const submitText = mainTab?.submitText || subTab?.submitText || 'Submit';\r\n\r\n function prev() {\r\n // Change to previous sub tab\r\n if(subTabIndex > 0) {\r\n changeTab(visibleSubTabs[subTabIndex - 1]?.id);\r\n return;\r\n }\r\n\r\n // Change to previous main tab\r\n changeTab(visibleTabs[mainTabIndex - 1]?.id);\r\n }\r\n function next() {\r\n if(!subTab || subTabIndex + 1 === visibleSubTabs.length)\r\n changeTab(visibleTabs[mainTabIndex + 1]?.id);\r\n else\r\n changeTab(visibleSubTabs[subTabIndex + 1]?.id);\r\n }\r\n async function submit() {\r\n if(!onSubmit)\r\n return;\r\n\r\n setSubmitting(true);\r\n await onSubmit();\r\n setSubmitting(false);\r\n }\r\n\r\n const hideNav = subTab?.hideNav || mainTab?.hideNav;\r\n return \r\n changeTab(visibleTabs[i]?.id)}\r\n preTabContent={children}\r\n tabsRef={refMain}\r\n mb={mainTab?.padding}\r\n >\r\n {visibleTabs.map(t => {\r\n const tabErrors = allTabErrors([t], state, adminState);\r\n const name = typeof t.name === 'function'\r\n ? t.name(state, t.indexOverride) : t.name;\r\n return React.createElement(t.component, {\r\n state, adminState, tabErrors, allErrors, indexOverride: t.indexOverride, ...t.componentProps\r\n }) : null} indicator={tabErrors.length > 0} icon={t.icon} />;\r\n })}\r\n \r\n\r\n {visibleSubTabs.length ?

    \r\n {mainTab.tabsHeader ? mainTab.tabsHeader(state) : null}\r\n {\r\n changeTab(visibleSubTabs[t]?.id);\r\n }} mt=\"0\" sticky={height} preTabContent={mainTab?.preTabContent}>\r\n {visibleSubTabs.map(t => {\r\n const tabErrors = t.validator ? t.validator(state, adminState, t.indexOverride).filter(e => e) : [];\r\n const name = typeof t.name === 'function'\r\n ? t.name(state, t.indexOverride) : t.name;\r\n return React.createElement(t.component, {\r\n state, adminState, tabErrors, allErrors, indexOverride: t.indexOverride, ...t.componentProps\r\n }) : null} indicator={tabErrors.length > 0} icon={t.icon} />;\r\n })}\r\n \r\n
    : null}\r\n\r\n
    \r\n \r\n {/* Render any errors for the selected tab */}\r\n {visibleErrors && visibleErrors.length > 0 ?
    setShowErrors(!showErrors)}>\r\n
    \r\n {visibleErrors.map((e, i) =>
    \r\n {e}\r\n
    )}\r\n\r\n {showErrors ?
    {errors.map((e, i) =>
    \r\n {e.field ?? e.msg}\r\n
    )}
    : null}\r\n
    \r\n
    : null}\r\n\r\n {hideNav || !navigation ? null :
    \r\n {mainTabIndex > 0 ? : null}\r\n\r\n
    \r\n\r\n {submitStatus != undefined ? : null}\r\n\r\n {isLast ? null : }\r\n
    }\r\n \r\n
    \r\n ;\r\n};\r\n","import * as React from 'react';\r\nimport { Icon, IconNames } from '..';\r\nimport { classNames } from '../../lib';\r\n\r\nexport interface TabProps {\r\n name: string | JSX.Element;\r\n icon?: IconNames;\r\n active?: boolean;\r\n render?: () => any;\r\n disabled?: boolean;\r\n hidden?: boolean;\r\n pathname?: string;\r\n title?: string;\r\n indicator?: boolean;\r\n onClick?: (e: any) => void;\r\n}\r\n\r\nexport const Tab: React.FC = ({ name, icon, active, onClick, disabled, title, indicator, hidden }) => {\r\n return hidden ? null :
  • !disabled && onClick && onClick(e)}>\r\n \r\n \r\n {icon ? : null}\r\n {icon && name ? : null}\r\n {name}\r\n {indicator ? : null}\r\n \r\n
  • ;\r\n};\r\n","import * as React from 'react';\nimport { objectKeysToLowerCase } from '../lib';\n\nconst regexReplace = /(\\s*[^<]*\\s*)<\\/b>/g;\n\ninterface VariableMap {\n [name: string]: any;\n}\n\ninterface Props {\n template: string;\n variables: VariableMap;\n asHtml?: boolean;\n style?: object;\n}\n\nexport const TemplateString: React.FC = function ({ template = '', variables = {}, asHtml, style }) {\n const vars = objectKeysToLowerCase(variables);\n\n let parts = template.split(/{{\\s*([a-zA-Z0-9\\.]*)\\s*}}/g).map((s, i) => {\n const prop = s.toLowerCase();\n const isVar = vars.hasOwnProperty(prop);\n const variableValue = isVar && (vars[prop] || '');\n const isObjectVar = isVar && variableValue && typeof (variableValue) === 'object';\n const highlight = isVar && !(isObjectVar && variableValue.hasOwnProperty('highlight') && !variableValue.highlight);\n\n const text = !isVar ? s :\n isObjectVar ? variableValue.text : variableValue;\n\n return !asHtml\n ? {text}\n : isVar && highlight ? '' + text + '' : text;\n });\n\n if(asHtml)\n parts = parts.join('').split(/(\\s*[^<]*\\s*<\\/b>)/g).map((s, i) => {\n const text = s.startsWith('')\n ? {s.replace(regexReplace, '$1')}\n : ;\n return {text};\n });\n\n return {parts};\n};\n","import * as React from 'react';\r\nimport styled from 'styled-components';\r\nimport { classNames, formatUtcDate } from 'web-shared/lib';\r\nimport { RelativeTime } from '.';\r\n\r\nconst Container = styled.div`\r\n\t& .relative { font-style: italic; color: #999; font-weight: normal !important; }\r\n \t& .time-line {\r\n\t\tposition: relative;\r\n\t\tmargin: 0 0 0px 0;\r\n\t\tpadding: 0;\r\n\t\tlist-style: none;\r\n\t\t&:before {\r\n\t\t\tcontent: '';\r\n\t\t\tposition: absolute;\r\n\t\t\ttop: 0;\r\n\t\t\tbottom: -10px;\r\n\t\t\twidth: 2px;\r\n\t\t\tbackground: var(--color-secondary-light-50);\r\n\t\t\tleft: 32px;\r\n\t\t\tborder-radius: 2px;\r\n\t\t}\r\n \t> .time-label {\r\n \t\t> span {\r\n\t\t\t\tfont-weight: 600;\r\n\t\t\t\tpadding: 5px 10px;\r\n\t\t\t\tdisplay: inline-block;\r\n\t\t\t\tbackground-color: #efefef;\r\n\t\t\t\tborder-radius: 2px;\r\n\t\t\t\tfont-size: 14px;\r\n\t \t}\r\n \t}\r\n\r\n \t> li {\r\n \t\tposition: relative;\r\n \t\tmargin-bottom: 10px;\r\n \t\tmargin-right: 0;\r\n\r\n \t\t> .time-line-item {\r\n\t\t\t\tdisplay: flex;\r\n\t\t\t\t-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1);\r\n\t\t\t\tbox-shadow: 0 1px 1px rgba(0, 0, 0, 0.1);\r\n\t\t\t\tborder-radius: 3px;\r\n\t\t\t\tbackground: #fff;\r\n\t\t\t\tcolor: #444;\r\n\t\t\t\tmargin-right: 15px;\r\n\t\t\t\tposition: relative;\r\n\t\t\t\tmargin-left: 50px;\r\n\t\t\t\ttransition: 0.25s;\r\n\r\n\t\t\t\t&.hover { background-color: #d3d8c9; }\r\n\r\n \t\t> .time-line-header, .annotation { font-size: 14px; padding: 6px 10px; }\r\n \t\t.annotation { font-size: 12px; color: #999; }\r\n\r\n \t\t.time-line-header {\r\n\t\t\t\t\tmargin: 0;\r\n\t\t\t\t\tcolor: #555;\r\n\t\t\t\t\tline-height: 1.1;\r\n\t\t\t\t\tflex: 1;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t> .fa {\r\n\t\t\t\tposition: absolute;\r\n\t\t\t\tborder-radius: 50%;\r\n\t\t\t\twidth: 10px;\r\n\t\t\t\theight: 10px;\r\n\t\t\t\tcolor: #666;\r\n\t\t\t\tbackground: #ecf0f1;\r\n\t\t\t\tleft: 28px;\r\n\t\t\t\ttop: 9px;\r\n\t\t\t\tborder: 2px solid var(--color-secondary-light-50);\r\n\t\t\t\tdisplay: inline-block;\r\n\t\t\t\tbox-sizing: border-box;\r\n\t\t\t}\r\n\t\t}\r\n \t}\r\n`;\r\n\r\nfunction getFormattedData(items: api.ApplicationDetailEvent[], format = \"p\") {\r\n\tconst activities: Record = {};\r\n\titems.forEach(({ logTimeUtc, summary, userId, userIp }, index) => {\r\n\t\tconst dateStr = formatUtcDate(logTimeUtc, \"M/d/yyyy\");\r\n\t\tconst list = activities[dateStr] || [];\r\n\t\tlist.push({\r\n\t\t\ttime: formatUtcDate(logTimeUtc, format),\r\n\t\t\ttext: summary,\r\n\t\t\tkey: index,\r\n\t\t\tuserId,\r\n\t\t\tuserIp,\r\n\t\t});\r\n\t\tactivities[dateStr] = list;\r\n\t});\r\n\treturn activities;\r\n}\r\n\r\ntype ActivityItem = {\r\n\ttime: string;\r\n\ttext: string;\r\n\tkey: number;\r\n\tuserId?: number;\r\n\tuserIp?: string;\r\n}\r\ninterface Props {\r\n\titems: api.ApplicationDetailEvent[];\r\n\tformat?: string;\r\n\tusers?: api.UserDetails[];\r\n}\r\nexport const Timeline: React.FC = ({ items, format, users }) => {\r\n\tconst activities = getFormattedData(items, format);\r\n\tconst dates = Object.keys(activities);\r\n\tconst [hoverUserId, setHoverUserId] = React.useState(0)\r\n\tconst [hoverIp, setHoverIp] = React.useState('')\r\n\r\n\tfunction onHoverUser(userId: number, hovering: boolean) {\r\n\t\tsetHoverUserId(hovering ? userId : 0);\r\n\t}\r\n\tfunction onHoverIp(ip: string, hovering: boolean) {\r\n\t\tsetHoverIp(hovering ? ip : '');\r\n\t}\r\n\r\n\treturn \r\n\t\t{dates.map(d => {\r\n\t\t\treturn
      \r\n\t\t\t\t
    • \r\n\t\t\t\t\t{d} \r\n\t\t\t\t
    • \r\n\t\t\t\t{activities[d].map(({ time, text, key, userId, userIp }) => {\r\n\t\t\t\t\tconst user = users?.find(u => u.id === userId);\r\n\t\t\t\t\treturn ;\r\n\t\t\t\t})}\r\n\t\t\t
    \r\n\t\t})}\r\n\t
    ;\r\n}\r\n\r\ninterface ItemProps {\r\n\ttime: string;\r\n\ttext: string;\r\n\tuser?: string;\r\n\tuserId?: number;\r\n\tuserIp?: string;\r\n\temail?: string;\r\n\thover?: boolean;\r\n\tonHoverUser?: (userId: number, hovering: boolean) => void;\r\n\tonHoverIp?: (ip: string, hovering: boolean) => void;\r\n}\r\nconst TimlineItem: React.FC = ({ time, text, user, userId, userIp, hover, onHoverUser, onHoverIp, email }) => {\r\n\treturn
  • \r\n\t\t\r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\t {time}\r\n\t\t\t\r\n\t\t\t
    {text}
    \r\n\t\t\t{userId ? onHoverUser?.(userId, true)}\r\n\t\t\t\tonMouseOut={() => onHoverUser?.(userId, false)}\r\n\t\t\t> {user} : null}\r\n\t\t\t{userIp ? onHoverIp?.(userIp, true)}\r\n\t\t\t\tonMouseOut={() => onHoverIp?.(userIp, false)}\r\n\t\t\t> {userIp} : null}\r\n\t\t
    \r\n\t
  • ;\r\n}\r\n","import * as React from 'react';\n\ninterface Props {\n name: string;\n value: boolean;\n disabled?: boolean;\n trueText?: string;\n falseText?: string;\n showText?: boolean;\n onClick: (name: string, value: boolean) => void;\n}\nexport const Toggle: React.FC = (props) => {\n const { name, trueText = 'On', falseText = 'Off', disabled = false, showText = true, value } = props;\n\n function _onClick() {\n props.onClick(name, !value);\n }\n\n let text = !showText ? null : value ? trueText : falseText;\n\n return \n \n\n {text}\n ;\n};\n","import * as React from 'react';\nimport { IconNames } from './index';\n\ninterface Props {\n text: string;\n icon?: IconNames;\n}\nexport const Tooltip: React.FC = ({ text, icon = 'info-circle' }) => {\n return ;\n};\n","import * as React from 'react';\r\nimport styled from 'styled-components';\r\nimport Axios, { CancelTokenSource } from 'axios';\r\n\r\nimport { Button } from 'web-shared/components/button';\r\nimport { Modal, NonIdealState } from 'web-shared/components';\r\nimport { classNames, formatNumber, postForm } from 'web-shared/lib';\r\nimport { Spinner } from './spinners/Spinner';\r\n\r\nconst StyledDiv = styled.div`\r\n\t.header-text { font-size: 1.6em; }\r\n\t.instructions { font-size: 1.1em; font-style: italic; }\r\n\t.uploader { display: flex; flex-direction: row; margin-top: 1em; }\r\n\t.dropzone {\r\n\t\tpadding: 2em;\r\n\t\tdisplay: flex;\r\n\t\talign-items: flex-start;\r\n\t\tjustify-content: flex-start;\r\n\t\tbox-sizing: border-box;\r\n\t}\r\n\t.dropzone > div {\r\n\t\theight: 200px;\r\n\t\twidth: 200px;\r\n\t\tborder: 2px dashed rgb(187, 186, 186);\r\n\t\tborder-radius: 50%;\r\n\t\tdisplay: flex;\r\n\t\talign-items: center;\r\n\t\tjustify-content: center;\r\n\t\tflex-direction: column;\r\n\t\tfont-size: 16px;\r\n\t\tcursor: pointer;\r\n\t}\r\n\t.file-input { display: none; }\r\n\t.file-list { flex-grow: 1; }\r\n\t.actions {\r\n\t\tdisplay: flex;\r\n\t\tjustify-content: flex-end;\r\n\t\tmargin-top: 2em;\r\n\t}\r\n\t.actions .spacer { flex: 1; }\r\n\t.highlight { background-color: var(--color-primary-light-90); }\r\n\t.table { background: transparent; }\r\n\t.table td { font-size: 0.8em; background: transparent; }\r\n\t.table td:first-child { text-align: center; width: 40px; }\r\n\t&& .ar { text-align: right; }\r\n\t.uploader .fa-times { color: #c0504d; cursor: pointer; }\r\n\t.nodrop .dropzone > div { cursor: no-drop; }\r\n\t.error { color: #c0504d; }\r\n\t.fa-check { color: #3b4a1e; }\r\n\t&& .progress-row {\r\n\t\tposition: absolute;\r\n\t\tleft: 0;\r\n\t\ttop: 0;\r\n\t\tbottom: 0;\r\n\t\twidth: 0;\r\n\t\tbackground-color: #4F622838;\r\n\t\tpadding: 0;\r\n\t\tpointer-events: none;\r\n\t}\r\n`;\r\n\r\ninterface FileStatus {\r\n\tfile: File;\r\n\tpct: number;\r\n\tstatus?: 'uploading' | 'success' | 'failed' | 'aborted';\r\n\terrorMsg?: string;\r\n}\r\n\r\ninterface Props {\r\n\ttitle: string;\r\n\tdisabled?: boolean;\r\n\tuploadUrl: string;\r\n\tuploadFields?: { [name: string]: string | number };\r\n\tonClose?: () => void;\r\n\tonComplete?: (file: File, response: T) => void;\r\n\taccept?: string[];\r\n}\r\nexport const UploadModal = function UploadModal(props: Props) {\r\n\tconst { title, disabled = false, onClose, onComplete, uploadUrl, uploadFields = {}, accept } = props;\r\n\tconst [uploading, setUploading] = React.useState(false);\r\n\tconst [highlight, setHighlight] = React.useState(false);\r\n\tconst [files, setFiles] = React.useState([]);\r\n\tconst fileInputRef = React.useRef(undefined);\r\n\tconst cancelTokenRef = React.useRef(undefined);\r\n\r\n\tfunction openFileDialog() {\r\n\t\tif(disabled || uploading)\r\n\t\t\treturn;\r\n\t\tfileInputRef.current.click();\r\n\t}\r\n\tfunction onFilesAdded(e: React.ChangeEvent) {\r\n\t\tif(disabled || uploading || !e.target.files) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\taddFiles(e.target.files)\r\n\t}\r\n\tfunction onDragOver(e: React.DragEvent) {\r\n\t\te.preventDefault();\r\n\t\tif(disabled || uploading) {\r\n\t\t\te.dataTransfer.dropEffect = 'none';\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tsetHighlight(true);\r\n\t}\r\n\tfunction onDrop(e: React.DragEvent) {\r\n\t\te.preventDefault();\r\n\t\tif(disabled || uploading) {\r\n\t\t\te.dataTransfer.dropEffect = 'none';\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\taddFiles(e.dataTransfer.files);\r\n\t\tsetHighlight(false);\r\n\t}\r\n\tfunction addFiles(fileList: FileList) {\r\n\t\tconst newFiles = [...fileList].map(f => ({ file: f, pct: 0 }));\r\n\t\tsetFiles(f => [...f, ...newFiles]);\r\n\t}\r\n\r\n\tasync function beginUpload() {\r\n\t\tsetUploading(true);\r\n\r\n\t\tfor(let i = 0; i < files.length; i++) {\r\n\t\t\tconst fs = files[i];\r\n\t\t\tif(fs.status === 'success')\r\n\t\t\t\tcontinue;\r\n\r\n\t\t\tfs.errorMsg = undefined;\r\n\t\t\tfs.status = undefined;\r\n\t\t\tfs.pct = 0;\r\n\t\t}\r\n\t\tsetFiles([...files]);\r\n\r\n\t\tfor(let i = 0; i < files.length; i++) {\r\n\t\t\tconst fs = files[i];\r\n\t\t\tif(fs.status === 'success')\r\n\t\t\t\tcontinue;\r\n\r\n\t\t\tconst file = fs.file;\r\n\r\n\t\t\t// Add the file to the form data\r\n\t\t\tconst formData = new FormData();\r\n\t\t\tformData.append(\"file\", file, file.name);\r\n\r\n\t\t\t// Add additional fields to the form data\r\n\t\t\tif(uploadFields) {\r\n\t\t\t\tObject.keys(uploadFields).map(k => {\r\n\t\t\t\t\tformData.append(k, String(uploadFields[k]));\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tfs.status = 'uploading';\r\n\t\t\tsetFiles([...files]);\r\n\r\n\t\t\t// Upload the file\r\n\t\t\tcancelTokenRef.current = Axios.CancelToken.source();\r\n\t\t\tconst response = await postForm(uploadUrl, formData,\r\n\t\t\t\tcancelTokenRef.current.token, e => {\r\n\t\t\t\t\tconst pct = Math.round(e.loaded * 1.0 / e.total * 10000) / 100;\r\n\t\t\t\t\tfs.pct = pct;\r\n\t\t\t\t\tsetFiles([...files]);\r\n\t\t\t\t}\r\n\t\t\t);\r\n\r\n\t\t\tif(cancelTokenRef.current.token.reason?.message) {\r\n\t\t\t\tfs.status = 'aborted';\r\n\t\t\t\tfs.errorMsg = 'Aborted';\r\n\t\t\t\tfs.pct = 0;\r\n\t\t\t\tsetFiles([...files]);\r\n\t\t\t\tbreak;\r\n\t\t\t} else {\r\n\t\t\t\tif(response.isError) {\r\n\t\t\t\t\tfs.status = 'failed';\r\n\t\t\t\t\tfs.errorMsg = response.error;\r\n\t\t\t\t\tfs.pct = 0;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tfs.status = 'success';\r\n\r\n\t\t\t\t\t// Tell the component we successfully uploaded a file\r\n\t\t\t\t\tonComplete && onComplete(file, response.payload as T);\r\n\t\t\t\t}\r\n\t\t\t\tsetFiles([...files]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tsetUploading(false);\r\n\t}\r\n\r\n\r\n\tconst hasBegun = files.some(f => f.status != undefined);\r\n\tconst isComplete = hasBegun && files.every(f => f.status === 'success');\r\n\treturn { }} okText=\"\" fullHeight={false}>\r\n\t\t\r\n\t\t\t
    {title}
    \r\n\t\t\t
    \r\n\t\t\t\tClick on the upload button below or drag your files below to get started. Once you have selected all the files you wish to upload, click the button below to send.\r\n\t\t\t
    \r\n\t\t\t
    setHighlight(false)}\r\n\t\t\t\tonDrop={onDrop}\r\n\t\t\t\t>\r\n\t\t\t\t
    openFileDialog()}\r\n\t\t\t\t>\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t
    Click here to
    select file(s).
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t{files.length\r\n\t\t\t\t\t\t? \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{hasBegun ? : null}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{files.map((f, i) => \r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{hasBegun ? : null}\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
    NameSizeStatus
    \r\n\t\t\t\t\t\t\t\t\t\t{f.status === 'success' ? \r\n\t\t\t\t\t\t\t\t\t\t\t: !uploading ? setFiles(files.filter((_f, index) => i !== index))} />\r\n\t\t\t\t\t\t\t\t\t\t\t\t: f.status === 'uploading' ? \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t: f.status === 'failed' ? \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: f.status === 'aborted' ? \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: null}\r\n\t\t\t\t\t\t\t\t\t{f.file.name}{formatNumber(f.file.size)}\r\n\t\t\t\t\t\t\t\t\t\t{f.errorMsg ?
    {f.errorMsg}
    :
    }\r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t: }\r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\r\n\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t{uploading || isComplete ? null : }\r\n\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t{isComplete ? \r\n\t\t\t\t\t\t: uploading ? \r\n\t\t\t\t\t\t: }\r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t
    \r\n\t
    ;\r\n};\r\n","import * as React from 'react';\n\ninterface Props {\n addonLeft: React.ReactNode;\n}\nexport const WithAddon: React.FC = function ({ addonLeft, children }) {\n return
    \n
    \n
    \n \n
    \n {children}\n
    \n
    \n
    \n
    ;\n};\n","import axios, { CancelToken, AxiosResponse } from 'axios';\r\nimport { serializeFormData, getToken } from '../lib';\r\n\r\nexport type Failable = {\r\n isError: true;\r\n error: string;\r\n payload: TError;\r\n} | {\r\n isError: false;\r\n payload: TSuccess;\r\n};\r\nexport type UploadProgressFn = (e: ProgressEvent) => void;\r\n\r\nexport function postForm(url: string, body: {}, cancelToken?: CancelToken, onUploadProgress?: UploadProgressFn) {\r\n return ajax(url, false, body, { method: 'POST', cancelToken, onUploadProgress });\r\n}\r\nexport function postJson(url: string, body?: {}, cancelToken?: CancelToken, onUploadProgress?: UploadProgressFn) {\r\n return ajax(url, true, body, { method: 'POST', cancelToken, onUploadProgress });\r\n}\r\nexport function get(url: string, cancelToken?: CancelToken, init: IAxiosOptions = {}) {\r\n return ajax(url, false, null, { method: 'GET', cancelToken, ...init });\r\n}\r\n\r\ninterface IAxiosOptions {\r\n headers?: HeadersInit;\r\n method?: 'GET' | 'POST' | 'PUT' | 'DELETE';\r\n cancelToken?: CancelToken;\r\n onUploadProgress?: UploadProgressFn;\r\n skipAuthorization?: boolean;\r\n}\r\nexport async function ajax(url: string, json: boolean, body?: {}, init: IAxiosOptions = {}): Promise> {\r\n const token = getToken();\r\n const method = init.method || 'GET';\r\n\r\n const isFormData = body && 'append' in body;\r\n const headers: HeadersInit = {\r\n ...init.headers,\r\n 'Content-Type': isFormData ? 'multipart/form-data' : json ? 'application/json; charset=UTF-8' : 'application/x-www-form-urlencoded; charset=UTF-8',\r\n Authorization: init.skipAuthorization ? '' : token ? `Bearer ${token}` : '',\r\n };\r\n\r\n // Allow client ID to be specified for admin requests\r\n try {\r\n const currentClientId = 'localStorage' in window ? Number(localStorage.currentClientId) : undefined;\r\n if(!isNaN(currentClientId)) {\r\n headers['clientId'] = currentClientId.toString();\r\n }\r\n } catch { }\r\n\r\n let response: AxiosResponse;\r\n try {\r\n response = await axios({\r\n url,\r\n method,\r\n data: method === 'GET' || !body ? null :\r\n json ? body : isFormData ? body : serializeFormData(body),\r\n cancelToken: init.cancelToken,\r\n headers,\r\n onUploadProgress: init.onUploadProgress,\r\n });\r\n } catch(ex) {\r\n // console.dir(ex);\r\n return {\r\n isError: true,\r\n error: ex?.response?.statusText || 'Unable to contact the server.',\r\n payload: {} as TError,\r\n };\r\n }\r\n\r\n // Try to decode the response as a typed object\r\n let payload: TSuccess | undefined;\r\n try {\r\n payload = response.data;\r\n } catch { }\r\n\r\n const payloadError = !payload ? undefined :\r\n (payload as any).error || (payload as any).errorMessage || (payload as any).error_message;\r\n\r\n const isError = response.status !== 200\r\n || !!payloadError\r\n || (payload && (payload as any).isError)\r\n || (payload && (payload as any).IsError);\r\n\r\n return isError\r\n ? { isError, error: payloadError || response.statusText || (response as any).message, payload: (payload || {}) as TError }\r\n : { isError, payload: (payload || {}) as TSuccess };\r\n}\r\n","export type LoginData = {\r\n isError: false;\r\n access_token: string;\r\n token_type: string;\r\n '.issued': string;\r\n '.expires': string;\r\n userName: string;\r\n name: string;\r\n id: string;\r\n Admin?: string;\r\n GlobalAdmin?: string;\r\n ClientId: string;\r\n LenderAssisted?: string;\r\n};\r\n\r\nexport interface LoginCredentials {\r\n email: string;\r\n password: string;\r\n remember: boolean;\r\n clientId?: number;\r\n}\r\n\r\nconst loginDataKey = 'loginDataKey';\r\nconst branchLoginDataKey = 'branchLoginDataKey';\r\n\r\nif(typeof window === 'undefined') {\r\n (global as any).window = {};\r\n}\r\n\r\nexport function getBranchLoginData(): LoginData {\r\n try {\r\n return JSON.parse(getTokenStorage().getItem(branchLoginDataKey) || '{}');\r\n } catch(e) {\r\n return JSON.parse('{}');\r\n }\r\n}\r\nexport function setBranchLoginData(data: LoginData) {\r\n let storage: Storage;\r\n try {\r\n storage = localStorage.getItem('rememberLogin') === 'true' ? localStorage : sessionStorage;\r\n } catch(err) {\r\n storage = getFakeStorage();\r\n }\r\n\r\n storage.setItem(branchLoginDataKey, JSON.stringify(data));\r\n}\r\nexport function clearBranchLoginData() {\r\n try {\r\n const fakeStorage = getFakeStorage();\r\n\r\n // Clear branch login\r\n fakeStorage.removeItem(branchLoginDataKey);\r\n sessionStorage.removeItem(branchLoginDataKey);\r\n localStorage.removeItem(branchLoginDataKey);\r\n } catch(err) { }\r\n}\r\nexport function getBranchUserToken(branchLoginData?: LoginData) {\r\n // Get the token and expiration\r\n const data = branchLoginData || getBranchLoginData();\r\n\r\n const tokenExpirationString = data['.expires'];\r\n const tokenExpiration = tokenExpirationString ? new Date(tokenExpirationString) : new Date();\r\n\r\n if(data.access_token == null || tokenExpiration <= new Date()) {\r\n return null;\r\n }\r\n\r\n return data.access_token;\r\n}\r\n\r\n/** Get the login info found in localStorage or sessionStorage */\r\nexport function getLoginData(): LoginData {\r\n try {\r\n return JSON.parse(getTokenStorage().getItem(loginDataKey) || '{}');\r\n } catch(e) {\r\n return JSON.parse('{}');\r\n }\r\n}\r\n\r\n/** Store login info in localStorage or sessionStorage as well as a cookie */\r\nexport function setLoginData(data: LoginData, remember: boolean) {\r\n // Store in a cookie\r\n document.cookie = `api_key=${data.access_token}; expires=${data['.expires']}; path=/`;\r\n\r\n // Store in storage\r\n let storage: Storage;\r\n try {\r\n storage = remember ? localStorage : sessionStorage;\r\n } catch(err) {\r\n storage = getFakeStorage();\r\n }\r\n\r\n storage.setItem(loginDataKey, JSON.stringify(data));\r\n localStorage.setItem('rememberLogin', remember.toString());\r\n}\r\n\r\n/** Clear all authentication data from localStorage and sessionStorage */\r\nexport function clearLoginData() {\r\n // Store in a cookie\r\n document.cookie = `api_key=; expires=; path=/`;\r\n\r\n try {\r\n const fakeStorage = getFakeStorage();\r\n\r\n // Clear regular login\r\n fakeStorage.removeItem(loginDataKey);\r\n sessionStorage.removeItem(loginDataKey);\r\n localStorage.removeItem(loginDataKey);\r\n } catch(err) { }\r\n}\r\n\r\n/** Extract the access token from stored login data */\r\nexport function getToken(loginData?: LoginData, ignoreExpires?: boolean) {\r\n // Get the token and expiration\r\n const data = loginData || getLoginData();\r\n\r\n const tokenExpirationString = data['.expires'];\r\n const tokenExpiration = tokenExpirationString ? new Date(tokenExpirationString) : new Date();\r\n\r\n if(data.access_token == null || (!ignoreExpires && tokenExpiration <= new Date())) {\r\n return null;\r\n }\r\n\r\n return data.access_token;\r\n}\r\n\r\nexport function getFakeStorage(): Storage {\r\n if(!(window as any).fakeStorage) {\r\n (window as any).fakeStorage = {} as any;\r\n (window as any).fakeStorage.setItem = (key: string, value: string) => (window as any).fakeStorage[key] = value;\r\n (window as any).fakeStorage.getItem = (key: string) => (window as any).fakeStorage[key];\r\n (window as any).fakeStorage.removeItem = (key: string) => delete (window as any).fakeStorage[key];\r\n (window as any).fakeStorage.clear = () => { };\r\n (window as any).fakeStorage.key = (_index: number) => '';\r\n }\r\n return (window as any).fakeStorage;\r\n}\r\nexport function getLocalStorage(): Storage {\r\n try {\r\n return localStorage;\r\n } catch(err) {\r\n return getFakeStorage();\r\n }\r\n}\r\nexport function getTokenStorage(): Storage {\r\n try {\r\n return sessionStorage.getItem(loginDataKey) ? sessionStorage : localStorage;\r\n } catch(err) {\r\n return getFakeStorage();\r\n }\r\n}\r\n","export function base64ToBlob(base64: string, mimetype: string = '', slicesize: number = 512) {\n if(!window.atob || !Uint8Array) {\n // The current browser doesn't have the atob function. Cannot continue\n return null;\n }\n\n var bytechars = atob(base64);\n var bytearrays = [];\n\n for(var offset = 0; offset < bytechars.length; offset += slicesize) {\n var slice = bytechars.slice(offset, offset + slicesize);\n var bytenums = new Array(slice.length);\n for(var i = 0; i < slice.length; i++) {\n bytenums[i] = slice.charCodeAt(i);\n }\n var bytearray = new Uint8Array(bytenums);\n bytearrays[bytearrays.length] = bytearray;\n }\n\n return new Blob(bytearrays, { type: mimetype });\n}\n","export function chunk(arr: T[], len: number) {\n const chunks = [];\n const n = arr.length;\n let i = 0;\n\n while(i < n) {\n // tslint:disable-next-line: no-array-mutation\n chunks.push(arr.slice(i, i += len));\n }\n\n return chunks;\n}\n","export function clamp(n: number, min: number, max: number) {\n\treturn Math.min(Math.max(n, min), max);\n}\n","type ClassValue = string | number | ClassDictionary | ClassArray | undefined | null | false;\n\ninterface ClassDictionary {\n [id: string]: boolean | undefined | null;\n}\n\ninterface ClassArray extends Array { }\n\nconst hasOwn = {}.hasOwnProperty;\n\nexport function classNames(...args: ClassValue[]) {\n const classes: string[] = [];\n\n for(let i = 0; i < args.length; i++) {\n const arg = args[i];\n if(!arg) continue;\n\n if(typeof arg === 'string' || typeof arg === 'number') {\n // tslint:disable-next-line: no-array-mutation\n classes.push(String(arg));\n } else if(Array.isArray(arg) && arg.length) {\n const inner = classNames.apply(null, arg as []);\n if(inner) {\n // tslint:disable-next-line: no-array-mutation\n classes.push(inner);\n }\n } else if(typeof arg === 'object') {\n for(const key in arg) {\n if(hasOwn.call(arg, key) && (arg as ClassDictionary)[key]) {\n // tslint:disable-next-line: no-array-mutation\n classes.push(key);\n }\n }\n }\n }\n\n return classes.join(' ');\n}\n","import { shadeColor } from \"../\";\n\nexport function hexToCssVars(name: string, h: string) {\n return `\n --color-${name}: ${h};\n --color-${name}-light-25: ${shadeColor(20, h)};\n --color-${name}-light-50: ${shadeColor(50, h)};\n --color-${name}-light-75: ${shadeColor(75, h)};\n --color-${name}-light-90: ${shadeColor(90, h)};\n --color-${name}-dark-25: ${shadeColor(-25, h)};\n --color-${name}-dark-50: ${shadeColor(-50, h)};\n --color-${name}-dark-75: ${shadeColor(-75, h)};\n --color-${name}-dark-90: ${shadeColor(-90, h)};\n `;\n}\n","export type RGB = { r: number, g: number, b: number };\n\nexport function hexToRgb(h: string): RGB {\n let r = 0, g = 0, b = 0;\n\n // 3 digits\n if(h.length === 4) {\n r = +('0x' + h[1] + h[1]);\n g = +('0x' + h[2] + h[2]);\n b = +('0x' + h[3] + h[3]);\n\n // 6 digits\n } else if(h.length === 7) {\n r = +('0x' + h[1] + h[2]);\n g = +('0x' + h[3] + h[4]);\n b = +('0x' + h[5] + h[6]);\n }\n\n return { r, g, b };\n}\n","import { isDevelopment } from \"./isDevelopment\";\n\nexport function dbg(label: string, key?: string, color?: string, ...details: any[]) {\n if(isDevelopment) {\n console.groupCollapsed(`%c${label}: %c[${key}]`, `color: ${color};`, 'color: inherit;');\n (details || []).forEach(d => console.error(d));\n console.groupEnd();\n }\n}\n","export function deepCompare(o1: any, o2: any) {\n let i, l, leftChain: any[], rightChain: any[];\n\n function compare2Objects(x: any, y: any) {\n let p;\n\n // remember that NaN === NaN returns false\n // and isNaN(undefined) returns true\n if(isNaN(x) && isNaN(y) && typeof x === 'number' && typeof y === 'number') {\n return true;\n }\n\n // Compare primitives and functions.\n // Check if both arguments link to the same object.\n // Especially useful on the step where we compare prototypes\n if(x === y) {\n return true;\n }\n\n // Works in case when functions are created in constructor.\n // Comparing dates is a common scenario. Another built-ins?\n // We can even handle functions passed across iframes\n if((typeof x === 'function' && typeof y === 'function') ||\n (x instanceof Date && y instanceof Date) ||\n (x instanceof RegExp && y instanceof RegExp) ||\n (x instanceof String && y instanceof String) ||\n (x instanceof Number && y instanceof Number)) {\n return x.toString() === y.toString();\n }\n\n // Quick checking of one object being a subset of another.\n // todo: cache the structure of arguments[0] for performance\n for(p in y) {\n if(y.hasOwnProperty(p) !== x.hasOwnProperty(p)) {\n return false;\n }\n else if(typeof y[p] !== typeof x[p]) {\n return false;\n }\n }\n\n for(p in x) {\n if(y.hasOwnProperty(p) !== x.hasOwnProperty(p)) {\n return false;\n }\n else if(typeof y[p] !== typeof x[p]) {\n return false;\n }\n\n switch(typeof (x[p])) {\n case 'object':\n leftChain.push(x);\n rightChain.push(y);\n\n if(!compare2Objects(x[p], y[p])) {\n return false;\n }\n\n leftChain.pop();\n rightChain.pop();\n break;\n\n default:\n if(x[p] !== y[p]) {\n return false;\n }\n break;\n }\n }\n\n return true;\n }\n\n leftChain = []; //Todo: this can be cached\n rightChain = [];\n\n return !compare2Objects(o1, o2);\n}","import { parse, parseISO, format, formatDistance, differenceInDays, startOfYear } from 'date-fns';\r\nimport numeral from 'numeral';\r\nimport moize from 'moize';\r\n\r\nfunction asLocalDate(dateString: string | undefined) {\r\n const d = toDate(dateString);\r\n const ret = d?.getUTCHours() === 0\r\n ? new Date(d.getUTCFullYear(), d.getUTCMonth(), d.getUTCDate()) : d;\r\n return ret;\r\n}\r\nexport function toDate(d: string | Date | undefined) {\r\n if(typeof d !== 'string')\r\n return d;\r\n return d.indexOf('-') !== -1 ? parseISO(d) : parse(d, 'M/d/yyyy', new Date());\r\n}\r\nfunction formatBase(d: Date | string | undefined, fmt: string, parser?: (dateString: string | undefined) => Date | undefined) {\r\n if(d == undefined)\r\n return '';\r\n try {\r\n const date = typeof d !== 'string' ? d :\r\n parser ? parser(d) : new Date(d);\r\n return date == undefined ? '' : format(date, fmt);\r\n } catch(e) {\r\n return d.toString();\r\n }\r\n}\r\nexport function formatUtcDate(d: Date | string | undefined, fmt: string = 'MM/dd/yyyy') {\r\n return formatBase(d, fmt);\r\n}\r\nexport function formatUtcDateTime(d: Date | string | undefined, fmt: string = 'MM/dd/yyyy hh:mm:ss a') {\r\n return formatBase(d, fmt);\r\n}\r\nexport function formatLocalDate(d: Date | string | undefined, fmt: string = 'MM/dd/yyyy') {\r\n return formatBase(d, fmt, asLocalDate);\r\n}\r\nexport function formatRelativeDateTime(d: Date | string, from: Date | string = new Date(), addSuffix: boolean = true) {\r\n const d1 = toDate(d);\r\n const d2 = toDate(from);\r\n if(d1 == undefined || d2 == undefined)\r\n return '';\r\n return formatDistance(d1, d2, { addSuffix });\r\n}\r\nexport function isDateValid(d: string | Date | undefined) {\r\n if(typeof (d) === 'string') {\r\n const parts = d.split('/');\r\n if(parts.length == 3 && parts[2].length !== 4)\r\n return false;\r\n }\r\n if(d == undefined)\r\n return false;\r\n return toDate(d || '')!.toString() !== 'Invalid Date';\r\n}\r\nexport function formatYesNo(v: boolean | undefined | null): '' | 'Yes' | 'No' {\r\n return v === true ? 'Yes' : v === false ? 'No' : '';\r\n}\r\n\r\nexport const daysElapsedInYear = moize((d: string | Date | undefined) => {\r\n const date = toDate(d);\r\n if(date == undefined)\r\n return 0;\r\n return differenceInDays(date, startOfYear(date));\r\n});\r\n\r\n// Polyfill from MDN\r\nexport function repeatString(s: string, repeatCount: number) {\r\n if(s == null) {\r\n throw new TypeError('can\\'t convert ' + s + ' to object');\r\n }\r\n if(repeatCount === 0)\r\n return '';\r\n\r\n let str = '' + s;\r\n\r\n // To convert string to integer.\r\n let count = +repeatCount;\r\n if(count !== count) {\r\n count = 0;\r\n }\r\n if(count < 0) {\r\n throw new RangeError('repeat count must be non-negative');\r\n }\r\n if(count === Infinity) {\r\n throw new RangeError('repeat count must be less than infinity');\r\n }\r\n count = Math.floor(count);\r\n if(str.length === 0 || count === 0) {\r\n return '';\r\n }\r\n\r\n // Ensuring count is a 31-bit integer allows us to heavily optimize the\r\n // main part. But anyway, most current (August 2014) browsers can't handle\r\n // strings 1 << 28 chars or longer, so:\r\n if(str.length * count >= 1 << 28) {\r\n throw new RangeError('repeat count must not overflow maximum string size');\r\n }\r\n const maxCount = str.length * count;\r\n count = Math.floor(Math.log(count) / Math.log(2));\r\n while(count) {\r\n str += str;\r\n count--;\r\n }\r\n str += str.substring(0, maxCount - str.length);\r\n return str;\r\n}\r\n\r\n/**\r\n * Format a number as money\r\n * @param {number} value The value to format.\r\n * @param {boolean} decimals Round the value to the specified decimal place.\r\n * @param {boolean} hideZeroDecimal Don't show the decimal separator and cent value when 0.\r\n */\r\nexport function formatMoney(value: number | undefined, decimals: number = 2, hideZeroDecimal?: boolean) {\r\n return '$' + formatNumber(value, decimals, hideZeroDecimal);\r\n}\r\n\r\nexport function formatNumberSuffix(value: number | undefined, decimals: number = 2, hideZeroDecimal?: boolean) {\r\n return formatNumber(value, decimals, hideZeroDecimal, true);\r\n}\r\n\r\n/**\r\n * Format a number\r\n * @param {number} value The value to format.\r\n * @param {boolean} decimals Round the value to the specified decimal place.\r\n * @param {boolean} hideZeroDecimal Don't show the decimal separator and cent value when 0.\r\n */\r\nexport function formatNumber(value: number | string | undefined, decimals: number = 2, hideZeroDecimal: boolean = true, addSuffix?: boolean) {\r\n if(value === undefined)\r\n return '';\r\n const num = typeof (value) === 'number' ? value :\r\n Number(String(value).replace(/[^\\d\\-\\.]/g, ''));\r\n return numeral(num).format('0,0' + getDecimalFormat(decimals, hideZeroDecimal) + (addSuffix ? 'o' : ''));\r\n}\r\nfunction getDecimalFormat(decimals: number, hideZeroDecimal?: boolean) {\r\n if(decimals <= 0) return '';\r\n const decimalFormat = `${repeatString('0', decimals)}`;\r\n return hideZeroDecimal ? `.[${decimalFormat}]` : `.${decimalFormat}`;\r\n}\r\n","import { auth } from 'web-shared/store';\r\nimport { isDevelopment } from '.';\r\n\r\ninterface Location {\r\n\tpathname: string;\r\n\tsearch: string;\r\n\tstate: any;\r\n\thash: string;\r\n}\r\n\r\nlet currentClientId: number = 0;\r\nlet googleAnalyticsCodes: string[] = [];\r\nconst enabled = () => googleAnalyticsCodes.length > 0 // & !isDevelopment;\r\nexport function initializeGa(clientId: number, gaCode: string) {\r\n\tcurrentClientId = clientId;\r\n\tgoogleAnalyticsCodes = gaCode.split(',').map(c => c?.trim() || '').filter(c => c);\r\n}\r\n\r\nfunction gaConfig() {\r\n\tif(!enabled() || !window.gtag)\r\n\t\treturn;\r\n\r\n\tconst linker = currentClientId === 1032 ? { linker: { domains: ['ucbi.com'] } } : {};\r\n\tconst user_id = auth.getStateSnapshot().userName;\r\n\r\n\tgoogleAnalyticsCodes.forEach(gaCode => {\r\n\t\twindow.gtag('config', gaCode, {\r\n\t\t\tsend_page_view: false,\r\n\t\t\t...linker,\r\n\t\t});\r\n\t});\r\n\twindow.gtag('set', { user_id });\r\n}\r\n\r\nexport function gaPageView(location: Location) {\r\n\tif(!enabled() || !window.gtag)\r\n\t\treturn;\r\n\r\n\tgaConfig();\r\n\twindow.gtag('event', 'page_view', {\r\n\t\tpage_path: location.pathname + location.search + location.hash,\r\n\t\tpage_search: location.search,\r\n\t\tpage_hash: location.hash,\r\n\t});\r\n}\r\nexport function gaEvent(category: string, action: string) {\r\n\tif(!enabled() || !window.gtag)\r\n\t\treturn;\r\n\r\n\tgaConfig();\r\n\twindow.gtag('event', action, { category });\r\n}\r\nexport function gaUserCreate() {\r\n\tif(!enabled() || !window.gtag)\r\n\t\treturn;\r\n\r\n\tgaConfig();\r\n\twindow.gtag('event', 'sign_up', { });\r\n}\r\nexport function gaLogin() {\r\n\tif(!enabled() || !window.gtag)\r\n\t\treturn;\r\n\r\n\twindow.gtag('event', 'login', {});\r\n}\r\n","function s4() {\n return Math.floor((1 + Math.random()) * 0x10000)\n .toString(16)\n .substring(1)\n}\n\nexport function guid() {\n return s4() + s4() + '-' + s4() + '-' + s4() + '-' + s4() + '-' + s4() + s4() + s4();\n}\n","import * as React from 'react';\r\nimport { Bugsnag } from \"@bugsnag/js/types\";\r\nimport bugsnag from '@bugsnag/js';\r\nimport bugsnagReact from '@bugsnag/plugin-react';\r\n\r\nexport const envConfig = getConfigFromElement('env_config') as api.EnvConfig;\r\n\r\nlet bugsnagClient: Bugsnag.Client;\r\nexport function initializeBugsnag() {\r\n if(bugsnagClient)\r\n return bugsnagClient;\r\n\r\n // Configure Bugsnag error reporting\r\n bugsnagClient = bugsnag({\r\n apiKey: envConfig?.apiKey || 'test',\r\n releaseStage: envConfig?.env || 'local',\r\n });\r\n\r\n bugsnagClient.use(bugsnagReact, React);\r\n return bugsnagClient;\r\n}\r\n\r\nexport function getConfigFromElement(elementId: string) {\r\n // Read the JSON-formatted data from the DOM.\r\n const element = document.getElementById(elementId);\r\n const json = element?.textContent || element?.innerText; // fallback for IE ≤ 8\r\n\r\n if(element)\r\n element.innerHTML = '';\r\n\r\n if(!json)\r\n return {};\r\n\r\n return JSON.parse(json);\r\n}\r\n","export const isDevelopment = process.env.NODE_ENV === 'development';\n","const poBoxRegex = /P\\.?O\\.?\\s?Box/i;\n\nexport function isPoBox(address: string | undefined): boolean {\n return address && address.match(poBoxRegex) !== null;\n}\n","export function isTin(tinString: string | undefined): boolean {\n const tin = tinString || '';\n return tin.match(/^\\d\\d\\-\\d\\d\\d\\d\\d\\d\\d$/g) !== null || tin.match(/^\\d\\d\\d\\-\\d\\d\\-\\d\\d\\d\\d$/g) !== null;\n}\n","export function objectKeysToLowerCase(input: Object) {\n if(typeof input !== 'object') return input;\n if(Array.isArray(input)) return input.map(objectKeysToLowerCase);\n return Object.keys(input).reduce(function (newObj, key) {\n newObj[key.toLowerCase()] = input[key];\n return newObj;\n }, {});\n}\n","import ReactDOMServer from 'react-dom/server';\r\nimport { ServerStyleSheet } from \"styled-components\";\r\n\r\nexport function renderComponent(component: React.ReactElement) {\r\n\tconst sheet = new ServerStyleSheet();\r\n\tconst body = ReactDOMServer.renderToStaticMarkup(sheet.collectStyles(component));\r\n\tconst styleTags = sheet.getStyleTags();\r\n\tconst styles = [...document.getElementsByTagName(\"style\")].map(s => s.innerHTML ? s.outerHTML : null).filter(s => s).join(' ') + styleTags;\r\n\treturn '' +\r\n\t\t'' + styles +\r\n\t\t'' + body + ' ';\r\n}\r\n\r\nexport function printHtml(html: string) {\r\n\tconst iframe = document.createElement('iframe');\r\n\tiframe.style.width = '0';\r\n\tiframe.style.height = '0';\r\n\tiframe.style.position = 'absolute';\r\n\tdocument.body.appendChild(iframe);\r\n\tconst doc = iframe?.contentDocument || iframe?.contentWindow?.document;\r\n\tif(doc) {\r\n\t\tdoc.open();\r\n\t\tdoc.write(html);\r\n\t\tdoc.close();\r\n\r\n\t\tiframe.contentWindow?.focus();\r\n\t\tiframe.contentWindow?.print();\r\n\t}\r\n\tdocument.body.removeChild(iframe);\r\n}\r\n\r\nexport function printComponent(component: React.ReactElement) {\r\n\tconst html = renderComponent(component);\r\n\tprintHtml(html);\r\n}\r\n","import * as React from 'react';\r\nimport equals from 'fast-deep-equal';\r\nimport { produce, Draft, Patch } from 'immer';\r\nimport moize from 'moize';\r\n\r\nimport { BehaviorSubject, Observable, Subscription } from 'rxjs';\r\nimport { map, distinctUntilChanged } from 'rxjs/operators';\r\nimport { formatNumber, dbg, isTin, Failable } from 'web-shared/lib';\r\nimport { isDevelopment } from './isDevelopment';\r\nimport { isPoBox } from './isPoBox';\r\nimport { isDateValid } from './format';\r\nimport { TabError } from 'web-shared/components';\r\n\r\nconst withDevTools = isDevelopment\r\n && typeof window !== 'undefined'\r\n && (window as any).__REDUX_DEVTOOLS_EXTENSION__;\r\n\r\nexport type ApiState = { working?: boolean; error?: string };\r\nexport type ActionState = { ui: { actions: { [action: string]: ApiState } } };\r\nexport type ActionFn = (s: RootState) => Promise>;\r\nexport type PatchFilter = (patche: Patch, index: number, patches: Patch[]) => boolean;\r\n\r\nexport class RxStore {\r\n private stateSubject: BehaviorSubject;\r\n private computed: ComputedState | undefined;\r\n private devTools: any;\r\n private patchFilter: PatchFilter | undefined;\r\n public patches: Patch[];\r\n\r\n // Initialize the store with the initial state value.\r\n constructor(initialState: RootState, name: string, computed?: ComputedState, patchFilter?: PatchFilter) {\r\n this.stateSubject = new BehaviorSubject(initialState);\r\n this.computed = computed;\r\n this.patchFilter = patchFilter;\r\n this.patches = [];\r\n if(withDevTools) {\r\n this.devTools = withDevTools.connect({ name });\r\n this.devTools.init(initialState);\r\n this.devTools.subscribe((m: any) => {\r\n if(m.type === 'DISPATCH') {\r\n switch(m.payload?.type) {\r\n case 'JUMP_TO_STATE':\r\n case 'JUMP_TO_ACTION':\r\n this.stateSubject.next(JSON.parse(m.state));\r\n break;\r\n default:\r\n //console.log('DEVTOOLS:', m);\r\n break;\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n // Get the current state as a stream\r\n public getState(): Observable {\r\n return this.stateSubject.pipe(distinctUntilChanged());\r\n }\r\n\r\n // Get the current state as a snapshot\r\n public getStateSnapshot(): RootState {\r\n return this.stateSubject.getValue();\r\n }\r\n\r\n public update(fn: (s: Draft) => void, action?: string) {\r\n const nextState = produce(this.getStateSnapshot(), fn\r\n , this.patchFilter ? _patches => {\r\n // const filteredPatches = patches.filter(this.patchFilter);\r\n // if(filteredPatches.length)\r\n // console.log(filteredPatches);\r\n } : undefined\r\n );\r\n if(isDevelopment && this.devTools)\r\n this.devTools.send(action || 'unknown action', nextState);\r\n this.stateSubject.next(nextState);\r\n }\r\n\r\n public async action(actionName: keyof RootState['ui']['actions'], action: ActionFn): Promise> {\r\n const actionState = this.getStateSnapshot().ui.actions[actionName as any];\r\n if(actionState.working)\r\n return { isError: true, error: 'Action is in progress.' } as any;\r\n\r\n // Set action state to working\r\n this.update(s => {\r\n const actionState = s.ui.actions[actionName as any];\r\n actionState.error = '';\r\n actionState.working = true;\r\n }, `${actionName.toString()}_begin`);\r\n\r\n // Execute action\r\n const response = await action(this.getStateSnapshot());\r\n\r\n // Handle action state from response\r\n this.update(s => {\r\n const actionState = (s.ui.actions as any)[actionName];\r\n actionState.error = response.isError ? response.error : undefined;\r\n actionState.working = false;\r\n }, actionName.toString() + (response.isError ? '_error' : '_success'));\r\n\r\n return response;\r\n }\r\n\r\n // Merge in a new state object\r\n public setState(partialState: Partial): void {\r\n let currentState = this.getStateSnapshot();\r\n let nextState = Object.assign({}, currentState, partialState);\r\n\r\n this.stateSubject.next(nextState);\r\n }\r\n\r\n // Subscribe to a portion of state values\r\n public useState(selector: (state: RootState, computed: ComputedState) => S) {\r\n if(!selector)\r\n throw new Error('Selector fn is not provided.');\r\n\r\n let id = '';\r\n if(isDevelopment) {\r\n try {\r\n const stackLine = new Error().stack?.split('\\n')[2];\r\n const match = /at\\s+(\\w+)/g.exec(stackLine || '');\r\n id = match?.[1] || '';\r\n } catch { }\r\n }\r\n\r\n const computed = this.computed || { state: {} } as ComputedState;\r\n computed.state = this.stateSubject.value;\r\n const [val, setVal] = React.useState(() => selector(this.stateSubject.value, computed));\r\n let getCurrentState = () => val;\r\n\r\n React.useLayoutEffect(() => {\r\n const selectSubscription = this.stateSubject.pipe(\r\n map(s => {\r\n computed.state = s;\r\n return selector(s, computed);\r\n }),\r\n distinctUntilChanged(),\r\n ).subscribe(s => {\r\n const currentState = getCurrentState();\r\n if(!equals(s, currentState)) {\r\n if(isDevelopment)\r\n dbg('Subscription', id, '#FFDC5D', currentState, '->', s);\r\n getCurrentState = () => s;\r\n setVal(s);\r\n }\r\n });\r\n return () => { selectSubscription.unsubscribe(); };\r\n }, [selector.toString()]);\r\n\r\n return val;\r\n }\r\n\r\n // Helper for binding form fields to state values\r\n public useForm(formOptions: FormOptions = {}) {\r\n const bindField = this.bindField.bind(this);\r\n const formState = React.useState({\r\n values: {},\r\n errors: {},\r\n required: {},\r\n updating: {},\r\n focused: '',\r\n subscriptions: {},\r\n submitAttempted: false,\r\n });\r\n const formStateRef = React.useRef(formState[0]);\r\n\r\n // Need to check all required fields plus extra validation\r\n const fs = formState[0];\r\n formStateRef.current = fs;\r\n const keys = Object.keys(fs.values);\r\n const isValid = keys.length > 0 && keys.every(k => {\r\n return (!fs.required[k] || !!fs.values[k]) && !fs.errors[k];\r\n });\r\n\r\n const updateFn = React.useRef<(key: string, value: any) => void>(() => { });\r\n let fields: { [k: string]: (nv: any) => void };\r\n const addField = moize(function (fieldProps: BoundField) {\r\n const { key, updateRxState, ...props } = fieldProps;\r\n fields = { ...fields, [key]: updateRxState };\r\n return props;\r\n });\r\n\r\n // Destroy subscriptions on unmount\r\n React.useEffect(() => {\r\n return () => {\r\n Object.keys(fs.subscriptions).map(k => {\r\n fs.subscriptions[k]?.unsubscribe();\r\n });\r\n };\r\n }, []);\r\n\r\n // Return the field binding helpers\r\n return {\r\n isValid,\r\n submit: (fn?: () => void) => {\r\n return (e: React.FormEvent) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n // See if we need to update the curently focused field\r\n const { focused, values } = formState[0];\r\n if(focused) {\r\n fields[focused](values[focused]);\r\n }\r\n\r\n // Mark the form with a submit attempt to show all errors\r\n formState[1](s => ({\r\n ...s,\r\n errors: keys.reduce((errors, k) => {\r\n errors[k] = errors[k] ? errors[k] : s.required[k] && !s.values[k] ? 'This field is required.' : '';\r\n return errors;\r\n }, s.errors),\r\n submitAttempted: true,\r\n }));\r\n if(isValid) {\r\n fn && fn();\r\n }\r\n };\r\n },\r\n onChange: (fn: (key: string, value: any) => void) => { updateFn.current = fn; },\r\n formState: fs,\r\n\r\n bindText(selector: StateSelector | string[], options?: BindOptions) {\r\n return addField(bindField({ updateFn, selector, formState, formStateRef, options: { ...formOptions, type: 'text', ...options } }));\r\n },\r\n bindNumeric(selector: StateSelector | string[], options?: BindOptionsNumeric) {\r\n return addField(bindField({\r\n updateFn, selector, formState, formStateRef,\r\n options: { ...formOptions, ...options, type: 'numeric' },\r\n parse: (v: string) => {\r\n return v === ''\r\n ? undefined\r\n : v.trim() === '-' ? -0 : Number(v.replace(options?.decimals! > 0 ? /[^0-9\\-\\.]/g : /[^0-9\\-]/g, ''));\r\n },\r\n format: (v: number | undefined, key?: string) => {\r\n const formatted = v == null || v.toString() === ''\r\n ? ''\r\n : (options?.currency ? '$' : '') + formatNumber(v, options?.decimals || 0, false) + (options?.percentage ? '%' : '');\r\n return options?.comma === false ? formatted.replace(',', '') : formatted;\r\n },\r\n }));\r\n },\r\n bindBoolean(selector: StateSelector | string[], options?: BindOptions) {\r\n return addField(bindField({\r\n updateFn, selector, formState, formStateRef,\r\n options: { ...formOptions, ...options },\r\n parse: (v: string | boolean) => v === 'true' || v === true ? true : v === 'false' || v === false ? false : undefined,\r\n // format: (v: boolean) => v === true ? 'true' : v === false ? 'false' : undefined,\r\n }));\r\n },\r\n bindDate(selector: StateSelector | string[], options?: BindOptions) {\r\n return addField(bindField({\r\n updateFn, selector, formState, formStateRef, options: { ...formOptions, ...options, type: 'date', placeholder: 'M/D/YYYY' },\r\n // format: (v: string) => v ? formatLocalDate(v, 'yyyy-MM-dd') : '',\r\n // parse: (v: string) => v ? formatLocalDate(v) : undefined,\r\n }));\r\n },\r\n };\r\n }\r\n\r\n bindField({ updateFn, selector, format, parse, formState, formStateRef, options }: BindFieldProps): BoundField {\r\n const { mask, index, index2, required, type = 'text', defaultValue } = options || {};\r\n const isSelectorFn = typeof selector === 'function';\r\n const name = isSelectorFn\r\n ? parseFn(selector)[1].trim()\r\n : selector.join('.');\r\n // console.log({name})\r\n\r\n const key = `${name}|${index ?? ''}`.trim()\r\n + (index2 == undefined ? '' : `|${index2}`);\r\n const [state, setState] = formState;\r\n const isFocused = state.focused === key;\r\n\r\n let v = state.values[key];\r\n\r\n // Set the default value for local state\r\n const value = format ? format(v, key) : v;\r\n const maskRegex = mask ? new RegExp(mask) : null;\r\n\r\n // Update Rx store\r\n const updateRxState = (nv: any) => {\r\n this.update(s => {\r\n // Prevent updates when there is no change\r\n const currentStateValue = isSelectorFn\r\n ? selector(s as RootState, (index || 0) as any, (index2 || 0) as any) ?? ''\r\n : getSelector(selector, s as RootState, index, index2);\r\n if(currentStateValue === (nv ?? '')) return;\r\n\r\n // dbg('updateRxFn', key, '#FFEDAC', { currentStateValue, nv });\r\n updateSelector(selector, s, index, index2, parse ? parse(nv) : nv);\r\n }, key);\r\n };\r\n\r\n // Update local state\r\n const updateLocalState = (value: any, updateRx?: boolean, externalChange?: boolean) => {\r\n formStateRef.current.updating[key] = true;\r\n\r\n // dbg('updateLocalState', key, 'purple', { value, updateRx });\r\n if(maskRegex && (value || '').replace(maskRegex, '') !== value) {\r\n return;\r\n }\r\n\r\n // Try our mask function\r\n const [maskedValue, error] = maskValue(type, value, options);\r\n if(maskedValue === null) {\r\n return;\r\n }\r\n\r\n updateRx && updateRxState(maskedValue);\r\n\r\n // Update form state\r\n setState(s => {\r\n const ret = {\r\n ...s,\r\n values: { ...s.values, [key]: maskedValue },\r\n errors: { ...s.errors, [key]: error },\r\n };\r\n return ret;\r\n });\r\n\r\n // Notify the component that the form changed.\r\n if(updateFn.current && !externalChange) {\r\n // dbg('updateFn', key, '#F79646', { value, updateRx });\r\n setTimeout(() => updateFn.current(key, value), 100);\r\n }\r\n\r\n formStateRef.current.updating[key] = false;\r\n };\r\n\r\n // Subscribe to state changes\r\n if(!state.subscriptions[key]) {\r\n const selectSubscription = this.stateSubject.pipe(\r\n map(v => {\r\n try {\r\n return isSelectorFn\r\n ? selector(v, index as any, index2 as any)\r\n : getSelector(selector, v, index, index2);\r\n } catch(ex) {\r\n if(formStateRef.current.subscriptions[key])\r\n formStateRef.current.subscriptions[key]?.unsubscribe();\r\n else\r\n dbg('Unsubscribe Failed', key, 'red', formStateRef.current.subscriptions[key]);\r\n setState(s => ({ ...s, subscriptions: { ...s.subscriptions, [key]: undefined } }));\r\n }\r\n }),\r\n distinctUntilChanged(),\r\n ).subscribe(nv => {\r\n const v = formStateRef.current.values[key];\r\n // tslint:disable-next-line: triple-equals\r\n if((v ?? '') !== (nv ?? '') && !formStateRef.current.updating[key]) {\r\n // dbg('Form Subscription', key, '#FFEDAC', { v, nv });\r\n updateLocalState(nv?.toString(), undefined, true);\r\n }\r\n });\r\n\r\n // Add this subscription to the form state\r\n setState(s => {\r\n return { ...s, subscriptions: { ...s.subscriptions, [key]: selectSubscription } };\r\n });\r\n }\r\n\r\n let inputType = type;\r\n switch(type) {\r\n case 'password':\r\n inputType = 'password';\r\n break;\r\n case 'checkbox':\r\n inputType = 'checkbox';\r\n break;\r\n default:\r\n inputType = 'text';\r\n break;\r\n }\r\n if(options?.hide && !isFocused)\r\n inputType = 'password';\r\n\r\n const error = options.allErrors?.find(e => e && e.field && name === e.field && (e.i == index || e.i === -1) && (e.j == index2 || e.j === -1));\r\n // if(name === 's.owners[i].employment.employerName')\r\n // console.log({ name, error, index, index2, allErrors: options.allErrors });\r\n const errorMsg = error?.msg ? error.msg : state.errors[key] || (error ? '' : undefined);\r\n const numericOptions = options as BindOptionsNumeric;\r\n const style: React.CSSProperties = {};\r\n if(numericOptions?.currency || numericOptions?.percentage)\r\n style.textAlign = 'right';\r\n if(options.align)\r\n style.textAlign = options.align;\r\n const valueKey = type === 'checkbox' ? 'checked' : 'value';\r\n\r\n return {\r\n key,\r\n placeholder: options.placeholder,\r\n updateRxState,\r\n type: inputType,\r\n [valueKey]: type === 'checkbox' ? (v === 'true' || v === true) : !v && defaultValue ? defaultValue : value === undefined || v === undefined ? '' : isFocused ? v : value,\r\n onChange: (e: React.ChangeEvent, valueOverride?: any) => {\r\n const value = 'checked' in e.target && type === 'checkbox' ? e.target.checked : e.target.value;\r\n const updateRx = options?.update === 'onChange' || !updateOnBlur(e.target);\r\n updateLocalState(valueOverride !== undefined ? valueOverride : value, updateRx);\r\n },\r\n onFocus: e => {\r\n setState(s => ({ ...s, focused: key }));\r\n if('select' in e.target) {\r\n const t = e.target;\r\n setTimeout(() => {\r\n if(t === document.activeElement)\r\n t.select();\r\n }, 0);\r\n }\r\n },\r\n onBlur: (e: React.FocusEvent) => {\r\n if(!options?.disableOnBlur) {\r\n setState(s => ({ ...s, focused: '' }));\r\n }\r\n if(options?.update !== 'onChange' && updateOnBlur(e.target)) {\r\n const value = 'checked' in e.target && type === 'checkbox' ? e.target.checked : e.target.value;\r\n updateRxState(value);\r\n }\r\n },\r\n required,\r\n 'aria-required': required,\r\n 'data-error': errorMsg,\r\n // tslint:disable-next-line: triple-equals\r\n 'aria-invalid': errorMsg != undefined,\r\n style,\r\n title: error?.msg,\r\n autoComplete: 'sfsf9uhef3',\r\n };\r\n }\r\n}\r\n\r\nfunction updateOnBlur(element: HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement) {\r\n return element?.nodeName.toLowerCase() === 'input'\r\n && element.type !== 'radio' && element.type !== 'checkbox';\r\n}\r\n\r\nfunction maskValue(type: InputType, value: string, options: BindOptions | BindOptionsNumeric): [null | string, string] {\r\n let v = value === undefined ? '' : value;\r\n let e = '';\r\n switch(type) {\r\n case 'date':\r\n if(v.match(/[^0-9\\/]/) !== null || v.replace(/[^0-9]/g, '').length > 8 || v.replace(/[^\\/]/g, '').length > 2)\r\n return [null, e];\r\n if(v.match(/^\\d\\d\\d$/))\r\n v = v.substring(0, 2) + '/' + v.substring(2, 3);\r\n if(v.match(/^\\d\\d\\/\\d\\d\\d$/))\r\n v = v.substring(0, 5) + '/' + v.substring(5, 6);\r\n e = isDateValid(v) ? '' : 'Not a valid date (mm/dd/yyyy)';\r\n break;\r\n case 'ssn':\r\n if(v.match(/[^0-9\\-]/) !== null || v.replace(/[^0-9]/g, '').length > 9 || v.replace(/[^\\-]/g, '').length > 2)\r\n return [null, e];\r\n if(v.match(/^\\d\\-/) !== null || v.match(/^\\d\\d\\-/) !== null || v.match(/^\\d\\d\\d\\-\\-/) !== null || v.match(/^\\d\\d\\d\\-\\d\\-/) !== null)\r\n return [null, e];\r\n if(v.match(/^\\d\\d\\d\\d$/))\r\n v = v.substring(0, 3) + '-' + v.substring(3, 4);\r\n if(v.match(/^\\d\\d\\d-\\d\\d\\d$/))\r\n v = v.substring(0, 6) + '-' + v.substring(6, 7);\r\n e = v.replace(/[\\s_-]/g, '').length === 9 ? '' : 'SSN is not valid';\r\n break;\r\n case 'ssn4':\r\n if(v.match(/[^0-9]/) !== null || v.length > 4)\r\n return [null, e];\r\n e = v.length === 0 ? 'This field is required' : v.length < 4 ? 'Please enter the last 4 digits of your SSN' : '';\r\n break;\r\n case 'physicalAddress':\r\n e = isPoBox(value) ? 'The business address must be a physical address.' : '';\r\n break;\r\n case 'tin':\r\n if(v.replace(/[^0-9]/g, '').length > 9)\r\n return [null, e];\r\n e = isTin(v) ? '' : 'Not a valid EIN or SSN';\r\n break;\r\n case 'ein':\r\n if(v.match(/[^0-9\\-]/) !== null || v.replace(/[^0-9]/g, '').length > 9 || v.replace(/[^\\-]/g, '').length > 1)\r\n return [null, e];\r\n if(v.match(/^\\d\\-/) !== null)\r\n return [null, e];\r\n if(v.match(/^\\d\\d\\d$/))\r\n v = v.substring(0, 2) + '-' + v.substring(2, 3);\r\n e = v.replace(/[\\s_-]/g, '').length === 9 ? '' : 'EIN is not valid';\r\n break;\r\n case 'phone':\r\n if(v.match(/[^0-9\\-]/) !== null || v.replace(/[^0-9]/g, '').length > 10 || v.replace(/[^\\-]/g, '').length > 2)\r\n return [null, e];\r\n if(v.match(/^\\d\\d\\d\\d$/))\r\n v = v.substring(0, 3) + '-' + v.substring(3, 4);\r\n if(v.match(/^\\d\\d\\d-\\d\\d\\d\\d$/))\r\n v = v.substring(0, 7) + '-' + v.substring(7, 8);\r\n e = v.replace(/[^0-9]/g, '').length === 10 ? '' : 'Phone number is not valid';\r\n break;\r\n case 'numeric':\r\n const numericOptions = options as BindOptionsNumeric;\r\n try {\r\n v = numericOptions.positive\r\n ? v.replace(/[^0-9\\.]/g, '')\r\n : v.replace(/[^0-9\\.\\-]/g, '');\r\n if(!numericOptions.positive && v?.trim() === '-')\r\n break;\r\n\r\n const num = Number(v);\r\n if(isNaN(num)) {\r\n return [null, 'Invalid number'];\r\n }\r\n\r\n if(v !== '' && numericOptions.min !== undefined) {\r\n if(num < numericOptions.min) {\r\n return [v, `Must be at least ${numericOptions.min}`];\r\n }\r\n }\r\n if(v !== '' && numericOptions.max !== undefined) {\r\n if(num > numericOptions.max) {\r\n return [v, `Cannot be more than ${numericOptions.max}`];\r\n }\r\n }\r\n\r\n const [whole, dec] = v.split('.');\r\n if((numericOptions.decimals || 0) === 0) {\r\n v = whole;\r\n } else if(dec !== undefined) {\r\n v = `${whole}.${dec.substring(0, numericOptions.decimals)}`;\r\n }\r\n } catch(e) {\r\n return [null, 'Invalid number'];\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n return [v, e];\r\n}\r\n\r\ntype InputType = 'text' | 'checkbox' | 'date' | 'email' | 'ssn' | 'ssn4' | 'password' | 'accountNumber' | 'physicalAddress' | 'phone' | 'numeric' | 'tin' | 'ein';\r\ntype LocalFormState = {\r\n values: { [k: string]: any };\r\n errors: { [k: string]: string };\r\n required: { [k: string]: boolean };\r\n updating: { [k: string]: boolean };\r\n subscriptions: { [k: string]: Subscription | undefined };\r\n focused: string;\r\n submitAttempted: boolean;\r\n};\r\nexport type StateSelector = (state: State, i: number, j: number) => T | undefined;\r\ntype BindFieldProps = {\r\n formState: [LocalFormState, React.Dispatch>];\r\n formStateRef: React.MutableRefObject;\r\n selector: StateSelector | string[];\r\n format?: (value: any, key?: string) => string,\r\n parse?: (value: string) => any,\r\n options: BindOptions;\r\n updateFn: React.MutableRefObject<(key: string, value: any) => void>\r\n};\r\ntype BindOptions = {\r\n mask?: string;\r\n hide?: boolean;\r\n index?: number | string;\r\n index2?: number | string;\r\n type?: InputType;\r\n required?: boolean;\r\n placeholder?: string;\r\n update?: 'onBlur' | 'onChange';\r\n disableOnBlur?: boolean;\r\n allErrors?: TabError[];\r\n defaultValue?: string;\r\n align?: React.CSSProperties['textAlign'];\r\n};\r\ntype BindOptionsNumeric = BindOptions & {\r\n decimals?: number;\r\n min?: number;\r\n max?: number;\r\n currency?: boolean;\r\n percentage?: boolean;\r\n positive?: boolean;\r\n defaultValue?: number;\r\n comma?: boolean;\r\n};\r\nexport type BoundFieldProps = {\r\n type: InputType;\r\n value?: any;\r\n checked?: boolean;\r\n onChange: (e: React.ChangeEvent, valueOverride?: any) => void;\r\n onFocus: (e: React.FocusEvent) => void;\r\n onBlur: (e: React.FocusEvent) => void;\r\n required?: boolean;\r\n placeholder?: string,\r\n 'aria-required'?: boolean;\r\n 'aria-invalid': boolean;\r\n 'data-error': string | undefined;\r\n style: any;\r\n title?: string;\r\n autoComplete?: string;\r\n};\r\ntype BoundField = BoundFieldProps & {\r\n key: string;\r\n updateRxState: (nv: any) => void;\r\n};\r\n\r\nfunction parseFn(selector: Function | string) {\r\n // Sanitize the fn string\r\n const fnString = selector.toString()\r\n .replace(/[\\r\\n]/g, '')\r\n .replace(/\\s\\s/g, ' ');\r\n\r\n // Parse a full function body\r\n if(fnString.startsWith('function')) {\r\n const fnRegex = new RegExp('\\\\(([^\\)]*)\\\\).*return\\s*([^;}]*)', 'gi');\r\n const result = fnRegex.exec(fnString);\r\n if(!result)\r\n return ['', ''];\r\n const p = (result[1] || '').trim();\r\n const f = (result[2] || '').trim();\r\n return [p, f];\r\n }\r\n\r\n // Parse a lambda\r\n const [params, body] = fnString.split('=>').map(p => p.trim());\r\n const stateVars = params.replace('(', '').replace(')', '');\r\n return [stateVars, body];\r\n}\r\n\r\nexport function executeSelector(selector: (string|number)[] | Function, state: {}, i?: string | number, i2?: string | number) : T {\r\n return typeof selector === 'function'\r\n ? selector(state, i, i2)\r\n : getSelector(selector, state, i, i2);\r\n}\r\nexport function getSelector(parts: (string|number)[], data: {}, i: string | number | undefined, j: string | number | undefined): any {\r\n let o: any = data;\r\n const normalizedParts = parts.join('.')\r\n .replace('[i]', `.${i}`)\r\n .replace('[i2]', `.${j}`)\r\n .replace('[j]', `.${j}`)\r\n .split('.');\r\n\r\n for(let i = 1, n = normalizedParts.length; i < n; ++i) {\r\n const k = normalizedParts[i];\r\n if(k in o) {\r\n o = o[k];\r\n } else {\r\n return undefined;\r\n }\r\n }\r\n return o;\r\n}\r\n\r\nexport function getSelectorPaths(selector: Function | string, i?: string | number, i2?: string | number) {\r\n const [, fnBody] = parseFn(selector)\r\n return replaceIndexParts(fnBody, i, i2)\r\n .flatMap(v => v.trim().split('['))\r\n .map(v => v.replace(']', ''));\r\n}\r\nfunction replaceIndexParts(selector: string | string[], i: string | number | undefined, i2: string | number | undefined) {\r\n const parts = typeof selector === 'string' ? selector.split('.') : selector;\r\n return parts\r\n .map(v => v\r\n .replace('[i]', `.${i}`)\r\n .replace('[i2]', `.${i2}`)\r\n .replace('[j]', `.${i2}`))\r\n .join('.')\r\n .split('.');\r\n}\r\nexport function updateSelector(selector: Function | string | string[], data: {}, i: number | string | undefined, i2: number | string | undefined, v: any) {\r\n const parts = typeof selector === 'function'\r\n ? getSelectorPaths(selector, i, i2)\r\n : replaceIndexParts(selector, i, i2);\r\n\r\n // Skip the first\r\n parts.shift();\r\n\r\n let o: any = data;\r\n while(parts.length - 1) {\r\n const n = parts.shift() ?? '';\r\n if(!(n in o)) {\r\n // o[n] = {};\r\n console.log('Object missing:', { selector, data: JSON.parse(JSON.stringify(data)), i, i2, v, n, o: JSON.parse(JSON.stringify(o)), 'o[n]': o[n] });\r\n return;\r\n }\r\n o = o[n];\r\n }\r\n o[parts[0]] = v;\r\n}\r\nexport interface FormOptions {\r\n required?: boolean;\r\n update?: 'onBlur' | 'onChange';\r\n disableOnBlur?: boolean;\r\n allErrors?: TabError[];\r\n}\r\n","export function serializeFormData(obj: { [a: string]: string }) {\n return Object.keys(obj).reduce((a, k) => {\n // tslint:disable-next-line: no-array-mutation\n a.push(k + '=' + encodeURIComponent(obj[k]));\n return a;\n }, [] as string[]).join('&');\n}\n","export function shadeColor(percent: number, from: string, to?: string): string {\n // Error check\n if(typeof (percent) !== 'number' || percent < -100 || percent > 100) {\n return from;\n }\n if(typeof (from) !== 'string' || (from[0] !== 'r' && from[0] !== '#')) {\n return from;\n }\n if((typeof (to) !== 'string' && typeof (to) !== 'undefined')) {\n return from;\n }\n\n const p = percent / 100.0;\n const b = p < 0;\n const r = Math.round;\n let h = from.length > 9;\n h = typeof (to) === 'string' ? to.length > 9 ? true : to === 'c' ? !h : false : h;\n\n const p2 = b ? p * -1 : p;\n const f = sbcRip(from);\n const t = sbcRip(to && to !== 'c' ? to : b ? '#000000' : '#FFFFFF');\n\n // ErrorCheck\n if(!f || !t) {\n return from;\n }\n\n if(h) {\n return 'rgb(' +\n r((t[0] - f[0]) * p2 + f[0]) + ',' +\n r((t[1] - f[1]) * p2 + f[1]) + ',' +\n r((t[2] - f[2]) * p2 + f[2]) +\n (f[3] < 0 && t[3] < 0 ? ')' : ',' + (f[3] > -1 && t[3] > -1 ? r(((t[3] - f[3]) * p2 + f[3]) * 10000) / 10000 : t[3] < 0 ? f[3] : t[3]) + ')');\n } else {\n return '#' + (0x100000000 + (f[3] > -1 && t[3] > -1 ? r(((t[3] - f[3]) * p2 + f[3]) * 255) : t[3] > -1 ? r(t[3] * 255) : f[3] > -1 ? r(f[3] * 255) : 255)\n * 0x1000000 + r((t[0] - f[0]) * p2 + f[0]) * 0x10000 + r((t[1] - f[1]) * p2 + f[1]) * 0x100 + r((t[2] - f[2]) * p2 + f[2])).toString(16).slice(f[3] > -1 || t[3] > -1 ? 1 : 3);\n }\n}\nfunction sbcRip(input: string) {\n const length = input.length;\n const RGB: { 0: number, 1: number, 2: number, 3: number } = { 0: 0, 1: 0, 2: 0, 3: 0 };\n\n if(length > 9) {\n const inputParts = input.split(',');\n if(inputParts.length < 3 || inputParts.length > 4)\n return null;\n RGB[0] = parseInt(inputParts[0].slice(4), 10);\n RGB[1] = parseInt(inputParts[1], 10);\n RGB[2] = parseInt(inputParts[2], 10);\n RGB[3] = inputParts[3] ? parseFloat(inputParts[3]) : -1;\n } else {\n let colorStr = input;\n if(length === 8 || length === 6 || length < 4)\n return null;\n if(length < 6)\n colorStr = '#' + input[1] + input[1] + input[2] + input[2] + input[3] + input[3] + (length > 4 ? input[4] + '' + input[4] : '');\n const colorHex = parseInt(colorStr.slice(1), 16);\n RGB[0] = colorHex >> 16 & 255;\n RGB[1] = colorHex >> 8 & 255;\n RGB[2] = colorHex & 255;\n RGB[3] = length === 9 || length === 5 ? Math.round(((colorHex >> 24 & 255) / 255) * 10000) / 10000 : -1;\n }\n return RGB;\n}\n","import Axios, { CancelTokenSource } from 'axios';\r\nimport { SimpleEventDispatcher } from 'ste-simple-events';\r\n\r\nimport { get, postJson } from \"web-shared/lib\";\r\n\r\ntype NegotiateResponse = {\r\n\tConnectionId: string;\r\n\tConnectionTimeout: number;\r\n\tConnectionToken: string;\r\n\tDisconnectTimeout: number;\r\n\tKeepAliveTimeout: number;\r\n\tProtocolVersion: string;\r\n\tTransportConnectTimeout: number;\r\n\tUrl: string;\r\n\tRedirectUrl?: string;\r\n};\r\ntype KeepAliveData = {\r\n\tmonitoring?: boolean;\r\n\tactivated?: boolean;\r\n\treconnectKeepAliveUpdate?: () => void,\r\n\ttimeout?: number;\r\n\ttimeoutWarning?: number;\r\n\tuserNotified?: boolean;\r\n}\r\ntype ResponseDataMin = {\r\n\tC?: string;\r\n\tM?: string[];\r\n\tS?: boolean;\r\n\tT?: boolean;\r\n\tG?: string;\r\n\tE?: string;\r\n}\r\ntype ResponseData = {\r\n\tMessageId?: string;\r\n\tMessages?: string[];\r\n\tInitialized?: boolean;\r\n\tShouldReconnect?: boolean;\r\n\tGroupsToken?: string;\r\n\tError?: string;\r\n}\r\n\r\ntype ConnectionState = 'connecting' | 'connected' | 'reconnecting' | 'disconnected';\r\n\r\n// const defaultContentType = 'application/x-www-form-urlencoded; charset=UTF-8';\r\nconst keepAliveWarnAt = 2 / 3; // Warn user of slow connection if we breach the X% mark of the keep alive timeout\r\nconst pingInterval = 300000;\r\n\r\nfunction stringifySend(message: any) {\r\n\tif(typeof (message) === \"string\" || typeof (message) === \"undefined\" || message === null)\r\n\t\treturn message;\r\n\treturn JSON.stringify(message);\r\n}\r\n\r\nexport class SignalR {\r\n\tversion = \"2.4.3\";\r\n\turl: string = '';\r\n\tnegotiateCancelSource = Axios.CancelToken.source();\r\n\tstartCancelSource = Axios.CancelToken.source();\r\n\tbeatHandle = 0;\r\n\ttransportTimeoutHandle = 0;\r\n\ttransportConnectTimeout = 0;\r\n\ttotalTransportConnectTimeout = 0;\r\n\treconnectTimeout = 0;\r\n\tpingIntervalId = 0;\r\n\tbeatInterval = 5000;\r\n\tkeepAliveData: KeepAliveData = {};\r\n\tstate: ConnectionState = 'disconnected';\r\n\tid: string = '';\r\n\ttoken: string = '';\r\n\tdisconnectTimeout = 30000; // This should be set by the server in response to the negotiate request (30s default)\r\n\treconnectWindow = 30000; // This should be set by the server in response to the negotiate request\r\n\tlastMessageAt = new Date().getTime();\r\n\tlastActiveAt = new Date().getTime();\r\n\tconfiguredStopReconnectingTimeout = false;\r\n\tsocket: WebSocket | undefined = undefined;\r\n\tappRelativeUrl: string = '';\r\n\tstartRequested = false;\r\n\tstartCompleted = false;\r\n\tconnectionStopped = false;\r\n\tredirectQs = '';\r\n\tqs = '';\r\n\tmessageId = '';\r\n\twebSocketServerUrl = '';\r\n\r\n\tbuffer: string[] = [];\r\n\r\n\tdrainBuffer() {\r\n\t\t// Ensure that the connection is connected when we drain (do not want to drain while a connection is not active)\r\n\t\tif(this.state === 'connected') {\r\n\t\t\twhile(this.buffer.length > 0) {\r\n\t\t\t\tthis.onReceivedEvent.dispatch(this.buffer.shift() || '');\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tclearBuffer() { this.buffer = []; }\r\n\ttryBuffer(message: string) {\r\n\t\tif(this.state === 'connecting') {\r\n\t\t\tthis.buffer.push(message);\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t};\r\n\r\n\tprivate onStartEvent = new SimpleEventDispatcher();\r\n\tprivate onStartingEvent = new SimpleEventDispatcher();\r\n\tprivate onReceivedEvent = new SimpleEventDispatcher();\r\n\tprivate onErrorEvent = new SimpleEventDispatcher();\r\n\tprivate onConnectionSlowEvent = new SimpleEventDispatcher();\r\n\tprivate onReconnectingEvent = new SimpleEventDispatcher();\r\n\tprivate onReconnectEvent = new SimpleEventDispatcher();\r\n\tprivate onStateChangedEvent = new SimpleEventDispatcher<{ oldState: ConnectionState, newState: ConnectionState }>();\r\n\tprivate onDisconnectEvent = new SimpleEventDispatcher();\r\n\r\n\tpublic get onStart() { return this.onStartEvent.asEvent(); }\r\n\tpublic get onStarting() { return this.onStartingEvent.asEvent(); }\r\n\tpublic get onReceived() { return this.onReceivedEvent.asEvent(); }\r\n\tpublic get onError() { return this.onErrorEvent.asEvent(); }\r\n\tpublic get onConnectionSlow() { return this.onConnectionSlowEvent.asEvent(); }\r\n\tpublic get onReconnecting() { return this.onReconnectingEvent.asEvent(); }\r\n\tpublic get onReconnect() { return this.onReconnectEvent.asEvent(); }\r\n\tpublic get onStateChanged() { return this.onStateChangedEvent.asEvent(); }\r\n\tpublic get onDisconnect() { return this.onDisconnectEvent.asEvent(); }\r\n\r\n\tconstructor(url: string) {\r\n\t\tthis.url = url;\r\n\t}\r\n\r\n\tchangeState(expectedState: ConnectionState, newState: ConnectionState) {\r\n\t\tif(expectedState === this.state) {\r\n\t\t\tthis.state = newState;\r\n\r\n\t\t\tthis.onStateChangedEvent.dispatch({ oldState: expectedState, newState });\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tconfigurePingInterval() {\r\n\t\tif(!this.pingIntervalId && pingInterval) {\r\n\t\t\tthis.pingIntervalId = window.setInterval(() => {\r\n\t\t\t\tthis.pingServer();\r\n\t\t\t}, pingInterval);\r\n\t\t}\r\n\t}\r\n\r\n\tasync pingServer() {\r\n\t\tlet url = `${this.url}/ping`;\r\n\t\turl = this.addQs(url, this.qs);\r\n\r\n\t\tconst pingResponse = await get<{ Response: string }>(url);\r\n\r\n\t\tif(pingResponse.isError) {\r\n\t\t\tthis.onErrorEvent.dispatch(pingResponse.error);\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif(pingResponse.payload?.Response === 'pong')\r\n\t\t\treturn true;\r\n\r\n\t\tthis.onErrorEvent.dispatch(`Ping response was unexpected: ${pingResponse.payload?.Response}`);\r\n\t\treturn false;\r\n\t}\r\n\r\n\tasync start(reconnecting: boolean) {\r\n\t\t// Begin with the /negotiate request to the server to get a connection token\r\n\t\tconst res = await this.negotiate(this.url, this.negotiateCancelSource);\r\n\t\tthis.id = res.ConnectionId;\r\n\t\tthis.token = res.ConnectionToken;\r\n\r\n\t\tif(res.KeepAliveTimeout) {\r\n\t\t\tthis.keepAliveData.activated = true;\r\n\r\n\t\t\t// Timeout to designate when to force the connection into reconnecting converted to milliseconds\r\n\t\t\tthis.keepAliveData.timeout = res.KeepAliveTimeout * 1000;\r\n\r\n\t\t\t// Timeout to designate when to warn the developer that the connection may be dead or is not responding.\r\n\t\t\tthis.keepAliveData.timeoutWarning = this.keepAliveData.timeout * keepAliveWarnAt;\r\n\r\n\t\t\t// Instantiate the frequency in which we check the keep alive. It must be short in order to not miss/pick up any changes\r\n\t\t\tthis.beatInterval = (this.keepAliveData.timeout - this.keepAliveData.timeoutWarning) / 3;\r\n\t\t} else {\r\n\t\t\tthis.keepAliveData.activated = false;\r\n\t\t}\r\n\r\n\t\tthis.appRelativeUrl = res.Url;\r\n\r\n\t\t// Once the server has labeled the PersistentConnection as Disconnected, we should stop attempting to reconnect\r\n\t\t// after res.DisconnectTimeout seconds.\r\n\t\tthis.disconnectTimeout = res.DisconnectTimeout * 1000; // in ms\r\n\r\n\t\t// Add the TransportConnectTimeout from the response to the transportConnectTimeout from the client to calculate the total timeout\r\n\t\tthis.totalTransportConnectTimeout = this.transportConnectTimeout + res.TransportConnectTimeout * 1000;\r\n\r\n\t\tthis.reconnectWindow = res.DisconnectTimeout + (this.keepAliveData.timeout || 0);\r\n\r\n\t\t// Start the web socket connection\r\n\r\n\t\tif(this.startRequested || this.connectionStopped) {\r\n\t\t\tlog(\"WARNING! webSockets transport cannot be started. Initialization ongoing or completed.\");\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlog(\"webSockets transport starting.\");\r\n\r\n\t\tlet failCalled = false;\r\n\t\tconst onFailed = (error: string | undefined) => {\r\n\t\t\t// Don't allow the same transport to cause onFallback to be called twice\r\n\t\t\tif(!failCalled) {\r\n\t\t\t\tfailCalled = true;\r\n\t\t\t\tthis.transportFailed(error);\r\n\t\t\t}\r\n\r\n\t\t\t// Returns true if the transport should stop;\r\n\t\t\t// false if it should attempt to reconnect\r\n\t\t\treturn !this.startCompleted || this.connectionStopped;\r\n\t\t}\r\n\t\tthis.transportTimeoutHandle = window.setTimeout(() => {\r\n\t\t\tif(!failCalled) {\r\n\t\t\t\tfailCalled = true;\r\n\t\t\t\tlog(\"webSockets transport timed out when trying to connect.\");\r\n\t\t\t\tthis.transportFailed(undefined);\r\n\t\t\t}\r\n\t\t}, this.totalTransportConnectTimeout);\r\n\r\n\r\n\t\t// ws: /connect\r\n\t\tlet opened = false;\r\n\r\n\t\tif(!window.WebSocket) {\r\n\t\t\tonFailed('No WebSocket support on this browser.');\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif(!this.socket) {\r\n\t\t\tconst parser = window.document.createElement(\"a\");\r\n\t\t\tparser.href = this.url;\r\n\r\n\t\t\tconst wsProtocol = parser.protocol === \"https:\" ? \"wss://\" : \"ws://\";\r\n\t\t\tlet url = this.webSocketServerUrl ? this.webSocketServerUrl : wsProtocol + parser.host;\r\n\r\n\t\t\turl += this.getUrl(reconnecting);\r\n\r\n\t\t\tlog(`Connecting to websocket endpoint '${url}'.`);\r\n\t\t\tthis.socket = new window.WebSocket(url);\r\n\r\n\t\t\tthis.socket.onopen = () => {\r\n\t\t\t\topened = true;\r\n\t\t\t\tlog(\"Websocket opened.\");\r\n\r\n\t\t\t\tthis.clearReconnectTimeout();\r\n\r\n\t\t\t\tif(this.changeState('reconnecting', 'connected') === true)\r\n\t\t\t\t\tthis.onReconnectEvent.dispatch();\r\n\t\t\t};\r\n\r\n\t\t\tconst that = this;\r\n\t\t\tthis.socket.onclose = function(event: CloseEvent) {\r\n\t\t\t\tlet error;\r\n\r\n\t\t\t\t// Only handle a socket close if the close is from the current socket.\r\n\t\t\t\t// Sometimes on disconnect the server will push down an onclose event\r\n\t\t\t\t// to an expired socket.\r\n\r\n\t\t\t\tif(this === that.socket) {\r\n\t\t\t\t\tif(opened && typeof event.wasClean !== \"undefined\" && event.wasClean === false) {\r\n\t\t\t\t\t\t// Ideally this would use the websocket.onerror handler (rather than checking wasClean in onclose) but\r\n\t\t\t\t\t\t// I found in some circumstances Chrome won't call onerror. This implementation seems to work on all browsers.\r\n\t\t\t\t\t\terror = 'WebSocket closed.';\r\n\r\n\t\t\t\t\t\tlog(`Unclean disconnect from websocket: ${event.reason || \"[no reason given].\"}`);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tlog(\"Websocket closed.\");\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(!onFailed || !onFailed(error)) {\r\n\t\t\t\t\t\tif(error)\r\n\t\t\t\t\t\t\tthat.onErrorEvent.dispatch(error);\r\n\r\n\t\t\t\t\t\tthat.reconnect();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\tthis.socket.onmessage = function (event) {\r\n\t\t\t\tvar data;\r\n\r\n\t\t\t\ttry {\r\n\t\t\t\t\tdata = event.data ? JSON.parse(event.data) : event.data;\r\n\t\t\t\t}\r\n\t\t\t\tcatch(error) {\r\n\t\t\t\t\tthat.onErrorEvent.dispatch(String(error));\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(data) {\r\n\t\t\t\t\tthat.processMessages(data, reconnecting, () => {\r\n\t\t\t\t\t\tif(!failCalled) {\r\n\t\t\t\t\t\t\tthat.initReceived();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n\r\n\tgetUrl(reconnecting: boolean, ajaxPost?: boolean) {\r\n\t\tlet url = this.appRelativeUrl;\r\n\t\tlet qs = \"transport=webSockets\";\r\n\r\n\t\t// if(!ajaxPost && connection.groupsToken) {\r\n\t\t// \tqs += \"&groupsToken=\" + window.encodeURIComponent(connection.groupsToken);\r\n\t\t// }\r\n\r\n\t\tif(!reconnecting) {\r\n\t\t\turl += \"/connect\";\r\n\t\t} else {\r\n\t\t\turl += \"/reconnect\";\r\n\r\n\t\t\tif(!ajaxPost && this.messageId) {\r\n\t\t\t\tqs += `&messageId=${window.encodeURIComponent(this.messageId)}`;\r\n\t\t\t}\r\n\t\t}\r\n\t\turl += `?${qs}`;\r\n\t\turl = this.prepareQueryString(url);\r\n\r\n\t\tif(!ajaxPost) {\r\n\t\t\turl += `&tid=${Math.floor(Math.random() * 11)}`;\r\n\t\t}\r\n\r\n\t\treturn url;\r\n\t}\r\n\r\n\tasync initReceived() {\r\n\t\tif(this.startRequested) {\r\n\t\t\tlog(\"WARNING! The client received multiple init messages.\");\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif(this.connectionStopped)\r\n\t\t\treturn;\r\n\r\n\t\tthis.startRequested = true;\r\n\t\twindow.clearTimeout(this.transportTimeoutHandle);\r\n\r\n\t\tlog(\"webSockets transport connected. Initiating start request.\");\r\n\r\n\t\tconst startResponse = await get<{ Response: string }>(this.getAjaxUrl(\"/start\"), this.startCancelSource?.token, {\r\n\t\t\tskipAuthorization: true,\r\n\t\t});\r\n\r\n\t\tif(startResponse.isError) {\r\n\t\t\tlog(\"The start request failed. Stopping the connection.\");\r\n\t\t\tthis.onErrorEvent.dispatch(`Invalid start response: '${startResponse.error}'. Stopping the connection.`)\r\n\t\t\tthis.stop();\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif(startResponse.payload.Response !== 'started') {\r\n\t\t\tlog(\"The start request failed. Stopping the connection.\");\r\n\t\t\tthis.onErrorEvent.dispatch(`Invalid start response: '${startResponse.payload.Response}'. Stopping the connection.`)\r\n\t\t\tthis.stop();\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.startCompleted = true;\r\n\r\n\t\tlog(\"The start request succeeded. Transitioning to the connected state.\");\r\n\r\n\t\tthis.monitorKeepAlive();\r\n\r\n\t\tif(this.keepAliveData.activated)\r\n\t\t\tthis.startHeartbeat();\r\n\r\n\t\t// Used to ensure low activity clients maintain their authentication.\r\n\t\t// Must be configured once a transport has been decided to perform valid ping requests.\r\n\t\tthis.configurePingInterval();\r\n\r\n\t\tif(!this.changeState('connecting', 'connected'))\r\n\t\t\tlog(\"WARNING! The connection was not in the connecting state.\");\r\n\r\n\t\t// Drain any incoming buffered messages (messages that came in prior to connect)\r\n\t\tthis.drainBuffer();\r\n\r\n\t\tthis.onStartEvent.dispatch();\r\n\r\n\t\t// wire the stop handler for when the user leaves the page\r\n\t\taddEventListener(\"unload\", () => {\r\n\t\t\tlog(\"Window unloading, stopping the connection.\");\r\n\t\t\tthis.stop();\r\n\t\t});\r\n\t}\r\n\r\n\ttriggerReceived(data: string) {\r\n\t\tif(!this.tryBuffer(data)) {\r\n\t\t\tthis.onReceivedEvent.dispatch(data);\r\n\t\t}\r\n\t}\r\n\r\n\tprocessMessages(minData: ResponseDataMin, reconnecting: boolean, onInitialized: Function) {\r\n\t\t// Update the last message time stamp\r\n\t\tthis.markLastMessage();\r\n\r\n\t\tif(minData) {\r\n\t\t\t// This is a message send directly to the client\r\n\t\t\tconst data = maximizePersistentResponse(minData);\r\n\r\n\t\t\tif(data.Error) {\r\n\t\t\t\t// This is a global error, stop the connection.\r\n\t\t\t\tlog(`Received an error message from the server: ${data.Error}`);\r\n\t\t\t\tthis.onErrorEvent.dispatch(data.Error);\r\n\t\t\t\tthis.stop(false);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif(data.MessageId) {\r\n\t\t\t\tthis.messageId = data.MessageId;\r\n\t\t\t}\r\n\r\n\t\t\tif(data.Messages) {\r\n\t\t\t\tdata.Messages.forEach(m => {\r\n\t\t\t\t\tthis.triggerReceived(m);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.tryInitialize(data, reconnecting, onInitialized);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\ttryInitialize(persistentResponse: ResponseData, reconnecting: boolean, onInitialized: Function) {\r\n\t\tif(persistentResponse.Initialized && onInitialized && !reconnecting) {\r\n\t\t\tonInitialized();\r\n\t\t} else if(persistentResponse.Initialized) {\r\n\t\t\tlog(\"WARNING! The client received an init message after reconnecting.\");\r\n\t\t}\r\n\t}\r\n\r\n\ttransportFailed(error: string | undefined) {\r\n\t\tif(this.connectionStopped)\r\n\t\t\treturn;\r\n\r\n\t\twindow.clearTimeout(this.transportTimeoutHandle);\r\n\r\n\t\tif(!this.startRequested) {\r\n\t\t\tthis.stop();\r\n\r\n\t\t\tlog(\"WebSockets transport failed to connect.\");\r\n\t\t} else if(!this.startCompleted) {\r\n\t\t\t// Do not attempt to fall back if a start request is ongoing during a transport failure.\r\n\t\t\t// Instead, trigger an error and stop the connection.\r\n\t\t\tconst wrappedError = `Error during start request. Stopping the connection. ${error}`;\r\n\r\n\t\t\tlog(\"WebSockets transport failed during the start request. Stopping the connection.\");\r\n\t\t\tthis.onErrorEvent.dispatch(wrappedError);\r\n\r\n\t\t\tthis.stop();\r\n\t\t} else {\r\n\t\t\t// The start request has completed, but the connection has not stopped.\r\n\t\t\t// No need to do anything here. The transport should attempt its normal reconnect logic.\r\n\t\t}\r\n\t}\r\n\r\n\tasync abort() {\r\n\t\tconst url = this.getAjaxUrl(\"/abort\");\r\n\t\tawait postJson(url);\r\n\t\tlog(\"Fired ajax abort\");\r\n\t}\r\n\r\n\tgetAjaxUrl(path: string) { return this.prepareQueryString(`${this.url + path}?transport=webSockets`); }\r\n\r\n\tprepareQueryString(url: string) {\r\n\t\t// Use addQs to start since it handles the ?/& prefix for us\r\n\t\tlet preparedUrl = this.addQs(url, \"clientProtocol=2.1\");\r\n\r\n\t\tif(typeof (this.redirectQs) === \"string\") {\r\n\t\t\t// Add the redirect-specified query string params if any\r\n\t\t\tpreparedUrl = this.addQs(preparedUrl, this.redirectQs);\r\n\t\t} else {\r\n\t\t\t// Otherwise, add the user-specified query string params if any\r\n\t\t\tpreparedUrl = this.addQs(preparedUrl, this.qs);\r\n\t\t}\r\n\r\n\t\tif(this.token) {\r\n\t\t\tpreparedUrl += \"&connectionToken=\" + window.encodeURIComponent(this.token);\r\n\t\t}\r\n\r\n\t\treturn preparedUrl + `&_=${Date.now()}`;\r\n\t}\r\n\r\n\taddQs(url: string, qs: string) {\r\n\t\tlet appender = url.indexOf(\"?\") !== -1 ? \"&\" : \"?\";\r\n\r\n\t\tif(!qs)\r\n\t\t\treturn url;\r\n\r\n\t\tif(typeof (qs) === \"string\") {\r\n\t\t\tconst firstChar = qs.charAt(0);\r\n\r\n\t\t\tif(firstChar === \"?\" || firstChar === \"&\") {\r\n\t\t\t\tappender = \"\";\r\n\t\t\t}\r\n\r\n\t\t\treturn url + appender + qs;\r\n\t\t}\r\n\r\n\t\tthrow new Error(\"Query string property must be a string.\");\r\n\t}\r\n\r\n\tstop(notifyServer: boolean = true) {\r\n\t\tif(this.state === 'disconnected')\r\n\t\t\treturn;\r\n\r\n\t\tlog(\"Stopping connection.\");\r\n\r\n\t\t// Clear this no matter what\r\n\t\twindow.clearTimeout(this.beatHandle);\r\n\t\twindow.clearInterval(this.pingIntervalId);\r\n\r\n\t\tthis.connectionStopped = true;\r\n\t\twindow.clearTimeout(this.transportTimeoutHandle);\r\n\t\tthis.startCancelSource?.cancel();\r\n\r\n\t\t// Don't trigger a reconnect after stopping\r\n\t\tthis.clearReconnectTimeout();\r\n\r\n\t\tif(this.socket) {\r\n\t\t\tlog(\"Closing the Websocket.\");\r\n\t\t\tthis.socket.close();\r\n\t\t\tthis.socket = undefined;\r\n\t\t}\r\n\r\n\t\tif(notifyServer !== false) {\r\n\t\t\tthis.abort();\r\n\t\t}\r\n\r\n\t\tthis.stopMonitoringKeepAlive();\r\n\t\tthis.negotiateCancelSource?.cancel();\r\n\r\n\t\tthis.messageId = '';\r\n\t\tthis.id = '';\r\n\t\tthis.pingIntervalId = 0;\r\n\t\tthis.lastMessageAt = 0;\r\n\t\tthis.lastActiveAt = 0;\r\n\t\tthis.redirectQs = '';\r\n\r\n\t\t// Clear out our message buffer\r\n\t\tthis.clearBuffer();\r\n\r\n\t\t// Clean up this event\r\n\t\tthis.onStartEvent.clear();\r\n\r\n\t\t// Trigger the disconnect event\r\n\t\tthis.changeState(this.state, 'disconnected');\r\n\t\tthis.onDisconnectEvent.clear();\r\n\t}\r\n\r\n\tmonitorKeepAlive() {\r\n\t\t// If we haven't initiated the keep alive timeouts then we need to\r\n\t\tif(!this.keepAliveData.monitoring) {\r\n\t\t\tthis.keepAliveData.monitoring = true;\r\n\r\n\t\t\tthis.markLastMessage();\r\n\r\n\t\t\t// Save the function so we can unbind it on stop\r\n\t\t\tthis.keepAliveData.reconnectKeepAliveUpdate = () => {\r\n\t\t\t\t// Mark a new message so that keep alive doesn't time out connections\r\n\t\t\t\tthis.markLastMessage();\r\n\t\t\t};\r\n\r\n\t\t\t// Update Keep alive on reconnect\r\n\t\t\tthis.onReconnectEvent.sub(this.keepAliveData.reconnectKeepAliveUpdate);\r\n\r\n\t\t\tlog(`Now monitoring keep alive with a warning timeout of ${this.keepAliveData.timeoutWarning}, keep alive timeout of ${this.keepAliveData.timeout} and disconnecting timeout of ${this.disconnectTimeout}`);\r\n\t\t} else {\r\n\t\t\tlog(\"Tried to monitor keep alive but it's already being monitored.\");\r\n\t\t}\r\n\t}\r\n\r\n\tstopMonitoringKeepAlive() {\r\n\t\t// Only attempt to stop the keep alive monitoring if its being monitored\r\n\t\tif(this.keepAliveData.monitoring) {\r\n\t\t\t// Stop monitoring\r\n\t\t\tthis.keepAliveData.monitoring = false;\r\n\r\n\t\t\t// Remove the updateKeepAlive function from the reconnect event\r\n\t\t\tthis.onReconnectEvent.clear();\r\n\r\n\t\t\t// Clear all the keep alive data\r\n\t\t\tthis.keepAliveData = {};\r\n\t\t\tlog(\"Stopping the monitoring of the keep alive.\");\r\n\t\t}\r\n\t}\r\n\r\n\treconnect() {\r\n\t\t// We should only set a reconnectTimeout if we are currently connected and a reconnectTimeout isn't already set.\r\n\t\tif((this.state === 'connected' || this.state === 'reconnecting') && !this.reconnectTimeout) {\r\n\t\t\t// Need to verify before the setTimeout occurs because an application sleep could occur during the setTimeout duration.\r\n\t\t\tif(!this.verifyLastActive())\r\n\t\t\t\treturn;\r\n\r\n\t\t\tthis.reconnectTimeout = window.setTimeout(() => {\r\n\t\t\t\tif(!this.verifyLastActive())\r\n\t\t\t\t\treturn;\r\n\r\n\t\t\t\tthis.stop();\r\n\r\n\t\t\t\tif(this.ensureReconnectingState()) {\r\n\t\t\t\t\tlog(\"webSockets reconnecting.\");\r\n\t\t\t\t\tthis.start(true);\r\n\t\t\t\t}\r\n\t\t\t}, 2000);\r\n\t\t}\r\n\t}\r\n\r\n\tensureReconnectingState() {\r\n\t\tif(this.changeState('connected', 'reconnecting') === true)\r\n\t\t\tthis.onReconnectingEvent.dispatch();\r\n\t\treturn this.state === 'reconnecting';\r\n\t}\r\n\r\n\tclearReconnectTimeout() {\r\n\t\tif(this.reconnectTimeout) {\r\n\t\t\twindow.clearTimeout(this.reconnectTimeout);\r\n\t\t\tthis.reconnectTimeout = 0;\r\n\t\t}\r\n\t}\r\n\r\n\tsend(data: any) {\r\n\t\tif(this.state === 'disconnected') {\r\n\t\t\t// Connection hasn't been started yet\r\n\t\t\tthrow new Error('SignalR: Connection must be started before data can be sent. Call .start() before .send()');\r\n\t\t}\r\n\r\n\t\tif(this.state === 'connecting') {\r\n\t\t\t// Connection hasn't been started yet\r\n\t\t\tthrow new Error('SignalR: Connection has not been fully initialized. Use .start().done() or .start().fail() to run logic after the connection has started.');\r\n\t\t}\r\n\r\n\t\tconst payload = stringifySend(data);\r\n\r\n\t\ttry {\r\n\t\t\tthis.socket?.send(payload);\r\n\t\t} catch(ex) {\r\n\t\t\tthis.onErrorEvent.dispatch('The Web Socket transport is in an invalid state, transitioning into reconnecting.');\r\n\t\t}\r\n\t}\r\n\r\n\tstartHeartbeat() {\r\n\t\tthis.lastActiveAt = new Date().getTime();\r\n\t\tthis.beat();\r\n\t}\r\n\r\n\tmarkLastMessage() {\r\n\t\tthis.lastMessageAt = new Date().getTime();\r\n\t\tthis.lastActiveAt = this.lastMessageAt;\r\n\t}\r\n\r\n\tmarkActive() {\r\n\t\tif(this.verifyLastActive()) {\r\n\t\t\tthis.lastActiveAt = new Date().getTime();\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tverifyLastActive() {\r\n\t\t// If there is no keep alive configured, we cannot assume that timer callbacks will\r\n\t\t// run frequently enough to keep lastActiveAt updated.\r\n\t\t// https://github.com/SignalR/SignalR/issues/4536\r\n\t\tif(!this.keepAliveData.activated ||\r\n\t\t\tnew Date().getTime() - this.lastActiveAt < this.reconnectWindow) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tconst message = `The client has been inactive since ${new Date(this.lastActiveAt)} and it has exceeded the inactivity timeout of ${this.reconnectWindow} ms. Stopping the connection.`;\r\n\t\tlog(message);\r\n\r\n\t\tthis.onErrorEvent.dispatch(message);\r\n\t\tthis.stop(false);\r\n\t\treturn false;\r\n\t}\r\n\r\n\tbeat() {\r\n\t\tif(this.keepAliveData.monitoring)\r\n\t\t\tthis.checkIfAlive();\r\n\r\n\t\t// Ensure that we successfully marked active before continuing the heartbeat.\r\n\t\tif(this.markActive()) {\r\n\t\t\tthis.beatHandle = window.setTimeout(() => {\r\n\t\t\t\tthis.beat();\r\n\t\t\t}, this.beatInterval);\r\n\t\t}\r\n\t}\r\n\r\n\tcheckIfAlive() {\r\n\t\t// Only check if we're connected\r\n\t\tif(this.state === 'connected') {\r\n\t\t\tconst timeElapsed = new Date().getTime() - this.lastMessageAt;\r\n\r\n\t\t\t// Check if the keep alive has completely timed out\r\n\t\t\tif(timeElapsed >= this.keepAliveData.timeout!) {\r\n\t\t\t\tlog(\"Keep alive timed out. Notifying transport that connection has been lost.\");\r\n\t\t\t\tthis.reconnect();\r\n\t\t\t} else if(timeElapsed >= this.keepAliveData.timeoutWarning!) {\r\n\t\t\t\t// This is to assure that the user only gets a single warning\r\n\t\t\t\tif(!this.keepAliveData.userNotified) {\r\n\t\t\t\t\tlog(\"Keep alive has been missed, connection may be dead/slow.\");\r\n\t\t\t\t\tthis.onConnectionSlowEvent.dispatch();\r\n\t\t\t\t\tthis.keepAliveData.userNotified = true;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tthis.keepAliveData.userNotified = false;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tconfigureStopReconnectingTimeout() {\r\n\t\tlet stopReconnectingTimeout: number;\r\n\r\n\t\t// Check if this connection has already been configured to stop reconnecting after a specified timeout.\r\n\t\t// Without this check if a connection is stopped then started events will be bound multiple times.\r\n\t\tif(!this.configuredStopReconnectingTimeout) {\r\n\t\t\tconst onReconnectTimeout = () => {\r\n\t\t\t\tconst message = `Couldn't reconnect within the configured timeout of ${this.disconnectTimeout} ms, disconnecting.`;\r\n\t\t\t\tlog(message);\r\n\t\t\t\tthis.onErrorEvent.dispatch(message);\r\n\t\t\t\tthis.stop(false);\r\n\t\t\t};\r\n\r\n\t\t\tthis.onReconnecting.sub(() => {\r\n\t\t\t\t// Guard against state changing in a previous user defined even handler\r\n\t\t\t\tif(this.state === 'reconnecting')\r\n\t\t\t\t\tstopReconnectingTimeout = window.setTimeout(() => { onReconnectTimeout(); }, this.disconnectTimeout);\r\n\t\t\t});\r\n\r\n\t\t\tthis.onStateChanged.sub((data) => {\r\n\t\t\t\tif(data.oldState === 'reconnecting') {\r\n\t\t\t\t\t// Clear the pending reconnect timeout check\r\n\t\t\t\t\twindow.clearTimeout(stopReconnectingTimeout);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.configuredStopReconnectingTimeout = true;\r\n\t\t}\r\n\t}\r\n\r\n\tasync negotiate(url: string, cancelToken: CancelTokenSource | undefined) {\r\n\t\tconst response = await get(this.prepareQueryString(`${url}/negotiate`), cancelToken?.token, {\r\n\t\t\tskipAuthorization: true,\r\n\t\t});\r\n\r\n\t\tif(response.isError)\r\n\t\t\tthrow `Error during negotiation request: ${response.error}`;\r\n\r\n\t\treturn response.payload;\r\n\t}\r\n\r\n\tisDisconnecting() { return this.state === 'disconnected' }\r\n}\r\n\r\nconst LOGGING = true;\r\nfunction log(msg: string, logging: boolean = LOGGING) {\r\n\tif(logging === false)\r\n\t\treturn;\r\n\r\n\tif(typeof (window.console) === \"undefined\")\r\n\treturn;\r\n\r\n\tconst m = `[${new Date().toTimeString()}] SignalR: ${msg}`;\r\n\tif(window.console.debug) {\r\n\t\twindow.console.debug(m);\r\n\t} else if(window.console.log) {\r\n\t\t// window.console.log(m);\r\n\t}\r\n};\r\nfunction maximizePersistentResponse(minPersistentResponse: ResponseDataMin): ResponseData {\r\n\treturn {\r\n\t\tMessageId: minPersistentResponse.C,\r\n\t\tMessages: minPersistentResponse.M,\r\n\t\tInitialized: typeof (minPersistentResponse.S) !== \"undefined\" ? true : false,\r\n\t\tShouldReconnect: typeof (minPersistentResponse.T) !== \"undefined\" ? true : false,\r\n\t\tGroupsToken: minPersistentResponse.G,\r\n\t\tError: minPersistentResponse.E,\r\n\t};\r\n}\r\n\r\nexport const wsClient = new SignalR('/api/secured/ws');\r\n","export function sort(array: Array, compareFn?: (a: T, b: T) => number): Array {\n // tslint:disable-next-line: no-array-mutation\n return [...array].sort(compareFn);\n}\n","export function throttle void>(func: T, threshhold: number = 250, scope?: any): T {\n let last: number, deferTimer: number;\n return function (this: any) {\n const context = scope || this;\n\n const now = Date.now();\n const args = Array.from(arguments);\n if(last && now < last + threshhold) {\n // hold on to it\n clearTimeout(deferTimer);\n deferTimer = window.setTimeout(function () {\n last = now;\n func.apply(context, args);\n }, threshhold);\n } else {\n last = now;\n func.apply(context, args);\n }\n } as T;\n}\n","export const states = [\n\t{ value: \"AL\", name: \"Alabama\" },\n\t{ value: \"AK\", name: \"Alaska\" },\n\t{ value: \"AZ\", name: \"Arizona\" },\n\t{ value: \"AR\", name: \"Arkansas\" },\n\t{ value: \"CA\", name: \"California\" },\n\t{ value: \"CO\", name: \"Colorado\" },\n\t{ value: \"CT\", name: \"Connecticut\" },\n\t{ value: \"DE\", name: \"Delaware\" },\n\t{ value: \"DC\", name: \"District Of Columbia\" },\n\t{ value: \"FL\", name: \"Florida\" },\n\t{ value: \"GA\", name: \"Georgia\" },\n\t{ value: \"HI\", name: \"Hawaii\" },\n\t{ value: \"ID\", name: \"Idaho\" },\n\t{ value: \"IL\", name: \"Illinois\" },\n\t{ value: \"IN\", name: \"Indiana\" },\n\t{ value: \"IA\", name: \"Iowa\" },\n\t{ value: \"KS\", name: \"Kansas\" },\n\t{ value: \"KY\", name: \"Kentucky\" },\n\t{ value: \"LA\", name: \"Louisiana\" },\n\t{ value: \"ME\", name: \"Maine\" },\n\t{ value: \"MD\", name: \"Maryland\" },\n\t{ value: \"MA\", name: \"Massachusetts\" },\n\t{ value: \"MI\", name: \"Michigan\" },\n\t{ value: \"MN\", name: \"Minnesota\" },\n\t{ value: \"MS\", name: \"Mississippi\" },\n\t{ value: \"MO\", name: \"Missouri\" },\n\t{ value: \"MT\", name: \"Montana\" },\n\t{ value: \"NE\", name: \"Nebraska\" },\n\t{ value: \"NV\", name: \"Nevada\" },\n\t{ value: \"NH\", name: \"New Hampshire\" },\n\t{ value: \"NJ\", name: \"New Jersey\" },\n\t{ value: \"NM\", name: \"New Mexico\" },\n\t{ value: \"NY\", name: \"New York\" },\n\t{ value: \"NC\", name: \"North Carolina\" },\n\t{ value: \"ND\", name: \"North Dakota\" },\n\t{ value: \"OH\", name: \"Ohio\" },\n\t{ value: \"OK\", name: \"Oklahoma\" },\n\t{ value: \"OR\", name: \"Oregon\" },\n\t{ value: \"PA\", name: \"Pennsylvania\" },\n\t{ value: \"RI\", name: \"Rhode Island\" },\n\t{ value: \"SC\", name: \"South Carolina\" },\n\t{ value: \"SD\", name: \"South Dakota\" },\n\t{ value: \"TN\", name: \"Tennessee\" },\n\t{ value: \"TX\", name: \"Texas\" },\n\t{ value: \"UT\", name: \"Utah\" },\n\t{ value: \"VT\", name: \"Vermont\" },\n\t{ value: \"VA\", name: \"Virginia\" },\n\t{ value: \"WA\", name: \"Washington\" },\n\t{ value: \"WV\", name: \"West Virginia\" },\n\t{ value: \"WI\", name: \"Wisconsin\" },\n\t{ value: \"WY\", name: \"Wyoming\" }\n];\n\nexport const territories = [\n\t{ value: \"AS\", name: \"American Samoa\" },\n\t{ value: \"GU\", name: \"Guam\" },\n\t{ value: \"MH\", name: \"Marshall Islands\" },\n\t{ value: \"FM\", name: \"Micronesia\" },\n\t{ value: \"MP\", name: \"Northern Marianas\" },\n\t{ value: \"PW\", name: \"Palau\" },\n\t{ value: \"PR\", name: \"Puerto Rico\" },\n\t{ value: \"VI\", name: \"Virgin Islands\" }\n];\n","import * as React from 'react';\nimport { useDebounce } from 'use-debounce';\nimport Axios, { CancelTokenSource } from 'axios';\nimport { ajax, useEffectDeep } from '../lib';\nimport { isDevelopment } from './isDevelopment';\n\ninterface IApiConfig {\n url: string | ((state: P) => string);\n method?: 'GET' | 'POST';\n debounce?: number;\n body: P;\n format?: (state: P) => any;\n valid?: (state: P) => boolean;\n onComplete?: (result: ResultState) => void;\n}\ntype ResultState = {\n working: boolean;\n error: string | undefined;\n results: Partial,\n};\ntype Dispatch = (value: A, immediate?: boolean) => void;\n\nexport function useApi(config: IApiConfig): [ResultState, typeof config.body, Dispatch>] {\n\n // Track requestPayload with deferred execution\n const [requestPayload, setRequestPayload] = React.useState(config.body);\n const __execute = (requestPayload as any).__execute;\n const [debouncedPayload] = useDebounce(requestPayload, __execute ? 0 : (config.debounce || 0));\n\n // Internal state used for tracking API progress and results\n const [state, setResultState] = React.useState({\n working: !!requestPayload,\n error: undefined as string | undefined,\n results: {} as Partial,\n });\n\n let id = '';\n if(isDevelopment) {\n try {\n const stackLine = new Error().stack?.split('\\n')[2];\n const match = /at\\s+(\\w+)/g.exec(stackLine || '');\n id = match?.[1] || '';\n } catch { }\n }\n\n const cancelTokenRef = React.useRef();\n useEffectDeep(\n () => {\n // dbg('useApi effect run', id, 'teal', JSON.stringify(debouncedPayload));\n if(cancelTokenRef.current) {\n cancelTokenRef.current.cancel();\n }\n cancelTokenRef.current = Axios.CancelToken.source();\n\n if(requestPayload) {\n // Payload is not valid so don't call the API\n if(config.valid && !config.valid(requestPayload)) {\n return;\n }\n\n // Clear state before working\n if(!state.working || JSON.stringify(state.results) !== '{}')\n setResultState({ working: true, error: undefined, results: {} });\n\n // Call the API\n const url = typeof (config.url) === 'string' ? config.url : config.url(requestPayload);\n ajax(url, true, config.format ? config.format(requestPayload) : requestPayload, {\n method: config.method || 'GET',\n cancelToken: cancelTokenRef.current.token,\n }).then(response => {\n if(response.isError === true) {\n setResultState({ working: false, error: response.error, results: {} });\n config.onComplete && config.onComplete({ working: false, error: response.error, results: {} });\n return;\n }\n\n setResultState({ working: false, error: undefined, results: response.payload });\n config.onComplete && config.onComplete({ working: false, error: undefined, results: response.payload });\n }).catch(e => {\n if(Axios.isCancel(e)) {\n return;\n }\n setResultState({ working: false, error: e, results: {} });\n config.onComplete && config.onComplete({ working: false, error: e, results: {} });\n });\n }\n\n return () => {\n if(cancelTokenRef.current) {\n cancelTokenRef.current.cancel('Canceled because of component unmounted or debounce data changed');\n }\n };\n },\n [debouncedPayload],\n );\n\n return [state, requestPayload, (p: React.SetStateAction

    , executeNow?: boolean) => {\n setRequestPayload(s => {\n const newState = typeof p === 'object' ? p : (p as any)(s);\n return Object.assign(newState, { __execute: executeNow });\n });\n }];\n}\n","import * as React from 'react';\nimport equals from 'fast-deep-equal';\n\nexport function useEffectDeep(fn: React.EffectCallback, deps: React.DependencyList) {\n const isFirst = React.useRef(true);\n const prevDeps = React.useRef(deps);\n\n React.useEffect(() => {\n const isSame = prevDeps.current.every((obj, index) => equals(obj, deps[index]));\n\n if(isFirst.current || !isSame) {\n fn();\n }\n\n isFirst.current = false;\n prevDeps.current = deps;\n }, deps);\n}\n","import * as React from 'react';\nimport { ui, HeaderLink } from 'web-shared/store';\n\nexport function useHeaderLinks(links: HeaderLink[]) {\n React.useEffect(() => {\n ui.setHeaderLinks({ links, hideLogin: false });\n }, []);\n}\n","import * as React from 'react';\nexport function useInterval(callback: () => void, delay: number | null) {\n\tconst savedCallback = React.useRef<() => void | Promise>();\n\tconst [count, setCount] = React.useState(0);\n\n\tReact.useEffect(() => {\n\t\t// Store the most recent callback fn\n\t\tsavedCallback.current = callback;\n\t});\n\n\tReact.useEffect(() => {\n\t\tasync function tick() {\n\t\t\t// Execute the callback and wait for return;\n\t\t\tawait savedCallback.current();\n\n\t\t\t// Increment the counter, which causes rerenders\n\t\t\tif(savedCallback.current) {\n\t\t\t\tsetCount(count + 1);\n\t\t\t}\n\t\t}\n\n\t\tconst timer = window.setTimeout(tick, delay);\n\t\treturn () => {\n\t\t\tsavedCallback.current = undefined;\n\t\t\ttimer && clearTimeout(timer);\n\t\t};\n\t}, [delay, count]);\n}\n","import { useState, useEffect } from 'react';\n\nconst breakpoints = {\n xxs: 0,\n xs: 600,\n sm: 768,\n md: 992,\n lg: 1200,\n}\n\nexport type Breakpoints = typeof breakpoints;\nexport type MediaSize = keyof Breakpoints;\n\nfunction getMediaQueries(bps: Breakpoints) {\n const sizes = Object.keys(bps) as MediaSize[];\n const bpArray = sizes\n .sort((a, b) => bps[a] - bps[b])\n .map(bp => ({ name: bp, min: bps[bp] }));\n\n return bpArray.map((bp, i) => {\n const query = [\n i === 0 ? '' : `(min-width: ${bp.min}px)`,\n i === bpArray.length - 1 ? '' : `(max-width: ${bpArray[i + 1].min - 1}px)`\n ].filter(q => q).join(' and ');\n return { name: bp.name, query };\n });\n}\n\nconst mediaQueries = getMediaQueries(breakpoints);\n\nexport function useMedia() {\n const [state, setState] = useState('xs' as MediaSize);\n\n useEffect(\n () => {\n // Configure all media query breakpoints\n const mediaQueryLists = mediaQueries.map(q => ({\n name: q.name,\n mediaQueryList: window.matchMedia(q.query),\n }));\n\n //const mediaQueryList = window.matchMedia(query);\n let active = true;\n\n // Extract state\n function getState() {\n return mediaQueryLists.reduce((newState, bp) => {\n return bp.mediaQueryList.matches ? bp.name : newState;\n }, state);\n }\n\n // Define the listener update function\n const listener = () => {\n if(!active) {\n return;\n }\n\n setState(getState());\n };\n\n // Attach listeners\n mediaQueryLists.forEach(q => q.mediaQueryList.addListener(listener))\n setState(getState());\n\n // Unmount\n return () => {\n active = false;\n mediaQueryLists.forEach(q => q.mediaQueryList.removeListener(listener));\n };\n },\n []\n );\n\n return state;\n}","import * as React from 'react';\nimport { throttle } from 'web-shared/lib';\n\nexport const useWindowScrollPosition = (throttleMs: number = 100) => {\n const [scroll, setScroll] = React.useState({\n x: window.pageXOffset,\n y: window.pageYOffset,\n });\n\n const handle = throttle(() => {\n setScroll({\n x: window.pageXOffset,\n y: window.pageYOffset,\n });\n }, throttleMs);\n\n React.useEffect(() => {\n window.addEventListener('scroll', handle);\n\n return () => {\n window.removeEventListener('scroll', handle);\n };\n }, []);\n\n return scroll;\n};\n\nexport const useWindowScrolledTo = (yOffset: number) => {\n const [state, setState] = React.useState(false);\n\n React.useEffect(() => {\n const handle = throttle(() => {\n const isScrolled = window.pageYOffset >= yOffset;\n if(isScrolled !== state) {\n setState(isScrolled);\n }\n }, 100);\n\n window.addEventListener('scroll', handle);\n return () => window.removeEventListener('scroll', handle);\n }, [state]);\n\n return state;\n};\n","import React from 'react';\nimport { throttle } from 'web-shared/lib';\n\nconst events = new Set<() => void>();\nconst onResize = () => events.forEach(fn => fn());\n\nexport const useWindowSize = (options: { throttleMs?: number } = {}) => {\n const { throttleMs = 100 } = options;\n const [size, setSize] = React.useState({\n width: window.innerWidth,\n height: window.innerHeight,\n });\n\n const handle = throttle(() => {\n setSize({\n width: window.innerWidth,\n height: window.innerHeight,\n });\n }, throttleMs);\n\n React.useEffect(() => {\n if(events.size === 0) {\n window.addEventListener('resize', onResize, true);\n }\n\n events.add(handle);\n\n return () => {\n events.delete(handle);\n\n if(events.size === 0) {\n window.removeEventListener('resize', onResize, true);\n }\n };\n }, []);\n\n return size;\n};\n","export function validatePasswordComplexity(password: string = '') {\n if(password.length < 8) {\n return 'Password must be at least 8 characters';\n }\n\n return '';\n}\n","import styled from 'styled-components';\n\nexport const StyledInstructions = styled.div`margin-bottom: 1em; font-style: italic; color: #555; font-size: 1.2em; line-height: 1.1;`;\n","import * as React from 'react';\r\nimport { Link, useHistory } from 'react-router-dom';\r\nimport { useFormState } from 'react-use-form-state';\r\n\r\nimport { Spinner, Section, SectionHeader, Button } from 'web-shared/components';\r\nimport { auth } from 'web-shared/store';\r\nimport { StyledInstructions } from './instructions';\r\n\r\ninterface FormFields {\r\n userName: string;\r\n password: string;\r\n remember: boolean;\r\n}\r\ninterface Props {\r\n title: string;\r\n skipRedirect?: boolean;\r\n showOnlineBankingNote?: boolean;\r\n}\r\nexport const LoginForm: React.FC = ({ title, skipRedirect, showOnlineBankingNote }) => {\r\n const history = useHistory();\r\n\r\n // See if the remember option was checked\r\n let remember_default = false;\r\n try {\r\n remember_default = localStorage.getItem('rememberLogin') === 'true';\r\n } catch(err) { }\r\n\r\n const [state, setState] = React.useState({\r\n busy: false,\r\n error: '',\r\n });\r\n\r\n const [formState, { checkbox, email, password, label }] = useFormState({\r\n remember: remember_default,\r\n }, {\r\n withIds: true,\r\n onBlur: e => e.target.classList.add('modified'),\r\n });\r\n\r\n async function handleSubmit(e: React.FormEvent) {\r\n e.preventDefault();\r\n const { userName, password, remember } = formState.values;\r\n\r\n setState(() => ({ busy: true, error: '' }));\r\n\r\n try {\r\n const response = await auth.login(userName, password, remember);\r\n\r\n if(response.isError) {\r\n setState({ busy: false, error: response.errorMessage });\r\n if(response.expiredUrl) {\r\n history.replace(response.expiredUrl);\r\n }\r\n return;\r\n }\r\n\r\n if(!skipRedirect) {\r\n setState({ busy: false, error: '' });\r\n\r\n // Redirect\r\n const { from, search } = history.location.state || {};\r\n if(search)\r\n from.search = search;\r\n history.replace(from || '/');\r\n }\r\n } catch(ex) {\r\n const error = 'Unable to contact the login server.';\r\n setState({ busy: false, error: error });\r\n }\r\n }\r\n\r\n return

    \r\n \r\n\r\n
    \r\n
    \r\n
    \r\n {title || 'Welcome Back!'}\r\n \r\n Please enter your email address and password below. If you can't remember your password, select the \"I forgot my password\" button below.\r\n \r\n {showOnlineBankingNote ? \r\n (please note: this is not your online banking login and password)\r\n : null}\r\n
    \r\n\r\n {state.error ?
    \r\n
    {state.error}
    \r\n
    : null}\r\n\r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n\r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    ;\r\n};\r\n","import * as React from 'react';\nimport { RouteChildrenProps } from 'react-router-dom';\n\nimport { auth } from 'web-shared/store';\n\nconst LogoffPage: React.FC = () => {\n React.useEffect(() => {\n if(!history) {\n throw new Error('Router component not found!');\n }\n\n auth.logoff();\n\n // Return to the previous page\n history.back();\n });\n\n return null;\n};\n\nexport default LogoffPage;\n","import * as React from 'react';\nimport { RouteChildrenProps } from 'react-router-dom';\n\nimport { Section, NonIdealState } from 'web-shared/components';\n\nconst NotFoundPage: React.FC = () => {\n return
    \n \n\n \n
    ;\n};\n\nexport default NotFoundPage;\n","import {\r\n clearLoginData, getTokenStorage, getToken, getLocalStorage, postForm,\r\n RxStore, clearBranchLoginData, getBranchUserToken, LoginData, setBranchLoginData, setLoginData, getLoginData, gaLogin,\r\n} from 'web-shared/lib';\r\nimport { Bugsnag } from '@bugsnag/js';\r\n\r\nexport type AuthCallback = (isAuthenticated: boolean) => void;\r\nexport type TokenResponseError = {\r\n error: string;\r\n error_description: string;\r\n error_uri?: string;\r\n};\r\nexport interface LoginErrorResponse {\r\n isError: true;\r\n errorMessage: string;\r\n expiredUrl?: string;\r\n}\r\n\r\ntype AuthState = {\r\n admin: boolean;\r\n globalAdmin: boolean;\r\n name: string;\r\n userId: number;\r\n clientId: number;\r\n userName: string;\r\n expires?: string;\r\n token?: string;\r\n emailVerified: boolean;\r\n lenderAssisted?: boolean;\r\n\r\n branchUser: string;\r\n branchLoginModalOpen: boolean;\r\n ui: {\r\n actions: {};\r\n };\r\n};\r\n\r\ninterface UpdateUserParams { email?: string; name?: string; verified?: boolean; }\r\n\r\nclass AuthService extends RxStore {\r\n private onAuthChangeCallback?: AuthCallback;\r\n private bugsnagClient?: Bugsnag.Client;\r\n\r\n constructor(initialState: AuthState) {\r\n super(initialState, 'Auth');\r\n }\r\n initialize(bugsnagClient: Bugsnag.Client | undefined, onAuthChange?: AuthCallback) {\r\n this.bugsnagClient = bugsnagClient;\r\n this.onAuthChangeCallback = onAuthChange;\r\n\r\n // Check for user auth\r\n this.update(s => {\r\n const loginData = getLoginData();\r\n if(getToken(loginData)) {\r\n const name = loginData.name;\r\n const userName = loginData.userName;\r\n const userId = loginData.id;\r\n\r\n s.name = name || '';\r\n s.userName = userName || '';\r\n s.userId = parseInt(userId || '0', 10);\r\n s.clientId = parseInt(loginData.ClientId, 10);\r\n s.admin = loginData.Admin === 'true';\r\n s.globalAdmin = loginData.GlobalAdmin === 'true';\r\n s.expires = loginData[\".expires\"];\r\n s.token = loginData.access_token;\r\n s.lenderAssisted = loginData.LenderAssisted === 'true';\r\n\r\n if(this.bugsnagClient) {\r\n this.bugsnagClient.user = {\r\n id: userId,\r\n name: name,\r\n email: userName,\r\n };\r\n }\r\n\r\n this.onAuthChangeCallback && this.onAuthChangeCallback(true);\r\n }\r\n\r\n // Check for branch auth\r\n if(getBranchUserToken()) {\r\n const storage = getLocalStorage();\r\n s.branchUser = storage.getItem('branchUser') || '';\r\n }\r\n }, 'initialize');\r\n }\r\n\r\n async login(userName: string, password: string, remember: boolean): Promise {\r\n // Remove any current auth\r\n clearLoginData();\r\n\r\n // Contact the token server\r\n const result = await postForm('/api/token', {\r\n grant_type: 'password',\r\n username: userName,\r\n password: password,\r\n });\r\n\r\n if(result.isError === true) {\r\n clearLoginData();\r\n return {\r\n isError: true,\r\n errorMessage: result.payload.error_description,\r\n expiredUrl: result.payload.error_uri,\r\n };\r\n }\r\n\r\n const { payload } = result;\r\n\r\n // Store results in local/session storage\r\n setLoginData(payload, remember);\r\n\r\n\r\n // Mark this client as having logged in successfully\r\n localStorage.setItem('successful-login', 'true');\r\n\t\tgaLogin();\r\n\r\n this.update(s => {\r\n s.name = payload.name;\r\n s.userName = userName;\r\n s.userId = parseInt(payload.id, 10);\r\n s.clientId = parseInt(payload.ClientId, 10);\r\n s.admin = payload.Admin === 'true';\r\n s.globalAdmin = payload.GlobalAdmin === 'true';\r\n s.expires = payload[\".expires\"];\r\n s.token = payload.access_token;\r\n s.lenderAssisted = payload.LenderAssisted === 'true';\r\n }, 'login');\r\n\r\n // Set APM user details\r\n if(this.bugsnagClient) {\r\n this.bugsnagClient.user = {\r\n id: payload.id,\r\n name: payload.name,\r\n email: userName,\r\n };\r\n }\r\n\r\n this.onAuthChangeCallback && this.onAuthChangeCallback(true);\r\n\r\n return payload;\r\n }\r\n logoff() {\r\n this.update(s => {\r\n s.name = '';\r\n s.userName = '';\r\n s.userId = 0;\r\n s.clientId = 0;\r\n s.admin = false;\r\n s.globalAdmin = false;\r\n s.expires = undefined;\r\n s.token = undefined;\r\n s.lenderAssisted = undefined;\r\n }, 'logoff');\r\n\r\n this.onAuthChangeCallback && this.onAuthChangeCallback(false);\r\n\r\n // Remove any current token\r\n clearLoginData();\r\n }\r\n\r\n async branchLogin(userName: string, password: string) {\r\n // Contact the token server\r\n const result = await postForm('/api/token?type=signup', {\r\n grant_type: 'password',\r\n username: userName,\r\n password: password,\r\n });\r\n\r\n if(result.isError === true) {\r\n clearBranchLoginData();\r\n return {\r\n isError: true,\r\n errorMessage: result.payload.error_description,\r\n expiredUrl: result.payload.error_uri,\r\n };\r\n }\r\n\r\n // Set login info\r\n setBranchLoginData(result.payload);\r\n\r\n // Update application state\r\n this.update(s => { s.branchUser = userName; }, 'branchLogin');\r\n\r\n return { error: '' };\r\n }\r\n branchLogoff() {\r\n this.update(s => {\r\n s.branchLoginModalOpen = false;\r\n s.branchUser = '';\r\n }, 'branchLogoff');\r\n\r\n clearBranchLoginData();\r\n }\r\n\r\n toggleBranchLoginModal(visible: boolean) {\r\n this.update(s => { s.branchLoginModalOpen = visible; }, 'toggleBranchLoginModal');\r\n }\r\n\r\n updateUser({ email, name }: UpdateUserParams) {\r\n const tokenStorage = getTokenStorage();\r\n this.update(s => {\r\n if(email !== undefined) {\r\n tokenStorage.setItem('userName', email);\r\n s.userName = email;\r\n }\r\n if(name !== undefined) {\r\n tokenStorage.setItem('name', name);\r\n s.name = name;\r\n }\r\n }, 'updateUser');\r\n }\r\n}\r\nexport const auth = new AuthService({\r\n admin: false,\r\n globalAdmin: false,\r\n name: '',\r\n userId: 0,\r\n clientId: 0,\r\n userName: '',\r\n emailVerified: false,\r\n\r\n branchUser: '',\r\n branchLoginModalOpen: false,\r\n ui: {\r\n actions: {},\r\n },\r\n});\r\n","import { RxStore } from 'web-shared/lib';\n\nexport interface HeaderLink {\n name: string;\n href: string;\n isHidden?: boolean;\n}\n\nexport interface UIState {\n name: string;\n pageTitle: string;\n\n hideLoginLinks: boolean;\n headerLinks: HeaderLink[];\n}\n\nclass UIService extends RxStore {\n constructor(initialState: UIState) {\n super(initialState, 'UI');\n }\n initialize(appName: string) {\n this.update(s => { s.name = appName; });\n }\n setPageTitle(title: string) {\n this.update(s => { s.pageTitle = title; });\n }\n setHeaderLinks(p: { links: HeaderLink[]; hideLogin: boolean }) {\n this.setState({\n hideLoginLinks: p.hideLogin,\n headerLinks: p.links,\n });\n }\n}\n\nexport const ui = new UIService({\n name: '',\n pageTitle: '',\n\n hideLoginLinks: false,\n headerLinks: [] as HeaderLink[],\n});\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tresult = fn();\n\t\t}\n\t}\n\treturn result;\n};","var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"web-frontend:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\t;\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","__webpack_require__.amdD = function () {\n\tthrow new Error('define cannot be used indirect');\n};","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \".\" + {\"4\":\"ae3226fa0ac3dd831057\",\"20\":\"c52ebb8a9f5f2dd0165e\",\"29\":\"f277c54aefae56a04139\",\"46\":\"750876e3b8cfd0f56506\",\"47\":\"0c51110261deadbd4a86\",\"51\":\"8f2e041bb2f7c66e3f34\",\"100\":\"e3665bee1c3d87c00c52\",\"107\":\"6dff8aa56e480918eb9c\",\"120\":\"ec08877935232f636701\",\"155\":\"f0011e03082d4235c449\",\"186\":\"db1b10d82b49706bf685\",\"199\":\"3d7bd882fc5dc1bac46e\",\"205\":\"310b345dca61df20bfea\",\"209\":\"df3cf6af0e4a58e16150\",\"271\":\"8b4f3df7213c940cf15e\",\"272\":\"7c0fa6eef6a282daf298\",\"336\":\"3792f5122747186c3371\",\"344\":\"673b0f866c9993931ca4\",\"351\":\"66ee8fcbd4f6dbb15eb3\",\"409\":\"780105b52e8e6fbf71db\",\"416\":\"974c56980f3fccf61604\",\"479\":\"09a806121389505a955d\",\"534\":\"bea74c083c51be3eb656\",\"542\":\"9dc817641f9e9b124f7b\",\"549\":\"35a6b77d7950ee19462b\",\"635\":\"2c6f61f7318717e51770\",\"643\":\"a6beec15a896bc80cff5\",\"661\":\"d4af407e9d460bd98a01\",\"667\":\"73951486b6457a6aa157\",\"698\":\"a9a07a898bd42e0cd8d8\",\"728\":\"6a89ba62b76295897f61\",\"784\":\"0f74388de5cc2c6be2ba\",\"786\":\"8f666b0dc7a2664737e1\",\"844\":\"f914b690554cb63e706a\",\"890\":\"29d53edfea9c6256327d\"}[chunkId] + \".js\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.hmd = (module) => {\n\tmodule = Object.create(module);\n\tif (!module.children) module.children = [];\n\tObject.defineProperty(module, 'exports', {\n\t\tenumerable: true,\n\t\tset: () => {\n\t\t\tthrow new Error('ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: ' + module.id);\n\t\t}\n\t});\n\treturn module;\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.p = \"/build/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t143: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tfor(moduleId in moreModules) {\n\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t}\n\t}\n\tif(runtime) runtime(__webpack_require__);\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkIds[i]] = 0;\n\t}\n\t__webpack_require__.O();\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkweb_frontend\"] = self[\"webpackChunkweb_frontend\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [216], () => (__webpack_require__(96848)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"sourceRoot":""}