From 81eb6407c709e43a63219b1fd189904849014ee4 Mon Sep 17 00:00:00 2001 From: Davide Segullo <davidesegullo@gmail.com> Date: Wed, 28 Feb 2024 02:00:43 +0100 Subject: [PATCH] feat: :heavy_plus_sign: add export-to-csv dep feat: :sparkles: add download icon feat: :sparkles: add navigation menu slots feat: :sparkles: add csv utility feat: :label: improve dropdown menu types refactor: :recycle: refactor Output component refactored Output component to export formatting utils. feat: :sparkles: add ExportHistoryDropdown component feat: :sparkles: add export inside History page added ExportHistoryDropdown component inside History page layout. feat: :children_crossing: disable csv export on empty data feat: :chart_with_upwards_trend: add export history analytics fix: :bug: fix export history download CT-525 Add liquidation position line to charts (#331) * liquidation line * falsy val Add transfer button to AccountInfoConnected Header (OTE-186) (#332) * Add transfer button to AccountInfoConnected Header (OTE-186) * Organize imports * Remove unused styling * Remove unecessary key param remove border (#333) Remove trading is live notification (#334) Handle BrowserRouter for testFlags (#335) Withdrawal Risk and Safety (#296) * :construction: withdrwal-safety client calls * :construction: withdrawal gate and capacity * :pencil2: withdrawalGateLearnMore * nits * nits: Add fadedWarning and fix globalStyle type * TransferType prop * Add useEnvFeatures to gate fetch when unsupported on env * Add telemetry log fn * Add withdrawalGateLearnMore to v1/env.json * Add Withdrawal help doc link * Update withdrawalGateLearnMore * Disable WithdrawalSafety fetches Github action for syncing the release branch (#319) * Github action for syncing the release branch * Update release to use tags for hotfix * Update update-release.yml * update * update to use workflow token update close order cell (#338) Updated otherMarketsData and Incremental improvements to Widget (#326) * new markets 2/23 * update format * update numOracles * new markets 2/23 * update format * update numOracles * new format of market data * Update to use new otherMarket data * fix new data format * Filter existing proposals from New Market Widget * bump v4-localization * remove existing markets with invalid tickers * update disclaimer * add assets for new markets on the json * add workflow that validates other market data * clean up workflow yml * fix LocalWallet import * increase sleep * sleep more * filter by ticker and add retry * Revert "filter by ticker and add retry" This reverts commit 47bf20ac831c95357817f39eba37656a55440823. * filter by ticker and add retry * add baseAsset and omit from response * latest clean run * parallelize * add validation on adjustByMarket * fix adjsut by market parsing error --------- Co-authored-by: jaredvu <jaredvu@gmail.com> Co-authored-by: Tian Qin <tian@dydx.exchange> Fix transfer button style (#339) Market filters and New Market Widget Discoverability (#329) * init * Add useQuery for Sparklines * New sparkline call * Add new tags * Update labels * nit: remove override * Update Market tags, add market filter to Markets page * :lipstick: Fix spacing between detail items add portal json metadata and icon (#344) * add portal json metadata and icon * use specific v4-chain commit --------- Co-authored-by: Tian Qin <tian@dydx.exchange> Disable reduce-only (#346) fix release workflow (#347) Update prettier for import sorting, also run prettier on all src dir (#345) * Update prettier for import sorting, also run prettier on all src directories * add git-blame-ignore-revs to ignore previous commit in git blame Lower safe num oracles (#350) CT-640 Create Positions table Actions column (#343) * implement skeleton * clean up unnecessary changes * add to Positions table * add key * review comments Add tsc to build script (#348) * typescript errors * :globe_with_meridians: tsc * Add tsc to build script * Add ReactNode add AXL (#352) CT-653 Render Triggers Column skeleton (#354) * wip * render triggers column in Positions table * clean up * unused import * update to redirect FOK orders * fix typing * fix types round 2 * typo * review comments add assets for axl, meme, ocean, and add MEME tag (#357) * add assets for axl, meme, ocean, and add MEME tag * bump v4-localization --------- Co-authored-by: jaredvu <jaredvu@gmail.com> style: update market filters component (#356) * style: update market filters component * fix(marketfilter): add prop to hide propose new market button * allow tags to be scrollable * style(searchinput): remove clear button border/background ensure one live websocket connection per app (#361) Add option to default to all markets in horizontal footer (#349) * Add option to default to all markets in horizontal footer * Colocate state imports * Consistently name 'other' section * Colocate default enum * Update lockfile feat(positiontable): add column for margin (#362) * Add margin column * Add PositionsMarginCell * use cross/isolated string keys * remove USD_DECIMALS since it is handled by Output CT-655 Implement "View orders" onClick (#355) * wip * render triggers column in Positions table * clean up * unused import * update to redirect FOK orders * fix typing * fix types round 2 * typo * implement onClick functionality * add to overview; fix onclick behavior * remove unused import * review comments, replace arrow icon + add border Adam/ote 207 user local storage exceeding limits (#358) * Clear abacus notifications from local storage if we exceed 50 * Don't persist AbacusGenerated notifications to LocalStorage * Only clear notifications if AbacusGenerated exists * touch up + prettier --------- Co-authored-by: Bill He <bill@dydx.exchange> chore(contributions): add conventional commits to lint pr titles (#351) * commitlint init * chore(husky): initialize husky pre-commit and enforce commit-msg * chore(contributions): add commit lint information on contributions.md * chore(contributing): update md * chore(workflow): add commitlint github workflow * chore(workflow): commit lint pr title * do not lint commit msg, just pr * remove commitlint config from eslintignore * re-add dev deps chore(newmarkets): astr, floki, flow, edit portal (#364) * 3/7/24 run * 3/7/24 run - discretionary * remove sushi * synchronously validate tickers --------- Co-authored-by: Tian Qin <tian@dydx.exchange> build(commitlint): Remove subject-case ENFORCEMENT (#369) * remove subject-case enforcement * edit config feat(radiobuttoncards): add new radio button cards component (#368) ungate trading rewards (#363) Revert "Adam/ote 207 user local storage exceeding limits (#358)" (#370) This reverts commit 844648966774326ee05c495e438d96a4357c4a76. chore(notification): Add Chaos Labs Season 2 Distribution notification (#371) * Add Season 2 Distribution notification * update CTA feat(sltp): ct-654 trigger column ui for partial close position + liquidation warnings (#366) * draft completed * clean up * liquidation logic fix * remove log * Review comments feat(marginform): add form and dialog to adjust margin (#367) * First pass AdjustIsolatedMarginDialog * use calculatePositionMargin * remove unused styles * consolidate diff output render fix(tradeform): Change leverage buttons based on maxLeverage (#373) * Change leverage buttons based on maxLeverage * extract if statement ci(tests): Setup e2e browserstack testing CI (#359) * ci(tests): Add e2e browserstack testing CI * fix * debug * only run for testnet and staging * turn on all the tests * merge jobs * add checks * add readme, exclude unit tests * pnpm-lock feat(notifications): use notification for connection errors (#365) * Use notification for connection errors * remove code * bump package * fix type error * fix type errors * Disable trade and onboarding if chain disruption * fix action * bump loc feat(aevo): add aevo, arkm (#377) * add aevo * add assets for arkm and aevo * add arkm asseticon and edit tag feat(tradeform): Visual update for TradeForm with new Margin Mode and Leverage selection dialogs (#372) * First pass AdjustIsolatedMarginDialog * use calculatePositionMargin * remove unused styles * desktop entrypoint and form * skeleton adjust target leverage dialog * Create basic Slider component * Add SelectMarginMode and AdjustTargetLeverage forms and dialogs * Update trade form and dialog depending on testflag * Stretch cross/lev buttons on desktop Only run e2e test for v4-testnet (#378) fix(onboarding): Add requestId to squid status (#374) * Add requestId to squid status * smol refact * address nit add .nvmrc (#375) fix(e2e): remove @wdio/sync (#382) chore(onboarding): Add additional metadata to deposit events (#380) * add slippage and gas fee to deposit analytics * add additional metadata * fix tsc errors from undefined to be -1 * switch to be optional validate that exchanges are unique in other market data validation (#383) feat(onboarding): Enable CCTP for Arbitrum (#384) feat(market): add BOME (#386) * add BOME * add API3 kucoin * add bome assets Add install-local-abacus script. (#387) fix action type in profile page (#379) build: Fix clean build case in install-local-abacus (#389) feat(asset): add astr assets (#391) build: Trigger Vite restart when install-local-abacus is run. (#390) gating: use optimistic collat check for testnet (#388) feat(sltp): base ui for sltp edit modal (#376) * draft * add view orders nav functionality * remove testing changes * fix the lock file * update with new slider component * review comments * fix some bugs, hide advanced + CTA when no modifiable orders fix(bug): globalThis reference error on bugsnag (#353) * fix globalThis reference error on bugsnag * update polyfills re-add polyfill (#394) chore(remove-notifs): Remove trigger for S2 distribution (#395) * Remove trigger for S2 distribution * remove unused imports bump abacus and v4-clients package for order/tx queue (#392) Add help link to env configs (#396) Add help link to env configs use pessimistic collat check on testnet (#400) bump abacus for slippage validation update (#403) build: Enable Abacus logging in development mode. (#404) build: Enable external sourcemaps in Vite/Rollup to view Abacus source in Dev Tools (#405) Support multiple entry points with configurable HTML tags (#398) feat(performance): trading view kick off getBars / request candles sooner (#399) * remove markets dependency for loading candles * separate indexer client out * nits * address feedback * add initial price scale * fix tv chart missing symbol error * remove stray console.log * bump abacus and add back settimeout update entry-points build logic to allow for pnpm dev (#409) fix trading view chart error (#408) memo table data to avoid flickering (#411) connect wagmi on cta and not automatic for deposit (#412) fix: remove pingpongs from ws since no longer supported (#414) fix(tradingview): handle case when initial price scale doesnt need to be set (#418) * tradingview: handle case when initial price scale doesnt need to be set build: Add v4-abacus to VSCode file watcher. (#415) feat(isolated-positions): Scaffold Unoponed Isolated Position cards (#416) * feat(isolated-positions): Scaffold Unoponed Isolated Position cards * style(unopened-isolated-positions): backdrop-filter, vertical scroll build: Add --clean flag to install-local-abacus (#424) feat(widget): add WIF (#417) * add WIF * add ENA * update celo ticker for coinbase * increase sleep time before checking on-chain prices * extend initializing delay to 300s * remove tickers failing validation * cross json data * use commit without datadog * print out failed proposal IDs * use old commit * remove tickers with price upate errors --------- Co-authored-by: Tian Qin <tian@dydx.exchange> fix(orderbook): rows missing/duplicated in transition state (#402) * fix orderbook rows missing/duplicated in transition state * address feedback + fix aggregation issue update reduceonly and withdrawal safety feature flags (#422) feat(onboarding): Privy integration (#425) * feat(onboarding): Privy integration * update localization and make VITE_PRIVY_APP_ID optional * fix type feat(closepositions): hook up close positions to tradebox close position dialog (#407) * functional * Remove flag * fix chart tvwidget error * Remove unnecessary change * review comments * update strings * review comments bump abacus for market order slippage (#429) update status dot for connecting state and actually degraded (#430) fix(e2e): Temperorily skip e2e (#401) feat(sltp): Flag against conditional limit orders (#420) * flag limit orders * fixes * fix position check * fix hook bug * fix selector * last time I'll clean up these selectors I swear * fix merge conflict * remove entry point changes * fix for flickering? * Review comment * g typo * fix hook dep feat(sltp): hook up abacus values to sltp dialog (#426) * update entry-points build logic to allow for pnpm dev * working changes * remove test changes * add disabled condition * fixes * flag limit orders * fixes * fix position check * fix hook bug * fix selector * last time I'll clean up these selectors I swear * remove unnecessary imports * abacus version bump * wip * fix merge conflict * squash * remove entry point changes * bump abacus hopefully last time * fix for flickering? * review * review comments * clean up unused import --------- Co-authored-by: aforaleka <aforaleka@gmail.com> chore: add net funding to positions table (#434) * add net funding to positions table * show net funding only on trade / portfolio positions * remove extra gap before reduce-only feat: bump client and abacus for increased gtb for short term orders (#427) * bump client and abacus for increased gtb for short term orders * feat(new-market-widget): handle isolated markets and bump v4-client (#419) * feat(new-market-widget): handle isolated markets and bump v4-client * update-validate-other-market-data script * Update to support v4-client@1.1.5 * fix(type): fix type-error in newMarketMessageDetailsDialog * fix(nits): remove unused vars * fix(nits): update conditional, remove unused meta * remove new markets for now --------- Co-authored-by: Jared Vu <jaredvu@gmail.com> chore(incentives): Update notification for incentives season 4 (#436) feat(sltp): re-enable percentage calculation on modal (#432) * update entry-points build logic to allow for pnpm dev * working changes * remove test changes * add disabled condition * fixes * flag limit orders * fixes * fix position check * fix hook bug * fix selector * last time I'll clean up these selectors I swear * remove unnecessary imports * abacus version bump * wip * fix merge conflict * squash * remove entry point changes * bump abacus hopefully last time * fix for flickering? * review * review comments * clean up unused import * add percentage, update abacus * add clear button * fix translations * fix pnpm lock yaml lint --------- Co-authored-by: aforaleka <aforaleka@gmail.com> fix(sltp): bump abacus for updated perc calculation (#439) * bump v * wrong version my bad fix(marketWidget): hide marketType behind testflag (#445) * fix(marketWidget): hide marketType behind testflag * add testflags * tsignore bump abacus and use optimistic collat check for staging and testnet (#446) feat(widget): json update (#448) * latest addition * add FLR * fix validate-other-market-data.ts * remove marketType * add FLR * bump v4-client * add marketId logging * fix dydx --------- Co-authored-by: Bill He <bill@dydx.exchange> fix(onboarding): Disable non CCTP withdrawals with featureflag (#450) * fix(onboarding): Disable non CCTP withdrawals with featureflag * fix condition chore: Update README with local abacus development instructions (#452) clean up trade form stage between market changes (#453) feat(sltp): enable notifications for sl/tp orders created through modal (#443) * needs to be cleaned up * clean up types * fix unique stringId * update localization * fix lock file fix(sltp): fix positions tables in non trade views when sltp flag is on (#447) * needs to be cleaned up * clean up types * fix unique stringId * update localization * fix lock file * fix columns * review comment * review comments #2 bump abacus version for better order events error tracking (#454) chore: bump localization + abacus versions for fixed sl/tp order params (#455) * update localization + abacus * bump localization again fix price (#457) fix(asset-info): add dydx to market config (#458) * fix(asset): dydx asset config * use native token cmc link chore(trade): add CTA to place limit order on liquidity error (#462) * render limit cta * rename variable * fix mobile * lint chore(notification): Add notification for s3 rewards distribution (#460) * Add notification for s3 rewards distribution * remove comment bump v (#463) chore: add position size to liquidation + entry lines (#456) * added position size * clean up * fix tick size decimals * remove decimal ticks; this is set by priceScale bumped (#465) feat: refresh withdrawals ui to add clarity around fees (OTE-276) (#461) * [chore] refresh withdrawals ui to add clarity around fees * add cctp file i forgot * add space after comma * cleanup * use styled row with gap. rename ExchangeRate style to more descriptive generic RowWithGap * address comments. add localization, use proper token by address detection * cleanup * replace more l8n stuff * bump l10n package. localize lowest fees highlighted text * removing unused code * remove collapsible details and migrate styling * exclude non mainnet chain * address comment * merge conflicts chore(sltp): update sltp/sltplimit to be flagged behind env.json instead of url params + enable sltp in all environments (#467) * update flags * fix bump * why is my translation non existent * sometimes all you have to do is restart your computer * fix circular dep * ungate on mainnet * switch pessimistic check to optimistic in mainnet * remove non v1 env.json changes chore: enable organize imports to remove unused imports (#471) * chore: enable organize imports to remove unused imports * run organize imports on all files (#473) default all to true (#475) feat: order status [0/n] nits and fixes re existing notifications (#474) * notification nits * feedback feat: deposits UI revamp (OTE-277) (#466) * [chore] refresh withdrawals ui to add clarity around fees * address comments. add localization, use proper token by address detection * cleanup * replace more l8n stuff * bump l10n package. localize lowest fees highlighted text * remove collapsible details and migrate styling * exclude non mainnet chain * add tooltips, use withdrawal message for subheader as placeholder replace string with actual strings. use sourceChain.chainName for source chain param pipe in chain name correctly * lowest fee deposits tooltip text * remove test code * cleanup * bump l10n v use new string * move var to receipt component feat(compliance): Compliance UI for read only, close only and Compliance configuration (#433) * Add compliance dialog * address comments * UI for various compliance states * bump abacus, remove transfer * update localization * fix spacing * bump localizatoin * add testflag * address comments * fix lint * fix merge fix: move usdc to top of TokenSelectMenu dropdown (#480) * log things * move usdc to top of list feat: add assets and metadata for ETHFI, FLR, TON, and WIF (#484) * add assets and metadata * add metadata * update TON liquidity tier feat: add lowest fees decorator text to SourceSelectMenu (#483) * feat: add lowest fees decorator text to SourceSelectMenu * add clarifying comment * lint * conditionally render reset input to trade every time (#485) chore(sltp): bump abacus v to pull in new analytics + change sl/tp duration to 90 days (#490) * bump abacus * add toast duration update json (#487) chore: refactor styles [App.tsx] (#468) * refactor styles poc * remove incorrect and unused ref * cleanup/lint * useref to replace old ref * replace stateful dialog area management with ref * address comments * remove unused import fix: revert env.json placeholder (#491) feat: markets page revamp (#442) * feat: :lipstick: add new markets page header * feat: :lipstick: add new market filter styles * feat: :sparkles: add new component AssetTableCell added new component AssetTableCell to replace MarketTableCell inside the markets table. * feat: :lipstick: update oracle price cell style * feat: :lipstick: change price and interest rate formatting * feat: :lipstick: add number output styles added number output styles for markets table columns. * feat: :sparkles: add sparkline chart component * feat: :sparkles: add daily sparkline inside market data * feat: :sparkles: add price change chart added price change chart inside markets table. * feat: :lipstick: add new billboard style * feat: :sparkles: expose getCandles and add limit * fix: :lipstick: fix sparkline chart margin * feat: :lipstick: add new billboard styles and data * fix: :lipstick: fix sparkline chart overflow * feat: :sparkles: add numia chain revenue service * feat: :sparkles: implement getChainRevenue inside billboard * refactor: :recycle: move markets stats inside a specific hook * feat: :lipstick: add stats section layout * fix: :lipstick: fix assetCell style * feat: :lipstick: add stacked variant for AssetTableCell * feat: :sparkles: add MarketsCompactTable setup * fix: :lipstick: fix font size inside stacked variant * feat: :sparkles: add listing and openInterest cells added new cells inside MarketsCompactTable. * feat: :sparkles: add market listing date added market listing date inside the compact table. * fix: :lipstick: fix MarketsCompactTable responsive behaviour * feat: :sparkles: add fiat formatting added fiat formatting for earned by stakers section. * feat: :sparkles: add sorting prop added sorting prop for MarketsCompactTable * feat: :sparkles: add gainers/losers sorting added markets stats sorting by gainers/losers. * feat: :sparkles: add view all button added view all button inside recently listed section. * feat: :sparkles: add read more link added read more link inside ExchangeBillboards component. * feat: :sparkles: add learn more link * feat: :sparkles: add global markets table filter * fix: :lipstick: fix market compact table overflow * refactor: :recycle: move markets stats inside a specific component * refactor: :mute: remove sparkline data log * feat: :sparkles: add highlights toggle * feat: :sparkles: improve markets losers search * feat: :arrow_up: upgrade @dydxprotocol/v4-localization * feat: :speech_balloon: add translations * feat: :sparkles: add formatZeroNumbers utility * test: :white_check_mark: add tests for formatZeroNumbers utility * feat: :sparkles: add compress zeros inside MarketsCompactTable * feat: :lipstick: improve sub font size * feat: :sparkles: remove daily sparkline chart removed daily sparkline chart from markets table. * feat: :sparkles: add currency auto check added currency auto check inside formatZeroNumbers. * feat: :sparkles: add punctuationSymbol return added punctuationSymbol symbol inside formatZeroNumbers returns. * feat: :sparkles: add CompressedNumberOutput component * revert: :rewind: revert remove of daily sparkline chart https://github.com/dydxprotocol/v4-web/pull/442/commits/657ef20f672c5ab10b6c77da866e39d8b53285ae * feat: :speech_balloon: add translations for input search * feat: :sparkles: add MarketFilter compact layout * fix: :bug: fix AssetTableCell rendering * feat: :sparkles: remove markets charts removed 24h volume and open interest charts. clean up order status icon (#492) Small cleanup (#494) chore(sltp): create notification for sltp (#493) * notification * remove unnecessary css feat: enable regular withdrawals for privy users [OTE-282] (#477) * feat: enable regular withdrawals for privy users [OTE-282] * lint * only unblock privy wallets for withdrawals, not deposits * addres comment * fix feat(compliance): Integrate with geoblock api (#464) * Add compliance dialog * temp * UI for various compliance states * bump abacus, remove transfer * update localization * fix spacing * bump localizatoin * add testflag * Add compliance dialog * address comments * UI for various compliance states * bump abacus, remove transfer * update localization * fix spacing * bump localizatoin * add testflag * address comments * Integrate with geoblock api * post geoblock on form submit * fix merge * temp remove ismainnet geo check * fix lint * fix merge * address comments * use abacus for survey * revert env * add geo endpoint * update strings feat: order status [1/n] replace trade form loading CTA with toast (#479) * add order status notification replacing loading state * nits * address * submitted -> submitting for new orders feat: order status [2/n] notification preferences (#481) * order status notif preferences + refactor * notification category feat: order status [3/n] show place order error in order status notification (#482) * show order error in order status notification feat: order status [4/n] place order flow on mobile screen (#486) * mobile order status flow feat: order status [5/n] cancel order toasts (#488) * add cancel order notif * cancel in order detail dialog * fix short term order canceled becomes filled flow * rename refactor(market-revamp): sum staking rewards, update compact tables, reduce sparkline api call (#498) * refactor(market-styles): refactor Styled object * refactor(output): add slotLeft * refact(markets-revamp): use abacus sparklines, update compact tables, etc. feat: Test the `otherMarketData.json` file against a live slinky instance (#489) * update dydx ref to latest tag * trigger other-market-data validation on changes to script * evaluate slinky metrics in ci * use dydx v4-chain version with prometheus instance * change ref back to dydxprotocol/v4-chain + nit * linting feat: show latest commit hash (#469) * feat: show latest commit hash * add to help dialog * selectable change script to use relative pathing (#495) chore: re-enable e2e (#500) * chore: re-enable e2e * test bump client and abacus for default ioc market orders (#501) feat: add Statistics link to navigation header (#472) * Add Statistics link to navigation header * Add link to env.json * Update correct env.json * Revert "Add link to env.json" This reverts commit 19d20db089e6520df53ab17a05b70764dc6d0bf3. * chore(env-links): add example --------- Co-authored-by: jaredvu <jaredvu@gmail.com> fix(sltp): Update triggerOrders to use new notifications; remove old trigger orders notifications (#496) * add * use new func * wip * remove comment * review comments, update abacus chore(isolated-margin-inputs): hook up abacus setTradeValues and state (#497) * chore(isolated-margin-inputs): hook up abacus setTradeValues and state * style(adjust-target-leverage-form): update styled object * style(trade-form): update styled object * fix(nits-style): fix nits and fix overflow for unoponenedIsolatedPositions feat: update json with the latest data (#499) * update json * update TON liquidity tier * revert existing markets and sort by cmc rank fix: make noble addres selectable (#505) * fix: make noble addres selectable * address comment feat: ui updates for eimf [OTE-299] (#502) * feat: ui updates for eimf * ui updates for eimf * use learnMoreLink configs instead of l10n * typo * cap leverage state by maxLeverage * disable buttons larger than max leverage fix(perf): add default pagination to all tables (#507) * paginate tables * add import fix: disable curve dao token icon (#506) * fix: disable curve dao token icon * remove extra file. update abacus (#510) chore: add referrer link from landing (#504) * chore: add referrer link from landing * more accurate type * add referrer to all onboarding analytics * use utm source * revert changes * add referrer to every tracking action fix: Fix set latest commit script (#511) * fix: Fix set latest commit script * address comment fix: prefer cctp validation to squid route validation (#512) feat: improve markets page (#509) * feat: :sparkles: change fiat formatting changed fiat formatting from compact to expand inside exchange billboards. * feat: :sparkles: improve market sparkline cache * feat: :sparkles: improve chain revenue cache fix: hardcoded gasfee from local testing (#513) chore: refresh positions table + other nits (#508) * refresh positions table + other nits fix(perf): memoize fills table (#515) * memoize * oops wrong v of abacus chore: add web version to amplitude events (#516) * add tag * clean up * a little less brittle * update e2e osx to Monterey --------- Co-authored-by: Bill He <bill@dydx.exchange> feat(dev-3): add dev3 environment (#519) fix: Temporary default to Axelar USDC tokens on deposit while CCTP is down (#514) * fix: Temporary default to Axelar USDC tokens while CCTP is down * address comment fix: fix market dropdown table pagination (#520) * fix height calculation * share a variable fix: deposit value check (#522) * fix: deposit value check * fix * deboucned amount dependency array * use bn instead of raw amount fix: remove scrollArea style to fix safari mobile (#524) * fix: hack to get safari mobile working again * remove unnecessary style Revert "fix: Temporary default to Axelar USDC tokens on deposit while CCTP is down (#514)" (#523) feat(new-preference): Add preference toggle for gas denom to be used when making transactions (#521) * bump v4-client * allow user to select gas token * fix * update pnpm lock * Address feedback * remove added space canceling toast should go from canceling -> canceled / error (#529) bump abacus (#528) chore: cleanup table component eslint errors and warnings [OTE-290] (#476) * chore: cleanup eslint ignore * chore: cleanup table component * use col props instead of referncing node directly * ignore all components except table * lint * fix fix: positions table close/action column title (#532) * fix positions table close/action column title feat: update compliance strings (#531) * feat: update compliance strings * fix tsc * forgot to add file * add date to config dialog * address comments fix stacked styling (#539) chore: add CCTPDepositOnly FF (#540) * chore: add cctpdepositonly FF * make required ff * cctp deposits only * eaiser to read chore: correctly type all Styled Components wrappers (#534) * compiles probably * tinyfix simpler * fix more errors * small fixes * fix pressed * Fix notification * remove unused chore: Add latest version to web help dialog (#536) * added version * review ocmments chore: note in env file about deprecation (#542) * note in env file about deprecation * update readme chore: New es-lint rule, clean up some easy es-lint fixes (#538) * eslint add rule and make main good * remove unnecessary chore: cleaner handling of higher order function type inference (styled and forwardRef) (#543) * cleaner style types * file * Defaults and fix one more fix(sltp): match order size slider value to input value (#545) * update abacus value to be saved * update * clean up * clean up story clena install: (#547) chore: remove eslint ignore for /pages, remove all unused styled component type references (#544) * Eslint fix * remove fix: pnl table flickering + limit toggles to available data (#537) * prevent pnl chart flickering + bump abacus to fetch less pnl * remove toggle change logic to avoid buggy experience * address feedback * fix pnl visible data access fix missing analytics data (#555) fix(selected-gas-denom): preserve gasDenom and set in chainTransactionProtocol (#554) * fix(selected-gas-denom): preserve selected-gas-denom and set within dydxChainTransactions * add eslint-disable and fix circular dep referrer (#556) chore(perf): update table pagination to be page based (#530) * wip * wip * fix scroll * fix table typing * fix default page size * fix padding agian * adjustment * review comments * oops chore: eslint add lib (#546) * lib to eslint * fix rest of it * add it back * respond to comments chore: run lint-fix on /hooks (#548) * just lint fix * that seems weird update library (#557) chore: add logging for status tracking [1/n] (#535) * chore: add logging for status tracking * add triggeredAt property for easier tracking * prefer string litera fix: remove noisy log (#558) * don't log there * remove loud log chore: apply eslint to /hooks (#550) * Get most of lib linting * not satisfies, do rest of hooks * cleaner name * alias * remove unnecessary chore: run auto fixer on /components (#551) * apply auto fixer to components * tiny fixes update transition states for triggers form (#563) fix params iteration for test flags (#564) fix: rest header foreach (#566) fix: the transfer type ternery is not correct (#570) chore: remove hooks barrel file (#569) * remove hooks barrel * remove unnecessary cycle ignores fix top level views (#552) remove log (#572) chore: eslint more views (#553) chore: eslint the rest of easy views (#560) --- .env.example | 3 + .eslintignore | 16 +- .eslintrc.json | 5 +- .git-blame-ignore-revs | 2 + .github/workflows/commitlint.yml | 30 + .github/workflows/run-e2e.yml | 51 + .github/workflows/update-release.yml | 44 + .../workflows/validate-other-market-data.yml | 52 + .gitignore | 5 + .husky/pre-commit | 1 + .ladle/components.tsx | 19 +- .nvmrc | 2 + .prettierrc.json | 16 +- .vscode/settings.json | 14 +- CONTRIBUTING.md | 26 + README.md | 90 +- __tests__/e2e/test.e2e.ts | 15 + __tests__/tsconfig.json | 3 + commitlint.config.ts | 8 + package.json | 46 +- pnpm-lock.yaml | 4736 ++++++++++++++++- public/configs/cctp.json | 8 +- public/configs/env.json | 134 +- public/configs/markets.json | 116 +- public/configs/otherMarketData.json | 4692 ++++++++++++++++ public/configs/otherMarketDisclaimer.md | 2 +- public/configs/otherMarketExchangeConfig.json | 616 --- public/configs/otherMarketParameters.json | 1158 ---- public/configs/v1/env.json | 205 +- public/currencies/aevo.png | Bin 0 -> 5107 bytes public/currencies/api3.png | Bin 0 -> 41195 bytes public/currencies/arkm.png | Bin 0 -> 63781 bytes public/currencies/astr.png | Bin 0 -> 208934 bytes public/currencies/axl.png | Bin 0 -> 61703 bytes public/currencies/bome.png | Bin 0 -> 121689 bytes public/currencies/ethfi.png | Bin 0 -> 249220 bytes public/currencies/flr.png | Bin 0 -> 42331 bytes public/currencies/magic.png | Bin 0 -> 73517 bytes public/currencies/meme.png | Bin 0 -> 33763 bytes public/currencies/ocean.png | Bin 0 -> 57369 bytes public/currencies/portal.png | Bin 0 -> 187962 bytes public/currencies/ton.png | Bin 0 -> 90639 bytes public/currencies/wif.png | Bin 0 -> 1176074 bytes public/og-image.png | Bin 0 -> 331623 bytes scripts/generate-entry-points.js | 32 + scripts/inject-amplitude.js | 98 +- scripts/inject-bugsnag.js | 126 +- scripts/inject-intercom.js | 121 +- scripts/inject-smartbanner.js | 71 +- scripts/inject-statuspage.js | 30 +- scripts/install-local-abacus.js | 48 + scripts/set-last-commit-and-tag.sh | 43 + scripts/validate-other-market-data.ts | 718 +++ src/App.tsx | 107 +- src/components/Accordion.stories.tsx | 2 +- src/components/Accordion.tsx | 43 +- src/components/AlertMessage.tsx | 5 + src/components/AssetIcon.tsx | 25 +- src/components/BackButton.tsx | 8 +- src/components/BaseButton.tsx | 1 + src/components/Button.stories.tsx | 8 +- src/components/Button.tsx | 68 +- src/components/Checkbox.stories.tsx | 5 +- src/components/Checkbox.tsx | 31 +- src/components/Collapsible.stories.tsx | 46 +- src/components/Collapsible.tsx | 90 +- src/components/CollapsibleNavigationMenu.tsx | 60 +- src/components/CollapsibleTabs.tsx | 116 +- src/components/ComboboxDialogMenu.tsx | 20 +- src/components/ComboboxMenu.tsx | 117 +- src/components/ComingSoon.tsx | 15 +- src/components/ContentSection.tsx | 1 + src/components/ContentSectionHeader.tsx | 17 +- src/components/CopyButton.stories.tsx | 6 +- src/components/CopyButton.tsx | 23 +- src/components/Details.stories.tsx | 15 +- src/components/Details.tsx | 106 +- src/components/DetailsDialog.tsx | 22 +- src/components/Dialog.tsx | 153 +- src/components/DiffArrow.tsx | 13 +- src/components/DiffOutput.tsx | 23 +- src/components/DropdownHeaderMenu.stories.tsx | 15 +- src/components/DropdownHeaderMenu.tsx | 50 +- src/components/DropdownMenu.tsx | 74 +- src/components/DropdownSelectMenu.stories.tsx | 1 + src/components/DropdownSelectMenu.tsx | 69 +- src/components/FormInput.stories.tsx | 31 +- src/components/FormInput.tsx | 50 +- src/components/GradientCard.tsx | 49 + src/components/GreenCheckCircle.tsx | 9 +- src/components/GuardedMobileRoute.tsx | 9 +- src/components/Icon.tsx | 14 +- src/components/IconButton.stories.tsx | 10 +- src/components/IconButton.tsx | 28 +- src/components/Input.stories.tsx | 13 +- src/components/Input.tsx | 36 +- src/components/Link.stories.tsx | 14 +- src/components/Link.tsx | 18 +- src/components/Loading/Loading.stories.tsx | 3 +- src/components/Loading/LoadingSpinner.tsx | 25 +- src/components/MarginUsageRing.stories.tsx | 19 +- src/components/MarginUsageRing.tsx | 9 +- src/components/NavigationMenu.stories.tsx | 2 +- src/components/NavigationMenu.tsx | 296 +- src/components/Notification.tsx | 15 +- src/components/NumberValue.tsx | 33 + src/components/OrderSideTag.stories.tsx | 2 +- src/components/OrderSideTag.tsx | 3 +- src/components/Output.tsx | 459 +- src/components/PageMenu.stories.tsx | 4 +- src/components/PageMenu.tsx | 11 +- src/components/PageMenu/PageMenuItem.tsx | 2 +- .../PageMenu/PageMenuNavigationItem.tsx | 25 +- .../PageMenu/PageMenuRadioGroup.tsx | 36 +- src/components/Panel.tsx | 52 +- src/components/Popover.tsx | 24 +- src/components/PositionSideTag.tsx | 9 +- src/components/PotentialPositionCard.tsx | 81 + src/components/QrCode.tsx | 14 +- src/components/RadioButtonCards.stories.tsx | 79 + src/components/RadioButtonCards.tsx | 110 + src/components/RelativeTime.tsx | 1 + src/components/Ring.tsx | 11 +- src/components/ScrollAreas.stories.tsx | 126 +- src/components/SearchInput.stories.tsx | 16 +- src/components/SearchInput.tsx | 107 +- src/components/SearchSelectMenu.stories.tsx | 1 + src/components/SearchSelectMenu.tsx | 61 +- src/components/SelectMenu.stories.tsx | 17 +- src/components/SelectMenu.tsx | 57 +- src/components/Separator.tsx | 2 +- src/components/Slider.tsx | 103 + src/components/StepIndicator.stories.tsx | 3 +- src/components/StepIndicator.tsx | 21 +- src/components/Switch.stories.tsx | 11 +- src/components/Switch.tsx | 16 +- src/components/Table.tsx | 515 +- src/components/Table/ActionsTableCell.tsx | 35 + src/components/Table/AssetTableCell.tsx | 52 + src/components/Table/MarketTableCell.tsx | 32 +- src/components/Table/TableCell.tsx | 36 +- src/components/Table/TableColumnHeader.tsx | 9 +- src/components/Table/TablePaginationRow.tsx | 128 + src/components/Tabs.stories.tsx | 11 +- src/components/Tabs.tsx | 76 +- src/components/TimeoutButton.tsx | 8 +- src/components/TimoutButton.stories.tsx | 7 +- src/components/Toast.tsx | 26 +- src/components/ToastArea.tsx | 7 +- src/components/ToggleButton.stories.tsx | 2 +- src/components/ToggleButton.tsx | 12 +- src/components/ToggleGroup.stories.tsx | 3 +- src/components/ToggleGroup.tsx | 33 +- src/components/Toolbar.tsx | 16 +- src/components/TriangleIndicator.stories.tsx | 19 +- src/components/TriangleIndicator.tsx | 11 +- src/components/UsageBars.stories.tsx | 11 +- src/components/UsageBars.tsx | 15 +- .../WithConfirmationPopover.stories.tsx | 5 +- src/components/WithConfirmationPopover.tsx | 41 +- src/components/WithDetailsReceipt.stories.tsx | 3 +- src/components/WithDetailsReceipt.tsx | 9 +- src/components/WithHovercard.stories.tsx | 40 + src/components/WithHovercard.tsx | 82 + src/components/WithLabel.stories.tsx | 16 +- src/components/WithLabel.tsx | 15 +- src/components/WithReceipt.stories.tsx | 1 - src/components/WithReceipt.tsx | 21 +- src/components/WithSidebar.tsx | 37 +- src/components/WithTooltip.stories.tsx | 4 +- src/components/WithTooltip.tsx | 45 +- src/components/visx/AxisLabelOutput.tsx | 17 +- src/components/visx/SparklineChart.tsx | 79 + src/components/visx/TimeSeriesChart.tsx | 78 +- src/components/visx/TooltipContent.tsx | 9 +- src/components/visx/XYChartThreshold.tsx | 23 +- .../visx/XYChartTooltipWithBounds.tsx | 18 +- .../visx/XYChartWithPointerEvents.tsx | 5 +- src/components/visx/getScaleBandwidth.ts | 1 - src/constants/abacus.ts | 40 +- src/constants/account.ts | 6 + src/constants/analytics.ts | 292 +- src/constants/candles.ts | 1 + src/constants/cctp.ts | 11 + src/constants/charts.ts | 1 + src/constants/compliance.ts | 15 + src/constants/dialogs.ts | 16 +- src/constants/geo.ts | 561 ++ src/constants/indexer.ts | 4 + src/constants/localStorage.ts | 6 +- src/constants/localization.ts | 29 +- src/constants/markets.ts | 20 + src/constants/mockData.ts | 1 - src/constants/notifications.ts | 51 +- src/constants/numbers.ts | 2 +- src/constants/objects.ts | 2 + src/constants/orderbook.ts | 2 +- src/constants/potentialMarkets.ts | 42 +- src/constants/styles/colors.ts | 3 + src/constants/tooltips/deposit.ts | 21 +- src/constants/tooltips/general.ts | 2 +- src/constants/tooltips/index.ts | 2 + src/constants/tooltips/portfolio.ts | 2 +- src/constants/tooltips/trade.ts | 21 +- src/constants/tooltips/triggers.ts | 24 + src/constants/tooltips/withdraw.ts | 21 +- src/constants/trade.ts | 31 +- src/constants/tvchart.ts | 4 +- src/constants/wallets.ts | 16 +- src/constants/websocket.ts | 6 - src/hooks/Orderbook/useDrawOrderbook.ts | 109 +- src/hooks/Orderbook/useOrderbookValues.ts | 27 +- .../Orderbook/useSpreadRowScrollListener.ts | 2 +- src/hooks/index.ts | 59 - src/hooks/tradingView/useChartLines.ts | 116 +- .../useChartMarketAndResolution.ts | 9 +- src/hooks/tradingView/useTradingView.ts | 61 +- src/hooks/tradingView/useTradingViewTheme.ts | 12 +- src/hooks/useAccountBalance.ts | 14 +- src/hooks/useAccounts.tsx | 116 +- src/hooks/useAnalytics.ts | 91 +- src/hooks/useAnimationFrame.ts | 9 +- src/hooks/useApiState.ts | 89 +- src/hooks/useAppThemeAndColorMode.tsx | 14 +- src/hooks/useBreakpoints.ts | 4 +- src/hooks/useCommandMenu.ts | 6 +- src/hooks/useComplianceState.tsx | 86 + src/hooks/useCurrentMarketId.ts | 17 + src/hooks/useDebounce.ts | 2 +- src/hooks/useDialogArea.tsx | 14 +- src/hooks/useDisplayedWallets.ts | 6 +- src/hooks/useDydxClient.tsx | 241 +- src/hooks/useEndpointsConfig.ts | 29 + src/hooks/useEnvFeatures.ts | 19 + src/hooks/useInitializePage.ts | 6 +- src/hooks/useInterval.tsx | 2 +- src/hooks/useIsFirstRender.ts | 2 +- src/hooks/useLocalNotifications.tsx | 71 +- src/hooks/useLocalStorage.ts | 1 + src/hooks/useLocaleSeparators.tsx | 1 + src/hooks/useMarketsData.ts | 80 +- src/hooks/useMatchingEvmNetwork.ts | 17 +- src/hooks/useNextClobPairId.ts | 133 +- src/hooks/useNotificationTypes.tsx | 359 +- src/hooks/useNotifications.tsx | 121 +- src/hooks/useOnClickOutside.ts | 5 +- src/hooks/useOnLastOrderIndexed.ts | 1 + src/hooks/usePageTitlePriceUpdates.ts | 1 + src/hooks/usePerpetualMarketSparklines.ts | 41 + src/hooks/usePerpetualMarketsStats.ts | 79 + src/hooks/usePotentialMarkets.tsx | 32 +- src/hooks/useQueryChaosLabsIncentives.ts | 32 + src/hooks/useRestrictions.tsx | 17 +- src/hooks/useSelectedNetwork.ts | 14 +- src/hooks/useShouldShowFooter.ts | 2 +- src/hooks/useSignForWalletDerivation.tsx | 23 + src/hooks/useStringGetter.ts | 7 +- src/hooks/useSubaccount.tsx | 183 +- src/hooks/useTablePagination.ts | 78 + src/hooks/useTradeFormInputs.ts | 4 +- src/hooks/useTriggerOrdersFormInputs.ts | 147 + src/hooks/useURLConfigs.ts | 72 +- src/hooks/useWalletConnection.ts | 106 +- src/hooks/useWithdrawalInfo.ts | 134 + src/icons/arrow.svg | 6 +- src/icons/download.svg | 5 + src/icons/index.ts | 8 + src/icons/trade/position-partial.svg | 4 + src/icons/wallets/apple.svg | 1 + src/icons/wallets/discord.svg | 8 + src/icons/wallets/email.svg | 4 + src/icons/wallets/google.svg | 1 + src/icons/wallets/twitter.svg | 1 + src/layout/DialogManager.tsx | 52 +- src/layout/Footer/FooterDesktop.tsx | 99 +- src/layout/Footer/FooterMobile.tsx | 48 +- src/layout/Header/HeaderDesktop.tsx | 84 +- .../NotifcationStack.tsx | 19 +- src/layout/NotificationsToastArea/index.tsx | 8 +- src/lib/__test__/formatZeroNumbers.spec.ts | 166 + src/lib/__test__/numbers.spec.ts | 2 +- src/lib/__test__/timeUtils.ts | 7 +- src/lib/__test__/tradeData.spec.ts | 40 +- src/lib/abacus/conversions.ts | 5 +- src/lib/abacus/dydxChainTransactions.ts | 159 +- src/lib/abacus/filesystem.ts | 6 +- src/lib/abacus/formatter.ts | 2 +- src/lib/abacus/index.ts | 111 +- src/lib/abacus/localizer.ts | 2 +- src/lib/abacus/logger.ts | 18 + src/lib/abacus/rest.ts | 23 +- src/lib/abacus/stateNotification.ts | 59 +- src/lib/abacus/websocket.ts | 139 +- src/lib/addressUtils.ts | 2 +- src/lib/analytics.ts | 13 +- src/lib/assertNever.ts | 7 + src/lib/compliance.ts | 30 + src/lib/csv.ts | 15 + src/lib/dateTime.ts | 60 +- src/lib/errors.ts | 1 + src/lib/formatString.ts | 18 +- src/lib/formatZeroNumbers.ts | 60 + src/lib/genericFunctionalComponentUtils.ts | 27 + src/lib/isExternalLink.tsx | 7 +- src/lib/isTruthy.ts | 3 +- src/lib/localStorage.ts | 5 +- src/lib/math.ts | 3 +- src/lib/network.ts | 4 +- src/lib/numbers.ts | 14 +- src/lib/objectEntries.ts | 3 +- src/lib/orderbookHelpers.ts | 1 - src/lib/orders.ts | 72 +- src/lib/positions.ts | 27 + src/lib/renderSvgToDataUrl.ts | 11 +- src/lib/squid.ts | 9 +- src/lib/telemetry.ts | 3 +- src/lib/testFlags.ts | 39 +- src/lib/timeUtils.ts | 14 +- src/lib/tradeData.ts | 33 +- src/lib/tradingView/dydxfeed/index.ts | 43 +- src/lib/tradingView/dydxfeed/streaming.ts | 6 +- src/lib/tradingView/utils.ts | 22 +- src/lib/typeUtils.ts | 12 + src/lib/wagmi.ts | 82 +- src/lib/wallet/index.ts | 21 +- src/lib/wallet/providers.ts | 4 +- src/main.tsx | 12 +- src/pages/PrivacyPolicyPage.tsx | 11 +- src/pages/Profile.tsx | 165 +- src/pages/TermsOfUsePage.tsx | 14 +- src/pages/markets/Markets.tsx | 98 +- src/pages/markets/NewMarket.tsx | 102 +- .../portfolio/AccountDetailsAndHistory.tsx | 97 +- src/pages/portfolio/Fees.tsx | 135 +- src/pages/portfolio/History.tsx | 17 +- src/pages/portfolio/Orders.tsx | 7 +- src/pages/portfolio/Overview.tsx | 52 +- src/pages/portfolio/Portfolio.tsx | 121 +- src/pages/portfolio/PortfolioNavMobile.tsx | 18 +- src/pages/portfolio/Positions.tsx | 41 +- src/pages/settings/Settings.tsx | 14 +- src/pages/settings/SettingsHeader.tsx | 18 +- src/pages/token/Governance.tsx | 29 +- src/pages/token/Token.tsx | 50 +- src/pages/token/rewards/DYDXBalancePanel.tsx | 80 +- src/pages/token/rewards/GovernancePanel.tsx | 34 +- .../token/rewards/LaunchIncentivesPanel.tsx | 145 +- src/pages/token/rewards/MigratePanel.tsx | 87 +- src/pages/token/rewards/NewMarketsPanel.tsx | 45 +- .../token/rewards/RewardHistoryPanel.tsx | 51 +- src/pages/token/rewards/RewardsHelpPanel.tsx | 59 +- src/pages/token/rewards/RewardsPage.tsx | 114 +- .../rewards/TradingRewardsSummaryPanel.tsx | 49 +- src/pages/token/staking/StakingPage.tsx | 39 +- src/pages/token/staking/StakingPanel.tsx | 45 +- .../token/staking/StrideStakingPanel.tsx | 46 +- src/pages/trade/HorizontalPanel.tsx | 168 +- src/pages/trade/InnerPanel.tsx | 13 +- src/pages/trade/MarketSelectorAndStats.tsx | 14 +- src/pages/trade/MobileBottomPanel.tsx | 4 +- src/pages/trade/MobileTopPanel.tsx | 47 +- src/pages/trade/Trade.tsx | 73 +- src/pages/trade/TradeDialogTrigger.tsx | 47 +- src/pages/trade/TradeHeaderMobile.tsx | 47 +- src/pages/trade/UnopenedIsolatedPositions.tsx | 72 + src/pages/trade/VerticalPanel.tsx | 7 +- src/polyfills.ts | 7 +- src/services/index.ts | 1 + src/services/numia.ts | 23 + src/state/_store.ts | 9 +- src/state/account.ts | 127 +- src/state/accountCalculators.ts | 27 + src/state/accountSelectors.ts | 222 +- src/state/app.ts | 14 +- src/state/appMiddleware.ts | 26 +- src/state/appSelectors.ts | 2 + src/state/assetsSelectors.ts | 1 - src/state/configs.ts | 31 +- src/state/configsSelectors.ts | 5 +- src/state/inputs.ts | 9 +- src/state/inputsSelectors.ts | 36 +- src/state/layoutSelectors.ts | 1 + src/state/localization.ts | 2 +- src/state/localizationMiddleware.ts | 6 +- src/state/localizationSelectors.ts | 36 +- src/state/notifications.ts | 2 +- src/state/perpetuals.ts | 13 +- src/state/perpetualsCalculators.ts | 5 +- src/state/perpetualsSelectors.ts | 18 +- src/styles/formMixins.ts | 2 +- src/styles/globalStyle.ts | 3 + src/styles/layoutMixins.ts | 445 +- src/styles/popoverMixins.ts | 10 +- src/styles/styled.d.ts | 5 + src/styles/tableMixins.ts | 20 +- src/styles/text.css | 10 +- src/styles/text.stories.tsx | 11 +- src/styles/themes.ts | 15 +- src/styles/tradeViewMixins.ts | 22 +- src/views/AccountInfo.tsx | 21 +- .../AccountInfo/AccountInfoConnectedState.tsx | 130 +- .../AccountInfo/AccountInfoDiffOutput.tsx | 9 +- src/views/CanvasOrderbook/OrderbookRow.tsx | 18 +- src/views/CanvasOrderbook/index.tsx | 97 +- src/views/ExchangeBillboards.tsx | 218 +- src/views/ExportHistoryDropdown.tsx | 264 + src/views/MarketDetails.tsx | 95 +- src/views/MarketFilter.tsx | 90 +- src/views/MarketLinks.tsx | 16 +- src/views/MarketStatsDetails.tsx | 225 +- src/views/MarketsDropdown.tsx | 268 +- src/views/MarketsStats.tsx | 121 + src/views/MidMarketPrice.tsx | 18 +- src/views/NextFundingTimer.tsx | 14 +- src/views/OrderStatusIcon.tsx | 55 +- src/views/PositionInfo.tsx | 207 +- src/views/PositionTile.stories.tsx | 15 +- src/views/PositionTile.tsx | 65 +- src/views/TradeBox.tsx | 40 +- src/views/TradeBoxOrderView.tsx | 37 +- src/views/charts/DepthChart/Tooltip.tsx | 14 +- src/views/charts/DepthChart/index.tsx | 80 +- src/views/charts/FundingChart/Tooltip.tsx | 7 +- src/views/charts/FundingChart/index.tsx | 58 +- src/views/charts/PnlChart.tsx | 183 +- src/views/charts/TvChart.tsx | 16 +- .../dialogs/AdjustIsolatedMarginDialog.tsx | 43 + .../dialogs/AdjustTargetLeverageDialog.tsx | 35 + src/views/dialogs/ClosePositionDialog.tsx | 72 +- src/views/dialogs/ComplianceConfigDialog.tsx | 125 + src/views/dialogs/DepositDialog.tsx | 4 +- .../DepositDialog/DepositDialogContent.tsx | 19 +- .../DetailsDialog/FillDetailsDialog.tsx | 14 +- .../DetailsDialog/OrderDetailsDialog.tsx | 93 +- src/views/dialogs/DisconnectDialog.tsx | 24 +- src/views/dialogs/DisplaySettingsDialog.tsx | 131 +- src/views/dialogs/ExchangeOfflineDialog.tsx | 27 +- src/views/dialogs/ExternalLinkDialog.tsx | 19 +- src/views/dialogs/ExternalNavKeplrDialog.tsx | 56 +- src/views/dialogs/ExternalNavStrideDialog.tsx | 59 +- src/views/dialogs/GeoComplianceDialog.tsx | 154 + src/views/dialogs/GlobalCommandDialog.tsx | 5 +- src/views/dialogs/HelpDialog.tsx | 57 +- src/views/dialogs/ManageFundsDialog.tsx | 23 +- src/views/dialogs/MnemonicExportDialog.tsx | 78 +- src/views/dialogs/MobileDownloadDialog.tsx | 61 +- src/views/dialogs/MobileSignInDialog.tsx | 30 +- .../dialogs/NewMarketAgreementDialog.tsx | 40 +- .../dialogs/NewMarketMessageDetailsDialog.tsx | 235 +- src/views/dialogs/OnboardingDialog.tsx | 66 +- .../OnboardingDialog/AcknowledgeTerms.tsx | 48 +- .../dialogs/OnboardingDialog/ChooseWallet.tsx | 88 +- .../dialogs/OnboardingDialog/GenerateKeys.tsx | 102 +- src/views/dialogs/OnboardingTriggerButton.tsx | 8 +- src/views/dialogs/PreferencesDialog.tsx | 120 +- src/views/dialogs/RateLimitDialog.tsx | 19 +- src/views/dialogs/RestrictedGeoDialog.tsx | 19 +- src/views/dialogs/RestrictedWalletDialog.tsx | 19 +- src/views/dialogs/SelectMarginModeDialog.tsx | 20 + src/views/dialogs/TradeDialog.tsx | 132 +- src/views/dialogs/TransferDialog.tsx | 13 +- src/views/dialogs/TriggersDialog.tsx | 52 + src/views/dialogs/WithdrawDialog.tsx | 31 +- src/views/dialogs/WithdrawalGateDialog.tsx | 101 + .../AccountManagementForms/DepositForm.tsx | 132 +- .../DepositForm/DepositButtonAndReceipt.tsx | 192 +- .../AccountManagementForms/SlippageEditor.tsx | 47 +- .../SourceSelectMenu.tsx | 122 +- .../TestnetDepositForm.tsx | 35 +- .../TokenSelectMenu.tsx | 102 +- .../AccountManagementForms/WithdrawForm.tsx | 238 +- .../WithdrawForm/WithdrawButtonAndReceipt.tsx | 218 +- src/views/forms/AdjustIsolatedMarginForm.tsx | 269 + src/views/forms/AdjustTargetLeverageForm.tsx | 180 + src/views/forms/ClosePositionForm.tsx | 138 +- .../NewMarketForm/NewMarketPreviewStep.tsx | 180 +- .../NewMarketForm/NewMarketSelectionStep.tsx | 217 +- .../NewMarketForm/NewMarketSuccessStep.tsx | 27 +- src/views/forms/NewMarketForm/index.tsx | 25 +- src/views/forms/NobleDeposit.tsx | 37 +- src/views/forms/SelectMarginModeForm.tsx | 79 + src/views/forms/TradeForm.tsx | 277 +- .../forms/TradeForm/AdvancedTradeOptions.tsx | 240 +- .../TradeForm/LeverageSlider.stories.tsx | 21 +- src/views/forms/TradeForm/LeverageSlider.tsx | 142 +- .../forms/TradeForm/MarketLeverageInput.tsx | 66 +- .../TradeForm/PlaceOrderButtonAndReceipt.tsx | 75 +- src/views/forms/TradeForm/PositionPreview.tsx | 30 +- src/views/forms/TradeForm/TradeSideToggle.tsx | 20 +- src/views/forms/TradeForm/TradeSizeInputs.tsx | 40 +- src/views/forms/TransferForm.tsx | 125 +- .../TransferForm/TransferButtonAndReceipt.tsx | 15 +- .../TriggersForm/AdvancedTriggersOptions.tsx | 89 + .../forms/TriggersForm/LimitPriceInputs.tsx | 146 + .../forms/TriggersForm/OrderSizeInput.tsx | 131 + .../TriggersForm/OrderSizeSlider.stories.tsx | 43 + .../forms/TriggersForm/OrderSizeSlider.tsx | 80 + .../forms/TriggersForm/TriggerOrderInputs.tsx | 324 ++ .../TriggersForm/TriggerOrdersInputs.tsx | 72 + src/views/forms/TriggersForm/TriggersForm.tsx | 188 + src/views/menus/AccountMenu.tsx | 259 +- src/views/menus/LanguageSelector.tsx | 15 +- src/views/menus/NetworkSelectMenu.tsx | 17 +- src/views/menus/NotificationsMenu.tsx | 18 +- src/views/menus/useGlobalCommands.tsx | 30 +- src/views/menus/useNetworks.tsx | 2 +- .../BlockRewardNotification/index.tsx | 27 +- ...ncentiveSeasonDistributionNotification.tsx | 64 + .../notifications/OrderCancelNotification.tsx | 98 + .../notifications/OrderStatusNotification.tsx | 134 + .../TradeNotification/FillDetails.tsx | 81 + .../notifications/TradeNotification/index.tsx | 79 +- .../TransferStatusSteps.tsx | 94 +- .../TransferStatusNotification/index.tsx | 63 +- src/views/tables/FillsTable.tsx | 115 +- src/views/tables/FundingPaymentsTable.tsx | 45 +- src/views/tables/LiveTrades.tsx | 43 +- src/views/tables/MarketsCompactTable.tsx | 329 ++ src/views/tables/MarketsTable.tsx | 269 +- src/views/tables/Orderbook.tsx | 114 +- src/views/tables/OrderbookTradesTable.tsx | 18 +- src/views/tables/OrdersTable.tsx | 154 +- .../tables/OrdersTable/OrderActionsCell.tsx | 77 +- src/views/tables/PositionsTable.tsx | 339 +- .../PositionsTable/PositionsActionsCell.tsx | 120 + .../PositionsTable/PositionsMarginCell.tsx | 76 + .../PositionsTable/PositionsTriggersCell.tsx | 300 ++ .../tables/TradingRewardHistoryTable.tsx | 49 +- src/views/tables/TransferHistoryTable.tsx | 54 +- index.html => template.html | 15 +- tsconfig.json | 5 +- vercel.json | 9 +- vite.config.ts | 38 +- wdio.conf.ts | 372 ++ 534 files changed, 29347 insertions(+), 11066 deletions(-) create mode 100644 .git-blame-ignore-revs create mode 100644 .github/workflows/commitlint.yml create mode 100644 .github/workflows/run-e2e.yml create mode 100644 .github/workflows/update-release.yml create mode 100644 .github/workflows/validate-other-market-data.yml create mode 100644 .husky/pre-commit create mode 100644 .nvmrc create mode 100644 __tests__/e2e/test.e2e.ts create mode 100644 __tests__/tsconfig.json create mode 100644 commitlint.config.ts create mode 100644 public/configs/otherMarketData.json delete mode 100644 public/configs/otherMarketExchangeConfig.json delete mode 100644 public/configs/otherMarketParameters.json create mode 100644 public/currencies/aevo.png create mode 100644 public/currencies/api3.png create mode 100644 public/currencies/arkm.png create mode 100644 public/currencies/astr.png create mode 100644 public/currencies/axl.png create mode 100644 public/currencies/bome.png create mode 100644 public/currencies/ethfi.png create mode 100644 public/currencies/flr.png create mode 100644 public/currencies/magic.png create mode 100644 public/currencies/meme.png create mode 100644 public/currencies/ocean.png create mode 100644 public/currencies/portal.png create mode 100644 public/currencies/ton.png create mode 100644 public/currencies/wif.png create mode 100644 public/og-image.png create mode 100755 scripts/generate-entry-points.js create mode 100644 scripts/install-local-abacus.js create mode 100755 scripts/set-last-commit-and-tag.sh create mode 100644 scripts/validate-other-market-data.ts create mode 100644 src/components/GradientCard.tsx create mode 100644 src/components/NumberValue.tsx create mode 100644 src/components/PotentialPositionCard.tsx create mode 100644 src/components/RadioButtonCards.stories.tsx create mode 100644 src/components/RadioButtonCards.tsx create mode 100644 src/components/Slider.tsx create mode 100644 src/components/Table/ActionsTableCell.tsx create mode 100644 src/components/Table/AssetTableCell.tsx create mode 100644 src/components/Table/TablePaginationRow.tsx create mode 100644 src/components/WithHovercard.stories.tsx create mode 100644 src/components/WithHovercard.tsx create mode 100644 src/components/visx/SparklineChart.tsx create mode 100644 src/constants/cctp.ts create mode 100644 src/constants/compliance.ts create mode 100644 src/constants/geo.ts create mode 100644 src/constants/objects.ts create mode 100644 src/constants/tooltips/triggers.ts delete mode 100644 src/constants/websocket.ts delete mode 100644 src/hooks/index.ts create mode 100644 src/hooks/useComplianceState.tsx create mode 100644 src/hooks/useEndpointsConfig.ts create mode 100644 src/hooks/useEnvFeatures.ts create mode 100644 src/hooks/usePerpetualMarketSparklines.ts create mode 100644 src/hooks/usePerpetualMarketsStats.ts create mode 100644 src/hooks/useQueryChaosLabsIncentives.ts create mode 100644 src/hooks/useSignForWalletDerivation.tsx create mode 100644 src/hooks/useTablePagination.ts create mode 100644 src/hooks/useTriggerOrdersFormInputs.ts create mode 100644 src/hooks/useWithdrawalInfo.ts create mode 100644 src/icons/download.svg create mode 100644 src/icons/trade/position-partial.svg create mode 100644 src/icons/wallets/apple.svg create mode 100644 src/icons/wallets/discord.svg create mode 100644 src/icons/wallets/email.svg create mode 100644 src/icons/wallets/google.svg create mode 100644 src/icons/wallets/twitter.svg create mode 100644 src/lib/__test__/formatZeroNumbers.spec.ts create mode 100644 src/lib/abacus/logger.ts create mode 100644 src/lib/assertNever.ts create mode 100644 src/lib/compliance.ts create mode 100644 src/lib/csv.ts create mode 100644 src/lib/formatZeroNumbers.ts create mode 100644 src/lib/genericFunctionalComponentUtils.ts create mode 100644 src/lib/positions.ts create mode 100644 src/lib/typeUtils.ts create mode 100644 src/pages/trade/UnopenedIsolatedPositions.tsx create mode 100644 src/services/index.ts create mode 100644 src/services/numia.ts create mode 100644 src/styles/styled.d.ts create mode 100644 src/views/ExportHistoryDropdown.tsx create mode 100644 src/views/MarketsStats.tsx create mode 100644 src/views/dialogs/AdjustIsolatedMarginDialog.tsx create mode 100644 src/views/dialogs/AdjustTargetLeverageDialog.tsx create mode 100644 src/views/dialogs/ComplianceConfigDialog.tsx create mode 100644 src/views/dialogs/GeoComplianceDialog.tsx create mode 100644 src/views/dialogs/SelectMarginModeDialog.tsx create mode 100644 src/views/dialogs/TriggersDialog.tsx create mode 100644 src/views/dialogs/WithdrawalGateDialog.tsx create mode 100644 src/views/forms/AdjustIsolatedMarginForm.tsx create mode 100644 src/views/forms/AdjustTargetLeverageForm.tsx create mode 100644 src/views/forms/SelectMarginModeForm.tsx create mode 100644 src/views/forms/TriggersForm/AdvancedTriggersOptions.tsx create mode 100644 src/views/forms/TriggersForm/LimitPriceInputs.tsx create mode 100644 src/views/forms/TriggersForm/OrderSizeInput.tsx create mode 100644 src/views/forms/TriggersForm/OrderSizeSlider.stories.tsx create mode 100644 src/views/forms/TriggersForm/OrderSizeSlider.tsx create mode 100644 src/views/forms/TriggersForm/TriggerOrderInputs.tsx create mode 100644 src/views/forms/TriggersForm/TriggerOrdersInputs.tsx create mode 100644 src/views/forms/TriggersForm/TriggersForm.tsx create mode 100644 src/views/notifications/IncentiveSeasonDistributionNotification.tsx create mode 100644 src/views/notifications/OrderCancelNotification.tsx create mode 100644 src/views/notifications/OrderStatusNotification.tsx create mode 100644 src/views/notifications/TradeNotification/FillDetails.tsx create mode 100644 src/views/tables/MarketsCompactTable.tsx create mode 100644 src/views/tables/PositionsTable/PositionsActionsCell.tsx create mode 100644 src/views/tables/PositionsTable/PositionsMarginCell.tsx create mode 100644 src/views/tables/PositionsTable/PositionsTriggersCell.tsx rename index.html => template.html (67%) create mode 100644 wdio.conf.ts diff --git a/.env.example b/.env.example index b48a7d5e3..137053bed 100644 --- a/.env.example +++ b/.env.example @@ -2,11 +2,14 @@ VITE_BASE_URL= VITE_ALCHEMY_API_KEY= +VITE_PRIVY_APP_ID= + VITE_PK_ENCRYPTION_KEY= VITE_ROUTER_TYPE= VITE_V3_TOKEN_ADDRESS= VITE_TOKEN_MIGRATION_URI= +VITE_NUMIA_BASE_URL= AMPLITUDE_API_KEY= AMPLITUDE_SERVER_URL= diff --git a/.eslintignore b/.eslintignore index 6b2c0fe2a..49959a3b9 100644 --- a/.eslintignore +++ b/.eslintignore @@ -2,13 +2,13 @@ vite-env.d.ts polyfills.ts vite.config.ts +commitlint.config.ts # Temporarily ignore, we will slowly remove each directory as we fix files to follow ESLint rules -/src/components -/src/forms -/src/hooks -/src/lib -/src/main.tsx -/src/menus -/src/pages -/src/views +/src/views/forms + +# components dir is being worked on +/src/components/* + +# unignored components +!/src/components/Table.tsx \ No newline at end of file diff --git a/.eslintrc.json b/.eslintrc.json index 943c7b712..97098d8b1 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -25,7 +25,7 @@ "import/no-extraneous-dependencies": [ "error", { - "devDependencies": ["./scripts/*.js"] + "devDependencies": ["./scripts/*.js", "./__tests__/**/*.ts", "./src/lib/__test__/**/*.ts"] } ], "import/no-named-as-default": "off", @@ -44,6 +44,7 @@ "no-use-before-define": "off", "prefer-destructuring": "off", "prettier/prettier": "error", + "react/display-name": "off", "react/forbid-prop-types": "off", "react/function-component-definition": [ "error", @@ -60,9 +61,11 @@ "react/react-in-jsx-scope": "off", "react/require-default-props": "off", "react/sort-comp": "off", + "react/jsx-pascal-case": "off", "@typescript-eslint/no-use-before-define": "off", "@typescript-eslint/comma-dangle": "off", "@typescript-eslint/no-unused-vars": "error", + "@typescript-eslint/prefer-nullish-coalescing": "error", "@typescript-eslint/member-delimiter-style": [ "error", { diff --git a/.git-blame-ignore-revs b/.git-blame-ignore-revs new file mode 100644 index 000000000..b2c6c7fff --- /dev/null +++ b/.git-blame-ignore-revs @@ -0,0 +1,2 @@ +# prettier update +b5c3cd5bca0b775d3e471844f461e4a431e66df6 \ No newline at end of file diff --git a/.github/workflows/commitlint.yml b/.github/workflows/commitlint.yml new file mode 100644 index 000000000..2a0a56ecd --- /dev/null +++ b/.github/workflows/commitlint.yml @@ -0,0 +1,30 @@ +name: Lint PR Title +on: + pull_request: + types: ['opened', 'edited', 'reopened', 'synchronize'] + +jobs: + lint: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Set up pnpm + uses: dydxprotocol/setup-pnpm@v1 + + - name: Set up Node + uses: actions/setup-node@v3 + with: + node-version: 18 + cache: pnpm + + - name: Install dependencies + run: | + pnpm install @commitlint/config-conventional + + - name: Lint PR Title + run: | + echo "${PR_TITLE}" | pnpx commitlint --config commitlint.config.ts + env: + PR_TITLE: '${{ github.event.pull_request.title }}' diff --git a/.github/workflows/run-e2e.yml b/.github/workflows/run-e2e.yml new file mode 100644 index 000000000..29d8bd66a --- /dev/null +++ b/.github/workflows/run-e2e.yml @@ -0,0 +1,51 @@ +name: E2E Tests + +on: + deployment_status: +jobs: + run-e2es: + runs-on: ubuntu-latest + if: > + github.event_name == 'deployment_status' && + github.event.deployment_status.state == 'success' + steps: + - name: Check environment URL + id: check_env + run: | + if [[ "${{ github.event.deployment_status.environment_url }}" == *"v4-staging"* ]]; then + echo "::set-output name=should_run_tests::true" + else + echo "::set-output name=should_run_tests::false" + echo "This deployment does not require E2E tests. Exiting..." + fi + + - name: Checkout + if: steps.check_env.outputs.should_run_tests == 'true' + uses: actions/checkout@v3 + + - name: Set up pnpm + if: steps.check_env.outputs.should_run_tests == 'true' + uses: dydxprotocol/setup-pnpm@v1 + + - name: Set up Node + if: steps.check_env.outputs.should_run_tests == 'true' + uses: actions/setup-node@v3 + with: + node-version: 18 + cache: pnpm + + - name: Install dependencies + if: steps.check_env.outputs.should_run_tests == 'true' + env: + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} + run: | + pnpm install --loglevel warn + + - name: Run e2e tests + if: steps.check_env.outputs.should_run_tests == 'true' + env: + BROWSERSTACK_USERNAME: ${{ secrets.BROWSERSTACK_USERNAME }} + BROWSERSTACK_ACCESS_KEY: ${{ secrets.BROWSERSTACK_ACCESS_KEY }} + E2E_ENVIRONMENT_PASSWORD: ${{ secrets.E2E_ENVIRONMENT_PASSWORD }} + E2E_ENVIRONMENT_URL: ${{ github.event.deployment_status.environment_url }} + run: pnpm run wdio diff --git a/.github/workflows/update-release.yml b/.github/workflows/update-release.yml new file mode 100644 index 000000000..87cd84fea --- /dev/null +++ b/.github/workflows/update-release.yml @@ -0,0 +1,44 @@ +name: Workflow for Release + +on: + push: + tags: + - 'release/v*' + - 'hotfix/v*' + +jobs: + sync-release-branch: + runs-on: ubuntu-latest + + permissions: + contents: write + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + fetch-depth: 0 + token: ${{ secrets.WORKFLOW_TOKEN }} + + - name: Fetch all history + run: git fetch --unshallow || git fetch --all + + - name: Determine Tag Type + id: tagtype + run: | + if [[ ${{ github.ref }} == refs/tags/release/v* ]]; then + echo "::set-output name=type::release" + elif [[ ${{ github.ref }} == refs/tags/hotfix/v* ]]; then + echo "::set-output name=type::hotfix" + fi + + - name: Check out the release branch + run: | + git checkout release || git checkout -b release + + - name: Sync release branch to tag + env: + GITHUB_TOKEN: ${{ secrets.WORKFLOW_TOKEN }} + run: | + git reset --hard ${{ github.ref }} + git push -f origin release diff --git a/.github/workflows/validate-other-market-data.yml b/.github/workflows/validate-other-market-data.yml new file mode 100644 index 000000000..d774fc435 --- /dev/null +++ b/.github/workflows/validate-other-market-data.yml @@ -0,0 +1,52 @@ +name: Validate Other Market Data + +on: + pull_request: + paths: + - 'public/configs/otherMarketData.json' + - 'scripts/validate-other-market-data.ts' + +jobs: + validate: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Set up pnpm + uses: dydxprotocol/setup-pnpm@v1 + + - name: Set up Node + uses: actions/setup-node@v3 + with: + node-version: 18 + cache: pnpm + + - name: Install dependencies + env: + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} + run: | + pnpm install --loglevel warn + + - name: Install Go + uses: actions/setup-go@v3 + with: + go-version: 1.21 + + - name: Checkout v4-chain repo + uses: actions/checkout@v3 + with: + repository: 'dydxprotocol/v4-chain' + ref: 'd4e0f0d1ac28f128c787e40c5a0cdc7c481e6c42' + path: 'v4-chain' + + - name: Start v4 localnet + run: | + cd v4-chain/protocol + echo "Building v4-chain/protocol..." + make build + echo "Starting localnet..." + DOCKER_BUILDKIT=1 make localnet-startd + + - name: Validate other market data + run: pnpx tsx scripts/validate-other-market-data.ts diff --git a/.gitignore b/.gitignore index 27e504ade..047ac2ff2 100644 --- a/.gitignore +++ b/.gitignore @@ -15,6 +15,9 @@ dist-ssr *.key .env +index.html +entry_points/ + # Editor directories and files .vscode/* !.vscode/extensions.json @@ -30,3 +33,5 @@ dist-ssr # Charting Library public/tradingview public/datafeed + +local-abacus-hash diff --git a/.husky/pre-commit b/.husky/pre-commit new file mode 100644 index 000000000..98475b507 --- /dev/null +++ b/.husky/pre-commit @@ -0,0 +1 @@ +pnpm test diff --git a/.ladle/components.tsx b/.ladle/components.tsx index b8e857461..f8b22dc29 100644 --- a/.ladle/components.tsx +++ b/.ladle/components.tsx @@ -1,17 +1,20 @@ import '@/polyfills'; + import { useEffect, useState } from 'react'; + +import '@/index.css'; +import { GrazProvider } from 'graz'; +import { QueryClient, QueryClientProvider } from 'react-query'; import { Provider } from 'react-redux'; import styled from 'styled-components'; import { WagmiConfig } from 'wagmi'; -import { GrazProvider } from 'graz'; -import { QueryClient, QueryClientProvider } from 'react-query'; import { SupportedLocales } from '@/constants/localization'; import { AccountsProvider } from '@/hooks/useAccounts'; import { AppThemeAndColorModeProvider } from '@/hooks/useAppThemeAndColorMode'; -import { DydxProvider } from '@/hooks/useDydxClient'; import { DialogAreaProvider } from '@/hooks/useDialogArea'; +import { DydxProvider } from '@/hooks/useDydxClient'; import { LocaleProvider } from '@/hooks/useLocaleSeparators'; import { PotentialMarketsProvider } from '@/hooks/usePotentialMarkets'; import { RestrictionProvider } from '@/hooks/useRestrictions'; @@ -19,22 +22,20 @@ import { SubaccountProvider } from '@/hooks/useSubaccount'; import { GlobalStyle } from '@/styles/globalStyle'; -import { SelectMenu, SelectItem } from '@/components/SelectMenu'; +import { SelectItem, SelectMenu } from '@/components/SelectMenu'; +import { store } from '@/state/_store'; import { + AppColorMode, AppTheme, AppThemeSystemSetting, - AppColorMode, - setAppThemeSetting, setAppColorMode, + setAppThemeSetting, } from '@/state/configs'; - import { setLocaleLoaded, setSelectedLocale } from '@/state/localization'; -import { store } from '@/state/_store'; import { config } from '@/lib/wagmi'; -import '@/index.css'; import './ladle.css'; const queryClient = new QueryClient(); diff --git a/.nvmrc b/.nvmrc new file mode 100644 index 000000000..a4a60ea7d --- /dev/null +++ b/.nvmrc @@ -0,0 +1,2 @@ +18 +engine-strict=true diff --git a/.prettierrc.json b/.prettierrc.json index ab7b77859..c9605d1a5 100644 --- a/.prettierrc.json +++ b/.prettierrc.json @@ -2,5 +2,19 @@ "printWidth": 100, "singleQuote": true, "trailingComma": "es5", - "jsxBracketSameLine": false + "jsxBracketSameLine": false, + "plugins": ["@trivago/prettier-plugin-sort-imports"], + "importOrder": [ + "^./polyfills$", + "^react$", + "<THIRD_PARTY_MODULES>", + "^@/(constants|abi)(.*)$", + "^@/(hooks|contexts)(.*)$", + "^@/(styles|icons)(.*)$", + "^@/(components|views|pages|layout)(.*)$", + "^@/state(.*)$", + "^@/lib(.*)$", + "^[./]" + ], + "importOrderSeparation": true } diff --git a/.vscode/settings.json b/.vscode/settings.json index d42566a8a..4a4b1b572 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,3 +1,13 @@ { - "explorer.sortOrder": "mixed" -} \ No newline at end of file + "explorer.sortOrder": "mixed", + "editor.defaultFormatter": "esbenp.prettier-vscode", + "editor.formatOnSave": true, + "files.watcherExclude": { + "**/.git": true, + "**/node_modules/*": true, + "**/node_modules/@dydxprotocol/v4-abacus": false + }, + "editor.codeActionsOnSave": { + "source.organizeImports": "explicit" + } +} diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 1f779958e..2b8ef54ed 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -17,6 +17,32 @@ Pull requests are the best way to propose changes to the codebase (we use [Githu 3. Make sure your code lints. 4. Issue that pull request! +## We use [Conventional Commits](https://github.com/conventional-changelog/commitlint) +We use a commit-msg hook to check if your commit messages meet the conventional commit format. + +In general the pattern mostly looks like this: + +`type(scope?): subject` #scope is optional; multiple scopes are supported (current delimiter options: "/", "\" and ",") + +### Real world examples can look like this: +`chore: run tests on travis ci` +`fix(server): send cors headers` +`feat(blog): add comment section` + +Common types according to commitlint-config-conventional can be: + +build +chore +ci +docs +feat +fix +perf +refactor +revert +style +test + ## Any contributions you make will be under the same License When you submit code changes, your submissions are understood to be under the same [License](https://github.com/dydxprotocol/v4-web/blob/master/LICENSE) that covers the project. diff --git a/README.md b/README.md index 39fb04c72..fb2a4936f 100644 --- a/README.md +++ b/README.md @@ -64,7 +64,11 @@ This will automatically open your default browser at `http://localhost:61000`. ## Part 3: Configuring environment -Add or modify the relevant endpoints, links and options in `/public/configs/env.json`. +Add or modify the relevant endpoints, links and options in `/public/configs/v1/env.json`. + +NOTE: There exists a deprecated file `/public/configs/env.json`. If you have users running older mobile versions you may +need to keep feature flags between the two files in sync but may otherwise ignore it. + You'll need to provide a Wallet Connect project id to enable onboarding and wallet connection: - Create a project on https://cloud.walletconnect.com/app @@ -86,6 +90,90 @@ Set environment variables via `.env`. - `INTERCOM_APP_ID` (optional): Used for enabling Intercom; utilized with `pnpm run build:inject-intercom`. - `STATUS_PAGE_SCRIPT_URI` (optional): Used for enabling the status page; used with `pnpm run build:inject-statuspage`. - `SMARTBANNER_APP_NAME`, `SMARTBANNER_ORG_NAME`, `SMARTBANNER_ICON_URL`, `SMARTBANNER_APPSTORE_URL` (optional): Used for enabling the smart app banner; used with `pnpm run build:inject-smartbanner`. +- `VITE_PRIVY_APP_ID` (optional): App ID used for enabling Privy authentication. For deployment of DYDX token holders use `clua5njf801bncvpa0woolzq4`. + +## Part 5: Configure entry points + +### HTML files + +Edit `scripts/generate-entry-points.js` and set up entry points according to your SEO needs. At least one entry point must be configured, +i.e. at least one element must be present in the `ENTRY_POINTS` array. This array consists of objects of the form: + +``` +{ + title: 'Page title', + description: 'Page description.', + fileName: 'HTML entry point file name, e.g.: index.html', +}, +``` + +The build script will traverse these entries and create files in `entry-points` directory, modifying the `template.html` file accordingly +for each entry. The `rollupOptions` config option in `vite.config.ts` informs the framework about the location of all the entry points +created above. + +### Rewrite rules + +Edit `vercel.json` and configure the `rewrites` configuration option. It is an array of objects of the form: + +``` + { + "source": "Regexp for matching the URL path, e.g.: /portfolio(/?.*)", + "destination": "Entry point file to use, e.g.: /entry-points/portfolio.html" + }, +``` + +Note: The first matching rule takes precedence over anything defined afterwards in the array. + +# Testing + +## Unit testing + +Run unit tests with the following command: `pnpm run test` + +## Functional Testing + +Functional testing is supported via Browserstack. To run the tests you need to set the following environment variables: + +- `BROWSERSTACK_USERNAME`: username of your browserstack account +- `BROWSERSTACK_ACCESS_KEY`: access key of your browserstack account +- `E2E_ENVIRONMENT_URL`: the URL you want to run the functional tests against + +To run the tests run: `pnpm run wdio` + +# Local Abacus Development + +## Directory structure + +Our tooling assumes that the [v4-abacus repo](https://github.com/dydxprotocol/v4-abacus) is checked out alongside v4-web: + +``` +--- parent folder + |___ v4-web + |___ v4-abacus +``` + +## Using your local v4-abacus repo + +Whenever you have changes in v4-abacus that you'd like to test in your local v4-web branch, use the following command: + +``` +pnpm run install-local-abacus --clean +``` + +The `--clean` option will do some extra cleaning, **it is not needed on subsequent runs.** + +## Reverting to remote abacus + +Revert any changes to @dydxprotocol/v4-abacus in package.json and pnpm-lock.yaml. If you haven't made any other package changes, you can use: + +``` +git restore main package.json +git restore main pnpm-lock.yaml +``` + +Then run `pnpm install` + +**Remember to revert to remote abacus before making a PR.** # Deployments diff --git a/__tests__/e2e/test.e2e.ts b/__tests__/e2e/test.e2e.ts new file mode 100644 index 000000000..1ec07ac1f --- /dev/null +++ b/__tests__/e2e/test.e2e.ts @@ -0,0 +1,15 @@ +import { $, browser, expect } from '@wdio/globals'; + +describe('Smoke test', () => { + it('should authenticate with vercel and load website', async () => { + await browser.url(process.env.E2E_ENVIRONMENT_URL || ''); + browser.setWindowSize(1920, 1080); + + await $('input[type=password]').setValue(process.env.E2E_ENVIRONMENT_PASSWORD || ''); + await $('button.submit').click(); + + await expect($('main')).toBeExisting(); + await expect($('header')).toBeExisting(); + await expect($('footer')).toBeExisting(); + }); +}); diff --git a/__tests__/tsconfig.json b/__tests__/tsconfig.json new file mode 100644 index 000000000..3c43903cf --- /dev/null +++ b/__tests__/tsconfig.json @@ -0,0 +1,3 @@ +{ + "extends": "../tsconfig.json" +} diff --git a/commitlint.config.ts b/commitlint.config.ts new file mode 100644 index 000000000..9d7fff982 --- /dev/null +++ b/commitlint.config.ts @@ -0,0 +1,8 @@ +export default { + extends: ['@commitlint/config-conventional'], + rules: { + 'subject-case': [0, 'never'], + 'header-max-length': [2, 'always', 120], + 'body-max-line-length': [0, 'always', 120], + }, +}; diff --git a/package.json b/package.json index 7838064ea..a52154537 100644 --- a/package.json +++ b/package.json @@ -8,28 +8,34 @@ "node": ">=18" }, "scripts": { - "dev": "vite", - "build": "vite build", + "dev": "cp ./template.html ./index.html && vite", + "build": "pnpm run build:set-last-commit-and-tag && pnpm run build:generate-entry-points && tsc && vite build", "build:inject-app-deeplinks": "sh scripts/inject-app-deeplinks.sh", "build:inject-amplitude": "node scripts/inject-amplitude.js", "build:inject-bugsnag": "node scripts/inject-bugsnag.js", "build:inject-intercom": "node scripts/inject-intercom.js", "build:inject-statuspage": "node scripts/inject-statuspage.js", "build:inject-smartbanner": "node scripts/inject-smartbanner.js", + "build:set-last-commit-and-tag": "sh scripts/set-last-commit-and-tag.sh", + "build:generate-entry-points": "node scripts/generate-entry-points.js", "deploy:ipfs": "node scripts/upload-ipfs.js --verbose", "deploy:update-ipns": "node scripts/update-ipns.js", "deploy:update-dnslink": "node scripts/update-dnslink.js", "coverage": "vitest run --coverage", "clean-install": "rm -rf node_modules/ && pnpm i", "preview": "vite preview", + "install-local-abacus": "node scripts/install-local-abacus", "ladle": "ladle serve", "ladle-b": "ladle build", "ladle-p": "ladle preview", "lint": "eslint --ext .ts,.tsx src/", "fix-lint": "eslint --fix --ext .ts,.tsx src/", - "test": "vitest", + "test": "vitest run", "tsc": "tsc", - "postinstall": "tar -xzC public -f tradingview/tradingview.tgz" + "postinstall": "tar -xzC public -f tradingview/tradingview.tgz", + "prepare": "husky", + "commitlint": "commitlint --edit", + "wdio": "wdio run ./wdio.conf.ts" }, "packageManager": "pnpm@8.6.6", "dependencies": { @@ -40,16 +46,19 @@ "@cosmjs/proto-signing": "^0.32.1", "@cosmjs/stargate": "^0.32.1", "@cosmjs/tendermint-rpc": "^0.32.1", - "@dydxprotocol/v4-abacus": "^1.4.13", - "@dydxprotocol/v4-client-js": "^1.0.20", - "@dydxprotocol/v4-localization": "^1.1.35", + "@dydxprotocol/v4-abacus": "1.7.18", + "@dydxprotocol/v4-client-js": "^1.1.10", + "@dydxprotocol/v4-localization": "^1.1.86", "@ethersproject/providers": "^5.7.2", "@js-joda/core": "^5.5.3", + "@privy-io/react-auth": "^1.59.7", + "@privy-io/wagmi-connector": "^0.1.12", "@radix-ui/react-accordion": "^1.1.2", "@radix-ui/react-checkbox": "^1.0.4", "@radix-ui/react-collapsible": "^1.0.3", "@radix-ui/react-dialog": "^1.0.4", "@radix-ui/react-dropdown-menu": "^2.0.5", + "@radix-ui/react-hover-card": "^1.0.7", "@radix-ui/react-icons": "^1.3.0", "@radix-ui/react-navigation-menu": "^1.1.3", "@radix-ui/react-popover": "^1.0.6", @@ -96,10 +105,12 @@ "cosmjs-types": "^0.9.0", "crypto-js": "^4.1.1", "ethers": "^6.6.1", + "export-to-csv": "^1.2.3", "graz": "^0.0.43", "lodash": "^4.17.21", "long": "^5.2.3", "luxon": "^3.3.0", + "prometheus-query": "^3.4.0", "qr-code-styling": "1.6.0-rc.1", "query-string": "^8.1.0", "react": "^18.2.0", @@ -118,17 +129,32 @@ }, "devDependencies": { "@babel/core": "^7.22.5", + "@commitlint/cli": "^19.0.3", + "@commitlint/config-conventional": "^19.0.3", + "@dydxprotocol/v4-proto": "5.0.0-dev.0", "@ladle/react": "^4.0.2", + "@testing-library/webdriverio": "^3.2.1", + "@trivago/prettier-plugin-sort-imports": "^4.3.0", "@types/color": "^3.0.3", "@types/crypto-js": "^4.1.1", "@types/luxon": "^3.3.0", + "@types/mocha": "^10.0.6", "@types/node": "^20.3.1", "@types/react": "^18.2.14", "@types/react-dom": "^18.2.6", "@typescript-eslint/eslint-plugin": "^5.60.0", "@typescript-eslint/parser": "^5.60.0", "@vitejs/plugin-react": "^4.0.1", + "@wdio/browserstack-service": "^8.32.4", + "@wdio/cli": "^8.32.4", + "@wdio/globals": "^8.32.4", + "@wdio/local-runner": "^8.32.4", + "@wdio/mocha-framework": "^8.32.4", + "@wdio/spec-reporter": "^8.32.4", + "@wdio/types": "^8.32.4", + "ajv": "^8.12.0", "assert": "^2.0.0", + "axios": "^1.6.7", "babel-loader": "^9.1.2", "babel-plugin-styled-components": "^2.1.4", "browserify-zlib": "^0.2.0", @@ -145,17 +171,23 @@ "eslint-plugin-promise": "^6.1.1", "eslint-plugin-react": "^7.32.2", "eslint-plugin-react-hooks": "^4.6.0", + "husky": "^9.0.11", "minimist": "^1.2.8", "node-fetch": "^3.3.1", "pnpm": "^8.6.6", "prettier": "^2.8.8", + "rollup-plugin-sourcemaps": "^0.6.3", + "ts-node": "^10.9.2", + "tsx": "^4.7.1", "typescript": "^5.1.3", "url-polyfill": "^1.1.12", "util": "^0.12.5", "vite": "^4.3.9", + "vite-plugin-restart": "^0.4.0", "vite-plugin-svgr": "^3.2.0", "vitest": "^0.32.2", "w3name": "^1.0.8", + "wdio-wait-for": "^3.0.11", "web3.storage": "^4.5.4" }, "pnpm": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 28af4c6cb..10e1dc76d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -30,20 +30,26 @@ dependencies: specifier: ^0.32.1 version: 0.32.2 '@dydxprotocol/v4-abacus': - specifier: ^1.4.13 - version: 1.4.13 + specifier: 1.7.18 + version: 1.7.18 '@dydxprotocol/v4-client-js': - specifier: ^1.0.20 - version: 1.0.20 + specifier: ^1.1.10 + version: 1.1.10 '@dydxprotocol/v4-localization': - specifier: ^1.1.35 - version: 1.1.35 + specifier: ^1.1.86 + version: 1.1.86 '@ethersproject/providers': specifier: ^5.7.2 version: 5.7.2 '@js-joda/core': specifier: ^5.5.3 version: 5.5.3 + '@privy-io/react-auth': + specifier: ^1.59.7 + version: 1.59.9(@babel/core@7.22.5)(@types/react@18.2.14)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(typescript@5.1.3) + '@privy-io/wagmi-connector': + specifier: ^0.1.12 + version: 0.1.13(@privy-io/react-auth@1.59.9)(react-dom@18.2.0)(react@18.2.0)(viem@1.20.0)(wagmi@1.4.13) '@radix-ui/react-accordion': specifier: ^1.1.2 version: 1.1.2(@types/react-dom@18.2.6)(@types/react@18.2.14)(react-dom@18.2.0)(react@18.2.0) @@ -59,6 +65,9 @@ dependencies: '@radix-ui/react-dropdown-menu': specifier: ^2.0.5 version: 2.0.5(@types/react-dom@18.2.6)(@types/react@18.2.14)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-hover-card': + specifier: ^1.0.7 + version: 1.0.7(@types/react-dom@18.2.6)(@types/react@18.2.14)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-icons': specifier: ^1.3.0 version: 1.3.0(react@18.2.0) @@ -209,6 +218,9 @@ dependencies: luxon: specifier: ^3.3.0 version: 3.3.0 + prometheus-query: + specifier: ^3.4.0 + version: 3.4.0 qr-code-styling: specifier: 1.6.0-rc.1 version: 1.6.0-rc.1 @@ -259,9 +271,24 @@ devDependencies: '@babel/core': specifier: ^7.22.5 version: 7.22.5 + '@commitlint/cli': + specifier: ^19.0.3 + version: 19.0.3(@types/node@20.3.1)(typescript@5.1.3) + '@commitlint/config-conventional': + specifier: ^19.0.3 + version: 19.0.3 + '@dydxprotocol/v4-proto': + specifier: 5.0.0-dev.0 + version: 5.0.0-dev.0 '@ladle/react': specifier: ^4.0.2 version: 4.0.2(@types/node@20.3.1)(@types/react@18.2.14)(react-dom@18.2.0)(react@18.2.0)(typescript@5.1.3) + '@testing-library/webdriverio': + specifier: ^3.2.1 + version: 3.2.1(webdriverio@8.33.1) + '@trivago/prettier-plugin-sort-imports': + specifier: ^4.3.0 + version: 4.3.0(prettier@2.8.8) '@types/color': specifier: ^3.0.3 version: 3.0.3 @@ -271,6 +298,9 @@ devDependencies: '@types/luxon': specifier: ^3.3.0 version: 3.3.0 + '@types/mocha': + specifier: ^10.0.6 + version: 10.0.6 '@types/node': specifier: ^20.3.1 version: 20.3.1 @@ -289,9 +319,36 @@ devDependencies: '@vitejs/plugin-react': specifier: ^4.0.1 version: 4.0.1(vite@4.3.9) + '@wdio/browserstack-service': + specifier: ^8.32.4 + version: 8.33.1(@wdio/cli@8.33.1)(typescript@5.1.3) + '@wdio/cli': + specifier: ^8.32.4 + version: 8.33.1(typescript@5.1.3) + '@wdio/globals': + specifier: ^8.32.4 + version: 8.33.1(typescript@5.1.3) + '@wdio/local-runner': + specifier: ^8.32.4 + version: 8.33.1(typescript@5.1.3) + '@wdio/mocha-framework': + specifier: ^8.32.4 + version: 8.33.1 + '@wdio/spec-reporter': + specifier: ^8.32.4 + version: 8.32.4 + '@wdio/types': + specifier: ^8.32.4 + version: 8.32.4 + ajv: + specifier: ^8.12.0 + version: 8.12.0 assert: specifier: ^2.0.0 version: 2.0.0 + axios: + specifier: ^1.6.7 + version: 1.6.7 babel-loader: specifier: ^9.1.2 version: 9.1.2(@babel/core@7.22.5)(webpack@5.89.0) @@ -340,6 +397,9 @@ devDependencies: eslint-plugin-react-hooks: specifier: ^4.6.0 version: 4.6.0(eslint@8.43.0) + husky: + specifier: ^9.0.11 + version: 9.0.11 minimist: specifier: ^1.2.8 version: 1.2.8 @@ -352,6 +412,15 @@ devDependencies: prettier: specifier: ^2.8.8 version: 2.8.8 + rollup-plugin-sourcemaps: + specifier: ^0.6.3 + version: 0.6.3(@types/node@20.3.1)(rollup@2.79.1) + ts-node: + specifier: ^10.9.2 + version: 10.9.2(@types/node@20.3.1)(typescript@5.1.3) + tsx: + specifier: ^4.7.1 + version: 4.7.1 typescript: specifier: ^5.1.3 version: 5.1.3 @@ -364,15 +433,21 @@ devDependencies: vite: specifier: ^4.3.9 version: 4.3.9(@types/node@20.3.1) + vite-plugin-restart: + specifier: ^0.4.0 + version: 0.4.0(vite@4.3.9) vite-plugin-svgr: specifier: ^3.2.0 - version: 3.2.0(vite@4.3.9) + version: 3.2.0(rollup@2.79.1)(vite@4.3.9) vitest: specifier: ^0.32.2 - version: 0.32.2 + version: 0.32.2(webdriverio@8.33.1) w3name: specifier: ^1.0.8 version: 1.0.8 + wdio-wait-for: + specifier: ^3.0.11 + version: 3.0.11 web3.storage: specifier: ^4.5.4 version: 4.5.4(node-fetch@3.3.1) @@ -486,6 +561,15 @@ packages: - supports-color dev: true + /@babel/generator@7.17.7: + resolution: {integrity: sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.9 + jsesc: 2.5.2 + source-map: 0.5.7 + dev: true + /@babel/generator@7.22.10: resolution: {integrity: sha512-79KIf7YiWjjdZ81JnLujDRApWtl7BxTqWD88+FFdQEIOG8LJ0etDOM7CXuIgGJa55sGOwZVwuEsaLEm0PJ5/+A==} engines: {node: '>=6.9.0'} @@ -787,6 +871,24 @@ packages: transitivePeerDependencies: - supports-color + /@babel/traverse@7.23.2: + resolution: {integrity: sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.23.5 + '@babel/generator': 7.23.6 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/parser': 7.23.9 + '@babel/types': 7.23.9 + debug: 4.3.4(supports-color@5.5.0) + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + dev: true + /@babel/traverse@7.23.9: resolution: {integrity: sha512-I/4UJ9vs90OkBtY6iiiTORVMyIhJ4kAVmsKo9KFc8UOxMeUfi2hvtIBsET5u9GizXE6/GFSuKCTNfgCswuEjRg==} engines: {node: '>=6.9.0'} @@ -805,6 +907,14 @@ packages: - supports-color dev: true + /@babel/types@7.17.0: + resolution: {integrity: sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.22.20 + to-fast-properties: 2.0.0 + dev: true + /@babel/types@7.22.10: resolution: {integrity: sha512-obaoigiLrlDZ7TUQln/8m4mSqIW2QFeOrCQc9r+xsaHGNoplVNYlRVpsfE8Vj35GEm2ZH4ZhrNYogs/3fj85kg==} engines: {node: '>=6.9.0'} @@ -862,6 +972,189 @@ packages: - utf-8-validate dev: false + /@coinbase/wallet-sdk@3.9.3: + resolution: {integrity: sha512-N/A2DRIf0Y3PHc1XAMvbBUu4zisna6qAdqABMZwBMNEfWrXpAwx16pZGkYCLGE+Rvv1edbcB2LYDRnACNcmCiw==} + dependencies: + bn.js: 5.2.1 + buffer: 6.0.3 + clsx: 1.2.1 + eth-block-tracker: 7.1.0 + eth-json-rpc-filters: 6.0.1 + eventemitter3: 5.0.1 + keccak: 3.0.3 + preact: 10.17.0 + sha.js: 2.4.11 + transitivePeerDependencies: + - supports-color + dev: false + + /@colors/colors@1.6.0: + resolution: {integrity: sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==} + engines: {node: '>=0.1.90'} + dev: true + + /@commitlint/cli@19.0.3(@types/node@20.3.1)(typescript@5.1.3): + resolution: {integrity: sha512-mGhh/aYPib4Vy4h+AGRloMY+CqkmtdeKPV9poMcZeImF5e3knQ5VYaSeAM0mEzps1dbKsHvABwaDpafLUuM96g==} + engines: {node: '>=v18'} + hasBin: true + dependencies: + '@commitlint/format': 19.0.3 + '@commitlint/lint': 19.0.3 + '@commitlint/load': 19.0.3(@types/node@20.3.1)(typescript@5.1.3) + '@commitlint/read': 19.0.3 + '@commitlint/types': 19.0.3 + execa: 8.0.1 + yargs: 17.7.2 + transitivePeerDependencies: + - '@types/node' + - typescript + dev: true + + /@commitlint/config-conventional@19.0.3: + resolution: {integrity: sha512-vh0L8XeLaEzTe8VCxSd0gAFvfTK0RFolrzw4o431bIuWJfi/yRCHJlsDwus7wW2eJaFFDR0VFXJyjGyDQhi4vA==} + engines: {node: '>=v18'} + dependencies: + '@commitlint/types': 19.0.3 + conventional-changelog-conventionalcommits: 7.0.2 + dev: true + + /@commitlint/config-validator@19.0.3: + resolution: {integrity: sha512-2D3r4PKjoo59zBc2auodrSCaUnCSALCx54yveOFwwP/i2kfEAQrygwOleFWswLqK0UL/F9r07MFi5ev2ohyM4Q==} + engines: {node: '>=v18'} + dependencies: + '@commitlint/types': 19.0.3 + ajv: 8.12.0 + dev: true + + /@commitlint/ensure@19.0.3: + resolution: {integrity: sha512-SZEpa/VvBLoT+EFZVb91YWbmaZ/9rPH3ESrINOl0HD2kMYsjvl0tF7nMHh0EpTcv4+gTtZBAe1y/SS6/OhfZzQ==} + engines: {node: '>=v18'} + dependencies: + '@commitlint/types': 19.0.3 + lodash.camelcase: 4.3.0 + lodash.kebabcase: 4.1.1 + lodash.snakecase: 4.1.1 + lodash.startcase: 4.4.0 + lodash.upperfirst: 4.3.1 + dev: true + + /@commitlint/execute-rule@19.0.0: + resolution: {integrity: sha512-mtsdpY1qyWgAO/iOK0L6gSGeR7GFcdW7tIjcNFxcWkfLDF5qVbPHKuGATFqRMsxcO8OUKNj0+3WOHB7EHm4Jdw==} + engines: {node: '>=v18'} + dev: true + + /@commitlint/format@19.0.3: + resolution: {integrity: sha512-QjjyGyoiVWzx1f5xOteKHNLFyhyweVifMgopozSgx1fGNrGV8+wp7k6n1t6StHdJ6maQJ+UUtO2TcEiBFRyR6Q==} + engines: {node: '>=v18'} + dependencies: + '@commitlint/types': 19.0.3 + chalk: 5.3.0 + dev: true + + /@commitlint/is-ignored@19.0.3: + resolution: {integrity: sha512-MqDrxJaRSVSzCbPsV6iOKG/Lt52Y+PVwFVexqImmYYFhe51iVJjK2hRhOG2jUAGiUHk4jpdFr0cZPzcBkSzXDQ==} + engines: {node: '>=v18'} + dependencies: + '@commitlint/types': 19.0.3 + semver: 7.6.0 + dev: true + + /@commitlint/lint@19.0.3: + resolution: {integrity: sha512-uHPyRqIn57iIplYa5xBr6oNu5aPXKGC4WLeuHfqQHclwIqbJ33g3yA5fIA+/NYnp5ZM2EFiujqHFaVUYj6HlKA==} + engines: {node: '>=v18'} + dependencies: + '@commitlint/is-ignored': 19.0.3 + '@commitlint/parse': 19.0.3 + '@commitlint/rules': 19.0.3 + '@commitlint/types': 19.0.3 + dev: true + + /@commitlint/load@19.0.3(@types/node@20.3.1)(typescript@5.1.3): + resolution: {integrity: sha512-18Tk/ZcDFRKIoKfEcl7kC+bYkEQ055iyKmGsYDoYWpKf6FUvBrP9bIWapuy/MB+kYiltmP9ITiUx6UXtqC9IRw==} + engines: {node: '>=v18'} + dependencies: + '@commitlint/config-validator': 19.0.3 + '@commitlint/execute-rule': 19.0.0 + '@commitlint/resolve-extends': 19.0.3 + '@commitlint/types': 19.0.3 + chalk: 5.3.0 + cosmiconfig: 8.3.6(typescript@5.1.3) + cosmiconfig-typescript-loader: 5.0.0(@types/node@20.3.1)(cosmiconfig@8.3.6)(typescript@5.1.3) + lodash.isplainobject: 4.0.6 + lodash.merge: 4.6.2 + lodash.uniq: 4.5.0 + transitivePeerDependencies: + - '@types/node' + - typescript + dev: true + + /@commitlint/message@19.0.0: + resolution: {integrity: sha512-c9czf6lU+9oF9gVVa2lmKaOARJvt4soRsVmbR7Njwp9FpbBgste5i7l/2l5o8MmbwGh4yE1snfnsy2qyA2r/Fw==} + engines: {node: '>=v18'} + dev: true + + /@commitlint/parse@19.0.3: + resolution: {integrity: sha512-Il+tNyOb8VDxN3P6XoBBwWJtKKGzHlitEuXA5BP6ir/3loWlsSqDr5aecl6hZcC/spjq4pHqNh0qPlfeWu38QA==} + engines: {node: '>=v18'} + dependencies: + '@commitlint/types': 19.0.3 + conventional-changelog-angular: 7.0.0 + conventional-commits-parser: 5.0.0 + dev: true + + /@commitlint/read@19.0.3: + resolution: {integrity: sha512-b5AflTyAXkUx5qKw4TkjjcOccXZHql3JqMi522knTQktq2AubKXFz60Sws+K4FsefwPws6fGz9mqiI/NvsvxFA==} + engines: {node: '>=v18'} + dependencies: + '@commitlint/top-level': 19.0.0 + '@commitlint/types': 19.0.3 + git-raw-commits: 4.0.0 + minimist: 1.2.8 + dev: true + + /@commitlint/resolve-extends@19.0.3: + resolution: {integrity: sha512-18BKmta8OC8+Ub+Q3QGM9l27VjQaXobloVXOrMvu8CpEwJYv62vC/t7Ka5kJnsW0tU9q1eMqJFZ/nN9T/cOaIA==} + engines: {node: '>=v18'} + dependencies: + '@commitlint/config-validator': 19.0.3 + '@commitlint/types': 19.0.3 + global-directory: 4.0.1 + import-meta-resolve: 4.0.0 + lodash.mergewith: 4.6.2 + resolve-from: 5.0.0 + dev: true + + /@commitlint/rules@19.0.3: + resolution: {integrity: sha512-TspKb9VB6svklxNCKKwxhELn7qhtY1rFF8ls58DcFd0F97XoG07xugPjjbVnLqmMkRjZDbDIwBKt9bddOfLaPw==} + engines: {node: '>=v18'} + dependencies: + '@commitlint/ensure': 19.0.3 + '@commitlint/message': 19.0.0 + '@commitlint/to-lines': 19.0.0 + '@commitlint/types': 19.0.3 + execa: 8.0.1 + dev: true + + /@commitlint/to-lines@19.0.0: + resolution: {integrity: sha512-vkxWo+VQU5wFhiP9Ub9Sre0FYe019JxFikrALVoD5UGa8/t3yOJEpEhxC5xKiENKKhUkTpEItMTRAjHw2SCpZw==} + engines: {node: '>=v18'} + dev: true + + /@commitlint/top-level@19.0.0: + resolution: {integrity: sha512-KKjShd6u1aMGNkCkaX4aG1jOGdn7f8ZI8TR1VEuNqUOjWTOdcDSsmglinglJ18JTjuBX5I1PtjrhQCRcixRVFQ==} + engines: {node: '>=v18'} + dependencies: + find-up: 7.0.0 + dev: true + + /@commitlint/types@19.0.3: + resolution: {integrity: sha512-tpyc+7i6bPG9mvaBbtKUeghfyZSDgWquIDfMgqYtTbmZ9Y9VzEm2je9EYcQ0aoz5o7NvGS+rcDec93yO08MHYA==} + engines: {node: '>=v18'} + dependencies: + '@types/conventional-commits-parser': 5.0.0 + chalk: 5.3.0 + dev: true + /@confio/ics23@0.6.8: resolution: {integrity: sha512-wB6uo+3A50m0sW/EWcU64xpV/8wShZ6bMTa7pF8eYsTrSkQA7oLUIJcs/wb8g4y2Oyq701BaGiO6n/ak5WXO1w==} dependencies: @@ -1265,7 +1558,7 @@ packages: '@cosmjs/socket': 0.32.2 '@cosmjs/stream': 0.32.2 '@cosmjs/utils': 0.32.2 - axios: 1.6.5 + axios: 1.6.7 readonly-date: 1.0.0 xstream: 11.14.0 transitivePeerDependencies: @@ -1290,12 +1583,22 @@ packages: resolution: {integrity: sha512-Gg5t+eR7vPJMAmhkFt6CZrzPd0EKpAslWwk5rFVYZpJsM8JG5KT9XQ99hgNM3Ov6ScNoIWbXkpX27F6A9cXR4Q==} dev: false - /@dydxprotocol/v4-abacus@1.4.13: - resolution: {integrity: sha512-+Avd0TvbdQ4OvwwMOpQgLMW0+yQ87FTYTWHZIkmsMsBH5yoYHG751i2bsGp0z+VUKMScCpcibUIGFkgTqLHIlA==} + /@cspotcode/source-map-support@0.8.1: + resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} + engines: {node: '>=12'} + dependencies: + '@jridgewell/trace-mapping': 0.3.9 + dev: true + + /@dydxprotocol/v4-abacus@1.7.18: + resolution: {integrity: sha512-nskKgvkxzd6Snxt2oWYvRGKCmOVU6WCV8oc4SdY7ajqR0KZvUxW+Dv3YH+8rKr+uOTyPz09qJbSd0rhuYjg06A==} + dependencies: + '@js-joda/core': 3.2.0 + format-util: 1.0.5 dev: false - /@dydxprotocol/v4-client-js@1.0.20: - resolution: {integrity: sha512-dXKW2NC1XlVVIRKvHWVDofLZSCPTJAaRY5eXzxH5CcXpnl2kdXorr7ykqWZxW0jHFPWWvRSJtUDqZN1qFrEe/w==} + /@dydxprotocol/v4-client-js@1.1.10: + resolution: {integrity: sha512-XesAXsDJXVJ3qg7Ffexh9u//4DjglNA1y9ziIvgTg7bGj9m6BsK1rS9tWBejUNt8vdAVaaMo2zjRYI14iaUoeg==} dependencies: '@cosmjs/amino': 0.32.2 '@cosmjs/encoding': 0.32.2 @@ -1304,7 +1607,7 @@ packages: '@cosmjs/stargate': 0.32.2 '@cosmjs/tendermint-rpc': 0.32.2 '@cosmjs/utils': 0.32.2 - '@dydxprotocol/v4-proto': 4.0.0-dev.0 + '@dydxprotocol/v4-proto': 5.0.0-dev.0 '@osmonauts/lcd': 0.6.0 '@scure/bip32': 1.3.2 '@scure/bip39': 1.2.1 @@ -1323,15 +1626,14 @@ packages: - utf-8-validate dev: false - /@dydxprotocol/v4-localization@1.1.35: - resolution: {integrity: sha512-q5JFYoL/QanHXOtFqRa2owBZJibi1sMpSm3dAcxs9x0/xe8mo6fWcnbQfhl8k7g0/tv7PsBc+e3rbWD0EfvGiA==} + /@dydxprotocol/v4-localization@1.1.86: + resolution: {integrity: sha512-xaLw6reqdmK2KAC5Ct3TdVw40nnnIQHVFFPZ/s4+vd2Ejd8XCHDiHVmYbcft8hftZEwBPd3V6Zd/X4c3Ioyw1g==} dev: false - /@dydxprotocol/v4-proto@4.0.0-dev.0: - resolution: {integrity: sha512-PC/xq5YJIisAd3jjIULJGrnujbrYkr5h4ehepnLc6U34nJT720iumKVMiPaezwRC+kHKTI1culpKNnlMnbeYBA==} + /@dydxprotocol/v4-proto@5.0.0-dev.0: + resolution: {integrity: sha512-AdwfSF/nWyunEyhJudY1b3tniFLZJDs5XtRZAH9uIw76TYeBaDtuF3NQZhgyFJgWAnrPh2a4YphPTUeaqe1feQ==} dependencies: protobufjs: 6.11.4 - dev: false /@emotion/is-prop-valid@1.2.1: resolution: {integrity: sha512-61Mf7Ufx4aDxx1xlDeOm8aFFigGHE4z+0sKCa+IHCeZKiyP9RLD0Mmx7m8b9/Cf37f7NAvQOOJAbQQGVr5uERw==} @@ -1789,6 +2091,38 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true + /@ethereumjs/common@3.2.0: + resolution: {integrity: sha512-pksvzI0VyLgmuEF2FA/JR/4/y6hcPq8OUail3/AvycBaW1d5VSauOZzqGvJ3RTmR4MU35lWE8KseKOsEhrFRBA==} + dependencies: + '@ethereumjs/util': 8.1.0 + crc-32: 1.2.2 + dev: false + + /@ethereumjs/rlp@4.0.1: + resolution: {integrity: sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==} + engines: {node: '>=14'} + hasBin: true + dev: false + + /@ethereumjs/tx@4.2.0: + resolution: {integrity: sha512-1nc6VO4jtFd172BbSnTnDQVr9IYBFl1y4xPzZdtkrkKIncBCkdbgfdRV+MiTkJYAtTxvV12GRZLqBFT1PNK6Yw==} + engines: {node: '>=14'} + dependencies: + '@ethereumjs/common': 3.2.0 + '@ethereumjs/rlp': 4.0.1 + '@ethereumjs/util': 8.1.0 + ethereum-cryptography: 2.1.2 + dev: false + + /@ethereumjs/util@8.1.0: + resolution: {integrity: sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA==} + engines: {node: '>=14'} + dependencies: + '@ethereumjs/rlp': 4.0.1 + ethereum-cryptography: 2.1.2 + micro-ftch: 0.3.1 + dev: false + /@ethersproject/abi@5.7.0: resolution: {integrity: sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==} dependencies: @@ -2166,6 +2500,27 @@ packages: tslib: 2.6.2 dev: false + /@headlessui/react@1.7.18(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-4i5DOrzwN4qSgNsL4Si61VMkUcWbcSKueUV7sFhpHzQcSShdlHENE5+QBntMSRvHt8NyoFO2AGG8si9lq+w4zQ==} + engines: {node: '>=10'} + peerDependencies: + react: ^16 || ^17 || ^18 + react-dom: ^16 || ^17 || ^18 + dependencies: + '@tanstack/react-virtual': 3.2.0(react-dom@18.2.0)(react@18.2.0) + client-only: 0.0.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@heroicons/react@2.1.3(react@18.2.0): + resolution: {integrity: sha512-fEcPfo4oN345SoqdlCDdSa4ivjaKbk0jTd+oubcgNxnNgAfzysfwWfQUr+51wigiWHQQRiZNd1Ao0M5Y3M2EGg==} + peerDependencies: + react: '>= 16' + dependencies: + react: 18.2.0 + dev: false + /@humanwhocodes/config-array@0.11.10: resolution: {integrity: sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==} engines: {node: '>=10.10.0'} @@ -2243,6 +2598,46 @@ packages: multiformats: 9.9.0 dev: true + /@isaacs/cliui@8.0.2: + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + dependencies: + string-width: 5.1.2 + string-width-cjs: /string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: /strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: /wrap-ansi@7.0.0 + dev: true + + /@jest/expect-utils@29.7.0: + resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + requiresBuild: true + dependencies: + jest-get-type: 29.6.3 + dev: true + + /@jest/schemas@29.6.3: + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@sinclair/typebox': 0.27.8 + dev: true + + /@jest/types@29.6.3: + resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + requiresBuild: true + dependencies: + '@jest/schemas': 29.6.3 + '@types/istanbul-lib-coverage': 2.0.6 + '@types/istanbul-reports': 3.0.4 + '@types/node': 20.10.5 + '@types/yargs': 17.0.32 + chalk: 4.1.2 + dev: true + /@jridgewell/gen-mapping@0.3.3: resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} engines: {node: '>=6.0.0'} @@ -2282,6 +2677,17 @@ packages: '@jridgewell/sourcemap-codec': 1.4.15 dev: true + /@jridgewell/trace-mapping@0.3.9: + resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} + dependencies: + '@jridgewell/resolve-uri': 3.1.1 + '@jridgewell/sourcemap-codec': 1.4.15 + dev: true + + /@js-joda/core@3.2.0: + resolution: {integrity: sha512-PMqgJ0sw5B7FKb2d5bWYIoxjri+QlW/Pys7+Rw82jSH0QN3rB05jZ/VrrsUdh1w4+i2kw9JOejXGq/KhDOX7Kg==} + dev: false + /@js-joda/core@5.5.3: resolution: {integrity: sha512-7dqNYwG8gCt4hfg5PKgM7xLEcgSBcx/UgC92OMnhMmvAnq11QzDFPrxUkNR/u5kn17WWLZ8beZ4A3Qrz4pZcmQ==} dev: false @@ -2434,6 +2840,23 @@ packages: '@lit-labs/ssr-dom-shim': 1.1.2 dev: false + /@ljharb/through@2.3.13: + resolution: {integrity: sha512-/gKJun8NNiWGZJkGzI/Ragc53cOdcLNdzjLaIa+GEjguQs0ulsurx8WN0jijdK9yPqDvziX995sMRLyLt1uZMQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + dev: true + + /@marsidev/react-turnstile@0.4.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-uZusUW9mPr0csWpls8bApe5iuRK0YK7H1PCKqfM4djW3OA9GB9rU68irjk7xRO8qlHyj0aDTeVu9tTLPExBO4Q==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + dependencies: + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + /@mdx-js/mdx@3.0.0: resolution: {integrity: sha512-Icm0TBKBLYqroYbNW3BPnzMGn+7mwpQOK310aZ7+fkCtiU3aqv2cdcX+nd0Ydo3wI5Rx8bX2Z2QmGb/XcAClCw==} dependencies: @@ -2475,18 +2898,111 @@ packages: react: 18.2.0 dev: true + /@metamask/abi-utils@1.2.0: + resolution: {integrity: sha512-Hf7fnBDM9ptCPDtq/wQffWbw859CdVGMwlpWUEsTH6gLXhXONGrRXHA2piyYPRuia8YYTdJvRC/zSK1/nyLvYg==} + engines: {node: '>=14.0.0'} + dependencies: + '@metamask/utils': 3.6.0 + superstruct: 1.0.3 + transitivePeerDependencies: + - supports-color + dev: false + + /@metamask/eth-json-rpc-provider@1.0.1: + resolution: {integrity: sha512-whiUMPlAOrVGmX8aKYVPvlKyG4CpQXiNNyt74vE1xb5sPvmx5oA7B/kOi/JdBvhGQq97U1/AVdXEdk2zkP8qyA==} + engines: {node: '>=14.0.0'} + dependencies: + '@metamask/json-rpc-engine': 7.3.3 + '@metamask/safe-event-emitter': 3.1.1 + '@metamask/utils': 5.0.2 + transitivePeerDependencies: + - supports-color + dev: false + + /@metamask/eth-sig-util@6.0.2: + resolution: {integrity: sha512-D6IIefM2vS+4GUGGtezdBbkwUYQC4bCosYx/JteUuF0zfe6lyxR4cruA8+2QHoUg7F7edNH1xymYpqYq1BeOkw==} + engines: {node: '>=14.0.0'} + dependencies: + '@ethereumjs/util': 8.1.0 + '@metamask/abi-utils': 1.2.0 + '@metamask/utils': 5.0.2 + ethereum-cryptography: 2.1.2 + ethjs-util: 0.1.6 + tweetnacl: 1.0.3 + tweetnacl-util: 0.15.1 + transitivePeerDependencies: + - supports-color + dev: false + + /@metamask/json-rpc-engine@7.3.3: + resolution: {integrity: sha512-dwZPq8wx9yV3IX2caLi9q9xZBw2XeIoYqdyihDDDpuHVCEiqadJLwqM3zy+uwf6F1QYQ65A8aOMQg1Uw7LMLNg==} + engines: {node: '>=16.0.0'} + dependencies: + '@metamask/rpc-errors': 6.2.1 + '@metamask/safe-event-emitter': 3.1.1 + '@metamask/utils': 8.4.0 + transitivePeerDependencies: + - supports-color + dev: false + + /@metamask/rpc-errors@6.2.1: + resolution: {integrity: sha512-VTgWkjWLzb0nupkFl1duQi9Mk8TGT9rsdnQg6DeRrYEFxtFOh0IF8nAwxM/4GWqDl6uIB06lqUBgUrAVWl62Bw==} + engines: {node: '>=16.0.0'} + dependencies: + '@metamask/utils': 8.4.0 + fast-safe-stringify: 2.1.1 + transitivePeerDependencies: + - supports-color + dev: false + /@metamask/safe-event-emitter@2.0.0: resolution: {integrity: sha512-/kSXhY692qiV1MXu6EeOZvg5nECLclxNXcKCxJ3cXQgYuRymRHpdx/t7JXfsK+JLjwA1e1c1/SBrlQYpusC29Q==} dev: false + /@metamask/safe-event-emitter@3.1.1: + resolution: {integrity: sha512-ihb3B0T/wJm1eUuArYP4lCTSEoZsClHhuWyfo/kMX3m/odpqNcPfsz5O2A3NT7dXCAgWPGDQGPqygCpgeniKMw==} + engines: {node: '>=12.0.0'} + dev: false + /@metamask/utils@3.6.0: resolution: {integrity: sha512-9cIRrfkWvHblSiNDVXsjivqa9Ak0RYo/1H6tqTqTbAx+oBK2Sva0lWDHxGchOqA7bySGUJKAWSNJvH6gdHZ0gQ==} engines: {node: '>=14.0.0'} dependencies: + '@ethereumjs/tx': 4.2.0 '@types/debug': 4.1.12 debug: 4.3.4(supports-color@5.5.0) - semver: 7.5.4 + semver: 7.6.0 + superstruct: 1.0.3 + transitivePeerDependencies: + - supports-color + dev: false + + /@metamask/utils@5.0.2: + resolution: {integrity: sha512-yfmE79bRQtnMzarnKfX7AEJBwFTxvTyw3nBQlu/5rmGXrjAeAMltoGxO62TFurxrQAFMNa/fEjIHNvungZp0+g==} + engines: {node: '>=14.0.0'} + dependencies: + '@ethereumjs/tx': 4.2.0 + '@types/debug': 4.1.12 + debug: 4.3.4(supports-color@5.5.0) + semver: 7.6.0 + superstruct: 1.0.3 + transitivePeerDependencies: + - supports-color + dev: false + + /@metamask/utils@8.4.0: + resolution: {integrity: sha512-dbIc3C7alOe0agCuBHM1h71UaEaEqOk2W8rAtEn8QGz4haH2Qq7MoK6i7v2guzvkJVVh79c+QCzIqphC3KvrJg==} + engines: {node: '>=16.0.0'} + dependencies: + '@ethereumjs/tx': 4.2.0 + '@noble/hashes': 1.3.3 + '@scure/base': 1.1.5 + '@types/debug': 4.1.12 + debug: 4.3.4(supports-color@5.5.0) + pony-cause: 2.1.10 + semver: 7.6.0 superstruct: 1.0.3 + uuid: 9.0.1 transitivePeerDependencies: - supports-color dev: false @@ -2656,6 +3172,10 @@ packages: outvariant: 1.4.2 dev: true + /@open-draft/until@1.0.3: + resolution: {integrity: sha512-Aq58f5HiWdyDlFffbbSjAlv596h/cOnt2DO1w3DOC7OJ5EHs0hd/nycJfiu9RJbT6Yk6F1knnRRXNSpxoIVZ9Q==} + dev: true + /@open-draft/until@2.1.0: resolution: {integrity: sha512-U69T3ItWHvLwGg5eJ0n3I62nWuE6ilHlmz7zM0npLBRvPRd7e6NYmg54vvRtP5mZG7kZqZCFVdsTWo7BPtBujg==} dev: true @@ -2811,22 +3331,138 @@ packages: '@parcel/watcher-win32-x64': 2.3.0 dev: false - /@pkgr/utils@2.4.2: - resolution: {integrity: sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw==} - engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + /@percy/appium-app@2.0.4: + resolution: {integrity: sha512-H2TBFTOPJITmkhjudVPbhHZ1NXRl1P6ty+B67nWKzExdjWR6cfuTedDh/3N0qN49CI/gBPkIuskk5EekdPx8gg==} + engines: {node: '>=14'} dependencies: - cross-spawn: 7.0.3 - fast-glob: 3.3.1 - is-glob: 4.0.3 - open: 9.1.0 - picocolors: 1.0.0 - tslib: 2.6.1 + '@percy/sdk-utils': 1.28.1 + tmp: 0.2.3 dev: true - /@protobufjs/aspromise@1.1.2: - resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==} + /@percy/sdk-utils@1.28.1: + resolution: {integrity: sha512-joS3i5wjFYXRSVL/NbUvip+bB7ErgwNjoDcID31l61y/QaSYUVCOxl/Fy4nvePJtHVyE1hpV0O7XO3tkoG908g==} + engines: {node: '>=14'} + dev: true - /@protobufjs/base64@1.1.2: + /@percy/selenium-webdriver@2.0.5: + resolution: {integrity: sha512-bNj52xQm02dY872loFa+8OwyuGcdYHYvCKflmSEsF9EDRiSDj0Wr+XP+DDIgDAl9xXschA7OOdXCLTWV4zEQWA==} + engines: {node: '>=14'} + dependencies: + '@percy/sdk-utils': 1.28.1 + node-request-interceptor: 0.6.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@pkgjs/parseargs@0.11.0: + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + requiresBuild: true + dev: true + optional: true + + /@pkgr/utils@2.4.2: + resolution: {integrity: sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + dependencies: + cross-spawn: 7.0.3 + fast-glob: 3.3.1 + is-glob: 4.0.3 + open: 9.1.0 + picocolors: 1.0.0 + tslib: 2.6.1 + dev: true + + /@privy-io/react-auth@1.59.9(@babel/core@7.22.5)(@types/react@18.2.14)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(typescript@5.1.3): + resolution: {integrity: sha512-JxxMSbMbsF7GspWXR0tjXL1BvZzrG0+EMfMOqBQ0+JAPy9XS+Wngu48IV4bYjdR6lxQrWY8kl3cQ8pIiWwZCkA==} + peerDependencies: + react: ^18 + react-dom: ^18 + dependencies: + '@coinbase/wallet-sdk': 3.9.3 + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/address': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/contracts': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/providers': 5.7.2 + '@ethersproject/strings': 5.7.0 + '@ethersproject/transactions': 5.7.0 + '@ethersproject/units': 5.7.0 + '@headlessui/react': 1.7.18(react-dom@18.2.0)(react@18.2.0) + '@heroicons/react': 2.1.3(react@18.2.0) + '@marsidev/react-turnstile': 0.4.1(react-dom@18.2.0)(react@18.2.0) + '@metamask/eth-sig-util': 6.0.2 + '@walletconnect/ethereum-provider': 2.12.0(@types/react@18.2.14)(encoding@0.1.13)(react@18.2.0) + '@walletconnect/modal': 2.6.2(@types/react@18.2.14)(react@18.2.0) + base64-js: 1.5.1 + dotenv: 16.4.5 + encoding: 0.1.13 + eventemitter3: 5.0.1 + fast-password-entropy: 1.1.1 + jose: 4.15.5 + js-cookie: 3.0.5 + libphonenumber-js: 1.10.59 + lokijs: 1.5.12 + md5: 2.3.0 + mipd: 0.0.5(typescript@5.1.3) + ofetch: 1.3.3 + pino-pretty: 10.3.1 + qrcode: 1.5.3 + react: 18.2.0 + react-device-detect: 2.2.3(react-dom@18.2.0)(react@18.2.0) + react-dom: 18.2.0(react@18.2.0) + react-use: 17.5.0(react-dom@18.2.0)(react@18.2.0) + secure-password-utilities: 0.2.1 + styled-components: 5.3.11(@babel/core@7.22.5)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0) + tinycolor2: 1.6.0 + uuid: 9.0.1 + web3-core: 1.10.4(encoding@0.1.13) + web3-core-helpers: 1.10.3 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@babel/core' + - '@capacitor/preferences' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@types/react' + - '@upstash/redis' + - '@vercel/kv' + - bufferutil + - react-is + - supports-color + - typescript + - utf-8-validate + - zod + dev: false + + /@privy-io/wagmi-connector@0.1.13(@privy-io/react-auth@1.59.9)(react-dom@18.2.0)(react@18.2.0)(viem@1.20.0)(wagmi@1.4.13): + resolution: {integrity: sha512-dbel4pYvbJM+28m12DE7LvEKzJ8ni/rDkuHpF3RGwkph+HsgDNDxJy4OTgUjaKi6yJsjZ5nvhsZdNNVXbVFKkg==} + peerDependencies: + '@privy-io/react-auth': ^1.33.0 + react: ^18 + react-dom: ^18 + viem: '>=0.3.35' + wagmi: '>=1.4.12 <2' + dependencies: + '@privy-io/react-auth': 1.59.9(@babel/core@7.22.5)(@types/react@18.2.14)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(typescript@5.1.3) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + viem: 1.20.0(typescript@5.1.3) + wagmi: 1.4.13(@types/react@18.2.14)(react-dom@18.2.0)(react@18.2.0)(typescript@5.1.3)(viem@1.20.0) + dev: false + + /@protobufjs/aspromise@1.1.2: + resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==} + + /@protobufjs/base64@1.1.2: resolution: {integrity: sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==} /@protobufjs/codegen@2.0.4: @@ -2856,6 +3492,45 @@ packages: /@protobufjs/utf8@1.1.0: resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} + /@puppeteer/browsers@1.4.6(typescript@5.1.3): + resolution: {integrity: sha512-x4BEjr2SjOPowNeiguzjozQbsc6h437ovD/wu+JpaenxVLm3jkgzHY2xOslMTp50HoTvQreMjiexiGQw1sqZlQ==} + engines: {node: '>=16.3.0'} + hasBin: true + requiresBuild: true + peerDependencies: + typescript: '>= 4.7.4' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + debug: 4.3.4(supports-color@5.5.0) + extract-zip: 2.0.1 + progress: 2.0.3 + proxy-agent: 6.3.0 + tar-fs: 3.0.4 + typescript: 5.1.3 + unbzip2-stream: 1.4.3 + yargs: 17.7.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@puppeteer/browsers@1.9.1: + resolution: {integrity: sha512-PuvK6xZzGhKPvlx3fpfdM2kYY3P/hB1URtK8wA7XUJ6prn6pp22zvJHu48th0SGcHL9SutbPHrFuQgfXTFobWA==} + engines: {node: '>=16.3.0'} + hasBin: true + dependencies: + debug: 4.3.4(supports-color@5.5.0) + extract-zip: 2.0.1 + progress: 2.0.3 + proxy-agent: 6.3.1 + tar-fs: 3.0.4 + unbzip2-stream: 1.4.3 + yargs: 17.7.2 + transitivePeerDependencies: + - supports-color + dev: true + /@radix-ui/number@1.0.1: resolution: {integrity: sha512-T5gIdVO2mmPW3NNhjNgEP3cqMXjXL9UbO0BzWcXfvdBs+BohbQxvd/K5hSVKmn9/lbTdsQVKbUcP5WLCwvUbBg==} dependencies: @@ -3166,6 +3841,31 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: false + /@radix-ui/react-dismissable-layer@1.0.5(@types/react-dom@18.2.6)(@types/react@18.2.14)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-aJeDjQhywg9LBu2t/At58hCvr7pEm0o2Ke1x33B+MhjNmmZ17sy4KImo0KPLgsnc/zN7GPdce8Cnn0SWvwZO7g==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@babel/runtime': 7.22.10 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.14)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.6)(@types/react@18.2.14)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.14)(react@18.2.0) + '@radix-ui/react-use-escape-keydown': 1.0.3(@types/react@18.2.14)(react@18.2.0) + '@types/react': 18.2.14 + '@types/react-dom': 18.2.6 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + /@radix-ui/react-dropdown-menu@2.0.5(@types/react-dom@18.2.6)(@types/react@18.2.14)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-xdOrZzOTocqqkCkYo8yRPCib5OkTkqN7lqNCdxwPOdE466DOaNl4N8PkUIlsXthQvW5Wwkd+aEmWpfWlBoDPEw==} peerDependencies: @@ -3253,6 +3953,35 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: false + /@radix-ui/react-hover-card@1.0.7(@types/react-dom@18.2.6)(@types/react@18.2.14)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-OcUN2FU0YpmajD/qkph3XzMcK/NmSk9hGWnjV68p6QiZMgILugusgQwnLSDs3oFSJYGKf3Y49zgFedhGh04k9A==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@babel/runtime': 7.22.10 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.14)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.14)(react@18.2.0) + '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.2.6)(@types/react@18.2.14)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-popper': 1.1.3(@types/react-dom@18.2.6)(@types/react@18.2.14)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.2.6)(@types/react@18.2.14)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.6)(@types/react@18.2.14)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.6)(@types/react@18.2.14)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.14)(react@18.2.0) + '@types/react': 18.2.14 + '@types/react-dom': 18.2.6 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + /@radix-ui/react-icons@1.3.0(react@18.2.0): resolution: {integrity: sha512-jQxj/0LKgp+j9BiTXz3O3sgs26RNet2iLWmsPyRz2SIcR4q/4SbazXfnYwbAr+vLYKSfc7qxzyGQA1HLlYiuNw==} peerDependencies: @@ -3423,6 +4152,36 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: false + /@radix-ui/react-popper@1.1.3(@types/react-dom@18.2.6)(@types/react@18.2.14)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-cKpopj/5RHZWjrbF2846jBNacjQVwkP068DfmgrNJXpvVWrOvlAmE9xSiy5OqeE+Gi8D9fP+oDhUnPqNMY8/5w==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@babel/runtime': 7.22.10 + '@floating-ui/react-dom': 2.0.1(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-arrow': 1.0.3(@types/react-dom@18.2.6)(@types/react@18.2.14)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.14)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.14)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.6)(@types/react@18.2.14)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.14)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.14)(react@18.2.0) + '@radix-ui/react-use-rect': 1.0.1(@types/react@18.2.14)(react@18.2.0) + '@radix-ui/react-use-size': 1.0.1(@types/react@18.2.14)(react@18.2.0) + '@radix-ui/rect': 1.0.1 + '@types/react': 18.2.14 + '@types/react-dom': 18.2.6 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + /@radix-ui/react-portal@1.0.0(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-a8qyFO/Xb99d8wQdu4o7qnigNjTPG123uADNecz0eX4usnQEj7o+cG4ZX4zkqq98NYekT7UoEQIjxBNWIFuqTA==} peerDependencies: @@ -3456,6 +4215,27 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: false + /@radix-ui/react-portal@1.0.4(@types/react-dom@18.2.6)(@types/react@18.2.14)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-Qki+C/EuGUVCQTOTD5vzJzJuMUlewbzuKyUy+/iHM2uwGiru9gZeBJtHAPKAEkB5KWGi9mP/CHKcY0wt1aW45Q==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@babel/runtime': 7.22.10 + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.6)(@types/react@18.2.14)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.2.14 + '@types/react-dom': 18.2.6 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + /@radix-ui/react-presence@1.0.0(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-A+6XEvN01NfVWiKu38ybawfHsBjWum42MRPnEuqPsBZ4eV7e/7K321B5VgYMPv3Xx5An6o1/l9ZuDBgmcmWK3w==} peerDependencies: @@ -5410,7 +6190,19 @@ packages: engines: {node: '>=14'} dev: false - /@rollup/pluginutils@5.0.3: + /@rollup/pluginutils@3.1.0(rollup@2.79.1): + resolution: {integrity: sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==} + engines: {node: '>= 8.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0 + dependencies: + '@types/estree': 0.0.39 + estree-walker: 1.0.1 + picomatch: 2.3.1 + rollup: 2.79.1 + dev: true + + /@rollup/pluginutils@5.0.3(rollup@2.79.1): resolution: {integrity: sha512-hfllNN4a80rwNQ9QCxhxuHCGHMAvabXqxNdaChUSSadMre7t4iEUI6fFAhBOn/eIYTgYVhBv7vCLsAJ4u3lf3g==} engines: {node: '>=14.0.0'} peerDependencies: @@ -5422,6 +6214,7 @@ packages: '@types/estree': 1.0.1 estree-walker: 2.0.2 picomatch: 2.3.1 + rollup: 2.79.1 dev: true /@rollup/rollup-android-arm-eabi@4.9.6: @@ -5557,7 +6350,7 @@ packages: /@safe-global/safe-gateway-typescript-sdk@3.9.0: resolution: {integrity: sha512-DxRM/sBBQhv955dPtdo0z2Bf2fXxrzoRUnGyTa3+4Z0RAhcyiqnffRP1Bt3tyuvlyfZnFL0RsvkqDcAIKzq3RQ==} dependencies: - cross-fetch: 3.1.8 + cross-fetch: 3.1.8(encoding@0.1.13) transitivePeerDependencies: - encoding dev: false @@ -5608,6 +6401,15 @@ packages: '@scure/base': 1.1.5 dev: false + /@sinclair/typebox@0.27.8: + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + dev: true + + /@sindresorhus/is@5.6.0: + resolution: {integrity: sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==} + engines: {node: '>=14.16'} + dev: true + /@sindresorhus/merge-streams@1.0.0: resolution: {integrity: sha512-rUV5WyJrJLoloD4NDN1V1+LDMDWOa4OTsT4yYJwQNpTU6FWxkxHpL7eu4w+DmiH8x/EAM1otkPE1+LaspIbplw==} engines: {node: '>=18'} @@ -5635,7 +6437,7 @@ packages: buffer: 6.0.3 fast-stable-stringify: 1.0.0 jayson: 4.1.0 - node-fetch: 2.6.12 + node-fetch: 2.6.12(encoding@0.1.13) rpc-websockets: 7.6.0 superstruct: 0.14.2 transitivePeerDependencies: @@ -6023,6 +6825,13 @@ packages: resolution: {integrity: sha512-myfUej5naTBWnqOCc/MdVOLVjXUXtIA+NpDrDBKJtLLg2shUjBu3cZmB/85RyitKc55+lUUyl7oRfLOvkr2hsw==} dev: true + /@szmarczak/http-timer@5.0.1: + resolution: {integrity: sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==} + engines: {node: '>=14.16'} + dependencies: + defer-to-connect: 2.0.1 + dev: true + /@tanstack/match-sorter-utils@8.8.4: resolution: {integrity: sha512-rKH8LjZiszWEvmi01NR72QWZ8m4xmXre0OOwlRGnjU01Eqz/QnN+cqpty2PJ0efHblq09+KilvyR7lsbzmXVEw==} engines: {node: '>=12'} @@ -6092,12 +6901,97 @@ packages: use-sync-external-store: 1.2.0(react@18.2.0) dev: false + /@tanstack/react-virtual@3.2.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-OEdMByf2hEfDa6XDbGlZN8qO6bTjlNKqjM3im9JG+u3mCL8jALy0T/67oDI001raUUPh1Bdmfn4ZvPOV5knpcg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + dependencies: + '@tanstack/virtual-core': 3.2.0 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@tanstack/virtual-core@3.2.0: + resolution: {integrity: sha512-P5XgYoAw/vfW65byBbJQCw+cagdXDT/qH6wmABiLt4v4YBT2q2vqCOhihe+D1Nt325F/S/0Tkv6C5z0Lv+VBQQ==} + dev: false + + /@testing-library/dom@8.20.1: + resolution: {integrity: sha512-/DiOQ5xBxgdYRC8LNk7U+RWat0S3qRLeIw3ZIkMQ9kkVlRmwD/Eg8k8CqIpD6GW7u20JIUOfMKbxtiLutpjQ4g==} + engines: {node: '>=12'} + dependencies: + '@babel/code-frame': 7.23.5 + '@babel/runtime': 7.22.10 + '@types/aria-query': 5.0.4 + aria-query: 5.1.3 + chalk: 4.1.2 + dom-accessibility-api: 0.5.16 + lz-string: 1.5.0 + pretty-format: 27.5.1 + dev: true + + /@testing-library/webdriverio@3.2.1(webdriverio@8.33.1): + resolution: {integrity: sha512-mgMyCiwW+4zCidmlab9lwcO+UBz+PzlWnz9idDQ4ZS1SIHVSfJwvRLMWi+s3vNGFmc8duQxTiUHf1alW/Z48Og==} + peerDependencies: + webdriverio: '*' + dependencies: + '@babel/runtime': 7.22.10 + '@testing-library/dom': 8.20.1 + simmerjs: 0.5.6 + webdriverio: 8.33.1(typescript@5.1.3) + dev: true + + /@tootallnate/quickjs-emscripten@0.23.0: + resolution: {integrity: sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==} + requiresBuild: true + dev: true + + /@trivago/prettier-plugin-sort-imports@4.3.0(prettier@2.8.8): + resolution: {integrity: sha512-r3n0onD3BTOVUNPhR4lhVK4/pABGpbA7bW3eumZnYdKaHkf1qEC+Mag6DPbGNuuh0eG8AaYj+YqmVHSiGslaTQ==} + peerDependencies: + '@vue/compiler-sfc': 3.x + prettier: 2.x - 3.x + peerDependenciesMeta: + '@vue/compiler-sfc': + optional: true + dependencies: + '@babel/generator': 7.17.7 + '@babel/parser': 7.23.9 + '@babel/traverse': 7.23.2 + '@babel/types': 7.17.0 + javascript-natural-sort: 0.7.1 + lodash: 4.17.21 + prettier: 2.8.8 + transitivePeerDependencies: + - supports-color + dev: true + + /@tsconfig/node10@1.0.9: + resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==} + dev: true + + /@tsconfig/node12@1.0.11: + resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} + dev: true + + /@tsconfig/node14@1.0.3: + resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} + dev: true + + /@tsconfig/node16@1.0.4: + resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} + dev: true + /@types/acorn@4.0.6: resolution: {integrity: sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==} dependencies: '@types/estree': 1.0.5 dev: true + /@types/aria-query@5.0.4: + resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==} + dev: true + /@types/babel__core@7.20.5: resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} dependencies: @@ -6127,7 +7021,13 @@ packages: '@babel/types': 7.23.9 dev: true - /@types/chai-subset@1.3.3: + /@types/bn.js@5.1.5: + resolution: {integrity: sha512-V46N0zwKRF5Q00AZ6hWtN0T8gGmDUaUzLWQvHFo5yThtVwK/VCenFY3wXVbOvNfajEpsTfQM4IN9k/d6gUVX3A==} + dependencies: + '@types/node': 20.10.5 + dev: false + + /@types/chai-subset@1.3.3: resolution: {integrity: sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==} dependencies: '@types/chai': 4.3.5 @@ -6159,6 +7059,12 @@ packages: '@types/node': 20.10.5 dev: false + /@types/conventional-commits-parser@5.0.0: + resolution: {integrity: sha512-loB369iXNmAZglwWATL+WRe+CRMmmBPtpolYzIebFaX4YA3x+BEfLqhUAV9WanycKI3TG1IMr5bMJDajDKLlUQ==} + dependencies: + '@types/node': 20.10.5 + dev: true + /@types/cookie@0.6.0: resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==} dev: true @@ -6226,6 +7132,10 @@ packages: '@types/estree': 1.0.5 dev: true + /@types/estree@0.0.39: + resolution: {integrity: sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==} + dev: true + /@types/estree@1.0.1: resolution: {integrity: sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==} dev: true @@ -6234,6 +7144,10 @@ packages: resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} dev: true + /@types/gitconfiglocal@2.0.3: + resolution: {integrity: sha512-W6hyZux6TrtKfF2I9XNLVcsFr4xRr0T+S6hrJ9nDkhA2vzsFPIEAbnY4vgb6v2yKXQ9MJVcbLsARNlMfg4EVtQ==} + dev: true + /@types/hast@3.0.4: resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} dependencies: @@ -6247,6 +7161,33 @@ packages: hoist-non-react-statics: 3.3.2 dev: false + /@types/http-cache-semantics@4.0.4: + resolution: {integrity: sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==} + dev: true + + /@types/istanbul-lib-coverage@2.0.6: + resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} + requiresBuild: true + dev: true + + /@types/istanbul-lib-report@3.0.3: + resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} + requiresBuild: true + dependencies: + '@types/istanbul-lib-coverage': 2.0.6 + dev: true + + /@types/istanbul-reports@3.0.4: + resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} + requiresBuild: true + dependencies: + '@types/istanbul-lib-report': 3.0.3 + dev: true + + /@types/js-cookie@2.2.7: + resolution: {integrity: sha512-aLkWa0C0vO5b4Sr798E26QgOkss68Un0bLjs7u9qxzPT5CG+8DuNTffWES58YzJs3hrVAOs1wonycqEBqNJubA==} + dev: false + /@types/json-schema@7.0.12: resolution: {integrity: sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==} dev: true @@ -6288,6 +7229,10 @@ packages: resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} dev: true + /@types/mocha@10.0.6: + resolution: {integrity: sha512-dJvrYWxP/UcXm36Qn36fxhUKu8A/xMRXVT2cliFF1Z7UA9liG5Psj3ezNSZw+5puH2czDXRLcXQxf8JbJt0ejg==} + dev: true + /@types/ms@0.7.34: resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} @@ -6346,6 +7291,11 @@ packages: resolution: {integrity: sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==} dev: true + /@types/stack-utils@2.0.3: + resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} + requiresBuild: true + dev: true + /@types/statuses@2.0.4: resolution: {integrity: sha512-eqNDvZsCNY49OAXB0Firg/Sc2BgoWsntsLUdybGFOhAfCD6QJ2n9HXUIHGqt5qjrxmMv4wS8WLAw43ZkKcJ8Pw==} dev: true @@ -6358,6 +7308,10 @@ packages: csstype: 3.1.2 dev: false + /@types/triple-beam@1.3.5: + resolution: {integrity: sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==} + dev: true + /@types/trusted-types@2.0.7: resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} dev: false @@ -6374,12 +7328,43 @@ packages: resolution: {integrity: sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA==} dev: false + /@types/which@2.0.2: + resolution: {integrity: sha512-113D3mDkZDjo+EeUEHCFy0qniNc1ZpecGiAU7WSo7YDoSzolZIQKpYFHrPpjkB2nuyahcKfrmLXeQlh7gqJYdw==} + dev: true + /@types/ws@7.4.7: resolution: {integrity: sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==} dependencies: '@types/node': 20.10.5 dev: false + /@types/ws@8.5.10: + resolution: {integrity: sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==} + requiresBuild: true + dependencies: + '@types/node': 20.10.5 + dev: true + + /@types/yargs-parser@21.0.3: + resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} + requiresBuild: true + dev: true + + /@types/yargs@17.0.32: + resolution: {integrity: sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==} + requiresBuild: true + dependencies: + '@types/yargs-parser': 21.0.3 + dev: true + + /@types/yauzl@2.10.3: + resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} + requiresBuild: true + dependencies: + '@types/node': 20.10.5 + dev: true + optional: true + /@typescript-eslint/eslint-plugin@5.60.0(@typescript-eslint/parser@5.60.0)(eslint@8.43.0)(typescript@5.1.3): resolution: {integrity: sha512-78B+anHLF1TI8Jn/cD0Q00TBYdMgjdOn980JfAVa9yw5sop8nyTfVOQAv6LWywkOGLclDBtv5z3oxN4w7jxyNg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -6866,6 +7851,14 @@ packages: pretty-format: 27.5.1 dev: true + /@vitest/snapshot@1.3.1: + resolution: {integrity: sha512-EF++BZbt6RZmOlE3SuTPu/NfwBF6q4ABS37HHXzs2LUVPBLx2QoY/K0fKpRChSo8eLiuxcbCVfqKgx/dplCDuQ==} + dependencies: + magic-string: 0.30.8 + pathe: 1.1.1 + pretty-format: 29.7.0 + dev: true + /@vitest/spy@0.32.2: resolution: {integrity: sha512-Q/ZNILJ4ca/VzQbRM8ur3Si5Sardsh1HofatG9wsJY1RfEaw0XKP8IVax2lI1qnrk9YPuG9LA2LkZ0EI/3d4ug==} dependencies: @@ -7014,7 +8007,46 @@ packages: '@walletconnect/types': 2.11.0 '@walletconnect/utils': 2.11.0 events: 3.3.0 - isomorphic-unfetch: 3.1.0 + isomorphic-unfetch: 3.1.0(encoding@0.1.13) + lodash.isequal: 4.5.0 + uint8arrays: 3.1.1 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/kv' + - bufferutil + - encoding + - supports-color + - utf-8-validate + dev: false + + /@walletconnect/core@2.12.0(encoding@0.1.13): + resolution: {integrity: sha512-CORck4dRvCpIn6hl2ZtUnjrSJ0JHt9TRteGCViwPyXNSuvXz70RvaIkvPoybYZBGCRQR4WTJ4dMdqeQpuyrL/g==} + dependencies: + '@walletconnect/heartbeat': 1.2.1 + '@walletconnect/jsonrpc-provider': 1.0.13 + '@walletconnect/jsonrpc-types': 1.0.3 + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/jsonrpc-ws-connection': 1.0.14 + '@walletconnect/keyvaluestorage': 1.1.1 + '@walletconnect/logger': 2.1.0 + '@walletconnect/relay-api': 1.0.9 + '@walletconnect/relay-auth': 1.0.4 + '@walletconnect/safe-json': 1.0.2 + '@walletconnect/time': 1.0.2 + '@walletconnect/types': 2.12.0 + '@walletconnect/utils': 2.12.0 + events: 3.3.0 + isomorphic-unfetch: 3.1.0(encoding@0.1.13) lodash.isequal: 4.5.0 uint8arrays: 3.1.1 transitivePeerDependencies: @@ -7064,7 +8096,7 @@ packages: /@walletconnect/ethereum-provider@2.11.0(@types/react@18.2.14)(react@18.2.0): resolution: {integrity: sha512-YrTeHVjuSuhlUw7SQ6xBJXDuJ6iAC+RwINm9nVhoKYJSHAy3EVSJZOofMKrnecL0iRMtD29nj57mxAInIBRuZA==} dependencies: - '@walletconnect/jsonrpc-http-connection': 1.0.7 + '@walletconnect/jsonrpc-http-connection': 1.0.7(encoding@0.1.13) '@walletconnect/jsonrpc-provider': 1.0.13 '@walletconnect/jsonrpc-types': 1.0.3 '@walletconnect/jsonrpc-utils': 1.0.8 @@ -7095,6 +8127,40 @@ packages: - utf-8-validate dev: false + /@walletconnect/ethereum-provider@2.12.0(@types/react@18.2.14)(encoding@0.1.13)(react@18.2.0): + resolution: {integrity: sha512-sX7vQHTRxByU+3/gY6eDTvt4jxQHfiX6WwqRI08UTN/Ixz+IJSBo3UnNRxNmPaC4vG8zUpsFQ4xYSsDnhfaviw==} + dependencies: + '@walletconnect/jsonrpc-http-connection': 1.0.7(encoding@0.1.13) + '@walletconnect/jsonrpc-provider': 1.0.13 + '@walletconnect/jsonrpc-types': 1.0.3 + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/modal': 2.6.2(@types/react@18.2.14)(react@18.2.0) + '@walletconnect/sign-client': 2.12.0(encoding@0.1.13) + '@walletconnect/types': 2.12.0 + '@walletconnect/universal-provider': 2.12.0(encoding@0.1.13) + '@walletconnect/utils': 2.12.0 + events: 3.3.0 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@types/react' + - '@upstash/redis' + - '@vercel/kv' + - bufferutil + - encoding + - react + - supports-color + - utf-8-validate + dev: false + /@walletconnect/events@1.0.1: resolution: {integrity: sha512-NPTqaoi0oPBVNuLv7qPaJazmGHs5JGyO8eEAk5VGKmJzDR7AHzD4k6ilox5kxk1iwiOnFopBOOMLs86Oa76HpQ==} dependencies: @@ -7110,12 +8176,12 @@ packages: tslib: 1.14.1 dev: false - /@walletconnect/jsonrpc-http-connection@1.0.7: + /@walletconnect/jsonrpc-http-connection@1.0.7(encoding@0.1.13): resolution: {integrity: sha512-qlfh8fCfu8LOM9JRR9KE0s0wxP6ZG9/Jom8M0qsoIQeKF3Ni0FyV4V1qy/cc7nfI46SLQLSl4tgWSfLiE1swyQ==} dependencies: '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/safe-json': 1.0.2 - cross-fetch: 3.1.8 + cross-fetch: 3.1.8(encoding@0.1.13) tslib: 1.14.1 transitivePeerDependencies: - encoding @@ -7210,7 +8276,7 @@ packages: /@walletconnect/legacy-provider@2.0.0: resolution: {integrity: sha512-A8xPebMI1A+50HbWwTpFCbwP7G+1NGKdTKyg8BUUg3h3Y9JucpC1W6w/x0v1Xw7qFEqQnz74LoIN/A3ytH9xrQ==} dependencies: - '@walletconnect/jsonrpc-http-connection': 1.0.7 + '@walletconnect/jsonrpc-http-connection': 1.0.7(encoding@0.1.13) '@walletconnect/jsonrpc-provider': 1.0.13 '@walletconnect/legacy-client': 2.0.0 '@walletconnect/legacy-modal': 2.0.0 @@ -7246,6 +8312,13 @@ packages: tslib: 1.14.1 dev: false + /@walletconnect/logger@2.1.0: + resolution: {integrity: sha512-lyCRHlxlBHxvj1fJXa2YOW4whVNucPKF7Oc0D1UvYhfArpIIjlJJiTe5cLm8g4ZH4z5lKp14N/c9oRHlyv5v4A==} + dependencies: + '@walletconnect/safe-json': 1.0.2 + pino: 7.11.0 + dev: false + /@walletconnect/modal-core@2.6.2(@types/react@18.2.14)(react@18.2.0): resolution: {integrity: sha512-cv8ibvdOJQv2B+nyxP9IIFdxvQznMz8OOr/oR/AaUZym4hjXNL/l1a2UlSQBXrVjo3xxbouMxLb3kBsHoYP2CA==} dependencies: @@ -7371,6 +8444,37 @@ packages: - utf-8-validate dev: false + /@walletconnect/sign-client@2.12.0(encoding@0.1.13): + resolution: {integrity: sha512-JUHJVZtW9iJmn3I2byLzhMRSFiQicTPU92PLuHIF2nG98CqsvlPn8Cu8Cx5CEPFrxPQWwLA+Dv/F+wuSgQiD/w==} + dependencies: + '@walletconnect/core': 2.12.0(encoding@0.1.13) + '@walletconnect/events': 1.0.1 + '@walletconnect/heartbeat': 1.2.1 + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/logger': 2.0.1 + '@walletconnect/time': 1.0.2 + '@walletconnect/types': 2.12.0 + '@walletconnect/utils': 2.12.0 + events: 3.3.0 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/kv' + - bufferutil + - encoding + - supports-color + - utf-8-validate + dev: false + /@walletconnect/time@1.0.2: resolution: {integrity: sha512-uzdd9woDcJ1AaBZRhqy5rNC9laqWGErfc4dxA9a87mPdKOgWMD85mcFo9dIYIts/Jwocfwn07EC6EzclKubk/g==} dependencies: @@ -7427,10 +8531,35 @@ packages: - supports-color dev: false + /@walletconnect/types@2.12.0: + resolution: {integrity: sha512-uhB3waGmujQVJcPgJvGOpB8RalgYSBT+HpmVbfl4Qe0xJyqpRUo4bPjQa0UYkrHaW20xIw94OuP4+FMLYdeemg==} + dependencies: + '@walletconnect/events': 1.0.1 + '@walletconnect/heartbeat': 1.2.1 + '@walletconnect/jsonrpc-types': 1.0.3 + '@walletconnect/keyvaluestorage': 1.1.1 + '@walletconnect/logger': 2.0.1 + events: 3.3.0 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/kv' + - supports-color + dev: false + /@walletconnect/universal-provider@2.11.0: resolution: {integrity: sha512-zgJv8jDvIMP4Qse/D9oIRXGdfoNqonsrjPZanQ/CHNe7oXGOBiQND2IIeX+tS0H7uNA0TPvctljCLiIN9nw4eA==} dependencies: - '@walletconnect/jsonrpc-http-connection': 1.0.7 + '@walletconnect/jsonrpc-http-connection': 1.0.7(encoding@0.1.13) '@walletconnect/jsonrpc-provider': 1.0.13 '@walletconnect/jsonrpc-types': 1.0.3 '@walletconnect/jsonrpc-utils': 1.0.8 @@ -7458,6 +8587,37 @@ packages: - utf-8-validate dev: false + /@walletconnect/universal-provider@2.12.0(encoding@0.1.13): + resolution: {integrity: sha512-CMo10Lh6/DyCznVRMg1nHptWCTeVqMzXBcPNNyCnr3SazE0Shsne/5v/7Kr6j+Yts2hVbLp6lkI2F9ZAFpL6ug==} + dependencies: + '@walletconnect/jsonrpc-http-connection': 1.0.7(encoding@0.1.13) + '@walletconnect/jsonrpc-provider': 1.0.13 + '@walletconnect/jsonrpc-types': 1.0.3 + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/logger': 2.0.1 + '@walletconnect/sign-client': 2.12.0(encoding@0.1.13) + '@walletconnect/types': 2.12.0 + '@walletconnect/utils': 2.12.0 + events: 3.3.0 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/kv' + - bufferutil + - encoding + - supports-color + - utf-8-validate + dev: false + /@walletconnect/utils@2.10.6: resolution: {integrity: sha512-oRsWWhN2+hi3aiDXrQEOfysz6FHQJGXLsNQPVt+WIBJplO6Szmdau9dbleD88u1iiT4GKPqE0R9FOYvvPm1H/w==} dependencies: @@ -7524,6 +8684,39 @@ packages: - supports-color dev: false + /@walletconnect/utils@2.12.0: + resolution: {integrity: sha512-GIpfHUe1Bjp1Tjda0SkJEizKOT2biuv7VPFnKsOLT1T+8QxEP9NruC+K2UUEvijS1Qr/LKH9P5004RYNgrch+w==} + dependencies: + '@stablelib/chacha20poly1305': 1.0.1 + '@stablelib/hkdf': 1.0.1 + '@stablelib/random': 1.0.2 + '@stablelib/sha256': 1.0.1 + '@stablelib/x25519': 1.0.3 + '@walletconnect/relay-api': 1.0.9 + '@walletconnect/safe-json': 1.0.2 + '@walletconnect/time': 1.0.2 + '@walletconnect/types': 2.12.0 + '@walletconnect/window-getters': 1.0.1 + '@walletconnect/window-metadata': 1.0.1 + detect-browser: 5.3.0 + query-string: 7.1.3 + uint8arrays: 3.1.1 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/kv' + - supports-color + dev: false + /@walletconnect/window-getters@1.0.1: resolution: {integrity: sha512-vHp+HqzGxORPAN8gY03qnbTMnhqIwjeRJNOMOAzePRg4xVEEE2WvYsI9G2NMjOknA8hnuYbU3/hwLcKbjhc8+Q==} dependencies: @@ -7537,29 +8730,260 @@ packages: tslib: 1.14.1 dev: false - /@web-std/blob@3.0.4: - resolution: {integrity: sha512-+dibyiw+uHYK4dX5cJ7HA+gtDAaUUe6JsOryp2ZpAC7h4ICsh49E34JwHoEKPlPvP0llCrNzz45vvD+xX5QDBg==} - dependencies: - '@web-std/stream': 1.0.0 - web-encoding: 1.1.5 - dev: true - - /@web-std/fetch@3.0.3: - resolution: {integrity: sha512-PtaKr6qvw2AmKChugzhQWuTa12dpbogHRBxwcleAZ35UhWucnfD4N+g3f7qYK2OeioSWTK3yMf6n/kOOfqxHaQ==} - engines: {node: ^10.17 || >=12.3} + /@wdio/browserstack-service@8.33.1(@wdio/cli@8.33.1)(typescript@5.1.3): + resolution: {integrity: sha512-CcGZSp0xJXo0eHWM/LQBtTmV0Y9NsvJuVsj4tmAf5d/92GNHcF6fW22Udsp7or9g2tJyj6LmJI0lcaCOprliiw==} + engines: {node: ^16.13 || >=18} + peerDependencies: + '@wdio/cli': ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@web-std/blob': 3.0.4 - '@web-std/form-data': 3.0.2 - '@web3-storage/multipart-parser': 1.0.0 - data-uri-to-buffer: 3.0.1 + '@percy/appium-app': 2.0.4 + '@percy/selenium-webdriver': 2.0.5 + '@types/gitconfiglocal': 2.0.3 + '@wdio/cli': 8.33.1(typescript@5.1.3) + '@wdio/logger': 8.28.0 + '@wdio/reporter': 8.32.4 + '@wdio/types': 8.32.4 + browserstack-local: 1.5.5 + chalk: 5.3.0 + csv-writer: 1.6.0 + formdata-node: 5.0.1 + git-repo-info: 2.1.1 + gitconfiglocal: 2.1.0 + got: 12.6.1 + uuid: 9.0.1 + webdriverio: 8.33.1(typescript@5.1.3) + winston-transport: 4.7.0 + yauzl: 3.1.2 + transitivePeerDependencies: + - bufferutil + - devtools + - encoding + - supports-color + - typescript + - utf-8-validate dev: true - /@web-std/fetch@4.1.2: - resolution: {integrity: sha512-NUX+nnCTjC6URLtFC2O9dX9FtzCS5nlbF/vZwkPlheq5h6+rQxluH/aO+ORbLjGY4z4iQOulfEGoHcXwx5GFUQ==} - engines: {node: ^10.17 || >=12.3} + /@wdio/cli@8.33.1(typescript@5.1.3): + resolution: {integrity: sha512-Ngt5R6YAmErkSKnWLWt1JilLIKDPIB0P93bzQhb9bQhmg1arFBcl75uiwe6kf6T355vzcNslMaEJyeuqGChmCg==} + engines: {node: ^16.13 || >=18} + hasBin: true dependencies: - '@web-std/blob': 3.0.4 - '@web-std/form-data': 3.0.2 + '@types/node': 20.10.5 + '@vitest/snapshot': 1.3.1 + '@wdio/config': 8.33.1 + '@wdio/globals': 8.33.1(typescript@5.1.3) + '@wdio/logger': 8.28.0 + '@wdio/protocols': 8.32.0 + '@wdio/types': 8.32.4 + '@wdio/utils': 8.33.1 + async-exit-hook: 2.0.1 + chalk: 5.3.0 + chokidar: 3.5.3 + cli-spinners: 2.9.2 + dotenv: 16.4.5 + ejs: 3.1.9 + execa: 8.0.1 + import-meta-resolve: 4.0.0 + inquirer: 9.2.12 + lodash.flattendeep: 4.4.0 + lodash.pickby: 4.6.0 + lodash.union: 4.6.0 + read-pkg-up: 10.0.0 + recursive-readdir: 2.2.3 + webdriverio: 8.33.1(typescript@5.1.3) + yargs: 17.7.2 + transitivePeerDependencies: + - bufferutil + - devtools + - encoding + - supports-color + - typescript + - utf-8-validate + dev: true + + /@wdio/config@8.33.1: + resolution: {integrity: sha512-JB7+tRkEsDJ4QAgJIZ3AaZvlp8pfBH6A5cKcGsaOuLVYMnsRPVkEGQc6n2akN9EPlDA2UjyrPOX6KZHbsSty7w==} + engines: {node: ^16.13 || >=18} + dependencies: + '@wdio/logger': 8.28.0 + '@wdio/types': 8.32.4 + '@wdio/utils': 8.33.1 + decamelize: 6.0.0 + deepmerge-ts: 5.1.0 + glob: 10.3.10 + import-meta-resolve: 4.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@wdio/globals@8.33.1(typescript@5.1.3): + resolution: {integrity: sha512-1ud9oq7n9MMNywS/FoMRRWqW6uhcoxgnpXoGeLE2Tr+4f937ABOl+sfZgjycXujyvR7yTL8AROOYajp1Yuv1Xg==} + engines: {node: ^16.13 || >=18} + optionalDependencies: + expect-webdriverio: 4.11.9(typescript@5.1.3) + webdriverio: 8.33.1(typescript@5.1.3) + transitivePeerDependencies: + - bufferutil + - devtools + - encoding + - supports-color + - typescript + - utf-8-validate + dev: true + + /@wdio/local-runner@8.33.1(typescript@5.1.3): + resolution: {integrity: sha512-eQp12wHIkyh5zl9fun1qjv5Qvf4mCHPgLs5sKbfo3OK4LadzmD4/QNvDG8DYq/9cyuhVvnHgbLQ3XAnkoPde3w==} + engines: {node: ^16.13 || >=18} + dependencies: + '@types/node': 20.10.5 + '@wdio/logger': 8.28.0 + '@wdio/repl': 8.24.12 + '@wdio/runner': 8.33.1(typescript@5.1.3) + '@wdio/types': 8.32.4 + async-exit-hook: 2.0.1 + split2: 4.2.0 + stream-buffers: 3.0.2 + transitivePeerDependencies: + - bufferutil + - devtools + - encoding + - supports-color + - typescript + - utf-8-validate + dev: true + + /@wdio/logger@8.28.0: + resolution: {integrity: sha512-/s6zNCqwy1hoc+K4SJypis0Ud0dlJ+urOelJFO1x0G0rwDRWyFiUP6ijTaCcFxAm29jYEcEPWijl2xkVIHwOyA==} + engines: {node: ^16.13 || >=18} + dependencies: + chalk: 5.3.0 + loglevel: 1.9.1 + loglevel-plugin-prefix: 0.8.4 + strip-ansi: 7.1.0 + dev: true + + /@wdio/mocha-framework@8.33.1: + resolution: {integrity: sha512-CxYLE22+tgnMnruElvDGJGR+dE0pxvMZ95agIUYYen69DJ705a74XtTR6zX9COWu6RooBezHgEs3fXev0XL79Q==} + engines: {node: ^16.13 || >=18} + dependencies: + '@types/mocha': 10.0.6 + '@types/node': 20.10.5 + '@wdio/logger': 8.28.0 + '@wdio/types': 8.32.4 + '@wdio/utils': 8.33.1 + mocha: 10.3.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@wdio/protocols@8.32.0: + resolution: {integrity: sha512-inLJRrtIGdTz/YPbcsvpSvPlYQFTVtF3OYBwAXhG2FiP1ZwE1CQNLP/xgRGye1ymdGCypGkexRqIx3KBGm801Q==} + dev: true + + /@wdio/repl@8.24.12: + resolution: {integrity: sha512-321F3sWafnlw93uRTSjEBVuvWCxTkWNDs7ektQS15drrroL3TMeFOynu4rDrIz0jXD9Vas0HCD2Tq/P0uxFLdw==} + engines: {node: ^16.13 || >=18} + dependencies: + '@types/node': 20.10.5 + dev: true + + /@wdio/reporter@8.32.4: + resolution: {integrity: sha512-kZXbyNuZSSpk4kBavDb+ac25ODu9NVZED6WwZafrlMSnBHcDkoMt26Q0Jp3RKUj+FTyuKH0HvfeLrwVkk6QKDw==} + engines: {node: ^16.13 || >=18} + dependencies: + '@types/node': 20.10.5 + '@wdio/logger': 8.28.0 + '@wdio/types': 8.32.4 + diff: 5.2.0 + object-inspect: 1.12.3 + dev: true + + /@wdio/runner@8.33.1(typescript@5.1.3): + resolution: {integrity: sha512-i0eRwMCePKkQocWsdkPQpBb1jELyNR5JCwnmOgM3g9fQI6KAf5D4oEUkNDFL/vD4UtgbSRmux7b7j5G01VvuqQ==} + engines: {node: ^16.13 || >=18} + dependencies: + '@types/node': 20.10.5 + '@wdio/config': 8.33.1 + '@wdio/globals': 8.33.1(typescript@5.1.3) + '@wdio/logger': 8.28.0 + '@wdio/types': 8.32.4 + '@wdio/utils': 8.33.1 + deepmerge-ts: 5.1.0 + expect-webdriverio: 4.11.9(typescript@5.1.3) + gaze: 1.1.3 + webdriver: 8.33.1 + webdriverio: 8.33.1(typescript@5.1.3) + transitivePeerDependencies: + - bufferutil + - devtools + - encoding + - supports-color + - typescript + - utf-8-validate + dev: true + + /@wdio/spec-reporter@8.32.4: + resolution: {integrity: sha512-3TbD/KrK+EhUex5d5/11qSEKqyNiMHqm27my86tdiK0Ltt9pc/9Ybg1YBiWKlzV9U9MI4seVBRZCXltG17ky/A==} + engines: {node: ^16.13 || >=18} + dependencies: + '@wdio/reporter': 8.32.4 + '@wdio/types': 8.32.4 + chalk: 5.3.0 + easy-table: 1.2.0 + pretty-ms: 7.0.1 + dev: true + + /@wdio/types@8.32.4: + resolution: {integrity: sha512-pDPGcCvq0MQF8u0sjw9m4aMI2gAKn6vphyBB2+1IxYriL777gbbxd7WQ+PygMBvYVprCYIkLPvhUFwF85WakmA==} + engines: {node: ^16.13 || >=18} + dependencies: + '@types/node': 20.10.5 + dev: true + + /@wdio/utils@8.33.1: + resolution: {integrity: sha512-W0ArrZbs4M23POv8+FPsgHDFxg+wwklfZgLSsjVq2kpCmBCfIPxKSAOgTo/XrcH4We/OnshgBzxLcI+BHDgi4w==} + engines: {node: ^16.13 || >=18} + dependencies: + '@puppeteer/browsers': 1.9.1 + '@wdio/logger': 8.28.0 + '@wdio/types': 8.32.4 + decamelize: 6.0.0 + deepmerge-ts: 5.1.0 + edgedriver: 5.3.10 + geckodriver: 4.3.3 + get-port: 7.0.0 + import-meta-resolve: 4.0.0 + locate-app: 2.2.24 + safaridriver: 0.1.2 + split2: 4.2.0 + wait-port: 1.1.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@web-std/blob@3.0.4: + resolution: {integrity: sha512-+dibyiw+uHYK4dX5cJ7HA+gtDAaUUe6JsOryp2ZpAC7h4ICsh49E34JwHoEKPlPvP0llCrNzz45vvD+xX5QDBg==} + dependencies: + '@web-std/stream': 1.0.0 + web-encoding: 1.1.5 + dev: true + + /@web-std/fetch@3.0.3: + resolution: {integrity: sha512-PtaKr6qvw2AmKChugzhQWuTa12dpbogHRBxwcleAZ35UhWucnfD4N+g3f7qYK2OeioSWTK3yMf6n/kOOfqxHaQ==} + engines: {node: ^10.17 || >=12.3} + dependencies: + '@web-std/blob': 3.0.4 + '@web-std/form-data': 3.0.2 + '@web3-storage/multipart-parser': 1.0.0 + data-uri-to-buffer: 3.0.1 + dev: true + + /@web-std/fetch@4.1.2: + resolution: {integrity: sha512-NUX+nnCTjC6URLtFC2O9dX9FtzCS5nlbF/vZwkPlheq5h6+rQxluH/aO+ORbLjGY4z4iQOulfEGoHcXwx5GFUQ==} + engines: {node: ^10.17 || >=12.3} + dependencies: + '@web-std/blob': 3.0.4 + '@web-std/form-data': 3.0.2 '@web-std/stream': 1.0.1 '@web3-storage/multipart-parser': 1.0.0 data-uri-to-buffer: 3.0.1 @@ -7734,6 +9158,10 @@ packages: '@xtuc/long': 4.2.2 dev: true + /@xobotyi/scrollbar-width@1.9.5: + resolution: {integrity: sha512-N8tkAACJx2ww8vFMneJmaAgmjAG1tnVBZJRLRcx061tmsLRZHSEZSLuGWnwPtunsSLvSqXQ2wfp7Mgqg1I+2dQ==} + dev: false + /@xtuc/ieee754@1.2.0: resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} dev: true @@ -7754,7 +9182,6 @@ packages: dependencies: jsonparse: 1.3.1 through: 2.3.8 - dev: false /abitype@0.8.7(typescript@5.1.3): resolution: {integrity: sha512-wQ7hV8Yg/yKmGyFpqrNZufCxbszDe5es4AZGYPBitocfSqXtjrTG9JMWFcc4N30ukl2ve48aBTwt7NJxVQdU3w==} @@ -7787,7 +9214,10 @@ packages: engines: {node: '>=6.5'} dependencies: event-target-shim: 5.0.1 - dev: true + + /abortcontroller-polyfill@1.7.5: + resolution: {integrity: sha512-JMJ5soJWP18htbbxJjG7bG6yuI6pRhgJ0scHHTfkUjf6wjP912xZWvM+A4sJK3gqd9E8fcPbDnOefbA9Th/FIQ==} + dev: false /accepts@1.3.8: resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} @@ -7848,6 +9278,24 @@ packages: resolution: {integrity: sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q==} dev: false + /agent-base@6.0.2: + resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} + engines: {node: '>= 6.0.0'} + dependencies: + debug: 4.3.4(supports-color@5.5.0) + transitivePeerDependencies: + - supports-color + dev: true + + /agent-base@7.1.0: + resolution: {integrity: sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==} + engines: {node: '>= 14'} + dependencies: + debug: 4.3.4(supports-color@5.5.0) + transitivePeerDependencies: + - supports-color + dev: true + /agentkeepalive@4.5.0: resolution: {integrity: sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==} engines: {node: '>= 8.0.0'} @@ -7907,6 +9355,11 @@ packages: string-width: 4.2.3 dev: true + /ansi-colors@4.1.1: + resolution: {integrity: sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==} + engines: {node: '>=6'} + dev: true + /ansi-escapes@4.3.2: resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} engines: {node: '>=8'} @@ -7967,6 +9420,38 @@ packages: resolution: {integrity: sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==} dev: false + /archiver-utils@5.0.2: + resolution: {integrity: sha512-wuLJMmIBQYCsGZgYLTy5FIB2pF6Lfb6cXMSF8Qywwk3t20zWnAi7zLcQFdKQmIB8wyZpY5ER38x08GbwtR2cLA==} + engines: {node: '>= 14'} + requiresBuild: true + dependencies: + glob: 10.3.10 + graceful-fs: 4.2.11 + is-stream: 2.0.1 + lazystream: 1.0.1 + lodash: 4.17.21 + normalize-path: 3.0.0 + readable-stream: 4.5.2 + dev: true + + /archiver@7.0.1: + resolution: {integrity: sha512-ZcbTaIqJOfCc03QwD468Unz/5Ir8ATtvAHsK+FdXbDIbGfihqh9mrvdcYunQzqn4HrvWWaFyaxJhGZagaJJpPQ==} + engines: {node: '>= 14'} + requiresBuild: true + dependencies: + archiver-utils: 5.0.2 + async: 3.2.5 + buffer-crc32: 1.0.0 + readable-stream: 4.5.2 + readdir-glob: 1.1.3 + tar-stream: 3.1.7 + zip-stream: 6.0.1 + dev: true + + /arg@4.1.3: + resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} + dev: true + /arg@5.0.2: resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} dev: false @@ -7982,6 +9467,12 @@ packages: tslib: 2.6.1 dev: false + /aria-query@5.1.3: + resolution: {integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==} + dependencies: + deep-equal: 2.2.3 + dev: true + /aria-query@5.3.0: resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} dependencies: @@ -7995,6 +9486,10 @@ packages: is-array-buffer: 3.0.2 dev: true + /array-ify@1.0.0: + resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==} + dev: true + /array-includes@3.1.6: resolution: {integrity: sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==} engines: {node: '>= 0.4'} @@ -8075,20 +9570,42 @@ packages: resolution: {integrity: sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==} dev: true + /ast-types@0.13.4: + resolution: {integrity: sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==} + engines: {node: '>=4'} + requiresBuild: true + dependencies: + tslib: 2.6.2 + dev: true + /astring@1.8.6: resolution: {integrity: sha512-ISvCdHdlTDlH5IpxQJIex7BWBywFWgjJSVdwst+/iQCoEYnyOaQ95+X1JGshuBjGp6nxKUy1jMgE3zPqN7fQdg==} hasBin: true dev: true + /async-exit-hook@2.0.1: + resolution: {integrity: sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw==} + engines: {node: '>=0.12.0'} + dev: true + /async-mutex@0.2.6: resolution: {integrity: sha512-Hs4R+4SPgamu6rSGW8C7cV9gaWUKEHykfzCCvIRuaVv636Ju10ZdeUbvb4TBEW0INuq2DHZqXbK4Nd3yG4RaRw==} dependencies: tslib: 2.6.2 dev: false + /async@3.2.5: + resolution: {integrity: sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==} + dev: true + /asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} - dev: false + + /atob@2.1.2: + resolution: {integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==} + engines: {node: '>= 4.5.0'} + hasBin: true + dev: true /atomic-sleep@1.0.0: resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} @@ -8099,6 +9616,13 @@ packages: resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} engines: {node: '>= 0.4'} + /available-typed-arrays@1.0.7: + resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} + engines: {node: '>= 0.4'} + dependencies: + possible-typed-array-names: 1.0.0 + dev: true + /axe-core@4.7.2: resolution: {integrity: sha512-zIURGIS1E1Q4pcrMjp+nnEh+16G56eG/MUllJH8yEvw7asDo7Ac9uhC9KIH5jzpITueEZolfYglnCGIuSBz39g==} engines: {node: '>=4'} @@ -8136,15 +9660,14 @@ packages: - debug dev: false - /axios@1.6.5: - resolution: {integrity: sha512-Ii012v05KEVuUoFWmMW/UQv9aRIc3ZwkWDcM+h5Il8izZCtRVpDUfwpoFf7eOtajT3QiGR4yDUx7lPqHJULgbg==} + /axios@1.6.7: + resolution: {integrity: sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA==} dependencies: follow-redirects: 1.15.3 form-data: 4.0.0 proxy-from-env: 1.1.0 transitivePeerDependencies: - debug - dev: false /axobject-query@3.2.1: resolution: {integrity: sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==} @@ -8152,6 +9675,11 @@ packages: dequal: 2.0.3 dev: true + /b4a@1.6.6: + resolution: {integrity: sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg==} + requiresBuild: true + dev: true + /babel-loader@9.1.2(@babel/core@7.22.5)(webpack@5.89.0): resolution: {integrity: sha512-mN14niXW43tddohGl8HPu5yfQq70iUThvFL/4QzESA7GcZoC0eVOhvWdQ8+3UlSjaDE9MVtsW9mxDY07W7VpVA==} engines: {node: '>= 14.15.0'} @@ -8190,6 +9718,37 @@ packages: /balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + /bare-events@2.2.1: + resolution: {integrity: sha512-9GYPpsPFvrWBkelIhOhTWtkeZxVxZOdb3VnFTCzlOo3OjvmTvzLoZFUT8kNFACx0vJej6QPney1Cf9BvzCNE/A==} + requiresBuild: true + dev: true + optional: true + + /bare-fs@2.2.2: + resolution: {integrity: sha512-X9IqgvyB0/VA5OZJyb5ZstoN62AzD7YxVGog13kkfYWYqJYcK0kcqLZ6TrmH5qr4/8//ejVcX4x/a0UvaogXmA==} + requiresBuild: true + dependencies: + bare-events: 2.2.1 + bare-os: 2.2.1 + bare-path: 2.1.0 + streamx: 2.16.1 + dev: true + optional: true + + /bare-os@2.2.1: + resolution: {integrity: sha512-OwPyHgBBMkhC29Hl3O4/YfxW9n7mdTr2+SsO29XBWKKJsbgj3mnorDB80r5TiCQgQstgE5ga1qNYrpes6NvX2w==} + requiresBuild: true + dev: true + optional: true + + /bare-path@2.1.0: + resolution: {integrity: sha512-DIIg7ts8bdRKwJRJrUMy/PICEaQZaPGZ26lsSx9MJSwIhSrcdHn7/C8W+XmnG/rKi6BaRcz+JO00CjZteybDtw==} + requiresBuild: true + dependencies: + bare-os: 2.2.1 + dev: true + optional: true + /base-x@3.0.9: resolution: {integrity: sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==} dependencies: @@ -8199,6 +9758,12 @@ packages: /base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + /basic-ftp@5.0.5: + resolution: {integrity: sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==} + engines: {node: '>=10.0.0'} + requiresBuild: true + dev: true + /bcp-47-match@2.0.3: resolution: {integrity: sha512-JtTezzbAibu8G0R9op9zb3vcWZd9JF6M0xOYGPn0fNCd7wOpRB1mU2mH9T8gaBGbAAyIIVgB2G7xG0GP98zMAQ==} dev: true @@ -8232,6 +9797,13 @@ packages: resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} engines: {node: '>=8'} + /binary@0.3.0: + resolution: {integrity: sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg==} + dependencies: + buffers: 0.1.1 + chainsaw: 0.1.0 + dev: true + /bind-decorator@1.0.11: resolution: {integrity: sha512-yzkH0uog6Vv/vQ9+rhSKxecnqGUZHYncg7qS7voz3Q76+TAi1SGiOKk2mlOvusQnFz9Dc4BC/NMkeXu11YgjJg==} dev: false @@ -8296,10 +9868,18 @@ packages: multiformats: 9.9.0 dev: true + /bluebird@3.4.7: + resolution: {integrity: sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA==} + dev: true + /blueimp-md5@2.19.0: resolution: {integrity: sha512-DRQrD6gJyy8FbiE4s+bDoXS9hiW3Vbx5uCdwvcCf3zLHL+Iv7LtGHLpr+GZV8rHG8tK766FGYBwRbu8pELTt+w==} dev: true + /bn.js@4.11.6: + resolution: {integrity: sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==} + dev: false + /bn.js@4.12.0: resolution: {integrity: sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==} dev: false @@ -8347,6 +9927,12 @@ packages: balanced-match: 1.0.2 concat-map: 0.0.1 + /brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + dependencies: + balanced-match: 1.0.2 + dev: true + /braces@3.0.2: resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} engines: {node: '>=8'} @@ -8374,6 +9960,10 @@ packages: resolution: {integrity: sha512-+12sHB+Br8HIh6VAMVEG5r3UXCyESIgDW7kzk3BjIXa43DVqVwL7GC5TW3jeh+72dtcH99pPVpw0X8i0jt+/kw==} dev: true + /browser-stdout@1.3.1: + resolution: {integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==} + dev: true + /browserify-zlib@0.2.0: resolution: {integrity: sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==} dependencies: @@ -8401,6 +9991,18 @@ packages: update-browserslist-db: 1.0.13(browserslist@4.22.2) dev: true + /browserstack-local@1.5.5: + resolution: {integrity: sha512-jKne7yosrMcptj3hqxp36TP9k0ZW2sCqhyurX24rUL4G3eT7OLgv+CSQN8iq5dtkv5IK+g+v8fWvsiC/S9KxMg==} + dependencies: + agent-base: 6.0.2 + https-proxy-agent: 5.0.1 + is-running: 2.1.0 + ps-tree: 1.2.0 + temp-fs: 0.9.9 + transitivePeerDependencies: + - supports-color + dev: true + /bs58@4.0.1: resolution: {integrity: sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==} dependencies: @@ -8415,10 +10017,25 @@ packages: safe-buffer: 5.2.1 dev: false + /buffer-crc32@0.2.13: + resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} + dev: true + + /buffer-crc32@1.0.0: + resolution: {integrity: sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==} + engines: {node: '>=8.0.0'} + requiresBuild: true + dev: true + /buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} dev: true + /buffer-indexof-polyfill@1.0.2: + resolution: {integrity: sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==} + engines: {node: '>=0.10'} + dev: true + /buffer@5.7.1: resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} dependencies: @@ -8432,13 +10049,17 @@ packages: base64-js: 1.5.1 ieee754: 1.2.1 + /buffers@0.1.1: + resolution: {integrity: sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ==} + engines: {node: '>=0.2.0'} + dev: true + /bufferutil@4.0.8: resolution: {integrity: sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw==} engines: {node: '>=6.14.2'} requiresBuild: true dependencies: node-gyp-build: 4.6.0 - dev: false /builtins@5.0.1: resolution: {integrity: sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==} @@ -8466,12 +10087,41 @@ packages: ylru: 1.3.2 dev: true + /cacheable-lookup@7.0.0: + resolution: {integrity: sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==} + engines: {node: '>=14.16'} + dev: true + + /cacheable-request@10.2.14: + resolution: {integrity: sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ==} + engines: {node: '>=14.16'} + dependencies: + '@types/http-cache-semantics': 4.0.4 + get-stream: 6.0.1 + http-cache-semantics: 4.1.1 + keyv: 4.5.4 + mimic-response: 4.0.0 + normalize-url: 8.0.1 + responselike: 3.0.0 + dev: true + /call-bind@1.0.2: resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} dependencies: function-bind: 1.1.1 get-intrinsic: 1.2.1 + /call-bind@1.0.7: + resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} + engines: {node: '>= 0.4'} + dependencies: + es-define-property: 1.0.0 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + set-function-length: 1.2.2 + dev: true + /callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} @@ -8541,6 +10191,12 @@ packages: type-detect: 4.0.8 dev: true + /chainsaw@0.1.0: + resolution: {integrity: sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ==} + dependencies: + traverse: 0.3.9 + dev: true + /chalk@2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} engines: {node: '>=4'} @@ -8582,6 +10238,10 @@ packages: resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} dev: true + /charenc@0.0.2: + resolution: {integrity: sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==} + dev: false + /check-error@1.0.2: resolution: {integrity: sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==} dev: true @@ -8605,6 +10265,22 @@ packages: engines: {node: '>=6.0'} dev: true + /chromium-bidi@0.4.16(devtools-protocol@0.0.1147663): + resolution: {integrity: sha512-7ZbXdWERxRxSwo3txsBjjmc/NLxqb1Bk30mRb0BMS4YIaiV6zvKZqL/UAH+DdqcDYayDWk2n/y8klkBDODrPvA==} + requiresBuild: true + peerDependencies: + devtools-protocol: '*' + dependencies: + devtools-protocol: 0.0.1147663 + mitt: 3.0.0 + dev: true + + /ci-info@3.9.0: + resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} + engines: {node: '>=8'} + requiresBuild: true + dev: true + /cipher-base@1.0.4: resolution: {integrity: sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==} dependencies: @@ -8647,6 +10323,15 @@ packages: engines: {node: '>= 10'} dev: true + /cli-width@4.1.0: + resolution: {integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==} + engines: {node: '>= 12'} + dev: true + + /client-only@0.0.1: + resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} + dev: false + /clipboardy@3.0.0: resolution: {integrity: sha512-Su+uU5sr1jkUy1sGRpLKjKrvEOVXgSgiSInwa/qeID6aJ07yh+5NWc3h2QfjHjBnfX4LhtFcuAWKUsJ3r+fjbg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -8664,6 +10349,14 @@ packages: wrap-ansi: 6.2.0 dev: false + /cliui@7.0.4: + resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + dev: true + /cliui@8.0.1: resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} engines: {node: '>=12'} @@ -8676,6 +10369,7 @@ packages: /clone@1.0.4: resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} engines: {node: '>=0.8'} + requiresBuild: true dev: true /clsx@1.2.1: @@ -8748,12 +10442,15 @@ packages: color-string: 1.9.1 dev: false + /colorette@2.0.20: + resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + dev: false + /combined-stream@1.0.8: resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} engines: {node: '>= 0.8'} dependencies: delayed-stream: 1.0.0 - dev: false /comma-separated-tokens@2.0.3: resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} @@ -8771,10 +10468,34 @@ packages: /commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + /commander@9.5.0: + resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} + engines: {node: ^12.20.0 || >=14} + dev: true + /commondir@1.0.1: resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} dev: true + /compare-func@2.0.0: + resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==} + dependencies: + array-ify: 1.0.0 + dot-prop: 5.3.0 + dev: true + + /compress-commons@6.0.2: + resolution: {integrity: sha512-6FqVXeETqWPoGcfzrXb37E50NP0LXT8kAMu5ooZayhWWdgEY4lBEEcbQNXtkuKQsGduxiIcI4gOTsxTmuq/bSg==} + engines: {node: '>= 14'} + requiresBuild: true + dependencies: + crc-32: 1.2.2 + crc32-stream: 6.0.0 + is-stream: 2.0.1 + normalize-path: 3.0.0 + readable-stream: 4.5.2 + dev: true + /concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} @@ -8813,6 +10534,31 @@ packages: engines: {node: '>= 0.6'} dev: true + /conventional-changelog-angular@7.0.0: + resolution: {integrity: sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==} + engines: {node: '>=16'} + dependencies: + compare-func: 2.0.0 + dev: true + + /conventional-changelog-conventionalcommits@7.0.2: + resolution: {integrity: sha512-NKXYmMR/Hr1DevQegFB4MwfM5Vv0m4UIxKZTTYuD98lpTknaZlSRrDOG4X7wIXpGkfsYxZTghUN+Qq+T0YQI7w==} + engines: {node: '>=16'} + dependencies: + compare-func: 2.0.0 + dev: true + + /conventional-commits-parser@5.0.0: + resolution: {integrity: sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA==} + engines: {node: '>=16'} + hasBin: true + dependencies: + JSONStream: 1.3.5 + is-text-path: 2.0.0 + meow: 12.1.1 + split2: 4.2.0 + dev: true + /convert-source-map@1.9.0: resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} @@ -8850,6 +10596,25 @@ packages: toggle-selection: 1.0.6 dev: false + /core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + requiresBuild: true + dev: true + + /cosmiconfig-typescript-loader@5.0.0(@types/node@20.3.1)(cosmiconfig@8.3.6)(typescript@5.1.3): + resolution: {integrity: sha512-+8cK7jRAReYkMwMiG+bxhcNKiHJDM6bR9FD/nGBXOWdMLuYawjF5cGrtLilJ+LGd3ZjCXnJjR5DkfWPoIVlqJA==} + engines: {node: '>=v16'} + peerDependencies: + '@types/node': '*' + cosmiconfig: '>=8.2' + typescript: '>=4' + dependencies: + '@types/node': 20.3.1 + cosmiconfig: 8.3.6(typescript@5.1.3) + jiti: 1.21.0 + typescript: 5.1.3 + dev: true + /cosmiconfig@8.2.0: resolution: {integrity: sha512-3rTMnFJA1tCOPwRxtgF4wd7Ab2qvDbL8jX+3smjIbS4HlZBagTlpERbdN7iAbWlrfxE3M8c27kTwTawQ7st+OQ==} engines: {node: '>=14'} @@ -8860,6 +10625,22 @@ packages: path-type: 4.0.0 dev: true + /cosmiconfig@8.3.6(typescript@5.1.3): + resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} + engines: {node: '>=14'} + peerDependencies: + typescript: '>=4.9.5' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + import-fresh: 3.3.0 + js-yaml: 4.1.0 + parse-json: 5.2.0 + path-type: 4.0.0 + typescript: 5.1.3 + dev: true + /cosmjs-types@0.7.2: resolution: {integrity: sha512-vf2uLyktjr/XVAgEq0DjMxeAWh1yYREe7AMHDKd7EiHVqxBPCaBS+qEEQUkXbR9ndnckqr1sUG8BQhazh4X5lA==} dependencies: @@ -8882,13 +10663,28 @@ packages: resolution: {integrity: sha512-WIdaQ8uW1vIbYvNnAVunkC6yxTrneJC7VQ5UUQ0kuw8b0C0A39KTIpoQHCfc8tV7o9vF4niwRhdXEdfAgQEsQQ==} dependencies: cosmos-directory-types: 0.0.6 - node-fetch-native: 1.6.2 + node-fetch-native: 1.6.4 dev: false /cosmos-directory-types@0.0.6: resolution: {integrity: sha512-9qlQ3kTNTHvhYglTXSnllGqKhrtGB08Weatw56ZqV5OqcmjuZdlY9iMtD00odgQLTEpTSQQL3gFGuqTkGdIDPA==} dev: false + /crc-32@1.2.2: + resolution: {integrity: sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==} + engines: {node: '>=0.8'} + hasBin: true + requiresBuild: true + + /crc32-stream@6.0.0: + resolution: {integrity: sha512-piICUB6ei4IlTv1+653yq5+KoqfBYmj9bw6LqXoOneTMDXk5nM1qt12mFW1caG3LlJXEKW1Bp0WggEmIfQB34g==} + engines: {node: '>= 14'} + requiresBuild: true + dependencies: + crc-32: 1.2.2 + readable-stream: 4.5.2 + dev: true + /create-hash@1.2.0: resolution: {integrity: sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==} dependencies: @@ -8910,14 +10706,26 @@ packages: sha.js: 2.4.11 dev: false - /cross-fetch@3.1.8: + /create-require@1.1.1: + resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} + dev: true + + /cross-fetch@3.1.8(encoding@0.1.13): resolution: {integrity: sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==} dependencies: - node-fetch: 2.6.12 + node-fetch: 2.6.12(encoding@0.1.13) transitivePeerDependencies: - encoding dev: false + /cross-fetch@4.0.0(encoding@0.1.13): + resolution: {integrity: sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==} + requiresBuild: true + dependencies: + node-fetch: 2.6.12(encoding@0.1.13) + transitivePeerDependencies: + - encoding + /cross-spawn@7.0.3: resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} engines: {node: '>= 8'} @@ -8926,6 +10734,10 @@ packages: shebang-command: 2.0.0 which: 2.0.2 + /crypt@0.0.2: + resolution: {integrity: sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==} + dev: false + /crypto-js@4.1.1: resolution: {integrity: sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw==} dev: false @@ -8934,10 +10746,21 @@ packages: resolution: {integrity: sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==} engines: {node: '>=4'} + /css-in-js-utils@3.1.0: + resolution: {integrity: sha512-fJAcud6B3rRu+KHYk+Bwf+WFL2MDCJJ1XG9x137tJQ0xYxor7XziQtuGFbWNdqrvF4Tk26O3H73nfVqXt/fW1A==} + dependencies: + hyphenate-style-name: 1.0.4 + dev: false + /css-selector-parser@3.0.4: resolution: {integrity: sha512-pnmS1dbKsz6KA4EW4BznyPL2xxkNDRg62hcD0v8g6DEw2W7hxOln5M953jsp9hmw5Dg57S6o/A8GOn37mbAgcQ==} dev: true + /css-shorthand-properties@1.1.1: + resolution: {integrity: sha512-Md+Juc7M3uOdbAFwOYlTrccIZ7oCFuzrhKYQjdeUEW/sE1hv17Jp/Bws+ReOPpGVBTYCBoYo+G17V5Qo8QQ75A==} + requiresBuild: true + dev: true + /css-to-react-native@3.2.0: resolution: {integrity: sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==} dependencies: @@ -8945,9 +10768,26 @@ packages: css-color-keywords: 1.0.0 postcss-value-parser: 4.2.0 + /css-tree@1.1.3: + resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==} + engines: {node: '>=8.0.0'} + dependencies: + mdn-data: 2.0.14 + source-map: 0.6.1 + dev: false + + /css-value@0.0.1: + resolution: {integrity: sha512-FUV3xaJ63buRLgHrLQVlVgQnQdR4yqdLGaDu7g8CQcWjInDfM9plBTPI9FRfpahju1UBSaMckeb2/46ApS/V1Q==} + requiresBuild: true + dev: true + /csstype@3.1.2: resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} + /csv-writer@1.6.0: + resolution: {integrity: sha512-NOx7YDFWEsM/fTRAJjRpPp8t+MKRVvniAg9wQlUKx20MFrPs73WLJhFf5iteqrxNYnsy924K3Iroh3yNHeYd2g==} + dev: true + /d3-array@2.12.1: resolution: {integrity: sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==} dependencies: @@ -9030,10 +10870,23 @@ packages: resolution: {integrity: sha512-dArJ32hchFsrQ8uMiTBLq256MpnZjeuBtdHpaDlYuQyjU0CVzCJl/BVW+SkszaAeH95D/8gxqAhgx0ouAWAfRg==} dev: false + /d@1.0.2: + resolution: {integrity: sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==} + engines: {node: '>=0.12'} + dependencies: + es5-ext: 0.10.64 + type: 2.7.2 + dev: false + /damerau-levenshtein@1.0.8: resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} dev: true + /dargs@8.1.0: + resolution: {integrity: sha512-wAV9QHOsNbwnWdNW2FYvE1P56wtgSbM+3SZcdGiWQILwVjACCXDCI3Ai8QlCjMDB8YK5zySiXZYBiwGmNY3lnw==} + engines: {node: '>=12'} + dev: true + /data-uri-to-buffer@3.0.1: resolution: {integrity: sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og==} engines: {node: '>= 6'} @@ -9044,6 +10897,12 @@ packages: engines: {node: '>= 12'} dev: true + /data-uri-to-buffer@6.0.2: + resolution: {integrity: sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==} + engines: {node: '>= 14'} + requiresBuild: true + dev: true + /date-time@3.1.0: resolution: {integrity: sha512-uqCUKXE5q1PNBXjPqvwhwJf9SwMoAHBgWJ6DcrnS5o+W2JOiIILl0JEdVD8SGujrNS02GGxgwAg2PN2zONgtjg==} engines: {node: '>=6'} @@ -9051,10 +10910,25 @@ packages: time-zone: 1.0.0 dev: true + /dateformat@4.6.3: + resolution: {integrity: sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==} + dev: false + /debounce@1.2.1: resolution: {integrity: sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==} dev: false + /debug@2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.0.0 + dev: false + /debug@3.2.7: resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} peerDependencies: @@ -9078,6 +10952,19 @@ packages: ms: 2.1.2 supports-color: 5.5.0 + /debug@4.3.4(supports-color@8.1.1): + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + supports-color: 8.1.1 + dev: true + /decamelize-keys@1.1.1: resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} engines: {node: '>=0.10.0'} @@ -9090,6 +10977,16 @@ packages: resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} engines: {node: '>=0.10.0'} + /decamelize@4.0.0: + resolution: {integrity: sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==} + engines: {node: '>=10'} + dev: true + + /decamelize@6.0.0: + resolution: {integrity: sha512-Fv96DCsdOgB6mdGl67MT5JaTNKRzrzill5OH5s8bjYJXVlcXyPYGyPsUkWyGV5p1TXI5esYIYMMeDJL0hEIwaA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true + /decode-named-character-reference@1.0.2: resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==} dependencies: @@ -9099,12 +10996,18 @@ packages: /decode-uri-component@0.2.2: resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} engines: {node: '>=0.10'} - dev: false /decode-uri-component@0.4.1: resolution: {integrity: sha512-+8VxcR21HhTy8nOt6jf20w0c9CADrw1O8d+VZ/YzzCt4bJ3uBjw+D1q2osAB8RnpwwaeYBxy0HyKQxD5JBMuuQ==} engines: {node: '>=14.16'} + /decompress-response@6.0.0: + resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} + engines: {node: '>=10'} + dependencies: + mimic-response: 3.1.0 + dev: true + /deep-eql@4.1.3: resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} engines: {node: '>=6'} @@ -9116,10 +11019,39 @@ packages: resolution: {integrity: sha512-bHtC0iYvWhyaTzvV3CZgPeZQqCOBGyGsVV7v4eevpdkLHfiSrXUdBG+qAuSz4RI70sszvjQ1QSZ98An1yNwpSw==} dev: true + /deep-equal@2.2.3: + resolution: {integrity: sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==} + engines: {node: '>= 0.4'} + dependencies: + array-buffer-byte-length: 1.0.0 + call-bind: 1.0.7 + es-get-iterator: 1.1.3 + get-intrinsic: 1.2.4 + is-arguments: 1.1.1 + is-array-buffer: 3.0.2 + is-date-object: 1.0.5 + is-regex: 1.1.4 + is-shared-array-buffer: 1.0.2 + isarray: 2.0.5 + object-is: 1.1.5 + object-keys: 1.1.1 + object.assign: 4.1.4 + regexp.prototype.flags: 1.5.2 + side-channel: 1.0.4 + which-boxed-primitive: 1.0.2 + which-collection: 1.0.2 + which-typed-array: 1.1.15 + dev: true + /deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} dev: true + /deepmerge-ts@5.1.0: + resolution: {integrity: sha512-eS8dRJOckyo9maw9Tu5O5RUi/4inFLrnoLkBe3cPfDMx3WZioXtmOew4TXQaxq7Rhl4xjDtR7c6x8nNTxOvbFw==} + engines: {node: '>=16.0.0'} + dev: true + /default-browser-id@3.0.0: resolution: {integrity: sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==} engines: {node: '>=12'} @@ -9140,10 +11072,25 @@ packages: /defaults@1.0.4: resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} + requiresBuild: true dependencies: clone: 1.0.4 dev: true + /defer-to-connect@2.0.1: + resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==} + engines: {node: '>=10'} + dev: true + + /define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} + dependencies: + es-define-property: 1.0.0 + es-errors: 1.3.0 + gopd: 1.0.1 + dev: true + /define-lazy-prop@3.0.0: resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} engines: {node: '>=12'} @@ -9153,13 +11100,34 @@ packages: resolution: {integrity: sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==} engines: {node: '>= 0.4'} dependencies: + define-data-property: 1.1.4 + has-property-descriptors: 1.0.0 + object-keys: 1.1.1 + dev: true + + /define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.4 has-property-descriptors: 1.0.0 object-keys: 1.1.1 + dev: true /defu@6.1.3: resolution: {integrity: sha512-Vy2wmG3NTkmHNg/kzpuvHhkqeIx3ODWqasgCRbKtbXEN0G+HpEEv9BtJLp7ZG1CZloFaC41Ah3ZFbq7aqCqMeQ==} dev: false + /degenerator@5.0.1: + resolution: {integrity: sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==} + engines: {node: '>= 14'} + requiresBuild: true + dependencies: + ast-types: 0.13.4 + escodegen: 2.1.0 + esprima: 4.0.1 + dev: true + /delay@4.4.1: resolution: {integrity: sha512-aL3AhqtfhOlT/3ai6sWXeqwnw63ATNpnUiN4HL7x9q+My5QtHlO3OIkasmug9LKzpheLdmUKGRKnYXYAS7FQkQ==} engines: {node: '>=6'} @@ -9173,7 +11141,6 @@ packages: /delayed-stream@1.0.0: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} - dev: false /delegates@1.0.0: resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} @@ -9232,11 +11199,42 @@ packages: dequal: 2.0.3 dev: true + /devtools-protocol@0.0.1147663: + resolution: {integrity: sha512-hyWmRrexdhbZ1tcJUGpO95ivbRhWXz++F4Ko+n21AY5PNln2ovoJw+8ZMNDTtip+CNFQfrtLVh/w4009dXO/eQ==} + requiresBuild: true + dev: true + + /devtools-protocol@0.0.1263784: + resolution: {integrity: sha512-k0SCZMwj587w4F8QYbP5iIbSonL6sd3q8aVJch036r9Tv2t9b5/Oq7AiJ/FJvRuORm/pJNXZtrdNNWlpRnl56A==} + requiresBuild: true + dev: true + /diff-sequences@29.4.3: resolution: {integrity: sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: true + /diff-sequences@29.6.3: + resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + requiresBuild: true + dev: true + + /diff@4.0.2: + resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} + engines: {node: '>=0.3.1'} + dev: true + + /diff@5.0.0: + resolution: {integrity: sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==} + engines: {node: '>=0.3.1'} + dev: true + + /diff@5.2.0: + resolution: {integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==} + engines: {node: '>=0.3.1'} + dev: true + /dijkstrajs@1.0.3: resolution: {integrity: sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==} dev: false @@ -9278,6 +11276,31 @@ packages: esutils: 2.0.3 dev: true + /dom-accessibility-api@0.5.16: + resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} + dev: true + + /dot-prop@5.3.0: + resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} + engines: {node: '>=8'} + dependencies: + is-obj: 2.0.0 + dev: true + + /dotenv@16.4.5: + resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==} + engines: {node: '>=12'} + + /duplexer2@0.1.4: + resolution: {integrity: sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==} + dependencies: + readable-stream: 2.3.8 + dev: true + + /duplexer@0.1.2: + resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} + dev: true + /duplexify@4.1.2: resolution: {integrity: sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==} dependencies: @@ -9291,10 +11314,47 @@ packages: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} dev: true + /easy-table@1.2.0: + resolution: {integrity: sha512-OFzVOv03YpvtcWGe5AayU5G2hgybsg3iqA6drU8UaoZyB9jLGMTrz9+asnLp/E+6qPh88yEI1gvyZFZ41dmgww==} + dependencies: + ansi-regex: 5.0.1 + optionalDependencies: + wcwidth: 1.0.1 + dev: true + + /edge-paths@3.0.5: + resolution: {integrity: sha512-sB7vSrDnFa4ezWQk9nZ/n0FdpdUuC6R1EOrlU3DL+bovcNFK28rqu2emmAUjujYEJTWIgQGqgVVWUZXMnc8iWg==} + engines: {node: '>=14.0.0'} + dependencies: + '@types/which': 2.0.2 + which: 2.0.2 + dev: true + + /edgedriver@5.3.10: + resolution: {integrity: sha512-RFSHYMNtcF1PjaGZCA2rdQQ8hSTLPZgcYgeY1V6dC+tR4NhZXwFAku+8hCbRYh7ZlwKKrTbVu9FwknjFddIuuw==} + hasBin: true + requiresBuild: true + dependencies: + '@wdio/logger': 8.28.0 + decamelize: 6.0.0 + edge-paths: 3.0.5 + node-fetch: 3.3.2 + unzipper: 0.10.14 + which: 4.0.0 + dev: true + /ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} dev: true + /ejs@3.1.9: + resolution: {integrity: sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==} + engines: {node: '>=0.10.0'} + hasBin: true + dependencies: + jake: 10.8.7 + dev: true + /electron-fetch@1.9.1: resolution: {integrity: sha512-M9qw6oUILGVrcENMSRRefE1MbHPIz0h79EKIeJWK9v563aT9Qkh8aEHPO1H5vi970wPirNY+jO9OpFoLiMsMGA==} engines: {node: '>=6'} @@ -9341,13 +11401,11 @@ packages: resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==} dependencies: iconv-lite: 0.6.3 - dev: true /end-of-stream@1.4.4: resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} dependencies: once: 1.4.0 - dev: false /enhanced-resolve@5.15.0: resolution: {integrity: sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==} @@ -9372,6 +11430,12 @@ packages: is-arrayish: 0.2.1 dev: true + /error-stack-parser@2.1.4: + resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==} + dependencies: + stackframe: 1.3.4 + dev: false + /es-abstract@1.22.1: resolution: {integrity: sha512-ioRRcXMO6OFyRpyzV3kE1IIBd4WG5/kltnzdxSCqoP8CMGs/Li+M1uF5o7lOkZVFjDs+NLesthnF66Pg/0q0Lw==} engines: {node: '>= 0.4'} @@ -9417,6 +11481,32 @@ packages: which-typed-array: 1.1.11 dev: true + /es-define-property@1.0.0: + resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.4 + dev: true + + /es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + dev: true + + /es-get-iterator@1.1.3: + resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==} + dependencies: + call-bind: 1.0.7 + get-intrinsic: 1.2.4 + has-symbols: 1.0.3 + is-arguments: 1.1.1 + is-map: 2.0.3 + is-set: 2.0.3 + is-string: 1.0.7 + isarray: 2.0.5 + stop-iteration-iterator: 1.0.0 + dev: true + /es-module-lexer@1.4.1: resolution: {integrity: sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==} dev: true @@ -9445,6 +11535,25 @@ packages: is-symbol: 1.0.4 dev: true + /es5-ext@0.10.64: + resolution: {integrity: sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==} + engines: {node: '>=0.10'} + requiresBuild: true + dependencies: + es6-iterator: 2.0.3 + es6-symbol: 3.1.4 + esniff: 2.0.1 + next-tick: 1.1.0 + dev: false + + /es6-iterator@2.0.3: + resolution: {integrity: sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==} + dependencies: + d: 1.0.2 + es5-ext: 0.10.64 + es6-symbol: 3.1.4 + dev: false + /es6-object-assign@1.1.0: resolution: {integrity: sha512-MEl9uirslVwqQU369iHNWZXsI8yaZYGg/D65aOgZkeyFJwHYSxilf7rQzXKI7DdDuBPrBXbfk3sl9hJhmd5AUw==} dev: true @@ -9459,6 +11568,14 @@ packages: es6-promise: 4.2.8 dev: false + /es6-symbol@3.1.4: + resolution: {integrity: sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==} + engines: {node: '>=0.12'} + dependencies: + d: 1.0.2 + ext: 1.7.0 + dev: false + /esbuild@0.17.19: resolution: {integrity: sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==} engines: {node: '>=12'} @@ -9532,6 +11649,12 @@ packages: resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} engines: {node: '>=0.8.0'} + /escape-string-regexp@2.0.0: + resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} + engines: {node: '>=8'} + requiresBuild: true + dev: true + /escape-string-regexp@4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} @@ -9542,6 +11665,19 @@ packages: engines: {node: '>=12'} dev: true + /escodegen@2.1.0: + resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} + engines: {node: '>=6.0'} + hasBin: true + requiresBuild: true + dependencies: + esprima: 4.0.1 + estraverse: 5.3.0 + esutils: 2.0.3 + optionalDependencies: + source-map: 0.6.1 + dev: true + /eslint-config-airbnb-base@15.0.0(eslint-plugin-import@2.27.5)(eslint@8.43.0): resolution: {integrity: sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==} engines: {node: ^10.12.0 || >=12.0.0} @@ -9915,6 +12051,16 @@ packages: - supports-color dev: true + /esniff@2.0.1: + resolution: {integrity: sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==} + engines: {node: '>=0.10'} + dependencies: + d: 1.0.2 + es5-ext: 0.10.64 + event-emitter: 0.3.5 + type: 2.7.2 + dev: false + /espree@9.6.1: resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -9924,6 +12070,13 @@ packages: eslint-visitor-keys: 3.4.3 dev: true + /esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + requiresBuild: true + dev: true + /esquery@1.5.0: resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} engines: {node: '>=0.10'} @@ -9982,6 +12135,10 @@ packages: '@types/unist': 3.0.2 dev: true + /estree-walker@1.0.1: + resolution: {integrity: sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==} + dev: true + /estree-walker@2.0.2: resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} dev: true @@ -10009,6 +12166,19 @@ packages: - supports-color dev: false + /eth-block-tracker@7.1.0: + resolution: {integrity: sha512-8YdplnuE1IK4xfqpf4iU7oBxnOYAc35934o083G8ao+8WM8QQtt/mVlAY6yIAdY1eMeLqg4Z//PZjJGmWGPMRg==} + engines: {node: '>=14.0.0'} + dependencies: + '@metamask/eth-json-rpc-provider': 1.0.1 + '@metamask/safe-event-emitter': 3.1.1 + '@metamask/utils': 5.0.2 + json-rpc-random-id: 1.0.1 + pify: 3.0.0 + transitivePeerDependencies: + - supports-color + dev: false + /eth-json-rpc-filters@5.1.0: resolution: {integrity: sha512-fos+9xmoa1A2Ytsc9eYof17r81BjdJOUcGcgZn4K/tKdCCTb+a8ytEtwlu1op5qsXFDlgGmstTELFrDEc89qEQ==} engines: {node: '>=14.0.0'} @@ -10020,6 +12190,17 @@ packages: pify: 5.0.0 dev: false + /eth-json-rpc-filters@6.0.1: + resolution: {integrity: sha512-ITJTvqoCw6OVMLs7pI8f4gG92n/St6x80ACtHodeS+IXmO0w+t1T5OOzfSt7KLSMLRkVUoexV7tztLgDxg+iig==} + engines: {node: '>=14.0.0'} + dependencies: + '@metamask/safe-event-emitter': 3.1.1 + async-mutex: 0.2.6 + eth-query: 2.1.2 + json-rpc-engine: 6.1.0 + pify: 5.0.0 + dev: false + /eth-query@2.1.2: resolution: {integrity: sha512-srES0ZcvwkR/wd5OQBRA1bIJMww1skfGS0s8wlwK3/oNP4+wnds60krvu5R1QbpRQjMmpG5OMIWro5s7gvDPsA==} dependencies: @@ -10039,6 +12220,12 @@ packages: fast-safe-stringify: 2.1.1 dev: false + /ethereum-bloom-filters@1.0.10: + resolution: {integrity: sha512-rxJ5OFN3RwjQxDcFP2Z5+Q9ho4eIdEmSc2ht0fCu8Se9nbXjZ7/031uXoUYJ87KHCOdVeiUuwSnoS7hmYAGVHA==} + dependencies: + js-sha3: 0.8.0 + dev: false + /ethereum-cryptography@2.1.2: resolution: {integrity: sha512-Z5Ba0T0ImZ8fqXrJbpHcbpAvIswRte2wGNR/KePnu8GbbvgJ47lMxT/ZZPG6i9Jaht4azPDop4HaM00J0J59ug==} dependencies: @@ -10102,15 +12289,58 @@ packages: - utf-8-validate dev: false + /ethjs-unit@0.1.6: + resolution: {integrity: sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw==} + engines: {node: '>=6.5.0', npm: '>=3'} + dependencies: + bn.js: 4.11.6 + number-to-bn: 1.7.0 + dev: false + + /ethjs-util@0.1.6: + resolution: {integrity: sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w==} + engines: {node: '>=6.5.0', npm: '>=3'} + dependencies: + is-hex-prefixed: 1.0.0 + strip-hex-prefix: 1.0.0 + dev: false + bundledDependencies: false + + /event-emitter@0.3.5: + resolution: {integrity: sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==} + dependencies: + d: 1.0.2 + es5-ext: 0.10.64 + dev: false + + /event-stream@3.3.4: + resolution: {integrity: sha512-QHpkERcGsR0T7Qm3HNJSyXKEEj8AHNxkY3PK8TS2KJvQ7NiSHe3DDpwVKKtoYprL/AreyzFBeIkBIWChAqn60g==} + dependencies: + duplexer: 0.1.2 + from: 0.1.7 + map-stream: 0.1.0 + pause-stream: 0.0.11 + split: 0.3.3 + stream-combiner: 0.0.4 + through: 2.3.8 + dev: true + /event-target-shim@5.0.1: resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} engines: {node: '>=6'} - dev: true + + /eventemitter3@4.0.4: + resolution: {integrity: sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ==} + dev: false /eventemitter3@4.0.7: resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} dev: false + /eventemitter3@5.0.1: + resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + dev: false + /events@3.3.0: resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} engines: {node: '>=0.8.x'} @@ -10144,6 +12374,68 @@ packages: strip-final-newline: 3.0.0 dev: true + /export-to-csv@1.2.3: + resolution: + { + integrity: sha512-N+hWdpEQNSn4BeltgusTuW65gC+2B5hmOWe4Eu0gw0NwKq92dzD+5ObSSBUeKTy7k+PGG7xDqaThPg8elZ7k+g==, + } + engines: { node: ^v12.20.0 || >=v14.13.0 } + dev: false + + /execa@8.0.1: + resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} + engines: {node: '>=16.17'} + dependencies: + cross-spawn: 7.0.3 + get-stream: 8.0.1 + human-signals: 5.0.0 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.1.0 + onetime: 6.0.0 + signal-exit: 4.1.0 + strip-final-newline: 3.0.0 + dev: true + + /expect-webdriverio@4.11.9(typescript@5.1.3): + resolution: {integrity: sha512-nHVLoC4W8wuVAyfpitJ07iDMLjeQ2OeYVjrKEb7dMeG4fqlegzN1SGYnnsKay+KWrte9KzuW1pZ7h5Nmbm/hAQ==} + engines: {node: '>=16 || >=18 || >=20'} + dependencies: + '@vitest/snapshot': 1.3.1 + expect: 29.7.0 + jest-matcher-utils: 29.7.0 + lodash.isequal: 4.5.0 + optionalDependencies: + '@wdio/globals': 8.33.1(typescript@5.1.3) + '@wdio/logger': 8.28.0 + webdriverio: 8.33.1(typescript@5.1.3) + transitivePeerDependencies: + - bufferutil + - devtools + - encoding + - supports-color + - typescript + - utf-8-validate + dev: true + + /expect@29.7.0: + resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + requiresBuild: true + dependencies: + '@jest/expect-utils': 29.7.0 + jest-get-type: 29.6.3 + jest-matcher-utils: 29.7.0 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + dev: true + + /ext@1.7.0: + resolution: {integrity: sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==} + dependencies: + type: 2.7.2 + dev: false + /extend@3.0.2: resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} dev: true @@ -10157,11 +12449,34 @@ packages: tmp: 0.0.33 dev: true + /extract-zip@2.0.1: + resolution: {integrity: sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==} + engines: {node: '>= 10.17.0'} + hasBin: true + dependencies: + debug: 4.3.4(supports-color@5.5.0) + get-stream: 5.2.0 + yauzl: 2.10.0 + optionalDependencies: + '@types/yauzl': 2.10.3 + transitivePeerDependencies: + - supports-color + dev: true + /eyes@0.1.8: resolution: {integrity: sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ==} engines: {node: '> 0.1.90'} dev: false + /fast-copy@3.0.2: + resolution: {integrity: sha512-dl0O9Vhju8IrcLndv2eU4ldt1ftXMqqfgN4H1cpmGV7P6jeB9FwpN9a2c8DPGE1Ys88rNUJVYDHq73CGAGOPfQ==} + dev: false + + /fast-deep-equal@2.0.1: + resolution: {integrity: sha512-bCK/2Z4zLidyB4ReuIsvALH6w31YfAQDmXMqMx6FyfHqvBxtjC0eRumeSu4Bs3XtXwpyIywtSTrVT99BxY1f9w==} + requiresBuild: true + dev: true + /fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} @@ -10203,6 +12518,14 @@ packages: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} dev: true + /fast-loops@1.1.3: + resolution: {integrity: sha512-8EZzEP0eKkEEVX+drtd9mtuQ+/QrlfW/5MlwcwK5Nds6EkZ/tRzEexkzUY2mIssnAyVLT+TKHuRXmFNNXYUd6g==} + dev: false + + /fast-password-entropy@1.1.1: + resolution: {integrity: sha512-dxm29/BPFrNgyEDygg/lf9c2xQR0vnQhG7+hZjAI39M/3um9fD4xiqG6F0ZjW6bya5m9CI0u6YryHGRtxCGCiw==} + dev: false + /fast-redact@3.3.0: resolution: {integrity: sha512-6T5V1QK1u4oF+ATxs1lWUmlEk6P2T9HqJG3e2DnHOdVgZy2rFJBoEnrIedcTXlkAHU/zKC+7KETJ+KGGKwxgMQ==} engines: {node: '>=6'} @@ -10212,16 +12535,35 @@ packages: resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} dev: false + /fast-shallow-equal@1.0.0: + resolution: {integrity: sha512-HPtaa38cPgWvaCFmRNhlc6NG7pv6NUHqjPgVAkWGoB9mQMwYB27/K0CvOM5Czy+qpT3e8XJ6Q4aPAnzpNpzNaw==} + dev: false + /fast-stable-stringify@1.0.0: resolution: {integrity: sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag==} dev: false + /fastest-stable-stringify@2.0.2: + resolution: {integrity: sha512-bijHueCGd0LqqNK9b5oCMHc0MluJAx0cwqASgbWMvkO01lCYgIhacVRLcaDz3QnyYIRNJRDwMb41VuT6pHJ91Q==} + dev: false + /fastq@1.15.0: resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} dependencies: reusify: 1.0.4 dev: true + /fd-slicer@1.1.0: + resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} + requiresBuild: true + dependencies: + pend: 1.2.0 + dev: true + + /fecha@4.2.3: + resolution: {integrity: sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==} + dev: true + /fetch-blob@3.2.0: resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} engines: {node: ^12.20 || >= 14.13} @@ -10237,6 +12579,14 @@ packages: escape-string-regexp: 1.0.5 dev: true + /figures@5.0.0: + resolution: {integrity: sha512-ej8ksPF4x6e5wvK9yevct0UCXh8TTFlWGVLlgjZuoBH1HwjIfKE/IdL5mq89sFA7zELi1VhKpmtDnrs7zWyeyg==} + engines: {node: '>=14'} + dependencies: + escape-string-regexp: 5.0.0 + is-unicode-supported: 1.3.0 + dev: true + /file-entry-cache@6.0.1: resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} engines: {node: ^10.12.0 || >=12.0.0} @@ -10248,6 +12598,12 @@ packages: resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} dev: false + /filelist@1.0.4: + resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} + dependencies: + minimatch: 5.1.6 + dev: true + /files-from-path@0.2.6: resolution: {integrity: sha512-Mz4UNkv+WcRLxcCXAORbfpwYiXI60SN9C1ZfeyGFv0xQUmblgbOkSWwFwX+Ov/TaR3FEyzwDyPnCQjpPRGSxKA==} dependencies: @@ -10296,6 +12652,23 @@ packages: path-exists: 4.0.0 dev: true + /find-up@6.3.0: + resolution: {integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + locate-path: 7.2.0 + path-exists: 5.0.0 + dev: true + + /find-up@7.0.0: + resolution: {integrity: sha512-YyZM99iHrqLKjmt4LJDj58KI+fYyufRLBSYcqycxf//KpBk9FoewoGX0450m9nB44qrZnovzC2oeP5hUibxc/g==} + engines: {node: '>=18'} + dependencies: + locate-path: 7.2.0 + path-exists: 5.0.0 + unicorn-magic: 0.1.0 + dev: true + /flat-cache@3.0.4: resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} engines: {node: ^10.12.0 || >=12.0.0} @@ -10304,6 +12677,11 @@ packages: rimraf: 3.0.2 dev: true + /flat@5.0.2: + resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} + hasBin: true + dev: true + /flatted@3.2.7: resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} dev: true @@ -10316,13 +12694,25 @@ packages: peerDependenciesMeta: debug: optional: true - dev: false /for-each@0.3.3: resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} dependencies: is-callable: 1.2.7 + /foreground-child@3.1.1: + resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} + engines: {node: '>=14'} + dependencies: + cross-spawn: 7.0.3 + signal-exit: 4.1.0 + dev: true + + /form-data-encoder@2.1.4: + resolution: {integrity: sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==} + engines: {node: '>= 14.17'} + dev: true + /form-data@4.0.0: resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} engines: {node: '>= 6'} @@ -10330,8 +12720,19 @@ packages: asynckit: 0.4.0 combined-stream: 1.0.8 mime-types: 2.1.35 + + /format-util@1.0.5: + resolution: {integrity: sha512-varLbTj0e0yVyRpqQhuWV+8hlePAgaoFRhNFj50BNjEIrw1/DphHSObtqwskVCPWNgzwPoQrZAbfa/SBiicNeg==} dev: false + /formdata-node@5.0.1: + resolution: {integrity: sha512-8xnIjMYGKPj+rY2BTbAmpqVpi8der/2FT4d9f7J32FlsCpO5EzZPq3C/N56zdv8KweHzVF6TGijsS1JT6r1H2g==} + engines: {node: '>= 14.17'} + dependencies: + node-domexception: 1.0.0 + web-streams-polyfill: 4.0.0-beta.3 + dev: true + /formdata-polyfill@4.0.10: resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} engines: {node: '>=12.20.0'} @@ -10344,6 +12745,20 @@ packages: engines: {node: '>= 0.6'} dev: true + /from@0.1.7: + resolution: {integrity: sha512-twe20eF1OxVxp/ML/kq2p1uc6KvFK/+vs8WjEbeKmV2He22MKm7YF2ANIt+EOqhJ5L3K/SuuPhk0hWQDjOM23g==} + dev: true + + /fs-extra@11.2.0: + resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==} + engines: {node: '>=14.14'} + requiresBuild: true + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 + dev: true + /fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} @@ -10354,9 +12769,23 @@ packages: requiresBuild: true optional: true + /fstream@1.0.12: + resolution: {integrity: sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==} + engines: {node: '>=0.6'} + dependencies: + graceful-fs: 4.2.11 + inherits: 2.0.4 + mkdirp: 0.5.6 + rimraf: 2.7.1 + dev: true + /function-bind@1.1.1: resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} + /function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + dev: true + /function.prototype.name@1.1.5: resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==} engines: {node: '>= 0.4'} @@ -10371,6 +12800,31 @@ packages: resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} dev: true + /gaze@1.1.3: + resolution: {integrity: sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==} + engines: {node: '>= 4.0.0'} + dependencies: + globule: 1.3.4 + dev: true + + /geckodriver@4.3.3: + resolution: {integrity: sha512-we2c2COgxFkLVuoknJNx+ioP+7VDq0sr6SCqWHTzlA4kzIbzR0EQ1Pps34s8WrsOnQqPC8a4sZV9dRPROOrkSg==} + engines: {node: ^16.13 || >=18 || >=20} + hasBin: true + requiresBuild: true + dependencies: + '@wdio/logger': 8.28.0 + decamelize: 6.0.0 + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.4 + node-fetch: 3.3.2 + tar-fs: 3.0.5 + unzipper: 0.10.14 + which: 4.0.0 + transitivePeerDependencies: + - supports-color + dev: true + /gensync@1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} @@ -10391,6 +12845,17 @@ packages: has-proto: 1.0.1 has-symbols: 1.0.3 + /get-intrinsic@1.2.4: + resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} + engines: {node: '>= 0.4'} + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + has-proto: 1.0.1 + has-symbols: 1.0.3 + hasown: 2.0.2 + dev: true + /get-iterator@1.0.2: resolution: {integrity: sha512-v+dm9bNVfOYsY1OrhaCrmyOcYoSeVvbt+hHZ0Au+T+p1y+0Uyj9aMaGIeUTT6xdpRbWzDeYKvfOslPhggQMcsg==} dev: true @@ -10409,10 +12874,23 @@ packages: engines: {node: '>=16'} dev: true + /get-stream@5.2.0: + resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} + engines: {node: '>=8'} + requiresBuild: true + dependencies: + pump: 3.0.0 + dev: true + /get-stream@6.0.1: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} + /get-stream@8.0.1: + resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} + engines: {node: '>=16'} + dev: true + /get-symbol-description@1.0.0: resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} engines: {node: '>= 0.4'} @@ -10427,6 +12905,46 @@ packages: resolve-pkg-maps: 1.0.0 dev: true + /get-tsconfig@4.7.2: + resolution: {integrity: sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==} + dependencies: + resolve-pkg-maps: 1.0.0 + dev: true + + /get-uri@6.0.3: + resolution: {integrity: sha512-BzUrJBS9EcUb4cFol8r4W3v1cPsSyajLSthNkz5BxbpDcHN5tIrM10E2eNvfnvBn3DaT3DUgx0OpsBKkaOpanw==} + engines: {node: '>= 14'} + requiresBuild: true + dependencies: + basic-ftp: 5.0.5 + data-uri-to-buffer: 6.0.2 + debug: 4.3.4(supports-color@5.5.0) + fs-extra: 11.2.0 + transitivePeerDependencies: + - supports-color + dev: true + + /git-raw-commits@4.0.0: + resolution: {integrity: sha512-ICsMM1Wk8xSGMowkOmPrzo2Fgmfo4bMHLNX6ytHjajRJUqvHOw/TFapQ+QG75c3X/tTDDhOSRPGC52dDbNM8FQ==} + engines: {node: '>=16'} + hasBin: true + dependencies: + dargs: 8.1.0 + meow: 12.1.1 + split2: 4.2.0 + dev: true + + /git-repo-info@2.1.1: + resolution: {integrity: sha512-8aCohiDo4jwjOwma4FmYFd3i97urZulL8XL24nIPxuE+GZnfsAyy/g2Shqx6OjUiFKUXZM+Yy+KHnOmmA3FVcg==} + engines: {node: '>= 4.0'} + dev: true + + /gitconfiglocal@2.1.0: + resolution: {integrity: sha512-qoerOEliJn3z+Zyn1HW2F6eoYJqKwS6MgC9cztTLUB/xLWX8gD/6T60pKn4+t/d6tP7JlybI7Z3z+I572CR/Vg==} + dependencies: + ini: 1.3.8 + dev: true + /glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} @@ -10444,6 +12962,29 @@ packages: resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} dev: true + /glob@10.3.10: + resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + dependencies: + foreground-child: 3.1.1 + jackspeak: 2.3.6 + minimatch: 9.0.3 + minipass: 7.0.4 + path-scurry: 1.10.1 + dev: true + + /glob@7.1.7: + resolution: {integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: true + /glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} dependencies: @@ -10454,6 +12995,24 @@ packages: once: 1.4.0 path-is-absolute: 1.0.1 + /glob@8.1.0: + resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} + engines: {node: '>=12'} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 5.0.1 + once: 1.4.0 + dev: true + + /global-directory@4.0.1: + resolution: {integrity: sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==} + engines: {node: '>=18'} + dependencies: + ini: 4.1.1 + dev: true + /globals@11.12.0: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} @@ -10510,11 +13069,37 @@ packages: resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} dev: true + /globule@1.3.4: + resolution: {integrity: sha512-OPTIfhMBh7JbBYDpa5b+Q5ptmMWKwcNcFSR/0c6t8V4f3ZAVBEsKNY37QdVqmLRYSMhOUGYrY0QhSoEpzGr/Eg==} + engines: {node: '>= 0.10'} + dependencies: + glob: 7.1.7 + lodash: 4.17.21 + minimatch: 3.0.8 + dev: true + /gopd@1.0.1: resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} dependencies: get-intrinsic: 1.2.1 + /got@12.6.1: + resolution: {integrity: sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==} + engines: {node: '>=14.16'} + dependencies: + '@sindresorhus/is': 5.6.0 + '@szmarczak/http-timer': 5.0.1 + cacheable-lookup: 7.0.0 + cacheable-request: 10.2.14 + decompress-response: 6.0.0 + form-data-encoder: 2.1.4 + get-stream: 6.0.1 + http2-wrapper: 2.2.1 + lowercase-keys: 3.0.0 + p-cancelable: 3.0.0 + responselike: 3.0.0 + dev: true + /graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} dev: true @@ -10622,6 +13207,12 @@ packages: dependencies: get-intrinsic: 1.2.1 + /has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + dependencies: + es-define-property: 1.0.0 + dev: true + /has-proto@1.0.1: resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} engines: {node: '>= 0.4'} @@ -10635,6 +13226,14 @@ packages: engines: {node: '>= 0.4'} dependencies: has-symbols: 1.0.3 + dev: true + + /has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + dependencies: + has-symbols: 1.0.3 + dev: true /has@1.0.3: resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} @@ -10658,6 +13257,13 @@ packages: minimalistic-assert: 1.0.1 dev: false + /hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + dependencies: + function-bind: 1.1.2 + dev: true + /hast-util-classnames@3.0.0: resolution: {integrity: sha512-tI3JjoGDEBVorMAWK4jNRsfLMYmih1BUOG3VV36pH36njs1IEl7xkNrVTD2mD2yYHmQCa5R/fj61a8IAF4bRaQ==} dependencies: @@ -10728,7 +13334,7 @@ packages: unist-util-visit: 5.0.0 zwitch: 2.0.4 dev: true - + /hast-util-to-estree@3.1.0: resolution: {integrity: sha512-lfX5g6hqVh9kjS/B9E2gSkvHH4SZNiQFiqWS0x9fENzEl+8W12RqdRxX6d/Cwxi30tPQs3bIO+aolQJNp1bIyw==} dependencies: @@ -10808,10 +13414,23 @@ packages: space-separated-tokens: 2.0.2 dev: true + /he@1.2.0: + resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} + hasBin: true + dev: true + /headers-polyfill@4.0.2: resolution: {integrity: sha512-EWGTfnTqAO2L/j5HZgoM/3z82L7necsJ0pO9Tp0X1wil3PDLrkypTBRgVO2ExehEEvUycejZD3FuRaXpZZc3kw==} dev: true + /headers-utils@1.2.5: + resolution: {integrity: sha512-DAzV5P/pk3wTU/8TLZN+zFTDv4Xa1QDTU8pRvovPetcOMbmqq8CwsAvZBLPZHH6usxyy31zMp7I4aCYb6XIf6w==} + dev: true + + /help-me@5.0.0: + resolution: {integrity: sha512-7xgomUX6ADmcYzFik0HzAxh/73YlKR9bmFzf51CZwR+b6YtzU2m0u49hQCqV6SvlqIqsaxovfwdvbnsw3b/zpg==} + dev: false + /hey-listen@1.0.8: resolution: {integrity: sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==} dev: false @@ -10846,6 +13465,13 @@ packages: lru-cache: 6.0.0 dev: true + /hosted-git-info@7.0.1: + resolution: {integrity: sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + lru-cache: 10.1.0 + dev: true + /html-void-elements@3.0.0: resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} dev: true @@ -10858,6 +13484,10 @@ packages: http-errors: 1.8.1 dev: true + /http-cache-semantics@4.1.1: + resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} + dev: true + /http-errors@1.8.1: resolution: {integrity: sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==} engines: {node: '>= 0.6'} @@ -10869,11 +13499,53 @@ packages: toidentifier: 1.0.1 dev: true + /http-https@1.0.0: + resolution: {integrity: sha512-o0PWwVCSp3O0wS6FvNr6xfBCHgt0m1tvPLFOCc2iFDKTRAXhB7m8klDf7ErowFH8POa6dVdGatKU5I1YYwzUyg==} + dev: false + + /http-proxy-agent@7.0.2: + resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} + engines: {node: '>= 14'} + dependencies: + agent-base: 7.1.0 + debug: 4.3.4(supports-color@5.5.0) + transitivePeerDependencies: + - supports-color + dev: true + /http-shutdown@1.2.2: resolution: {integrity: sha512-S9wWkJ/VSY9/k4qcjG318bqJNruzE4HySUhFYknwmu6LBP97KLLfwNf+n4V1BHurvFNkSKLFnK/RsuUnRTf9Vw==} engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} dev: false + /http2-wrapper@2.2.1: + resolution: {integrity: sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==} + engines: {node: '>=10.19.0'} + dependencies: + quick-lru: 5.1.1 + resolve-alpn: 1.2.1 + dev: true + + /https-proxy-agent@5.0.1: + resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} + engines: {node: '>= 6'} + dependencies: + agent-base: 6.0.2 + debug: 4.3.4(supports-color@5.5.0) + transitivePeerDependencies: + - supports-color + dev: true + + /https-proxy-agent@7.0.4: + resolution: {integrity: sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==} + engines: {node: '>= 14'} + dependencies: + agent-base: 7.1.0 + debug: 4.3.4(supports-color@5.5.0) + transitivePeerDependencies: + - supports-color + dev: true + /human-signals@2.1.0: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} engines: {node: '>=10.17.0'} @@ -10883,12 +13555,27 @@ packages: engines: {node: '>=14.18.0'} dev: true + /human-signals@5.0.0: + resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} + engines: {node: '>=16.17.0'} + dev: true + /humanize-ms@1.2.1: resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} dependencies: ms: 2.1.3 dev: false + /husky@9.0.11: + resolution: {integrity: sha512-AB6lFlbwwyIqMdHYhwPe+kjOC3Oc5P3nThEoW/AaO2BX3vJDjWPFxYLxokUZOo6RNX20He3AaT8sESs9NJcmEw==} + engines: {node: '>=18'} + hasBin: true + dev: true + + /hyphenate-style-name@1.0.4: + resolution: {integrity: sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ==} + dev: false + /iconv-lite@0.4.24: resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} engines: {node: '>=0.10.0'} @@ -10901,7 +13588,6 @@ packages: engines: {node: '>=0.10.0'} dependencies: safer-buffer: 2.1.2 - dev: true /idb-keyval@6.2.1: resolution: {integrity: sha512-8Sb3veuYCyrZL+VBt9LJfZjLUPWVvqn8tG28VqYNFCo43KHcKuq+b4EiXGeuaLAQWL2YmyDgMp2aSpH9JHsEQg==} @@ -10926,6 +13612,10 @@ packages: resolve-from: 4.0.0 dev: true + /import-meta-resolve@4.0.0: + resolution: {integrity: sha512-okYUR7ZQPH+efeuMJGlq4f8ubUgO50kByRPyt/Cy1Io4PSRsPjxME+YlVaCOx+NIToW7hCsZNFJyTPFFKepRSA==} + dev: true + /imurmurhash@0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} @@ -10945,6 +13635,15 @@ packages: /inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + /ini@1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + dev: true + + /ini@4.1.1: + resolution: {integrity: sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dev: true + /inline-style-parser@0.1.1: resolution: {integrity: sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==} dev: true @@ -10953,6 +13652,13 @@ packages: resolution: {integrity: sha512-EcKzdTHVe8wFVOGEYXiW9WmJXPjqi1T+234YpJr98RiFYKHV3cdy1+3mkTE+KHTHxFFLH51SfaGOoUdW+v7ViQ==} dev: true + /inline-style-prefixer@7.0.0: + resolution: {integrity: sha512-I7GEdScunP1dQ6IM2mQWh6v0mOYdYmH3Bp31UecKdrcUgcURTcctSe1IECdUznSHKSmsHtjrT3CwCPI1pyxfUQ==} + dependencies: + css-in-js-utils: 3.1.0 + fast-loops: 1.1.3 + dev: false + /inquirer@8.2.6: resolution: {integrity: sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==} engines: {node: '>=12.0.0'} @@ -10974,6 +13680,27 @@ packages: wrap-ansi: 6.2.0 dev: true + /inquirer@9.2.12: + resolution: {integrity: sha512-mg3Fh9g2zfuVWJn6lhST0O7x4n03k7G8Tx5nvikJkbq8/CK47WDVm+UznF0G6s5Zi0KcyUisr6DU8T67N5U+1Q==} + engines: {node: '>=14.18.0'} + dependencies: + '@ljharb/through': 2.3.13 + ansi-escapes: 4.3.2 + chalk: 5.3.0 + cli-cursor: 3.1.0 + cli-width: 4.1.0 + external-editor: 3.1.0 + figures: 5.0.0 + lodash: 4.17.21 + mute-stream: 1.0.0 + ora: 5.4.1 + run-async: 3.0.0 + rxjs: 7.8.1 + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 6.2.0 + dev: true + /interface-blockstore@2.0.3: resolution: {integrity: sha512-OwVUnlNcx7H5HloK0Myv6c/C1q9cNG11HX6afdeU6q6kbuNj8jKCwVnmJHhC94LZaJ+9hvVOk4IUstb3Esg81w==} dependencies: @@ -11043,6 +13770,15 @@ packages: - supports-color dev: false + /ip-address@9.0.5: + resolution: {integrity: sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==} + engines: {node: '>= 12'} + requiresBuild: true + dependencies: + jsbn: 1.1.0 + sprintf-js: 1.1.3 + dev: true + /ip-regex@4.3.0: resolution: {integrity: sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q==} engines: {node: '>=8'} @@ -11186,7 +13922,7 @@ packages: merge-options: 3.0.4 nanoid: 3.3.6 native-fetch: 3.0.0(node-fetch@2.6.12) - node-fetch: 2.6.12 + node-fetch: 2.6.12(encoding@0.1.13) react-native-fetch-api: 3.0.0 stream-to-it: 0.2.4 transitivePeerDependencies: @@ -11269,6 +14005,10 @@ packages: has-tostringtag: 1.0.0 dev: true + /is-buffer@1.1.6: + resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} + dev: false + /is-buffer@2.0.5: resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} engines: {node: '>=4'} @@ -11330,6 +14070,11 @@ packages: dependencies: is-extglob: 2.1.1 + /is-hex-prefixed@1.0.0: + resolution: {integrity: sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==} + engines: {node: '>=6.5.0', npm: '>=3'} + dev: false + /is-hexadecimal@2.0.1: resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} dev: true @@ -11354,6 +14099,11 @@ packages: ip-regex: 4.3.0 dev: true + /is-map@2.0.3: + resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} + engines: {node: '>= 0.4'} + dev: true + /is-nan@1.3.2: resolution: {integrity: sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==} engines: {node: '>= 0.4'} @@ -11382,6 +14132,11 @@ packages: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} + /is-obj@2.0.0: + resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} + engines: {node: '>=8'} + dev: true + /is-path-inside@3.0.3: resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} engines: {node: '>=8'} @@ -11416,6 +14171,15 @@ packages: has-tostringtag: 1.0.0 dev: true + /is-running@2.1.0: + resolution: {integrity: sha512-mjJd3PujZMl7j+D395WTIO5tU5RIDBfVSRtRR4VOJou3H66E38UjbjvDGh3slJzPuolsb+yQFqwHNNdyp5jg3w==} + dev: true + + /is-set@2.0.3: + resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} + engines: {node: '>= 0.4'} + dev: true + /is-shared-array-buffer@1.0.2: resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} dependencies: @@ -11445,6 +14209,13 @@ packages: has-symbols: 1.0.3 dev: true + /is-text-path@2.0.0: + resolution: {integrity: sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==} + engines: {node: '>=8'} + dependencies: + text-extensions: 2.4.0 + dev: true + /is-typed-array@1.1.12: resolution: {integrity: sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==} engines: {node: '>= 0.4'} @@ -11460,12 +14231,30 @@ packages: engines: {node: '>=10'} dev: true + /is-unicode-supported@1.3.0: + resolution: {integrity: sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==} + engines: {node: '>=12'} + dev: true + + /is-weakmap@2.0.2: + resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} + engines: {node: '>= 0.4'} + dev: true + /is-weakref@1.0.2: resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} dependencies: call-bind: 1.0.2 dev: true + /is-weakset@2.0.3: + resolution: {integrity: sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + get-intrinsic: 1.2.4 + dev: true + /is-what@4.1.16: resolution: {integrity: sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==} engines: {node: '>=12.13'} @@ -11477,6 +14266,11 @@ packages: dependencies: is-docker: 2.2.1 + /isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + requiresBuild: true + dev: true + /isarray@2.0.5: resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} dev: true @@ -11484,6 +14278,11 @@ packages: /isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + /isexe@3.1.1: + resolution: {integrity: sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==} + engines: {node: '>=16'} + dev: true + /iso-random-stream@2.0.2: resolution: {integrity: sha512-yJvs+Nnelic1L2vH2JzWvvPQFA4r7kSTnpST/+LkAQjSz0hos2oqLD+qIVi9Qk38Hoe7mNDt3j0S27R58MVjLQ==} engines: {node: '>=10'} @@ -11497,10 +14296,10 @@ packages: engines: {node: '>=12'} dev: true - /isomorphic-unfetch@3.1.0: + /isomorphic-unfetch@3.1.0(encoding@0.1.13): resolution: {integrity: sha512-geDJjpoZ8N0kWexiwkX8F9NkTsXhetLPVbZFQ+JTW239QNOwvB0gniuR1Wc6f0AMTn7/mFGyXvHTifrCp/GH8Q==} dependencies: - node-fetch: 2.6.12 + node-fetch: 2.6.12(encoding@0.1.13) unfetch: 4.2.0 transitivePeerDependencies: - encoding @@ -11593,6 +14392,30 @@ packages: readable-stream: 3.6.2 dev: true + /jackspeak@2.3.6: + resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} + engines: {node: '>=14'} + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + dev: true + + /jake@10.8.7: + resolution: {integrity: sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==} + engines: {node: '>=10'} + hasBin: true + dependencies: + async: 3.2.5 + chalk: 4.1.2 + filelist: 1.0.4 + minimatch: 3.1.2 + dev: true + + /javascript-natural-sort@0.7.1: + resolution: {integrity: sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw==} + dev: true + /jayson@4.1.0: resolution: {integrity: sha512-R6JlbyLN53Mjku329XoRT2zJAE6ZgOQ8f91ucYdMCD4nkGCF9kZSrcGXpHIU4jeKj58zUZke2p+cdQchU7Ly7A==} engines: {node: '>=8'} @@ -11615,6 +14438,63 @@ packages: - utf-8-validate dev: false + /jest-diff@29.7.0: + resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + requiresBuild: true + dependencies: + chalk: 4.1.2 + diff-sequences: 29.6.3 + jest-get-type: 29.6.3 + pretty-format: 29.7.0 + dev: true + + /jest-get-type@29.6.3: + resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + requiresBuild: true + dev: true + + /jest-matcher-utils@29.7.0: + resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + requiresBuild: true + dependencies: + chalk: 4.1.2 + jest-diff: 29.7.0 + jest-get-type: 29.6.3 + pretty-format: 29.7.0 + dev: true + + /jest-message-util@29.7.0: + resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + requiresBuild: true + dependencies: + '@babel/code-frame': 7.23.5 + '@jest/types': 29.6.3 + '@types/stack-utils': 2.0.3 + chalk: 4.1.2 + graceful-fs: 4.2.11 + micromatch: 4.0.5 + pretty-format: 29.7.0 + slash: 3.0.0 + stack-utils: 2.0.6 + dev: true + + /jest-util@29.7.0: + resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + requiresBuild: true + dependencies: + '@jest/types': 29.6.3 + '@types/node': 20.10.5 + chalk: 4.1.2 + ci-info: 3.9.0 + graceful-fs: 4.2.11 + picomatch: 2.3.1 + dev: true + /jest-worker@27.5.1: resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} engines: {node: '>= 10.13.0'} @@ -11627,6 +14507,23 @@ packages: /jiti@1.21.0: resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==} hasBin: true + + /jose@4.15.5: + resolution: {integrity: sha512-jc7BFxgKPKi94uOvEmzlSWFFe2+vASyXaKUpdQKatWAESU2MWjDfFf0fdfc83CDKcA5QecabZeNLyfhe3yKNkg==} + dev: false + + /joycon@3.1.1: + resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} + engines: {node: '>=10'} + dev: false + + /js-cookie@2.2.1: + resolution: {integrity: sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ==} + dev: false + + /js-cookie@3.0.5: + resolution: {integrity: sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==} + engines: {node: '>=14'} dev: false /js-sha3@0.8.0: @@ -11648,15 +14545,29 @@ packages: argparse: 2.0.1 dev: true + /jsbn@1.1.0: + resolution: {integrity: sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==} + requiresBuild: true + dev: true + /jsesc@2.5.2: resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} engines: {node: '>=4'} hasBin: true + /json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + dev: true + /json-parse-even-better-errors@2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} dev: true + /json-parse-even-better-errors@3.0.1: + resolution: {integrity: sha512-aatBvbL26wVUCLmbWdCpeu9iF5wOyWpagiKkInA+kfws3sWdBrTnsvN2CKcyCYyUrc7rebNBlK6+kteg7ksecg==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dev: true + /json-rpc-engine@6.1.0: resolution: {integrity: sha512-NEdLrtrq1jUZyfjkr9OCz9EzCNhnRyWtt1PAnvnhwy6e8XETS0Dtc+ZNCO2gvuAoKsIn2+vCSowXTYE4CkgnAQ==} engines: {node: '>=10.0.0'} @@ -11700,10 +14611,18 @@ packages: /jsonc-parser@3.2.0: resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} + /jsonfile@6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + requiresBuild: true + dependencies: + universalify: 2.0.1 + optionalDependencies: + graceful-fs: 4.2.11 + dev: true + /jsonparse@1.3.1: resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} engines: {'0': node >= 0.2.0} - dev: false /jsx-ast-utils@3.3.5: resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} @@ -11732,6 +14651,12 @@ packages: tsscmp: 1.0.6 dev: true + /keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + dependencies: + json-buffer: 3.0.1 + dev: true + /keyvaluestorage-interface@1.0.0: resolution: {integrity: sha512-8t6Q3TclQ4uZynJY9IGr2+SsIGwK9JHcO6ootkHCGA0CrQCRy+VkouYNO2xicET6b9al7QKzpebNow+gkpCL8g==} dev: false @@ -11788,6 +14713,12 @@ packages: - supports-color dev: true + /ky@0.33.3: + resolution: {integrity: sha512-CasD9OCEQSFIam2U8efFK81Yeg8vNMTBUqtMOHlrcWQHqUX3HeCl9Dr31u4toV7emlH8Mymk5+9p0lL6mKb/Xw==} + engines: {node: '>=14.16'} + requiresBuild: true + dev: true + /language-subtag-registry@0.3.22: resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==} dev: true @@ -11798,6 +14729,14 @@ packages: language-subtag-registry: 0.3.22 dev: true + /lazystream@1.0.1: + resolution: {integrity: sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==} + engines: {node: '>= 0.6.3'} + requiresBuild: true + dependencies: + readable-stream: 2.3.8 + dev: true + /levn@0.4.1: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} @@ -11820,6 +14759,10 @@ packages: uint8arrays: 3.1.1 dev: true + /libphonenumber-js@1.10.59: + resolution: {integrity: sha512-HeTsOrDF/hWhEiKqZVwg9Cqlep5x2T+IYDENvT2VRj3iX8JQ7Y+omENv+AIn0vC8m6GYhivfCed5Cgfw27r5SA==} + dev: false + /libsodium-sumo@0.7.11: resolution: {integrity: sha512-bY+7ph7xpk51Ez2GbE10lXAQ5sJma6NghcIDaSPbM/G9elfrjLa0COHl/7P6Wb/JizQzl5UQontOOP1z0VwbLA==} dev: false @@ -11844,6 +14787,15 @@ packages: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} dev: true + /lines-and-columns@2.0.4: + resolution: {integrity: sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true + + /listenercount@1.0.1: + resolution: {integrity: sha512-3mk/Zag0+IJxeDrxSgaDPy4zZ3w05PRZeJNnlWhzFz5OkX49J4krc+A8X2d2M69vGMBEX0uyl8M+W+8gH+kBqQ==} + dev: true + /listhen@1.5.5: resolution: {integrity: sha512-LXe8Xlyh3gnxdv4tSjTjscD1vpr/2PRpzq8YIaMJgyKzRG8wdISlWVWnGThJfHnlJ6hmLt2wq1yeeix0TEbuoA==} hasBin: true @@ -11907,6 +14859,14 @@ packages: engines: {node: '>=14'} dev: true + /locate-app@2.2.24: + resolution: {integrity: sha512-vdoBy+xJYzEw+AIZkSW1SYEuWvZOMyhIW1dMIdD+MJP6K7DHfxJcCxktDbIS0aBtPyL2MkqiEa+GoDUz47zTlg==} + dependencies: + n12: 1.8.27 + type-fest: 2.13.0 + userhome: 1.0.0 + dev: true + /locate-path@5.0.0: resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} engines: {node: '>=8'} @@ -11920,22 +14880,102 @@ packages: p-locate: 5.0.0 dev: true + /locate-path@7.2.0: + resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + p-locate: 6.0.0 + dev: true + + /lodash.camelcase@4.3.0: + resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} + dev: true + + /lodash.clonedeep@4.5.0: + resolution: {integrity: sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==} + requiresBuild: true + dev: true + /lodash.defaults@4.2.0: resolution: {integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==} dev: false + /lodash.difference@4.5.0: + resolution: {integrity: sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA==} + dev: true + + /lodash.flatmap@4.5.0: + resolution: {integrity: sha512-/OcpcAGWlrZyoHGeHh3cAoa6nGdX6QYtmzNP84Jqol6UEQQ2gIaU3H+0eICcjcKGl0/XF8LWOujNn9lffsnaOg==} + dev: true + + /lodash.flattendeep@4.4.0: + resolution: {integrity: sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ==} + dev: true + /lodash.isarguments@3.1.0: resolution: {integrity: sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==} dev: false /lodash.isequal@4.5.0: resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} - dev: false + + /lodash.isfunction@3.0.9: + resolution: {integrity: sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw==} + dev: true + + /lodash.isplainobject@4.0.6: + resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} + dev: true + + /lodash.kebabcase@4.1.1: + resolution: {integrity: sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==} + dev: true /lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} dev: true + /lodash.mergewith@4.6.2: + resolution: {integrity: sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==} + dev: true + + /lodash.pickby@4.6.0: + resolution: {integrity: sha512-AZV+GsS/6ckvPOVQPXSiFFacKvKB4kOQu6ynt9wz0F3LO4R9Ij4K1ddYsIytDpSgLz88JHd9P+oaLeej5/Sl7Q==} + dev: true + + /lodash.snakecase@4.1.1: + resolution: {integrity: sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==} + dev: true + + /lodash.startcase@4.4.0: + resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} + dev: true + + /lodash.take@4.1.1: + resolution: {integrity: sha512-3T118EQjnhr9c0aBKCCMhQn0OBwRMz/O2WaRU6VH0TSKoMCmFtUpr0iUp+eWKODEiRXtYOK7R7SiBneKHdk7og==} + dev: true + + /lodash.takeright@4.1.1: + resolution: {integrity: sha512-/I41i2h8VkHtv3PYD8z1P4dkLIco5Z3z35hT/FJl18AxwSdifcATaaiBOxuQOT3T/F1qfRTct3VWMFSj1xCtAw==} + dev: true + + /lodash.union@4.6.0: + resolution: {integrity: sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw==} + dev: true + + /lodash.uniq@4.5.0: + resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} + dev: true + + /lodash.upperfirst@4.3.1: + resolution: {integrity: sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg==} + dev: true + + /lodash.zip@4.2.0: + resolution: {integrity: sha512-C7IOaBBK/0gMORRBd8OETNx3kmOkgIWIPvyDpZSCTwUrpYmgZwJkjZeOD8ww4xbOUOs4/attY+pciKvadNfFbg==} + requiresBuild: true + dev: true + /lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} @@ -11947,6 +14987,31 @@ packages: is-unicode-supported: 0.1.0 dev: true + /logform@2.6.0: + resolution: {integrity: sha512-1ulHeNPp6k/LD8H91o7VYFBng5i1BDE7HoKxVbZiGFidS1Rj65qcywLxX+pVfAPoQJEjRdvKcusKwOupHCVOVQ==} + engines: {node: '>= 12.0.0'} + dependencies: + '@colors/colors': 1.6.0 + '@types/triple-beam': 1.3.5 + fecha: 4.2.3 + ms: 2.1.3 + safe-stable-stringify: 2.4.3 + triple-beam: 1.4.1 + dev: true + + /loglevel-plugin-prefix@0.8.4: + resolution: {integrity: sha512-WpG9CcFAOjz/FtNht+QJeGpvVl/cdR6P0z6OcXSkr8wFJOsV2GRj2j10JLfjuA4aYkcKCNIEqRGCyTife9R8/g==} + dev: true + + /loglevel@1.9.1: + resolution: {integrity: sha512-hP3I3kCrDIMuRwAwHltphhDM1r8i55H33GgqjXbrisuJhF4kRhW1dNuxsRklp4bXl8DSdLaNLuiL4A/LWRfxvg==} + engines: {node: '>= 0.6.0'} + dev: true + + /lokijs@1.5.12: + resolution: {integrity: sha512-Q5ALD6JiS6xAUWCwX3taQmgwxyveCtIIuL08+ml0nHwT3k0S/GIFJN+Hd38b1qYIMaE5X++iqsqWVksz7SYW+Q==} + dev: false + /long@4.0.0: resolution: {integrity: sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==} @@ -11970,10 +15035,14 @@ packages: get-func-name: 2.0.0 dev: true + /lowercase-keys@3.0.0: + resolution: {integrity: sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true + /lru-cache@10.1.0: resolution: {integrity: sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==} engines: {node: 14 || >=16.14} - dev: false /lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} @@ -11986,11 +15055,21 @@ packages: dependencies: yallist: 4.0.0 + /lru-cache@7.18.3: + resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==} + engines: {node: '>=12'} + dev: true + /luxon@3.3.0: resolution: {integrity: sha512-An0UCfG/rSiqtAIiBPO0Y9/zAnHUZxAMiCpTd5h2smgsj7GGmcenvrvww2cqNA8/4A5ZrD1gJpHN2mIHZQF+Mg==} engines: {node: '>=12'} dev: false + /lz-string@1.5.0: + resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} + hasBin: true + dev: true + /magic-string@0.30.2: resolution: {integrity: sha512-lNZdu7pewtq/ZvWUp9Wpf/x7WzMTsR26TWV03BRZrXFsv+BI6dy8RAiKgm1uM/kyR0rCfUcqvOlXKG66KhIGug==} engines: {node: '>=12'} @@ -11998,6 +15077,13 @@ packages: '@jridgewell/sourcemap-codec': 1.4.15 dev: true + /magic-string@0.30.8: + resolution: {integrity: sha512-ISQTe55T2ao7XtlAStud6qwYPZjE4GK1S/BeVPus4jrq6JuOnQ00YKQC581RWhR122W7msZV263KzVeLoqidyQ==} + engines: {node: '>=12'} + dependencies: + '@jridgewell/sourcemap-codec': 1.4.15 + dev: true + /make-dir@3.1.0: resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} engines: {node: '>=8'} @@ -12005,6 +15091,10 @@ packages: semver: 6.3.1 dev: true + /make-error@1.3.6: + resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} + dev: true + /map-obj@1.0.1: resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} engines: {node: '>=0.10.0'} @@ -12015,6 +15105,10 @@ packages: engines: {node: '>=8'} dev: true + /map-stream@0.1.0: + resolution: {integrity: sha512-CkYQrPYZfWnu/DAmVCpTSX/xHpKZ80eKh2lAkyA6AJTef6bW+6JpbQZN5rofum7da+SyN1bi5ctTm+lTfcCW3g==} + dev: true + /markdown-extensions@2.0.0: resolution: {integrity: sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==} engines: {node: '>=16'} @@ -12050,6 +15144,14 @@ packages: safe-buffer: 5.2.1 dev: false + /md5@2.3.0: + resolution: {integrity: sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==} + dependencies: + charenc: 0.0.2 + crypt: 0.0.2 + is-buffer: 1.1.6 + dev: false + /mdast-util-find-and-replace@3.0.1: resolution: {integrity: sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA==} dependencies: @@ -12245,11 +15347,20 @@ packages: '@types/mdast': 4.0.3 dev: true + /mdn-data@2.0.14: + resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} + dev: false + /media-typer@0.3.0: resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} engines: {node: '>= 0.6'} dev: true + /meow@12.1.1: + resolution: {integrity: sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==} + engines: {node: '>=16.10'} + dev: true + /meow@9.0.0: resolution: {integrity: sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==} engines: {node: '>=10'} @@ -12283,6 +15394,10 @@ packages: engines: {node: '>= 8'} dev: true + /micro-ftch@0.3.1: + resolution: {integrity: sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg==} + dev: false + /micromark-core-commonmark@2.0.0: resolution: {integrity: sha512-jThOz/pVmAYUtkroV3D5c1osFXAMv9e0ypGDOIZuCeAe91/sD6BoE2Sjzt30yuXtwOYUmySOhMas/PVyh02itA==} dependencies: @@ -12653,6 +15768,16 @@ packages: engines: {node: '>=12'} dev: true + /mimic-response@3.1.0: + resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} + engines: {node: '>=10'} + dev: true + + /mimic-response@4.0.0: + resolution: {integrity: sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true + /min-indent@1.0.1: resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} engines: {node: '>=4'} @@ -12666,11 +15791,38 @@ packages: resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==} dev: false + /minimatch@3.0.8: + resolution: {integrity: sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==} + dependencies: + brace-expansion: 1.1.11 + dev: true + /minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: brace-expansion: 1.1.11 + /minimatch@5.0.1: + resolution: {integrity: sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==} + engines: {node: '>=10'} + dependencies: + brace-expansion: 2.0.1 + dev: true + + /minimatch@5.1.6: + resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} + engines: {node: '>=10'} + dependencies: + brace-expansion: 2.0.1 + dev: true + + /minimatch@9.0.3: + resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + brace-expansion: 2.0.1 + dev: true + /minimist-options@4.1.0: resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} engines: {node: '>= 6'} @@ -12682,12 +15834,49 @@ packages: /minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + + /minipass@7.0.4: + resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} + engines: {node: '>=16 || 14 >=14.17'} dev: true + /mipd@0.0.5(typescript@5.1.3): + resolution: {integrity: sha512-gbKA784D2WKb5H/GtqEv+Ofd1S9Zj+Z/PGDIl1u1QAbswkxD28BQ5bSXQxkeBzPBABg1iDSbiwGG1XqlOxRspA==} + peerDependencies: + typescript: '>=5.0.4' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + typescript: 5.1.3 + viem: 1.20.0(typescript@5.1.3) + transitivePeerDependencies: + - bufferutil + - utf-8-validate + - zod + dev: false + /mitt@2.1.0: resolution: {integrity: sha512-ILj2TpLiysu2wkBbWjAmww7TkZb65aiQO+DkVdUTBpBXq+MHYiETENkKFMtsJZX1Lf4pe4QOrTSjIfUwN5lRdg==} dev: false + /mitt@3.0.0: + resolution: {integrity: sha512-7dX2/10ITVyqh4aOSVI9gdape+t9l2/8QxHrFmUXu4EEUpdlxl6RudZUPZoc+zuY2hk1j7XxVroIVIan/pD/SQ==} + requiresBuild: true + dev: true + + /mkdirp-classic@0.5.3: + resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} + requiresBuild: true + dev: true + + /mkdirp@0.5.6: + resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} + hasBin: true + dependencies: + minimist: 1.2.8 + dev: true + /mlly@1.4.0: resolution: {integrity: sha512-ua8PAThnTwpprIaU47EPeZ/bPUVp2QYBbWMphUQpVdBI3Lgqzm5KZQ45Agm3YJedHXaIHl6pBGabaLSUPPSptg==} dependencies: @@ -12705,6 +15894,33 @@ packages: ufo: 1.3.2 dev: false + /mocha@10.3.0: + resolution: {integrity: sha512-uF2XJs+7xSLsrmIvn37i/wnc91nw7XjOQB8ccyx5aEgdnohr7n+rEiZP23WkCYHjilR6+EboEnbq/ZQDz4LSbg==} + engines: {node: '>= 14.0.0'} + hasBin: true + dependencies: + ansi-colors: 4.1.1 + browser-stdout: 1.3.1 + chokidar: 3.5.3 + debug: 4.3.4(supports-color@8.1.1) + diff: 5.0.0 + escape-string-regexp: 4.0.0 + find-up: 5.0.0 + glob: 8.1.0 + he: 1.2.0 + js-yaml: 4.1.0 + log-symbols: 4.1.0 + minimatch: 5.0.1 + ms: 2.1.3 + serialize-javascript: 6.0.0 + strip-json-comments: 3.1.1 + supports-color: 8.1.1 + workerpool: 6.2.1 + yargs: 16.2.0 + yargs-parser: 20.2.4 + yargs-unparser: 2.0.0 + dev: true + /motion@10.16.2: resolution: {integrity: sha512-p+PurYqfUdcJZvtnmAqu5fJgV2kR0uLFQuBKtLeFVTrYEVllI99tiOTSefVNYuip9ELTEkepIIDftNdze76NAQ==} dependencies: @@ -12733,6 +15949,10 @@ packages: engines: {node: '>=10'} dev: true + /ms@2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + dev: false + /ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} @@ -12808,10 +16028,37 @@ packages: resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} dev: true + /mute-stream@1.0.0: + resolution: {integrity: sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dev: true + + /n12@1.8.27: + resolution: {integrity: sha512-mYeuH53HBGNBjWaFAaJ9+OTzJIVu4ViyC4aleux7RdkPChUj9jTfnO070FAj3PwsY4/Wlj2vAZ1WITXXG0SAmQ==} + dev: true + /nan@2.18.0: resolution: {integrity: sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w==} dev: false + /nano-css@5.6.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-T2Mhc//CepkTa3X4pUhKgbEheJHYAxD0VptuqFhDbGMUWVV2m+lkNiW/Ieuj35wrfC8Zm0l7HvssQh7zcEttSw==} + peerDependencies: + react: '*' + react-dom: '*' + dependencies: + '@jridgewell/sourcemap-codec': 1.4.15 + css-tree: 1.1.3 + csstype: 3.1.2 + fastest-stable-stringify: 2.0.2 + inline-style-prefixer: 7.0.0 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + rtl-css-js: 1.16.1 + stacktrace-js: 2.0.2 + stylis: 4.3.1 + dev: false + /nano-time@1.0.0: resolution: {integrity: sha512-flnngywOoQ0lLQOTRNexn2gGSNuM9bKj9RZAWSzhQ+UJYaAFG9bac4DW9VHjUAzrOaIcajHybCTHe/bkvozQqA==} dependencies: @@ -12847,7 +16094,7 @@ packages: peerDependencies: node-fetch: '*' dependencies: - node-fetch: 2.6.12 + node-fetch: 2.6.12(encoding@0.1.13) dev: true /native-fetch@3.0.0(node-fetch@3.3.1): @@ -12875,6 +16122,16 @@ packages: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} dev: true + /netmask@2.0.2: + resolution: {integrity: sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==} + engines: {node: '>= 0.4.0'} + requiresBuild: true + dev: true + + /next-tick@1.1.0: + resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==} + dev: false + /node-addon-api@2.0.2: resolution: {integrity: sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==} dev: false @@ -12888,11 +16145,11 @@ packages: engines: {node: '>=10.5.0'} dev: true - /node-fetch-native@1.6.2: - resolution: {integrity: sha512-69mtXOFZ6hSkYiXAVB5SqaRvrbITC/NPyqv7yuu/qw0nmgPyYbIMYYNIDhNtwPrzk0ptrimrLz/hhjvm4w5Z+w==} + /node-fetch-native@1.6.4: + resolution: {integrity: sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ==} dev: false - /node-fetch@2.6.12: + /node-fetch@2.6.12(encoding@0.1.13): resolution: {integrity: sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g==} engines: {node: 4.x || >=6.0.0} peerDependencies: @@ -12901,6 +16158,7 @@ packages: encoding: optional: true dependencies: + encoding: 0.1.13 whatwg-url: 5.0.0 /node-fetch@3.3.1: @@ -12912,6 +16170,15 @@ packages: formdata-polyfill: 4.0.10 dev: true + /node-fetch@3.3.2: + resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + data-uri-to-buffer: 4.0.1 + fetch-blob: 3.2.0 + formdata-polyfill: 4.0.10 + dev: true + /node-forge@1.3.1: resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} engines: {node: '>= 6.13.0'} @@ -12919,7 +16186,6 @@ packages: /node-gyp-build@4.6.0: resolution: {integrity: sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==} hasBin: true - dev: false /node-releases@2.0.13: resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==} @@ -12928,6 +16194,17 @@ packages: resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} dev: true + /node-request-interceptor@0.6.3: + resolution: {integrity: sha512-8I2V7H2Ch0NvW7qWcjmS0/9Lhr0T6x7RD6PDirhvWEkUQvy83x8BA4haYMr09r/rig7hcgYSjYh6cd4U7G1vLA==} + dependencies: + '@open-draft/until': 1.0.3 + debug: 4.3.4(supports-color@5.5.0) + headers-utils: 1.2.5 + strict-event-emitter: 0.1.0 + transitivePeerDependencies: + - supports-color + dev: true + /normalize-package-data@2.5.0: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} dependencies: @@ -12947,10 +16224,25 @@ packages: validate-npm-package-license: 3.0.4 dev: true + /normalize-package-data@6.0.0: + resolution: {integrity: sha512-UL7ELRVxYBHBgYEtZCXjxuD5vPxnmvMGq0jp/dGPKKrN7tfsBh2IY7TlJ15WWwdjRWD3RJbnsygUurTK3xkPkg==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + hosted-git-info: 7.0.1 + is-core-module: 2.13.0 + semver: 7.6.0 + validate-npm-package-license: 3.0.4 + dev: true + /normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} + /normalize-url@8.0.1: + resolution: {integrity: sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w==} + engines: {node: '>=14.16'} + dev: true + /not@0.1.0: resolution: {integrity: sha512-5PDmaAsVfnWUgTUbJ3ERwn7u79Z0dYxN9ErxCpVJJqe2RK0PJ3z+iFUxuqjwtlDDegXvtWoxD/3Fzxox7tFGWA==} dev: true @@ -12974,6 +16266,14 @@ packages: boolbase: 1.0.0 dev: true + /number-to-bn@1.7.0: + resolution: {integrity: sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig==} + engines: {node: '>=6.5.0', npm: '>=3'} + dependencies: + bn.js: 4.11.6 + strip-hex-prefix: 1.0.0 + dev: false + /object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} @@ -13041,11 +16341,17 @@ packages: resolution: {integrity: sha512-z+pI07qxo4c2CulUHCDf9lcqDlMSo72N/4rLUpRXf6fu+q8vjt8y0xS+Tlf8NTJDdTXHbdeO1n3MlbctwEoXZw==} dev: false + /oboe@2.1.5: + resolution: {integrity: sha512-zRFWiF+FoicxEs3jNI/WYUrVEgA7DeET/InK0XQuudGHRg8iIob3cNPrJTKaz4004uaA9Pbe+Dwa8iluhjLZWA==} + dependencies: + http-https: 1.0.0 + dev: false + /ofetch@1.3.3: resolution: {integrity: sha512-s1ZCMmQWXy4b5K/TW9i/DtiN8Ku+xCiHcjQ6/J/nDdssirrQNOoB165Zu8EqLMA2lln1JUth9a0aW9Ap2ctrUg==} dependencies: destr: 2.0.2 - node-fetch-native: 1.6.2 + node-fetch-native: 1.6.4 ufo: 1.3.2 dev: false @@ -13053,6 +16359,11 @@ packages: resolution: {integrity: sha512-dqaz3u44QbRXQooZLTUKU41ZrzYrcvLISVgbrzbyCMxpmSLJvZ3ZamIJIZ29P6OhZIkNIQKosdeM6t1LYbA9hg==} dev: false + /on-exit-leak-free@2.1.2: + resolution: {integrity: sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==} + engines: {node: '>=14.0.0'} + dev: false + /on-finished@2.4.1: resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} engines: {node: '>= 0.8'} @@ -13128,6 +16439,11 @@ packages: resolution: {integrity: sha512-Ou3dJ6bA/UJ5GVHxah4LnqDwZRwAmWxrG3wtrHrbGnP4RnLCtA64A4F+ae7Y8ww660JaddSoArUR5HjipWSHAQ==} dev: true + /p-cancelable@3.0.0: + resolution: {integrity: sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==} + engines: {node: '>=12.20'} + dev: true + /p-defer@3.0.0: resolution: {integrity: sha512-ugZxsxmtTln604yeYd29EGrNhazN2lywetzpKhfmQjW/VJmhpDmWbiX+h0zL8V91R0UXkhb3KtPmyq9PZw3aYw==} engines: {node: '>=8'} @@ -13173,6 +16489,13 @@ packages: p-limit: 3.1.0 dev: true + /p-locate@6.0.0: + resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + p-limit: 4.0.0 + dev: true + /p-retry@4.6.2: resolution: {integrity: sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==} engines: {node: '>=8'} @@ -13185,6 +16508,31 @@ packages: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} + /pac-proxy-agent@7.0.1: + resolution: {integrity: sha512-ASV8yU4LLKBAjqIPMbrgtaKIvxQri/yh2OpI+S6hVa9JRkUI3Y3NPFbfngDtY7oFtSMD3w31Xns89mDa3Feo5A==} + engines: {node: '>= 14'} + dependencies: + '@tootallnate/quickjs-emscripten': 0.23.0 + agent-base: 7.1.0 + debug: 4.3.4(supports-color@5.5.0) + get-uri: 6.0.3 + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.4 + pac-resolver: 7.0.1 + socks-proxy-agent: 8.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /pac-resolver@7.0.1: + resolution: {integrity: sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==} + engines: {node: '>= 14'} + requiresBuild: true + dependencies: + degenerator: 5.0.1 + netmask: 2.0.2 + dev: true + /pako@1.0.11: resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} dev: true @@ -13221,12 +16569,28 @@ packages: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} dependencies: - '@babel/code-frame': 7.22.10 + '@babel/code-frame': 7.23.5 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 dev: true + /parse-json@7.1.1: + resolution: {integrity: sha512-SgOTCX/EZXtZxBE5eJ97P4yGM5n37BwRU+YMsH4vNzFqJV/oWFXXCmwFlgWUM4PrakybVOueJJ6pwHqSVhTFDw==} + engines: {node: '>=16'} + dependencies: + '@babel/code-frame': 7.23.5 + error-ex: 1.3.2 + json-parse-even-better-errors: 3.0.1 + lines-and-columns: 2.0.4 + type-fest: 3.13.1 + dev: true + + /parse-ms@2.1.0: + resolution: {integrity: sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA==} + engines: {node: '>=6'} + dev: true + /parse5@7.1.2: resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} dependencies: @@ -13242,6 +16606,11 @@ packages: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} + /path-exists@5.0.0: + resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true + /path-is-absolute@1.0.1: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} @@ -13259,6 +16628,14 @@ packages: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} dev: true + /path-scurry@1.10.1: + resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + lru-cache: 10.1.0 + minipass: 7.0.4 + dev: true + /path-to-regexp@6.2.1: resolution: {integrity: sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==} dev: true @@ -13280,6 +16657,12 @@ packages: resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} dev: true + /pause-stream@0.0.11: + resolution: {integrity: sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==} + dependencies: + through: 2.3.8 + dev: true + /peer-id@0.16.0: resolution: {integrity: sha512-EmL7FurFUduU9m1PS9cfJ5TAuCvxKQ7DKpfx3Yj6IKWyBRtosriFuOag/l3ni/dtPgPLwiA4R9IvpL7hsDLJuQ==} engines: {node: '>=15.0.0'} @@ -13291,6 +16674,10 @@ packages: uint8arrays: 3.1.1 dev: true + /pend@1.2.0: + resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} + dev: true + /periscopic@3.1.0: resolution: {integrity: sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==} dependencies: @@ -13323,6 +16710,33 @@ packages: split2: 4.2.0 dev: false + /pino-abstract-transport@1.1.0: + resolution: {integrity: sha512-lsleG3/2a/JIWUtf9Q5gUNErBqwIu1tUKTT3dUzaf5DySw9ra1wcqKjJjLX1VTY64Wk1eEOYsVGSaGfCK85ekA==} + dependencies: + readable-stream: 4.5.2 + split2: 4.2.0 + dev: false + + /pino-pretty@10.3.1: + resolution: {integrity: sha512-az8JbIYeN/1iLj2t0jR9DV48/LQ3RC6hZPpapKPkb84Q+yTidMCpgWxIT3N0flnBDilyBQ1luWNpOeJptjdp/g==} + hasBin: true + dependencies: + colorette: 2.0.20 + dateformat: 4.6.3 + fast-copy: 3.0.2 + fast-safe-stringify: 2.1.1 + help-me: 5.0.0 + joycon: 3.1.1 + minimist: 1.2.8 + on-exit-leak-free: 2.1.2 + pino-abstract-transport: 1.1.0 + pump: 3.0.0 + readable-stream: 4.5.2 + secure-json-parse: 2.7.0 + sonic-boom: 3.8.1 + strip-json-comments: 3.1.1 + dev: false + /pino-std-serializers@4.0.0: resolution: {integrity: sha512-cK0pekc1Kjy5w9V2/n+8MkZwusa6EyyxfeQCB799CQRhRt/CqYKiWs5adeu8Shve2ZNffvfC/7J64A2PJo1W/Q==} dev: false @@ -13369,6 +16783,16 @@ packages: hasBin: true dev: true + /pony-cause@2.1.10: + resolution: {integrity: sha512-3IKLNXclQgkU++2fSi93sQ6BznFuxSLB11HdvZQ6JW/spahf/P1pAHBQEahr20rs0htZW0UDkM1HmA+nZkXKsw==} + engines: {node: '>=12.0.0'} + dev: false + + /possible-typed-array-names@1.0.0: + resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} + engines: {node: '>= 0.4'} + dev: true + /postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} @@ -13421,6 +16845,22 @@ packages: react-is: 17.0.2 dev: true + /pretty-format@29.7.0: + resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/schemas': 29.6.3 + ansi-styles: 5.2.0 + react-is: 18.2.0 + dev: true + + /pretty-ms@7.0.1: + resolution: {integrity: sha512-973driJZvxiGOQ5ONsFhOF/DtzPMOMtgC11kCpUrPGMTgqp2q/1gwzCquocrN33is0VZ5GFHXZYMM9l6h67v2Q==} + engines: {node: '>=10'} + dependencies: + parse-ms: 2.1.0 + dev: true + /prism-react-renderer@2.3.1(react@18.2.0): resolution: {integrity: sha512-Rdf+HzBLR7KYjzpJ1rSoxT9ioO85nZngQEoFIhL07XhtJHlCU3SOz0GJ6+qvMyQe0Se+BV3qpe6Yd/NmQF5Juw==} peerDependencies: @@ -13431,10 +16871,33 @@ packages: react: 18.2.0 dev: true + /process-nextick-args@2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + requiresBuild: true + dev: true + /process-warning@1.0.0: resolution: {integrity: sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q==} dev: false + /process@0.11.10: + resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} + engines: {node: '>= 0.6.0'} + requiresBuild: true + + /progress@2.0.3: + resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} + engines: {node: '>=0.4.0'} + dev: true + + /prometheus-query@3.4.0: + resolution: {integrity: sha512-PGNwYVjXxenfj2PR4FKEUv5O4XO8ciHT92GX83J5ZJm5ki3YzLLiv+TfbmQSUxvHcXofLg9PYH6CBCSplcvr9g==} + dependencies: + axios: 1.6.7 + transitivePeerDependencies: + - debug + dev: false + /prop-types@15.8.1: resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} dependencies: @@ -13465,19 +16928,89 @@ packages: '@types/node': 20.10.5 long: 4.0.0 + /proxy-agent@6.3.0: + resolution: {integrity: sha512-0LdR757eTj/JfuU7TL2YCuAZnxWXu3tkJbg4Oq3geW/qFNT/32T0sp2HnZ9O0lMR4q3vwAt0+xCA8SR0WAD0og==} + engines: {node: '>= 14'} + requiresBuild: true + dependencies: + agent-base: 7.1.0 + debug: 4.3.4(supports-color@5.5.0) + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.4 + lru-cache: 7.18.3 + pac-proxy-agent: 7.0.1 + proxy-from-env: 1.1.0 + socks-proxy-agent: 8.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /proxy-agent@6.3.1: + resolution: {integrity: sha512-Rb5RVBy1iyqOtNl15Cw/llpeLH8bsb37gM1FUfKQ+Wck6xHlbAhWGUFiTRHtkjqGTA5pSHz6+0hrPW/oECihPQ==} + engines: {node: '>= 14'} + dependencies: + agent-base: 7.1.0 + debug: 4.3.4(supports-color@5.5.0) + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.4 + lru-cache: 7.18.3 + pac-proxy-agent: 7.0.1 + proxy-from-env: 1.1.0 + socks-proxy-agent: 8.0.2 + transitivePeerDependencies: + - supports-color + dev: true + /proxy-compare@2.5.1: resolution: {integrity: sha512-oyfc0Tx87Cpwva5ZXezSp5V9vht1c7dZBhvuV/y3ctkgMVUmiAGDVeeB0dKhGSyT0v1ZTEQYpe/RXlBVBNuCLA==} dev: false /proxy-from-env@1.1.0: resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} - dev: false + + /ps-tree@1.2.0: + resolution: {integrity: sha512-0VnamPPYHl4uaU/nSFeZZpR21QAWRz+sRv4iW9+v/GS/J5U5iZB5BNN6J0RMoOvdx2gWM2+ZFMIm58q24e4UYA==} + engines: {node: '>= 0.10'} + hasBin: true + dependencies: + event-stream: 3.3.4 + dev: true + + /pump@3.0.0: + resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} + dependencies: + end-of-stream: 1.4.4 + once: 1.4.0 /punycode@2.3.0: resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} engines: {node: '>=6'} dev: true + /puppeteer-core@20.9.0(typescript@5.1.3): + resolution: {integrity: sha512-H9fYZQzMTRrkboEfPmf7m3CLDN6JvbxXA3qTtS+dFt27tR+CsFHzPsT6pzp6lYL6bJbAPaR0HaPO6uSi+F94Pg==} + engines: {node: '>=16.3.0'} + requiresBuild: true + peerDependencies: + typescript: '>= 4.7.4' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@puppeteer/browsers': 1.4.6(typescript@5.1.3) + chromium-bidi: 0.4.16(devtools-protocol@0.0.1147663) + cross-fetch: 4.0.0(encoding@0.1.13) + debug: 4.3.4(supports-color@5.5.0) + devtools-protocol: 0.0.1147663 + typescript: 5.1.3 + ws: 8.13.0 + transitivePeerDependencies: + - bufferutil + - encoding + - supports-color + - utf-8-validate + dev: true + /qr-code-styling@1.6.0-rc.1: resolution: {integrity: sha512-ModRIiW6oUnsP18QzrRYZSc/CFKFKIdj7pUs57AEVH20ajlglRpN3HukjHk0UbNMTlKGuaYl7Gt6/O5Gg2NU2Q==} dependencies: @@ -13506,6 +17039,11 @@ packages: side-channel: 1.0.4 dev: false + /query-selector-shadow-dom@1.0.1: + resolution: {integrity: sha512-lT5yCqEBgfoMYpf3F2xQRK7zEr1rhIIZuceDK6+xRkJQ4NMbHTwXqk4NkwDwQMNqXgG9r9fyHnzwNVs6zV5KRw==} + requiresBuild: true + dev: true + /query-string@6.14.1: resolution: {integrity: sha512-XDxAeVmpfu1/6IjyT/gXHOl+S0vQ9owggJ30hhWKdHAsNPOcasn5o9BW0eejZqL2e4vMjhAxoW3jVHcD6mbcYw==} engines: {node: '>=6'} @@ -13538,6 +17076,11 @@ packages: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} dev: true + /queue-tick@1.0.1: + resolution: {integrity: sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==} + requiresBuild: true + dev: true + /quick-format-unescaped@4.0.4: resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==} dev: false @@ -13547,6 +17090,11 @@ packages: engines: {node: '>=8'} dev: true + /quick-lru@5.1.1: + resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} + engines: {node: '>=10'} + dev: true + /rabin-wasm@0.1.5: resolution: {integrity: sha512-uWgQTo7pim1Rnj5TuWcCewRDTf0PEFTSlaUjWP4eY9EbLV9em08v89oCz/WO+wRxpYuO36XEHp4wgYQnAgOHzA==} hasBin: true @@ -13555,7 +17103,7 @@ packages: bl: 5.1.0 debug: 4.3.4(supports-color@5.5.0) minimist: 1.2.8 - node-fetch: 2.6.12 + node-fetch: 2.6.12(encoding@0.1.13) readable-stream: 3.6.2 transitivePeerDependencies: - encoding @@ -13617,6 +17165,17 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: false + /react-device-detect@2.2.3(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-buYY3qrCnQVlIFHrC5UcUoAj7iANs/+srdkwsnNjI7anr3Tt7UY6MqNxtMLlr0tMBied0O49UZVK8XKs3ZIiPw==} + peerDependencies: + react: '>= 0.14.0' + react-dom: '>= 0.14.0' + dependencies: + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + ua-parser-js: 1.0.37 + dev: false + /react-dom@18.2.0(react@18.2.0): resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} peerDependencies: @@ -13853,15 +17412,49 @@ packages: tslib: 2.6.2 dev: false + /react-universal-interface@0.6.2(react@18.2.0)(tslib@2.6.2): + resolution: {integrity: sha512-dg8yXdcQmvgR13RIlZbTRQOoUrDciFVoSBZILwjE2LFISxZZ8loVJKAkuzswl5js8BHda79bIb2b84ehU8IjXw==} + peerDependencies: + react: '*' + tslib: '*' + dependencies: + react: 18.2.0 + tslib: 2.6.2 + dev: false + /react-use-measure@2.1.1(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-nocZhN26cproIiIduswYpV5y5lQpSQS1y/4KuvUCjSKmw7ZWIS/+g3aFnX3WdBkyuGUtTLif3UTqnLLhbDoQig==} peerDependencies: react: '>=16.13' react-dom: '>=16.13' dependencies: - debounce: 1.2.1 + debounce: 1.2.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /react-use@17.5.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-PbfwSPMwp/hoL847rLnm/qkjg3sTRCvn6YhUZiHaUa3FA6/aNoFX79ul5Xt70O1rK+9GxSVqkY0eTwMdsR/bWg==} + peerDependencies: + react: '*' + react-dom: '*' + dependencies: + '@types/js-cookie': 2.2.7 + '@xobotyi/scrollbar-width': 1.9.5 + copy-to-clipboard: 3.3.3 + fast-deep-equal: 3.1.3 + fast-shallow-equal: 1.0.0 + js-cookie: 2.2.1 + nano-css: 5.6.1(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) + react-universal-interface: 0.6.2(react@18.2.0)(tslib@2.6.2) + resize-observer-polyfill: 1.5.1 + screenfull: 5.2.0 + set-harmonic-interval: 1.0.1 + throttle-debounce: 3.0.1 + ts-easing: 0.2.0 + tslib: 2.6.2 dev: false /react@18.2.0: @@ -13870,6 +17463,15 @@ packages: dependencies: loose-envify: 1.4.0 + /read-pkg-up@10.0.0: + resolution: {integrity: sha512-jgmKiS//w2Zs+YbX039CorlkOp8FIVbSAN8r8GJHDsGlmNPXo+VeHkqAwCiQVTTx5/LwLZTcEw59z3DvcLbr0g==} + engines: {node: '>=16'} + dependencies: + find-up: 6.3.0 + read-pkg: 8.1.0 + type-fest: 3.13.1 + dev: true + /read-pkg-up@7.0.1: resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} engines: {node: '>=8'} @@ -13889,6 +17491,28 @@ packages: type-fest: 0.6.0 dev: true + /read-pkg@8.1.0: + resolution: {integrity: sha512-PORM8AgzXeskHO/WEv312k9U03B8K9JSiWF/8N9sUuFjBa+9SF2u6K7VClzXwDXab51jCd8Nd36CNM+zR97ScQ==} + engines: {node: '>=16'} + dependencies: + '@types/normalize-package-data': 2.4.1 + normalize-package-data: 6.0.0 + parse-json: 7.1.1 + type-fest: 4.10.2 + dev: true + + /readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + dev: true + /readable-stream@3.6.2: resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} engines: {node: '>= 6'} @@ -13897,6 +17521,24 @@ packages: string_decoder: 1.3.0 util-deprecate: 1.0.2 + /readable-stream@4.5.2: + resolution: {integrity: sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + requiresBuild: true + dependencies: + abort-controller: 3.0.0 + buffer: 6.0.3 + events: 3.3.0 + process: 0.11.10 + string_decoder: 1.3.0 + + /readdir-glob@1.1.3: + resolution: {integrity: sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==} + requiresBuild: true + dependencies: + minimatch: 5.1.6 + dev: true + /readdirp@3.6.0: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} @@ -13918,6 +17560,13 @@ packages: ms: 2.1.3 dev: true + /recursive-readdir@2.2.3: + resolution: {integrity: sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==} + engines: {node: '>=6.0.0'} + dependencies: + minimatch: 3.1.2 + dev: true + /redent@3.0.0: resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} engines: {node: '>=8'} @@ -13978,6 +17627,16 @@ packages: functions-have-names: 1.2.3 dev: true + /regexp.prototype.flags@1.5.2: + resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-errors: 1.3.0 + set-function-name: 2.0.2 + dev: true + /rehype-class-names@1.0.14: resolution: {integrity: sha512-eFBt6Qxb7K77y6P82tUtN9rKpU7guWlaK4XA4RrrSFHkUTCvr2D3cgb9OR5d4t1AaGOvR59FH9nRwUnbpn9AEg==} dependencies: @@ -14067,11 +17726,24 @@ packages: resolution: {integrity: sha512-ab9EmR80F/zQTMNeneUr4cv+jSwPJgIlvEmVwLerwrWVbpLlBuls9XHzIeTFy4cegU2NHBp3va0LKOzU5qFEYQ==} dev: false + /resize-observer-polyfill@1.5.1: + resolution: {integrity: sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==} + dev: false + + /resolve-alpn@1.2.1: + resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==} + dev: true + /resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} dev: true + /resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + dev: true + /resolve-pkg-maps@1.0.0: resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} dev: true @@ -14094,6 +17766,20 @@ packages: supports-preserve-symlinks-flag: 1.0.0 dev: true + /responselike@3.0.0: + resolution: {integrity: sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==} + engines: {node: '>=14.16'} + dependencies: + lowercase-keys: 3.0.0 + dev: true + + /resq@1.11.0: + resolution: {integrity: sha512-G10EBz+zAAy3zUd/CDoBbXRL6ia9kOo3xRHrMDsHljI0GDkhYlyjwoCx5+3eCC4swi1uCoZQhskuJkj7Gp57Bw==} + requiresBuild: true + dependencies: + fast-deep-equal: 2.0.1 + dev: true + /restore-cursor@3.1.0: resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} engines: {node: '>=8'} @@ -14116,6 +17802,25 @@ packages: engines: {iojs: '>=1.0.0', node: '>=0.10.0'} dev: true + /rgb2hex@0.2.5: + resolution: {integrity: sha512-22MOP1Rh7sAo1BZpDG6R5RFYzR2lYEgwq7HEmyW2qcsOqR2lQKmn+O//xV3YG/0rrhMC6KVX2hU+ZXuaw9a5bw==} + requiresBuild: true + dev: true + + /rimraf@2.5.4: + resolution: {integrity: sha512-Lw7SHMjssciQb/rRz7JyPIy9+bbUshEucPoLRvWqy09vC5zQixl8Uet+Zl+SROBB/JMWHJRdCk1qdxNWHNMvlQ==} + hasBin: true + dependencies: + glob: 7.2.3 + dev: true + + /rimraf@2.7.1: + resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} + hasBin: true + dependencies: + glob: 7.2.3 + dev: true + /rimraf@3.0.2: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} hasBin: true @@ -14129,6 +17834,30 @@ packages: inherits: 2.0.4 dev: false + /rollup-plugin-sourcemaps@0.6.3(@types/node@20.3.1)(rollup@2.79.1): + resolution: {integrity: sha512-paFu+nT1xvuO1tPFYXGe+XnQvg4Hjqv/eIhG8i5EspfYYPBKL57X7iVbfv55aNVASg3dzWvES9dmWsL2KhfByw==} + engines: {node: '>=10.0.0'} + peerDependencies: + '@types/node': '>=10.0.0' + rollup: '>=0.31.2' + peerDependenciesMeta: + '@types/node': + optional: true + dependencies: + '@rollup/pluginutils': 3.1.0(rollup@2.79.1) + '@types/node': 20.3.1 + rollup: 2.79.1 + source-map-resolve: 0.6.0 + dev: true + + /rollup@2.79.1: + resolution: {integrity: sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==} + engines: {node: '>=10.0.0'} + hasBin: true + optionalDependencies: + fsevents: 2.3.3 + dev: true + /rollup@3.28.0: resolution: {integrity: sha512-d7zhvo1OUY2SXSM6pfNjgD5+d0Nz87CUp4mt8l/GgVP3oBsPwzNvSzyu1me6BSG9JIgWNTVcafIXBIyM8yQ3yw==} engines: {node: '>=14.18.0', npm: '>=8.0.0'} @@ -14172,6 +17901,12 @@ packages: utf-8-validate: 5.0.10 dev: false + /rtl-css-js@1.16.1: + resolution: {integrity: sha512-lRQgou1mu19e+Ya0LsTvKrVJ5TYUbqCVPAiImX3UfLTenarvPUl1QFdvu5Z3PYmHT9RCcwIfbjRQBntExyj3Zg==} + dependencies: + '@babel/runtime': 7.22.10 + dev: false + /run-applescript@5.0.0: resolution: {integrity: sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==} engines: {node: '>=12'} @@ -14184,6 +17919,11 @@ packages: engines: {node: '>=0.12.0'} dev: true + /run-async@3.0.0: + resolution: {integrity: sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==} + engines: {node: '>=0.12.0'} + dev: true + /run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} dependencies: @@ -14203,6 +17943,10 @@ packages: tslib: 2.6.2 dev: true + /safaridriver@0.1.2: + resolution: {integrity: sha512-4R309+gWflJktzPXBQCobbWEHlzC4aK3a+Ov3tz2Ib2aBxiwd11phkdIBH1l0EO22x24CJMUQkpKFumRriCSRg==} + dev: true + /safe-array-concat@1.0.0: resolution: {integrity: sha512-9dVEFruWIsnie89yym+xWTAYASdpw3CJV7Li/6zBewGf9z2i1j31rP6jnY0pHEO4QZh6N0K11bFjWmdR8UGdPQ==} engines: {node: '>=0.4'} @@ -14213,6 +17957,11 @@ packages: isarray: 2.0.5 dev: true + /safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + requiresBuild: true + dev: true + /safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} @@ -14227,11 +17976,9 @@ packages: /safe-stable-stringify@2.4.3: resolution: {integrity: sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==} engines: {node: '>=10'} - dev: false /safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - dev: true /scheduler@0.23.0: resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} @@ -14257,10 +18004,23 @@ packages: ajv-keywords: 5.1.0(ajv@8.12.0) dev: true + /screenfull@5.2.0: + resolution: {integrity: sha512-9BakfsO2aUQN2K9Fdbj87RJIEZ82Q9IGim7FqM5OsebfoFC6ZHXgDq/KvniuLTPdeM8wY2o6Dj3WQ7KeQCj3cA==} + engines: {node: '>=0.10.0'} + dev: false + /scrypt-js@3.0.1: resolution: {integrity: sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==} dev: false + /secure-json-parse@2.7.0: + resolution: {integrity: sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==} + dev: false + + /secure-password-utilities@0.2.1: + resolution: {integrity: sha512-znUg8ae3cpuAaogiFBhP82gD2daVkSz4Qv/L7OWjB7wWvfbCdeqqQuJkm2/IvhKQPOV0T739YPR6rb7vs0uWaw==} + dev: false + /semver@5.7.2: resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} hasBin: true @@ -14276,6 +18036,28 @@ packages: hasBin: true dependencies: lru-cache: 6.0.0 + dev: true + + /semver@7.6.0: + resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==} + engines: {node: '>=10'} + hasBin: true + dependencies: + lru-cache: 6.0.0 + + /serialize-error@11.0.3: + resolution: {integrity: sha512-2G2y++21dhj2R7iHAdd0FIzjGwuKZld+7Pl/bTU6YIkrC2ZMbVUjm+luj6A6V34Rv9XfKJDKpTWu9W4Gse1D9g==} + engines: {node: '>=14.16'} + requiresBuild: true + dependencies: + type-fest: 2.19.0 + dev: true + + /serialize-javascript@6.0.0: + resolution: {integrity: sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==} + dependencies: + randombytes: 2.1.0 + dev: true /serialize-javascript@6.0.1: resolution: {integrity: sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==} @@ -14287,6 +18069,37 @@ packages: resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} dev: false + /set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + gopd: 1.0.1 + has-property-descriptors: 1.0.2 + dev: true + + /set-function-name@2.0.2: + resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + functions-have-names: 1.2.3 + has-property-descriptors: 1.0.2 + dev: true + + /set-harmonic-interval@1.0.1: + resolution: {integrity: sha512-AhICkFV84tBP1aWqPwLZqFvAwqEoVA9kxNMniGEUvzOlm4vLmOFLiTT3UZ6bziJTy4bOVpzWGTfSCbmaayGx8g==} + engines: {node: '>=6.9'} + dev: false + + /setimmediate@1.0.5: + resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} + dev: true + /setprototypeof@1.2.0: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} dev: true @@ -14326,6 +18139,21 @@ packages: /signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + /signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + dev: true + + /simmerjs@0.5.6: + resolution: {integrity: sha512-Z00zGHUp2IVSDUuni6gzBxVVQwAEZ7jVHnqL97+2RaHVWTYKfgCNyCvgm68Uc1M6X84hjatxvtOc24Y9ECLPWQ==} + dependencies: + lodash.difference: 4.5.0 + lodash.flatmap: 4.5.0 + lodash.isfunction: 3.0.9 + lodash.take: 4.1.1 + lodash.takeright: 4.1.1 + dev: true + /simple-swizzle@0.2.2: resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} dependencies: @@ -14347,17 +18175,57 @@ packages: engines: {node: '>=14.16'} dev: true + /smart-buffer@4.2.0: + resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} + engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} + requiresBuild: true + dev: true + + /socks-proxy-agent@8.0.2: + resolution: {integrity: sha512-8zuqoLv1aP/66PHF5TqwJ7Czm3Yv32urJQHrVyhD7mmA6d61Zv8cIXQYPTWwmg6qlupnPvs/QKDmfa4P/qct2g==} + engines: {node: '>= 14'} + dependencies: + agent-base: 7.1.0 + debug: 4.3.4(supports-color@5.5.0) + socks: 2.8.1 + transitivePeerDependencies: + - supports-color + dev: true + + /socks@2.8.1: + resolution: {integrity: sha512-B6w7tkwNid7ToxjZ08rQMT8M9BJAf8DKx8Ft4NivzH0zBUfd6jldGcisJn/RLgxcX3FPNDdNQCUEMMT79b+oCQ==} + engines: {node: '>= 10.0.0', npm: '>= 3.0.0'} + requiresBuild: true + dependencies: + ip-address: 9.0.5 + smart-buffer: 4.2.0 + dev: true + /sonic-boom@2.8.0: resolution: {integrity: sha512-kuonw1YOYYNOve5iHdSahXPOK49GqwA+LZhI6Wz/l0rP57iKyXXIHaRagOBHAPmGwJC6od2Z9zgvZ5loSgMlVg==} dependencies: atomic-sleep: 1.0.0 dev: false + /sonic-boom@3.8.1: + resolution: {integrity: sha512-y4Z8LCDBuum+PBP3lSV7RHrXscqksve/bi0as7mhwVnBW+/wUqKT/2Kb7um8yqcFy0duYbbPxzt89Zy2nOCaxg==} + dependencies: + atomic-sleep: 1.0.0 + dev: false + /source-map-js@1.0.2: resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} engines: {node: '>=0.10.0'} dev: true + /source-map-resolve@0.6.0: + resolution: {integrity: sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==} + deprecated: See https://github.com/lydell/source-map-resolve#deprecated + dependencies: + atob: 2.1.2 + decode-uri-component: 0.2.2 + dev: true + /source-map-support@0.5.21: resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} dependencies: @@ -14365,10 +18233,19 @@ packages: source-map: 0.6.1 dev: true + /source-map@0.5.6: + resolution: {integrity: sha512-MjZkVp0NHr5+TPihLcadqnlVoGIoWo4IBHptutGh9wI3ttUYvCG26HkSuDi+K6lsZ25syXJXcctwgyVCt//xqA==} + engines: {node: '>=0.10.0'} + dev: false + + /source-map@0.5.7: + resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} + engines: {node: '>=0.10.0'} + dev: true + /source-map@0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} - dev: true /source-map@0.7.4: resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} @@ -14417,12 +18294,55 @@ packages: /split2@4.2.0: resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} engines: {node: '>= 10.x'} + + /split@0.3.3: + resolution: {integrity: sha512-wD2AeVmxXRBoX44wAycgjVpMhvbwdI2aZjCkvfNcH1YqHQvJVa1duWc73OyVGJUc05fhFaTZeQ/PYsrmyH0JVA==} + dependencies: + through: 2.3.8 + dev: true + + /sprintf-js@1.1.3: + resolution: {integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==} + requiresBuild: true + dev: true + + /stack-generator@2.0.10: + resolution: {integrity: sha512-mwnua/hkqM6pF4k8SnmZ2zfETsRUpWXREfA/goT8SLCV4iOFa4bzOX2nDipWAZFPTjLvQB82f5yaodMVhK0yJQ==} + dependencies: + stackframe: 1.3.4 dev: false + /stack-utils@2.0.6: + resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} + engines: {node: '>=10'} + requiresBuild: true + dependencies: + escape-string-regexp: 2.0.0 + dev: true + /stackback@0.0.2: resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} dev: true + /stackframe@1.3.4: + resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==} + dev: false + + /stacktrace-gps@3.1.2: + resolution: {integrity: sha512-GcUgbO4Jsqqg6RxfyTHFiPxdPqF+3LFmQhm7MgCuYQOYuWyqxo5pwRPz5d/u6/WYJdEnWfK4r+jGbyD8TSggXQ==} + dependencies: + source-map: 0.5.6 + stackframe: 1.3.4 + dev: false + + /stacktrace-js@2.0.2: + resolution: {integrity: sha512-Je5vBeY4S1r/RnLydLl0TBTi3F2qdfWmYsGvtfZgEI+SCprPppaIhQf5nGcal4gI4cGpCV/duLcAzT1np6sQqg==} + dependencies: + error-stack-parser: 2.1.4 + stack-generator: 2.0.10 + stacktrace-gps: 3.1.2 + dev: false + /standard-as-callback@2.1.0: resolution: {integrity: sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==} dev: false @@ -14445,6 +18365,13 @@ packages: resolution: {integrity: sha512-aFZ19IgVmhdB2uX599ve2kE6BIE3YMnQ6Gp6BURhW/oIzpXGKr878TQfAQZn1+i0Flcc/UKUy1gOlcfaUBCryg==} dev: false + /stop-iteration-iterator@1.0.0: + resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==} + engines: {node: '>= 0.4'} + dependencies: + internal-slot: 1.0.5 + dev: true + /stream-browserify@3.0.0: resolution: {integrity: sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==} dependencies: @@ -14452,6 +18379,17 @@ packages: readable-stream: 3.6.2 dev: false + /stream-buffers@3.0.2: + resolution: {integrity: sha512-DQi1h8VEBA/lURbSwFtEHnSTb9s2/pwLEaFuNhXwy1Dx3Sa0lOuYT2yNUr4/j2fs8oCAMANtrZ5OrPZtyVs3MQ==} + engines: {node: '>= 0.10.0'} + dev: true + + /stream-combiner@0.0.4: + resolution: {integrity: sha512-rT00SPnTVyRsaSz5zgSPma/aHSOic5U1prhYdRy5HS2kTZviFpmDgzilbtsJsxiroqACmayynDN/9VzIbX5DOw==} + dependencies: + duplexer: 0.1.2 + dev: true + /stream-shift@1.0.1: resolution: {integrity: sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==} dev: false @@ -14467,6 +18405,20 @@ packages: engines: {node: '>=10'} dev: true + /streamx@2.16.1: + resolution: {integrity: sha512-m9QYj6WygWyWa3H1YY69amr4nVgy61xfjys7xO7kviL5rfIEc2naf+ewFiOA+aEJD7y0JO3h2GoiUv4TDwEGzQ==} + requiresBuild: true + dependencies: + fast-fifo: 1.3.0 + queue-tick: 1.0.1 + optionalDependencies: + bare-events: 2.2.1 + dev: true + + /strict-event-emitter@0.1.0: + resolution: {integrity: sha512-8hSYfU+WKLdNcHVXJ0VxRXiPESalzRe7w1l8dg9+/22Ry+iZQUoQuoJ27R30GMD1TiyYINWsIEGY05WrskhSKw==} + dev: true + /strict-event-emitter@0.5.1: resolution: {integrity: sha512-vMgjE/GGEPEFnhFub6pa4FmJBRBVOLpIII2hvCZ8Kzb7K0hlHo7mQv6xYrBvCL2LtAIBwFUK8wvuJgTVSQ5MFQ==} dev: true @@ -14531,6 +18483,13 @@ packages: es-abstract: 1.22.1 dev: true + /string_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + requiresBuild: true + dependencies: + safe-buffer: 5.1.2 + dev: true + /string_decoder@1.3.0: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} dependencies: @@ -14570,6 +18529,13 @@ packages: engines: {node: '>=12'} dev: true + /strip-hex-prefix@1.0.0: + resolution: {integrity: sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A==} + engines: {node: '>=6.5.0', npm: '>=3'} + dependencies: + is-hex-prefixed: 1.0.0 + dev: false + /strip-indent@3.0.0: resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} engines: {node: '>=8'} @@ -14580,7 +18546,6 @@ packages: /strip-json-comments@3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} - dev: true /strip-literal@1.3.0: resolution: {integrity: sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==} @@ -14624,6 +18589,10 @@ packages: transitivePeerDependencies: - '@babel/core' + /stylis@4.3.1: + resolution: {integrity: sha512-EQepAV+wMsIaGVGX1RECzgrcqRRU/0sYOHkeLsZ3fzHaHXZy4DaOOX0vOlGQdlsjkh3mFHAIlVimpwAs4dslyQ==} + dev: false + /superjson@1.13.3: resolution: {integrity: sha512-mJiVjfd2vokfDxsQPOwJ/PtanO87LhpYY88ubI5dUB1Ab58Txbyje3+jpm+/83R/fevaq/107NNhtYBLuoTrFg==} engines: {node: '>=10'} @@ -14687,6 +18656,39 @@ packages: engines: {node: '>=6'} dev: true + /tar-fs@3.0.4: + resolution: {integrity: sha512-5AFQU8b9qLfZCX9zp2duONhPmZv0hGYiBPJsyUdqMjzq/mqVpy/rEUSeHk1+YitmxugaptgBh5oDGU3VsAJq4w==} + dependencies: + mkdirp-classic: 0.5.3 + pump: 3.0.0 + tar-stream: 3.1.7 + dev: true + + /tar-fs@3.0.5: + resolution: {integrity: sha512-JOgGAmZyMgbqpLwct7ZV8VzkEB6pxXFBVErLtb+XCOqzc6w1xiWKI9GVd6bwk68EX7eJ4DWmfXVmq8K2ziZTGg==} + dependencies: + pump: 3.0.0 + tar-stream: 3.1.7 + optionalDependencies: + bare-fs: 2.2.2 + bare-path: 2.1.0 + dev: true + + /tar-stream@3.1.7: + resolution: {integrity: sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==} + dependencies: + b4a: 1.6.6 + fast-fifo: 1.3.0 + streamx: 2.16.1 + dev: true + + /temp-fs@0.9.9: + resolution: {integrity: sha512-WfecDCR1xC9b0nsrzSaxPf3ZuWeWLUWblW4vlDQAa1biQaKHiImHnJfeQocQe/hXKMcolRzgkcVX/7kK4zoWbw==} + engines: {node: '>=0.8.0'} + dependencies: + rimraf: 2.5.4 + dev: true + /terser-webpack-plugin@5.3.9(webpack@5.89.0): resolution: {integrity: sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==} engines: {node: '>= 10.13.0'} @@ -14726,6 +18728,11 @@ packages: resolution: {integrity: sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg==} dev: false + /text-extensions@2.4.0: + resolution: {integrity: sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g==} + engines: {node: '>=8'} + dev: true + /text-table@0.2.0: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} dev: true @@ -14736,6 +18743,11 @@ packages: real-require: 0.1.0 dev: false + /throttle-debounce@3.0.1: + resolution: {integrity: sha512-dTEWWNu6JmeVXY0ZYoPuH5cRIwc0MeGbJwah9KUNYSJwommQpCzTySTpEe8Gs1J23aeWEuAobe4Ag7EHVt/LOg==} + engines: {node: '>=10'} + dev: false + /throttled-queue@2.1.4: resolution: {integrity: sha512-YGdk8sdmr4ge3g+doFj/7RLF5kLM+Mi7DEciu9PHxnMJZMeVuZeTj31g4VE7ekUffx/IdbvrtOCiz62afg0mkg==} dev: true @@ -14776,6 +18788,10 @@ packages: resolution: {integrity: sha512-kRwSG8Zx4tjF9ZiyH4bhaebu+EDz1BOx9hOigYHlUW4xxI/wKIUQUqo018UlU4ar6ATPBsaMrdbKZ+tmPdohFA==} dev: true + /tinycolor2@1.6.0: + resolution: {integrity: sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==} + dev: false + /tinypool@0.5.0: resolution: {integrity: sha512-paHQtnrlS1QZYKF/GnLoOM/DN9fqaGOFbCbxzAhwniySnzl9Ebk8w73/dd34DAhe/obUbPAOldTyYXQZxnPBPQ==} engines: {node: '>=14.0.0'} @@ -14798,6 +18814,11 @@ packages: os-tmpdir: 1.0.2 dev: true + /tmp@0.2.3: + resolution: {integrity: sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==} + engines: {node: '>=14.14'} + dev: true + /to-fast-properties@2.0.0: resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} engines: {node: '>=4'} @@ -14819,6 +18840,11 @@ packages: /tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + requiresBuild: true + + /traverse@0.3.9: + resolution: {integrity: sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ==} + dev: true /trim-lines@3.0.1: resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} @@ -14829,10 +18855,50 @@ packages: engines: {node: '>=8'} dev: true + /triple-beam@1.4.1: + resolution: {integrity: sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==} + engines: {node: '>= 14.0.0'} + dev: true + /trough@2.1.0: resolution: {integrity: sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==} dev: true + /ts-easing@0.2.0: + resolution: {integrity: sha512-Z86EW+fFFh/IFB1fqQ3/+7Zpf9t2ebOAxNI/V6Wo7r5gqiqtxmgTlQ1qbqQcjLKYeSHPTsEmvlJUDg/EuL0uHQ==} + dev: false + + /ts-node@10.9.2(@types/node@20.3.1)(typescript@5.1.3): + resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} + hasBin: true + peerDependencies: + '@swc/core': '>=1.2.50' + '@swc/wasm': '>=1.2.50' + '@types/node': '*' + typescript: '>=2.7' + peerDependenciesMeta: + '@swc/core': + optional: true + '@swc/wasm': + optional: true + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.9 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.4 + '@types/node': 20.3.1 + acorn: 8.11.2 + acorn-walk: 8.2.0 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 5.1.3 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + dev: true + /tsconfck@3.0.1(typescript@5.1.3): resolution: {integrity: sha512-7ppiBlF3UEddCLeI1JRx5m2Ryq+xk4JrZuq4EuYXykipebaq1dV0Fhgr1hb7CkmHt32QSgOZlcqVLEtHBG4/mg==} engines: {node: ^18 || >=20} @@ -14883,6 +18949,25 @@ packages: typescript: 5.1.3 dev: true + /tsx@4.7.1: + resolution: {integrity: sha512-8d6VuibXHtlN5E3zFkgY8u4DX7Y3Z27zvvPKVmLon/D4AjuKzarkUBTLDBgj9iTQ0hg5xM7c/mYiRVM+HETf0g==} + engines: {node: '>=18.0.0'} + hasBin: true + dependencies: + esbuild: 0.19.12 + get-tsconfig: 4.7.2 + optionalDependencies: + fsevents: 2.3.3 + dev: true + + /tweetnacl-util@0.15.1: + resolution: {integrity: sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==} + dev: false + + /tweetnacl@1.0.3: + resolution: {integrity: sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==} + dev: false + /type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} @@ -14920,11 +19005,21 @@ packages: engines: {node: '>=8'} dev: true + /type-fest@2.13.0: + resolution: {integrity: sha512-lPfAm42MxE4/456+QyIaaVBAwgpJb6xZ8PRu09utnhPdWwcyj9vgy6Sq0Z5yNbJ21EdxB5dRU/Qg8bsyAMtlcw==} + engines: {node: '>=12.20'} + dev: true + /type-fest@2.19.0: resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} engines: {node: '>=12.20'} dev: true + /type-fest@3.13.1: + resolution: {integrity: sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==} + engines: {node: '>=14.16'} + dev: true + /type-fest@4.10.2: resolution: {integrity: sha512-anpAG63wSpdEbLwOqH8L84urkL6PiVIov3EMmgIhhThevh9aiMQov+6Btx0wldNcvm4wV+e2/Rt1QdDwKHFbHw==} engines: {node: '>=16'} @@ -14938,6 +19033,10 @@ packages: mime-types: 2.1.35 dev: true + /type@2.7.2: + resolution: {integrity: sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==} + dev: false + /typed-array-buffer@1.0.0: resolution: {integrity: sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==} engines: {node: '>= 0.4'} @@ -14991,6 +19090,10 @@ packages: engines: {node: '>=14.17'} hasBin: true + /ua-parser-js@1.0.37: + resolution: {integrity: sha512-bhTyI94tZofjo+Dn8SN6Zv8nBDvyXTymAdM3LDI/0IboIUwTu1rEhW7v2TfiVsoYWgkQ4kOVqnI8APUFbIQIFQ==} + dev: false + /ufo@1.2.0: resolution: {integrity: sha512-RsPyTbqORDNDxqAdQPQBpgqhWle1VcTSou/FraClYlHf6TZnQcGslpLcAphNR+sQW4q5lLWLbOsRlh9j24baQg==} @@ -15012,6 +19115,13 @@ packages: which-boxed-primitive: 1.0.2 dev: true + /unbzip2-stream@1.4.3: + resolution: {integrity: sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==} + dependencies: + buffer: 5.7.1 + through: 2.3.8 + dev: true + /uncrypto@0.1.3: resolution: {integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==} dev: false @@ -15025,7 +19135,7 @@ packages: consola: 3.2.3 defu: 6.1.3 mime: 3.0.0 - node-fetch-native: 1.6.2 + node-fetch-native: 1.6.4 pathe: 1.1.1 dev: false @@ -15114,6 +19224,12 @@ packages: unist-util-visit-parents: 6.0.1 dev: true + /universalify@2.0.1: + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} + engines: {node: '>= 10.0.0'} + requiresBuild: true + dev: true + /unload@2.2.0: resolution: {integrity: sha512-B60uB5TNBLtN6/LsgAf3udH9saB5p7gqJwcFfbOEZ8BcBHnGwCf6G/TGiEqkRAxX7zAFIUtzdrXQSdL3Q/wqNA==} dependencies: @@ -15171,7 +19287,7 @@ packages: listhen: 1.5.5 lru-cache: 10.1.0 mri: 1.2.0 - node-fetch-native: 1.6.2 + node-fetch-native: 1.6.4 ofetch: 1.3.3 ufo: 1.3.2 transitivePeerDependencies: @@ -15192,6 +19308,21 @@ packages: pathe: 1.1.1 dev: false + /unzipper@0.10.14: + resolution: {integrity: sha512-ti4wZj+0bQTiX2KmKWuwj7lhV+2n//uXEotUmGuQqrbVZSEGFMbI68+c6JCQ8aAmUWYvtHEz2A8K6wXvueR/6g==} + dependencies: + big-integer: 1.6.52 + binary: 0.3.0 + bluebird: 3.4.7 + buffer-indexof-polyfill: 1.0.2 + duplexer2: 0.1.4 + fstream: 1.0.12 + graceful-fs: 4.2.11 + listenercount: 1.0.1 + readable-stream: 2.3.8 + setimmediate: 1.0.5 + dev: true + /update-browserslist-db@1.0.11(browserslist@4.21.10): resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==} hasBin: true @@ -15293,12 +19424,20 @@ packages: react: 18.2.0 dev: false + /userhome@1.0.0: + resolution: {integrity: sha512-ayFKY3H+Pwfy4W98yPdtH1VqH4psDeyW8lYYFzfecR9d6hqLpqhecktvYR3SEEXt7vG0S1JEpciI3g94pMErig==} + engines: {node: '>= 0.8.0'} + dev: true + /utf-8-validate@5.0.10: resolution: {integrity: sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==} engines: {node: '>=6.14.2'} requiresBuild: true dependencies: node-gyp-build: 4.6.0 + + /utf8@3.0.0: + resolution: {integrity: sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==} dev: false /util-deprecate@1.0.2: @@ -15323,6 +19462,14 @@ packages: hasBin: true dev: false + /uuid@9.0.1: + resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} + hasBin: true + + /v8-compile-cache-lib@3.0.1: + resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} + dev: true + /validate-npm-package-license@3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} dependencies: @@ -15453,12 +19600,21 @@ packages: - terser dev: true - /vite-plugin-svgr@3.2.0(vite@4.3.9): + /vite-plugin-restart@0.4.0(vite@4.3.9): + resolution: {integrity: sha512-SXeyKQAzRFmEmEyGP2DjaTbx22D1K5MapyNiAP7Xa14UyFgNSDjZ86bfjWksA0pqn+bZyxnVLJpCiqDuG+tOcg==} + peerDependencies: + vite: ^2.9.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 + dependencies: + micromatch: 4.0.5 + vite: 4.3.9(@types/node@20.3.1) + dev: true + + /vite-plugin-svgr@3.2.0(rollup@2.79.1)(vite@4.3.9): resolution: {integrity: sha512-Uvq6niTvhqJU6ga78qLKBFJSDvxWhOnyfQSoKpDPMAGxJPo5S3+9hyjExE5YDj6Lpa4uaLkGc1cBgxXov+LjSw==} peerDependencies: vite: ^2.6.0 || 3 || 4 dependencies: - '@rollup/pluginutils': 5.0.3 + '@rollup/pluginutils': 5.0.3(rollup@2.79.1) '@svgr/core': 7.0.0 '@svgr/plugin-jsx': 7.0.0 vite: 4.3.9(@types/node@20.3.1) @@ -15553,7 +19709,7 @@ packages: fsevents: 2.3.3 dev: true - /vitest@0.32.2: + /vitest@0.32.2(webdriverio@8.33.1): resolution: {integrity: sha512-hU8GNNuQfwuQmqTLfiKcqEhZY72Zxb7nnN07koCUNmntNxbKQnVbeIS6sqUgR3eXSlbOpit8+/gr1KpqoMgWCQ==} engines: {node: '>=v14.18.0'} hasBin: true @@ -15608,6 +19764,7 @@ packages: tinypool: 0.5.0 vite: 4.3.9(@types/node@20.3.1) vite-node: 0.32.2(@types/node@20.3.1) + webdriverio: 8.33.1(typescript@5.1.3) why-is-node-running: 2.2.2 transitivePeerDependencies: - less @@ -15675,6 +19832,18 @@ packages: - zod dev: false + /wait-port@1.1.0: + resolution: {integrity: sha512-3e04qkoN3LxTMLakdqeWth8nih8usyg+sf1Bgdf9wwUkp05iuK1eSY/QpLvscT/+F/gA89+LpUmmgBtesbqI2Q==} + engines: {node: '>=10'} + hasBin: true + dependencies: + chalk: 4.1.2 + commander: 9.5.0 + debug: 4.3.4(supports-color@5.5.0) + transitivePeerDependencies: + - supports-color + dev: true + /watchpack@2.4.0: resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==} engines: {node: '>=10.13.0'} @@ -15689,6 +19858,11 @@ packages: defaults: 1.0.4 dev: true + /wdio-wait-for@3.0.11: + resolution: {integrity: sha512-kck1TeQeIzI9fdP8efy7izzdkBiOZJR8lMOkKpxYp2/k7r2F2+8SHWBGPt1TfSiehKHLsIalB7G1RzJKF+PqDA==} + engines: {node: ^16.13 || >=18} + dev: true + /web-encoding@1.1.5: resolution: {integrity: sha512-HYLeVCdJ0+lBYV2FvNZmv3HJ2Nt0QYXqZojk3d9FJOLkwnuhzM9tmamh8d7HPM8QqjKH8DeHkFTx+CFlWpZZDA==} dependencies: @@ -15706,6 +19880,158 @@ packages: engines: {node: '>= 8'} dev: true + /web-streams-polyfill@4.0.0-beta.3: + resolution: {integrity: sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug==} + engines: {node: '>= 14'} + dev: true + + /web3-core-helpers@1.10.3: + resolution: {integrity: sha512-Yv7dQC3B9ipOc5sWm3VAz1ys70Izfzb8n9rSiQYIPjpqtJM+3V4EeK6ghzNR6CO2es0+Yu9CtCkw0h8gQhrTxA==} + engines: {node: '>=8.0.0'} + dependencies: + web3-eth-iban: 1.10.3 + web3-utils: 1.10.3 + dev: false + + /web3-core-helpers@1.10.4: + resolution: {integrity: sha512-r+L5ylA17JlD1vwS8rjhWr0qg7zVoVMDvWhajWA5r5+USdh91jRUYosp19Kd1m2vE034v7Dfqe1xYRoH2zvG0g==} + engines: {node: '>=8.0.0'} + dependencies: + web3-eth-iban: 1.10.4 + web3-utils: 1.10.4 + dev: false + + /web3-core-method@1.10.4: + resolution: {integrity: sha512-uZTb7flr+Xl6LaDsyTeE2L1TylokCJwTDrIVfIfnrGmnwLc6bmTWCCrm71sSrQ0hqs6vp/MKbQYIYqUN0J8WyA==} + engines: {node: '>=8.0.0'} + dependencies: + '@ethersproject/transactions': 5.7.0 + web3-core-helpers: 1.10.4 + web3-core-promievent: 1.10.4 + web3-core-subscriptions: 1.10.4 + web3-utils: 1.10.4 + dev: false + + /web3-core-promievent@1.10.4: + resolution: {integrity: sha512-2de5WnJQ72YcIhYwV/jHLc4/cWJnznuoGTJGD29ncFQHAfwW/MItHFSVKPPA5v8AhJe+r6y4Y12EKvZKjQVBvQ==} + engines: {node: '>=8.0.0'} + dependencies: + eventemitter3: 4.0.4 + dev: false + + /web3-core-requestmanager@1.10.4(encoding@0.1.13): + resolution: {integrity: sha512-vqP6pKH8RrhT/2MoaU+DY/OsYK9h7HmEBNCdoMj+4ZwujQtw/Mq2JifjwsJ7gits7Q+HWJwx8q6WmQoVZAWugg==} + engines: {node: '>=8.0.0'} + dependencies: + util: 0.12.5 + web3-core-helpers: 1.10.4 + web3-providers-http: 1.10.4(encoding@0.1.13) + web3-providers-ipc: 1.10.4 + web3-providers-ws: 1.10.4 + transitivePeerDependencies: + - encoding + - supports-color + dev: false + + /web3-core-subscriptions@1.10.4: + resolution: {integrity: sha512-o0lSQo/N/f7/L76C0HV63+S54loXiE9fUPfHFcTtpJRQNDBVsSDdWRdePbWwR206XlsBqD5VHApck1//jEafTw==} + engines: {node: '>=8.0.0'} + dependencies: + eventemitter3: 4.0.4 + web3-core-helpers: 1.10.4 + dev: false + + /web3-core@1.10.4(encoding@0.1.13): + resolution: {integrity: sha512-B6elffYm81MYZDTrat7aEhnhdtVE3lDBUZft16Z8awYMZYJDbnykEbJVS+l3mnA7AQTnSDr/1MjWofGDLBJPww==} + engines: {node: '>=8.0.0'} + dependencies: + '@types/bn.js': 5.1.5 + '@types/node': 12.20.55 + bignumber.js: 9.1.1 + web3-core-helpers: 1.10.4 + web3-core-method: 1.10.4 + web3-core-requestmanager: 1.10.4(encoding@0.1.13) + web3-utils: 1.10.4 + transitivePeerDependencies: + - encoding + - supports-color + dev: false + + /web3-eth-iban@1.10.3: + resolution: {integrity: sha512-ZCfOjYKAjaX2TGI8uif5ah+J3BYFuo+47JOIV1RIz2l7kD9VfnxvRH5UiQDRyMALQC7KFd2hUqIEtHklapNyKA==} + engines: {node: '>=8.0.0'} + dependencies: + bn.js: 5.2.1 + web3-utils: 1.10.3 + dev: false + + /web3-eth-iban@1.10.4: + resolution: {integrity: sha512-0gE5iNmOkmtBmbKH2aTodeompnNE8jEyvwFJ6s/AF6jkw9ky9Op9cqfzS56AYAbrqEFuClsqB/AoRves7LDELw==} + engines: {node: '>=8.0.0'} + dependencies: + bn.js: 5.2.1 + web3-utils: 1.10.4 + dev: false + + /web3-providers-http@1.10.4(encoding@0.1.13): + resolution: {integrity: sha512-m2P5Idc8hdiO0l60O6DSCPw0kw64Zgi0pMjbEFRmxKIck2Py57RQMu4bxvkxJwkF06SlGaEQF8rFZBmuX7aagQ==} + engines: {node: '>=8.0.0'} + dependencies: + abortcontroller-polyfill: 1.7.5 + cross-fetch: 4.0.0(encoding@0.1.13) + es6-promise: 4.2.8 + web3-core-helpers: 1.10.4 + transitivePeerDependencies: + - encoding + dev: false + + /web3-providers-ipc@1.10.4: + resolution: {integrity: sha512-YRF/bpQk9z3WwjT+A6FI/GmWRCASgd+gC0si7f9zbBWLXjwzYAKG73bQBaFRAHex1hl4CVcM5WUMaQXf3Opeuw==} + engines: {node: '>=8.0.0'} + dependencies: + oboe: 2.1.5 + web3-core-helpers: 1.10.4 + dev: false + + /web3-providers-ws@1.10.4: + resolution: {integrity: sha512-j3FBMifyuFFmUIPVQR4pj+t5ILhAexAui0opgcpu9R5LxQrLRUZxHSnU+YO25UycSOa/NAX8A+qkqZNpcFAlxA==} + engines: {node: '>=8.0.0'} + dependencies: + eventemitter3: 4.0.4 + web3-core-helpers: 1.10.4 + websocket: 1.0.34 + transitivePeerDependencies: + - supports-color + dev: false + + /web3-utils@1.10.3: + resolution: {integrity: sha512-OqcUrEE16fDBbGoQtZXWdavsPzbGIDc5v3VrRTZ0XrIpefC/viZ1ZU9bGEemazyS0catk/3rkOOxpzTfY+XsyQ==} + engines: {node: '>=8.0.0'} + dependencies: + '@ethereumjs/util': 8.1.0 + bn.js: 5.2.1 + ethereum-bloom-filters: 1.0.10 + ethereum-cryptography: 2.1.2 + ethjs-unit: 0.1.6 + number-to-bn: 1.7.0 + randombytes: 2.1.0 + utf8: 3.0.0 + dev: false + + /web3-utils@1.10.4: + resolution: {integrity: sha512-tsu8FiKJLk2PzhDl9fXbGUWTkkVXYhtTA+SmEFkKft+9BgwLxfCRpU96sWv7ICC8zixBNd3JURVoiR3dUXgP8A==} + engines: {node: '>=8.0.0'} + dependencies: + '@ethereumjs/util': 8.1.0 + bn.js: 5.2.1 + ethereum-bloom-filters: 1.0.10 + ethereum-cryptography: 2.1.2 + ethjs-unit: 0.1.6 + number-to-bn: 1.7.0 + randombytes: 2.1.0 + utf8: 3.0.0 + dev: false + /web3.storage@4.5.4(node-fetch@3.3.1): resolution: {integrity: sha512-QSdiPEMgXCkk9Y0y3U1pyTu8n1TOOctwq7h9Loz7NYPla9QZesbg4lSxe0XWPltzyJEkI43yC1hy8gNxNEiizA==} dependencies: @@ -15731,8 +20057,71 @@ packages: - supports-color dev: true + /webdriver@8.33.1: + resolution: {integrity: sha512-QREF4c08omN9BPh3QDmz5h+OEvjdzDliuEcrDuXoDnHSMxIj1rsonzsgRaM2PXhFZuPeMIiKZYqc7Qg9BGbh6A==} + engines: {node: ^16.13 || >=18} + dependencies: + '@types/node': 20.10.5 + '@types/ws': 8.5.10 + '@wdio/config': 8.33.1 + '@wdio/logger': 8.28.0 + '@wdio/protocols': 8.32.0 + '@wdio/types': 8.32.4 + '@wdio/utils': 8.33.1 + deepmerge-ts: 5.1.0 + got: 12.6.1 + ky: 0.33.3 + ws: 8.15.1(bufferutil@4.0.8)(utf-8-validate@5.0.10) + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: true + + /webdriverio@8.33.1(typescript@5.1.3): + resolution: {integrity: sha512-1DsF8sx1a46AoVYCUpEwJYU74iBAW/U2H5r6p+60ct7dIiFmxmc4uCbOqtf7NLOTgrIzAOaRnT0EsrRICpg5Qw==} + engines: {node: ^16.13 || >=18} + peerDependencies: + devtools: ^8.14.0 + peerDependenciesMeta: + devtools: + optional: true + dependencies: + '@types/node': 20.10.5 + '@wdio/config': 8.33.1 + '@wdio/logger': 8.28.0 + '@wdio/protocols': 8.32.0 + '@wdio/repl': 8.24.12 + '@wdio/types': 8.32.4 + '@wdio/utils': 8.33.1 + archiver: 7.0.1 + aria-query: 5.3.0 + css-shorthand-properties: 1.1.1 + css-value: 0.0.1 + devtools-protocol: 0.0.1263784 + grapheme-splitter: 1.0.4 + import-meta-resolve: 4.0.0 + is-plain-obj: 4.1.0 + lodash.clonedeep: 4.5.0 + lodash.zip: 4.2.0 + minimatch: 9.0.3 + puppeteer-core: 20.9.0(typescript@5.1.3) + query-selector-shadow-dom: 1.0.1 + resq: 1.11.0 + rgb2hex: 0.2.5 + serialize-error: 11.0.3 + webdriver: 8.33.1 + transitivePeerDependencies: + - bufferutil + - encoding + - supports-color + - typescript + - utf-8-validate + dev: true + /webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + requiresBuild: true /webpack-sources@3.2.3: resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} @@ -15779,6 +20168,20 @@ packages: - uglify-js dev: true + /websocket@1.0.34: + resolution: {integrity: sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ==} + engines: {node: '>=4.0.0'} + dependencies: + bufferutil: 4.0.8 + debug: 2.6.9 + es5-ext: 0.10.64 + typedarray-to-buffer: 3.1.5 + utf-8-validate: 5.0.10 + yaeti: 0.0.6 + transitivePeerDependencies: + - supports-color + dev: false + /well-known-symbols@2.0.0: resolution: {integrity: sha512-ZMjC3ho+KXo0BfJb7JgtQ5IBuvnShdlACNkKkdsqBmYw3bPAaJfPeYUo6tLUaT5tG/Gkh7xkpBhKRQ9e7pyg9Q==} engines: {node: '>=6'} @@ -15786,6 +20189,7 @@ packages: /whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + requiresBuild: true dependencies: tr46: 0.0.3 webidl-conversions: 3.0.1 @@ -15800,6 +20204,16 @@ packages: is-symbol: 1.0.4 dev: true + /which-collection@1.0.2: + resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} + engines: {node: '>= 0.4'} + dependencies: + is-map: 2.0.3 + is-set: 2.0.3 + is-weakmap: 2.0.2 + is-weakset: 2.0.3 + dev: true + /which-module@2.0.1: resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} dev: false @@ -15814,6 +20228,17 @@ packages: gopd: 1.0.1 has-tostringtag: 1.0.0 + /which-typed-array@1.1.15: + resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} + engines: {node: '>= 0.4'} + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + has-tostringtag: 1.0.2 + dev: true + /which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} engines: {node: '>= 8'} @@ -15821,6 +20246,14 @@ packages: dependencies: isexe: 2.0.0 + /which@4.0.0: + resolution: {integrity: sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==} + engines: {node: ^16.13.0 || >=18.0.0} + hasBin: true + dependencies: + isexe: 3.1.1 + dev: true + /why-is-node-running@2.2.2: resolution: {integrity: sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==} engines: {node: '>=8'} @@ -15843,6 +20276,19 @@ packages: bs58check: 2.1.2 dev: false + /winston-transport@4.7.0: + resolution: {integrity: sha512-ajBj65K5I7denzer2IYW6+2bNIVqLGDHqDw3Ow8Ohh+vdW+rv4MZ6eiDvHoKhfJFZ2auyN8byXieDDJ96ViONg==} + engines: {node: '>= 12.0.0'} + dependencies: + logform: 2.6.0 + readable-stream: 3.6.2 + triple-beam: 1.4.1 + dev: true + + /workerpool@6.2.1: + resolution: {integrity: sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==} + dev: true + /wrap-ansi@6.2.0: resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} engines: {node: '>=8'} @@ -15909,7 +20355,6 @@ packages: optional: true utf-8-validate: optional: true - dev: false /ws@8.15.1(bufferutil@4.0.8)(utf-8-validate@5.0.10): resolution: {integrity: sha512-W5OZiCjXEmk0yZ66ZN82beM5Sz7l7coYxpRkzS+p9PP+ToQry8szKh+61eNktr7EA9DOwvFGhfC605jDHbP6QQ==} @@ -15925,7 +20370,6 @@ packages: dependencies: bufferutil: 4.0.8 utf-8-validate: 5.0.10 - dev: false /ws@8.5.0: resolution: {integrity: sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==} @@ -15961,6 +20405,11 @@ packages: engines: {node: '>=10'} dev: true + /yaeti@0.0.6: + resolution: {integrity: sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug==} + engines: {node: '>=0.10.32'} + dev: false + /yallist@3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} @@ -15975,6 +20424,11 @@ packages: decamelize: 1.2.0 dev: false + /yargs-parser@20.2.4: + resolution: {integrity: sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==} + engines: {node: '>=10'} + dev: true + /yargs-parser@20.2.9: resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} engines: {node: '>=10'} @@ -15985,6 +20439,16 @@ packages: engines: {node: '>=12'} dev: true + /yargs-unparser@2.0.0: + resolution: {integrity: sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==} + engines: {node: '>=10'} + dependencies: + camelcase: 6.3.0 + decamelize: 4.0.0 + flat: 5.0.2 + is-plain-obj: 2.1.0 + dev: true + /yargs@15.4.1: resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} engines: {node: '>=8'} @@ -16002,6 +20466,33 @@ packages: yargs-parser: 18.1.3 dev: false + /yargs@16.2.0: + resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} + engines: {node: '>=10'} + dependencies: + cliui: 7.0.4 + escalade: 3.1.1 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 20.2.9 + dev: true + + /yargs@17.7.1: + resolution: {integrity: sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw==} + engines: {node: '>=12'} + requiresBuild: true + dependencies: + cliui: 8.0.1 + escalade: 3.1.1 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + dev: true + /yargs@17.7.2: resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} engines: {node: '>=12'} @@ -16015,11 +20506,32 @@ packages: yargs-parser: 21.1.1 dev: true + /yauzl@2.10.0: + resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} + requiresBuild: true + dependencies: + buffer-crc32: 0.2.13 + fd-slicer: 1.1.0 + dev: true + + /yauzl@3.1.2: + resolution: {integrity: sha512-621iCPgEG1wXViDZS/L3h9F8TgrdQV1eayJlJ8j5A2SZg8OdY/1DLf+VxNeD+q5QbMFEAbjjR8nITj7g4nKa0Q==} + engines: {node: '>=12'} + dependencies: + buffer-crc32: 0.2.13 + pend: 1.2.0 + dev: true + /ylru@1.3.2: resolution: {integrity: sha512-RXRJzMiK6U2ye0BlGGZnmpwJDPgakn6aNQ0A7gHRbD4I0uvK4TW6UqkK1V0pp9jskjJBAXd3dRrbzWkqJ+6cxA==} engines: {node: '>= 4.0.0'} dev: true + /yn@3.1.1: + resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} + engines: {node: '>=6'} + dev: true + /yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} @@ -16030,6 +20542,16 @@ packages: engines: {node: '>=12.20'} dev: true + /zip-stream@6.0.1: + resolution: {integrity: sha512-zK7YHHz4ZXpW89AHXUPbQVGKI7uvkd3hzusTdotCg1UxyaVtg0zFJSTfW/Dq5f7OBBVnq6cZIaC8Ti4hb6dtCA==} + engines: {node: '>= 14'} + requiresBuild: true + dependencies: + archiver-utils: 5.0.2 + compress-commons: 6.0.2 + readable-stream: 4.5.2 + dev: true + /zustand@4.4.7(@types/react@18.2.14)(react@18.2.0): resolution: {integrity: sha512-QFJWJMdlETcI69paJwhSMJz7PPWjVP8Sjhclxmxmxv/RYI7ZOvR5BHX+ktH0we9gTWQMxcne8q1OY8xxz604gw==} engines: {node: '>=12.7.0'} diff --git a/public/configs/cctp.json b/public/configs/cctp.json index a14cb3c9e..7373c4b2f 100644 --- a/public/configs/cctp.json +++ b/public/configs/cctp.json @@ -7,7 +7,8 @@ { "chainId": "5", "tokenAddress": "0x07865c6E87B9F70255377e024ace6630C1Eaa37F", - "name": "Ethereum Goerli" + "name": "Ethereum Goerli", + "isTestnet": true }, { "chainId": "43114", @@ -18,5 +19,10 @@ "chainId": "10", "tokenAddress": "0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85", "name": "optimism" + }, + { + "chainId": "42161", + "tokenAddress": "0xaf88d065e77c8cC2239327C5EDb3A432268e5831", + "name": "arbitrum" } ] diff --git a/public/configs/env.json b/public/configs/env.json index 20845e1d0..237a92a36 100644 --- a/public/configs/env.json +++ b/public/configs/env.json @@ -1,4 +1,5 @@ { + "notes": "THIS FILE IS MOSTLY DEPRECATED BUT OLDER MOBILE VERSIONS STILL EXPECT IT. This means that any FF updates still apply.", "apps": { "ios": { "scheme": "dydx-t-v4" @@ -79,6 +80,7 @@ ], "0xsquid": "https://testnet.api.0xsquid.com", "nobleValidator": "https://noble-testnet-rpc.polkachu.com/", + "geo": "https://api.dydx.exchange/v4/geo", "faucet": "https://faucet.v4dev.dydx.exchange" }, "links": { @@ -98,7 +100,8 @@ "keplrDashboard": "https://testnet.keplr.app/", "strideZoneApp": "https://testnet.stride.zone", "accountExportLearnMore": "https://help.dydx.exchange/en/articles/8565867-secret-phrase-on-dydx-chain", - "walletLearnMore": "https://www.dydx.academy/video/defi-wallet" + "walletLearnMore": "https://www.dydx.academy/video/defi-wallet", + "withdrawalGateLearnMore": "https://help.dydx.exchange/en/articles/8981384-withdrawals-on-dydx-chain#h_23e97bc665" }, "wallets": { "walletconnect": { @@ -126,7 +129,9 @@ } }, "featureFlags": { - "reduceOnlySupported": true + "reduceOnlySupported": true, + "withdrawalSafetyEnabled": true, + "CCTPWithdrawalOnly": true } }, "dydxprotocol-dev-2": { @@ -163,7 +168,8 @@ "http://54.92.118.111" ], "0xsquid": "https://testnet.api.0xsquid.com", - "nobleValidator": "https://noble-testnet-rpc.polkachu.com/" + "nobleValidator": "https://noble-testnet-rpc.polkachu.com/", + "geo": "https://api.dydx.exchange/v4/geo" }, "links": { "tos": "https://dydx.exchange/v4-terms", @@ -182,7 +188,8 @@ "keplrDashboard": "https://testnet.keplr.app/", "strideZoneApp": "https://testnet.stride.zone", "accountExportLearnMore": "https://help.dydx.exchange/en/articles/8565867-secret-phrase-on-dydx-chain", - "walletLearnMore": "https://www.dydx.academy/video/defi-wallet" + "walletLearnMore": "https://www.dydx.academy/video/defi-wallet", + "withdrawalGateLearnMore": "https://help.dydx.exchange/en/articles/8981384-withdrawals-on-dydx-chain#h_23e97bc665" }, "wallets": { "walletconnect": { @@ -210,7 +217,9 @@ } }, "featureFlags": { - "reduceOnlySupported": true + "reduceOnlySupported": true, + "withdrawalSafetyEnabled": true, + "CCTPWithdrawalOnly": true } }, "dydxprotocol-dev-4": { @@ -248,6 +257,7 @@ ], "0xsquid": "https://testnet.api.0xsquid.com", "nobleValidator": "https://noble-testnet-rpc.polkachu.com/", + "geo": "https://api.dydx.exchange/v4/geo", "faucet": "https://faucet.v4dev4.dydx.exchange" }, "links": { @@ -267,7 +277,8 @@ "keplrDashboard": "https://testnet.keplr.app/", "strideZoneApp": "https://testnet.stride.zone", "accountExportLearnMore": "https://help.dydx.exchange/en/articles/8565867-secret-phrase-on-dydx-chain", - "walletLearnMore": "https://www.dydx.academy/video/defi-wallet" + "walletLearnMore": "https://www.dydx.academy/video/defi-wallet", + "withdrawalGateLearnMore": "https://help.dydx.exchange/en/articles/8981384-withdrawals-on-dydx-chain#h_23e97bc665" }, "wallets": { "walletconnect": { @@ -295,7 +306,9 @@ } }, "featureFlags": { - "reduceOnlySupported": true + "reduceOnlySupported": true, + "withdrawalSafetyEnabled": true, + "CCTPWithdrawalOnly": true } }, "dydxprotocol-dev-5": { @@ -332,7 +345,8 @@ "http://18.223.78.50" ], "0xsquid": "https://testnet.api.0xsquid.com", - "nobleValidator": "https://noble-testnet-rpc.polkachu.com/" + "nobleValidator": "https://noble-testnet-rpc.polkachu.com/", + "geo": "https://api.dydx.exchange/v4/geo" }, "links": { "tos": "https://dydx.exchange/v4-terms", @@ -351,7 +365,8 @@ "keplrDashboard": "https://testnet.keplr.app/", "strideZoneApp": "https://testnet.stride.zone", "accountExportLearnMore": "https://help.dydx.exchange/en/articles/8565867-secret-phrase-on-dydx-chain", - "walletLearnMore": "https://www.dydx.academy/video/defi-wallet" + "walletLearnMore": "https://www.dydx.academy/video/defi-wallet", + "withdrawalGateLearnMore": "https://help.dydx.exchange/en/articles/8981384-withdrawals-on-dydx-chain#h_23e97bc665" }, "wallets": { "walletconnect": { @@ -379,7 +394,9 @@ } }, "featureFlags": { - "reduceOnlySupported": true + "reduceOnlySupported": true, + "withdrawalSafetyEnabled": true, + "CCTPWithdrawalOnly": true } }, "dydxprotocol-staging": { @@ -417,7 +434,8 @@ "https://validator.v4staging.dydx.exchange" ], "0xsquid": "https://testnet.api.squidrouter.com", - "nobleValidator": "https://noble-testnet-rpc.polkachu.com/" + "nobleValidator": "https://noble-testnet-rpc.polkachu.com/", + "geo": "https://api.dydx.exchange/v4/geo" }, "links": { "tos": "https://dydx.exchange/v4-terms", @@ -437,7 +455,8 @@ "keplrDashboard": "https://testnet.keplr.app/", "strideZoneApp": "https://testnet.stride.zone", "accountExportLearnMore": "https://help.dydx.exchange/en/articles/8565867-secret-phrase-on-dydx-chain", - "walletLearnMore": "https://www.dydx.academy/video/defi-wallet" + "walletLearnMore": "https://www.dydx.academy/video/defi-wallet", + "withdrawalGateLearnMore": "https://help.dydx.exchange/en/articles/8981384-withdrawals-on-dydx-chain#h_23e97bc665" }, "wallets": { "walletconnect": { @@ -465,7 +484,9 @@ } }, "featureFlags": { - "reduceOnlySupported": true + "reduceOnlySupported": true, + "withdrawalSafetyEnabled": true, + "CCTPWithdrawalOnly": true } }, "dydxprotocol-staging-forced-update": { @@ -503,7 +524,8 @@ "https://validator.v4staging.dydx.exchange" ], "0xsquid": "https://testnet.api.squidrouter.com", - "nobleValidator": "https://noble-testnet-rpc.polkachu.com/" + "nobleValidator": "https://noble-testnet-rpc.polkachu.com/", + "geo": "https://api.dydx.exchange/v4/geo" }, "links": { "tos": "https://dydx.exchange/v4-terms", @@ -514,7 +536,8 @@ "community": "https://discord.com/invite/dydx", "feedback": "https://docs.google.com/forms/d/e/1FAIpQLSezLsWCKvAYDEb7L-2O4wOON1T56xxro9A2Azvl6IxXHP_15Q/viewform", "blogs": "https://www.dydx.foundation/blog", - "newMarketProposalLearnMore": "https://dydx.exchange/blog/new-market-proposals" + "newMarketProposalLearnMore": "https://dydx.exchange/blog/new-market-proposals", + "withdrawalGateLearnMore": "https://help.dydx.exchange/en/articles/8981384-withdrawals-on-dydx-chain#h_23e97bc665" }, "wallets": { "walletconnect": { @@ -549,7 +572,9 @@ } }, "featureFlags": { - "reduceOnlySupported": true + "reduceOnlySupported": true, + "withdrawalSafetyEnabled": true, + "CCTPWithdrawalOnly": true } }, "dydxprotocol-staging-west": { @@ -587,7 +612,8 @@ "https://validator-uswest1.v4staging.dydx.exchange" ], "0xsquid": "https://testnet.api.squidrouter.com", - "nobleValidator": "https://noble-testnet-rpc.polkachu.com/" + "nobleValidator": "https://noble-testnet-rpc.polkachu.com/", + "geo": "https://api.dydx.exchange/v4/geo" }, "links": { "tos": "https://dydx.exchange/v4-terms", @@ -607,7 +633,8 @@ "keplrDashboard": "https://testnet.keplr.app/", "strideZoneApp": "https://testnet.stride.zone", "accountExportLearnMore": "https://help.dydx.exchange/en/articles/8565867-secret-phrase-on-dydx-chain", - "walletLearnMore": "https://www.dydx.academy/video/defi-wallet" + "walletLearnMore": "https://www.dydx.academy/video/defi-wallet", + "withdrawalGateLearnMore": "https://help.dydx.exchange/en/articles/8981384-withdrawals-on-dydx-chain#h_23e97bc665" }, "wallets": { "walletconnect": { @@ -635,7 +662,9 @@ } }, "featureFlags": { - "reduceOnlySupported": true + "reduceOnlySupported": true, + "withdrawalSafetyEnabled": true, + "CCTPWithdrawalOnly": true } }, "dydxprotocol-testnet": { @@ -677,6 +706,7 @@ ], "0xsquid": "https://testnet.api.squidrouter.com", "nobleValidator": "https://noble-testnet-rpc.polkachu.com/", + "geo": "https://api.dydx.exchange/v4/geo", "faucet": "https://faucet.v4testnet.dydx.exchange" }, "links": { @@ -697,7 +727,8 @@ "keplrDashboard": "https://testnet.keplr.app/", "strideZoneApp": "https://testnet.stride.zone", "accountExportLearnMore": "https://help.dydx.exchange/en/articles/8565867-secret-phrase-on-dydx-chain", - "walletLearnMore": "https://www.dydx.academy/video/defi-wallet" + "walletLearnMore": "https://www.dydx.academy/video/defi-wallet", + "withdrawalGateLearnMore": "https://help.dydx.exchange/en/articles/8981384-withdrawals-on-dydx-chain#h_23e97bc665" }, "wallets": { "walletconnect": { @@ -725,7 +756,9 @@ } }, "featureFlags": { - "reduceOnlySupported": true + "reduceOnlySupported": true, + "withdrawalSafetyEnabled": true, + "CCTPWithdrawalOnly": true } }, "dydxprotocol-testnet-dydx": { @@ -763,6 +796,7 @@ ], "0xsquid": "https://testnet.api.squidrouter.com", "nobleValidator": "https://noble-testnet-rpc.polkachu.com/", + "geo": "https://api.dydx.exchange/v4/geo", "faucet": "https://faucet.v4testnet.dydx.exchange" }, "links": { @@ -784,7 +818,8 @@ "keplrDashboard": "https://testnet.keplr.app/", "strideZoneApp": "https://testnet.stride.zone", "accountExportLearnMore": "https://help.dydx.exchange/en/articles/8565867-secret-phrase-on-dydx-chain", - "walletLearnMore": "https://www.dydx.academy/video/defi-wallet" + "walletLearnMore": "https://www.dydx.academy/video/defi-wallet", + "withdrawalGateLearnMore": "https://help.dydx.exchange/en/articles/8981384-withdrawals-on-dydx-chain#h_23e97bc665" }, "wallets": { "walletconnect": { @@ -812,7 +847,9 @@ } }, "featureFlags": { - "reduceOnlySupported": true + "reduceOnlySupported": true, + "withdrawalSafetyEnabled": true, + "CCTPWithdrawalOnly": true } }, "dydxprotocol-testnet-nodefleet": { @@ -850,6 +887,7 @@ ], "0xsquid": "https://testnet.api.squidrouter.com", "nobleValidator": "https://noble-testnet-rpc.polkachu.com/", + "geo": "https://api.dydx.exchange/v4/geo", "faucet": "https://faucet.v4testnet.dydx.exchange" }, "links": { @@ -871,7 +909,8 @@ "keplrDashboard": "https://testnet.keplr.app/", "strideZoneApp": "https://testnet.stride.zone", "accountExportLearnMore": "https://help.dydx.exchange/en/articles/8565867-secret-phrase-on-dydx-chain", - "walletLearnMore": "https://www.dydx.academy/video/defi-wallet" + "walletLearnMore": "https://www.dydx.academy/video/defi-wallet", + "withdrawalGateLearnMore": "https://help.dydx.exchange/en/articles/8981384-withdrawals-on-dydx-chain#h_23e97bc665" }, "wallets": { "walletconnect": { @@ -899,7 +938,9 @@ } }, "featureFlags": { - "reduceOnlySupported": true + "reduceOnlySupported": true, + "withdrawalSafetyEnabled": true, + "CCTPWithdrawalOnly": true } }, "dydxprotocol-testnet-kingnodes": { @@ -937,6 +978,7 @@ ], "0xsquid": "https://testnet.api.squidrouter.com", "nobleValidator": "https://noble-testnet-rpc.polkachu.com/", + "geo": "https://api.dydx.exchange/v4/geo", "faucet": "https://faucet.v4testnet.dydx.exchange" }, "links": { @@ -958,7 +1000,8 @@ "keplrDashboard": "https://testnet.keplr.app/", "strideZoneApp": "https://testnet.stride.zone", "accountExportLearnMore": "https://help.dydx.exchange/en/articles/8565867-secret-phrase-on-dydx-chain", - "walletLearnMore": "https://www.dydx.academy/video/defi-wallet" + "walletLearnMore": "https://www.dydx.academy/video/defi-wallet", + "withdrawalGateLearnMore": "https://help.dydx.exchange/en/articles/8981384-withdrawals-on-dydx-chain#h_23e97bc665" }, "wallets": { "walletconnect": { @@ -986,7 +1029,9 @@ } }, "featureFlags": { - "reduceOnlySupported": true + "reduceOnlySupported": true, + "withdrawalSafetyEnabled": true, + "CCTPWithdrawalOnly": true } }, "dydxprotocol-testnet-liquify": { @@ -1024,6 +1069,7 @@ ], "0xsquid": "https://testnet.api.squidrouter.com", "nobleValidator": "https://noble-testnet-rpc.polkachu.com/", + "geo": "https://api.dydx.exchange/v4/geo", "faucet": "https://faucet.v4testnet.dydx.exchange" }, "links": { @@ -1045,7 +1091,8 @@ "keplrDashboard": "https://testnet.keplr.app/", "strideZoneApp": "https://testnet.stride.zone", "accountExportLearnMore": "https://help.dydx.exchange/en/articles/8565867-secret-phrase-on-dydx-chain", - "walletLearnMore": "https://www.dydx.academy/video/defi-wallet" + "walletLearnMore": "https://www.dydx.academy/video/defi-wallet", + "withdrawalGateLearnMore": "https://help.dydx.exchange/en/articles/8981384-withdrawals-on-dydx-chain#h_23e97bc665" }, "wallets": { "walletconnect": { @@ -1073,7 +1120,9 @@ } }, "featureFlags": { - "reduceOnlySupported": true + "reduceOnlySupported": true, + "withdrawalSafetyEnabled": true, + "CCTPWithdrawalOnly": true } }, "dydxprotocol-testnet-polkachu": { @@ -1111,6 +1160,7 @@ ], "0xsquid": "https://testnet.api.squidrouter.com", "nobleValidator": "https://noble-testnet-rpc.polkachu.com/", + "geo": "https://api.dydx.exchange/v4/geo", "faucet": "https://faucet.v4testnet.dydx.exchange" }, "links": { @@ -1123,7 +1173,8 @@ "community": "https://discord.com/invite/dydx", "feedback": "https://docs.google.com/forms/d/e/1FAIpQLSezLsWCKvAYDEb7L-2O4wOON1T56xxro9A2Azvl6IxXHP_15Q/viewform", "blogs": "https://www.dydx.foundation/blog", - "newMarketProposalLearnMore": "https://dydx.exchange/blog/new-market-proposals" + "newMarketProposalLearnMore": "https://dydx.exchange/blog/new-market-proposals", + "withdrawalGateLearnMore": "https://help.dydx.exchange/en/articles/8981384-withdrawals-on-dydx-chain#h_23e97bc665" }, "wallets": { "walletconnect": { @@ -1151,7 +1202,9 @@ } }, "featureFlags": { - "reduceOnlySupported": true + "reduceOnlySupported": true, + "withdrawalSafetyEnabled": true, + "CCTPWithdrawalOnly": true } }, "dydxprotocol-testnet-bware": { @@ -1189,6 +1242,7 @@ ], "0xsquid": "https://testnet.api.squidrouter.com", "nobleValidator": "https://noble-testnet-rpc.polkachu.com/", + "geo": "https://api.dydx.exchange/v4/geo", "faucet": "https://faucet.v4testnet.dydx.exchange" }, "links": { @@ -1210,7 +1264,8 @@ "keplrDashboard": "https://testnet.keplr.app/", "strideZoneApp": "https://testnet.stride.zone", "accountExportLearnmore": "https://help.dydx.exchange", - "walletLearnmore": "https://www.dydx.academy/video/defi-wallet" + "walletLearnmore": "https://www.dydx.academy/video/defi-wallet", + "withdrawalGateLearnMore": "https://help.dydx.exchange/en/articles/8981384-withdrawals-on-dydx-chain#h_23e97bc665" }, "wallets": { "walletconnect": { @@ -1238,7 +1293,9 @@ } }, "featureFlags": { - "reduceOnlySupported": true + "reduceOnlySupported": true, + "withdrawalSafetyEnabled": true, + "CCTPWithdrawalOnly": true } }, "dydxprotocol-mainnet": { @@ -1277,7 +1334,8 @@ "[Validator endpoint n]" ], "0xsquid": "[0xSquid endpoint for mainnet]", - "nobleValidator": "[noble validator endpoint for mainnet]" + "nobleValidator": "[noble validator endpoint for mainnet]", + "geo": "[geo endpoint for mainnet]" }, "links": { "tos": "[HTTP link to TOS]", @@ -1297,7 +1355,8 @@ "keplrDashboard": "[HTTP link to keplr dashboard, can be null]", "strideZoneApp": "[HTTP link to stride zone app, can be null]", "accountExportLearnMore": "[HTTP link to account export learn more, can be null]", - "walletLearnMore": "[HTTP link to wallet learn more, can be null]" + "walletLearnMore": "[HTTP link to wallet learn more, can be null]", + "withdrawalGateLearnMore": "[HTTP link to withdrawal gate learn more, can be null]" }, "wallets": { "walletconnect": { @@ -1325,8 +1384,9 @@ } }, "featureFlags": { - "reduceOnlySupported": false + "reduceOnlySupported": false, + "withdrawalSafetyEnabled": false } } } -} \ No newline at end of file +} diff --git a/public/configs/markets.json b/public/configs/markets.json index 1a3429926..08d7bfcee 100644 --- a/public/configs/markets.json +++ b/public/configs/markets.json @@ -20,6 +20,13 @@ "whitepaperLink": "https://why.cardano.org/en/introduction/motivation/", "coinMarketCapsLink": "https://coinmarketcap.com/currencies/cardano/" }, + "AEVO-USD": { + "name": "Aevo", + "tags": ["Defi"], + "websiteLink": "https://www.aevo.xyz/", + "whitepaperLink": "https://docs.aevo.xyz/aevo-exchange/introduction", + "coinMarketCapsLink": "https://coinmarketcap.com/currencies/aevo/" + }, "AGIX-USD": { "name": "SingularityNET", "tags": ["AI"], @@ -41,6 +48,13 @@ "whitepaperLink": "https://apecoin.com/about", "coinMarketCapsLink": "https://coinmarketcap.com/currencies/apecoin-ape/" }, + "API3-USD": { + "name": "API3", + "tags": [], + "websiteLink": "https://api3.org/", + "whitepaperLink": "https://drive.google.com/file/d/1JMVwk9pkGF7hvjkuu6ABA0-FrhRTzAwF/view", + "coinMarketCapsLink": "https://coinmarketcap.com/currencies/api3/" + }, "APT-USD": { "name": "Aptos", "tags": ["Layer 1"], @@ -50,11 +64,25 @@ }, "ARB-USD": { "name": "Arbitrum", - "tags": [], + "tags": ["Layer 2"], "websiteLink": "https://arbitrum.io/", "whitepaperLink": "https://github.com/OffchainLabs/nitro", "coinMarketCapsLink": "https://coinmarketcap.com/currencies/arbitrum/" }, + "ARKM-USD": { + "name": "Arkham", + "tags": [], + "websiteLink": "https://www.arkhamintelligence.com/", + "whitepaperLink": "https://www.arkhamintelligence.com/whitepaper", + "coinMarketCapsLink": "https://coinmarketcap.com/currencies/arkham/" + }, + "ASTR-USD": { + "name": "Astar", + "tags": ["Layer 2"], + "websiteLink": "https://astar.network/", + "whitepaperLink": "https://docs.astar.network/docs/getting-started", + "coinMarketCapsLink": "https://coinmarketcap.com/currencies/astar/" + }, "ATOM-USD": { "name": "Cosmos", "tags": ["Layer 1"], @@ -69,6 +97,13 @@ "whitepaperLink": "https://assets.website-files.com/5d80307810123f5ffbb34d6e/6008d7bbf8b10d1eb01e7e16_Avalanche%20Platform%20Whitepaper.pdf", "coinMarketCapsLink": "https://coinmarketcap.com/currencies/avalanche/" }, + "AXL-USD": { + "name": "Axelar", + "tags": [], + "websiteLink": "https://axelar.network/", + "whitepaperLink": "https://axelar.network/axelar_whitepaper.pdf", + "coinMarketCapsLink": "https://coinmarketcap.com/currencies/axelar/" + }, "BCH-USD": { "name": "Bitcoin Cash", "tags": ["Layer 1"], @@ -76,9 +111,15 @@ "whitepaperLink": "https://bitcoincash.org/", "coinMarketCapsLink": "https://coinmarketcap.com/currencies/bitcoin-cash/" }, + "BOME-USD": { + "name": "BOOK OF MEME", + "tags": ["Meme"], + "websiteLink": "https://llwapirxnupqu7xw2fspfidormcfar7ek2yp65nu7k5opjwhdywq.arweave.net/WuwHojdtHwp-9tFk8qBuiwRQR-RWsP91tPq656bHHi0", + "coinMarketCapsLink": "https://coinmarketcap.com/currencies/book-of-meme/" + }, "BONK-USD": { "name": "BONK COIN", - "tags": [], + "tags": ["Meme"], "websiteLink": "https://bonkcoin.com/", "whitepaperLink": "https://bonkcoin.com/", "coinMarketCapsLink": "https://coinmarketcap.com/currencies/bonk1/" @@ -135,7 +176,7 @@ }, "DOGE-USD": { "name": "Dogecoin", - "tags": ["Layer 1"], + "tags": ["Layer 1", "Meme"], "websiteLink": "https://dogecoin.com/", "whitepaperLink": "https://github.com/dogecoin/dogecoin", "coinMarketCapsLink": "https://coinmarketcap.com/currencies/dogecoin/" @@ -147,6 +188,12 @@ "whitepaperLink": "https://polkadot.network/PolkaDotPaper.pdf", "coinMarketCapsLink": "https://coinmarketcap.com/currencies/polkadot-new/" }, + "DYDX-USD": { + "name": "dYdX", + "tags": ["Layer 1", "Defi"], + "websiteLink": "https://dydx.exchange/", + "coinMarketCapsLink": "https://coinmarketcap.com/currencies/dydx-chain/" + }, "DYM-USD": { "name": "Dymension", "tags": [], @@ -191,6 +238,13 @@ "displayStepSize": "0.001", "displayTickSize": "0.1" }, + "ETHFI-USD": { + "name": "ether.fi", + "tags": [], + "websiteLink": "https://www.ether.fi/", + "whitepaperLink": "https://etherfi.gitbook.io/etherfi/ether.fi-whitepaper", + "coinMarketCapsLink": "https://coinmarketcap.com/currencies/ether-fi-ethfi/" + }, "FET-USD": { "name": "Fetch.ai", "tags": ["AI"], @@ -205,6 +259,13 @@ "whitepaperLink": "https://filecoin.io/filecoin.pdf", "coinMarketCapsLink": "https://coinmarketcap.com/currencies/filecoin/" }, + "FLR-USD": { + "name": "Flare", + "tags": ["Layer 1"], + "websiteLink": "https://flare.network/", + "whitepaperLink": "https://docs.flare.network/", + "coinMarketCapsLink": "https://coinmarketcap.com/currencies/flare/" + }, "FTM-USD": { "name": "Fantom", "tags": [], @@ -310,6 +371,13 @@ "whitepaperLink": "https://litecoin.info/index.php/Main_Page", "coinMarketCapsLink": "https://coinmarketcap.com/currencies/litecoin/" }, + "MAGIC-USD": { + "name": "MAGIC", + "tags": ["NFT"], + "websiteLink": "https://treasure.lol/", + "whitepaperLink": "https://files.treasure.lol/Treasure+Infinity+Chains+-+Litepaper+v1.0.pdf", + "coinMarketCapsLink": "https://coinmarketcap.com/currencies/magic-token/" + }, "MANA-USD": { "name": "Decentraland", "tags": ["AR/VR"], @@ -331,6 +399,13 @@ "whitepaperLink": "https://polygon.technology/lightpaper-polygon.pdf", "coinMarketCapsLink": "https://coinmarketcap.com/currencies/polygon/" }, + "MEME-USD": { + "name": "Memecoin", + "tags": ["Meme"], + "websiteLink": "https://www.memecoin.org/", + "whitepaperLink": "https://www.memecoin.org/whitepaper", + "coinMarketCapsLink": "https://coinmarketcap.com/currencies/meme/" + }, "MINA-USD": { "name": "Mina", "tags": ["Layer 1"], @@ -352,6 +427,13 @@ "whitepaperLink": "https://near.org/papers/the-official-near-white-paper/", "coinMarketCapsLink": "https://coinmarketcap.com/currencies/near-protocol/" }, + "OCEAN-USD": { + "name": "Ocean Protocol", + "tags": ["AI"], + "websiteLink": "https://oceanprotocol.com/", + "whitepaperLink": "https://oceanprotocol.com/tech-whitepaper.pdf", + "coinMarketCapsLink": "https://coinmarketcap.com/currencies/ocean-protocol/" + }, "ORDI-USD": { "name": "Ordinals", "tags": ["NFT"], @@ -361,17 +443,24 @@ }, "OP-USD": { "name": "Optimism", - "tags": [], + "tags": ["Layer 2"], "websiteLink": "https://www.optimism.io/", "whitepaperLink": "https://github.com/ethereum-optimism", "coinMarketCapsLink": "https://coinmarketcap.com/currencies/optimism-ethereum/" }, "PEPE-USD": { "name": "Pepe", - "tags": [], + "tags": ["Meme"], "websiteLink": "https://www.pepe.vip/", "coinMarketCapsLink": "https://coinmarketcap.com/currencies/pepe/" }, + "PORTAL-USD": { + "name": "PORTAL", + "tags": ["Gaming"], + "websiteLink": "https://www.portalgaming.com/", + "whitepaperLink": "https://portalxyz.nyc3.cdn.digitaloceanspaces.com/Portal_Whitepaper.pdf", + "coinMarketCapsLink": "https://coinmarketcap.com/currencies/portal-gaming/" + }, "PYTH-USD": { "name": "Pyth Network", "tags": [], @@ -409,7 +498,7 @@ }, "SHIB-USD": { "name": "Shiba Inu", - "tags": [], + "tags": ["Meme"], "websiteLink": "https://shibatoken.com/", "whitepaperLink": "https://docs.shibatoken.com/", "coinMarketCapsLink": "https://coinmarketcap.com/currencies/shiba-inu/" @@ -463,6 +552,13 @@ "whitepaperLink": "https://arxiv.org/pdf/1905.09274.pdf", "coinMarketCapsLink": "https://coinmarketcap.com/currencies/celestia/" }, + "TON-USD": { + "name": "Toncoin", + "tags": ["Layer 1"], + "websiteLink": "https://ton.org/", + "whitepaperLink": "https://ton.org/whitepaper.pdf", + "coinMarketCapsLink": "https://coinmarketcap.com/currencies/toncoin/" + }, "TRX-USD": { "name": "TRON", "tags": ["Defi"], @@ -484,13 +580,19 @@ "whitepaperLink": "https://uniswap.org/whitepaper-v3.pdf", "coinMarketCapsLink": "https://coinmarketcap.com/currencies/uniswap/" }, + "WIF-USD": { + "name": "dogwifhat", + "tags": ["Meme"], + "websiteLink": "https://dogwifcoin.org/", + "coinMarketCapsLink": "https://coinmarketcap.com/currencies/dogwifhat/" + }, "WLD-USD": { "name": "Worldcoin", "tags": [], "websiteLink": "https://worldcoin.org/", "whitepaperLink": "https://whitepaper.worldcoin.org/", "coinMarketCapsLink": "https://coinmarketcap.com/currencies/worldcoin-org/" - }, + }, "WOO-USD": { "name": "WOO Network", "tags": ["Defi"], diff --git a/public/configs/otherMarketData.json b/public/configs/otherMarketData.json new file mode 100644 index 000000000..4e311150b --- /dev/null +++ b/public/configs/otherMarketData.json @@ -0,0 +1,4692 @@ +{ + "BNB": { + "title": "Add BNB-USD perpetual market", + "summary": "Add the x/prices, x/perpetuals and x/clob parameters needed for a BNB-USD perpetual market. Create the market in INITIALIZING status and transition it to ACTIVE status after 3600 blocks. Added via the new market widget.", + "params": { + "id": 2, + "ticker": "BNB-USD", + "marketType": "PERPETUAL_MARKET_TYPE_CROSS", + "priceExponent": -7.0, + "minPriceChange": 4000, + "minExchanges": 3, + "exchangeConfigJson": [ + { + "exchangeName": "Binance", + "ticker": "BNBUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Bybit", + "ticker": "BNBUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Gate", + "ticker": "BNB_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Huobi", + "ticker": "bnbusdt", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Kucoin", + "ticker": "BNB-USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Mexc", + "ticker": "BNB_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Okx", + "ticker": "BNB-USDT", + "adjustByMarket": "USDT-USD" + } + ], + "liquidityTier": 2, + "atomicResolution": -8.0, + "quantumConversionExponent": -9, + "defaultFundingPpm": 0, + "stepBaseQuantums": 1000000, + "subticksPerTick": 1000000, + "delayBlocks": 3600 + }, + "initialDeposit": { + "denom": "adydx", + "amount": "10000000000000000000000" + }, + "meta": { + "assetName": "BNB", + "referencePrice": 569.4292213639478 + } + }, + "SOL": { + "title": "Add SOL-USD perpetual market", + "summary": "Add the x/prices, x/perpetuals and x/clob parameters needed for a SOL-USD perpetual market. Create the market in INITIALIZING status and transition it to ACTIVE status after 3600 blocks. Added via the new market widget.", + "params": { + "id": 3, + "ticker": "SOL-USD", + "marketType": "PERPETUAL_MARKET_TYPE_CROSS", + "priceExponent": -7.0, + "minPriceChange": 2500, + "minExchanges": 3, + "exchangeConfigJson": [ + { + "exchangeName": "Binance", + "ticker": "SOLUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Bitstamp", + "ticker": "SOL/USD" + }, + { + "exchangeName": "Bybit", + "ticker": "SOLUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "CoinbasePro", + "ticker": "SOL-USD" + }, + { + "exchangeName": "Huobi", + "ticker": "solusdt", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Kraken", + "ticker": "SOLUSD" + }, + { + "exchangeName": "Kucoin", + "ticker": "SOL-USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Mexc", + "ticker": "SOL_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Okx", + "ticker": "SOL-USDT", + "adjustByMarket": "USDT-USD" + } + ], + "liquidityTier": 1, + "atomicResolution": -8.0, + "quantumConversionExponent": -9, + "defaultFundingPpm": 0, + "stepBaseQuantums": 1000000, + "subticksPerTick": 1000000, + "delayBlocks": 3600 + }, + "initialDeposit": { + "denom": "adydx", + "amount": "10000000000000000000000" + }, + "meta": { + "assetName": "Solana", + "referencePrice": 140.0695815613181 + } + }, + "TON": { + "title": "Add TON-USD perpetual market", + "summary": "Add the x/prices, x/perpetuals and x/clob parameters needed for a TON-USD perpetual market. Create the market in INITIALIZING status and transition it to ACTIVE status after 3600 blocks. Added via the new market widget.", + "params": { + "id": 6, + "ticker": "TON-USD", + "marketType": "PERPETUAL_MARKET_TYPE_CROSS", + "priceExponent": -9.0, + "minPriceChange": 2500, + "minExchanges": 3, + "exchangeConfigJson": [ + { + "exchangeName": "Bybit", + "ticker": "TONUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Gate", + "ticker": "TON_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Huobi", + "ticker": "tonusdt", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Kucoin", + "ticker": "TON-USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Mexc", + "ticker": "TON_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Okx", + "ticker": "TON-USDT", + "adjustByMarket": "USDT-USD" + } + ], + "liquidityTier": 1, + "atomicResolution": -6.0, + "quantumConversionExponent": -9, + "defaultFundingPpm": 0, + "stepBaseQuantums": 1000000, + "subticksPerTick": 1000000, + "delayBlocks": 3600 + }, + "initialDeposit": { + "denom": "adydx", + "amount": "10000000000000000000000" + }, + "meta": { + "assetName": "Toncoin", + "referencePrice": 5.398017199773806 + } + }, + "ADA": { + "title": "Add ADA-USD perpetual market", + "summary": "Add the x/prices, x/perpetuals and x/clob parameters needed for a ADA-USD perpetual market. Create the market in INITIALIZING status and transition it to ACTIVE status after 3600 blocks. Added via the new market widget.", + "params": { + "id": 7, + "ticker": "ADA-USD", + "marketType": "PERPETUAL_MARKET_TYPE_CROSS", + "priceExponent": -10.0, + "minPriceChange": 2500, + "minExchanges": 3, + "exchangeConfigJson": [ + { + "exchangeName": "Binance", + "ticker": "ADAUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Bitstamp", + "ticker": "ADA/USD" + }, + { + "exchangeName": "Bybit", + "ticker": "ADAUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "CoinbasePro", + "ticker": "ADA-USD" + }, + { + "exchangeName": "Huobi", + "ticker": "adausdt", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Kraken", + "ticker": "ADAUSD" + }, + { + "exchangeName": "Kucoin", + "ticker": "ADA-USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Mexc", + "ticker": "ADA_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Okx", + "ticker": "ADA-USDT", + "adjustByMarket": "USDT-USD" + } + ], + "liquidityTier": 1, + "atomicResolution": -5.0, + "quantumConversionExponent": -9, + "defaultFundingPpm": 0, + "stepBaseQuantums": 1000000, + "subticksPerTick": 1000000, + "delayBlocks": 3600 + }, + "initialDeposit": { + "denom": "adydx", + "amount": "10000000000000000000000" + }, + "meta": { + "assetName": "Cardano", + "referencePrice": 0.45843945043506734 + } + }, + "SHIB": { + "title": "Add SHIB-USD perpetual market", + "summary": "Add the x/prices, x/perpetuals and x/clob parameters needed for a SHIB-USD perpetual market. Create the market in INITIALIZING status and transition it to ACTIVE status after 3600 blocks. Added via the new market widget.", + "params": { + "id": 8, + "ticker": "SHIB-USD", + "marketType": "PERPETUAL_MARKET_TYPE_CROSS", + "priceExponent": -14.0, + "minPriceChange": 2500, + "minExchanges": 3, + "exchangeConfigJson": [ + { + "exchangeName": "Binance", + "ticker": "SHIBUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Bitstamp", + "ticker": "SHIB/USD" + }, + { + "exchangeName": "Bybit", + "ticker": "SHIBUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "CoinbasePro", + "ticker": "SHIB-USD" + }, + { + "exchangeName": "Huobi", + "ticker": "shibusdt", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Kraken", + "ticker": "SHIBUSD" + }, + { + "exchangeName": "Kucoin", + "ticker": "SHIB-USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Mexc", + "ticker": "SHIB_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Okx", + "ticker": "SHIB-USDT", + "adjustByMarket": "USDT-USD" + } + ], + "liquidityTier": 1, + "atomicResolution": -1.0, + "quantumConversionExponent": -9, + "defaultFundingPpm": 0, + "stepBaseQuantums": 1000000, + "subticksPerTick": 1000000, + "delayBlocks": 3600 + }, + "initialDeposit": { + "denom": "adydx", + "amount": "10000000000000000000000" + }, + "meta": { + "assetName": "Shiba Inu", + "referencePrice": 2.3375234454638113e-05 + } + }, + "AVAX": { + "title": "Add AVAX-USD perpetual market", + "summary": "Add the x/prices, x/perpetuals and x/clob parameters needed for a AVAX-USD perpetual market. Create the market in INITIALIZING status and transition it to ACTIVE status after 3600 blocks. Added via the new market widget.", + "params": { + "id": 9, + "ticker": "AVAX-USD", + "marketType": "PERPETUAL_MARKET_TYPE_CROSS", + "priceExponent": -8.0, + "minPriceChange": 2500, + "minExchanges": 3, + "exchangeConfigJson": [ + { + "exchangeName": "Binance", + "ticker": "AVAXUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Bitstamp", + "ticker": "AVAX/USD" + }, + { + "exchangeName": "Bybit", + "ticker": "AVAXUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "CoinbasePro", + "ticker": "AVAX-USD" + }, + { + "exchangeName": "Huobi", + "ticker": "avaxusdt", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Kraken", + "ticker": "AVAXUSD" + }, + { + "exchangeName": "Kucoin", + "ticker": "AVAX-USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Mexc", + "ticker": "AVAX_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Okx", + "ticker": "AVAX-USDT", + "adjustByMarket": "USDT-USD" + } + ], + "liquidityTier": 1, + "atomicResolution": -7.0, + "quantumConversionExponent": -9, + "defaultFundingPpm": 0, + "stepBaseQuantums": 1000000, + "subticksPerTick": 1000000, + "delayBlocks": 3600 + }, + "initialDeposit": { + "denom": "adydx", + "amount": "10000000000000000000000" + }, + "meta": { + "assetName": "Avalanche", + "referencePrice": 34.30079483175494 + } + }, + "TRX": { + "title": "Add TRX-USD perpetual market", + "summary": "Add the x/prices, x/perpetuals and x/clob parameters needed for a TRX-USD perpetual market. Create the market in INITIALIZING status and transition it to ACTIVE status after 3600 blocks. Added via the new market widget.", + "params": { + "id": 10, + "ticker": "TRX-USD", + "marketType": "PERPETUAL_MARKET_TYPE_CROSS", + "priceExponent": -10.0, + "minPriceChange": 2500, + "minExchanges": 3, + "exchangeConfigJson": [ + { + "exchangeName": "Binance", + "ticker": "TRXUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Bybit", + "ticker": "TRXUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Gate", + "ticker": "TRX_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Huobi", + "ticker": "trxusdt", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Kraken", + "ticker": "TRXUSD" + }, + { + "exchangeName": "Kucoin", + "ticker": "TRX-USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Mexc", + "ticker": "TRX_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Okx", + "ticker": "TRX-USDT", + "adjustByMarket": "USDT-USD" + } + ], + "liquidityTier": 1, + "atomicResolution": -5.0, + "quantumConversionExponent": -9, + "defaultFundingPpm": 0, + "stepBaseQuantums": 1000000, + "subticksPerTick": 1000000, + "delayBlocks": 3600 + }, + "initialDeposit": { + "denom": "adydx", + "amount": "10000000000000000000000" + }, + "meta": { + "assetName": "TRON", + "referencePrice": 0.12269761322340017 + } + }, + "DOT": { + "title": "Add DOT-USD perpetual market", + "summary": "Add the x/prices, x/perpetuals and x/clob parameters needed for a DOT-USD perpetual market. Create the market in INITIALIZING status and transition it to ACTIVE status after 3600 blocks. Added via the new market widget.", + "params": { + "id": 11, + "ticker": "DOT-USD", + "marketType": "PERPETUAL_MARKET_TYPE_CROSS", + "priceExponent": -9.0, + "minPriceChange": 2500, + "minExchanges": 3, + "exchangeConfigJson": [ + { + "exchangeName": "Binance", + "ticker": "DOTUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Bitstamp", + "ticker": "DOT/USD" + }, + { + "exchangeName": "Bybit", + "ticker": "DOTUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "CoinbasePro", + "ticker": "DOT-USD" + }, + { + "exchangeName": "Huobi", + "ticker": "dotusdt", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Kraken", + "ticker": "DOTUSD" + }, + { + "exchangeName": "Kucoin", + "ticker": "DOT-USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Mexc", + "ticker": "DOT_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Okx", + "ticker": "DOT-USDT", + "adjustByMarket": "USDT-USD" + } + ], + "liquidityTier": 1, + "atomicResolution": -6.0, + "quantumConversionExponent": -9, + "defaultFundingPpm": 0, + "stepBaseQuantums": 1000000, + "subticksPerTick": 1000000, + "delayBlocks": 3600 + }, + "initialDeposit": { + "denom": "adydx", + "amount": "10000000000000000000000" + }, + "meta": { + "assetName": "Polkadot", + "referencePrice": 7.192690961603802 + } + }, + "BCH": { + "title": "Add BCH-USD perpetual market", + "summary": "Add the x/prices, x/perpetuals and x/clob parameters needed for a BCH-USD perpetual market. Create the market in INITIALIZING status and transition it to ACTIVE status after 3600 blocks. Added via the new market widget.", + "params": { + "id": 12, + "ticker": "BCH-USD", + "marketType": "PERPETUAL_MARKET_TYPE_CROSS", + "priceExponent": -7.0, + "minPriceChange": 2500, + "minExchanges": 3, + "exchangeConfigJson": [ + { + "exchangeName": "Binance", + "ticker": "BCHUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Bitstamp", + "ticker": "BCH/USD" + }, + { + "exchangeName": "Bybit", + "ticker": "BCHUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "CoinbasePro", + "ticker": "BCH-USD" + }, + { + "exchangeName": "Huobi", + "ticker": "bchusdt", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Kraken", + "ticker": "BCHUSD" + }, + { + "exchangeName": "Kucoin", + "ticker": "BCH-USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Mexc", + "ticker": "BCH_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Okx", + "ticker": "BCH-USDT", + "adjustByMarket": "USDT-USD" + } + ], + "liquidityTier": 1, + "atomicResolution": -8.0, + "quantumConversionExponent": -9, + "defaultFundingPpm": 0, + "stepBaseQuantums": 1000000, + "subticksPerTick": 1000000, + "delayBlocks": 3600 + }, + "initialDeposit": { + "denom": "adydx", + "amount": "10000000000000000000000" + }, + "meta": { + "assetName": "Bitcoin Cash", + "referencePrice": 440.3540174612563 + } + }, + "LINK": { + "title": "Add LINK-USD perpetual market", + "summary": "Add the x/prices, x/perpetuals and x/clob parameters needed for a LINK-USD perpetual market. Create the market in INITIALIZING status and transition it to ACTIVE status after 3600 blocks. Added via the new market widget.", + "params": { + "id": 13, + "ticker": "LINK-USD", + "marketType": "PERPETUAL_MARKET_TYPE_CROSS", + "priceExponent": -8.0, + "minPriceChange": 2500, + "minExchanges": 3, + "exchangeConfigJson": [ + { + "exchangeName": "Binance", + "ticker": "LINKUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Bitstamp", + "ticker": "LINK/USD" + }, + { + "exchangeName": "Bybit", + "ticker": "LINKUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "CoinbasePro", + "ticker": "LINK-USD" + }, + { + "exchangeName": "Huobi", + "ticker": "linkusdt", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Kraken", + "ticker": "LINKUSD" + }, + { + "exchangeName": "Kucoin", + "ticker": "LINK-USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Mexc", + "ticker": "LINK_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Okx", + "ticker": "LINK-USDT", + "adjustByMarket": "USDT-USD" + } + ], + "liquidityTier": 1, + "atomicResolution": -7.0, + "quantumConversionExponent": -9, + "defaultFundingPpm": 0, + "stepBaseQuantums": 1000000, + "subticksPerTick": 1000000, + "delayBlocks": 3600 + }, + "initialDeposit": { + "denom": "adydx", + "amount": "10000000000000000000000" + }, + "meta": { + "assetName": "Chainlink", + "referencePrice": 13.740392173852204 + } + }, + "NEAR": { + "title": "Add NEAR-USD perpetual market", + "summary": "Add the x/prices, x/perpetuals and x/clob parameters needed for a NEAR-USD perpetual market. Create the market in INITIALIZING status and transition it to ACTIVE status after 3600 blocks. Added via the new market widget.", + "params": { + "id": 14, + "ticker": "NEAR-USD", + "marketType": "PERPETUAL_MARKET_TYPE_CROSS", + "priceExponent": -9.0, + "minPriceChange": 4000, + "minExchanges": 3, + "exchangeConfigJson": [ + { + "exchangeName": "Binance", + "ticker": "NEARUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Bybit", + "ticker": "NEARUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "CoinbasePro", + "ticker": "NEAR-USD" + }, + { + "exchangeName": "Kraken", + "ticker": "NEARUSD" + }, + { + "exchangeName": "Kucoin", + "ticker": "NEAR-USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Mexc", + "ticker": "NEAR_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Okx", + "ticker": "NEAR-USDT", + "adjustByMarket": "USDT-USD" + } + ], + "liquidityTier": 2, + "atomicResolution": -6.0, + "quantumConversionExponent": -9, + "defaultFundingPpm": 0, + "stepBaseQuantums": 1000000, + "subticksPerTick": 1000000, + "delayBlocks": 3600 + }, + "initialDeposit": { + "denom": "adydx", + "amount": "10000000000000000000000" + }, + "meta": { + "assetName": "NEAR Protocol", + "referencePrice": 6.401351018238966 + } + }, + "MATIC": { + "title": "Add MATIC-USD perpetual market", + "summary": "Add the x/prices, x/perpetuals and x/clob parameters needed for a MATIC-USD perpetual market. Create the market in INITIALIZING status and transition it to ACTIVE status after 3600 blocks. Added via the new market widget.", + "params": { + "id": 15, + "ticker": "MATIC-USD", + "marketType": "PERPETUAL_MARKET_TYPE_CROSS", + "priceExponent": -10.0, + "minPriceChange": 2500, + "minExchanges": 3, + "exchangeConfigJson": [ + { + "exchangeName": "Binance", + "ticker": "MATICUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Bitstamp", + "ticker": "MATIC/USD" + }, + { + "exchangeName": "Bybit", + "ticker": "MATICUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "CoinbasePro", + "ticker": "MATIC-USD" + }, + { + "exchangeName": "Huobi", + "ticker": "maticusdt", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Kraken", + "ticker": "MATICUSD" + }, + { + "exchangeName": "Kucoin", + "ticker": "MATIC-USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Mexc", + "ticker": "MATIC_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Okx", + "ticker": "MATIC-USDT", + "adjustByMarket": "USDT-USD" + } + ], + "liquidityTier": 1, + "atomicResolution": -5.0, + "quantumConversionExponent": -9, + "defaultFundingPpm": 0, + "stepBaseQuantums": 1000000, + "subticksPerTick": 1000000, + "delayBlocks": 3600 + }, + "initialDeposit": { + "denom": "adydx", + "amount": "10000000000000000000000" + }, + "meta": { + "assetName": "Polygon", + "referencePrice": 0.7250861858190705 + } + }, + "ICP": { + "title": "Add ICP-USD perpetual market", + "summary": "Add the x/prices, x/perpetuals and x/clob parameters needed for a ICP-USD perpetual market. Create the market in INITIALIZING status and transition it to ACTIVE status after 3600 blocks. Added via the new market widget.", + "params": { + "id": 16, + "ticker": "ICP-USD", + "marketType": "PERPETUAL_MARKET_TYPE_CROSS", + "priceExponent": -8.0, + "minPriceChange": 4000, + "minExchanges": 3, + "exchangeConfigJson": [ + { + "exchangeName": "Binance", + "ticker": "ICPUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Bybit", + "ticker": "ICPUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "CoinbasePro", + "ticker": "ICP-USD" + }, + { + "exchangeName": "Kraken", + "ticker": "ICPUSD" + }, + { + "exchangeName": "Kucoin", + "ticker": "ICP-USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Mexc", + "ticker": "ICP_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Okx", + "ticker": "ICP-USDT", + "adjustByMarket": "USDT-USD" + } + ], + "liquidityTier": 2, + "atomicResolution": -7.0, + "quantumConversionExponent": -9, + "defaultFundingPpm": 0, + "stepBaseQuantums": 1000000, + "subticksPerTick": 1000000, + "delayBlocks": 3600 + }, + "initialDeposit": { + "denom": "adydx", + "amount": "10000000000000000000000" + }, + "meta": { + "assetName": "Internet Computer", + "referencePrice": 13.461883080028814 + } + }, + "DAI": { + "title": "Add DAI-USD perpetual market", + "summary": "Add the x/prices, x/perpetuals and x/clob parameters needed for a DAI-USD perpetual market. Create the market in INITIALIZING status and transition it to ACTIVE status after 3600 blocks. Added via the new market widget.", + "params": { + "id": 18, + "ticker": "DAI-USD", + "marketType": "PERPETUAL_MARKET_TYPE_CROSS", + "priceExponent": -10.0, + "minPriceChange": 4000, + "minExchanges": 3, + "exchangeConfigJson": [ + { + "exchangeName": "Bybit", + "ticker": "DAIUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "CoinbasePro", + "ticker": "DAI-USD" + }, + { + "exchangeName": "Huobi", + "ticker": "daiusdt", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Kraken", + "ticker": "DAIUSD" + }, + { + "exchangeName": "Mexc", + "ticker": "DAI_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Okx", + "ticker": "DAI-USDT", + "adjustByMarket": "USDT-USD" + } + ], + "liquidityTier": 2, + "atomicResolution": -5.0, + "quantumConversionExponent": -9, + "defaultFundingPpm": 0, + "stepBaseQuantums": 1000000, + "subticksPerTick": 1000000, + "delayBlocks": 3600 + }, + "initialDeposit": { + "denom": "adydx", + "amount": "10000000000000000000000" + }, + "meta": { + "assetName": "Dai", + "referencePrice": 0.999973292519322 + } + }, + "UNI": { + "title": "Add UNI-USD perpetual market", + "summary": "Add the x/prices, x/perpetuals and x/clob parameters needed for a UNI-USD perpetual market. Create the market in INITIALIZING status and transition it to ACTIVE status after 3600 blocks. Added via the new market widget.", + "params": { + "id": 19, + "ticker": "UNI-USD", + "marketType": "PERPETUAL_MARKET_TYPE_CROSS", + "priceExponent": -9.0, + "minPriceChange": 2500, + "minExchanges": 3, + "exchangeConfigJson": [ + { + "exchangeName": "Binance", + "ticker": "UNIUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Bitstamp", + "ticker": "UNI/USD" + }, + { + "exchangeName": "Bybit", + "ticker": "UNIUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "CoinbasePro", + "ticker": "UNI-USD" + }, + { + "exchangeName": "Huobi", + "ticker": "uniusdt", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Kraken", + "ticker": "UNIUSD" + }, + { + "exchangeName": "Kucoin", + "ticker": "UNI-USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Mexc", + "ticker": "UNI_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Okx", + "ticker": "UNI-USDT", + "adjustByMarket": "USDT-USD" + } + ], + "liquidityTier": 1, + "atomicResolution": -6.0, + "quantumConversionExponent": -9, + "defaultFundingPpm": 0, + "stepBaseQuantums": 1000000, + "subticksPerTick": 1000000, + "delayBlocks": 3600 + }, + "initialDeposit": { + "denom": "adydx", + "amount": "10000000000000000000000" + }, + "meta": { + "assetName": "Uniswap", + "referencePrice": 7.192308868501533 + } + }, + "HBAR": { + "title": "Add HBAR-USD perpetual market", + "summary": "Add the x/prices, x/perpetuals and x/clob parameters needed for a HBAR-USD perpetual market. Create the market in INITIALIZING status and transition it to ACTIVE status after 3600 blocks. Added via the new market widget.", + "params": { + "id": 20, + "ticker": "HBAR-USD", + "marketType": "PERPETUAL_MARKET_TYPE_CROSS", + "priceExponent": -10.0, + "minPriceChange": 4000, + "minExchanges": 3, + "exchangeConfigJson": [ + { + "exchangeName": "Binance", + "ticker": "HBARUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Bybit", + "ticker": "HBARUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "CoinbasePro", + "ticker": "HBAR-USD" + }, + { + "exchangeName": "Kucoin", + "ticker": "HBAR-USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Mexc", + "ticker": "HBAR_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Okx", + "ticker": "HBAR-USDT", + "adjustByMarket": "USDT-USD" + } + ], + "liquidityTier": 2, + "atomicResolution": -5.0, + "quantumConversionExponent": -9, + "defaultFundingPpm": 0, + "stepBaseQuantums": 1000000, + "subticksPerTick": 1000000, + "delayBlocks": 3600 + }, + "initialDeposit": { + "denom": "adydx", + "amount": "10000000000000000000000" + }, + "meta": { + "assetName": "Hedera", + "referencePrice": 0.10622961548367621 + } + }, + "APT": { + "title": "Add APT-USD perpetual market", + "summary": "Add the x/prices, x/perpetuals and x/clob parameters needed for a APT-USD perpetual market. Create the market in INITIALIZING status and transition it to ACTIVE status after 3600 blocks. Added via the new market widget.", + "params": { + "id": 22, + "ticker": "APT-USD", + "marketType": "PERPETUAL_MARKET_TYPE_CROSS", + "priceExponent": -9.0, + "minPriceChange": 2500, + "minExchanges": 3, + "exchangeConfigJson": [ + { + "exchangeName": "Binance", + "ticker": "APTUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Bybit", + "ticker": "APTUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "CoinbasePro", + "ticker": "APT-USD" + }, + { + "exchangeName": "Gate", + "ticker": "APT_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Huobi", + "ticker": "aptusdt", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Kraken", + "ticker": "APTUSD" + }, + { + "exchangeName": "Kucoin", + "ticker": "APT-USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Mexc", + "ticker": "APT_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Okx", + "ticker": "APT-USDT", + "adjustByMarket": "USDT-USD" + } + ], + "liquidityTier": 1, + "atomicResolution": -6.0, + "quantumConversionExponent": -9, + "defaultFundingPpm": 0, + "stepBaseQuantums": 1000000, + "subticksPerTick": 1000000, + "delayBlocks": 3600 + }, + "initialDeposit": { + "denom": "adydx", + "amount": "10000000000000000000000" + }, + "meta": { + "assetName": "Aptos", + "referencePrice": 8.99553250384946 + } + }, + "ATOM": { + "title": "Add ATOM-USD perpetual market", + "summary": "Add the x/prices, x/perpetuals and x/clob parameters needed for a ATOM-USD perpetual market. Create the market in INITIALIZING status and transition it to ACTIVE status after 3600 blocks. Added via the new market widget.", + "params": { + "id": 23, + "ticker": "ATOM-USD", + "marketType": "PERPETUAL_MARKET_TYPE_CROSS", + "priceExponent": -9.0, + "minPriceChange": 2500, + "minExchanges": 3, + "exchangeConfigJson": [ + { + "exchangeName": "Binance", + "ticker": "ATOMUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Bybit", + "ticker": "ATOMUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "CoinbasePro", + "ticker": "ATOM-USD" + }, + { + "exchangeName": "Gate", + "ticker": "ATOM_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Huobi", + "ticker": "atomusdt", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Kraken", + "ticker": "ATOMUSD" + }, + { + "exchangeName": "Kucoin", + "ticker": "ATOM-USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Mexc", + "ticker": "ATOM_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Okx", + "ticker": "ATOM-USDT", + "adjustByMarket": "USDT-USD" + } + ], + "liquidityTier": 1, + "atomicResolution": -6.0, + "quantumConversionExponent": -9, + "defaultFundingPpm": 0, + "stepBaseQuantums": 1000000, + "subticksPerTick": 1000000, + "delayBlocks": 3600 + }, + "initialDeposit": { + "denom": "adydx", + "amount": "10000000000000000000000" + }, + "meta": { + "assetName": "Cosmos", + "referencePrice": 8.715811388666577 + } + }, + "PEPE": { + "title": "Add PEPE-USD perpetual market", + "summary": "Add the x/prices, x/perpetuals and x/clob parameters needed for a PEPE-USD perpetual market. Create the market in INITIALIZING status and transition it to ACTIVE status after 3600 blocks. Added via the new market widget.", + "params": { + "id": 24, + "ticker": "PEPE-USD", + "marketType": "PERPETUAL_MARKET_TYPE_CROSS", + "priceExponent": -15.0, + "minPriceChange": 4000, + "minExchanges": 3, + "exchangeConfigJson": [ + { + "exchangeName": "Binance", + "ticker": "PEPEUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Bybit", + "ticker": "PEPEUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Huobi", + "ticker": "pepeusdt", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Kraken", + "ticker": "PEPEUSD" + }, + { + "exchangeName": "Kucoin", + "ticker": "PEPE-USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Mexc", + "ticker": "PEPE_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Okx", + "ticker": "PEPE-USDT", + "adjustByMarket": "USDT-USD" + } + ], + "liquidityTier": 2, + "atomicResolution": 0.0, + "quantumConversionExponent": -9, + "defaultFundingPpm": 0, + "stepBaseQuantums": 1000000, + "subticksPerTick": 1000000, + "delayBlocks": 3600 + }, + "initialDeposit": { + "denom": "adydx", + "amount": "10000000000000000000000" + }, + "meta": { + "assetName": "Pepe", + "referencePrice": 7.850448996650624e-06 + } + }, + "FIL": { + "title": "Add FIL-USD perpetual market", + "summary": "Add the x/prices, x/perpetuals and x/clob parameters needed for a FIL-USD perpetual market. Create the market in INITIALIZING status and transition it to ACTIVE status after 3600 blocks. Added via the new market widget.", + "params": { + "id": 25, + "ticker": "FIL-USD", + "marketType": "PERPETUAL_MARKET_TYPE_CROSS", + "priceExponent": -9.0, + "minPriceChange": 2500, + "minExchanges": 3, + "exchangeConfigJson": [ + { + "exchangeName": "Binance", + "ticker": "FILUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Bybit", + "ticker": "FILUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "CoinbasePro", + "ticker": "FIL-USD" + }, + { + "exchangeName": "Huobi", + "ticker": "filusdt", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Kraken", + "ticker": "FILUSD" + }, + { + "exchangeName": "Kucoin", + "ticker": "FIL-USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Mexc", + "ticker": "FIL_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Okx", + "ticker": "FIL-USDT", + "adjustByMarket": "USDT-USD" + } + ], + "liquidityTier": 1, + "atomicResolution": -6.0, + "quantumConversionExponent": -9, + "defaultFundingPpm": 0, + "stepBaseQuantums": 1000000, + "subticksPerTick": 1000000, + "delayBlocks": 3600 + }, + "initialDeposit": { + "denom": "adydx", + "amount": "10000000000000000000000" + }, + "meta": { + "assetName": "Filecoin", + "referencePrice": 5.965447897886074 + } + }, + "IMX": { + "title": "Add IMX-USD perpetual market", + "summary": "Add the x/prices, x/perpetuals and x/clob parameters needed for a IMX-USD perpetual market. Create the market in INITIALIZING status and transition it to ACTIVE status after 3600 blocks. Added via the new market widget.", + "params": { + "id": 26, + "ticker": "IMX-USD", + "marketType": "PERPETUAL_MARKET_TYPE_CROSS", + "priceExponent": -9.0, + "minPriceChange": 4000, + "minExchanges": 3, + "exchangeConfigJson": [ + { + "exchangeName": "Binance", + "ticker": "IMXUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "CoinbasePro", + "ticker": "IMX-USD" + }, + { + "exchangeName": "Kraken", + "ticker": "IMXUSD" + }, + { + "exchangeName": "Kucoin", + "ticker": "IMX-USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Mexc", + "ticker": "IMX_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Okx", + "ticker": "IMX-USDT", + "adjustByMarket": "USDT-USD" + } + ], + "liquidityTier": 2, + "atomicResolution": -6.0, + "quantumConversionExponent": -9, + "defaultFundingPpm": 0, + "stepBaseQuantums": 1000000, + "subticksPerTick": 1000000, + "delayBlocks": 3600 + }, + "initialDeposit": { + "denom": "adydx", + "amount": "10000000000000000000000" + }, + "meta": { + "assetName": "Immutable", + "referencePrice": 2.239870415647921 + } + }, + "STX": { + "title": "Add STX-USD perpetual market", + "summary": "Add the x/prices, x/perpetuals and x/clob parameters needed for a STX-USD perpetual market. Create the market in INITIALIZING status and transition it to ACTIVE status after 3600 blocks. Added via the new market widget.", + "params": { + "id": 27, + "ticker": "STX-USD", + "marketType": "PERPETUAL_MARKET_TYPE_CROSS", + "priceExponent": -9.0, + "minPriceChange": 2500, + "minExchanges": 3, + "exchangeConfigJson": [ + { + "exchangeName": "Binance", + "ticker": "STXUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Bybit", + "ticker": "STXUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "CoinbasePro", + "ticker": "STX-USD" + }, + { + "exchangeName": "Gate", + "ticker": "STX_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Kraken", + "ticker": "STXUSD" + }, + { + "exchangeName": "Kucoin", + "ticker": "STX-USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Mexc", + "ticker": "STX_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Okx", + "ticker": "STX-USDT", + "adjustByMarket": "USDT-USD" + } + ], + "liquidityTier": 1, + "atomicResolution": -6.0, + "quantumConversionExponent": -9, + "defaultFundingPpm": 0, + "stepBaseQuantums": 1000000, + "subticksPerTick": 1000000, + "delayBlocks": 3600 + }, + "initialDeposit": { + "denom": "adydx", + "amount": "10000000000000000000000" + }, + "meta": { + "assetName": "Stacks", + "referencePrice": 2.1246991809215925 + } + }, + "RNDR": { + "title": "Add RNDR-USD perpetual market", + "summary": "Add the x/prices, x/perpetuals and x/clob parameters needed for a RNDR-USD perpetual market. Create the market in INITIALIZING status and transition it to ACTIVE status after 3600 blocks. Added via the new market widget.", + "params": { + "id": 29, + "ticker": "RNDR-USD", + "marketType": "PERPETUAL_MARKET_TYPE_CROSS", + "priceExponent": -9.0, + "minPriceChange": 4000, + "minExchanges": 3, + "exchangeConfigJson": [ + { + "exchangeName": "Binance", + "ticker": "RNDRUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Bybit", + "ticker": "RNDRUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "CoinbasePro", + "ticker": "RNDR-USD" + }, + { + "exchangeName": "Kraken", + "ticker": "RNDRUSD" + }, + { + "exchangeName": "Kucoin", + "ticker": "RNDR-USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Mexc", + "ticker": "RNDR_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Okx", + "ticker": "RNDR-USDT", + "adjustByMarket": "USDT-USD" + } + ], + "liquidityTier": 2, + "atomicResolution": -6.0, + "quantumConversionExponent": -9, + "defaultFundingPpm": 0, + "stepBaseQuantums": 1000000, + "subticksPerTick": 1000000, + "delayBlocks": 3600 + }, + "initialDeposit": { + "denom": "adydx", + "amount": "10000000000000000000000" + }, + "meta": { + "assetName": "Render", + "referencePrice": 7.915418042813452 + } + }, + "WIF": { + "title": "Add WIF-USD perpetual market", + "summary": "Add the x/prices, x/perpetuals and x/clob parameters needed for a WIF-USD perpetual market. Create the market in INITIALIZING status and transition it to ACTIVE status after 3600 blocks. Added via the new market widget.", + "params": { + "id": 30, + "ticker": "WIF-USD", + "marketType": "PERPETUAL_MARKET_TYPE_CROSS", + "priceExponent": -9.0, + "minPriceChange": 2500, + "minExchanges": 3, + "exchangeConfigJson": [ + { + "exchangeName": "Binance", + "ticker": "WIFUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Bybit", + "ticker": "WIFUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Gate", + "ticker": "WIF_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Huobi", + "ticker": "wifusdt", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Kraken", + "ticker": "WIFUSD" + }, + { + "exchangeName": "Kucoin", + "ticker": "WIF-USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Mexc", + "ticker": "WIF_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Okx", + "ticker": "WIF-USDT", + "adjustByMarket": "USDT-USD" + } + ], + "liquidityTier": 1, + "atomicResolution": -6.0, + "quantumConversionExponent": -9, + "defaultFundingPpm": 0, + "stepBaseQuantums": 1000000, + "subticksPerTick": 1000000, + "delayBlocks": 3600 + }, + "initialDeposit": { + "denom": "adydx", + "amount": "10000000000000000000000" + }, + "meta": { + "assetName": "dogwifhat", + "referencePrice": 2.8554676486670507 + } + }, + "OP": { + "title": "Add OP-USD perpetual market", + "summary": "Add the x/prices, x/perpetuals and x/clob parameters needed for a OP-USD perpetual market. Create the market in INITIALIZING status and transition it to ACTIVE status after 3600 blocks. Added via the new market widget.", + "params": { + "id": 31, + "ticker": "OP-USD", + "marketType": "PERPETUAL_MARKET_TYPE_CROSS", + "priceExponent": -9.0, + "minPriceChange": 2500, + "minExchanges": 3, + "exchangeConfigJson": [ + { + "exchangeName": "Binance", + "ticker": "OPUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Bybit", + "ticker": "OPUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "CoinbasePro", + "ticker": "OP-USD" + }, + { + "exchangeName": "Gate", + "ticker": "OP_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Kraken", + "ticker": "OPUSD" + }, + { + "exchangeName": "Kucoin", + "ticker": "OP-USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Mexc", + "ticker": "OP_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Okx", + "ticker": "OP-USDT", + "adjustByMarket": "USDT-USD" + } + ], + "liquidityTier": 1, + "atomicResolution": -6.0, + "quantumConversionExponent": -9, + "defaultFundingPpm": 0, + "stepBaseQuantums": 1000000, + "subticksPerTick": 1000000, + "delayBlocks": 3600 + }, + "initialDeposit": { + "denom": "adydx", + "amount": "10000000000000000000000" + }, + "meta": { + "assetName": "Optimism", + "referencePrice": 2.8811216328565834 + } + }, + "ARB": { + "title": "Add ARB-USD perpetual market", + "summary": "Add the x/prices, x/perpetuals and x/clob parameters needed for a ARB-USD perpetual market. Create the market in INITIALIZING status and transition it to ACTIVE status after 3600 blocks. Added via the new market widget.", + "params": { + "id": 32, + "ticker": "ARB-USD", + "marketType": "PERPETUAL_MARKET_TYPE_CROSS", + "priceExponent": -9.0, + "minPriceChange": 4000, + "minExchanges": 3, + "exchangeConfigJson": [ + { + "exchangeName": "Binance", + "ticker": "ARBUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Bybit", + "ticker": "ARBUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "CoinbasePro", + "ticker": "ARB-USD" + }, + { + "exchangeName": "Kraken", + "ticker": "ARBUSD" + }, + { + "exchangeName": "Kucoin", + "ticker": "ARB-USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Mexc", + "ticker": "ARB_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Okx", + "ticker": "ARB-USDT", + "adjustByMarket": "USDT-USD" + } + ], + "liquidityTier": 2, + "atomicResolution": -6.0, + "quantumConversionExponent": -9, + "defaultFundingPpm": 0, + "stepBaseQuantums": 1000000, + "subticksPerTick": 1000000, + "delayBlocks": 3600 + }, + "initialDeposit": { + "denom": "adydx", + "amount": "10000000000000000000000" + }, + "meta": { + "assetName": "Arbitrum", + "referencePrice": 1.0427973889055515 + } + }, + "MKR": { + "title": "Add MKR-USD perpetual market", + "summary": "Add the x/prices, x/perpetuals and x/clob parameters needed for a MKR-USD perpetual market. Create the market in INITIALIZING status and transition it to ACTIVE status after 3600 blocks. Added via the new market widget.", + "params": { + "id": 33, + "ticker": "MKR-USD", + "marketType": "PERPETUAL_MARKET_TYPE_CROSS", + "priceExponent": -6.0, + "minPriceChange": 2500, + "minExchanges": 3, + "exchangeConfigJson": [ + { + "exchangeName": "Binance", + "ticker": "MKRUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Bybit", + "ticker": "MKRUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "CoinbasePro", + "ticker": "MKR-USD" + }, + { + "exchangeName": "Kraken", + "ticker": "MKRUSD" + }, + { + "exchangeName": "Kucoin", + "ticker": "MKR-USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Mexc", + "ticker": "MKR_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Okx", + "ticker": "MKR-USDT", + "adjustByMarket": "USDT-USD" + } + ], + "liquidityTier": 1, + "atomicResolution": -9.0, + "quantumConversionExponent": -9, + "defaultFundingPpm": 0, + "stepBaseQuantums": 1000000, + "subticksPerTick": 1000000, + "delayBlocks": 3600 + }, + "initialDeposit": { + "denom": "adydx", + "amount": "10000000000000000000000" + }, + "meta": { + "assetName": "Maker", + "referencePrice": 2785.422848265722 + } + }, + "GRT": { + "title": "Add GRT-USD perpetual market", + "summary": "Add the x/prices, x/perpetuals and x/clob parameters needed for a GRT-USD perpetual market. Create the market in INITIALIZING status and transition it to ACTIVE status after 3600 blocks. Added via the new market widget.", + "params": { + "id": 34, + "ticker": "GRT-USD", + "marketType": "PERPETUAL_MARKET_TYPE_CROSS", + "priceExponent": -10.0, + "minPriceChange": 2500, + "minExchanges": 3, + "exchangeConfigJson": [ + { + "exchangeName": "Binance", + "ticker": "GRTUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Bybit", + "ticker": "GRTUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "CoinbasePro", + "ticker": "GRT-USD" + }, + { + "exchangeName": "Gate", + "ticker": "GRT_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Kraken", + "ticker": "GRTUSD" + }, + { + "exchangeName": "Kucoin", + "ticker": "GRT-USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Mexc", + "ticker": "GRT_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Okx", + "ticker": "GRT-USDT", + "adjustByMarket": "USDT-USD" + } + ], + "liquidityTier": 1, + "atomicResolution": -5.0, + "quantumConversionExponent": -9, + "defaultFundingPpm": 0, + "stepBaseQuantums": 1000000, + "subticksPerTick": 1000000, + "delayBlocks": 3600 + }, + "initialDeposit": { + "denom": "adydx", + "amount": "10000000000000000000000" + }, + "meta": { + "assetName": "The Graph", + "referencePrice": 0.2585049312196988 + } + }, + "SUI": { + "title": "Add SUI-USD perpetual market", + "summary": "Add the x/prices, x/perpetuals and x/clob parameters needed for a SUI-USD perpetual market. Create the market in INITIALIZING status and transition it to ACTIVE status after 3600 blocks. Added via the new market widget.", + "params": { + "id": 35, + "ticker": "SUI-USD", + "marketType": "PERPETUAL_MARKET_TYPE_CROSS", + "priceExponent": -9.0, + "minPriceChange": 2500, + "minExchanges": 3, + "exchangeConfigJson": [ + { + "exchangeName": "Binance", + "ticker": "SUIUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Bybit", + "ticker": "SUIUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "CoinbasePro", + "ticker": "SUI-USD" + }, + { + "exchangeName": "Huobi", + "ticker": "suiusdt", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Kraken", + "ticker": "SUIUSD" + }, + { + "exchangeName": "Kucoin", + "ticker": "SUI-USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Mexc", + "ticker": "SUI_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Okx", + "ticker": "SUI-USDT", + "adjustByMarket": "USDT-USD" + } + ], + "liquidityTier": 1, + "atomicResolution": -6.0, + "quantumConversionExponent": -9, + "defaultFundingPpm": 0, + "stepBaseQuantums": 1000000, + "subticksPerTick": 1000000, + "delayBlocks": 3600 + }, + "initialDeposit": { + "denom": "adydx", + "amount": "10000000000000000000000" + }, + "meta": { + "assetName": "Sui", + "referencePrice": 1.1113392464358447 + } + }, + "INJ": { + "title": "Add INJ-USD perpetual market", + "summary": "Add the x/prices, x/perpetuals and x/clob parameters needed for a INJ-USD perpetual market. Create the market in INITIALIZING status and transition it to ACTIVE status after 3600 blocks. Added via the new market widget.", + "params": { + "id": 36, + "ticker": "INJ-USD", + "marketType": "PERPETUAL_MARKET_TYPE_CROSS", + "priceExponent": -8.0, + "minPriceChange": 4000, + "minExchanges": 3, + "exchangeConfigJson": [ + { + "exchangeName": "Binance", + "ticker": "INJUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Bybit", + "ticker": "INJUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "CoinbasePro", + "ticker": "INJ-USD" + }, + { + "exchangeName": "Kraken", + "ticker": "INJUSD" + }, + { + "exchangeName": "Kucoin", + "ticker": "INJ-USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Mexc", + "ticker": "INJ_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Okx", + "ticker": "INJ-USDT", + "adjustByMarket": "USDT-USD" + } + ], + "liquidityTier": 2, + "atomicResolution": -7.0, + "quantumConversionExponent": -9, + "defaultFundingPpm": 0, + "stepBaseQuantums": 1000000, + "subticksPerTick": 1000000, + "delayBlocks": 3600 + }, + "initialDeposit": { + "denom": "adydx", + "amount": "10000000000000000000000" + }, + "meta": { + "assetName": "Injective", + "referencePrice": 23.697718423026043 + } + }, + "FTM": { + "title": "Add FTM-USD perpetual market", + "summary": "Add the x/prices, x/perpetuals and x/clob parameters needed for a FTM-USD perpetual market. Create the market in INITIALIZING status and transition it to ACTIVE status after 3600 blocks. Added via the new market widget.", + "params": { + "id": 37, + "ticker": "FTM-USD", + "marketType": "PERPETUAL_MARKET_TYPE_CROSS", + "priceExponent": -10.0, + "minPriceChange": 4000, + "minExchanges": 3, + "exchangeConfigJson": [ + { + "exchangeName": "Binance", + "ticker": "FTMUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Bybit", + "ticker": "FTMUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Kraken", + "ticker": "FTMUSD" + }, + { + "exchangeName": "Kucoin", + "ticker": "FTM-USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Mexc", + "ticker": "FTM_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Okx", + "ticker": "FTM-USDT", + "adjustByMarket": "USDT-USD" + } + ], + "liquidityTier": 2, + "atomicResolution": -5.0, + "quantumConversionExponent": -9, + "defaultFundingPpm": 0, + "stepBaseQuantums": 1000000, + "subticksPerTick": 1000000, + "delayBlocks": 3600 + }, + "initialDeposit": { + "denom": "adydx", + "amount": "10000000000000000000000" + }, + "meta": { + "assetName": "Fantom", + "referencePrice": 0.681419534254711 + } + }, + "LDO": { + "title": "Add LDO-USD perpetual market", + "summary": "Add the x/prices, x/perpetuals and x/clob parameters needed for a LDO-USD perpetual market. Create the market in INITIALIZING status and transition it to ACTIVE status after 3600 blocks. Added via the new market widget.", + "params": { + "id": 38, + "ticker": "LDO-USD", + "marketType": "PERPETUAL_MARKET_TYPE_CROSS", + "priceExponent": -9.0, + "minPriceChange": 4000, + "minExchanges": 3, + "exchangeConfigJson": [ + { + "exchangeName": "Binance", + "ticker": "LDOUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Bybit", + "ticker": "LDOUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "CoinbasePro", + "ticker": "LDO-USD" + }, + { + "exchangeName": "Kraken", + "ticker": "LDOUSD" + }, + { + "exchangeName": "Kucoin", + "ticker": "LDO-USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Mexc", + "ticker": "LDO_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Okx", + "ticker": "LDO-USDT", + "adjustByMarket": "USDT-USD" + } + ], + "liquidityTier": 2, + "atomicResolution": -6.0, + "quantumConversionExponent": -9, + "defaultFundingPpm": 0, + "stepBaseQuantums": 1000000, + "subticksPerTick": 1000000, + "delayBlocks": 3600 + }, + "initialDeposit": { + "denom": "adydx", + "amount": "10000000000000000000000" + }, + "meta": { + "assetName": "Lido DAO", + "referencePrice": 2.0678068291656686 + } + }, + "FET": { + "title": "Add FET-USD perpetual market", + "summary": "Add the x/prices, x/perpetuals and x/clob parameters needed for a FET-USD perpetual market. Create the market in INITIALIZING status and transition it to ACTIVE status after 3600 blocks. Added via the new market widget.", + "params": { + "id": 39, + "ticker": "FET-USD", + "marketType": "PERPETUAL_MARKET_TYPE_CROSS", + "priceExponent": -9.0, + "minPriceChange": 4000, + "minExchanges": 3, + "exchangeConfigJson": [ + { + "exchangeName": "Binance", + "ticker": "FETUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Bybit", + "ticker": "FETUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "CoinbasePro", + "ticker": "FET-USD" + }, + { + "exchangeName": "Kraken", + "ticker": "FETUSD" + }, + { + "exchangeName": "Kucoin", + "ticker": "FET-USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Mexc", + "ticker": "FET_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Okx", + "ticker": "FET-USDT", + "adjustByMarket": "USDT-USD" + } + ], + "liquidityTier": 2, + "atomicResolution": -6.0, + "quantumConversionExponent": -9, + "defaultFundingPpm": 0, + "stepBaseQuantums": 1000000, + "subticksPerTick": 1000000, + "delayBlocks": 3600 + }, + "initialDeposit": { + "denom": "adydx", + "amount": "10000000000000000000000" + }, + "meta": { + "assetName": "Fetch.ai", + "referencePrice": 2.0480362696772465 + } + }, + "TIA": { + "title": "Add TIA-USD perpetual market", + "summary": "Add the x/prices, x/perpetuals and x/clob parameters needed for a TIA-USD perpetual market. Create the market in INITIALIZING status and transition it to ACTIVE status after 3600 blocks. Added via the new market widget.", + "params": { + "id": 40, + "ticker": "TIA-USD", + "marketType": "PERPETUAL_MARKET_TYPE_CROSS", + "priceExponent": -8.0, + "minPriceChange": 4000, + "minExchanges": 3, + "exchangeConfigJson": [ + { + "exchangeName": "Binance", + "ticker": "TIAUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Bybit", + "ticker": "TIAUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "CoinbasePro", + "ticker": "TIA-USD" + }, + { + "exchangeName": "Kraken", + "ticker": "TIAUSD" + }, + { + "exchangeName": "Kucoin", + "ticker": "TIA-USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Mexc", + "ticker": "TIA_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Okx", + "ticker": "TIA-USDT", + "adjustByMarket": "USDT-USD" + } + ], + "liquidityTier": 2, + "atomicResolution": -7.0, + "quantumConversionExponent": -9, + "defaultFundingPpm": 0, + "stepBaseQuantums": 1000000, + "subticksPerTick": 1000000, + "delayBlocks": 3600 + }, + "initialDeposit": { + "denom": "adydx", + "amount": "10000000000000000000000" + }, + "meta": { + "assetName": "Celestia", + "referencePrice": 10.035079235290235 + } + }, + "RUNE": { + "title": "Add RUNE-USD perpetual market", + "summary": "Add the x/prices, x/perpetuals and x/clob parameters needed for a RUNE-USD perpetual market. Create the market in INITIALIZING status and transition it to ACTIVE status after 3600 blocks. Added via the new market widget.", + "params": { + "id": 41, + "ticker": "RUNE-USD", + "marketType": "PERPETUAL_MARKET_TYPE_CROSS", + "priceExponent": -9.0, + "minPriceChange": 4000, + "minExchanges": 3, + "exchangeConfigJson": [ + { + "exchangeName": "Binance", + "ticker": "RUNEUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Bybit", + "ticker": "RUNEUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Gate", + "ticker": "RUNE_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Kraken", + "ticker": "RUNEUSD" + }, + { + "exchangeName": "Kucoin", + "ticker": "RUNE-USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Mexc", + "ticker": "RUNE_USDT", + "adjustByMarket": "USDT-USD" + } + ], + "liquidityTier": 2, + "atomicResolution": -6.0, + "quantumConversionExponent": -9, + "defaultFundingPpm": 0, + "stepBaseQuantums": 1000000, + "subticksPerTick": 1000000, + "delayBlocks": 3600 + }, + "initialDeposit": { + "denom": "adydx", + "amount": "10000000000000000000000" + }, + "meta": { + "assetName": "THORChain", + "referencePrice": 5.076032669690655 + } + }, + "BONK": { + "title": "Add BONK-USD perpetual market", + "summary": "Add the x/prices, x/perpetuals and x/clob parameters needed for a BONK-USD perpetual market. Create the market in INITIALIZING status and transition it to ACTIVE status after 3600 blocks. Added via the new market widget.", + "params": { + "id": 42, + "ticker": "BONK-USD", + "marketType": "PERPETUAL_MARKET_TYPE_CROSS", + "priceExponent": -14.0, + "minPriceChange": 4000, + "minExchanges": 3, + "exchangeConfigJson": [ + { + "exchangeName": "Binance", + "ticker": "BONKUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Bybit", + "ticker": "BONKUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "CoinbasePro", + "ticker": "BONK-USD" + }, + { + "exchangeName": "Kraken", + "ticker": "BONKUSD" + }, + { + "exchangeName": "Kucoin", + "ticker": "BONK-USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Mexc", + "ticker": "BONK_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Okx", + "ticker": "BONK-USDT", + "adjustByMarket": "USDT-USD" + } + ], + "liquidityTier": 2, + "atomicResolution": -1.0, + "quantumConversionExponent": -9, + "defaultFundingPpm": 0, + "stepBaseQuantums": 1000000, + "subticksPerTick": 1000000, + "delayBlocks": 3600 + }, + "initialDeposit": { + "denom": "adydx", + "amount": "10000000000000000000000" + }, + "meta": { + "assetName": "Bonk", + "referencePrice": 2.6385543995978146e-05 + } + }, + "FLOKI": { + "title": "Add FLOKI-USD perpetual market", + "summary": "Add the x/prices, x/perpetuals and x/clob parameters needed for a FLOKI-USD perpetual market. Create the market in INITIALIZING status and transition it to ACTIVE status after 3600 blocks. Added via the new market widget.", + "params": { + "id": 43, + "ticker": "FLOKI-USD", + "marketType": "PERPETUAL_MARKET_TYPE_CROSS", + "priceExponent": -13.0, + "minPriceChange": 4000, + "minExchanges": 3, + "exchangeConfigJson": [ + { + "exchangeName": "Binance", + "ticker": "FLOKIUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Bybit", + "ticker": "FLOKIUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Gate", + "ticker": "FLOKI_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Kucoin", + "ticker": "FLOKI-USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Mexc", + "ticker": "FLOKI_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Okx", + "ticker": "FLOKI-USDT", + "adjustByMarket": "USDT-USD" + } + ], + "liquidityTier": 2, + "atomicResolution": -2.0, + "quantumConversionExponent": -9, + "defaultFundingPpm": 0, + "stepBaseQuantums": 1000000, + "subticksPerTick": 1000000, + "delayBlocks": 3600 + }, + "initialDeposit": { + "denom": "adydx", + "amount": "10000000000000000000000" + }, + "meta": { + "assetName": "FLOKI", + "referencePrice": 0.00016765811114609883 + } + }, + "SEI": { + "title": "Add SEI-USD perpetual market", + "summary": "Add the x/prices, x/perpetuals and x/clob parameters needed for a SEI-USD perpetual market. Create the market in INITIALIZING status and transition it to ACTIVE status after 3600 blocks. Added via the new market widget.", + "params": { + "id": 44, + "ticker": "SEI-USD", + "marketType": "PERPETUAL_MARKET_TYPE_CROSS", + "priceExponent": -10.0, + "minPriceChange": 4000, + "minExchanges": 3, + "exchangeConfigJson": [ + { + "exchangeName": "Binance", + "ticker": "SEIUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Bybit", + "ticker": "SEIUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "CoinbasePro", + "ticker": "SEI-USD" + }, + { + "exchangeName": "Huobi", + "ticker": "seiusdt", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Kraken", + "ticker": "SEIUSD" + }, + { + "exchangeName": "Kucoin", + "ticker": "SEI-USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Mexc", + "ticker": "SEI_USDT", + "adjustByMarket": "USDT-USD" + } + ], + "liquidityTier": 2, + "atomicResolution": -5.0, + "quantumConversionExponent": -9, + "defaultFundingPpm": 0, + "stepBaseQuantums": 1000000, + "subticksPerTick": 1000000, + "delayBlocks": 3600 + }, + "initialDeposit": { + "denom": "adydx", + "amount": "10000000000000000000000" + }, + "meta": { + "assetName": "Sei", + "referencePrice": 0.5471094469491297 + } + }, + "ALGO": { + "title": "Add ALGO-USD perpetual market", + "summary": "Add the x/prices, x/perpetuals and x/clob parameters needed for a ALGO-USD perpetual market. Create the market in INITIALIZING status and transition it to ACTIVE status after 3600 blocks. Added via the new market widget.", + "params": { + "id": 45, + "ticker": "ALGO-USD", + "marketType": "PERPETUAL_MARKET_TYPE_CROSS", + "priceExponent": -10.0, + "minPriceChange": 4000, + "minExchanges": 3, + "exchangeConfigJson": [ + { + "exchangeName": "Binance", + "ticker": "ALGOUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Bybit", + "ticker": "ALGOUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "CoinbasePro", + "ticker": "ALGO-USD" + }, + { + "exchangeName": "Kraken", + "ticker": "ALGOUSD" + }, + { + "exchangeName": "Kucoin", + "ticker": "ALGO-USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Mexc", + "ticker": "ALGO_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Okx", + "ticker": "ALGO-USDT", + "adjustByMarket": "USDT-USD" + } + ], + "liquidityTier": 2, + "atomicResolution": -5.0, + "quantumConversionExponent": -9, + "defaultFundingPpm": 0, + "stepBaseQuantums": 1000000, + "subticksPerTick": 1000000, + "delayBlocks": 3600 + }, + "initialDeposit": { + "denom": "adydx", + "amount": "10000000000000000000000" + }, + "meta": { + "assetName": "Algorand", + "referencePrice": 0.18543646474053593 + } + }, + "JUP": { + "title": "Add JUP-USD perpetual market", + "summary": "Add the x/prices, x/perpetuals and x/clob parameters needed for a JUP-USD perpetual market. Create the market in INITIALIZING status and transition it to ACTIVE status after 3600 blocks. Added via the new market widget.", + "params": { + "id": 46, + "ticker": "JUP-USD", + "marketType": "PERPETUAL_MARKET_TYPE_CROSS", + "priceExponent": -9.0, + "minPriceChange": 4000, + "minExchanges": 3, + "exchangeConfigJson": [ + { + "exchangeName": "Binance", + "ticker": "JUPUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Bybit", + "ticker": "JUPUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Gate", + "ticker": "JUP_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Kraken", + "ticker": "JUPUSD" + }, + { + "exchangeName": "Mexc", + "ticker": "JUP_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Okx", + "ticker": "JUP-USDT", + "adjustByMarket": "USDT-USD" + } + ], + "liquidityTier": 2, + "atomicResolution": -6.0, + "quantumConversionExponent": -9, + "defaultFundingPpm": 0, + "stepBaseQuantums": 1000000, + "subticksPerTick": 1000000, + "delayBlocks": 3600 + }, + "initialDeposit": { + "denom": "adydx", + "amount": "10000000000000000000000" + }, + "meta": { + "assetName": "Jupiter", + "referencePrice": 1.0331907115121979 + } + }, + "FLOW": { + "title": "Add FLOW-USD perpetual market", + "summary": "Add the x/prices, x/perpetuals and x/clob parameters needed for a FLOW-USD perpetual market. Create the market in INITIALIZING status and transition it to ACTIVE status after 3600 blocks. Added via the new market widget.", + "params": { + "id": 47, + "ticker": "FLOW-USD", + "marketType": "PERPETUAL_MARKET_TYPE_CROSS", + "priceExponent": -10.0, + "minPriceChange": 4000, + "minExchanges": 3, + "exchangeConfigJson": [ + { + "exchangeName": "Binance", + "ticker": "FLOWUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Bybit", + "ticker": "FLOWUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "CoinbasePro", + "ticker": "FLOW-USD" + }, + { + "exchangeName": "Gate", + "ticker": "FLOW_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Kraken", + "ticker": "FLOWUSD" + }, + { + "exchangeName": "Mexc", + "ticker": "FLOW_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Okx", + "ticker": "FLOW-USDT", + "adjustByMarket": "USDT-USD" + } + ], + "liquidityTier": 2, + "atomicResolution": -5.0, + "quantumConversionExponent": -9, + "defaultFundingPpm": 0, + "stepBaseQuantums": 1000000, + "subticksPerTick": 1000000, + "delayBlocks": 3600 + }, + "initialDeposit": { + "denom": "adydx", + "amount": "10000000000000000000000" + }, + "meta": { + "assetName": "Flow", + "referencePrice": 0.8822620105345396 + } + }, + "GALA": { + "title": "Add GALA-USD perpetual market", + "summary": "Add the x/prices, x/perpetuals and x/clob parameters needed for a GALA-USD perpetual market. Create the market in INITIALIZING status and transition it to ACTIVE status after 3600 blocks. Added via the new market widget.", + "params": { + "id": 48, + "ticker": "GALA-USD", + "marketType": "PERPETUAL_MARKET_TYPE_CROSS", + "priceExponent": -11.0, + "minPriceChange": 4000, + "minExchanges": 3, + "exchangeConfigJson": [ + { + "exchangeName": "Binance", + "ticker": "GALAUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Bybit", + "ticker": "GALAUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Gate", + "ticker": "GALA_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Kraken", + "ticker": "GALAUSD" + }, + { + "exchangeName": "Mexc", + "ticker": "GALA_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Okx", + "ticker": "GALA-USDT", + "adjustByMarket": "USDT-USD" + } + ], + "liquidityTier": 2, + "atomicResolution": -4.0, + "quantumConversionExponent": -9, + "defaultFundingPpm": 0, + "stepBaseQuantums": 1000000, + "subticksPerTick": 1000000, + "delayBlocks": 3600 + }, + "initialDeposit": { + "denom": "adydx", + "amount": "10000000000000000000000" + }, + "meta": { + "assetName": "Gala", + "referencePrice": 0.043510681174046696 + } + }, + "W": { + "title": "Add W-USD perpetual market", + "summary": "Add the x/prices, x/perpetuals and x/clob parameters needed for a W-USD perpetual market. Create the market in INITIALIZING status and transition it to ACTIVE status after 3600 blocks. Added via the new market widget.", + "params": { + "id": 49, + "ticker": "W-USD", + "marketType": "PERPETUAL_MARKET_TYPE_CROSS", + "priceExponent": -10.0, + "minPriceChange": 4000, + "minExchanges": 3, + "exchangeConfigJson": [ + { + "exchangeName": "Binance", + "ticker": "WUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Bybit", + "ticker": "WUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Gate", + "ticker": "W_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Kucoin", + "ticker": "W-USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Mexc", + "ticker": "W_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Okx", + "ticker": "W-USDT", + "adjustByMarket": "USDT-USD" + } + ], + "liquidityTier": 2, + "atomicResolution": -5.0, + "quantumConversionExponent": -9, + "defaultFundingPpm": 0, + "stepBaseQuantums": 1000000, + "subticksPerTick": 1000000, + "delayBlocks": 3600 + }, + "initialDeposit": { + "denom": "adydx", + "amount": "10000000000000000000000" + }, + "meta": { + "assetName": "Wormhole", + "referencePrice": 0.726915001899745 + } + }, + "AAVE": { + "title": "Add AAVE-USD perpetual market", + "summary": "Add the x/prices, x/perpetuals and x/clob parameters needed for a AAVE-USD perpetual market. Create the market in INITIALIZING status and transition it to ACTIVE status after 3600 blocks. Added via the new market widget.", + "params": { + "id": 50, + "ticker": "AAVE-USD", + "marketType": "PERPETUAL_MARKET_TYPE_CROSS", + "priceExponent": -8.0, + "minPriceChange": 4000, + "minExchanges": 3, + "exchangeConfigJson": [ + { + "exchangeName": "Binance", + "ticker": "AAVEUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Bybit", + "ticker": "AAVEUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "CoinbasePro", + "ticker": "AAVE-USD" + }, + { + "exchangeName": "Kraken", + "ticker": "AAVEUSD" + }, + { + "exchangeName": "Kucoin", + "ticker": "AAVE-USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Mexc", + "ticker": "AAVE_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Okx", + "ticker": "AAVE-USDT", + "adjustByMarket": "USDT-USD" + } + ], + "liquidityTier": 2, + "atomicResolution": -7.0, + "quantumConversionExponent": -9, + "defaultFundingPpm": 0, + "stepBaseQuantums": 1000000, + "subticksPerTick": 1000000, + "delayBlocks": 3600 + }, + "initialDeposit": { + "denom": "adydx", + "amount": "10000000000000000000000" + }, + "meta": { + "assetName": "Aave", + "referencePrice": 86.1185187449062 + } + }, + "QNT": { + "title": "Add QNT-USD perpetual market", + "summary": "Add the x/prices, x/perpetuals and x/clob parameters needed for a QNT-USD perpetual market. Create the market in INITIALIZING status and transition it to ACTIVE status after 3600 blocks. Added via the new market widget.", + "params": { + "id": 51, + "ticker": "QNT-USD", + "marketType": "PERPETUAL_MARKET_TYPE_CROSS", + "priceExponent": -7.0, + "minPriceChange": 4000, + "minExchanges": 3, + "exchangeConfigJson": [ + { + "exchangeName": "Binance", + "ticker": "QNTUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "CoinbasePro", + "ticker": "QNT-USD" + }, + { + "exchangeName": "Gate", + "ticker": "QNT_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Kucoin", + "ticker": "QNT-USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Mexc", + "ticker": "QNT_USDT", + "adjustByMarket": "USDT-USD" + } + ], + "liquidityTier": 2, + "atomicResolution": -8.0, + "quantumConversionExponent": -9, + "defaultFundingPpm": 0, + "stepBaseQuantums": 1000000, + "subticksPerTick": 1000000, + "delayBlocks": 3600 + }, + "initialDeposit": { + "denom": "adydx", + "amount": "10000000000000000000000" + }, + "meta": { + "assetName": "Quant", + "referencePrice": 103.50167464219156 + } + }, + "PENDLE": { + "title": "Add PENDLE-USD perpetual market", + "summary": "Add the x/prices, x/perpetuals and x/clob parameters needed for a PENDLE-USD perpetual market. Create the market in INITIALIZING status and transition it to ACTIVE status after 3600 blocks. Added via the new market widget.", + "params": { + "id": 52, + "ticker": "PENDLE-USD", + "marketType": "PERPETUAL_MARKET_TYPE_CROSS", + "priceExponent": -9.0, + "minPriceChange": 4000, + "minExchanges": 3, + "exchangeConfigJson": [ + { + "exchangeName": "Binance", + "ticker": "PENDLEUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Bybit", + "ticker": "PENDLEUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Gate", + "ticker": "PENDLE_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Kucoin", + "ticker": "PENDLE-USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Mexc", + "ticker": "PENDLE_USDT", + "adjustByMarket": "USDT-USD" + } + ], + "liquidityTier": 2, + "atomicResolution": -6.0, + "quantumConversionExponent": -9, + "defaultFundingPpm": 0, + "stepBaseQuantums": 1000000, + "subticksPerTick": 1000000, + "delayBlocks": 3600 + }, + "initialDeposit": { + "denom": "adydx", + "amount": "10000000000000000000000" + }, + "meta": { + "assetName": "Pendle", + "referencePrice": 4.7604237828432865 + } + }, + "FLR": { + "title": "Add FLR-USD perpetual market", + "summary": "Add the x/prices, x/perpetuals and x/clob parameters needed for a FLR-USD perpetual market. Create the market in INITIALIZING status and transition it to ACTIVE status after 3600 blocks. Added via the new market widget.", + "params": { + "id": 53, + "ticker": "FLR-USD", + "marketType": "PERPETUAL_MARKET_TYPE_CROSS", + "priceExponent": -11.0, + "minPriceChange": 4000, + "minExchanges": 3, + "exchangeConfigJson": [ + { + "exchangeName": "Bybit", + "ticker": "FLRUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "CoinbasePro", + "ticker": "FLR-USD" + }, + { + "exchangeName": "Gate", + "ticker": "FLR_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Kraken", + "ticker": "FLRUSD" + }, + { + "exchangeName": "Mexc", + "ticker": "FLR_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Okx", + "ticker": "FLR-USDT", + "adjustByMarket": "USDT-USD" + } + ], + "liquidityTier": 2, + "atomicResolution": -4.0, + "quantumConversionExponent": -9, + "defaultFundingPpm": 0, + "stepBaseQuantums": 1000000, + "subticksPerTick": 1000000, + "delayBlocks": 3600 + }, + "initialDeposit": { + "denom": "adydx", + "amount": "10000000000000000000000" + }, + "meta": { + "assetName": "Flare", + "referencePrice": 0.030788729815797576 + } + }, + "ENA": { + "title": "Add ENA-USD perpetual market", + "summary": "Add the x/prices, x/perpetuals and x/clob parameters needed for a ENA-USD perpetual market. Create the market in INITIALIZING status and transition it to ACTIVE status after 3600 blocks. Added via the new market widget.", + "params": { + "id": 54, + "ticker": "ENA-USD", + "marketType": "PERPETUAL_MARKET_TYPE_CROSS", + "priceExponent": -10.0, + "minPriceChange": 4000, + "minExchanges": 3, + "exchangeConfigJson": [ + { + "exchangeName": "Binance", + "ticker": "ENAUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Bybit", + "ticker": "ENAUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Huobi", + "ticker": "enausdt", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Kucoin", + "ticker": "ENA-USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Mexc", + "ticker": "ENA_USDT", + "adjustByMarket": "USDT-USD" + } + ], + "liquidityTier": 2, + "atomicResolution": -5.0, + "quantumConversionExponent": -9, + "defaultFundingPpm": 0, + "stepBaseQuantums": 1000000, + "subticksPerTick": 1000000, + "delayBlocks": 3600 + }, + "initialDeposit": { + "denom": "adydx", + "amount": "10000000000000000000000" + }, + "meta": { + "assetName": "Ethena", + "referencePrice": 0.8165421882024005 + } + }, + "AGIX": { + "title": "Add AGIX-USD perpetual market", + "summary": "Add the x/prices, x/perpetuals and x/clob parameters needed for a AGIX-USD perpetual market. Create the market in INITIALIZING status and transition it to ACTIVE status after 3600 blocks. Added via the new market widget.", + "params": { + "id": 55, + "ticker": "AGIX-USD", + "marketType": "PERPETUAL_MARKET_TYPE_CROSS", + "priceExponent": -10.0, + "minPriceChange": 4000, + "minExchanges": 3, + "exchangeConfigJson": [ + { + "exchangeName": "Binance", + "ticker": "AGIXUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Bybit", + "ticker": "AGIXUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Gate", + "ticker": "AGIX_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Huobi", + "ticker": "agixusdt", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Kucoin", + "ticker": "AGIX-USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Mexc", + "ticker": "AGIX_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Okx", + "ticker": "AGIX-USDT", + "adjustByMarket": "USDT-USD" + } + ], + "liquidityTier": 2, + "atomicResolution": -5.0, + "quantumConversionExponent": -9, + "defaultFundingPpm": 0, + "stepBaseQuantums": 1000000, + "subticksPerTick": 1000000, + "delayBlocks": 3600 + }, + "initialDeposit": { + "denom": "adydx", + "amount": "10000000000000000000000" + }, + "meta": { + "assetName": "SingularityNET", + "referencePrice": 0.8415390669605753 + } + }, + "CHZ": { + "title": "Add CHZ-USD perpetual market", + "summary": "Add the x/prices, x/perpetuals and x/clob parameters needed for a CHZ-USD perpetual market. Create the market in INITIALIZING status and transition it to ACTIVE status after 3600 blocks. Added via the new market widget.", + "params": { + "id": 56, + "ticker": "CHZ-USD", + "marketType": "PERPETUAL_MARKET_TYPE_CROSS", + "priceExponent": -10.0, + "minPriceChange": 4000, + "minExchanges": 3, + "exchangeConfigJson": [ + { + "exchangeName": "Binance", + "ticker": "CHZUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "CoinbasePro", + "ticker": "CHZ-USD" + }, + { + "exchangeName": "Kraken", + "ticker": "CHZUSD" + }, + { + "exchangeName": "Kucoin", + "ticker": "CHZ-USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Mexc", + "ticker": "CHZ_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Okx", + "ticker": "CHZ-USDT", + "adjustByMarket": "USDT-USD" + } + ], + "liquidityTier": 2, + "atomicResolution": -5.0, + "quantumConversionExponent": -9, + "defaultFundingPpm": 0, + "stepBaseQuantums": 1000000, + "subticksPerTick": 1000000, + "delayBlocks": 3600 + }, + "initialDeposit": { + "denom": "adydx", + "amount": "10000000000000000000000" + }, + "meta": { + "assetName": "Chiliz", + "referencePrice": 0.11782789017330461 + } + }, + "WLD": { + "title": "Add WLD-USD perpetual market", + "summary": "Add the x/prices, x/perpetuals and x/clob parameters needed for a WLD-USD perpetual market. Create the market in INITIALIZING status and transition it to ACTIVE status after 3600 blocks. Added via the new market widget.", + "params": { + "id": 57, + "ticker": "WLD-USD", + "marketType": "PERPETUAL_MARKET_TYPE_CROSS", + "priceExponent": -9.0, + "minPriceChange": 4000, + "minExchanges": 3, + "exchangeConfigJson": [ + { + "exchangeName": "Binance", + "ticker": "WLDUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Bybit", + "ticker": "WLDUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Gate", + "ticker": "WLD_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Kucoin", + "ticker": "WLD-USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Mexc", + "ticker": "WLD_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Okx", + "ticker": "WLD-USDT", + "adjustByMarket": "USDT-USD" + } + ], + "liquidityTier": 2, + "atomicResolution": -6.0, + "quantumConversionExponent": -9, + "defaultFundingPpm": 0, + "stepBaseQuantums": 1000000, + "subticksPerTick": 1000000, + "delayBlocks": 3600 + }, + "initialDeposit": { + "denom": "adydx", + "amount": "10000000000000000000000" + }, + "meta": { + "assetName": "Worldcoin", + "referencePrice": 4.835923939590577 + } + }, + "SAND": { + "title": "Add SAND-USD perpetual market", + "summary": "Add the x/prices, x/perpetuals and x/clob parameters needed for a SAND-USD perpetual market. Create the market in INITIALIZING status and transition it to ACTIVE status after 3600 blocks. Added via the new market widget.", + "params": { + "id": 58, + "ticker": "SAND-USD", + "marketType": "PERPETUAL_MARKET_TYPE_CROSS", + "priceExponent": -10.0, + "minPriceChange": 4000, + "minExchanges": 3, + "exchangeConfigJson": [ + { + "exchangeName": "Binance", + "ticker": "SANDUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Bybit", + "ticker": "SANDUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Gate", + "ticker": "SAND_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Kucoin", + "ticker": "SAND-USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Mexc", + "ticker": "SAND_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Okx", + "ticker": "SAND-USDT", + "adjustByMarket": "USDT-USD" + } + ], + "liquidityTier": 2, + "atomicResolution": -5.0, + "quantumConversionExponent": -9, + "defaultFundingPpm": 0, + "stepBaseQuantums": 1000000, + "subticksPerTick": 1000000, + "delayBlocks": 3600 + }, + "initialDeposit": { + "denom": "adydx", + "amount": "10000000000000000000000" + }, + "meta": { + "assetName": "The Sandbox", + "referencePrice": 0.43981885830784884 + } + }, + "STRK": { + "title": "Add STRK-USD perpetual market", + "summary": "Add the x/prices, x/perpetuals and x/clob parameters needed for a STRK-USD perpetual market. Create the market in INITIALIZING status and transition it to ACTIVE status after 3600 blocks. Added via the new market widget.", + "params": { + "id": 59, + "ticker": "STRK-USD", + "marketType": "PERPETUAL_MARKET_TYPE_CROSS", + "priceExponent": -9.0, + "minPriceChange": 2500, + "minExchanges": 3, + "exchangeConfigJson": [ + { + "exchangeName": "Binance", + "ticker": "STRKUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Bybit", + "ticker": "STRKUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "CoinbasePro", + "ticker": "STRK-USD" + }, + { + "exchangeName": "Gate", + "ticker": "STRK_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Kraken", + "ticker": "STRKUSD" + }, + { + "exchangeName": "Kucoin", + "ticker": "STRK-USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Mexc", + "ticker": "STRK_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Okx", + "ticker": "STRK-USDT", + "adjustByMarket": "USDT-USD" + } + ], + "liquidityTier": 1, + "atomicResolution": -6.0, + "quantumConversionExponent": -9, + "defaultFundingPpm": 0, + "stepBaseQuantums": 1000000, + "subticksPerTick": 1000000, + "delayBlocks": 3600 + }, + "initialDeposit": { + "denom": "adydx", + "amount": "10000000000000000000000" + }, + "meta": { + "assetName": "Starknet", + "referencePrice": 1.30890865863542 + } + }, + "EOS": { + "title": "Add EOS-USD perpetual market", + "summary": "Add the x/prices, x/perpetuals and x/clob parameters needed for a EOS-USD perpetual market. Create the market in INITIALIZING status and transition it to ACTIVE status after 3600 blocks. Added via the new market widget.", + "params": { + "id": 60, + "ticker": "EOS-USD", + "marketType": "PERPETUAL_MARKET_TYPE_CROSS", + "priceExponent": -10.0, + "minPriceChange": 2500, + "minExchanges": 3, + "exchangeConfigJson": [ + { + "exchangeName": "Binance", + "ticker": "EOSUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Bybit", + "ticker": "EOSUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "CoinbasePro", + "ticker": "EOS-USD" + }, + { + "exchangeName": "Gate", + "ticker": "EOS_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Kraken", + "ticker": "EOSUSD" + }, + { + "exchangeName": "Kucoin", + "ticker": "EOS-USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Mexc", + "ticker": "EOS_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Okx", + "ticker": "EOS-USDT", + "adjustByMarket": "USDT-USD" + } + ], + "liquidityTier": 1, + "atomicResolution": -5.0, + "quantumConversionExponent": -9, + "defaultFundingPpm": 0, + "stepBaseQuantums": 1000000, + "subticksPerTick": 1000000, + "delayBlocks": 3600 + }, + "initialDeposit": { + "denom": "adydx", + "amount": "10000000000000000000000" + }, + "meta": { + "assetName": "EOS", + "referencePrice": 0.8189170456499958 + } + }, + "SNX": { + "title": "Add SNX-USD perpetual market", + "summary": "Add the x/prices, x/perpetuals and x/clob parameters needed for a SNX-USD perpetual market. Create the market in INITIALIZING status and transition it to ACTIVE status after 3600 blocks. Added via the new market widget.", + "params": { + "id": 61, + "ticker": "SNX-USD", + "marketType": "PERPETUAL_MARKET_TYPE_CROSS", + "priceExponent": -9.0, + "minPriceChange": 4000, + "minExchanges": 3, + "exchangeConfigJson": [ + { + "exchangeName": "Binance", + "ticker": "SNXUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Bybit", + "ticker": "SNXUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "CoinbasePro", + "ticker": "SNX-USD" + }, + { + "exchangeName": "Kraken", + "ticker": "SNXUSD" + }, + { + "exchangeName": "Kucoin", + "ticker": "SNX-USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Mexc", + "ticker": "SNX_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Okx", + "ticker": "SNX-USDT", + "adjustByMarket": "USDT-USD" + } + ], + "liquidityTier": 2, + "atomicResolution": -6.0, + "quantumConversionExponent": -9, + "defaultFundingPpm": 0, + "stepBaseQuantums": 1000000, + "subticksPerTick": 1000000, + "delayBlocks": 3600 + }, + "initialDeposit": { + "denom": "adydx", + "amount": "10000000000000000000000" + }, + "meta": { + "assetName": "Synthetix", + "referencePrice": 2.7262155963302734 + } + }, + "JASMY": { + "title": "Add JASMY-USD perpetual market", + "summary": "Add the x/prices, x/perpetuals and x/clob parameters needed for a JASMY-USD perpetual market. Create the market in INITIALIZING status and transition it to ACTIVE status after 3600 blocks. Added via the new market widget.", + "params": { + "id": 62, + "ticker": "JASMY-USD", + "marketType": "PERPETUAL_MARKET_TYPE_CROSS", + "priceExponent": -11.0, + "minPriceChange": 4000, + "minExchanges": 3, + "exchangeConfigJson": [ + { + "exchangeName": "Binance", + "ticker": "JASMYUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "CoinbasePro", + "ticker": "JASMY-USD" + }, + { + "exchangeName": "Gate", + "ticker": "JASMY_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Kucoin", + "ticker": "JASMY-USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Mexc", + "ticker": "JASMY_USDT", + "adjustByMarket": "USDT-USD" + } + ], + "liquidityTier": 2, + "atomicResolution": -4.0, + "quantumConversionExponent": -9, + "defaultFundingPpm": 0, + "stepBaseQuantums": 1000000, + "subticksPerTick": 1000000, + "delayBlocks": 3600 + }, + "initialDeposit": { + "denom": "adydx", + "amount": "10000000000000000000000" + }, + "meta": { + "assetName": "JasmyCoin", + "referencePrice": 0.017340326288544587 + } + }, + "ORDI": { + "title": "Add ORDI-USD perpetual market", + "summary": "Add the x/prices, x/perpetuals and x/clob parameters needed for a ORDI-USD perpetual market. Create the market in INITIALIZING status and transition it to ACTIVE status after 3600 blocks. Added via the new market widget.", + "params": { + "id": 63, + "ticker": "ORDI-USD", + "marketType": "PERPETUAL_MARKET_TYPE_CROSS", + "priceExponent": -8.0, + "minPriceChange": 4000, + "minExchanges": 3, + "exchangeConfigJson": [ + { + "exchangeName": "Binance", + "ticker": "ORDIUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Bybit", + "ticker": "ORDIUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Gate", + "ticker": "ORDI_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Kucoin", + "ticker": "ORDI-USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Mexc", + "ticker": "ORDI_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Okx", + "ticker": "ORDI-USDT", + "adjustByMarket": "USDT-USD" + } + ], + "liquidityTier": 2, + "atomicResolution": -7.0, + "quantumConversionExponent": -9, + "defaultFundingPpm": 0, + "stepBaseQuantums": 1000000, + "subticksPerTick": 1000000, + "delayBlocks": 3600 + }, + "initialDeposit": { + "denom": "adydx", + "amount": "10000000000000000000000" + }, + "meta": { + "assetName": "ORDI", + "referencePrice": 37.726633571856134 + } + }, + "PYTH": { + "title": "Add PYTH-USD perpetual market", + "summary": "Add the x/prices, x/perpetuals and x/clob parameters needed for a PYTH-USD perpetual market. Create the market in INITIALIZING status and transition it to ACTIVE status after 3600 blocks. Added via the new market widget.", + "params": { + "id": 65, + "ticker": "PYTH-USD", + "marketType": "PERPETUAL_MARKET_TYPE_CROSS", + "priceExponent": -10.0, + "minPriceChange": 4000, + "minExchanges": 3, + "exchangeConfigJson": [ + { + "exchangeName": "Binance", + "ticker": "PYTHUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Bybit", + "ticker": "PYTHUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Gate", + "ticker": "PYTH_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Kucoin", + "ticker": "PYTH-USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Mexc", + "ticker": "PYTH_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Okx", + "ticker": "PYTH-USDT", + "adjustByMarket": "USDT-USD" + } + ], + "liquidityTier": 2, + "atomicResolution": -5.0, + "quantumConversionExponent": -9, + "defaultFundingPpm": 0, + "stepBaseQuantums": 1000000, + "subticksPerTick": 1000000, + "delayBlocks": 3600 + }, + "initialDeposit": { + "denom": "adydx", + "amount": "10000000000000000000000" + }, + "meta": { + "assetName": "Pyth Network", + "referencePrice": 0.5258526269698547 + } + }, + "APE": { + "title": "Add APE-USD perpetual market", + "summary": "Add the x/prices, x/perpetuals and x/clob parameters needed for a APE-USD perpetual market. Create the market in INITIALIZING status and transition it to ACTIVE status after 3600 blocks. Added via the new market widget.", + "params": { + "id": 66, + "ticker": "APE-USD", + "marketType": "PERPETUAL_MARKET_TYPE_CROSS", + "priceExponent": -9.0, + "minPriceChange": 2500, + "minExchanges": 3, + "exchangeConfigJson": [ + { + "exchangeName": "Binance", + "ticker": "APEUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Bybit", + "ticker": "APEUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "CoinbasePro", + "ticker": "APE-USD" + }, + { + "exchangeName": "Gate", + "ticker": "APE_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Kraken", + "ticker": "APEUSD" + }, + { + "exchangeName": "Kucoin", + "ticker": "APE-USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Mexc", + "ticker": "APE_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Okx", + "ticker": "APE-USDT", + "adjustByMarket": "USDT-USD" + } + ], + "liquidityTier": 1, + "atomicResolution": -6.0, + "quantumConversionExponent": -9, + "defaultFundingPpm": 0, + "stepBaseQuantums": 1000000, + "subticksPerTick": 1000000, + "delayBlocks": 3600 + }, + "initialDeposit": { + "denom": "adydx", + "amount": "10000000000000000000000" + }, + "meta": { + "assetName": "ApeCoin", + "referencePrice": 1.2198969896909202 + } + }, + "KAVA": { + "title": "Add KAVA-USD perpetual market", + "summary": "Add the x/prices, x/perpetuals and x/clob parameters needed for a KAVA-USD perpetual market. Create the market in INITIALIZING status and transition it to ACTIVE status after 3600 blocks. Added via the new market widget.", + "params": { + "id": 67, + "ticker": "KAVA-USD", + "marketType": "PERPETUAL_MARKET_TYPE_CROSS", + "priceExponent": -10.0, + "minPriceChange": 4000, + "minExchanges": 3, + "exchangeConfigJson": [ + { + "exchangeName": "Binance", + "ticker": "KAVAUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "CoinbasePro", + "ticker": "KAVA-USD" + }, + { + "exchangeName": "Gate", + "ticker": "KAVA_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Kraken", + "ticker": "KAVAUSD" + }, + { + "exchangeName": "Kucoin", + "ticker": "KAVA-USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Mexc", + "ticker": "KAVA_USDT", + "adjustByMarket": "USDT-USD" + } + ], + "liquidityTier": 2, + "atomicResolution": -5.0, + "quantumConversionExponent": -9, + "defaultFundingPpm": 0, + "stepBaseQuantums": 1000000, + "subticksPerTick": 1000000, + "delayBlocks": 3600 + }, + "initialDeposit": { + "denom": "adydx", + "amount": "10000000000000000000000" + }, + "meta": { + "assetName": "Kava", + "referencePrice": 0.669887831407206 + } + }, + "BLUR": { + "title": "Add BLUR-USD perpetual market", + "summary": "Add the x/prices, x/perpetuals and x/clob parameters needed for a BLUR-USD perpetual market. Create the market in INITIALIZING status and transition it to ACTIVE status after 3600 blocks. Added via the new market widget.", + "params": { + "id": 68, + "ticker": "BLUR-USD", + "marketType": "PERPETUAL_MARKET_TYPE_CROSS", + "priceExponent": -10.0, + "minPriceChange": 4000, + "minExchanges": 3, + "exchangeConfigJson": [ + { + "exchangeName": "Binance", + "ticker": "BLURUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Bybit", + "ticker": "BLURUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "CoinbasePro", + "ticker": "BLUR-USD" + }, + { + "exchangeName": "Kraken", + "ticker": "BLURUSD" + }, + { + "exchangeName": "Kucoin", + "ticker": "BLUR-USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Mexc", + "ticker": "BLUR_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Okx", + "ticker": "BLUR-USDT", + "adjustByMarket": "USDT-USD" + } + ], + "liquidityTier": 2, + "atomicResolution": -5.0, + "quantumConversionExponent": -9, + "defaultFundingPpm": 0, + "stepBaseQuantums": 1000000, + "subticksPerTick": 1000000, + "delayBlocks": 3600 + }, + "initialDeposit": { + "denom": "adydx", + "amount": "10000000000000000000000" + }, + "meta": { + "assetName": "Blur", + "referencePrice": 0.4049318042813457 + } + }, + "DYDX": { + "title": "Add DYDX-USD perpetual market", + "summary": "Add the x/prices, x/perpetuals and x/clob parameters needed for a DYDX-USD perpetual market. Create the market in INITIALIZING status and transition it to ACTIVE status after 3600 blocks. Added via the new market widget.", + "params": { + "id": 69, + "ticker": "DYDX-USD", + "marketType": "PERPETUAL_MARKET_TYPE_CROSS", + "priceExponent": -9.0, + "minPriceChange": 4000, + "minExchanges": 3, + "exchangeConfigJson": [ + { + "exchangeName": "Binance", + "ticker": "DYDXUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Bybit", + "ticker": "DYDXUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Gate", + "ticker": "DYDX_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Kraken", + "ticker": "DYDXUSD" + }, + { + "exchangeName": "Kucoin", + "ticker": "DYDX-USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Mexc", + "ticker": "DYDX_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Okx", + "ticker": "DYDX-USDT", + "adjustByMarket": "USDT-USD" + } + ], + "liquidityTier": 2, + "atomicResolution": -6.0, + "quantumConversionExponent": -9, + "defaultFundingPpm": 0, + "stepBaseQuantums": 1000000, + "subticksPerTick": 1000000, + "delayBlocks": 3600 + }, + "initialDeposit": { + "denom": "adydx", + "amount": "10000000000000000000000" + }, + "meta": { + "assetName": "dYdX (ethDYDX)", + "referencePrice": 2.1353224345766795 + } + }, + "BOME": { + "title": "Add BOME-USD perpetual market", + "summary": "Add the x/prices, x/perpetuals and x/clob parameters needed for a BOME-USD perpetual market. Create the market in INITIALIZING status and transition it to ACTIVE status after 3600 blocks. Added via the new market widget.", + "params": { + "id": 70, + "ticker": "BOME-USD", + "marketType": "PERPETUAL_MARKET_TYPE_CROSS", + "priceExponent": -12.0, + "minPriceChange": 4000, + "minExchanges": 3, + "exchangeConfigJson": [ + { + "exchangeName": "Bybit", + "ticker": "BOMEUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Gate", + "ticker": "BOME_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Kucoin", + "ticker": "BOME-USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Mexc", + "ticker": "BOME_USDT", + "adjustByMarket": "USDT-USD" + } + ], + "liquidityTier": 2, + "atomicResolution": -3.0, + "quantumConversionExponent": -9, + "defaultFundingPpm": 0, + "stepBaseQuantums": 1000000, + "subticksPerTick": 1000000, + "delayBlocks": 3600 + }, + "initialDeposit": { + "denom": "adydx", + "amount": "10000000000000000000000" + }, + "meta": { + "assetName": "BOOK OF MEME", + "referencePrice": 0.009734598422711484 + } + }, + "OCEAN": { + "title": "Add OCEAN-USD perpetual market", + "summary": "Add the x/prices, x/perpetuals and x/clob parameters needed for a OCEAN-USD perpetual market. Create the market in INITIALIZING status and transition it to ACTIVE status after 3600 blocks. Added via the new market widget.", + "params": { + "id": 72, + "ticker": "OCEAN-USD", + "marketType": "PERPETUAL_MARKET_TYPE_CROSS", + "priceExponent": -10.0, + "minPriceChange": 4000, + "minExchanges": 3, + "exchangeConfigJson": [ + { + "exchangeName": "Binance", + "ticker": "OCEANUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "CoinbasePro", + "ticker": "OCEAN-USD" + }, + { + "exchangeName": "Gate", + "ticker": "OCEAN_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Kraken", + "ticker": "OCEANUSD" + }, + { + "exchangeName": "Kucoin", + "ticker": "OCEAN-USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Mexc", + "ticker": "OCEAN_USDT", + "adjustByMarket": "USDT-USD" + } + ], + "liquidityTier": 2, + "atomicResolution": -5.0, + "quantumConversionExponent": -9, + "defaultFundingPpm": 0, + "stepBaseQuantums": 1000000, + "subticksPerTick": 1000000, + "delayBlocks": 3600 + }, + "initialDeposit": { + "denom": "adydx", + "amount": "10000000000000000000000" + }, + "meta": { + "assetName": "Ocean Protocol", + "referencePrice": 0.8639639176875745 + } + }, + "ENS": { + "title": "Add ENS-USD perpetual market", + "summary": "Add the x/prices, x/perpetuals and x/clob parameters needed for a ENS-USD perpetual market. Create the market in INITIALIZING status and transition it to ACTIVE status after 3600 blocks. Added via the new market widget.", + "params": { + "id": 73, + "ticker": "ENS-USD", + "marketType": "PERPETUAL_MARKET_TYPE_CROSS", + "priceExponent": -8.0, + "minPriceChange": 4000, + "minExchanges": 3, + "exchangeConfigJson": [ + { + "exchangeName": "Binance", + "ticker": "ENSUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "CoinbasePro", + "ticker": "ENS-USD" + }, + { + "exchangeName": "Gate", + "ticker": "ENS_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Kucoin", + "ticker": "ENS-USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Mexc", + "ticker": "ENS_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Okx", + "ticker": "ENS-USDT", + "adjustByMarket": "USDT-USD" + } + ], + "liquidityTier": 2, + "atomicResolution": -7.0, + "quantumConversionExponent": -9, + "defaultFundingPpm": 0, + "stepBaseQuantums": 1000000, + "subticksPerTick": 1000000, + "delayBlocks": 3600 + }, + "initialDeposit": { + "denom": "adydx", + "amount": "10000000000000000000000" + }, + "meta": { + "assetName": "Ethereum Name Service", + "referencePrice": 15.111526941995683 + } + }, + "DYM": { + "title": "Add DYM-USD perpetual market", + "summary": "Add the x/prices, x/perpetuals and x/clob parameters needed for a DYM-USD perpetual market. Create the market in INITIALIZING status and transition it to ACTIVE status after 3600 blocks. Added via the new market widget.", + "params": { + "id": 74, + "ticker": "DYM-USD", + "marketType": "PERPETUAL_MARKET_TYPE_CROSS", + "priceExponent": -9.0, + "minPriceChange": 4000, + "minExchanges": 3, + "exchangeConfigJson": [ + { + "exchangeName": "Binance", + "ticker": "DYMUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Bybit", + "ticker": "DYMUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Gate", + "ticker": "DYM_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Kucoin", + "ticker": "DYM-USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Mexc", + "ticker": "DYM_USDT", + "adjustByMarket": "USDT-USD" + } + ], + "liquidityTier": 2, + "atomicResolution": -6.0, + "quantumConversionExponent": -9, + "defaultFundingPpm": 0, + "stepBaseQuantums": 1000000, + "subticksPerTick": 1000000, + "delayBlocks": 3600 + }, + "initialDeposit": { + "denom": "adydx", + "amount": "10000000000000000000000" + }, + "meta": { + "assetName": "Dymension", + "referencePrice": 3.243814894569103 + } + }, + "ETHFI": { + "title": "Add ETHFI-USD perpetual market", + "summary": "Add the x/prices, x/perpetuals and x/clob parameters needed for a ETHFI-USD perpetual market. Create the market in INITIALIZING status and transition it to ACTIVE status after 3600 blocks. Added via the new market widget.", + "params": { + "id": 75, + "ticker": "ETHFI-USD", + "marketType": "PERPETUAL_MARKET_TYPE_CROSS", + "priceExponent": -9.0, + "minPriceChange": 4000, + "minExchanges": 3, + "exchangeConfigJson": [ + { + "exchangeName": "Binance", + "ticker": "ETHFIUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Bybit", + "ticker": "ETHFIUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Gate", + "ticker": "ETHFI_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Kucoin", + "ticker": "ETHFI-USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Okx", + "ticker": "ETHFI-USDT", + "adjustByMarket": "USDT-USD" + } + ], + "liquidityTier": 2, + "atomicResolution": -6.0, + "quantumConversionExponent": -9, + "defaultFundingPpm": 0, + "stepBaseQuantums": 1000000, + "subticksPerTick": 1000000, + "delayBlocks": 3600 + }, + "initialDeposit": { + "denom": "adydx", + "amount": "10000000000000000000000" + }, + "meta": { + "assetName": "ether.fi", + "referencePrice": 3.811710106518133 + } + }, + "1INCH": { + "title": "Add 1INCH-USD perpetual market", + "summary": "Add the x/prices, x/perpetuals and x/clob parameters needed for a 1INCH-USD perpetual market. Create the market in INITIALIZING status and transition it to ACTIVE status after 3600 blocks. Added via the new market widget.", + "params": { + "id": 76, + "ticker": "1INCH-USD", + "marketType": "PERPETUAL_MARKET_TYPE_CROSS", + "priceExponent": -10.0, + "minPriceChange": 4000, + "minExchanges": 3, + "exchangeConfigJson": [ + { + "exchangeName": "Binance", + "ticker": "1INCHUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "CoinbasePro", + "ticker": "1INCH-USD" + }, + { + "exchangeName": "Gate", + "ticker": "1INCH_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Kucoin", + "ticker": "1INCH-USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Mexc", + "ticker": "1INCH_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Okx", + "ticker": "1INCH-USDT", + "adjustByMarket": "USDT-USD" + } + ], + "liquidityTier": 2, + "atomicResolution": -5.0, + "quantumConversionExponent": -9, + "defaultFundingPpm": 0, + "stepBaseQuantums": 1000000, + "subticksPerTick": 1000000, + "delayBlocks": 3600 + }, + "initialDeposit": { + "denom": "adydx", + "amount": "10000000000000000000000" + }, + "meta": { + "assetName": "1inch Network", + "referencePrice": 0.3738838045665926 + } + }, + "ARKM": { + "title": "Add ARKM-USD perpetual market", + "summary": "Add the x/prices, x/perpetuals and x/clob parameters needed for a ARKM-USD perpetual market. Create the market in INITIALIZING status and transition it to ACTIVE status after 3600 blocks. Added via the new market widget.", + "params": { + "id": 77, + "ticker": "ARKM-USD", + "marketType": "PERPETUAL_MARKET_TYPE_CROSS", + "priceExponent": -9.0, + "minPriceChange": 4000, + "minExchanges": 3, + "exchangeConfigJson": [ + { + "exchangeName": "Binance", + "ticker": "ARKMUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Bybit", + "ticker": "ARKMUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "CoinbasePro", + "ticker": "ARKM-USD" + }, + { + "exchangeName": "Gate", + "ticker": "ARKM_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Mexc", + "ticker": "ARKM_USDT", + "adjustByMarket": "USDT-USD" + } + ], + "liquidityTier": 2, + "atomicResolution": -6.0, + "quantumConversionExponent": -9, + "defaultFundingPpm": 0, + "stepBaseQuantums": 1000000, + "subticksPerTick": 1000000, + "delayBlocks": 3600 + }, + "initialDeposit": { + "denom": "adydx", + "amount": "10000000000000000000000" + }, + "meta": { + "assetName": "Arkham", + "referencePrice": 1.974821650546914 + } + }, + "GMT": { + "title": "Add GMT-USD perpetual market", + "summary": "Add the x/prices, x/perpetuals and x/clob parameters needed for a GMT-USD perpetual market. Create the market in INITIALIZING status and transition it to ACTIVE status after 3600 blocks. Added via the new market widget.", + "params": { + "id": 78, + "ticker": "GMT-USD", + "marketType": "PERPETUAL_MARKET_TYPE_CROSS", + "priceExponent": -10.0, + "minPriceChange": 4000, + "minExchanges": 3, + "exchangeConfigJson": [ + { + "exchangeName": "Binance", + "ticker": "GMTUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Bybit", + "ticker": "GMTUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "CoinbasePro", + "ticker": "GMT-USD" + }, + { + "exchangeName": "Gate", + "ticker": "GMT_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Kucoin", + "ticker": "GMT-USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Okx", + "ticker": "GMT-USDT", + "adjustByMarket": "USDT-USD" + } + ], + "liquidityTier": 2, + "atomicResolution": -5.0, + "quantumConversionExponent": -9, + "defaultFundingPpm": 0, + "stepBaseQuantums": 1000000, + "subticksPerTick": 1000000, + "delayBlocks": 3600 + }, + "initialDeposit": { + "denom": "adydx", + "amount": "10000000000000000000000" + }, + "meta": { + "assetName": "GMT", + "referencePrice": 0.22263372152083444 + } + }, + "ZETA": { + "title": "Add ZETA-USD perpetual market", + "summary": "Add the x/prices, x/perpetuals and x/clob parameters needed for a ZETA-USD perpetual market. Create the market in INITIALIZING status and transition it to ACTIVE status after 3600 blocks. Added via the new market widget.", + "params": { + "id": 80, + "ticker": "ZETA-USD", + "marketType": "PERPETUAL_MARKET_TYPE_CROSS", + "priceExponent": -9.0, + "minPriceChange": 4000, + "minExchanges": 3, + "exchangeConfigJson": [ + { + "exchangeName": "Bybit", + "ticker": "ZETAUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "CoinbasePro", + "ticker": "ZETA-USD" + }, + { + "exchangeName": "Gate", + "ticker": "ZETA_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Kucoin", + "ticker": "ZETA-USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Mexc", + "ticker": "ZETA_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Okx", + "ticker": "ZETA-USDT", + "adjustByMarket": "USDT-USD" + } + ], + "liquidityTier": 2, + "atomicResolution": -6.0, + "quantumConversionExponent": -9, + "defaultFundingPpm": 0, + "stepBaseQuantums": 1000000, + "subticksPerTick": 1000000, + "delayBlocks": 3600 + }, + "initialDeposit": { + "denom": "adydx", + "amount": "10000000000000000000000" + }, + "meta": { + "assetName": "ZetaChain", + "referencePrice": 1.5606952628372133 + } + }, + "MEME": { + "title": "Add MEME-USD perpetual market", + "summary": "Add the x/prices, x/perpetuals and x/clob parameters needed for a MEME-USD perpetual market. Create the market in INITIALIZING status and transition it to ACTIVE status after 3600 blocks. Added via the new market widget.", + "params": { + "id": 81, + "ticker": "MEME-USD", + "marketType": "PERPETUAL_MARKET_TYPE_CROSS", + "priceExponent": -11.0, + "minPriceChange": 4000, + "minExchanges": 3, + "exchangeConfigJson": [ + { + "exchangeName": "Binance", + "ticker": "MEMEUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Bybit", + "ticker": "MEMEUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Gate", + "ticker": "MEME_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Kucoin", + "ticker": "MEME-USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Mexc", + "ticker": "MEME_USDT", + "adjustByMarket": "USDT-USD" + } + ], + "liquidityTier": 2, + "atomicResolution": -4.0, + "quantumConversionExponent": -9, + "defaultFundingPpm": 0, + "stepBaseQuantums": 1000000, + "subticksPerTick": 1000000, + "delayBlocks": 3600 + }, + "initialDeposit": { + "denom": "adydx", + "amount": "10000000000000000000000" + }, + "meta": { + "assetName": "Memecoin", + "referencePrice": 0.024552139525164007 + } + }, + "MASK": { + "title": "Add MASK-USD perpetual market", + "summary": "Add the x/prices, x/perpetuals and x/clob parameters needed for a MASK-USD perpetual market. Create the market in INITIALIZING status and transition it to ACTIVE status after 3600 blocks. Added via the new market widget.", + "params": { + "id": 82, + "ticker": "MASK-USD", + "marketType": "PERPETUAL_MARKET_TYPE_CROSS", + "priceExponent": -9.0, + "minPriceChange": 4000, + "minExchanges": 3, + "exchangeConfigJson": [ + { + "exchangeName": "Binance", + "ticker": "MASKUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Bybit", + "ticker": "MASKUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "CoinbasePro", + "ticker": "MASK-USD" + }, + { + "exchangeName": "Gate", + "ticker": "MASK_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Kucoin", + "ticker": "MASK-USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Mexc", + "ticker": "MASK_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Okx", + "ticker": "MASK-USDT", + "adjustByMarket": "USDT-USD" + } + ], + "liquidityTier": 2, + "atomicResolution": -6.0, + "quantumConversionExponent": -9, + "defaultFundingPpm": 0, + "stepBaseQuantums": 1000000, + "subticksPerTick": 1000000, + "delayBlocks": 3600 + }, + "initialDeposit": { + "denom": "adydx", + "amount": "10000000000000000000000" + }, + "meta": { + "assetName": "Mask Network", + "referencePrice": 3.258105069878578 + } + }, + "XAI": { + "title": "Add XAI-USD perpetual market", + "summary": "Add the x/prices, x/perpetuals and x/clob parameters needed for a XAI-USD perpetual market. Create the market in INITIALIZING status and transition it to ACTIVE status after 3600 blocks. Added via the new market widget.", + "params": { + "id": 83, + "ticker": "XAI-USD", + "marketType": "PERPETUAL_MARKET_TYPE_CROSS", + "priceExponent": -10.0, + "minPriceChange": 4000, + "minExchanges": 3, + "exchangeConfigJson": [ + { + "exchangeName": "Binance", + "ticker": "XAIUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Bybit", + "ticker": "XAIUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Gate", + "ticker": "XAI_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Kucoin", + "ticker": "XAI-USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Mexc", + "ticker": "XAI_USDT", + "adjustByMarket": "USDT-USD" + } + ], + "liquidityTier": 2, + "atomicResolution": -5.0, + "quantumConversionExponent": -9, + "defaultFundingPpm": 0, + "stepBaseQuantums": 1000000, + "subticksPerTick": 1000000, + "delayBlocks": 3600 + }, + "initialDeposit": { + "denom": "adydx", + "amount": "10000000000000000000000" + }, + "meta": { + "assetName": "Xai", + "referencePrice": 0.7213160441229187 + } + }, + "AEVO": { + "title": "Add AEVO-USD perpetual market", + "summary": "Add the x/prices, x/perpetuals and x/clob parameters needed for a AEVO-USD perpetual market. Create the market in INITIALIZING status and transition it to ACTIVE status after 3600 blocks. Added via the new market widget.", + "params": { + "id": 84, + "ticker": "AEVO-USD", + "marketType": "PERPETUAL_MARKET_TYPE_CROSS", + "priceExponent": -9.0, + "minPriceChange": 4000, + "minExchanges": 3, + "exchangeConfigJson": [ + { + "exchangeName": "Binance", + "ticker": "AEVOUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Bybit", + "ticker": "AEVOUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Gate", + "ticker": "AEVO_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Kucoin", + "ticker": "AEVO-USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Mexc", + "ticker": "AEVO_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Okx", + "ticker": "AEVO-USDT", + "adjustByMarket": "USDT-USD" + } + ], + "liquidityTier": 2, + "atomicResolution": -6.0, + "quantumConversionExponent": -9, + "defaultFundingPpm": 0, + "stepBaseQuantums": 1000000, + "subticksPerTick": 1000000, + "delayBlocks": 3600 + }, + "initialDeposit": { + "denom": "adydx", + "amount": "10000000000000000000000" + }, + "meta": { + "assetName": "Aevo", + "referencePrice": 1.4352432176346883 + } + }, + "TNSR": { + "title": "Add TNSR-USD perpetual market", + "summary": "Add the x/prices, x/perpetuals and x/clob parameters needed for a TNSR-USD perpetual market. Create the market in INITIALIZING status and transition it to ACTIVE status after 3600 blocks. Added via the new market widget.", + "params": { + "id": 85, + "ticker": "TNSR-USD", + "marketType": "PERPETUAL_MARKET_TYPE_CROSS", + "priceExponent": -10.0, + "minPriceChange": 4000, + "minExchanges": 3, + "exchangeConfigJson": [ + { + "exchangeName": "Binance", + "ticker": "TNSRUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Bybit", + "ticker": "TNSRUSDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "CoinbasePro", + "ticker": "TNSR-USD" + }, + { + "exchangeName": "Kucoin", + "ticker": "TNSR-USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Mexc", + "ticker": "TNSR_USDT", + "adjustByMarket": "USDT-USD" + }, + { + "exchangeName": "Okx", + "ticker": "TNSR-USDT", + "adjustByMarket": "USDT-USD" + } + ], + "liquidityTier": 2, + "atomicResolution": -5.0, + "quantumConversionExponent": -9, + "defaultFundingPpm": 0, + "stepBaseQuantums": 1000000, + "subticksPerTick": 1000000, + "delayBlocks": 3600 + }, + "initialDeposit": { + "denom": "adydx", + "amount": "10000000000000000000000" + }, + "meta": { + "assetName": "Tensor", + "referencePrice": 0.8688762328845198 + } + } +} \ No newline at end of file diff --git a/public/configs/otherMarketDisclaimer.md b/public/configs/otherMarketDisclaimer.md index 68f8284df..c4b644091 100644 --- a/public/configs/otherMarketDisclaimer.md +++ b/public/configs/otherMarketDisclaimer.md @@ -1 +1 @@ -This file identifies parameters for the optimal performance of various assets with the dYdX v4 open source software ("dYdX Chain"). For information on which assets are likely to be best compatible with dYdX Chain and how likely software compatibility and optimal parameters are assessed, please review the documentation [here](https://docs.dydx.trade/governance/proposing_a_new_market#example-proposal-json). Users considering using the permissionless markets function of the dYdX Chain are encouraged to consult qualified legal counsel to ensure compliance with the laws of their jurisdiction. The information herein does not constitute and should not be relied on as an endorsement or recommendation for any specific market, or investment, legal, or any other form of professional advice. Use of the v4 software is prohibited in the United States, Canada, and sanctioned jurisdictions as described in the [v4 Terms of Use](https://dydx.exchange/v4-terms). +The otherMarketData.json file identifies parameters for the optimal performance of various assets with the dYdX v4 open source software ("dYdX Chain"). For information on which assets are likely to be best compatible with dYdX Chain and how likely software compatibility and optimal parameters are assessed, please review the documentation [here](https://docs.dydx.trade/governance/proposing_a_new_market#example-proposal-json). Users considering using the permissionless markets function of the dYdX Chain are encouraged to consult qualified legal counsel to ensure compliance with the laws of their jurisdiction. The information herein does not constitute and should not be relied on as an endorsement or recommendation for any specific market, or investment, legal, or any other form of professional advice. Use of the v4 software is prohibited in the United States, Canada, and sanctioned jurisdictions as described in the [v4 Terms of Use](https://dydx.exchange/v4-terms). diff --git a/public/configs/otherMarketExchangeConfig.json b/public/configs/otherMarketExchangeConfig.json deleted file mode 100644 index 0d800ef58..000000000 --- a/public/configs/otherMarketExchangeConfig.json +++ /dev/null @@ -1,616 +0,0 @@ -{ - "1INCH": [ - { "exchangeName": "Binance", "ticker": "1INCHUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "CoinbasePro", "ticker": "1INCH-USD" }, - { "exchangeName": "Gate", "ticker": "1INCH_USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Kucoin", "ticker": "1INCH-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Okx", "ticker": "1INCH-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Mexc", "ticker": "1INCH_USDT", "adjustByMarket": "USDT-USD" } - ], - "AAVE": [ - { "exchangeName": "Binance", "ticker": "AAVEUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "CoinbasePro", "ticker": "AAVE-USD" }, - { "exchangeName": "Huobi", "ticker": "aaveusdt", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Kraken", "ticker": "AAVEUSD" }, - { "exchangeName": "Kucoin", "ticker": "AAVE-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Okx", "ticker": "AAVE-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Mexc", "ticker": "AAVE_USDT", "adjustByMarket": "USDT-USD" } - ], - "ADA": [ - { "exchangeName": "Binance", "ticker": "ADAUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Bitstamp", "ticker": "ADA/USD" }, - { "exchangeName": "Bybit", "ticker": "ADAUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "CoinbasePro", "ticker": "ADA-USD" }, - { "exchangeName": "Huobi", "ticker": "adausdt", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Kraken", "ticker": "ADAUSD" }, - { "exchangeName": "Kucoin", "ticker": "ADA-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Okx", "ticker": "ADA-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Mexc", "ticker": "ADA_USDT", "adjustByMarket": "USDT-USD" } - ], - "AGIX": [ - { "exchangeName": "Binance", "ticker": "AGIXUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Bybit", "ticker": "AGIXUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Gate", "ticker": "AGIX_USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Kucoin", "ticker": "AGIX-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Okx", "ticker": "AGIX-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Mexc", "ticker": "AGIX_USDT", "adjustByMarket": "USDT-USD" } - ], - "ALGO": [ - { "exchangeName": "Binance", "ticker": "ALGOUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "CoinbasePro", "ticker": "ALGO-USD" }, - { "exchangeName": "Kraken", "ticker": "ALGOUSD" }, - { "exchangeName": "Kucoin", "ticker": "ALGO-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Okx", "ticker": "ALGO-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Mexc", "ticker": "ALGO_USDT", "adjustByMarket": "USDT-USD" } - ], - "APE": [ - { "exchangeName": "Binance", "ticker": "APEUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "CoinbasePro", "ticker": "APE-USD" }, - { "exchangeName": "Gate", "ticker": "APE_USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Kraken", "ticker": "APEUSD" }, - { "exchangeName": "Kucoin", "ticker": "APE-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Okx", "ticker": "APE-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Mexc", "ticker": "APE_USDT", "adjustByMarket": "USDT-USD" } - ], - "APT": [ - { "exchangeName": "Binance", "ticker": "APTUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Bybit", "ticker": "APTUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "CoinbasePro", "ticker": "APT-USD" }, - { "exchangeName": "Gate", "ticker": "APT_USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Huobi", "ticker": "aptusdt", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Kraken", "ticker": "APTUSD" }, - { "exchangeName": "Kucoin", "ticker": "APT-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Okx", "ticker": "APT-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Mexc", "ticker": "APT_USDT", "adjustByMarket": "USDT-USD" } - ], - "ARB": [ - { "exchangeName": "Binance", "ticker": "ARBUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Bybit", "ticker": "ARBUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "CoinbasePro", "ticker": "ARB-USD" }, - { "exchangeName": "Huobi", "ticker": "arbusdt", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Kraken", "ticker": "ARBUSD" }, - { "exchangeName": "Kucoin", "ticker": "ARB-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Okx", "ticker": "ARB-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Mexc", "ticker": "ARB_USDT", "adjustByMarket": "USDT-USD" } - ], - "ATOM": [ - { "exchangeName": "Binance", "ticker": "ATOMUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Bybit", "ticker": "ATOMUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "CoinbasePro", "ticker": "ATOM-USD" }, - { "exchangeName": "Gate", "ticker": "ATOM_USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Kraken", "ticker": "ATOMUSD" }, - { "exchangeName": "Kucoin", "ticker": "ATOM-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Okx", "ticker": "ATOM-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Mexc", "ticker": "ATOM_USDT", "adjustByMarket": "USDT-USD" } - ], - "AVAX": [ - { "exchangeName": "Binance", "ticker": "AVAXUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Bitstamp", "ticker": "AVAX/USD" }, - { "exchangeName": "Bybit", "ticker": "AVAXUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "CoinbasePro", "ticker": "AVAX-USD" }, - { "exchangeName": "Huobi", "ticker": "avaxusdt", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Kraken", "ticker": "AVAXUSD" }, - { "exchangeName": "Kucoin", "ticker": "AVAX-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Okx", "ticker": "AVAX-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Mexc", "ticker": "AVAX_USDT", "adjustByMarket": "USDT-USD" } - ], - "BCH": [ - { "exchangeName": "Binance", "ticker": "BCHUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Bitstamp", "ticker": "BCH/USD" }, - { "exchangeName": "Bybit", "ticker": "BCHUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "CoinbasePro", "ticker": "BCH-USD" }, - { "exchangeName": "Huobi", "ticker": "bchusdt", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Kraken", "ticker": "BCHUSD" }, - { "exchangeName": "Kucoin", "ticker": "BCH-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Okx", "ticker": "BCH-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Mexc", "ticker": "BCH_USDT", "adjustByMarket": "USDT-USD" } - ], - "BLUR": [ - { "exchangeName": "Binance", "ticker": "BLURUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Bybit", "ticker": "BLURUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "CoinbasePro", "ticker": "BLUR-USD" }, - { "exchangeName": "Kraken", "ticker": "BLURUSD" }, - { "exchangeName": "Kucoin", "ticker": "BLUR-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Okx", "ticker": "BLUR-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Mexc", "ticker": "BLUR_USDT", "adjustByMarket": "USDT-USD" } - ], - "BNB": [ - { "exchangeName": "Binance", "ticker": "BNBUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Bybit", "ticker": "BNBUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Gate", "ticker": "BNB_USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Kucoin", "ticker": "BNB-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Okx", "ticker": "BNB-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Mexc", "ticker": "BNB_USDT", "adjustByMarket": "USDT-USD" } - ], - "BONK": [ - { "exchangeName": "Binance", "ticker": "BONKUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Bybit", "ticker": "BONKUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "CoinbasePro", "ticker": "BONK-USD" }, - { "exchangeName": "Kucoin", "ticker": "BONK-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Okx", "ticker": "BONK-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Mexc", "ticker": "BONK_USDT", "adjustByMarket": "USDT-USD" } - ], - "BTC": [ - { "exchangeName": "Binance", "ticker": "BTCUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Bitstamp", "ticker": "BTC/USD" }, - { "exchangeName": "Bybit", "ticker": "BTCUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "CoinbasePro", "ticker": "BTC-USD" }, - { "exchangeName": "Huobi", "ticker": "btcusdt", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Kraken", "ticker": "BTCUSD" }, - { "exchangeName": "Kucoin", "ticker": "BTC-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Okx", "ticker": "BTC-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Mexc", "ticker": "BTC_USDT", "adjustByMarket": "USDT-USD" } - ], - "CHZ": [ - { "exchangeName": "Binance", "ticker": "CHZUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "CoinbasePro", "ticker": "CHZ-USD" }, - { "exchangeName": "Kraken", "ticker": "CHZUSD" }, - { "exchangeName": "Kucoin", "ticker": "CHZ-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Okx", "ticker": "CHZ-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Mexc", "ticker": "CHZ_USDT", "adjustByMarket": "USDT-USD" } - ], - "CRV": [ - { "exchangeName": "Binance", "ticker": "CRVUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "CoinbasePro", "ticker": "CRV-USD" }, - { "exchangeName": "Kraken", "ticker": "CRVUSD" }, - { "exchangeName": "Kucoin", "ticker": "CRV-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Okx", "ticker": "CRV-USDT", "adjustByMarket": "USDT-USD" } - ], - "DOGE": [ - { "exchangeName": "Binance", "ticker": "DOGEUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Bybit", "ticker": "DOGEUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "CoinbasePro", "ticker": "DOGE-USD" }, - { "exchangeName": "Huobi", "ticker": "dogeusdt", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Kraken", "ticker": "DOGEUSD" }, - { "exchangeName": "Kucoin", "ticker": "DOGE-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Okx", "ticker": "DOGE-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Mexc", "ticker": "DOGE_USDT", "adjustByMarket": "USDT-USD" } - ], - "DOT": [ - { "exchangeName": "Binance", "ticker": "DOTUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Bybit", "ticker": "DOTUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "CoinbasePro", "ticker": "DOT-USD" }, - { "exchangeName": "Huobi", "ticker": "dotusdt", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Kraken", "ticker": "DOTUSD" }, - { "exchangeName": "Kucoin", "ticker": "DOT-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Okx", "ticker": "DOT-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Mexc", "ticker": "DOT_USDT", "adjustByMarket": "USDT-USD" } - ], - "DYM": [ - { "exchangeName": "Binance", "ticker": "DYMUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Bybit", "ticker": "DYMUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Gate", "ticker": "DYM_USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Kucoin", "ticker": "DYM-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Mexc", "ticker": "DYM_USDT", "adjustByMarket": "USDT-USD" } - ], - "ENS": [ - { "exchangeName": "Binance", "ticker": "ENSUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "CoinbasePro", "ticker": "ENS-USD" }, - { "exchangeName": "Gate", "ticker": "ENS_USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Kucoin", "ticker": "ENS-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Okx", "ticker": "ENS-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Mexc", "ticker": "ENS_USDT", "adjustByMarket": "USDT-USD" } - ], - "EOS": [ - { "exchangeName": "Binance", "ticker": "EOSUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Bybit", "ticker": "EOSUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "CoinbasePro", "ticker": "EOS-USD" }, - { "exchangeName": "Gate", "ticker": "EOS_USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Kraken", "ticker": "EOSUSD" }, - { "exchangeName": "Kucoin", "ticker": "EOS-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Okx", "ticker": "EOS-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Mexc", "ticker": "EOS_USDT", "adjustByMarket": "USDT-USD" } - ], - "ETC": [ - { "exchangeName": "Binance", "ticker": "ETCUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Bybit", "ticker": "ETCUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "CoinbasePro", "ticker": "ETC-USD" }, - { "exchangeName": "Huobi", "ticker": "etcusdt", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Kraken", "ticker": "ETCUSD" }, - { "exchangeName": "Kucoin", "ticker": "ETC-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Okx", "ticker": "ETC-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Mexc", "ticker": "ETC_USDT", "adjustByMarket": "USDT-USD" } - ], - "ETH": [ - { "exchangeName": "Binance", "ticker": "ETHUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Bitstamp", "ticker": "ETH/USD" }, - { "exchangeName": "Bybit", "ticker": "ETHUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "CoinbasePro", "ticker": "ETH-USD" }, - { "exchangeName": "Huobi", "ticker": "ethusdt", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Kraken", "ticker": "ETHUSD" }, - { "exchangeName": "Kucoin", "ticker": "ETH-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Okx", "ticker": "ETH-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Mexc", "ticker": "ETH_USDT", "adjustByMarket": "USDT-USD" } - ], - "FET": [ - { "exchangeName": "Binance", "ticker": "FETUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "CoinbasePro", "ticker": "FET-USD" }, - { "exchangeName": "Kraken", "ticker": "FETUSD" }, - { "exchangeName": "Kucoin", "ticker": "FET-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Okx", "ticker": "FET-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Mexc", "ticker": "FET_USDT", "adjustByMarket": "USDT-USD" } - ], - "FIL": [ - { "exchangeName": "Binance", "ticker": "FILUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Bybit", "ticker": "FILUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "CoinbasePro", "ticker": "FIL-USD" }, - { "exchangeName": "Huobi", "ticker": "filusdt", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Kraken", "ticker": "FILUSD" }, - { "exchangeName": "Kucoin", "ticker": "FIL-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Okx", "ticker": "FIL-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Mexc", "ticker": "FIL_USDT", "adjustByMarket": "USDT-USD" } - ], - "FTM": [ - { "exchangeName": "Binance", "ticker": "FTMUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Bybit", "ticker": "FTMUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Kraken", "ticker": "FTMUSD" }, - { "exchangeName": "Kucoin", "ticker": "FTM-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Okx", "ticker": "FTM-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Mexc", "ticker": "FTM_USDT", "adjustByMarket": "USDT-USD" } - ], - "GALA": [ - { "exchangeName": "Binance", "ticker": "GALAUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Bybit", "ticker": "GALAUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Gate", "ticker": "GALA_USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Kraken", "ticker": "GALAUSD" }, - { "exchangeName": "Okx", "ticker": "GALA-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Mexc", "ticker": "GALA_USDT", "adjustByMarket": "USDT-USD" } - ], - "GMT": [ - { "exchangeName": "Binance", "ticker": "GMTUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Bybit", "ticker": "GMTUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "CoinbasePro", "ticker": "GMT-USD" }, - { "exchangeName": "Gate", "ticker": "GMT_USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Kucoin", "ticker": "GMT-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Okx", "ticker": "GMT-USDT", "adjustByMarket": "USDT-USD" } - ], - "GRT": [ - { "exchangeName": "Binance", "ticker": "GRTUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "CoinbasePro", "ticker": "GRT-USD" }, - { "exchangeName": "Gate", "ticker": "GRT_USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Kraken", "ticker": "GRTUSD" }, - { "exchangeName": "Kucoin", "ticker": "GRT-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Okx", "ticker": "GRT-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Mexc", "ticker": "GRT_USDT", "adjustByMarket": "USDT-USD" } - ], - "HBAR": [ - { "exchangeName": "Binance", "ticker": "HBARUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Bybit", "ticker": "HBARUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "CoinbasePro", "ticker": "HBAR-USD" }, - { "exchangeName": "Kucoin", "ticker": "HBAR-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Okx", "ticker": "HBAR-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Mexc", "ticker": "HBAR_USDT", "adjustByMarket": "USDT-USD" } - ], - "ICP": [ - { "exchangeName": "Binance", "ticker": "ICPUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Bybit", "ticker": "ICPUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "CoinbasePro", "ticker": "ICP-USD" }, - { "exchangeName": "Kraken", "ticker": "ICPUSD" }, - { "exchangeName": "Kucoin", "ticker": "ICP-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Okx", "ticker": "ICP-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Mexc", "ticker": "ICP_USDT", "adjustByMarket": "USDT-USD" } - ], - "IMX": [ - { "exchangeName": "Binance", "ticker": "IMXUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "CoinbasePro", "ticker": "IMX-USD" }, - { "exchangeName": "Kraken", "ticker": "IMXUSD" }, - { "exchangeName": "Kucoin", "ticker": "IMX-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Okx", "ticker": "IMX-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Mexc", "ticker": "IMX_USDT", "adjustByMarket": "USDT-USD" } - ], - "INJ": [ - { "exchangeName": "Binance", "ticker": "INJUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Bybit", "ticker": "INJUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "CoinbasePro", "ticker": "INJ-USD" }, - { "exchangeName": "Kraken", "ticker": "INJUSD" }, - { "exchangeName": "Kucoin", "ticker": "INJ-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Okx", "ticker": "INJ-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Mexc", "ticker": "INJ_USDT", "adjustByMarket": "USDT-USD" } - ], - "JTO": [ - { "exchangeName": "Binance", "ticker": "JTOUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Bybit", "ticker": "JTOUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "CoinbasePro", "ticker": "JTO-USD" }, - { "exchangeName": "Kucoin", "ticker": "JTO-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Okx", "ticker": "JTO-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Mexc", "ticker": "JTO_USDT", "adjustByMarket": "USDT-USD" } - ], - "JUP": [ - { "exchangeName": "Binance", "ticker": "JUPUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Bybit", "ticker": "JUPUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Gate", "ticker": "JUP_USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Okx", "ticker": "JUP-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Mexc", "ticker": "JUP_USDT", "adjustByMarket": "USDT-USD" } - ], - "KAVA": [ - { "exchangeName": "Binance", "ticker": "KAVAUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Bybit", "ticker": "KAVAUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "CoinbasePro", "ticker": "KAVA-USD" }, - { "exchangeName": "Gate", "ticker": "KAVA_USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Kraken", "ticker": "KAVAUSD" }, - { "exchangeName": "Kucoin", "ticker": "KAVA-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Mexc", "ticker": "KAVA_USDT", "adjustByMarket": "USDT-USD" } - ], - "LDO": [ - { "exchangeName": "Binance", "ticker": "LDOUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Bybit", "ticker": "LDOUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "CoinbasePro", "ticker": "LDO-USD" }, - { "exchangeName": "Kraken", "ticker": "LDOUSD" }, - { "exchangeName": "Kucoin", "ticker": "LDO-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Okx", "ticker": "LDO-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Mexc", "ticker": "LDO_USDT", "adjustByMarket": "USDT-USD" } - ], - "LINK": [ - { "exchangeName": "Binance", "ticker": "LINKUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Bitstamp", "ticker": "LINK/USD" }, - { "exchangeName": "Bybit", "ticker": "LINKUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "CoinbasePro", "ticker": "LINK-USD" }, - { "exchangeName": "Kraken", "ticker": "LINKUSD" }, - { "exchangeName": "Kucoin", "ticker": "LINK-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Okx", "ticker": "LINK-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Mexc", "ticker": "LINK_USDT", "adjustByMarket": "USDT-USD" } - ], - "LTC": [ - { "exchangeName": "Binance", "ticker": "LTCUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Bitstamp", "ticker": "LTC/USD" }, - { "exchangeName": "Bybit", "ticker": "LTCUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "CoinbasePro", "ticker": "LTC-USD" }, - { "exchangeName": "Huobi", "ticker": "ltcusdt", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Kraken", "ticker": "LTCUSD" }, - { "exchangeName": "Kucoin", "ticker": "LTC-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Okx", "ticker": "LTC-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Mexc", "ticker": "LTC_USDT", "adjustByMarket": "USDT-USD" } - ], - "MANA": [ - { "exchangeName": "Binance", "ticker": "MANAUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "CoinbasePro", "ticker": "MANA-USD" }, - { "exchangeName": "Gate", "ticker": "MANA_USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Kraken", "ticker": "MANAUSD" }, - { "exchangeName": "Kucoin", "ticker": "MANA-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Okx", "ticker": "MANA-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Mexc", "ticker": "MANA_USDT", "adjustByMarket": "USDT-USD" } - ], - "MASK": [ - { "exchangeName": "Binance", "ticker": "MASKUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Bybit", "ticker": "MASKUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "CoinbasePro", "ticker": "MASK-USD" }, - { "exchangeName": "Gate", "ticker": "MASK_USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Huobi", "ticker": "maskusdt", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Kucoin", "ticker": "MASK-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Okx", "ticker": "MASK-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Mexc", "ticker": "MASK_USDT", "adjustByMarket": "USDT-USD" } - ], - "MATIC": [ - { "exchangeName": "Binance", "ticker": "MATICUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Bitstamp", "ticker": "MATIC/USD" }, - { "exchangeName": "Bybit", "ticker": "MATICUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "CoinbasePro", "ticker": "MATIC-USD" }, - { "exchangeName": "Huobi", "ticker": "maticusdt", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Kraken", "ticker": "MATICUSD" }, - { "exchangeName": "Kucoin", "ticker": "MATIC-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Okx", "ticker": "MATIC-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Mexc", "ticker": "MATIC_USDT", "adjustByMarket": "USDT-USD" } - ], - "MINA": [ - { "exchangeName": "Binance", "ticker": "MINAUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "CoinbasePro", "ticker": "MINA-USD" }, - { "exchangeName": "Gate", "ticker": "MINA_USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Kraken", "ticker": "MINAUSD" }, - { "exchangeName": "Okx", "ticker": "MINA-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Mexc", "ticker": "MINA_USDT", "adjustByMarket": "USDT-USD" } - ], - "MKR": [ - { "exchangeName": "Binance", "ticker": "MKRUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "CoinbasePro", "ticker": "MKR-USD" }, - { "exchangeName": "Kraken", "ticker": "MKRUSD" }, - { "exchangeName": "Kucoin", "ticker": "MKR-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Okx", "ticker": "MKR-USDT", "adjustByMarket": "USDT-USD" } - ], - "NEAR": [ - { "exchangeName": "Binance", "ticker": "NEARUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Bybit", "ticker": "NEARUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "CoinbasePro", "ticker": "NEAR-USD" }, - { "exchangeName": "Huobi", "ticker": "nearusdt", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Kraken", "ticker": "NEARUSD" }, - { "exchangeName": "Kucoin", "ticker": "NEAR-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Okx", "ticker": "NEAR-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Mexc", "ticker": "NEAR_USDT", "adjustByMarket": "USDT-USD" } - ], - "OP": [ - { "exchangeName": "Binance", "ticker": "OPUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Bybit", "ticker": "OPUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "CoinbasePro", "ticker": "OP-USD" }, - { "exchangeName": "Gate", "ticker": "OP_USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Kraken", "ticker": "OPUSD" }, - { "exchangeName": "Kucoin", "ticker": "OP-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Okx", "ticker": "OP-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Mexc", "ticker": "OP_USDT", "adjustByMarket": "USDT-USD" } - ], - "ORDI": [ - { "exchangeName": "Binance", "ticker": "ORDIUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Bybit", "ticker": "ORDIUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Gate", "ticker": "ORDI_USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Huobi", "ticker": "ordiusdt", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Kucoin", "ticker": "ORDI-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Okx", "ticker": "ORDI-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Mexc", "ticker": "ORDI_USDT", "adjustByMarket": "USDT-USD" } - ], - "PEPE": [ - { "exchangeName": "Binance", "ticker": "PEPEUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Bybit", "ticker": "PEPEUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Kraken", "ticker": "PEPEUSD" }, - { "exchangeName": "Kucoin", "ticker": "PEPE-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Okx", "ticker": "PEPE-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Mexc", "ticker": "PEPE_USDT", "adjustByMarket": "USDT-USD" } - ], - "PYTH": [ - { "exchangeName": "Binance", "ticker": "PYTHUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Bybit", "ticker": "PYTHUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Gate", "ticker": "PYTH_USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Kucoin", "ticker": "PYTH-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Okx", "ticker": "PYTH-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Mexc", "ticker": "PYTH_USDT", "adjustByMarket": "USDT-USD" } - ], - "RNDR": [ - { "exchangeName": "Binance", "ticker": "RNDRUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "CoinbasePro", "ticker": "RNDR-USD" }, - { "exchangeName": "Kraken", "ticker": "RNDRUSD" }, - { "exchangeName": "Kucoin", "ticker": "RNDR-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Okx", "ticker": "RNDR-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Mexc", "ticker": "RNDR_USDT", "adjustByMarket": "USDT-USD" } - ], - "RUNE": [ - { "exchangeName": "Binance", "ticker": "RUNEUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Gate", "ticker": "RUNE_USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Kraken", "ticker": "RUNEUSD" }, - { "exchangeName": "Kucoin", "ticker": "RUNE-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Mexc", "ticker": "RUNE_USDT", "adjustByMarket": "USDT-USD" } - ], - "SAND": [ - { "exchangeName": "Binance", "ticker": "SANDUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "CoinbasePro", "ticker": "SAND-USD" }, - { "exchangeName": "Gate", "ticker": "SAND_USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Kucoin", "ticker": "SAND-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Okx", "ticker": "SAND-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Mexc", "ticker": "SAND_USDT", "adjustByMarket": "USDT-USD" } - ], - "SEI": [ - { "exchangeName": "Binance", "ticker": "SEIUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Bybit", "ticker": "SEIUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "CoinbasePro", "ticker": "SEI-USD" }, - { "exchangeName": "Huobi", "ticker": "seiusdt", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Kraken", "ticker": "SEIUSD" }, - { "exchangeName": "Kucoin", "ticker": "SEI-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Mexc", "ticker": "SEI_USDT", "adjustByMarket": "USDT-USD" } - ], - "SHIB": [ - { "exchangeName": "Binance", "ticker": "SHIBUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Bybit", "ticker": "SHIBUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "CoinbasePro", "ticker": "SHIB-USD" }, - { "exchangeName": "Huobi", "ticker": "shibusdt", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Kraken", "ticker": "SHIBUSD" }, - { "exchangeName": "Kucoin", "ticker": "SHIB-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Okx", "ticker": "SHIB-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Mexc", "ticker": "SHIB_USDT", "adjustByMarket": "USDT-USD" } - ], - "SNX": [ - { "exchangeName": "Binance", "ticker": "SNXUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Bybit", "ticker": "SNXUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "CoinbasePro", "ticker": "SNX-USD" }, - { "exchangeName": "Kraken", "ticker": "SNXUSD" }, - { "exchangeName": "Kucoin", "ticker": "SNX-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Okx", "ticker": "SNX-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Mexc", "ticker": "SNX_USDT", "adjustByMarket": "USDT-USD" } - ], - "SOL": [ - { "exchangeName": "Binance", "ticker": "SOLUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Bitstamp", "ticker": "SOL/USD" }, - { "exchangeName": "Bybit", "ticker": "SOLUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "CoinbasePro", "ticker": "SOL-USD" }, - { "exchangeName": "Huobi", "ticker": "solusdt", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Kraken", "ticker": "SOLUSD" }, - { "exchangeName": "Kucoin", "ticker": "SOL-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Okx", "ticker": "SOL-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Mexc", "ticker": "SOL_USDT", "adjustByMarket": "USDT-USD" } - ], - "STRK": [ - { "exchangeName": "Binance", "ticker": "STRKUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Bybit", "ticker": "STRKUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Kraken", "ticker": "STRKUSD" }, - { "exchangeName": "Kucoin", "ticker": "STRK-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Okx", "ticker": "STRK-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Gate", "ticker": "STRK_USDT", "adjustByMarket": "USDT-USD" } - ], - "STX": [ - { "exchangeName": "Binance", "ticker": "STXUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Bybit", "ticker": "STXUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "CoinbasePro", "ticker": "STX-USD" }, - { "exchangeName": "Gate", "ticker": "STX_USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Kraken", "ticker": "STXUSD" }, - { "exchangeName": "Kucoin", "ticker": "STX-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Okx", "ticker": "STX-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Mexc", "ticker": "STX_USDT", "adjustByMarket": "USDT-USD" } - ], - "SUI": [ - { "exchangeName": "Binance", "ticker": "SUIUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Bybit", "ticker": "SUIUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "CoinbasePro", "ticker": "SUI-USD" }, - { "exchangeName": "Huobi", "ticker": "suiusdt", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Kraken", "ticker": "SUIUSD" }, - { "exchangeName": "Kucoin", "ticker": "SUI-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Okx", "ticker": "SUI-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Mexc", "ticker": "SUI_USDT", "adjustByMarket": "USDT-USD" } - ], - "TIA": [ - { "exchangeName": "Binance", "ticker": "TIAUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Bybit", "ticker": "TIAUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "CoinbasePro", "ticker": "TIA-USD" }, - { "exchangeName": "Kraken", "ticker": "TIAUSD" }, - { "exchangeName": "Kucoin", "ticker": "TIA-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Okx", "ticker": "TIA-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Mexc", "ticker": "TIA_USDT", "adjustByMarket": "USDT-USD" } - ], - "TRX": [ - { "exchangeName": "Binance", "ticker": "TRXUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Bybit", "ticker": "TRXUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Gate", "ticker": "TRX_USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Huobi", "ticker": "trxusdt", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Kraken", "ticker": "TRXUSD" }, - { "exchangeName": "Kucoin", "ticker": "TRX-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Okx", "ticker": "TRX-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Mexc", "ticker": "TRX_USDT", "adjustByMarket": "USDT-USD" } - ], - "UNI": [ - { "exchangeName": "Binance", "ticker": "UNIUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Bybit", "ticker": "UNIUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "CoinbasePro", "ticker": "UNI-USD" }, - { "exchangeName": "Kraken", "ticker": "UNIUSD" }, - { "exchangeName": "Kucoin", "ticker": "UNI-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Okx", "ticker": "UNI-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Mexc", "ticker": "UNI_USDT", "adjustByMarket": "USDT-USD" } - ], - "WLD": [ - { "exchangeName": "Binance", "ticker": "WLDUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Bybit", "ticker": "WLDUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Gate", "ticker": "WLD_USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Kucoin", "ticker": "WLD-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Okx", "ticker": "WLD-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Mexc", "ticker": "WLD_USDT", "adjustByMarket": "USDT-USD" } - ], - "WOO": [ - { "exchangeName": "Binance", "ticker": "WOOUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Gate", "ticker": "WOO_USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Kucoin", "ticker": "WOO-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Okx", "ticker": "WOO-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Mexc", "ticker": "WOO_USDT", "adjustByMarket": "USDT-USD" } - ], - "XLM": [ - { "exchangeName": "Binance", "ticker": "XLMUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Bitstamp", "ticker": "XLM/USD" }, - { "exchangeName": "Bybit", "ticker": "XLMUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "CoinbasePro", "ticker": "XLM-USD" }, - { "exchangeName": "Kraken", "ticker": "XLMUSD" }, - { "exchangeName": "Kucoin", "ticker": "XLM-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Okx", "ticker": "XLM-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Mexc", "ticker": "XLM_USDT", "adjustByMarket": "USDT-USD" } - ], - "XRP": [ - { "exchangeName": "Binance", "ticker": "XRPUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Bitstamp", "ticker": "XRP/USD" }, - { "exchangeName": "Bybit", "ticker": "XRPUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "CoinbasePro", "ticker": "XRP-USD" }, - { "exchangeName": "Huobi", "ticker": "xrpusdt", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Kraken", "ticker": "XRPUSD" }, - { "exchangeName": "Kucoin", "ticker": "XRP-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Okx", "ticker": "XRP-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Mexc", "ticker": "XRP_USDT", "adjustByMarket": "USDT-USD" } - ], - "ZETA": [ - { "exchangeName": "Bybit", "ticker": "ZETAUSDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "CoinbasePro", "ticker": "ZETA-USD" }, - { "exchangeName": "Gate", "ticker": "ZETA_USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Kucoin", "ticker": "ZETA-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Okx", "ticker": "ZETA-USDT", "adjustByMarket": "USDT-USD" }, - { "exchangeName": "Mexc", "ticker": "ZETA_USDT", "adjustByMarket": "USDT-USD" } - ] -} diff --git a/public/configs/otherMarketParameters.json b/public/configs/otherMarketParameters.json deleted file mode 100644 index ffbfbced4..000000000 --- a/public/configs/otherMarketParameters.json +++ /dev/null @@ -1,1158 +0,0 @@ -[ - { - "baseAsset": "1INCH", - "referencePrice": 0.3398645158695157, - "numOracles": 6, - "liquidityTier": 2, - "assetName": "1INCH", - "p": -1.0, - "atomicResolution": -5.0, - "minExchanges": 3, - "minPriceChangePpm": 4000, - "priceExponent": -10.0, - "stepBaseQuantum": 1000000, - "ticksizeExponent": -3, - "subticksPerTick": 1000000, - "minOrderSize": 1000000, - "quantumConversionExponent": -9 - }, - { - "baseAsset": "AAVE", - "referencePrice": 85.34916282287368, - "numOracles": 7, - "liquidityTier": 2, - "assetName": "AAVE", - "p": 1.0, - "atomicResolution": -7.0, - "minExchanges": 3, - "minPriceChangePpm": 4000, - "priceExponent": -8.0, - "stepBaseQuantum": 1000000, - "ticksizeExponent": -3, - "subticksPerTick": 1000000, - "minOrderSize": 1000000, - "quantumConversionExponent": -9 - }, - { - "baseAsset": "ADA", - "referencePrice": 0.5223295461752288, - "numOracles": 9, - "liquidityTier": 1, - "assetName": "Cardano", - "p": -1.0, - "atomicResolution": -5.0, - "minExchanges": 3, - "minPriceChangePpm": 2500, - "priceExponent": -10.0, - "stepBaseQuantum": 1000000, - "ticksizeExponent": -3, - "subticksPerTick": 1000000, - "minOrderSize": 1000000, - "quantumConversionExponent": -9 - }, - { - "baseAsset": "AGIX", - "referencePrice": 0.2445107154373193, - "numOracles": 6, - "liquidityTier": 2, - "assetName": "SingularityNET", - "p": -1.0, - "atomicResolution": -5.0, - "minExchanges": 3, - "minPriceChangePpm": 4000, - "priceExponent": -10.0, - "stepBaseQuantum": 1000000, - "ticksizeExponent": -3, - "subticksPerTick": 1000000, - "minOrderSize": 1000000, - "quantumConversionExponent": -9 - }, - { - "baseAsset": "ALGO", - "referencePrice": 0.1681287078892224, - "numOracles": 6, - "liquidityTier": 2, - "assetName": "Algorand", - "p": -1.0, - "atomicResolution": -5.0, - "minExchanges": 3, - "minPriceChangePpm": 4000, - "priceExponent": -10.0, - "stepBaseQuantum": 1000000, - "ticksizeExponent": -3, - "subticksPerTick": 1000000, - "minOrderSize": 1000000, - "quantumConversionExponent": -9 - }, - { - "baseAsset": "APE", - "referencePrice": 1.1944183891765008, - "numOracles": 7, - "liquidityTier": 2, - "assetName": "ApeCoin", - "p": 0.0, - "atomicResolution": -6.0, - "minExchanges": 3, - "minPriceChangePpm": 4000, - "priceExponent": -9.0, - "stepBaseQuantum": 1000000, - "ticksizeExponent": -3, - "subticksPerTick": 1000000, - "minOrderSize": 1000000, - "quantumConversionExponent": -9 - }, - { - "baseAsset": "APT", - "referencePrice": 7.866427281197853, - "numOracles": 9, - "liquidityTier": 1, - "assetName": "Aptos", - "p": 0.0, - "atomicResolution": -6.0, - "minExchanges": 3, - "minPriceChangePpm": 2500, - "priceExponent": -9.0, - "stepBaseQuantum": 1000000, - "ticksizeExponent": -3, - "subticksPerTick": 1000000, - "minOrderSize": 1000000, - "quantumConversionExponent": -9 - }, - { - "baseAsset": "ARB", - "referencePrice": 1.8941460935787378, - "numOracles": 8, - "liquidityTier": 1, - "assetName": "Arbitrum", - "p": 0.0, - "atomicResolution": -6.0, - "minExchanges": 3, - "minPriceChangePpm": 2500, - "priceExponent": -9.0, - "stepBaseQuantum": 1000000, - "ticksizeExponent": -3, - "subticksPerTick": 1000000, - "minOrderSize": 1000000, - "quantumConversionExponent": -9 - }, - { - "baseAsset": "ATOM", - "referencePrice": 8.376447043890133, - "numOracles": 8, - "liquidityTier": 1, - "assetName": "Cosmos", - "p": 0.0, - "atomicResolution": -6.0, - "minExchanges": 3, - "minPriceChangePpm": 2500, - "priceExponent": -9.0, - "stepBaseQuantum": 1000000, - "ticksizeExponent": -3, - "subticksPerTick": 1000000, - "minOrderSize": 1000000, - "quantumConversionExponent": -9 - }, - { - "baseAsset": "AVAX", - "referencePrice": 35.51220693068919, - "numOracles": 9, - "liquidityTier": 1, - "assetName": "Avalanche", - "p": 1.0, - "atomicResolution": -7.0, - "minExchanges": 3, - "minPriceChangePpm": 2500, - "priceExponent": -8.0, - "stepBaseQuantum": 1000000, - "ticksizeExponent": -3, - "subticksPerTick": 1000000, - "minOrderSize": 1000000, - "quantumConversionExponent": -9 - }, - { - "baseAsset": "BCH", - "referencePrice": 242.55658383981574, - "numOracles": 9, - "liquidityTier": 1, - "assetName": "Bitcoin Cash", - "p": 2.0, - "atomicResolution": -8.0, - "minExchanges": 3, - "minPriceChangePpm": 2500, - "priceExponent": -7.0, - "stepBaseQuantum": 1000000, - "ticksizeExponent": -3, - "subticksPerTick": 1000000, - "minOrderSize": 1000000, - "quantumConversionExponent": -9 - }, - { - "baseAsset": "BLUR", - "referencePrice": 0.6174156210414935, - "numOracles": 7, - "liquidityTier": 2, - "assetName": "Blur", - "p": -1.0, - "atomicResolution": -5.0, - "minExchanges": 3, - "minPriceChangePpm": 4000, - "priceExponent": -10.0, - "stepBaseQuantum": 1000000, - "ticksizeExponent": -3, - "subticksPerTick": 1000000, - "minOrderSize": 1000000, - "quantumConversionExponent": -9 - }, - { - "baseAsset": "BNB", - "referencePrice": 261.9562938974594, - "numOracles": 6, - "liquidityTier": 2, - "assetName": "Binance Coin", - "p": 2.0, - "atomicResolution": -8.0, - "minExchanges": 3, - "minPriceChangePpm": 4000, - "priceExponent": -7.0, - "stepBaseQuantum": 1000000, - "ticksizeExponent": -3, - "subticksPerTick": 1000000, - "minOrderSize": 1000000, - "quantumConversionExponent": -9 - }, - { - "baseAsset": "BONK", - "referencePrice": 1.0481380626265717e-5, - "numOracles": 6, - "liquidityTier": 2, - "assetName": "Bonk Token", - "p": -5.0, - "atomicResolution": -1.0, - "minExchanges": 3, - "minPriceChangePpm": 4000, - "priceExponent": -14.0, - "stepBaseQuantum": 1000000, - "ticksizeExponent": -3, - "subticksPerTick": 1000000, - "minOrderSize": 1000000, - "quantumConversionExponent": -9 - }, - { - "baseAsset": "BTC", - "referencePrice": 44848.16769478778, - "numOracles": 9, - "liquidityTier": 1, - "assetName": "Bitcoin", - "p": 4.0, - "atomicResolution": -10.0, - "minExchanges": 3, - "minPriceChangePpm": 2500, - "priceExponent": -5.0, - "stepBaseQuantum": 1000000, - "ticksizeExponent": -3, - "subticksPerTick": 1000000, - "minOrderSize": 1000000, - "quantumConversionExponent": -9 - }, - { - "baseAsset": "CHZ", - "referencePrice": 0.10152209594142685, - "numOracles": 6, - "liquidityTier": 2, - "assetName": "Chiliz", - "p": -1.0, - "atomicResolution": -5.0, - "minExchanges": 3, - "minPriceChangePpm": 4000, - "priceExponent": -10.0, - "stepBaseQuantum": 1000000, - "ticksizeExponent": -3, - "subticksPerTick": 1000000, - "minOrderSize": 1000000, - "quantumConversionExponent": -9 - }, - { - "baseAsset": "CRV", - "referencePrice": 0.48346754113361784, - "numOracles": 6, - "liquidityTier": 2, - "assetName": "Curve DAO Token", - "p": -1.0, - "atomicResolution": -5.0, - "minExchanges": 3, - "minPriceChangePpm": 4000, - "priceExponent": -10.0, - "stepBaseQuantum": 1000000, - "ticksizeExponent": -3, - "subticksPerTick": 1000000, - "minOrderSize": 1000000, - "quantumConversionExponent": -9 - }, - { - "baseAsset": "DOGE", - "referencePrice": 0.08014457060243645, - "numOracles": 8, - "liquidityTier": 1, - "assetName": "Dogecoin", - "p": -2.0, - "atomicResolution": -4.0, - "minExchanges": 3, - "minPriceChangePpm": 2500, - "priceExponent": -11.0, - "stepBaseQuantum": 1000000, - "ticksizeExponent": -3, - "subticksPerTick": 1000000, - "minOrderSize": 1000000, - "quantumConversionExponent": -9 - }, - { - "baseAsset": "DOT", - "referencePrice": 6.965370230174219, - "numOracles": 8, - "liquidityTier": 1, - "assetName": "Polkadot", - "p": 0.0, - "atomicResolution": -6.0, - "minExchanges": 3, - "minPriceChangePpm": 2500, - "priceExponent": -9.0, - "stepBaseQuantum": 1000000, - "ticksizeExponent": -3, - "subticksPerTick": 1000000, - "minOrderSize": 1000000, - "quantumConversionExponent": -9 - }, - { - "baseAsset": "DYM", - "referencePrice": 5.544949130771594, - "numOracles": 6, - "liquidityTier": 2, - "assetName": "Dymension", - "p": 0.0, - "atomicResolution": -6.0, - "minExchanges": 3, - "minPriceChangePpm": 4000, - "priceExponent": -9.0, - "stepBaseQuantum": 1000000, - "ticksizeExponent": -3, - "subticksPerTick": 1000000, - "minOrderSize": 1000000, - "quantumConversionExponent": -9 - }, - { - "baseAsset": "ENS", - "referencePrice": 17.72913244361432, - "numOracles": 6, - "liquidityTier": 2, - "assetName": "Ethereum Name Service", - "p": 1.0, - "atomicResolution": -7.0, - "minExchanges": 3, - "minPriceChangePpm": 4000, - "priceExponent": -8.0, - "stepBaseQuantum": 1000000, - "ticksizeExponent": -3, - "subticksPerTick": 1000000, - "minOrderSize": 1000000, - "quantumConversionExponent": -9 - }, - { - "baseAsset": "EOS", - "referencePrice": 0.6306070212782233, - "numOracles": 8, - "liquidityTier": 1, - "assetName": "Eos", - "p": -1.0, - "atomicResolution": -5.0, - "minExchanges": 3, - "minPriceChangePpm": 2500, - "priceExponent": -10.0, - "stepBaseQuantum": 1000000, - "ticksizeExponent": -3, - "subticksPerTick": 1000000, - "minOrderSize": 1000000, - "quantumConversionExponent": -9 - }, - { - "baseAsset": "ETC", - "referencePrice": 25.31458356285971, - "numOracles": 8, - "liquidityTier": 1, - "assetName": "Ethereum Classic", - "p": 1.0, - "atomicResolution": -7.0, - "minExchanges": 3, - "minPriceChangePpm": 2500, - "priceExponent": -8.0, - "stepBaseQuantum": 1000000, - "ticksizeExponent": -3, - "subticksPerTick": 1000000, - "minOrderSize": 1000000, - "quantumConversionExponent": -9 - }, - { - "baseAsset": "ETH", - "referencePrice": 2431.2439928708804, - "numOracles": 9, - "liquidityTier": 1, - "assetName": "Ethereum", - "p": 3.0, - "atomicResolution": -9.0, - "minExchanges": 3, - "minPriceChangePpm": 2500, - "priceExponent": -6.0, - "stepBaseQuantum": 1000000, - "ticksizeExponent": -3, - "subticksPerTick": 1000000, - "minOrderSize": 1000000, - "quantumConversionExponent": -9 - }, - { - "baseAsset": "FET", - "referencePrice": 0.5560893147613742, - "numOracles": 6, - "liquidityTier": 2, - "assetName": "Fetch.ai", - "p": -1.0, - "atomicResolution": -5.0, - "minExchanges": 3, - "minPriceChangePpm": 4000, - "priceExponent": -10.0, - "stepBaseQuantum": 1000000, - "ticksizeExponent": -3, - "subticksPerTick": 1000000, - "minOrderSize": 1000000, - "quantumConversionExponent": -9 - }, - { - "baseAsset": "FIL", - "referencePrice": 5.199120507932321, - "numOracles": 8, - "liquidityTier": 1, - "assetName": "Filecoin", - "p": 0.0, - "atomicResolution": -6.0, - "minExchanges": 3, - "minPriceChangePpm": 2500, - "priceExponent": -9.0, - "stepBaseQuantum": 1000000, - "ticksizeExponent": -3, - "subticksPerTick": 1000000, - "minOrderSize": 1000000, - "quantumConversionExponent": -9 - }, - { - "baseAsset": "FTM", - "referencePrice": 0.3711457058956354, - "numOracles": 6, - "liquidityTier": 2, - "assetName": "Fantom", - "p": -1.0, - "atomicResolution": -5.0, - "minExchanges": 3, - "minPriceChangePpm": 4000, - "priceExponent": -10.0, - "stepBaseQuantum": 1000000, - "ticksizeExponent": -3, - "subticksPerTick": 1000000, - "minOrderSize": 1000000, - "quantumConversionExponent": -9 - }, - { - "baseAsset": "GALA", - "referencePrice": 0.01898331222229838, - "numOracles": 6, - "liquidityTier": 2, - "assetName": "Gala", - "p": -2.0, - "atomicResolution": -4.0, - "minExchanges": 3, - "minPriceChangePpm": 4000, - "priceExponent": -11.0, - "stepBaseQuantum": 1000000, - "ticksizeExponent": -3, - "subticksPerTick": 1000000, - "minOrderSize": 1000000, - "quantumConversionExponent": -9 - }, - { - "baseAsset": "GMT", - "referencePrice": 0.20404992804891367, - "numOracles": 6, - "liquidityTier": 2, - "assetName": "GMT", - "p": -1.0, - "atomicResolution": -5.0, - "minExchanges": 3, - "minPriceChangePpm": 4000, - "priceExponent": -10.0, - "stepBaseQuantum": 1000000, - "ticksizeExponent": -3, - "subticksPerTick": 1000000, - "minOrderSize": 1000000, - "quantumConversionExponent": -9 - }, - { - "baseAsset": "GRT", - "referencePrice": 0.13921183278937196, - "numOracles": 7, - "liquidityTier": 2, - "assetName": "The Graph", - "p": -1.0, - "atomicResolution": -5.0, - "minExchanges": 3, - "minPriceChangePpm": 4000, - "priceExponent": -10.0, - "stepBaseQuantum": 1000000, - "ticksizeExponent": -3, - "subticksPerTick": 1000000, - "minOrderSize": 1000000, - "quantumConversionExponent": -9 - }, - { - "baseAsset": "HBAR", - "referencePrice": 0.07686278766140874, - "numOracles": 6, - "liquidityTier": 2, - "assetName": "Hedera", - "p": -2.0, - "atomicResolution": -4.0, - "minExchanges": 3, - "minPriceChangePpm": 4000, - "priceExponent": -11.0, - "stepBaseQuantum": 1000000, - "ticksizeExponent": -3, - "subticksPerTick": 1000000, - "minOrderSize": 1000000, - "quantumConversionExponent": -9 - }, - { - "baseAsset": "ICP", - "referencePrice": 12.381985084851047, - "numOracles": 7, - "liquidityTier": 2, - "assetName": "Internet Computer", - "p": 1.0, - "atomicResolution": -7.0, - "minExchanges": 3, - "minPriceChangePpm": 4000, - "priceExponent": -8.0, - "stepBaseQuantum": 1000000, - "ticksizeExponent": -3, - "subticksPerTick": 1000000, - "minOrderSize": 1000000, - "quantumConversionExponent": -9 - }, - { - "baseAsset": "IMX", - "referencePrice": 2.3007875054054425, - "numOracles": 6, - "liquidityTier": 2, - "assetName": "Immutable X", - "p": 0.0, - "atomicResolution": -6.0, - "minExchanges": 3, - "minPriceChangePpm": 4000, - "priceExponent": -9.0, - "stepBaseQuantum": 1000000, - "ticksizeExponent": -3, - "subticksPerTick": 1000000, - "minOrderSize": 1000000, - "quantumConversionExponent": -9 - }, - { - "baseAsset": "INJ", - "referencePrice": 33.427379051845875, - "numOracles": 7, - "liquidityTier": 2, - "assetName": "Injective", - "p": 1.0, - "atomicResolution": -7.0, - "minExchanges": 3, - "minPriceChangePpm": 4000, - "priceExponent": -8.0, - "stepBaseQuantum": 1000000, - "ticksizeExponent": -3, - "subticksPerTick": 1000000, - "minOrderSize": 1000000, - "quantumConversionExponent": -9 - }, - { - "baseAsset": "JTO", - "referencePrice": 1.8587604617237268, - "numOracles": 6, - "liquidityTier": 2, - "assetName": "Jito", - "p": 0.0, - "atomicResolution": -6.0, - "minExchanges": 3, - "minPriceChangePpm": 4000, - "priceExponent": -9.0, - "stepBaseQuantum": 1000000, - "ticksizeExponent": -3, - "subticksPerTick": 1000000, - "minOrderSize": 1000000, - "quantumConversionExponent": -9 - }, - { - "baseAsset": "JUP", - "referencePrice": 0.4339790660244292, - "numOracles": 6, - "liquidityTier": 2, - "assetName": "Jupiter", - "p": -1.0, - "atomicResolution": -5.0, - "minExchanges": 3, - "minPriceChangePpm": 4000, - "priceExponent": -10.0, - "stepBaseQuantum": 1000000, - "ticksizeExponent": -3, - "subticksPerTick": 1000000, - "minOrderSize": 1000000, - "quantumConversionExponent": -9 - }, - { - "baseAsset": "KAVA", - "referencePrice": 0.6150293989811233, - "numOracles": 7, - "liquidityTier": 2, - "assetName": "Kava", - "p": -1.0, - "atomicResolution": -5.0, - "minExchanges": 3, - "minPriceChangePpm": 4000, - "priceExponent": -10.0, - "stepBaseQuantum": 1000000, - "ticksizeExponent": -3, - "subticksPerTick": 1000000, - "minOrderSize": 1000000, - "quantumConversionExponent": -9 - }, - { - "baseAsset": "LDO", - "referencePrice": 2.872990563900012, - "numOracles": 7, - "liquidityTier": 2, - "assetName": "Lido DAO", - "p": 0.0, - "atomicResolution": -6.0, - "minExchanges": 3, - "minPriceChangePpm": 4000, - "priceExponent": -9.0, - "stepBaseQuantum": 1000000, - "ticksizeExponent": -3, - "subticksPerTick": 1000000, - "minOrderSize": 1000000, - "quantumConversionExponent": -9 - }, - { - "baseAsset": "LINK", - "referencePrice": 18.695585099973265, - "numOracles": 8, - "liquidityTier": 1, - "assetName": "ChainLink", - "p": 1.0, - "atomicResolution": -7.0, - "minExchanges": 3, - "minPriceChangePpm": 2500, - "priceExponent": -8.0, - "stepBaseQuantum": 1000000, - "ticksizeExponent": -3, - "subticksPerTick": 1000000, - "minOrderSize": 1000000, - "quantumConversionExponent": -9 - }, - { - "baseAsset": "LTC", - "referencePrice": 68.82098983684968, - "numOracles": 9, - "liquidityTier": 1, - "assetName": "Litecoin", - "p": 1.0, - "atomicResolution": -7.0, - "minExchanges": 3, - "minPriceChangePpm": 2500, - "priceExponent": -8.0, - "stepBaseQuantum": 1000000, - "ticksizeExponent": -3, - "subticksPerTick": 1000000, - "minOrderSize": 1000000, - "quantumConversionExponent": -9 - }, - { - "baseAsset": "MANA", - "referencePrice": 0.3835526503137334, - "numOracles": 7, - "liquidityTier": 2, - "assetName": "Decentraland", - "p": -1.0, - "atomicResolution": -5.0, - "minExchanges": 3, - "minPriceChangePpm": 4000, - "priceExponent": -10.0, - "stepBaseQuantum": 1000000, - "ticksizeExponent": -3, - "subticksPerTick": 1000000, - "minOrderSize": 1000000, - "quantumConversionExponent": -9 - }, - { - "baseAsset": "MASK", - "referencePrice": 3.0190606294111477, - "numOracles": 8, - "liquidityTier": 1, - "assetName": "Mask Network", - "p": 0.0, - "atomicResolution": -6.0, - "minExchanges": 3, - "minPriceChangePpm": 2500, - "priceExponent": -9.0, - "stepBaseQuantum": 1000000, - "ticksizeExponent": -3, - "subticksPerTick": 1000000, - "minOrderSize": 1000000, - "quantumConversionExponent": -9 - }, - { - "baseAsset": "MATIC", - "referencePrice": 0.8348216286259986, - "numOracles": 9, - "liquidityTier": 1, - "assetName": "Matic Network", - "p": -1.0, - "atomicResolution": -5.0, - "minExchanges": 3, - "minPriceChangePpm": 2500, - "priceExponent": -10.0, - "stepBaseQuantum": 1000000, - "ticksizeExponent": -3, - "subticksPerTick": 1000000, - "minOrderSize": 1000000, - "quantumConversionExponent": -9 - }, - { - "baseAsset": "MINA", - "referencePrice": 0.9996552741300538, - "numOracles": 6, - "liquidityTier": 2, - "assetName": "Mina", - "p": -1.0, - "atomicResolution": -5.0, - "minExchanges": 3, - "minPriceChangePpm": 4000, - "priceExponent": -10.0, - "stepBaseQuantum": 1000000, - "ticksizeExponent": -3, - "subticksPerTick": 1000000, - "minOrderSize": 1000000, - "quantumConversionExponent": -9 - }, - { - "baseAsset": "MKR", - "referencePrice": 1943.1865605831852, - "numOracles": 6, - "liquidityTier": 2, - "assetName": "Maker", - "p": 3.0, - "atomicResolution": -9.0, - "minExchanges": 3, - "minPriceChangePpm": 4000, - "priceExponent": -6.0, - "stepBaseQuantum": 1000000, - "ticksizeExponent": -3, - "subticksPerTick": 1000000, - "minOrderSize": 1000000, - "quantumConversionExponent": -9 - }, - { - "baseAsset": "NEAR", - "referencePrice": 2.9412830334457607, - "numOracles": 8, - "liquidityTier": 1, - "assetName": "Near", - "p": 0.0, - "atomicResolution": -6.0, - "minExchanges": 3, - "minPriceChangePpm": 2500, - "priceExponent": -9.0, - "stepBaseQuantum": 1000000, - "ticksizeExponent": -3, - "subticksPerTick": 1000000, - "minOrderSize": 1000000, - "quantumConversionExponent": -9 - }, - { - "baseAsset": "OP", - "referencePrice": 2.959268526582415, - "numOracles": 8, - "liquidityTier": 1, - "assetName": "Optimism", - "p": 0.0, - "atomicResolution": -6.0, - "minExchanges": 3, - "minPriceChangePpm": 2500, - "priceExponent": -9.0, - "stepBaseQuantum": 1000000, - "ticksizeExponent": -3, - "subticksPerTick": 1000000, - "minOrderSize": 1000000, - "quantumConversionExponent": -9 - }, - { - "baseAsset": "ORDI", - "referencePrice": 51.40287704643513, - "numOracles": 7, - "liquidityTier": 2, - "assetName": "Ordinals", - "p": 1.0, - "atomicResolution": -7.0, - "minExchanges": 3, - "minPriceChangePpm": 4000, - "priceExponent": -8.0, - "stepBaseQuantum": 1000000, - "ticksizeExponent": -3, - "subticksPerTick": 1000000, - "minOrderSize": 1000000, - "quantumConversionExponent": -9 - }, - { - "baseAsset": "PEPE", - "referencePrice": 9.65894964791238e-7, - "numOracles": 6, - "liquidityTier": 2, - "assetName": "Pepe", - "p": -7.0, - "atomicResolution": 1.0, - "minExchanges": 3, - "minPriceChangePpm": 4000, - "priceExponent": -16.0, - "stepBaseQuantum": 1000000, - "ticksizeExponent": -3, - "subticksPerTick": 1000000, - "minOrderSize": 1000000, - "quantumConversionExponent": -9 - }, - { - "baseAsset": "PYTH", - "referencePrice": 0.4024907744770694, - "numOracles": 6, - "liquidityTier": 2, - "assetName": "Pyth Network", - "p": -1.0, - "atomicResolution": -5.0, - "minExchanges": 3, - "minPriceChangePpm": 4000, - "priceExponent": -10.0, - "stepBaseQuantum": 1000000, - "ticksizeExponent": -3, - "subticksPerTick": 1000000, - "minOrderSize": 1000000, - "quantumConversionExponent": -9 - }, - { - "baseAsset": "RNDR", - "referencePrice": 4.490794387737395, - "numOracles": 6, - "liquidityTier": 2, - "assetName": "Render Token", - "p": 0.0, - "atomicResolution": -6.0, - "minExchanges": 3, - "minPriceChangePpm": 4000, - "priceExponent": -9.0, - "stepBaseQuantum": 1000000, - "ticksizeExponent": -3, - "subticksPerTick": 1000000, - "minOrderSize": 1000000, - "quantumConversionExponent": -9 - }, - { - "baseAsset": "RUNE", - "referencePrice": 3.7264809096406806, - "numOracles": 6, - "liquidityTier": 2, - "assetName": "Thorchain", - "p": 0.0, - "atomicResolution": -6.0, - "minExchanges": 3, - "minPriceChangePpm": 4000, - "priceExponent": -9.0, - "stepBaseQuantum": 1000000, - "ticksizeExponent": -3, - "subticksPerTick": 1000000, - "minOrderSize": 1000000, - "quantumConversionExponent": -9 - }, - { - "baseAsset": "SAND", - "referencePrice": 0.37297439115035663, - "numOracles": 6, - "liquidityTier": 2, - "assetName": "The Sandbox", - "p": -1.0, - "atomicResolution": -5.0, - "minExchanges": 3, - "minPriceChangePpm": 4000, - "priceExponent": -10.0, - "stepBaseQuantum": 1000000, - "ticksizeExponent": -3, - "subticksPerTick": 1000000, - "minOrderSize": 1000000, - "quantumConversionExponent": -9 - }, - { - "baseAsset": "SEI", - "referencePrice": 0.6414470586972892, - "numOracles": 7, - "liquidityTier": 2, - "assetName": "Sei", - "p": -1.0, - "atomicResolution": -5.0, - "minExchanges": 3, - "minPriceChangePpm": 4000, - "priceExponent": -10.0, - "stepBaseQuantum": 1000000, - "ticksizeExponent": -3, - "subticksPerTick": 1000000, - "minOrderSize": 1000000, - "quantumConversionExponent": -9 - }, - { - "baseAsset": "SHIB", - "referencePrice": 9.204638050039261e-6, - "numOracles": 8, - "liquidityTier": 1, - "assetName": "Shiba Inu", - "p": -6.0, - "atomicResolution": 0.0, - "minExchanges": 3, - "minPriceChangePpm": 2500, - "priceExponent": -15.0, - "stepBaseQuantum": 1000000, - "ticksizeExponent": -3, - "subticksPerTick": 1000000, - "minOrderSize": 1000000, - "quantumConversionExponent": -9 - }, - { - "baseAsset": "SNX", - "referencePrice": 3.3742698571364094, - "numOracles": 7, - "liquidityTier": 2, - "assetName": "Synthetix Network Token", - "p": 0.0, - "atomicResolution": -6.0, - "minExchanges": 3, - "minPriceChangePpm": 4000, - "priceExponent": -9.0, - "stepBaseQuantum": 1000000, - "ticksizeExponent": -3, - "subticksPerTick": 1000000, - "minOrderSize": 1000000, - "quantumConversionExponent": -9 - }, - { - "baseAsset": "SOL", - "referencePrice": 102.57213563905393, - "numOracles": 9, - "liquidityTier": 1, - "assetName": "Solana", - "p": 2.0, - "atomicResolution": -8.0, - "minExchanges": 3, - "minPriceChangePpm": 2500, - "priceExponent": -7.0, - "stepBaseQuantum": 1000000, - "ticksizeExponent": -3, - "subticksPerTick": 1000000, - "minOrderSize": 1000000, - "quantumConversionExponent": -9 - }, - { - "baseAsset": "STRK", - "referencePrice": 2.05, - "numOracles": 6, - "liquidityTier": 2, - "assetName": "Starknet", - "p": 0.0, - "atomicResolution": -6.0, - "minExchanges": 3, - "minPriceChangePpm": 4000, - "priceExponent": -9.0, - "stepBaseQuantum": 1000000, - "ticksizeExponent": -3, - "subticksPerTick": 1000000, - "minOrderSize": 1000000, - "quantumConversionExponent": -9 - }, - { - "baseAsset": "STX", - "referencePrice": 1.5144048703611412, - "numOracles": 8, - "liquidityTier": 1, - "assetName": "Stacks", - "p": 0.0, - "atomicResolution": -6.0, - "minExchanges": 3, - "minPriceChangePpm": 2500, - "priceExponent": -9.0, - "stepBaseQuantum": 1000000, - "ticksizeExponent": -3, - "subticksPerTick": 1000000, - "minOrderSize": 1000000, - "quantumConversionExponent": -9 - }, - { - "baseAsset": "SUI", - "referencePrice": 1.5452561101842979, - "numOracles": 8, - "liquidityTier": 1, - "assetName": "SuiNetwork", - "p": 0.0, - "atomicResolution": -6.0, - "minExchanges": 3, - "minPriceChangePpm": 2500, - "priceExponent": -9.0, - "stepBaseQuantum": 1000000, - "ticksizeExponent": -3, - "subticksPerTick": 1000000, - "minOrderSize": 1000000, - "quantumConversionExponent": -9 - }, - { - "baseAsset": "TIA", - "referencePrice": 19.71178951640871, - "numOracles": 7, - "liquidityTier": 2, - "assetName": "Celestia", - "p": 1.0, - "atomicResolution": -7.0, - "minExchanges": 3, - "minPriceChangePpm": 4000, - "priceExponent": -8.0, - "stepBaseQuantum": 1000000, - "ticksizeExponent": -3, - "subticksPerTick": 1000000, - "minOrderSize": 1000000, - "quantumConversionExponent": -9 - }, - { - "baseAsset": "TRX", - "referencePrice": 0.10782035164658409, - "numOracles": 8, - "liquidityTier": 1, - "assetName": "TRON", - "p": -1.0, - "atomicResolution": -5.0, - "minExchanges": 3, - "minPriceChangePpm": 2500, - "priceExponent": -10.0, - "stepBaseQuantum": 1000000, - "ticksizeExponent": -3, - "subticksPerTick": 1000000, - "minOrderSize": 1000000, - "quantumConversionExponent": -9 - }, - { - "baseAsset": "UNI", - "referencePrice": 6.374086551681073, - "numOracles": 7, - "liquidityTier": 2, - "assetName": "Uniswap", - "p": 0.0, - "atomicResolution": -6.0, - "minExchanges": 3, - "minPriceChangePpm": 4000, - "priceExponent": -9.0, - "stepBaseQuantum": 1000000, - "ticksizeExponent": -3, - "subticksPerTick": 1000000, - "minOrderSize": 1000000, - "quantumConversionExponent": -9 - }, - { - "baseAsset": "WLD", - "referencePrice": 1.9810696413118303, - "numOracles": 6, - "liquidityTier": 2, - "assetName": "Worldcoin WLD", - "p": 0.0, - "atomicResolution": -6.0, - "minExchanges": 3, - "minPriceChangePpm": 4000, - "priceExponent": -9.0, - "stepBaseQuantum": 1000000, - "ticksizeExponent": -3, - "subticksPerTick": 1000000, - "minOrderSize": 1000000, - "quantumConversionExponent": -9 - }, - { - "baseAsset": "WOO", - "referencePrice": 0.2944897275608197, - "numOracles": 6, - "liquidityTier": 2, - "assetName": "WOO Network", - "p": -1.0, - "atomicResolution": -5.0, - "minExchanges": 3, - "minPriceChangePpm": 4000, - "priceExponent": -10.0, - "stepBaseQuantum": 1000000, - "ticksizeExponent": -3, - "subticksPerTick": 1000000, - "minOrderSize": 1000000, - "quantumConversionExponent": -9 - }, - { - "baseAsset": "XLM", - "referencePrice": 0.1093759305057456, - "numOracles": 8, - "liquidityTier": 1, - "assetName": "Stellar", - "p": -1.0, - "atomicResolution": -5.0, - "minExchanges": 3, - "minPriceChangePpm": 2500, - "priceExponent": -10.0, - "stepBaseQuantum": 1000000, - "ticksizeExponent": -3, - "subticksPerTick": 1000000, - "minOrderSize": 1000000, - "quantumConversionExponent": -9 - }, - { - "baseAsset": "XRP", - "referencePrice": 0.5140463170757591, - "numOracles": 9, - "liquidityTier": 1, - "assetName": "Ripple", - "p": -1.0, - "atomicResolution": -5.0, - "minExchanges": 3, - "minPriceChangePpm": 2500, - "priceExponent": -10.0, - "stepBaseQuantum": 1000000, - "ticksizeExponent": -3, - "subticksPerTick": 1000000, - "minOrderSize": 1000000, - "quantumConversionExponent": -9 - }, - { - "baseAsset": "ZETA", - "referencePrice": 1.0427131536820096, - "numOracles": 6, - "liquidityTier": 2, - "assetName": "ZetaChain", - "p": 0.0, - "atomicResolution": -6.0, - "minExchanges": 3, - "minPriceChangePpm": 4000, - "priceExponent": -9.0, - "stepBaseQuantum": 1000000, - "ticksizeExponent": -3, - "subticksPerTick": 1000000, - "minOrderSize": 1000000, - "quantumConversionExponent": -9 - } -] diff --git a/public/configs/v1/env.json b/public/configs/v1/env.json index 06535100b..6b8f4cd03 100644 --- a/public/configs/v1/env.json +++ b/public/configs/v1/env.json @@ -72,7 +72,12 @@ "strideZoneApp": "https://testnet.stride.zone", "accountExportLearnMore": "https://help.dydx.exchange/en/articles/8565867-secret-phrase-on-dydx-chain", "walletLearnMore": "https://www.dydx.academy/video/defi-wallet", - "launchIncentive": "https://cloud.chaoslabs.co" + "withdrawalGateLearnMore": "https://help.dydx.exchange/en/articles/8981384-withdrawals-on-dydx-chain#h_23e97bc665", + "launchIncentive": "https://cloud.chaoslabs.co", + "tradingRewardsLearnMore": "https://docs.dydx.exchange/rewards/trading_rewards", + "exchangeStats": "https://app.mode.com/dydx_eng/reports/58822121650d?secret_key=391d9214fe6aefec35b7d35c", + "initialMarginFractionLearnMore": "https://docs.dydx.exchange/governance/functionalities#liquidity-tiers", + "complianceSupportEmail": "support@dydx.exchange" }, "dydx-testnet-4": { "tos": "https://dydx.exchange/v4-terms", @@ -94,7 +99,12 @@ "strideZoneApp": "https://testnet.stride.zone", "accountExportLearnMore": "https://help.dydx.exchange/en/articles/8565867-secret-phrase-on-dydx-chain", "walletLearnMore": "https://www.dydx.academy/video/defi-wallet", - "launchIncentive": "https://cloud.chaoslabs.co" + "withdrawalGateLearnMore": "https://help.dydx.exchange/en/articles/8981384-withdrawals-on-dydx-chain#h_23e97bc665", + "launchIncentive": "https://cloud.chaoslabs.co", + "tradingRewardsLearnMore": "https://docs.dydx.exchange/rewards/trading_rewards", + "exchangeStats": "https://app.mode.com/dydx_eng/reports/58822121650d?secret_key=391d9214fe6aefec35b7d35c", + "initialMarginFractionLearnMore": "https://docs.dydx.exchange/governance/functionalities#liquidity-tiers", + "complianceSupportEmail": "support@dydx.exchange" }, "[mainnet chain id]": { "tos": "[HTTP link to TOS]", @@ -116,7 +126,12 @@ "strideZoneApp": "[HTTP link to stride zone app, can be null]", "accountExportLearnMore": "[HTTP link to account export learn more, can be null]", "walletLearnMore": "[HTTP link to wallet learn more, can be null]", - "launchIncentive": "[HTTP link to launch incentive host, can be null]" + "withdrawalGateLearnMore": "[HTTP link to withdrawal gate learn more, can be null]", + "launchIncentive": "[HTTP link to launch incentive host, can be null]", + "tradingRewardsLearnMore": "[HTTP link to trading rewards learn more, can be null]", + "exchangeStats": "[HTTP link to exchange stats, can be null]", + "initialMarginFractionLearnMore": "[HTTP link to governance functionalities liquidity tiers, can be null]", + "complianceSupportEmail": "[Email address for compliance support, can be null]" } }, "wallets": { @@ -222,6 +237,7 @@ "environments": [ "dydxprotocol-dev", "dydxprotocol-dev-2", + "dydxprotocol-dev-3", "dydxprotocol-dev-4", "dydxprotocol-dev-5", "dydxprotocol-staging", @@ -258,11 +274,18 @@ ], "0xsquid": "https://testnet.api.0xsquid.com", "nobleValidator": "https://noble-testnet-rpc.polkachu.com/", + "geo": "https://api.dydx.exchange/v4/geo", "faucet": "https://faucet.v4dev.dydx.exchange" }, "featureFlags": { "reduceOnlySupported": true, - "usePessimisticCollateralCheck": false + "usePessimisticCollateralCheck": false, + "useOptimisticCollateralCheck": true, + "withdrawalSafetyEnabled": true, + "CCTPWithdrawalOnly": true, + "CCTPDepositOnly": true, + "isSlTpEnabled": true, + "isSlTpLimitOrdersEnabled": false } }, "dydxprotocol-dev-2": { @@ -284,11 +307,52 @@ "http://54.92.118.111" ], "0xsquid": "https://testnet.api.0xsquid.com", - "nobleValidator": "https://noble-testnet-rpc.polkachu.com/" + "nobleValidator": "https://noble-testnet-rpc.polkachu.com/", + "geo": "https://api.dydx.exchange/v4/geo" + }, + "featureFlags": { + "reduceOnlySupported": true, + "usePessimisticCollateralCheck": false, + "useOptimisticCollateralCheck": true, + "withdrawalSafetyEnabled": true, + "CCTPWithdrawalOnly": true, + "CCTPDepositOnly": true, + "isSlTpEnabled": true, + "isSlTpLimitOrdersEnabled": false + } + }, + "dydxprotocol-dev-3": { + "name": "v4 Dev 3", + "ethereumChainId": "11155111", + "dydxChainId": "dydxprotocol-testnet", + "chainName": "dYdX Chain", + "chainLogo": "/dydx-chain.png", + "squidIntegratorId": "dYdX-api", + "isMainNet": false, + "endpoints": { + "indexers": [ + { + "api": "http://dev3-indexer-apne1-lb-public-1613790025.ap-northeast-1.elb.amazonaws.com", + "socket": "ws://dev3-indexer-apne1-lb-public-1613790025.ap-northeast-1.elb.amazonaws.com" + } + ], + "validators": [ + "http://validator-dev3-lb-1393802013.us-east-2.elb.amazonaws.com" + ], + "0xsquid": "https://testnet.api.0xsquid.com", + "nobleValidator": "https://noble-testnet-rpc.polkachu.com/", + "geo": "https://api.dydx.exchange/v4/geo", + "faucet": "http://dev3-faucet-lb-public-1644791410.us-east-2.elb.amazonaws.com" }, "featureFlags": { "reduceOnlySupported": true, - "usePessimisticCollateralCheck": false + "usePessimisticCollateralCheck": false, + "useOptimisticCollateralCheck": true, + "withdrawalSafetyEnabled": true, + "CCTPWithdrawalOnly": true, + "CCTPDepositOnly": true, + "isSlTpEnabled": true, + "isSlTpLimitOrdersEnabled": false } }, "dydxprotocol-dev-4": { @@ -311,11 +375,18 @@ ], "0xsquid": "https://testnet.api.0xsquid.com", "nobleValidator": "https://noble-testnet-rpc.polkachu.com/", + "geo": "https://api.dydx.exchange/v4/geo", "faucet": "https://faucet.v4dev4.dydx.exchange" }, "featureFlags": { "reduceOnlySupported": true, - "usePessimisticCollateralCheck": false + "usePessimisticCollateralCheck": false, + "useOptimisticCollateralCheck": true, + "withdrawalSafetyEnabled": true, + "CCTPWithdrawalOnly": true, + "CCTPDepositOnly": true, + "isSlTpEnabled": true, + "isSlTpLimitOrdersEnabled": false } }, "dydxprotocol-dev-5": { @@ -337,11 +408,18 @@ "http://18.223.78.50" ], "0xsquid": "https://testnet.api.0xsquid.com", - "nobleValidator": "https://noble-testnet-rpc.polkachu.com/" + "nobleValidator": "https://noble-testnet-rpc.polkachu.com/", + "geo": "https://api.dydx.exchange/v4/geo" }, "featureFlags": { "reduceOnlySupported": true, - "usePessimisticCollateralCheck": false + "usePessimisticCollateralCheck": false, + "useOptimisticCollateralCheck": true, + "withdrawalSafetyEnabled": true, + "CCTPWithdrawalOnly": true, + "CCTPDepositOnly": true, + "isSlTpEnabled": true, + "isSlTpLimitOrdersEnabled": false } }, "dydxprotocol-staging": { @@ -364,11 +442,18 @@ "https://validator.v4staging.dydx.exchange" ], "0xsquid": "https://testnet.api.squidrouter.com", - "nobleValidator": "https://noble-testnet-rpc.polkachu.com/" + "nobleValidator": "https://noble-testnet-rpc.polkachu.com/", + "geo": "https://api.dydx.exchange/v4/geo" }, "featureFlags": { "reduceOnlySupported": true, - "usePessimisticCollateralCheck": false + "usePessimisticCollateralCheck": false, + "useOptimisticCollateralCheck": true, + "withdrawalSafetyEnabled": true, + "CCTPWithdrawalOnly": true, + "CCTPDepositOnly": true, + "isSlTpEnabled": true, + "isSlTpLimitOrdersEnabled": false } }, "dydxprotocol-staging-forced-update": { @@ -391,7 +476,8 @@ "https://validator.v4staging.dydx.exchange" ], "0xsquid": "https://testnet.api.squidrouter.com", - "nobleValidator": "https://noble-testnet-rpc.polkachu.com/" + "nobleValidator": "https://noble-testnet-rpc.polkachu.com/", + "geo": "https://api.dydx.exchange/v4/geo" }, "apps": { "ios": { @@ -402,7 +488,13 @@ }, "featureFlags": { "reduceOnlySupported": true, - "usePessimisticCollateralCheck": false + "usePessimisticCollateralCheck": false, + "useOptimisticCollateralCheck": true, + "withdrawalSafetyEnabled": true, + "CCTPWithdrawalOnly": true, + "CCTPDepositOnly": true, + "isSlTpEnabled": true, + "isSlTpLimitOrdersEnabled": false } }, "dydxprotocol-staging-west": { @@ -425,11 +517,18 @@ "https://validator-uswest1.v4staging.dydx.exchange" ], "0xsquid": "https://testnet.api.squidrouter.com", - "nobleValidator": "https://noble-testnet-rpc.polkachu.com/" + "nobleValidator": "https://noble-testnet-rpc.polkachu.com/", + "geo": "https://api.dydx.exchange/v4/geo" }, "featureFlags": { "reduceOnlySupported": true, - "usePessimisticCollateralCheck": false + "usePessimisticCollateralCheck": false, + "useOptimisticCollateralCheck": true, + "withdrawalSafetyEnabled": true, + "CCTPWithdrawalOnly": true, + "CCTPDepositOnly": true, + "isSlTpEnabled": true, + "isSlTpLimitOrdersEnabled": false } }, "dydxprotocol-testnet": { @@ -456,11 +555,18 @@ ], "0xsquid": "https://testnet.api.squidrouter.com", "nobleValidator": "https://noble-testnet-rpc.polkachu.com/", + "geo": "https://api.dydx.exchange/v4/geo", "faucet": "https://faucet.v4testnet.dydx.exchange" }, "featureFlags": { "reduceOnlySupported": true, - "usePessimisticCollateralCheck": true + "usePessimisticCollateralCheck": false, + "useOptimisticCollateralCheck": true, + "withdrawalSafetyEnabled": true, + "CCTPWithdrawalOnly": true, + "CCTPDepositOnly": true, + "isSlTpEnabled": true, + "isSlTpLimitOrdersEnabled": false } }, "dydxprotocol-testnet-dydx": { @@ -483,11 +589,17 @@ ], "0xsquid": "https://testnet.api.squidrouter.com", "nobleValidator": "https://noble-testnet-rpc.polkachu.com/", + "geo": "https://api.dydx.exchange/v4/geo", "faucet": "https://faucet.v4testnet.dydx.exchange" }, "featureFlags": { "reduceOnlySupported": true, - "usePessimisticCollateralCheck": true + "usePessimisticCollateralCheck": true, + "withdrawalSafetyEnabled": true, + "CCTPWithdrawalOnly": true, + "CCTPDepositOnly": true, + "isSlTpEnabled": true, + "isSlTpLimitOrdersEnabled": false } }, "dydxprotocol-testnet-nodefleet": { @@ -510,11 +622,18 @@ ], "0xsquid": "https://testnet.api.squidrouter.com", "nobleValidator": "https://noble-testnet-rpc.polkachu.com/", + "geo": "https://api.dydx.exchange/v4/geo", "faucet": "https://faucet.v4testnet.dydx.exchange" }, "featureFlags": { "reduceOnlySupported": true, - "usePessimisticCollateralCheck": true + "usePessimisticCollateralCheck": false, + "useOptimisticCollateralCheck": true, + "withdrawalSafetyEnabled": true, + "CCTPWithdrawalOnly": true, + "CCTPDepositOnly": true, + "isSlTpEnabled": true, + "isSlTpLimitOrdersEnabled": false } }, "dydxprotocol-testnet-kingnodes": { @@ -537,11 +656,17 @@ ], "0xsquid": "https://testnet.api.squidrouter.com", "nobleValidator": "https://noble-testnet-rpc.polkachu.com/", + "geo": "https://api.dydx.exchange/v4/geo", "faucet": "https://faucet.v4testnet.dydx.exchange" }, "featureFlags": { "reduceOnlySupported": true, - "usePessimisticCollateralCheck": true + "usePessimisticCollateralCheck": true, + "withdrawalSafetyEnabled": true, + "CCTPWithdrawalOnly": true, + "CCTPDepositOnly": true, + "isSlTpEnabled": true, + "isSlTpLimitOrdersEnabled": false } }, "dydxprotocol-testnet-liquify": { @@ -564,11 +689,18 @@ ], "0xsquid": "https://testnet.api.squidrouter.com", "nobleValidator": "https://noble-testnet-rpc.polkachu.com/", + "geo": "https://api.dydx.exchange/v4/geo", "faucet": "https://faucet.v4testnet.dydx.exchange" }, "featureFlags": { "reduceOnlySupported": true, - "usePessimisticCollateralCheck": true + "usePessimisticCollateralCheck": false, + "useOptimisticCollateralCheck": true, + "withdrawalSafetyEnabled": true, + "CCTPWithdrawalOnly": true, + "CCTPDepositOnly": true, + "isSlTpEnabled": true, + "isSlTpLimitOrdersEnabled": false } }, "dydxprotocol-testnet-polkachu": { @@ -591,11 +723,18 @@ ], "0xsquid": "https://testnet.api.squidrouter.com", "nobleValidator": "https://noble-testnet-rpc.polkachu.com/", + "geo": "https://api.dydx.exchange/v4/geo", "faucet": "https://faucet.v4testnet.dydx.exchange" }, "featureFlags": { "reduceOnlySupported": true, - "usePessimisticCollateralCheck": true + "usePessimisticCollateralCheck": false, + "useOptimisticCollateralCheck": true, + "withdrawalSafetyEnabled": true, + "CCTPWithdrawalOnly": true, + "CCTPDepositOnly": true, + "isSlTpEnabled": true, + "isSlTpLimitOrdersEnabled": false } }, "dydxprotocol-testnet-bware": { @@ -618,11 +757,18 @@ ], "0xsquid": "https://testnet.api.squidrouter.com", "nobleValidator": "https://noble-testnet-rpc.polkachu.com/", + "geo": "https://api.dydx.exchange/v4/geo", "faucet": "https://faucet.v4testnet.dydx.exchange" }, "featureFlags": { "reduceOnlySupported": true, - "usePessimisticCollateralCheck": true + "usePessimisticCollateralCheck": false, + "useOptimisticCollateralCheck": true, + "withdrawalSafetyEnabled": true, + "CCTPWithdrawalOnly": true, + "CCTPDepositOnly": true, + "isSlTpEnabled": true, + "isSlTpLimitOrdersEnabled": false } }, "dydxprotocol-mainnet": { @@ -645,12 +791,19 @@ "[Validator endpoint n]" ], "0xsquid": "[0xSquid endpoint for mainnet]", - "nobleValidator": "[noble validator endpoint for mainnet]" + "nobleValidator": "[noble validator endpoint for mainnet]", + "geo": "[geo endpoint for mainnet]" }, "featureFlags": { - "reduceOnlySupported": false, - "usePessimisticCollateralCheck": true + "reduceOnlySupported": true, + "usePessimisticCollateralCheck": false, + "useOptimisticCollateralCheck": true, + "withdrawalSafetyEnabled": true, + "CCTPWithdrawalOnly": true, + "CCTPDepositOnly": true, + "isSlTpEnabled": true, + "isSlTpLimitOrdersEnabled": false } } } -} \ No newline at end of file +} diff --git a/public/currencies/aevo.png b/public/currencies/aevo.png new file mode 100644 index 0000000000000000000000000000000000000000..dfde5a91e57f2b3d0811aec2071b89a39765b81d GIT binary patch literal 5107 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 VX)}sCgM0u0002ovPDHLkV1mm^oag`m literal 0 HcmV?d00001 diff --git a/public/currencies/api3.png b/public/currencies/api3.png new file mode 100644 index 0000000000000000000000000000000000000000..39af95ed0dd37e4ebbd0918a71836349d6ec2187 GIT binary patch literal 41195 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 a{}S?=#i{rRix=YIKI*DkDrL_s-~S&q?kIi$ literal 0 HcmV?d00001 diff --git a/public/currencies/arkm.png b/public/currencies/arkm.png new file mode 100644 index 0000000000000000000000000000000000000000..caf472fd61299278e564d064cf3f55635bc1571f GIT binary patch literal 63781 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 QM*si-07*qoM6N<$f{V=20{{R3 literal 0 HcmV?d00001 diff --git a/public/currencies/astr.png b/public/currencies/astr.png new file mode 100644 index 0000000000000000000000000000000000000000..f2aca1cfb108a25f8cceab9cc424e758aae888d1 GIT binary patch literal 208934 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 Q&j2sY2XM7K70b8(53S!7YXATM literal 0 HcmV?d00001 diff --git a/public/currencies/axl.png b/public/currencies/axl.png new file mode 100644 index 0000000000000000000000000000000000000000..15a0dd70827c4094f8d6dee686b48720ee853e1d GIT binary patch literal 61703 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 literal 0 HcmV?d00001 diff --git a/public/currencies/bome.png b/public/currencies/bome.png new file mode 100644 index 0000000000000000000000000000000000000000..cd9aeebce66827abed47d3e1d56aebac9a4972c5 GIT binary patch literal 121689 zcmZ^}1yo$k(k@JbdywD~EI@+m;0ZQBa0wFJoxulpw_qW_;2wen3p)59!7ca<F2Q}U zKkqr;z2~g|-rIZi>guj~y1J`&@3pJDW7JiF_&8KJC@3iSiVCutC@9a!{>fMve_M)F zeyaVgnApk4s4L3Iyi#{_v9@!xLP23m_Wb<*!*dPNh$K5~UQ=1QII{Zkk7Rt<@?wqU zUHzumv(DBKfr(R*MA^1zgGM5pLX~hQB<gIb+*AH5TMc5)C7^Vg^0mmU?W7;g7!0vG zvh|!cv`23Y^OcL9wVTjuF3y_hM;q{D97^j%jV%jV`W9L`d}+z#fq?F)*}{LW_oE2$ z#G2Q5Vk{G8V@n0}(y2zQDnsCmFr}Dx`nfoRxzCC@L^$S7*&r62=RSbY8vE9pF`CtH z3Au^<2^@K2x6ZnrznEfU0LXjmU?O&Mh`yr0`I+!@Bu@e*^KP8Nd+BgyjmRM1p3z(Y zj_L2<7(vU=5ppXUN)&DrF*|1OdI6z*#L~q)(92`$R{a7T<<94;vDp<-UHt?+;A87v z*gI2d0Mt6R;@)sh>pJ}-D|1u?#l)@c5_eH>5TUKM<6VdSQUXbq32Jq`8r26&-ft&N zCVwq%Zl$Mat)hbR<}Zzf^86Vw3hH0#+202x$_@qXUo;BJ>%S!m3TjFu3g+LE_-|Iv zfBwI?&&cvo|3m*H_+Cp!QSoo7W#MLJ<?L?j;^A>t3PM47E@7vw=b@*fENbE6#ARmb zVs6C+cKXZso5aDQe@Q1R53^TbCr4*@QLqH#za&Ke(*HDbGrszlh=+p&qn?WTD;XCz zt5-r?JX}1Ck~ptky%Kk`v=-HrmH!|3-<kxYt%nCll$+bz+ndXqpUcI~hMQMJM1-4% zkDHH=^REP_yN|Pn8JN@Ao$245{I7mwt=ui#>_8rNF3zw1>DSEM#nVHAk?|iz|2zGA zoK|4F|7db{|DS37ognu=9By7N9`64e%)`$5{{j1l^KaO{=JjuN;{S9es%{6ia@3c# zbNXx5zeAH0<P{MAmzw{B^PhqK8>!=N<tF3e^cUzM`5(9Z5BR^C|9{}WRO<alrLd6j zf2;g2&VM2QnS!XAo84b+X8+hwl2@Gj|7iOkd2#N44E$dP|F<{))%w?+k~rer|NGUD z#G(7Vv4(>34n<M+y*BvSpB0~4mjxaAt2K`@?=^=C76zVBJ_Tv4aBDQ;H$0}eDiooA zFqVSDl1C@vdm?C`-p9sjagnq=$Hp*pW5ck}HIKLA9};@ahK?^i;7YTJ5&l(xu*%sJ ziWs}jIJT*(KMv3&CQoUd?e)7`T|0)<M>Wp3&#&6#ooA0bmr{qKazA`=S;(R_@p*J? zy1wt<hbxY34Z+5?qmr`oj+R>++k8d_#{Tq7BKEEjlUrNqmEPQB)b+RhpPIJ)bd$E@ zZs!~u4Svnnr!Fu?UG6!0`Mdqd9o;@in6*x<pYAvJ`O#5d4~2SzodQ||*33IR$M^R3 zjDS(VV@Z*$ht<=^KbMt<5A)EgI}<;U49`6Vt6N~$^iwor-Z@~=?`eemd?Ulr5b$_0 zdbmJh9rpnHWep_Xjw_n=4WuynJiZPVN=gNY7>v)AW!G=n^Ja4<*+c<{Omeq>N_}#2 z{54m<v9LF^=V;L=v9!Dl;rtS}Fm!tA=;9LO1qKN${a*fR^t0A|pts+gcd5+_@QF)! z+S<a)w>9w~b99ciexb4Ql=YzB(eJ$H^k|H8o~(X$<$U^si<C&a$IjmA5w!F8<YdSA z?qMxxdJp1yjtFp@t`k?@x-P7FLaHq+irftM?=Rxc$Gug{9KEIsYVB-ol$3~9p65l* zI@);qHRa|FP}02KX^<>SJOGg90TO2I1+&L@TweqGWBTngeRBw|2(7Vo*V(?*CnU@| zS~$3SL3}fg+o)h}fThLNETeXC!5gjO)QxGtX9rj9k%h4_FH}V-ASR5z_RF5l^;G{t zNgTNiEQ+;$V}>xa+luaIOt7X?T`tr{!lZp~cYltS+*=ZncRvliRtsu=wsIc`aD|sz z_<U73=wCzXaA(%k1kRdooVcsn_^Evzy%ydeAr62r^Sy|%%p%Tsv80kU-n5P;)bz2w zcO#5~6E+o8w#}<py)H<s&%xiJ|BHYy>GzG}OIA&*3imWD>&zcI`w)nm0=6S@<Dis? zDn-he&<2QRBM2qOsO^U?VAmvz)qZkoXh^Yp<@aypY+0FSO<&87trnXt6iY50DVNny z9gIwtT;<6LY@*25B&Aw!Di0Rs)b2N*?t7nFQP%E#72NY@P8bpp__50w{xEO<Zgbb` z<|<upsA=a<<j+gTAXm|~?3`*si(;TF87#Bf@e5H#O*Av51gwiPno5=$6Ns5P26`T& zZ~hBLBTdZ8sL9)*ztzhQqFanM2PA$^PTLqnDl%sM_AZrLT0+L-lEhdVFo!Tv>BC}Z z{=kM<x<kSYN}OVGB*A;Ht1XO)K1bW6vrj8BmKF7GEO_lMB+7{5yw|NZj6>b{6}n+Z z=5I}{KNK@9W(;vYc3kuHt$l2Kczf`)w`2Se2Q7wX?-lfiWG8MhFeZ&ZWw``hxVf%* zf9EoMbQdGP&TU^_9Qh2T-%#mu^(AGJ`g&-nH^93oD(`aWQTKwgkNv9#DJ?|0lygga z@n%H-vzsJdwmZm}-UQOK`5Ax%^77`M(camGzl!YC@l4dR9u4PL&m$2TZWv7FKg)<% zbW>o=e@?4M6VI2Z@U&$(H57rngdRsCGmb!*RgE~hI9bX!<Ql1LTKImETL)Ch*&3<J zqOC4dP3}3?8Taq~p{t%FUu%a*U6nNvN<9YMPafZOUYD(pUc7P-j$KhEB*yIAy;_oT ztvfw>a+ZMZ#LXY{!p3x2&l9S`l+E^!KE!*yMEww+BADVcr$qPg`x9{m4fBs(yNJDr zii9>n`KzDN6mE0Ue6ybu&1=)M*<Q0|+A;I7!Fmcj!Z&1PyWa=1B7b-M{FK-)I;_e_ z>ItB=%GR&FL|6i{Js}bIL{-7v`kO}@h%WY@36?~F&XU5{PEFqH`EPzGtysa`H7n|W zEq)$<d~96kHiOv0SxVouqKJ=@+DSIkrP=N=@4(14J71PH<me;3=E|B^o5dGy7jBVX zp00u(y6Jr!7+lW}ipD~|JOVqGsGEB;Rs!!}oI=OQrSq-FjPDtD^!0|c%yUxFW?PX8 z5TG?GZx;oJh4|rR{Exv}$2;l5D0U(JP1VG`VT9|^7_)TU5yP9`tE$YkjYbZyF<tRe z`sZ6J6o*IDDLo1aZi&k#BJ(C#Ri$S(7CjuM4OD2-6=Y-?%|m3=(q&aN7z{|u3Z$m1 zb>>u*>dqRm#8snvDPzJWqXZT|k<P&)aLKKym#Dj+Oua4*N&|;TGG9U(Hqy|z85sV= zS`an<(%t%Hm`7v%oGdT({&HY_%1`&;Qy>x?bZaDa8zyyIJ^3`cfjS<N@`SoJny}LA z4m~;$qN{H|Yu>56ewZJr8li7%3`h|i%_Vbm<UxK{q4{GYK>iY*ZYT5ImQPuv@Oj0Y zy!kKZr(yG7bL>}F*ZM|`A%|{gg)zO~KS3b1eAAe?-zDVCW;})2XlJCIkmj}MQY!{= z$*LrjuEdqHZ1x723%|7cJ#hTBauKfvkO`MrU;Sv3E;BANMd#EbE!d-Y5KKw+Z&|a7 zE(>tm#AYLl#0M|1W-Y!&up-|#+eX#bt!kwY?`^7Tfo7n;IPhV&j*(4=mvh?|YXN2l zyi!fKiHFC&mz5?f&0U%Y*1o2Ich7~VQTsy3gEmYamixCQf?Voak(mem9V55<2Jw9t zeW6xK@K5@^JflQc?$23c-f@(FOw))YAu&@_#5?eX{YbWp-NWgvT55?gUrs<U4P-@@ z_lh`h>=2jrRm?2H1dQ0r_!<$m-vW`95ynoL_WM23;Tm9O`o!Kkwu~B8mC8s9Y|g^3 z8}M=`t*N+XNMV~s@B0Pvjix3xxgS6b?rNizw^Vf@?gE^>Qi=VGasB|^nJ<Cz+#}1L zN^zvy)gKKN)yRd_zWnv1h5I8b^gJ)<_~~q9c5<}lE(eu!=Z^MI0`3WVjqmJOQR3>Q z#Q9c$N#pO<<GCE8NZ+q^{eh6s2rZ8B6?|_ob6aYrGlf0|oM<HZ`EX|OH;acYe<^Rn z<wIWlZ+6O*?lndrg81xd)35SZ36OJKnmL}2s-X<z%Zf<2gUJA;%nk*!XLTN*t0^R$ z?R`E9K`%GBV!ZAvm!e?5>o26@^9lp<A3|Eq-%u@B<C>3NWxAEzd1;1hJ*P8uwxS)- z{$o%oOT!Fg6kQs}=y>=ON7U%*xbG&wDDYx9M8zLf%yBR9yBlo5(b+i5Xc<XTKf70S zv=FqmrzU=M;Tm-A2fg;Yp1QDZ%>(dM%srqTVqjP>c(wS<6XyL|yNo!vO~*@T<&C}k z^94xhS^tbPu_&GkhkgXFY_X1qCc|%DlWxNdOOsld$sx?90W!uoW^RQ{lP@Gsv;Z(A zP*U}#xunuyGG`%3FPNaMYDPS*PKh)hkbp`|$Fo0z6?+Ea*c)5<4b+K6katLwAtOjw zhw^A>-k=Pn%@Cp`GVb7Lquu4iP!V0~QqB!RMs-Ja)p`Xj-idYNxN-ws^=UVdE+;0g zUrgC_*KY}9$DE37y_!v}8~(DnvH~3cQnpk-a@-;$wqgSLMd<x_-7ylU`&dbTtLst~ zDGZflB*60tlzr#CIlzsK)a?YdJmk_3r|s}tk38I-PR>$9HHPVvi3-~!1^g*GAQ*gq z<YqWpt$jd>SBoc(1Et)s!LlO#9xSo>Tj<5kB&80tRE$?W(jo0*<A_MS;T9BMbW+9n z<vf-N#_CpAlJ<kzd@8=`SiBk4HUCSc3$tO%*dBI0@*lRiYp*g1G3O|v!Lo{_Z?^E# z-{5kquGelF4X?bOrqJS0^#WugikJJJn*=dZsai`-m()c&3Lh(a{TZ%lGYe_MGTz<1 z=%QtAlG#oZ0s48Kh)nbKRd0vn$*uR#{egFOLCK=NG@c)BUHP`OUkrp*R=V7iKb@2v zV_^$VM-7EAL=o2CCM^9aSv$iw5m^Gmu73%0Ntt#2OwpLO;A%-tu>)4=Zw^yEV<M8H z8JNh-C%QAu;;J<vFlXLq5{%;eDf_yV?`S*TQlf+ymg>(Wwehj+c*;`d6Vjr5SeabY zkV%y0O9=Ug${&0`v4wz$k2Rf~`LQ0#6<5~;Ke|VsI~}zb2OM|ecd>hFzXan+<XJKD zgI&>%Bz0)c-c!w~R^*VCsRwM82UhK&3Bl}!!%XIMyT}$|RIf-DT=kY(#J1RQ*o{FS z5uB{kiK3Gx5FFo?*>!E4bGU_Qj9O_C9cOthn~p=r>jPd)%%kYh)j*G*kJ-?hu%{g< z%8OO;$5WA$_vTL<!tELko%c)7?U(1H*AHEeKF6?}v6@KyQVh~opj(kpgbU}<3y7Kg z+K4*EkgL3FOrfrF3Nmfcci{ce&v?%S1E2<KJ9|3GpdgGFFPWEDnIM6P7h*s$N;U9} z5mFIk`_g%ZABK^8b>R4untF8@jw-Wm+r`5Y(zY#Q*L8-_Q?HLtcE<o!`d0i@E=K8; zhnR@G(CX9<wyC0Ym1nPC?a|;UtDuY0n9LasZv4WZci2Cv_oj|867@O7&32UFH!lv5 zAZO3!qIash_FWfd(y5^sHulXZrE#20MCIM5rMu=%2cN@r;f`(K(+adaRv7xIM-#2! zTq;F?X?#^>@|1G;=?DpAJ--g@@eLGd%~@*0uAFC`884fs!{EU1JKPVXjK#8i>&HI^ z2~8H*6G(c{bd-j_plB$Um7phJC*0X;FCs&9&Rk6;MkL2aM<nZd5N%kNS5v;y6V$=t z@Iie<Yr;De82IGLrxW&~cWJo%h}~+SlOR6VSlczIUx^Y_^`uP=4x1(bN_`?Lo6hZR z)Q#8>z+V>-*BL#1RerR)IT+*00sn?-l2<BL8<zLM8~WWSp^x`x|B6_GSS))KhV@Of zkUE^9(cKQVNrg|7AnRPnJ1*#CLu>7tw$cTxY_1~odRkO_I)S#_e%Ex}gWh{`Wj?ue zP&Zw;Ly?tFGuuULS4GX@)(?tp8N{(RzOG;o6Vl&W?SI}*zB@Ymy=2z6B`g2K+1!B9 zh2rmus8hFe;Kdt^Zp{%yXR1>ulK(_d6yK6$nkc8|Bu7kxx?ur;gdpR;B=<yU)o~Sc zvQybuFmu6(+m(|b^?=L6_hw$E<!vu*Y}RmK+xi8GvJ|EfqH@%zm#yd?M(qv!Z5|{2 z;?chk6d6$t8Elj+VzrZ{&zAJR<4Wz^z}UMMjJQwH#fQ7Qh(ao0b~zZr1m!fqNls*~ z_v<kskDhB~0z0PL?S?8>S3_`Q6uR&l5?lBH$?UdqvOgKUiAYdz$h@9{&^g~Dkf3Xa z!0o#r#FN5S_TEzzDzg{=Ll6ia*NLG18^PW8=H<AoK4i8yi9>7O?*EQ)+wSfRd&?Wj zk;qs3=bj_VRDuy_L{R~+Y1n;LD}s#+b<C4fTpn>i5%JO$gz}-lhqPUOz6ta5*<Rnx zFcF&9g29i=Zao&OB2Ek1Tlid$1D<S)Z^D{~GCc$X#^`1)OQW8&$P2%i#1O0LpYg)k z<GwwjXzU%9N!HI^7{w6QAS>(o=@&2*n7+{}IlLZmRu|^YDi*O5BQC4VNOi$2?AFXm zq$u)5)|+Mq6iXLSz0%QJ7w+r?zz@mawFRb;EsN&x{s2v2mObO1emhy(_w@Bk1e2Ut zr>;l+u&9m@&p?f}L@7C}S%|wj14w^PUFPi+aO&`ga9EvwSibMfMWwwn%5x9P3%d3W zx;Ed@Pr6H<?U%Z*n~i9bGOKG8HgSp;_tmxlZRqD1Q#a^kN|2IfyA5E)=f>9=e@Roq z3rR-4wIQa<n3}p3FfWe}JG~ejGLx-Kg~7YF(q>3*<BiH1UyT3&vG?q{jfJ5X+?oiU zt`r&-2KX))Ho(sCr@e`4tZRDJrLQ8TZI-a17OB7m=C3zu1^&2QLOtCw^oJ8?hF*p3 zmV$I5e2=k0C<?@8-Rks(S=%aVNmNflkG^&}N~WZ%-J&q%qy40!iJG^bS=1f5DIZs! z8J7ed;#63QapvOLXz_&U(mnnXFE4f6YDfw4wf_bdUu*e!8lD5J>fF%h25*x<|KLLJ z%S^6Y=ez${X8}Odb%td)L02_FTZhN`9eWu<T+5g3w*!s8GdT~Pbryd&RyP;v!#54% zA?I1CJ9@*pMDs@2@+3u75)`~b-ft+3bcY#&@S+$f8JhWYcz)oniKMvE@q%Mliy9iK zhsUvNBZkUThlqZ<7uWDz*(c@y_%^I%10V~?V8D>Sq%<7C2Jysm0ztAI&JS76<>Qn} ztnAbCU!?^f7mC05PW43wEA=H0j%H12G;Mv-HS1%_(o)+DUv*=4m6wp)7c;sM9JjCQ z6bT8<7J?)biU&-fU<#0~rD00ZKfG+#8W&X?%6HGgL=q&xV)AEZtWV^%4ovX*&-AUc z>^m|y#$Wv)x;-);rW#-8A=ESRn`<KoJQmBlS(Z9|6z+IDe3Hy}E(HY#uAS`RLXY0& zHn^UiadR}UJq;}c(sPQ%KZlhs<0zWzIrk@uNU0P@2aNFVXgq4aVd~a6_g3PjOz`vN z6Ty;yf10Yy)E=)WI@AVKCYLw2#hYq<Pi@3)tLgP1_QfpYS>BpX#TmSdoT5%7Bw1Ev zqk1}`{co6RMP6Bsm4KHgV{rmu?X5Q*S=c3WimxdpDky@Gg((wJA+`qVzU~(*3H_p- z8Cwvjv>oz|*mYb^!6a8c_6ZpWEtg6c);IQ>VvH{ALM?mtE<%N27At*=X=u%LdIzl# zmtDp-H|sr<H&j56bfMmgS5qxwhKr12oTt6ZW=r)Hc?WSBUNU*Yo9NJulgC%>qIge< zF1KN~h$52<XuuQnzGHtA<56_Jl{yXE1es%UPUz(vu$EMlaqRbN2)WAk5J)<)UY=7Z ze<D7c%@$GerSN5*!4Ny-U61igF}a9Gn<CqN%7nL*^44R~g|z|M+A)JH!<0poT4a$L z4+A%?Yac;lm5e1_>Uklen$D_;GJDZwUC)g{6hjLaj6Ni<b;gJ;dNwcq;M-{Y^pY%_ z_I4%qtboixR8&}IRG{FV5dG-t=)$u*A-C(fHAt<PG8jc|U_9nF7@;*8bEf^HcJYLS zSB`G95)kWqK-1`i$pd%2-*OBi`Mvd`muU=J?KE*?fdBq-uN>A;ON(o)EoDaB60g9W zX_wKynXwUzIz!$`H}4=N_bvJI>|*Zr>?S+!vE4@eF`*`CdfdUgsFaS&<=wu?l}gZ7 z{f2s=b>sO}(opuEdl|wlt+&ToFNM|I50gF2mAr3oK_jx)wN#FY-Qv5XbDrkMBHj|} zST2t%95mI~f)B&(3{JA_NcU!G?syfE@_?DbrL<=QdXev&HL|5uJcpn0yeo2sZ`RE5 zxQ(*OvTP6#{dRgs>zT$B|7@1iqzGWp9`;Hx$SVGQ5QN<1`C7dK&6wLHZdLEAl@2=_ ztTjLwJUDQ=HEU6D_{YYC3<_pSP$JBOgWB?dMGf$AdQ`gDPAiZ{<jAdji*#y^*TWU< z=J0`&)`x|Ael8s;<PD*Mg^hL160EThbmVw^#&(N?V*uOV+F=HAs@qUmjas!7Ga+Q= zEUYUxZhoY?`1UskATq|Uo1Xrtbs%?wI)YbCO@uA`&dziL7Ss;K_i2NkzQD%3&##b< z(XGUCt4S%BGu<vGeI;pb8lsV!IQmSV_$Yv+GuraRPCSfb1$dINK;Fj6WRc+m!^|Qg z{q=@7`=)AIxsS5%@IcDXz8T5u%@;CHqsgliyy6idtVnv*;66n_^H5<T=A!jojT2sI znAuuNG8f}3tM<?{&*%XpEH!56+@*86h$N5~XCxy~mN<Cp%)itvX8VA$lVvbit!4^0 znTSbsZEN<yhVic!f0nVQ8*ty13+sa07QeTd{_W4c^F@iV&=-SURaN4lXRTS%o*Yz2 zJO0|PmndY-|9k8#l(r4hcu84<ZRCuWaX;K`x1T%auFFH<)#Uo4Z5aUGnwGkY8NV5? zc`6E;t8#%HQxDg*|Iuldc-RZtCJAzAx$NBG5V|TVf$0}tXxE{O<EF~jd~DSEbYA3W zkyhGXVmg@+%f%*HVqHvWCr4Km?z}?PzoKa0TY8I!8?U(~ib0?kf7c2v*zbTbZWX5b zd!UzAkik%E_~6pQIQV}z2IK*VVK98thgqv_U_-n$Bu_i;n;rigJ0PF$cbDYfB_f?y zSZ4)dTa;0+%eQqm9&Ff9>WCFzFRyI?lZY~36lNFwSnWBTy<jC!7C_wlXGM5jWKy{S zH1r?(x@SH<OyuABZb1FVUaZ)TumpnM!wW`aAWY-IpcgH!r8hfH-nTWoa-<(sIRKcl zjjo#)vDIk@-uw<S#@`#42kFRhk=+Q{w2V9r5q+9%Paas_6=l#q`x>%gNAj@IyYtc8 z<?E+u;dl$5N#Tw^$Bst6OKRUUt_=aBE(a8L1ZVe&-c@slrUqYSeJD&XB$bwnTF_;N zWlx!{G`c@d*pf5V0oY<*zZ2D!SAAW;kNUw}d&~6sG?oD<Wn4eTIkJ0EZvak-CR2W; zVK8r{`wW$qK?JoTVh9eN1HQR5P`HM<D#@Smoe4w=`-{9~lB7bY<BnHwsRfm?M^skm zfb62uI)hd9sSVWp8ul{8d96?CZ(Ude`dS)OBXwy$R*MW8(=>%L8Ej50hV-~{(0Lc9 zhcf%ApVWdBzOXBEVqlt#73Zjnz3x)4lBBSFZhiW;L6mI8wx_16vOJZ4@(s9fzRY*r z^ORxh@TauN+^2Sgb53JkZJ`~W32J~B1+AD-DRi_bCv59+Uh0xx%IZ!9dIf~)g^Tw< z4GfY@8BOkobtSC>PglG-gx2n6ZU<)B)Yfu%r8Sr<(s+SNs@+B|OR?3`Y5i>dAofn8 z>_SD-)_8aKx6Orj3^Fd6m`hI9^1!NR&v5ZnR?NRpDZTyaue4G@|AU_@mhoczRYQ3- z>WDze2>}7plo<~~q==^`+xtSESyQ8jG(9r~6iI$ACIyM|M$F0hLyS&9W0~pGr*~5N zoAB^&gy1WQt9A5cW%Nlcc?xC+hHQRbPNk6hbrT{}<jiDL6O&u0Fr9w1TsD44soxDc zD<C^ExQu3%1{V^k+{LyKNpPVXxIa&d=W<pf<v%r6uaM$|o*nZQ&bBVXJFBS82kJGs zUsnedB)~USiE?}J4S?N7YeyHe9&c`ZdnBN1Uw}kYo~ucno*pAEHAhPU2(`z*VM?25 zV0fTJA=4M`)(7sO{{1QXW!@$KW7rs(kI-sIf~Mo^38mK!S3R$8Y2udJ*xADh1qw60 zumZ{o4?K5OTN=qz$d?V>U&sI0*=>+Fang%_*Aa`=kVD!I3`oXjC9z6Oxke4ZD_o*J zyzGCGZucpXXN$D0FtzJfkS6s@=?hpe+%>YsmI0$u>T=fgk1hLrK>>}e!R+g1Lw>dg zej52K`H*NE-vg|IGRN+abo5scL}bt$GZkUvA-l78;U5;>El8<_-9QE0NRE*mQ|24H z7V?W|Y^aP8nURE(oy}Wvi4(bO$rFuBH-)`5jVVIob)X7%s?BK=h<H@xz~~T=4PCT1 z;z9L*Z^#*@1YS58*ib1QBdtD#v;hK_9e3b5YJRI_k4G*KNcu;cOZu2Sq60l+B&W&a ze$|KLd$G8xHr;b8G-D+SlEFIp2F1GNs#>h2VdVnOo+boeIA7<k&?obDfhN*7N~#M7 zsyO+I79P|%+|9Giv6USfGl2<05Q33(zId<aPQ^_vAJWNh5;uC2@x!uPt6NJ>dTpm5 zVdc8gd}u$_PB=^#ZTR2`3OG*0_0Mnv;++Anw`e|z<hpUG(Ek=pS6D(|oraptFD7=f zb{^oW0jb8Cb|Ew>a=d%EIX2nH(rgglomz#GmbW#vgLS*(B^#MqxcFs^)yzJHuT<-^ zSk%JTCAte44+p0|H1CE1QJIe?X#u*jB);GGw51BP!kN0u8NV9F&2ad}h0idt9*64N z99ng_w*T50mpJrM^XqYWTBN^M77PpzkXWY~!FBeV9kXfQt$Ui^?)QdTc7TI0)VM9l zkk%K&YwBz}c*TWbY(2m26vg7lECRx&T7}4Key|0HkkH7()D8Iy-8k6u4bw|~Nh{NM zJlS5O3x{5Ax42&Kitj5Z=f9;G_$jttuJ9hHh*zD~!kyh&kz}ZCU)F>DRa!-!ydAC| zOW=%0nFFES(K!Axx+`g0cZ%1ZsF_8fp{XBZe3B1Gz&1hp>N-vvLhFQHq~>;gG3DHi z%2_r=CM<Z<tK{ue4ep(g!bFErMX6`Twco}gD-$m3cq3k#4UG^k&2OM5?tWn{Yz6O0 zOWcF079|4TarN?k+$1w@iS$;%CPBo0-*oj?U>A2gjLu`sH$Wq-zFO_dp|cxr*%bb< zQ#rfmo_7XOYdxgQyNQu<+sSb`kOL_DpcMntEN(+<o?>l|#J3Z?xtflV;R&36c*Gy) zcS%{A*%|GXu}82{T<BET*`%3Qi=4wvh(3^EkM2<B3F1WRGPua|B{WbEzuvEaJ&h=n zmO+Rxk1|8$*%SH%S-!@PKU3YfPNAff6U-2Hn-gFVj5O0Z6j=W?aGPJ27(ZvSpGKrz zWj4s$1h=qfnjvp;m&~B^tk`d5@fTEMIT#6ji+VL6=J{Nxf&Vd=FYQ!WE2>kD`mx{C z9$6Onh`BOaWT^rW9F5SM)s@`$VxBugKx)dm85^6x(Zcs7Zc?Yi`Xf>0jns)@?o9x- zz!MjX@ejX5#!lW-AD$+3^wJV`Z8x00Yw^F70}n4}p83t{U<eiOOVt8Ix~Aw245zcr z3jzUO@8xiA9ike3i~8Rq=Tcn)rp|Nk&s~s>&FyU>=O<5reSj|+tB)C-K6e_&0i$zA z-B;!dcer{%>{XLY!_t_{K4{9QY#&QV-&8MeR&Z<lDiU8*nq((OFVQBomKA>)QH+mX z_<J}#U9*B5U}szbQa8>ULSg+n44^zTP^8qoW^#cS8#gzDM8?MNX3QvqY$q^c%4Oov zhm7?OO>p3r?V*}J)Hj>rQ_&iBBMUm=XaviANVgy8!XCr?=x=gK-AIfom~^yt4+o2^ z%<UPV2mxqLRBfmhei?V-r>FjD<&a3Gb+k`p0P&KZ3>jfI3bZV8h8hS?aeB<h*tdIx z!{~2MvbL3b*TDwDntEH^<n_455D$;?>z#{WtzW^<OE<NC472At%oC<!T%*_?7WvV9 z+7vT!j3|X(4dvakdqZz8gKi>YQlc&qL<qgki<+QI!YZ$|OQX2aJ2D^RTC{DUGm4U5 z?(7zvzvOoXTiv;c+O=^$1lfK)@MlY8vZ(L|_rW`&JTsm4&M4&P9X8OvlLc*M{NS67 zJj4^nV4r3C#^W?xTey3v4f+wE*mxx(hb8~cX;vl-O_D1A6L=F%wd1O&{ZtsXBYTmz zE_6asD)#c|Bs%`;>YlDaObC0;LKzQ89fQaSQ<9XK;qE1&g@_Q<rUuEotE4ab@R%wZ z#nidJ0M(#RQT*5`jqO}l+mPJPfN1_b6s7L>(B6EmJC?W+{DBkfkoTx5v4zl)gm=9Q ze8n0%bis1FVzPnZB^QjyY`UQwD^;0)8<p8!>isQMQm&kF!B>y}#ujhQEqJdAQfw^4 zBpz3K!9evI2xTeB+uYRCDycoVC{YVq)si|In}2#7FM*ro&|M{NjdY$jnJoVfxOOUw zyY9bcO-n*hVC(6=h2JXZD#`ez7}!zzy+y-kwwC8im*!1jmX|TJpKO#LvP|^yq@qA! zcI7h7ve0_v)cqXtgSWc1lGv)u@<Cadn{Iy480;-J5T6!OB;2~EyH6yn6&Aj;Qf4Si z`f@9uBB4{M0znN9)GSJqyk)ElDHDv!vbOw|PpI0h{hbZ>cVP)&Q@lkG?yi5RE>@G1 z<B2<lU3Cb84|Ep?O3o$NkK!1LN1I813Ig*i23I8XoEAFqE&tv`yCa}P9=ul>Lo*H; zGMyX@X?v}GKwCIecN3?xA04?bQUqZ5X=g-aK-E)}%RSui4Pp-Ojd1Us?p&d<(f?%& zi%H7g{X{Fy>6^luu2n$=HUq7r^!|d3liv|74B1HDMdV%iKz(5J_uytQIIxZUs#f`5 zS7sI$0?w(0z1AKrYhsq$j+L&6HZzby^_a|`&RCw8dZc}QF>*r6Oe7R`DEo3&b+~|3 z#%BzG4jpV3r;Ky;2$uG^+h<bR+>+&m{n;MdB|#_kiLdDM;kK&hEnY>h3>w3sD)TX$ z88WWPN#mWqX9mgpjg2bsFft8S(+tE<9}6|J*kzJ#b`}1@qsSLp4-AZ+JTj~`i3)4{ z$-Z{DdN5BUV+Z%RFwdHq#)DJZi(rvIGj1L{U&ad(pR*k1g?|jzGwG>WH=^y1F2a6d z_NV33$U}&EX-{dGSLHF+oM5ZaFi~znQ;@5+x^yjWAntqY8d*D<xImob1{YXbIcsA( zQ!|;NL;a`gXRBS<^oVaRM7%c5FKKGF%v3-R=9W%<xZgWu2<w~bdwkokebq#h^B~oo z>q@vuZ^q`$bB*AXbZV*@CO71dbL96&9lA|Y8;xsE1}=6%ze}R5`p#H_HXNh^-S4i0 zf|^|CN#@S)!C<nzYQu%Nb?Y75@NqcSkJ4uv@dbDmvX#<>jHh;KMeiP&frv`+Sf0T7 z$h!EmJ?8XJ73`cFG%f~j(QyGqJR1cNL4#Sg1&rQ_{aGvyUhF{9wD*^V?n$A&?7x5M z6#0TuIC$)*U1SeDKL=`cMz7Q829Q_iG~dyw)|48bjO0b=T}IZk*%&%azrMXOAmD(l z%k{7q`K!GL1m_A_2Xlw9_u>RyB$e%VH{Ym(?hG#`i73R|2q-;QJRm_oJ})X-hpW;3 zJ%*zF+~z>r$aCL)o?=CVZ4z3&ZDp#PHmR}DrA5s%!RD&BX}YgHX_3fCbeD!4)7a4C zQ=??n^(&kjFztI!P8VDt%nZ*U+?fN%#(z$&QBGPnIMDxfarQMK;cxUmjGKo{3ff6r zgW~n|vP=A-8Trt8+N8G9dK2Zn9Wj?-?W3KeIN|FJiag~D75Yh6;U_x5WE%UX(Kuc9 zgQ8zUaTlf4YnCyc94(Y)l>}cW*%DSIT(YpG25x5E%V-p<c(-q2N6)*XNGi*jh~hNB z+|5F`<1<z4DvOtq-`PBomVZt-{GTs7ymWsLjGJ=>7RSGh#W#@;C1dz|l~Vw}RkSrk zZ0EU`97lH*_yyY*)@wSRcOIthath8H7{UX6r+RS;8Z5OFv$%N+9od33%0#0fMv>G8 z;}ESyzD=QqZI*Xh^ZnFYyR*j72({|1YcFIewIo<yi-?b7*?<*pIgFZ-wb)lX89K&w z(2ey7A*Jk!)Itn$mJ280>sd|_{Ib9{P5VyUt^9!}?lsW|P{`Y;kE#i|uYaUZ$he%V zR(#7_MU~2v4RGaPI0M^AKz;8>^6p}u?nj}IiPt(sQA6{+!*%|vCV_kP&GZkCPqjH> zQa~TV$l4D1_mQI~7PVGg@%iyzHRVAv73_P=Up03PHRy13m^5)j-Z*tp0<EsJ_3#AW zXyj{>;gHB|fZ{Fj8WCS;z1AkxV+|&?NU5Gb^zL-b6}sRIfY@?d6RST=PDg12<hyZe z;H6Lxp7cg@&0QjflK1huwq6vy>Qy(N#fw14VRZz2-DKv>P|1+;Kt!sWd|03db;b3W zds!ekHsP31Itw(u0+eOt+o*LP>d;+*g?Im3Y0TlF#MTbx_F(=-0KVU=XfPg3*qL%1 zVen2WgCC<D7fN*K^Uc7c48McI^8|F_A<NQ{{>op`1hn<tmy>f|D*&hpk(s1pD3S^| zumQZ`iFB{oW%it`RAnhL)|~v>-n#KplBLW;!-PrnETvMGm)Zw<HZO62K8|czLpH7j z=?Vr?_)9p_jO0C5az8H5_WK3;G&VN3=vn1bJtJP%fAdVO2!m2nzR2ke`-2g|yF%(T z;|m@#;kPN#`MAz+C`ua2<mHonJ>M+`XM~2X5q;R<Z9QFG(yZ=r!kI;FPHzA{<mBYg zZQ*2GsKW~(lnby&%wb%$6-6dZH|NbLRx3FeJOa4|UoRK1=nE!f3JuftfPIdyo=rMV zyCn_ShZ8=Q5YGNa4Lfx;@`jl2o{%WExR*+xZlF-Sv_Z}7pEzO<7W}%;oA35!NK5U` z;Cyfqzg;JN&4X`MsE?G)(fjVjHzTo~37)FEV$Y#AJE<rsTbjsK4b!gAcG2OLfrGWQ z+>*+^=|%oLzT*kyQT2OK!n~1=^0Yjs=CT4OT=FxD*9()>kDy|Sh~Bq{IM)}MdjSJO z4>bYXHWG)PF8&Yn?N;`WpC!dPXhz~(p5nL{+HbCcsLN6chI8X6bi&oJneVWF*|5j) zEc-@b6|Fw15)EUqA7M!?p@=`4;HZ2jdKEP}{GyEbhE;<?1Ir1tGB9}*?xx@V)<WeO z({~~vusR3*fDLI?8`d<L#~0K0Ei^J@*d-sY(m<xJwzP~|rdAJ=KCvUFeygeretq-0 zwcLTW<LtXp$?jOW!;ykzVL&B^C#4Rx;&}%^HlKM8vrY%3w}L)Y;BasEK)R{xS^z~- z<v;|VR%Mo7YL75+L&%HL#dM=$@LM#l5FYs$LmjxEU2(Cn%u-7vtKpA*m0j!wg;$wZ zqTm*eL?Mp<L}}^Q7W>vQS`|6+6A$vY-d~En@|`W*DN^yK$;-&`#!jB;(%w|e6O_23 zVLmdxBIGatPI({NXs{)ZGRqujU2ZtanSehM{jAX0%qj=B{BoZvy9>J2%DvkZz8|ZB zZjH`9GTdK&_U7R3cz78Uc&FhKH0tZhX_%-^iQ&wjjuoPrZZ^9+(Nk1>1=0I{o(d5( zsvvrY<wSa<@p*%?K(d#=$Jg0X_*1(BuTV#@N^8$X>p{WzW{cJ00}RWpGsin$lbBvf zqu>W?aZ#<HitQ)%D9wXsbyL3A3a0vTa9aw}dxE5Pii(#X>Bj;FXo-A?ZOS?is0!F! z@RZ)LzJ$r|JtS&Ss+-z|MOpdlB=O@zW-6s%*0obekEhYQZIf$#CP%!ucN2V&n#`9J z5Y87j_!tfD1`mh=uXN2W9+94B^}e~A#RTBRqDC-jF8;!~0_4U=VqmS!WY%TlSV4_B z{{dd1YXA!EUjs0L*<1_(=F`)oRCtkE&q$tpQFbeETSijTK3K%g|5S5}M=fw5rnH;C zCm6HSZEj7~O=Lq3*{C+U!*;>04Zoj0jDyFtj_<34+qcG^pS^hSRS^5aeLDxeN!f~M z?y#=&WO2bP{+gC;9l6lLsp~Vj?nX*9kZDdL7jCZI8A#wn2xM2?50x{Gk9kkcDNE0Y z2W?Td8=;_7ol+G_cPjpVM7AZWgDd|*A}&%xuVQ<e_l3I+ZgX0sg<Y=_6Ip8C=}a1f zJ}GIJ=C>JdqXy<0dBx~2p{#$eo_)Kf!-ikHk6B4RVSg;<EXw~A|21@--0EnevnZU1 zvlbg5RPBU@r<{@(xfPz?hP$(<T`c`TGxEMn(hxxE?`+fE5<WuWf2qvW6~3la{35VK zNsf<pFJ7>$3p-Dg>f)2!s>H;BdLbPVMdWAbn$`Nm(90({V#C1Xs8h#kZRmgyRFQFY zBmG*iA3Je$o@+iz1-#$Wc<N+>?WGonBzgt{(q14K9=@@0BGucKb6$N8EaFDu82X1p zg<3c$OFnK;qV4PQ@A(J%TGll_o{xhOscWE}8gUP%jHvGxKBvNgvpdyX?FVagqesTu z=>2Bk@qmPC3gfJ-dM`p!xS`@EQNEg*mBBmGe1jJrX-Q0!!>p}l!GeXDdL6eC<I^)M zSu>RyT(QeVnr0|*O0%!O?T+utw=4&sOgEH)6pcl%*90dud`RQ#yqOtlm^g5IXyq=` zlmIJIFBhkS2hvd;n4Do4%wd%k^1jm33+2&@>@G6qqP2FNA{+iVWy1+mu;^bUCyFfx zZX9>38S7c7b~bJuA)$s3#hR0;MNN=grod<U%54x*6A`zYFzT5~<vMrOEDpqbva^*b zo3HrXri{8_*rFFjsv^@dge-R`6PWoC?)x*(?UCA0h}mfiCLhQkg9^wAWd5is*7XKQ z$?u^kCbc<tXP1OIHj1e*=GYeLR?aqKC0bKXL|kyDY~yxRQ@X4rF}7vtddMxg6Oo7f z;Bued+{v;)*mCjNgM<4aQtJ8-Zu9E(2(aGo<0aRkW8P5!qlP>O-ZAz>6j@{F1=jcY z?LRhcf|U5Md@eJR&IF@04~}4aDG165gaD@gsfpzE2Q(Esc8$yA_I)XsW<ysqe57TU zo{ALxJMSBO$Onyef$zADG7bi^42uc3mp8NT8rrCz2g;f8I(q!hatY_3Dh!c1WiO-j zf6INTbjl7UMz2a1xXcbpr-c{^t1K$wsY<u?Aw=fAA3S1gL(^|+)WqibMNw<Z7-+46 zH4=veUh^PdVn9AzkC??Pl!46DD|XroQybJ~x9u!NXkPwg8J|#feuIc9rlpb4)+c!D z6DGMe7I3lBelg?j;w&5Wqfq209&CX3Lxk=PFU<%%Rme0g6^9W2h2?WPApcxFO6?fA z0*UHq+&;h6&Iw%K=%YkgWC6;<H?<&S+2bFVhXHzt%_B02O`5oXH<f=kDhbO*u3f6h z{b;$ipS_9=nWTy6?@O`&xq|1i)rHh_%G8ioQb~>~)SY>+aSq%q6-seq5XQ`ZG$spk z5KyJtS{ZUVdC|lpVR|rUktMJkI<c#6-fSU<OM6?)Q{EMGo{Z_dL4!(OvRP<SFp<6H zs3}wQsnv;;wy>9+L(P)O8IWrB0z`5|U7&NpmE7ti%HH5hyANxLEew6TQ5`_~ijf0b z67N@?sIp||r@<q(U?zTAThTXJ*boC2Rp`F-dxwfSZgahepcBb#<5C%K%lnV+E7kKr z&{S0*vno2>W?{!*A|!HyG{mdJ%YUUB+toOdM%*tp<eE0%C+(4NX*W%Bj{E)lj3oA& zgyhnJxfR*K4P83KCaUC)nCYyG3{cWz00rJ!>NQ{GdV4Amkc?@xbdBb<EAGuW+On>N z40k^swZn`vCY`GIp5s%0Wa6_woqLfAJ*QtoeqP);`|QTSja-DDoceq{8N1!yI`ln) zeTey>7H^q*8U0??0lPu#ZSL*qttWNmoBig$A5MmegH*5mG-+x@b9GZK!%&wEVmCs$ z<2E$Xb_g&LFYfa}mEE3}<ky!0vbT{4>aBg6>IzsnWpgW^rr?8efa=GJyn@|Xj6<Df zpw|f;H*se8=vUf1?Ju;2@*sff0Lu7)>q)KaGoZ=KWc25`q{W-wmKmPG6uFXqwCo<r z16xOWV*W(r#yp{s#}fqKb7Jq!(rl>+f?X4K-3H&AScVG+R6l-hw38JJU4Osm0GsHh zSFNyB$P^W{db3EJJb;~Tthnz@HMUNpiij)K-m@RO^KIx};|G3zY$RG~IDc)SjD>G! zBkCu#g{^$%8s)V6+;`lr0Z~(Qxji~#!Jzeuq<@>N@9ZW$54op?Oa^2`{UTT)Y-ot- zAROqfmx>#ex_MaG@BC9fYLo&<H(*N$tU14OS9<TNkl|zI(3gF1@RDhP<$_J&QAyvz z5REfIqccmb2O*2JnylJv9Q;Z|c8}<z0Ke73tC5%Xc5COQztfzTSUF-WvVdOI$uB4) zD9|8mZj>g-X+a3ZPjSjQT()HY*jahT;?h5d%p#Rp&1LO#iamq^i!!}-bN-Te>{*4s zBMhiyoGyH}6;dY!&;w0DpBYiaLs5}aZ=AA|db|Vh43$}N13P8uSY0h`1zUyaREos? z|5UJk1!W>%k261XS7L@7lz|GPy-0O<O%6?czjd=;8r1?uPKd@MCpQY*c}`bFP$Q|C z=%B3lkv~FEF%i1t_NEF((;5WPT2)Ki{mOtOwOp1F0{g=YJBjb57W;~}AM{(<fWQ4* z+>-Hprkq!gQz{1;rkgB7pRqO|yIcWePX0LlyGF0Gq>SiUJ;ZJoStXtp)~>gO+gmc1 z^XVIobE73~SMt2?U4zzhg;(9zkaG?iQ*sZ^&PjhTF65d3OYf=pbHXQ?#9Nrlf*bNJ zY*o+NxX`A>ic@#UOwQOT!{~?E)jVI=rxx*t#&;Q%lU9#l<z(ut%+!c6%EKV;9;G;a zhr%&Ri0)`<9s{i$UsLV}as!_>H_nMGrU)IcEY@k&4Ot{DZ4tRIwx~Gjl2+|4Ij=eg z&s!;gZX60GG>uP*%Y8!WR0LAUnm&-I?GxBkh*BD|v;om)ymIqLvfGgPQW#>{M<sEe zC{4$jo-tNsaq;vF>0RPW5$x$b5N<o1sB^j6@6QhA1p<ubZOv*=XeM_C=c~8YzZZQ+ z7!J0~)%Lh27R(8TI^wH`pf`JARJ{#@ZIvSoYxv%20hwOvqm}wDdP?;Z;Jl-_ls;u5 zz!-~>bR86>U8RCF*x9=$9NmACI>${OLu8k-FkR$#(88IY8t88iCe+;&cUU?{7pkaX z-ca7HJk4~v&6+6LKDVVH_a*LXuhpmJX>oPiy1AuQ9zj0N{`$4>5F+OX4E697MlUVJ zmGjE9%`Cp*N@xXRNx`6uzTn)9=TPS4iKRhK_k`9)!L%92KJ^MN5$AIo3T%p(7`^=T z4(t$><4aQx^dB#ohV9d)%38M+zK!g)iYmxIB8r3Zw2zSm73s_JP1VBtc>Wgy6!E?% z`;Byyf45xEcylfi7x_9*2qBLZ3qmLFEB$d(c4_V-viqKO0dtafc4c0ll~f=-0*&W9 z>xEL;dP%>RNz+ESatt3xw30mZAI!+){V3$ez|lSXa^fwUXTeRZN2{nTo)C|*npmn2 zcLhC&X_TgSvp)b9gJZ~=#=1^JNT#@9x>l)SES0>!Nu?_`)riqcvO^~YnEBl*I+?hS z*I3F3JxUP)7$Zp9V!(%+XT-#G=X-hAih0*d-tC7l+?%kQ%lyB;ybn#>PX!CxM$NZ& z1jl9gBaCUe=J7h<Si04LJsv#eqfdS}LZppgif8E|GrTxq3)8nRK2qPbxH_nT;+>Zn zxzH7R3mQmOzBOr(DN@f*VZvXC7wwb`3L0U_$=k<HI*?Y~pYS~-bL(6bFuYXBl)OY} zEiSSghEHe%RKPFs13r9_zG7sCO%jwW?u4%Q_=w>msHqo-Xo}u9OZvrjVK*^^eh=LE zY!P2dW{;Xm#OvFnK|mw9*BsCOlShd!wL#Y_AaownYSy!cn`anKcZ2s6Av6vM^$5Ul z8H5ojS1|H`cMR7+>l258)jNr95|)y1{1&gkkrq6WUlii|gIs(`?K92gZ}*xp;uSG= z8Ffih89If=`m1{?z~96{7wm;jMxma_c=wO6)i=lflR)SjexBC`4n)vWxMjCW#P%Qe zp*us#+uOXmw4^&V=-C&{ODm14S%#f%1(UOH+>hJ0S4L}|KYqI8`tc?!paEYfGF_Co zhT9#65`RK8>sO@-;+1XM*nik#RDRAG!Mvrgh02(&8BeFurs~x?&=vnVMG}Al>`BKm zQA>;I-mPPbvy))Pk$!erbQ}}jFnRqo6!dkcA-yOQ5-Wx^m&&Z9G-N-nf*4!a?I3}4 zS^C2p&o|LF0DL$j^&e$g*v)`14!<t3U*~Yu7}O>#OH!X_ni>^=C%+R8WL_mo9!3A8 z)|H2JzOrnHD6>UD`_TgGj;k1A<->Cfdj>2r8VOOzs@aJCf#~aUr_O1wGP1Ry(%7nq zf}TwXE{Y|(2f#URJ@XEg(=(W`<JZ-|;)~@DqGj|xCFJbD)WK3={q1LR(_eNYjaDoV zxFBLuV2Qc8F09XcsrD2ajgvGq@GO4t8^!~~@=CwfqSVT;zAEx%mWt7kZc%Jk52{1b ztj=h^X493rvvE<Y=h?DN;1z4fvG6hYF6=661aq{m{l)=$lUaZ0-DxecmQ*5tL!^pr zW$v30Elb3%zU;<DwEr;>FP3MlUrt#g#8N$+Zs-*1Fq8Gc{`2dbMdVC*mcu1yATd>m z8BHTfrf59rS1KaLL7XDgZ+KNSF(+;0tSZyPSl`y%cf2Bjq>9>w1j<X#8jC7w+s~F_ z_Pha2)k(Rf*y8l^HAe5Y3<Xl;c4ghenz}LP-|#BCgMnQjnD;aVs?ugCCaPp)BU9Jf zOoUc^4bWyf`Gge%d!nn(X9U|HZbW{&AMcCKW71n|B*yBXYG&hI1~(ZR=>XD&)e{Kq zhO+wL-`7M19O-pA=9aTk3Jh1kqMreo?lB;|ron2*-^ZgNgCBxC!j6JJO&4dSz%4CP zpkAM+O<z#3{G8!52n%ZckOj`ht=;uaFOww!O&23K97U%N<#rPHm1$2sLMy2sIcf~_ zek->&3QCC^b=*wnUiJlDF1dg~#uE?u9IKu1rX{cKj8)`F{cPh_`<xb=?N6<9IcYmJ z6*N{#B71w{*S^+CUD&tGK$Ski$7xGZ^QIAhmD@#-vPEBt3XhDUZWN_pAy}|APucyD zLIpRQ$i_qYNqR;uSj$`<-+3k<nOtT98>q`6jz9-y3M2+>wWfzj&kH!e3C7i<u^6o4 zi*#&wZXe#q6{+ba57zS7iK{m*c??_yl^S<#k>3`A1BqGM>4?4xAJ3N4Fco}9a<&U9 z`0;emI-Pu=6lcCXpb(ccmYmfWwX}@alWsm3sADSUXR5|Y@IFQT1=pR_V+1@X24>hm zGL)HQE;+%U1YC+F*L;tuR@7&qB$o%xU+&R>yHxWks=&bAj5K^>Qo`2;0QiycPjo3h zzW)zWK&`(xvF@7wrZ0H<VTeWOP(Jts?{WzADaeUV0?dC!KYAW~DjjXaif^S8p=myk zT;t@xsfaUe>K(egOK3V>2ai=ATHL<-mv4L33qJNIzxUTN9r);`2gR{G<_Yil_w&uG zm-4>Hvxfz}t(=>nL$RqcWVbLWM*YNQ<wt3fv51l@pesJUO3g<GK~-iN(bov4Kk0$- z<wL33>$mb#9D-7>6e<Fw9DTbtcNp?V$&^XT)YVR&#XJgB4yS6Ie~rH7lv2SjpMuAT zk~o#_TOIv0+%m4hHB%h(`czjQ#EJ%VgNaZ)EaOUuzR2X#9NyG2J}Y%?kjv=jCn%zL zj3dfdcyI<B=jgv4L&%*q{nQ;FYaRh2^p=VTH5J3NhJg=*Cy=ym&@{Sr9fuRcb6jOZ zoRJ@Wq5*iM<BEjJ=>$Jh3_lWvCvLrp642OdR)s?0I&gu*_<0Vay(EIr&RrFo)Z|F` zb9(CSZapxF7M!0PH~-avx6hC-yn1@vj*NjTN3%Yh7vD1gq1^yB4_ppFzwJOlz7BTU z!pIbS@U3@$2d_9VkxV&{z#^aJ%5!e3*<pUthMsvlRO@i$TT`Jx%VRHi<}TmTYeshu zE*<RM^Y7EmXXyK*nLg@Mp_hN#%U?a)xaTFur`N)S(>RvA-XP3q^CFf`l*ROd@XTp3 zm4JJc5i!`QI*sa+ajHvN_>TEtsV|?BfKeNi0*4_{^j20P?kJ}BP4p-^1a8#TUIM#A z?ViV9Uq?S@QBmq^(#FateA-wYA*#%$NAYuq2Io-*hQ;c!XlMbFqABMnIE;cD!|$!* zMlpBK?9bs0(l1`*g95*8GZq`e_T;sJcoo7jMqG|0{2>WWsrn85=mtk$<&=0UwG<?k zA)FaR45MH)4{FD1(VTbeW}35`bu8ea%K!jC07*naR2a@(Tg~yUWDCRouSYV}+0J^) zDz{_NTZO@^&)c~(@*d$$XL?Pf;q~;Z?k*(~lb42tYdMPGI%HRwzEZ9RSv7xqs-?&v zR6NPCb_!2)E0c;34ZhCtiEOH0ybDakk_jE;2;osmn)apFVX5gCx@(%JJPCbtmAv%> z_K28id3<#91bt;oL#N_o57&=>`g8u|6YhM&J3p$wxcE_ZEU);^ul$Pj#ykJc$$W2q zl2OCEpS?|ujE3R$$ay|Ov?FOj6E>#q=O-&T9V_D)%Q2N=QjG8xtQrY&;i=<RmzMev zjL_dm#*he10^3MR87Q4=iE+7Q+~uv%t!PzTf`?m=hDNIHOX<)*{f;&vw-i`CN(u+( z>Y{(7v4&8Fk~);qHgifwBf&%4pb6B1lQRGKk}v<|3`7WpM`%-lBl6NITikuRQ5(7{ zraz91SJD=aJ=!NDaP<cd&bG>?y5u(aMmFlWv$371Yr7Ud+hB$h#XImUD%Yr+YmQ7i zpW=!RRLY_4RHTrL{Ff1@o`fz{Ev(W73#%igbzUQC??`wT;_9)A9E%P(PsZ%J2axL{ z89YFA>k63QNq7Sf&Ug$ijkMC1!MMhk&TU?k4<V(wlhQwY!FTfIXzsiBN;xBs7l`ET zcGjW4N(Dp?{F0Z?Tm*$bi^X%E`@&EE?ce;>kKS)Zf7BeyZLfOeV^){$y5nf}z69VD z+-9}R^W(XDA+i@137c^6sf3<mg{x7tQtU9xs67mDI2FR83_cvd-nD~Lo_bD1egxGc zE|1@l4uMcQeKI=Es1%HHMIPW#%rcPVRmeQy!SS@AP1B#?sjdWuq};iqklE`P>OsE1 zkgpmVl}mLUJe_nKBWBZ76;e;QtRMZi!F3ou!t>z_mDlae>ZfT3tM*OgSdKY(P}KBL zQx($)n2)Ea;R7DnWHPqP!xsFKRg8ITh$}J*eNd885gp}J+^NFDz{6)FZcX!274K^b z6QlK4@(FHXL`6PiTx&|Q0uTM7Ah@+-z^@o}>Y-Vm-qc^^p|xH*p1$P|`3ks{w_$dE z(G;S4VClhS<Y_ycnEqW$B}XTHS-e0ST1$4x$0xLOrN$M#oWsCLarK*abQaulwgC(W zi|dYf2JgZ>uqQNN&?)77AG$J|t@4wY#`?nSOFrk>PyfOH`1;@bsI0e~yYhk919aSY z^u51&vbegLHM1Cahz|q9gJJ+CorQMclxvJNIymAE0dUgEjiHCZnMZOIek-R|&D9$z z=XF`fhM{ynzoYZPDIm_%bub9#tSl$`cWpGX){r-PRXf){7L(7E<Q(GJnNi0^Kf7mj z1C~!M`lXgU%DAzyRfa60Vmuq6b)<pnb(EHabxRljf^y(6E=t{wR$CDc<E;@m4wwR$ z6HNVDL&_Xo9cuyQpt9DrT6vJJe_FPphH~7KGu2TfQAQQSOIF3NHc-X*SF%gZ;$4nI z&K)WCEn2s{;clR)eH(E)TEpMNpY;x$Y}<`W#3}WlP?2FpMpMKW+~9u_OQH+tM2G$g zli*{aI=_`%e9(T#z;QT_R4!ayk8^w~`T}Fn(}f@>rG4k8UKQjkf)#n;vo!iDeXdqr z7hjG-za;@vN4ks;WF<BJ<k;(d_*RZ3?Myu@as|A4Zk=}(ZbG5-)Uw!#SGjIp+r03& z<*%mrsrfwM>7x>{y!>x`;on_t-}|M9N0;MGg>Zz~0x>!rMzKoqGbO=HYX}UhJap<A z<uI|f(dWIe@>hPxhmk}WMp)A8ZS|mM(b0MVVI}|gG|^BgSqpk75{ICi;W(Cpbd^#L zf~N;HvgSDUnheEjL+Sl1gbN-Sk8)EP2^?jfsWI}Dp#cs4Svu=D(G8>Ssh-hpjF1*p zjkLYCGC5ZJPXZf!ztZR_@P6i~Pzg<w^Gd^ZTv<4+zjPelf?W|{%GI?#gZJpD=xD;x z<NfF|8um!aDK(FqzB8y*uW$@N(-MwDKQ<r&$0*dsKaq&O!u@>pM?d8p<0SQk7Y(Bq z+V#tM^fNU*MXiNTd?=XBS4Ik?q>aRRN<;4YaxU@#qhx}};NwBg#@8LizzjStN9q1v zzpJPB^7QK~I6l0DE5}k%o;9snFxQSFjN_Z8d&Nfx1_y}N6fhl@yaP))UXf{Ui3q=t z7F@})SeJHq4UbyvO?lU8eMXAkGpfk=<mhqF{H#B@^Ts>g@$UlV0Zk9MWBD^*_p+zY zx8L!PH+S-Sn!H&b)p+ScLWD2!APmzY<zuud;S>WIj`Dt<Buy#}RR*ihadd)P5rPpT z|D|lzZwqf2KEdf<Yjqkg04l3+=?hLJb@S&PrtZ!djVMudm-BK?lr#-YyCh0+ec#Y) zXEODnZaOW8mh(~W8g7o@YGY)laPrzP;bdfNRUhjSE59)tEcDxb_rj&=T+i*NsS^YA zr_&q*_6!dTh?KPMW)wy3EUPAY<zq@$YeS)R@aBA4(s+_1<0QK_rfGT+!<fJpue1|| zHg9v+XqpPZ1MH?HFoUUSO|O0Q;w!pMQ7feadIry(7pL<@UhrwYl1)c$!?Exf;B=cb z2t(+kL8S~fc%-oV$+xZcJ$25nOWLq0Ld>7`bV^M;6?v76lA*j)4+_P{a-v-aF51Dh z&dHYpjUF8yjD1o)uqrPH6uesZTDNstI0O(_oQgbp<N2b^)#7uW`Sd5e<~QH)&i72n zJRpY$d@8iOaPRBpiT@E<1Qr=}Rm4UHJrYE@&Wt8`rKFP_hHyIq5Go3nHA}^bk=jZ` zI?gM@m!fGDI?HpC=CzyjphqzRG|E8fOo?()iX8!RR+OF~{VXQMn`bmKWuXA-)jVAL zBmyo4$+3hV9M#col-EhVuE)8fHBQC4M8DjLQCO!LcWuBKFp%E;^kWYLreiI%Mp3~j zXPAhjBA?(S8j2aFa}iq(F)r&A8T&E{T10IFz-G)UMOHoeM%OA2?ZtCU#^)sK2l_33 z1W)zwXEP69j!k-Hz{wxZNK^Z6&@9ytuE&`II{J6?0<Vx$^p1$IqMNDnf{(v}U5l6n zO_bG6g=5if^zSIaqd@d!PTLq84p>byK4?;FgL!Wc$H&2d$$=~u-jbKy+@@y1KV%pE zcyAyOIn!HQBeR+wJHof{nEG+q_Y^wHP5lo@(`D&kHpS(oa>Zl%8Mj%}N-7Tw*aEdk zVm9B*j-Ok%UYG30=JSB12Q*@N(KmnIPi<bj?>SrBR`qcrgkd5X=7{PV`NDk+_mZSG z?)K6cQgu_0Vbn++4iOr~reQ-M<z&)FwV8y3YpzRxU`=cs%2Xps@+n8{oXznpT_;EN zheGzPZ(I1MIeh97rXMV;1-XpSl#e0}T=YLa;MX)K?Q0P;PO@q15m>pt7=kv#5vgOH z0M5!8`8cmTMVT&$l(ZQM4w5`9K?iu0*&FGE(5{siFR-+XgE6;JkG9}2sG<!|Qx8MI z9DhVy_=X4Y$CtV_tIzz^NS-?QA{vn_9;>tOHK1`w1^}?h1YPP@s=oEtw2MUwH;|(X zXCK$0Pn017QfCY*<rvc*FP#rQmaOn9eH1S;r9?;ZD*d~IR8zLV)=qv+#Vq^>IXklJ zh<EscCzFh7`kwyiOY3dZgDyNTeYa+q>%PHou7mnuC!8K!;a7BpulR?bBU&4{dNo8l zF@ql7_=G>f(^30uh}`+KXMe&o?tJ|_{#i5k{{Mc!9LvkT>1Ch2apCU2zu4MGS$XL( zzeQ!TT8Lq~RE8Sn8IfB-Bb><)DDDu1JktV|&J?0$)i5!UpeLphn1cFCSsNR}nKV^r zssy6C6swdgLMQl|CsURr5yN<sov4X0HB_I#^a)(!J&j2EzV1Uo#+$}kK|Mmy^J5A> zQo#;z_(HXQ&LnV#L(|_dS}+TTjQE8^fWX_7t=A!fL-8brPeFqwrIi?SqunDZK7l>f zqz1gIJbh7iaypYw@EZn4*$Za+!>cmlI2m=Xrw{xw9RU^&XtNH5c54Re*P?P@!pnbu z!k0AYb)3$!fK9)^>`iOrDGKU6A^3n_gP#*A#V@?WAGnWHcWlBdcol8Iznn$#L?RZJ z!B?Sps$rU!gQ)E2QIHj>kxy;ZOJq}el7{%osgxs1y?U8@>glU>v}NO(b0SN)kZa)z zAN{3_<H0L^DH9pB<JM2(h)W!cdXZ2*Cr^FKb3fr<|IV+!^X*W-ztaOY6<Taw{u%pK zP9t#Jnh{7nBBmk`A-z#60`;<vN<9zG#?Vqkf~xvq7J<3M%rgfy!L6p_OBWxM2)I_= zCgxgYZ^I=h(|~S7aU_=|s0cw*`DGXkH|4EJ-9~*lfkB}q<u&@&mGX9sE-4KK07yNC z;JPA)z?f$le?q5lR9~1)u|#wt0SY;y4KPQ0iWA!^*rJ88H^r9zzQvwsNrSUg49=C2 zug_O`77HA>;lUYiiUtka`4$MWaN-yP(8eH8)2|Rwh8)HBFd=@x`8>73nD%iV`YBq2 zcR98=8AlP~cqvo0o!Cx(`}=uRAqjs+VtB{d%3vy0jwTMJrzt&Ey{>9C(f0cGGQmbe z@j7@}8^jB<MovY!MR<{?w%fs(bLwpqJ<TOos1DdYXr1c}hp`v@%SorM=n54>Z{R74 z9(uLAn@xq$g<5E@nlQ~^mv-<hS*83mcz5*P<)sXT3B8I9Wq->$q^!5|fW-2|rn$$D zn)l~1UEKfa%f9nP|KMbK`SaKFy#F)GQSUX4F;v(V-u8l4Jb9QvX)v%y+>HF0V>>U; zA4WvS%jjzA6oC?y`i|<2L}Y};KpA+N<|*hrg_<K}$LuZFNk+z_gxMAq)hmWaX&5Y- z9YiTD&ba`~`)9#tz%@S(EK18Lz@kJoD&?Ai6%HA#85$*oD}`~S1R@p-e!CZUGphHR zjefyUo@#}YwiE_@$@4umLg7z7b-OY73<pmKj0&$)UbmqW0qC1!k<i2VL<~O8r87QE zILZSD-5tF&PVQK7T4)*5Pj##F&<+Rh+r@iPg2(=^T)tMLDtQ;L!aI>kAO!Drw0K5- zWLu+ma8pJ``l1I&?3Zx06Dl0gkf`L`m>LGdKO4BTM@Ulj7oHX$a>Q@)$LEq^oba{C z-t~ANFB$6#Kj<Z<lrs!|;F;1kj?vfj0gmgM^5(oEg~-qYg&uX#r^G3UzU`&brgeq$ zihf4tYU-4F@URw0Z))u+?fsO^aMTs$r(=B<oWMeVMSy|jMN;ThW^fYG939qRxBJY` z`Q(qe^NzRwd?9o{e&NIYnqK;K|J9SW9{uh&9nP*U=Bwi{CF=s>qA1*6lq`pd0nJ=O zE$==_KBBsQ&8>v!A+wPf$X<lcfb9$|Nh%B_^=wh#)QhB3M(6}|CN$AN@(LUyNGeAW zh7Vz%M@Fqkc4;1@KT5@bC5}q}Ub@W~ws-Sb0z-~48GMb9Q6$%tMWS580bRa)rEp}V z;7DM?^IXw~!T-NSglE!#txtJw=Q2zR$EXV`Bc2QcAK``v)xP=*ez|OufaiIC?&yHc z=ouQtE%~JhzPc7wG%yAg0}RXnIcw9QdEb5onv;ruOiJ6pR1S_bZY#r~@feX_4>a&3 z(}5!+<xtUEzjahl8V=s<WZkQ$8tE;4jCQKI9(qA8=;VOw7IO^GuNN{{GAx>XM`fGW zjRzP7Cw1_rcpKa~hSICxAg}HsM*ix;vz*|>=9A=A1UunA7Lh$Gb>MfDl5DKRw;F6i zKOD-r<7L`Q^l+S$gPppjLl<^;^8<Xl<y@{t@2*_AT736<3j^)u$?Ejt!K0q?>i_<= zzgK|nr>{vX?k8vgv)sA%3+u&6XwOJ61r%)n1WTA1y(0+9PDwBbqa-}45uvWaz%0U1 zrYeYFG44$1Cc#wIsS33>!kwJNLr1`vt?v;z<TNiFj1r}cax*63Yb}JOtve#=pl40N zDW}2JoWDos+RYjG6H;f6<2X-8+uTG^;aBw9<J2-QyphO=Obf^8AzH(O!X$@*@8E|c zn$Jd_D5>kg2j$w2`T<m_e#Ky#+Hk~e9N}F`p=AAn!EuJG5)#gJ8n8IL<NP8cCU{<F z;L_oL<6QhsJ&uRBW)z-4M*li^m6MD!9|nhhYZrc_8oXiX<UW{%=iutWh|T$IY_{Q( zn<!-P_~?l9x4tFX=&24KDmM`HLS{Ss!8biACo7I*(4}14x|t9@FY~+!JnU`ZJn4pW z^<CSzXq^p?0a&uFs2VY0hc~=Q>eDYWX*#QVpNB{eNrF>-=p<b7DSA_`{gEg)QHo#O z#7A5@jN`9?3IEcb95~6Nqrixr`73)0T{T6@(R(a8GxTe_UaS|#8~eWy2v5xCeoIZ& z{RA!#7~a0TaQ9cvv(s<3$Q;+CG%31PLc<KkU5bx!VT8AtVXirTDJ^3Cg_)&%lR2b% zns*sv!bF0UGZIH(1RD?S896$SAld-6b%o*1%c(GS$`d>))Q%Dno=^3gJ}9bD1I(d> zjFvK}BM(gVI<JLC899a;6$6(dx=z(IIOom*f7&p>WT0bI9d*i4GF<(IempH@PrpV+ zqc<8DB;If;6-k8eV8YEqeH=PIHI2<feBtyMs(Shs0R>EC)eE2S@T-Fi+=yPIFSu#z z8(riwMsQ)iei<=d$RFG8U60$(;BfN#^^qw4fK?g!s^}@k18=m!$9WAN(HZ<Hy$K9= zbKqW%4*Z<^Xd|J|IbPO>?&Tbg<s_y$wfQXkl}}H|*nS$o$ct?86Ym4Q^cp>-{lNoF z)8=b=%%mJf_(LW^wVW>Ig^HphDpGc^ceP(h=|$V@1bzCbJA-LYkH`ik^#LP|;nRBG zd#>Q#gG2_%z!>n*f-i?B*^GL!f9rEU=ZWwA&0l$|C!z0`biX;4@BZ%ZUc77epMGh% zc{vLll*f>b_Y?)uKA0C}PX3v~<ihxb`OTD`K9tZ2C5&RgWl&KZsgx_sZUu@Y0;3(p zlow^OCjui0zZF%lby>&40X`5*D)^K#*R=)|!(jm3SC5z!IfXTXdzcPUMz5kN=XU$T zg@L5oQd+RlrXQiZ+p5)Lz6f`G(4yY;A8jdq*9qUIHX{OnGq~#1s2X^M02~5~)AUE% z8DGO<AU(3FQ-+s%_3Vu{QTSod9N=Mo9L=szp?Qtw>0@&<&v&IK{ny<wa6%RM@PQ{| z7>l=zshnx*419I0KDtM{0Ga5ovvP9Eh+P-@<Dd#}eFR?7nS5n*ru!dw;5praUocD? zAN<s>HY4?U3MU-Z(as-Q@I*wWU8)oh+iCY22{`(PpSw7v%N!>itg?<A+W~R<O%tb7 z=iq~#1g>c<+TD&Hx~;6Ii<|_f8#*DAWKr4F$rQCBtKf=OT*4>k1|I8rwZ=B^%0l<S zdM|yPe8E@z>D&MA>t6S|W|pQOLAu`@%ls*)KeBP*zUNt2;W_7d%_M4K7R4}UghybQ zNx6q&*Bi@2L<v32G7^sYcQYqKpd7R-3@Rf@ALgcmxusBPEBQ7mGm=)SiB|=p;pkf~ zp=m$?tkHn!>08c)Lb<MfQjc*sH)31gDMi+2{=M+0?nnd<IvEo|4yT}Q8E6zwpYYbO zj6BYXQZa&hb|xV<e!0bLbOaZ+Xyibw&8RP`+X^1?DKsZwWUQzt{mEBXR9LTj<OFq_ zgfHcIbB?VPQ}l2;O`-HjAqQXJ&M3NWFD~|@0JzvjUoyz_m8kGw$X5-|BniRw&*{Sp zZAD*>=qbK2m{h6-&+s3Q@Et7qjIE<U4yK(6oW?F~{MJ@|?OOhk&!ii0?K(|c_oY9P zTswLW#9-mo9L0y?b)ix?qQQbbr>c*1mLq3yR5v4(OL&K-ifBr1i6#wL;N{QnG1D7~ zyydqO34qW9ClN}~&Cvy(8w*F-g{#lf-PFThU4r4lI+r$bly$w}n0yPsbfoAlx`IjR z>&eEIlec`*8-L{;|1wQJ;&i__mM{A1FMIsvt@r%cax-tsNy0RLJ(4FYOz>A*pi|D6 zFahJMe#+I+a%-!9+`ANxVdq0B7%Eozs?a{yesZ)OgtD$P?qFyKK7kJ=o06rA3Kbb4 zMUX|HPT*V4AaDnqb^yUX<?5O$SkRSEK<dSW(nky<l^UN^OtS7G*;Xw-l}b?y5MW8w zXF_Q3gs}Aq-f$9`I1VFq&L}D`b<pLy9a1l9*GrNDr=P3RKJ|l}G~m=|IvE7_v60nv zj=XQBHlbkaA0Ockj^CvQ1OCV%i{W@{ikPf+!pd5ybCwh%@;%XPdL$&5;9}6IMRqum zB*V_1`lHP-PHl?EaX|W{C-78W{Bca*<WBxMEtzRIlJ@Ozrp4?@vDB5y@uYu7$O+<w z4;>aU^iSRPqHd}MRvaH1D?%C5z1I7J2d6mJa&A$=syhfv1$c{&rIKmruj@qn=p#Qz zj-~c+g?0|Fe|)Z;t3^ZWcjwV^bS3R--4I~B44*k=aL`&2dDdJO$9ezpMrd1}JpK7! z@Z^8^f4}anS2g)a(*3e{yYc9|e{Q*X6z)x$6Q-@R86^%GH96)al+>I$in)<%%p9qN ztW7c)YmFEP$GjXTwWM>U5QJL>mg!cB3DX8JwQ~UuMwYRszf}yQlvRtA!{sQq2^k83 zgSX9)IF-Ox&e$`Cb-OfTWD=#luEXlb53E73a85OS5n#E_;EfIjaGED@50A4bdX`}B zlL}LU4>&#I_Q(%sBlO%uoOqS<;^EW`{Oe&b&cY?RJ#xlr#Q>x-Oz@n`NLvoBls7MA z#*<oGNfCo}S7JQkUruW3lL1?EU<|@{?VJ~01(>lJwOh8BpzrEZn>YrGl4Agviq6SU zb?OVEXXOPTxLxN^z}0uduETVmQ9p~GM*4D!$u*#WHwF=J7xfyC4@eWN56H`fJ_ei* zE)(Hqg{mF$<lx32=tw8DkNsmsCA1GYA-3qq(ZG;fAZK0Rb;-y8kX(ILJN8w)X{S*G zsrGS1Te&04`I1e^h5n}VxRz>j96lH@dhjd<xxBi!|FZ%AS!W%8m?s}`#PVmq@uh!i zb<5p<YqoJ5x@kf)zZjUy8iAv5j8Y!vQTo>Cs$O51LkS6>6w!6sF$T=n4xfe85?BQ@ zBkrWOmG7&j4pC;zFTqX@M!#c<CGs#DmB0u(zzK?A;oOV5?a1IU6xX>afFm4Qahe?c z`EA}B>7!Vr2d2F_+K;HK`OxSpuYTc}Psl9i=GYFQl|XGHsDA6Njz}a9C@spdDQ9T< zrYsz!#aWKPG{!IbakO~j1I8HX@m}~0kFhALfB1*UUf5235objxp|ko<G3QV+qu>(_ z)kpfr?~3RknFPMQ8_L7*@Ns%AW9Yzt3f>08utcMgKPMmj3&+5qLPHi_;swu=S@Z@T zcuS`Eq(4)MTOM_>+N(^*3{1||E$3EFu@`N@5*3t8;G8=CBxPvKS@7)kV1$&y-Qd)G z?>kChc)Xw^S*?=PFPvS-1GDwab>SWy$(lnzH+B{MzM}7ShpM&$h$@?(rp>14wOAXN z7Vy(?I~Kg5)8Pp~=)i}H^O2U%K~2BiG2Hn0XFvZ_UiZddeaj!g=fh1Oam2E5>7E~5 zul5p^VNoy)my6lq-kL%XME)rg8tkgAYB0uRdHIyUoreK3Demy3I8PX*G=UTOHIq`` zCNQHb7z~BtGEhn;vwF};lJyAd1Y>Utc+S;dgz1>C?~-3mN&tkBRQRO+xD(>K1eLNj z2*%K(HyFC4Xq2kL^1y~8q!^7zK&>{=7B(6=%XX~O-G<QAcqCNKhC?`msWm*$a7cdh zz4Iw3_}Ze&?Z?71d1xpH5*$PfZll8s@6b?>j1FTCZ$xkF$d#eM4_){gb)6mMl@tu4 zdebL*)rVX`O_}`sQ+}JhlwHdk_|@a!C&qNWZdUbcVA$`7$DpNM8$B8*lDz7&`@)YH zj4~s3tu=*?%lBO?9&jifiQ!fFoVvy9$hhu=k*RPXsT~tux5F$Pi>F;Kij${&yx&*J z&^J7XgZB&j6$+K{ft3_-DkrHAEC*aV8-9<wsOV2o%Cu?3I5c)<&>>Il3@D!caznw| z&+Ps9)XydX&^i-3;xIXIiTt$(xu$Y~w+OyjIhxNmul;DUKRKTdJJHV%JAK)!KK~`F z3)j9mV|ayE<EJ_?szT;a)$`8|sfV%^w@{SiKv5Z3T}9x-@Or*T6fyh&9mY)=B*uy9 z9#$h@N?ObgQ#lMm!}NeGW9nPmnNOySKqx8Yl6u7C6zlSO6x-pXOJ(D+eF{za2)K-m z5~Tt>T4BK#`LrtG1E4EP&oEOL-5;Ffmm>(x4AF?&29+0&XG9v$D#<IQ$H8XDnUU2f z8-8*GaH-Hg9Z~ceMRTr6FMbBc)Ike6DD$ALSdlL@Hk}sL!3byBOTN%B79=(7(b*CF z39<Bru1mM<p55iR_x+bkMi41FuB+Q5b+lI-$_h6+k_ad~g=gJL4%`4P*zNRs&8=um zK1TxYYggmMGQ#&@!z{HkSTyc%TV=0|O>xfQLyu^N{V4Slz1k$vDRnqVb-)pMja1W| zWP*V=Lq`TL@GQ-z1Qrt7Y17$jxy>v}^C-gw&m+YFSoEGMrd{u+aZUdZ6N$11dQv|^ z7iaAWa9Sr{RL;?o#Q12tn^(fZ9e$!&JhOI~R<q;f@uQ#hSx^4;JAd_UZyuO_sK<{e zVp*>)|D(g>s|llW&s}I9M!LP6y>YWeo@lN+B_2$OaBY}cWYdud1BK--%BI_sQ&xg- zX95Ex{Iv3p5%UaetGxAGyAkpd7U5b9#Gv{drmsm57EjAz<rN1MY;0(vtgU<jO*zsJ z<DxW-MC3z3%Iil+6iL5*?79O7#=e)0ZX3ZJAPb;FiQuE33h#}~N#!6}Ws>qX*uJjJ ze3f!XDZnwRtK)pYtB4@wL96PjFCn`S&%vlSo^e8-Dt=Q~=q$wMTqzcODtw>bC|?WO z0VLA&YJkR(;dCFa!?bEA3(w#N2e(EcVMlWDCuLxdbnR-kljBL+*PsyEM00r5duPH2 zeHZfGs$Ne(HV8;!B)ByqVT6()XRS}T)UDdoujnfV&Z*GN>YL*X4p`;IU}o=v3g_D? z1Ix4k9;T4lKbCeWk3%ctivcg=glak!l<37_`W<w|Rh1*~mcb+Vq@O&L6JfWZqZ^!( zr@r$+o4Z<bgVUBs)w_pMmi4qM$CmKY=F-#bJHZKe`S9%6K9oFj^!|I9Sq9YL9!ntD z(A*z`>uHwt4vzLFUd0YWRGD93b3P(@15ZdU-1Zjx|0vyjVm=>MI+yx~*!<<UKj#%k z^Q(XDxPD3jHdBbqP{Sw!^476Zy_^rl(2eu@gs2hj6$2+6FrJecZ8#32ltiHz8i%2+ z5z?_nPR>o+2oLiaP_3@#9IU8K9c$hnI5k42epLoM2^>te@=sYfmlDjGal5<a=Oc3a zHMg{t)z<#tL0O94i9Wbhzrl|&CA(Ad!5)!UMF3M_)yKo6I#0WXJHZOR91GewL;ay& z!WRYrb||GG{YlxF9+-Q>QVQs5t2cauf~f)nZQMD(rVB0&vRk|MXJoGW>9a!r<m(?W zFk897W*F@x;q49+x*0vVreW$<+h$|oNJemnx1*7nLDlW?GTg3QunK<kgN{r*Ab)tc zy*=7%p`SMHTyaiehI)+C9uY|4@n(LCR=c_bGhLf@a1{7fDdg6G!VGfmjd7x(;|y{f zle=zsrOf+#%K69f%roHm<BYtZYb!tTv5{TLo8FEXdf}lLcNHVna%Lr;EHrQU;l2!l zgNEb0MikcgUb4|Xe@$znSp$9am5#SgsXm`w%-)vWOBZt9?|zmSf^T`o^FR4F@4Vw} zztycjwC@i;V%a$Q0mR467K2+bF=%-qrw}jWZ3kgwqNEg{QV!<&m0|!K20Jh%LAZLN zA0FQ7J(#_{KGLbwaC~c{zlM=Mf>9|+BuRl7o+*gL>1?hyuY1s~6*pU(3r6uYUlg*O zRq7W$lY-YfRJiq|w5T?46~;0GjwTpYc?wG@9Ay<xa$2~Oc#^ho)k4VYysm?TW)hqv z*99ZzHFZmV^Sg>mNhtKdD=f`<I~+Ci<+pA)Ilqvg9wi!6PW_l3iF7!YYcYEKY6skK z%Ro|APEGxE(ni{jy!#RLB|?K=(Sc8aOU9AM$%Hot&T*rOgK~GK97}-c2lD8nCxZu6 z223B0)E4!iILmvE3Kp8RZXWkq6#0#4MmrIyemEbni!UX^*3smYBS~rQ6lQBd^zbCn z!zz)-D$Zb;#|Mu0=>WRYTdtRfq6JPedy96+H1C*6<mLzY7930Z%72_q>P$Gc>@$D` z_i`9$&AWyPryr+?K5V2g^i<u@;oP*ke%_VNMXfCX90U<yH#0@6{Yc?WMcu(^opmr% zc+S;~p`vrTkUy!S#)DqucP-b8?!%@Z$mze3_o1eS{2{h_>FuBYm5ZIX{lt8ccX0;s zat0WXTd6|<C`655IeO=8jr`F7f-RwjaLf{})?7bRh!TF7PbmpqJ_J3;SdJni5;)oq zqxVDDRhE2Dr3z6k(rPGQcutwMv5>|{z)%50DPZB8FM?5Sl=7Sje7tgi^7xq&@PzX| zaOdzWm<gi~(yx9>=~Gtllcx=s^+A9BY{Y8^K`~9AC}cZPq5p_F0wnF)DB1wQZzo#) z=q3q%XmHeTrOB&+?@4X6;Op+iohVHdJ=H8aq5<A+&ua@$yz=v=Zqedjz1%8F*=sfJ zjJgwjwsE-zvzVBpXwIlg7TVQ=qp6D?xWh+3bVR>oVbq6y*J;@5Zp298Wi9P6BQxji zLDS>hr4rIh1`of%ZDS<I*;7bHY_Cc?Fu<)_>9=SJzXm?~G4Ltd%C9Qg6JiJXR&?P? z7JujQhN~F7S446c@4M@sz@D6c+Es)US+j);c_`KT-PQ1rW44|FE*cNwkT}?)E4;U6 z#*w?7j~6=^vyOHl4kYUdySHTBWGC{7Q#(j|)?k)c>vdr?JgA!WA@DeuZNJl%KT}=h z>_Hix(H-(JSj#WjB}09BD&dFZ)gl|Qm(9JMullF|!|VS^Wqt@>A6CRN-?;ice#Cuo z8iB{TcuMj#Kihen{TUGr+@V^^!<hL}L^J^e*ceurZHKN@3ffBAqg$Arusm!m=GAt2 zP{Sm`Q{T==4h-Y;LHX9f$ux#>Dx+}aq|&GPC+1h=gxL{fIkPy1F>Nsl9xoz{bgdr@ zr-Zyb8W=d3;5a`B-EFAtn81##gVS|16>jbXWpNOufki2W-C$~?QBF&+HO-lrRL&XA zDVK#eE`XP`x&GK!`5qN=La9UqZBTjQJT%o{fR2<g!dc!Dp%04XW6k0)8F<?30x5*1 zzEw<uyEI+a`JjV529_12lp`7S8D!(r?HjhX`g6-vVu&@u=aPJES?B2Sev^|%NAk;X z$UNuT*P?9jw}@F!XotU0r4QCkN|wnZ+l+ZhIY$Io*c<h#Te^|&J@2`e&*hZGa1%{j zy?k|c&)t`2_r2e*XwbI+&i`1fr5lVJu7?Mh>YcdPiuZJqYzvq4XR)>A8yyR-UaN57 z($;ME*3H?)N5$!E_A^<crHalnRjeod8GWWpA}YIZ(PJPa2$2jIQQ8=i;KR`t&1u2O za(3$09Z}Q1c&oBcJV<K$%T8j`!u9d@B<q29EU)<XSG@3W^?OgSJy=*;_s;X|NG*6l zst^mJ7#>1`S#R%m6=kZ0tei_meacjgrc(r$;vzgkP`JoXu`U9~rXh+$p%^vAGcT`{ z?#$EcmS#q!d+)tmO1a){rBVkY&lb-Dk1{d3QvBdX;22y&Ok7^xJKz~UMKRazk>5LJ z`UON3wO&{p_@lkhnLyW3?n=4thy%^ZPsL%B7%-e8elY&)h1|@c2Tf;{1?Xs_9H;wh zI!T85-ADLVqg79dI9K~yY7a~Bqhtk>Ebux<@XDc3!qn-}j9kD^ErixdAAC<mXSf%% z)MH3!Z(~kW3VHy6+cY&V&||tP-(Dp$=6Eem8lmAsE`<-?>JcB)cgwLK05mEWZ$vrq zmj*k2Q$iwGc+7FQ86XNcIm&kmPxDl;brFlECo#}_@4hm-=UoT0d)|AcA_W7;QJh7+ zujeo_UMI5VAn{{tu*>OcYp<R4#FRyTDrTJxly3PK!jMsxemH@xRc-(rWT4K#bM?Oc zIIYF(;-hQzcJ`>pWpB!b&}$tigYc=Jok=vaip?z|SMst>RWc-?;IbcG<#6$c>}0#M z#o^+)zy2i$kyh`G(q3J9+e!OGvde=feEGM3<_rJX_x;8lQ^6nW@F7Pm7ao7#4=ppH zU0=N=VVtl!tLOQ-R2;LYc9=ONMam2(44CG&5hSGBVE-T1-Ymw_<ht{V%$xh3S(&w0 zcUM(!>{f3gDK<q8HIzoANNYp`k_LmJ9%KlfH_g}t2pBM68{mU&5E%Q-z&z;LusoJH z0wijNi#S}GVzar6OLukcd+z(qn|U++`~Bm7)y<{Nw&BRSb?^Odd=V#3oIOs&SK*Su zLs;NiVo->RbSE#SECeAjxvb~Arn=i$9QYfO-=QNg_B11_rX2?1YP?Zk+uYkKon5RN z+IQ|jGel)R3vfwNv?W2gqSXh1=o<Jt6=PycG{UH<naoqhWdANp8VD2h`mXgrZJCEF zbR@h!VbIT-qY6NO+as%03n9Q%G=LW;*}X~C6!)~Xrc?`~E(NOD#A{P3!8jg>)|UgM z#QG5~Ei=b~)fcVkguvwcw104buuvd_P~AGmsGw1hYrTM#-0yu4@*Tj1OzqO7`-vVb zF^eyX#LK@}hp{Sw;Q#`U%}JXI<pTtC0;4dA{kalS;We=hHlPv5vqyb{v|h`&h<`Cc zECF0%=F-%8`*XzUm$8WRLt-7yNeaT;kIuOtD!v4kIpxhv>>>WNX!f^opRu~v*LKRv z-3?qA+=%UN*=9+6dkd@Q4YXGQlXhvFIb#%|C1pk<Tn=`)f$syO2xgWu_sp~g?i7Sc zALAY}$i-L{O5HBj3T+uz@mA+YOJt8nj7-jrmD%~RGBJhHoWzo3l~~tkKq12rJvyR~ z&a)!KNq6#r#d#E;zMN0zOPI8x=!#SC5L{dk$Mtzm)x}Ic42qctd&7*(*~mcIKHC4^ zsQj$$zTMJOsc*0PKmTt(c5bh`_&@G<cX&i9+J!+FP~Ge7#dKD%Xhu~xL=zC9U>z93 z33qZODBmS0T?{P%8LdX|K>&WO*ZfUpt4|N~noM5dR11nQ`>PsGqN;wgzj?oi^qNxI z0$5U62s6l56N9*>JRssAyG}^7U$4^$KPRnsOL7GujF^_RBYfEz%;ZVrL-@{4oQxr} zC|qKJ@w<W`0)gMHTZvu^Lt1m3wY_SpN_?V7{280@-f9V0H|_NL@Osm>V@%;q255>d zPP0;0g;8Z_EzGoK8wynC3gILpI}VpRtMH>wU{L5Zb6N4qxal)yHg^c8ZAPfkfBuA} zH{Lo{`{o+|`CTTj<M(@oC&5+j37)*yy0o8p2gcA1*X>IjJ5uZV-sZG4$1*@5QoaJK zh5^|dLx6N2K?)b|tRIxM#hudLI4tXn?Q-wNYFWIuNdh0SlpVJl(2$Mwity4c<20F2 z8q`%3$GDgXrwCk>?ciwLtg3a<LI_B!gG15<`=mxqXfs*RO{(HRd`r`G!r&CZ;-ZaE z+u0#yZI>J^;y#1Sh3yOt+ZMtHMR=f4;U)g$J4+TG7_jX<paZTO!^(Wx4=?MBD?<hL z>-<(;MJP%q8U~D&<5G{m<C%p&`^n4qH*Ejy6j1W^%gV~qpN-D#dn{}G*AM{^N(5^A z7Cxg}>K%Zo%o3S|;BRJkT2ITP8LSLtQEJO{N?R3;gOeEyqADc(EriLnxLCBQd9N0f zaKxY*Sirp3$(1p@ZeKA~ZI{WaT3GkT36%hWz1N05F4gmrc$*@VNVJX6)WwNbroK3^ z{fs3{sP&*A;2z-idZO{b<pkPJ(yeJ6wn$yukT@b}saM;wLLINdyNi{mp!T;n1h0hZ zIUsc!BUtFX3XBT9gkuq=XjovDh{E{5=ykt4Xy0sG91QYbazlh!A}4SvGmo)(PyuTE zOReaf4WfM;D<bh6t~(|g&2`(fzd@M7tM(&3Fg%KuYb9#UbLUTi+5s>Ho2dpCMim-R z%6gyo#Nw<!=DzHbhk!yC)Ek9~_qCvbRhr0tF;;etx+A5tb68gHZInAVS8#RK3PuCg z$S8db5MTvD6F=lry9b4Uo_>2|Ri<Yq%gpRlnc`ho%#E6vnF=keuB=Ak7>Lzk^&DX> zNNH3z)SdA|5lpQFcvqKK%Z<x7f}?}ZAc1a<kVIK`8Otu)0e80%cDGi`!;egtho3yo z^6(V$3cAH26vv@O<^eD=AF*1*kDx=7p(lpa&{rE+#i+a?k41q2m-WKaAUM_}bD%Kp zlNd$^{*0S`o7dYa_WicXAO6>WIJ(z=W3zv32d>gOK>BfKOw%w7L<aVgDJtn;Vhy;w z1p)1}4RqO+IUu??G@(`jUKw3tF-RwaPC&R`S18FKPK@qBeUNu0G6}jNWSOO5Hi_NO z2G2xxO_Zt<Src4y(TvT;*Hnl#+B`li-z9n>6$W1x;gH~~WOr<JG9Oq&{BCsL_=TC1 z78979q-a_se+MFPENTTAL-;HY`UeLVnNasnA>qBQE_h8VVS-!(i*PkUq%nO{hyDOX z@Os4$RhvcFyy-^;wex3Pg|M*35(GG_Srk~cErXs_fV#?K-y*46Yg(kbdYb3<XHZZs zt@BcSec<93=O&3+^p)f@h~8b!!7cceE*x9jUfPry75<K)nTw1F0EJ&Tn{oNOF0lA@ zzm@^=q_?wp&_U}b&&vD~O#Fk5{<1<q_Wtb^(*4^6W4CzxE`qO&ONz`hb4bjD#~@{e zMgieUk8|oGg4V*!+$5`Ib&G<_yL+8>nVOnR|7)uo;e`=0XZ_846u9Ed&5pt>zLLX3 zhi2Nk#lhIz-u6JbeQmR>uWl#ta(I{=6WqeZdw0sQW5ea_#pC7d<HyR}nTfKxhd{(S z+QV%UAHo%d&OC%S<uN|Vqt2tW<lM*?0waEnHN_P|m|I7DoAE2YqI~)>1pMm^@RZi^ z$v^*JUXq!AX{nt0ORHfy_AUR<M*~|JZs-^^)G!%>$c|_S8OmsV2PrFoDg=a5M)qZK z!bNB$27gv6R^bti3sOC*QOTdY6~=B`j4+cTW8vgPB5Q4ED*BsRP|b>sWH%`im@ujB zVkXjzLL_b(_Z|@tR453O{<gQO5w%?2OsEn=vqE7V5noB#_i9<$p<}T>-?bnfz#ZXe zy}AL=x)z%0;euA|zgJ|upDr?|FDwFrc7B$blX^}oF5zm<s)+(O{oA%ZC~$1g>oTrI z!7V{stS8Qdxj)w#KRC|gK)Lp_#rCuujWs!Xw?{~rmVJ~=tjeqa@|`+1;XQ9|${Y&& zNQ!#ytaRZ#g+81cV2MBjcCXoPOm^A|o%9+s2`(`$=N39ijD|Mdn5gbn*ABB{$&A2k z2t_vEw>Me#W;JK){#LnnOQEs>PFUUJfpxSVVXs@_GonT&hRPUmjnSFDGQBWX7EaDq z#RAbAToxAJTSSQC8WP{>AF2nmPt1d>L+D`$IGlT|0SKw5MC6<5PWBBV5Fi293Mb|! z=pTA*Gr#c9`tn$U#zQUQm{?icD+noaO%`u%B=k_qsnS1zLKv&=e&!S0G2`HnZ{SHj z(Q;0X5V%o^X$4voF4C#joTsLa$B=3u>=K)-%m2)`u3GD`)fqW-h3H?UfnW09+ZHTk zVDpb)XOLL;u0TGS*f0a*7$nFO2?wT(yvxuBI%o`3!1Egew@5rPwoL2ll9oWsL<kIA zr0%{^cIv53T`dp^GKO^<VwK?h9IF87+*mmZ2-_Wo34tbz!=07U_-=Gwi^)K$eyXNm zO(U;_En|T1AYJXpC;A62;rGRFPMX&&!k{*2l90@&k%5PXtDsN|xI9Sfbxgif(gy8m zy$FxERM_S;cVPgCWNK2k5yEjl4#^E6pCfx<=vSDU`yU{OHX}4>qrrXVimny*!X)0r ztH*+B@mSw$zFX{*#;L<Rq`fMr{5f+0j{WSM*k%W<Z}B%Zp?ySPgt(;#=FkbI%?38> zPfbmv{|$nr*&d;A0PZjaZ7Ue11N)M8_{S7f`Y{G0sTk}uQLVp^`NEyh0`BbMg2N!& z8(1vhY!!jBxwKXG)_2OrDyxRjfkMa9*SF8Jf)FUYhQ<i~vnn%!U>WCmfn&2M(n+n* z5&H3zwhjymUV&?0+`vVyBz3TKw8V1wHNSO^wlhz<=v`tYx?+`%s|9yt-;Bjo#eQj3 zYlb|BsS~A4;AR<LUA+seYh=}e!-3Wqf~u6ITkFBk=|_*pV;dMlG-0_MBFv;Ikj}W6 zE3I_k$Th|oI)fK=bNcZ*ghj<nr(CP_qTmURnNNA<$am_&M6_`DNBsBypJ4gV{`5Eg z(ZSL3tOq5-U5P>ufLJxLLPP1@kCYdw770yFBX>5E9hw3e)Rj?brfz0Kw}1!-FTqu! zQ+vQ%5LaW~OQ<48#+9lhG9R1K0iMbP^h13aNB=PgN=cXyqD)%bmI*{2V1aZ=QvoEb zk=C~B?@ox)oO;6P4gRI@U845hhQR%1zg~B>Bn&6P(S{76`D`+m^%Z<-w{QaY)ixBe zZ!oj%X@QAq1yLs6i@>29>BGovLn}p7TH<K#uehk~M(9HD^|#!f&k-hQXy?sGbm*c9 zr|wKF0{RsvmO+vp8{9S5dYI_lr|a2_3E>J6TAZJ_49t=Eu9=_+O2$QX0Zcvd5rM{Z z)PyuKE6jDCG_H(|936R(6FB1f0V{xN<S+|x*GH(}PC*|Em_v3$uP&3sxUmaEZkM&? zt+Kri-U!sfcV%+a_ymFVt}9ZU{ll3)<1l7Fg8$UHxiWuhmem)mhAEQa5EO@lB)Q>% z9(aZ`^lnD}0GYLitne8U&{DD(N32W@J@Z??t2PdR;H@+Pcy$sGCP1G+x6gZa#4>J& zAdmAcJ_jZlFD~2U?jUg>9!1k$%f2J`1bJw<@t3Wwd(c>4IrI1lgo+ji?kDV_@Q88< zO!N)EHbopUxxlOyjI!fCc|lsSc-{G^{8(vADokMvjC%INpM3lu{q3h;{c^qd*8jgP zi)CQw;L`^^1j-D+RNW8V5P*|FqzLgCAs}`1>R0xt=2kt9P-~`Y;|465<IRlc0J9>& z%2Qk*h<+dU#fb}Jh#V24&_Fm)U91F2zAMzG=cecf!NKoNn5HudRLlq2U5I246JBBs z{QP8FYH6eO(!K;PQ|Na2-7zLMVuwhcx|P3P(~>YY;5~^OQQeq@*`f+TC(u13SmqG8 z0=PElxW$Le?YpJ1Fbrna!R0d7YhCfxz#PDUN1WM~rD@YX#Fxe2oA;)!!o+^9r_fe_ z+PCdnbW4Ln>PS|?Vl&lxsO?Fhwb$J8bN>lvx&|-yU~xWVy11jjx4D7!U<`+TYh0x^ zqfkj;nA6P=E8GZt2vm2`D~O=Ja=@~%`5><7cD8xw%*J+EUNj)Pj#aXOFjjfUc&w&i z&5U|D7)*>|k7d#-Q}fehbdqGW@j(R3u`+*ht_)y(@9wiBnx*(7i5)uh)y#|Tv$%3T z9baNoGA*w`#<R<6PG|}EM@O(S09`8VvNSCHWiGVn9FxPc0w01GeotN$olG1XDQ6#B z2(IpT*2?xCLJoQ6Jyb4htLx?X-h3GYvno&`?zCS8LiS5xK{{`t+2$s1g-)^?I-!C( z|Nd<M%|r31)+<`JRanVDYzg@^KfKud`d071RIt4BU%qp&ueJZKFc}DdEi2(Nxgtoy z61f7EcL+vdP=!a2sGS^2A581|eO!+)lmsl`#zgA#aJnGI(lB|J$EfRBB*rlgA(F;5 za-uErlSEmW0#t_jAwsTY+dCEf{g4<yU<Qf1XljGPS`<U1xhr%GNUJ@<484hv@v0>S z{1Sy7(!QVV*W#OFuv_637xv?yE`lp6Rp3-X?8I94%|(3W_y@*h{|0bnylBB*#YS-W zRX46nBh9spopu$B5x$JW-^4)=>U{TFgaPlmY#A^243B6H(y(IyPfej3c&qJtFS0kV zS6o01y?z|CrP72<Qs<;i3cF*ICR~nfT(&)!+d%i!>?HI+(isV9DxNwI1UzBT<l4|@ z7@4tZ<xWpxWg#qF2kkpx1!c2S?k_EtoizgISSda`XM1ad1p{2D%%?yJ8NuAXowB}d zMyWX)1tBt49(wY08K2_};}Mu==%{QQu9UJR?9d@5P(K2xg;41uc`nC-FtS)oA_gBQ zt}5V&N4u#fCt|U})W*gJNjwoZy4=n~=(LA3k*VcrEYGoP0Ub&h3TqT|KgpfbCr8R- z!{^E-uA8wi`%xD-4~LutTLZ&Y!75CA3Z#NS@Dxzi^WBxQ@BsHW#kmTNFgM~BRt#@y zu}Fhn({PY>Ey7P6=w1I3necD_?JJ77w=BO@uw0y<{8YDpy%m2AVIpvV8bsTw-vc0@ z1;EFp%1psKfJ?-Jq;|xXr~?gxG!N?_WgZ2K2zDUJj)WNLCZ7|i^|SrbpLfLqp?!;* zT&<PZ0d-_9pQB>C(XRgNWckiLu~I<V;81l5(gqsSm4rTENUOF@eG#7vy!9HW?|f|- zHs&k4Q%#zaP&!FMgJ6I|OGZJe05j&`U0Fo|HrtkggjYc!ylOv-uARR*$#!kY@-M$z z&%jz`*xHW2i~k-<{2Fk*Im_?-V1IE@^J}dS_g0(;8$)hYB=zoB2mnYxx4+fZ1MwF@ zo%!$eL;VOe@Mb^aHOu+HEuIA?t8t7$;jEC3@vrb@?!8xB<z^a4kQ?Pi?P~Cvh{><U zPa^Dw+3PbjTDG=1ssq>NV0Wk7xwcrAZ*M0LW!u$9iG!{IoMyG8y+C_>9mNtI#)Us| ze4!jWJzZu_Okx$Vk7p2?YPq~i#w-F(8ty}I5#5Vb)UU-7Iit{LshGLa3Q!oxfGy%P z*jAwjaWFJ67E9T_-7=s-0w*NkeSklvWh+byY+XE;e7!FeF4+F*G9g?{oST9cUi^)B zl}q2hU2a~zNn60jpD``#Dm3=tfi1>=2rR?n>@kAA!<RIxU@<9gWCXl3f6|yVsT(Z+ z>H=rJKz8<8^=Lx+b3UaT>)99JwYH`PKLxP=4X?K>zf`cahW7qgMo;nz7>XnZDP6ay zQWOLa3V<cx2EnMAM0(YZpiE|f$@+0p8(<xrMFG<=ih~hpes{;QaT^KHL0KH6LPcaY z{$YNnp42E4`I`Yr`>JNUeFr!YYa0aOF#Si!jLdX$vDrDTaPwN~=Tkc6rh1=Z&HIJX z|1FV$2wkK1dmhpaaSDe?a@MUl)10h6?I5{6IeGytCOx?W*1({X>e8cQcKd?F(Ir-s zo+M=M=X|f!v0j5yVMxx0L_lTn9GuuWMV$R?5zp4O(By++;JPXgE^(i6k;dJ1BOd(K zn~B=4mWXq18_sK7D!$lc#>)qVlLE53U9|z1=Z&}RAS8kV?(j*Oa4BgDjDvPH8f?fp z^MirQ4fg8XzPyMAZzFt%$&MvpN|4rPtF@A1&sZI9xY;-e*P-$gr{;I<Tv-4BKmbWZ zK~&1gv-7k~V03{;+fMNW1Q@Mv)EOlpi#2m}#GW3re7UEeV6WDSZAHkyY{D#4Y9;Mq z?YVmC7`3ETC<>ccAJEpe8&w(0BumgP0lUNah`5ePgrhD}Fu2666dokJd0>+uOY>&d zav8Yzu584*8Y1CNn$n8s5*BE+OsViQ^Z^3hsHqq{M3@=N4B|2i;sZfM+rsK{zqBEp zIye*d<Wnts>CSoz8fhRrrqE)1&D=>!)cIp>{{Jpm{_vCk_+;tdJTAhr|3!>5+Gu^Q z34nql!8v-gbInAr>GQ>c0T2fuLj9BIy<eae7T)7^1Dq~lCS_ddNP8ke?flb)k=qu? zbC8k7p-e|CBiO(9Nl<1#jzYYotqV8TtF@q%b`8J6BNBzdNy`R7yQp9TAqAn4ulC0; z!e-wxcCs9Slg2T@eJ-wT<6bdg_F=t!s6McI4-@DYcmD<lPPD=kf~~DHv5trD?ftC? zQSqr8X}=Os?H@>J&)+QKRNM-1#hq3`6*B(rH3>?A;ywJ7K{`inqi`;LxkI>G5xpJV z)~9WY^QD%xAM2(8fN+UYS1<ug1b9D!QUp>vxlDbuspWDAbD4tf{f7i6ZFL_4S8FR> z90S;KFu+KHoA@&zZhO$)CPCSomv+kH?X~PU9v&j9im-Djxr+<Xb$P~w2<Bp#Hit*Y zSm|jIkew=XC&qY9l;H_hjN)?8(;&=D%;m64-U<nE(m*nOMJa8V-mcxUk2`m;cT_eP zJ7t;V(`6Fsv_P~dqygzC0+>0H#>AKLDaW&L5*MEx%C0_5v!rbPOWy!<PVz)Q?!78g zC2HWik64oD8~J&dIf+yZmio%gn|HC)pfCDW-U4uTk2|jxH{OmSXyYX^&)T`3_mbbG zg9GA4!MjQnTrnrkd*XIjK5bI{75+IH54bZIwC(Y-j<3=Wt-?r0gGa~z@RRR8`RAX0 z`EEM@1^)^CTb907`%@esBYc_cN=%}n5~w#uvSArWSRp!)asWV1lBRz%a3{>)HN|4y zLjX#D1&bzrg0(VG4;lw1X?npn(jLSoQz$r`_&Q*!0bkq<CffVtHS5@ZvscIas-RMc z@Vo5_OPCR6uy5}3np2hTsU!2+CLq*n2u^=X9q{0X15EWp8azaMsMQR*TE~2aAp>gW zckuauXnw_s8a^Yc_ZuAMPdr%sMS}gQ&oGX4A{6+|IZ#tMHEKFbbB~`TZkg169AhJ( z!vv1i{<&YAXp#82o(EI4Zu+5J+f4Ex2&k@*ia`824;9z8!B_gBKI8OkRoznKO#?C! zLdE!z7G@<-nGuZ%fVvYj!+7}0yUg0p2et1Y!B($#Xm1P4<o1=7a_?HVY;MYo)w<I~ za_MxErQtpVk=B7)c?7|J;`CgZ#?_f!;K+*sPWc<7&mo1IZV&y$$VJGp$HsX#hexZY z54RS~xD-VHePss=WpjDI+`YEK#>Abn%@YlcrGzLdmH{04^5tLxGk5|iJF8fqEJC$# zw<e}W%89eMVaI2nci`5dmOh}H0hXhAG%;g_b`X{Zr~8N}=FD8Ir#1rEIMl8}h*?)C zMTiDN%#lJvYlV3Q2!5v>+K|_3oQ>gduRm*9s`&k^veDXlWA&&i&Pq$6AVwo!WmpI- z=C^g&w|lVrDX#pN_3F?6|NkghkWL@d3<?fGw81D%J(;8ulA4DIGheC+tak3XE^=b8 zNYq*nF>m=Spsv}Qq@(0Ck%(4li-9l#HF;%buh9pCk7f-4gKQAnNYF3{_hi|x89hia zZ^S$gO>HG}HZwBm62u`0w><^VA^l6)p$9;dWo@&TW(*Z(fD0p2rNSo>b1bJZ00pC3 z270C~g_rm64ju*}{Kzl+qHVph+K1YfiD!H<mo=Gt{R@F$$iR-jqubQrCE!&Utz%CX zuQZ=?!SD3%(zo>#0L|E%wh~O`y14He92Z{4f|+l^V&YcZ?0wdWMTX#1$;91-`01qS zF7Fa*vqBby!<;MNJ@Zz0EC*;w=UI!AhPlFZm%c#`wk|u5*=NRj#}RRsO)P}#mzT@! z8_T#M<K&LeKePyMX5I#d4~Ulx#~LtQesgOp`6y=}p5c5G>cZI4?*37`v=3^oiQ{Y` zI3P=aK_b#m0<r!0N?h;mV}TM}?q{j{{w)*gmdibIN?6H&d3hWP@WZFQ?<99(@t72s zNpOJRdjLVPyt9r_qaOXN-`^(4j2m^X!?6eoJ2nF%YzA1JY7sp55UxCB63ebj@R>)T zvqKv^ACke2muU90R$;#|;=W~%kro8}nE6w%WFL{%u)>iz3<AB6@nzn@bB&uYzX)`9 z>}y#`tx4q&Y~Ze`5|vi{?p)XSpcb*b%WJUjV^sftFIYbIUwr7?*4B-ACA^VmjRb*r zFmQ|HA0TNwG!b*!$-)Fxi12eIBIrf;D875lVJErL68L~nZ9vB6qMsOvt$Tm{uJo1J z)eseie2Au!D!hl^l;9MR+-{>)@Wq9(n&ntV_5)FvU!amvilg^>{WvkgK;QJMka7al zrXIr}qIIYC$aGb!X<5h=wxbj5nAJX-<=KKw+iGr^P)QV_NW+dx?VZP!f+HDSO(%>4 z_~kOO3|S|?jtx~BzdQH_KGC9eK?i&i{OHzvu2=Gr@dS$x@F{*H+?gYZMFrr}u5qr$ z1QyOCwBrt&_r$Tn#}dKkocD;zwhjC_SJr8+H$p>==x@56wym3>P^mkXRT|s_zQsd_ zycEZxi#GzphDml&I_%f6j~$k7S2z=8bBTH7SQHb~bPE%|m>I_+nJAO9{pI-CQPS^W zK=3uW%{YK{01L%j6k{dQuE-m3o)}hEZ4g}}9tX+wHn6y(mo7=G=RShN_t>AayVWjR z>$}8%h-;8TBDQ73K`a|rICK00@JyKOg8Sy#$1AHV2pv~B*#-c9+;Q)!+irV{-P7x3 zdvzBVQDxjJ$4(t9v!`atJUKKI(_>}3LjoW9DgcgvC36@7ci3sM;)PHoSPf+cw<9AH z<=FhOGU;BWD5P*j=1aQMdd^u$3|rxD%+AsrEFS8BV4Pc!MH>oPVm;7>^qy-fTxh#V z($vMb-SAHT;ru`U#JkV^@BilI8)^7w{(DP{<#4k7sg2Fez6lPUk(p#VO*?wwUnNcn z$M3#x$;dJRKq}!hziYrpCU|qNl^D4V>qq8cnlfhDf>*eMADO%muGxtaLw*GvVJHUs zpe`+hXsqW;q_CWfBpyX5sC^Y`?uX#H24PyIzWXaAdXer5jKnUJ<{jW-_A4mRSZ-n9 z*|v5R6Sc)P+g0#*D3sk>oDiQXryv$SO;b(mj44C%KU_a1OxI8b6i<7oBQ>arPMYFc zX&%t*_!Z*5N0_7+{u3<zY|XawUO!ToOQO;15(Y1tNG0dbrAU2j=P7dpVR0p6apg+< zI-k~YZ<6;nMZutzV&l%O_ovt=AL<K%#9y`^fCmL>?OuxqFaX9T6-c_P{tlF|3)-4_ z?y&T{y|h!7?+{QWy}i@!lCQB1eYwZQ-ke7*#DQ|0{W9*IA?J;xHncN%?2>UiOgqlS z`sO+`rr;)>0KqO@#^OK#4De#b8;g-SfMoVJ30~6I*5)4R^jH?WZ;}VoZUZ-N*C5*i zFu5gH;6)KISH~9?%EJ6SxT-6Fv$M0=4)D^~zCt`?2iRGm;rNc}36k!h#Y5st#;<k} zj(P#=-yM!<*uc%x!Wd+8l6-!EP#qySJ3canAnkIT!&X^eS|SbtCb3qcw3q`G+8`@k z3YH)_0$=)f<q$X-v-BNrB6A-`3ooc-q<ddAvDJB^eQpd5IZCRl<U)UZ_n$4uKZq{& zA+$cl*FWa<bLA}sOJ8gEcL!MBlQ=7ZGeJnSJa5*4P$U?M%tM~`(dG)DZ0nYpdnSHj z7DAf35|+2<+6b`Uou+y%eyg8>ITynb)?vtWR{cI*$evja@*-%gC*vzrB3O)et4S4Z z)CWTnvG<wk?L8uWkDLa5@j-K^`K~sq5p@U+!L(0Ma1U7aSasOiV%c~Hg0wDy*8{Z3 zo(u?s377t_M-duJsH}99;GcOKqipJusJ)(JCJ<@{^ZH2AGEvW{e<l!|xWzw~PHH<Y z5aReiKqfl);X90xVN<V8w^i*yVd8MSk;1!sPcknE2CECB^XgK#fkSJmB^A&Ll_u_@ z;83G^J#iGZnuHiv2N#*^*%y|6>VM)^t!MW`Y>HD;JD$4H4MC2O9)y0xweb;}Vr6HC zGf`Mof${dpMOnVR40AKNU6*YE*#IqHN3m#z*&j18GfZL|@rrX3Wn@MYXVn5>Zw^N+ zl_)kDPfKZn%-V@$;C2xb10c~rd6y{X7As4OckUywI6eW(MEA@?pJZkQ)3&>uJ6a{c ziXa;!7<~Hl>GH_K53|$w;d1f9h4S#j<d~4)=V92#7mjBhPoFqhe)5x7%j~gZw0%%+ z+`3WL)>etd5ku)WOL!M%#wvm~6^5O?l^oG<`|5qd0t{QCC1^d$()uC7MA-JW84utL zfji?IiP1Qnj2%q|jC?j3P<IwwN$)v|l~jM}LSbNDkAg&6N^FzQQSJ~@RbG%w_&sEk zIn1omwlkL88gMa09qFQTu=BhA{)>t<^>gJv|F52(=^x))Ibyr2rjMX0VwI+C2(X?9 z0m7AL{HfjZr~?4@TH}+|WjL4Fz(_;rYA5PQsG7PGwpvuK2{LF8+N3(Y$~>_`swE`C zWPID-W0G?6m)yobwV1CY86mOVmTsow0H$sb3_@B=fM=F^VDZ780t2gn$h3a6NS6V| z$MNBr@x{euG?kkkaSd4Q+1}JWVEK?O>uMo0N6mZ$RN7Zy;V$h$Fv(HyYF!bTJ2qS9 zkIxZH7|A)Z5~209Tv}+;iRs}ocWkl@k)(wy4YPwUaAE-1Gh-FPW>b2K-hgLz&~DrX zE@$%SN}+2B-oTHmEY6t$N~)z^v+`p-_vA=OGGPY5wPg8HQ=wsVX`|P!_gGX0;@)}l zJQ`b8usEM_i2&dLhG>?^g@1%B*6gG4BsY}J5So90!^~T}+6Z>F^-Y$KjXm_S$<Elq z?gn*9XV+RhB0ePz=)!u&$?Pfc#VXJAafJ$&<}gdAJk~;CWqwJkHNt!#{Gg8k&qcwi zY;*L$>p#2$b4ngCmH`WB(gU%b!+iv;IW*F@gO|>##s>xjpgACCPM;}HKKWGn)n9#~ zJn_Wi<>JK)WqNu#IVjSCZp8Tb1j6Z{{NM*aC|9mrAz$Wr*(Any>C)wL<Hn70`SR=K z(&g89RL5!*w7i2Ta7Gy)mIVP-t=*h97wj^_;MCY;dv7yyskztBGWpr_v*qN)xpM3r zaXnVLT&CVaxjPPv?eRbOs5w&3t4cLICgJcBX6Hz{x1Ka%%ta+BZD_43cp{ACGwzY& z{Y?eZ+V49$*zBA8%m4K|Yxeo(@(V4N{-M?<Y&DsWG-ZtB5UpYEMKm%#tGZFsSfa8+ zOSLE@1UKNx$O4PcCgPEfY7hm9rd+rH06h&nzQ2>nb>Mw4_}Z-KXE-2Ei%7z@-Rc|i zTZ9TV5FByUsOM6q%el&=ZU+_%ydapT*Nvh@JwT^R-ow$Z+vhPe*-zpQSNUvw42=SD zta4bgn%X63Gj!V=j4{X&f~ze8c(x7Fw>Im!H$rI8(WP1^BawOVbHM(M0}c?{St7%i z)gm|8wRf;;I=YPtVOAW-bJ)GlssK4P=oGYBb%AE*XUee?GvI?PQLL{POO{$5T4t^b z&?6WJV36ee1o&#ggg_K54=kFVP^Wh4)eUMO$HJ|`tY9$i;>+)PfmK1M?`i;8Yo>93 zBvAX0aPkx5iFE^!#v)`s$T~xq&^GfvObkLRwzJJ4)2yoOa&GJvmdXw;$l|Rv;yMt$ zNog*T+Bt%h7VCJ~dozw;o;x*J&OX7CEkZ?R+Uf9wL;6#UYE=##k=wz1u|G44V;k3I z6DD4~y;0VdSZ?KHwms7RT?MLVvoJ>prIf^Bz>q`$5e^NGASfm|cLg^Fnt0c{f31A* zgTGmxfBuCsJ2w*{Ag<iiugfjnhy!u=%yZ9`^A|2AwxS#U>~rrbOH0e;+V$(@rI%hR z-~RS11eiCNC-yb1uMqd(q(gF3b_p!^0gepryae;Y!^<~mU3>T#=i<7$v~ZGrPebJ1 z$WK(rL)@5j6+IX7%GC3puC^|ZF1_xoG;B<dos!`vkoe%9Fb?&NtpJ7q`7baDgmfj& zQ9gZ#BkfP{%YSFJH<w>5SXu+WZ@PFora>86bI|SjChxd0&W>cj5SGjYuzvQXnU(G2 z46rU^p-pg)6d?PUZV^Bt3dS<1s6>>Bz0U3YAX``*5KINp+n+CCQQMp6FoFitJrl1I z1OEkq(K4(m09JxkGP=oChY*?;&#lV@*Dx`UaCMdmrY*CtM5Y<QCm9{C#JY=`%jxh4 z#$A>t6;jyhFg{Uq7&⪚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 AHUIzs literal 0 HcmV?d00001 diff --git a/public/currencies/ethfi.png b/public/currencies/ethfi.png new file mode 100644 index 0000000000000000000000000000000000000000..f777e585922c1bb18d9690a8f795a9b6f7bb2a0b GIT binary patch literal 249220 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%0A}<n^Qb*Q3Dp-pk<+lYx$sIxdq^`G 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 literal 0 HcmV?d00001 diff --git a/public/currencies/flr.png b/public/currencies/flr.png new file mode 100644 index 0000000000000000000000000000000000000000..1e25c92f73da057ea47eccddcd718774f6a3e406 GIT binary patch literal 42331 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 literal 0 HcmV?d00001 diff --git a/public/currencies/magic.png b/public/currencies/magic.png new file mode 100644 index 0000000000000000000000000000000000000000..5cc1c9de4f8c635dc3a4dde516f6b2377c38b991 GIT binary patch literal 73517 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 S9U|-lKPwA6^NNdpfBXm0n4KvA literal 0 HcmV?d00001 diff --git a/public/currencies/meme.png b/public/currencies/meme.png new file mode 100644 index 0000000000000000000000000000000000000000..394f4808917a461fcf0c64eb72bc0927e37278bc GIT binary patch literal 33763 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 AKL7v# literal 0 HcmV?d00001 diff --git a/public/currencies/ocean.png b/public/currencies/ocean.png new file mode 100644 index 0000000000000000000000000000000000000000..599f2f9e51f2312a2515ad0591ae61fd7563c87a GIT binary patch literal 57369 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%0D4pL}em@Cd8qT%N@ zeR2X#ERoXR%wOeHoL?D{&0U<`k2=Qe+;rfzYOclLKN|Pqq<o##in<?q<qG%thfHzf z`WKF5xmW!dDb<s3oF+c=s?PU;QHY&AuYEsD;x9BdAli1%)b5PcJ5v;;7dzt9+m?V) zmQ`2Ivd^O&m#DO8sK6|T4?=4<pM3w_#zAV7oj`qzJ{>|q{{vxjz`ttFIhYw&1|wgC zpMpA95Kwcfczeb4O}Vly(=IR|a6)?%zgzd%{TunkFr2szjV_dEUZWD`570KC?5v%E zYJ(r-cKjwdUNM8t`g7p@LLm=XrpW9up}?cxxoP1M@6*PfL_252r6_Z-SM`A|GI5fx z(P~@qVamOhETArRp)bJ&xY*>t+iiOB_{c9och{7iTnIO_z0>iAnE7pFh{%}U-%nhq zH0SUwV@Hxzd8g`Bc{=<13x&_3(fnLE<uuMj-Ufyd4tnd6R`jRyHk7ZUL%!RSSv{4x z#~Q`}DZIQ18XIdHs95Fz%bbQI&QNQf!{Z4^QESu<3Gr(}{=$?|iO5%G??d}Ie&oD| zDr$@3wf|pdRd-uLLPIRt;6)l;ZI_Ge7i^jd@o2b@&s0a-X9=5^Ql1KN4~xa@3_9V= z;v^IR%LQtxpbMyc?Q~J6mMO5%Vd2X146|iqaG)fxF@%hX_#_9zC;}}Nlgf_l5Wblt zbPx+5gZ0JjkBC2e*rUH6*<5338FkqF1+i#=6+i7mbI>2}se1QJW)zC^f_3npWhau$ z_Ea)-7`*rhtaE5_Eun$&7uWp)y2>xv7aDt9q?wz;SQIIAoq$pnIk036jJZE2;4>}U zzBlb!DUoY8Oi?DI6IFJZ-x}?v+bFeb=XB@nP`wXTtM}{r;)SkQxD591O5grKzuh(^ z;sn@}OW3g~@YZt5yG6nzI~nfm`lY4mt67|<J89t#)_HwfQUD&`n!q9L2n$~PBL*4Y zoCnan;euXQ3zBF&`}~{JQrNVHQA}lLB_d~vy0Fcd)=A}a7PIOO%^<>ymOuim)A2)& zxs48M1UrwG*h&M@50hMgI=G~u2Oa-jeG{&tF5Gsmw9)S6b=mh6c+;V1?uLTC!P>j& z-&CY*o@YN7?0G0H*v)<gh6aM*BE+)G*(p;vGXNZ_hvC<UAM{xgT;<Zu0m89KrC2-* zKBP%L3y;0XC_TeNz6&MO#dKY6Z_AFOt2yeV(o+X8g))XCjvx=j$sggB`SI~tWsSo$ z|0Ge&1p#-cv;NAAEZmhpqcYQukl+!}r{GDHUnEfFgxiu51;b^!b#VAvY-KCUG38g? zL>lURom0;On>v--?skc5=f%4F&IxDt*OJeYCj&eYO)r@0mX07C2$8_}^D_Z9_M<}M z#6shQSCkh^lWW=8&n3T32cdQncxX%ZRD}8wb(y9D7o0a+r%5LUjeYKPXQCejU9NYD zJz{=0$zTe!nID||^@b-<Z28y*-x5-z;By1sHOwJ};L^H!LF_3{?2E+{M0uP74W*v9 z_X#B}DMuV##N^76XshJ%^GgpN+oze<P`s{KzdLk(@e1Rn9}{{Xpg<p1XnX06JBBLb zw{T6liSv_qGy)3p*~|zNv_KMki8Z!NXDwH`A@CK(K^Mqxe9#rps^hl!rT2zL>kYH9 z%1Qe8r;GLD*Q$N(<oAF{@oe_^^|7adfK~I}>mPp}{X&Bqwae@+S?4BqNN~+Eh6A6N zv0{{CaTI@vyG>$wi#^XaI1ja#{l1ZGM{$XObr<rp{n3u71CtYq5&P_F&Dz(s#KUQA zr`n^QpBvPE6FOE>E))%<iFA}MnCg<Eg>|WRY=`!5YK7@QsZi6!IIVy(p_1nxKJU@k z_KLO<+{-_LM)jsdLkWF@-;O<OgU7`lI@z*PF{R69xou_S1+V&#*6C|tQU&M0qujs? zi5V@Lej`fq_c>27OMR(&2%rXGX#dpKixIcujK{k_PA{+JDl%H!p@LeuR@I(y-KF@s z6Fy0Q*?Z7MEdk-6p`Gb^ocyom3BJ$eHt(-2@06tM*wBvHx=8jBDKO-3n@+p<IpTD( zEoAvWfBlilP#8^ac?32M$&dvQ+-YTe3}$Y{X_0)_w?5)hK41-1BD5`%v*vd<ZNfYi zsQ}-i(f}*cwsXCwhax{vEcAC`xtK)L#+`*+(Jy)T8fqygBFk87BqqpM96I79EF#%{ z<8eaoTTwdovCQrVwq<axbDU`>%(n4?Jpg`b$!D1Sn9C<Tf%&!s^_u;+lGCyKlN6q( zd(yc*yw3;GPmawlj#x9%W?FiU6Aq{SdBU|CVHKGB=ED=yr<>Jh>$ANUUBE2TY=Z7C zgHJmaw~T)n$}hWb&e%Qw7H;xZ2_Har(=egyjS(!C<Oy$KIZZwtK2f}|x}*d}hWDY= z%Q<H6DtQg%XT}+Qyb7-*<0R{zu?=a)jQO-!8q!OSi+#Gx#yTPIH^U9EmMq+a0VLJ( z7rC9!z6bcezs&Ny(zQp$1THVXp@pR=s8AwB;vZ;b7=MB3khp8^8Gp-(Z!$HfbV@;^ z`f4{$c$WuFC%$|WHN3>zgu+S_4cySF)=cOwk-c&DIW<XJ*%~ql;1MP1mvgkZA03IZ zaW<*|(sf$7Pi`gAI3>4-RSGkWL2$K~RIMbxKx<`kvh(BtdU!U*FCPr<Q)T~dcNo+< z4~<^1#b{8pYT*W?wP>eh(LCJ?cMmq@Qa7%8pPSI~f`VGu-=|U%5JPNr`mOfQ`%vKt zL03z+j(h6`dnkj%t+cxdKN=TFZMdZEG!)P_@1Vbvze|(N?zN?g`a&u1HVm^ybdez? zZH>C`Df8~wmYnS@5qK*7cUOXBIe`8>y~r!D&uJHKe4ZJfW;Q3;5Fd6jE3LqQhrQxV zZhet#wya^sJC-XqfZ3n|T(oQ+B}|;CRkZ-Vnc0g$4t{^E-%j<@HcaBz?O_qe59A|t zYdr;xaSl5|m_|(;hg0lNESNniR3@fQ2%9frRsI6tnl6%`6@IJ7ETTKy2`uDgmxz8X z0ZL6|{+=zNY}B-Ea5SohQ^JQb@8k8jJ3njP4pNyUBtu~4i=<?$<HMyz0wP?r!be9k z-0-g(pt}eHvpdf1UC?el6D8fZsI-==Vdr*2|71y_R^3uYVW@y4@~{Q0<ie8gy?$j~ z?UgUmi@&2H;)Ri74dbxOzVt&FCf78<2LQR}(MXS$-ooZSjGoL9h}B588`A9?i*(?x zzWJVK{F$*rK(x7({rf_e6XBrWp6jD86M;`A%p!!HeYnNZS-F_=I~<E&y@T}ap92;! zR_mslby<Hqp-&)JP~?cp;c0@1+1bS6G=M3?I6`PO%2pnZ-P`t#CP25iv8MRwVkU$+ zE3$zaHe8@VH6j}GftP}uPpav{#+>Ji?#aI(so`2WvvM}a_yWcC7+Rrh?7I|?8Pma$ z+wQdk<_bin0fuSC4_<vH6x7f3q_9mmf`OWg)8`&;Bfili@qL+=mLG<jDVW^IOQ<-t z6QK4>r%46sV;_J=It|R6yv8pLx?~%f6-Ain$Rx(y%}e9YaD^VDnH7gLrGdu?vY)vA zEGa{iGE+OihDsYFc3Azv3@GDBlvBpunWl37n6Ug5dQLP=P(0(uEANzj4IlT2lktEQ z)o8>2U3TS{f%=2SZg<*(s5|2NHDkWr7F?$DxK_%DfDx(qq1}f+H?L}%BaeHh<KZ=z z$=A6v;6jug5g#+5>Y;{0fINAWKF8}jtGWo#<cQ5tSdl^|u6zIk`FQ!RJ9M)@fqffC zuZh?_s_-<Q%{cz{lKHu#>#VuZo>7?{R_%fXE~mo;fZ1r*%{+VvWA3U6_M5gqH`XrU z?i5<KxF_n^M23LE@Ux_gQ$7#Q0?E*QCpOmw?X5%icD@Bj`=3ZEiDE^Wa>b4BcDY<S zq9RZ**TK#EcE#Xk!~hq*I~y(nmBJ4|{Qb>x3i#`&Ou1_7r7j%O271>2{WCMJ7KWt3 zDlRN@U!XwP;LZ0ZqgT`31))!noavvtMgE(>7dqRlf;m_4V5Rv+hUDvakEny}nXAI6 z{sFK5bEygPLFg}p59uE9<vOzr*j5M>X71k^iaY%&^zXeOACpf(*O$-<q$~^31k=aR z3~SFYecVgGhycm|{i)_8=N+JaMPsl%ZZceW*z@s5W%ZSdzXksHThN-e>Gh9Ii1wm* znE2fU3Os*F4@gyhOJSwn(*55>vvA<VqsysZQA;blig{2*$wbBbQ9R{;e<zGZn6oH3 zOe#Z74P%um_jlYQP}|MCQtIOW|JIoUlN2=06<D-)v-$`W;4tFN%DKIE`TyM0Z}pr& zx-M?N@ajk6`K)z?KF@;%({~=6a3ISsgRxb=UUIv^*S^pg7BU@Ec3s4r_b090AtOk( zwL>h{Z|Zt}M290Q;KnX5a?7C{3!HXxTxS;NJZuqmj-xJl?|R__RcF_b2ms;#yVSSP zoG#y-XGdeye|*s=FSv1To@l^-B=(sa*MFZob7(7ObBv9tJj_SutJ=YKh~1Cs9yFJc zJQ-Q~YwmwH2kZ|*;!q|#+I*Y~hcv@+H7akmuCK3p)1R)|{O==CmqW*RRr}Q1dbqoG zS~U3_vsOMtZE|PX?uCLd-4=wa)%TBlk^12;#0XLF+D0Ta2t~p7#}@&3uaW`z?gbMk zex%t7S%l_%`=e!Wk&7Zi9V!3}Pm8PV7<Le?9FycXVlrG=XOf|s=d^|f#Qq$b`4YJO z-r5BREJrZaK;#WmHD`8;$@HepSzuCU5=dw?5v>z+`Mg)sZ+=AVaesIJjX)msGcIAH zACjqD@84Jjs_G=<@z^J>DEitJNx-A9W6Ke06utdL7J(JxnB>d>ZgnwNq}pNA%a%3B zQ^vg1&ySb^6x<uc+tpp-6d^OPd6;ETpZ6p4jS{v#c|3f5|00h9(eFd@CY95@o}2$P zC)9x;VfCf}0`f3~o+<DY5mjNV*8~5|W$^q>KsX1W;|a&4N4j?iA$y)#7v;XkwCj=e zIl{h1{R@S0lCI%losvGD_%mn|F`%GYOopx=A|*ovJntqSZ3QLG0V`T;Yc%!Y>ub>9 z;-*Tgu-_Xkk)ktJh*?$^`IcRS$@A?VzDT+KwDn)0xTuuL>L9p~RV79p%57xKkl3Qm zu{3EPY||)4T%V!T>k7?RZe^<&B;-BYv)j!%@t3%DPW1s?;$Idl3=;F-?d8Is-B)1u znYZ!kI=2gRz0P=DW_pOG<O;c0{oz%3r<ZAUj}ouy8w>l`VkhN8BSU>@3zxC&BsyX^ zjH0M<eMX+pi6~0@tTBUpnPjHH_xrR4Xb6`-ustF9J1NTyr$Y&0zrKjMm=O(^t=ro5 zTOYe7R1X8ktIWKoo?eCB->6^<)bFB9rXA&xr&vWqF?MELG?VnAzcwsG5=OpHT(gNf zmN=@Gc}x<+&o@0~e<B_aYdnC?1_$1B30InkKLuTsBowV~!S6Zs3%hujl3<lxQO_MR zy1#js^9T)xQ76@*UQApiE@RPEg1awc2}$XNSXHPK=M-Z4HlS|r+l0{k<zo6HIN1Dj znB^*OS_e|3@6vSEYCAH1{P^?(6a*uy>o&f#H}4W`%TRhIwL-xQgSf4$x{m<c>I3zj zW4xSrr#tFtwk>7Ft4F?}5z#^3iU}K;T}0)*YHT){J_&Hqf+*8ert<t!6Bg;L3oh{d zcPAa5^umzJP2ngLI0z=?zYe8ERJGCAxO*xlgyooUx3g>SBy$qO89<01io`SU{zA8p z7S(#rD=P3C{j))@p$zS(yD)U02!~DGvnwCmyR2X116z&R0)@mGAo&Y?o*Vho0iAt5 zXMr2Q2=L6nsU;GR73<|ucy*h>qSop5Q2);Kr>q5^Bs3{!h>1Qw*~S>d{+ZP5!_$?) z7ee4Otn-#R1;Pfo2@1>I&?&BEdS89gqZrMz=8XR!@4-90H0pauXhP$n+g}LVh1I=- z+DsLD7l}Dv`9ps=n0N8ue8LQye!n#I{@;s;!&!(IG_}3W-UzgNVr3qLp_7Qt(aF)z z($Xa|xc{?No4}~iN{k^(=6FpQgVw_dyA3Vpwu_fPv2A^M`<c+7b_r>rURG&!PE1qv z`sj7}TLJT<Mf3T^y+POCh;;fZDQ<W`wbdq6Mb-zKc59CJK4}JMq9R&dMcfzINpIrw z+_K<1VL29?=*=h|VgJe<>Qip^f^Z8I{Kfb8OO!X4>)~MGp-MYH!p=iWJ&xLaH0DY6 z{fbtfqR%FZDWx}$kuzkx0Zy$C(Am2I{8jHx3N>{wSuTVIl0l1~S7h(xeDjyR@51b7 z_<#>bx}vsF3}+_B<R>y)b7>%R!m<OBnM6o|)!MI0+nvMh^nXa>B`qbSzTf>`pG#^c z=Vsf@jPDN&r0zFQf0u1G1^bLU^y1D5>EboubWn52KU>y6j$00DltR0X2=582d%Z9u z(Xl~{qP_wc4&#B>8$IpX{5z=maV<N*Q7-`(kATpAEU%EkAz&vggjUP4190eOfOt(1 z8<U^+U(@V5Q?Q4S>q*MTDq|bME%R_<=MD5@Jg=RqM=?oq;&OzTeFo0#Q!q{c0D!-@ z)$tj7JhEEA>U(ONUrX>$ju2WMaAo`DjV-Dp6bdAH)9JH(?K30GU_X*4Q40#6-PwC{ z%hJIOP}zFV-ks=$1|kwm?ou(lJ&0*#zE5EJ&DhRPFtYM%)pYE0^1cqs^jbMTl(RnK zeu89hqQ0AxmR;QZo#xAkwG^<bEFk;ustUuse!eq&fRz<MjP5HwRAPVha3;2)4<Ue% z*GSG^;=e9J6pQsnMkyj575<nmE!cYO3bs;RYq+<l3(lB+HMAOdLwXW($`-nb34&(c zE+9K;BKcFdllO&8wT_`?rR*<pB6^I|-0sdK8tT;zxf~g3REJtvLg(G66#d!+&J0eS z49ALjPzG@|^EGhcI-hkWEuzCE8rCijd-u}Tdt^W3PjhB8@l_`sTX2cp1(2;bMWDC5 zD#W85nt1API4pu9aGEGMlN*<C7<Lm!vxV*F{C$9_o}AtE6TC=BOpd62!Z6ysh)$`u zwDKLV%sqQ+A}UO$3J$~KVcJTR>lxZhdCYPJDf{R@itjh>eVF(wgke<1nGHgWN#<Y% zO3shOKV;@+YL6My`zvO+po3PBmgWsrD@Rqs>6@JWgEWW7JE!upVe}qiFlIPOBd7GD zKshw3xI%$JLb1By;ijsPp(6J!+B-8??rQ9d-{&xNApPue3#j!j${^?5fS#LVjlZEl z>`{*zPGUxayEa04UFus6!l9lkB}n}I1>9!zx;-5@Pk=bMsA2X_<`Z5)W@}4Yw|c{c z@e41)#E*ETlpaiH9}oWR0*O0?*&E;Tn}o>0bZ4c1r%aY6Nes7E-r8^e(fEM<)%kEL zbXXD~4TL|ImVbYT77-?5NBF5cDLRMevWNJ2dFq0xkReGr5|S3}I~zK-Q;ZL7B2#gk zmIKnU3x_~IpXg&XGZ91!D>Xxs)8uw;W)RTnr%+Lf*58o-a7@SfP-I>k5vV#x_t{Ug zX6nqGWQ2)F9!^l5c^H=c$&Tt|i5oeq{WtzV;?N%>oK5qw-JAVdkv6@U(satU=5?#P z$yv}?lbY_o_!g||Mq70Gu3t5?eTjo}{<(&-f>Fg@vw8~c1(aToxQdVL?j#k_uw}>w zX0Oaclr?qWcZ~zOWpe{hI*v^x$e_p;175tNF@n30g{T8Ns_eWXxtlvWu+}l(VabuB zyHND0JPlg4vsRhr>P{&Min@TF-TQYbmjTtWzZq%fHdhZ}&fS5&a1H*o>KjBUIOb|q zyu&a;_Gx{EH^16cuF{#87O6^oVP*F_1NWtq`OSvEv6_Jm4}Yvn)OO%P%^B)~9lR^X zlFRJHzx`DLw6w46h$0G0%~ZkfH=gqI>7u~iFBu9dOXvcSuQGjckJuk#Q3aLTVJ*h~ zM+@e<hI8_PwDBvWUgQ@yV&ui-WrVvFLc+vJ)hCtbJYQ##nrlk+V&oYS5B6V4@>TX- z1wg3FPU&r5V9S}P2Vn17^SvK}C6PIloonFk?I3zZ3}5RjaPtoShCth4w?&(V&K!j$ z(y^arsntchT*h}n)$Vs5YDk{mM7{Aed_h<c$WsnNm)4Qx3lt=?-%PH*z^YZ7`pnwE zbZDn4yixqH)uVLsB!p0km;qtTd(y+WJbO7({igZ6pk&=;AbrQ+er4gRLq?m^`SR+4 zxi=NY6#))$*|tKi8ZZ0}8MHJ~TIZh44&@&+!zB6-u{bMWI+FrWSSwqfsWvYfaTlZF zKL+vvq`qWz_=>b)zaaTe1zpH>XbAbOasGWEkH+%Gr=o-^?BejYAY{m={1j$k-Zs<b z3vV?F)GlDw$rIdDexrIXGrhB7hJzK2%^QcgnxP>Y911x=1pTy8H)gma<aV@C=f1HA z4fRW<H|^-~-~D9GHKu0WD{uJn?7`o~i`j%MLYv-AB;nJFx7Bzt6Wf4ja>1YhC*Cg4 zxi#`MV5|@Aa5L+*G>s5Amgz+P0U?U;8nMEv=9D9?J0_)dZ75$yYaNW{)3-x+m_e(R z4zoIyVrT?1wohi-;MF`EzRYp7x6TICOY!-pz3C@MttE?qE+7O+4hZszpxU^!b-&3@ z7>yjH)*ukJOxwoYsUFTz!27uyHugR(i|e&6#t8e<zTqePGaPw^40LUr)n1#C_0`jg z^kWbDYm9$mIS6gQLLRb2lNr~~`I+QY`PdukPwh`NY6A9ewQX1;@(KCIucuK`O~96T zxWTwUMU_u3f-6=522hTO4gBa!!$=WTfr=IVeAV7NgK}KJtdJ?Waz~VY0x>D<UmyaW zM!$>U$qGT}g^iUeUe)VO^A*3W4HAkz7^%1@3E0;<kv>p=dL!-L3z#oKLMJQ_*7Mv_ zbtxMIALCeBfI^P1Fr}4jj~AG>aiP4xG#<tvN>l?+uO<z5BM>UFu&P!%3lfExfO69+ z`<$ACj?N)fi=Dh3z;Am&e98^<-hpvt%ML>Nu_B%GVtZlp)72`=!(?gt53;k*J6L&7 zyV~%m%Q3&o+tU>&dg8RZ7jn}yw)K`4SZ5_dSEKjA$<K?31*)UZ5Bq)|^IimTW>aP{ z-?nv#A;29K`zH4HZZs`1KM#@JA#BLLJe63|=7=H60N|9UgDoRkVcTqVzVZ&4Y%5*% zn|({ak%!e;f?;~fPhQzvRDWAr5-7*}xJx+%#~h2Ti%lPeU`gAZ5hq_bj9*L$B*HPv z4!_(^iT)BoUE>EWpAJk!rmuX7Z?ZZ-bF0_fOxzaY)jZX^*UUP9p$YH*%H>JIphEjv zv&p#nF>4}&C$6e0>qY|4v>y5QCwC!qD)<ReK^MKGD|dJ*mn-=wY;=*=NFk<IM@#(r zUZXS3e~};dgkV(PSolX?^`@l8$h!&(8!Y{Cc}7W0FJD}DCiSq}jC=S$xFf^{eaW>= zt&~nj_IIrfjY@%K1n+Jxs{_|9cY%OnvaTBS|CZRHUol_PtuyUMFK$y8oOr5SPUte< z`;+nOw+|tW)_)NVauQtGzQHGQpC3x)IjH3_?^m_&cRtVQav)&pN&o#JUFBbRAmj;p zo8&f4V9}8uT|;aU^M2FGKANd0(z#sf1poE@`sl9z!x13z4{nWD-SoGV@yuT$yq3V( zBar)cPx<89JwJId6&J;&Mv;Hlupk~Mdy1?xd)`H?JsHn1fxu`aK=Ie8k{m5|-jDA8 zZe)~DmNwA0*o5fU<5--ID_xIz-^7cvQ;)a2?|VaOM)}_d64HY{d`0*6^P;GkB`G|( zJ0Xh`dc2xvZcR-b8ec(b(*J;0>KUzEysDL20k^l(s39FHcwP7|F=kk(Hi_nCY9}R9 zKO-fyEsD;HUI$;qw9C0K#AVm>soZl#gF0T#_a=s!5uKJ98vm}LKBurz*V?kaFV<-; z?@zFU*p8B$q5ffc@ZB92o1gCyr0bubHj3Z6U27a|7aprgC*k0)=PD0xKR8#IzxR5z za2_iQyvl#}Orx%CZOqV5tH=b8Qy%pZE4-@3Qtk`I7YD0588ZOa_~&;ClG9b%*M<^5 zp59`^f2ks&tba@Y2A2At8w@R>%Au<(iJ+&O%ljDhwlKc_1AB(ze=n9j#3P_S&fKVm zx`4)*Ks!3#;m;@08fVgf|2m9o;}rJlFS${tp>WIWQ7hxyYr-S9OCA*svH!bzgkrei zz6)*v#I6ZpqwSiZ8Ubz0G}Eam8EQ5ET{$;2`Chh{szA8}k%1N;fz$e<hsjx2swR~) zRR6sUJLZsO`6g6imxPMKEwANP@wXwbvpsD31`7QDT`ya{(05fgUzQ&X33A9QFoccB z3l+Q>>#xYD3K0H3d{BN1z1_db5E!xYPNG4b54W2|hwr45w8BgC$B0~jv(sCSh{qQH z*_e$gIQDzE=kn!dy=7Xy7)*wjZ5bui8zi1_cKYV~VdL@2vwv0}t!Vp#sjx0)hzw7P zfouVTOJtxYOkfceGpw~Aby_TC^IC0X=->MUnttGDvlFjsq?tQMyi6QCQ#<wcokual zhqu<b2k_hNM9P73`Ol`a!EBBW4_+6MZkxz|?P&vV#bKC4nxb)%$q<{)ge89(+b;Ki z@0=ra;Fhubx%}Aj+Q+KPnvjHCSN6S~leec{=UK55<7=V$?Y~z*i|VTzr815?S=U<U z7biz$(NPgPosv?%!QuNxQS|2?bqWwt|JgAnl&v+DqFp7)cM}uzsS7ak)ps1;lK*n4 z$REFdqxey6%)c0>EZ6qA?E8KM0oJ0#Bw0B4E?++!%j8%m4b<*^$)J~?yV}p6{-5{b zEqXid+l9cD!U;;ISuqr&(gwX|AknZ_;k{Q9x1CprBjv^vwf=LV23(+w@#R&W(|*gH zVoL>!nt7{3$-*e<(&)mw5ld``y&3g?kA&D(Qn~FeUe%tWJ{+crtB@<6ROtlv@@n># zQiw^UYQ7N>|1YTf48rd{IkT>{S4**9voBHErdABpCFZ$T5jTX<;30-2$i0&rqlU7j zAmHG~43%WJoc@dzC>W}kJO1M0x?X(vqV(5;HZu5}2E}B<?H7nJehI0ip^54UIFiA; zApe)<b+3{HEKCsdNbvpDd=&&e7<Nzc&_Sap>pNJ<zk2MLYYD2=<~6>WD(h^AeX$u+ zqS+Fx!CELON>czWN$5qDfuwl`#=F+L%{1!oHBY}Eq)=mIfj&hl!C3}%=r9*T7|bIZ zIez~W0*w3&TG)U6MZj?j<1eNe;Zd|-G0EM14v&^AvV&u9BV3(+>MZ<jjO;)IQSc_x zt#AYaUp0Vwj2cV5iE5Dc3P{fSB+fv;-A!QNDGlh~Itbk+ZfBIx9k0K(`K{uJTyXuZ zntR$RE*i(@N-Y=@k4^qQLaXDTu_{+#&_@#_1v;_LtVURSQ2JOPTK@vi`S$3|kM0^E z%I+K8F*J^=xOXn3G`Qy5cw0u#ql%_y%~#qLeyxjQ*p+QTKci}t7kFhTJY^K_OaqdL z8^D*1-um=iqg4XMw(XWjcei}{bX5rdW#+y|%XsX&=-{=2^u7wIASUeoCI<L9rbt2! z`ruE&`If<mLZIbf+EvsZJ$LG@(Dh=LBjo0_;z_YyE277Nx(XY=F*%YUH_x>_$`Emi z1lByWDo$du>SIP8m^G@I-V2?SLcmX}VSrCkpFJ)+xd_Vdz>+SIMx|e(Igt>;fU>iS zkHuSxID?6gF4-6LY1e5m?Al+UBbbCx6(%s+J2Wi-dC|+H5chZX#eSAjz!}W)uDY2( zMLN>E2@C2p*!|LGFXFYzPt3-iOa@tJl~)YvIY%fS8uU8siClVDwpC(Y2ov0e(N~OG z8LVnsOc<13cgw?@q}g&$x1)3mwBcR95kAB#f19-7r5a(*dp`5*q4SjLajlS-8ZyWP ztPKgj#CT~_D8B#;D$bCbePdNO<2&fq4s#*ik#V%2vL*bYjmeE!S?*LoRZyBX`@CGO zxIOt=LAW;>z5z?7nLH`ht&jGRk%2dB>Z#Y?z_)f~!*Q1jABxuy&+YtdQ~7m=IQRt# zRqZn;>nWae(MB>%cmhr~%foH$wi=G`gOMd1IK2pPr1~SVnLTy4t~PJqi<lyt)<s2A zUS6U5F%i#g-O|WxdW8yeSs7=L)MseXtX&xl{c@NGXwE+Pz?>sV=`)`?AuG8kbHV|^ zsx@N|sC3)?I&U8rfPI4jD7gkdIx4W+O5w_ieeB6*Ny*gwIjjRqGb=&<Z1LOK8~H1V zqcd9>^y*jH_f^Fbxvl}l9$~g63VltGgKUr&i17Br>nxVP=hP`%#qwmb>HU0_hn1w4 zrQqlpe5(3J{%w<N0aJE<daiVy)!3)N$hy@`aTiu7)c3<xpgq4-R`Y4MfS*PYMMKqE zGoLkC({3;3lHm@k>|Xkmd@^4$!|Rrl*T9_1N_a8(D7}t$mOOCxfo&*A;WJyD0j?)( z$Qy`^xg5)Dyo#CB#2G}%QpNOSQ`Apuyy1tKcFUz}(j(=I=Yh*R<?k)lVt9Ph)^@c* zJSc>94S;OX=m4q6bc_ET#Cp)+k|!4>Aug^gUPX@>?qCG@q!tw@FBERsf!`SW+dn~h z2PtE+6575aCX`W;IGsxf%@~=Sur&DMYPJ>WG{F%N(oC~qB9pF@bQH-c6$`5IS8BW* zG3yeI6($1?dTb|~pX^%-yQ!g(QHeOASt<qE^=BPu;Sp#<AM64JyAQe`=Oi(4a-ag! zDg^gOgLkrFMgVIR5Pr2jCEq&sBT)V*CY?xwdZ5*(?~naJiOrc)E4`C1aXq#y(WhSn zG#yui|N0@$g4!A48i?^pB*EasnVKYSeMMc_9c7oHyhoP6CNO|y<MJO`SEn+~`SQGY z^(aO?P-7K^Bm&$X_ehJ{_q_HG=m-AH>||s&%i97;NA%8$HdxhF06$g_#Mcffcq(Zn zfJUTYb-AAVP;v=3d5Si!vYD&Ml#<{7A~&&KH3!e~m~+$f53i<3y-&dk1F1vKHwumr z4tcQ@RM*Wo+JO%gchfzZbZj3tB<F*Jx^1K$&RlDxEWG^_a9UD#BV*E%^otE`C9 zXU$oyXBMZ1?}c*(MKFWAbQDGF+w%@8t_#^rB6DkxRnU`)kfAA0QM)VfzC4K^4bn_H zF1Y<qcw#|~jHMDAMO8dW(DUgsKm|Q-sI|{?qVaIfa4ofQ7r*@^;{hUc2|=?e<NR8? z6fk(@+^;RdKPuPxIa_HAV)?jU6+tMY*!Y~9AvDr|NBGq_o%itRc2%5Gf&2MQO+@;n zHAEKQAI(_DgeF|KO&hpwXKwTT^vR01-ND0pBt4Qx6PB4=tT14aW<kBfJ|d^IO}$UZ zC&0_O*j-Fd(P1;xBFP&(M24g?gcP_lfi`V#)9l5S>u3}VrxY35G|%R1O`FG%>#y;) z$LPrlb(luiLXyC&jmFAdRrz^?S6M3Xinau;z6E@GDCTUYMI+0tD@xxzUZp==>o5te zP5tM?o=@Ck0tLIA(_RTo*Bd0Lz6n-Zeg1_p(nYW^BLDow(lFuwR8@XTIKPa122<PL zj%Tu(5n=q4Lag$?cslZ2A;)_BT`=DyA6Ru>Y1+VZpn)9yD;n2l@X1h66VZ@>uAerS zl3IvBL2jw&J(BVB|F4DXj%zB}!XXAs!g~<fA}&Rm6s2tlf>N#t34#!c1f&R2*GK?s zte~_9f{1hwA}vUZ6a}MH1snK~NPq<1A}D1yKtND}3#h<O<lR5>n>+X9d~?tF=6+|+ z6p1^<?wSe>5~fap)1<&@wz@HqQ_W3xyiy`Mv!z#|m^l8{s@?qo@CYT1>gLSch(y}6 z(a2kO%7H14S+Mz>%VQsIMuu1(Df9Kz={U_Z6jbOw3-MhK6NT>MA|L)=?*<2S;lu4L zou&0H!C#b6|8ob^uJ0{P@WXg`MwCUZv4uOCfAkki>qZfQ!OF4MMW4=chd{C(FzTHN z*8}mERJwiiB0hnR`?`+hR)z{!=jPc^uOt=cJ+yQa3yd9Ao6xaQiN!FjvGE6lh!TW% zUJ)zWelV~Ql5nsN1-MwyJ4;C-pMMqHqIMKMCrUZ{SIeK<PrqThdldf~7Bru^u#^J^ z+Q6H-aGiE($N0@HX*DmE%Q9;H_h<~<6*n@|JQvRJ+TOXLmzV&sQp8#JR;gv{ky#y) z?&x{2rD5Mw(Yo09m9|zd>=#YhF`Jd?{9Og>84w3Grg=$zp5D|*d{2p(GL}l!zW7+E zAr9!u`@lAJc+gySyl&tKP}@E$#$c`o5~uHuUyRMo0@}affyv2NwK{kxVdj&lTb6l{ z_)5P8?1C_M@M&hWYr=FuALF)W1~dppJ`%n-qe})OYef?WnSHgJ&bPuGt|r;u$8(DR z-N}<tL}r3em(IDmdlp$`{?z|=1ch;8Hs#)a@G63qm8GfnWq4(a9ME~j8RSQ@&%Q$Y z>=^XGjc=pvxFKH8?1TsO!vXB;hY%QER4T1zkHg^X3qMU%{B4+4+tF%^;n`hMDiwmS zumyVEgM3fJYvtS*&S0*?6O1_FT}qP9LpzDa1d`!jbO;XcKbl-$p69{yW~}eF8uyh1 zgmh%=k(MtW+{S9m>%*QvUW;`Fe-8V6%t_H2*m8)IX<xm1nyW9jR=6P%=D|_KaNfu7 zAyF;~hW<`JJFn~jpQ5Cd!D8}L@HjW@)xJ=%YRzrC)DZV-0W1axHc3zoov+ealD+mE zFxhmhl)X1Y_%hge%p7j)>drU&9%}Ezc=pn2OjY6*P%odF)|YbAMO{lI@`Kv5bink= zR)7Q#BNp4|f7ErupZ~4an{6PCYB~rzj<*p0aK7}mHByl$=7XhM(U}&R6{B4;!C^&R zaTCulZT5Zi7<bUa(Ba$U_xg#~jPYtujQS~VQ*prV?T8baFV%n<vg}7lPV`gZ#5-%U zlXHg#{8xb>4X2yFcIom+MWx=D8A#>Ps|^<tQLp^ng1rz)^zQl!xnkK1c1s9zE9H7Z zeT_i?fe>7Hp@RgVv>HU8N>-OrsZ6Unv>aMjmOpgl&(J(MVmgf0Z6+8AAWpwkSV}X^ zh@l`>sGR$ILtOc&Dswyk>vMH#Qp>kUqru;t;M#f*iKj@g?^`KJbx78lWj+G$40uVl zfOPL31idzDSp-ct$M2y@&kepoaBcmEgioZVojsXOL$&~Qr~}}*Mdsbh3{cnYT@b|n z=)i7H73ww&-}nf^$rTrBW3Cm2;j6+T*qY=gfS>dvgz)I^Be94d`Xv)fWIOymE)K`| zExWzRuO$GK{n4KY_jt!Yo5`JB%0<lW1bpD~8gFkGs>=FQEpj-luGXe~(t6q+rAMIN znYTQ`FjHY|$ux@j4n8%kNP<vwr!5?H1rNQZA2gZX&pjC;%sb>>)sUW~*pbI`X0}!% z*K|tl`%NTDJG%b>#h~z9LQL|2j3~^BJ4H8T<qtLBspoTHc*|2fTYttL71m^d{{AlK z9c73Wj4b_iU$`P5d=nf_RFpSEmP^4+34kX0MJc90_TvEcf&bG3Vk*~+jeH%kD5)*f z*2g>x@Hnu4AY2id426%(m_)P<;8X{CW&^d&6N+HJi)q{}T>INEC9DVTdm;E%g|YvL zcBuc52i3K}tW1&TR;~%occ`bn60JRKRKP9#gOBQrdpDGFu4KbYp~e30rxhFk;tgQy zH`?HI;21n4En>H<U1wVS&1s-@+ES3NgBU2Br_Z$bg;R;<(FYHcB#QktKt4pff_@>x zFDWIV_^teISxa9*AcR#yA&AsU&5#VC7H+v5MnQu%VTNFBI_)Ytoh1Rfq%=Sa{uR#^ zSgQ8*e2>RdUGia_is6DbNG#9PhWa!%<J2|YXLXQY-xS55y)VoJSF2%H6gD_<G?{5% zq-(Px1bxe4D#$Bi#~nPSl1;Dvl-;dUU;*}Wgcp*UkMlYuI**grKe#Y-xj4%^0@sZD z7<DqHILxxQ&(=$vXl$=K8~pRGq+1{a2Ie&>08fw+-et$EHXJPX3<d^Z{k>%ALOYVS zqao}4^;R0^8hOYTFW#Y2T(DNRLsH?FY0!~KT%2n%0JoYVysM58*%i!Qe##eih?_}G z{<3BQ^<3QNkqWiiqHR;Fw}dQX+pd|-r+zMgX`zdBPs9S8n-x4*{_c(RGPOxBZSS<f zz(9r+x6RBb9;WDMKx;n3Z^L8b4LT!Jy~k}lH#W~GQxR7t<^P3~2LTHsFQrob_`<%P zMF%%=JyYAqLJx*rxA4KG(JDqza|3SXPn59l`^x3|R$GNe%xI53n}eIPfYKks1GQB$ z+a)Q)OiHDu{NnpZmM4*e$=}onQZ6B;_tlR3V&lX3^XEbYJs9S;x6MSc40qZ;xXy-f zHr4m}e;<#kASLgzHPZ1DO+!w^kyJTg;Ko6HEy+GUH7?TQ{y_{IZn@?0B*=n$n5;sO z#!R5`R>i`${NLuY)Rwzb+P~#EC$4M7Suna+9M*LfxY^6oCppyl!IV12?yP1%YzuFQ s9#nfZhlb?pGoyVoZu*cnfm4s&*oww>k`{{xV`1QOCXyZN@YJ|}03p-TCIA2c literal 0 HcmV?d00001 diff --git a/public/currencies/portal.png b/public/currencies/portal.png new file mode 100644 index 0000000000000000000000000000000000000000..ed47bdb1da6d70a4fef3ae1ea44ed04176c4977d GIT binary patch literal 187962 zcmZ^~1yo$mk~lmJ0}MX6!yv)k-5r8E!QI^<xVuAef?KfQ5FA1X5F8Q+?jeNW`VGJL zcK4nA_7CTtxpQw<cXfGH*Tkx+$f2VUqW}N^bOm{74FCWh=j8$;!k(-eD5?PfXkvC! zQfdlPQcyK_7i&95D*!+~Hd7Z#PxCW=p<!BzxGfy0EMgsm#Q;|pF(dgK%qxiv&49p5 zj3hBLcHnC<n@Z`*;MRpKV+qBZ|3+m*nds7MWOC6EUkcg{*uURfe}3}V6SJ8rFhm4= zOeamHC(%ZN%H^;nA)mibR#mJ>_XhwoLNUbQVu!xsaJ(-a1hkg?{rPL{^#S^?cfDH2 zMUT%5+`bROtN?l3;p!e?XN+Maxc=G>DmPJpG=mE-iwVt0BOD8dGGt3eBcF9lTO*%w zEWk?Cje|MH5Kc{F({=a|P-Pq{+#8aI!J~Cg>5Y31k_5~jKmzu6cFv(Hq07W~G0?0d zE{)(Bh37o$qej~3bkT%ekJQ|>Pf*p2uepDMv$lf`RoX1+qh2{O5^Ze|9_E{^Ios?; zDK?=D2Mx~0$j9(dK0!A=KTygt5T$MSc8b~ef3+BRH*k-pCPzLdhHDNV10T79WriZk z^BOW9Mc4rG?1C1NAvLiM$KUwDHK7!J-TFZ&!`w>wdeWTn<}Yaza|8FHl!A`1X34W) z__WS}MNK4;TP#Eq%F70!kruB*X_7M5ajY7&d1HpiWIis(9Gkl5g5ic{LbyY>G=?%e z9Lj<6Je%KBa%-N)1v&vEtQQqw5ioziT%6b)KachpXgG_UyrCp}yMEJH(s_3C1b5zP zArfd7SSPt3PXCilRusQ7rujYYQwM{Xko-iR<Vn6Rq?RzAZf6LAVQFkm`c~cTT=>tR zvWk3$Fh!sM7@m0p^FSPE$T*IWD?YQnw2bs&M<g@^ei%x27TOy|M4U>0j5TP%Ob-f{ z97ggR+J3O?4O9c%ei*8Iu*ICU>_uqC(%)bh7J%Yf4mrd+X1MYj0DXZ(17f8frrU#o zEoSLg&jD{^9;etTaVkt{q_7U{r3!}urD7a8gz~Kemu@aUa4^H=OqTOq5l=<AlYc)& zR7PM7QV*g_(rr%RN~GRYG7m}6&0}iKQ(cZ3Y-Fj;AzTmj77J>PdbtLfCJPPmEB`=} z^$ulLN^NgtyeMjY<_)JfjT%fok(d2UJ>F+|TqIYsTGNGAEAQ}V5wz1;fw7dw^W(2a z;3DS2{(#59bm2193BVgeDAK4u$viP6si6N|BkxHLF6M^@y5<EQTo&0ZRs4CZ2kP~i zf=nIG>88b|r9bgKY(-*5cS(qKZ@!^5K}D#GrXoy0q6I8Ff(fNU0)hhY(8s=U6BCzG ztDor7mA{1AH!uM`DrguO<hN6i`2f=*lE4Sd;QczHv$+zq{@bB9u^r-5o3rq6eXr&> z(kqY>LWmlp{<;Ah`f+Z;01zOR1gShQ-Rz3UwIF_gn;mr$=~XcrGg9q<e<QLZg3thY zBL#QZ`wd)vRMt?Y4a5#4T~$6`xVr(NGa?BHwxo=047quN9@IMqXHdK+6+nX)E0LCh zOGAc5g>8x73}BF&NWC1#FGF03CY4p8BuK&7!I+J_p!$%iN*`5IY*0mMADbjgM2~|m zvpu6=D=3J^A|3y&{J@}<crB5)xN=760KF9_C=|mKpgHQvjx$MaVam*mtu#8z&cTbs zG{V?uUx(okb$v^`7<*|(;YOu0bl4&CW?;Zqcxt3_%j4|Tjej8BdPw`$(iv+H#j|WN zHX7I)gbB=JFHBL%k)@~9g0$gaU`_SgROg)~$<rJ`>SLVG^p&Zsv2C!kA$*YISh`rU z;jv*j?AS87W@^7wDg{yv(dvlSq}DvoFwe~S*LTHbb(VEIWw=!tbu?Ox8Z~OG<(_X2 zYi7C1r!Bpj5mv%U74}kXQnFLqQ}aG&e_q>}#zl|A8;Qr3`&>3zSyw)<KBac5xlYf- zl*ic3B*%oBvCr^9d%ZT$xKru&eOyIcJ&KZ5X`HlG^#n#{I-`%)x>~iCQVknV?mJZ@ z#rl%M3emE+YUR~}Rn6LdH6Geb+9X;ZYWlROYxS!*7HDhnYP74!)Vk{yD^+ybwQQ<A z=J%^~YbbO+m5UZj%n`oFs!o01ByEvBijYYDI<2DII)qlWMbD#l&+h9OcY?L7#kY=D zgjT0ku2yH3(yUB;Lnh5yWrt*)Zk<nU6>TlvVOO5N6n|N)76|4fm17vv8QSDdy)DQS zERrQmGELe@))Ovu9$vuu?Im|~cXaNh<aO-ja`1Nc{V~FU)nWaN!+bz-^6~d0xntG2 zpH;!KpIpio<)>4Bq?S`(C-*pn5HAxC6Han3+s|0Do7!3uTGDgAvGHAPoR%LOU!tG0 z&HU!}-q_+@Q+rdtZ{{E5?R`%t!Suq{CQ2^l*Lj3Fpgeiyww%_yK;Dm>iF_=a^?X65 zvK$sU<+=5o4jjjPe7u-^MOMZRZ<oRx2O7s4^(@?`wtCAmtx9(#zsP<eXEI`H(=O4j zUkGxj`IvmEb!>lp%qvY2^*ZY-VjfdlReiiulvDXHE1~(R1r^iwfd&g)vy6NC&8j2y z_7m-s+$)5uk5@(*f*58PG8l;%Y;t+YD&)Q97oFdJk{Xe=khKe}le`z8wN(C=v&ZqF zz_Fl1B~xW-Ok)f&sX(aB?u5xk$fobF?EZIF?rhiWNLChB6Qi{^BMn{+z0P~i49?ol z?Suvi^rP6Lem-H{MfY#6-=9*5yb(DUxe9pLwfmjB+xex%CVzqdsl#cTJRsNKt*6b` z%YUv{vxhIh=Pu{QHLxa#{Px}Ld0_j!sKqKfS8jJM+au}Y@Z0Ez^%h~h7Ja%$j%Vnz z#`6{6YsgK=B^)OFYxp^M2l)H&H(}O@1!%OOXv7cTz7bwaj}@MiCrEqB3T1r>V@XrV zu@pt*N>uF7yP<DqDQB6R*VN2Z5m<?-&@{46&U1+j?fLmC>TkmbRR<FXl^ho4)+71x z<s&MwYk2ppQ*6%qKYD$SeH8+g!VCt7Bi=<^$3DgG#ujYLB^QZ2X{5bPgH|)-X5^>z zi1?XG_D3w>bkTJwGw1qxq%D*krn4$97UhfFF5`Y=$Y(&(05ilgbZhjvQVA^NhiZA- zYuk%uj~ERF4gB4$-?}{Sz1e-Ru`{;YwG%lsK4h8;;0okq<h%nh5BLw%PHs%T&i&m& z)#7c5ZcS&sv`@cVwnK_<kJ1uR-znQU=OHBRU5c%~ua#U~TX_{PHS+y$N{@oy>sx~} zxxUxtEVnYV+8ah{`e$YagRSs$JQb*w?Oz)UntVrF2KxtpT5oZ6av56ZPQDYXb>Q{5 z$`TmQpBG^9__~Kb{i~3G+hsp+;-T*L6M+DJCPA-JN=I?$a-*;DpKX({x794_ELhn; z3=TS7=cocxP1WzWn&OvOo^&RddiD17bkwh`kbORnn2bGiT`dii+bMm|?qvPmk>ByA z<6#e_2v6t>&jjihiVtWeD~)k|HJ%IK7c_NDs$3hETces~n=3q=mRBph_KveY+&7C_ zJSHlBnz&;OuNl$)&3DH8X6>N6$vJ(qqWN_ZFDmcPb?nyilGWxeb0#;3fyK)2*lh*( ziGK{gdO!ZM`u^z@a(eKCsHNrOXnlos_CSNxN89?cHlOR^HQlS5-*z=EAHHjR&@^cy zILSN->SMF|`Sr2n-VlQwW1g&)U(YMXyQ&q=F6Z0K&zx_|D;e|iZu~p0N-Z{jOQ<pA zyh(Wk4E&Vumz%dUwnxU0RB;Ol`56RPd>9|+x3d^nu2qu7f_iznK0YcR<o>mRpDq*~ z6ZYBaS-O2sAk0eIH{P-A`}tBsDo^Qq$xoxVV)Lh~>#i%m+~@GFnZA;33nrOdcKRQ^ zd;Zw6w6esu7Sr*~jq7Remm!Xe*ZSVtX=i%S{=yne|9*e%R_!pk6MvK#kqVDq2wr|r z|9QCTSNG*p?JxC{_W{YB$tJ>|1J294Zx}A^M!2?Zctli0<O1LWJ_r|`_1s4ujO_QN ziSazu`P)67Z<zE2f4ofo{rl~!w>&rgpGkW8gw_Q=IT6JW``)nbukBx#Q(TCiJdEG? zo@#DY+7wj=Q3mPXFYGz|ZJ%+uM)E*Jk|E`gyJ89%h^i=uJM%{Z%+mmDU4vzFp+BEL zqow}Vw*o)VG5@5Vn8XVaym=;HLwa_0hHLa8`SDgF=wmEES{*LN1L<J7X~@a;1MPQR z#YFHmT;BV>ioLS1V2g8+eN4aSKtv5~o3p>SCd`Y0d|`QLkFbm)%Sund`t@r7BkUdw zK!C#rz{Bp~VE+I(VgSNF_W*z*9Lay*YrxU}dkhc&h_(ZO{yoM3_WAOc0=r<)|Newe zivl3QzG1_zh+^P>jfTf5hX0>?*gJrPrj&vL>{HXi-O9?@!`8)fhlt<>64_N=-va=^ zfAw;~DQM7~0RX@yJ1sp=z1PZu7A{V#W|l7IR;<2Gt}pWdgnb2Jw@y}`W>8-zM`sT~ zUlFQ*MhL?0UmmkjLH`-z=^#R-_gW1q<>GDy<z;1OWv3EFfkL6e?v~bq8q%`=28VqU zp|bV#bQNS{^YQUv_2FW5akpXP5D*YxW9MY!<Ya-3VDa#C_B8WlarU78*ChWnkF=GC zg}a@rr=5#4^krT%a~Cg95h|*eh5q~RUwB&i+WpT;&L02X7HorTFK^g5SlQYBFECF# z>;DJX%bS0J{j;xsEhqdknV_1Tua%>ow4D=-)G*XU1^C#7|5@h$_vU{P{THORhn2gO zixUjcQ}lm$^>5(+eEGit|5;N1|GDIUy!j8vmn{ftSb4ZOdcBZP+u6=jlv9}P|9bqt zq4fU;Oq7G0``<wS`SgE7=>4A%|M~QPL#Vpj!RTQ2f|@ADzgPIrXa62A%=W_i{}6?L z$=N?oVS*-#BFy&RLMw`Libo#<0Ehz=q$RX`;ZAyyb1YZ1$$c%7e^61iuX452)cR|> zXy~>_Ec0Qqj}lYETR;e9qs-D*M$rlf2uY^*2mY=MAyItyMYIN(1q@sBeh-OU;Q=cU zDnJc-wX_#!jf@tIGPRAgJBK-+gQt4gjHP9FbW&5<sHVOI{#oz-(z*ZiyEkCkZ@(}= zbBb50AHoho3zd+B8nLpnl-Hb=IdJ1^RA2m&eec$q>izdn)}rE6V>iRY0(~E)I)kYL z(R*oJAbX-TO+Ug0t7uffCx2q`t)(e=4)-qp<Qx9f_Lv~+(YT%r;|cmnHM*LC1NRT& z!6isA+b?3KORb|ztu-U1at$^<;>$0rnO)1{U4NNs30R>nB8(#{XmJ0agPkZ|IYspi zjl?4=gwhm@Mg%-ud6*qqFxYkjFJemFnAn&7K<1u`hDJ<p_@i8sU86`K?!TXLmfE+S zm&S5CWwj3^;qOW6*VRP#L0%##78l9>S|<9mdKbAL63aj#b)})_1zXD06+#%PV&{4q z<z^2i1WHBsE5H5I<WGIcyCg5N;+lx`?VwQn)qYcUBSDj<MB}d~NXXWvPSel9x9Eyv z<rzvMzcmt*D>M_u{DOjR*-n#tc6mYn?BF0OgaKzQrOEZ5-FS!e=Lh)Kywkt$(W?1l z=e6VuG?`N^F)MFok1ddjuPa!COS;bo-9@7H`oq&LnO^c|dsip(5Lb&$ETa7WbXwTm zJH1Qd_s?8W_;ANNQCEuwBd~>vqrqiNE9KK+R-33ZwxZ#bd~_vLYGyh8&RLP<z##E5 z+m(*+dw=xnOJUq3%z@@Vd3?15Z!tG{BaT9x<M13{dkznUVH)mMl%NEg{s0qr=<fZ; z<81d1m4o?^IjNFTYf7qP$Cbu`?cM`3O$+6R?hnQcc|9%-HuL5AXt#%CriI;SG}_mn z<!1{xjbSKl^g|k_{`42OhoQs1K(TV%$M!T1C$lYh%RV8NZz6L?jVaslj|*|CSp~cr zG75DM-PE}J={)c7yZcwe8;U9e!j^wnegS~fr1b}sroPCgCAFG2Y9-0ag>D&f;<V)Z zYx)dC4D|`RJcn&(0G8g^Um2t`Rc?*ypGw-t&(<SGfo_0fGiDMXY^FvFkaF%ahgQ}M zOv(}ALUB%qmwzeW)y{N0qMzO4gT15Oh6PdEh=538{fLDlwe+{sXUtElTJ=xsN~g2E z@SDRZJTE*orGT(onNx`Kq`@Yg5d&4U#1}<n&i0|8wgw53y{Bya#<05D_Ou3MvhxAE z#>|tsT{w4$DOdgoaM8+sw)LT5{s<FfLf~hKe!(9*KTx-aVfc85h`(yNn2M?$I#2P> zYZqL0R21s}nnpt$N-Vft>w58&o}u*V+WOZZ+pBkm7E}M|DIu^zdAPq(6UHuiQsCj? z<d&}aW7LO;rcFCnIg@D5tq$%ew9s{`{@l_I@=>`)^3hLy>V{8C9c?S`{o|X|xnT4p zr!<|AP7dMbeAx>LXd-unEfR9+Qz9&k8ppL<UvPxpDr@D66@oR@n{>UU`bY3#N73n) z0I{8MwDUzBNq~zAnBU1h-Vp-fqxwCchH)+p_JqzhFaJX6$&l`O9qsy0OPap>fEve* zw>c9$f2-Qqi}_kS&W_zph2q)5$Pg7G*PnqLfcqlEAHW$uVskxtAM4df`^vuA3P%if zLi3$onCAo1(X5`QD=~d=?=^VdG(5$wBZTql1#Jo#Uk@;+bmA!4XTcfnbn96)l}~c? zkRk-A<H4-F7`o1FkSr7}_O4g9>(8gP)s73g`!|KDe6a0f!Pbt&3I^2OMfHnPrm$8L zd?Ig{{XObguUd-MB6@-|BfAJ$Mhw;VB@4nm{Vw)V!{kXUb&<5Q9d5D|Cf24t;2h2- zp`L$O>M7BWX>uo*7<KQGVu{uLwQC-M36&Rw0fuA5{-T$@tIJM$bnnDJ54VQEv<M;O zgrQB?Ok%&l0lJIr&o|_6OI3KZ$oRZa(K*}tkpVEkD`g6RY`D@lOg=hv8f;UT_z-+R z15A&W!U#_Tfjhpz@zqRtB?bKq&R82f#Ki^6Q<;E8ZJG>)(soF!dx(JFsl`XOczVX4 zo8U&wUv%M~IcxAmbl_zABLD%|FT!jHVvjf+(4u{uPJzs|cO5!$=>cH^MQ90f4!M1v zuUhzoBvn#Ku@gu5`-Kh9FZ+EaG(?W-7pG$1P5N5SwepNN8I0_00Cjv3sBcmmJX*Ke z#~+WLJ--`uiuy0K6T{T6-}?oSOcLJ(oB#pR{fKS)zH)J0L3~=vaT<y`u1~@tdHu7- z9_$z@4xcz+_3&___3=rStyAf`P2NErwlcdUIH#ChlJ7fgkf&5}n(<ANtl;JAoY70} z*=1(swUFi)3kwB$1zP)ZXuCYze7zf?;Ff>cVk;I*Ut52FT6i0Ql{3NGD>7&M;GqW< zMPT2NB}A$1f|2utEEFA#{cOULd3XAK0hMA|i0F&mi%pDsv5Efs2`*Bmm|(3RpB1S! zpW!SY-B0%9dy&vs;$g6!G9gLde=9A_K5tYA1-Cdb#=jV<5=oe3m2?&85J?qt0W&8D zyEztbyN#&55E&c^HEnX3=V6TS4+lg^@EC{uUJ(1F-+iOmOKGPC!x&l(BUb9XkVPO7 z@H)0XL8wh_+A<h4l+y<&L%CL%YW|l!BLFQzZ6B<=bb_XjPbWrtA&tT?LZvvu<VybP zk>eCC)QB3uG`z(7=7@r78-Dp0*-xIZtO3}%S8#Bw3D+7EJWm9AOix8Y#V#~2HaY~t zF0maF(r%6(YD^U(vuiz@dx06gmt8zY{`-~Fd#e|16=%Z=*>EGcX!MqOG;E?@KkhAa zYJJh&7s>b*JXtR-Rcr(9NBM)1t@zj?J0yZqx`+CW%Q7(qMyd<AP=Cf<(M{sSXQIV8 zlV4JPIuS3_hlg3R6Zk6GS;(>rh;bz{c-6M74`FvXLHQoN?c0l@zJ<C{XWBm;d_5ZZ z{Y%bFC+cN3j2FicU9Qdvy21-(@Nr}<`24`sA@SgaoAGmLFrfoBh7gDp-rwbs__J!s z{`t|#XZLQP(X^ZxCXmiAR-DgP-#}^ure$01c1t(vbt;dzaqT6_NUoT5@-T5a5CXoj zx}W~@m!*x+_-9i)5IxigW-x~vHkyZ{#GfJbl>~hpnTn6p{8|*hOsaL#{#o&}Bp__! zOQP)dz3ve~FqM8j5g&{%;xM)}?!!zqA#j~y>wEvA)}S7jH;i)q5Po@(^U#N_=*bUT zP?yk5C$OU|OnAQL=*3XF0>JqU8C=I=VPT(80{#F98>wKNg6StNNN3<6K-d2En*Vxm zwV2&0kQg}hBCSLIHuc8vp&=#|Tb0BOaFs_|-q0Lg+JB(rLBK@&iSms)qu};>-P9No zbL9kj80`}d65H)5n1NR9o{X7x58MxwqUiZKnwJCX7))z0c|jxz6^zIgv!B;6Y1v}U zCpoDhypHPMcp=5c8rQaO2o`;J<Q(hq+bJFm7a5+DN0N;IyE>SZif=(|JG8dL8;;gL zZn5^|@Si47N}0-Iv71@TyVPkj>4Q!A=fbNUi4`LP5c5|8vg^KE{D4VWzbhr6d@!g= zz5WyGP*EX8Lyf)@TIdd?spRYP(^xldX|V6Bt)JqtzQha7*G@5~_1YsaG_jKbnQ_VD z)i)@bjM%{+5(eO8`y=w;`us-y-C^NJCAo@?L#uQScIuDsmiaK>(QgZdD$4Y}^ILNA zIqm#b)x0nZIiP^i;{wxx$qod`aT~+8UzwcFQym8XaIAf?yJ*C~EzQ*G#l90SpWUru z4wnaFpn?pHTV?A++YZH$s*dzb*@`Do_D8>EC+~{Tu7J@x7+3-!&};tsvD)D7i%ZvE zKDoM69V4mY{TG$-kWbvOrG&<RePlj*P&vu{R@1$(2(hI~IhxJmW`AySiV~N^stWyJ zGPvbq;uQb$)ddETA$+KK_Fgd5myZ@bG+Y{LG{yWxNa)LV^+STw+=>LKAP#L%&H<)I z2$>6?07KEs9;-7~&-u3HYa{=0rl>GkTt?8#nui(8%#*Ea3B5ZceimXXn3&EW!_^(0 zvS81C9_C3@`OGp2kw*m9`f3GlSbN<T(S(z24?+mhUR+ngz2zHP0Gu9GAFksA#j*`{ ze^L|7F=2<w&QO{EsAe@=dyR%I^qLp=A-vZmq<o7Y?Q4ab4VVTV&S5RxjUpi)M9p3x z_D8z6@JUAb@11Gb3il#fXpjt)kU;PNMZL2C7g_clCzgaIU3i4}gh-Lf((_{Cr4j`R zO<SU_RPoOj;<*gh_k>CSP^Z3@apjr}h9pjd=B^shCJVS^0}{o%IcHwmxz2Qa&qVig z3!|NN7)>aAabesVte5wf2EPjQZj$g(zrR>7bU2)pRX~%H6ad`c>3{efW_sb{>deKx zLd|gwZe_wj8Q-&ew~7~=iZlfvqy@46)jYD%u_x%m$mFE^W!BZAlYRf9v-eRmU^E=y z?!^|Lxa-|dO4>wB&E7iJ7pr;TXnU|&;Mk^fkwySBr58AG!n-~t+`;>bLAg&JFQE(o za<F(u!XMQyPsyHc5?H6>@hM8Nh`2h=&<Z`Y017x{Sf&&-WXO=Od7ouAF{}b@<A#s! z?^GUrOk7&Zem39W=ZiuQC8vIg=-_zV!=w6hC115Xp+YjA1o_*q&1Rg7{(MIQ2{OUw zT_OertqwUIXi_+*;<>4T`-=u2N52}7b3OJpdaEhxbw>3|P@8TKVBTTq-6BPa3v}PC zjcEPi8|cq#%%gHM^%+DV#|H@-(nghg>tITm;s8(h$Qdgferiu<@GTxO1-CLpA`k+p zLqd?%s9n?R<Lbf6R@v)?cHD2V7GvJmb9lcvlQk?bd;vR;#NXCeezlxf*!p~Pz%(N? z7NGB}Nkh3t@Ui#hAW~FYnhu9lF+6Z_!Ur%C7KIne73psM>*oOY4?<Om$o-IiUcIr1 zT(PzS^ma<BNOItp=9u#og~sYP2%#XTScdPdN4d^T9`A+S0nAKPp#o{uyx>N|qEX?L zFYkQ5^*@8{wMiS^z1WvWnGjJ(wH9%}0jmLCY%zZXb!TkR->%$jT^M_)L;D#EAFfRq zSBgkuR}Egt5r@tQC2)gvZZ~C2r&vh8k5@e5h?a>8_Izx8M+Cf&2H=G%(>5rBtl$(8 z;&+u*AMlUIL}knhU;VPYTUh`jIfY!bJhYYma&N_w?^NBXNu2(4%4$sH1g*OoN(lMb zI27n3*W;WyxrHfJcVpdeii4hT(_*^dB4^rNVS?aZgK9^QbLcs-i|WTG%5jQvE1VIZ zP^-iDqoCVoZFTis?ZQ#RRIf2Xxul21n(6Ia^Lr-T*CSFHn6#iEMrQk7s0s1DSGxCT zYN3RIB$s>bvD%WW<6bkDRIw^}{_Ns$`RnR=`&G3t(<tPC3AosGh3CvvM*&v0ArO7P zF8_!<@$Oj859Wv2^}sjQMd=1@F4)p|VI;v#l^1%|8Ec=@m7Ja5P9-KLN~HP@8Fe(C z7zh92p~pRT4hkA_a&(L_ANWB^oT*@=RZzv}I?R&+IY2M<ov-p8mmIXq{%Tp$$j<so zQ5HSEZ+_v2ghq|)0nvF1opB1A^CqEKax{lqpiS5P%2w;|=%igT2~b0&W}?q}mGMJ3 zR$aHYUkp|wTbop%hg_q*ogVdDBJ(ep#iuybdcn2Ll#TEpsGeM$^qcWLf%g~m1mEn2 zGMQdo_rq8I$mPQ9;KD5Qj>edlLM{#qp;T*p!%gf(kF5nf>ey?fryQlAjD*mmJ;=o9 z;u1>5%c#-#j#LR|V16U&`G7d*i!M2fIuOIxIhdUFUM^owe^7xx>LNhInbG${1oO`W zO7^6uLx-{1-S#?Oo%QIW=xFbYltyAqJebQtTlht~Hj&YcYNDpBEeZq`4m<Zg9*Cmo z{B^<tOL|o<fz1Ax8k<k=%{qH~uNH^~O^7^<OPzjoc{?i-^7k+|E-xn^H?_*3HqI(c zs-StLPLGIi)IpuFiZFz)iCN78>hw_lO88Y4n34LUATD;39>2P1RS35XtHzn(2{%Y) zEQ{aR6^ZOST4=aj2<A5Ri07>kYVNGu;!(S?uy0lZywt`MEMnSvI&1lXl+?fSMj-wE z8lu>TS%-^}Pi6s&YlMLk9eYhf_?V**x`}h#gUU*#)A?%6(~I1>(^NSM@3CYupYm!3 zJ^`M?(Kw3+HG1Do3Kwc-yjIrv5<+fQ%eQyNYN_C0(phN}G@{iAH4F!hS78(mSYu+p zZ&*;kv#xU{w8#nG0-Sox?83-GDo$LWv`}$4)#vVFt)8HIx4q{PY`ja$Myof3!0wm4 zZq34406PqpSD*34A9hoKgz~Ey<Z+QVr<U14X>sC^y6zs%bvemlZw1Ley_<@=X@+m! z4EJrQ<ny0eTig7=&4}$3n9OZ!+`ym^W$wczZI-S)`FP3mYBLkDbbwNgbW2)9+$R`# z$9aKl2Q?j7l8jcB87eKdp2_*vjO=nw-O1hX_^zZ?o?UpDW0F@2iUmF^5$4M3yDu2= zJY>@)X@6qGdP9U0)z6AGe#+VViVuVx0w5?de8x;+5ha<-iAV_%GG|6Z1#-k1tuy1D zA2PEHB@^>#;btM~p`k?P=jDudy8EH2thAIm&In4BzfX7+&Tld4y{j?obemg))%EH> zm@ih=Tt`FSlwpoUDu&S$^;~437;xA&6@Ls<lvU%-ar!GOxzj!8=3$S@0fH6q3yp7X z%HLM!>p!ez8a%~2Hg%V+QEuA^fhPaS-iqi!ris3C97fNO9Dhi6j8LrkOb!Pu@CuRt zv(fzJ7$<BOEI}Sj+MqS)T7iQ~H_YjF6q<gPO~3hG3|j&_Y+zt_gN}oX>sJz~$W{`W z*s1lt^`=lLE8>KBJ&Fm~9{X3TjC%hDEjECX2ty_kn1x(}v|z8DK`5!H6t#mXN4tS< z+x8|xdb5L}q^ylX3Mv6UGZW#-YIwwK)Cfe=iQC5>&TBFUJI03S)3!y7QKd%!tnKf# z$1zRN3Jr#%Y5v&uz^Z$(;xy^o=)(d*WR@2Yrg+U8weBt7_1DUHZ~VHL<3M=v$aP8_ z@!Or*Q=PiTZ%5WbGPkbk4Vy(r1S`^a?{Lli`q^nQTuPTBj=;i|{&26t=}HwE*+1D) z^`>}m9>BkEP2<=(*yJ$w#r#an01GKL4vB~0pMTH%d=y+P_l*uU2crRj*13cc-P~Kk zS+I&lRPH-b48p=em1<bl-w#>l0tQA7u7}F|4((Jup<kH64m;^o3p^`TSYm%mR|}Wt zQub(eZm5ieGzapIQL5pb&XoB1;AX`M=rQnLFl0|Fyt};gntW)*7(gz?IR|+kw6aLO z>*<-=)N0l7^gsSwc&a7kOa6?yG*L=(R_P6k@Bwh5vzS8y_uo-hs(+3osAeOD*jTtl zyrj+%E>BP`G7I@<?V8j(^|QDSJTK8o|0DGb?vT)|IX9nx#!O{ch!?G?+eWFEk`k)3 z*`Ek{By%*=u8r-<mGrZsFBL{jIUeO23RenKcM%Mh@fHZ#`zWh~Pc%aKP3i8^l_?Yq zf_fqm2n;ml@>@J_(vMsMz#qH_wBL&e7A{Pohwf0RNk3mZ)8o-C5;J|udc&L8qW+@d z>cK#4gXd;Levz!|K(vz}UT+)(Z2zK!dI@PLcy*_Ds1`5GQil$sTW$YX!)}&EGIhgI z<;NE_Ttd3{ar`Hr_i^q4nW&(dS@AExXraueu&a}kI(`RT_OB;9I}!Zu9%LvD`9}3l zAv%rjmg3!^>^I7$zmQ895K>v`mGnc^kyFoDg10`mE8C_<iI+k)(gW~O*Mfpd)bBER ze2!&HJGiXT;Gm`x5h94OQpFiYcgA4UPk_;hSc@rG{Ra^nPRyBJ{y_t2f}V`#1VS?r z(P3h7fJNHKQK!IyBPin7IcTOb;2x@c$A%&S{X$ese?t(5z$eN}yBJ$Ni(7}+B`Sku zHezl}`qAn&GDhYW1zAgpr5X{XQ2s8%48fvX2@1jonn*;Sdn@d7Vkc~f(Ml{OI{=)) zzB$m2%b9s+5VU)Z6k-Bn^h-7z;p{zI>pxgPsAR<y3?$lP8mJBYt}Hk`T11%=2-1pi zj{C96%&ImvwVR;`bQtaVaohm>0<>|%j@;TQWzuHP!x>x%U9FTNHz4TX%ID%=D2Y+y z*ce?Yh_jISsL`Js=Abz_^dW5Sv%7)*)cWux!-1wmJjf<y%awj}<X&f(-^wfog>sW# zX5_7;k-3EXDoap6SAlW5ab-~DElUAqBMVTgR;)dT;gdz5=w(a$4;JNA>pV)=GgvC% zc6Qy*4}fJev-@?G8qWxo@rW_7#Oned4lj@4EMU_Re#by54yZ+50o;rhKsX-a4x&{l zh~Sj?GK}1$C2nzc2+yF+nj^Ou1Cf#5=KsNv_oXY4l1&Fi&~|QBLMAN!ryD&kS$oUb zd+-lXdD$jGH;yq@^`D0YRBd{0t=ZP+;p5q|^}-|3hIV=(#^0jjhB{Kkc%kn}4(EMv zxiT^97ImlEWmhsOXM$nL(}CEYjyVa?wfPAd^vHe{XqaIHt4WAsLYA42G{82t!lOlB zC@Yl3AvUvdy0lp;<_IT|+nibo1udKVA^O?;!m*+l+IqOQ+Qp?3wZMARR(Z=}8p{+F zTo5BsvBIu-Alls6V7B?&x8yBiWbSiwbArb>QT%JYK1=oM-TO-=F-`G3gMFs(+EiVT zJw9sM0s6U07utigzFgC2o8Hovp)KZI$`C&cz~IkNk1KV4o98Y#b1*3lux)BsqEu|l zO10C%<52l3JY;h|M#^jf=DK142$m=t{O7m<JJXOIcM3Wt-KC%|J@Nuhd}@4#6Y6BN z*is&Nf<tAL30dPPzHiZC_;HHmTNO=n0^J&{-3rVZKDXz1J`THC-9A1GPIW`-B&ZwT zvVp|1Woju6&I9L?QR*mj>O|*(ykD-XdGwWu)X8~xAMT_#XOp7D-60!8x9B&}Ym)_s zh4yuC-3Gd7o^8tv2>X{|`n6x6g^wBf{sd7XGqH}W5{^VnQT=LEGmIF28T+Cc@3knK z(9ku^@;`T~NauXELzXJw7sAN|rp{rh9*Yy#F2y1Y8d43LZ*0?#&(Vdo@TuQ!G}1Mg zP-dYFm#2OL%Q>k~GG(FMXiR?f2#RYiLyrUeMWRT+)%`+Efc9Q;^UD^>D!&)cox?`5 zaHJReJE@8k@@hgAL17fQhp0qBwYeiKNg=Y_CEk}Klblhm=U<VYyQFov`3T>5Uuxp8 zJXg1)o}DV>1HD*s!*zhGeHKRm4O*xubcXThoUsoHF|a0u|Ay!+rZ-|GPdc~%qESgn zX)A?{U_&M)+L59TixXZGnn)e#uMTo8qbd<X4S&yT9ki7-M2u_UI#U=X6V@VH%{Btc zNGLr)7`EYXM8WRcvB=#iQ7J;vqpTu#)kF|4==WoZ1D=CFp{20E;$d0{#1<tpCQbDV zJdW4*wz%W0u|f3ELMnh^(LFX=fIlh9$n<qaGZq)9O`<=d(+SXguuj=;_BvPjiu#~} zz+Y~G{>6t}fkB)6SsGzCbFU$bb_TiBI~Zg1N`{M&=?&<rL(bFDQm{6SR>+v`D|)#6 zONA&JN?pNBEIOwta+&gwq}8!x3Lo8uH*RcwXK4Y4BOa&a|MuARb#)!x9|P#o=f=0D z&AtgY35O)<kwA_ABu{NHoEEpQ%oa~=O_K9&8tLt+Rti&=lc9%7Q}*lrR$|H>vFg!O z{oYt9y_Q#EJ<5zD6%>%J*{Nu~NmlK-2ftxUEAWPhE~>wgx>&Mj;=zB4n9mDP7|9gu z*eOl!l1p#FxI9uWqxY)OBL^o+1R+uabdjP;e<b4&i>5h{uM-QM*Sz^KfEm_m$^>Bo zl6~ZA6yM?K#>qs+@M6r~kP4+#+uq)8j`PNt`c66}eI>&|iGWLQWv_1jXc`Egg=z3A zjFVE7JRwE+UGlzS^bu05zkxj7P1anJSeaEGWeOo^!k4eliP`Axz<zttBX)CwkjUVr zT(fGJmmg=QH<$dL>xp1voZ0MiC(G#Pai}<D0hKr87sE|WKeJ@ZMzPs922G`uX{1PV zzKIC=ElK5I+gGOgf|FpIU-&>=>XBPlbzaMH+(5G7pOh>~t6VvUcFxW!fs9qAxaSCe zqD|N2g&sch9HW+^?X%a&=R#BhQTG1aj^hN0+KM1QP|Zq}3Xj#ydn=y8;&<#wz!?0K z6Iy^^n3?LQRQjoe+!Cq&i0+c^^3T;XW<I{=Jcc)#7l+BT(M+&oGD0tqmN*7|ObP|- zAO|f;dj$rvw=YcrK9IOrWyZK#99z(w4>}oLb`e^f8TPcW!u*yUm9`%DqGSV2wN)+V zBM=3FpjRmPDXcs2usLA&NZV)olH@dz@3bQ^5uN1+4uYS$-UU+V1A!Ir319wmJzROL z@A&A&WQ069>}&%O0w>z}Q*Vm(txi+d)rq#x<rH9XK#v>%i;Xz|e0C81eAqh!p3Fyj zUoqa82a@Ties;<k`&`qn^cJ40JbHE5X_N6Q<}eY-nUmz6kA+3zK+EvfHAdI5a+gtc zO0_Sb3(%kRVkpIV+#GK`fn>zt23#o7J4+Njn)FKsQx0$o|L$Kk=8fX7c&*9gBBiyq z*@|gm1~LH_M!0YobJ#X6O@fVRW(Z>INpN>HTH^}rvQ>%${)hVGG|Vnfu}eN4b&;@w zctU?5OTpt+lk)9#<M`SL{N6|$h2)Ef4CeXIXfsx3_o1$xPlsX}Mw}MAL}j{w0dU&1 zKwP&0KKaEa>Ijz=$&|o%W6X}OF-d{6?0K4Mv^fS*2r{eE#mVne&Vij``x3aw`SMsd zvFG=7g2(CS^>bfqN-2}(>7!dj6O)sXF<<G?*)|c5p{)8v?4t<W7~U}03s^GH!)x@} zC`9q5iax2)R+i(*M9EbUh;k?V>5`$NgnIvAWX+mXfz>;upwYS;4)N6!B4`13+u;^N zisZ5{=#O^$hj<M#V}A-ux)CuQ@Lz)O!PIG`oRJQZ^6BuiGiZR!W~2paJWoXNWsk`> z+5XK9!Qst}Wrs^c*(yvReJ5=jqDCEovVW!sCY4uo$J@PTPUAtjxyUZo4(s7m)(Z>k z$7}CAC}0lE{@k^tC&7$IdhQ7pBIwHtahLcm<@KI1e$8oveldxdncOs{Rld^82<?27 z(0SrR;j!1>o=4^#JIr<mDX2R5?9Y>f#o_r}ZDM9{-iy?S%Jv7+BHmrSioO-NKAV@_ zTbH9m%~!_I9gT$rF|gwRrIXYdQjHir3f7(F4PUy{^glR>LFQVu_0*PenmTSqQl9cS z5y7*Ag(^0lPGGiqrME@7isAH_@`Ux;p`McP6X<x!;?cLww;3eUNuNENTMLz^P4S#g zxIDN@O|{rj=gZ@>*N&H5Iu-&PoV~mj>OXvlH^&O(vwej0iFX(7@z)gtkZrCkz-V|t z--Y$iSoNu0dka-#pXoL7nhAX?3=mw4GAa0ENZXd7{mhYC`;p(CN9+wx%PJvoC`6p# zON7=}rR$8cp(#!0Kh#r)XFo{yq`wSj1m0#xKn6#;Hn^hdu;pHXW>LjrXII6$gk#Xf z8+h3M9%s}OPtz;Jz>_sEM2EFO=Eqc7l;Y*id`zDlS*hc{XKsjbB<2=X*i;xrwus`z zasJg5)lFG>cc44at5a*HdyjIfxvt0F?mEx(_zQQD#YwoRfCLDO#b@PpKd}_CJYE?* zE@lq9*`T50zEol6e<_l;WL|9jl&bu)z>E5Mdy1bEc3z6rhk*EeXcA$GGGcTEWs{S$ z2b$&J=zcPe(2yuXX2j`=rGm^VrOameK8cs4h%us3k|n)U-R2GpRn)Yrm62p2k(8$r z5RUcJ=ToQMsQa2YRO)`4aHFZLtYW%IS67-C<W9<Dzs(<NK|c4{-uQDE#Yb;2nQ?5? zApf+yr={Mq<eT<mh_jp&^c#3bBXPcaOk<aX@akef+QWYG6*24_3_B<w?JMbI*>5Sa z`|E*MmG(_vUrt0~#reK~5VkM^Qqtd3NBGj?yt<KRHsht!Z&eAT-I|bwoFa>l6HeKs zh9rkCQPFsNVACe?qFh|cHWD8=Dw~a`^DD($mFlOJ5sU!mdcus{R;R2jo#L>g1js}^ zL0n>FZd`LP35t2oOVGQ0M(fyx(w?OoT`q}>a#n?(5>wxnex=wd^Szvsoe(@De-o*f zyv4z9{dcI?DXPB#i@hk;NXnWhUnsBE^1~yM;IA<>^q0e}x1f2&ewUjrJ_k~Qs=N}$ zz56$<vJv!mR5yReB?lZpv-<DeiSwUpXi|T=F-=!2mW~H)H+@SE`@;#0>*Sz8Ipilh zS@vB|#5;Gc5I(eKY-!M_=`Rf<lPcQVvtBztm$^Rw!q)Au)X<&B=hD^fb2?aLE|r1& zQLQ*7=3A9G%hFr)&`pUDw#97i=6H%v`US!99u#|2EU>&+NVcCDM<{9n8#`2>-IY1J z^PWm28x89PYY?bQpY}#u6nxM`t>QOAA>vM`wx&JI*+icen?ArPaZ4N<#s+FR9L-N7 z`E)ZkCl9yb1-9@nu&UlGDAgz5DnT2+gS1M<jPWScm`ln?7F25YXL~Wy6d1@?fnzu~ zY?93TNTXyE6U{ns@O$$@*${jf@zQZ{&OXB2UEqx1z(VtaAmva=ah)y04!2_+<hpV5 z4R++&GDjgZP5XPw6lD+w-ki@TzZ!M_-$p)PNL$kVlCeK$GT_Aauza?(7wkSG`lxj@ zwBgK{OG>N@I}B<hg2Ri{gv5D$uamBdnL4XTVdG?fTP3fi!J4gfmf6o<DMOD-M^N&n znCNT|4(rM=Vs9^!9!FB(YRI;vp3@hy&d^p%fq;knk+q7dgeYU0mJEOTqQ(=NH4%kN zc2sAkfq$@z!a$E};cO0506SIFHo6<_4SrD!q+jL|l_dyhJJBjXL)kVp4w@ZzBjuhx z^ThpC17l*-^++?&lrOe@4(3nqfxePy1iEi!5>{KvcXq!|NoD@pvZmfRPaV_mD^lP; z?OPFnaO%vGZ2DL~5g-n$8i<7O#_3NSM!HDzP5;U0RImHAumT};1krnKo6tC+WSO}z z;xk^^vuHzY{3|TiqYP;A54oB)R3vlhv%{w&46t)Fs}#u#?cPRBWJWmX<@Z%c5rYtw zK*<{XcBZ-uAq<^%1|l`DB#(D3B;@Qu$)`VhCYH@4b2X@{)9)D}qs*S1aO=zzhL@Ly znW@WUhkuay*hM)v=4^`h%ic-qKqgSU0~6Li=PxNreA#gswwuOwi9^Zu+DgeG3_2W; zC7!H<yEW-KC`6U3fk&L5D%(T;&TH(GK?a-aSSRx)m^x)-?uKVX>u>?q){U9Sj-hi& zMrA6BBLuR~NFVriH>UpV((l~+jb03_a~&!d0<@>mYpWwE(YDBs>1O=21q@>a60r`l zA{f(VN{8aZ^SWTwr{oB{@{m79aHXg~kx&9E9K@sKmcFk@W;Ik<-Imu@3_mG~GSAqq zQ;kGp#<gfvN$8&NRA6S&JgeUz#(PDt$o9I(Bb&|0?Zc;rV@=08T?EW}P^X6REeR+H z>z4B7xC>7lZ85QGYP?kH!+6bfeE7U7E($1KBb3^Up(4%qwNj+Bs$ukf51n9^-8`gN z_QB%dxyYcJC3vn%d;O^UpZcUwk1Q*XPU{oA)?LAJP%^JOL@yGi$Kp_ISxV}vsyP4H zablrSV^6>B5@Gp1e^`9}@alkzW5i6wSRJw{(h6}$BS0}a&WyS|&ISt9etw@H|1F%r zxI@mAHQQrbk0Zd@8=uLR!u{{xH!=albK`q5a2-C^g@!}sK4v%%K(n;5&Plz<k(<F3 zCP~e3OhlV<DwT)riSJs-YOOn|I3Ricttw^q!i2O6J-%U+2!X3EJLBH{fO4~2SzI_# z;c3&6lj*VfrswMzbJK-&I9P#j8BYFv&Q637hqqArlai++om|tCj?Ig$!2r>}mos^w z?5*8`CyM1#l2FI~nV^h+thr-a9YQgp^*OUqcfxaKR1wxinl$%iR?+SL%E@PcN<?3w z+aNM6<N<fq$`?DS22Gq2>hulezy+HZWD8}+{JN>1$URFfOiwHcKU6{WF0H_he#vXO z3*;kjClS?O2<cD1KYYUxP@@w(_sZvRy)Z_vqU7b|v!t&#p!P?Ekl&7X#Z&gUNG~5s z))$xug0<{Hp<#m7wqZ1wMC4iFwrHsaNYYEiA|Zo<5qD^Tw2X6j`ae$3Hiu3pbGc4S zqRHLa0?!ey2T|ENQNMgS-DP5vYU+T$gyTLW3C%67%6D`$)ppXOuHsU&`&`_EhKr=4 zt7IjPOXM0x?=m1xiv2g4#O7m~13eDs01HlB8r8RgVD4I)?-|hH)F_zKd8Bm3rXXZf zomc5QOcHvYcuZ~nG4#@-Ipi((yG1nfM|I_!-Yd8Z35#omiGMZPqyRwg1_g6V0@uKj z-2`n`@~OiTa3SVu%=ku4YPkE32DFTX=iFk^C8}IprMAi{DqXrCj6HmQuX{N-95)~` z$!KSQ3v{y5dJUMxGu(wIO2Q;$LP^Nl!kfiUY3k7&&Lzb%!Soc$^`8{gIoluUWw0}c zotnJuz!$iohi@vLG+qTA{o>=Bdh}CeAZhxqQ1LSB7S{1cFl2V-GvkEkue4J2l2C_I zLvEF;ifc7kBbRQ-w>5TPz9S7&bI7~^IhPp!3HuE~H#fZ~P90^$Uv^F0$ZLB%e2^ZK zEwbq&wHOkth2Se*Q>WWvr6X^&e&Hzld^OF)@FX)X3UeSI90ls^?xbq%S*4zd36hl_ zV{yVxqcZ{vX~vlVH4aZK`x>(&W~o*Tg5=;M&!9HkCbOC#4z6GE6BaXZkMqwR-j7Ia zM!#uZ8{&6!gSseF!g(LOwht$Y29meZ*Rb_(Y+t%bY}bA_d}JxlUJoxksr=@&!u1XB z6|9{KkuVfXn|3D&!S0=${61%X4Awd^Gz-}Po-m>ytd9|jp(ufp6<5dXTY0Q`Fz9pf zVcf#Yi4h~sWN}0dNcA8UJ7cD#mux7HL=v7wX&0!^KTd0<k$R>%tdY8be}24h8vN0^ zd)h_-Ep!T8wsE-q<V~sV7gXPLJ}_m+><KF(4Y*~TdS`cKH7h-1ul=~DHt74}rC>b( zbCK-h;Djnp2|r;yxE(IBhPfPK-f)rlf;4}<TLTw1X1qq$8AeJCVN7H7aZC3G0796` z>Klo?7SV4S1ChVaT{kK|4GS(-=$S;9n_Hmk#1hM=klXkTvc^doOkg-DHcqlX#M+fJ zmq}GOxmMWgBKy{NufBV?RKGdtkViS=0lMjUt4^uOP`{x2wswC$aYOutisEYx>s;|f z#Ou+l2gl;MBB@R<h}OLzTGFm5_UB97A~xVpUYL-#^W{51(H5dI(rGhQs%dJKG$_%W zb+OjYUxZv)Z+Cm_7Lm**m641$$%%MI_&RZpZMoS)g~g01jF=MHu?%R;Mtr++(R>Jf zmIWx%sM&?OMXUSvBJ4(iKN+1IRJvh(SrLGuiFSgy-7(XWjncNZ#D8}i*?cUK@1clh zBR2!r9YysYK-o(tK;;F{e2-=IM#=dDwh}?aLbwllYS@+hNy>~rzEp!0&;|uS4DltZ zes!<aLx3Ej9JCIu%0n6)O2Ki5%}i9n@a17oxFpBR9A7lO!bOQ)XZBh@Fw4Y+?hU?= zU{^MW)V{?X@S#4FBKMT)in)d??#idZ;<@|yehW32M!@P-CoUYaBGuq!M-_!$uKP({ zSkr@<r>yF44-VP&e=HfijJPAbt0;siRPih|w)l{wL^AM99b$7RC>^LrZ;3<2uem}& zmw$<@xjrBul*ckuR7ziKJw5f+^jo(;E`q(cw?Tdzn@P`BgGs<zuiJe?twc$cM6PM4 zmScwS#9}au5-ze;>Iq_DU>Ui0jXXQgT(kebP~6vO(5q%GTKj39;ExSElc9?Bu`=-! z%ww`?2m+E#9tN?D#{AP12(wlE=*%`QrJSi>&9h$F!coP?i+|7%2%-t|3Xv4G@!z6R zK9mLPDj|H3W|!kNK({9(A6aRLvv3_|RgV8Xe4)JZl?)b5sFHf1qN3^*ZN0kwVIuO| zxGxY7WrWP<dR?TwudTu=1nFZ4$nF!vZG39jo5(6&=5A1XxrULsW-+Ym<31E1s%Abs zgv#{sR<7XwZ1gRz8FzXt%*KB1VY?q(c&Y2Kc>MD7)Rns~2T;HC+ee9GW1Xe7#~h_h zacCf$Jh<&BdMppyhg#4q%cTjrpXC#Eew4pLD;o_ZDk?7C*)TO?-YeF_wOn0REJs5f zsmseN@Y&TEDG+NvY3Ms=tixSeJLYp9C&oLfEwL;I(-TafqN2x1&tc^;yT&iiePIdS zK5@yNp+XN`hq`v9b$XYm2|aAUN;)bo^2C{C)Uaqt;ggiemdgZLUai&nzPNLr98F@v zO9L1-kot&A0zsU##tj$AF^6<;h7!Y~wDC1l_~gybN5qQ#EicNVsm2`{-<c8>N}*P4 zMkpt9oadjh<2RzmqfNXc7Z=<au>w9fGiH2zeEYPcbi)dUL45Dx(Ei3KZr`3c#w>0q zU8=q_9trk&0JmYUy74O6f=}Q=tL+8vU*C=nt2PKF{BChNz=D;wXMURRGoH?;eVG?c zVlzpnRx|piOYMXXNEQ3V$Mey=$d!_(nKxwD09|Z{A`WjJfc1dKxEL+O82-#15ulCD zEkDaHn1AD|(x&RZMW2X6TLK)6JmuGBUMkOd$K0vtN38jIN}@9-wc3(t4zIl@@LTWQ zQLXdt9!iv`*{fd*JV?4un;h>L@h?iv-5M05G5;!JZNh%p%~z`A%47vG8-Z2%{G<Cl zY12h?s|)-eDujGWd@K_+U_$&w8vC~*rXM4$bFf-@n{9^j^+ifuDlFR$m4N-6AuDzy zT@SANO;~YlFx4cYzE;wvq=bF%5udB=<2b<k{PRchQXX<!tg}sqi0F~6oWQwJ@lSGp zN;9B2Nh@0Hwuj<0J__*^vtM`5%`=NL&7Wp^(1ID^Kat{M?Cnl!G*j{6g7i6ra9>4e zozMlTyk^qVbo*mRl4@QioZ_M_Ynv+JZxu1{4L>83zP||k>)^-Idy!Nl5}=SAG<o+| zU&##p<9FB*-{@3}{)B`SEGG>29`hdfZTa?4UDqKHWMt<?u)<so6Bt6EkTmpZEihUi z1DfluAVC@__YOd0rtIL0+bgp$k2vtKoFW0bqNlFD!^RpN`R$Ith%3WyOVG%QpffYN zihEH_zd1hgoAr$z>`=pWvGVvsry>3Xkru8PhLYG4d-KoZi=SwdfCRffwJf%8Ec z_PbNKPbm-r$zQhrw3*dgu%_SLSXv(*@-4CjmKObgG@XM(r0pN>vzu(&ZqsDjo7=3- zwr$(mw#}~1wkC74Ytz=G-81j+obw;dJkR}nd3~<i%25B~zhC?@{Ih{h<y1{L^+%;> zf}~378Oyy+4poXeoS$v3-hCD_mV<`zOW8HN0p6G4Nb^O%mEeGP#J^;C+lF6Ct<_6T z>8GHQsuNfSs3C+LaxjX3?Yui!3tp<sR9IHifUz@<&!$8(;B$V-r%)YK@@n}BlwCdA zWVtL#KI$wiT%w3`SusG`lOhg`Z$E9q{-P@Lf3Yr19A65i-$|JN4@*s(VZ)6Qvh1Vy ze@8uZs9!8H+dbZ<i4Q~(?iUoS$oT`3)*xRbCd_*dhQ9vj{Y}8{cmb6%Ry{Z{0xRyE z6^{(7kFLwH;-t#F4(VD|PGRw=Cy^-L(#`t|>di`x?#{KL^MIl&2I{WaV)s`SFE@<* zh~?<voD#84ga8T4GwdnNV2p%9$<l(KS^IX3oV8-^D1ey=cZf(vlv@4!8i*n+;J%uL zWcq!<ZVQvjG%J?sXKt+`llOsRwckau%h$M(lpVvGBq|pZq=ZH*Ntf^|<vZURks)tj z9gSk=hk_-R>C2;8i6*puahy2)__<}*9$97#kvDjPieF5OW4M@5wLgZq4^4xs<Z~II zMusd7>Jrlf+L%D9j!<8ZsWVF!fRCCbbBXY<=v=-+A(@H7jBoZ^8%IN34;N>{8fjY$ z#^~s{pT)8&$i6P<^8O>82Sq^w^6C}3a76Yj{%iPe58udAn%_2Ig%kgiVxwWfh-hPa zg~y=*hrVtu%Gx-h1!70Sgz6*x9lc|X5=<1FyC0!aJHF4zFB-(kiaSOn*k<7{@oeaQ z$}`mOy4KOv9X(KwPNS0STUKI0%!F+=AO<!F_8|MmRDGfzliiA}zzdfd`3_oED(bLI z(uC}z8<pVPz<V#zDY~N1vVRUJuDBcM)EFV%kNjEU2Ag4-Jnwh;3gy&wHlM6rOhR}# z*&XhtLx1JcE?uCspZpoO7Ea%zG(Jp{<UI*Im{U3yKhnGjO3u-9=43`KQxRTu`|3w2 z^F*y0>AiL)QOVGiRw({-DV<axiyrycgEi0sZym~@DjVQyj_oYTR4atv@rUCaPj@#F zDPsC}^Yvr({^r3jse;Nh%m#EbK@Q$upl_4Up>9G1v;L?4CxjsneZ$J>KCUbj@4sIo zfmlG`r!U0y4Nc~Jmp@alz>Q+8+_ChU!He_d|MaQaUQ;}mF$vGCE+lyL5#F1qMYPxN zPhNN68@g^d1^frK=56lxCbR|YWB7=3VCvY9?Z(iF1x5`$^)K!tY4x>a_0`L*PPJ-C zS2`W5q!1D16=|q8zSL6?;{9~hum8vv;Jgh}dJIJUlIEl9HHcGKw<1Rk-y!;+$Q7bz z4;zRvq-O+pZyGLc)-8}$tt&DaY2*-~!UPa97RddGwES#VXx4KS<}ExqG32eE&4If; zG9r)>W2c`VCRHMUic2tBt`<>Sfo?Bd!aTQzL;xQu_C>3NdU0>zM~R@%$z}uW{Qd;^ z8Whp$#S7<^3{`X>dto29ao=xJ)6moN_MSz<gp^}N&E##45#aKwD`ub0gzY~t-~6BE z`<6!BtnVc<&^@qwoZGr;3*YX%0~4iM>uNl!Oa&%10h2Dd55UW+eitGc`j0fpZst|G zI1aLvC%xfi(V8@0?C#R{zS-{S_L0zC>}zwI-sz41+`8tWxWO5(rPK>-l&34NHt~=b z{{qQLPXwW)MuC3`?`L=*K{3!FIG+3BEfP|qyhUD#E**z?{4qFG(@2=zY@OHpA8)q~ zgki4zA>Z%K{G96k04`J+nJ^|?C{G3A)pn@Kg%-|%aIfr2Oa6${`rtDDfX_e{QguH} z<%=7@Xy`iIA&e3{=B#2R=mC0wQw)W=XyZoQi{C3CJIn0t(POLUDHh$GL=yg;LjIdG zR#kPQ<pl}*=mRyUt$o`sT1~dA3<Z3Lkuq;wa8IzI!ru}<v?e||H$`4Q!R~%k*-ef7 zwb*{Zo^smf)on-Emz<9!fn+2|#TtbSom$fIBL!t)iyjAC#mt{2uFmy~N-1csg@5k| z0a;9OEVqzW6F0tORUBFz+kn{;?>YcMQD!$WS<UofJ&nbpIKpJ~Y9=8+yz=1SUgoZ< zGwAwfw{Lolt$QE}T4<OiRnjkBZ~0tBF|fL{@&xi>>-GSJO$2vj86I8tCIK7@(Zr_| zXL1u)0+a1*?1ZyEDoA1Vh5(@_>pQiS{>%E}kVpT2136~~k~rgXqDeK=gx99UCjxx} zUs@9>d_6-W0~aNwcrbTgOdFP>d@b*Be0#;SWn?=DWXc99*d?k$??U7eJ<gmdgNv@M zv#dp6dS)@H<Ris1;L#jWTDT^!RE_>Y+nv8rqQGWEeY2w6Ly>{G+y0L0psfI_HAGzt z6MT9uQZ?;d@EG5K{<D+m5Z$VSNoi;d^z`g%wv%qlvoLADOPxmC%PX;2Eb&n(W- zlN^NuqEv|qlI5L4a9|VH!|rFq#P#;j|AH&5drd(;1a>s~_T=ip^GzOYA&^H0!e2nJ zp6?~~+xtD~k_%%(?pLo$B6!@O6Rd84{lNmWX85hD3`}qZOOrY&VG)*$q^~8CMKzSm zgqCPFfsMnf=FE(8yr(&S9DG%JVNuZ_^XBPJrBe1z;+oF(#m*;2eDyCSxT9>?7d(q- z7B7ykkr`jbqQv_#2WSMc!U}jk1HCTVyWM(CjtvB#qag?VIojlx8--UigAUJz+JQ{| zm0_vQe~b<!12AXY)JsyS3A}DIZybc}FOJ^GQ^;Sm`;GXnSAC6f3pqDD_h7?E(nBK7 zu@YmXoi!iKAD9$~l03$Yj{&Hq5tTNY^F>Q(>|uOTu(>Bh_>9$$B4kZrB5;C_uhvOm z60j)ptUEtkbx_dl@;42lRaA1yJY%{jqiV};4r`{V<kr(B5xk#*Xdj9p%DG}?sa-)M zV2{g+aqrT6b6suke=Y8=%cXmLOIO=W+o{HxM=@&qfnS2Smdly401{F+!9t!OP)n8( z^_N6*{Yyu}LSEZigTB#&gAzCXh8&!a+R*M72Z$xa0&jG$gQ{9n%a%Ld_g1an|2_%Y z1q;Cv6iwI9ydo7F1B{mt@|r9%LRS&Vrj|=QVfM|5D1BN9Q@(LXwZa#<6WAjFI+0r; zErlV5Z7-u_DI>0Xy>{-9Xe^cOPl%L^^quMCw9$GrqdVX(u2#kMbk0~`CjT$4WOTql zv{Zcfak&I}{$D(*0_42mvb-sEA3j<@runOSDq|ond#XQp1AWh*(pf((X5i7_+ig!x zp|RV|Fo}ZYg3niKh{zu&exxXqXH7H|;nmihh<B`AMjW{AL{>JI7E^S-7kwSmt|_I; zVe2s;O{$EK-HMG=N|vON1aTolff+eDOTj6_ruH`4vzEjMk-!~A-HNvULN$7Li499t zchX1NTXWGM5vCv}j~K;lc~Q7M_Z$8ouMR;(IhvjFEWx?hz^C)EBg6}-vui#6lRXk6 zidyjdQwH{}rbK}{4Lvi<40r@I;V-|_<x@)4ECvc4TbEuWo12p=&GCq5AlMGa5Is{h zd#XAWy;FF8f8gk}68LK3|A#nAq%IaDj%fdt4;}2Xd|sPKRH13~FGEY>E;mKMDyg7R z_%*raPekU33+s%)sGr+cLtA=9#5E!J%x`L;bE@rg)r2UU?TNTBotJV<|7w@Fb5nnS zp>$R=Vk3UFLV#wPGfP#50u>8qL%8+}B%-xy)N9;t@NMc_I<clj)=A%6$)4vm0Bk*5 z4M>J$)ZQZ|(E<3&QgAL9{35D74cium(>z!={=&xZ1urgSVLsd1vI$S2MQL3k4x)xy zF1t$bGH`PH6C~5*r}ANku6Od**omRYywq9Rb_Y8a*ikk-MA@^+-LciK{J(OBUvaJY zxkTyZRM~)^^K=7ySO32kK#16A4rG@8d{Z~I2^nd4ECawHnDKXt5ob_fEGtd0snD@F zE6Y$?gN4BJdz{;3g<=Fz$4<prmbPRo-3YrZO6XEXxXzDhwPfu&#M)-Qe628NJ;4@m zP~&qovh||g7BtM}^-Z7DHnSWq!^rSwfp#7|j8otBt)({O@s>6j&z`HiqA-MxdSs!r zmVpmRsApIy{k(bT8zrOtcsN=5LD-XLx5^`Y0)lO78~33(NRLU?ZHe5Wo3u}@SjIr} zp`<MIn>udX)p?jnFJv?954S3JeO)8(i0h~8yE|89IzxOp$NI9_&utHp!mLQ1j94UY z6??@|)YS1OR1|?Mgd8ZaQJSuNjCWh6zRmDJ+yl&p7R~(_$<MJN^U?G3M~2#Jlb#>w z@KF|P5%^p^NTh7vri;5)^<HxK>kdrUW>|5MdxO<!cM(@b`Ae^e3`JzbR}yDwJI;l> zt?a3As}_Y%bJ6N-aYPN8(}FT&+*?OFOh({APXgT#Y(ErMf-+jan0d*UUxzS#qj)Mu zwLKybp~lXg{(F2j`=H`oo*^Xs*3{TL1v<h?m6(1TaG|rsG}p$oLQoMeG&2kLqGV>u zL~O;=7FrG~XPdUZruwQ36PYwl_Q{^i-C!?;=C&&%UgztyiRjTE(us>)E9%gWI*2+n z+t#a}J+zic$zQfaOK!7nYq_=1E#iQG+z}9K2Q$$wSVUF$q#i|T*c`dc#uTCWoTKiB zTIvPkwWAAn1nk`ISY;UC!Rr5PoqP7XFx0d!6VJRxfO`rICLaQq*(?#|s(Lv%%xIM6 z44Qkls59DDGvddyr_Xj0TNnP2Of8WKokxgPwrUKoWkmU8Kx`?*ctP}-DGq6wzv9dc zx3TeZ9AIV7TGOGwq@=0}Z!F;lGd@cXaHAu_B;#>sf*@kjj;L~>VJ%e1I@*gv>AdoJ z4><oE&So!y<K=vlT==xLp^}PJ>45{5M|3rZUwD{HR_y6<AqPcs3sFdYjdkooItRit zJ0Aahsp;`lq_Ev+`iJD<-!9B>w`DaY{m*$GpU$aDxz#2S)Y4UYn_O*$8c7``l4$mQ zDWbMSL{RXYo}R(d>N-Fa1D=vWDlbfPh)PKt(>7CG270)Z(<5#w0?ir5PRMB~G@lsu zA=0NIQoiT@+qHCy@%p)^|Lm2YHr4>n15>2-@h3Fj*S+uNDI<RQ+^Hqq+=cq@<`c1E z=vlTR?T+6uO{=;d9J`mdM)~m)e5SxJbG{oH&2pA}i)|sI|D`9VP(YYxL(*2}uP>_p zeq-L7LdS;-<wC50gEy#tM1}Aq`a*?a&D3-|3k(X;t0YoE>KeOjMLG@aPQ~ZV|AJt{ zpt(eRco0-+SxRW86dU$3MNb-ZmTmRk951W0vCdxo{R84un^WDANK2zJ&43&jb$sbK z8G@CFc3o~~nVDchR_lSGp3l-OU0P}@mn$Ywn6_*;H~S<Zr1y3U4_$?y&EGCYsvT8# z^cTcC`UUN>F*VQf45-_c7b`XsGp$j8|H0fJk^}w0gH(B19rqmRD&6Kkpjf13Yq9?r zNJR;|o-I8-w(7Adx~z+ec@Fm8Pq9G8LTuj8H^#a(2$f+|$V{$M;ZUeq>VT|T%$q<~ zfsyL?zcft0|5e%BA1fG2dHf?}h?68%+vAXO@;f;h>k?DLwV|0xV8TJ}yu-OU!U_<2 zg~~JRra<nbcpD$`A|o#f$r>_jFer1u`tDfxLu75Pp`)rh5QUp5YzB~aQ^2EShlIul zGuT`Lm<Bc|O{^7_8wxCG#Hd-2Au*$^<QX7y-&$b?BmHKOh`x-Sbj_Zoh)jQq$S=(G zgv>f`A_=~DaJU8E(Ru&Lthq_ta+XHjP4(hS$76vbVPB2JM|+ni^qn%B$Y|A47jEq} zm%=n)*E}0-$MI9PNL1%oPz9h*D5d06iix<47Y5S_1|-rm(D#tv28!*gChW{D|HD?< zS%+>hAEn@gsWUddT%lhz54>O9InrrL*!q`f!YWg`{;#YS4pO??%0Wp6q6{Yqtg+Po zVxC&-ec;VVs3jbRC`hy>hO%LnCR9~2w;yMCYw`3X{GD`2+vkgczrO^%;5~2tS=(lV zDF6HV*nfY@r+!u2Q);?eU{+63RhXtyYt>gzE%lV_&^yEn^K(l;u`O>`G2G1BWJg4V z-o9&MJ*vWK!x{e%yGMwA*gss(h=uK|>fkx=heKULoQcBgPe!_`xZG~;#<95spt;FQ zbo_0hdr87>J6hiv)!BY)_FZS*xIt-MhUjZ47o0TCtgCI+2$+Ad36D%;{U$RJxj-`- z&FA4;;lE(lI&@HSY5#@+$BHXKC|~7{#L?B%RE8EP<aLz;bUldhhpw>^gA|IfZ3jb; zdCgcNNzghD8^zC`9m-d<k(#~>#^e0gy0DGE91T&^yi%3nzR4v0=+c_Bbmr|uxgNJ& z<}+)nwZ#92sj@#A(PVXXg$i?BNZ$SIWXM{dPd!+RUFGpYGQE;`D;nXf%X|pyeNA`; z3xqJ}oN$|%1ODS{m_Rh7UGLC#$-d+uIRQ4rR%$nSZJ~H7#hgEOZq1CS+pcFgx*+y! zv!(&<W;{|3lfJMvCY|j<pf{=R!fr^5r<8RdwTkAqIv6ixuu24`0aL58Li06-miKOk zIZyq^Pa+E&2vw*srNwVQT`Y>-reaFx$X5mXlSwb&cwFNVi1FQrrM&^kmf&ZXh2<Js zV9)8dKZ>yYr<=gbLg4nb(mL~~j;mwA4Yi%2YWEcrOu&r~&!)GD{JSW8v;nCj{8iCz zMAC?@-I=8$(*E^$lC*hfY9;J5$GfZ08mqPI)JZ1-+$<h?N9gB9``fC8$AZnz6k)_s z3{A@QQW|5dY7fyTR;yJ~(HN7M-_1)Y?P^w-apOF}mJ1TyCz<$lO0X~0-)&h4Eu09d z?&REBxItaU_GuVh!%dJsCKWkAturYa#$*v}@%`&3%1kb+11KkL!QR_MTgQG38N*92 zC@_UlszfzXnbG^x`1~R1*sw2o|84-$JW-(%pGPN^f3yY33Zwl)g<+hJ58{yIKvgV* zBX)aBAI-pN!&Wa0&)u8ll=QFPs#P#RCc;9HCyEwogdgwis+&A^Ceo{*I@;+g7CK~p z<w}7p5XllP>RRqL_#jDz8jQk>t0zLD2#*&(8LJR+Y7B@&K40X3r7dS;<d%?FjL{2Y zJbq#*ba$+hhO8>R1)^Ml04f-p_-fGqBo*jpJJ`l_TJ*00{@+?qi=k8RPc>@WR|DC9 z#VNtSlxm^M-QxnY_mz5*B9XTo*Ki*@BP({2f>H)gIQ;UA<y%veMtRlv?{LZ_Ph8OU z9mgHZwluenA<gmBNS{QvT7>rxWjN@*NOVRxqb}mF;Sjks^}4Og4pP0|tZ=g^+&ldl z5UUnDU}vdJZ!hBC1Y+=4J>L69ZCpz*4q2PvW3_f(STh&9hrDxm7Rr@p!J!F%R{X!h z-^$zDkIb0%QO?2mXAy@_f~=zh)FESRe@v2X6#x0Q1=;(W+H-{@<j+e}IB)*vN3tmY z!57CXQ<mJx@Qu;y+g)D@SsmxNYLd<7#`*KmQxb=fKTKzZJRu_-mE^1a-xTVzhZ>p& zY4L&BdeitGc^oeV7F1366T<QLZKenp3p?S725AJUPzmhI2TE>iN?x@RB^b!eH%j~$ zRtg5j-@@^&AJ_1|l*q<tgRr@4a7@hmb`zxherZK|lWj&$69_ykW$4k4jg47?w^*$M z4lo(#-lb2kj^hb-+U(c1uMG<ny$V}Kr_j_YY8>%>?b=CL)AO^Yt)tiwVJe|h8Q&W- zQ<aGqvKWr&_ES{OQ=Cf7#<9dHjiU?TeJ?{VZw@lCzB^O@u!Wo{r{Rrl*^^B<4Wm+L z83Tz}2}+NzM%zpt4xl<khH;8(;SF@R1lKb(DGJ6wmTohYkC>x184Uy%reWNkg?TDu zZBoMVrs>Z!6!UE1rAQT%T(egmEjczt!(;+#!u(0T^p5vq%`n$r^#pZMR!XsyIZQ}> zhtPdJ_y`Kg(`uK=Di9qeuvTPXuErtJs9lEgD@VJ^Mjqu+Je<9(lD|Y96vvPE3#GYK z<!W3+23!9@y_b~1_R%+G&fa-?k0C)e+|eeOjJP<GVUOk(y{nt`JB$BNOebI84UvEE z4>xp>W)!eA+4p*3uXpQ&S7SHKQ686D0S<+=YIH2Y9(H&1p9nqG(6fYCe@<y^(zQ#V zjbISh+`2}Lf1h(0SqC(eE1&WsZ1Hg;;qq};C;!~sD4z@Tv9SCa7=ri7s!VN9w|VU^ zTH=O7aa@Zzc2tOm$86B7`x<$Oy;lf0eGa?YgBB+;;3?wDtei38T)-xZ|4sRu)%a9j zRv{!Kj2p2ZqPToJV(v&!Pp^+5G890aPFyqb?)V7P_GH8)YOt(Ohnu!OXSPK`Es1Bz zI<znQBW1R&M?byB@^8y;1>1@MvKeSpL$ci(;H&(DK7zMvW=8-Xa!Y^SuCkO?igFpu zCb7dRo;904Su8qgVjrzwQOh3X<^uB5@Q6Wr6qL<e$Y6VCy1{5zyO~9u`KIg7C!w$I zNVueJi+zo3Sb$atwWcr3ADrTD7rAgUz+ePUdSKv9QP`SX4e-MQ6KFp15F^cK-u%?} zOiq^d#Awet;aNm{=W<_qQ=hSUE@fn)4n>OLoJ%4mqvF42yt4u@aMKHVX*0-r-Om;l z3iqEhW#h@ojoc{}1SM+a9jM1P1Qg_@l6kg8*%7BQ6ra|z83~}&fT)X1u#zoy!TkL% zOwT7BJsTo_!G|~N8mt3J+^eg)JG~GV+|QFtitv4^y>A?V5~(LD?5s(ICBC4cWO5Bp zFm|ZckEY1{5vzpIWD30Ihw%&6o;XlJ?mndnDrVe!*|B!Ncn-Xf@$Jl&kawn9>zNE7 zHsGhg4)e`;idR#_oWf$f^RwKNv}XupIs-~DI06EN+>Vg&`}0FfL*_PYaa<}!Jpy4- z;B8W{<HLd;k?>bIX|>`KxyJZn@RynKcbD|bB}I)H!h<Nj=Kis0p>5z)cyc6BfdiOD zRgH5F<9uj4ZplH!-Rp8L3P01ny!+dF{QE0PU~z<#2-RQR#2?-`D~8qH=I+Rh9wXc7 zaF;ZX*u;-k$d&%-_OlurEb~B3TB%eKcr@9)$Hp?i9Wac=sr!D^nV(<m4jC%ms3ePA z%!#_=$BkG(IAz3b;UPg5R6GnUlm#X&PRjlv?`0eo3})#Ng$Vl$8$F*<j0l3d?1nU? za)VEADljnjxM5hkjo=&K^f$seS7(*nTT`^#&<48oHQ@ZO6Ho0LaNx5YT`BDVaF&LI z;>L^+*Cdc)teqxZX?QbtTn?2PSF15(Zs02yycnt;rz!mG@dIcq!c3u}dLvS(UH~o5 z5moi&Fx;0&bV{DwNXfWtUwQT^L$EC>O+kT+6EofYjfe`4oJ1+p#Kf^Sz$M~h`}s#6 zcT;jowj1hv8T1=GE|$SmAnU9=177Iur{rJL+7nM?#a_`v?N7zHa~41uUn3qhghG06 zubwMQB66WETQn{q^C&yNAf^aSs2XYHmOAxVpZ7cdu8zQ|t!=|!ueJUMvEw_{=?pvj z!_oT!f~QFoVmC=-z&JBxyj-myGWW5Dy1GyOq-B^{Z1`Bey`kAH9X!Do-_^QKQ45e7 zz*J)GbjZ+H!#>fQUh@|3UcNG6D3Oq5g$IWBWc>D07RlxBk5vyzKJvC}&~t7B?=W~V zOlOJHK3$JsLC5k=f|@~bG)Ir=<m9|S<aCT-?6^D<RAwKpY38p}nVhZ1a@K#$)&x3n z1*g60FPP^I|JV@*VM8NSu%S&M+taiTlI2fWceY85SX*{vyoE`&KT<#d_ZcexVse;= z+;s-i)9qocmDk>1GXD4-T{l{GvV4n3C8sOVA(92Z){&>+@nF4Tt_c1V*fdi~$T!$+ zgxXgT9=V?{-wo^QuE%~$O<4khAWrC^pY2OYNr6Gjg}%25{%56#J5m^8N2&#S17TV% zgh`zA6omRuRC6P4w)p4M2Wo?*D5vwq-VOah!#h7cNh}I~|6K8}Nm7)>BkN`q9ExY= zI4aD<oO_``3wsmtdRG!q`=8g=Um8kuq+Q9r>{o6+-<U5-WBlR1W9<?KR8bFMhQjD` z3YxXZF=>ys@s{w8tx}JRQ^UliS`%4jR4bXS8|=oNE`z-R$5!4So1WeeCo0clB;MOX zIW>beENH2g@k0l#f_IJ-TS8GNVh%h~k?ZVSpW4+;dYet8C=2VWf(YC;QZH}1wh-ig z|F_Hk&4m}&H8bKako$|_Ue+rFb778C6gAeSsIcU(QvaEZ>-lAy((+uo$?;c0hM5M3 z1Cqf8-}mt~b7oAmX=_2Joby7GVOADW(Br^4B4@!l+l{^+by3jk>`f}a$dxK<feTLy zPczhKz_}oAs0m_jM+!$AUN~7`r6#_NC3ayjK&r?x(lFptM(Jm5`iaWh5DJG^tF%HP zUutLJ&n6frX6DEi^jiQz=s5EpjO%V2mZ10<Zr6e59|WV(B%49~Qa;gd<Z+Hll7k`v z@_VRctZ4U6sJ^q}cp>KkB&7W9Y7mV<O~&+r(qL(30bH0UzC-_okst|Vb|A9!hkZmc z)S6Bu7zuZXFU3(K5y(meLYp)oY}_1*lc1BdjzZyCx>H~%wv@~{igl!k6R$6-4}yPZ z2(p#F>~C1%n;sDzFq~xl%e>j2{wBUD51@tFEJeP&O4xwayh-BwwPBadP+IyB|0<@? zKqjb0x9y!qIwh?HSM{}`Ei@@PJ|6W3qA8Ih_g!ZzG;oVfCe7N=iOZRcm4Y)kE93O) z9CZ~?Pg0R0B67!RRCbvI(@c!N98RmVvzzqQX2oS1-pmyOoh-<v;DsDNm=)?Hcv3YK zl2;VWF7PObS62VC;)K}k$j2X`9+MF9MZMVv%~sv7Tcu~AUK8+t5-8g_;G{iDf08cC zLGh3Tj$@F659Q*iS@A{>aII7GQ>ffq!?LEeoW_ECIz5oDr|laCvHhlZ!tpY)7FNcX zanZ@{rSD(4U~RzJ+;=onVJ4VTzO>QG<*q}3aL73?04ls(Sv$UvA;>!acha2iJdPhh z-lcbbYRQwtUC^>2J8ej70?iz&e+e0U)Q{$a_0x0Z%jUQ|()`d^78Pw2e<5LJZj>x2 zoT3Us+$V05$br;zEAzq+t^RLYzvy}R3WeeOV`!pHtr%lz_<){Sq$i%I*?q+Q2cfjX zc9kU!@HT<Whb#xeV?vj@BXN3c-xDmw%cD4A3qHlYPjp&NqPM3M|JhrUZ7SQ#Q60}G zDl^*}q%N5+6qXK1Dcf<!>zA?46<9Z183yHh8~hILTz#WJk+gmP%Ol{$hCh*#q0!e{ zW=S!39OFe9<Y0i7g6R4VmZ&tx*U@~{oZxM?bw)9-o`}gTi+YN@PPnqI>NM}r)A)eH zD(K6*rk(~!6;?P};bGRlGqyA_k92k{Vae?6oBwblz>gCnUwr+o)OOhW-iOPnC|w1y zszeCAI#su^@0L9ubJo%oMY~#upq`Ij??GeHaADrd=jYT)Xs4^%0y)`|qCzST1=X<; zw#I}c9C698b%;s~1Uodh(LNWmY6D%bTut(<tVIK@33$1au{!a*QN$CR@JxktFQAA) z^`sz~8G>f><D3y?)@BQpIP5uwJ#mF;89@A=)gUa;do@Z5*GKz{Mhm5KBQ9=vVJ`=g zSvwgmOu+q6Zw!Tq8X8JI6ApB2s3^#90KclMMW}NOwWh-`nCQp8AO6RyZQtShQteCw zlVmrwD-}*2YtZc;{qKIur6;;+{o+PZ__d$8BgA-G!sb;n+M5Id`qPp*6KZ*+2r|U? zgORJ4H>IS%672FP7fzPQ($*I-Z6zp=MV*DUg8qFCJT_PAG`=E&P&H3z#`a^wH@DId zs?R-Q6J@P#Vg0i>R4>_^$j#>QT}>c3>;yjW+x`O8%VAd@+ByRde?MrEn=|VCOP2ud z2Q_*0{q0qY&CZg|uLJVHM~#loR!S*ETjK>!dd^y8UwNup-9h^~z$gHyhh?DC`x!w7 zx$IydsmP+hu6l2Vm51l&85z*ifc`9}H`H~;0EkCz+qOP{vd!JDFXY24P3r(TXppXP z@Zi^PQ1}og$6Eg$+C_!Bho1_avLVOE1;$U@r$y^KGJ<}@R`@ajd4tbz6@ya5?Pj1| ziHp51{8_J<tOZwHh|H)pY;JaLvbFip;?Op~Q5LW{%)E(J&nAHv_GnjWYl>9)`W2au zZsJKMBYt6uS^(|^7vdW6Sncx9u}kB<6nK+Vm$DNsHxvMIYNb}FwMGq&lXWPQJ4%?r zq^1lcy{P>7{#)f(5h(wdno5oJI_y)WB6k)WTb4icejUwO$O3s(eqaf21bZ3b+W`gd zBgS`XPV_4QR(#SQkT@rbevuTN&Wuvnu5X#cCgcC*erV_=S&X#QdV;LvxD<*7-rImq z;4xMa-X=URKR+A3+IsQD{iI6wOV@>tQ@v@=gNTOTke*F|Y{FMI>FfWRs@Etelb0Kk z-N3$E0kDpEIyVOF`?u>b>@sS~sgMz#DBAU(F&%IXN6B&;7CEXQ?(!mLIy%+jhU)Dc zlIT&$GU5n>P!oC79Kl}O1-x`MQ|o_T>3(yuqPs)V@w>Cz+rwIrnSgX|#4O{TQ*x@z zGKAoMn0uL9lKs&@sntX(M6D_xv#ai6*U|?f(y`9%3`Qf<>HO=O@=`{g!i_Bz6Y^O8 zJv)fPl3<+Yy;Kg+?GXfm25qPVjl5C{PBMX!eo0)SQGY1OgN~@4(O9wO`~DE=kG_^h z&&Py+B8X)+J%hrFMH8~MG<S|m6TlF5Bs<%7C99>n`eOHaFRs;~FN+NgOmRPsUOPFK z1T<ls(3NJ!HQLWwnrePH4b#57v@cVxt*f8PmR3cb^xdZm=3SPw+xRU(MX5%Ca@w2t zyQuhf;2snu=&O$KJkZUS9~^xw9F$D-yTLc6>>YV4iZdbAS1P~KBNgc%=*JzdBj9;q z49<K%)<V${RXoPS%q#`{8Vzz=hq3Pr^SGH>YY@3;fHW&!!H=IQy5;|b=!5nU<2`5C zqm3rQlgVPHE!XG3eCXF?#XHJ*Qe1X_R?M%~Fm0tw$yqEZLjR38w?=Lqv;SvSk{!~< z&|rzr$s&GXLb=V~d(CvUiD?@w5Ws)+K}R?}rwSDQ$jgp&r-~+UJ=OzomAwR?A1OS4 z;}^Lo^1DZNtq(d{lxrm12~&nuk|~FhyF#nQ(iXOyNDHW?5%FjQTbvS)QB5z!!3g3q zIg|;gQ|_f-B@Zz*3{qfR<vjS#Ou<kjOd^9dGXAhokBdA^n<J0`;bAlk#A8&`YO{m5 zEEOuuAs;QKG;lW_eA5;8i&~2w@T9ZjeZIL0$DL7KzC}_9UT15_T{<20XG4)m$2MOV zKZ}ktMPFEU2qwe>?=hf7G+p04R_sVHlW%yP^ET@-*aV<ZFikawJ;7}f*XPr;Ebbq| zRWJHYVX&JQiW~ljgWGByU;#BIjuvM{!9dh6d^9dz5JJ3VWsFVr)Om~izXz8*z_pbD z<jYpH5e?BIVfUgCxCz#|Hqui)8xYFg*v<D+ZM#%w`r?aJnCDT)2>4*&8#BwcFI0)e zN0=KF73GS`tWF+idR1tW7Jgf8xtXjgN-0%=7-_}hcmalb8L`x9&rnPIFx0V+E=lEE z(6CUj7z%&l#)(JS`!OS%*#s4$M{dfyr}vbV*b-J(+#NSS%-*E10c4`IQgxkWe1(iJ zk!dEFUD5l9c}r`$7dsXGFRWvyC-SHpJTRU8uj(OT!lZxCkjKpUt<2{c8R*J)?T_hy zwk;|oOlNThhlV4)IWSN{-cYLjKe$MKL3NCw?yPDZm>`t}mkM(pIS@FtH0w52-7iMc zXk8(B|6O3PJt7D<8ZgXrw?IW?t}q(bvc4GY;OIEJi2bv#Y0d$Zv}ho~@?(Z?T!E!R z=!mcHMQAMi$zxZwgCy1I_?kBuxa0J=xwP?z4+&~w8TgPGTde2Z@!KhVwXB=cRMLgO z)C)VIp`Jp5#}u#zguWaA`P>ysraGv&_GQwwGW?Ct`t3_=kZ=F7Vp};pmsVKlk$?nh zFzZ9(Q`z)a=*)^S!9=RGN1=a&0fMLHPmyh;J&KIhLgU9(hL?lykJ9{6P)5Qrid-RD z?(l{oG;3StpB?~{?Y)Qz71CM-0B;2vmw->u1Zw|+Ou&AGFSx2|hH(v>>fH6D<$>}X zMv$JGjgj4Bdcs_9=m<B8K4ZT^WLl>Bn^{wiM`kYe5X1I=$naF6A>m~YGhpNASq7kv znhKA;_5C|i0dEsZPeiL_NIorSNgab?&cD(V6${HsWgf+2eN)R*zPYAkuJS4_f{qXF z1{PX4Gyv(v)cFsmtgC}q=L_23fex*qvM6yL=?%<j_rQ3m?_a3&_*E!R-F|R<x6I%^ z*JeAmvuiG)7xg~jim+>rD9y}FoB1-%*Oc&ySpXV-7$TO%502aF*u^{!18fbkoX1KD z1dIxMYxG8-GJW<vY~aYR+N8JB<H<b5K(34`&70ZNSVBS;$6P{Pr0->vNdKWm#@+VC ztJi!#R2G#6$+@3CH6`n`-BY|o+;?te+dNtTb@TrLT7_u?Y6quSf1gxc@v}JLq*KL* z*-i8Z^IO|CJIC^k0q5DOv>tA0>RJ&V_mO0@;LnLBec(?fed|q2dpC9yy8IP(8r%yd zmyOi-L(O13bPvjmaI^?F)#s^|8k_BEMAe_;6v63wG`lFjVi=12whM*ZpiWP@@w11) zri|E{I=mIgWTauXp(&Y75^8K{tZ>Fm)EaU4Qwgd6!YtEB@I6ZsPVoT(D2{NhtN5!5 zQTXyid8+vJ!=Iw9R0i@O_k}qXscxR#?yFI)Voz4_{#fzUucEF!sI#b>WIzSv@6rqr zze-j|tI_VKWfTH)kJuK3^Flk@m(W^$9q{qpMlHO9Rs9N|d=$E?Hs464Yj}z^b#U-G z0haHogNdsD;+5hFzjT}_W-?i!pC4yM1VA7=jkI0eVMZ?*${vQrw`D&dZL#nJ+UZ9o zTai39VRbjd@_E-{)#N`}_^1LTMC3#|reJ*gILXB!9<~Z)nrq^;Lq=9kEY)+8!C1;~ zi+wJxsu214T3Ke;Z@;!LqmZ;=Oht03&56;!)~Nk=oEZCf`hf)bgLSOq{78zz;lyGK zdy}9KCjmQ5fGQ}?Y+|TfPv$H=Dq%lJerzEJ`Ex00;dw0RE9#Y-0=Y1S8`>!nz_ABz zbf{as*;F^`-^k%@afyS?*8j^kT)s>#kL*2pzrwZrrJh4fezokeYozX(*n%r5FsWj_ zxwd7={}>4spFQ29h+y+&e)c_%hQEvNkGK><m8bd#s^%Q?UN#_SuS|y%k=DSPwCp+~ zg>wlQtipDM$%_8Zj4&Bupm>FRl`Ix_iMZzzIHK~ou}><sh1V|VoK_!hYC%6Q;A2Al zdwwGuG}^W`1KYP)$0pX1<hjk-5=M=_a)x$KkAowsXw}{rJ9`HD@lj?jXcK^t8vcIk zteK%NI8+=FN9ge=1>NfGSv^A>3}@M87~^zbj*>uuAL_CF806EZP!;(vg`YI=TZ}c5 zuEFzjHy&GH-c524hkH83{Z`)__rd4XQ~6>Rh#Rvn#;ZK)vsO_+S9WJgdH+ZLx@|E1 z!J2aIyy_*#)<E6g0R1BEX%=SM$@Fg;r6k#C_k+qqiLOS)k_0{ZVI1(QRVl`SOoVgQ zmgN{owG35-;xtrN2i&b}Lu@c@y{7vH<T%V2NK$?;@?kjNPWw-EzsPHyQFGuSI?lt{ z(T-vrM>lVHjZUY*<kD}NpWeOEoGP;Xbk-o}6#r%!Ux-LIG%lZ)!iv(8&W<E(Ag}u+ zMDnhQ{SJQ{9#ZW8gj!<D3Bty#2%@;-lddI^S3t!`Y~j6~D)0cfT^Q=0<C&v#1M%#> ze>medkj0E}qqmf_fIgR;pIia)p3p(DREY#X?LsGx-E(&2$uhdWL@3AW<wZ2REQ>rY zgzK>!*m*zYwlssciO}p1E>^6>l+wXcAr9$yzo18fq}4b;3f$i{t23B2#T8rc<z%}j zx0sSxCPIb{xC(;b8OGUpRCRh~3u;Y5{Xnq=@jGNEwU7<nQ4RI*`peYzBiL=6iQFo4 zD-R<*DVGjm8picR6&@h>Za2H3uk`t|f)p_xtt}Sy`(`dbe298HQV!-qxJAiE;qnvH z&(mwi1oN|0*z@*N>N(r14Q{Kl4)4<b<;TRXe(qs+P|!B?%2}?aXa#z@g9cpvyWp=s z;@Avsb2MIkYujL~Zy^}C1>jQJrOy`fjJ0?LeEAd{XHwrTe>n&MYP6Yct2Ww0VnCMu zr4*3|LqWFuUv2Zl=(4VfmfS21aW{#MW3R<lH=rDEz^Mm0vgcAW=8{aG74e10g28<< zhVQ~CSK>8=UW_!Psr+8V<(5_XSbK%9<`2c|Xfs|^^q9`k>V^SA=^vC~_l|>Jxwdc% z!i})0Sz>eFoy~v&lXiAXbn$VGp$PCc=Q#`Bwgw-5m0l=pQc<5LnY3CgpwMwAGt1+1 z!@#l`Q(D};7u8EuBh{}n;TS(7BXPK;aQc68IpUKs;9<?zVgI_wUb!ahw?H9tABTmH z))Vi{N`l}*uoVJk!(lvJeETP-fUd4wLEWN*PMaCJ<Uq*6rT6}x<)&@Tsnf8-sT<<1 zaRwGli2JBq&Gu>H)}(+oNOf3EiJe4hLI*Z%3|_J~Nq+bK!!Wy=Na|J2vE4!6!2;0( ztmDAof?j?sO6E@|$7*sV!3%Yb0jknPB4j?<*w}2t*J`+)gZ>-j+5hKeBmdUiG$+Hm zXgkfqR41^RzwTdCQHlPQJ9@-6BS%I|8H~ZKe7RL{d&85-khpByq4oYHezHq}`YVMV zxmF~N>ad`1tWdF!@REy#UdQZ`Wl%LvLzB$oBPggthLXeW%dAMFqoUIPcn74oYqdRw zI~@5xFI!cuxUrHU*E~dVn`Q;lC~&Y+5#(AL1=eY}V6*YkKFkUBLeze@MeI_OBPMZo zLJWfJbPnAKc9WXh6~%rRjRzO*?P!ZY!JGF<hGGw!ChG{WjPM=Yw_xKmJJWG4c0Jt& z+1xW;!Kt_a>Dqf?2kcS;P+-g+X|iQlWAyEu+-lPje%~r&?OAedC*?CS-{5An!xvvo z8at_{K~Q<Xycx~OGQGV`8YQJtR^)qb!1RttEMx?o`OSL&ZA4sG$N_l`sd@VyWnv#L zk6V%8P;kK((aq+J*Zuc#El;z5sYk!>_wSL!<H<!%1sW*SLHyGr9|xjCFNgEErnX=B z=JQHlJrG)t*yNTb6QzK3Jjn^Bz=WqfM-Db@2i>l}=$XhjR;(eq(%o7+>n<dX>aFeQ zjkG?+2rrx?eDKJ5j<H28D&`sADyhq6c%y5Z0YjC+HDC?cEVQdlS+~ti^?4_`lo)l1 zyp$QOWhjdERGo>vWVe{&^ghRKaZ}>IIC5Ou=WE`nHWlfR4Z!f0$s~IqAnh-w*T1M6 z&T={>1ei{H6)eSh9~#497c%?rpU7hu)XoT)My5GQ>NGKRHYDJAIsta~I;ah{x3T*} z?%J3Fu#>TohdH_DRA4D#daXW?*Z~C5CcN-awq_tAdA^ic5SnXnkw`UdvSjWXt*->e z*ZUrDRH!yx`uuHozkc6@0UAYlT#t8x1|5E=f7eW%K5oJv?PSD!kCPvF04VK|-ovvy zA<85aHa5=Akqj4Gf^$6XDe+fS)WS_MZPb3_z@wE>#mLK&jSXZN9%7nz2&GMZX(xR1 zpWGc5o~`POl}qSew}W`_@>-QecbG2Aj}|j6_xf%K+eh8MIBexLG}Avc@F${eck;on zZRAEYtS-|+29ig_c(xXtaB<h{V%Cj;`>F?@1Z>t!;qi)*TJao|EHUWPq2b_ED~xd{ zI2z<B>6M$Q&^WsaIEB#)C6Tti?0-gjt;pj(vLz=Xi$|>z)qTLEZWrVhqK(}gqQ?Vn z;fJ<Z<WBu=fcX76=Yy~XwCKHVF$-K6##Xhe|AkfX_1Gc$(6K3;VYZr~vpHN5YEi=c z)*y##9Im#gcO(B(gJ+&<T#F%~S#rV{6tweW^%fq@Wbnry^saB5Y=G6Xqa^cQBxb;4 ztj~Y5%fDC{BJU}TSfn?!fCxe##{1Ss2iluASSAJ+0w8rk{$tx;BdLS_1SEgqfCpc7 z0N=O=hTZ&dl5XEYX_anikqP)Qof_!sMEYA8KJtL`G-+Hk(UbYCcGi&$TxY%uUinm8 z#x`8kxlT^X5{t|iDGPL@pgmrE)e5H($i&Q=7RVx*dXh&;e0$Mg_mVT?@b%Iia?*V8 zrIWkvuEMfeWyR@+UIlqcLt$t?DxdSL1^ktaVhn||?HN0NOL|D5)ue5m9i6WC1(zar zv-^#o|KR%UX+?~`psy#1F^$PsZ#c+zw!6~}>WlCSqwp7qPoEix@G6ih6{xFibsP%8 z{~ZtFqj<O7nm?Ef*QFhy4t)Yha4&1Fr;iL({f(Gvr63}~IP`rZSHls*csVc=?r=;- zx}6K&FtWHnbnY_TbiGbpV6@~ZjwRbZhFnNOQD#Q?OF~mAO#p6vz^#=zY4dbXX!k5_ zzpkN@W3f-tRsn#d55m%rmBkpgb!CpCoNnkO{U&uBvP1|HGbKlzan)O*NftgJk0}3h zzJw8jISV%G6Xca+#nOZd{yuS*D(tWspr_4NE%z{Wx_r@w=uF)nD6USd=gf?{pC`CA zPt-t?gBzL=CZc-okp$r|-|eVHLIJyzYf=F3vSg%aNtHpfx5{ew1GOf%hpcYI(K5j4 zmC))k=1<0AGO;#xW{;~qD?;c9sJ~cQyq8;0^{rPvMmhhx*-IV@raO>eBO$~waP4KN z1@Jlum5A}r%BBoAD)OY1_XxGsPjx_oqz{+ym6zu7L3x7J{jsSt;5g1uU*ZjB)Z7A= zg8J<H^_C}-vZAT~K{QM0<RDR;mG4p1yRBG>B623ORYa2zR2Gib8NPn+2Km&Owy?7p zH+RI{c6+!al(&u1QU4F1zq&A*Vi&~O;zTtQ0@Gvu{@dNIV7(YC8-o6z1I(2RAOwt5 zG~1P{g=S7k-~->{ZvVu|8PHOL1fn}pwfyj{pOA?_9;8y)<i3ws&rfO}xR5Ln{}3%x zE#P7MMfqM(*^?0;kbxD&EAv>v$}PE1M1W<26jzMeK&;kQJ(==dy=f$$TVW2Yc1C+> zCT!y)%&tcs2Et6nI2Hc!XY2tojg7;$mW2l50tDb<m&V*Ca6TAMPETZ@FcF<9N~twQ z*QAsDv-Xk8zN@E%n1}g;3IN#0AtjXJL9t8?ge4tmpEib*SRD;ZK=?i9ZdK=eR@-Y( z$<y?#0i~8g4rNI9^c$R2P_bmsVNm4EJ?UolBKBWo?le-w?xGth3wyS}C6rlms;Yxe zT&=15#-~_=+#|SC;d;zxTF^?PGqv?<gHKYri(@F8mzQOvjk9GK2z8~cvRWEQj`-8a z*PmjS{7SRzKT2q&3VN)<oQZxSweNz)?hN=zhwVJDVTMwf4o^jEBHE&(FI}#(_!k-v z*|7u+CbYlW|H=II%c?I`(P?S~zoYvKU$y+>O@?-mA9)Lb7<x*|@UPv{jzbb%xOQ$J zB@lCGU8?DD4@(3-q877wxXk_iU^FQ%2n$2_HpCyC8oh&~CVW%mH?7quUofc7@Tnu& zVjTxBb^%&ZY?`|9!Kgk^VKcZ<3gpu@W;Y$x`LDQ_|E-B-a`lbRT{TTGW#&kaG))WL zGO_mJqAw(X4mE|2Bt^LQbu`2b`Y-IG<@q3IJrxE<GrVE5sfb>?!$elCKf0|Cri<f5 zv!zO4_uKAGJ+n@eUTx@S8GL<M8_=)chD}eqr$>{PZZqk*K<?+Hbu1R0+87*rnOee9 z+mv&=5d`Sg_p_1)Ywn(4X~4gLnBtrD2*%CYPwGjf%9hq{=Y;u<8{(71r}|8Iz)xC( z-w$ZLwHR6PqWoZm?HI?q9+})I=t3yYQ}EoRKr*8tt>c_5*~nBiBFU-i?lIT}jRp5< z9>DHG?mN<;WVW=3%giqcS8GN*0>7`B3IFhd*Jo<Qr%NqwgK+C6LR{eZn|<AwvqVR~ zpj@wklo^%O-6`M&E(ej(eM|{i%@!CF;A0C_i`6pFUq%ew5M_p%8De6TREPWb`PEa9 z%TYQC&r|t|I=7Oc-@YIh^9?$BQ}{f;Owg5p-e;>3TmCK8UA(TyCH2TqdrXZmi?#Co za&ev9W~MY=kYx-l8bhV(2I1sZk2aEhrC&DX<et+%aOz*4GmY-CUj7lcf%Hjr8x^vn zO2doc|K-;!ROL_eMfAbVQ~p`LaXWT;o4#sU@Far%g9n69<_`KMwL50~UNOOYzTdI! zqe+K!ff}(Oc`<PN#f3ku_sidAZYXjbY`&W(Sks{A&d))Mj5W2kwn{<Ule$tW775K` zWO%$+1${%-CaPBZPH`dzsGsWMZ*9RuTqE1PB&Xx!AGoiM;`A0WLp&6V#?{Hc>3&Cg z!PY;aXhUO-b`U=zpp`pJ=>5}b2F<xwDLV}O@&+q7={89$KSf6;;9B749{x}wD4G*( zft|3P3`t>&Lk}}wTzn=+TCqynl+E%vPq$|Bx*TD+sWRO&|LO<2M~;o?kv#FoH*oqr z&g|b*!hcNaMQBN-(2U8vP4!DM2hJ!-fzP#s>ky-zC*Tt>wF2E?tJh$g-64^VQp9zu z-~C~*?cdkLTSGvt7QGI5(i82<L}!8G3svXCt~#CR9XYOC18{r#$Z>jj?&>pWKUqJf zAhu-jz`O!k6*CpPsj+kXS<2-Oa$7-zwv7qUu=hRAsX^3th@`>BgR9UvWEF|%4Z$H| zcj@eF&jG&uVs2bG)V3-z?{!SZ?+O(Zh4?Ep$15a<{`|({`fsidLl;p!ci1YtIlXEu z>#7Gt#STJ$2syAO&|(>h{oV+S5~x)(h{#nf_m``L?_vY-mWYjy4#ehN7)8M<6on|2 z&=)?`<2MeS0mu_$+X{f7PotYC*)}EiFOHTr_prHN#pu+od%UJbWdD{%M?DoWw;}x4 zyzSjPknua8K>tT0G1cK%LNjxx_y+-IW9sB8HdccPH$4w|r!>9TOEJivUVAFyc$)WF zhZAQi21}t-&z6F8?0kwuzj8h$*esp4PtZMYZ)98#Ae1F$$YBPPt0J_?cM~l_=NJCn zhqkDMs#NH$Ny$`ae3TsI+SLEBPRQpvqMA#1dpMWWe_PL|^dSRJ#}5d(=;2dD#$DtP zDe*dwp6!?DZ#Ild>m|G{b1mhHV{-O1SXt#v8+8~iB>?DDnFxRGeSNJFsy=5Udw%_y z#b5ZOS=IF-$ZwPo!$q<mf3+<xbDB+jqTwrhwUX);+_B=dz~!_yWQ+ew9F6ytNj>#& zK%-k}4ncqMj19vz+So%5mKd4dVJkTYIp2x+IV4pLq!`ZX{pv3mk`cP?qFSz;+rn$6 zL$GtbWXF2Nv)^u*C9X0VEGakJoJABFYUt#9Pj8T&pJtK4bzgUH9M28CINF$i;#T}v z{ZJ6Iw)0II;rPd#kCa)JGOyKQSJ8L4=CL|><VMHv0`Vf>C<%s3Dy{EBxBqNY3kPUm z*L6o{!Vqn7$0Cc#M^fJDv4@Et?^3Z24J2c!2d%v0(>R2?y{?-BBoKB$q9`tDQF!p< zk!hT*$WIKU_1LPH7=Dq|&<^|jF!ngDBURg;>O!D;8sU+<@3$BdYw!))FwUw;v+uoz z&kZI9$fh-~-c^F=;Ny-RikI&DFT<QCArpmbm|0L^e8sdJByh-naR0dV3-)=1F0`{` z!)F6nJIs37NM6=W1CJ)mI2;d#y2|B}e5!F2M~*V)c$1;o8K#hk?G^{?+DGL@5-T>T z4iP7+C6kSLRVzcOmH(=gTV$~GrTJZ1=^Jvb4#R3{gs>}bo+lwJOUx>jAQQZpAO1`b zdJdKKwX`1ewMLM)AZ5l8g2LH^6XfbLR*WFOt~50n?ZJ(MXA9lz4=#3I{Cjjzd9kEa ztOGHA`jgts8i-<a)Rz&0W8`lqy;eCnl-_xk%+X+?7S;rDtQ^o`g(hU8vzWl0#yCPn zlZ{6&HdKZAKLEHuN52QZBUccx761ye^mXB(WK3yUrSGSh+2Mg9F1p*TWtGU9dCBm3 zU3zy(vgOKGSE}pRzO8=v;YM})77B)B3<?W>rESpRaq=Tgr3|S~<zX)qEMVCP3Y+2= zQu1L4y71>)0wbk=xa;{QJN&72GZTHk(fsI<-<H?wecs*Y1}*^vKEm4evV0T)j{LUx z*SFo}+X9|u>AsgWvB7$;j(I(K>V$5uepM$l{m8QsuV`u0($djtkCr?6k|Z@!bcT(K z<V$DS4UhcUr01nNvhj0jYJpe|ln?YU>J<%Pn=XT|@B&x+$?OcyeLs@y^tb)-%P03f zWO(}LciOQ5y2K;DNfH3g5*{(~Z!dkac`;{zO4}dD!IrF#=tx;+Bv8~AwU=UXaY4(V zbi=KF6O<TcB|JO9@w~>ai1H^D(^>a696b01SuMH-13iYX@jgbpXA(u_(Njktu0>$W z=?)G&pr^aE?wR};9nt|M;3`<^Asn20%a9Am7S9x<d^MZvC4>B6zy}-oi@fq|1~|$e zXhZhO#XpZ=<2dh0ALosXVZYX)7Y_NZ3I-^+Kge=M?z?wl281-h$K!X9;gsy95Dgb8 zC?FCt!usD3((l)O4`B&RO^?i-)BcISK7_Qb8%doq(JK1+(ZhdI9gjaNua2c#<uX)G zcMelFFaMdAkBpaYlZ1J8d~3O0H!rjRdU9k)b~G@N&Y0HNqC{|e_0eNTd_vRfufJBk zrsoxHu0DSJcy-{w{%Y55b!@e{kE3DTZ>8Xz7|j?X?tF?4cdnsJ9*m|H6YWr;MSg91 zo3Mml-OiE;+bOLcp@fp=Ad~)Cz71`{-4~}nEHT>FE8&AGJX(2m*%S(tY40g<k*G<Q zv|<#|Yn@r=%%dZCxvPWUhofXC*iWI3L?{<3bHz<%0vqKbe(OvVJ9BK{Iy`&>9vIV| zbtI#J6N6Rbu}{ydNu$Smojxe}B)DxCa@zSIzvbzaiFNw9Hchfw*VdLHSHrA}@U7g< zU<@A_2)+!D!I_Y;usgC>rhr>ENyfxL53<WaexZPH0L0|vls9B^vK+I|oc=U6s?(q* zCiQ4(rIZ;T{2)aIc|sb!q>!Rhjf8m%fMu3WuaI3RQ)r=~?eI)RdbIP2-&#zjpRkXE zBja}VfD$-8Ju>?*Za%pFs{vtK(yLP@>Yx4O<kZOhf2vQdP3g=~mOwTP7Sssm-Upi9 zcnHoLev3Rsi06@g9_e@H5ao37SrU^=Y-kkpsIiHLixI4C?y#aPa7V<uKYrJDM!fyb zIq!>L9si7`$T`AvOe11UokLgB5eiD+%$bToVjWUxXrj?mV@KXhhiudP=&y*^y!*>* z(D!PowBg$`5A8S!)Aoy>A<Db$kGsj6T>dXUxOr3t_;8wve%3PLNW>AJ%)<VO1<g<# z(ekoGhYtCa7S=)Ex^+wE#^3VDB=JCweNQj`C|`aL6c3lPmp=e#U_rCcNq@zE)E$9B z8&F0nD7^Ts@-IOmQHKd4Oorw6y4gW3Wzzc;g4%R;%EY?;N>4N4<jZxj>w1<sYFDuI z8*C?J&<#6LcV*0YC5}AsBdi3L0DU4q;B(Ia#|%N>FqQ^Ey5tQkr^ZcAYL-Hqv{~+S z;K0FZzuEu}+hDMW8PGd-wA_jP8D3UdCm9Zj5#$HP+(!DM58N1s6<K7NW6}%#C9dft zj-J5esB3tw1l`W_8qjngtCfI$m2H3O=7YumvZ}6>9r~+*Z~m}u&qVo+=SFY+U3K}U zH~&w*fpZA^n*2s6MyD=1ckaNq1vv0^93-^6hwccXY@kGd$yn`(a1;Vg^kAfWhep2l z?O*hs2$Tu#j5vN`Nq+k@dNrjHs))lWMCxz)aX&I%QP`%#3F+l#B>equ^1`QSDYF&X zB&6Mnw1Tr2R|19a;IM>QtDOzpTHzlCM`=X)lS^pK+!m_s6=fU0pP*EpoDe%Ys=Fzs zC$!XQMz@LY^)Zj^Wnn~-*^2WY?5e)_;&OHM%C+kIA8uB+Zr-W3=>j~KoRJiYf{&DS zlA?pO>iQC-_-AZU71Sk-3c&D5ryC~`N^s<Wu-eNo-K#5sEmZ<ALg9%f-vd3H;Nl{h z`O@FXQTX;D%pk*+F!_aS!81DK4On0N05KeLd|aJ=-vgw5Z`-#|dG7@KCpi6SPBRq@ zVz6oZ(kI$aapg+&!}m9;JGbv>@In$zG5{I%fY}9-fesSZ<90{kUbdw`yfcGt8Cqne z>{*sq;;hLeGN-bp7#+~sOF*T&oqprBd(|IVd#ue1+09Jox7G5de^VU&XXNa-Zb<7o z!kJMW9;T!7WF7=J>tgTggbze#uDfUbs~<*!EZ7C7&f`77X~nDI5%7#ajg7||TN)8y zSSrIQO)qG@>?>zps@^*HX7%Hryj#8T=Ihnc@naqdpWZ&{5ijo{pi!_gp{C0<hz5nz zL`08h%_(&kE#U#Qa!DJ<%E5!H=?allD3P3-)zy%$TUeX2$VJIZDJPesUep1~n;)8b z;4&{TtcxDih#_ajb0W+B{rkNvZCoclVeV*+Gb4zsrzVQ`S7^55o;FfacNo279d^6U z1YOiB=!s53_70%MGa4BN1f2xg7~;n4M~p~1egqA{8|uhY|5HfAJ54t;ktNaD>sA6$ zTOT`l*XMSn4*mq6`Bgy?T43PqR${==`5#wXLA$WHxTwL4eZB{W8EIq@_ukym!vGbA z+q3aEX3L6LdI=0|5Rw8Jg1iYhrDFNv)FPhVp?rW-G_{G6&)Q8!OndDyJIIHXz_z1W z?(|bFclzbSAUAt>H#1S4)3T;7|C)a2j?*?sZEr?wAlS`;e?FQ3ck;@T6bs)H9D=yj zA!Ip|JXwdI%EZ{%l$Xw=B7x$-y%8sLR|K;WENR-lV_KcoQdPh$Ctu*g5lumKD$~DC zTW~dy-K)QdpSf!w@f~261NH!|5UU5~S$$+a!VXFX)6?&(Ohw_j<4$M&-u=5O6y0b$ zG7&+F;{LAMZ7u_xnVI%dCzJ|)$LVQKf|}Fj;rZ(G&n{Qju3fLLU%y^`_uY5ZgIiKU zsR#U#wA?5bn5bisz85@|O4rmeM{t}Nfov2BehNa{KS|pS{?2qIu(eCz(KsS`D#{G* zN|SifFTXRqv3q&44-Nrf9#5!(PZmMURx^OKV@5|+bJCM!3rEOu2hJ|dP_Pv0lTR*r zmg4*GzSoIQx>QpG7?N0M1R?^306X0%8s*#R%8ekyOQwju@?B_&pzb|fB|r^P|M8qo zclu{{hKsc4OU;&7Cgw)J{2lS{j^|tKU22b70v`3%=yQ>^j*h@(hJqz8a`m9}2)2BP z#|SYq5WvT=p#jT`0kaV-QOY|b*c)+7N4#=x1UFf~aQFo)5i?pwFL^5f06+jqL_t(a zGtDTJU?BqePxmqQNNDsKTm&h=PoWeyibhR$?dT!5_XC(9F|FQkzG^%La5+Td)56zy zK5ti)8)eiYz9C{o8Y82;**C#jWy+q>ys>Ti;r07@O|)i!Y=nPoe59J&HCG*#9~<Hi z96V4hEgi2uJpWPk-h1y?7cX8EsAi5z6n-OSC^+sh@U#4_%z`PM{QV%Ex)i^)B8v`a z!4QTszKdd^j|ZX|gUYh<k7<zZ)s?^&DS^T?kCfY#q08gKdyVP+>WA(PZDIxY5=so& z?$`%3GK&jJ9i-4P4JOUc&wB3!hY}oC8?m%>ta|_b532Wm{a$tP<4>wDFMnBm`|Y<@ zBtja*O!c_%sMT;Afv~uDkNzj=Nv_D{S?nSxkURAZJj<t&0Ks);cuGJuW(WO9EqD6k z!$Z~cr$pnjTi48v9sbwEu76G?5K?377R6BKoX#GS9IGu*Q`jPK!yP|kz!QadmeVP( z-GQWG7}e4yMzVM8++OWo*ySStxvl!_*)!Ey?Ta{b_Lb_yi4(q%ZrASFYC>yg>zk`V ztv@zv)2Xc$3Ht_}PFv)73Y*r*ChhY1SXLWH+r2t6%4hwI()Lf0G+?K@MOA4~8=r)s zO!as<n@0HL?Typq$sjbka!R4IL+w6G;U;u4%XaN~nVr?lgl^L2hFg}f@vz)!To0EC z64x88*+XH4mESh-)xTd<CHX6$WvB<3$Q~VnLJMHV8xW4x7uONj<rQ?AKo?*kHfd>R zkxo^4y3?GpfI9o}N}w>&<3%p9+Ld#Sh*ph)n%@QpcjKq;_>aVJOU{gHz+y@pw0)wS z_G!)NWI6WNO=-Z%H)u<?jOqlaF)d>vK1(c-EgrzqHzs5b{3Us%cBD5fVBEe)Zls(E z-$#9y1bg!Ns5m<Khm^pH$<f*WSC`p+@DR978@!cgCPsA8&EL>3o1C_3f8@=OvD_$| zN<-S@%^giTo8`$c)~(WiW8LZPJGX$;1!&{d_^6(VF`vxAT?L#3#EsP_jvx00blf8` ztIj9Kjxw^15|JC`s4d{k8HubtafGR6PEvvKOa&cF9%#&8K_5@WJS{v=g_t!UfnEwB z>2AAMiXMf=o5qwzoC^bOwA9HbacR{PWz5=RaMNJl*QWS;+Gveo#)*9sC=$DO@2L)I zmg2<8;~qi$;QR;Gg^w;&moHxyq*4)SoXEu{N-Gs!nNaE#%M=9Sxv{dbl5R-+u(3aa z4v0q*`N1)QXAO0H6~74S-dzc7sS*g5czhm6xf+EA9;5<hEjWQ~$8p5+iW!gPSQMv3 zal7KBO7dblGx=NLv;#YJn&06uog}9vPt0teIB~rC;DhtkhaY~VS&EC=q<yLS?6WVb zJKugE@<S=po?wU{`}|^D7rA8_#-2O=lvd1E7`%H8ZwY8@(f!GJkr<87@Y4EBDBH5i zgf6H1TVm&#XHu#i(q~fw65gpOU}K_@p~DwR#z;=UWw=Lx#NTujr*$$1>s(pm$_YS+ zb$d0!|HYSHtd1T%;)~EY5r~oNP#DzMprmMYmOm$}m(zy?Jv9v^XtJVn8Nh@Suzn^= zYW>nDWoU5cdmtI5fUwH%3Up&|hcdzMi}9%`QX16s(&Sd7x;5KTjYBWpFiykIZ?2PK zwRd7n$2_usg5Q4DzyHGCJw8YN;>RCXpMU;^);nLVSnquE=1rf>!m_7(cTo@_D}Hm( zLmGDc?&0Bm6Q!WT${a^$CF%vRo#{%TD}g63fx>JLMFgiNY})Ne=IFME-E}Nx<z$fm z$QjERp+P1XM&gK>2%hbl<(}8_O70tCndO2mFlC?JZr!TAW5<r_%P+q44ca$u+|be0 zw>9X&OoikYBCVtYe!fTULo00$$^|x5bY{p)V1|C>H}^jNQ$tSYGa+wFE_2#7cK8oT zH2juIbdYp;CI#IgeX<g;kd>6pP935g0m~>3hK?hn)9j6iQEK)_-1i9^oZK_UOvLOC z-B7)|I&$=|modHZ<{Q=9Z=dsVug8{-=@g&^ZLr&+(Qk0j35+$Z%xs`ousjMuAGA18 zlD5f?WhgVT^r?iDR)@;=G^$%PGT=_v!)(*xRxl`f?(fnN(q1;Sx@nHax$O%;j}fQJ z&*a<YB>;PtqSd!&p_mOSGeU8H1g$hCIst)W#CL-1Q3JnU$NL^UbkL`>usnfq?x(ng zGQm0Wde~!w8CAVPG4by!g(mBvZ3u!UzoK69Wh11(43~+r4|<_3pF(AuT>ohNaNP~q z!}S|>)U2%pRGEYE1)lZ1ZG)xF4@FoN<Yon<=slG$2arGsdM|y_(n{K&35{NGG&P&F z_wC<XEiNqjI9ZMwM>*goZSKI~1gMZBN=%IzDf5l&0uQprvlMRQo<xo~7tUwNR%boC z5;(nmboL+Iynp@UXP3lqV&0N76Zao%`<wbXlEa4cm+7dgOTe8mOWN>CL5?yJ{j~B^ zB9QU4iKQ=e{-<;o!LB`X)!zLJ-UG3;#3@auD{L-0+r4L(My_>pwG@uJ-Kk`9)0;a~ zY@BN?V=4`hX(M?(K}9%{iXbOOwLqCr;ePygq^0<o&`PLkz?A^j*<VYBDD!Aa`)P^H z@n&Ta4Q`&cL^%@AO8^MdZ)7;V7)8YRw+v@|dzsXjerN8Y*r_@(UoA+1M6uv9DrT!# z-uCf@i(dM4RWlXeX=wtdvY0~GFOw0)t^^_t2mplo*Rtj9&VmEGS62dE2|S$=DE#)s z$Y54*$!^Js25lpiaKYOQTEX)?_|=pYSui#+Qtcew?&Y-1fHO0(xUirlmb<IHi+e3= z&T9$O$6EgMweF{2hQg;lIepp}Fe;5g5b`bj8mc<iP?x~A(!X3BYAT-raa(R?Leo%x zLFM>Io<Ui5D4%5sNLVAxeeQO>ewFp4j6TO&dF~pxtJ5)<kzhj`H<+?9?%*MAuRdM9 z{^o1dkAC#F?u~fM_eUJoUJ0h9Sy#`7-Dog)Bh+KY1Ao%6FQ*BWjda<N(5TR|SgCLm zAR=iP+&E-|6XA8k^AyU-xJnuiMOSEiDBQCIco?meA?Xh+B$c+O`?X6#<$sUgU;mW3 zH!bS-!OhaAd)!E?-^qJyK*#T=Fn99x?WJpKpffQ>0Jm?St`_#}@!9b-{#;IlKlSP6 zjhh-p)RF`t;G6WlpTeX@{qybWN`rcUGV8xgkc0;2NeI@>P}UID{}h7S^jeXou)CRw zb^E!xgw5Yp%*A7c)xsW7i+gHyyDl#)$0BnW(C80yy$|HHIrlV63Ewv~C<e3;Q?MSy zDl#tQ5|`d_i?)_O=@#wXI!2Zm3ht-iDA{ox4nb683p1e1Y#=g_FTPz{a*XfEiAl>M z%aww^pVWtcXYSH|c#IC>iArGm^vK+vn-8x2ohQPw!6I)dWn!T^eDL1Lw*OhbQLca3 zU_aN^C6@*S>057HQwNexzSo>8Fgkd2<3a$>&+qar)$D^vMdH=h&&d5^wX}51VY9Q- znv#y`WCS~nf^B07x6^gn*+~=}pfn_{CqiS{RdgsDIFN$J4NoKlhSn3XYkixXfxrV= z8v~R0%CQEbdKR8-^7_aLGNE&D!Y*Gr>e)#z`JqhfxQgn%6a_{6KKcNbpHsG~jF+l0 z)!}a`8#MSRowK^xmfN$r<#uv%%F5`N8hsRtZA5h1g+SrsGwT3pXaio<oTO2dp~w^h z2WM<ue6!TZOZzFrlq~woJV8b~Wnx`^sxHyhOQ2nS2e}oyU7eRBEApcq&=UcfBVLyx zA*=Aa#fiS)i;PI9jJ{!c200jrV(%UDWvBK`%<hzYDYs`c6V7Q+ES==kr%^6E5<bhX zGFV32Hl{FSjN7-i{BdFrdqG@HV4wS8al7y*EP=OY9?brgAFAs*A9!n+Eu~D1kInyM z{j7Vp#!tJsa*2S(M29do*2e9jQH2?erdePlhbiTyrKRfSS6;5(dh5;V+&gb+HsX!y z)aeu6Gr@XRMvajAo>dlZ@bl0J_=F8ciuA|2Rs=cgSR*~`RAh)mCo^VDfOBIYp|21l zq!a493Bm{80mjgV!1b`l2uj=4AS(@9e`Ev56aQ6dXfQoX7i60h5~&>}#r#gYc-xX+ z{`T&m%agV>8`;<^p|a+56#aJY{3}j|vj+zMG~W9H4t_itaC?@bTyn=PxBK_)*M5q< zRx+$0s*z`J22ngiq8TuEG>jo$ZttB*(IA}E8_$fiVAkIWr%)FCPob<SCV?n3<>`)w zUH@OMqo65);N0eWHCKO4udDbVB-D4Cu;G;$xQbZJRB+TQGQoIhGsNq;UyG>3L>2^} z$wt0NIhfGNayvCx!3^l$a*H;bvyoGGxa1C;f@R+Y?G3XOdAE*9a*E+v`CaF(1v1F5 z72G+Wb_tB!AKmt^-@1S8FFtL=!-{XqC=+v|NB#r-2><@D{tz8qtCxV}tAs2tMLg>R z0gjMIF_@Z~_VN@iDC5TJvuDm~WA&@PGvf4%C#%Cp*&7i{nivg2V250$L9o=fUO*?) z{t9Nf6AcG0(h0>Nmed3>Cdds(yr8c{2cGq{i7b-~kY#UUineQ6*uy=7{#D^zctP)~ zaL+KXojp_1PfmWP-J&JnRhn`XRn0~2&bvJ0_l$_OTb+VvoTVi4TjXypuq=*f@b#_V z3x#81a<tm6QN!6;oyg*wv*)y#a;NU3V9COy>luxFj372A02(*Hb;%@@@Y}nCA$L3P zt!%B6)0COQQd^6=kQ2oiADuE$3Z=7#sRSOCpW0PA^U>?q`f54Nx%#%euq;=~@$WC> zM#>eUA#Va8C~V?^g8_>X@6Vgl-8bydn%SxQDYOiV10GNy#(6v&I&NHS*5*P@OOq5@ znSoVpsA)f|0(XJWrUVwJM&>`c_2AmScsA&V3+on9CQeRHjokZP75$dna6VjBZmraW zFivRXXozV#h|B<JWJrH>0J$uPV_vyG;EmT`ug;x&vwBm{nKLg}$BrG*Y=qXR>Vzf~ zg&4UOR^cm)Qru7==<77pAmpBjTuMb7;f4YrJ$B<)2(+T1h9%&mfe~aqG9LKx8EjS# z84Ta!yOzk%?Z%}i=DK{;<kpTtMt-MV=%wqMhW#+1AcP{x@&L*nzuYGQxVy{BGv)44 z!%V`c;<v_`zl)2<-x1e}#e|L#*77IzP%u-mpgTzzRpc_f*gsL~p+*(K6Q<Ns>JT33 zUDuQX_Drp;mF-02XT<<N5f%Rp0CbWE{Ria*-r(W(ZNEARjirM;v-9O-ZK64TL5I7^ zxIOJvf;+1#f#+QUb^U`i@&orEQ}Z%`$a?XFcpMoMGZ4u6a<ZF8pF;Mq1lKaiX{78? zTfldwCEN@!NMu=QU{+#I2S4mB@`X*?C>89{U_S*j<H(wt=0WtX=$9E?5#T8WWab`* z?s?JkFgl)V_#eCVVDZ1Gsw;6U;B!s-`6jj{I@fcfxBs?^b?W&R?Xaa54ByZ8Yh~}I zvn07_B)yn2+?{N)POy+mbh;oSP6$|g^t>8ebw{R_zThbxGx>!ejwLA^wdeaHbj0V; zqerWyr6tcw9M#6^0|yRhqZ{XYYfr@Zw(1@PKuUQK@GNl(>XI0J1)&CncGAPo0zJvJ zP0a8x9I!MLpmLN}=eC^}!Uq^I^|WCFU{>~WstQg5`yn&D-~ai3ub96c^7wFRwCwnu z!Z(0prXi-0s2!d`5<u^7Ay~kvKl%-`Zbl0HUJBw-y!vOSNKiWUyH80`otoONyGf>f zgZ3Vs`n5~PJ+f(^MxP6*zWCyDb@l2uIzRpg-A{2VmMX9Wf<$DZ=JKKRpsy4Hc_C43 z(`^3|$w3(gpiC1K-;P<Fwv4gh!y~?(XdRw@>YO}~0+u+7x4{w?Vr7DgGJ9vA@U5M8 z0Gr5qL%Of71fE3+P}`PO+Z7V(shRDM8c8~2x5HcbayC>Af_PX@34;d94mnc35E!zh zKw%YrasY7!Fg`U_&5mn-mJR@!)!jF{7bIUKV|MG5xtUqrs;v{}Qoelu-48yt+LzjC zKqZwHw>iQk^(1I_p@?gXO;TZkmYPO+)^f+Pr^G2Ti8zTHcf<>6z;_rYQpzIS8B*uB z7BZv{OevEZaML@c=zm_jSN-wLp3_aQOw5cO{fRi?k8SoJa`pW63xNiDE$p3w5!)gI zfkS^pb_kphJb@LV6zRG1<Wb|;Q$RSEi!r*BG9`snd<#2qZIKenLty1dP|_OH8gw?V zF-6Q7-p7s|t&X2KUY$D0Ql=wX=f2Mh#*`EdHdiY-r{(qXB%87<NoZ*lq>DkwCVh76 zW3;9@d;+j>2U-Ysh@*S$e#t<cZUpzeOQb+rr`-qikWX-A<_3YT7B&d}Df+E7=^75l z^88TRx$l9x5C&iUS?QCHz42)qef4+<cl;Ni-f)8wUgAtlY}4rBj7AbiecLVdj*<Bb z7e21epZ~DB@R4r1z4%G><(FSo_rAO1HO^EtQ&H%Og9Df)sVlTQ1mqH9<%r=*#WMe> zzSlHDUJ?VaJ0=j9v4h_T!Y@FZur^%42!$^7L!q!K`NSQuT5+8gI7tKlc-NhU62o}9 zS62ehu>@Mx_OVl~#fSw2^*gX;TL5DC*lkvEQ{`*r0zV-c8A+ZgF$!^oTLcv0z}ApT z1is=p*_qKDo;{zDoY{9^ua7YQNb=>vM<45`YT0_e{_1NFSlrT}#Xaw@P<yHw653Q| zQjJ?UnaD7of?tW@Pd;&nY_X^F<eBtB6SFT2x<#8zu9YwLh{?nWd3Nem=fLje@+RSA zD}UgLD5X$Z!CS=n$LNQCd-uXW+RXXg^vcBOg9raRth1Sa#5L!w2(*593!Hw>o^Of| z0b;RW;dI})!k_pOH@q5QWpLneFp>jo*!FcCy&^JE%dZ3+xD;0CrH{q5^3;@0-O-5f z!or^F;KBX6eC~*EuU<NS%<jE=_i9-RC-LaYW2C1|;BjZuUQW1#$x5)=Cp>~)c@}U4 za@+KNm5>3bd*k&1v=PcpXkRjY5UYI-q-eDW&o}Im$?K00b*Z;J8yNpy&1X;EXwV62 z_s4tcT|zs4ENkF*NOUNq6KbqS$9Cu#VQx_0>AOj|<Zw~9XfNm@L~hppST|`il6dXf z^|C}kGZbDP5nQnCfe`6O1~;@oGgUm!t`FXT9Z)=iEojWcKWAQyz>%pfeWvDb!ZKX8 z{nIaUW&9`<jA$lk54u*o#9J3giNN>3xIKuvkFEqZNC{*Gr&8l?D)>rrCo|R?p1xrt zf9hqk;-!#eVjb)9?8lRA(Le<=6+33Od%yx2!v(8*C1a2;%u;-E@ly5m*I!rPT)nRQ zZ@#N;-{R6c<cCvG8l;m?vL<2VM1Pq*@+D9F4bL}50PR^9=PBU~LyR<X*Z7R71SCue zm#o5v^tZ6tMn6>fKe(C8Ak@xHn!~xVBY#F&`?oe}_8vW3tMKzGK~5(|E08w`97bYd zR1^O=#fbIep-_M;;Vf~0*NE(hdSw<+5-;~PReMjPuLxOi2&5Q<5aK5k3Iy$#1nsn@ zf?2bEQu`v#zIvuQ_x4-W8@e~*rB`0GBC%&-ceQ=zw2#``=204<5s7|;yTPC745uCC zGn}-oKUJ<-A|vg`p(qrKrfsV$UcrmiYWfsRZB!MtgWqRN8~(R%-yTb!q}Xyt#hhl! zc4$8Zvll3?@B(+9m^W0{trCE@B!>-8#I4%F7w`f1n3yk0c%JG)7*FKAvE*t@!QFTi z*D`-R^1+$z1XMcaLDD0f?@F^Xv(=F!hkb*5?3tJ?;h+#eMz@_GHApzRcUJ;KUjpsA zi@X1Mv<%Rl=k&L1=VH@#@QhiH*-MNp+Eq@Ko1B`|{;U}-t7O^JZrdDP&3-N7<b5}| z!Fx}82;+pg)*U-ax0V<J^dGj9qm$3_&}hG%yaIeot!5*bkpPV4z1gle3=Xu6@q{zp zz49UiW&mcI10uB%Y-ab&)acwzo$mAxH)|$0u`;1e*W2#>J^gT-e)eVUl@sn?{vc!q z`8R&0GX<0d2m;BDR??vmFtU-GkiDb>up(o?M>K?3h&cixP$JEKal<hit4Dl`C`+0U zriayuIeq$6b@uF8J!iDJ`jzUq6pI4~_WKeb_D^uClSgt%L{Cr{DLF6U(V}_yoXg8~ z_-Nc{6y?v3o$e+NZJ%^!-D#lGg`&Vxy9tdVQa5SvQ6hMl72`blX&o=?x`<N2`er>; zbFk(Tzt9T`V`Q>4>?qfTCxGRY7wQBJdX8?I7RSkmeKz&KHpN|g;b0&DyZ=f55+o}K zH}Rb^;qvHST?ssD35cU%c(EHi?LUul$qQapPz)64Tgn7&7)QvmRF{+Fc1o_yYDS)u zpBTiL(j7P`9L&}emnBG?_=G}%0cRs;kS1jS#bE|%UKT_V$MGbyOcSw$yR8H%powSM z0mAgE9gSzn8$kR8a2qb;ZW;RzX*2eJzF9Y8Z(3zyZgl5wtBSt7Wvc0_8Esg(AMDXs zJA|SIpCk=&Q5?8!I&59CBO%8+&bm`C7~rEb6ap0)!;AwkoUQ~Sl!*KH?|M|0a4%`n zNjeLfaX4|}c=hhPKho{h@A#<KQ>RW=FC5lUui9XZ62VBZ(?byYVH_Bon*HF^CukMY z5R&~RFkIgofyUt~vB#uFRWS@TB~7}6UwV8ML@0d#RWZ9GTpKAhT8JXCu&_`aJaACw z$Lnqi)m@HxysM)f<5U*ipev=qms6=O=1Afl)p^dW_sm_^Ul_n$0C*=l3wc>%($o+D zEc7JJVf#CR99n?F?e$)%I0(q!0M`)=9-r`R@NG9U5yjHIyApVm5`dkN>$G_x-|+y0 zUSci%x0W`BKXPVN@XTCJ=v29#J7Sh%@7{fuGd@*rVq6D4+^KGrQ=e$(xa2PGLm~mS zyOKE!)TODV10)ohtl(JYC`M_kJ)_D12GkW;MJQ;}Ca7QpMxpTqSn)_-ujvYif@CXN zV>(szEgcoh#mSq_Y|2sl-4jR7sD1tuo9@?oq71>v!SIiU22qC~M9|Q&VT2R`gCED^ zg*dU$LGZ}fEvMIh1J4?8hsAny;`%R0Dhfp?7AO~7D#yMEj(a_H=wNm7)QRe~*IuiR zEgkhN1fw+5+b4ZWQ%TY^SyZJ^G$lcEvt*+rSi(AME0#d11MRBdYTJ0&#Ve|FFb!_` z)$J)or*8%aCr6m27}x0G4%gdVyLV~EVuuxs9U4j8rQ6sqUHr8A=E^m#bH44ypUDbo zyPz;0&&VkaD;45_2V%Hbg3wZi1DY6pCW(cs3Zd9i5**?sOL7rp<5cCs4|hHh+P%9H z=t|&emOv;H*-;nctG&{Im)I^iRB5?QtQpiC$&2=IO0%FmJ9cib=I7?MKTD^{&CJHq zC%N~0aK5^9=~8v&>#Nnx8#iL`0wqH2G)jr(0Qh0^MhNiHd^u^g(uITvmJ1;n45(Mg zmi)p7VMgFHzC#Mhzu*9}Gj$343Hqm3Zh!oX+GmqEHl;ElMdEk#`<Qh$$?vp|*$5%T zXa~zIQke+ZQv`{qOF`-I6fpSP4UWLWD2bI41f7IU%ur}_S2G%Hoc5g&IxUCUh?6>@ z>GX@IDvo;P1Rc)fp4296)}?z!Lmjd@J^k7Uu^4Y{gd8&#HX%vF-MzP52~an}G<7z< zU2#fSfk}{76f4lwF#LFcakyT#)$mKPp45FNd$cT%5yjn7Dvqe`o`3&*^|RmmMfHK~ zPe1uoN6B9GtQkxBSfdO-_;M=ku~0<)kE@PPcvSI+A8rU%GZz(mF$$ThT0O)WGJI-+ z3*m+69$e{{1<(`NeRL(zmB15}0Bxa{G1B(Q9ZQ1YYjJn79{9z6aG=KFBm;sM#{|H^ zN@F^qaQE(cFQ+`Hfwt49PwPav^VQFP_Veo3zkW}rKYdhvrBk2o-?~-Zm%JDkd@2*h z%Uu{k>`ONhJSn_nM;i?xMb2UCD_%HOGKF~X6@{WVQaf`i;n*_%+e-iR_-4!Trd#GT zH*(}ZROSEoHro&N)bbOuX?1jcyw5Z!9VHBc2;qX5v482|<VG&7+_YlBk#`v2kS_=- zIrSiLq)<qyAS%LfyUy|7B>{QhkZ!L&u~fbM^2^n0ufJBk`q~-059^{VHn>hrha$lS zYvU3+@L<5@G#r4~CY|tO36^DCMskedd_^9HleUdZ6%{XyE1^EpZu=K^e~`T0?mAe3 z$wS4C`mI0(Q4hzZNU+{HH&D)K<0Q-Ryst+~6UOzhG|!Ke2YBVKE~$ctSf=MCgI3-j zRJXN^!OBEb@KtIsM5k$Ip!nCp876z#tV9hIhzbu!Q9WqwnaE4)+8eMHC8MXE<S1a7 zR~^<lx)RtTB_RH;2PNPMwM(?C?!>DIQjR3AAag7efGvS=(uCy4%#4mlmt2|GtS3t> zr?g>va&ppx7|4}T9+nZ8cAIoLSq@{dMIzBC2H)yCyb3)EGhIoHW9BObAm42OV=z#( zWAPowS|?oEiEB&RyQa3yeXiwB|7<hmezPePBhw>uzpEc;d^7z>PbDwne+1Fm{%ZNs zhzi9=xM2_!UgAUt#}H+-gN{8gk{1$VUcbqDa%K_e^goaiQTjvxc!ptm`;?c4ES)&! zjn(hG^LF+2J8xC5zIwJ=I=<v1I62uuV<}1>MW*CHX&9FUvXq5dVMu}P413u~BiNvR zxJ}SH+%#@X>S)Ax`pruIf@=k39rCE2mJoPkParhbs(R5b0}r1Re`Y7ByKJ1?r;8Q2 zNO5uRqAtCg_beQ3IXB$ixpUh}dUP}tUyVM>#U0;%tNT^>E1eFZwjrs;<QH~%T>a%H zk>cy1`l|(-acY|!6l3Mz$UHL`r#ba26O6Kwmg1xW(j;a?<e@WN32em@FgMYeSLSI$ zLy2ICFoRs;3;DUTZ$NQMvXbOVDjO&j#N|E-9@<afMz)Rlpb})tqE0*9EBV63cT-bS zZg<&0&7Q4WnyEn6L>y*Bd19He=@5THOV1-eljI+*aSi?rMNG}(;fCk=>-8TTd#m}X zsQ=ZQ53c=Z%J;(xcEc3Srcx&6N00mu`eokPFs1(-2@R%RYk~-XUgM6Aq*=^TAOt1N zEGQ6?Ds_cfbcjn(BoI&*QjCnKgQ2a^5~A85rX@;~nqk<f^`9K)`oar`ye9(Xf#>X5 zozisTM73X?uemv0<TJssnQ)xakR3Ql8oY%@oPH2~@Mgd|6qtl-93|rLS#Dg0kE~5Z zQC5hw*OoOm=Is5ELQ4(9Q0H79Wk+LAc+@?9M>+zdV<S3!WkREfI+2C7&f4$8ehM1< z3HfsbqdN>`IbI$baPQt-?=_;q=YRtz)~dfy-)o9bAubzn+X-x&m!5&M5(x<AL=^df zhhqcwk%u1*TNBpc3s>`9gLICr1h!HMAQ#kjwg(50863fC*#U1NSc<^~Cn8n|3gsdK zL&oS1oQX;AGh~K>%Uox4_=9IEG?2k81~MuRaNs05mQ@w31*ub0npPw-Es`j*EK*zT z4F+Q=c7CT#+ziLv8I{1e2ELC<q4?XIr8G8;GBI1duv=XE*Yv~C%k50N1l%7;W=;kl zWVa(VZiE~&0~nvwMCYamhY)}&bajR}GLxe$=>TDTqoz-2x~s4IRwOv3X<mCD4!)rE zo-dxR-hAr~%|yIiojdnd_0r2PRR<0p@U$%>C->BGyT?W{{f%mr7e%DG>66i6J-(|V zMn*$ODk%$NV$r#a_^3D=p`*SLXymuuN``uNM>o!L0+UA-RX6h_GJY=<0Pct2R3_T| zX#Q!7nPK3RGHN0tin=dFOZr%zuv?>toJJOh2~4|z=ZHr}5!pXMLk<tb(gpTaP?rOH zmVGD;%~!gxliTf=A89*u5dYTz4Jv~nK%`8lqjE$`4w;=edhAFwt9vIBzw7OQ=t)Tg z4FqV?>Req3Y{C*S3wcnjblB;*>o3};kQ2xb<V2bX=V;bYGJIMgvPLj~8G{hB<QLS$ zL|!mR!C=Mw{JaP2*ta#KW2<8pLUKzukYmW1SVBp=&c%6zHG?9^JmihQqd7HU`dHNv zzS6U5#H||m>g0o&|K?V8{l;b}fK9UjTg>*i#88_?IeNO4D}_MXD`6+R5orBTgyyuX zJL&2yA#@NpzL3r%9?`i9VZ^c|_LS;)JC=KBbe7vZ4<0<I&d9N9X=$lCuBA+e4<FV{ z#C~^H*j$ad<4#y80^rEyQKS_VB8o%c5gy$&iCDQYaT*1_irc&#*1ftCc=QrTzQ8WZ zD@dqs4$@0*X5Z*oyQ|>NfALq?_yl*Suy;ZiQq9od&-rw+1uacjSlpwHlzXa=KDtnS z@%iQI`t|G8o!fU^@8dKy8h!Xlh>WsMxDX+0O@?^wrxnThP#D3HsR+d1e(~A8yAtS1 z;1No|yps%MCKGpsUGtfO+hCqJWB>uU0vc^wiI0pS0`XY-<kbKZUOpM}Wv7-qvGhr@ zWzT|@iwhrKs6PAj^Xl`@Kd&xdzFd8)TeMMDNPt_kL5Su3j&3x`Bk7s4;>Hh?e(}}4 zAFBj3HaqgSv}ofuA1n5dMcNdd?_CowysFOQZ>em%8a}Xs(Ye7qUhyEbz`#BU&pOD% z=j3yTLz%H)WCOwD8+^6i`>w)>#b#5MH0{=srejM-s@LCmt$OE2Z&&aB_($4g{i>9T zqwYv?0T{CnjKH80=9*3v5%yeo83}@oEMztie&s>Qsr{jZj$EPJFrqI@LBT_7ptUnY zRs#A-yqt+TP6J;a*EhnbgQ|bNZ$+~YR=64IlOOdNo}oU+(gsyaV40;*o#z-?);aIr zf511qZ{HD@FETrE^X5&jb-sQ3mX|5iHA9ZtokY0EdVT9sOmEwI^(=A1GoKQ}aJUP< z6}z69(CkDvGf~Q_v$_&^SP7V)crmLG@`EU}M@{<`vz^Eg&wdJAUHoXr;6MFiLdL{w z1Z+z)hY4AOyb0OD@+M{}7{KEeZ7UVK_f*?;>^gTrxt(S<#P>VJAcdPAy)4htmaMXW zB%`-8Q@+}6y!amU6!6X(R02n~kI($goA<6?9u&Bd{5HkR#Ql3Ce^Z6tU$ZyT@9-RG z&EiSBon(<nZLbyGA=qNcMJt}rGK#`d4SYH3mD@TwrD@-Rh3fFpL)FrWqdw~O`0?Y_ z(W6HcrXw_U>O@Sv#s~?cA_!TGw`GJ&2S71P5dxM`UqB2cNoQf_50B$SXAc;_93J?L zs(W=M@Q5YgI;2K=o7NZHb7z3M>gwe>NWHWYSgKjm_$m&8r9RW}=TZjt0x?Umb9UM@ za=WyFl06A5d)l*Sk2h(b|KP*wlTR*HSFe2I`zg5P)=ZEntrYNK3UEBWY0=q}2t+$W z26%k@UCgcowr~l+J$~RP9*pD#ZCx!piZ_t7f(8-qg}2^#wLAAM_y}|q4OB>>Q2WcV zu-kRO$xhv(&HWU+rBtv{o25_4nh$l1?5CGLt-jX%6hHj%gO)zs5oyf!3mZI7dito7 z2@iP&ZIN2O2l=(b8Z7DC*)D-?rT=<rqnF2qpP85&J@W7BNBGkl{fBtA^jl<=Bvxbk z!3>YDXCOk#=tBa>o%`63&8Tb63@~GXf-tAerYvWA@ugGMTj$=ae)Bi~Q1#BcZ&xQy z9`ojEHlj{UvN=q&<zvAa3JG{vM@q`bF0bhn9D~C)^wQ)Xaq$eHo6D;_dMw{q3rhYm ztL5DQ>;AG3Uw0}x0#+>n)l=$SR;OBt7GIP#b<zJ85>(*es#yNV2~E^dW-QDzB_WnF zu|I-YiUZ;sZqjDff;6~A`^L>1nx(j1<0TsHeHa|&qw!3iI;htp<Mi903W@_ad=^hP zGZ7`yy}J^4q!KV|27ki)p-f1IAV&(n;?LfzXuk^oDT=vMFxie-4}l#WS5yF?Z^xre zrft?=;+4aLb<9TW*uJA$Tv+sFu>1Dy(~QNul@4YnZrr%3=Y~&w;?``F<(IILUY+4| z_1gfXUk%(j)>Z<$r$**}p`&7de{JBy3AGt!CjQcJ7VQvG1&<f`lp_sh`xHnBfqDcY zJ3kqLApGL{fdr2wjr#8+jEwS+Tb(18ByoE+m&>6@EFD|YOvK6R#aB*Oubh2R$73!? zc*S&Xbf%h3(Lxi3wCKE8f<?N7S!ocx_I7xH*Fw{u(Adz8EDXHG(F8^0?%kEZBb0#a zlU~?$yGe!2Iv16#`8MuS=}L#(UUIi_P`4RHWJ%z-6!G0!ju5jGbFmakjsCBH`JUE0 ze^!0}-S-+rys4QAj(RMOzLD~RfL2FBNwcg1rg3_Nnw+3XIgx*4CVU7Fcu+Yz5e)Js z&x&I_L^7Nq^^sTrPE&yLv$MMr*n%Yhha@LF5dS1Ux+s!uiXCwA5pbap0L!3WgzE!5 zc>2|}(Rewv67J2{le+sxgLgAJA(745EPZ0n7R#PE5Mrk`X<xjkSx{Z5`NQ`=XfFkW zc_=raSBfPAu_7VUb;5OW5eBII6FzAPDCax#lo3NF6@aa4(U1M#Hgfhi^vuNk*pWY{ z!v7N+`3HC&w8Pxl=?;+-g39YGS)*y0K!`+;IGaEG0xI6bk68e4<xD|P51vtNoMwr} z3x{8*UVi1}>PPRqqrDOD__U@|r;qDo37vhdBVk9ZOfb^oL`&MG6yybN(#bXIz_ErD z{~lvNfNQx`BY{@Omu<QUaW?vq^k94{A5JgRZQ1?E*9zAkulruF5=cH!`qZ!T+v4Ug zM-E+g<(G!vIVvx8G5E%fJ9RpNK*_fh@~ju!&%zOphjh#Bp@WCKG=Xns0a@>SOZzC; zS7DxnhVmp`*ig(2AET8h@1!3ipO8cz*x$hu(|w^w5KH`Tnu2uVfsH`|mM0$NL?<qi z)KZDapMVwKX0h_6c*f*6SUS^{z(y#6<fpWg=KNl(o$<=JTj9IHukb^#hrvR2Xs}HT z7yBlXuN7S2Y&jaPVmvqzGAY{2h!^bEa>K|n5(SzCovL<7fnd;LadEHh*|{07Du9<c zn)<FDGd1azHOI&jk0j7WBSYMdGq@m*4-sivDIZKMn?f2Cnc_Ii%7(0qj2YB8GG6!) zKalqOXZR+vr>95fs+;$({q9E1(?(V%Mkcq-{T&tjW|&=hru9eS#6k@APKL)16GAbW zHl+ap4vv@H2`5O0u`ZL5R4$#Pld*U2-s;%WQuWFi-Cq6LYt`$ozosQlFII<-yr9k3 zTGBMd<#iGu5@Z$(;BTjq$<=8Unk9USTuKPXv)_RD_y?^KKNAVi0TCLkPsQcDtpU?o z;nskv19`3`pnBCx4|mkJV)ujwU=t(iWY$kWYmP%{cI6E`9D}@_4cfcrv}ADJ>z)}s zoSK^U{S=%R&w&LzM00b^nUTrhg+@323U{Lq9Gw9fItMi!`p!n1Fmwyx-A};7H`d2J z6GxB5(XdC3z7Wa;dWZ-h{a6mAL@*^|&XY14z9lRmx_4Is8?FSRK0hYes{YAy#?xYl zwtu*l2I2YC3<Zwm>05N@m3Run`P)cpK?6<(|3<25ov^rbCiZDDJHgW9X>HnO<F;?n zR(tJ(BT9lf&<Jiws8LGhq}Va17doKQav_pzXd|GQP(p;MAaJ>4pzJz7Ex%3d{IQlg zagb15v>Pd}8&;XnUWxx!1^wfVRM_i9D-3QXEkYm|mih{-H|s22hk<E7bS(58oe?hA z;m!!|eHhV_rXAJZeTx-0RloY$tJPa?z3Dq6xP0!|(lOs`Jt-wZ1E4X2s$(;s3ZICc zwHu4K0{%!5*PcWRGRn5)v4V50a4SUbyf;({wCi2Co40r(gKg{8^R3a6(U_%R6p<s8 z_wL)Pj{LkfS56z2n{7EW{?6Uo<&-seI(W@9CSu@d)Z^_-v)n<DzZ4MGY6DN5WU1m< zS&9e<2P!a|!O@X1GZC{A+%*w16Z#=cFZpQEUVfjb=gEVau?_X(b;NchP?x|H%k9Tv z0eCr0jPTboBE46$#oMu`LO=!8Hcgc<TY`Mx(mNCh?!7^_Ebd(>_up)HyU%hb_Ik1O zDQ6T|J_%0Wuftj>83rg)-h_wWmMalY$(MNE6RCK$G9lTKWsA*|X@!5g3<B>ae2;1G z#C|Ch|K~=`+Xhu8PEJmZ-1{3U@C{1;^Q|f=zp$A~#h8iR#ehlaNJM8M&YL!bI|=R| zc=S<%N3#(eIma3K3ky1-NlTheojz5aIrEB@iC4~^@om-zwKQXX*AC4_u!I63BjJET z;iR8}P$(HH7R0V-+>NP|TuY1<QLQN;1mD9!*9!M=OdZ7YF9GUNe_iVTPO9k0r&$Rm z!(|&puLPAnCcfhq?d{uj!>vXVY52K_iuKNu6BC{x<R)#`DH>}%sXWBqB#;H4XG*zj z!QToBdC(-wEJHN(?2$@kV%E!?^5VK>$^^*F<PGsz&&`LKcxQJdut7^8>+_?MpB(W> z@f@j<9>jfgJd!`~w+0Qs1pUr~5ZNu+GNxIIsqGVzDKkDeWv7-?PESvJW^_`s6yuUH z$QK@FD!_y?zynff%9&0%!UJM4PA8NWK9MOlCWhdkXQgs&l#qzF1>UdUda(HCtLh4; z&ul2OAv@!9qdWh)O8M0dRnqH8tQi>YmBJup!tK2~9QZJ*5dN%z49S4FkiR+<C=e`7 zVtE9oFLA;QO2msVzv!h*=iYv+di~AUeS7s`jaIU$YjSEV(hz1Y)bY|La3FPr`KcJ= zD&z_wpM#$8%@j+d{Co!XN<y(eskOrO$Lqe=s|4Cg!Adj?u7LqPpzgI;Az81%9DGVF zRxfdrHWy4$ZziQ!%<493W-2)SX}4@<30ZdN(ZVu{$czIsio`Jw3RiR~#1;7I;oN#T z$_xb^gjg%hX>C9|o`?{LXCl}$u}qn0hz`KkH)+VzyxH>ZoLvcQ$P$S9{CK1XC%_GB zdBl4OCr7&Llv}c+_8aIRX0*EIcPRsAd9l6jxeEh+9?6Qav2hI;YT!cm-LO%6QSt>j zgM7iCfeL0q^He%!GT8$Lfpjx+kkaL3KY7Y#HWbAGgPjj?b14;ZkzdHI-fluc9@K93 z_oxQSU)1abgXJ5_Y&d0NzB)FqV}$;yN;z3!LlyXX5etLT9SVg($5eWGleyoW3XcG| zMCE5rMv)j%2W8Bo6l~5qaA3cVc0H~Q)-QP`;_RzubXwDCbuNy2xzo<s$!biu{CY_g zSR?}wDs)If8iM<I8xc{Pw!8Lxs*bfbHfx1@s>F539=imh=2Cy!b*SxL4Rr%&JbE=g zt$6ap-wnGv;gKA1%)bic{CGF^y2EAX&K+8gFc&iw8cpORHJ=D2n2ZiD$0o?KoUsfd z)SErkuu~Uf7J`&ap@eHuKuiz>-}ikOx%s+hnUi9LDH+I5*-_6sWujFiopS@1!1~JV z;LS%XJ{VX=JPz&kU?Qwqg4)7}wtI9`GDZUyJ0xFrNufZ-piHo=68S=S$_dL3WCo<6 zO~`<jbkg{{ok$5VJtiVxtxTw&f}O_w6@4^58M3MEm!===`U^L!Z*Fd+Ty8jJVsdo$ zw^hI=H&P+5H?53D#zxGdOo$+N9z6TNNP*TTN^yX%>9jB_fdUYU#FTHSK6&c66o|9c zxpQyn-iWun$r{CC&jO<sT3cD-Ti6PZZ3&PV36&_YLJ>lvh#OJC_mezpDcMXD*tUBu zaUUHf^8N65YlV9_rVirymq5E7t)>13g>Dc_tJucSLw_AW<F6W99+dqY#S31GHN|X{ zWO>3qt##hFf1j5hvY8T|X1@ccKKU3~oy@|TXZVr2mm`H)5ACNk*x2pSM(vxx?}2c{ zanQMEVl6WhnThDYkiYcl$!qt~mB0oof#jF<Asa4w)CU<-_z+=&1dt3u3}vSsnZRY5 z^&SZI0gyL2Xu&CRtVmeU3<ditW@dI;7SX4$e7Sww@hKC_CdDO@BI@KDgB9*uu-vLv z7EDFZ1H9ufBO^NfA9Sy8nUkyMZZsnM;GAYB{>SH@@)IPup-w{DT^&5Eg=By93G%xI zqtbamVF+a*=5xfjTEc{303nt#B<nx$S@(HL)8gVn#V8~*5GPI?uZ|r%s!O#FxYM$I z$7B%zmL0uiE4&B<B!y=v>QFrUO{U%N|FCZ-@Gzh*yeokxDuKbZb5K22b?-|lq3mA* z)2{*Tjpa7K2{ao8FExCo6J4wEZDa2EGh(Py<EuGNe$p~SZk?aeOd^W@haY~ZTW&8^ zUw!#i^@HxHV5t-<n6&EI9e{0YW&*iLh(_G+lDc@e{4p%hnXUx75_r-Q=;x#5(%?x` z7#v^ez~)X~Ty1{$%e<d^q<}#JjEt872Xzi6b?OrXh8+FQ4caIcUIMkaSbgxpdEcUa z<;pj{1Lw{imSeKdD)4xQLLC67%gRab#e$APgW!UIpqfDr;?@SZ`eREu{wOqkQ(#?f z7iMguvE3Mroiw(c6Wg}UHnwdvwr$(CojKn>Gne~zzgp{A4?Z_(7fY}>q^d0>*`w32 zGrr%;Ey6eudPRiIqgkTc_fhBLnCdyTWyZ6^HIgxWt$ViWoZ2x%=ht*TpLmYT-L`$2 zJ;k4-8M}@B*!AjBGhS-B$)NEu$G>3U!5~6^`<n_ER&mP0!*oL>!hO9Wz~~jI8=m}o zm6~@g*`EKm%pF;;)>0y^8+NHEwWEkzw+PTZhwItFU3qEK%az>;>0{(TWF!l-cJJ_d zt~Q0girQvVW~SVt_xgJ^8b<+2C%aNL<og}qbEFCd-gJJnzCNLF0;{tVAx2bxLFHk8 zojpg*ialYu6UPha0rfm`tpm-N&t&7tBg;|LA^tb~;9<;n4SgOl4;)6-3Q7I<<|T}W zdl{SuxKiID=8!)Wlq}$pg@SGnM&;N@k&;-UFwcsyRtW0%HoandD9AY_pzK`XA^EIy zN^fq6Ksz&Ef+A|rxx+5#0z-NBmnP4SCNsLeLtS&wiOyG5Vti`_#_|4n!9JwSt8(77 z$R-GTr;6si-;VnV2KHb7yX-w_+HP_Ae$&VCRSN1uWMySmrtj3?Yk4k+QL611Gjm2r z&5I}h^K^aHg$c*~p|wRU#5~wKe->@eyAgpt%!lW2bV0i~H~05hdSc?r{ur_h#!s6B z6)8$`7r_+E6mqFq0}FLb(b;v#O7Ip#sM*k+N2-tA_cuQ~Aw8DCxKSerx0yPa55*1J zx%8e^RqT%=bHzV(#@bwQF%i!$;C!1%1XFZ=P++C&&QQ*0^8@C;`1nZ(v*%#;GI8HF z*LYjky$C3aKCWl0nt_U|>aMRhOP9+GtHl_+X2WFR58MyfYhkdtyx)Id<vmF=pZh1z zxP09|kn(8*CKbWr`e0%4@Kf~V)sT9Zf8Yp{d-MwaHn3>n<2gG)8NosT$3B~^nD2pu zf?}lH5C^282VrEMv`9xnHee{Xp_{qdR=>UMM=d7R)R^z=H6_9!dYk+Axu2k8Omu;E zsP}RD(4wdrO7I!S>yDJH5#`Vu5?a5bes0-SAp8A8b?h)Or7Rvc{mzDa*b$>%Fev!* zFTVM@w))mr6M0j|Ib^$KNtX<z1#lG|>&Ex|#PuJF-uX3TwK$qU<(=O@kQf`5K>C*~ z@5lz0oZYdVr~iVSg_<ZBv>*$2S2T4&e7H)3(`5jYB;6my^)}|j%8x?<XX~XBYFUsk z!m3KxuF76sSQ_j3HBrzafhZmO(k)KWrBLjxH>SUsh^Y@|S}34xOgloIv*Q$%j|3#8 zYgNAY4uW0r3MdM9Q@NN|3en7gI((-Xc)y|Mj2NGdbC?#5B@K)cBlxN!Cp$7!3tWZW zX02PB5H+T}$I$=N{vRSCMjtTzXFUX6ZPYP?$9`Bu%h%FWA9Ao<sJA~EKAIb*^IkDE zLE+l0^cRvKsm(a#@Gj3DGohqDATuC}fTu{|LWxM|S=oFQT{@3b?nhc*nf!!5ONQrl ztS6k7p`=#oh;|xm-3IA2$#%Tt15Qss**Hl^girH;bcF)Z$HCI4m7fRMfvd=b%!C?a zrV@d-6&c0}(;Rj_L;$LCvW(H(Y$}k-fzKMj<h~mML=@+g2Iq?Rsgj*P&JBPn+XkM0 zs9vIhxqyJttkD<S`(_bxkPkDSU~!qo>VL+<rED|fJZiG35VD^ERxT^JjZV%KH;GaJ z`d`&$1($DYq`8PQcSvT=2N9A5Qe;<R$(*s!kdOg9U$Z9#5Av2E{zb6!K&cyC2<|)I zn&7Bn+`UtKIXsb{4iG?3S>(tr0(b;2arZa-Vka(8+TQbt&k0XzIl}9hwE-Cgxg`)2 z0v&3*B+#dewkksT<_MydXbn_lheRak;n(bKkSN<#D7XBuTUdx+{Y&u;Z_mFOL^;Xl z7*p}KcQqq$5S3=)0P-P+QBX__Kr!R^xW4LgwH}b^PXv_tvnl7D<dOSRA+*d17$Y0} zk;~>!tJR)T>rVN)emqNf4&}SXGc+|E^P*_ej2NzxAuKZHD<m|9dok7e%X%iC1Jw20 z4&g1vZGHZcxAc5XO7US{w55;RskB%!?VlM4IK8%%{e=t+z$3MXLb#Z2v%>fx7ZZUL z&e(=CtC$qcPmGC&GiNNmH6FclLmB)1fVypgw_a~P&bKzQesvfx-#<*oZzb5M*77U& zOmHa=0!np1X=FqT`ujm;&ovmr^8MdNEWCQzV$oIV@lIL3PVF*iHUdAUojC}a$Uefi zW9z0X0acVzo!N9ChuQS><om#na6?Tn<d1X2#MtqPeA^Cn`M?KF?!!+stMoMcJD2Vg zl2!Pf|8{hIO3(g?&GM%zPA-JuqW!-DTUOSVZC~?0G+@pR52>hr2ckOGG=9zJB;q>` zXijGO_Lsq|+p*eec)5U{o#2>LPD?2Iqs9fA6#hxc-qbldNb%8P7U7CZOn816Qq$jx z<TI4HH0B~su<1_7A;eAPvlkFvRH1&Zh9_o}z`sp(Oj7)Fc=%s%9`8nOyZZcJaTk{P zDDI-ugVBV=+x=lfoM49j^t->5MYKXjLBEeh5vFh@>N-NglMwnIf>FYa$OC4uEqjP7 zK?DJn#!$flO~VNO4t-D)g8Xxv=<V;oomGZA{&Ts3F_T-e-0bs~`g8~(L__mc0%8`# zi!IL6&dwp{Di~x)a@0-*OWJ{ZyznY|wK~Jb?TmU=_rASS<-)L7*eXZ!$o+KAY%z&e zz5KfCU9JJ6(jyry@8E>hxtKNp$e31zHO@%#u5#Y!xAjSI4*WNY0;3QVxCUq(#lCPB zcP|c50+9)#?+#DG%k$dvq)epvyUs?P_ceGThpaImyVkI!43w)iueH19z1c5^oZZWJ z&*)X1FFu|xm)muJR^!8vT#V7eN&ck!mBkR0>nPpLF>*05Gc9ATws&1lO0c$)WI>@O zFJ^m;)crJ%WYw<Tw;I}8Rh7>DXyWMEM-~N)$hs?&u{%FHYaZ_kpJ&XTJ7s(~Dk!$C zf!g9wk3xu3%f-T0_Abb@C**5Dg8>o4)xe4n2K|7c;z+a~Rv8ZM?g5iU<`Aq|eE>1z zwxCKT%zf}abJZrU4)w0Guh>25BW!@kmRBu}IIoE?4dHG)EIlnJKq>^4Ct?@wGiq$8 zbc%HuQNkW@ngClen81e%M^|yoLH}q*6rjP%9P9fF@uYOI*zXXB-{ltOv-AJG0D7XK z8dBV@q|#>6&Fo&(N&-+Pwt!fZHyQhB2(0*x$6H9pP6d=zAUBY+41|{m#ckWKmJ$4o zib_=RJO5~b`b^>4<@imTQKP6qKwK|jw<<urec0ga3pSrtk`rfwiWpDo+7ydz5u5RH z?qb46TMy(ycA^>&r@kSfCpaY1m2^6!j`#KDUlq?3rT=Bz(Ctm9f3jx*fXcm5UrAH* zZM^P`@o7^AUK2JHPdpE-<PuHDeP}eGe}6K~3oNjrJ1y>_muuT0JAv|NvNu5RQju|F z!h#n!Ya7)yc!4reGWkOkysQ%j1d0)W?0JO>>Zjg70)c~*8z*gsj0&?OSM%?FLITXz zX>o1_0s+0Oxh)uWMHUgzf;cQlFj2WxMiPbta!IC6AXN``s30F=ZDd*)MhL?`Z8{j{ z;Bh$;X^#RH@-ebj_6j;^;Q$fo%DY(#_Ccj|krna8^6>~&;TJ4LUn48|pCZ3+H(BXF z==l?W^JQ>GmOnxf0*KBj5c<I5ekhXC>!S`i$3-W`j$XFyy1KTdZ}T0Sxn@U|Ij>)K zu&Z39-FuqJ`L?-UYPsAG#nkh%Kp{&^d((Tad&9jZL)SOVn{bNpN@v$94HeNd_M72% z^#;Lqqv6Ee3_Y3`hwROgy3PQJmA<gNuK(~<rqu=6VH$Jx!r_j`RBu-3dl1Ov0;p%< z0S4S*vsV>1ZsBN8mek#W>K0Fnm+`{P^oIsg!z$BOD27dY<Rg4h?G=MQZ7;Tp9G22g z-cP4yi;ETNF6EgA@Z;GJ=KXb8q6<`lB+%H=qRJ$*+zpfBo<jP4jV99W8GC<g5Y5Yo zWc*&VTyBF5ihN7WD90)X;QO`Qt%}E8bO=CjRhh+|dkjERgT)IXJptGlE^Tn8gf0Hm zf^buC!m%$w(j?Rv&U8D!x>joh*^=4n#5|w-sx41nX8#k#og@}>R5a9dDRsWgS-jVo z1<vb<4d0h)*o$ecf*P2KzM#e%OvQh)qIl-TX~J&wu5?6YjQFOTSG1vZETU>+`u_fi zFn?T;=V{zz26OwE`l!C;y?o&ImhXnBKYCb?OII>@2ONO@>9telnJZYK({wCIf24LV zuWEtr?lsusG=}`pNX5npD3n+i=bIzRHOh@y<A0QN8?U7TV&HKpRJ9m?AE)%TCkUyF zrX}gc<M3z8?800C{qX!aW2eH!=Hjj%p-M=`pe_U+7zJ@X!E|}VEm-^f@2rhf;2T0# z${-Vtdqf}kEjUSy6X&j#U!-zD^~;@}6AX>C0oiEo)~$%h>B#Gtb<mIL{GR3C>4uE~ zfzlanBQVrwCFRfUul2ml^3eKt?SY890ly87@#6O4ymzZ390=~}m7!ZNwhFWxpBYB7 zYh0(ylZ7iNuA;uvAP<o;+w1?JKA5baLse&|!Slukk(0Q2lP*X8fo`Bd@xQp)&n2e5 z%jv<JQZw*$H8j7@!d^>@XgxdmYuV3(cSS`cQCr@QH`iEprQ(UePyud;kqXl6y-OX0 zGKNAv0qS&G1Wj4sgfj2H1Ilq;Aie<$Kwkjb=KM3bvj@^Ol^*X_=N*aePRPy+(qeKO zc2fI>M+A2S>tF&v37E*g4CjTBnb#;!!Zw(Cu#C)((7V+%`gmR1v$mAQw@5Ceh*$1t zlELZ3`Z-hiSU~vuZ<2XBFU3_z3?OQ}d35xX(UURpBZ>K!ZcsZu02$o3jx<ug*vphP zDNV~;9({*mz8EGo=p^cPsw3gC7+#Xs33wJjXV5|=AT^7~^Z4eS!#`FJXnuo|(hHEk zD<Bci+H~$d20)8FY<A0w`%_0uf}#>JdGP3p(-8XePVj=A^eedR0*|655U_qaOP!dm z2&&{_Q?lvCT=Z^a$GFk043~HT#*$VrKby&JyE~*^E}XPrz>Q)}s!Uuh(XV+PJzT7| zOMm`ZJ^Oe?u8`;d5`EtG*4_Nix9_;gIKdbO9A|yy+eF3!8ZjJpoX7+MNBKDgj*mo4 z6c1=3N6N)y-SZrDM({Sc3@jay$R0&_Sef~_pLu@P7W8YF$H}4pN`spwTT+;A|5TW@ zu=1G$!zV?zDhR^aq1c;c1{}oQXK0R3oFeEwOQec{7-Yi6fYmxjte3B%-)8u|=$CE1 z&T<hvdseQw0cH#0Ds}OfDbxtl3SE}F=i}F3jKvEG8&ipUCX&9i4prkR=2VF}j1*uP z$8v$JvPNlQcbYTt8>f*#`(~2&%{{SuJ+>3Y<{mM!^f<h6QXZDBehmK&08wyZ@UtqD zm7uqrO+B4~N5B_0qOmM1Yq}Hnsm1l49uaD1t=a79{<NgRNJ>8={*MWn8AwSb2o#El z4ETzk=`EVO(|6N{%U+b8-$C+$_vU6l`9{Qz6<FWWjwe~2W@-KM@q^EHDTU_$Q%VC{ zL16iz1lx0;2@(-FP;d2Q#Vpb58wtKv(OO$8KCB_%cHN6GNWWR=BhF#zB%Jjw3G?F( zeT3&zGgL|pfZZsVtZ7@SZ^EVc#yEm{eGMpVkZ0$<8}d@bKL#4cJ*kKNdC1F5n}L;U zR~7O#!iK-7v#?|ZlQ1_hK;c_(YP>1EzM~bIb%(mgmMd@zRW1QRVOQ_Vq=w3*5@>KL ziSy=lz0hzungBBTfgIaSH-J#{etAPKx-K@2L;?XSYssnN&vD$#Uf+lU;K=nv3J^mv zQ@eEsGv0TTn<kS0!d5Z@ze>Vn9abr^QhP}Spe6fVx`RXn=*xNvkF|e-lF}9X=VMs{ zbQY*WTzjt|Sa-AB9;o_{J@X7Taozo{M^*1#p`7FTnw`!}pP=$AFgr4cx)4n+CdGDB zhuttUIT7M0<VSqUZ10g|&E=XLP)JN8io0@|zuOL6b7u;sMhbsALqLF;*6`f4#VWeE zvePwU1$E0utesro+e_c@;<CO^RXa^r&DG{%%j=4KZx)BCH!RFJn4|VUEHrVUsK(|^ zr5IgSr3qB5EHP_h$abz@r59Co{HFnn2-knR`@6d|UJti8(33^0bdRmNh~3LnIEJk0 zYl75PXc1w2nyR+6$i)oAbhbZ&uE2aF8boW~6hqOB$1Z1yvP5@F#^*l_BhK$G;f$*L zHsS2j>A11uG|`Ndl1h=C^O7Pph5|Yo*Yi|pR3jG3w1k}Jr+3MALQ?Nh>}JyZ(U(sS zo7)Z3rDm7c&2Patb#D|JB5&aUe-5W$fpY@ajIi~u33K~7<!UOiqnX|3GONrfQi?v- zygam2(KsMemaq}&EZes3kuKB}ulh8QM+{N(ZU7`y-VN2ZCWU2of+d`P6w5vqv;YU$ zlq459B8&}!C@VOT6-lH8wfY4i9Wa;k@qo?$slb0qXpL@-eE~GL0<xT)=t0Lx-{^ir zk<;!^e`0K{(-avBHDv2}bFi{nt)j6+tU@OXNl}(=qotUK>PV#dM+^R_3!^)TH2wV# zE9eXHFT=qo<qY|rx-xrnXXPsF+lYuss6rYi7Z;b~bB)y7e7!YV0w&k5GxG_HU7gh= z>7Tq4yJUoe7)(0UIIBD54oO6Ckj-ih0TE?=LD0x2vEfB$N$Ps#dOnwnXF#3rJz5Ew zc%0N|>QW_S0jME=))K^ADrkgUM4FDT4G-RPBdc}72g)=ZUZOIvzjZG}%N=W3OKeNn zw&6jY>rHO&Hjw$!nPlG%5{C&EV?2Nl<1clp32WJvPfZNtL3ZvNvzg{+5`I}V%ki2X zC;}R-68U-8wY^Pps6p6n&kacuT#w9+C+a(ZfGf$eK!1#|Q0W>I-G$nr1^>XAdsdta zL=5tV^V_fZl)fR;9%&JeUHA=bg=hmx6u@j&jgyZd{m$)lhE?R{<UGUzeKIFxE*9Y6 zKUU_s%J{VQl{n+UQ{(+mu{fkTaS}~t0-ZH*2mg*?ci2E_;Csw>5N5VK0<Lpv%4sWg z32<3~j@lb1vE7B`^}TUHm)|~$80Pr5accDGOApaQnX`T7D&r@F=`BP{MB9oR?{huF z<*Th(YNT@6yo#M)Z5TjH?Mgkr{l~Mz6umjzW2{2aizStOYz0=-Xr?ohK;b{sK-<`y z`B>YVM}lbF$WT15;WNF8Btf{bML=6Ey&hPvZ|_^n{ixxs8(5K<QS<9xwG~7b^MQuZ z_Lg<ZS1dnv*0)58m>X2CM3_sH5tut8>EG6wz6w4-=dHy<#;!{Kw;SQdsGM)#$La4^ zfts&dfiJ2>dA~QW#aHAhb$xG#*0y{yf>oy1$wfQw#sYEZe;bZcS^kp90GRGXkOQpq zA{=JXFO4I2_TV(MbRzDzgMu`!2(Z8wnDc4vzn|1k^F6?})1~&m>qJ2+cZAZEF75Ck zA^|RtD(Km1v<XVGNWwnq$(G(nYo%d0#lm*GtKSiPH-uM66QFh<3&ng@=caNOg@a_O z=hTG$I|P$(w?+ug|Dl^}qUlfBpLS?lzLu}`{=}R-Wy)f)qi=Q08HKAu_X{GqD)tWy z-rwlilbr0BS#7bNsLBC_Mwhq(knirlXi!<xV^-Sz>bPAm!sFab*nwFm>OUE>cwD3L zD);wV%Pf9PD3NDI?}@hoRE6EggNC|+3@tZ}HG)6J?uKrr9<U1hKnEhgBie`>osE#P zT`9L!DZl^R4>8qosFqW6GXj||*>+j<NU%_x2pv6(R<h5)BJj-IyH7WcLSmgo0`!z} z{qM8RvuD3sXrMabE9wl{_d8|L>$<yUHA1?L<h^{S>)zAUcI@lw{klqKqt%CsU6w_9 zHzCdWwFm<k1-&Y^Cdt}B!b~O%8mt`%#{sz)%^os;u&H_C^>3^ZvyVnK7Yyqpx*2ne z>wlsZt|Sm%jlW~>WG_JNh4Lq=&wym&TFtM{e(|LOjS0t9f|8L_K)3^689qvw0p_+W ziH>#S(7@dYXKJX4>Ikutc<2Bv4f6|>uZ`E?Qjpd6DU%7HG%=#Jt^i|-2&Wj#6SuL2 zIVjIPnu(Up*P%W#O=inmJLp*wDoO0sxmAS=JbS%j8Yn*Wyr1MKZ=UM3_`P>hSFlFj zx=d9eBP(y&hD?#SGt4qoJF7j>qC_quop)*w2~nFBfo7hft<IoZrQroT^DyXLxKC$P zW<tnU8Uz`Iz`V`QivYM|B6B;nMVZkU-hvT3FKyQIiYCp2{vAk$!>IpN|F+2Jr~5hX zcgtAecPIZPuqsfs<#!!)Hb2c@(e?S%e)dG4RoiEtD+ZZ%+EQd9w=JCpAR1KH_to@y zJyc)h&;oP0U!otUPyYGh4|BP^2PSJb@bqRzA%)JUi8WqH4lZ&|{YBHr>G1O|!F%~Y z5*1>J8Zp+go7C89M(nIwZ^$KhYBotw9ZbFkV#2j|{y}!f#5nOf*I-C#kN9dr@(B^h zk*APz;vVw#O(C3AV>0Ufg8LBv)$&s`yR3FXq>j2C`Qs5#HV4lqY&V`NO9nnvEOt!g zO#39@?kTX4V1WD6#L#km<2&y{hF>!|l!^V3!+jJ%aDT`LI2%e`N+KX)4*cr;fnwvW zHq3an-rdaYAnf-0#JG65vGQ~xEu{h|eNze3<19s#ZUYe$@0631w37ebcf06<YDh#? zX6MF~h}I%mU{ik|5F=@N5oR^KT7Fe6({#r8ZT!mK9u)X)y3<SOd|A`fj)>t%^2%{} zuzFx%xKo^cw7)8^gz)6LAHx#Ba&!53-B@_)__+HT#|C~|arW%{#yTnX;rj@j>dzw# zQmLW%w^pP<>$8<46MZ<}*-68;dh8dQQgu~S>$hL6*VpKGt9=p=2HP{*%tgZ>dR;(9 z4H0o0YAP3?47T1C>BxA+<FWqCoItB}iC|kT>wF_H=8#5D8`u9I#tI;i0trxsCx%ju zWU@>kB^j-xgnI4SQZS`(Jt?FDdj5~au=KL>@m;RM8S6|a*n^s`3KL_Dz_)C}L1i?b zAFwAOxQjHPcOQb`1uoA3-AKs7z8kf={k&kt4$|UL=IvCjb=*Xah{&8?wrIyu0AP)7 zxPZjqPv|FAMoXM|V1;7)I0YPmrRaIiQgK|)PA>7d%18(7aEh~Q!sqx-9;|wu(TR$K z5B`o3$oM<6@k*N+lC{R07RqcDvlWir8a*WvDv;2(3L=pay9!0zMCLFe<)18r9611I zYD1ul+gHpS9J9L%IPM{M#K2KH2tR<`b-OOD>m0B5cPAVXlWZwPToick%u)YdzW&-? z{Juv9IzKk#d<u)R>Q#2l%M46rG*{Bq2A8Fg<SN&Q`;COQbMHpXX8|u{-OpUjNLnq* z$3=C0Reim$^0x9%47WxhymYFu+r<evdru5$lweAPSHUkXcnZH{fnC>Z-U6i^lf^Mj zQA@DM@zO{<t$RBh!0~^hU+MsBKf-0bYr4L;hXBV{cGkklJot6q`82nA;`t$G%L(l9 z#D$XGLdryFpeK6P;%_${*XDJsYqZeTvUZwyp)0cx!9<>`=9_ZlUIka1SIG`UTgsBA zN#DFq^lxYEJ7zX7^aqjeRabB(gpm72^IY3@-}$uM{+e#?n(`gO%EIiFAAhB$%Vaks z+RdhI_3<D7va5H$?2TI5E>}+Zh(`!|Ay;i61jd5F5mHb-_7Zth!3XeTOJ(~&eLsOC zal`XsV|V|rJiaNUh|fe;FAmV3CniYF*x5fY?F$&ws3%C|#rMv3q!N4n1<0F>Yc3?N z?M+V$mKXSJe0!|%yW~R^cwe2akY~`F+eF>gzQs=Q4|ulNv4~a<h!>&3YAs-Ma{6VJ z(mVNy&I{xtlNIe*t*Z03JG^BiEcS{(H(DDkWr0nliw_Akn;2zT-C=%7jamHGyB&_7 zU7YMEQH$FSas983oTm-g8BTOywo1Q1iW??|R{)L3dG=;m$(4(Gh_#fuGxzqMk{aCj z$Yh*0UPY(kBPmHmH5sJ<FSZ^lW=x2L^hq;4*gHM6!e*k$@l$jDaO)QwSD;2`H4^vB zC;I4N!Wd~N5W>`o?j>@aP!R=}9E`KzTJ&JWnqb@e7f^|%qqAXD1a_46)D_-m-IM<9 z&a6ZY>2Cs~1~Sk%Veby1(DVf`o70+vKxdDHuqu$v5r<NbYscMUsH6?3(gL$LV>35h znu~>+W;gk}y?TPC^dc)Xfc4yFQ1yvkQy^6z-u#JCIIufMbugLw^4v6~_kEOc4n)t% zY^uLL&r-S<hR&Y1YJhqIR(i#^rFY7!H#t~(gSjslWO5je27DvS380A>#gp@HvyEs| zY#OFR_O0NcpukRGJEN^`a^Ibe%V~nN)P5(ho5yl7ezYL?;h@D@AznT^_}c|#;Uk=v zk^)2ZB~7;1wq7nBBKa>hsHlc*U$a1EL@Te@@%(>x{&X8eU=W3PygY&w>G*=YgWsSJ zW^6b?MUzDud;O$+hz&&>9of}Z1SXpDJbL=!#vv$dasVr>=jWRXfo4_Im2+EWikg-l zb^gI<=|I5W`U}scR~_V!u`STI>Fuq~o46&iPuFyjJeksrcdT_$8wQRua76rZ@DUsY z5y)Zre>zs+7Bq^KXSSjS?2Y#{x~$V}Ldm?$%Dr7=rsUC3zMzOVuVzz177|cOxD=O# zqJ*@#Zk}3st3nnYE>r)p3pAWydvY!MHl1T$e-tcH_U$U;-MR$Nzw}M7z}bk?INXl8 z4;XTxgM-p3wiWS^*?Rj)XB5`B!_L?EK31HSeBYI*k*8+8T&-VAbN`@-9CxU$`_h=K zGe)P%&t-#|sPZcQ-9H^6JAw@*fkAhyOGDqB#Nb|Y2D56l+%*ezb?&HNR$aFHEr!<= zN5G>-Pe-SstoP1)Wr9d%`zoSk`lBx6Zcf~Wlw5#>9!4gokqqJu$c+X5_;Y2j5jxJg zWW}Osv<-T$d?ESg0J!$1)+JIiZ5=@l?rK#$bS3`A9K+=*4+5fb#I^e?syffUdc{9c zsgc(#;BEX|eotk|U-#P6{6&k(8g3?r#oR5qT2F6h#<mwT7x4uS_b;IuZW!1}^X7zf zM@_Mzi7p|AP%$WTIR2{&KRGdf2L;)pE8+vBhIb+FF(|+^aDBbTbJE~YSpJ5a{e-s| z9w8EvHHum%i=%HR=&JLJiG8bv0M5Sv%32Z)nwRn7u1R=b=OqkCRuUok1X7vNSnPIC z@7Q%ltEhN|-7go?Hl<&=p5M#I706ox`aTb{kn|R9CkZK>qckZ@sEnq+DD1=xDFc~g zHqcQW!ElaNRgDwA2v6`B4^X_ig_|Jwdh%2{N|f`kxjsaP$A$ZWqzoMg`6)%+>Q?F^ z!}r)rDJPZFQeF&9kNv_+cGw}JRaNXPRH|Ouv3R9Rng1LK5j0^_<%5cKJR$rV82d6v zCtB)iSj|NEq$5CbxAXm;LP_<lH3IVLV&Ao<4nB*NM42*?LNfRExZzQIwU4;<qF_Yq z@>AZX9}2pw_&+WAoc>*n4UC+e=&ON>+GtGwbsw^5XRUsd>2!r;Je|Ga2Mo+^FZh0? zfkDVI`t(B0_JmfsMaT+r&Qr|^<;9caIraz%R()O$Wr{{g9+GwQwEu?=5#~Vz_DVzC zs-l8vK(q!i*l{*P;QT-eM&u(4z?+iOsYhh=+pD$qA9@&y!P`Rbtpvf#XY_WidwZ4l z%QMoO_R=3n;T}rjL%#?McUn)=C8i)@mP=-0zUj>s)#N`tgaIlRwE!VVih>J<sSY8@ zHV+S&{xI!D6w3bzJC@n>zn`>qo!us<m-T&Z-ZY*X-LCUveKQwj233CLDGt{$i~Y>f zHkx9q2X<wYXM&DB02%r4PwJv3NzG)}?n<kE*Q@`>@{!1v!J9>K?B}H|b`_vbTOS3* zQ-Xam`BkL3zIEf&OTlIG^jvAPb6d3%3zEO{sR!%-UChG$A@zCUwb(`oXuKK=_Py{k zQvR%@H6B7tIr|2eUG8PAtE4G+pOm->>i{%{I@uR3O&!v~h1LD#sk9F!inj1$H3Qsa zM?BP!(fF`^VagP4<8h84hg-*c<%L~aQM`r4&Bf+VYJkl?q={tlb)_Xur1{&VD;g&X z$kGJ`*95I<?j0a`f{h^2<Tb|!L{Z2(uW`wq_JzQ2;oa`OBD-9i4=;uwGpgxZrOn3> z*?JCv9R}}X;cQJe1`8L@5c{1%{{781vw~=|8cPMq{Cj7lIFi8!hQ?=&N6ubY#m6fP zaVy18V6aI3U&>y;rNya+%h?0Xv=Tmd;eNG?)_8cb^Iw<zl2U2r&>RaF7F1l5-2wa| zL4=|hC6!^fj=9}<$HaPg%~aO9Q!0fFIa^~%=cjwRfD+y7Z1yg?C|_U6Z=t5w87a~J zhTnoM)BA_(A(~dzhde9X3U~Ca{%ny92%Ti3Vz2G%5KK2<OtCDb2HicilH2FoaeC?| zhQ1d!e)(bsh6!J7E={HDz33{=xU8y9yi%;tB9zK~AipY^MX}e|382&%Q~W~u!~iKN zx2vZ&xcWG{Dk>QmKP^(QvljpNjub)!W=s|z&4wzTI*W(t!j{A{eN(BEF^rwy=Yzkc zR?<Obn`*|#nIxh0>Oq(i@VCB1B%^ie``CYVT*tj!BuxJTzlnL0-MCVesO-p<!FC`< zJWZg9_q~+|EwJlYYdv|4n4#?GkwVIAtgYjDQua3Utnv04979gobhw-UXSMtjBXUy< zo{xuTKMn3`n#AKFjU1d?HeDY@MJX7-C&Y0@+(d6gCSK94dllj2GV|Zm19+WjfYD&h zAxUECn{srHso&V*)qugUj)Pyoc&}1{Ari67yGubhM?$cU9C^vk<a`}n4Su_K);Cp; z1#>Tc&w848Z_c??Q9c6F4_)w|(444=u@Pr}^gp2JeF!OOpr{+rXWCr9Tmik8fou(L zX<{5S?GDQ+j%gNB!tLk}Rt|##vAKe~z#5+35yZ#%>(-P?``+5hh)&dHXJK@_GDhzQ zhsUk=YgHoOm%OXEmzKA^d&Z8;llN=eQuLZmRPrmTzcdm5_+?aHZQI`kbEWkVAsD=w zVrm2m)QP^}NaH4kHfGyQuUY}qP$?UEGT!BBz)1vuHPFDKB9=(M9Lef+zBdTEJd1Tb z##J<OVI<WNl#tIEhnh%cg@pMsWX=RTq%8Bw>J<xEH_v9LO$H<lKz2R!Z~k9mAJ7u- zD<&0_j54H#PX$1UH4oJw&Up<M38B&80WtGyAD^XXE@#VgY~bT$SD<X$Z8`pva5_0N zU!n*8vTgHwlQLh8`l3vONv$oa0w@gx!pkqx{!`XX8F>o9N`Ns6Ji}FGiBM0?KS?la z(=2E;v32qmf6;n<P}Qq-{*gL-f!kCs$v`|&*f^S&%{Oy%ogPiDFLv@+CoW|cFQb-x zn5U@kt1H<-KeZr^O8fV)Ge?;rvk`$B6piF~OItYdUwIG>+UQyj<J{^vJ{O&IdA~|e zD(O5vH?JAh`F-<GE6JSuW;q=8V>xTV!hhsJh;sXiQ|g#b&M^ru$kN=Q^K9BsfJNIR z7{IP0op1bajj1UV-0cC0q_PP0I(fAn<a)Uhb!fD7(0l8Dv)fP9{hY4%>}tfXmhDUp z*PFJ_P8ES4Ioj!?plP{XUfO%<;%Iw$?9}QsJ#*RY?(dTB=3oTCV&VUp>oOQ$7!?bQ zzX3G<{`%DFJ(+c~O`B3qXdzL{ICHMch&820|3T=G;@E4>kJYEU5Fyk3wpimca1MR# zr{MFpdaOq|AiFT3u`ye<yx~2`Tt|G1CTSL)=p{>saPo-vpc+N5a8mHaZXd*<>kOZ( z&4Ym-&}n!OmIg|TJ;uw%BHcTxyxgdAZgqHhcR0Q{JhtsYBT*ukRSEQLYT|YmR7d5T zDPMuz%+)oemiQ3@dXXxD^_ygjD-q;!b>;~rtT_?3OIdRVBTa=#$$@yHWE_U!Sp}u! z|8^?o6!CY&oNTTCh@iiis_Aa^_(VwJK1f4@KrP~zKIC7L*&iw@EYGRY8y4Z)Rn_&@ zlmtB6kIaVPuMf;>WOE5wW!mbP58GYW^VFl-wWbg*FaB2@=AhX_t6EDB<9@~XC{trF zSvt1_RrQN+s(aAN+~5v8Z^1AG8A;9`=lE4q$YPa07YW*%4TQA?$5IGyp9B}TZ)j8@ zai3~Npv1n2kdah10nFPm8^uI^;3uT;p8*B9aQ;Z#U{FeQcX2u2D;xAFD%7-!K%G#f z?Fr{Pp3+alC19Ef5GK}aZSlA_b=e!ZwVduF%%Pq3jT|k5-Gy7o!!U<}qClKx!^oZ! zih#{$&8<_;>$!?p_jj)T-?O@bCJ4+=AB<x6E^K#S<j)hv*83Pqk*&i$8TyB>jNY`U z^RqtXL|?y#zxA%;zKeksoxAm*TTRSjv#GJ{wIWCHt{qB&xhN;C)*FzPV7~yuXCig8 z6Hi!sRX__In}Dqvcoj!f27XBLM953|(P;}?gb(AD4W>SL6&OvPc<=%v?G5#o-nVBj zYd981zjRoUyFY^T)%<dyGd>~fGEcP$x;=pkl^i9}g&l9(>Lw*eeHeP$`uNO90nZNB z7ZO(h5yAo>*8Wc1EPEC9&S|*;<XgbYZi!5@z6v(2UHm{nRWmIqNmE2kZA#PSEYoW$ zL>fHC+&qF7*L}y)B3H;>Te#T*R&VD{_<jZr3znJpb^u&hm_8fTFAzGot<|Nte2j*a zg_Sf6n>93gl`r#Jd))f^a($DGmv_VHgRbwn$)?FV?b0s8M%#)J&;7bXUqhz$mLTO% z37Sexe}15987H%si_Ib(6YKnZ6E|j3g#O3gans%Wrk7hEkepzUx1)o8WhVp)mj!p6 z%>*J)+hD)tZWD~BrI>cxPQM(6kv&DjpT)CXCLH3AazX&gKJm~*^QO&pvpMJ%`pepD zc4z0CP;X~0okjN#2f_5H9jMu^zmF)1K1ZLQ^9qL-+n8wShef$km{0#Omw<1-)ADI% z-<X?%EnSCP<6(=VmM%Of36nF#3_dGGUpnO)1%&oFlaaECbkUBKQ0kp+!IWxxlMRh} zwLKdvYgkemW#6^mvzIbuHop(9X|Y+JsP$gOS1e+f;c(g=2{O{;E)xyQq4&YY<)>cw z;8+5NH+`8$9WeC6>={acDyG3&BZFb9h8BZ88b+TfBh_S5wuGH|IjBOV%E<A_Ya%0c zkQeT2tEK~ae4I8wq_wN<RrLkiOWFIT7kYQ&q}1jjqE2ThhhxIKv}1;O`@#3JkeG?i zzzlYeWVYCeS<aV)7~&~P@HIrSOYURE7Ij$Cw9%Se{iZlK_BeH8-&1zs&wK>DDC1p; zxZ;V3Iwh0PfxwW{&>g;G6-@0@zsV!NUPFm3yp!<z8}@!CH)^pHyolZiEGUWn2#iAf zVW9<F#m0K?kw~s$Ly}gztZdfujZ@#l*;(79Uuyr5?R1^lKwS6tZ0IkC)#YZ5qKF@` zS2#kRUBoY#*&C%AOhjH53jWo*;)oPZzx{q-^XbKp)Z?e=^Jw~RPGU9Ge<(st{Jr_3 zz0$gLq>wu!yK#<`L?UBZyJ^jZ51VnSlBZI;qSNJyH$K|6u7RMfz@)a_9Y?Fqhx}X@ z#9oETVYh{l<MV~X-qvm`(q5YsM@v64{dDRt*vHGMH}RAO(9AWj)2UiP@%zc+Ek`)5 zO*`-0t{Vbe|5`jSZ;}Bw<?&WNSx@w$W^%3SPR4bbD3SvreePAR!IB$iAJ6HYEAX+^ z)bP(Zq<aQr-88|Xm#{F8pkaQ-iv7c_R`0Cs5E>M7YPnukA8T_DqfsTV#6d5zsn-!I zh~OR)GL&P+0|G*C^8)NVqdrC|Qm1faw}|W@iao^8U!8qAFmlyjw_!Pb<0%OmXD-Z@ zJLkN|nD*w#^vEAYPuIr}P~lQyPnILR1h%|ILJPLWGNUhG9_zm>A{l0t!sDE<O0NY6 znx9j&5kbJzGxGiI5O&>2`-|)5nJOTves%a&8~)<sLq9S-?)wM|vB#1g^+gKVn-eE8 zU>JO5>Ki>LOD&Dz!k8h>6$e<X2<PeU8vZD=pTKn=Ja<keRrHR(gAedUm0(PIxRWru zqkYqUrFtFGOZ<`a(m00`S4l&Kn;E4R<M>zEo8a)m&pEZ(y>x6~(SHA24CWc>9!g$K zPtz)VP;U8j<J4BE-#}+}nyrH&^v{tox62u{m#rixH#Sz$mH^lXoL+CHzY}F?dga(I zZ+zA&8%cM5KfD4dHC;`x#{_0BSTBVh)lg2@ajN+wA9<+`ok8HQBpBO|p<N!G99VGU z{b@)C8KIH8UDjuV-zQqsh0ixXsh>Mf>6JRJF_Nc#U|knTq<mn&Sht|U3Bp78k@5UW zjKOno{DvL~!m0Ynz;=_qP3lpdYG@D2W7zP44>pLI!#QDrg!j;y?rGBB4ICL{*dwb& zt~c9eC^@{29o~@8;k%Ca1mClisxbB3ld;<llCY1W_0}_YomA3w`m4*3ccY+y1ql&% zX=`n9Y;rcUZ`!Juk$eyyUWVLw-qqSZDI`T?t&MyK;x#<K8*J{Jj+DS?&UTM)Dgr<k zaQ;ccT3WOd7gLiku|eqkh`D5D7nzDGU2a_lbF0xCz=xp=gFEkcs+?kbvgYj=fUwe{ zYWW6Bku5^o?N8+->Pv#zzKGRd&_!ytV)ryQ@8dSzYXuN)L#)F0+AT(*#nC&U9FXCj zZlFy@VW6IB$wOMs%t9G>@hjL5*I4`jukES-XPbAk(72G=&(&G4gmS+Rr@HR4onrX- z`7=3Dw{91Zsm=mV3z<}{-E0?9W4i&fT%(Unq`%9sb}SMiJ(}NKA-tY{2Ut-^>#Zr3 z8Q7rbeZ^q}9tnRGP9Yc-nJwF30j^3GqH>mit{ppqrI@T@@A@gWEexL3rz`r9m)6W9 zw%t50R4^)7P`Ec97mnX6wRl>{_M@1oKW>w<cvR=XdigN3`Fu<(*c=Xv2i>Go!#gaT zRmjavYHQwJ_NG|3!4USnL9{1fNdEmi#sd_CLIA=q3;h+cx1hW^TDslIlPO!~jTnBS zohJ3w4)no(gu5#n8a9q@;1KZrhRP295t(JqC#i;hSKKr8z^g4aRYD9MeEYS;6gIFw znzRJxs*9PC%lB!@T`5%O{{Ci@>i_$gJuw1k(_)Baqw(`<15Ulh4{gc-XVnQy{PJR@ z?jqA@u9jDviM;#*dz$FBFhNOCOk!DB5C&fz;^vE2#iRWbk(=C@iR56~!Ra_`;A^45 zWO!_f_1hyH(k#sJ_;R_BZrE7z02NFaZ~{|{s1#p}*6Z+n&HTrmFrl=BN#+=mQez&i z_mk8-CO0II_J@toYHm@0#b1|R3<!xu-Ud}=O(t3YK)bOZGpif9W1H>|sF7`=sz``A zQlGEBaA%2Fx_Ut95S<|yrBrohN=jngPz+~nhpQ>|*r=D3fC3JI`A9@#BQeuISv|%J zirHKf=tu~4AFUy#+K^X|^_0L!Y>w`XoSdM#@9~>cvz45^wIuu3gz??I!KewK`<Rwg z@8K(#EQypJ@VN@^krdkDJ+ze>_}WG;=m{&9$?boG-V(tdvdN0(U5UVIud56)y^TV> zb*&7#d|l#ZI^n8<0Tu%zs3-pp|24N7W8|Xf4A&MTR!XozgQiIJH`JLm=?B|zKflFX zSAq1VE`@W`;iMY)6D>f&O#j1uit^``g%<^P;7Mwu!Nus|I*3>UmmVd8wDW6j@t?x{ z!%Nv+kRMmXu$8CFnrqK<%CFQWtO7SSRaBTb;`37!W3BAx3KLmo%#Vpuw%1T6YIra% zby6<5wd$cy@{Ypl@LF%oi4Z2K!qwnMQv*<uKL6XhIjNm7^*BO4IJc{9B!Tb6>Hg2K z=SsSP^A9e$IoETjd1Wr6F1q+b<lkY@k{O5u(vWAKltFS+QY$pV2EscCWbtc|>$0=k zwB!V9+J*_YWHofP>O&==NHw#5{ux|+V*^R{$5IWg_d5%`dA_y-XRJT{%D;==vI5bq zx?M>LX;ccyPuINoqoPMse<~h+VW33-1LCQ$1HP;p{?XWJXtIvB7KOW-zZ7xXHGA+( zK**CzdTa4JlHmxHu4kiWJl1x+Y$dxCQ3Ud+3wS-zMH^^L;ZdVyvi8=T<G+a<XVf@Q zqZ5SD3$0Y`N%QTwDG(-?fx&J=*elqNDzhr(Dp2M(Ow=jRp)=lND)J&bvZqK$Vg=Ea z>55Vg-keN_&;Obx7jGM&iZXOJ9;?^Jad-d#EFExMD#FGfVC}n2Cu<iZ#$^nJ@Aehy zFRQre1YES)p9w0_?U;hCT@Cm<^tIuynF_5@dBV3p-ijwnTAWYOk`oRi<?)fA!puyj zFmRB^x7u$*=X?$iA5pq<QVFT<q#GYvDQM!Z$HhZ+9mbr_C)%z0rVijR!N7k5n%_=c zSOuEq*4p7sEXsOUA<ZYR&E!vs)HZlCP?Nb39<E~P8%z&D53dJryd73dcrnIB8=CF~ z_Qbq*PHV4Eu<zs-)6C9GwAQ6AoRtcwH~k;ABEZ*VuWU%7$zpopy-6#S*y$hMJDCD3 zyCdKpaP4$J_M<)9RW`R~sJ+V=s8%R`lKpG)2ZwY(ze){<tcOZ!PV9&#G!0}7(f^>< zSeq+et(fSpRqml+jp}DuDvNP+S0ZRvuj$-|x&D#d7Zovjld=85@bR!OzkAwHqOpcy z^vV3{=@XPt!K{dz0Lv-RGv?2Q`aw#lkHmhv!lNoj{Pdxby}&>}WlOUuB-CM2SVV&F ztIvhmpHG(NF*<Upl$gZ>LBSs_KZ|5RxKFYBZ(l-dF4dply6BK!35P76u4^(E0F@kZ z&(4@#kVOxd>fj3w)?)P{=R{_0D6x9>=IPGEicTotgWL7F+PsS;@Xhei%jg%;irHKj z^+aWGARNo;;gHXHoQ+NPQif7boh?5$*)JGuzlHVd4>s1gjl&b5hv<3qc(Gx;freZN zFnl9ANB<YVYD@G=mCOwfN*uptCIGllJCC#pq#vMl=l1fEQzuM0W1gy<4>#sTj^NJ1 zF^}SZP(GPYD7L(FBl{@n?<x{eq_ju(Gh5+s?09YP)J|$P^fW11Zr6m5p7qEK`Jwds zD~^lmEs`ekOEg9K82<nrEG$Y;4PLwAL=di*Kcr2F!%XupRG{t>P2g67J9fV;T?lb1 zhJKSATm&UDu9Hz<@Im;(2%C#q;cgu7xdIF)qamVxe@e=h5v(%ZGdCAOHa`x0_t#f* zK)bqAtNK*NjxoTs6hniHHSNRt<S*iOoy}I|gl4OxE{d8aUEF>9uFI8%949R!-);KV z33pLFbt0LfTal!Ul$rE$GPQ%#-p3Eez7Imlgs_H<S5}E#Ut8qo_5m^&M7m~a+CkjJ ze{QuO_Vw>@*~2WA=vEbY2B>gb%ldu<{GCrUM~XTy$J0h9^ITW!LebjefY-uGG8PZ) z>q*Nf%#4xO2ZuX=LUQdqnSDMuk@hVg6Av>An231p3`2a1{wuTHa*^lc2^~vU15eWY z-#QAdKtuQoQJ=MbYQG$BlfAi-OFvNL?}YiU#;2}s!vYCkJI=Z;Z7fU??)nB!a+5RB zVW+J!7nx!~5_?`0iN&v4=^&`SRw!qTf%!OL_I0EXjVt}0P}TmqJbqUqdiY(*o__}7 z<}QUbE1<U@$4Uja1#I*frV;-C3<yQ6T9h9T#?^OUU!<wg(02##%WmE<kHqNc1ZR8V zDR1_UESpq*dgNLELNe)FcEPKNyK`({H#JMs953lUh+l%!hqLWuqpTA0(!p8hGe@Fo z+y2W$a5La^<g}@=JrJph-n6?}QO1#4bI0io3@z*ufK>C}V^{+!8Icy@yOh+F+(!mK zZc^>RsC7rl?Zn<1oaj2HE_PaHUo)eAxb%&_akDhkOHU^`jOyo~CRU2(OOx2wqfjqA zUKmNXfvde37L_O&&~u<>{=272>{mZy{K_%ddYPd||7Uvd_mlU@U@OWU*tytip-?|T zc9iJqk+y46MB29)3X0V=1S|&&Wz!=Ne(jsZ9>44#O%Nt`xfWT)r=rc)A|9$GZyR+7 ztuk?OSx9%tMR)gfp>FUPvP{SsU3|U&s}1o%JF&zc3PzxVA5ZAB5L&InR?;HpbNnO* zd3m{L?YKI6m(~6}<#V0&g)WNCfN*SC#aCNub2^r5xm`p=@M#O|q%kk!#1a$ByC^E7 z9m)7rGAh+z#J_J97nbrQ9SM#puTFOXOBOpzpj#3y7uOL}jjqTQ)+A~I_Fpe<KZcr% zAFKV566TQs>`-so-p~6xKyQD53GXD5pd9A>P^5W(YxLU<uP35fy#kD&rJx<A3G+N7 zGmV4LgOZOG3WxhCpy*(Was~^_T@|IC(7x|X^z9DA&SNOG-frNt%X$T<rVkBM0V3Q3 zJIVAyn^(XMe6I+SJ#`WBth8(W0dtMA)UNO__r%CoZh~R?qIu{OpWA&dCq$tASp8X? zFQq@!fs9yQI9r$z-9i1%z{iu<d;9O+&l}c>vKFUf*O$F<#=b@Qno#K!{y^1!dZjYY z+VUCCVDT`s;Wts2-g69k;z~07pM#s7HiuOT!=iS<PJekTG#PE>xs4hAR~nyyf_Bh{ zGK3+krnM-2zI6}C0%S$F{;QS*uVI|AlG=tZhO$IbUVfz!C6>XoR35>B7YW0KCT_`= zFo}JIq%E5gQw2<#`8UQH$hyFMvonH8LAaG>d+>l;4J6v|axj14_npF5k_T^A9AhyT zT7aXMj)u1i&ji;>8YIHWzIk3A8VnUWLH3Uynl!v*j!2dEf1wb2TPS(?w4-j>)j(-c ztEs8wUeK>cYIP+%(XqF;6WDHbpz?q3-P<3InKY<GN7uI-ALa?e*gj2r?oE$ih`h*> zi279YWvXWK)OF8Yg{}R(_C*U<gMkTX2<f3dydBIM{r1pk=2J1r*R1+5^L`%7@`j*( z8G#MRBV!t{6pQk|bjIJ7L;<}u!KwHHG+o7NLbc?82m4GJ<<`oV%>=)fLf;(yNnV0v z5PC!M!tLlQc2Xg1$?3g^rAB#Ko6KX~khuK(S&6!G@2@{(wKAU@DY@9?2bOw6Bn57_ zy!PWxCU$VWY+sst@026#i9^&}iJ|1q+6hqpQ5<rNf1Hb*Jb=-CX>%bTVAd27v4(%e z#>`CE)%Ezxb*2lC(D$Bcqtk1++M=ko^_K*1pr_I=TG7mVFvtX#ve;v>>`F7!S6l<R zYR*1Z;*>?W8`?MM0X^&g+8`I0RNgLhxoj2(){TyqIfQ5VP4rnrAm~zS2SI%&ICM5j zAjA8!BsOhmM~2*tsn7b6oHl9LzE$bXdQ~Yjh|*!Bx7g{tmgR=_>0<-TwZ@lVs7`*M z!OTb_?^M%0Xmk;uy`c+98Uk|sk~>(M;T4X*!{dWa`>wDk=mO`5pKFY>><1@C6gdsU zR!GsTK@N;@f@L^q4rpDN06+B4&~*);D3KiVH23GLEE=p0q4&+eclBB_t||;7Z+m9% z8xmhmby?7dw!L%PfGPnsucKu6DutKTpzE@gKfOH`UWU}9z>O<M3l=|2lOi8d_GqxN zH$#U`OSbq8#i-`HmVgdC+7o0uq&i6bzQM)3s&4umzLayX>b@E<)CU>AiQ#TCrF$J7 z$bOX+++;%tD1+s~v_R$s9*WlKgVG_R*9!9bK45$Oj_$?1<&`lCpJxe{{fWy?6_gB5 zjf&5BEt0`RH`b-`-r|X6{D<gnOfP-{YYlvO`#586R;llk(w|^Fi+u5ln7SAotT@$X zSJU1dEtIH;#B}uUj*~e+pl7bbdr1Y~ylRK_@cw8hP(Ftj5t)#`=S+S(Si4p$Q^1WR zlV|w258;-Mxo|W&@vwUB3Bls>jznJPYP?cs!GxQ8iSK`Bw?_fBG+jpz`TLQ{5htA` z;Q1-%6q74joHAQ@r;ubuGSYBmw}V8>Q9PO53@qTIII|0PUieSa|Doxt<D%-muVEyH z?rxCoknWZ)=?)R;?ii#~q&t+78XBYqhLDgH7(%+FyW=;0pZERyerE1H=bpP`?X}lN zq5k;^mynm29K9EX1B=Pf8oU1%h6I1l<RSfoo_Qp^{1Wj*Ir{2uUcG!}o0F_Nb`J_} zVTqph1$y+4=<7dYwySa)AVD^mA1dT;VL_8n*GN%^<Y(cuR@-c4bZQ#FnIL20MBxZi z!4gwcnX`+FRmGyQVSf-QHYf**Zf08Qh^)_QTz0(N^~tQME<18#x!tqun;R(wO{#>} z_(X9e8agr-!8<+CcnTnO<uztRb`}tB#}#plOp{C`L`M2c-8RY1eTBw<UQ9Wo!>=6T zg}EiwO_Qz{WTu^q)ZKcMh1-7F^cPeBT(Agh`@VnA^>_=#S!X^}Jw>vp5E0tAIuL?= zb{P<?*gP#qiO^!B7S|QNBFYUqM&^Q-5z8nc_<iE)lUpj%8Qe2PJlcx_qNW#4<LI`G zSB_LSkzpqk;UWZkZ-4dK7*iV}=qyPg#UUL;J%x!8VX_hZ%6Fc@5Egn*M1iYQnbk*0 zhVAe$OY=OfAM(TZ#Jnv^{X|izm*!o(=I|w&aVMm81tu7oa>2a(S45H4OH>AEds5Op zQZ2el;v}aW!R-F&{7%JBLg>S_T)mo}Bg4xpbn?JH84{z%e_uKk&?`^@v+V*=>}5j} z@lQ%4Wre)7Ta%q7nUfb{mB5{WgE7OcT>wBXyZhyNUa%=vwP%{V9!bHP!joQ6>GmBt zI-pxVcg*!L8?8sj(}OEQ*;WPl>jlM>wJCxEUt=06P6nz9dbf*7uTIwZgCc_Fp8`Dh z>LpV`$zVx_sE2;vDv~Iv3WRpnR7l}O)`ht~Z}zi<e(;9IqAKid?tC=`CBFB;+|g+z zCqp1>UXL5KH$c2M{t85n;`s&smBJB<S4eD3g+hI+G+stgC2B>VU#^QV*h1h}@|=+1 zoY23-EFs?I#~gX3lOCck(`r>9jC8KODe~UB--LwOM7vB`lgT_T95-Jc6fBiz7{(Gw zH<y8!4mtT}bn2%2vrPJ5)0VO@v_DO2RV7)j416H%C2{f9Go@ADSnT#%Vv_}%$~zCH zQ7Gr?GewlnesvOZ;#vDHhZQ8_dgvC4<l?5puCzhbI9bVzRIRwSHqpzeq;*B<DH~Tf z^_ilYg!0Sp{zm=)Y~77FB|*Ly-iOxDiy5i;8#<6I&9h%Zt5N@I6Y!Z|Y(#~NNY0WE z<kuOb10D_Us`s{%B}OAfs9;wk>diY4t#}ZwusTpnQtEl6e`tM2j_`73CZh9L0q)B_ z(M?vZrS1aofU>5!a=3CG7|KVy*O6I&_vj{sqY5mFMDik2o$ruys_xuS9l1_MiaC;L zq<SaIl&to*(~cPHTUuN$P02IFX_GdF9)%+!L)dUG88Baq=gu<R`~O;3r~b=2W4p%U zY)qE8j6MFz2dg~<@AMvG?>a%_bT}*n)6_@%j;_aXXX;cz@P()LEjx-_4Z!`a<roNJ zif&w+QU8&IlVI7#*6KOmhy@M^Lk)y_`oQImu*2go&VD!Rr8rQ3jS=diB@5@ZKmKME zmU#Ut@O7oeL(0=;GNHd`WLEktS3OvaO7)*kP>rO|@ZshglYWhF4dlAq&+>4NqyIj! z=mT<e-J@UzH9CTU)y8*;)YMcfO1T_i=I{*Qczjl5*w4gYZDWqFJQ;+CKygT%c#ro^ z&@4zwT<nR<FYbj55Lz*oAt}qZbM`j_Fa(7Njxo?@o0PX2R&%~O8rsj>;)%_^AVEei za;iXigpn|-B>t%#nwzJhjkVNoR>dEG_f|VR$nh)_VpUJdYcFU1E$!>w)hvCbiI0<5 z73eNvsqs4`o~VmjDggi3+7*5LYg_0`0W0zAYJDl-*IfxI)#Z5*ql0gL--w=`VyRY| z_Ea;ja0f6eZw2_WLW@V*#s}(qI-|w#yZ1Z0a-ELKhp~De;o_5xPnn$JW{*>i{e`Oe zdVRsO<V>XT)efZ_DIK9?@6M-}8I_lk|5n$>xsIY}9Uh;Ml!qUhEYt!lThpvUvU@;b z*0=E^;KYk3eR<ybMPc%s3e9e_@88;DSNk#88KbbuA3oZ3Z{Tz)P!+|F=b(Y)*_;7P zRxd4^4VSZVb6&6S^jV!-Gh0^{{&rcbrggY!2JR%3&t|?2C;Pi~os8h_3CeM}bMiPy zkzjz%O>MtPG|*oSld2)O<~SU_=ih#XNRpe^V{8E(jL3aonw6UmE%Uu-K}93d8gIWl zA0%17x1aB0E;Prc3GzZzVT|gxYU~h%_ZVZx$Rc(MBl8WW1Mu{ewTn2X?DUZF{Uaf0 zvb3|FC(5vUSkep*@%r9`%P{_$mJ2#rZ}ttQsRm62pSws<FirAaD*sEC3IbTN(S_L^ z;YxDOJ*vTI%l&k*xlq>z5t*RA*S0<*#+Gw@V;EP%;wxozs-K#ySNq|Stao<F)enk7 z{qO7M^_VRm@fy|@E$RaT6qGhk{m`8$&HIXF%}4LBU`({1n2uW4^3mvFlx`)P2KFWj zXm_|Y=xYuki2j}n2EM|Z0XD%if=rukWwEhnx~~f)sGuqmx>m$}v<40(VQtN^>3)`P z!EouO^hI#8GdR{!6#dQtmX;3mHxjew*)YRZw`lTLG9T0{*|@03=Ivl7o^@wnIRA1$ zf>?6o3jH1Of!CU|@gC$^(^vahpg&(qNqpT!pJk8_fw|76njnM2sn#{J{l3$vUHCDU zV#R&s4V`HH|JMTe^~*#E`X{gz`pNY;n%gCaSaJhgez99q0G~4D_3a+r#mzyOGHA=y zJBc|X^USEy&nn3lQ<L}7Hl&}F=IfLU5R(S<J0vT0R=utWbsTmekmN*gTQ61YF@9}x zGC}I{{2K-K0VVAP<hpjta~pAfuaiYdp_hX4T}|&}`pX>6by1w}kGrNhS968S+nv@4 z8(>L~=6vXgB)=XX-6S4J_RnDa9|b{NWA7n4beDoALr2!*b~l%N-M`ykn3-{|NuGBv z$nq$N5Gity;`^D>fVKT{Rj;B2+*xK|S(>#wUkaCJ1F+`Mk7LH@?|AN6c&2rvpPiD+ z@@_@AMMv{T#`$LI#Y1u*`=~ICK2B>m{D#j#8q-dB8<LL`Azh{=N+O9((uKy8t{F9i z8dgMqsQ3D@J`hPyybK{_9(7LLMdhczke*&UH(K<#JL^I#EZ5e@hlzueJ8H?-HM?|U zf3~Vj&n*<4ujTE{*0utaUuoFMl(?kJ(tNu?c6(bb_Ru_w>s-0KpWp0&14%;wUM(DK zaT-Bd)YPHZF<E;ua%@mMaF#tPda9H&e;J(whPFzS^?U}g5%`V01cVM~edhx>VLlrq z{j(!Rz|(y5f%&hm_h6)#uQ}>7K0$nNn2KMPusk9(ku3^>@cBiNy<RhoF$fxQaA3v? zW3rBz*`|mzY?($SHvi)J<bFgs(%(g2AnuRvls%tKhN*p4Dk%guB8!wYX3(;J{5e0N z&*RaYlpwNZFO=q?YLB08_T$2%tu~n&QBp{pM$#Yz;^2v?B(XO6`pcW*4<*MQ8<Nmp z9|r=$XIpp<2KM(v3FC|~{f*7cF!*76F6XnheuCEm%Uz*jK{ppCeR7B2f=A)u5&3wp z3g~Qf()5Vt?=Tc&-8;Vv;o=t{yGD#XxfP>@m7Uf`dJRC_nX#B$pse&Sc@690d`^_v z;Nh{`FuuJX^Z^>68nrbJkN!xSuBqZ@K`a?1hzdhf)V_76%Ohz+<JZ)EE=GtrAkDL7 z?)epd*^dx1@Wx!jwJ$Yt6G5kJThU`F>i`@%>zh%;(dqvr*hv~{m1<ik8T?T$x2zmK zsBUR-(FYL^&DoH^zqfw2oo{_KBB0%fm>b8pw8ew;jcb|SIAKBfk#Y1_>7uGyNT2Nl zv*dgRARzMc{-?d#ZbrEts*$UMOa(nb?j%+!G2Cyy4Rr8l<><^6I_N)q<amsSsRv4S zniz)5y0ZseFW9edCUYYjvpV@(v(%?_%wGJ)cKWQ(X3r62#G}Q^ufVVZ9DdwI)8S+P zfenwDfQU+KY}?oEJa+-OVVG*!ut8jALgka1SK>tB_EfsDaFO;>9y4@MYDCzPI3<Qt z+^e3)a`#$bt0*>ItS7E8$FL7=R8bnzJvk>5ZHe1}&zEH08y<?0eqs6ZuV-^ROxFNE z8e(GNzJ5}{{0HXM=yJ_LwaPVcYGkA@NVO}6R&hN+&ghU*3Xh+Jo$%b*zlQf_SzGxR z6=@UFXS)B9DMTp|0i4NYjG>bKE)&sL7!SeHyv>LNr;Qpp9!~H2pM0>m-b2FDA#jxS ziu0HxJb!$B6?XX!S|H*7p5Q6;`NAT?0#3$XKmOCvA~g_AV}2Uod^H|#JBrI-pM+u0 zbI|i-XdYk~Wmu4wU^UFEp#k3%x=BP(-0;z>MTm>#2on0es}D<ccz|M9zERLwqd}1^ zRCiA9a!ffwcFm6tp?IjLL?_g;RPl_Z6JFNd$04Z-zU(N{|C}rCz)Ls1z{6rv8k;*g z3k^Kf5SNmoDdRQI_oOQj4<HYDGU!3$F3?<*#CLRbd|$t&RY@MDbhj^=!I)*VUj1jm z(0?LDfu+qF5xw^^M^OiTW*beqXo=tMPwAIYD|z!!eg(ih7i{K}lIy$Z4Y8<Y_elbF zEMS`zeY9kaYjyPfvLMq7w^jT48@0<&8fGVM8)%2gI((Qyi_k!1JW2fm)gtQ9U5e7- zt1J>TQHH+SnzsW!+avC;n?BfBdWpjKffh*xh^gj66T|1uy4)582+?Qz#&si2+qH8P zZxB1zEjTdVCyI3<q@wqO5WtL#7&29A+Rt5Wp3O>_t$?_$$EQXej_~f2^vQ$JZ5J8U z4lmEU8e$57t=JMBIW(J8v%n-vxT~|1(!47m5^I-wsS{W`EpP{@5>TIzNil3@v~swr za2xsvd^ShPfJQ20ByX;Yph8FgT9jq8FFD%JOAP)c>mgCMA4iw?h_sQqyZI^8yDz$1 zyTbknG%a1z%U(QdVqsJkC&3P$RwM8XQL7KLdv*0gpK1W<1!bS*x*Q@&G~;RyO&!vN zPJ~=L`<<@IzyUOk+eZxS;Co@yHa}|B;eZa>hidd<%4{7CKSOy@c9hYreipWk<r1s2 z|Mtij?>6E50iJZtlXt#UfmjHdQ&K`>ZVUoSk9r90g^|sl{+v+9G+Z=j$ej8Nz2zOE zMr0d0;!;r-uP-1$n^yQpEj%+Sg2lA883~nOXgi-4)t@MC2375L4i?}|)SoSXRZ8ah zdqq}_#|`aU7Bi#|nh|kz;lgDa80^`(N3o;MAf&cH8;NYRUf<J1R$VX6Fa>LUGkKdP zN<#(ME}vU!To)rvd%VeX_j$$Dda)3Q{D!8+#CB{<dBV}e7?%2`#kX%{=Q}4l7;u1; z`DMF+2@ZF3u?dSjjB@t?3(X&X@91h(R>;P-6bGj?y8}W^a$ugmJ7a177m!CA)Ar?r zl>ZPEt>Q=O{dI2axPIw0v`(#;noq=A0_Cl~VlJOIzW56Mb*X8M<$fU~o?tTFW>u~K zcV<u!(fK(0FwIE``(VU|P-lx+!&%NecPH}4sdY7(IB531;Wh~IcF$2jkBKG1UFT}1 zeBx02&I5n6XWUYF*xK(UWR?&uw<*!%mQ8DHb*MNQrtve21SCWU{ZMqu|3rG?0yW8T zsVTDjz(vGiULyW0{2X#lL{+CVV%_!_9W8x8FnpoD-XTF#*VCluFIxB2Jet%R{e$gW z<GDhnG;=X1&Suyze`(GZECMp@SxB0d#&kjc*%NEq$uJD&*XDho?|1v_72F{SX-r?Q zYc^k0Tt@Ou((5RF;;AC<t8`09NXYW;|5>vAE3Qn1wD7YA-0TwKK@MWhAL_N3gyqik z>)p;zq7W=D0)4Gk$iQFOg6sbzHg7~gc$FYR{ulSI=uxw-zul46ONk@>SLDBeF6HTx zju4}O6lG1ZL^&<>fSHkzxZvUK5Im{pQ--K`akNda%9u3`S}qBmfx~%S-<qXG%y4#R zWgcw;fe9UqH$s*gP(!I0?}lw+A9q}XyUeH1*T#cL`KUHZdqFsH2}h%ls%wowXPtEY z9SR7V8R@Cb(DA=XCG;TGz(*}DqgiF$fuK01CX71ArfM0h0WP?_W~|tI&$`rwY?12g z%kjtM;`|F%_^9LyH#kGZZN2Y~C&1-*v{dO~R`RUb+_a7n?l=pZfX6=<1i}Vth3rxQ zT)#j60dW#!R<%A$Hq2Ljf3cs;!KX^PQJur`&qEWavHbzB7sDwSVw4u+`QQIeC(RLt z?0rC3%hb1cgDOk%jmDT^dIe8oYXm7eQcYcBq0Dolz=~z2A0zjJI%7D1ELvi={yqsq z-|vmK->XpccZ83(Uk!)&N1;TXPN>c?A&)l8z#X-OBrqo7BTs!t?-TOKi7}trk-)tP zVSE-<iI1+5G^3C_(lo&$C&u*QRZjCFNc5w(h@^I*&8K_4iVE}jv;M9=|1Osz$r9>< zA$+hN8@VA%Se5vcjv`;}oZhNS)*ELkx$Bj#Koaww5Gr#kgX;&J<AtEOy6$H-Q|M&5 zCfN5#DN_=iVfQ<nYbTORsd0cr6h&N$5;W6)#<b(&*V90O9{2BC!=%?LrR-_CI1iQh z*+pZRE#32Q)9`#r%P1n}aM#z${g&#u9ah{fg(gK6L-ZO+0|~%2uKmHfi+j$UxX>z3 zEk7f<nVcrJ0!e^pIDo*Dx`Jg)Z6YF*+uS<*ieR-X;8DbftN>e8b@cW}{HzBU!ySL} z=TaKcY3r{6%WP#ior-EdG5KfQeikon!zRLdgm%mKh)j|?oFClvHKNw-<K*Ks?RAE7 z9o|;NZ$?R<#S)DUmfL$X;L#RYdk<G~WTlI>?`d8Q?T8kI7zo$XNQt%p807fo+}Wn} zfGsVp)zqGTD}jb9AA&c}2QRX4yx?M7xA$|uPG=2-oHPcu*=eFLb|)610$Sn)Ro|9r zB}w3znsk2;MTz+r)p#iukv~)V#4_kJ<*aAstCmj+B2^Rc)xXjX>|8tI$B(4ZI+j_? zNCree>SZAZype1_Ro$32OfZU0<>*E@@IQk-W<enmjE1|cw$3&U`wv7MSE546R8`DS z9MbX2+bNr+;T)BIwg@ilK<fZw5|%W^^@L7`cWXNNTt5fWb0FfuZw2qs9azGqnAYcj z84XEw!&r|$qr<IC#KsmGXNW`9)OW>$F-htgkvcz%(E(3c7r(;Cbs!dgl~5sBaUKV} zW%)T{BybS_(#A*12~40p!ag7xSJdzXP-Z403srT9>#~-ek6{s!kXV)aU5KiwB|v4} zS9f%)>q0-Z6In!8&DSn|*Q892{)ib*>EmYq3IS(Fb2KM&p#h$W{flpsr1>AeOSpy7 zp*E-mi3eO1Mhkjcg&GyOfAo>9pI9J3I{;sQ!-s=R*TB~@%Nb4b4o5jhVSvy_HVk(l zUrK2GcK`nDyXwh^`c2nWwWaTBHWP!+>1Ak!3~*PTSZZ!yZDK8&pnxi6z_iA@62VxB zwsp`)rDVs){RJF5b)t0cz8;Tk+fL4Oc0`Lzh_B_3USMiDO5UjOg~9CZkX1rsC^ZHF zIVdnr-@R+la8?@iXWL=Q<_@VU;tFLIAf&>Gct#*{-a(ja_`@(rg@@Iel%O8V$+>T% zrTe3Iu)hNuaht+nNmp2Yv%7f~PV33?AlKqNG@2$jrk$`QF3kQzdx`}|{C8U1f1axd z13<zu!R@N~)MK`BgDLr$PkW*A(I9Y#7Vxibzyct26>Wcd%Ovs!nc@XM7tH{-1U_zi z1Yxs6&B;oKP3Ss6;!0G!7hSzc9u6BbjKya)FbcFcUfnM;A@Q&QS!hDQ&aee!@r(tc zS3C-Sd6rnRONpevXZv*WGbUXK08~BugTlr-V8JAII^u~}e4{%GwjgTrPJz&~aWY8X zj+J5wbP|ttL%!QWiFdWy)Y5Vz^e<kHtn?_tzHtK*&(Jqm4v}@>Qj}tLdOTai?2R7% zC?biLp;IV9l;;;AP8+a*C2X2_+OuMYo)G=`E1#g?dr#KqHJlK<|FH>okExsjd^t@! z{SYZurqDMs(B?t~5&tU~xB%t-pH~+W-?z5CVkOukec5ptBQlUJDpj&U?Q;Rv;%Zp^ zWIE>Mz(7q8h``S(znZ2IrSat=edr1x`pKrCi2x3{$|zBL*L{5`E-+_W)j43D2B60% za7qwKM=?F^eq32AmPN2~u+Ig|C>k#JWA}m;)zrJuH*E;k%L}QkF51i2$*S>}mBPc* zv50t~2!yHq7?|scC8A42BLK)F2JhpyPxvxJ)49{Qm5INjqWtoxwDrrP6Fvkb23|{N z>7EU#PNxQT98?50rDE|$*rmha5J`RdEGhFk$MIzEgm;l}C_diI@Tp8_mVyms%Q7^E zR$}w-;omjLfjDI|;T0BTFNO+F)WhtQq+n}{T5(xJ*U$W>dc4h!JH{rm!;;`#{oBKP zd&4U<iWRdq((zs$#6SI2?|*=@%C~dv4jC^fnxtRH?dttB)IoWW;DwyfIoc?C{*E?0 zt|pD781LH>nF5}soCoK&?{SL<%uO{R$SN{TPy;E|3QkP2Z-tjT<G!3Rx1s{{hc-tS zEINbeW=a<)2Ez)Q(Lz#W<<=%~(1qvzf-xElgb22iK(PwcY^$;IMNcv<mzz&31Xb^> z&4Li^LDjNkpk4d}E0c_hOi3=vt110D-af$w4umN|L;>_grn(Dg&#W`L3ZY_!S_HTq z#9e1de8H&iP=bGUi<jX);8s>yX<&tY!MFk?ukVWVIH$>YCC1NSYQpNqlF8JgXnq&T z4DkNpxC!zzFQ25!SODh54PP)?x~G)yM2fJf#j0Y)F-I|HZs!2JB$41=bPp%kfXzs4 zQ`b_b+Q8vi-A62F*91`Ym({yk-@nQxzh3H#4Oe7GR;<x^ky;j)4%*i@)hNi}SF`HX zmzTsN{p5rvLLd0Kog@c@R)cKh3SENk?Ap$U)7_o{JG69>?h1`>f6a}IoDcAMyr~>B z61(vLZ>{)s9`WawD#ViQW{{5aTYv0WNKjuOIH{mq_URJK6g(%LObkRnNp@^qChQgi zyd8J{eu?R$*;r^OsXqD&YqHSkIcOmR*2O#DyW3f)Qy{!pm39D!q-CWT;qR&<N$(kO zlJ|&qo%&$(mcUU!lgzU1CtCn<*2>XJ`{yw2IV++M9x&KvWp-vHADJ-k@(Sh80`JKC zjl9r*rX|R0ZH<EA-3HVr2I2t<S2<*xq+{!9rcN~5mc&>bpN5Mma>4S|96iyqh;u+p z$MeM9!M?_F8`AN!!S3!_SEqoM1&J+xKWuTn)ROpl!i<tC+nd2KadBdie0=|<1y9az zj>VQ7n|a?EN4S1Ow(7Fk`T;Lr2!E71Vfos1G(TQHyHpCE<>yB#;Ov(h%yR&mV|7Gp zIb&23d(I9_vn&H8s=HRDAB-ZK!<|3ya`eg8^F&iMpVUNfySB-mtuq?37U?B;%!qOL zI&C8wWQcF~6a8xQ|0WhiJi4)N{;|KFifA!?hRG#X$u?cXEL_*?Y;5^P#$1i<#Yl!$ zA6JZs4dWo`-M%c$2xN<JV^o=>_u_dN^_2N^x^I##?fEhj!ly?LH^?JE7&{LN@sr(; zklGoOW)l*#pWFm37*=P$)VS1@>0(XlUw_+~S9uwEORmKjiyVS(D25wyyWRcKLb|<2 zj-P|OCStyBCF<=l8K{fC&3I-sQx_zLI5E)$ZOA%NUntt{>+veBE6-O+QArzdVblOw zLQV-YQE}#4P1;d%Q`_=okt#S$B-Fiy>NL$?Qo}UiL$$N)OqRmlx!xaPRudh}xiIm{ ze?Hn9r#dbQ<`24?-Ce&YDU3?y4h24cg-NXJGA)owLOvW31e&`U0y(jqIwV_T^?`;g zV3@RVRv5aHp6h467Vkj9N~g-iZ9Ds>%vE5to3j5G@2QCcJ?toEDd;x5n70=OSyhBt z_yAY=D_rdWC;8EV9wZ<*)q4mPq-Lb7aGo^ZBU}bP7x9LOlZe@x4+(c-9>#NgO^oPM zR@t>mdrNM3?18G<=8<0J3-dd^a>Se<Ed;Ntb<57=@`#DKstgVeW;kyk&t)Xze0P&d zt{IQPO&d?(yj?o(c+*@P0Xb8Gm{dCF#gwH-1PaQygtf-C6H*);SozzLsSfw?fnpau z8$GSwUpu$G@#SAOzZVU<-uBMbJi~)ScW&#lq-1ZM)9l%vKD@a-i>n!06aay~*aTpA zR+>>HzN!Bv-``}^VgI@!!D=IG+%|_2YHSv$?ATcgUpXl@;6rWj=v6Q)fq~-5vz2Fg zF{4%Vh4{cbASNOrIzwfyAgg7j_((pS+vR}>z1#A5Rm<uY28p0FxhVTdZNYyw;OT7h zOE7;^JZ5*o0(OEdSOkaN;mHe7X4%i>RiLWCsRH3&^>8cmN5JB*(!jU&(~O~_zN%Gj zbZ&gO%AS-#>j-INJBTf;Ev>(W+lG*YIyR3_a&sxVg+{mH-E21E-A<nK-EN+b+;)%i z-8QSZq0O3gkvNjlBuP;NEd!;=cTr$0O7}8_@T1%exXzAYmWPbBa0|!76g^o!JNaKZ z+1CloU)Hcvlrik1h+@!r&;OOJ_kgBFK|O5}XSq*1%b9#2#&^%wJ!G-w@FeQ1G(_xl zqrRCiU(`>BP}J{p7QL)9;`-l-h^L<kpJ=lB=7&)w(hx_;mJ=Ka#B{m2Ya<*mEpi}R z`|t@ZOI}IP-1qO_Ta_AOJCc_4{@UFqeeQR1`m46n&#@j9^R8Hp`lAwwV~G%fp><zB zErzC-C<Z7Mgs}7q`AKgg)f=LE!h7ktjvci1Nw#}u4&4x8mt?1Jxvx6ke&;>7^HBV{ zyo~}b<PuqGTNj-y`G}j^GyzqSDFx9Woi@_NTgL3XcmC6ac3hr9xl~NVhTP9zA!EW( z*u{ry;?iD&Htg>krypPjC#3LjAf3vr_aK}|t#ZF~!$F3IXQDUHPqLf=bZ%Nm_eXA1 zMkX(X@vod2ha--4)Ksi@h36I(5{P9j@Cg=ZY0z;^gWpp?a|GcNF);@{rGgW-&D#6f zuM^iEW8NN;^%iR^ueWLsQ6M{fpT#>okOsw+#F>aX+3}w?***Uh_pG!uLJ()=$d7l2 zx1*#cB1C!}m;HMG8Of*B@OIF@yFmwDL2zX@$;~y~vgEIJt+j#8be!%SQ5e1|jPCF~ zjyMT<HuJkZwQBQCe$X{VUG)UZYI(1Xs5u2XlnDA2i`;dS`ghPXVnx@~ep5EIRY{GR z@m4Xy)O;qKpJ=B@c3FSgDi)Ak6JP*e3_UHIS&Sf=b6Q-bW>3RodaYx%_!zHv3N0mA zELI~2JHCE`Mn9JmxS#OZd45IN5u=wDP1haGK%-#ic(#$BA5Kifa1y<dBMm&~Q0vaa zbS*aJaq)B{2*;W0iw@KKM86KuvHkLvt@cCH9$xk|<O`e!m6{OtrpU|{vL8Ztyr2j# zJb)QYB=ZvSlGf*<){61R>%+ysm@clak<C|c#>x%ryNugB7B@D&a1L~KHc=j1k{nG) zy<ieFNn!6!6k@y?D|M4xDd=i1rYiAn41S>788`?Z-7)It(QI6j;2Uq-=%g^CBk+e) z?MdkYPs2A4`b=E&E>9h87#1qlF|7=9vTI&+ZojGQMx^o?epJ%9B8s77)u)!5ZrFx= z+b)`d6wKi2wRLb0IWM6YC7^KnmKOxvv5AMAzkWRJpy|^!e9gowWKArWqn}~WcYj}& zcu?zMmyO4QcT4_}fgLilO}}#zTHwxRTY1Q7Hy4R3{1$jv&NV}iw?s{Dk<+tAiC<XZ zHS-#17e0c(N!U#O<Kyd6HgJ~_PP}(vrhu3PMcZDla1>?8&7X<By64kOu+B0@p-koN z-q#>e+l_)FPDFFlso00HZ~EC<6C-xqm>D3W3#~FWR_x87G=G}GCsrIf9yg?qX&0H~ z+%FSPZY!;Ph&wOCA$+(sa62DJ_xZ=6hS$J2c<)4hiFK@p<%jV4-Q^&oPOq#b0MSra z5lj<Jw{A~^@4n(<DNK-2zLgh!!(L^$c!edHA4nPUcvgN2JqZPJ7c09N95mlJYSHg! zB&eFq3EM)uRo(JhFy1oV@hB1KpGLmXIBnuC&3Dm+Hv=@$YPI0{v~jzB(xaRtosw@{ zk8HD4Z9Ro)`O;n*wD&S>N^7vAL{qz1t`Zx+o_589Vu`rt632J=p0vrj|Ao4p(O;Jf zOMOfQi)4o1O=TC>;XjZ08|f_QROH*_WPn@Z`zx3?T7LUOWM+2r;Dl#;3ee6f^a<Yb zcI#+QVf&{G7sd^!Y_$DR63Q((FkZj6%5KJ6@b@~!Ua&J}IIHC|H_R;*h>k^Q{hfib z(Cia^@4KA$^?_I4)T?)p9FMJ^?q?6$0<X}cBxlb+4euS78wDh_b7hk-q_@y&1-D`| zuuV>={XM_7%ge?2*rP3dBAfo?HYZXn8wugT1?S)lMv5-kP^mi?*%=ZDPg%<h<Q}C6 zm`275w6GEE&|8@aIQHocF6;<%qiyZ9Ofs!@7PR0Xz~#fRq@FHWf-ZhRPfv4E*Wo(G zE&DUf22#D>HA#Z^2rlAEl>{@A|6l+(qwJ08Za<AmArKzVTmPU6C}l6Z>5QX0|Hn?% zLSlP43=uh;=j)xHoPByv9{`Vuu0KJvy*~fsKN!spy(bz;yrp6xz~Yd2TWXDw0X!z- z{p63gxk=Cxc=ffAdg)8ujB9y4`w1VDp(~k0Bo>J<U*Wb4W4IK7kF=HQXpUun&}QbG zES`s}K8!T2cC%eUS=HVD<6Q)#m>zQfVdU=lz*^_Ep}C_3;eL((Aitq(@M)B-P^2;o z_WLR@%1#E_-oD;^BC2u5k!%kL2hq{c*%|Lahl7IyRsy`Zz?k!Cm+nifbBS=AuV4Q& zl-U;<zsu`{{x>C*E&dOj*+xhN+;M$fww5Ji9$1kC2XrVskyv(hS9VDw3YNRmV%eKb zLZfb?%rPWn*y-tbfJoS1+v#vp(RIu_HJ<w<!lIzLL0SEAoCl(@`991{1-bOS>uSqg zIZ&p#`Z$6byyY%Y%L?QL-CB1g?ZLa;$WL-Px9x=fU!vr4ZzE?b^SI!lBR1LB1d9zv zdscirl6(yefF27BMezex({-O9dL)7zCPfzW6yyuo>zh^X_msgmNwBg>w}o!Ek43@7 zkw$(xTt1cqYe|=IRHXiVrlI+0_rnCdZM^ryr!8@{*|AWzxXm)PNlD3S9Zur=8L`mP zM!4ln_VA8&j)R4@B=U!!w#)oLTS<?^gmv}fzYQP-p>ID84355hHPCp_VLC;>$N8pu ziC(i8AuR<Y6dNh&p)r>ztCtkt9`HPe#tRdmTgJi+ml_hccXoEbfmbGDky!%q{hllY z-1RC1LIs;_8cl{giNlXRWnZLmdcJK$OU3bf5s#6waT5ySLcoNY<Ro!>2U~f`_ECPU z`1#U0uoU_=@74YH+HYMes{#pm9KTFK1;eAP<AkE$3|!kD{p28-3J-haKwiwKsZLwe z=TI8h;nW5VDTR9<mL%ry-qBeSd9r-SUgKJ9Y=mK;bbN$2%2b{HEjM@-Eos*7!D#x3 zFgm<5P>-L5h|>DyFIJ`hv3sD=!=Kb7B)o}&4+^j0)MF{&T0X#E3R5W?!oHDw&zknn z@l9d?vilJ>N_sMz0;gVwl&<`Vh$9^0k4VNxy8#sy@uJ#+^keGl(U!P3kkev?>Q-T$ zF?O}n5$pIZfp7HfJn#nZ+6N)HwOpI3ki{&QAiC|3TDSUfu_d<wvBhM6yA#RrV`~&Y zX*KF)?PznDo)3Ad_UcmNkD`G#!=+WJj%u{@${e#?<?TJ`KN#_p=6dHzB?~D~HNCxC ziLLtTZ?f^o)WTh6dH-!viK6(7p^9lo8m<EC#75Mp#Z(4n9*Za8?)%f>+t-D91Kywc zqt!0QK0M14kd%RMpa>hk6Rm%gsN&EJgc_y_(D21^#TO|#3-*>Y;tB^KT{EAYjPikU zJ3=mnD)8YPsW|D@@rK{M*Y1H#_9mhvTzi~86HGyd_UhVw(Xv`U-IPW_<zRtR&)-M} zAq$JkgSUT6Pp^M99pT9+gr`;w4KX_@&rEkPQh2H_zV7rJKl@<RAH=fP-&2MrsQ215 z0$f+kf}}jwjIM~*>ZMVMzDrEUIaSL4m)<5|8*UvKAU|M^R2*|A+!gFVm)H-}_@I^z zPBPB8qmgPnC$oaYfz(06fop70^FUVP(G9Pd2tlpYoxF-GaCbe3PE+;6OFUSaYw>vD z0^`Ck+ZmDgXS&<P&M&vC8BK87VKf|KdC+x}L~c*@?u;~~?`b*Z=yT;TC&u^l6AkEv zG&Xm#8t?LlBNT>y#~3ha`MB;4U6kR)4w=otr+w&H&g@)m<a00ed2rpFCF~J8tdlQ+ zbNa)~dOH4CxaHfhQWEB4kWlwkycRcP!mXBA>5=5Ke`z?8jZya)yuXNza%e-O67!1E zPJu<>_e#*gnQK<Dq&TZDvvpA6LEVc0mynfiQxBGi6H9f~h&mRVS6tN<oj7s$es+-D z<B`mOHvo2VgHIl)i(ep+zzsjQA9D|ye>eT%QkTMOpH+GtMd;jMz;6K^FG0FbH%xtZ zxHX;C@4t3s6{kescJl;$_K0Lw-9Wm|In{ZMq2NS8%U6XQ^~U3nKnl0hwRZ8#xE`%J z6o2@pSNG8N<#hei>Cr?tR%`v=KO`1G)Ldrw2;1lSJ15_=UKtH-3|jjek&YvA2!-A@ zzFQ{MAc6jErtR@JAIWD#I$ged%&o8eW@1lj19MG#NRqd)uM(;`DrGb$`GZ@bb8O+% zdE4^?j}RKD&veT2?8008&qQ4&N$<-qRGpV*-H*c56&3yW%<~dy9v*(ebkBb#Wk2!s z+{>lylBk;U4>d`Ob2-y9Nnsg^VpL?Ub;qXX=-1QqKQ4zGQJY)h?`$e*_PK^$h#4}K zIdNPq?u$lAIK$u~0c83px>|0vhTWByV?-irA*noR;|2WIH3&Y+vBu*X69A^n$FpU6 zz4VQ+$d2Pj0)zZW$gp(L@_QXB`@ie0qt=Gi4@P<kql;7w^jMn2>h&v6kHX-_M(2_K z#l@VOTY=<cv<uG*L8Q1U>8X$P_iNp(gfx9B?(2`p9E=B^f}O#sWQM5@dR|VkCR>@; zsj+pu4|~1VZEin($&M<BAzzot6d~W4+0))>01%~Kj)r^?lb5CO5PqjUpjN3#Q{L`2 z*b7f?#AW{%yLGWl0T-|x-mV3`3Td~e^!;*e<`Mk0RWuFoLnU&3R_oJ_R?V8K4W;WZ zMspEY5XI1dZ$nLYQ;e0Wu5Mi)!J+ZfEnY}6O?2h(JP1zHtDi;jse^|%*p4MX5yuyB zF}i2lGrCl<GJ<{993?|T2`%mwLg^=1b(ML&cTOslw^-qkRXGi4E@SpCM69`9K333? zlWd;wl7KbW@(h1I$X5U?OOY95Zeh`iw#Yxj-@>|mP&vPj$U)?5S=#oz;Efr4&tlrf zL(XP+7R%8{>`X$c5_v;F6f>nQZ|z6OnI>j<Uz2o$UO9u`q)&+!3z63VQc42S9s+-P zOJ&4P1lqBQ!b2C7c<Fl&d(*}OvOg|yF;<5`H4o#p@%bWR&OWox1Icov`!LjSx%9TV zN5EWWIX&;SQy+YtT2Z?M+&qc_Q|XyMPKs2Kqr`*AKAzg!(}+F(zH7}GtrTO>Y0FMR z+P?L&88|KJVIV+82l0o6HFsY>B*<mL&X=~&$DLF24ri^YZ_k{qQE3=pwe9gwJ3CBF zA6+-P>fb}@48YYK2L7935zvC}$Mg8pVdn1jKkc4*n!N@QnG-8mw{2D`n1rO@=9{+x z>Dk0KY{0!E_>{oaEZKh;1ruP;C@|w8P=`s9?C##8PbpTQ%|FYI#1+0~6(BhE3L7RC zqKh-hn>zsN@=9<$E}Ge{W-722HgfNMZA`!S(Y=JJIqqJcfrGoJb(^LfZ1N`4FBm<( z|Mu3CVp<@&7*mgLx-%xK2A(Wrr93SJT#uzC<%h(zA}pzmVgfmJFdcjdaE<-b{O`jY zcUOrs!@Y?C_9&ohpUl;OkM=8NL6chT!P~!g;-?0Q`XpCH^E?N9hTf|=zQ=knbK{Or zY{okDdKruoRadv3E#Kva!j;(jCb}O4;abpQLDzTo>u{AIu#PFuLFGjlW4dR{t=+4n z&UOnFvqWNjjja}zoxG9#CdJ>I#V=_R?`iqy-0txzw4Xx_3LkrJe#{o6#pb`?mRgQa z+4z^=Q3Gn#!a@&q7Z!9XKa|MX+nesXF#{h=RnjdGQkx;&*YySi$sxz4U5Ruk6ixD- zf%d8$9?3DW?iR(das9bMu4ClAbn28X{SLTThK#}?IsP6x%~T>v;m{nn?ck98?s#E& z<O<=4z7nyimNIs8yAUkrk)qE^z%Ae*ofH3J&N9~#R|_YzcZeS2p}Ng<@M9PvW0>bR z;olyPfnqM!?UWz#*ChE(pN=HPF|vH&q70HlTZfub+gyt@_PHwyO38YD-4wUj#a~w& z`WId##1$U~R)#jr?x_y*6$#<?v55h9`=ytKz%Tg`i$G=ZLOTX-1>}?v{uIBMFdxT7 z+;klNrucl_%3~Uv{{Tdx^L&m7zLP_Bs$xF-N{{~ro}uZoX=H6Z<4)B3behmJ^}X(9 z)3ABu-&LC=@BLHd5M0r3w3wIN+eK@tU5qc|O)uI>3A4J$q}&uwQ0ig(rff?!j?Bdw zCzsMBt&5pq0mqEEfJMJ-vEWG_ah@^vtI3a3b4r$pU|$4DbFkgX+9vX@@a?`+5VxK) z+28Ee#`iUTt*6-fal7m6ECj7q#cjSX=5YFhPn-MZD32%~`Tm;807m3t-bn=~lXji! z=2vAP!*UORI8MLZXEiPwju)QdNngBBbZt$i!qLj4jxHX8MED*+r4jPQqDc*hjvpPY zEa#0CRBzJLia1`Ag?YSsy3KwQ?n%YNz43JZ9m^pg@?RRW2@4yq!K>rxkImI}-xN7! zhe!A01acLSn9z6V*BmGjQQwq53vn{Ne-qoPZtSV11Q2GgB>Gv$>DDTz#8{%cXl*#w z8tGaNCI*-RLHrS6J^XP(d99z9hlowQR-UJh&+OF~7sXjl`_4-9-{QnGN2$BGbPu7% zCxTmk5EJvxe<Y?bJHNrEVI^MWT%yM|RlJ6i?jmud9%=J>c>3<<pIs28o>MZ9w({fF zWv;o-8`4K}YO`tY*3<u$?$>~qEH5XOYC+VJFK!GGIN0X&?zr$GBn=Wv^wRx-@>uPc zxPB%MJTJj^yip$WYEzCNMx^wY+_j$A+031(;-3Db+2oKQ$^!9$PGB{Wl!SzHDzgD^ z>=(HlCl-Qq!tr{`g0V4un=`HzzAaE6k|sF9&B0igi9>4g%n21=>lQvcZsTxj>gJpD zXC)znt%>kV2QnsRq;Yz{+gN31dRGkUzU%yrxLbKqd4H3kWfT|q99C`2a!N80`x8bk zxvu8s*c%)UqBW@c$*rUj%qZeK%&u&g1iIA9502=@+|0_nI$eJ{g-bhQ>c>-%X84my z8H;}AzD<IB1f39F+q^ye)90(4XJI8jK;LrbPjmOwtib+{2og*eMts%#%k5%AFUxq9 zbG=}sU-3wMSGB_XII09rh_RxDXi#yc{IT;OeAVf$^EsNkMQ_}`X`6y~+4BCXi4}iS zlerJhm2xhDPj0J&@(l`m`Ww~m%R5G>gLgi&V7h*P$BTzQ`X(pKifqu-2<3eewj?V) z;k!ds`imsHqE<9ykSJi(sdl>rm$)m%(<eR9dWBf)k~uC-=EqLEt|6~^2%Q@-Zp_g@ z+7*{Gs`G+bwBRQe#~yJdzOM}=+5r!3k$_dI(;Wx~Qf>FIn-N9BA*7=>kNV*1O8^HE z|4gIR`}cz!L^xofff^HwXvg{5C>+U7((%GwTy@(%Um(>*y#L}tpKh3TzZ|;i_OACi z$=@v!_|d>YVq<UKFN{>YUG-7zDCYw)-7!~I9uF$J!wm~2Dq=`}V=x`00Gce^1Q$H= z*{1YNSRZZCV-O3BnsLWQX4ZMRf3S#Fk`l+(du^`SRsS|+6gHfZJAP+QU?@fnEowo3 zP)zu(*tgeyQI_ZS$Jd1?9Vxcjw-q6jKT8?JS8qDE$`CpTUcMf}=u}p=Uqt3w%D-5Y z=%i3rA>vobgtxxaSvvDLw$AaX78MzJ$c>H##2nBY-D^R7adxez+>^=Srg18K{VP}} z4_bg{irE)xC`lfGyer{mKEQTU(W}$oX(*a;(HL@nR_;bK(ogd=B}El-7JmW;{FYFg zen!eW3z6fm{qa8Bv77(arYt1ZhQ#1C%YDaZc0>5VDZrJ!cp$)~R?9~C6#Bh<SstD% z!m$cz87g+pwn^;Xe2U>I@_K+B$l|3yGLXFc1<phrl9E76<u;G>^^CW2{NzdBHkCgS z?3N!U@rEiL@v*2lEB)1clcW}@8zbHI-d_2_JFza`#bLIMb#X-ndYvBvma(Fg;_o&V zL6BQ-Z2OAL-c5o!FU>!?tcpNNYCxsA&*&M?KKqE}T(4dftU%pTDKHTo**K6MLKgCn zd=f=!FYsuHkYW0j&T*&n*Jb1Hm<XL-qOH05TR9thWc^s*>yQmuToYKGwVj;^2PbD# zUC%RHkjItE?d^G~+uvy=tF54%Mun(<6e>zOK;S-NpfS^ALf}f%2GCW{2m_=WkAUp` zpfe;%L?sr@;7;-p{hpy&o1!)7`O*L3TnOHJ-Ju`)@^rJl&}hGYl=~OV^T1WjVQsy| zChBQO2U~bxW2+U=tJfK2c?gQg)d}Mtl9*|*6q}_-)K9;0AFanka|)SAIFHO13CSUY z8QK>Z+0MxCE&Vzo?lCdla1bfQ$QzxHWP$f!6w^;?K2cdBPRZA(FKRLSxofP5leE|v zu!y!$HCeG?d*?2P-JnV;{yzNk$tz}U-<6alwy-tySVngf6=O6^Ullw5HKzr^tum<H z=mM<sNVKAxs++p*+w)NKtMqoe?wJ-2sl9Rv@?|#_eJLiH=&^;YVkF&B4gZt9vc#1h zUDCyYz57>54~i*qg9iR1HYDL9UYF0MZ$LEuJn9!L51BdGzqeP5E#l)96pXSX7qUu( zxJ9UYT`U#MiF$s-wzPc`z}92Y8PeRLT$HzqtW~gr5WPdfxKRG;F4Lb5G@#Ql{^mQV zF@Lt#G|;iH++uIJ(P$qP=mDqDkctB;Lo!5gI=ah(X2|ZAFe2y2#3G><ogBoeul;CV zt0<<Voq!&ppdr45k%$59R@!2-Glsz!_1c{(JMY<=ie-_9U%B&!4fj-pX>9s_qBsZr zLq61G+xYc^VQO3OP*a#3NwE@#Bf7HuPs8fFY>53t=<4fCmr9~;SEM-Z%`SqIWYO;C zoA>N-HsR9ssT}u9@k8U8`GP|XGo>N~kNXom<0*zFX3dFT+Z+gQ;=yQhV0i)F+IBb) z5fRF1TeGpxv0NBFE*i>4AYdRr)cG^_f_YCZA;#{fJUXFBdd{W3<hd<M4ESpE&Ko}@ zqelUsPWRs?V<RHAOv6|LT_QvzqNUb<*=%oh^tI6~k~pvNsWs_Ad>k+Y*ZLO4W<0Tx zSBYKf*5bp&>>nHlSM8dDjx8<VBP9nE=mx<f%iHXk&N|lvI9xFNhFxw;YEu3;na7M~ zBok!XyjuSh=TJZhSD=8~lOOdXrP0`ghRn~dK0y6RT3kqAvTVjv+~cj}SjZ(|-a^^k zJ3sDB(nE#vTc|9pM9Ob6k^m(_s}tt^ZCli%xd^<VUJ9~e1yE&*q|b3KY33M_-kenm ztp73Qo><i5`i2q*tGA#K+5bH!y%5*7GA}4Z3}O>vYMjk002<|+K2ed6vjeor(|k(A z?-yU9VQ(uH+?T+Py)N37XwYuL6~;&UF?&EqGPuZO%&>}>wPs17-A7~M7s3RWDK*Mv z%x(@!9?Rt?LV9Tw0`473fNs77r$NL%onYuPZbYM)PKNzG!Hm+LT9ZExpu&)?wpr=- z$jZ+hI4!?}Y=0L)9jpGTkCMUAu6OM+&k<a}a>E#quSpNke{)pz`z^=QF!zP|J)|}R zO`z}O5V0VLGU*W;hH_Z?-qq$ttOa-#nwCOnRAH9gV1;(mhU|l_IFE5g-Kk+E(33-w zpS;N(g}LB5A(38un-KRr$46M%wW#Iq_9Ugxpb7~j+a8|>)1L}bc>7Gpl)MRtVmU>< zj%L_;e0pXzEm}0hqs5n3MXuzV{(x4jCEdUj!^%Xcnjc9~XN|e{^yz(pyHcV19_dV| zrK8CG?$<QgwIbl9PEWLfMa@8ijES5k=h6lL`ijeh6j%QwER(ixnuvQQkk%T1Q@sYV zBk;^6!xy-4TGQ*qV379#1eShC0JR&oh!Sr0BDyz$UF6y;7UDc$L-e)OM4s^uy>IN& z6kaFq4pc2?Zg@$i0E@WlR~`OBu00v5<G*7*$W$|M(mvMO$YU<UzbA&aZWHSPDol`G zkD2%ZBpxZ{r)JO_C40n3M~tNYSjAnNDCxVqw7QE8;zEumCWw;9T;|r^W?%~n<JYKS zl{xKPdXTg(eMQizecDPg#l_FaUbos0-%M?2p%Rf(r)#{tl9}@2osOu5jH?5wyX_b$ zB@qxbg|&)(p^H*Ln5Wat9|VqW1HPOV>&z8kN=-EVr%Uv=n7Eq6WN>oubps;Z3JoRt z@C^ayH_TlXPs)~IyRym;@B%P?Tb}m@F@rey(787;-NaiZh*(ANs={~v?_>{AwVa6H z<##lv6M4?VvTcMergC6z<5fCyndn66kHiu?s^^ynys<x%*a3eRNGATSXVf4CIX5&8 zSddR!=2u5AQ8BsB^ZVrvTPI(*N2+ean=p&Qr01isbF5A2h9O-+ns*QEQV+Q!aa!Zt z4?Ml+j0TtGJo)fkPxv*`xI$NvjgMJ+tV;8>uV|Up8X_)iXq4y6Vr+EqYYAz@biIEp zMOwK1#>M;4%u(S;LI2yD6A2{-;u0X^YgeN4WPoZI#Xm7(Uic8;I7q_PJ?YmF%qV%` zhk@|#XYiYp0l{LrnLcVXNpXxwq6}dJCO`I(&C<~lQts^RebA3EK*3$YrOKC)_4x3* z^1oZv%R^8^hz7e!I{Hg`nolJKzQ0j3_~%}+0DrE+YYD(pZLSq$H0PUfu6h()IUM-n zzM(VJ9*D_Y9p@j_lnn5<IsV-l7tlp7Ez<Xc$4{*+Om=Fe{OpzSWBij@neR6*xYS^z zsh6xJ3$O@nWpA)8*RCY)I<VM;KJq3RQg8xQwk-dq^^<y8YE6apzyDH-4|Bx(GYY}x zeu~q}s3oQSr{$*<Dg7HmbRUcA6?gLTy$zvYT(i=<!<o#wS1PKXiX?(H4SeAd(7#84 zKRys13P>~VqdE)0w6nu_&t03f*(`a0gqJawQ;hkeWTdP$1d#%E<o~2k{@c0~pda&m z>0YS>=MOE`fAJMmzNj%|(tli@|FId$k#k-ms{NaEt=0QkBr2_z)E<%fxJU$t`8cH# z^1u7Rt3=eb!`-!)3hGY-T2>^UbdyqmUn5d8tnNyqNaVLq8vW=LD1g5T`>wj(rVg=S z{>BRoBjzZ?E<ZTS;oqykqnq5;HHx>UJLt!gptNI05~UB*e<;$GSF!^{EI%0^v*4`- zX2|9FHF(^fvBZDtgdeN_EtV1mFff~k%^<Z+2QL?B0=<6Yh_VtG4_7ja-^isAg1lDP zok8PFYJ{~nD&PJ7TQ8h214JaJFvi3#ZSX!?_fgf`C{~4Eib_Vvd2JBjJVUhzs7+XY z&ZRwEY>Bq`t(*0!IQEm4L?n(u>;KzkGd!M11k?h4Pr2-z{I8-v`PhCC1BP%xD!&Pg z<L1iLEF(60=46ZGL9~-kZ(>Q~4`r>mEdnWUzEN6xL;z2Xe2&zjO>1G9fze5wdZkgA zZ7}%DSOXH83sU}Yobwsv5g(6L{zEGY%@e&5p`n`K0Mw5+{RUR?r{x9}IN;@OsO55f zd6#1P985p?R`Y|!uea<XM+9>+pEIk(axhJ>kTk`Nh&g|Kz|F>vh}QqJhc{S)FB3Xf ze4X`7Ypd_=1`e%r+$Q(My;foWcWz(=h@D>FgHG(YX)ay=kE^E+i+brAmRf3Qq+{vs z?v(Cs5Tua?=_RGRySqCj73ppy1d&EUkkD_v@6~(n=ltRG=<NK?oIYn}&N<v1ZWt6w ze2N;;zst*!an8aL?=|D;?>qG5E(Dr{>r|zxjnr#YW+i1YRe^w-(DLa~pCN)|BoL5~ zWVRKcb3?#eWfyuzqcba!F}2UFe^XA^O|N-q06c+%J@36u6fgOUX+o$HP(7!{yIVE| zdE<|l#K?N2cb$tc>2=|avLz*~sD3m(m@lfErVntyPv>$@tBeiba3<FMru+Z21yt;> zfGvl}xhatt)51ysDD(f#(|=0>C&1B1GMdwc#m^U+!ERp*N~K>P|7Q}k42W9vy(FS^ zG^cuf?UM^WRs7#l^v@iqn$tJ6QK!vHy<o$)*~j~TONaw4fhjj(_*P(UrneLH`_LkZ z|M|qP=O6TksI_C#rLWuNn10Fge<x5#6_l{GFyc%qth=h}OTPXi$bW;tzYa{f4%4v$ zhsICw3U>Ma=HlP0cuEw=n9?)hP<2ylrTqWZp-1WX{*;=ub$Q)4sM{JJ8y+2`O1q&! z=6_%;cmvfK==f<2II*((_0KAQMWO$hAP!8yqCY~<<W#TZZe?~LWH3gBK)^Hbd_O?j z->igA64Fc0F$03Y43&QXaBjo=>ld>Q;StuT;X}Ra_+ME}N*c<LGY(PqgO`VTV(?Ic z_%Gt8=)d;6E=vrya7Xf%r<^xnHAJlDRf-LNyI`fP!BEopT8?4*_4~mmoNOI7iyUo| zd(ERIZsR5*$qV&;p-@AtU$P6u8NV?6jK3bnU?2M1JfCC`cy<Tx?qo0Yec~bdDtwee zsp~vKVl&)u;bvufsM3#5rARxY3h}k@r$o<1LljyGtANE^ctslMi;RA>BuS!WZow56 zB^MbWx}@0=O_hTIK@coN#c?#>$p>X(;Yr!|-Sq?43nic7>-LUob}HMk_qa--9L8l1 z!8FHFUxUReDW}->-#6#{jSk4Cm>>@eTH@E|i=F43-$#W8KlyQ$S2-*Y&!JnTAqz8{ zawMt|-mNl;#p`ngIomAr@0pLpyr2(zjzghrz>GZ{if;>evHOXVgAh(r+TPBX6dNG$ z_<d+}$cI7to+w$Pv@5xe3d8q;14HMTi7vJ>8lT3UCe0y@@9b}G=Lf@Uu)SPuH}Zzm z)Q9M9u2G5=1b<9m!lCr@8y!*egc6(t1wi_-Z;l-U;k6a`7fzw9x}5?}ID`@&*5%V6 zL$Cg3+8+Y{g>_5-oMb@-AGKBR!CKH=bSx%+Gw{v`fzWW;0bwTgkBK1$s=Z<t83e6( z?{+u4Y;{3vkKF;~TKWAZQj7mA$ZiCm^uugSx_I_6WalN_ndG(uWdbv<DDu6-X7?Gi zZWHX^lzswo6YU)IC~87w(ymSC<nXP>W+5iO61+`%g5xebmafSk?u8~HZFCs7IG<_K zGEU|S4NYqZ{9fj_96A$W%H4-B;M}=pISRWFIjP+Ky|aH7VaIZQ8u03`3q3aQ49GBx zzLkGYamt^2Hsrak^z2tU<o7SOYbeE^V5eAcpof?>n{Ur_{{a2BMiRw(b1y~mxn#5c zAyoat6g{9tE2S3C8W&}=?GGNDd9fOd8~g#Dz-QC6h+X!7R{vWhzeU3=RdGKJq#*mf zAl+nxoBbC6e@%fdAouGlT03bgu2NF{w}kZP{APvx-VOq882gQGewilAbjXkp(fJ+| zEy1ODogcNjbjWn6+W&)giWgwK_apcL21Xo4URpxSmpyvBkSPqd-S=em-M4M8^Lsd5 zw<1ZXaK_nqfu!442`z9CSo-d8jl^4U*CacI>LLi-wimNc1j+zcA82U`+<N6w4mZ+z z<ncLbn-xnqavo8?mZU?IqyK}p2vc0_^Uv?XBP;p(Y!Lx7U4tu|R_*w3Oh#1;du$%T zguEd)nBVPgTs!=I8~jFUaR55g<Eg!<=1c4opQL-KPlr{^-xESi^6fI~oQ*HqHW-HH z>uDsP{idG^5b))Fmxo&q+_Pj9@@bUz{X<VhV~Vu)SMU|jwV0@ORJKS`)c!xExFTV0 z-q_ikjdHrslD~B__}Bl_;ldJ<#=Q>-AyXewYa)JM%*`0~hkAdp!U_T`J=PqR=fFWi z@vm=8jy;RWsc-td<-gg*A1v-sWL!FmPj;AGopeeLdxW+4vchO9P^0uWbN)T^d64+a z+)-UO!HcTs=g!3Cl!`}KdiZUxZ@4#N&i;Dh^Y=vP4LPux=bI#sB1fKbjmJaj-HuJ| zD?1*otn_%pMlCYR-}C-Ly%|u=o_$hcZLqN#YlaGH*?YZDP|5)RbCCb|lK=oqRjBda zP!5XaB^em7K*ertaWF{vxw7WJrm7znOK!f_P%8%RQtR>wEG`0gP|}(@<tzO1U$fn> zPKk+*lh#{_CkolEh;sA13L}G<tL!|k%7}Zh{;hZZ#~O231+EgMlAcjR{z=g9PB6rf zIkk-`|BDt-B9q|4(qq)g;1bB^(g$(4v)urh(TQcl^O8Bgw6u?js;hrmp)<2iCaD#? zNH?0zA9Vli1vt-P1?lZ2CGHhd1*A}se5SVA#mtkOrxq4_x$05%b0vMlSnwfrJhaw) zBqM`fD3xJ+nXpj!JqXgb|1%?Dx=S)}D<+PVnlS-Nd^&uH<oWz{y2cMX#^Kh@{P+7U zj_@e_FMxWnHkF(mHl0qV-)hc=1-;%C2rjITP!a5~(=p&kMf6?>!XK4sq!5YUf)g6x zTp(6?X%JE>SM2X`EC3`QA338snnS_d_|w>GGw5D(OyExt_Ffgz!gs%PL)yeO(evBk z;Lqlc_IG!gG>&<S=z#0RRb?x&KAO_A-bF9(N<7=L*CzQKD!#;4ZCLZ1x~WAepT8tU z5Ca>wKxoih<?#b40AP~qTd@#H-K^2zY(s=UMQbr>Nlx=}aM+#vgS3wg@cPMJA->Is z>!j<|=LpY-F}YtsMvS-*+v+h&1oehXl|z*M+ov;*(-stgMWC8|fqg#7jzlAVW>c1B zZbeC1$&~neN=mg<P7Z2Iq<3vHg<sw+n#?*1hMSCRUTAduTXgziFxjmnIS*hGa8dv8 zY5^R8*2*25XZP8G2DZjKjPX(e<6rlq(Xc9<`=rb91JK5+!2d8URJAGf7nGL>xf2Cj zT+1hqV&|6#>F9^`XG#?meaE&w%RCPM&5<N@@C8;WxUrwK1XF)iQ`*Ez;A|8UjrzyS z3l9%cea~wwi83;yhW~<+T?xKIX*7XfDRji}4;!w)L4q|JkxGl8%kt|0Z8GK?eMlH% z{@xgbD_VS(d*D3h?$GTZvlhMUYjQ|XxIk`>b!pQ70wCzGT!8K$Rf{V4abGcD#2-m> zX#C1^#Zdx?KD(olM@9XP@3t2x%$CBwp&#)#e9&<pyNS?r8}GuRbPmUyVK3*pZt$r7 zt@Yv%Au2<uoHT&Ei9qfV%{u76U&li~dlR3l@%yX4V%PpBs-je|sz!!4OBgspMwHSy z7&C#>C73KNit%q*+@_|Q`5?Y?OQpO^EvB3L<UmDXwd)`j2)&s3A3gPj7?u&|o@9p4 z??Jf(X#wB3pipKdfV6L)eKdIU#Yg7etL@prTSKKk28#dy2qUW-Hty9%#x$mdrw3Za zC4b8{x3;D`*@o7O!Lpuzka%bR?&`U&t-QU2AQ~Cu^XT^Ls26nbdX3{AYezm|Jo)G& z?_;~-NoKecD4q!B?y*&3nZjhr-bF9WQu3QhQO%ag{Ypao1t$qMK)oOJ<d*Y5B<04Y z(r|otPv8ou22!9X_#qwv6uQZssaPITDTXaIf4^T+rTMiBmdIqWiYMA_r&8|#TPhbR zEGQ*Xf^rouKTbOn;@#L~ArZSq47=LMaZ;&WuCw%RgCIHfAD=H){AfJRi$S|<NHz#1 z6j^SfW49^kHB+HM?b>vdbRyl8+=u%1eYOtSiXnE)0#3?GH-gcq@_*x0d<&?SXtR)v z02qVw<gQq<+kuwC+j$H_HFv)z!Hs!Y!Dm+aMkmU^1KvlPh4C4#%YJx_xF$|RL`=i4 zkdoq$GQAG!7qtxJ6CVDKL$E#!tNyaKqH|;r4Nr~R5A!v~>*$hK@Z1xXufF`(4w_*C zEsHZzCaQ9{H~>si+ZaPR{MLY|p>N+jSJu`BUkNR61O_i5Gh*{FVmFu&u#woTR)9%= z?n7lpx&LDX8GlRgo5p|dr(a*1B3YVCHBK_;!A!HU5cgzeNnFPK{d7#*h#fm}w)MN6 zt@jt2kqO|$7Xs9#SzH{{-z@%$QU75y1FVAnx9P<eGyT{q3rKz*w0h(d0Cg@VY4j^P zSy@>QFAMHwId1kq@QGSukTRg9O#9Bf{sec69PlzTXjbm8f*=1N2AV;TPhQz{5U-+5 zLC&irF@w?6;WuEkiQK-RHSI-iQ4{SzlIc&`UOTJd61{|8%p^6SEm0yNcn&Q@{9DwZ zW)K=ee}U^%XrODwTA87tN7h?r;3gJ*6<p2tJ%N_|Y+)i?<U4kg7Go2oTCWvV)ep=S zLddSp*16Ov8(S$fm-d&r`wJ?5H=yN<EFX?%dm0Rt{uS7`h{5kd5H1H_<Kdx%&uKs$ zgB^=_oA>4DnvK{soVJ163=7r$gdyX5|IZi)VU6M<UzYOrZ=J<eg{Tj-n7L8&ry$GQ z*j~KGrozul2`y2(@Nu_<zoPeR)Ijq&qUqj5EnYFkDj<_+DOEZ_Ne2Ixo4-6}L`Z*K z6+HOL`&M0@9Z81r$ptw7dFkcK#s*rB^CYDz?+J3HqZ5LTXHi)2JY5m&3rv}3@l(JB zfeBloK<C^_+~3;d@2!T1iO&&6Jyvor5NA-s@)>-ZTGFP+h;3+W#KM1;J~%grjT^<H zG#5?-C&v2h*o~%RY+f!WMwvl3sSd&)3U~7ctG`<S{-ed;iL>7r{3hFP`NS$I)`Dh0 z=gH0<X#YZlSt2sSkAsj*<eotoT1p=JCp304R>{TYgu6kBxjEDWu!Lras?at3ak@Yi z<p@jdsz3?2CrSyeH1!Xk<nY3O!$wm!IKL`Wv`tJsNQ>y6PK6M0!!@fp@C*)aNP1u1 z+1_ow3MBv4(*EbKmwM)&FDZLW^;?mbwJ46(JxH>7+XwGXJed4Hh9$|sLmQuDXj*Zp zxM8tM$p)onz16B0NPHt!C#Y6=r@76Oo4*@|q%UcAK*H70ejN7l6>HHy45z{mkiXb= zY>7k~k;6`@C)9DboKbdFnxKm3)p_%rAOweo%~fm>hWUvo{q^R@HPA7^TuW0E_D2@x z@bqcZ@U5q_+ntE5p9IkJS9R|PPg(~@rwE^1oLYZbgn3_D%N&<BHB!WQm>VFP+nPR` z@VkKna9ns$J^!}0a71WoP857qFAw0I^Cc$WBwf>B$i^{XWRy41PIRAS9f<cYoSDFn z1;f-QCz!b+yy}(Hx)x$SrBs5<;F?PcW%|Ix=M44R<9t=F8Gw}#THOP(g_4R8&IQ4L zMRzc0=<Ov<OHV6gSBii>9m&4Dxc<=0F3O8lR&G6b^suP5HAq3LQrRE3tfa_iP%9By z^<9K$%PA^;{@9xx>ea`HCmRY95SN~j!oK2PdQ&LeB7k~?sUpe!W@Tw*4s#}ql|y+} zzX-Rm`HyyTrp1)w6c@ZIV<2yNgT>I~=NT&8LZ3hf3+FJAO&}-|U&kgLkhq~^rJ#>% zI|{!Ov-M7`?55R&xNZ2u;(VE04^Rsn@VN8-!f#h5BR3ar5|LIfKC3AB18!k(%VY7b z#t5}zKne}C>FI}Y+N~h0ATmg)ITPwPT%-xZlmEzW92P*m;T9W@+IOCnAZze3$F$ST z2?Y{)(s#`m=B1iCWjUbrrm>gOf*;`_JR4-!K%z&KG_shU5t@c(K>V>MfY=23qMFU5 z2Mq^jdT97gI%Dt#tp*F);7PC7Hk%PH1yPUU;=rhJz4gHEd0KL{XlC#%?_5adI64S2 z2KcPRZLMiVNb<tvziLSXp5ELG_fo@5(2I?Rf&N5@To)uaN$~<hb=Ju|Dm3zYB5zsk zFcu+6T*}@9BJLX&=2Hdx;mf%weXtS4nP!(p$I<8Ji089n50^bW9z4jrO8Zlp`@}jo z)=SC0(Rq~p{VP|R)c11k1nkfdL-xX9%e~G9Zc6#TxB-zuXz^dmvqs$=HhmH(pTa|M z0vsd>B6vUBotL(qE8mg9{i0k!XH5?(DQv#J;592O@HVX;sG6|}hrV|yV;6q?2(Q>1 zH-P<BxF^de4Ej#Qaqh-fkEz00&9(qrVjS@{dmBY{&-lGY12au6-bDI-!AFgqIFE~K z*S9+2r1z3RKEuGHWv0Lh|F3G`f9VGx<VBQt^<t1kyP|(*!X_gEe*Hu~f*N~#rE^p4 zF2%NHBfGUand-n+3XnWxSVBH6sU?Sf(w}l^dD*dYxw4W$sfr9EKENkb0Bd>(dcSQ* zI4!6YyRoy;cBnXG%CqgWAJ7RbA*x1Qp|*n1L1#sahlGrIu>Tcs#E%ALcxR!34?VPK zRK#C#|6@!H;5j*nIXyKPG$QY;-hO#Rk<z0dF_hMz9v#62`XzlXbLOXD`B8Lnc7@mA z)_QuYhFnZ_PynNL=LPMs6H_{3b%OO3mx=o+wA3WfS^;`zw+G#0O>e8gxVAkpZ*{rj ziboMiO!33@M2J{g&AU#V(QG&F3SsU<tWVAjuE*?_P&F6BeZ2GfqLW<;O3VLP6c7e1 zaDg_0Za^@%7ru;nc(CPN3ATn2n*jF9;WAl@AW7k&;!;3Byi2t73*w<n9RW6rRnMA$ z$PbHee?FZnXBNopp02l>zwpOV9JEk@M^)09tulY+*+4A8pNha1jPAHAeO_^)CgU27 zj2+Y?b?D}Ki4G5qv8fa@*a8JMh=5WY|4G*JlL0#>UTFkG0MxIijI9TRBEOZ<5i~NP z*D+_PnKt0Er$DQR))(@QEv6Y2m>RC5)t7%Xi(IDL;d}d3n@dMmKDcqh%v<6czoTSm zP7Li1w1Ulo_42E@LG#NMS#0{}1DEDj6kY^W8l9bJ%y{UgAbdB@2@S}1oKpk&fcZ;O z0w`=bpnME|A$G<8dKdhxz?J2D{8mafee7YvB;06W=39;=T@t-L>#~9^yd-H`sT?!o zZ8d6E1VtKi4=a`)e=c-{U50N_ca(lVpXwWtH>LIb+HKsxF<f}C;~}34FY=$hn41)E z?!)8}SPoEZ3?#5TQpKi^*t~#jm`PO2TMo)~N`S@9y!;$lvO$`WKO{a={*zVv<xf8k z2|`_ARe0cN=jq7F!-Z(|;WrXL!yT4?fm2Y-5X8-zKaY*232rdiLN+waHfM1X<`WW$ zUd%KJ{c8Pb=fkJ+yYMH#_}f18jRdFYG+@nVY1tORoS_XAK}JeZw&1O<59B&=29wNW z%#o+Mu+a87)%>$4>I0!pDr0T0adL9Z*CI^k*<^w%K;xOK^ceuyQI4$1r=c+wzyB~< z8~`@zC-ffas5Z*G4oP(#Ca?(dMYDE_9Cm#(R|uxg)<@*(>T2_V0LqEU$yHi6wtUqr z?5}<&2)udOk{dm>yDhzwu?I>rja*MTKet(}w!flL1^zHFW@b~-qMn;;?Ga<dB;g#P zPORdotV0Zj$y?(kgl0<{mbc&XV@_H8PNV)Wov{bR-9O*++Q|a9M_(~hKe=~qllm*c z4{U_KCP2Z)@Np<|Q)=#A?ANF}AL90`%*)6CzR){L9q;YS@V4#NeVc6v?YC7o*FxCV z)@Ths7wb9=G$3)Pq&v|gjd<>2gN=upSBc9#filp`0DbtR?#YN*CT-?~I6+mXWJZoU zl^wKL6o-DMXJNoQM}h`FijD~@{QL+blg9$#hbq#j>3{P%afASQ%7QNOz&eeKF6WWl ztqGZE2~TvviAb9T=;Jzk&-!-(Skcjn&{t;T>1;zd(Avtx#3A6X05@prV0Tbs#b_&- zG3dh#$Md?cmSYlonJIWL(^C+c=)mj^ALck%4r@ZS_&W~Zc|d~FYG0j+%32oiONZ33 z3VvWh4~q3*&b-32ax?xD#gL%F(>rP6-ZrD|XEK^Mb(rG4J#s7J!jVV^ZXj8F-Nc60 zD7Si$7Jdg>`t+$m)@*e-Gc&WHsRx^Psja}>ER0r<G6O61&Fmm`G$Pc_`LBpTdlxdZ zps8V25Oi3<1~blcs;V3z;^@*k!;7RMomG%70-18AbNhebQ1xZug7?G2U~Z83i9d&y z^M2B{)9Z|^r@}Ne=i_JYl73;pXP`dUH*PD$ofOj|WhBt~&uJCp6ZCeLeb)(-AM=sP zP98nBCed`sQ3)q|%v^px;bczKGCp}Rq5MvueKT2FA^pVU1mc;=)5)qH!6%HNtO`Bn zzF}YH+pb>i_EO{LRmE!HjzU5_7?5&sDV(q)*rSD3FKB;aqC-~e?4&QTPGdlgj;Uat z8f7;KqFffFw^~{A`17P!KE_J1eXF&(zVEHaLzi~@S?|_U*6p?I1OY`t5G*zY#|w*9 zxfnBx50Y}DP0!i;v9T#a&4Th{#7EQiBeC?p$m{K{25ep3`rqngr)H+=>l^EAS#DkY ze9|2jeaI1}yRy{L(SE5d{drZ$b2ti*Y3XAlSf|D&M-?-!Xf~Xkj`^1FAm}EdMoDY& zB>M$3LEA12x$owObCfUBx%Z{<qE%R_gWBN=CEFckW1tv&ZQ0L6Z2}m}g{PNO{A0b& z1%Jl2zbge3a%T8vHywK5I_t()ce0jwtT-+L=NgvLC*-`%{Wne#4@9A>r99XkTQW9j z=}T3e5%CU@ci#_~42=9Y6^5UDZ#_(g$MuYQC$csgSRHJLlH*?o!QVbtlM5v%nM#&d zKHReudEx&CcqZWm;_8shRe2)6f}w|SgrPW>M_D$`Yla_~Y#46$_md{9aW-<W^YbJK zHoT%N59V|!r~?{0hc3^AN;!9cH3c*f<lDO>Ayc*_voI4oFu1z>YJY}vfxwIwxQR0n zFD4Jc-VU{siqh<sxMNQxVwr701dWN%#Im;UXVFx&*&4RO(D1OOhvs^ZNvEq!bZvPR zl6>NYJJr4wngR|!Z~;Hea$}6?GFC~dGEz8uM;%%uumDt4BitniYv~B4aD#!_nU?1p z;S-Pcx+Pg5Am~uGW5Us(t~)2wmjA9IARgP`nOHq4G}&vZ^9MXN{tFNkK>U@n1;e~K zTU}F%bF-8Wwu8F|B#558Meo(v^mLwYmCJNLC!3E8Dz%q*HZ%}Si4|QV;C%)ydnV|7 zrf_qm`WW!7>rMF@;M>jdYki^?`y>|3v1l%^Wt6x)0U_Bed=zCE^0T{p*Rle>64W`N zuHha-kmb_=^p(y`zp4}oiN=QLXBfPgC^E0DBrkFtV>u=g`ai>43S`M7EsK-;^P7tJ zyj|kXU=OB9#F7BoaMkqk?5R|ynZjJuRJ2|ips}FVC|}H1eR9&}V#D(0Ve4rC1p&2I zpRKW~)<~aOL{QL9Cai^C&|y-6Ke|r2oKxXjR94N&VI8qr9cWhrK+NyD>l%1YA|6;# z!fcS~-Rk#n|Dh1|Jhwtp{1r&8b!|lUs?xXgIJR~e7xd3K@d6c4%t*YqLI`dqymafc z?r>-w9YgA-LO;wwI9qKD4W4=m4_1T87_+2n(F5a~u-tD8)L`MX)4mX#AJ+0XKNC5h zyFNMOI^V;+ws}tD+yHOjeNl{5AleX}EcEkrlqPM#CzZ2FGG*z5gt@neX3Kp((t$w~ zOgLRv_Z-rt+U%EjUP1h7>r5cb$*_e%$Uh@MAR!g`tivJF=Ht4{EZ<E2w*1baqWiVx z&kd+&K{R)CWOrkLT5c*FSa<~{vrDISycOipj@=?i=X7c967rocH*_l-p4&~rizu8? zI6>0g8`1bO%J%8pD%IH!Opqj)PZc#o(V<6!-TZC3Hm^S|71?CB$Ygo;N$N#m2^)yp z-qaKsMQum?&*+!f73Y%yFiHQwn&zfGUr0$oPmd?-2xud#NVZ0m%~}%8NP*ood7D*# zwiT$hnb&1({I={0+%kDQF+s}K5peybQKdb=xc0~>l81rx`c(ay-1{|D;VDDIKG!y> zJtl%#i53=o_^~Z_Vcu?b(plx1sS-z*{hcRgm|n^QBPJXa??O{`T25=x1R*?+YLt5j zZZmH2Kbj}xleiAH>%ir8X&DdrK`0gZe7FQ8uH<jmuF`NdmxLSgeHqo@*;gafnseW7 z-KnS!2K(WOiI}#a-0D2BKwCw4%{1q021F!1)SdV4$Rps0?_}xFbiFiAKJHRljGBx` zc&T)3%cT?gLSBh*FB7PMZ>2RQ5&{wEU7U84?hK?LQA2Rh-YU}Zqj=T&2e56b9T*e@ zRwne#D0HRp@rIM87FH&BF?=~RyHj{Yy6|vBD=WQfXoXx8WmQ#O-Fl;Hr;jAJVEY=J z9J@(q{R5(L#c>mx$qMSj2)&R(9^xsCEdEr3s}eOmo!+((dF2^w9c&+pYvH2X0fneE zw@UX_l|q{`+fvrP+bP)V@I5;#N%BL|uqT%|`dj}|NCMpx4x(RW*wa<DIQ}0=IN<`# zxI9k;qJ{__qmRJa!`D^HwIrX{_0Apb9qn5^>A1g?W^Q<Q&(2D-TQ2r^5^|tt7MmJu zoV9c<g>24<Q%#W~!NW~qC9ME>KjHGyNykYIF+%~*4vsYbOAWtCE~b|hJsd{>5alUG zcN^q1j37O{_+xifmqgAd#I`CGx%VLZ2gNtM%CHP&5}U<&Wp$c=EJ}g%_Ry~QSxd3f z_GK6FY}m>QPK;e3z{W-oB?#MwaA+<VU(bFME-iwgHaa6GXJN<9;2DSid(E6Y=a->N z%Fq%+1W04BhY=F}U8p&N4}0b^Qr~TG^pJ{V3!Kp~4vix3TO0>m`oee+8L*eY9dz1M z44^n(S7Qy{?=E~^YSarJmm=bZpBVG-k!FZ5HEWf=#QqFW{b>2l=*)K<qD8Dwx?<Rd z?+^y}dpzXAx$kDz+2)S!C}*fK^HweHx7xV`bo$)iWj@ntZn!^Mw9lL4780svG0V3T zocC*OY1un9S#ISGt`Sz2Ck3UzJ%$!mnC)DMoS+^3i~vIbL%~iz9HJ>|eX`w8n^}{( zzvlt*)M;~*zUpnjehRt?FX+^vMT|iFkt2l`y<SgJ5QYD5Lw3R8Lcs)@6^K{y`8I?k zcuSA53Qio#n7e*Fj6V9Y8L_x`m!ew#xnF=8+s!S0&gYFb6Hv)|HvuLEk!@pXsEQdi zBxI1O8n9C{AeWq0Wv=|1h>Q$`5X_)d1i5Ryfi_+BubC8A*TZrBlqz=5VWyt{vK|-3 zo~o8iV;qU@4fB~JRDuWIF;Ld0M$(PXiydzZzD;URv>nj@mofWgcN@4smeEo=6qmUd zpV^p^)=K4d!l4ahb)ijms?Rn%O*gv)DzCt_Rm96qI_<BvmbA(rqVjLeJsT^0=mj5| z1ZQsFE%oCez$i*HCr~H^ye|NbV(*yhVBprne`Lhx{~=)(3(>kmwnvX)v`m(SwVZEd zLY&Mf3uL0-9j)vT`P`4_BlS+735P+P7^q7n(6q5dhje%6WdJM4xS*2!c6v9h2NenB z?;*+$x}L}MYS~mKqyO$hv|7$bX6!P+L}Cxf^*_5_KRhX>hDI%iGo3<<!*?ZZuY0vO zJA9h6ayxZ<y}xN3$n?zV)Q_t)%O036A+fa9eJ!GPHt;kQrAU7P+Xe=!+~Q5;j6UHG z6bL7PYyup_#&PL>UT;jo(k0~8848<^^m>6VF71~qm3lNL4h7r1za_v`MtLj+cj51- zmq2UmUKFmZr-SEeL)y*?NyYbF@?C@4m%rOy%h<iQKOf#XFs3?>4hCpJu|D$*Ns!Ur z)Rt4tdU9%K|Kl?x&+)$d)Kh$kl5whg5nBW$bbt5l;@<L~d9|Qf9!!oO(?Sdk0saLB zrdH`?i+1Mb>Zlc_+8E@bHD#9mW{&VeJjx%ls+?4(yt{Q@;V|vPAq+1e-CX8ktRf+U zheYS$dJ|rv!Yw4e{Y1q~u4jEIuNv%!Wl@R!?mUTs^tFc@J@KS*o}jr8H5Y+xh=Q+R za#;uK0L>R=fuKIMZci%<Gbw9jG+e8qm(w3#7yaN7`&JR4?@i$_NWO?Dr)$I(FsI37 zn_SbC_TiI~4=gVZ-p_zN@c_3QrcLBTg^f&Bv4aPd8N8KWrnYxaJngzO?KWOWut-RC zd2EL&9cFU((|L9(z^TkJ&_-nOZY{|0gpc}FBO!U@hP>(koFI}UDrOP6c#F?Rlj4Fq z%BhHi5egw@EZOo}L*2Bcs%O)tx)@{)it}0?_K#^bSbSCMf?~S^PZ6Su!B^lV2Wd=; zo4(>|is4xtK7+u*S@p)t1iUw+K+F`lMmAe`iMBe0WCf}>7Xr#h@%+>X2P;l&g%VMR zAD)#*PPir{dm*-dae&}$8ScT{OAfU%;Sj?mM?Dl`nfCY&LUix|#xcAdAVg0YICc9| z;S%afQEcLd?^(N7#V<VMn<$XdA7J-_-iB??<n|%=A)tPadu7Q-ubA~0E_VB!nD**u zB*Bl$^XJ;%x47~)LO(yG?QsWnp=GvP?2ls@Z;yhzwkxp7%5{Oc=XX>~A7W)ub2FQy zb8sVSY=(7{`$(ORX6ru?HFk7p^!j}7^10lT_b@Hj-Rcuzq1i2)itf<fTw1EnF_}y$ zUpc~)l-mer5o7GxH$Z_kuXJX3$ohz85`i=0XLHYWaduW_c0O|&_a@1X3rW(nVrV@z z5)v!+CFFtccx9IX>SXfkk%)icMPU1}Kt@s%jBAIAB+3lE^3td;AXamEdOUZcgXrXA zEP{EXM%{E_C5Sl&@3jEEe!yR^sz&A#)zap&=p;AX9D+Tc5biMr7k8+%%Ap-uYjW_J z%$MV4c(?>#Z>vdrcWR=>%hsoKzB=9Am8U7tMvXt^6?2T!&WAf_;A5ssB5rEa!D}UX zvy*?c{%{<7x6AU!|D`8c!2w-=i8(_)3ofBU`XY5Ze$P8%=2kRGDdJX31@<jt=fM~B zeNTOR6~ark6egq-D$D|*V1OG}tX_mh={JwxQK3fd%G`~wmDa+-Z!l_DM4v8C#9xPH z!d@X6Uo_->#2SOHp@5xTRJrr^Bve3VhUdzZ(CSIQ(=kb*PTuXZ{R<d+lDh%{Ot)`` zAFP+J4;pemHgb*HKBIQ*V<a^noyIyM;70gSDm02eprW9`X_2M5hAyv}ug01&H>_1= zXrSjG(hP2C@OkO;PKdA9n^G|p7kx=DK}V6TXEbXwP0y4=yw3`Btzv2d*$RgHf;#zy z*J@YY<7xlH5#af97<wJD{^M^G`M<xBlHf#A;BF52-aCK}5f?Ft`xl%DZQ2EcLgGXb zv2bCHYlWS$c_OA7&tRj6PIC1bu=tojx!nP$vLh*FbgH}8b}4Tfq^V0OlgWv&^`Ws_ zLpq6`l&KBaL6cTv*nU%$8xr;QkAL{fquB0ufq@H(`0-FEd^-qnyl+=LR_X#Yl393Y z(>;&)KCl!)>FL-+BdHLI2c%I>gJVWk(v(cp%P?K|j@i6u`Z)5c+FrMQm6Jorx827( zu+HcEWh%Z!2ww{3MKT7gc`iW>^pMjCWl6t<iQ8D71ri4L<O(BFIO(BDyK+`ZkK^dT zi1BY6AjQM!GmPGT!*&2|lFa2nJ6_1wpt+aHd@$3{%xUb;J&1BNLvGGzN02`hkKFEg z163|-L|<*r)JMAB1b#dCS<_XRn?)v?0rek!O-6L;k9F|%CeS~6C=t&|Lz~TcQ$3gA z7qix44TF0%1!;3MmsnQL%+R>A0!RNlOoK|&3W*sXjo0RS)a>d_JymgF{d*N4E`+FR z^V5Z(Iq881=8y)N@IJlQSu!Az8Ic}_iAm7gDZnJUnp`^>XRT2FK&FA$!qruwTz^_8 zo?K+9(EaLTX{6KvV($;|lCF0au02&a1sDi_Q02U)Kf9`AsBHNa7jzN>r<uE*4VCL7 z(=UdP%R;c@ZhyiJ@tuBFe$1zCV`>L#2LAy>F3-;%VkYNi#g64=xjR4`%EA{PZy)wb z8ykq2LP^q7@WX;^<;T|sQxBD<^Tlr4>gEl!VzFJMkft|#IL?N?yfHN}sM2wt^Uxz} z8C{ER4Z$DmUl(49(_{f!`Xq~yn&N61?eu5=qSuh425kx7&;0wxAF@bBubKZPLn{bK z1b7(j-DI0*8mGZC7@YD)wr?B3v#|pHJ%m=O)?)Qx{qe3l9$1P@i_r4;OiL0<hXtK3 z%C=cKIW=Xi_BeC~%@;l{F7jjj;yj$f2I%NE=+caF<?<iimW8cte_plcXd#1p{32Xp zXc|9sDW?O4$;2576V5cP)$Z!ishE&}JLJ4B-e4}WPWag$4;~k^Kw|T4cLS&9#r@R` z6SGr1|BN4@a>~=Co-<EWz#I&YvuK9Oaj`B`f?vPxgr4?j-)MDnZ1(z2ulK6hjO(`f z=jO&TC=a{&@T7(9>|ilqOX*<8sBXdMW4ru_q<5z|L?2Vm%i>On3Ub8!$n5>~8R#Sh zj`$05ZX_=Q4q&@xM8-cZLJ0C73PNc(@F~cLM}*YH1EWVsYn``xy`PueQmzJ`9``D% ziTn1#oQKP;oQRyf9l%lQfpvQ>a-l`n7Hpi@)Hv`?>Eo(=xo&-(T%z6;rF-7TJ(=Yk zy24h1F>$1q#C$q$JXm&@Ea?%h%6af=ZqACm(UYRvoeSuYt~*&6=h_-*)%dI=w>HCd z>@bXM0QiCbVy$0*?TF`@Ep@fe=XKxL&P-B99aqV@hdEF-#oNkeMYVuwb{8#f?l{uk zbem|!(pVTp*I1YFlpglsMm}S6XcZ^yZ!8P;QwPo<IxGZ(THwO{ZdCQ?(My8JTEcbo z8#NqSW<f?SVQ}3CL46g<LIRN5YR<y=%e37n&PLyW^pt<Afrl(Of3(%*To=LP)tk$M zyAG}!8!M|`pC{MCF5iOykNtz{#l>pfYUnFv`-n0j6P&L{H}-6UCdMYooQ=>*<5F&K zcrZhxY|tA!d~9r1=F`-;`GqV*@D*)pL(9bFGq?K+9j%cx_@iVMJ8jBqh4DZqad1l* zyfmkEN@xy`VcffcjyUefP-Er5gOK(;{<N5a<Kqmjv9F}GgliDLc*wGQ>_K=taw1~I z2Cy|OJ>r+YAo5wfUO|pGZ=mn}cYnVxHe6ik?RH`h`$}Zp@l&29cCC#priL-V3R^XJ zdn{+Crqk%QEZ&@<J%0DNk$F{evHCNmtwo*sWDVN7*Xh67Y`wY}TdF+{wmwQ)){>Lo zp31jP1`lb`UhY$LjVAM825%p%(sKCQy-;JoR)*7uJz`cUYTo#Wgp_4E{V*CBe<>~Y zWw(n7XR%)l|HSkhU>f`_6poaKgmPpWT<n3wNa2y1@I`J>C9)J<F32&SQMKWf7-tw_ zVQ!s?<)uGC66!foI^63ibAb(0O+R&k_-{Ed%yqwPhBE*5Kt2nW8i(TKdXkL4Y`B91 zO8*aR*{BXM*3(o{kMtvFWW}QBo+rMy(MIvr)B;r*#RmYpbXD4VLMjX&1=HY~T}`x^ z%T34wM(gCU_s#UrN46Ht`4ZeWbZfnbm7r2za~Zgvy^L(w+Teb8b0X!&8K16XGc`e8 zJvmsvA~9$S>>s5%Z`yPOlvG+!JLwrJHa?0Vt?h??d|e;@V>7uenxvN8L19@t)4Nab z>1PUQF7H=6Rlr@ioy3g(2P{khW@J?BtRcCaCv-cznV0vneqYb5K__RW`(AY~WdgIs zqDaVTwv5RhGVR0K1|hf8kZ%S{*?Ag2eXc%lzVEnl>a6^n0_s}RrnXUx3Xk{fs`RFh zEJQo)DA=?I>s|MB9fcg2^m$i?9FXZW3)(o@U3z-ljKv<Y1wM4!d4A5DiqiYKYiCHU zagZNZdL1DxUREljyu>{!>ZL%%YZiiXjre9vwbnPiK*#cHFC56-7cP|N<5!^qi}<D$ zaj`Gq)zzGo{Y}N1d`_ti|0Ku;A#g*mU5;lq$7g5l_s;IyZtr`vF$KM52c#0;cpx_t zWHHDp$?TFK-LB#(`E2vE0c3U;tCyREh38n6xfVT01-+p4tn4H;v(GmDD_XJGxKC}h zQ5%<gmLTqlx=gAm;k^4YEzTzJtlM8lxcYwNa2;W^h~t4AhG6~ujlEpK`fOIg_pZ8M z)7uA(i+;t0&=Aat+jGt2#QX<>_Fu}TKVk?rv{LZtB&Os6<`~6w=SxL--?#8^Rds$l zgdtL27&yfJ;>0<Wfhb&{O8rZw<p$Xa?Rl<wyl!sew*kFbIT;I?ShrQWY@bs-)oe2W zrL~5IGCv`SR`YujKe}jqMmzoQ@my-<{1O49C-nNLv=N>d_9OVFJK}FiW|qTDW)^R> zXs;`ONRXSW({?r0!sCN_D3KP}-Lvy7Yi2ci%n@l`|E(2aa-H)5wWM)+$=hy3O|If% zWcoEAQFeRVQ@H3nBo8@~ZmPwr^~CWexdOBTT;`*mH|2tb_aA#78W)d;OQvFGbn2Uw zg#9S&p}mF|gUxhWvo%Xe)2cieaCNA~hb`=GnvP@^QLsr_A}kUDLwP>|qA)28oZRG? z>h7SJgF1`|o5reE7B5~r{nVhj_v)r&D*U&K41;^fhVw`lX2ML!e%Rc&I<gjgv_S<W zn_f7WBnq9Jv_)AoG&B?p?VB8JcXsMMbMakMfIp@xE0q(@%C25HOHHmDx-U32XvT(h zk}Mo~tHzk66QP0!!DUHDj!*bTHz+8TV~!Hfy>GzZU<fLBcCD~(n5k#_u!R&J{&U>~ zS<!o^zk5$yMDUuG%W*F??CGJbSVH6L?-Ux8DP(^N<WmZ+!4y-6@&tDaJq8n!EwL(} z`9|Ca0s8Ul?Sl!H&XiB)LQ8ibDQ_YTlMQe<OpKRbW6jTV=`c5FG&ot9ODq9%pFxs1 zM>{c_B+c9}>U=aPlq71EEVV}ly387#Dsf7vB0r2#80Q)2UGNkbVtE`v1ECcbB;Jx= z0BdG?>u>tIH+41CgckQ=r(gVASOy_a)36JOMn;>C(6h?A_7@uieBwv(s47cuQd3jy zOb#R(a*v;UF{&yn*G1hyRu*=yRXzm_%Jf)@f||i2E02Rk5<XA;ig`8&o|$piE1p!W z^ikDv1I@AH4T$5b3%2*-YD4&{JL0M!=Hh49QKywk3F2FOIif>szBH^mVQ}QcNKIkj zbl>-BDC0N0v-#?+TlScAHt|fVzv=An0+ZRRf@C_=Xc8PCQcbs@zKpflMl_0|z77xn z#)yv8o-VC5_t==F<fX_k`Hzd{sn`z6FpDmqlH6>3tFUdeuKf`_RS1|ohlO$wXPWpU z!Wh!Le$IpB=Q0LcR+R`c%r<PYNYw@q-NaMV1@|sk{DM(cGkvu3N`!{FeGo$G2IFs5 zEo}(BCks>0=%P;Bwrdv2M6!Z~gn8VF^#PfRS<D4vXUl;AT!O6mCzdgEgRz3Ohjmhm z7%P;MPS259rpM`gn3_@uUfeyRIh|`^f2-CTz;lkU#8<b~!n1pnTD|C4o0yU9d(w&% zVo-3}ikk&$ts7Zylas?T|H_*NR7RC=GRkOFqOVUl0;3FK9$RKPeV>SaJOLWRjI$<j zOMz+Gz1mn9w8yAE(L>{yTvu^Zl6!I0_Et^~_6uvlh5fBBnO)MjAQDWFy8-UEsFN5k zLsSIx=Z48J2(x$aEVI%xAGtR_(-spN{<94i7{Xi@L_B-Cq=Z<6#cCbe@CaE;W%1b= z+54<HZob=!E-ts{>)k3Juw9zFpxzNQF2*-`Tk*LSk9i3N7wOdvBMq2|$t2&r`uPcf zhn?h@M#&Wavkv`bh{c}F32N@;xebimmo_OcIINi=0S0d&XLsRma>l`^NNsyTxSL|@ zC}xUQMFz$XTbB6`>xPu{Q0EC6w+uo&cg{VFHShS=a``?~mi#ZezFXn%XM{JTQe#}v zmhbf%+&zhejbN#F;k@zVVY43|LUI$OvhaJ<@%V&@G_CAyFwe!(@bXyCl3O!vMp#X* zsGi(a_>!pV6B2v^QclNva$NE7`pR?FG3W1OjV1j&=2SJ==z}!#TIFTY<uR><zo`A> zW@hH`6u61vqiD4&<8e@iZ(a`^7}b$efV$}Kr=V9e+)4G1-jVPz=K{zY>)DAirz)KI z74-hrul;ExW}8E!qZKKLEOFn?lmuT%j`ar(Juktm(PA^{Ti88%_*iP2W1Q8(y4!|t z;1)i7Wi8likOqCBsL~}Xj4?jQ!Owrvis^o&t|aMG+;M>#9m?{|V1%?vQn6xvc?e}d ztK4}Id9Fro;TGto1#?ftUr1H{N}Bd4i*m%2zX1+ZBV7N|$r0ggDW`;_e;UU1Y(Ohs z685h|af2?&7YFb+lve|qe`RDZTwKi(KwW}&f`MHIQk8n9trq=j(CX}Yy3oR@%}^Fz zw8tBRx0Z!wxyGN>w`9-TK|>k4upmd1(~M+l_1G3!b+cIMJG|*ZyIn~fc4>t@P-^#m zNj)jU5aDx$XN43RM%k^D7GQAs9)niel(Y33fT{17{E3?$hn!+NRx1GqOpkO^B2W4C zcTtgsAsaysZED=a7<!A}H=_NyNoKt}lvm;L(dC>>cxBRqe(AZVAxJ>AKk>+>eE{)j z8^$K*nXcV+@NszaGs@svq2>OBwr3{0heSAA$n)RPnCp;Og6tWSRNK-5z4elrEpzqs zj4Gf#G&MFmx$H;G{ron{^`^f}0Luh=y}u4xD-;l*eE<x&)0XkXCXkJVMw2grm~e7Z za%~FG^-=+V$C(6`S)C{zwqcb`|HQ0yq;;+Wbyf%B+U_Be<;|sS>3t3U3n%^{vWC)i zoy?i`$N12ltyOHr$X}u5mq}PYAa~g*x=Db7qkPFLVu%7gEIbewe&71F276(ggMB@f z`}1X91J9HuA!pVXw=38N{LTpiYP!Qux^I;61eS+sCzZuyY-sK7+~$-^9r{b+u4yrm zN}SpRmqj}!%}ca9_KY7HypY*)8?pmJ=R#CpQ>@%cpz0tFYHGnVRvaF6q$o`@ji1c5 z>_N{Gk5cUL^_p2NEG*^@WXy7*cW33HCyh1gh#5<kGO*F%as$%~^tBo6u`|g?@jzZ} zS|%Ivi^#Q;qmrM}ocM?rmWpt@qFD%G<t>vIp`owBx9bx<WJ~@^;flCYysf824kaZi zSH%&5)~T-Lbn$b1QZ)sk|G*e@ZBTe?)wtzPEr|q~!!A3|3+Ma5fjYUlJ4(gTt^Bj> z`#JB{W|{rm@jI#3#zR*ta0VitZpa=~1fQS66@<6Nmw%+>k!(6VGO+EIy#<~;V?(!r zDiLxrB*{8QZQr@{w|JwT4jfUrlr|CgfLlE`mOT*s+lzyYiV6XbF1iMyva)tUa6#Na zk|(>_&8MxQM`7CG%OYv^vFSR+<Cxv!XP;p%?Aoc76^ouMpQKK4^MoGZn$Sv$V4Unj zcSd!b%$)nJB^s!3%5_bl-dh(Bhx#gZAx>?+ZPmOzC~v-{JQeR!w@nrZP;~y(8U{y$ z)I>r?xEHp$xBu9Aj1eu}@_;$QHkiCTeIxV8-Uj35Y$CRE(Kb5TuF_p=U4F3+W`+^k z7VpmCcRsg(6WRXGyT7TE*`c|q&#!IlU3>np!rP(Xt_q^2EXsaP?=zVC1|tcs(`D2P zC36qCU67vvuQoxjOtlS06=&%XxM~mEhU4d0dP4mxk3ixKx>kR753_1WYspX$bF3mN zePKULBc?%xDB^0=MVHx<`G}ZD6nKlh*W%t(oD6c>e?O)01rY!f-li@Kvndma1N+|G zO^F6OOcEyU%NlY2;l^tuT_+>?GIG*D_oT4zGKN(A-f=gWd`=q|nNY8XMEG_E8r&;D z^!96j4BU><mFgNf-A=AksE@57aRs%YDv`*SBiWw~`j%lfMbx?9^YkEly2*J_)42b1 z**5DFQhy>6F%t@Ks#YQx5a%hqzsNpKNWJ@|3sgWYsF-Vo-xARB4J)R6x%yH$-!&BJ zPhuKw`5yFmboEC1zwJC%CPYaagoF%0n5D87z(SX75!M~d&oABLUTyelZ?h!rEp);; z9m9=5xKRS=fh0J5?9{fj(QwD8;Smu}Lt^yy!M^8`{bzD(!`fr8R8IyMH6Cd67<r!5 zGT^C1wL7(O*T%Lkb!ZxVZ3%jx`wU}olK4~Jn!B}UTUR-QvL01hdU`4^ita1&>PH~u zb5JRjpYr$5wU)(3Ec!X)gtwsZ1vAo})5tN+o&F#DFi$^4jZDWvkCuKi8OdaR2`Su^ zNT3G}pEVjo+o%AVnZ%KW2}s_AGtM7*t$G)phWK<2e7Mbt;?>@g$jx{q$&M}zE8pLJ zZ?ZPNSkwY_xuH%s8&XAk_Wt-wpG2DAV}r@$ZH_GF(92#NoSl0CgC^vZ7F*>3>(zG` zz`&3-LU}J#A^FY}q<CV35X`7IGZ4;!Aioz>f)DO@x@o$tXA-D2tv?_hm?VO?>w#a_ zkCti;7oo*ttI7r0f)SR+v*toMg9q6|5ddpSqQl|wkIFt>o@u{0&+iL~+|y6T=+$)2 zLfBw2ZPKUs_7NQzA6E)^Q{Vt*g0Z-iU2AAbs1=r_@twO`$lOEihg+^#olT3dw}>la zQoGk4)IEnf5wB9axLC_$X<NA3mfgaqDt!l1|8jtD-$SThY)G7y*8!T9H$C0oExvxm zW~+y7Av(X^b&3iwyT`^y#^mUw_mmyH?6;lMBT_>vLck4R0s$mHGeoYdZIUY4G?6j0 zvDu}USua9w43u#zYl;2zEA1++ROXuZs(K$!t{aUSZ4%nsQ{zSzYNPfhLln=Rtcf#Z zKa}$@)ZV5MvE+HT(bA*Q8B`nbB7OOJt2qd*onBr&|MPlp24Pb4n$`Mgn}z+=C<N1r zA~F6ac<5t7@j08o>0H@i6AJ1JpR#D#RMS__;nwa!yCD}`AG{Z&nELqgYApcAI+&Xk z6YvhXb;G}ck)Br|2bLFWl~P3R5HGbf+}vAFwCubDb;=q^9R>kLDVh=3eTd2v;xT>= zOM>8qZ&c#YwFBjIqNFgI!DFyVPs(7ysY&bTJ)%8T-DX9dNw>*nZg2G!*hEJ$T5*cX znIo0~mt-cGZd^sxOCi)ZH=N-*v_^S^0T#M5ex#*eTYCrX1%g?5<m$co?1_Sf-FFn$ zvV3;L1B2rnsNGg`Laz?1LQ-(!*dzAZFe-HSaf7_sqK0)xV-7R{DM{2uwYN4qa6@$! zB4_yEMdx(ec}krQF#L5)nGL6GJ6kiL9B6%Hw0@O)XOw-_YnY{@7xUN*hn>vTh&1C8 zFI)`ACR|BJ-T<Iko6pBBf4I+5$@3H}qiIwy)XZyHf<+yQK47axT1&LO{}zL<yOkod zn+Bz)TqHDpRn616sy98}v%g%np|_`)>q5EQg%QFJt8WgM;ujz!HpsBEGRU#7W;T3C zkzh-6$Zde4{6rD-#qHy_hAt)Vt+7zX%lzuHM_&Q+&U0uZ%#I~JEQR|p=nG6zU16j+ zIAS~DE5j4-c_F(xBWFsO=kL-pCG>KmsoYd@6MW9XDX7*K{h2~D<BTa;BY#P#=Oo04 zE&Dcx`N&ExqV~upjr?#5-Oc{g=R249a5379M7tz}CMcl0NhTinCKO5Ix><6EU=Sx1 zyO6-yWSGfuKdR|s`$veK!F<Nb<;}Yr;>Cpp$J*46`s7;EyK6g78%g=?gF{70ZNujj zjpn?x_O81ia{<O}<P-OBt%5TN3p(-FtR(ymByR!&1NUxgmE?4PYErU}NeB9!qK*x6 zDpo5qV4BK_7)K|p4d;dsBxL6<Xmx(I4Rh24!?fRF0#x5efW1>PPSm&`l?4jmc;P&H z+nx8m<aCLYJt424rO&7OLfzy3hh6dZ`%ZxxVvkd`szt36-moIWD&PxE+8X3GcxS)R z?jv)o?Z*h`7PmV?&3Fe6vvQgn4a5iyU76U=gM%78w-<>^GA*FoAw~#I@P+ks{y0(N zcCER-kqAFKu0o7jZOxJ85jE0>bp^yUP}nS)ZxtRPT?YTMWE$3U-p-kw=@B50^r6rO zep5GGlQ5K~#Gsk;^Yo0q)JSXl_Md%A%4*{kuSZVtkP_ruDUy~Y={&yUlBuHy^^Ub~ zzkW|*!z=oAimHUl&#-E)y}+_$?}LIZoU%6_&d=G;e7o(F7C1p}tGEg<93yy85k0X6 zEnrJXf2$i`PcP74-`~R54#$vzw8d^_V9FiSgNeR~4~(h-xy{y6QA%e8QSc?%SXs5E zTT$nsRe!73HMvAP@5`2CH}bNUbn11PCvSe&0=TU%H}LL-W<e^U*Q8|<aYTWo`n9#- z&LP!T@2oe?!4Q;LoOVPeyCWiVWwy*cYfhFr=k1W4e!-_70gChOoQarIhd*rJj-qay z@tbwh!dj&cVssBR=W9@oikYO3f3)*<9sMRe8<7Cngz+kobJ;L+L3CU_D0ca{A?LY$ z_zl?9Rd|A^Hu#HmK>(y8qUE{5kUf(f<p#3g0<I2X#(~fz7*Q5We6(zS+k9$~<FO+9 zGaY8?`W|B@dn*1<=KXXUZv&qG4?;n`zN)%+Pusj|O#}+Wt?`NK&Yf8uI`^b{rmbFI zzId&jnwEU<9CEN;S0UWa6`VsFXVo+L@CWHkdtwzw6eE-l+FhrDMyC%PM&wK5xh{Vr ztOeNc5nls0!i%?XVBd0p{(j$XhswmpZ&e}w?Y^-Wz%CrH2<sBw86>#)k3o~p=<<B< zIFQ<s-px(|*i^C{u4b;8SpHf`aCkE^(x8hPW)seB0y3(MH<M5&%K&x2Hl9rgwt+9v zg#(2Hd&dFlD|K+E^|l)YJFCl{-lU_bV_ZxfcO^G9y5x>Mxv=ONC4kO6r%}%@%xhZG ziq4F9UCqwk@i`G!u3VKOajTlvj!m2+vADRbU7D74X2goppqx-j&W#Wr)>l|zQ6NH4 z_&v1=Wg`8oz{pRYz@x~7Wkg979*RzI&dB?|H2J(Ue)XM20W2JNs~n)e-@n_DGNEer z_f%brGSNSO+aR-$Y75-%!4kL#qwUzV@8gpez=&A8+v?rsxVY2c)lO)PiHrR?K+pbW zxC6~4r*n$*oc+LbcR7_~o8WC4P4~3T&`8R)4Pz6e_zMRL2lg2Unu8Egb9YyN*QH3T zaB{T-)sS{ligr-;fYhN!EO2u5kWRlI8jkf1^YgE(xw%JPXnp6-o$4?D^0%@|-0(K9 zkEBF!vNbz7p(N1Z&z*i`jB-#OadLI+$`sZQc962NlH{YZmolTn?(|10&3MxC3{KvT zX-`bA;xIhqYr6FLhC<@CfQ#&F@uK(+3J2)#?}XMJDHBiErvIMSP5dv)V0ThwCzO3) zu(^NNZ?QUscVT$HoZG)}n-vLY?bgsV-!}d>HKNt7HQOxtn~&5`8f_X(zP+|Mp0@cQ zn-px~XhznjQUUcj$tGMSpm3mY;4O22+DDDf_g>kxYH7;{?3U7?7qU7WTufs^{tc@0 zAM%K&$YoFqp+}@h4C}{&Xm)Bsk(k%|hldXzXl=wq_50udUOP5T`@Dz+9Xy8>f+<Qv zEX+1eO=EJ7;AgRSrW)Fb(J-jOn&A;6<wbwUC=?1DRAtd-8JYtf!$ZF=%9knWH&uZv z9M}gO*r30^6FPRJOb9V{#3%Zl-AN_|cBdSWn2UdI#T|4G=q2W6W&5J!H=Yy4b0c&! zE*eQAu03uV9aJY&9DW1Vp5Eki1?d{t8wYujq`1O?!hwCl0SkaFX{klTmQXz+-3wQx zH<HK;<v|mV)X5La1U+?cm?R(+iD6kIM#o00(a{lwY*a5_z0~%uQ&K7xt1DNp_%v&u z7a?l})1TI|B|@43mIHQc;`|7vHhJq;g>!<o*Fq?B6ap+25M^tKd{!NlW_Z)Irgd#S zs~w+2dZd$zq4eP5zqrDIkAwsC^JCs%p9S8jG9k1Z|6JAV-|7>80ZSb4h)CZZt0c8D zJooJH#?iio97y^G?v_&t+bsuRd-EOA5P~a(yWvUzxj`fW4KXl$KefZJpUwNS!Y?f? z%k2M3ixD4d*ORsC*s){P7hilX6aISjTGIg*=a)REcx?qlq~)@eON4HsH%9OxWdldU z8yRHWLXhGpM;llMDfhyG!ht>J02Q}U+o*e~&eMsuOsQo}z$IzaMh93DFdoO%cmhd; zan1M@?kKi=6>4OV<4`gP(w%q~Lk|s&NP!rwjvqf-ojH4^`t0-1stXssuFjr2Qyn^d zSeA*`UN7<D<qPlRw6e02vk7t_oqWNm{IE#S{n4=!x<$UWHYh*JZ89^dg!xB0ET_W5 zzwqTU^4!(AfSr-x?-te-LkTP#*ykLepT9G=3uR*9e^M4jnb;Yh4ULdOaP7zmK2r2Z zmxOrW+zeBPZ1(Jkj9S3%DAk7poXelzU%uxO=J<TC;}hQ_y!HM)$JY&4EIb?-Vvj-r z(;g|Dc#`IQ*l8e%1B_SBeBRX+9p1F4DFKfjRg)7_niB9(^N5$K&p!LKI;_U{%dful zK~4|uJ*-|lds!`3OB%6LV<}|NQ#XAeOs@SiiEoc+7Al5ol_96e;eceUrk#kLe(&u_ zKd2}AQ}4rR7D#a)83#iCP$8qEOuclSq&-PLSb|*1vMGO_)cOqLPbbMGFP5f~E70-s zxV|eaPLNjDT_gSZ2j2CS)oRV_4wO+K)4GVkYGh=%I&$Plb^7$F>Wi<wsJ{RHyXyNN z^wa&si4)a=wt=0wGo!(gRaq^@s@u1xyx@98_`J}XqWPW18jM_qpgrizuiSCYJ3=T9 zk8D%B$~hLMKd_M=ON12@<q&Hz;2mKZ39!bH?%-9J<C}4W<8r!qD%Zk+{m%jS^LIq% zj+Ke$Yt#RS)=g+U)a#XYlvx3W10l3}@gjs`r|{`~&Z%3tvIxsDZTDWu+knc$Tjc=n zKrbm8-&Rg3*vdgQfX1K@UM8IY-Pf!|q%Z}mZLOA9)~eS!{guO+*wJKqdZxN|?V3jM z=Bu-3&sL{TovyzA`s?bO3m2+WCr?$kC)tPnLG|?UGacsiT6?iCO6gcuo-B$K?lg)B zEw$r81eg?Eb35AJi2wwMmWz0vjoIm4AbPZI8MM-T48HfJNcc_Y6%~czWBAHC%NTWz zZ?9EL@gZ9xB-d-Kp{|~tbrb->W<`QW*YOOO5Jy-9A~jfaZRw#P)-&ts#n((_I&$=I zb@Jqi>XT2-dBEe+rHj=se(^)~?d40=S6_cs9XfQV!Wwbt@F6QE$BrMjwUvd~&!4~W z;_LbOg=$6TNyLYpXis!fSTDRL+ip&97Ds|JjofQ~xPVFC;g{^Aj8U`>Y!Tlc2w+aY zy|}`G1IK|i`uRJhddJE{WUw)-+I3;4nHBiLfe)Djxj~|g_-SBsyOQVKGM5*}9_mB& zRDd{?$&H}r@M?5VCi`_M5=+|h5I3ed#o$|!HRAcR7oJBvH91v{-?}C1gMO2ff;m+E z$)Eg5_4((YSKnQ}>?s6aefecIC1qk<d$V)DJ9}4)8|Tz0Ys65v2Sf*ry=f(*M#IWz zBQ((RG9Nj1LJ_bVZLAecCI~AB>7jX8rjtCXhxLT?y7g#`$*{P>fx>~e$^q(T%78wz zcPR3+I^mukME%Cf&~nHx%QM$?$)_~%FfuaYG{m7`ghfKTAZgtLj{45JhILK1qyz4S z)v`h$I}RNhtB#*IR-HfpNp<m?Z>&6g|NZyXg>Sx=HTARV<f#*0I{}_!$BtHC$+F7y zr>~`8d?`7Gth+sRySk%oVejgYI;M8!SybG~o5StMcvw@Y*wu+?pEzU_j=>oe2rCFG z^H2&OaCr@4`DSH9>0=!RDPUZR&o?8<5Bc5+l*7xtaNwYDfd2i?-7b}h!GEHf^;dSD zT}e?maBw+Lcep!>P&d2^cLS_Du=pblqg837o>nhCxrrCtK(vI>=~i1r!%iDVr<_zY z&aYP%s`>fF>gm&`)vOL{Vw=SATjSNFl!)2cSxs@8tInM}TP@7by8)*WK6~b@EfZ(B zpE_l$#aV^V%!E<_u0`#f!h%CO2Bs2v@Q4oXQ64wH(V#lQMR5E;w7RKuz!Mh@YFzaQ zzTyf83J2Z`2VAciF;L~q%74^oWRJp=LIH7EmSs6c9d?-NG_nkt5VDOy1Y}us-l^lL zBjkXxqHeuqg2pPU!$%I;5`j$mREoscS{K1|rf<Lfwz_!no9YvVp*#$a(D_FxSo2h< z!$%HRX9mwW?UAELtFxb+l_GM!I`_#ZQaq-r2lpRTFP^`YMOLR?Yu%WwxL6V>Nb2ab zz}t#|o}(Nn6Hx}r!P*TdS7Iwhw!kQ4aNPpfWi>(zvs$9n_ysDL!}GlvW`J@j95_H6 zpntz}w<~30aA@uCtgj9Jm7Ql-QWOpxOb&!n5RFi?1i8^|hHdhzjiC{ynPY^E4!3^} ziN=iGMg|>7qaPS({|}9gR4<p;s{8jJdTYe-@o_5>*RNgoiLkG=!^z^}qAV7&GU$&6 zo*!xmBY`7QFjzlvTGO4r{_3mh^5t)}zGAYvdhMz#8k{0KBL(HT6qZ$|AJH@fc1FR0 zkH**|e(O>=*6B>7Inmr@h0uR0j~Zi{AXYUGD>^EX-ly3L4@FAFGVXFI94H)kM;wrd zp&nBKH`bzajnrv5cef*6GKl)_kW^ujeZ$&<)g5!tpe!UgLn7C0D-iglL`ZH8TRw1h z#E_JM<JEWHU#>2H_ic6Q(xnOo0?PzS#L=TiY>kLcztTye;IxMge$b*${;}i7Y{g(& z)Hh0pHDf|DZ2ZQ!rgvWVN!ZVxvX)|1=@CdOqo-M+EJzaS8B2-FC7f0wMB@-AVxw%p z7ya4NO1VS<GSq`PDm#B|uFWEmnB-I$Du?CgaxWY>I2@pVuWGzww<~4h>GGXFXx+r3 zayzu+97}@2fe)Mmn-mYXMO+$<jJ*ouUyYqd_-VG(c&RO~*m;R{4XlH>CzJlQ>({EA znySQ<Cae*+Z{OCMiD%{{X_&4+V@b<MP72c0gQ^-;<2p8~Ima5=W3eOFi*wp7<<#jD zzMnpGQqu<RRFAdx;<c<AG~R1c9B4pIq8eQk6a3MJs@YXTE4@OYVL6dU`T8O_;`P%b zvHVO-qv$5OTnYyY2i`3QQdOjGN99)b^5Tzr8&iew=XlGOln!EJumXicYa-k+kLrzZ zKuUz%8S;9E6I$zlHR79ZE>yq%&9ALcuv-(;Fh7xX;pov(P&%vHGAemvkpT&oDFfBm z@Tk^VjA>!^amg)NSY>HFckWzuPV2)?oIELut4_qeJ>%W%=4GW|Q;Jo~LJAi$6}tGf z#84;?(jb(N!d)J$EY3b%Q=H2M*Fe(3(889(^4)04rEuUNa$u4E{cZ@~l`=s_s+c!b z3IAv}nU*w#0|$)*SwWxy?R3qs3|HT2fU;9k+BjOY0qtm#VTg|HU>QNIDs5O&y?XJg zdhp<(_glYq^_otA{g<{(yn6l0bA>tBDXbh=1oV><5L+ikgAQ(TR=?kk=-3zwAWu|d zvR0ftbzBP{zo>rv<u7cVxOV+|_0u1Il9Dpz^%V0`U|7?^JZG#FgBo4L58a_`Fk(n& zLZgt*CpEOn&pujh`B*37%=J`U;XvWQd*XoQjz-#*Jyp{6(j9eIX;o|e<xVw~+;CBU z8KfXSHiC$AB6!XVtdT*C?sKxWJKEYEiD^xretO>1n11s|zo~xlqZU_xdr4uR%F1xm zmQogC=P5-wKM3^ZN|I;nILEW)kMKh`mV_gk`ZOeSDBE9?hpiO1Cad55?)TNtKVPYC zT)*jUWT6GQ%$XF>h=pWGQ@U6~L0Q-(O5!V=icG1IU6Ef5l0cu!t-IHOiH4R7KDC~U zuW;btb3pC+jop@F*UE%4{QLS9Wn#CSFX=uA4m1^sT%e|sK!Zq21)Mwf4$!mON=Ek` zM?<b3Ya{08SF2~5cEq}fiHXSyMS`80u3x{Qk+(<2LqqQAL^Qhmfm=V2kvAQG8h9FD zH<G&3DHv649~nJV9X&SYz1%-Jf6hCqFc<l_rV^Y!bE>+fsZS3d%xUd~<{`7=lhHaC zH?}cYnDQiVPko}}5e=}F4j?I8E-U5dvADv4!hv_r0oUF%s30+58DZIw>UQ0!SDb6H zB0Wd|5cODa8Q!wS0TIO*1B<W64voqhF;*SXluD*Ap*;Nf<B!!J|M4GHm*hXEDN4tV zAJKFvXJVY_3t4H1h2T7!C|Nc`mPxEQBZn#}+sYmpIwYk+>oBxnn>7@tPoI_ob67Hr zU7wEHO7ZOJv+AW5XfJB#x;4qwY*Bz0%EXEcF9HQ3-$QmHKMB)apr+9f%?s3YbAii+ z>lR(Y3J3N*2R8n}Zb{s=GO@n8{@)A?4gMF(IM<-v(ooVB4(xjlL}z_7nQe+gitY>} zExU}+F=yn9yPs27wn|{4f1r;1q&oC}kfq@2m1`AiBpy6?ASGiyEi%-|n&<z<){D#u z_Q;@Gb#_ki?kO6%WArgP1R|<gL*=J|W|22LtBj6)U7b*)%prGd&v@m^RjtXmX^RDx z5q3=BP`nLIyQ1MmSzwed@BU)GpkeT@Jh5ox2AWPv%u^-~=J=AhRBnX>g#+(|1FDBs z0wj05hKXv3e9(<>*G>AzuD{gpkR8y*v?c&i7(Bg^-nEujvvAo~3CW*Pt?N2=?1&GY zyL|cE>W3e`uYUQfUwU1{`A@aDTAh5(m2id_Fr0rpdX#~wLkc527DP+FNUfn$4lU4# zMbxrJfVDM5iUoO}|MZ;Jhy96nefrIBe&y+)SXyt5-_ov6_q<4(X-sRYSS0fFEaYZb zULz06sw{2Mpo|cSrC4`|^Mt3H1GX90`P?l{2`e1fcO2NDU%y+bcCAdjsO~&DSzX}B z?X$bhyre4}_|P~&!_?-~#<-c$g&4;ZrV+Sh?UT;@UUq3>Z3Gs9$%#pu>aWOT&(^Q( zSn^tDL(uSn2djjqHTen40EnaU&x@mj1~O5CG_nUxG?oMbPa8RONF$1ekEDIyPkK$o z$y3ZhX7{I)p7!+M-h=9ic71yNYF_)gvrTPGdjJhC^2(i$X!t3p^NP%zf^@|d4ipZ& z9}X}gpKBo1lKwkk{&Rpt1#&@xfjUhPRs*(##bFW1;dJKNsDTY0j%WcjYq8F2%F(4u z-$;r0l?Elgw`Brr#F#q!;AFZHV-6Nq!lx`O60+rCfKI#vb$72`6bNR(XYYs>-3c}b zR0|n?lpGdlV_7|`^<bat6m7Pi#X^DQ;^g?r>i)g^Rw$UhxwN>Prh`%{5C&4n;n`Li z1*Ob=<7s;r7>v`vJR8yWNee{b!2aOC6Z-YLC1uyjL}a+}XR2-g{%$ib=?Vu98V91G zYf&AYY1M*g<ysNRr)JM>3d#U2Q{Bl{W4Nr&`I9G4wHwJ@kD}eYd8@i9tH7-GQGfjC zu@0D9u(B{VI;I9tb9^;QsOH{thx5pt@hcCXYOTf}`uJJlP|MA<g<7GI7i9#8g(Q>A zXyBp4qn?T|rqgCoCcgOc3oACa#wV=Q%xIDJQ_;F4npZ{3sz&%)cv1(1d~0h<@Pzrz zjE0&%rzn@gfx>}z%Yhipr+bUDjIdk^SwWa;Fc&0A#7lNCiodGO80^?>PW2eY07Zh% z`dMw{!1)gsr9^!9{dZC(F6zvP3)Oik5p?dc8sOHDNp#xfkW1u)LuL+0_V_M8@(tz1 zvP*uHn<4Kah0K%uWCR2!RF-49v!h%J)mn^E!JW2(LH;cE9{+Y+vUS3;jDtI$J$q(r zD~H}ORg}Cam)ArHU#yW(9zu$&&9ph+I;VK*eubJSYxnpPS~##@IY57Y_wJ39iH*UH z|7u{pC=<J9e@XeFav&=mSPndjriO^AO^oi-kiC5IvYLDNsG8B~)wi^O@cOkIo?0|B z9i4U*4H|e92^u;#YH2i15Bx{N&pz)od=4W;I2uXktv1-9M5s|GUBCxiZuW*XMT*6d zM~)m(N8y-uPC3!qHAOq8oYXlLcW3YEz`W<xix)bDRwr;nV{SL;gn-zJOhQV&nJ$ky zD*uns<#$5aoBnsfi_CGq{&$gK$z$Jfz;&Lwm?*Ps(ud(X%Lk$ee<yVMF&*%aUw@=x z9E1)xn>Vlk`qb%@9{vC7>n|(TL$E%AJ5wduz3Ipi?b5{9iSXp<Nvw&$G4hWb3TN!{ zVhM@A2q&Iru1q<SvwRCLGq37+9*~a;i9wMOO{qHLEoV7p8><OBN1Zuyrn)_OTia>h zmj(EtcYea+%Q`hr<qFisg9Rm=Xn<Tj5S00tBFn9C;Dh1-{rTN&37eVlM#{vCl{<f4 zwusHFEce0zH9V=IbYm=kQ<-4x0gJ0KyR&oBgy!^OjX<GbeFAX{uNO61#ttOxmtM&V zz~VvvW2X`JLU#*Cm|8dBXsFrgB=&-jhBfE!5jPrkoJI!+hry&jrH9nIu~&o4=${7q zs-sdW=sX<NcCzf4a^b=S|EALEvn&pu)k)eMddIW@lq4%W<RMxHQ)}!+*>nO3|Ck-U z5xMul2l90GT;2x(6uh|i%mLL&cjl2tY3)J!Ci6Feyzl^oDCIK&p403HWraX4ur`a% z`IoX-Uc7YCQ<+d8P$*b%&9<$a88Ie!5P*X$vPytFi9pWTNfuNo3dlO-nB#OqAsA4; zLmLuA@#UH>JqQG>TvZ;y`COaT70X!8>A~6>GEAFIh>p`|PkV6W6AgxZ{@Lf%^u-wu z*f5op?X~Y~3hB$2FSYv<8%;z7@pLX}LZ)4`*-`<G!d+b9zz58MMf&q^Qoc7*CY<p= z^?TL4f8|YxC}|4^J_HU#gQO-fH_W=DOe`&}cxREvb5Fb=a7rU&OlO*qMFK@)ZtjuS zBrFRq+D|o?X|ydGTQ#9H#@VT*qwS+<<zl5m@k8mC(;D3IL6hePr!;OX<<HX(GAw<L z(a|AwBw`Ckc1k&Q>U4GTgyuz`|5T0g9gp-Km*rws)3cb4g_VM7Sf-Vxo;*!mSSsjH zWZpQRaw!}r9C&veP<_k}xsmH)3`Wp#j{0f2#o}t!-NB&|t#=snx`?Bi(!?67&$J%l z+ix%G@VU!gWQ`(mR+fmPT6{gMH5GL5UG0?_`EYU8x{yaW-D|M$V0~!Gvm`krL`dPm z6WzfRC<A8<R5(PD;KV{f8mzdQ#yK)n9T`5X^L4_~di>al>dfgg{xOXcxpsSc+6R9= zd8{>IvQi*_Z8;GZQ<3N-m*NTsK4=cmkAFk==E}r+^*^iT6=mWLUqng1-#L(*Gw$K+ zV-!9|$?t|4<AHu&%%}VFXD_s<nv<)?t8pDXhcYpH=T7xR2gNNeENNs+hb+kgf#Q*; z6sv7kqo@X24Q1er=Gcui*{2q6gN@mNVBk!xD7z^!I*0O+rxpNC#{o!2A90>1EW%Mh zz!`Xf2xWkd!3d*$B7`ktnc~0#$FIKn%5#yw_~HxiG=*j5uB;R+(q<b*91XGa6H-p4 zrIV7a6b7g-Ene0^yYfJHKdx7P{ig5CqZhtTICzp=usA=J`$xlpe!j8#E7@DFsQ!_= zl?AK<`pb3HTe9kD-6z)*C;6ay&&WQO1{N`Y_4QZPuYdik>N_bBUtjpji=0_peOwmI zVeQgnMM4(O{E>$o!=kEsk1Wz3YavX9<dBsZhl?mBLnirzYUq*-jfLPbcmhXUWhAHY zcmoREy>+Y-`^0OjKY}FO<qP=+Zo)>#hBf`_l-5)nlJav}<@rJ<YG1S*zH#%W*HcVu zQ0I{bMi#Ug1~LoTtBYhPBxWjvZ<8ag(`EQ(T+`nPU!DsG-ZKa2$G@R_V`bv``t<*( zsZRf$=uovQ?(K2Fk`gIu0o*GeL0R-!0%srsaR*YK?FG@90ddby!IZd0gV79;Ux0>f zUEC1XP{g|zP6H|SLaN>mqx7#{z4F?EXIf)0eS21i!d<CuN}-sVn$`|Y_hT`$ln6TY zpg{SE7er<tO68_OOG*k5F)l|Keq9VEMS<^v2jEdcP$o<islq8HV@&}OLQ1+3>EGpW zQqaj%!6L{*hnU82)C((*pE#=RWOcgjxznCXFrlq%Ig$I}!@0DUV%d#;9_fS*@Ssqb zUA`zg-CYKXEN3{=ALTG#A_1|6iAzcV!E(kC5shnxi6G@}$QGXV_*TMR;Vp=a(G07D zoAjkXp=t}w&${=UOFM!(Gkdngkt0Pw_O_?~*q%DM(Dr6_$c&w)&3SXr{!Sb`cZpMw z>#-?pr3tyCFFz%rzT#T2sa8<OjGEDZ!XiPg-w2WjXR4ykp;29DaWy+4efHUB-iYDy z<!`Is{L!x~7Fwf3Fx~0!;Sn9YsRWti=z9k}?7XBO*_tk02Bcd6io~h6txg{|*3fk< z3j#pak%+%=$T8AI{mpk{s^wgCJ&>VH<02(WK<z}Qx6K|q<^%PP>b#3nXS62llQY%X z^QWuxpPiE&J0%%5?J20wH2A|AJ1jsCnFKOng@1|RL7%QB6ZtFR&FBEl^k;a};&S*B zKq_#cBdz}fEaCJ+<C5Q9BWPQ%QEdxV06uaKtkaKwQy#prG9d!!22JaCQNQBe3I{^y zNZwdb_R1pSflVTWfb0nJb2BhUzKeTwgIhUmBj$1$S_yjk>Js%t8HH~N<KSl?Ok$q~ zELw(Iz|#<9>jHi{!>mn6V1`>;C3lsLtrO+rw>ZD79hvUR5^+Q4Mf|KOO}DI2Jeqsz z9h#OF7h`uO9r(u7pm;6NA^a|bFF^;9(562co}dwrgLQGBbLPDR1E)JJ6Nc9XtA*nU zuu}p#m&y6~(cenM5E;MW5zR$DG-4&<xaLTI@#W{$_dk56!}TU~0`2c~F2>br{MIc` z+ge%GJY<y(MTEJ`!{VLGAZdYdBpO-XLv(V;L@JPBJ(?+ac<+7T1>dx?1cmVq!Q;_X z0^v!z!wCN&oxrXBKy*ZSu1m&)+;-0al{pqq`I<w8W79VqalR@#Ly{7IXRaAz+Z~`r z!p=05u^S?XgD54)-*y}BkLID1Ynd?(#`eXF4){&)y9*NPr=9L}m}{qJM|I$Ayli)@ z4X>I*-Hb}AbjYPRcr8x@qVBXh=?S&#fDi!h?<8mejq6iVBy1Uw<p3)KiUbR(fBfZ- zJ}cr^Ixpgzix;d!obb6cqgvpsby|5!QzGA_DG#=I)gckKc$x}#>cc`|2}$0mjCILX z*IDlcbq=GfiBEyI^?>{h7ckB58dwHV>{?(Jk%Xb(XbX&LcyvIPij&o`6GvpF_`Lez z7vEWqUDW}hzyIAId~hdg*j{V;CRz!3pzuIoJ}-#y%x|a`ixd6Or9X&C?}@rda>6W^ zxd%GQLgXK5^(PN7me0Td1RRX<B?UONzY9shzVnp*;V)1h1PAE9H-*!#3bhx?1RwoB z)VKbh?uvqv=&f=fgh>+85-RV@Z5C#trJu&Q4}!t%l65Oy&N$tp^V&k{V5GJ^2=pYk zGtMN25&v}7=?EuOdKSE%X%JSI*EQ#Msd_1k#O&;Bb@l4i>ZhN6s($w`e=l?Tj22gO z8Y^oeXq>Wer{QZ6?ItE8Cl^O?*Dp0Lxf4zah^FZYiXvfFB<VQ2F^XWo!_hcqzxf~e zr__q6V-tJ^R*YIyrVNZ|O$AEAsWUp0LZf>pPam%iA05+_2%SKy26}30D%OE$9x?|- zZ7?cHqlw~_M3x&?<prH|bb<=Xq(42>uf+63SWp6F{IVipp3sRQIFs+Y`0Tz#4s4aB zg)4`VI5}|DF8r;aCNBJn@A@4#;c8^N^FV^oHK_s-&z)g}hvUnL*gd2qBR`<`%&pyU zq>-lWeK*3pafK|cMBvFk0F^E$&15wKT8czU#?5dUn3|)H+m+niPmnr`3=sjXD|LYy z=ekGs$Q0LUt&fo9ksaGU|NPVH(zmii=<qjAu>MYi1z0H#9U2ZxM1$;_++40yN!%T# zZ2IvH<~(~%UNESpR<&Hu5=3!ZfbBkL1KB2r{6LYAAR1b)Mm!aCv^qX`RPZs4^TbKY zf81y8uv^tF4T{{q*EqD(Q&1@l(n?MjL|H?c>d7ThT)MmD30MiDZOLT|Lg9^_Zua}p z9CL7f=h0&1w2`F$D@b>nw*OoT<iX^C>dZgf3(EIInb4_ue@mxf|0g0S)r`F$t>E}@ zIIv#?nVNz$62yl}LqcQfyPgr;wiL({f?W+Z4Q^`ZIHDo1ZHNXrMyFO~op}EIMRo74 ztPz@nd;QuqD-(38@85r@1C!>}sU`!O9<}IXBm!EBK;}=r=W3Mid<g-K&rqh3;DCW* zH#p5C0QYh^t4;Al2ub|c4WJbP#c+}>5bOd))?;I%)#qP)=DF2OgTPX8RpsXdTFU?U z(Ua=cb1l%;t}AR=4`11Vimhn#85AJI0>QynF-oeDOph>97)9z9?~R<BKSkwUzJk4& z9Nsz)<s=+flX$j5L)3OI<1<{h1c84$G;Q(S(6j+;^Puu~qG&xQ9(6?#aT%7U;@*%0 zJ5eO+thV9&R<Dq6SKqWPr1}c*Ba?;(oApP78LB_Ao*+*z()TaCbboQ|&V<au>gQ1K zD2y{B*glo>A}(FNRQ*yG3D!n%UIbH`SU17CDP`(<=#uyX*7Rk$&fw2qn(od!U<jq& zM|_=_$R4gAm>x;H1fxi-u_i=!TUC(zFh`EH8k~oL3}c}=i_AH}`{$poNQPglu4&8e z`#QLDLECxz06!N)gG!8wAg}c2_CqqwI8|79ju@iMtYH&itQj#K<Qm*?8^U`*PC3}f zoi=a;o)%vL+MSDcu)DM+)d$T1PQCtHdr`tYQ6|!9*bhX|XL~_Z!SNw;pdr?1gm`Ro zxglx5wZ(6K*o0y;h#TQ7;Az()7aD4SlhDRbfdAueR5Zep_HLXNOviU!3!ho2x2)}6 z*&>zmA;!nYtDk??v?eXGp3zPrj~=t2Z%K*-4fm)T3^y4@`Svd&bPt`eaiQ_k4JC|& z^C%aKv(IReHoK*q*61dCx*tDw+=t&yYaa50dvn$EC(o<-SBuq}7Mi25!DJfZA(*Nk zBe4VGeN6kpib1Ccrbi)AmGH;=N@1i+^neeHju$97xQ_#j@DN)gGt&Ib9Y;p;(^;$) ziX3KubRp~=I%StBZ04FMYX)ud2TVVZo067*zBrJ-p?-jQ54e19`0J5u0~n?gb9}!_ z?eAING-!+}+x7BS(*C7;OIX8cs6lnbTfPqKECwkNOldlE=Cs#EaOm9k`u*Y;KWLMM zFSUl?jI0qOQEQZ*{EQ}(xYb>NnVJC0Df4}+#CsnHEw*0j?nCbKK!s!sl%imvNF3G~ zJM3I{>eLzW=6LL4ck+}LXisU^rw2Y`hpn*L^@%ffXanphR#K?EFdSK?FbC@b6oVs( zy`Uq#O+CjN5g-6mI6plZ4jdp+T*y6QiYpx0Qw}_MlT)vol<bKzkr4hP-T$K|^5QQX z*p>qpmQAQ6SQXUXEH+^r*%6?}O}GLC!OW-~_z>!h?1g|<h#D04Z5=`*z^Ikwy3!~v zouM$Q5qVNE(yf_0I$vSQI~cK((Jd`N{#jF+*r|zKK^{wqSWN38pkPp=h;(Ut5(v;9 zJ2yze86E1~BhQT)?Qd3~D9Mm43k<r|&6_+}DL&JF?uQN^wjy!)^0(gpcJkI#H8pX& zdT{rlEjY|YUeL}@Ys;&iTg}K^<_(qx8qR1`IZ!Hi9_uJ#l-3Qca(3rP1p0mPb{YBO zJ?n+?^U1q<S5`!7MGoqry7R7}9JWcJAg<|1y91Z9%DIvf|F%x)wu9sSZUtjX;nB94 z6@cAwAalPT4g&*xg0&Jst~qVK6O=oU5zW~x)DtXveD92?ugcoDhRIDh8K|(LK_rff zBmeL)BjXzQu>7Mk40;hV2f2N%6QUV~XRB8Zo?~>LEmP@OkB+K-qsvPHF?m!`T!X|2 zXuk$G0NM#(+HvglQ&<473I|V`_@R;?vL1eoN`{@&u64swxXyq2nbwW`%E|=ORoTj$ zwG>aE#3|Z7w3C4fA)uXD_q#wI>1{|sq1G9%@cTW;df_$&`9z}RLRK*l(h7&>I5Q)< zXdb|7q{(T^y>Q?SIY7UCPu!j<6C-OIe{*GM;IE0QZN$x<&|Q!mXbxmS+UrvxKF4L) zW`Px#qnp7!{ec7Fj*yP2FKPf3%nu<>T>J-&#Jc{-L=A!(ip8}RO>tWF>D4bZrRmY! zV{Pv`>$$a9B5qv2;k6Rao;|ao5lRVIqmeiAZbj)y^G+i`PGO>Pbn0e)_$iJXq|Ce~ zfKzn6h-Gpr3mpm?Li~gnpMum5N258QImd^jRD5d7#A#V5&Yn3}oj><!^~u>!s_Cga znhJK$4e}$Mt?^20D%=RGV-yw!A@o0uYAT2Cc`89D6HsFZP!JasrFYBDFfOJpOb?+G z0T}N-9Cymzc_%i7WrYH;J#>Ae6B&KOZbcu(DQ@pLVC`);Oyz~@N77n}fUJzG^PWlO z+okUDqjw*5gK0J>&wM5M4-6R#9{j)zNufA$XjDr6q3XC6QJ+75zPfnvo9goA%hfM_ z{Du9WX|2S`lP5I|ND`|aBuGeVq?xA1y%Fc{wSKNW4dD0ZjcJom82rluCPad0<zEj> z>0)Zv=-8O7tlCEQ%dd2<&Ux)#bwmRs=WKz#tLdyvePX9Rw)SS{C*%#U!@8Go1@G$x z@|xo6Oa#})89iiKWo1IvRUm+IxbE4trOSc3o9~V1;w>ELlLH&{+xvvw7HrRyiAUAU z-ILXY$I9{Cwz(F7!U1!jn-~m{Ndws-b{jm~Dy{*RyolzQyBgi#=BSVr3ug(G{?wrG z=(`$Wb|S*8{qp52O=o&0B|=~NjHWc{%!peP+7eY~Mm%_sPEu9F!g_$Qu|w)ys|5T+ zD!I0IAU4yun-FtP8F<k(56+8=V_GPAbQyDa9pE%Az}`L@-IyYwH4`bhbS&>~;`I)z zp%9E#n$D#b^@yene5%p8BWi>{Ij2$3ufDEkZr{<)R^r?Et?HJhS->}}6iYP5w4s^* zyaWBn1|C9tC@UKMGf!h`2Sp0&gcLS9TgJfDEBq)Df)ieoOJtiPAQhzT4p53~>-4oH zPB5Ke-Jf$V-DA6llBVf8Uui4OUzbbJ3M;<1$^jIL?CNi1tGC?v)||BYG4}E+gA^5= z+#%Jw4R7+mca3$G-)Pze2}{L>M#fDAarA1{F<sHL!r{@w8f`yQeXi51u||A*>0<TW z_uu=x7!(W6lHd%6tVpQx<r?61OknbXblEzg=T5h&Se*d5Fq^{PegOQVOw=Ldh?Ow; zDW%sdXp|&M91LgB1WN*K0~QL-)EOH+r0HK@djM&2a!TvsuKSz{6pPhoD@hJ%_qt?d zwIy5`k{9_dv*5151Gg{cvvM|rCASREgSqLnto0yWv(4HK$D(ArNm<f-z#Mo?zkRRD zw`a-(1nGnQ$EpVZ;a(9}@O(HNKs@#<&_a|__Li^3iHxONTnlQG4~Z@psp)F!nIH$# zFk?Y5h=qSl=~?p@uFo|BHLK}NOliUzF*&6ZthLaZbrN$vTj7;P*rQX2(&C1~IXRa) z*TDWZuH-|R8qVb<B=bw&=A+{qagC(CyzqxkN=8jb-;J}U2#{042b{KWWV#cI)$yap zJj%xu3bvFzdHO_k{NyoD343t=LG@JDocY)DF%KDKfzr^>LT~E8WKKHJ1&t6ZY=R$T zal2@X_o%dk0%Gf3@1z4=`sI#a-5Df2Go^Wl133==esL~%S7P=fwOt8)uYqvsZMxp? zr>!35dQy|pNmu)`YlJ(cNkL}xT7wqUF{}=J!z)rGkU_RYNCq)ohiQkbjbI`5x0k=I zE`57Z+q`~Lee=yX)y0b!WuZ7{rGI1;LX;=j<{w^)qhHTb0UIFUapF$s2EqjOK5ikK z#J>i;(V<7~XPE}=qBq^(FY@lBWEF!Wr?gO=6TeSuoyiHwG1i8i(ps^5cXe)%2AViU zdqrz0)-<pZmZLyNc|%TtUHFw>FqMp=-3eNPS5_P(WQoOc>m(o{T^C0vu*DS)?1TgQ zZvOF3;J1U_Q)NP@@%~M%s4U9Fc3l5R<M&43HL-LTuAS_qfn|Sipa(RPmpiJ2=jl1I z%LxDy;94-fAS(k0&smYUb62~1T+@j9ggU^}Zaf}6dSq+Gsu~Wg5$hYP+EIm3D2>qT z&ua?uh!>3&h?}H$61m6EWW|pT0exu7z85aHXWm^#{NtGp4cjd;Qpz*N1Qw@506R9Z zK-+h9ZWsmq@++M{t2x??@S&7($J+DciB1I9S`_Ur5$_0O{3r;HN3;tm3O-W<Wrj|c z{&<hXp+qo$oOEnlLztBx5@%<IG>|$2;t9)lfSZ1vaSc2Xuy3y2sNFZjy;nlIaprxz zNAm2IZ@2LHM(K#Icw{?9%m)To&p=04*z}|G$(;=huo6-ij~qQ*efsHnpI-g#<x8H< zgjM2<I>RiwrXzgh$RX8T<=f0U`CaYgr%v1HmTOFYj);5(j+&U@Q*irJhJE*U)2_0F zg*x)j+wWrS42uQ4Bn}BKDFVC-0FS(Id*Ha`Sl;#N`yYPrL3gZ`<BT14ujAm(d9@vs z+iNHEF4(BTvz$OJ{Nw?rA}=f!k(aHjyhy+#&(`>{4nz6`@4Lmzme0Vt5Mt7EK)P>+ z>;Nc_A1w#mU*E&h@2N8JyqdYCsZLKt-|0Q1v7q{>IDkm(R|IwwpWT@i7+ZKP&>5zp z=j)a;ggjfnzSPtkEDrZIYJOLW1dRmiBBpQ8cxuiwjY7?9t3bA69M<CMaNy3?0r@p5 zPD|vq6Y9J+N5oQs{%?tFZrhev05weQA*;5B{_{?d(eS~eRtB~NsBHdoSyMI{7#1j; zP7l)sIHTf-<|Cib3A$&`o~}O8$mqFG&g%Y&NBvm5ZcC4*lyQo9eL$3G2POHSxOwil zp4ZWo))-aP9jBX>4CR|U3W;@!%0BJ@8pz4O?66IDqI0?gy3cR$2uJb4CEnD}Is9Y0 zza<7_ZGBsI?lk}O-h?+go}plqO^7QLX~kg`BusT|ba=EnI>L@bC#$c&{;Ikpg`EY~ z-+uRPb@9?gTPRpJ!IY*k?bPI{OC%<%OrGxcatA*@{V@Pzmu~UUxGEepoi3x!_s;lt z@l4(=5uqo`tf0459Ar0;*(HhvK+%C4J)}<m5W7Adwlc;db`-WxWclGhKhCF^n3$*@ za^RgTtxGz0h;w#WnC<DbQW_#xXo%c`E)9q{kBEoYes&m_CSA~%Xv5oZ&{$mIK%X3V zN`Jji*uKDWPpB{8K7syk!Tkq)!WOWPiUXZOu~*^yh3l2R8BPaOT`XB7Xc7>(8qBu& zI2vNYLJY4guiDyhSBr$16MK!{)$7$AjhbV|ekCP?tzf+^pjvW|7-~+dN1)Wn#Twzp zH<M4J<(5eJ-D>P!+=C_#q|3;gWo-HtA1#yv@wzSQ%$ny;REFsUOmGUu<j%+^j<Ux5 zV1<jHggY-03cp7bpNkHA@yl*d4QiB+5z(=+^HwUp&^&Ie6f6jZ-&Zuk$9A%hbUp=B zpJI(f%km(!GJZ0}1N#Fbe%f-8ccIL4v3V~zn(I)05&`KwJJJAzcVhx!ird7XI%Uh# znY<O#?&}ks69Ky`M|mP)3q|(zOX#jL{<sru`i8o(BfW?GX>|kX`n|COo#coHEo@<x z#czf6NkSJt)hX2l=J+2!aa5h#PhFpW{p(-pWal63Kd%n&(c?#@K#Z#1vJNaw?NPmT zy%8;zk?PBu%1o+gUDd`DkUX5MAzjH<V0>L93||W_A!`M^Ctt{rY=M9X7G<+0F4j$8 z(Zq>f6~VHs^;j26;MIsUw;?HR!y~7>So^f5I&o?^ircm8*R?L}rg!*bJq3%jR~B{Z zw%Q-1at<|z_-;~OK^IC}RvM%27}kPtXsHKGjG=L<ku}0Pz5C@AbkbFx-zNv?r|+rT zb7f*<ZT&wV7#b|f#GbyU4+Pm>3blTOXkwd3r7e+>-9ZEj1b&(Ns-=}B?aHwjTfIt= znA8@4bZT#?QJB!Sua6!*PWy_-R2tCIVO29uTc8KwRLh=saLV!A-B_f%pLccXmvMBT zlgmBp#v`4NmV@Tj)0RF!L99DDz&n(rWRb7?<BoH<I77!o@b1?qqPW>oAq&MJolkL8 zQ!$uxd{UN*V;b2zsS#DyRGg93;`Wrzr_c!Bi{~#j<xEx}4i8tEJT(n|t0R<0OWVs8 zJg6IAWg4W%wRbs%v*up*b8k3M^zB;tbzs>VgMhnd(>=5kSu?NxQgmV{&)qrDdY|3n zw+fB7;wtHnwbz>gt{E48woA_6I_DVVZyP0IY?OL*#C7NM&p+1=P2ajx%i(jEE?v?g zY@bSzI24tU-g5pxggWXId8ngJoo4XEe*qpfDW%B*K#$>CbW$C+azJhavQ_duiA&<Y zox388PP_$}iIm(zesv)>ml65JlqHsAjYu(LT^KvqA-m3=)ATVdbjR9yLZ@k?+)Zm; z-7{?^i^ZGiv#e`jG|Sm>B{S!j<Q4+cLC}F5jWrc{z$BPK0`NHD_WX&=wudVa9}NfS zr|)%P_gtCK0T?&au1;t7n%IKx0CT{N5%eS3-ozyVn&fFen6N+~%n`nfL|H&fNV9kQ z%IcDZ{nTw1RgYI!e!il^=Wf{=@%Zr*pND`o0&_LfZq{{-GYu|l0GNNvTw01m+?pDR z5dIp2QaFt@Ybppw@t~1-dydAXg&i-yW|pV{n?qY^YS`>);3FwzW4aQKHqf0TKPb+Y z0^Jos9PqS@YiUs^LF8>EM3F|VK%tZ(akRoRaY_f?eWmFc9Gn%W&&DVpN(JY7U^${u zWrq{B%fdqAPh%S+t>AV?OL5#I&uEm}IbmYDTp~q_N2an1T(_W{wi%bxcZ+MnCBMLO ziniDk$gNLIPM%@A;%v*HJoLwb-EcDAf>Tm4{1Wq<A=hp=8(~%+RFAY~f?6}AMZs7F zLB(_>I<bt3U%vdUPOjF$b2@?k!i5XfXR=06pAH`x!<1JS&ps~tS$WW%ddwOqkB%#k zRwq_@jcDW^U=$I#psYb(1b4jxMOOR4xlAeqaw;6MLhS;JrNvw1N|tYKBVe#xmT`V0 zC>LFK;ykD%l!s+){q!?!iLJp97Pf!-*?F%GyYjQvQfSA&x%*mU_d?S*mn6F+yvQ48 zs}rL#!tM9Kx;xQAEV2{_?X8Rn3C<=d3Iu^YT_(9FK#BO+IPjQ$`d$}$&y|Tp;6Kp) zukAIl1>eEuKt0m+M#Z3$xV7-?j$Wddj;Mq<J8r~wuP>`7QW$1tW@1W{Ow>$ox}zPN zFi$T@iLe<Q3q)>JB*@)Ol_G+IKxa0DH4TJ*40O4@5{)!A?@E%BS7*UD1#|+mKLeiH zuZZYiGmkWWo1B6it~=?0aMnhs3w+U^<CwAm01*0zSEJf-W^8Q4hh@d$(6sB5I!f%C zf|Y`EJviTEL2Ff5q|N(dfg(6iNCsF-VZ07X7s4Tkj>9IZw+P53NC*?TTO`;fip(3h zx<M;?M<jN`(IYIErbl!Meybetm#-Xn!TRws?DE_0^>!4WV8OuG!5W9rkujZ2J*K*H z#0#mJCV1)6MJwR!*u+|ib7#+b_o3m@=%hM3U0grv{0T@uvT{|Dr>-cGe-qqvGy^i? zE_W!#aqlyU;or_BC<yrwe#$~o^PPNMJ}3qx6P*hJKnmkl2MZ~9rE^J+jaA2vk6E!8 zJ3JQaC?vx^J^!h!-BZ<rdpfl9*$Z#%;hmpWWNtMkrZ&0J@Uz<yQ$tvtQ^QZ&LwJ+O z>{oDyYooU#t~`E}9H4)`=kBd26YFcM|JmTs@Lv_Ry}$51FG@kUZ#kf^peYjfmd>p| zF~lx{8k4l_3YxC8>P{((tC^e6ZbDchCMPDUyZ7#SZN&WR1zRGlC@@5%EQT~^nL(`> zX;+YN(iqunEf9^3tFHhpbX+lKlaO@k<m#F7zdar}tDYC~jpj!_6A`12JrneZAgPn< z3O@dEzBT<hO#B+6kz{IsQ%1gY@J)~TB#at;g`dMCIxtF|q|XLF_5AMhTA2NvPUq$1 zSw{GHUyrqxg7quxvc)Odx#9Ix1^5rT22m^$&koo&S6j>4LihZETw7FhK_6syiP#*J zORy!r&B@}$?Kn|4L?vwJ97tb4SN`WW3Re93)o}Tl`mv#NAV$<#J?aI&Utee~u)cKZ zqRv40(%Y7@g(=E8-#vpTu6M%6Tz{}-)W(clN_7Hw)*@v`9VHHn2+mtxH|kP`+kDSC zY>s(fA*RUX!2+X^|6Fb{0c(V1G%|^w$_PCC5n$X+xIz^exOA7taJj#)IMTpQ21d?* z`iW%O;jpy+@MCrT>Wyk*T)Wn3+SBYE9p0(7=J|82r_e?dyeHPAfYErFLj^MAlQV<> z0<v?Y9`ZehZ*kuN=oVN?)WPS#2L1E5QH-~uOuVe_J~~xhnAP|D)!QJt;LIGbIP*h@ zz#P7R?-t||g3ycL%+eBBhir_n98P10KZh%Uo>Ndu&H_MS61;7^&}blwgO?Uos@E@H zyCcde%o9=`P$F0?cUzs*hYufAFJ8Q~aJR{uPOwyja3F?Wrq$#ICexBLj`Bcn93m%A zDoixYU;?%#)BgT0IgfVeRNVGJ^3NePKO%s~IxfTP>Ml%8+{xdGoM6}(3&$fPSdzhk z=h-yrPG5!5*JDFRyhlDK@-lURT~kgRKduqJ^J;|e$9W$*^W(|mr?IOR+t3P2o;na^ zY$z_u#8wRG(I0QnohSj)nZVT@3_m%<K6fzcus8Hj@F1>*D3`w#ve}o?acg(2klF|S z`k@`VJnaPs_;y-&_&#vyR!8{zikSL!w37J?jBlY<Xmc!gzFlxi-l$Tb9H3;gOA|Yw zVSV`i`|qmDQncB;;PcNv({!g3vRLTAi2Uw_CTNgHVV1bW;dfS%Pa@HIk!iCW1~WAc zSSQ&2LRO^Wp0D=4&r2pM)1YStj67A+N<>ggbbfzLe$>1LK%hVqZ+@z<+zA_&nd12H z(dwAq8HWO%J#(%)e(bmo?>t|9_St7%Q^85(u|WHo2Su1-=7A}`hvo;ygeSK};BI|; z=577HAfh7~G}bN=RzDZd$I1bHDYNv?-$wc0iZTJA>cjnAec*3J19}^bIIuW7q#d0l zOEiQFUZl=GaL~oFGe)`))E43h@I-&!;!xtf(V#IpX8XGe5)ECOoOQV<XeyuzY<z7z zskFFysd{*SPU|3MtEq`8@3i4V=VtC`aW!*UU)HBEGj+*A8yPPC#UXTIg@}<p@=`={ zH9e-G5l(!fE0YHg;)MX0LldHHZjn!<aV{=nHyjG9i4szP^AB$aZ#uJ$Ml^Wc8P`l| z8UUz09sXuw!MKe~AET*;M#9yXH(wg?gbj}lS4XW>Fs<W|4!t|2dEu9Rc;Mv3q<7ik zd<v{dOn>qM$29FJqhd7Ix<bmIaLT|Z#XRZgtT7rZWkU){C?f($?*_Vn2QFv^LpSHx zZV`1@4FURHIKQ_Vi4ZjLr0_bZ1CB@Hn!&pup(KHaVq)%S!Vum|>j#ek$gFC0{ygF> z`Q-CifN~u*vH-3HHQoMDa)-2&54$um_3xXD7j)R1e!8>1=#rF(&!lLxc>&X&P&zo< z1?AXzCD|%_gRr5TC{KRmmOhmHeG?R6iQf7{3OXE3McAQ>6ggeK?-0ozf>T}(9{3f- zOCl`(+v#(CYY*B)Nnqd`h*xeFDbP4|^($5?-Vqj7l!;3hFG`MGs;+<irLE$(w86*y z`}f@jEiB5?DjCLGiZ=xgVH1ASBb;nA3trk!gs0!P!xe}nN|8QiLWTeUKmbWZK~&JC zB*hgDY~p}Er@y-?aE}7snlf>Gb^UL@92)!^qBDm6_K4tuW-|v690(A*EJYAN3e?B* z-W>vtwF-3Bq7j9-M01k3IXv1d#Id{d0k3jcm?BtPB~@H1TDn{43W6y{%bJh6B;m|{ z-z<KcloG+bRd#Bk6M9<<uGyt&Q81iX>V?$K6=epY3~v1Kvm)WZU?`L{ND*v=x9*9y zbR#z2g?;Uj+dV-`XLh6k6~Ed=L*mEGn-u3<b8A<__wu9+yF|zP=@PMB5Feu)6q@89 zs6l_G-JI1zQ%#Z5ys{BZeHt4(<&nKJr_X3A$Jy$%PNF?=;)Hfik$+;+mI|yCueEjW zirzc#KTlV1<Et}2;@cxrXKXr55FrX8cYlNO1A%iGPmtchPXp8!QfvuOL%xwG6V{1D z;f{I-By?u|u|3miZ(7=-{OQ|iFvH)J-v?ij92%^fLOofI5K1TCk@Cee_hButW``z5 zuTi2o<nf1J=)4Fi5KM3SQtKqJMzEg9ht3HF3yJ-WtDc2&qd;(z9rDciL|*k5?yx$7 z$abfw=)|@M_kQY*t9xi~EN?T$(uHzGjoFi|cyqN}Y!udBMUEZPp`Ihh^-hmfXHK8i z3EJAhPFALKl3yGmI5j!xL6R8QdQ~kfYWF&yPl2oy7U5{o8)3Wv*gz-07rsUA<R9%5 z?Q0YX`9~^$S1BxF%Jn1Wz&ic%=WmGtZ%vuFQ{7oOIdI{YzUJ@W672=;0pS2sOqQ3I z+^CIe-Y+{HAsp$v<^8oSFfEaZNrF)EZi6W&ii8DZOE*PSM*1vll}`Wc`ojWhMtr8H zZfnlH4xPI`Ufr3VtsXsmRIy9b(`Pa-YcVhBQ5Zrnqc|iHOg4JJQqgkIh3mXWXe&HF zx9%UeJkO<X-eI(!bC6jDU+MUW?~QQY2}%X?#Tl(VcKn!ju=%3;PW!sw(p0q@*Kc?$ zUry0xEd{%8c}<JIyJgRl<~@2kgOEjYoUT@Im8(CroT>6BQ#pShdfz<rw;!FU%A|J^ zNcjFFyOYxW{VZ9;c?4Jr__lC-8(6fMMwu1Se1?O+7kx8%jy@I%rEt3V=!H-3#Utgq z+hPHXew+uvbf$~4Lj0gpmM{Czxo>QV;9#`ln)1iC%0nZ3mx0aa5#;X_IjMi@)~a@& z!^8AJf768HAjhuu<bXcz8A%hgTbSZO-y^D-`h)eW?66=>Rs%j8wvqjO^m8i{D2XhZ zzjf=D<rmiSNhua{b89-^gSJV7Tx$1F2uKg2*g-IM3$%>W_rl-_2dDz47R=vgylZ8y zbS*{lgXMB5SU(&XsBY0O?+0`@FmFwnfS7^xjsIR9ga3Lrgq1WO4hM2uLT3yC$UQ3( zSsAdoRxKlcv_8Z$+JfI9ZZ!iFZLXcAB>3bM#$q-s4JZpUGt*iZG3k!x#Q3C?iWw;q zk2S}B(Pv65Nx7k+&z;P$LLj(tV3aQja^G{Fk(*+Ju7Gu-NRz$k4qS2FH~>R4Z?eDh zo<P(H^OiZacSO^ljvPJe5j{rruu?D$ge@5v=|iD-H226BDbA<J`|?MVEd2g>^zPK* zqR-{gTxCN;%wIIdG}_P>R<2By0=96#1KG{xa(0V*voK@smF=6ME~#q{h{26lh$zY~ ze>dE%8|(XWM@|5iVS4u62=vX#+Lq&uMv3^=IMi%R)0K`L<KVgTUJvnuwt4;W#~(el z3FYFXtZ}1KG)AOQhjI{9fM<j6nLKzf;`pWmqIp$hpWh2;HiIVQO_caI1GYi*NYw_j zzaO?PV6WI_E5Rao-rMk@;p*_Q6H*F~dL4|<+R>VqvpS;!dB!&7Y=<2KBTLEZL=GXv z;>}7iRS@EgZ;xxVUdj<>yDe3y{Ct1)M<HKvA14RskH5{5zg1=8+4{`iIXQIUzf=KY zbNaVgl7f5RasWkPY)t!|Bk<Jd(TT6;xGR)+Mvd8310jg;W9ktiFh=^^#k1gK6eb#J zr4uYuVQ4&&m#?)86Q@<*9KTup{L{}mbnb@t_<s0cu6p_Wl@?)Zl$vu7q@)aTin332 zjmF(`P($(>nT0eLD>TYNH0FjO3ueUk_Ks4>S;B|+<Gdz5v=v@q@WoMF;AgtKXBPZ5 z>lh5yZ%FTmcOjon&_1pX*hMdBWQ31Vz2E)r_tjPH{KT0dD2$_0KKN#gTkn&_^*Fv8 z-lvrb!mL;ZIed>;&q(8jIHhsIEiYSt50P_}a!WLQMmo2Qw9hmJ>`gczxug+betf4{ zMj(f5O;c!A6k?DhDG~xisYSkxXmKvz7n%nn&#O9(aX{fmG_8rLOPr$2IV->X)h{b7 z6Q5{DvlE(gKQ<;MLTQnot}=YGynE_NcIoqL$*GX7z_<<p*8tDSHr<UkLVJGEHJ+Xj zEwl}Mt-yoi)B7{Ib)h#A--`?JjySJF5Sb4WM;u^>JYy=`#nErPLl+C`f7D@vSXzJj z=_jwLVE3oxmoFucbhe28_^wto1!~Z1zT#Wro5Nz3o!`ISxxddGSZ7`b6wk-Sfff4W zZ?nj6RhfWrRiXb+)#hJ)n}sO2_d5q@07Kj&=qz9p$yh4r$VUSk0+$XShrl_F8_y(& z^&wf2aOX}74h6HcxT@VS<~^-xc6Qc+__~yc>({PTx2LD8xrcMrs~7WDA}Y<DkEt$^ zr>!I=3z~vH?#TRnp&7AoCNRMU>3ZPVz!B2xno#$O{>a0{K=+PdLuPX4T~Q5o)1hJ; z*`eV>+T}(EcWKurwvlBn@?o7wdtB3?4r?07%=ApXulu4bQp?NB)rPEB<P(+$HR>pr z-Z6#zapX<s%P-p@dvO74cDZ!<c{g`c*F?G-BqdFs96){niUOd)413#|@96Z&SOEp* z|7Y*bVl-Q}{H~p2&GS5*I#s9Y%(rjbZ6O|z;RR#~scm-~gIWzTSjLv1X(T`xA&|lH zLz_1q+!%>A$l?jCM%Zdu-I5<L>TYaz-|l<wIW<>i&GV31b5&0KfBzM+zx{pr<ye_n zUuH&RetXA`Va3{O$6669h8227Wo6dDas(Zij=fBO0&hsCSMM5%)2rDBaaIcPx8HuF zgXcc4&YU^zrB2&*=v;s9h$?%l)Rxbof|un?E+4rCuNaX!XEUFo=5mWl2JFq^<|oKp zv2IQDv7waHFrgq1eg-s<V_UZmOLpzjPbX+=wsrr3eO}VZo|qk)g~g2dTbaS;;7-oh z@j-hA!ty$OUA3R7f*LS&jR+^9pyD<?1yuk3zttwfsw)#yeSLque`e<QR{KQ?{NAMi zqrV=_Q$rdjN3*eZNWv~U>U7*J5GD8+Mb4vomWeT&8$uGn$#9N1gEo@2@f<pbY1i}T z&->sx)}3aPdmIe(?yc6(E6<=tnq!FpExMfLZH!cB;fp{<=u?1kQlc!2qjMRtPLeNm zP)?a6ns*WrUng!xu8Ds>?A8Q<`rW%=(k00B%4ACjqGU$hh#9F?hhH}MXNKJQ+Pd{m zRL9bZz*nxseu^8~H*+7m?%GemXfQKVY_gB<!K_7e?s)c0g?eSA<2gEys<$)Dnk7VL z-R6qu`eL(kFDqabK`#rR4Vx(wy77(asKL)UD!qHN6YtqA%|OH;2@{;0a>F3Wgz8v~ zB=3~DP|k;7HsXgr`!m%SpMUOi3FuIAqB64)EQ_HW23HJU;>)MZO8|z9QsI(YflBa4 z{uC$|o__;GjcemQa>8ZZR|?Lu3jc_iYC<jwhuHt6+M;a89lj$U%QFqBDdHK~#u82j zMX=7bPaCy4$($Ki%$Hx4EPL?afoI>XRJ_-roxoD&Y~cwwQ3q+q^nFw>!lma$VO$bz zL<-OkU+wo=b!Fnk<c;6gQm1Enk$tQEG6jCGQXmPnTG+`W7qbM4<B<j$Icuq#;-V=` z@oG>tHO%NTre4`R{Y2K7Zr-|OVf)jc{?tobZtFlGI*s0tCRm73FK1#|lm6%tQbzn} z<SE<1v0}iAjh+$4<j$xE%0wiWGUdlcXn1o50CZ2=k+pXo(<e!<zG8R<yav=vqAn%W z6id_fB%uSxAK#>2?m>I1juj((J7wE_*X|v*xz9#bTYJ)M#X+q_9=W!sx~H=#o;{V- zr`OC>X{nu-(y0a*G8-HD-d1K=@}v>y`2MN`^vW7&E281%j8Gcly1!)oeho;)+e;Ma z{BG1deNE(3{-$l!0!b4w%^DH)HI(0BEk&Wjh@~dZjKGKhip1Ai+VbrWzE$V(6W870 zEdwei$_n{}8lw8htOlj{AD<E>0maRz)t;aw*k*JiWbLm_daQlvQ6e~)7E3~)m1BAN zqp(zS)Yjlbe(Bq(DdHF3IdEeW{jin;Z{2oKduMi5d$oV!fcAlLR>fW^7uQE`Xmj=> zpRa>~5!yi7xi~mAU>ja8Lp8+9cd0OSMd*dEv80bs5`Q=ap3x8ga4_>jSaoG075{(e z{@3P5rNnMj3V0+<<_@u;%}DR`3`<RD2N8CSwdodkYIwb-n8s3nNs7~`PG~e{eC)YK zneSKEZKY{c2hUyg$;gB~RY&oqW+O1GS8v`{Cy|*6ge(>@V&s{7qPE~uj&XEhfme!c z-IO6`X$02Z*>ObW(B2W?8KWBUE}o3-V$ycWK1YzCE(%~P5kBKWRz2`}yqCd&jKVTv z8#4%)_GJ(kw^d6+4jw*Wt2jq=679LOXJT~k@>PxSU6mQeJ3hQ{Qgwy;fU7rL>ydgo zr8<g&ftgO~2P213r<{C6F8NIp+A9LH09gqN<S&z9MO~u;XDQ%src1~$jsL51^79}C zsZ?Jq>r_9nK(=Lgi<aZ<^d1NfojZ3<ht6r#`OIghwO8Vpm$>YdlEF*_dC^}{AgJHD z-uHQ*PYWlo4CN-tEG1;dHZR$9$}G3Q)!fwiZW-QU?*f!u%a=oX`@S@MTXf34oIgJ= z{%!R=^&L<i22<PSuZ#Rbh$${F_2pYr2bh^UGI%%+>pXHqCV@}Y21Tx29Z~ytU4|xP z+FZ+@wD3tVqTVq7rHbP^<GSfO)9*nNWN2}lk^=O<SKY0NGSN5H|6k1vO#g>^8-|99 z+jJC&Ms6BO8M4#On#o`Z9gQ!~O`(eLo78N?JIzGA)ENR#be4b>360ROx%!&UjJT;K zPLDNO!x;nbwCsrnJVuhE6KKCnV;qmh-m*K27CyNX0BYev@P|L*?PpocqJ^;%HsH1L z)q$z3k8oQA3cThbk}Uywpv?z05!Qv~v<)2e(W29&dc^V$e@BJ+PZi4Fk<F=r($Mfg zwWDvlM)<bqT#9`<fp(t{jyj;xy}jDZiq(|6nx%NC{WQ;>J=30>cSetP9r$$Q@;5U| zi+<CbI=xS~d=1z+dOphJH0Ay=C=lO~D|HRw;d-cVnB_)22%#|7N2NiQ^lKJ^K@pZ# z?%27lI&f%zb@Z4zg;FFqFXGEDzqFMmPDI8M8Kct7wgEqP2=Q59QomKVDT~<&C2_hK z7*P`9r^zobe@cc6e8NX~xO`8K%e>W4f<$vesT0nfr1xUlUy7E)ArM~g!z;C?SojUt zfKMhM#kbG^7h!y30O}W|#P=K2KAC}`VJQ{EwqCbe`@&fIghj8tdv({$7KgAtdGf@E zb}~!x?%g|CG!zsse*$J;nXq3N$&z9tQec|?_gcKznkW-v)%CGGeV<$v_k6JyFICFu zH3~?aS*{@{B_wJ5XlUK)NmOejE=gL4=f)64;*BgcJ(8)<Q7I5i^K#%E3Pd&m`trpq zbq3#P`O~CFs@2_8hcJGW>BF2PuLsmnqo~ZJ4yWaJ!Xp|7W=&!=F*>f2#fk?O_rSk9 zUE72;!0bYhhd&1rmi-a4me(dmYgsO3xdC19)w^Q|ee(>0>6hWCv8*?k%I{`canv6U z^TJAwKD?F)?9s^ZaD_6#Mpu@?vCoFnXD?m6q&+tGtCufcYRSN)XCl;Xb6sH4f-nJ= zQ$1+=b{PrcaLs4@`CXdfDXdG7K`ipp%)ZDhCD{s40J*@Q|B(%XY0F{?$NC(j%<PRA zlI5N4I<*}`09ax=cKnD;y`HH~pZQeE#EI&->LBJ{_v%2pZQHl`3>DX7eOUT`h{GwL z522B4DJ2mn*`(8tUC&fr%<#e&QKy(i%d)S%p7P?<m{q7XQ8We2?MSl<MbBN}O2mM0 zx0h3RdY`#c%vCxviTc60BoKr>gS0IJ`o6ALic6EEl3&q&0c%nQA{gM{6m8CEqRz0F zg7Zh1o#31uX6dnF$o@f2L3bS`GxZYr<qyy)zerHrhNnQ^%vJi|Yw@0IqD=525|V#g zeE1t{@lvIXUZg+>=P<DfeyM{lffo&;nm|chgzm(|boE*%S3i3;UOkk(?VGa7b45#3 zIK>(z;=%og9+4r<6eoq!h)d`isswRZX=3>l-ODUm5&x}bHp=2Tng!Zq3-ty*zze8k z1>gFq8ACEaC)Z4qf})6=U<2K|yz8vDs|hnJrWKG0)Oip1hLEB>S}To^7`~y}WBVOW z_b%;k2qjRd6od``?O1t|Wt6=d;X8EbV0HA!QSGIOwaNQOMm6L0pc)&0u1)=uu`lPX zPSVbuH`kK<uEwT?`jUM4{bpzK`^*lW72?t}Dzjo+0U65-cM(}ynTxND0-2T;PKluP zj6{+b$ROPC;E)ehJbd_w51GRlz^9*TS<@GvX{pMI>hRISIt6*J*TfGG%VIjf^G8jv z9fTmHW;+gV!>>oeoq{~_S;{3`avricI+E8{a<sdgsy%eBr;O6<_%3jqc<vmtVXS6I z7yMk@Lio{2q;{l{wBenFbX!SIC>Y$)7Uh5z5L3z&-kcWADVg0G8t&76id|AZcj)Bv z-Lm);dnpbcJS2H`$VvtZ1$!!9Jbxjx*zaY2odGu0OUcAMaOc9yWz$fAe)n3v?3yVP zV^g>Oo;G6tx?XI{TD@E;r*|k2C&0#3J&jx_0HFxb`KQC@O|Xh%$&yEoHR^KV{6#Nk zx_w(yx>_UpQVPWDm-=a1_r3N|<TC`kJW6ofdzAbHKEjyr+zH4y<VL{4+AXfcx`u_~ z6xwKjL;lkM<kU@CI%g{&Hw1M^GoJiBcY{-BScjhGJI;rGp4L~Ixw6b6O?yJV0ZT^Q z{PMlDG$2N6$*6CnAn$2V=RXulg)5I0Mv|xBu&m=S!iSX{mJA%$=<vxCCp5Ab2OKiO zcS}nLIG5y&Ov$pjam(;lk07G7cHc8G3wafY%i$EhIG0oAoSnHGo)dLOHlCaL@h>7v zBX{x6MS)OW88vRn1zTxKvIgaVjvjj;K9^-C?~6G1nJhFN*ItPO)n1wZ+_6*3?=)*M zq`f#Oy3?v-mQ|8J)M;iSSToP88p>>pEHl%lnFkM)=!@#VAM0XrOunIL_#5kz2Si8| zVTu2mmBKljm#8K4CTS+eKdVwHU|s-Zm^VRZ2`l_O3*iR*Zn$M!b3VR#Ba6H_rad&C znn?qC%rFe0K&FgXjI#-JWx=|Wtqqz+dEiQNkL7OxK+BhaJ)^U8hCL9nW5-S@tVgwM z?lbMbIcozXmo8oM%sopupFe+IO{tAUZg~)|iBzCjt{a;I@91~0)hn)<GQkU}F8{Xp z;?J(t%aw9^i~{=j(IFIG?i2=oC<O0iGV$%(7uA?%BTyVJUbv(sD3`T2;!1Vr_FZkR z9<u`B<pf$%z@c|+s75e{jMNorpGKwwJTVbVNoo$FK;LvByBp$w<1}tDqO(Bf!EhpJ z<jq&ZP`=tV{dJ%`ggbFFaGm?-de@bFtz1UjqalZm>eQzwp7^HT<4`Mf(XooIlu{^T zrv8kUJ`ME^SA%NMv6ixHmu$Oh*}!3Ka6F<$`G{sK_V2%{r2}kmyy?yUbm066<DwEN zJVVTP1<mP5li#IFqAt<R5^@fgG!K}ZuH09T0$G`$E@s7+&H8N8-?nY5_U0VWGNw;# z&hyJJzw!p_PfnfGp^E!_9?F(&LrSaqB&ESs2-!ou_4*b*ZvOI0V}A;Z%AaZ-VRCgC zu=JBGG#@D1DHLSqbUfsM6y9-jYy#a8wTMS$oEJQR=S{GPGCm~9VqR=69OuS+?wIrq zj55lco^|oyMxsLueo&@<`bHk}LP^yh)ghL3GV`jsU;y#{C>#umY~9)?8Ma;Wic_=q z=_kuinytXkjO)nAsP~0E(bA_kuigd%iy=c4Q?46;0;)E@y_T=BrpiSB)a0*B4GjLg zUJ&-!WG-`Zt8-HmAV(>n6$^<nnex5P(Zw@6O#^I7-<f81iY|axAc)nxS{tg4AS1lU zPi72k*+K%8jnhocV&?UyKmD#c|GmzPkTP-i&b{h|_C(lXg{Ev#B&<ZR!A#QGdoPf} znNA_G{mis3Zx_?NN+F>f!kpKE4r+Y;`dsu=kXMyjsyl>)N<+G65FD`NODD~j3}D4F z#9OZzxD^J}#4gi}Z<GD__)gK$s=uA1Q=_YBa`0h23#B?R;P07WkV&04_pj6_V=-lL zNK2ihR2-2)@#&|hs?%pq%Vg(yS%UflD-~n19`;s;MY(8a6f74)K}&TR!EX5yj*4pe zBAuVRmf1D13-HCJ>ymZT2DNA=2_P!OmHLA`U@r}`63Cfd8X-oB`0|S{tDpT7KU;mJ z&DEzq{nVYiEnA1x`5W+0gU<*V!wR_+b+J#D$f#QU=tQ!v-knK3=W}_Y(kdRM0SLhW z3Qidn=C*@JiXc4IBtH|jT5i<~SS`dq9$Y>Tib5>MWEqkxhQBMaE6=R^tGZ&yrzArh zU>ILoY2{OW+_`H<b!zw%D-<WO6!!U9pSyJa`~|h87rcZMBPLim42?71J3iY&A8(=f zk4M8&^1Kw7p}#$EiWQDrQ)S|5b@$eu>ePtd;p_^(M~{PxhAFzY8CAkUb#N?#fhaBn z_@@VTkbNq%?-A@|#Jj<0g^`)yrt`BdZ6ZMr@eFKI(?GRy2H2dV6&@u;cpX~j2aeuH znKNuc>`228iz7OPnud@`g^7vx+C2SM`yZZqQ!JZdfAph2(&2NLwcO;EtW>;ECg1^4 z%UqPndm{v+E=v*?i%rqEM#=GZ@~3jSMULblg21@oaXc5lyDxMal)?m(Cy3&-zBqp> zkI}_|(28&RP;z?38SnX#>3r4Msd=A808*-@zj=n;EoZ7*(7P@^*AEI)9(}J|m%Bl5 zM%rzqr4u(S%TL3y`m|FPb$0IARqd9Ql<hLn$>{O!y}NBO<+08)c_pP5YbjIOn?oIp zr741wT*6FXDK(xzv93SHm(HW&orcJix#N~$5$vQ&m#x9HC#9?=kfwijN|JuOsu;M< zjbS^!v!2X{3Kc=Rf7cYA2$qu@PF<+dWZEmD{x-QV0d9qnN#9HLfa+qpQSbVsKu8hY zs--5(M(j}?IiaO;Uw-vf_02b5S3mf{52Tc4MFMyMyiZG)LXjX$ow@`Qd|Jz<RC5uG zuEQ!yf8JQl=rrjQuzYu*BXnt_OQKNomhh<aG(3?^SIe<R#G<{aptic$%$(z!VQcB9 z{CNmqR8|(pR*4yI+;ceJma6EbYmM@=?4pvBCh+!ypOVhu92%RG)v&&5iw8!wNrr8$ z_8r(OgA**L+osL`7y#I*Gj^DzxaV1aPSBo6dnuS5p~pbAYSk(5YA82K1LXo2iY0Lr z?@&-ou}<l@oF}Don()_I{WdAS+*X4EBlNdd1Mplh*HoDR302;|r7HZt&V|s%3(xGs zJ^RyJ!o{f(Xpf<D41>3RP!8uTgok_)M8ZQL;Ehy-gmZeQXvKB*eMyr?LTK1X8G<g# z3-}3Q>d5hw1yIJ5JTWcHEI<@W972!wldQ}pOiLMfC!zM_$(Yx7UcPdr`tG~$d=>zE zB~UIn<ulfZQo0L^cUOyS*nU&tS@({j!G$o!jXXG%jTFL&Pi`*_lW^hLq=!eejdaS+ zd$_E4PNBL51V5`xCyR$jlCJT6a!@N(4q5B_QZSf5EwK$6%=sb>C=GA-<QeAt2~F)f zNqAb1)LlI#)S8_~M)9Wk*!p)JA`^8}m6N}%+lFm<2Map~4jrhz{^l#4V=|(($XC4N z?!o;BK2e>66DQttSX5ea#rGG$*py5C6yOGI_(UZuNNF@f=du&^%tOwv07dYZouA-G z<q!Uxhu*nj=NEU<oIb-8#2l0hS?xRMC!CgBG&Eus09Vg637Fv~pwS@@*%0R}#J8zg zS?S^%#a@GuU9nFJNW}R&Q5Rg6zL&xVIqcFhQH7g$Gn%y;tVe;r{OZf<tMogm*@^u! zL%d`AcCB>>JJFlGh$j8~6}VVl*aOgrNRP~*djD6V8Fd10yr$sk5s6ki0_^g=j&UZ3 za?!6#ibi6*3#aJF(0ByH`SQ;f*8sC>Udj(D&MsngaBGK3CCFb<-V_OsH=XOK>Wr6H zlC1u|brvV5UaJ~KAZhfE1-q>>C41<|foe!~^yrDh)enC7t=rY#|Gj@!UA}b1Z7Zt) zm~EZWOa<lp{3p%&1Cw$GsPj@#a8oqGD7fIHXZCYDp>8gg_EjFk5ddUq@K$=)r2WKG zpsTEM3h@iXQ}a4Ua5KpqelYCja_QaTHfET<>fc)HH(PUMLK{N<x4i?W{*FGchW|E; zqgkOsN7vF-+m}}5$LAnOk~|g|;;iP(L{69bMCQ(bO2#^C%dZR;5{<}QenU<v*5bhV zxa2tQ<hLZTu!sl4sFBIp2;hhOQ3?|AV>UvgxfAcEeR}na7cXqa?zRpOyP`c27qw~Z zf~I7#)HFUmE{i(vy&(-DWiWyf^aDqPT$Itg=MaZcW^&}P1CWU34oHs7_g3Z{Qs3u} zYQ{7Q%;hBrK~>T=)7Rj8(*vm%h3=vfE%6<jF!48On?coIH3!u9I(O|!QG9#-P#So- z!G7SXR_X3eq(+<vbc*&C%~EWYGO=5;6bEJX>CoYWI+tRf*C*f5J_-&-WM9v?EI)aZ zwnzDZ1$;J%N2eFGBUFv6{y@h+;h=xValubSSX+q(Tp@uI2@<%-O$?4qO_!g!C%@l6 z{CHcE#}UoUtLq1ax=20L{-qSFd?~9tF31G}_%~mtyNHz!Y-7|F7d3@K@rCTjD73zc zK{>tixbkP^kWL!bbOyCfeM{_(&^aY1PoAjGYB|Zb-+rUb*5|xLjuVUf*%P6n**MLo zLoq<1$elvZFl7W9#4xt0T;FPJ+Hv!H)cG5Ux_W~K;FHVmnruY^7md`4l(sw|9}CC1 z<W+Zk`2L-BpzVG6tj;Qr<d>l<19=9eD{mjzS`DM{?%%C?dQ3AFyHy2dsy({jk%5W( zvXJ;hv#l>=4x6@?*$OuM(?&D%W;tesn)cV6mTGF0k#R9Ef(rNuexK9&!RbNKXhyVg zaKHlEg5_hKk<5#6^JO3|@LCL{^`1s=`<j0CTEEAdD--Dj|1aHtd97czH_D?@&sXsi zmS#B8Eh6nAUMxdFMr5|K&{Esy5mhbuaEuam3bHIT+%1y8;g1uC^XN$p5L}g+sroqC z6YSNPB4ku9`yXzqLpC}(>J4HyY(3|8b?@Fio3yj7e~plEDz;$@QT9oI?*MkxjaYt@ zbZ-+(9dWbhlHYt*#0LiCaz7BvDrN`6)q49?L|dR&g0}JIRF&lO-SuB#p4~EEsGh2> zvUGr@PKQ}OprtJP572o$X$xbcBcnd=gc&r>KY6WlP-u|dsa4)kqJzmO3toV~y!Ji4 zi<j#uEslClyl3<j4;(tejE=)+{L@+BZ+;i>T4_3;TQMKax6muhff#(xIWfo<cg#(T zpba#FlzHYNcYXjxzQKMSUg^<M<xLg9bWQP$@<XY-M}ZMp7Zqlb6vGDV0UZ{$%Vu5K zSHr2*=gytgzKBn>zvfuAU&_VKojXF203Xx{^@u#<rSHgra{j&mE^ZT3VENzQ@<o($ z8we{TDn^^ggKDwrJC5p(0$lacy_?Z&>(S~@|EvFs>ns-QI9~@->tRavvG*&I)n_t^ znV6|~Klxr+L+-?Wj(~6F*rgb><&}AddQTGF!NNHK8YltEDCVr?zN!?Uf4%1JqbL(v z9`LJu1O30Gw^fbbY%X!vg0Jl+PN{-9yC!b~Mf$dYu34N!Non$M-fuv*l+}%~qg1ZK z5LP@o+<l~+klYcUg_r}BSbd>tT2rV9Cw^~bP2$C~7uDU{_chge*|QN>uU(UsraKzx zeJT@nFE#BNrZ^EoC=NA3DnCX(Qn@Z<sTUy>K$e=Zq~D+vp#DeAR{ctKgE~GXbBzP) zfDUM*<IaI?)z&Rry+M1wEcF~deAt_6v7oX`CP3X7KYZ-jG)|yJsle2u8-D67wBw>5 zyo5uM$bUQ=hZN_uFk5gOp5zG3iE>!yop@(X5v}KDXlJhV@{Am+Y3L4*s7UWcjyKJn zsvHI__yXi{J|%_japfWMA{Xj!kkZCX#E|yW4BCt^haMh3e%vQkpOvZC&(5ByPM`kN z2hZ))!E|i0rX`~sW=5i1unKd=ltpQT6jvy)QWS98oa?cGQul*T^5BF5bw0(OJwy8K ztq$o-3M@SxJaEuf><-HM6N4g{ksTi!mr3^5Uj8(ZOs-Rxqb*LnLRprTt(uJNbSzQL z7c<ilkV8q3{EeVymh89UkslU)2a622Gm|mw4BV*CvN$~bs~_X#K8iB&yt@5#Z{Mj4 zs+-?_jF<j+WzJREyI|Co6lS2&o6Etd#05j)t=T7e=-?C1s0H%C&~*1mDyj8PqZcE5 zJSd%*e?TL3$PjGqlZFvigaT{08MVvSC^BvYvq6=Os%)+v*OHJsx9(P#FJ7reu8ew* z#2qbfV*NQwMZEr8OGT!DuL39;oci@+L=k)Jl+SPRj>H+GC1qTE5hdliqkwA!7uP51 zS~R|{Aqw}5n(hA2Xt@9<)N%r`W+`O#X?TbYx7*Yx@3C$76DLmk5XGxkuT{5h-qh^c zeHjeU5<MDXF<Z<u1TWCYn_n7LG1}FrqcIBsU&b?4S7X^iG(AIU!DwVBq~S=HW9b@a zS<%SfNZqquy+T)vQ=sL51WZj&y-1$bK`tS$pnZ<d9V=*K8YdD#AImubbbiS=<Q#=# z`=8m5ZCdVjKr>RujvcK|NpbjGOPbhN%_uKR-}dd_TkX*76|)xpR1g*X!BujLy<vG~ z!hpNJ7@3MI6qug^)MtL#QLme>8Ao`o_ime2sb^H5`Qr?fA<3~U!_J)fOq;Vuyh>nX zWVE_>_n!Au&=$i-UZ<x@%^xL-YwCSszzg0Rh*?7l7LMNAmGM<3(pjw4yhlQuBg4C5 z*A|Ud4CFckq^fa2#`T|m475LrGT|4Unfb3(q5kiW@zNis%wWeTyXjvDn_v)f;JDkL z1H|ItxYvOW;>oePguoGND-eZ(2;v-`HH{jUvv*tq8ZynLq>c~EmoiesP3rXOSFc}H z&vY)t!-o$&`!I5Kw7U5H#p>qh&FZlZo_qFeta|xU>owK!vS0)e0pTw@f*eu{P6TR> zUCez+i5CN~q*=!lpq}${9b+_2)q{mZj2+{=+(>*uc+|pZLaBaiY~;|e!NFZVaBSz! zT{>}gpHH4;U&Rp}em62Q;>P%?j0e2Z!HN@;6JDYh)t52?YV&FwU?B4n8-8Os4ENk& zAWiVD(VY9@B7h!cfqlzGsTqe>cn|r6ZpN}3R`F&^B!aLEgN_YuMyH|US{*190+hs{ zTMUjU3_|8~%3Tkz;?X*B4v8BY8r0qh6h;o7J1TRpC#y4OPHS1y8Q+f{JL0(QvhTlT zi<VDep{ap1CDf1hP}@RDsl%0~xI%%YQXtEKEEmY1Wm=9SjQF-^6p7SU4`I1(c!vi? zc3Fn)@eD;ipW^xf4(-$_+B&ooONwu0PS!>ytf0F@F6OOVpRF*fmh<O0mnYnK5YM%g z_@q>%bWU6@D^CIUt5+WEVjzArWkMT7{-I99ekLUMEe6r`od!mW#;noY%=1b)ZMtX9 zos}cv#ij{*j39KDK`hHR%<}9#5F9tQV8v8|m_B!4@`x%$k;aX*{DW#Z8FgS82aXdv zf#;Dx!N=kWvk~v!zLzk1T%EsgL1#r=^s=T~H*QrA?@K^Elg)k!sEG+iZ{x71m`2s! z2t6BCt=NQ6%z`oc0$m8<X_g!gJ+j|u>XK=hpUZu-QGmMR5i`|=XpG?)YDP46)EUpX zG3(~)5_O1t^}&b=B8mgbcB`|wW5<r_h?YHZ`t04int78Ufy**&eDUH%H^^8dW7dtv z6h85u2{T=)*Q)2l@t5m3mY!I{kFrl5!hJ%rO6HlrIb9uv2TbdLIkT*J#9U}8d|qtp zeDQ9UN$Mc+{qi^D`$k6!ITCUz;zTvk-GAH#f|&;nj{__-5v~dP7HqISDkb8~nbWr9 z#l8q;BaR$BEEBLY8LW-@C>*T9ByVh3rA`T^FQLf9_l%bcc}fCh_yA}4ACSLf-Pjb! zG9>ds>upu>BuAKar4rIkGYiKVJBJP(Qk~Y`Fv&3#=9_A#IYImC<!hd;pdI(}P02B4 zE8w9)PU>dLR^Vu_373>|9J8s+)M3upyeB?nMFW17Djo^NzlB@ztuO_i(XU=%n2QGY z(Ub`=)Ox$Wqjh=z&7!eg_X%O_MZAO?o}7?-{<ZSvwh2ZJm+!=6zr22gnUg===_obR z<pz<dOIk+@Cpt40LIfd7=<0-vWf%d1PSb0x8OO>Evk@bs*Q@Vz_#A@i`p9+7Mm(<G zy_OR3UKUQ0IZXr(f-NuwD)4=C`MI1BlKF`Q*^x7adzev=9)W4Rdrq3;^K-dxG75-G zXi)XmwPhWi6+n1Yd1eC=SsYGWJDF$;2ep^N9m@V8EgR6O#|QV?94MpN`?d6i_4UkF zT)%N6E#(`pI50|0ui&YG3{zg$f1jBWcz|JGNh0v0nPwCo{+**C&N!PF8o-Tu=X3k} zto>8t{TqeXuTY0&yz2ndf~V-Tiy9sS32KQvRv`F(`J1Mg767bwQIKVU<c<<Ue@;W+ z?(-t{YG1@romzdi`uvM?)fYN=j?LE0I&ml%2hNc`iyW6j!P!x^{FKXAbG=H5-G@?S zBX!PI?u7!2qQLT%$z1E=?maycCBv%s42+;4v;67c!2{_8?butvzOd_~H>&$uj{Hm( z>|Qh5s^!R`4+M8n&vUIdYYA@fXC0j0O>H{~id$6*(4St_0u})NQI(0Y$y@)eW+(nj z;iw&Ko5?MfvzmfH{yJMLJjUms9bqJhd-f3ngJZIg?s{8;n|e#RgXNI}Wpu|Y%@ol2 z$K}J57?}VzLWLC?_+P$wEelQ8Ju3U-AOA!r2VaZzm)cy-VP7Z_l+HSIkHrc$Mf*f+ zOwv(+uHff&o<cH@Vi*@C?k-FtXJ8=^^C}HFtqUucO+*2{eE#~>qx|zsnCcdFF`CEV z4=Oc$Lf_FH$V{sYBmvAzXLjt`UY$96MoPqi>a0eyZ%C2&{`>FsJMYun@7=v`g@XDX zb(|$r+T_hzef?2BGY}b%m_-DyR8T5Etyaj`)OUC=T+0`4+<eYy*8a{rLtn7TB+OWJ z$FMzRQwD^!CBf6j39DFW75X==@J0y(8a=h#O9}wt?&ParW`w46PRN!mTdLhU{ruFa zPpWTZ;`J*XJom-tpI0Yj_LcJ@cFBU%R&B0kCc>u&OTKvIRkO6nKV+I^PrC5|6B@2S z)FCI)t@FJVR9vCJqA1X8`?~oF%k{q*pTj7`=SG-M;FnOObGyGq-7n<akPc#GQ}&tD zXT%3zc((N?YR}mhc3*qK#>bwE4<`Nd42UW>D+^eqklSsaS;34egOK_kWVTo7(xd(0 zvou$@XA$&zPk(w5=~gYtM^z@`t!92pmF*W+?F~OVU|JNIp?O~lQi+ksZkHL0d;S4E zho@w|r7|UK-0(GoPBgmFNmsBP>mO+h-5|C=D~<#--jt}RO<8JUl!CS4Y_Pt0>y|rB z-+g!9htJ)<eOs0xI58OWa&*cx{fUXjgeBdI=pY0<iXtw`(G48ba1+)Pj*6MX0in1; zf$kKDdZgYT6{}ItsP~LeyDqxYks>iePT6{_fdj>SLWts7i@a^yc8&0DtIws_p>_3` z3uWodwLK$R=J!zRke}DHb11(2#Y~{UsDbxh009OEu*C&m*rQ9vpBP-!`?y93*Fag< z9N~cc&`P(qz8b3qip_YEKKt>>uYZ3_uKI4%nx5$A3>&4i3{#e{P8VrYu87kx2CFmJ z`!Y1Nwc4VN(>{&9vM=I`FTSXL_Gf?SJJ0*1NDS%Bk^ZzN!X2aZy%KT#4wRc6*n$%s zG&*apAVw;uDEC5v<x^m;cCa%%KO@udXN979r&?N(5IW{3AIzvz-M4P726Q$Bvl1xN zd$qJL8=dd~Aqs_L*emUK<cu9JeG*Suu|~O9nO<V3rGxN{+x@{Im7*nuX+^^FC;)dg zxovq+Hg+!h(I3}+bY(&#a(}gdVDQh047vUMxD;8{(qW3_I2bAaX6J9Q8fltk1OvLc zb;BlRw?+`@2y$mexxDs~jtoLbpMo{sUgzETDpQj)-ZYJ(FeX!SY}Vqixl1zl%9`=J zckb4Qc}*)VCuzDRS8*sHp{(e^#nT~BgRP%YORq)w7JO1%c$HXl%rXYTQ=)P!6j%xc zRKZ-2%o@QTbWZup&h?HE>Rk$U{Zu1K{nTWd!|5y9>F#h6>z@fco`<&#XzA1b>Z`sl zeM<7DvIKNhHr;>n<DXVHv}}M4+Rt?Y?dvyhWUL?=AW%h*k-WeN{$u3byaE5IbLv?T z<CTz0Xmq>5!5Pi`G7IPG25E)DD7=Nx(t$#2(O`DxNPzjaiqA`sVzwgoi197^BsbjI zktiBe$7aWlZC-}<iB79#zsr|e&cyxXCnsz&(-xYfNPw?p4%o^+sJ#-v;Tz-VG$GG$ zbj&<5tGoY{&@#*wN#C?4e#-1z<x(iHbP7bhYURtyL%!#jHeOLZ%mWpKBVX)P9nBl5 zQWL}f@NmDCiJ_q(ow0ME!VL2F-+k{HirYH$j&q?N>fk&20ahM#K%?7s@!EuDF5Jg( z0qR}~9(@ciaH#npV_EJiL;-F6n)<6N1Z&w~KDsiY(+3{!={xmf)%QQS?6+7~8O2?4 zx!Yg{P9eV47rF%e=5lc6Z0^kIb4-2)3JeeP)4F-tlAzOJicY?QB@A#e{TU4^MW6^^ zc?mnz*rR^<=#i{6-PPeY*Cb@lTgcpzBJo0<q-Z#KEB@4iE5AExfF_brJ3Gowjj--n z_<<k72wW7b9~pC=l+`!Fm*Tp?SW5nqc0E(T^~?N%LY?YPs#?_4sACG?Ki4_#s)QuV zj_zY!lc=|Dmq|y`cxH3s;lYE|&fPnz!$%HPhqcj>b;(DM9I0;Jyrm7>aY!TlLgO0; zGcu|t;1uR^ftfp^O$;(7H5NG_-6Py!9Kv&c>ISDH`zk&1N;T_uEu#~+)-&HH=p65Y zJjopvzb)DXjxxMofz8;_iD7xi@Kz}inknKWV3wkNa_W?qGoAbVocBl^J$lqunzn4w zC@L8ZA6S6{ogtPw1rCmOT#k3yWOI7HS^RQE0b~N@q~%g5uvQd6CQ+YTbyJU=at%+R zR45wWjM}SESx3W4+1BkkXJyOYYL}J)?vx2+4)0_y*o|X1Dh`|F@H-TW7ca2-q%)$D z65+l?f=-zjIDqd%32K+6i=hFm18&95LxH~P$MmD;NwFqTA6=Q?EhYN@V|8hNZ%y9# zqZ9&5bTUM+Nei8BX^74FxMzQ7-WHT@KFJbgjZV7ls3S-OB2RUCQ<ehyv<|>ZhFVS9 zXF4~N6I0%N#Z1HlnT)%o&d|uns87(mDf{|t&>EAeSFAp8zC<ViED=!aD;FnWORdl| zSjP;5(z(HP5_iHF*$aUqR0W650-Zj7F?#~e`Mon8BLCv9<jMILm!qWGI252^qkhGR za?~H{Qyx(c)>8dIIdHW6@oyr~kyQ4mze+$uOc*CK*Y#5IqyYdU**gcedzsUY?NTaa zF@^Q`7iIB@Sv(YR&Zh8TQLnTlP*%`5;L&B97lD<m5(y?se_f92F@+g5J$0|w^LO4O z?^<4?)6%8HjtIV0)4}$bZsmnN^T09+2(6!G7)za$CcZD$nL^&M$#jdBneE%Zr#kV; zah+IwvO0a{Q~l0VXHK7%m8K(F%CXlLZP--rZ!DQdS1aRSxkaCgdQm%-%Qs5j1RVGT zxqd|*3+qzsjd5h1w|EK#mQI1(Hj*>@se?^_Gp<<z^^;Wsw5hB>pj~(UB@r<6H#N=d z0`iP=BhZ{3rOULe*X^=(vlAzdSLe=t=7a7ye3p~6Q7j%jc;MMq;1BB5?aaNvd#~A7 z^&(V^_=}YaOLCbDjn0yCZl=WapL^kbdqSCbF?r+n_YR!8r@D8n7l^VdIMCYZzumPo z^~``dq?t5_Ij<vf>UL<IPb7t*LtHdtBY&$ClHk!mvanc>@7_(yLK8C)&wVxo8?ac` zgoOt-TaS#4R*!UYrcK9b|Ac2X^p2EgX<|GDkN39YPUnpd9f?>b5P}hbn1y09tpO27 zPT@A&5wjTAE$?FTl{6cf0@VL#R8?<1bgs9B2O8DI^*Mrr6gi!(0|9|r9aTOO(9w)h zac#4<<)^LM=(|r=p7!b#+HEq$h?&v-IuOl=-ANgLBnxOy9zWG6U!1*Si)X1x7PoZN z|3+yEQFtdX2@G1-oHpNEF+JtWY@C#e`LN9+pQgAH1_`qK2->4W?AWo>vkmNjICkPl z_1U>I)tS#wBu-TvIEcAdPBEvmkH~|_Mnm6K{ikriCr)?EtXy6W_m?MMWDZFse^!o^ z4wxao^-x@)zzR^Hdt0cwmW5TfGN`i(&$7*JF6XPb&4zDW`&C~V#A8ea^RBvUmVyHu zckkBBp5zwF_uhT_$<Is$XH?w0dBX!ESbch>J_CCtr!-R$W?^aP1<mk-8@i!4J1p>- z9bQ736wo)lNB_AQ_Objup-k}ds@#85HTr-0ScF)+a+lJmER~@eu$`4>c_cw%U`?a{ zb%PygEmYKaS{XpxC?VFD*l5M9!}XC-D-WY1H*}KqZG}CwsaFo3<AiI=FBhSaQ~j}L z5l7?8Gcz5O(XtAaM_8i;CmpjTC>aPz(vlB<+=0e3_u>i#mPY~V691k769}qPu48lp zWBH%L7-e>S3&l7T->93w$kv^5gKqv&oi+aeKaEy{C2{r4oO-Og_wJIlr_ZcNoH=vG z=TnSczi#Vi>^r)1`;HHLe5(WRyw)Ec5JQDRo@7C~funhwyZ$rZ)L|gt?tnc#d`T~q zJK(c06>XJdhIQGzkw!mpd<VV(_xOGxH<)4AEh|h%j~%N%IeD`B)H4yMs?%pVz50k~ zzt8d8eR?%ANS!C-ABE)aC(CyfN_mX7+Cq(obJ=%+@&WBbR(Tl*Dfw1>3dNyB3V?nF zY5c)5o*Y~*g#t^WK$bUiWpe#hWWJNGnTL8zMZ|)f>!JK1+f;8Af?)!xC~QD|pQOGk z2J2<96q=>cm6kp2&;ZE^De9W-J9)y(1hHOs<;qp{6EstC<7V|prr=+_WTt}|T4p2E z2hi+cVhKGj<brpasS5WrsnPO_#(%T*^l^PXqfCrX-}<{U6Z=1i9J@X)Nmi+JIJS#3 zD?2VVnxru=1w+-@%;gGWq+kCQ8iZvIO^un0AeqzqDT0WXkIqzNiO!PYDF9hBG4Wpe z9$xx{YW761F7k?&WQ^*ph}%*mIK&1egBgo=?<QPEKb9cqK&1vY3o4_g4gvy=zr0SJ zaEGNA15dw&lnTEZ;ra!(k+$^~#aAfsArw%pa@_((u3_`Qb6td)QX1;BvqoOmaXq{K zIxgTxq6{}Oa~+n|r~L=^=-h&x+N6D;+OLh;jPlVi@7%dlvlsh<&mPklzw)7X3=;;2 zMCUc2sS}-*76pKZ(-3KXvnL~<JI`_rzH*LczB=A18<#||1fmhKXfHGmyuekM8dd{f z5LJnCSiVz4yno1#Bu|vyOCNP77WgO;*vyBX$B!MaK0EuFH&(NG^u(#-QZ5cxdu6F+ zt43MbSW4%KVu2enh;OS9{)ymXMAhjc4doE2JBb{fo=9e8L4jG`rH}+e35zQf_y`oJ zt1)F$x7AMbXI+81?8=K$9{mCojF_bjUb9JAWz~3}^A79ecZ^KzlsRl>CzzRF9}?D| zFg$@QL!n^l6H7SXYL;ShLY)iP$>lYO06XCt?Czi(?zl#z6X#1aQ4ZsE+S3QT?rB@O z)~)Xa{pMc5zGsvP2%@RB|8XN8VwbBjOx)&p)Gsr9G*H0|aV1h|^uWj`jFLwiJX*%6 znSP8Mcw_+p%0Rl-;cyZX07*=i*ZF1!jvVY)n9?$fSL)2%(uV30S!ufHHIa;#K7RDX zN(LLPFbT`v2-aYNqv08TKnl3&O_@R!-jtv5)`Rim9^uSrglo~K^`0rJ+zJIgm;%%@ zx`en~=fa;FQ^&Yg+DDpbWT}rS(zjfv0~+RKm9mu}rR4@+!Y`~<CJlQmY)ZD`z`Fx# zn1`ic98kyij2q#wj&{i-eUD`5U_youIE5SK0TyPaLpzeH0gd>1mW2UFg;^d@p8h(J z4ZM&Y`iqgt)QNUJn)pN&_*JP}uL@nru5e}!h+K{neey~7v7dl5HBz~X^Is~5mvk{H zp5mOA(GIx*W@@ZR#jL@UW-NwerHPq_<HwKLI@4EQeOZ0|_1E5Lec&MHMeNju(&1`I zogm)dOF03i7v)`%P4V6YG+xs2L9>_%$!S|@!hXM=T?YW#L8dx9-ZN5^YoWl(QlQzs zX2=m1vMcr-s+zjSBiB^t8NI8ka@1kZtRZW}kFK#P3Cp0I)b&|%L1G5QeE+~c?MoUC zC0=_fP~I^kd-3AM>Z<lsaH{s3H!oG*kl`gL=DCa~cX-@R@c9E@(&j<P{C-Xas>Vjh zHC)IEQY2VPWxf>boWGHL-FxXT_tH!BlroVHvHLGXpsl?`q!q`-j6;PF#sNM&n)%7k zDU3Ay=Noaeo!HKu_F$q62k2zv55|Pq=-4<^0t2Q)>A*@8Q<JRWzIZXryk5O>t-38m z;)zUIzE(UIXBf@Mdmw1gEuaucK=d8V@N>5>`R8Wl?o1BMED#K;TnYu2O@U@@!r#pW zugs2ddYE%oeQZ_ofZ2rHh*Ms+S9ruv{0H~ZU=IzmL0g?%SxI3X^3h{QbVkJ?o0DZf z1qY^G*WM)f601+FLuP|^R=uaC{A+~{&@4O5N0g&ZH_AqIeuM8pJ!C@20CKtUPJ+TP z3@5)sPRCtgAEHP=QkNgf01v_Q3N-eSpdG&mGuiQi0@-zUF7T0mSThV;x9+rE{F7SJ z#1gV^zW%1dN)xA7v!)x%S}1SY|0%jde<0wJPjGP1AiGu?M>wvloKhC&s}XI%&am1c zw?d1rP+&DE(6yebpl1Ef<vOi-JJ<cpn@U~RX{EN@3ZAnpNO1#0vihWhXorTGS>2&M zVa!zQ_Ye8Cd(UpqxZc&FozKTPn?f>7{f!t<h_Wch;1YOn^E14a*(ta_qYXm(Qv%`D zhG(53zfS}pqp-&S06+jqL_t)vKh=rWyXWo4KBTUbfIX#5B;@{g-Tz7_q8sHIHmG@| zeyJQ{7J>8Sf(2kKMkV9S2i6~k!@7wl>NSLb_U@So6a_P<(qlOxh7}D8VZw%}cW>Xp zi$4984$f;GJcos*AN}Z$bl}|g)#Xc9yqW5ymRX==ym`fJggP$D69Or-rtVph$Vh>6 zdX=0iVOysto<f23M}f?rVBYjE@=c^XFoF%g!Gmzppq?3J9~v5Vr`VQ<v{9R71E<fN z)&Xi*e!8ghDRcs@M)=sj#L_2bIv6-$#$sk>!e=Mg0*lu9J6s9}vy}sb!ybi?0R%PR z!rQYK9(3R>;yvJLW;krMD7ES|_O|*$CjzBKd~Ue{e=oxUZ<2Kq%0Iv$1oU7p6@S8& zcq?0IN2C%SktWI|9napsAbh5^{+byEW*knRKCM}Zud1K>xu2^(m$j^;vd}~)hNVo< z+^304F2+f`Kwrl9BU^EW0_&0j@a+6`p4b*=>nX_rzpk^wfm#7UD*io-D5zrBm^ldR zb?gb-D&-wTf&mdMr+xG7x7Ec9m#csAFMgzr+IOlM^*`Wsco}#cW{doxe4ahXq0+eX zXH*=^lbkNifson~C3q<@zfI!kC-;==Ib~veYWP?747~gIRW*7Jx8;60n1Cvt*r5$f zj%x<ORPcnEgPbsl!{ir}MGzbvQ2WK0T6~nEB0Wng>|j1IJ=vzTb`evrjB<{Ty^uM# z=hXvsQZQBdhkx*+>XOV>G8-{I{sLsxp-_4{Ct`jz@2Nb>l&fbVct~M*SIot`%@1xh z%ALQ&61zSru$bC3`_04zZ7!adTI)zpXV^R_6O6d%?Az<OK8^4V>zspq`?Yss|6ZTM z%zc~o0nj<d4CBLOJ?*v3Fwe~B&^z&_t+065Ui_({JU<JpH(b&;7s|*T#ua9!St`X- z{DD_)OnqZ?Wzn*AY}>Zgv5gZu9otUFwrxA<*tV@s(&>(Eo8Res$9wM^Yn<O_?b@qq z)vlT~XMoryjr_-?Gyzf0DL4;5_zWey?FGaZAqctkdrZUrR5O(9t0y&SJewh;7#vvn zEnD{8#J}QY-$&W&0CMm06*OiOIsq>iOGRL^3@weT772XawtFSK9xAfoUG@y*yaYYl z){(5{AUvc-JlM>ibWdK{Vzc}U=NgS13#J76@!)B>8UjZSREDi#g2(Gtk$jm3y`xSR zb`O<sF(Ph9B_D2*yp5w&Boh;pWx3p<kIP&r&KVIjwV-@6bWs`;lqGa!&eD|~JLC{q z(wnO1qL9SJC}=Bkv@Iw{_T)X)?|!AL`X$hO=bBp&>g9fN>Vc{aTroB#U_F>~$`=QF zh3q0;chy$kvsYn=%Kng1yR+urRaVUbLV}#jx8NXdc2!rjT`CZSpzsU?{efuH)lzZY z$B8uZRmq{|YzB@O5IkCfhH6-4F`MfA26?k`HuR_y$#vN-gr;Qf5ce=fwI5+EN}XtZ z%Cz;(c=f+tzacL>4_IexOkgj04HN7^y53^u;|oas`MvL<C6|{`^Sh=Lyu8^ITH@>H z3R!$yjJ3<2Sp0O~G7WK5?~`dk35*%<;x+#$hGmjKRpo+EHHr~#6fR&6B7ug-9J-9d zE8Zp8o*53N3Ff*t1wA#{$+aJiX&MDVMjK3IGy7Hmw(uzq7bcbbB?xw6!ZnL&#q>2L zjnZgH2aS`Xdn9U*$xdIWwq@-+@>!N0&A|5|^+~oqkZ_6>s72pkbQEFk7{+r3_2<r{ zCev7B7!)d_<~u*|iWNpyC80-BcI#+;CVf+BQE)&l<oE)=jG^Z=6T{L<0~IqGXGubt zxut$~jeZO^g7S_B7!wQnh#&5sxadCM@)Z}eG1dtfIhanH4O%ES7m{<|Kr10zKO^1a zLB4$ea;A_Vj?n`<o{~!4ONf)-RNO}0P8a@uYN+c;pr6sM22Y0k$*er-Tj!epl1_<A zt1g#*+!=?6W`cl*3gp?1<N6JQjOf5FG$|gEU4=1LCeMpot?cvmSflvUlw&*9FGs@{ zD9&cr*t;#(%*{{lP|Ioi$Lrwf7Rrq(26|ES;7_2c)XO){;hXsw#kEroxkr!!SQHRq z1lI|z6ol+huw1vAJ5MXu@s1959F%UkqntQjF9n2=Mo`}Q@2!aH&`?h{CalHRT@T56 z?smTqyQA<|8`5r-%uUT!_2lw5yFHJfaQ&o^_9^9=pgFBfQv0c#D#>9*XamO@2T>3m z#)%}jnJ(pez%*ef2t1CSB~S?cduo>o-mfpur;Is+N	{gRhvyIpN56e7d=UE~8DT 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 literal 0 HcmV?d00001 diff --git a/public/currencies/ton.png b/public/currencies/ton.png new file mode 100644 index 0000000000000000000000000000000000000000..d0a96ad775205438219f30c93f3982cc027e5e2d GIT binary patch literal 90639 zcmc$`1z1$wyFNUOATUx=g0ysZNSAcCph$P;AT6y3NH@}rpwitSB_-00bP5dp?Lpu7 z_59BHzU%it=Uo2}F0R?LXRjS=-Ov5p&%M?VrlKT`4tWRxfk5c8GLmW_5V#BehjJI# zBW0mo3A`Yhiz$kMKoybqE)9`@_vFShYKkDxOBxW!FAxMe2X^_bgFvoqAkd}(2*jTV z0zGg@ty2{QKFBiFku_6P1Tg^HC?F&RY|tHG3jz2AAv^@Z&jxIP<PeDd-d01P`+W=; z1PZYPA^tu_7kGvLL;-*BHosmGqk}=nz&mXCp7#j<oc%rcua@Ah_jmr;295)XsY}Sp z0<Y@EPNt@I&KCAAIoQ+~zz$RgnWxSm5I!~h4?$LqY99o;gKVjx<D#Rez;A4C%VKC^ zZ)C~>wRM1>2P6pP2R3a@T@1;gwl;Ro{7|7sw@2^;+wk42kH~Kiaj_P9q@$=pE@AIv zO3uT=#=`bU7(z}?F6d-p#;+zR^}9LnPUw+^i;Dw4E33P^JBvFfi@lRMEBoWek6GC` zSUEVDfg_lmJ?vZzq0Dy9l)p~$*LfsOosFF=9b7E!?a1NhH8iq!brE{>2!5fze}3Jk zDb(_xE7>{!ek|YtS>d0sva_(U{#VUhEY1F3n!!K$)$I1UeqBxwelmVdXHzE$ds|ym zI~U=9dR*}KO8?=*f9~^FLlsM?sf~`LCD76tcqU<XHeR0J&HnYHe{CvZZ)5MI?qFza zD$M@7$sfD^_2}EPJ^k}STpWL1=#P*7XbOL1el=5PdmC4HmuuQtx(EZ!{;S>p+Un^) z&4k&xxPCYKbML>l(D^T0{JHmETPQnO0zGaBzcqLt+}_ro`+grU$O?zbAJF-Q%iFyG zFohw4tbc=C7-FtcqzM9vf@CGdG@uCEji_V96Phf#<2O0ORVyA*D;`y=ve6Q4icS=$ zfmqW{WfDD)5)7FQ{Ez&q7ld{Lx<C7+oU*(@?kH~yGU%pp%+hgk@<+tpMW>*uG70H$ z+x}i*^E4U<GmKgJq0iOL{PD@|wfl|c#n=YtSYe@O!Yse*;N->h{8`aW*=)YDX6HMb zEI&GONGP}#(qK1zy?T_kJDJuy7;KVRUpBgtnoQM8Z{THw+i9Ie_Za^Ro@#Wzq$5|F z<gg2|bc`ytqW^&84W9e^@K)Af;h7-qk?F0ylk3iiYy1FS5VMv6X3;(?pE2XNdKH$R z`i@-4-bWxe+?NrrhM9hnfwvMe1wlOXNX_Q;v%8!JlIFhdP4(^{r#%kSQ@)V|3r|WS zsEXoZAti#ZFwMWwY2Ln((nOGPn{dm|w$8S5VyB8Tmrh$plX<Kh9DW2PIASkv2CIz| ze(&yZ(-5I#@74D+d5N#)B9oJ?ZSbD8<=R=5_vJ%u7;U!FrOXct7gnlaR`KRvJrEuQ z&OXl+!ADlUOAmC1f<M)UP1D7+URHspEo}tr26dC_DOZnuWC)c5UQX@kf<I@?$4SPo zJ3~^^A6l7y-XouPXLH=8>1{9f-76zfnn&dv=X=APa@)71+M?LY-^j!X{pi^AA*mNh z-R9r=m6{D7ZF-3?Dc697I|ltXly&B!i0`0I;Zivs)@rTlWmW&AObTEn<J-DqB7Q?_ zaMm^PAZs@Pqo4Syde&Y9Gv2+22Ds5IQ32d292tR#m~vdCE+zj7-}Cz7A9W$~2ydL{ z(Q0?`*yL+TqxE$rrc;hd1cY=24RkJuN&F@+yrU$1Nwjo*4U0Zq?lpVOhJC1lDu_P^ zI$TNvK{j0aXUmszN&jzjetl$Bd%pLmlqXt|M`#j{gAi-#^LQ_&lf_U}&5^JZO(O)5 z7rwN4v-NqAd2O8iEF+rm){i&kW2DCbpoOIZoa@eOdKF-s?HNKtp9Dv3c_mS&2pXBN zcI(4&P6N~qhW+TFti_SH@~kU8>?NkV!sr4wb79d#T}L<qD=ZI}onWS^S)x~vp5B6M zV{$Y}|96@OefcNNLb~hM1XKbO;+vj#`|q*@5Q?A85KdC+x3%o^xXL;qn#E=Wv#Op- z;iN_GHTcY$%Y{-!-J-pR>1_itfG+ZIa7wk1tCryS8GX%@Jxp=1GX+(<L*%^VF6h3L zzF04vpL?s!g8slkwnNCeuhLpw^={opzYrl#A<*%DbPJh&{WH)|8Wvz1^v1t>ZyGVi zLxf2BfJiJ7eZNgFvzG=kmfNC=((oWJp&3O)?(+1)?wRk4=aN)q05Cpl1AQ~?xgA(b zr&0*ks}i|dqtl03qMYANEEFJ-^Qud+$r4q^^V930p1<pKgHMg)`{}5Qv+1iwR+~I9 zPRZGRR9yp)@!KSEEn>kbyHlR1g8i@rLn(rIDaoycAmvvvintcVU>L#96<hY@(7wu! zNbTNpq6Gx%k74lpkJ1EiSwgCYgVd$v&$v71Jfq;gbmibbqgC^LL%arTIQjiG#T_zl zr08{&h6%Eu)ANYQ!8YV(pZ2G$Z?E5*1_I|WP!q*Aju9VWg@l)b8|$T9VqUzWg5o?o z_9aHs6vmN)LHoXbhAbRmzj)Q`f03nhneQ}luT*J-0utT;cETn;lVG}oixiLBa)IJb zTh~nN%D)#@_dF3VSemX6j_;>P`-_xmgW3DMPUhyBN3>34t0jWK9ZNlhgY<0u%Xdix zm4#$w--}nhK|wdslEZqLFCh&pd-`*PS$>V+{d^pud%j#5DH(~d52r8O&y7#YjNlP& zt1hY(Wh-FRrj1*!V$e71`62iM^#=c0+zm}nKxBo(eH?&r%GJm{kgoHtk#;jKJq7H) z?`twXV8=#+#|3$qqcuhx79LVCWBHl-MU#krsL!2v=>}44Bd`9Ca8gkz0`J2%sm`1@ z?q9W*ZB6(Vj;VlIfJ?{08&h-0W2wF;M&g-mJVoZ0y-e|ILelT+3wu-m@72r}!}7_= zw=wh0d%@^8qiy;M0AAnwLu8C*S^^%$O8Of@8g|t$SoLJ0Mf^gRuBCOD8=MkLe*)tw ziVmR~7K0L;-z0}F&)57ocf}lU5fy(8jCejcn!po6YnLS&2Whw-y--TYP!<ODQOzMZ zPG}J78NpjqAYrsPy=l%!4fnn3n<%|eqM&lb2cCEYFRG))C5#$?eSS-AhKJW$;N-@< zeDpdk2w|7ze&2j?M(h$bgiFl-dX{+!7O^)#d{zn&m3<XzPGA54cN4rQ99u2S!Z2_p z&|_sn6Vj?bswps=&{(pF1cRR{zF8frJ_(>kltf@fTHu(Zdr21-Ge7Ivey;2x78(Pb zAU4Y{^{M<jP0=R^yg;|rdOjBvI__RLZr}g%oR=xAA|=m=8S+`&pN}7<TI<rr-R;D; zc~9uau04`D1w9;|(FBqEt#O&$FZ>4tPHrCdLz>CHk*6crq+OFztJ+;3;00&-1%UT; zHer@J{Ku`&^(L-(kww_?fT#C^@TG;`>B6H^HL$_^-mp{nDJyIpzbC*KOEU2UPaNC$ z#cGE#u0;b_da>_Ng!W$VK)oHmv-0vJL`>Bn5I3p=8i<jHmOBZtnQOW+&$2++eN1c* z%4@wj8Iw%<i9-6?FBccMj1!*Uy_4uh*_pGe=e#8s4z-zxa7I=^cx?RTLKK%y)xY>= zSAbT5G_4+K&~7h~Emzo20(%)7Ge`6d_?XdwPcG|*T|~&^NZa@4=e==dX@XF2b|F9$ z*&feKHMkkeJ-XFD1l+T_CT{Yy3na`?N^=<te0sgTB}j^`hf9|yI-|I>jsWvI>wK;^ zRFh8-4}Am90%?m5Mm@V<_y&xG`~9=`JZp#Qt4IssN|1tzwrqI77kYy%QDa=0td%6b zFkjyvZ?|r;*mD9y>ApH4QL)>dA>f`LGw#>fUL?2+-1CKe;@d;wVN7lkm&IN^pXY27 z#YHJ;p@5lgW~ZGEvd%h>*0uXrASvMzFaoVfi`$t4&<jQP=Gr-9s@v+Cc@cIO#E7E_ zLNuP10};_8<{!lO`o`4I?IeFCy$7QxtdK4WV5H?(f{%=l?{vWP#t<#~yO1eGuP~Hr zUk6X|P!=Cj<HcsGh5&G)`)Y%<klr)gOe_1t+<@fp&Ojc+wxquqJ-K<4840H0r~y*h z<jIQO(qKo1w4)PCKeqLa+nA)f^;GC^kyn`3Cl4HX`X_))$p$^!2i@!ho8mXuIBx|H zS(oHI1;$Mc(v!qW9lZS->;VjX#i_R}?-}T)$8(i@n)DsmCu_#N24gzgtd<%^zXzNC zcbl86w}Pj;pWh>Frejm^cT3F-c`JG@=^u?-vlip&!xFJ90)j2S3AC_&HK{fCBq9#> z8f^T&<z6}3Hm}=k%_3{JK?#SXY73ki)2MMmRJ9F`o?rL~ht(xwePA{&v1*f5O}_e3 zaA?Q#LQPW+;I|&lg-)u?%ey6F*D7`&xPa3Y`K3;F{cPzg*F-9--6~93raBkW5o(ay zL7&K?NerCb7Lkr~|8y2zqy`X5iwZy%{44XZo)nnlGW^{#2#-I#9d3=!Tmz7HF?ZVD zN#C48wMx@*Hk_b49S<$?vSd1}5SNpohkTX-;uKW<@?yu+Ugxy+n*)AUmMAKuhp+@u z73m`h#O8cOeJ^NoQ3R<f=o?nZ!_s66o{J&%Re3qC6yAzhHK2E$@SqeCb<Hk&-#A5* zry1X7wS+Q~o0s1gY2gsm^dE5F@gSP9-D&^oTsJkHiqCyu)16_h=fV4<=N^vgdjx<a zs~5FDXG|WK9p8+Bc*MnU3*dcj$rvL6e)|!eQnfdYOMQ>+9(Kk=uwxZ>s}18GPXldW zHl0cUIMO|4z43Im=DO*jk-UuRdpOd|o;jiFRD!kV8~0M7hKnqr_4oAyPA?72MP+OW zUAPUT75Tz6rlGtktc47@0G*-X$}D6b`G@g&OlaHb+;qIxbd&VIuOT|9LJ3tdmGMSm zxyd)zR%&*FmC;4aLmo`H*05}*ys%vqcKt@pUZ(CH#th_=DB|`NKrm7==FcB5Oe;O6 zdksW<f#@ere^rfVT^eEF39rLmkpRqtj1U9$DZlO6p`wMnDvJuMZ55m~vm>puXz0M2 zBGWDVSYVK1A5uVNdTwZRfwScKrG`oEghre}_bpx71TLkc#>zP4TIa4xAiGv??ti*_ zhkMwD$3BiV?3>M8hZ-DD1a$iksd}0jl!uAdDFi6r!_Tll{sk**y+~R3><UNKi<T+y zsCg9e!rDMH>Zz?|)``^;eM1T~H86&bjRUek!bFpGx?SgUl^|uNz!6oU`JTkQzd}fm z!yyLzVY<q9$BXL*v-}nGo?v6)_lqQtPYf!mdJ31D>j@n-7~|A=bZl#oj(yZrNdbYQ zgUA_xO&)YVLnrikgQvnGV|Abtc%De_w-x$hDd<NuUtN`hTKH6}i}QJB(d6J~igO-| z0MAIN4Q(@((zRLgcR{aj)7HAO!n5hL@brNEur_W|KsxPcyeCmN*csE(Nyup#ci*WM zR?5;txUPv7|7ke+0=YO(e9Kc!s&c1@vqv)5wjpI8K_d<h*q1N5U%Vol^s$;i-x8sI z31|>C(LpX-eqH0i<1fm40=7%*mm+P^!F^V7udc?+8C2ButX7Lr%V_!s)=Cd^{keZ3 zpFkanG&wcYXC0oN2NNS+1kZ9Hnb1G!!}wk^GW)YP|Jv%%!u`dL>_H7Fh_D)XhET8% z<QY#h*4}i3@!pHG+BXSwDy3kKakbJp>;YAO>nfqMc)kb`1Z~%nr%txtr{jkWHQ$$3 zF}=-w?710UvTrvye4i$(1%(bv8hHU6>b^Hqw|GR!_K>hGl;LXx=X~gE*7gy`ubx)3 z#Ua9X@aHin-c+2@7jGICZ5X=f;PDkOk7GH%c?6_reIP}Lf=MAi_w)~P+X2wBC=VTd zRemO?4Gi@5h-nl^QEef)J{^WvQ{0A3o|!thoZDnM9xvGZWr~1AOL6$?X->G+v?h*e z)(Fqsz?yuK9FW=*z`d%8N3dfcW8e5LbK4Qxj^ageN{vQ-B{--*UyjVcQB?542=+QD zH!QZ-tu#&a-S7^_D9&s9HBNFy&r*J3>);a5BBiH>W>@>H1|KVjkG?l88PF7EX|mp} zAY?Stwx2$tRTVs7*5Pq<ThpqCavD}8?XmU~7nO0m3h;#7iFDDfis$@V<nal5XHJy4 zah_+6;RQd$rbP`dAoy|lJe!ETt@|RbeAT2K!ssCmNXbH`os)9jE4bfXCg$YpW|11O zmNj-3(Du|S^=yZYv?p6FDj3*Q^@?)LiR9B{?clNY_VZ*zSZ*wkGw47Mo{Ge{WLM9e zmZ4)t_9dF84ycQog{QbHbOjG{XUrT?$h;;CMA(Wk(g>h|6_`L&Ipd1j)i9k)tK_)w z<+ZpmKkHUaS!_%i&uAZitNS+6dZyO6(O`XF{?%(RHv^XRL1CKG<w88kg|G%CI;zkb zq$jpFu^C~L;F{ZA$kjC3<>o&2Tuj3f(Ol)Zop<De$SftGSHX2tYFs9S*KpvlNSL<* zWvRSB>}*i-N62pN?#~ZzCu&STyD|c}(V1nCy)=M4yXqCH78Ae3VbgoCI|1o)udvFi zLL@4{#L8|jqL=hm{!&o&oLiNK!FGAprYWZgc=&Y&EceA-JNKD-*DK|ST>?`RMRif( zvlKT;saQ<Gf@Lsl{OS!`LrehX@Zs~4<U;1w+FB3?e@U|V$Sr>2I%;?}sLSctvLIAL z%nAxk2iIFlzBZD`bnRAA;6<~Yhg@`-BTPtT*B$91fv#zhpyGX5c8oaIZ@K(2{>g<J zBuNtEnvbe<Ms#()rE)G5g<(YUE}(aeUc4PmL8lzRJJoD*p-Rlw0K~z26QrdWfunno zHnpDfWbwo@3s3yxnT%rZjLRXh%vW6G6rK$x_+QpmqP4J96uA{MSMINg5i)BbSyu*0 zaAlSaQt_r#e@V~)sMd%+myRtO$XvT&(DUOLlP|v<Q9c$X)YyUaggfqp7;vFJtF%2G zP(L~tW!t(d>!`?SiyJRT!_BQ;+YzH%U=pFJ9oA*kTht<DTbP`sD0mcJf-dLElgc_i zo#pN-CrhRJUL0v@eI{sqeKck7<>neBTdsgzO*BuqYu!Mbeau<p2-d$j!G8m>FB#ZO zk+&^;HA)^#(a@wf&)HJu6avtOK~|N9><~{pKP6*>Z6%HXkQCPG%eR6|KiwFfP7kHv z2}$~^Kt3-k;97ltrCtQqwwpfc;@i9yLVOzcK*sx1A+v{1ZspTp?SZlQ5xyx9Cw$QU z%b*ViA6V~?o(k+v*6qH@W+x?lG7ITZdtDdV657$c8KXQ0mOXf2z*j4K5Q?TAOaagi zT=3B$MQhH|oq+|_&f}$qu{laLMe}%cJ=c@PE~9NRKcvZ;xwQ_R{-6s-+hg&rZjugD zl?tF}m@2J`73(9688*`NQ`bv1)>wG|dsrl`ehtf4Eu;mjH?%Zs%LAt~pLaW}BE+B* zAN=|WCVbI!`xc69J?GG64>)UO9j&FQJK&lTNC;B}Ag^P=e1S>twW*zpxml^}wpv0+ z53Uqvgv6H4v*QEWD!|{mTSM{c%Cl!gjayxh0k0oRf4+3DFjfS~7@*dYF?=UmwZg$3 z$Q}&|+2SL}SQ$u=1@pSz^T)Si-fx3XP(CXGqDEDhc55BG%M(X=u=BJXW#Vz<$l+`r z5Ep|LZ}<q>w(5_Co~%PJfCzz<TfK2F!6u<*XHk9TkB=lJ>(4hQ@=oD7<*6WPZh-E! z4v=Zi9!4qzGFA(n4ffVrh@kZd(M#bm*;f|>CyaY-g)&rMXeYE#bXTGSV3~o(q9&?% zV)cA3B8Ci_Y13b(?JkX|fzgPEQ1#XYS-6QXl|u7#LlVQl`^Ggu-5dng_Ff9Z?36vE zPt;7UVtW8D#Icaz^)CXXV^o&d+o~_Zo6HJCnE4fqG<7g-c`uMy^L4`f_4b$EB#G13 zl9?xQZ-@8G#@x3&85ZqOJ^(Qlx6g%S_*n<9VH_XFgyhOr&nfeedVDIAw*tt_7Ukf1 z!3L+7qXG5;s|Ep&A(hE^QH0CMn4&T5FOI@yKV+nOpr=c}FjSi{5exj~>1Bzg;MG{1 zwPp{!sQ2F6nifP^)Gq@n%!Fcl>){XA9lI}fq=uW@Kw1UXeDb9D%=dGngR;%^wFYAj zI7%~lj;QZpJabI5V2Uq+n2g20Ce#he=I+tpN#i|OF&*{LBS8afhUDy)*LJu!j7+7l z@ii4}8bvixpKR-qVGERm;_97i+|<+$qoai|TVp~c02)7y88W+X!9nkzOBfBr;=Z<C z|NC*h0(rbZ_hV_XN3X$e)fPq_<g2%cI%Rss%0vYQ(JK46ND=jKHulPdT~>0Dm*|B1 z>^txp)0o-|%&gwb^9eOFwHE_hv;k~(@RVt^{!7|~aj04n?U@}>YXZ{oVWBAYPEzW# zrh~qTG?*3T8EWAdyr^8<IQhALKW*D-@8e9$4-4wsgH|*WhVZcmB9R<|s6`$zn7l{o zV+MC$Fv6J}nBj(0JZVkT=MU$w-IQ#qIaF&x?MG!d5H(-r{DXZq4Ri7_g<SrRxuk2l zN^xxm(NEOt$MM(HY~zLrOTv)wH_B|#J(DZZp?4~O`b<NMy*B8$<n0Y9AzWJiRJw%J zX=%5#*5!n26h}|q+^R|A%6aGcS=em#6UR&89<<MUNVXx4GS}%+>w<SA_y7W+WmVYc zk$?gT8FjE1ISL>EQ4Kw>w%DC)mI@1aLZ%=4C4S$tLpmJ6r(4ZebER9pAK6m_WmX|Q zwC1bPyi^N&RB4Q?USPAZY-?Pp_&tdHC)|d5=`WMs6C9~Pva3O6T`)xXu=nj0*I;?? z%X&G(LJ{+I>z5-99OcF5=~J(mAY7vURCT^TzPaidjG)*JQcc&;e~nOvISMdPN1om? z*Y2PonxRrJy6IV2IhTBp!>P>U`aRuX^?@<`(*-0!w8i7u^K`Jy<#R$3Eu?3aogz9O z=>T5yOUd7W-)fS}rtdJhu+;v@b7kd;&&FbW0?<a19N{_im0iQp0i!_LU~}sTYK=(6 zs@WM!1y>*H=3dgBJo}Gm*+A5vlT-iHx#eu^?~@YnMB6s}UkJ6af|ks|jt-(*9WdS_ zCazuL_smPXV!<`IerY+fxf-YY^f7g(D|Y<%TZF*vZEr})It$Z``%XmuoE{lc*t1G7 zhp9^C5_f0);b6B2Xe;*`6NPLykthmnRw8!)lo(vJ#}POR#Qx7#@CiX%@vN1+D9^P@ zIDRp>Y-)+DL{Qn4rgpMHvnfaMSN-k}!Sf@Upt{*BD<$%2Y)iy0qCr~0DW_R1M)Mr+ z&iH=UckG59s?c8F{Z%M1qWK4wigyA<Dv<NCG4acRh}+T91AjaSF#_ntVI2R)VAZ22 z%<Pj#v6pO$*%3`VP$+9Mf-sxUR~q#uW;I-&g=v?94^eeW=i;OTR&h?-#O9*WpN$w+ z2Uc>)tGfL=!v?RJ`qcHJp7_58e3vu<`)9tkPll-!(1FAnQ+L;JiuBNR`h-<vB+VPq z?%FqxKRz0xp1LIW>FcV02X(O>HG;NCPjL&L`sec>9dtT$zi#I~irS~914Nqw>K!uE z9>wXCRE}o08<Z7H>+P<mBhxL|-$t0s>8{fs8=TYhu@xmvWnrp`N18&%6>RDK(}bwt zT8{XamXnROj?o9d0h`h}ychViy>#KTl4ITndeDE48&$71mhVmf?!zT4hUiEAk@6I6 zXYN-lmA_JeK`frmXp+$3${LBXJ@Kko#PauKp-zqn>716t53ujmbJ(s~LoLb!F_r|U z0o%LpBFtxaTZrmHS}r^>5XRjJ+ctnycW!|2lBvDO%t{`_(@8-9NG-3*T<F(*6x$S8 zpdhB%`I_<_C@T=v3`padn!JB}L(jkrq-En~B<JknCi7ES<ejU%m{rX`dYX<K()NJ( zubUIaRl)TOD;PBYFx#{@D;LT2Sq<Ur_57FicxrU_bQqFMs0hluZfVmxjLgM%h{;&% z6MV@1>pgQ)XWg0G3jvz-+y|2e?*nRD8G+}z46dgC!mN}QG$FqVh}BHo(E9!TlGAn) z#_LD8Sqo#?ewvRoF}cI6vRm*npqJIHyZF;N-|wp104ei#=4^R_keK*7TaU+n{>=}Q zN!=1rfxJh$Ob$t7i<WL=3QMpDi+WZ!d@o5Am3ax0n}4W0XEJ0Sa1uZBT=UyV`IQTV zWl)9U7d1I6a}nK6qTso};inLN_LQ6H-P&6*y-+4fOzX&dcI0XQ?8e94{J`QBctDtv zODr?k={u~#ewMKNAkuW*1AY;doxP;R0mk_9cr)Tg!8yTbYB2yPi(hlUF~if1e4(J? z0{jvU$G4XN{0_yJs7w%C)rDn&>M~#D`=EnTX@9ef`<uf#2dajO2lG#4e_~i?rAtrF z4$QW{M6<B)<8{GAUEO<(s4;Jfk`Hj}dH~XT1sYtWAbiISF#y7Ke>{Fktex^Rv*91Z z{+$678FlRm4g487HTC8>CvFsX*8m^JH>R?hqXS<jx!0xdI#qrN5_s>5(??163RG=> zKUL1$N6deSv{L+%n;$t0u0BEQib1V{k#+e*Uyo0T`L*PA<UeW9xktu+x+pW{10L8B zQ@^GCSI%zfnvVl=c8jLoWkB4ITSa#`hHs+UBJ1z#Z;EH{c8Ik+g$u}%sT}uvXtD<h zt;>pbzsl*~T*=M2pEodly8QTA6+RHD^g;M2PiZ<CcfGcS6D#Ya-rir|_h^IGwX$6b zX`-t!!~34zVCwjk3bA;EBOFLWI-U1SO$hY?Eg`OY*alSY+(?CcvV`MRjGR4{vaJ43 z{JnswAfK9{gS<;6OWW6A4&#|v%FIQ_&b0aSmp*DGj!|ZRAx;$6A|34Lf?o1C*tyO| zQS1GrI;o;o8QAVBhi__~l;NwPYoH^SGJ4-UCsNitHxQ%8HKqezTaO-wZUP}%ry@4R zd>f)z!cWBDA?i|@Yth4TIn5JOa!9TDTe->5?}JJnH$Bo!n7vC6L?=2wfh9x2X}mIw zs?!p8@&Q~m-iCmGFnzgW--&m*q*@gX1Nn<uBB%z>3Cm~srbzW85uNLFLX32_bUUo6 zdCv9}Z8-SV)^|zi%}<~AIRIR?MB3mNa$D!9`@L;u1h~wvxC(~MIHaET4sUL?khv$T zB^tc{b?U=*o#X6Qg09I2z{?DG#EB4p-QFe8j8tu+9<vl11~|cgC$>I3zkF$5vXaML z)8${jkt0p9bAKgo{gMNgWuHU2EUjX{#7u8C4^E*C&nF5zIqlzH!vpZc8KF;VPud&( z9vCl&b+xTu5vh?*;~*8HsXlj}9;<3w&k+DOG@xF1FyfNOKGQIa=BJbigv-Iim@=<# zFbZ^NJJB<lx&G=KKv*Y&?Hk>?efkkhto^_P>2(%<qM9n-VZ+_K;Y+aYSe<m~?osr% z3s18efi}M6e1I47M1R)bg-TSD^2QEIJTj?6lZ49)G@td?raAzyQ56U7MZ&8k4ZVh? z*zK{ZB$GH+)G>_4u+muL+?H;`HJFew_tISqEwgZIVLFG*S!Cy!rDP9T=sy4|(C{a# zce`l9)Ox7;iXPIVZT=*B^Wj3gO*4sf+I+;qh(>XNn-(NCpJ)N*X(j^&upP9VMi?km zB4F>1sWeb%cdLt2m+-lH0w(}L@LKKg&>Se5$j9+N@KFmCa(-;9H|a(4A;$G%JdCzG zb$16$boXw<8bxAb0pZ@{f@fk%+FsiSFMzoXe7_2jyC?C4Zs~SPV;l$`oiTp-dVF)~ z%ML$wc3TS{kN@It^_i@$U;M2qr+*FS@0_V6ynGW{*>HJ$orUhF2r`&iDT@cgzU+gK z#<)-1yucH=O0tf;b7$Y{vvZEvYnb&CbD1Kfhld4oUp1RUIxZUa$Y%dWB_IFTm5_7G zPsMmc4bI9ZWI2JPeft1F)xZLtGH?X&{X#%A-2_b|BB?CW5=%eH4Xly3?50Bo<3nqJ z)d{U_K+sXHTW2?^hdj2TH-7XI>I<~ap#wVp<oq`Hz&0ES-K+x<G1p*(YHisyoVok& zD7{~n%6<<67OSM{X^6Ys?Ecw15~DlF-?o*f?n1NzN8-qQZH%i^W-w8QOoWx*w=beD zZ`_qQIPG6wKv}j(hpg@;frs}VE}+l8oKfM&42#;}z#0dJjRTg+7;gw99%?RbRzayZ znh0vP2d~vXs!wB^{S7M0>=rL<*RsjV<8WjtGf8wZnZ%4kBH<pIuk|L=>FRZ}>!jXl zGl=nRV*gP0!<-fqV%NRNpO`}#Bjieyicgxr+78ec)wVZ>5=Y3*K*9d7+QA<q5*~tR z!}FZk@GW4}lf=Ha*B!Z?E{vsa#xDW`(MfNoYAgW->V<qdYF1xhAb#It4BQ8ikAJox zE#ZGB?F{zQ(@xhN$`w31qYBUiQuo@|%S`E+m?cQ4EXqH~w+H}R*TtZ&V1JA&6%}YI zN+=Z%gC+QGS9l`$$m^rHAIu6JE@4a&FA@(R8@?Ja@xb19xpRG;Uf5b(52tkopQjBT zRPwI?V6<h*m+IXrb2X3T7C`zddi*jyzo0qUj>s?YFhofTEb`b*RK0tt$JZC`7$$AC zoHjpocOS4S!VHmg|LHC%Re!!Ir=5taM7<uZXn-c<=q$f#w&<S>ON(H2AKYwU_uUu( zkqCol88Hjrp+^l@+2_FfO$InqVBk$%35ED=)}t-{oINM?E(Zzy8dXrr5*A#YH%+Mt zT0jG<2B-k(9OJgGXp?Ib0^UcAx-p;lhTc4fQMF@4?^{7l%qsJG{+{ds31}zhLyTi^ zb+b7N0UWVUpcm4|08x%>qU{IUkuZGzw?v;+)}#&K)Q;rb8mp!1<o@-VmmQ6ILzfm? ziM*-hmz{ToMTz#jF6E$K&%8l;Fa*+T<nDP+%8=j8OpFQ#MBidray@eXnnpERJ|Hoa z9N#=7`em%pdz=9-79`5*jdp5u+E|A=G=ZtMh4+Pj5Ks%{d6o%WSr6n-kp}O;Of19F z6Kp)8I~_A)*K|r+f$z6{9WI498-xr6XURV||B%@qL~GN>a37x$;^WS*`=udX>y3T? zr6J^c`!WCx@tbt1!W?_S_q_D*_z<fd^^mI_Ju6D@SUj|^g|Up?KTFHubaYuVgpM7( zrbGDJkYHRQh+@NOKQp@h&brmGAl<rQOvX%u<v8)ACqOQyF)w4La4hk_j3Yn#bZcux zEO&0CFl3=%j8C06?%^j5&ZmbQrr1ssw>ly)$FzeZ@W-r%_6_XqyD!}2MsKK##ck%q zkDV-QvuH&buhcy1A88q9tc73LE<S(Dk4^0dW~{@R4OxtoIIIO3Jqko2l<Dak^0YC> z?LIU~7JUf`zn#XoO`bY*pxSQ0m3G(Fc^wu6-hrVH7?Hasw=}-C50Fi`+3u%^I=^PS zPEV?M`9A|9bFIo>)xgtc@P5Qu4^Y9~m|Q7L4FEp-J<{er;q!r%#lVB6S8Pl0g&lw8 zcE4({EOE2_(Q{=nrAK=AkyaQj5st~}o9b{}-P*1YCrRi8O^;ocCH6xA_H)<|Ja7s4 zdYw+$D!_^2`FKXt`TvAitToB?Lzi~r(|B!QR;66J#0?}FSm?O0SIQ!FFV`y93Ex+# z<^G^A&L@i8!(0Yb_X3=DGp~fCU%8uMojBDLul@V^D<xl)m?U+ZN#yv}=sD`)&KNd1 zqUVXBpz6c~eM-$CI6Gkx8l<q}dk3vM5WQxb8Er{G&f^csbh|_B&Y6hA5PO|Yk7a)w zuD=sZy!a2&F;m~1p7x@ZMJ{++>txWUqm+QoDH<-T>=}cZbUCv2x%~U{4s-3yWCpn7 zt^~xGkRpwF%7bZOwyTXfpSQ>JM6pX#Gep84f0?Xwv~V<dYP{{Z&vLV#odK@?B>1fJ z$v-p(Uu6-R{RvR)A+@h<A|PB_#f_9_{Qay~>%6|)5lc7m5j(6|`T6;J$(*|v?Es<i z!KDS>L&y7bl}7_n%9>~$XtVU>O<Q}t?@Bg<9pG~xn$KQP_LakxqC7=tMsUPbNflxk z89|P%Jc~vXm5jhonku#UvX&1!Gj-RIa*-V32rH~Tiw63K)san2IMO!|mZT&%-}^#B zLbEWHD?=dWi3NYfy!rjPYt<_uPA^xyI}Mq7A&{NxbP3Vp=fAEitm8*|dtGe5w<3YJ z*M%W752-71r3~n;%1_-+mVbPRWFV_ljYEC2I7h_mRht~T6ZyzjEWUgHa6038k_(0) zCgwr8&&;R#nq5+%^K?6}b$I;zEs33}pyqcCSwrfrc1cr{)n{)#E51%<E1O@QRqo2_ z5a3yf7BTBP%DJh*J*$r^;1}uO5R4D0!W*sCX-?%0SlI!oNoT}qhCyVq9A}5#EV7Q! zyRYc}jG9ki#&|Npml>ZX68U9}Y#bL@FTQ7!z4{UL!o)C{z12En^n-%A9kp%R+z_|E zl|oA1X#!Kp$w=9T_b2D6ho?fk7!s~`h?7(;*_2&lkmCwj5}rHdkBlVr7k+lR!+H3A zWX`#Ox>dE1J<pDT+pN&+<BI7Qs+BTR0=Qt6?F%)9JJ<SC7p*cn#-ecV8i{sJ+!bA4 zaR90v`cr=OIS#wTcP{f8`+N57<vH~=;0LXpP%;J#&U2I<m~BDVvcnlkWE1CxB-GU0 zu=El^5E#vxnO(MBQbDu4U6dccHO_%gK1}-bA3=}d>N`Zt<{fi;AH&G>ncW->fVz)u z86*W<+;QB9CR$UC=`yC$0-y#aR`N&O)q-BZ6&=|kxin_sWQHX7miO6Cy|Ntt(S?7P zORyaI_@yEI;vB{yuSLRvA|e2;TQcuISbQ!pk9MZfDcb)v4ZKu;ole|aWOrK}>vSG- zf4nV@n{Z#jEY}MLtmLC${$f+{Y(O@Sy3NKvHOU|I-ybNs`0`CX{qzZetH@J1_7xOb zoO`Dd?mYCQMy${OW<Y?hxwQSEFDcU7XQX)Ef)DXjDf@GMF9vqV2fz7Li_u6_(*#yc zk_^sfKbRSPi*x$FK!sPh-w{rEn}&y6KR23m@%@15pI1jV5DCxN^=w4b{3EY`iI-B) z3g3j?{OPV6W)|_u4vax>@Vm1r>)BSwgj>98y8j@BJROtiC$2u~Xse$g2S0zh$gA$| z)V0@m?k6VIQKn{lFvP;uxu<x)NFC6@ydQMhbdw!j3NHQ+91~Ul6$|qw=S?BrQqN%v zeyO`0#{C#><}`CiiW1RAYvjL{JpV4!bn`(ayy*&TKi)Ct0t>q6*;y{8?dQOl2Yj^S zIg_~;c8AePM0H7(RhyX08yg#4$O{<lLIs2Gn73Axa$Dc_LoFQw>~_UmKbd#Ent>*< zt1(8b(Sv-4a6{|*3=0RD3X|l%3FXL<YGAN4k389LFiEuHwa?^tW-69jEEwy^v||`Q zt>~&KG6QBkKW;93D06H`625F|L*-g1wguc&uDd)2g;jD0u*TI?W`UFW5rz@!7~2zj z6>3ajbl=JDrn9aBB5#B#h=q{@w@dyR+B7iaK))^<|Hmx&Z;QBVtcUzop8!Yqv*1t_ za|Mv9d2Wrnq+*a@8HLZ0kluthd$oK2!&MS=<jWZmPcO5xgQNKX`cO^7$YwEpiE73N z?tJc%q_oPs!lb?gzC&op$^^I8)MM-h&VcfS_UGLHRvj6Zzt8g2$$y9rtNEnuBPH#& z&xOaQq&4=E9yJIbuu5alm)=WFFnEuK@Z&!!=Cg{w$@qb^*>z=5M}Ru%MF;GoK$8b& zN$iwlac((Ub*`#&ln3v)5Neb_oEgE#mE6{t6!qDKuKM1$2{THi^_~R;U)%oIbeco> zf6{43l|2mh+8tKg(_iWzy6QeKJzA?zud8(}xr1ZZZO`qGtmpvi`C(_iYgwSIN)*2u zW)x;)8NZfV4af{Q0Bh_2Q?y*5Z~ZrF*^i&Ics9C)_Gcuyyu0{BI9@uX&Lc$O`Vw|! z$i7y^OjVY#UlbO8%<;tVehuLk4XgUbuN&xI1R?;X;^E?D_J!vNif1k@n)@ehz;FT_ z9zLdHPNSJ{*BEW3joa#W$*?E-{;FBUVQ;o$&f3>pIXd1~012<~YmN7;Qz^J-Wp0+T zQ-!?ln|sU1!G3Ya`ej?cM>o3wc>p`N{2l`HWRk8-gpr-gT#X!il|22zyCGi`<f|D+ zp?wa!KbZ#?KEKZFzSmA{$y8l&`Na)L8Twz}MoTXwjElcO`+_s%XS43+O<Uhy>-m$< zqwe4U_O}Fq*HrHo0EeTIc(<t5)4@u~^_M$^TU}7`%bkjiP7ndyDNtb*w3B|aaD%g_ zZm~M9+D<V08wTgi?CwfO=j|fsY#yFbD1<tgW<T%5eR=o68=6i<l9YX5Y4hKn@%vEl zerGOc1=~&MBLdrFlKKvUU2#Xf*bZ8A7L60Zmo-idSBHVUj`G=SB|}TI8be|qEg!iv z3<#U_$_LQ$=GV2pb&nxptxeN)KUHCWAJncQGyyGq*I)2#lYQqMavY7PqDZZJA^Y-x zi4yhR#6)j^Tw|^}CXk;U|G)Bc+4Uj;Wt{bGeh&KH5VW~E;`GFR>p8{Lm+52J=V@W# zvni4bJL^+|naS$q>PM%Jt1q8jzU%(5?Sj7>g4wYB;FTx?;;Y_8J2+f%$VXRh(GpLA zj^|F`j!DX??jGpOr5tp4s^AYp`R05Y3D_ThS=A()|IP%*Y!!>D1>@cnhKs5HvYmOB z^MKGq+I8g@@o&TyCA)IN8~r!g(YVV93kl4gKD&!v;xCT^WhIz)olQ9Y7a+Vji^ml) zMqH<Xx+<jttfF|<UG$KU#7CF>VbR<+=$)Y=bu*)+?;26l96eWDa5BMZyVIN#?;BlA zX$I)X28#=Y`)eg7?ueguZfh=qAulI)A}`%xetedJA#@Trf8c|>9Na6b=e8Y0Y$aG_ z=55L(d-TTM6Ba!vc}d=)=X2lSW4V=Tvj3u*3tCU`E^gF#nLuj2bYy5g5n15hq6F@2 z{-4#)$-)68L_T^RTV11BCwA2-&wS?Vc?4%34eDz!<2+&A?&1?uyYwLE#5cALUl*7B zNB2uT@mHD&V@r5=X1fy8DZd9@QC^@+-*lsLta!Q^H>Jp1Z^-i0xh6L~%k!?uoTBSc zIgmIBgPA-m_gB_5cxw*qoR+Dp)wgy@8SZ{|ASn9rkd-@{Fiu`5PY95fCLcCv-2qkE zkkntea&^w{p;B1wvPr?mz&$vonA^oPt`Og#kQ6vmc{^W9VM$nlwg}MsxCpUvjuU$5 zcVJZxR!X%><1^i|b=yWpNj;Bx(hQoZZdI>Mpwwm0f4EUf(tHLbeI;-2xlUYzGhe-s zQ2Ocxh>OEA`T54(SG}m#{}=Gw+Opr7BQO~@c=H8)D}xSYT<3JSiLtX|<;TLbXKM~Y zB#F=R&?L;XFFnJPcov5y(m;ubrvk+v1=bFI`LfPYb;hs;nS$ea;iQHW-yJkwT4(@K z;+dyfxc&xe`)t1#eNi(l#Y#MJd^iEST~}Q%WB$+6euPop12&W1P$$mgUC2XeD~#tw zflidb@&x%ZW6ihW7$VGA=$iI!em&)R(erq(gjti*p|_BBnit*oS!bfUzoIq#cvY$h zQ%H0~hwRMo9c%5?yBGc<+n+)vWitLr$?yU`25fFWSApqNGCY%f9LF8i1*|J+`4R-( zeBzff7{Fxz6)j2gsOI};q*sL4U$9!g3L)}U_uZ=4@1t*HPX7BUR(;ew%C+5|(S8=X zX|EhXs{i=Y$!+E2!(vDnz7p<O&3Q~1MbAr*!I<&>_Uk+Fb)A6TX0roU#q?p4c0RLS zsdDpr;u>`oJ>7gzRWN$S#FYP;G^H~0PGnQz-KV455Hb`R+7jxIxlfh+6k<fe;YDsR zm&T0Yj1aV6VfOyuupr(SU_xezQfFxPzoBcV`EjPT<|;|n8(L}{gk|TdfVJ@N>fTPT z4-j;x2|SNpYA|ND{j)>}1xw(zp!V=xcVNBIa(k;`<kd?OdC5&2#9by0W@S)nes*<y zVmUVEV^#e?2b1kHEtY~3T7-hDncRTJN4sf;T6N2<1R<+++gep}2Ikos!dms-i*f#^ zhia9dtsDavfw=8{B(I+=#ECzXwn<1?DQ>1wgkOh$_+HKY$9E-%1{1bmJF~R1bI&~0 z@C!k-@gz!a^+MnaEXQmUPDQv8a*DW{d1|YrjwMA&q0I3m{Cu?B5xk=z^V)p=cfBg# z0_*a+TJAE9mw;tIn;k_o`o`JXxR*{g5A#`gwx&g<^KfTu2Z;2dB3C~fJp}ZL4tGNA z6Jzp3ig#%Df#nK*oX@Y>($mxJ2uD;7{)P@C*V3Z~>mMl;8ASx4gmvnoUK8^%luyUe zZ++9^nkK1R-?TG997_b9r1GgPDz*rl%yc|M!S6zCi+(w%H_YTJ;e*~y+RLSoxBMKZ z?CGg`ux_e|d$gT&tUk*9(`{EC<tUe33F-a>R{oOA_CLRyg&M4X%RF?$khn5?T9ZGS z9kR0_)ldMGKc_k0pL8t(((Mz9J!xEdzx4Ecj1e01V?oM}dek>bs?J3#>1MaHniRx) zd7#SKd~M~>f@3+myhG}v=;K_rh84sI7vrOMcuT@qe++G|UEJe+!}~+NU3Krx4AWf4 zr#X(K#22C0_xYabvqrKFOB>O5K5-Xx66$e$N+65)r+IVxosT}A`9@6Vif{Im?8Y;) z(R!ZJ;x}=uJ^l=Pp8OJP>WCe42X7c8sAK&&dj-LiJ@sJ-oY`jTy^H;9GXakX1chc% z(&T&zb}bj=5j=Vg3+6%HvuJC9kX(30N7VHP@N>V`BD+qK(I1vGc<?F0eS(VD55DwZ zrMs)^xY9i3G;pG;H<3Ks5L=ZGv|3XHR@M5vwChu_(evOuD=wrNF2!0`A4g<lmD@58 zXKlP%6uILO!KnO54ERFT-#QCeHJ=Ca!V|DNI%!OdseEbuO<PWy{<ajA;v9BnQ(fgb zDt%$P*F$ct-;~G%E;gI|J^^k;L$v_Lixix?ad=xt^+g5$Piy_LQRmxbD^c)eD~o;5 zCQh<6uOY>){f+k08C@Y`V&x|{3#qu(his^pe`?y~GEt7nG==NT4W^I->mBXnH+xXn zh5zLP3U(IZyI0yxhEq>Z@n{R~bw)ka{9$T^iO5M6PVp+!6UD(U0WJzy%kzn7cm4<N z<nd1?V3wtUPmswgq;lVW#`Wr)6%V<XG_#VkD~&3ic1H8Y=UwQZ%(IT?huR0Fs8hH9 zx}B~?)Ahi2Wiew*s&}I`r?XG#NZ%j4@T7A?n_MUOwXsUdOWO#9JFRG8Untqs0cl`n zrbi7ZU7!CSl<tpwv$$$TBkmL1RT70XK7JCGj*D6YC?2?ygFX0#-*tibTdLUqn9>5k zj>Od*+SbpF&^~pN1ulPtM522)ujaNp64@2`tP<JTPwG8<k@m<R49E!8FiQ2bBsI>s zlIbeBU5%;p!aY8DWr$>ME)g%KJA+5FF0H(NQM?v&1lvsN=9&)B1#m~9UR}sIN2@1X zZd`mqoK$0Tn|K;EA_1-I>p;n<rtc8fYsZWbz)Z+7V;FC)|Gj!owJ=P4R->qaJ3^Bi zr=l}j6WKhn>%i>1Am8*#CegZdyy}pJZmP(-dapgTR8vnttAbVT<=GBqNophwrl_k` z;+I@>xkiWq0s2<c2n>Uu9HoSx&3OhDKv&T(bmjGtb&ZaWGD|#U_{Y!;l6n^CzT?HY zqK<cmUBVp_x_9pBL{(gOyQIq)Z(^c{qXek@U}`8!`I*@~#mr($$l&3O_#k)kus3b} zB>ImV*KQLtor>nQ-RVu~>o^(=s?O<5YYVmTGT0S+BhtlD%LlIw#hV97RUEsVWB%T3 zbI<M{56cE5vIwNQ^EGv}0m?zKUyks_U;hh$E-$)0s?kFbn0^^<KXIYd*Ek2tKDF&f z%lkn6@idS(Qch<rduLCUJvg2?{r=KyU}t~9V@)UJPq(WGu_D~nLC0bC)JHijFU3uU z8EcciB=j>bDJ~WO%sc&?c@NB}MVQsyM>9$$wB~X?NIb5*tjtcVzlsV_F3lTw8G`w4 zX=Iv|KYuz2hM&_o*e4=KWb(d4hj)7fdQ{sb>JM&RU-5I3K$JMeT9{#hdnft^%DhTb zWL-c_-HOvSiY|WP8G*RhPrkkCpgk}fpzd6xce?;FzvjtX^xFl9S+Nb5@CAr6m7R=A zy-J%KPl4I6Gb~t*z<t^uzVI(zps`yiXj_|w*W;wsFAUxvlx1glK6UyWpb>K98ZMwC zg`bFSlZZ(3y-+4_>ZA8Sl!|i40sr45_;WOlVL+%YWxSwC3!-YecV5=NXRlSPo%Qq> zi{)(E-sV*zQE>$0!JizDh4h*s%4X)XH`$ug+j(7f<5VU|vLMSe0y{zyNtKfzs2|~7 zl7+DkUI7G8-1znkyyB9opTuu!_&>P%;&GI54!#fAWN^C-xtAo^6D#Y7KtwyCK~1f< zi?8zQVMZatniRvt!YKIcifcl9G!kXkfDW(6DlpvwUyw%{%tWYar*+YvCl{J%E(heX zUOtWIhAuEm|Mh~GpYBKobH{C3CZXH3$U`x6Q0j5qjrv!!j@sLTrL8Z+52&ksmu=a$ zkJ>PwWBp#b{`=V&)D{|mZ`!q|mJRD2nTN-~+5?{WT{4o%>WwHkmG8Yxb(i%*cKWKc z810?CrjC>jX4epI)=NBIxZ)5slDu<&fekm}N%opXuh0OgkhyZT#=<MMV{AC)lZFTH z2dCh~pIKZ0^+6_eh<PBC*N~mlN+}LLN9p7?&mFiti~GJRNl}O*>)S8H%YRE~+mFV1 zwymv<Ia5y4lqzzt`V)UTr3pVNABU?U??``%P)zATn%FT-{M&T)CRi2nd`h6#PiLG+ zKZiff4+CILi1d>e^~;5)JRSuD>Ff~#zE;$vHxSK{aGUbI`czi*j~fkVx+cO;*a(n! zzQ-lA?jo2+dmy?|dGHRKnT^>nJWeGH_EbR(puL^<VttHuoU#b0s(^A%>X1yO|JHQa zc#_G0UvK6%;8f)!$FbfoO5z>XVLIEWW#+7~T}qQ|oWYnN;&rm#4rdoUKf8MW{ot*J zqRgMg0yzXm=Wto+zSm9s;hml_&N7{n&x9WP<z}pp#~o9WgL{s1jMkd(<JbC|ukrj% z8}5m+PY80WT(AM@k8MzAwMWA|Z%l!DtEx0wAg;=XK{<dHX(6{&abgGVHkZ9IumGxH zk^$yfP#jP=qx96*3XIp16vq(8m3Yd;2^J6=ZH_zvWH-TomfeKgS1n6A+F>Yh52gR3 z=!O+r6WixSzSR8|8Cd&G*OuR2hh{5dIj+Qp5@%Un_;7z<U;9(uO2xf~|B(1Z$04E- z)n{e-c4hn}iVad_?7LFEdlY8|jFB#%J}ABz?ej?JNSLE*{kc1UgvAiMY4k}W|BA&& zS=oLOh7C_4DJlxoArziR(Eo`V-h4P2?V)BMMDcMwZbo5Mehu#+&q2fK)tjBo4S%9< z9SP7+(HZfD^&8gjQhEe-UDzh-gSc$uCTj?n-`M-Yeuxn#G249+kc9p*zf6av4}2TY zUGVMW7ui)^0|d0PhsZftH*+#OtxY0_A5^FZdg8m>$z>8zp6#&}$V5{d(Z6ctv*<1} zDY%mlu=zY27-zv@&Cvlfx@DmkE`Gnr!(~6;uH^~&wgRAuNB<W!F?X85o#h{xYcI4b z?dBZEI#c%~T;GbY+GU%CvtIWEh#*r<tlf{}`BPE?|Kvl>U}tT|ll|1X|62i}aZUBC zK@~JnJl7jjy_p|9+i<q~EZP`|M7#rxF6|@_Jq^h;2J*sGxiWVkE)_({!PjgN=`*Qg zC%6&qNrpAjm56`Xz?@qOz?>>7MfFO#Nk^z7=Ql<D$AJ3BNNfrVp^%q~O)2C|>GyZ| z!k{T$`wp0qrk<!Ml9CF^zz>z$d5Lphu`oS;vgNK1UbFID$0PU61(I&|H6P!kp@Q>o zUBvI+*j;p8kT=6ZBN21aAAKEx%qC8C)pIr7@z+7rB1wF_3v2s%xsaj6aL`$eST(Ab zZ632JZFO}GEv&SU?Mq%>eR#}v0p0j+IZZ*~w}qWx=w{hKeVC+W8)Ov4VkxneXqi9P zG>OAZSGA;s4$KYo#{v~(xHz6PIAZP1*kwa%m+5`5a#tb`9j)n>D83jLnZAQ#HFh^c zI0d5XC|^03EtlQrW#gfvor66DOzC`mrqQ(ql6V%3>oL!&{UJ4Z(tw9kGCKIWwpx0L z@}=VqLtVlYi*NZ`Uab1gRl2tCRFdX&E(|2GM`UBdAmYB;D`eZYc^5e&&Fx{YG@lag zMZ-qO12$%FP-t~v@`gPnbtZgXL(=AGL8#iuZZwNzy3T=WCz~opZQ*Vk=obR}Ly~)y zv7-65BT5zmL9m7HiV<M~)C$^{ADX<YM4szS?OnWYeB2fNU>lt>hJ8DQ<!yWGyG59W z>JNG>q+>?UV)BlCidgaYxL+5S4H{vmwV;g3d(UNbC(X-*1O)n!Lb>OIbO>U7+1T{E ztdwK|JJ>}-_0eXA*oj10Cy%cbV!!%eTrcvYgC4k_3u1lxz})+Kr%{+r6?wZG{X!Lo z4^e2lb4`DKM5JBnqY0iDYlgz$ZRBcGf=KSnF}r^vpnLV$fD(IIs==A1?l`l$C27a` zjt68nR+z4zNACL<F{CW&18P*c<pE`SB(Nce06OXz2b4KuU6ND9s4*k<1cy;!mksgD zIOF0AwlEre9BpD&8UuM*dmkf(t45Pp$t-Mtb)qS9-thL26b|*X9DYKRqI?njl}H#t z@z?leCB@L$(T^%1cXMJQ?+S-gx1;wJbsk8c%VI^jTiN1T0}*f<J)o*t!9}&4Y@P;S z;pRlY(-FFK`AJe1MY_Ot_66w6Fq&;^1<!YE_n(81KX*>*{UocR;GyYi?C?pX_?hcL z&SM8-ZDO<IXQ!DK3v)C0UL1hzW0@2%p=yyBv>^R{vB&FUV$LahYwpxr)V`vYC$@$0 z@1JuW8+)XB(Av+|y0-t=iDeurA_NLD*wBTquHhWkRU}CBGuygfJ&b}g^nKGO<mYgC zZ0QxIG3s$NikKlr8Xn+wC{Ij7(?-jb5v~+GLC=_<74u%uXHxR>|HIZ>Ma8vsO`y12 zf;$9vcTI5DAc5e)-QC>-!5xCT6C9exT>?QH8i(M4#&74G@BH`S-mzbL3<mUO?YU}A zsjBVkYsRH;CcThsp)$DWEL<dGoLx)jF3SGwX*-sFvk-W8X`Y}5^sW&?&#clg6!7bB z_mBrR{UYxlRNchr#FTxLlTU%;*I$B?2`R&?(9uvvy);h?LMlT+{3Y|GOtuv)wR;5S zp#OpNL{T84$`3E?r`(Cz5WvVezkRp%n60&LMEU|x8W7S?OJ*EJg&KHoE#P}O`r+nj z`~FbKTg=T`+}EegF0bP5EBs5>Xc`W*N$@#LIb8~iB1>Cu=aH_5F90d4BOO5MHgM=4 ztD&p^D6*R((%bmvWws9~XrRB;P`I=x<D18~;fzg(T5zof?NWSKW~SM@Zr3W@+Hhqr z{BL$tsNz0Ayl(muts>DkipudxMME76N6)kps4#+HgB0HH-G5Ckpp$qV*j%Pz;xEdv zF6l(LU|r3a%jQfX%G{)0<d~~!&a@}y8}jfg&Pn<b>?h;rbYW~0XC0Nx|0#H8#Go?k z4~W~CTb3!`-S+Bgtwbd|JifKg5P1=%U<3Le<;3@cR7|&UN{gzE^Fqm#rZXhNDmC9g zb6AgS+RDmM@5^!z<?tDCOJQMjBP$9X+&s9Li$)&Y9$Ft__R?Ss?=k_Ybz^LduAXp` z<+s&Ap#N?=z84NcEWfM?A_;^DCg=bV05KB`plf$#VT=<EPW?a^PwI!;fgjde)oydR z95a8czEUd;?-8Uqv05CrBo`G=(?*F%eS!1QSzO>IU4ijJ@Btv$ka=-2bX#&xl6cyF zyq)j!vEKN=u!;^oyH;Oe#C%W3jM=k0S>@2J1nz=3_D7&}7!g@TCWY*J{cajN<ke$$ znQlxb0;9hL;}$vy(E=c*9RJe;2KT{bR&A$XK^K}1|Iz4#VOXv2r?KTF+$1d+<NA$! zvWvbfu4S@K%Q3N}1N9pHw+DAK3m=A!UnQhxeltHFPv-l65`!aD{aI>4KM8k^6P5rY z>EdMaz9Dfudv|bFNJa$h(Re<13F_;mrCqYeaA0zWZ$^jwIOAF%mk+lpzD~@EVK?kz z6%JT(cVAa7Z;vF(&;re)8NQ?bPqD~__)yUGyk}bupdBK~Oco>z%zI>~9eSiz*nGa4 zJKQErx=pdv^O#dAj+42$*k>4*iPj#Tv$I*l;AWb;X&rswjiw~p>n2m1oLol(KfNch zTPhu_V1~1@e;mJBiqh#pO9fugB$#UHF=HaZbe*}XYc(n<PAY;wzctqUj^Z@x=I2GD zC&V{rz|!sb$K8D(`^!ak%yiV1bVo;BRTuuO_jjlX4y=YrF1|M=bTKflQtQbQdM|hE zTMp8G9NtTz&xMqr&lUZ6@!ebfW6D6GgXn9k^gGuLrK0@c>rT&XR+8@4UjrE-DUP1X zHexXJo?eOLr*rX25XK2HN~xpO$<idldNv@sjDPY}sPh!3p{Mdt6>K-x5s(kip}cdP zsw2rQikpYVLpTCRiCN<Gi+>KWp0D_8kMXx*M^p^6iFK{rkq@8IT5G_E|2v{}WXs!> z|AAnV3j9L04m5-0<wXTY9h)&IUt@41VtHE9^?xYMR&5C3;~i+<6`RXDePKemX^xP- za<60KirhnzV9$y>&>%GzQ1;dZ$xtQ3)JN&>#F_jWT4Ja_{A?lDZbWMCV{!P;K3*(? zF#<HANtBr0ucA5wHyfRoDW4{XPeh!BNbBAQqOz|5x^zuKhqQjIMk|4km~r|D<(E>3 zmap&+i<A7pgrIz~APUwFxbM6OVuw(45e5F@-}Lc!N%w}Q9U>fbjj^Mm9`*o^0Mh2G zO%xCVVF0iHI)zc8EmpwLcV|L&HkgdE45IUYv(;zDQH1Q_8^3Pa-;j5tBCao*x%_qk zh_~>$FIu*i%8sSYKDZalbf-cHy*4{uIKB;}t*cMObI}6(^shP)0*CPWe<9_*5r+@V z@4A8P&3%CgoBEtvb#20PXFs=#o5@K<()=^vFoJy&93H~3ip@|{y**<{B76^q>ikfB z8&)wX@S1S8vn{%tN$KaIH)<F{d$t#w#xR^#j!PK0JFq;Ez}P#8*zfDijaE3HEC={e zOSXuI`K;Ub?dzkXO}7##j&Na{_3{e?Yh0bE3*x#G?zu1*?A>zsL2Vj8j+Y8h>fiAp zRW*z_D}vKTWV;KXbr>5kdD$~Ve)bz&!!3?wxIuC|Fb$=@&FUH~axHBY=W~!wi>UTG zE&t>>uhjf;46TZ%cfbYJWMxCP)o_AZ@oMEFr0L4`qKy(t{uGARQFnCdD*t{@;XT^y zD)_}0ta=`Jg}hBo-Es4K?E*op`=IepNnMVFp(&AO$oIR<!|D$ovKyG6tDIkqH-kP{ zS^jdn0HBJSO!}hBYQk!g)Cm0|N{_4y+-oi}Z(&N{khujV@BlN&`dB;3(p5kk4E+7d zm$rIp@u<!J`9J>FfT6qzNs1STAp~tNTv3E(fjPw7P#n+smkpBQvEhqUp2KwwM%&W= zp`_9ME9Cprvd-J<;$`Z4wOjvkXtPzV_+7DlW9KN#z%X^EDm+<mN)u+exHh~?4HV(o zkxztcZYUnoZVt7j`&Z8$fCj?gQnjs#5Yd_4MPje-_ZZ#^$pY(ce-Qg&AoG}L_XE0i zyK_RL<Rz3W0@H7OOZAcbd3+8utsi?z&yxcv&(C?#lIKm-#s`~tZx-8+DKP)A6d;N$ zg+uk#PCcl>ipZOpc;Ks;3Df%_{Dv~fI{1MHh(Pz(eg|4jNs8cShPx324%Zut;rDDW z;?FU6keqLs>_aYCHmoVwffGuJq<7)Mo`bu0Qe`v?f}7IzjoNAx_9pO;CRzP3bDqdV zK6{C6ko9RB1$ZydN@MpmDGB)7iO>E+o=<rFBm7`7PBkMgKD`g`d4LN|{$@{`INWA` zaYP8wd7mf<e@ITD06CQ+qb@IITEtUW*kRA2g^axd8V@FDtXtgy68p(%_GvxvsTHKB z1P+h@`sXVhX3Y7us32eC0`DlV@OX2f3dZ4gPDYl+kGjlYOuWm3R<P;k%U>7NF?O++ zKkdEG&HgjelvRT5CORj|6^dMQb{sTD-u6uao7@Txr(&%wUgP}bdeu}ZZtMSR4-s3e zLY6P9-V?ZqKHw^!ij_t?Ot}8iukXx~ib>BsFVTwzvc<`j=@(JY^;*Z6B;Yt_D-|S8 zvGAX)_%EbNN?`)`!4@dubmwrHLcP{g?&n5-1c^fxpg{*!OI=1zt>p{bRT^y?@!7=_ z?ihdwf-cxcoD`4PCP@oQG!dNKu`2un{>akX_M}7=O+ypKNaH{Aq?QG+{E;NPX9<wo ze(b?i9c9@ZP>iSUfIXK{;hSjJU=8%}|2<w}G|=uyWkdW9=*j*3*1>zmynBmFT->*z zae+_*`|D@$&l~Pyf3~J^FB{sH<#0_EhL!$M3pgn`5;@#AM&WlfQnhgIIw?d_uGe9( z9cV)+EWv8>!Y=oCqB}mq!jzWrmyUScTB3u<hLQhRarPI(xfg)7OwD%Rb*Md?dK=xa zB;!$@iV<TIm|c-6e<RgG+);ELo6pcRbUu;lL&60vj9a*zH|%tYo#XFkx>-1BBg)%c zL{7W0V&)N`Yh)3wmn2-5cB1347j@wM%y0-_Yub+Rf<|<N_kXw?9|h-4(GMk$fvrHI zFoZh;;bS0CNd^LDz7%zVG~2|Y{~KM7Mw5)>97)+Aq%j+l5WBJJ<ZX7Fzt-c2ar$NC z6L}TyK3kHQan+%LqBglZ&}GiQ&e&zh901G<E)~DzzEAG<Hr&Ghhs#7Hhv?jMImSW{ zA_P<()|i*Q%YC12j5TtZ$7w&gckr#0e)!;NO6tT!Y>GIHdY%x)2n)k{#9A^^^$Vvq z7B6IcNF?{rCSl@zg!52N#wU75a{lgeP#6yG_JXd8+(G}_*gp;7W{8HRtp7_~`n{Qg zQ>g{@Ll45^O!tY5NBTcAy9xw`776o|Su(R^|FU3>)Q%xy(Z`2bOsB3$^Sa~>Js$93 z7$eR(TkolxgtgstG5w(Gks=Xk&eRtb_0^45<02nuC8_C8Ai8v>t@nXimnLb~H2wWQ ztuhmBm{i1WVxX;j<Yju^!QhE^2TE68%k&{T61Yf`Oik_CB}<C!Zl{a(!Ib3+BE#6j zRM|2|_1mFmMq^9^RgJtX1%7;kl{=Q{N|GZG#t1=)@gm}6qPulQI_0mU)L-N=z}Lg- zqul|BW07SY*YX9PUHIQz*$aH?x01`@cN|n@?#=-%c1dx{ao1E?Nbflk5O4o>orsSM zC~bkZg&YGed<z@r^JDcAQ{h_LAdoN5Q9huB-xqI+{x2@t;k*;ZYy~NEJN%39E|NAs znRno*@oSi9grw!1uZ9U(G8x!p$qU2=j^uC!YAN>N6}nsb8gt#)%G2!h-j%^HVQ$X) zB$gH}m{Budhl;dqubLV1hj<nCm*O$Jk0CVr*M0VHbx{acO(isJ;Jt%>*TX-7TLK-P zcmuKbh7KE!slJTUt64AAB+R2QLn)%%@aKXr<Y5tB?FS+b-ra7mr<cSH9qt`zH;K(~ z&jsUU#U9R$<l=B7R&g%rlK<Bbg2C^%Q@?PT^EQ55(!%XQzusk~K2PX{%Tt<pR_0j7 zV3%i#xg6q(3c}7*Ro_%A74U-tmBLx`s*Bo_gci9L4(QTvngYh{wXm3n=r+4~wMg`8 z!m)oeC*>V|HrW=#<&;b%|F`)RqM>C%%vvDmu_x`0R3jixP$xHFj4vW{4jxmB*S6Y$ zIw)=O<X{NsrA0TUe5B4@eH$+YLj}djjY*L#JwI;}w<(YTQw$eb)E%M~b1+R2OyJr` z%=X6%>ZoQI$e=##e^@LX(gN4=)0=HQ3vQW|QeYtlMB)JbnP%ZPLmqEg*MTTXF-%7` zXYNMTj3+<zr3HS~M+C{z9c6NDW+Wrb@L?qmPIt}VZ%9suEi`hazN=-k;sHw~+{hSx zrwdUV#22`~Y*@-cN3sK3kwRZf75;bLs-S_S6)_kR@HyS$574@`fK4$e(}eCHzNetd zOm$BRh49S8R>xCS!x2NZI<Y<^gBm37OUJvAov%(Ldd_*_zqxrq)>=I*C2;6uf=-+% zq6Ax{LyR;rjPI8RHyAGx@kaU)y~E@J`Asm~HfV)Kw-T_XJxX+w*rnw_x016698VY4 z3z6mD7Kf`UDatn_IaRsVEaLkDb76Q4s!b|q@t$}!|1{nEcsEZE`rYz*zfxp=KJ3X@ z`);h&@z6K(ELJ;g^j5T2_tI#<yB3+<;bcpogIJ9cNNvvTk0y$UZM-EeNGa2-V;eJf z$bvI7#XuQsij*gWRX`*+C-RUbM)9Vr&n(|{#b=Mqg$74}3gbK)VU|UxQ=kf(5?kyL z)P9ScPE~;PhEqB-3;;d71<?El$)U{1dy)uY6V0a^JGZ&~46Bk6EV7t<5#BAOM6PW{ z^XtGQqA^Yj9llP1UsSVtPo_8dC)*lrPJ$j^+$ltXE`0v5H4myRP}KJG6zC4>dwAMD z%#w1eq^Uf}<7W0~4@4@(!tPh1C_?OxP>@A<dIF-aIm_NEd%x!Ut-HH(`^y4e=Pabe zb6sk=#F-y<nJM2)NnG&_{`D`Ay{KY|$Lgcxp0imG$c<Sst1QC}3wb|H?1`RDWbAzs zmO-b{M9(Voo|F!eQ$z5LxQp5lwqWMxYG2s|yO?|S>9=5v%aC99hgo56b6U`1%d^iN z;Vt+V0mHE1{33&oZH6643md~qjoR77t7Ds@eu^!QUDT0y-GMGf=T>|yYHbaBefn)* z|F%6>ZxUtTrTh&o?dUTbPEsi6?b&U*=Qt;ek~h@tq~jmo30+*(g&N>U6pI+VafOi} zH)RiZ`)n63LZB+RB+CWKr*q%HX1YISM;a1wIRq>RZ9|Z3zItlUbJ3&K_-vHl8hg(C zIiWz~+boQ65m0^Md~6WdFz|vDu-%b3ib<nkNtdBf320-CE>vPfj)xr5yf3Qc6}+S~ zr(nlmE|e<f#DqTAeq^%Vs(h7_%TgufSmOxX0WA*7gtMR*^&7#-w-V^h_8k4G=|&L< z;89U%b3%8ODbLw*b%SM~WePJ-IHgB&yEsB>oUYCZgG`XqkQbS!4gDf;AXl)oH&8Uh zkJA!vfDnWkXXuP1bf}}=5PG&9X{InV&q~IjON;qlrJ3NFPR}#!JndlH?YuF=vc$vr zc|^v}vKSqdf!!T-u^QuB?+q9tqr^<$5OuntZ@N6M5qP&eXZwX{v*=OFZ2L!+Fs_nm zCJi4{+7cRf2~lnu@1pM|5xd|?Z@a%gqwIeXsWfWA$R?7~eA+J#9|~&0hb9MtnGyYj zb#~QufGo4z&wg(#<(+kYlX8&7oCTekIH3Y3oKyN+fvdF^tEK%1m<;NLlAND@@bGN4 zCYcMu`Wt`glg1?0QTROCfX)O@f2iaH-tMlgL<k-525brVghcN-t2L2)de_Y`>D->; zbNyaF-du1?oJ!pGesu7|&09m=%hMtvaYB~>-`6;N`Xcl(?eOMt4;4#L3KryR;~lT4 zA##Ffu<g0nG~L$+J?0BasYGEtGyfN3i3@ni$*VWBPXKdB0ed?=Y^2}UkE&y^_*5nD zu_}JVl%zzx%@<atL!MM!4r>>1rRT<$$`e2Iz9bLqr+{y_tLEV<E6Ba;Z;E+seO)>% zBE*v0iYRz{87h)1L(y5<S5<}yUpoSx3vgFm__S&@>K_}7K@QKY{Q>pnOiGX<<jwBJ zP;iz;bKOmpf?wI4$JcQOIV4Zkj<gaJUJR&Kpgngkf!Jw2PcbaHJ7@h$8<5n7=zRx@ z$Vuwg<TgwXL*-7-sL4BG3!`~uR(i6|3s%EZj=t2G>*xmWSx{$3?RMN|sjze6rhBD2 zwqDb})8;OIx+%P(ljAqBt!q)%aeUa_r0h7CaDWt04<aeWgH@k`)&j|*sMv{qYr~vR zMs7haVJS0dms`n0<4$jTg-ONWP%i~Qe-NJhqfr}~80zBchoJ6*P=!AlBB#)>@nm9u z6I!lhznV?A6p0aUg2E9VZMny~0!pfRuJXWl?<H-hye|pBfnW8(Bt|0<E)T(Vwn9G! zTD0e+*`S?tM+JOr%(c6^9v7mQrE-)c`Uy`PwVqPqSHdi*DCOwCB}?i4Bnf;Z0Hcc= z+pS%E=n9JB0~$vxdu<~GD>OR3Tgj$HwuZKoFtziT3n|Ly51vg4```YWpTy(AiDy#2 z2;9xvcYJYEGAKXF6kGV2Rd|F2A0Om?W`pu=|J&vP=b}|G*b&L?L&W@F+lVt)y(W_( zDChsoXIo}WZLr=JD#FD%AmhO#1bg@r?y5-kBw{jXJ;b;mv*Q^aYN(GCwP}wp{iCkZ z9?wBG|2zMlT*}(@-6Xv@Xvq@9XA4_rdK~QYxk!+-@X_Gjk$6Be;f|Mx+794Gmsnkp zVuv;?(3+`{K~f$9P_%$Oi8B^k{XK=(JOhjE?(*iJ=9N31AR1+6M-AM$UL&@n`9145 zsro)fpF{7L{-^-Z^We!7uyGe^-(3JVA>gnU_QQIc4XP7?&|d~I83%sNW?$e8EV^*p zH5%p=zOM<X!Swj*x)xUCN+nDc%c&^E&Y?wvoe>o~#%W|4Pq@9*m;x6>GSsCGa)`-~ z!uIJNMZn$Ty%XImYdpBs<qcDA47;4JfIalD>gQ4aWWIZfDg{tUBg^X4L-@<DozO-K z<%&SvJfB(H;^9G2Bk~eBd(T=W1bUf!7PASLQo@?qo%JvmnI=0A_`|raV*O4SwJsD8 zSAMc`K`7Tv80ch%h)N{{5M+E~YFS0Ilh){B%7jESG_{zem+&7*Ekb#J7VvCet>!}v zd1HI^c%_qvh&FS#biYMIlAx|{0-?G@YLYsJ8wC?7Z5<Xn_?fT+#9&>}2ND0mD5wQK zBO-)}8m|r%4d=le+&m;`u%5#e8FzWS>dcK8<dS=ILy7f~5Ibf~84)yw^4@iBP>G4X z`}aWgHt8>BhOCQo=I16)RgtV$!5@4}wSceGLRTpd$fa{8CPz&GjmopouZ?st%sj~O zqyT$_0(QUAi|t4Sm(MYm6UjK>01*$b0{LsqawH5QtK@4V(_Qu>#&<$xDAib<<RfoT zEakN+Lb9$Lt9W>{($*X77t;6hHU*NX9X^{Z{xuZgWDS~$r~mtD`>%#FQso**htB~> z;qgBb7ZCC%_ILum$xsK$tcP98Wiy`H@k6N@a~<gm_J5^_6sG}Xw%X91gT=?_L4yj4 z*#5UzPq$sRP`fm02DUbQ)%aA$D+3^7^j!xNCq%N^6a;C&dNLWI!}l+h!gQzo{!g)y zpbK*z6M&FU!h_BMIjr#j=$k7iZwEoMO_>l!0p{FP0wYD(BVf*9SI*tzx7Q+l_<NxT zAEt-9K9tfN{7uof#4M4E+uE+~|5T^WJ4+VeO%f}J1<+#}0&Cao!Z$iHpEvo3Ze|uf zV8?B90CH;y;~H7Q&OgD$E%0%~phVsWVKU4qIO6f*2Qub|5)O~+`M+GDVmCFp-k}13 zdKYYB7x5%2AK5vcnNtRC@e3YT9%>eU@#0tI1b81;9uE}`H%32a=A!jzsK7SmMDHU_ z2|x{9x`el<YePT-W2<R4{t}Tg5CkV5n{<iE9tf_4dF-mxM(D<-7dNrMG!zZ}^4jKt z9|WT#Y=-(zr7p>Zc+r`h)({AL{yyoBx6Y&b8bR}<pROYf&c%O{Z!JH3eKCmTh9Jrb z?v;+5WUJn%z9nHPkRp1CGOU2+u4yOJ$^z5EA(K#MjQ}GJemmaMNhj6Ix)S4DQm~<4 zcZt-f!(~3U@-TjBVa}$ytQef3a%-6s;5|!JaWgRbhq|Y7lF!wNHox0lZr%r)J1+TT zt-=rNhHwAJuW)ov6Er{iQA)jT0@VU*i<z!(bRaMB*q^feRr96(ziPhnG{pWt;sV>S zl#pcXZWif0QX}>Rr5)dLTEcg<=xLJ~*%^w_U#r=mI=)V6TEA$0QO9&X)jRHyswx|_ z%IC#1GxkC#*DYQIH*0+nzkEeARxq&ov1=i%cqJ(X4r0oW{R+x%eStd1l7D_3Oz60? zUie!#ZO~FIPmgUdRf%D}t+hZrB-3&w3ZcYCyyzV$ug^X1xiF>laBxpRF=BXkhg)^R z*h1}i_46HTPv1jc<8PJ;Y9?_Yy<mW>mJK-7P6|eQpJb0O1wPG(U&+A&I6;R#A%-RC z0n8Jw(8lN{K}pCkGCBMXtw?1L*@Hn*B%2}~({X~%#6X~3#vh{&N;5ZI05@}B&ZwV$ zXAX4SFtx=ginFAGpfB;`G9?SYg5<A|4qdutD9u~*i1^#Ok4>c8-6-$|s=J3rgX)}L z{_f8KZ!jHpNBqvDd08=!uG$}py065#5%_`*(Ave*CCU_;K^M&-{hzFxnxbwx@}fKE zcwlp+&fnwqpB;L!!=}9qYq_fCv(fgviJf<?8m~)cc+VnP(p#TMjQM?@0Fje8KLVT2 zf4lv)li!e~9hSny7i*FPJQD`V)G(A|_-{;O4BJg_&gajc-{AjF7(cx*52YZjqo%kH zGj%)6`TSlAYWa;F0Il<d5qIvrUot%M$~@191Qk;5Du{cS4EqYM0-1kzyVjrtkCUZ7 z(YqFMZ^gE!@TGNcb*jQ>Gbb(%C;?}ysfqs9Jd95SR6OEvl=dC|uzk<Vt=pfOoCCP( zc#N=564WBG1N^f!M@!!uVpbuO@)XEmAt;MhVj!S%hL0-h{7E2$iV3>uxU*Yrz<}b; z1ESG9MIH?OtNGKcM$nn|3{fRMH@MVx%mC_D@u7bD|07ilz+(&hf?GcDHrC@p=m$Z* zZ`1_i#gUtb14OiJ8N}pYKd_+Wq5###S!~mx7ehTfCrj6>{`Hf~sDRCbDx(K}Nr@#{ zJA<c_?0n;=HtpiK)k<bR2FY5QK}~W^xcyQ3E&)-b^kdLJxt&OP#n6v2Dl{_HUs7~X zvJ4uagoLo<FoJ4f0<!(!qe~cP$q;p*H`8o_3jB3(vg)#shhmj{vVQS${XEpM)<qbQ zXGrS_z?bjb6slT|zr1f3hj=DiD5gbBqjhVuEwHU;AKQ>t2e|H*&Si<H2XxTrYY46T z%5%V~SMt%pGq*;nl84Kdrn;?W!XVL|-t;bElYjs<q~zh>iHryOF3W%DonikZq3mN7 z_AFcIvk@(bDea^y8?#qPc=0k$?eUPf{64?x(m{Qo^k>_My(hdwuc-=MbCn-QnZ(tl zfJRGfq~(@=C$e-e-P6Sx{C^7mGspF?V`BbWe5e#2q+r?2+worDuF!W2mmyMDirZgY znJhPG-Mt0v_GI%S*9C{318Wc$!l{7ugqkfOiY7(ZT)bbZd1g64dsWSjn(b44wXbY- zF4jZDo>&fjK>*X_$2@_0FX0-jXSxIV9V)b7IPdKZ7EYc=<`+C2a6A`zJU*wLKhl%3 z_fIaKo;|!w#$_><59|L9`U<fSP4r!y9Jq{v8Y#pn)gt!rChWRZNb{L5I`O*wa8#?v z&e(teJOyaqDibb7x9+(0+dI|bDL_R<z!RqZom+fC28q}+UGcIVA%*e=k+Yqd8F?aE zO-M(P8*OYRlMu6qZ%H`}7gwN<C$%rCQHSweq{2nxMMIJnDD0KB0|z@p`!vXdJv(go z^Dk$5{vO0nb|dP5&vWDVZ|};k_k+A1<QV3nYZU8vgnatyQBBm%5I%nk(MS*xc0@w# z$Qdvcki?Sm{Es$u^gm~fll>lyboJb}w<%^F=)f4~ZE~aFsP@hpJAfOoIvJ-=G)}?g zby`-5(#g=uO#iJhg(|Kr)O0P{hOU%a^qgL`RIDfwt|L93Q9|td{a}&H<i|&gT&wt* z?mu=T16hxH%Z<@JjKOFihgHsdQ5cT(dOv`i^i01pijkfx`;$eqS7m<zHeZ2<$3hz9 zpSj_;I?3}}`(!-u!w%SF2ZlqZj*H_=r5I!}9(OUg*1Dam_-vIlj~#}<Sl8dEyWVpk zs7rJ(<XuMEM|oD0r#k-GJXEZ=bb&)8x<#%?0?mm^LQbNdOeJ1&J@{Bik3t0+*T~Ww z#4npr?n779zMn+Gy~(%jFeOIzPtB~I*1xX~^;Sm0e`S(^zsWq{M-v@QOh{hnPb)33 zM{FyBbM9;8WfXoB2q__jGSwIdz$BtMyH)vN1+Q1~0+Q)Crt*o=&s6`!fBi(w1ErpK z12@8GZjQ+!kADm+C0NMrX{vc*2dNK^!R9gw64Ikx=%jl%L4mx>c@whvHNyJmLxwB~ zQyN`DD9C4QuyVr|-HoZ;_8*(OaXMQ`s390%es)yul8am52%zPU&IpkiJM`rYf@pRC z=QaqU_x5M1hdUk$_vN-`vLInYzKyQ-%Sx8=627=*+SWHI{r{}6b`8u%d*)99uq)b= zeT^S<`j0+$olG_}jv0R<PF5RRFcjl9ecU@N7{g9h5nAc9X_;#aRt=O4G!o@s><M`y z`;pOX$ctb{WheEajX6O5Xh+0Q_41wnV-S7{c!^WW;6MfJ(%}8b?|(QFGg0o_?&N3V zDeil<rw_rI*0-zCk`s80)#8NZr|hX6blrrqjo3{WC3(xDJ6GaA2&Z8zJxzq*`g#lt zCf?|sdZ_tP8!M@)3DiaZC&cU`y`v&X_e~W_Bb$Z+OudObGl;i~gU+sq`S#2#y3e1R zlkp^w`*?RWV|l#*oC@TO3q~vUP{Xdqe`vTvYF|p*R#KfCv{C=$>3cht8H@Lmkyqex z?;(_EPurrN-h8}RU+WD-1+g~|5%6e8YQO{`0-Rnuj82c16J@u29O~}+v4IUcNQM$o z&2)AqwU<5++#Qz*UsRE{<(q@gjc{*Op-s$Teb}d5Kr7H{KrGG$7178m1ed_0j%}D> zV;jEcBJ{Tv_Vgdi_#|G?>Nl6bf)?k~3I2^%LO0!$DJHHnck?c}Q`6!6K>da7NE@8> z_O+*O*M^>ubuwsS;6{Y$^iIx**+>>12q+6F(G;5@w2Gw+xOBc*2?6xzgGF<MSDkMk zLR%+_(YITX^5dg;#v&NhU1a&6(RexMGsYzw^y{D`-22)0Q}4faXOyV>;H>;?n+hV! z&tIR?;)HsW@Q~?i+T4z|Qh71EB`nHvmut4pwk9K|35!UH{Lm5_B1_#N5<k3nh(%wX zlqT%A`?ENNlVsbu52g78D{xKX1szZs=D2qBJ+YJLMUG6gsJw_nk-XPqTPL(!6J8#w zrJyt;8EMLfQfOJR_^z8gH*NA2%rd&z9|Y-!on2oC+*zTPi2nHfei~;!U-(xsC-9BJ zzo2_Zp`F+<`-gpkY?~LUg^WnmhmA-VV6{7oP@I8<K7*e{*cjtt{;4G*@D4ZH-m-T9 z_Hao}h=DfhJE`waHn9eLwr%92?*`d;`;Zk}&SNSeUq16|^vi^-uz7iWGRI)?`?>er zVE=TzeQsV7<~Z~>?uE#@p<(~r?eBdpAHE$>h*GHQ>Mji=Z4Dw#*T`+~=l7+sgjY32 zv`a9JgmXgIK8WNQa^CptE;>n2fbLc4jcVCODdPNnM1Y9rWx&W=v9q3NIm_Li6iPet zTL6ClQ1z{Kl!@!%TKEXb@A+P28Z<V=RPomb<6jvV&Q!j|FDPvu>Z?V2=f117D}>Ps zPiAD&UUyema&(9QIR%`sT{JhG{r>1ZxM9vQHF#ouE<P+KE;amhe`4xX4r-;8=(K)d zIvN7C4LHs=+Lsjkk_N3&<o~TvKG5X4QhT*-)j)Ck{$hCxL&4>_uXZI#g_X1h=5zQR z*(8!EBF~6gpD(X4!kFs@X+HXe?5+2?sy`lcoxm`<dbV>)g#l>{2XtHnJ;KU9di%9C zCjnc5&mvbK3|Cwz)F7_<8D+)Y4nS=tr?E@CZbmGnadn-7&|LMprhJFJ-^B!GtF@@3 z9Gt_hhXh}6EZSVdLpwLr`<S~2qdmEM#ngK6`lN50J_<=j<U!vWce_oP*pC5}c2eP> z|E{ufAswQ?CEoi0Z4*YuA((fJ`QvQ^sakwa)L^vBI4di4k+K{0&DP~O5}*`+g;bO7 zdknHylWUA{VYk{CzZ^wzBtM~l3~<W+livKzMD$iDD?^YwKw@i25i?!rpld7!_>1QH zGY1=oOT+UF;EThmJJ`r#qAQCm@{C#vDh~h0&KbOMQwfMfhuFr6TZd4jsZ+*B99SMt z3b>dgE*dt(cWo3PMRTn5>%AiO{{Un12b<BLtuO}%G1k9ti)okfBTHuig-JNa$OzxJ z0MQ(xbj=G;PEMzT{YdM>ps$<=Q2H@zjwkweF7Jd`X8MWf{8u2ep>88ZI+S__ruUyF z4>f4|9pum}U=UBZzRkyUt<r(=rF)CLmO{+X&^8b7X@&^Up0eQ37gDi>!TRUMa~JY| z(Eb-)xLjU(zhDkw=Fz+XzK@By;Bh9+?`il3H=zXz6?iJFdmO~>{y<6z32%1-bZK{U zx8sN*+|4V$<`Nnugs?u7i>DewWe1lf9iutdrQ5uD0<U3vJfmSQv#N25FZ43UiO8bZ zgIL20sa-->r6mB<iVchrsGuS|kLh3IxUK^<Jp+GwLwheQ)*`_`pI5hb)QMrE5NSvb zvZWtKci7iu%j7UGEsX2A+q>^Xs&v@p)D{0{Vt4I`Rz6K@hop>^PM4cc71g>{V;Miw z_s1>=#&H}=vql=$57C(brXcw4sp!Y%<YjMJ4PPYnO`usg?Xze{`Q`n^Cmx<(20>(u zGtGnwtp5l|P%2=`NID`RM0)%oC$X0vWQIx_cdKTil%P}27hlLOiyYxH!HH%?a45>6 zAR}k1&7=6_mxP>+c$c@&_LK^DNaXo*k3R2*UJH5z9$RT_t^mh|Mw=0KZYL2NDxPjf z30vh~O|1FXIJ^6UF=2giII+`BP#P#OMt_FAgx;fL3^);-&Q){5V^B#FNsI=YcyneC z5M5dKCY?H_OgXY|OgWydZTKVw^@$3cRmQJ2?fewdj}mBp<gR9>34B9bo?cTiDnF&i zQC8N>PerO5Lt;rqT9PnP+@4NL^gEETm^0+@<It5WKd;0A7mG9{nt1^S)h{vgqE`T5 z>GV;TR9>*)iviu{oMVl~f*o6P$(x6qVy~{|y5Z>v(iyDUTUsxM2Gy*ywHs{5(<t&X zx^jBLIAxXdL_E$xqF*L-Q$qYiPUP2+5fyIPX|w6_Ln-@9>!SlU)|Zwef*{}U9JVA6 z%_@^&OBXZVEZaH_;IuycC;NG`@DEH?WAuA5_?HPD8bzAv@ANO_naoEAemf+7fl|GA zN6q68E`xp|d|ORLyfuT3WL%Go0+D{-_X)mn2#8@a2shZn8)V8{fQY)1@{Dk~k(Z~i zCPOdIY627c#`WdQvfmEj8aFg;L^H4$u}5ry(eJqm&_5@{S^a5O^!2g{F`d=pUu5&@ zHR4-~?&Zs{#3}uhq-8J3&#u9(n-gLmpIzPhL;8<Np~;8$o<<?a)j5t?*1qVQ!!S1( z1j{DJEtwJdY49lH->o95x4AYG!aP+;FxY<AzKO088y)1QR&%xL3;*f&;o&S>ivQNI z+PLYC!s58v-IHIv?>oK5RFP#ffJi98zEi@JNTj?x>`j^2S|%8!H=L^ua%E6*V?Rkb zGuybbhj><POx>0VwOavrYY+QAK6reukJN3zoa$BF%+Fg0L*1~!DbLy4EbK(L0n!vP zw-mE5^P1`I@afN8vuWa&kWDZ33m2@_uG`-b89!{jY{h|$Dx~Ex$Kc5IB+Vuc*<SXK zNV-Q(Hl^FKq%)}@-5|}m3>-}t;<&(E=}crX_OBzS`!BS^79kcP&o;1F<bprWAn(lL zxEL+%xwKj@^{yMtT>0JHR5%&;&D6FA43rO07%ZU=W3~~I;H4zUC(3+vbzYE@f-Ltn zsuiU)fed``su+WYd`-5F#cnCfHh^RSo^NV&Lb4sHsD#dUN*<&JD^B2aX$IJluaS(U zYPi4&1vF<J91+d!Gn59w8DHjnnuyV-h{Tjo+anRlMQ=v;U*kEm9n5?WJf@uN5aS<l z7YvLW@OW`c2i|q+-x}PithjGrln7b$g=md_cciMfCGh;LJC~Hyen51+-xkkFZGVHt zV-aeKH>s~&fBB|tE5`6A4#y=8fnR4B>}3E(V!_Vlj7;INl6=z18$|<B6OZQ83^O0( z2+d^*4KI-pvseot%?1;G@FJCwz(n97jO|(ft%UvjyWLnweYT{gUz4ORfr&CPj}~Y9 zrP`?Wz$~IKu31KycP3}<j@S@MP&n+><EX>r7i}#C0>)2NFZZ7onaC9gMw?3SVFwp8 z3!bU=RVJ;<-_*4^Q@sSl7ujsNCXO{HoW9ZN0!s=33Cejq-x3g6LOGJC?Oem&7ru~6 ztWvwzsnX;38s{#}E=3dBjYi4|3DEGad&@T|$uCQqA>+iRz=`w==`2zW#Fo51-0kAV zIj$a=3C#O&hPxYbI$pVFk0{`3Id9Sy+mmi<cZ%;5RbaH@&*j^BjkB&((KWR{;Xr6= zWe(j<W#@IsSr5AUa$Zf?kDr#&;t*2!{)}QRq-dqanc;7w?pJ*R@Byr`-aGE&De97% zj;|b&zaUWK6}-bmG`{(aBBSIXx*@!>{bkzQY|LQtclX)$@!pRLJwYo60p1!M7H^fZ z?1<{`ZEoqoA1R^Op$Wx~SgxMf_s;Ym3GtcJv}su=sKF+g0Xk^OA}f$8K{AZQgTn>O zrhaL*{*UKG2E(H1hL}nD=DxT$OyU}J%>6zhps<LeHFog8U^rw_J>(U-^77E@uoh8} zGE^w`hxc2pW|v-sJWNrF>sz2RsxaXh_=Jkk=K(fOwAPHeR67Nc{!2(Qm&5OV$Q9+& z(pJbpi9A3<@nvQ`OjI5+TMmVk<maEh=p}V0A-t`p%Wi2cXeD(@^3PJ)?{5Q`dl<Ae zPi{d0u*sb%8Yqz$R8&79myAC%1*WNyChZeG6Nz7ni%SK%+s~CciX<XqQVNoP#xc4Z z{&~3aDo?2LtAJsnmxr(CH?wc<C*xmt(YH&9dXmfID40{RovzDR=DWO2M_4PSr@8r9 zY$k`q``sv(4?m*S8?N<!pE+ZH7$6e%B6I;_lt755aV$$`i`+VMn$CX}yUQ_pd{$h4 zF@d+2a!U{uvBI?W&<YdWm}Iy-w5c(ul5t-x29Ec>eHT?qAyLwP5O|%`JFwE$iHF=H zw7PwJd%oxSci9(N8=C$IcOhdBwvVbpH`0>H%Ah57=(He;IFcGVA@w~Gu5Kng@9ou+ z)}uyB;a_mcYJoY|uyUE%3C=9Cxgm4gl%5>)x+X-)F)_THDkuGA4z1R{)gfysnq||C z<%c4+MTM<4Iyl60z3q7NOim<AIf%RWZHE2TQP_~hwWaU47Hn_$sZHPCPPVq*dj8=6 z3#ND(1l+e1fITN5covM=%bWoybvaWx)->K^g_#eN@RVP|dkg1-%6biOhITW45?uZA zx}^`x#sxBb>{VtY_(5tXsZm>hxarj+GsCp_BqP%7wGg11C*HMTR~bw`JX-nd(=p5Q zBByINv8o%t8%mq*azB~Orr9ulP^5dRA(C&f-4G)X*Jfk8v@0Pf-_&F>7ibKofVx$Q z0O9bfj~v53c}{-<A?a<f>P>C5y2Zxpv=ZnRnS8DB{+_np^Hw1GE*lvD{ikb3h;*ls z{g(JH8PN4uCF@~(kdt(cX?}W>Qy^{%5^I{iKgo|$lHtkSnKw{^i287v3kw9+Dbwi} zViO#WeVIqrI<+G|#M>7|DYNPdU)e!t7bDGJjWytR4hxE}4~}QDWJJ_z;lh<+9)nwG z>@W1RHxS}{0b#$|`($E5-<^5fCkx~YI~Cxzg)?1jExW$sYdw9`rt|y2=z*%RLJgbj zn_@_}@=oXYZOWC@AeDzunmF^~|Dv5Fo(v->M$dehl&77J;oy&{^Q2+nxrs+FcBAqQ zGDLLjl(<W&D)vRQy)QIWnf{^^%M6RUxac~FS`?NS8tK?3m^5Q2>)T`Rd=<&dl>M3K zbdS$?-%3}qB$w(RqcxQQ2H8DupF2Jaey3>v=7^eArxcTe-4-=R*0jYsQ3A8}zPpBU zWV!Z^=pn)nKcnqj>X5Ln#pTyQPNv~h%+G2A<(c8YVtFqQG27awb~+!dk?AaWCP!Pn zU%KC1^=y|6n_0*-my^#*6+j-foN-e?n%FN*T^>8gVWnI5fUb#;Xxdou8AcQje%_43 zfsHluBIH{P1R#tr8J(B{bLYm~BYQe+z2reZxihNvEz;YCvi2aFw{I+c+$7TeZUc*u zUcKPd2qEkpbL9?jH%g>NJU#lzT(UWSAm;9_Z46srr+BtA19(R;o38S49FAzsamwMP zr%GH`Vyr#tRRv#bL$W(|gj|5fR-07aj(v*i@l)P#fa#)#SV>v>vu|CB4)il>Wsp42 zXs=r7UAUs{21Pe^@N!37;(WWqS=sN8Z!`b%0&ps6FXGrEqHpB<nHjXs&Sn<9K|*@Q z)ZhnWzkXJxjD+8*anRJ~xX3OTD;&ypy#A)4t@+doL4u2DPV4v#0kya;Ej-dv=JOA` zC@xo$U+&1KoWF&Ha9(zH-@V8-0zYNgoL}D#;5kfweC7MF>u54hzTkqCmcFsP3w>Bh zj2;`4#L{yxYqN$lgMZV;jYX=um71i{z}9G01L<|uo*uCZGVo88-baHx=CuA4L<|B@ zf;;-FC~&v!WYli*#u~#ERCBz7E5AZMOi&Oe5Sf44UbH+Dod%XPDktN17i*+N|9fS! z_TOV+{5JFD-~W8B<lE-q4{LE7;}^~HLJ^ePvEF^tJcba%q+d7&mu9|x9CGOl*%tiJ zCte&1f8k$QKCO{W>_+6c08L~<C3(y(db-|ht-`Dt7Rz4vz#$EjxS33Tzqy&_&fugW z6ckL<C%CxSrpjYVo~DUBf8%(A@m$!OAVW(3rTIcxhcjupGm5;|AuVn6Kr>5mK~Tpu z;qrITjG{H_arV;GJGHN4+f}Pjcwe+<`;!)EO(e95Q7$w>#?81tKl22J@$te6M~PNn z5b=k10WNc8Wv8ACGFn<kR9g4C+}Ul%+xNG)oykzMeQe0?vOB;duC--TWva+Q6xkg2 zU89V}>SV_*g#@r3hu|ox<ld$tn(3R6^Q0do^u(<XKY=|dEx8tW0D|JGy<PDb_>|>( zV7+qrlxjBhKeY4iHm?cIFb5*J5}vbPiUh;(g|SUvgAJk?RdqKqB;tdGLbA7U1-^D= zx(qvVdyu82ECx7*448%^r6-0cVH-Vx>R;_vSOqo@$oXG&o#sTp1a{>s#aII?zFtq> zJE$C-A2407iGLh3%FkTeH-m3-Nn^A@YT|0!Hk(%RC8VIS*k<ugJQ52e-brIS+NZ_h zs=p*GPj6z0-UG8br(QRjBoBtDYA;tbZJ`Rjhu}@VdLXd+9(U4s8(SSqRLfvUKi|z_ zhJ5W5aYHFy#2=k!^+42LFg4BSj0s$4C(}$aP;3uZUM?M)LS6&J3m%4$0tq;N4-x22 z23YG9@t|P^AFX?bbD~)mcSM9-3bu6ws43wua5fn$ii$H@Kz}{EEnMoD{-NJ9WTDl} z$y#Ue{<DY`MX8HH+}8jgBlJAoXt7B8Gc*ozdY$tkJ0Va!>K7#Ked$6Rcc;>)Dn|77 zx!51yD{?x;h!+Y8YwQjn0>r1s8ae-B+LX~lL>}R?3X*%OOga3EA@T$uu>(f>buM@y zqIbL;i(9(HetG4)zB4XeE;oYL3)_hZ4bBV~D86&CHHeKWj&zoC4TlX}IQe0LL-!xT zr-d@mTfp%A>=!x2BTaG!{DnUav)?bG@T97jv_a2USF<k*7#8M>hF|u5fppSu3Wh@t zoN|SBuUy%wznO0C7N;ei^-zc<%i_WltG=JPbqM#jH@PtSnM4(X7<LFBYL-p~Q}^?5 zqY$q1c&fBy%ih-4>wCS`P0Z=+yB`vH9t#kF>g06M-H$}PhJVVWheebS(?qj<<`<N( z9WO58%+$2Ui_qzhzcV93tJnFUV>B^*CFO&mR;6|~MQl4e%=*c>Swnb-gBsXcM_U|S z`=4?MpNJ)~+AE{hh)xKU?yGlA>bMzypnOfFMOU7In>3xoz{#ESf4uL^Ic$q$#c4zb z+zI~Jqt(gmjK?oy-$|Ni@N_;JKKqoiH3)Zhw=Z!N<z(6_y&8e&J?<i-+M8)SNU7Te zuJVFNd@9n)%-?1>F>stGH;*$mfiqg_a^;mt1wGq@3>3Q87#wpA>-!bwrP<T?PT~7M zXA^tW|1CU6`FUi2c9CAzVir#AE%v`>#lWlw5a<jUOeBKd_eTx9@lJkJmu(!LAa-Lj zj`G?a(S@Jvl<km<aUD45x=0UcVEfXHgZ|@FPGxJJSj)QV(t@E+%8>);bZ;7J8`$8$ z9A}N)6x^n*SA?b*_5Abgx6n>~UUduCj;c238uJ+_1(Z_y5Pjg3!tVPX5NO8rh!KQQ z8T~oaHuY|>;A?FZ%f`llZVNtEyjyI9m&A-ru=8}T;I-Qd`^NOqQLPsVv@B{6FqoQV z;{LSsDOXcn0Ns<}7c28{X9UZ^!YjDC1jk=Jyj)nnP>ld2GkA$=#k=JltKbbWUl~L) zTY11~8g9VK=={A>{P^7m&WN<kUFl1ZUU1(H84}}DXma46=gXYCq6~1$*XvQ)#^gK? zB?&@`b1mI8p^ZMdhw(KI{^rMMw!p~b*l+FL#}ZO+^`Of=@Cq>&17$9=M6g)-`R$#1 z<N2++0EnpMKV#Etch((@542k@j*>{;^5yk$Xm{RLD&BtL`DW4~^-nJa3))Me`C+sj z=|@U|GEDl~652hGQxfA%x2p0-T|8io?z>Z0Ff6y&>KEY8$G6|%)VC#3wH~ENKHjd; ze007@V0hJi|MRxtu=1o$FzrStPl#x^>&**@ODBI<@ugD0TIuxk1R&cZ9Ln^SBAQHI z=Uu;uMU>50<=B_4g|fgXbWAR>H6R$B-HL0W_0kBhi?a<<J#qr+Y(L8-mNH~HHR^>X zDtYBhTaGgtu_dM!ec!zO)kmR;53d7i)S}8w$ZxoEJK*MQO~rMW=d`FIxQ&43F;)Xh zNsPiOF^MsKe&bK;K?IkRsR_pDYw<S`a%F<UuZaBH)cdrFl%NC%R^#v%7?->Uw-H?| zBKLGqMnZhxU{VQUe*As+ef;x;vYdF-JB;GPflLcwa#hXZPr(PI=WH0;ozWd;(@vnC zs5>f(q>q{Jtud?DUBpoqngh@okQSO<MpG1<BnwzMCy}6EPCZP-aOR}UXz`|PHbZ75 z%?`{R$8tYqPtvkKk5R0UnHApo9Xzj%ji>L=(vw%$aW5`abGamEH_hT_X0tgpn7%n& z^W(!714DXl#xBXtBWx;SyYtJ!5514>TF><#BSOK5Q~{FSQ*ROamq>a@wQr?p&ZB=@ zFILWpEUYz8v;Jm`JJho%3Bj|CqNXR&x39%pvZ&JU$hH-U|H>1bkO9YY)g3W#VMT-& zv_t<)@bp>b^GSE!_FH$ur|65AwHW~~dW90HQ?0^h_|E#9pJel7jOwGMKb<i-vkgs1 zRwON<$82kBq%ImC@3Q2Ykey_84#^OH&Yw3Sx0u0e>rV1<ixDg+tOuoBOJi^WZ7^zn zzSNG?)0saKD9u8VdxmdxhS+m4U$Exs@&Md(hAC+*U^WUyL&wG?<*QW06hzAvICM9+ zQE{&GeI9@B8<ShCGoJ3dA$FD=sT%dpBT-<k_egRqo&njTuENy>YjF9MP(b$~*YJeZ zfO*Xbao%Sy61~N0!onZNm58{lSzJ-u{0`7Q0WlPcnwLm|D_4nBUC_4iB)V5eH-$u# z)MBpn%7h>_v!6VhW>EE<cPz>;3Lh4I65HQcwXZU-OBHYw>z(9(ggc7-Ia-{etA@nK z@SzVvi|sls_}Q__Sko_AMtfpG779WYG%gvvzEVo+XvdbYn*Rqxq&H%rdeExLIM5EZ z^4<N_6i#e9dF3&PBGJwDhHnV}`dkPJn18&96^>A4XAuS?Qf>uD6aTeVq^C!f7hoF@ z(Q|Lr^l$Z4j<+}!THCBo^{qHLV#>|*^MmoL#hZiKP?+yf96Bc`B-}xC9Lx<KiShQr znP{62(=!*(!J-;H7eqSB;Nt9!*E6SII|wK8c)r~jQs^UYm0SulmF-GhoYwE(Fus_% z1PT%APOj{<b7q9xk+lJt4P(9?{h}~CvMRGO=SMsH+Xpj8XEl6CC5`iW?hd)UE%JKB z<-dx|ex2ay`0Z~V*d=K#mW;gT88EllWIPk0L%rxhQ$jxr(^P--6i_tZs`jyIIlBk} zK;8sBb`{+@;qT+u{UW{Fs*`j!w%qLRN@q*lh<`C1^6fLsu!{-@p5M(bKyj#_qJN|Y zibErKe(S}^La*&|f~JIG9&Epx)wS-<V%vtMd&TYXR^BMb+(_<9Hob-2q!v*YJUEP7 z?BCFWDkC9pyNA1%huBXt@t$FdaPK(FL*qEPx)Vlh<IdVnm$`rMU9!P_cf`?NVm<Aw zE8Y^?Oc9N;JeUl@6X2^kWl<DjZMCiYg^yKfCx16jd(o+r3EVgJyjjX6eMGDDqMO1* zey!w%J_D0<X#G0mmHF(CdpRrt@S6<q<uD^0#^>pUgwde?ii#Epe8e$>p^5StYEwv& z5JKN|dPq%8Nj5j=pEB(a*pr$xP8PyI7s~|n*L&Q&4GQz)LLOa*+O#FD^y#K-IiXV> z&yha*at&wlyb4S#E(7AmIrs*`zi1vO{t9+5oCQo)Jet7UPL&c%CyY}nqPROi6HA+4 zD+2JC+i5Gq3En(iQ7sN$mtIJ?TY~oq_ZH>^fj_@v86JY0Q<d0H%^mCz;k|rYyXI7K zrs6-r%p(t_Sfav#Y!fyynF~EIn&f{Ul3owp5QvG?wf4eoW%c}ts5bwa5ZbaSOLXK| z_j7dqJFPYM604y~D|uP=HDfnG8F>u<Ec5GNgf;OWyZJs95pYbssf^|e*R;30mH@NP z#`CAN)n*&4kb=Zb&m&LOBU6Xk?KB~hY`enWxqO97DwsQl*Uq4XfSwR8ibcX|Iff-y zEu|(&d-PeB#wNapc)5BmhT@BbceooPtlb&TqQjykh8JN>@s53ZUiV`65sk>IzccrJ zz!oQd7o^Jri$xU#AU|>Bfys~l#6EFZU73~CG<~mK@wn9;uda2-ZqT+&F}BZM$%~!> zWKs`C)igd}L<TdyeT$s0Qa6mNXRWI9p0I=0G(-{>`P|mTwC4W@YW%P*OEN+mhYcOh zq*xOaXIw7MYxX=l)B-xtD6ZN6AIjb`s>=3j_a-D4-3@|-QVRhAX%tWz5vfIYm(&8J zyG3BpAR*n|9kS@|?(Puuz3{&O&)Co2&wk(W4!`ixagKA%^O(o+oAde;godWAV<^I3 zBYbSam$Y{-*)U4cOz@7cN{S?|3HmZm06(qR-a~?BBc)5nR$*ufQ^P&F`vtoqWxxv- zYMo_GUqFn6p@z!gs7*S<GAW5@MfmLs=ea1mr2#h#oS+#F;eYI(mg!9&-Cluh!<01n z>$;rwY+ETZ2FmO?0ZC)PwG6jf+&y&qPX1}1^<c2ICRN3#s-U_q##hjA8UJg`_sD93 z=-^lssEH5pqgAy=Vz6+uE;Z<Lc7sZ-IEzyES%E%f?O-+FK*%6sS<nNoyyxyL?1%2x z6d<)2@dAOdH#M@eH_nES>nFacZ*n*+8ANjH(DQ^}LrNU3(aE1rod^_}4{84?PUTq; zB_V?vE|>S-Tn9PMt}N41H9w2P%})-W=*z))Qg$0B!9r=lo<XCo0&*25&4Y*2i(61e zM-;w2?uiUdYnY<&2Z~A6!QB@-JRwbcbB13eeCB~4?Z)QCJ#4}?c2c@fw$>0uMe7ep zm{!-G$?@`W%t?$9nCNDf6!12XS0jAnSIUtnT&GZl4MIWQ6NG1Up!=f9xuw+E`n|w> z;eIKf@$p89_DCW?w9j;z_Su~aY_WnL))DyPF^h8@?v%HmmN2}gYk^jzc}4`p-@9uj zQZ)RK7_VS{Ja6|Gp+^(!m&7*M484>qJX*;08Q*Ihx5Pq|DL%1$Gf0x-1*yHa-eyBA z6nV?#huG6Xg^UZaY1dAe%)$NBy6pSV;Z#BrtN9h>yM}jpk0mU)mq&csKK3{2X-|{# zzARgyFBKJSyWb(bL*&cjo%cdBQoHj8X0b+0fD-@@MIn0wmm`w9b;Y=j1PSiW8i<zh zt&)84EyJk2;BJ|C@Mg>){}dxr(I%&XV7T0RDP8L&`+13)%+?m$OACj@GHu7$OY-ME z{$Pyld5s^2aEUiHWmyDh4@T~!W+hf!&*OJs=|piIpgesUo}_uTUoWE>z@;|s*B-Z3 zvKn=2b74^?;4I*Og26%Pi5P1F<6UPlh{AQ~f)qkZ3@`nQ8>Y!E5Z}>8KYZF#B>*K& z#Q9rO?uc{zvJ5*990~JuTGYNKs+g<(xr?6rwn-}9Q}RVn&Zoi5#*U#oI;oxuJZ_IQ zLwKqyZKnEwFnTw%IyudnVSQ|vLw;+h`O^jNp{*&d5<Z(#29gAa6L+%GUPEH#x9^PM zObHJktd293_U0HWj(OT%@l5wsJ5G5Yy}}MGb?I$uL|(72Z;#Ust%_j-uanrxO13W8 z)koBSyddmq9&N;L1k*(0*14SO{X&mDU6TH?E+VvIFwfYp2zc&!H3+(SqFv2vh6~&` z5`%1fRBXL3nqpsO;k5Q}nVw?bpVBn?_&pz2DAHx@UkpRRi?0$yU5enM!3iXt6U@30 z%la)bIWZQ3l)%J>hi*Eri45{;Mi^98WQXMqh6`ZTngca`uxv@7vVSaFwA9L&5C7K{ zNxX@PMOFZE;}4HWC={5^^$CK>N_yE_%(|(k6<OEU?R4DITM#SopL4PX=Tu7(fA@7Y z&nsZ{`TWLm<3mWS_+ZF)QUTqa)${=RCEL+zhUPfl*Ws-yeXmj7YH2I*Ke0||=N^5L zWEX$BZ!#(d*fteO$oha4?9*zfekb6(n%`Z<JG6a6aXr0%<L)CsXxzQzIXK&)=O!5r zmU{ILxbTxT9Wy!e0>aIg3dlt^Bv)Iy^FVKP#@q5jH~Qg}_!WHUXZuHH5WE3pr+P;3 zo)R@RoVUeCG*Iotb#jxZSmfN-G;$LZOx)!E<l#q|FL84ZTrmj{-oQU^bv>HvC%J}# ze(q1kD^o?G;H+zY=h-%)NNM!c8yc=|m$I=%MLV&gA2Vw+qOxCG`9KGeKIcc3D(;=n zYH1w&g?A|Hd3;zXP&p@ft4Wk_i}F$G(m)?gq+;l*vHN;dzq=SpODbwxVs`*GJj1L_ z4bNJ*0G{!y;A<S*MVZg#y%|*K>5}~23?3B5n6>FA-fq5By*Y$x6xbOUT}S#?#Crvr zS;@*Eu>fS%7geuIlmljqY7yQE56~FxBJW3XAXy&|9YCBqC(?|v+IDxfGxfZYQc?!Q zxe`3LXlvcrob{zrZPToc_|hWBDvLWYMxA%Jy^jiQEO5+i%y9v=h%I9=6n`hf#~V&% z>pgCTz2Q5Tx+L(nHlO&ba}JD2Ww1l_1EoMv=OUNg(WIkm_FIY9-`K$8fMQ%{-r#Pj zto+DRscLt-GZQfImiv-m9c5QQBnX4o^W;f)jqKO-$0WK2LG9=s{W>trmfgsfHpzw6 ztp~D|_67&XJ6(U*w1*h*1^WlJ_;Z68)^)OrjeN+<+Vsi<QHR{Z(LjrZI!^f$Q4hRo zj80(v`Lw@cWe^Z6#{XTcSafzL^B>J0RW45}ep<{X?zy@$?wIG2>uOvxh|q1^{7C!s zBCFgC`Qw~0tW4P`ErWXkDO!Z?1FIm*6Y*-PV^rer)o23ml4<bFo0&Jn<I|i?Y&|<u z1aKV!B+r;x!X@49zaRaz(Qf9t`PXLxSe?cM?`Hz?fTK;fsY^LnQZ%^FJYO^w?R?Cd zgd@O*vphj&_)CVXcGZEF-lH47lWnLk1%LGA74tTI$jhupeGPMT!8#D?p}jx$awf<V zIJS=np8(GG4ao|lxNVP$|8wxv&FeD?$K=@ai#j@~+8subV<8FIBkt$IZ@GjexU5c0 z`Zvgb*ml`|!d0<lvPI0b+Yq~<b`9ZN`P~K%6={N(u7aqTd6qrv6Bj#mbz9oxf0Mo^ zxbi{SD!E@(jSP_XTMbw}vu$+0ojBU1f42vX1;v$sAQ4YcBHNHD)UWnu17!A~dyqo# zyHrby+UE!#g6u)n6Z()00@Qpza^6gYcg6Dq*8!S)Ld1q^HU>)fylWA=an)U2o2LzP zG~IYFzu@7DZt#itjf75d`H$&qlYX;$#$xABHIi3B+p#~2o>kH)SZ>kn7V*nI$Trm2 zi+c9^Nu{&DR^6$Yc*XLEw6fg>MmcOZ-j`_Yw0bxly>-k@VeUx6y<Fp!@0nq4z8Wko z(59o8AL{Thof&is8smOgEKGqbmiuNVA0(d0EV9igqt{RPSkV#U<aY`P%jhS}Sr#qf zJLDHWcM7uu{`V2TkeI7|V>%l?88J2{y}7Eia;w{LAQ$93rJG+GT>j+y6^9W7Z$cqc zlRNGa-gwn=?$Oyz?Py2UI3g&=$+eEg*<8J`hJma9Pig^>0bj&LLfsM6YS&-5{D{Y? zQ$02qsyBR<E`Q$%=?-UY3AtHoF}j^iH+{c%`HZcsId)*Cn+(WhXmQU^jaAoCh|fn; z4K(#&8B!ebbeKWyASd}^lnG=@3&fIbq_{-oXYU@BdECz8jPj_;w5A_8Lx>cxLep0w z9_F%?<3o*wJos4-->jOdgz&Zmh4|v0)PK0Z-M4<v`9v%UQ!FXts}hAK(Ernk5ETRZ z1uyiY><{ID8K9`Zp~Z%gXTzbw7xMFsf`XPC)QqNdB#EzJex6aBFT;iiev{yT!2d(j zT~7g-JVHzX!KLgehXUf*<(BMR@&k2C*0#;?-yWnIQ<R9`MMlze4JmN{=*>ZqHADu= z%uZ6Jc=S$|B{st$wp~)O4@60MUciyATOOO0NQUd5TwBU@^XjVCicH(y(GOQ9Z!FWu zhpz{zNu8fRH(?$1%?mtRIL0%$6MVfKWEdeWE6EuVAKD{UkDIPw2t1*+S{Z0Rs<m%D zf7T<^o?y5JC;mLmGDM5fIn%50cYkwG5t@_kCFY!dd@}ZX{U_50S%bJn8V~z0>x5^2 z1}ob1z}r0?Lx$l#?Txobs*z=vsWo50Q6{rfzE84rGPVk`ahQneGpn&@dQei~;SHky zTEThunf_waujm|_7d%oue|ao+A3O}ky*Wbse6xaB6g;hoQ9O}$1-$=S!3-OICqkcg z+=In`UBebCLVTKziZ#XovZmvc=Mh#lLN;!&rim<ucOfs7FE1@P<Z#33Snl|_TXZ)| z>TYpqHVriT79}k9kb}YBS0L=RV<9NOD~&;TKEaO3<JNUB$JEd{^t7ILiQ>V;rxg|> zKLpA@1UoCl99l5QxxX5Gs`+G2>;GcNu<m41f*RG7SLza7L+KBhKuz`}GyVyFt3(%H z79>)r3?p~3L$q&BvP^e)XaW=PEj?CmzG{7YtG)go_k~FhQD++~Q|}$|dMKx%q#TFg zaH$mF0qdi8Q>fK<hP_s)JWabr8bT4C3C`6cNMRc(Mp;mwaSJ~^a$$=SE<*qP9Fl&w z$AY(^+&E*ytfUf#io(kaG)w&RQxxhq`zU55P>c4r)+TV^W6*$xw`_n4QrlO01%9(u z!?%>f#ikWYxm*nDKw~(MZ|Ud^!hOn7{ZkInZGNlv{54uSa|aPtHinigL5NPVa!xrf zlrh@IEQ0NY+oh3`Fh1dIB5a9YRCb`Ko8A();&Z{Kxr%;7=#Ra3eF!ycbT=Dg9#`ZB zVWRCTH)gm7VFIg1&pVio42_45@zm~xsW5X29Yc#D*5wFffP35+hDjk6$=7K<WP;Ov zW%2mNem_jH^<UCqP8!TCW;_sVt)T?To{T*;mvgFUOSVDOA>%wTKcVcR;I2LOQ(Zc! z)#5aNjUmV-KmP08;uU^;sEK-j>^PAC+>qcw4%Uy<k7Nki$w^Pl$#t6R;ewcIu_kvO z9DzKv-`vc4c9ER7^uLGaKLa%-l91JvpRllYgS9Sn;|CNy4&QS$DaKV+Yjou16j!(T zO69mlK$66iI#vQ2a;K2?e0Zx7rX78L!dVEiAL9*~3!8(yoqWsUb~3Yw*!Osy?oji^ zNjNbSX(?&*mMcOkxu-?z1qIhI<i#DmK}7lr;g*Xli*?f$*2&$6#d&Cpge5~X6P~|~ z)sNA^Jd}(ML}d>}CmP<?X6BLSV6|O~n%XH1_phdderyk?w2@oei8U@uLvq8;<O3q( zDjp7e{`87Zf6CQv8EqB@v$ousVG}0Q%F;ex)tu7E$kt7Qyz4;03@YS>aEEW<)tM+{ zvJtaIV1u1^|KEyDIsWVweX?{WkzWz*a*X6EARXmqknZ2s1tg0!(_K)dcVxJpwm~i? zbI26?LcE!|xKr%|AvsZ}o*rWMDauX}iZc)l5e+&GJtUHqMx<?0yES&^h100~IRnMI zEH#+h5~J|E%LxUywib{p+18+-+OP@zY5#L(I<S*RA*klG=*7kdjYjD)1;sNRtX9h_ zfz`nJbv+C+kNpwBV0eS>e_|#f%K(T=O4%@;=(S}Rg`;wW3todAX6*8vQY8J<&3Wv= ztgNd!*^&Jp)%g0N%rw%HC4@Pv%L(3Q98^rEBK%KQd;gRbtIC`wdbyU?aYIF`sg2-K zf1y5u`=N^|J~)nW-+5U(LCc5J7Vf0ajlpiXrw<>gi2j79bVKeEXYHkAMfZUy*W8n5 z;Ydn>AvuNg!#p5x=;tS;U{_X2Z>rG$<oI`fuhniy9Urf?knW6vbKRthHZ=;>e%=@f zc+v7%NMl957J<3mGw8hyUwP8_@Cglfsur!m4lHv`JJ;sTUT$Tuz*crj0Bn4G`GWB2 zC8q|RFG~E0(~hved}{C5@G)(Bm_Q2=`_;;8uK*=(g_?CtmkWy03nLsU|8$m+1yd6B zM6E_}tMH6a`Yzv!-kX~@HizOQunzZ-;a8Hl4mna|D;C9RJPM_>?G(WlIZ)Dz%REOx zO$gW!#}JnS)(u2^&~ffFyx8NTX7yeRg?$cf3bbtLtu?6i&GR_IQw2`i&*^I9AMBCS z409DI5}Z*-CVa;Mk_L6mznC#3^uJe>X8g;pqD<jFgJKM~uZ_Qm<0K2x(h-qvjdv;u zA*(k10V*dA$9caD2B&!4dq;{bgV|fQ48oGP`8EPr_77h1CU*h=O%lrC-nZou@YocP zY9|XknJ<h0nxWtt#}<63dn#G7;R*EU-s6>!9gd~1`PZs+wlYq(Hlb8jtt|D|I6?x5 zQMiQ+F`}kp=3Py>5S0CwG%0e47vn>rDsOg*Y|VeI^~$8mk+{BLYuk7KmS)Y9utLBz z=YXVhAkMX|Ga?ATu&OP)I2ZO;wtJK{4+e;kr0uPs&cn(@?eNVg%YVy={Aes>B=3T1 z#Db)b$0vgbJtx!pAFUGeX&B`Nch<Y;In?ZWipydGQaCy;25K5dDVIagOVzpgo2FS` zZJwPbkx<0DAI$OEN!gZBYTBsSLq4l3b?O)8Wi&H&p<|$JdGRIy-$juyH&eCz%x!^~ zXO|JDGa8)l{99;uN2;{==>zw?7DD#WKHQLStdSdtRemc-S1}7PNBbGHc%Sc21grz* zsWfhb8;*gmIxku~0F+YN7`)upvnxAr;+l?n1>HMmqWVkoGIsv|sU_=!hpQU=IjFW# zQI9<f5NXC0Ps7YA(iSC(PNPa+Eo2K_iv?RnO3K0Y6~=M#{caEqBI@O=XwQ<RUda+H zn<0v@T_9)0Jja*oN5YD|L*VMBHN-(Q4A*XPXoz7TNn=kr7zha9-(KVTgl?Qi-rEgS z^aDzeo?N(6=pnaubBr40P-_K+a39h}<zO0`+uB1Jd0$V!5RAMV??Wx}*o5!c4Vig+ zpE$U==eoRtkQNhyeJmu@E0;x72~I(ZWK2*vQt|(&)QfF2s-81nCyTuCI)8AAg{gPn z8WkCZ5PBjnn3_rAeStXIW%V2pW+nVov52L(cr1~ZDZ6$`?QS%2=`JwwoQ}3LA%hh_ zM3B57hZTZ}V`0v`*5%lOqLNmp3Bl~YF}=dMX%;WyoagKc1U^;(e3-e>_(OT;jDRq8 z_&;3|S1RoS5S|L`t)5`{B`LgfQAuSh(`6ScMQ>(+lY2b$zd-G^MAs$T#ECQ~T=M0A z8brg`LvbE84?*v8bq}3QeI}@(r>o^1rcUEqdjmi73AgXQAam5Xn=wYd7J&xW?~ERj zQr=k9B--O=1Hj@{GKyVD8jKdJa=o5(_W5iZ?I`f-vnacs{IWu%;TE^hvJ~&o9eGCq zp@!#R?CT4YUkXyF=lvfVq)^8e`o6_qIzIMTq@C{Dz{~OUab;N6k?YBCd?6vuX5KTh zKbM`vLT#_W(Zlx>4up5BRjHD@diEW7|C<<5QuTYcr%^0i{#{3!xv@sdQZP)UAx*W} zzH@_K;s?MOlXVMp5jzIR=30em*SYrA$_)pW8h2k<VYg=6#1B;+#Q%r8Tl`<SyGO4U z&w4urzd33+Gt9=?OmVd;maR;YU5pc>nNe=Br|as1uGF^oI)$wcZO`LM#2{jLH7YD7 zTYa4-E&DEU^bK*W%qg4LG1xIyw+quHWo3X==gUKgs%yiUB{?+`7144VE%yqzD!doq zMrUkEyt7Cup@Fj>jC+4LH^=Mx%*8^Kexz83rfmRPBX{Eet5C4xUsEXhsbWR$@~(zD zVrgY;yJ8@Z!vYk9pe2f8v?am4;3#5Ow<crFMzHt35o{B_R`rz9hsOuOfA{%>YPA$! z7ABtMYze{K_WB%y;8WZRSeunCz~RY2wJsTH*F(s);H`#z-h_=KMpREk+x2c(7miB| z_3n`fPxit@>RH(c-hJXMbbYS+j@8FJ-<yfF%g(1`)dG7Oz^0#+B&x8;{%vQp8@8<Q zp55(ecD{2*PBF2hBmFp`n(~HCN`Q<?PD9zTMke{!9MZ*Ct8?*kLQA+0m#B*a0S$9U zfbQqTq!<SQ5&h5~vSfLV?NReL7q{rhu3HAVOTh2@8R%jh2>|cph>qJxoe;~r;V(PY z*Jq5WL8!tKR;R*U#LMpGA(NuDQh*=J8o$8|>Z)vOzdf|7qdNoPdOnn~<DqY7Tj=^o z;a23W{@==iD}`SS&1@+bce0y*X^Lh~1sp9V+KUHY!OmbJD08^CFa8t@`MMR_roJw) z&ASzTCh=Tg!%PB831Qs_D#c!s*6^`yM-Qw7){iJN7&lT1b1>No7O8!GMko7++2j~w zw-_L@CQ^?fYY%K4=`e=WbCR3QZ9PCZ?^3s%8c{D9<eE}qhsqu^j`fed9-&Vv8q&*g zkU~2IKPrqPU+Nx!qtNp=AI=qc8@7AD;=J3Ka-=mRt}F-y!~IAMpdv%wrgWeOK`ZaM z|3zLn#APXYP~jc4`@Sg9g+w4?@eK*Du=0P7lL`kM4+FVDfb%oopx+itoHa2ZZsE3C z<t7B~gGl?#nkm_{^L>^3MhIKsv-*CdAtbbI<yG6y&v~Fmm&Dwc`*Uhy`>diC;_T_g z{ilrJKur)qurDAg_VhU9)p7Ux^Oi^3B(yoj94A#kOcvaRIGxsW-V${?y!r)tQ00~m z;3n&<zjf}MNf%9xI2AJv4*IL~S+?_P6uZ9!Bg$yZb6HsUV2LRDKP7udSQGz@pjk6Z z#*lBvcgj<~`Mkj;xAdwjbdMVQ;_NjcH2yO82&>(IWs3C2Gh6$6QVksM>65cRc-OU* z@8sP;oPRj^V$v#P-Q7)f`#JNy%)XXY-M2rU?cmghWo70E%Svs)oX|_K*(OS^pF<}c zdX-&hPUeDwT-s~StdT(rKq*~8z1;pE?FeZ8khv@b&CWI9a;H+6);Joh<fl%a&@0#+ z_eRB60hD+m3K>Ux83w78{bw$B+NT<xHyxFMrMjYPtTWVIBwkURhT+^giiE^a=c{K< zYwCJ--ZbkAZ8NkgmQhx#-F?io*O_AcHha#65TD<`wZY<6Vn|@ZTMzsnZI3aCo2RaQ z$VU&84H;Ljb@)?%uvH@(WwRL9z*CPT;UF~j*t1qgvhp7Fo;wtw-dww=*T@sjV?Ac; zFO;+K-w~oq@wKJ`R-fwUgO;hgP=7!Gr)@-*#Ar<Y0(&R|>@U-Ty}3)SWf-}{(^i32 zFc+ws7oMfZ9{|dn;i{@}G2ND4mD2TDh(U6O#it}e!Xcx==2O-GURSOP@v1E=bFi{b zXWuC*|6n|Wi$LC**K|zeW5jMsqK9L+^>VA|aDI4d@u!lfI(}&7LR33pcZg6*__cT_ z@6l{x?8NLa$;z8}T{{Q~`L(erm!MBQVv~*Gmsx<M;vB}pH?%tCtNYO`28Vt5F+1F< zz4uF`7J)+<8t#Z}Y>nq72RtAW+6X7J7L4dpwbiBGQ;iv==-0DMd9{C=jLgqMRW*q7 zbs4dV%GW=rqopILrIv)np;d+I_{U&_h$w@h7qqVBpkc!VQeq8mou?wvxPn^@lR0M| z)BY9505<mB=1B#YMTr!bKwQ%x;9N-HwwMRyQPhY0z&+G7t$c7Yy)Y|ez^w@0tz0^I zL3*^JcjM?U=ou<%QWv64hIxf_9hx2;f2f5OdQ2xtd7e2P7cyIaW}$4VCyhCyAD#k? z?rQx5>;KzcC~f;u*%a_Xkl`G+cHoTKI-jQZPzyy8S4Z}?umByBT-(Nw_b;Zo@T2Pe z68}_sYGxfB@+2L$z_fcDMt>wopN4tfe4O`GBs8dKJ5cwQ6-^gE5N+K6o1V_Y-;VlS zSV5YCS)mTM+qAmY#=|G{gY6DL)7Fn<;IoQAV;C9shBMruK`N@qB>7Hh;js>EvE*%5 z%AXKRfC?u56$l{eOFgXvGd=y{|CZ>^Baaq#R9Q2}Z&m(+6?NdD2EOdliBB|7&l_;_ zSFtk~R<xlXB>8kqd2QdsTk)o>`P!z2+TWSN%tAS<dZ}G3sjT{$@@YgKvk5lP&R9Ba zyg!Ov^3Vs?Ospv?vKcrW?1<pI>mUsd&a7ER;c117;)GTYZZPK;7P>YxT2ws=C`y*p zkYoxfd<1w@Dyt{d?(~Do9Yd}DM!0z9+f{pmAFX@RdkGVrzoIOefvnmJD?);PM!`0m zLFsgfVHfN5l33yEfjj4phxq<ZO%ao~95lK=X*!adF>PN7zxi8X<))FS*3ZMR0j8;A z#^9d1_tK5dM2}0Zt>1|<n0@PEmB}EiwOh7DOCilLk_QQP^!{u1<s#ArnTzs0e)Cly zNr_;(N0FG1-NMA-r+TE~%e1-{&0(<5qc0Io`9H)ePGor0Iu{l9ccU^rMR;<tQn(JZ znCBFZ0WAq9R^wTNc2Nc2-RI4=hkUFkX6j_V**+P2;;Uct4FPT>Y;S3%c=k{8`=y(p zS%Af)ugiRa6ee>@-_&zK)5}3c<Ve8P$zo$j&vlG1H@ju?eU8tBCt5@?9L$)D`4;CH zEB*>~MQ7E<#Kw0?+0I#@75-lEPj5Dn!j8@K(~?X8r|w3rh$VLKZ;&yNdST5My|-g3 zr>7s>y-(A%W50?YsA6Z#4vo46=kf`}J(wUa9Tpzl{2C+~KjuX1K3=;Mbg^m=cy+qz z_Vi4RQPXE>bv~HYgaor>t)JAa#3SKvbTx`}PQE;JnQR+VvWfr4cRWoUkyWV1vj#og z)dQt!DdO&vvmC{h=C8W|3KkeEtjt=}s_hlW4)7hUhZji2Pvv};;^%LO+>W~&2IQfr zu}e6TH2yEA5?85@4J(EP<gVPx8g|zrbm<o%<8I&GpMPRWIUZ9|P4?k2gc$+Tm1pf@ z?f#4s2GnD(RiePZUYQrgG>Qj&d=T2}1H7EX>?P?_i97POP|;pm(yI)#dc(^c%3_Ni z5?#q5gDv(ikqPdtEMf2zG!1Chkk};qzPasRGQJD*f3p|<{{D;5)N!DBrM^-nZ=>1D zYytH;Fkqc4IQLmLKdp;d1!_sIiC+m0jPX0?R)4!fK=U(ddX>1NGkTyYw}O_vEl6?_ z*-&)Ou)=f8ovU@^<cl5oG;QkwIENt$AU|~N={W!t&*n)d%crq>KbYwIuZu1~n<bQk z(0@kx*)r;2!uDm$lBVvhC&=Q~N?X9}Eu>`1H#<KghNtc|OqOt}6Z&$`g{Mqu8Z-jA zobU~qgTp%Qk_|Jq`z-JGgZeDP7qX8#-?*cuEB;dAAKm_$|K@0Xm)hg?19{qd=2aU? zgF;U;^(EWP(i~o~504+hl%?J}!2yICD;s0~a^O8|Dfd&%SF}4lKByup@g2#~GWEIB zM(Cl0Elz0Sj~nVHm;=FqTaipZ>DEku-x}>AX$f{M|0rS6w|>|4yYF*_9;S~3NJF87 zEKIv)EigVK+NlzO<)r{bbsi|WNyRxWW4MCh0LIZchi+)(_fF9Co^`qsGWVVYh7B6o zcR<S|TBfVzQprA5F{VB9;plW6Y|1AE?`~`7e(MxVEVRz47-nlT_5H$ez)dJu**HM< zgj<_lEz{`ktx1mhj`)%R$Nd|{Q*5K}u61{F#)bNUp+FP%6{Ub3%ot@Khx8kzK)52H zw_Z^Ml^riKxnc2zT1NE};k4R5Ia67TEMc&H=l|(XzT9>K;-4karUkqFD21c0Ynm=G z9+Oo%82O7O;ieUuF}Q*~X}V&fg$<+%k%E0o-5O$;->CI>DA-bM{#1$q4})hE*374+ z*$r6iIe+v`la;0?px%5y*I=gfgHKniRqPXtQ-S@d@H~WbEz~^CG?>{0a+<(V!|#O~ ztrIYD=RdnTnzr#8c`|r(M+!!O;nU}1#E8`N<{x=bWoFL*c&s0ts_}dJP-BuR=k!uM z_~h(+mWJbiic0}BxFAs#hp+RO%!Na5y1=MC#GiC+BFfyER*ce-1$V!5FlZAc1b+z? zEm`<s3vwrkM*w=)dKA~@QEs^E5eGvFOxFUYCgiMN_k>#+9KI&#|Ist*ejjd|_P0d% zp`gx2#~$|}@4^&6|0w*kGnJ;ks~|3)Ztcs}{N1O-^KYHNg!m}^PlZD7b7eERrI1%! zH%W^-8J(-T!od$Lo~LS?zmUp%<OaHOio85fBJ7IyIU-knM!ia9epT`n2liMWCaoce z(4Y`b#88hsJv>jbi~U@`N8og)&s3x3^M*LdyMUt-dz?^3{SN9*mLUfJ5Pc#~^}EDO zo#m$!`%E1yUpfYUg{59t9lSBUnsSK+Jca?zLbeZAZ$Rc@k24>@NFT>z=}p7=s}c;Q zK`FhCcMDfUa)OU<cQwfhrsFa&^);IWDqPu!AMEL8uZ~XTame4P1pM@vFgHlwlBPtF zJ+1+b;4TE|J;_c83M^tv$brQ1DXv0OSgL4B6f~E43nZvk*XWb5)+<PO^kHr-ErsWO z#FCbth^R@LQr;|0c=WUl*7zJlp$>ZQyV$w2OF&dk_-cx1C6r##JNy7@ME(D@M!fbO z&9Uu#Li&E$nQDna<QXYW7xr>`Q0)PjW)5=Tm!FkJABM`jYSmPtgU>mAo;rwtOq3`A z|J0%CkXP+GNC&%Yt&5N?bL90YXmc<cpCM9JpT2H+n_M6ww}Y73T|HHs4LXXxq62A5 zry1=DhqCKPFu`)db<GV(ofGwSuz;wgA9^*p?nEjTH*INfHO1U|MHfcE?xj~;iZ3-I zW5F)|I1VHJ-^XkorP-tP3&2T|^xq6Vv+^au^HYBVt$!^51O%RXL~-FCKRVTGl<U}0 zoRL#QAx`>S_}xgT2+XU`x5la<KkuG8B#QW@HR<mF*}(&%N^dMMt)vHiW%8XY$5iWc z*xm*3dqZ6d7I*~F<fi*buSUm)0~MI!jeI=KeV&rs^a;~fn^vyS;W2bW=fdt&hJ-$j zxF^_{W?2w{tG|3>9nm}v*)P1rBAfvju#IaBKhnJ<O;8@%)C3Y_7^Q$hO2OvW-f6*r z@!f5|F=<bmxhu86kGI`Zyv)cSXgQ1@HnUXy-LX=n^9xunk$BXyx~WnCV2qGEI%4z@ z=h%3YdYJ_Trz7tbc?-M)Q>`VmRV)=NR_Ql0V5eP>zy~%9j)T#l3o9E1#1<^=-mjOq zrvz|udll%b{{z){)V!Jw77q1qUo<ceHq`v<iM3nN8PTl2fGQ>cW=%AklC=-7Q64}N z8FmZ^cTsU`bwhDYd^o9Lj`{OLtB6CJ-vyM-5PLs74(^s|c(0@P5O5=-a4VmH@X>z4 zmGBEso(>_Na5rUeo1Qw|k2=DYI3H;6WP6|SY3MPrdCLK#qeIQDw}wWCqu&&Wh5ApA z&;(zg?6Ffv&zW*RS;vU3z9JsE;($#u(}EuB^Hog_N+1U27ABL`Jm@j9Xz+>YAHnO{ z?;uXuCQH-Y;@w2%Hd*aV%8dGPdJ-Rv8R$_I#}1;rI^Sx@VrP=S1V%jChbB$v2GvVT z-&NUTxOnXi-6;diX!h{Gz>A9?ra5#&ox3dujySi78Ow|h$lD(BUXJ;l&eu(y!1u_H zECIHV5~aB}{`(;tS?a9TuQdk-JmvwGcl*}<F-Kb#5p41@zK{6I<j2QXPU_X-;~O_V z-j1$fM2WL~IzL-NqnP#RhPAS{neLPP&P>>{d^Rpx1CCNG0?lFom)K78yeKtql_i1j zw2ok!*)>?D^;e(y&jWG~*j{qS+qm~D{Ycz4h$hYgzB%dSQm0%M$|tOH2MM}K-*k&; z4%oK1?+mIpo4UDej<Ua0h+%=O9M7}|9r!n+27OIcV#$}kHB@?kGV_OwXn`iIRE~py zhD~jP{jt9oIWI<0wRnbIg0nT|9}o#GV|V5$E1UW&Fc{zo_uoQpM4&NW-0q^ocyoK> z{Q!?F49CO4K)^lH=X5fN)y4sbT1MwSGp92r^)E0@WQLth{-p9ZU*Q_Tkw$*uo$~Up zuS@^H>5LtrT;7Wr5=6@m1DGYNoi|7q_^4g*i;i&4^6|=$B+h8^ZOa9hx(;f!jRoK9 zndYksR_aCfD%IDOwO@p%0TRhb)<;v9A-pVZ;xA$f@}-aMR0SI2e@B7KfQv0z1IT1D zm*%w2ZWV6uRabWE<9rq>2wZaWbS>;ypL|PjcskX^xtO%P2U)0ZyAn5w!-RI_7^{X< zMQ1%wcYLboxcAjJ;2TUJJFB(~76p^$Dnc!IIA@AoFBZ5QvvSR9jrI%Tn!g~&Rwq@@ zk)_gWe8UH}_eXMCdcSxjo^QPhJ6@7+J}c!voMr2x13|hd``!hhHcKkzdpZcb7LPhm z?=k~y2;b)9873Q-VpCY#BZ2XN^}p1Qlx>Hn#I8zQp7Xp$`TP~Y;21u_moE_-WTY6p z3kSEucput>wo7$NjUZ18D|T?U1vUFWPU$`38hw1oiR7~1V9h}FXnCw2A@)24-bspD zh+^_TSl4kBSI&pG>%O>R+ecG1o`m5heAzNuw#8F}Z>Fn#wkp5!9!^5j2rm-u@1gya z4#1(KFVxWJ(Y|ha%kmw9*#&s(&Bn*<9v5ij?d|Eo>Idtsz*e!R%dxS5&iIPr0Xmt> zA`L<wri5)sapIu$|79pJkM$j0=^XHV2VC>Gmtes54q8j;;eK^(S%+8@Cg5H>2n1jh z(dzAPJF4H^Y6D9|09vc0=@xkl%TDYb*@1N25$-Pkw_E-M!m6!%b`coo3GW5j-}5c~ zq`iDMCz#*c@p|Em_wu@@f%J(*2U2@B@Nvo;cg6}{pM!*GXUBI>-cbhv6VYl87(Rdb z%_mBGz^di=BuFXV`8B%`e>mUo+sWK{)4lAO0Gb0?U_K{YQWS{e;3W9m{fLgyCS&5- zwMXAjqaUDjnPX1EYVQkyzX?A4iN=#Tti5uKYH(J`p8k-mj3TzTP-*BfZEVOV+4as^ z+?b7PJ=AT{&KnNShV9N~<9Z<eIUCh<#`a24r{u|ur`fnq_dYBq`Lzd)0x;BoB4<bc z;#Y#ed{Talv2M&y{d`r&osu$H>Yv-XjvF{^06Zo3N}lNe81CNlT#ar>s;H5i$)Pc# z#7f@N(}S?S;$;FI2!gCSEZ-at;`W)t5znskb{9jmNw!yRB{<e`!O6d=3?ih{O6#6) z8q7Zfc+k8Ggw`rM1b7ig!mUI|J6Eltm$^PViVBB_CiNz}2^q?G<>~BSq1Q&khG5E7 z@d0Z}+7`<l;YC@zZd$;My8P5jlN>tdVYDg<hBn_N%}A4Es3_1IwtTk%tW0a)@^MY2 z$87Ykjk%MDHg6z}46<xSSfyB7mE;^MEni#E?;>+dG~*zrt^`~8vYs`gXt(fJ`xBq) zG{U+PPVB;#zUz8&24MczunY(L{1`5KBFwl~#z_7$dg}R2Lh<B>EKGaL3mLk_5ekiu zXM3;m?vo^r!MaT3Y98b?>seS+QIMOpLHB{E8;VQz4wkwnRkz*AOY0RK$&zT2SuTDu z-9#0U;v|b&m>=_eeH%^GBxRNQ8Z^3I{7)SW#q)NzfKpeqaRq?xY)fNrll|rezzLLa zqSi=PLzBXcgkIU08q@cOh&N4wNuYfGQNP*CL-!bdV2y>X4<o$J9Zeu?_^Bl2dRV=Z z0_~?ri1^Z4BQR2@bwc#Vzn$yN3s@@s-vM=DO+B!>KFzwRyT5t+k#5~wWnzU!71)?P z-`4ag`-~Pv_LNl*pNNlTi8az+Ms!TWtIFF#4{8r<h@fE(RBZ|iD$=^}Q(0gjftHE( zyc|{J;yR(013qEHjPqL5p1CQZfWbs6AWK-nM<ls#Z4{%}=V+SfI$vh>W8qk-nAwMq z|AL`R4?M9_an5^#aKiL<SpeF$U8RVuSC881PC{NS?1MTImv=)@UoWFoHlHKa6$|%Q zZi&bLHdCw^6?3B`oI_{O+}wK{exb74&HZPwk+mkp5TLWWe(s%+;id<-<SRU`1erp* zSR1kQphX_GO)D|2J)J#Q#RW1=U((7CDUwB}(tQJS3B*ke)nDXzmcA9*zzHX0yJUpL zm2F@0I1-*y=$EW1DzG(R6hf+kdbLER1$haXPhJYo53?rsX#kP)zD=vjQw%l@Jy9(^ zevg+?5P4io+dviW&_639H1f(>EAJ!SOdVwYRVHC}L6`r^k^~(&C0q8gj8XNVg-?$x z1&)weB@L|jV(%W4b%^T+mvGeuT`${E#R&q}*6q)HW4Q&lRAH^<4&6(rXhXtxuk}(R z6C#WckDD^+xz$`yzjdbc<W4o7p@EpJa-2-_P<AfEi2kz+0GOehC^*Q#<C#i<^vV%I z79(d_>h8JKn!~iG@U`ILr`jH#Uvtvk*mUokacrkmfK){H>NhLq*NQ$k&}Y*Aq%Y8# z;(G;na^rnWpQ7h*#@ht?XyC^4v!3|h0Mp3Gr(fNBcfMu*{c;aX4Ck%k58HL?cv(qZ zcuuB)93z$SV-9QyVl%`$Xvx(R^SC<k9e68_>u?}p%f&oDs&#+97ys+7DhI8oJnnHY z4j7A5$J!TJ_%tu-e4|h=?YI+jk6yAeJ7F|>tfrZX*<9_!Ge7Zbl{Mp#ZI5K)Y?jIO z&P+Ux;=Ny?Up<e0W)_WA7&Uf^G2}&3p~|9U)2X$`Z=ndrL~>gXBMzH*OdNzI>A4!| zckI_R7xhuyNc{5;)u3y1?%*S9GE%s?$%JSC07B;&7k)7tAvoI!D)`KHZ<kairneU= zMI1e~6DQV?$?MQl76N3*Ee;N|o~o-qV-A(GO&2E)h+BoUJ)5?ElbKR|xUz}Be6EUo zrV%DN1xOB?0b0oXEINY~V|9GS<8)g_--ey4HQ*vy)BrrQ=mA)SSz(`cJIJrT(P#HT z@=L+vjG(5b_tI*yHCE&)`2}jl#}qM^Ze=;|u;z~!;vO%z=)7;kIq9ZgiQKPrN*fQz z*&AVfzyU5Hr9h;IPs}0da4mT0bF6%@NTFaQ+V%^(+pAx7USQ7G%oinlIq8D2@!mj# zUW$U+iR`i+<k&f%2t7U62`GItP=MduAWv)%E$ML3nCK8<9%Usi+?qTVh5<F|rI*s$ z#H^ZX9N}U&E&cT$?{ng>@Sqsi=BueF4CWOH4`OF-ZpP-cHa+3}x}U_74%`R<r#|@& zx3Y@O_;QYh&nP)MhSoj*4U&@`NLzi7LN-I%wLIZu!vgSqzAO@NOf;Fzb2_wcW;^z# zpb0D5dT^*8d22xz;C^xo&({vWf*ctPp_JvCj!#9mBp$LOe6Un>kVeKVb}_vpu@Mra z9{n%a{68IxK<PgnOa~U)eC>9PuFc|@x4GyeBlVIbBVqd}%xQyGyA#=_Q{K5!WTjyu z8u>DcOKIC-)O1By#J?S(+4S*N1JcfS(G4q@b4^q4w?VGu`r9U00Pal!<va)N>japW zKT((^%<jk5Lib0megzU&LpD3JFS}C<&0cqng?5uGbL*RYcaH8t73b5fG*M1DL%-85 z3~B}Ik;~oJEccEl^YSr%EMe;+dX>H<m#6#1n7v3vfcPOO6SI0E4kAJ4#HjCxjMjc} zbsrp8P<PTxjrCOxdh-7BE<%N|9-SRdeMDlz;l-JF?V6ffR2SZd1eJbeU^1~vZ3@_A z#7bU3;jcWcdXcsMcbesHyus8HkR3lu{%V_IiYM}WpWto=z@DSKkkyuydn66bFK!g& z-DE_)93R~%ao2wIk)1OFX8GHrHBvZLXOLsBB%Hy?^yFo9bOVDP0Q*w6BTGFk)Gkbk z)RXD5G@4b*eq6*t)xdi2A?S?wfZ`{MZ#K@R%I6M_YMb9Kt=Fps1LOfYmb!)x;tTi6 zGL2QqY$r^b-i1refrZ<nb4;H)wH#%+9ounxZhJnDG+cayq4UcqR&Pi=uj9uMUCsT< zc9N^*z1`|A(3P#8Ynn9;%O^G@1y+p;?LfSPVx2XT6TU<)CO#9@$hamUYiKjzBcp*2 z7O!LT@PW6~p^(5AQ%qaP9!08O2By_CG0V%7*p5hF=H(MpnCpyay?$2xUxLKse-tEI z4d+xk>6THzsDDCv1qru=o*9*sot)&Nm51v9Oy|gbL&lgXV#|O#I07^Wj1?(9E)QUL zhyK#kjaj&>!v61g7RCsHLD;gOP<pCp!%7PbJbXhR+0D^}Q-5$i$P8dX_YGBz*&cDz zby;XtuT)H@V5-fR5z-N1&cku>fn&}jDe>TrPaiBXFg5u8_x?r+ye}jIWu(DT^Jn=R zQODLIG>bs!lj<W{d$AmQuuB+#gt|k0{T%&AU9h?#$J-7#dAT8*;e2+4hf}O|XObC% zhWD_FNzf|6Zo(?NNTm?1a8KGc{u>t9*F#hX5?$$;Ny6-pMl2-16&W9YRrHT!XPIkA z`kS6a3xVHpdBCo{>Cv!)HYX+4=E?g%-v+-U6AGd)5BU}d_Xm)^9{faymtA6!{I{ps zo4N?np@n+ES`P1GRTEe*V+jXl#~c=hYe6SpN40wR*U$TG@A2*)f`@B4YgG3rb`8y~ z!RU58Y7w^{`6g1dJq11_rOLk=N-uG0YLAp25l@85w}^JtQnr3Fnp-R;LR@Oz_efs% z76grSO{3Vpw1(h&;<eCLshLTTYm{H;RiE>P-jp+m_S}q?tIYoM-NnR~0KqAR(kkXz z7Nz-lbQOcYisYYhTv-Kq4$UfVs@@KUD6ZU6VS;b~*#x##EFoRojr=+%i?z5JF>K;e zsUMa7=;W!WQwTTyt_Lj`KS|>1TJJbzOwhEUsE7?W@-f%)c54Dc9~Q!MS1)hU4v}or z^_RnP$$cn3H`m-X)3pXm<hc(6&)oWvl-X7uX>cJv*sl=Vyw#kPPwrm@p~~25g)w8( zTJAgn%`5M1u6v$>si!WXY6aVs^5ERsg2EQ0xh0fl&oeGFAkeC+WoHM=0dyzAQ|2iT z?5L5^fcgVW1NYth%@kT_xd91ua7TE3Y;svdci@Zfw(B*C{wMY}x_Sjm3v&x1+eb;_ zg8Ix`r6gbU58z;5j5TAgzu5io2wsFl@4c~B5@<i78n1ln-w}Yb+O(|)3{!dffDlh} z5(_^7xQT9(yyUr)hwZ4QlS%U<ltG;AoLlQ`4Wush9rSZ{Qhu|5F;YB(Dq4Ph)X0w7 zeceU$SLnggP<Bw(GR}t_T?0>mb4kqNabERaeIxhwj*Mpg8i$j=RFf7JtNifmMymkH z%1yLeXyW7ck<^7mJ5omoyqr$0f1~1H8c;(w1{}zPBZW6E0esuFio(EFzv?!<`G^2% zV9UyCv0UrqHwRwo3(iH2b2`~$%ryB{txOy;pJcH^R-UDE-PL>HJT4}x-H&uI?*f|a zQtz6|=)VfZ%!@tm1B1Dp6F7nCt@JL6!On`ITuUSB@F~7f-k+XC0lwQ_!k3%WwI6vt zA-I#K!vy%hR5ffmaB!nJx@;?lh$G#ZuOpQuDzi?KN28{Vv`ndW5tZ<m+f_#l_>mnx zK{oGzKFB<aqZ!M4wziT0ngOe>kuoP#4xdg3%@{oL78Un)#K?w5-)~Tn4LOe5MLrv1 zBiLVPe|mlP%<{ssw6^8+V??zkh0MIhm$Co3aGc%Q4A-L^OChfxwDAgkFT79ytWcl} zF+$YI@*sQZ^T!D*e7U0ymZk|Uy;+IeY)<mC$}L=b+oXtRDff`J5>>fTm{v&mQrTCY zWM|=V^?}Xq_I3FMH!z6Y<7zJQ$NvCgga<tHDF;wW&>yfiedXlI@94*5plyTQ`}idp z$TX3XtTk=<{v0_u78bIvJ2L0Tws^23sk-tyFK%g1yBW`qjUa1TjS`sK&bjK}Gz%&T z;WD}fVp@Rf0vDRF;(e2?q^-uV+W3jzG^cTP$?jVAWgWhHa1dk7hY^fC0ox>N>IvsH z5t&R5c4>+VdKK97dxd`*S8;l(VBVWYtxTOeYg+bT!{=;1sl*o8m<S#Kp!2&W^lXeL z404K@9EDMIx#{-Z>1hxLLU{p}qfUYykJAlImuZ@(!jvsTb$FrF+;T${f+S<eCy__O zwxLVzqWc?iMP<QP&nQtWJ~M=~Bo`vbAon}8<s?7GG6H9Zep+4%#*pySX0MCJC@u;a zj`gv0W?<t7tO@0nj;(1Feu*6}_eg6erW)iWv>2^$$UgA5h8+4mI``Fb5c52{2ZHS* z*j;Ich(o}SAQDL`@&!ZRic422v9K}AKBJ!v{-INj2rGXryD=F(bLEK;&9HE-{0y)+ z3s_&&hcvI|b&T25AxN{1KVXM^IcDbm;ZMBo+FUHvIjZWCqpt1YC{da(bA6*4FaBsn z$#mlf;dJXzK=Gyl_uoa_HXR}c@Ej!SBW6W!Yzia8hA5y0=_~E7m#dg0RIoQqr}%sV zENEPp@;LPT_))Twj&$v0hFjV?TG*~pCHr=TX;lClN?&lQ_L4i)pJwV-r23T@gWtZL z&J$dJ`?#4GWGt{Ux@WZXZ*93$2wpPC9dt}Yz*X)E$0|JiB)yJSP!ipS-h?hvVDA9q z&S4W8<68Ty58(7;q%tj54DN05_(+zpJR1#LJZG4mLZpxOY%_!RWeycE>Hu84&p<<- zu=ErfV)Ig-a4kY$)tWlZ$T2Awr=g9^RH1AA86$^SM>|)uH5IsUUKeeQ;B7^l5qn#7 zhzri3>GsK`pFmjs&&4&L#oiU8fawfJM!7HS4c(=Z=xPQ`m^kr&msi4)P@H?)1Y?gE zv_uFg)6<eL)9C)7f-Qj~lxeTrb+N=PA&M!Ro>Mbx+QzlN7w)4Xj3i>gJ5ViU`l5?y zZMw?w*Ma^0uRHRxL`|!-a^96ct!?G}cOf?4^I-dy6m-%`aPg$+Ng1$RYf_q3eF#ce zuPUv<>&rV%jbkz)TnkK3(9Og1E+c`DywE0zUzGk?wSxGj7W(<{=vRLciV}6wV1cDs zf2*v+)ny^q^1v?dR--L$5a*gE9%=rmk?X8-uBw$qk~;%D?GmFgh_OosO8Ie;RcIQ0 zn!npHRh3?U{%nRJBfiK+@o$v-LcoQzfwJ`lZUt=t(YwFJB-hYKzKi@Nau@Ci#iB&Y zQ?+KyhwRtyu}N3W-6^@R>&ZIm4Z}F9d>_LD7z*fQpcm=4Ku7{yQIXD;tHlE>Oc~WH z6eds~xwM9M^ZGM#tX8WeS+^|K*Fu`bO1=GT!-}?WO+6Q^rhP6cX`9t!(PQbL`*~j= zNs6Ry&clSDRgY;cI)J$P=()C1XLm<3YImMjD{@Hxxbc6kCg%PXWHM=m;%l$gFl)g% zV!uL*6X_KJtVFy{>)2i*e3wj834TRbP{-o{zx^2<RgE@pGg9LI9QrD0`kw(6^Aah~ z!Y&kUOfkj1=ag-13dw~4=B4*?P;ZFcdPx0N7G`(NrE`QsoAQ>4so3g4M6JqD=2fmq zV?=^ppmNbu4~vV$@5zLPW)U$8iy11ajG0+zl@g1*8%2+TM730QF4l@D57?hP`;gj0 z`Izn+E}Rt$x7lGG{4D7u^Q$Rz0RPo{r)+JYUyMvk9_LnrZZUNfG|fGw3_Vn5OuHuM zoZ)8_UZJk*vB82S_gu|3K%;Xpi!^Z4(7rh(+Tne}2Ap%a!BYoUg2PM9=}YS(*Zu$@ z*HrG0A*{<ekGq_~+90gT=|;m9Z9XEM*S|gLxG`$7NLz5+Rlj77q;0h97YipDWcV@* z+=+G8)=vGWUX*8-ie)W{)O-ImN5;N#s8Tjd1IX`tf#bGuC+Mx7Gs_vv=Wl<UzNM~} z($Y<l*^f|FCCKAp9UsnI*bKn)>@aEKE!<;O!icM&B@|MKu($?pWFAep#@jH^`U@@- zgb^0n>krPG6D-2>2)LliCIaH3ATlj@odKy<ky;#^5ZPN9z9cl5{F9nOV5F9W(L~<1 zxbz|`SvST^rUURoSlPZe7&q(r>7ybibi(Eipy9U5e+FB<^&*~90PC>;nHx%yF&$hU zDB2#@#YRj;=V+jF&_Ub@8@NG+@0r>dZt<IxtbcT7YZEkU2)o+)yrLG#Xq3ty;TSIv z#<>>7>9U9|W2L=$IcWDxXZeC;*=M>A*Ac_2`90)sa1-w7<@8Y58m$waZq^!wA`;js zzchK<p?1YA_mIE&oTs3A=wVca=k$_VSX{a?>YV+keUBRNx4M%K`5x<^_qb9{;)3bL zBSN>xEl9tY)USPM09#{Z5|RDgRqxF(p5;Aj7XYaX_#2XbiPLZ5B9*N3B|g1zv5Kk1 z-_y~}cKI-^vaJ~)z6Vihlt+wy9j=v^gR{Pe7PkYRgPhTciveBbJ}=%2?Z=h5TL@D5 zsJL|}AyM`3u;aatI>V@#7b05Ftq(XJ;I4+H8+X80lbfi!*Ac7cN7v@;r<L~6Di5a1 zs?24emX^=M@)j4zr7L-XrIacRfPb0|?1LuO7%wSvy9Cd}`B9giult<tv^ko;do0sp z9-xu13u=>s0SEZ~1%+VibF^MLcP9+)Uy0MOr!=xB6xVb{+`n<B2(ewq6&VL`)|-T) z<X(`jJpV$v`VRiKz1;!cu^i}#ZnN58!h~s(y&{%K{^D;y32Q;I+jKKrUL;$OdExi# z<eo0U{ubr6BUkh5DU;qMkFx8+n=6j4p1VQA$*k*6wW5q`_3_boMG>1+P0^pkX2sWC zm(=_HIp6CkXiST}!unmY3|GeBXs6y$8Zh?tg;B{L^X@SC1%pAv?&y~YwEMaVN{fX7 zF0|UcdNDndi%oT(sv9ZK>X~=HQg^L^wTW|eQc@;Xr<@AZ9ki`hUCkzW_`f=+x*=_T z_T6x8c*5eRoX3TUpX^k-C{%Y|3oc)ViAm#{JbEFah$afQ)-kD(JEt+DN)(Ie3{!)X zk5xiorGrU97+C+(eNBcNxE!85_UZ9dtw8V6#)E<-n<9gD_=5S4-lVBO7x_nAuTOl# z<~QhWl|p$VJsY0g3X;HjfoytG!2EJeD~#hY<t!gyQM}zhkZ#$bFM$zS?y@U9wt>Jh z#K1(pt4raYdB4`5sGY4^#c85E>AbiV7nV~OQ#A6s()wc#E~OUq-;Ilha5sMyejGLh z*^$?LEQ|qQ#`(sKT162l&cB&1BTcTF%^Du<#c_vh@+z;30X;HN?*GHuTQJ2Hb!&sT zJAsDau0eyly95vJ32p%z*WgaD5Ih76?(XjHjRtoQI)}XXPTg;$>Z_Xh0W`3CpLNzF z>sd$jY`o8Z_9YfkNKY`ed8+%*>|-OjHB#%iS!B65W4K7|YGH@eT?E?8;|uE7eoNs= zEtG#d3@4Q343Wdw&=uFmEXQV%?GDc^Se+U-xogaHZ5uoc-e0t*jM}6#&+w>B%#8No zu+e4<6DD6}Q^11Kwz;xbg%+Yw`TfOm?XdJz186A9?r6~I=re!%(R}{>q`kLs_(Hdq zTKC#3-<t$zn*Y2bh2-lY6&Od<&>`t%-!iyuP$H9&898%4H-fuN!25fp3cz9gf{!7e z*@K~7Ht18>CPa%Mymukr^cZAH+7Bn>?queSdbguMO}CO?)5|{o4VWi^0&>J53-gx* zthORg)6tEI?~b-bQfuk7{P|Hxa2hZUJX;^i$_cX97q6OY5kbMS3pW2i3!?Hfsd)^t z49Xj%n__L;_E*s22m)wT{@QkhQ@B%{Rz>f^wp#Fn&>aW^oKjK9UF(UR$%hdpB1sSb z(jW`{G6Z6nK)~TbP5y?UZByoXKwJW3kyY}bzn}PaYvtd9-Nl@;o84uiPXnY%ylT3J zL4qKLw7ffBgg$NM*s5Q|rxLd8-^_Jp)X_o+wI40yY@OQ3rd;N(TgTN;Y_<R8k<oNL zaz?=cv6Heu3Yn)2=H8%=S;+Ox3Eq)RFY8Aq9bZxd8vz9`1p*VMqS{v{DLjQt-39nW z<qw<9xS985)?@u)Ly7G+@|4?u)e9g~2l&^FwsJhT28%C+&%v{<BIu?2B)?KpgSLhT zRGpw9TU0_i*6we8R5<QG0ckZZsw2obpo*c@P^7#)2~Te2T%X`0+*?EYrXRhxz<psa zUwM9VlgoQe@my&5tHM&gYmw5B9-<<8rkqLd-TWv%57@U2@49BKe_jFJ8x*h8Ypv6R zuLRqxF$2=Sbr<yxOJ^?z`%4>n+Ri)WY?GL>g$ChW-|Gcrx0XG=d6?b8OJO;#P8_xm zh=#2&I&w)g<O4!#DJNG!IuQKxK23}))AD6Pd3997JdaTzI_O}`AI?#}cCLBSRGF1X zTP|fpbR!Ba4KT0tZL|k<vQMM*DUVAlun8?IF>gDO7<rLy{&7QRZOqwU?D8@)y?o4h z4MxmdYAO8yPk&^K3;0sjboiV8TD1yHYd3MYc-llBeUbD^hz^<BlP0LNFT;?8&=5I} z9O8|e9qER23y?|yo;*N^iH4tJJKOGps?REKBs~6cCheecv^iDZDbb(Q3+c87UoBmm zh~g}>$UT2y?g(X+2s7}tLyJf=N-shORUVLleuit_9sPkyEkY}&s!N463sGmAk&R6> z-A~;HWJ(9rH~lR%ux5U4hCB#c$0m>cMB>loM1%&pQLY<1d$Pj8&syHB6Z+kQPm zSUxyWrB)0qjbi`fRRd`O{dKBX!h68k@zK~~*dvC}VI=LiGV&o9y_{Xd#7L4Cek+<! zrw)%jYQ}_K{GBTSs4!UUz*t&I*8d|T5D_tdE2ci|`zqzK9W({ch-jFvFQg2MWOYPD z8IgZF-@W_Z)hlS4Vy9n@7T`%up-Mp9?tcqr&0p}M(tXVX@}X)o#eH9-S?$9klDh6D zBXu?7Ds%Qs{yF(|-Zcho1{k;-&jVCk*-%4i6w-Hsjb|QrYbYN7^nrT|Xo$$Zoo7UT zZhK$$-C=*pnW%|L^Z+S6hJ5mRhCuC?36Dbp2gOqZ$xjA9$&}Z=P!&~<_po#rC}N%? z>RkM#@@`y5eX9+O@y*qREUKhNd4dQnPAJ^jwHx(LJ3*NXZgPMob8iYA`~$zQ<txFK zghKzz^}+o#^5IBmf5V8aVtGXE{u+5leYH*t7E#IIrjN(Uhsjs0!nAW5;Ht>m#efwC zPpkQW@>wAApWAGr<^&YR)fOYh-fG$|2<&Ag+d%!{Jq~R>0_0S-b;z5QujA$Mq$frh zZiOzUOGpyQdg`oc|DUlyQE8AG!j3*o)51AXiS64yoIgl8cUROY^jT{ka|Q1}tRHgI zC0dl*yUZ7D8npPFl7|~z{xpBsmlhG5ep@eH4mX8f8eeN|@5fQ-52-E3S)OcV-!DBX zc1X3>uTfaNsG0n4?lhMAHyP2R&8iMK|M}kU?g&1No6BVBHTh^S7JlyBBN;;HnQJd% zG=5TUYb-tv5uS9L6tINijTF0=8K8K8wg&C;X*Z01p<pzjMs2Wa_9hgJ!9wZ7yNrz- zW7CtD*&<I&Vt;lGTBp0K>TWP?qjuh8mS8F-y`vTT2fmFl@d@mGpWIhd=ey~_QSQ2Y z3a56l&bb1A>QRmXaWRkSw5=SNYy^9j*N>rWxGOYaZx0gVs+bOID|(ruIwT1H)yaX` zXee4Pb%xhHG{|LbRYu|p0a<f4-+bm0h<IZ~{LQ&DI`wPNn?C&Z){(df3!eQwo1e*M z`ZfHc{Hp59^*yS54BvIX1HFg^K<~v{A7sq8R_1AX?ug0a0<qbQlQ{@sxQD3<>8!?A z_zFlW$U_>KPApLE-yfqIq4X!V^nQQ2EoK9Wx+`j+RhO%3&%Rv+()JjM3)OOFouU~> zEL-74t&inS_BwxGpD3=S&Fbly7f=B(=KVKmo~|Q$F6{x?&JbtqF}CLF?xf;ZwUJcU zp9j%1E7Pn_z~!yW*<xr?O)8;3F!gMleSwU?c(p#6-Vc2Vu{Rca#7>Z(d{^;a#L;T8 z;gx4{NfN;LW(NB8ZW|?OZNp{^bHLyc?h=X@nf0GSPWmyM5>;=%1I$M7Y$2kt8*TpB z4{Ccf68SP>!#?Mle9dzD^;Z2Zv#<sESJUyUKtqqCs1sCKK>J!s;B;^Ygk|@?Hq}=5 z9F2$V{_*`=>_XFkE7%k6K2rV2=S(!6?v53d#D@_rb?d#FM(UwzABsl=su+zj@pM(r zzfO9Z3j`FIYtjEs7sKXi|K=T$QqJmFma*-zBTm1G8AZtLbc}5pdCs-VU}y*|;81oL zPc+&yWitt=J`n|!UqJ1>Ijli;04hp19})d!5VF0yhNOytJ6!AoM%<+z3ABxmMLQL^ z18Gya)UDL{1}3QE*HooF@LzkeJ!)&w;2OR19#_nwtZ!OBtWnL~;S10E#-^QKY4x&1 zo^7{Ak3j9N_vZ1OlKhV9H!A`nn7xf#ilo{U9oa?#&MmgbcO*4Jw0Z=GsWUbudR{o| zQX@SbVIb*`dM!n}ItTOV4$#5v$uX`9W>KflR{}3PE6aYJHheomzqYl{9auSurb|ri z_)%OLD^srH96pIL^z>O*?R|<Yp8$_*kE}_Y_66sa;Uo3HBo+gH;0!5X%&j8ch3Lh3 z(%(o#-)WfB1&{x^mzg-5E&5!}d+C|@Bcq|M?I#<|I)fF9k0OEwsBnfhktAznW__N} z-%Bz*qjY&=ot36nX6|{0=FmDx<_5UQQ9%+e(hBk8&0^>MsYiqYZJBcmJ&}w;JtCCe zflj^NCZ*mVW=TLU_($c)sBm42#dC#SEB{NfA=ZaKTqk?b8CN&H(r;Hpviqc(qhDR^ zx`>=Do`=<b)e3RT^w$KR+C>)n;_fVBSnOU??5<{DTC%2@TyaSmcer*o$-D`sz3@uT z40o#FnWL)Uy(3gsqXbBO4r1~(6CQr)_~R<2<;L+vrosQ&o(izdL9Fa$YB)JDW_ujv z{KdH9m`0zP`|jV>hJ0MlCpt_n)D&i;-C%3h7GJBDXxVu4a<RdK-H*Ukci}pBKje!p z`ja-lzRGt{<pY=@Di0h4(PhZ;_KvV>3O`O^%8uRXbs>Lzio8A&02ld+^7i5a!Pabx zy8~T6^k}~)o~0HA5;E}`kKNL&Vb*6jY`g8|XFw^vd&nr^f)<@ja&;W!tTmm%u@$Az z&+}d!UIZ1Stj@<nj};}y(3INJJ?P*6oyXK(C97B3v3c(gyqJ}n)(z5WpQO+~C>)%` zNd=a`8_ttX8oF%<Fkc&1IJe+VYnz9)sSTeC%_UCjQJubqGC!fRb({PlsP{A$BzW}7 zd+bSmr6eqX5KXCa_Err=%-)qgCNF)@x=0pg@=$iVwbodjt=O~1bVFg!2eq`{@OM~X zTvVgthFlWRxv_Pff{yP>X$3)J^^dcAj+D&f=3S!264IV~8DJ<ri+REbbwo4P3AoIQ ziJdn$FMPyk&%S<MngwYuIun%xBwx{H878Vm=e1KmDV+{2=&ZKxm5~@xl)C483hM<U zc^d_^KxWcPqZ}S*gS73>29X^K*!;sjf=hvnOXQ!n5AYlsZ1qf^jxJRq)=F@yfxR8S zf&3ownmL#*AO$st-&LjH8V@<Tm5Vb1uE<W*gT<0(1BUbyCaXE9Aq>s1;r=YQHe_Kl zD-LgmyKTvFG6UF$rE|Y%G?F(tW=d<Yi{4Qu4@||q%W-S}Pr#V9hMOu<;J+AD$!XYh zRuXjjHwR_GfI{$ml4}-UiqJ*iK0jccH|2Wi>2uew!(Vt%uf}G@^NQ|%!EcLOG;u56 zH-@+L-D-1Jrx5t}DX;bIBD8v@tZxv#TlA{nQMl=Q98Ea7!Cxm&{iw`h{CC$q{yI2~ zo}iwzxuGV!;iRE!b)4YMB|O`WD`=Tk4ltrRyz{R-j_)<|)6X~h({Tq8d0N$MAuQEo zADeT+AnNnOan3t@zP9?!d7Z`O)4Su#+LC1|iL-jv7IJkN^_)nmQMg|%1=t#(Zlx8Z z9AbbBrl5NnaOFy|3wF(Lq`B>RV_qb|1hd7diD>t4!mH;bymsxawQSK6;Mt!0mn(MO zRd~Q|S`z_LLp&r$Q$ysm7Ke`0t&hF+fB?F<vabiqt1f<<qiWNK`#Lf7>@=BCMcF#- zN@#b?j!ymnPiqy|Bx=l0{<+B>{TH;k$nEd4hRZs9DTIKOB{;RdpJXFdM$$ICwD<CM z{`8-)g<K7kSMLk=m|SiA<q^bIie^tvFbxJ{5u)r~R!@Bzbfwhz*dQi_Xv$?UivO6? z&5!<ujD7eoXb$JD;OKU-mU9JgyvJ$S$GzFD;G)|z<VQ+`eqw4e`N}?azl5{|q1ek^ zB>YQbFcu)c7`B4;7ad!jR7XG)dIOS9AY7xgwEwuqg!QsLH%V&kQA8hICiG8SZf%>A zFmWweerfkF9TDW^#nGi(DKvU}?V6d%84^~gpQth?v84r}d)nj(|7~!!ej;Ex^EUf2 zpBfZakC}r`*Egd<c<bvPSw%>8Kg=1rvc5qf%qL>F+%w5m+Sf`XhTrfO*-ew(UQyrw zLpdY&L5VA^U8ggt|4w1SSmnQU9o0xRUyR4TD*uoHa136SSV*EU^V3Mmgh1-v5NP6o zfOuL@P=35mIQV1Pf}UM$$CEU<5_yA(CyJ|P>3>3f0vPdhN#+Z?Z0CR|j$d@#M*N;^ zOfwzT%;mD(HzWI{@2aLngoH2rbYkq76iWNSY$;E}@?$fvTj~Jk^I3oo2shxa!}6Y6 zd1z}Bwi30~8x$wEjthQ*gxtnH3_1aU-TUp{zn-?tn}_M{5_m-9A3%I{sauH3l&t}? z#|=ZPR6k|){aTNc{Z87Y5<>=I9_C?!Is<?WLBLX~o0q#~zrcEk&y_(KZ0Pw~u($)i zAW?tQSQX??>zQwabH8?IGFs59P1PDJ5ZQ)JmwVDi>J+b4hbOD-brnofzi?eJ1edSX zn;6RvX`HN^VMT573}I({O%*!Yau%+Nj4?Z287kl2d=EJQxMHok;`xW3EH%~$iw@>j z$h?S;05WeE9ou9IduJ)DeAM*`7BsPey355}d`a_sk)|bmFBh7RF|GSb|1sv^Kou#- zN{0rE9>{lTp$F2sGVKUfLdmYqh9{-OFXOYT?S8+h<I92m3Z&_`GNf+-DG}EmRW{k3 zH|5XI1q91lDZf-v9PLHA*Y6~`B(47e#&q~PCr-dkBZH*9ZVh&zFnD{3Ox7*`<uP~H zPxE``O%&cAGQ|EA6&8!w`FggXm)eK)OnkYi-#W(7yC^BXzL<Z@0h>f<;R9BBTU+a~ zY2@jK4Vp{HtwqA&@5eH^aq|E${(5R%+k4C?#GrDvv*!%YRG!+Ta)PZ~v$*{Hya|ec z!)!pxIt4hhw`TEX(I=8(x6)0`iOZLGm$#y)FM_xv`BRau=uA#dn^Qm_%qr9tR7h{- zIJ70`j^^U6!T_SW{v<m)V>6MnaRH0Ylno}}i@&bOjJhX5*H>B1(kgXN6|>dfb48U- z8HF<fv6!kJO;vBS>`Qpo0rnw#ii|^h<eO1jyc~s5g^I(NVM0|02ci_?-2-ECC7p63 zW%1)*(s-Ny<wmP2+@4Jo`x<tRKAt!~JIc3zobGzt2kZ%&dgs~B{VlMk`}pW(O7TAi zCvN7B{9L~tYcODtWAFcQRu{lKuwdcdLAAf^nGnleXOQq156}D41d099h!eG!4qUVa zij@jp9g*@b*)k4-HMYz(9y9I37x_q})DY>XnO{u@6n|jFPJ=g5e@!%yCwtu4{u!sn zZ^=WC`T4w;^<`ef>yH0*$KS1?gT+%qmg#Lio4wJu)>?=z-@o>Pzgw7WlbG0rrmTE@ zb+h{sUL0f!@_gFkvQ*xROpUswn6BSQ^zfMsDK1E!lP;5n5&NFQzg943y_<Hqd@brB zZ;zOQBOT+@2-q4GA7Pw&AGb_ND^VrBabx9P5#S!Tc?!NIaKR?gmcPgTRsL@-<^x~? z0gyj)H-%W@5)`{BHdGNRCK6{=KmA$LP1sFUq946Wa~=n~k5oJ1<U@z!iBZ^)rt5Sf zee;vZ%Ur!Nq!8vmlGVKpG^8YT`3{+MJBn+kVC~bHV{2a}#%W_IdWRUMx?_g)QmKkE z3)ON*!X<|E7lgVK3DeXc@c27BKSEQB7E|rxSXEnf?mbWyM5tsMn4camhqU_sWdBDQ zL`JoJy!Lw`?60ZKcQS72_G!kqSmU|q<9$w_h*S^NB0c0E_Ds3$dSI}e4q|SvImssG znPFX@-TY)UmgyI~()lA*=2ZKr3k_DgB4H7)hiF=00NUkleZlfyT;oG!v_%r@y@Flu z;Odq*3o~}Xq4c>iZ(up1KGF_u3)}gh@F3GnqDs_qD$j^^AWsE|`Z!|kE<TiX*S{eW zpa@pu;oybIN#>6#36_WY$wEO$f&){;gsjJf^nIo@^|A+s+;!t|)o#EgtsY*<nlsMw z$ArK5)l4nE1LQOh62$zOnF!c0`M74e^`AwRd#?e+-P5ih&OHYz$X!7aI=E?5M#{Ov zWzK?Fr>hG+GLKgcjH<qvg}*+L0=vEimfOru^`kqx=uxC)@9!meX%b_Tpl^d9=NR)# zw&^<?1A)%~oI%quPKA%QNUv7QE+6PS8;@7GAR85}_sY%nD^XlzroFDdbHis~NdKy1 zsy|)wHT;r=`{E!k>4<HUD}{|dy7e~;q8LE9%3Bh{2}#`7l~;bdUMjYjF!U9EpZ|me zJle#)qo(`6$+)xmS(Ja9l^v=NUoL(^s@(Y5OeF+V(cjNZ`l4tV4FOUvZN0-Z(`eu2 zGoa<6xq`4}v;6-}7rl<p8@B%lUQ&u?>?xi67guclVX%ZQ2nGA9CpjqwLJXuV&h3Rl zx;q2>3@!P6m<PCAZpmJDi~{3r>H+T?(B%f<uaCw+-eCw5s&#_5`b+feDY08kDp5Ew z9VsDl=EQejK9Ng0<e(OX<<AgN@@$S<*R4-Il6xVZ_v~WnJyJXauO=LXp-NP`3g6ft zy=xnhsM-nMQM^9NU9Xh%M`KH7K!73h9;&o8Lw-wen(e(7mW;&6+(GpDJeJk>Z#&9P zSg23NWz$YQ6{8M??ml|)Bep}oO`(7K(nbqMo=VMMDtNAo=)cD>8+TBxhV|>`P0-~> z<4C31^O1>{rl4PcazoEte%tre=p(Wd9I(98hVX9q*lk-=huO_edaM;neR`S@tuiVP zP_5kY=<r@15${Z)X?u^(e-S)u^I>i1%2pd&`_X0_Zr9o!M?8MMl{DuU7iQP-x~W+W zuy<+}Flv~$!woyiPW<E+jnaV=J?Mh%iaKIPX(<!RZ9Up18(KLjR8%yYbddLyP&^~3 z8|}DL$tU}d%}5EAEtH*8W8%T}aPfP|K6<19{sx2hvIh#N`ch}2^BrEaS<w+D>Oe{m z?#XZ`jx&h0`HQbNUxWufTd*nme7}UZ!A455gX5?pOePxsO@Dc!XBsox1Aa#-H5iTP zjhSMiapS!R0Y;S{+r!SjI_6_NKS|^YtV}pZa(VgtvF{Lmgpc<DE-S3;Sp&+r|Aivb zL8imBp3Rx2j==187*}5ec!X}GJ@qRr`7icg^>;4d7`{6lzlvk6zC*+Ex3IHFHrtc| zw8fq2T8Uak7cJOd-v<#pn7<J>u<4-0lK9kcRjtQJT)6{+=thygj2YTe>Te=<#Wu)d zY(<>5E;xF0x?(n#dojH4g~%&N*&$3tnIzch(=;Ih30%oYMZz=xLe8;Bx{jD$^NoO< z;;Fsx(Ucg3Hz=;!;-}Y{%g;du7DU{ELVfiw=MFD=I!nCE*<z71uW9;hT&QP#z(%Uk z44o}Rq@wKkR7j=HSDx8bTQ~xOOBep>`g3*u*6^a1MSNqogxj<XI3rY@EPejCcUR<f zVEFmo3;>+*Ac-`^cCwcf{rdc$OZ$uY?EYZw1-`Gsgl54^Fpy|P>gfZ)mt1QH=$DWZ zp~^tOh?oT!5$6wA-F<qY;A4NUy&Jz|6r3*g`P%38JTSQy6k^sD-$cGHdPkZZwsYjC zOzU}jCf+x`FdW|vieVnHNQrAtE~<FG?_}C7GSk1}Mx^>0<7(k!N8VWq(&^K5Q=GV0 zvmrV3N}K-Ati2SuZzaK>YSOQ&Y-PMUtmtbS!e)_vUs;*j#ckQ^pSEpH-r{@NXjE{; zSz<L_doDM?31}n!GkH1VSo3fdWBoUeDMeGBiN+|Y!6(e`DSE4WD%MwN<A{7i5Q~Kv zZKH^&pd9=<U_1%z>HxJG-LljF+P%BE<O+V*^Fm(ZKYONZTJhYbcW%od5DERj5tDym zsq1fqoEpCQ-uDuCX*H%$Dt8=OhMCk8(*11fx$e+Bu@^R2)AQtRejCpD`qoDUq<$^4 zc{kFn<4%#`9W~)C7T*Fkv?mPi&8h#09U3UPuY<-Yl7QF|yDN@%VJ~A&rB!-VdOc@- z99O-G=H+Rbg1z>4EC(JOhiQFKbmAh~1Kz5~lJ1;6148uq5Y8T%F1=N>_}0pBzkF1w zAUcwGVpG3W`&I<x3tQTnV{JQ)9#NsCZBVj;Dy}$F{7-tP##4WKzThSMN_*Bd-&I{W zy4L7!>$uo2q8V>p&@>DEn~k-Y1kzQ}x{+yrH~x2GIbYEYP=00qS5nd_2+|GP?MG`% z;mV{vlJT<7Q@&|gfe-WJ^XsVEy#q9mUsx1oxb<)r)7k^|-tC?nBD&Aj(vvg}#Q)L+ zG!h`UMivF@`p42deMb3{LApxuShgGU&K$%}?+f}U7qj91N#A2cyrgx-Shw5tCzt*( zDLECqS+rT-dVh^fLdI(>zfSYbnnC9RS4+)Xf>>ijqp#g`LxVb^q@H=-S-t<Z4-TxL z7MGvy1w?;tC7f<<0aZlWFGLpcZ(QSD+<HR;jUI%}v$sLxD)uaaT}bn&YxZo+BzzAw zjOQ0mJgK=Ss5MuB_JQ<6iU6hP0ZS!aIL*C039Uk5zWp|ixWPOdN8KIhj-#V}>(%?M z?7EWLfCY?OiBr3PI3Ys6_hJC~qh58tDYN9KChUOk>yApK{2RTJn_%4o#-_e4pbMZ0 z!jd(RTPPNr_-Wt!gAV_-+X`6?5lr#W11d4BRUfiY>TB%$`OcGdt6uC!J<O<$n!j5w z?X5h}Dcem$a8wtwK<tiHJ$^|swO*C^uy}H*T9Q0lASs*i%4((wQ9WYLXmYVUcXs*T zGbl2<yU%a^gtDySG^+M*MAKuTznd(v*-tM_EM!$`&=A^w)H@#bs<kR=J+Qkr?E4{d zk&)u$ASn$f>*lsENmcd`uW`QH6_HJgOkR(Z#v(jADr|C?uj0narVMnCdG@TbnR9Y} zw?d{&=Nn0%0_Gi)2$be!qt2Imc@3!+QPvI2ix6NUx9`ioX#@;t`y}eG9rl{F=r4JI zetznvZKk^LM~Y=9C7`oReB0+?GyXRm3Oh_R`%`-DuESe*>kDM$kHZgMoTkUFCmdOw zM~HNGAj}+aYh+n@Q^crd*j!Fbi?%6aaK?4%%TjR{0eC+e*(2k2D@Lf%sss3Q{O)kr zV;q{D8(q@DZ?wbb7xd*6UgBc7KZF^plH5oxk$!vpy<M2;Mj~S5Fa!M&J1Va#2PX%Y zcLZKW#E4;oL*dv64u&%18lM6e5j0h8aMs$(mi+Kw76wJ$893!6g>>>UZZ!KCX)%B$ zzv>W5uByHc$}Y6QRrC-`tQaH7a$X3v8ve7u6~kQhwk!f(xhwUD@5)@{NBq&hkw|B? z50MhS7))sUrWgteJV}<rcydQ!K6YXLNI3K?o)4E*feRCL!WNZ|U_XzcFk+gjH&M@Y zz}o)JfkEE5VakWBv>9El+a}u*g^mc3PIjj9KMWgnYbfKLferQA_Aofdi-_{~^>z45 z)WP81{|AdW_-#(sS0t<eHA=?=0nC-j>ei)d6G6<;%lzO%Zutil`6}J&vAqBX|H8h* zl6y?YF6i*8tGc*)7Kw){w9hwJrc0hwKFfqJ!K`vBG!%GYJS^h(++b`I-qK`r-RBRJ zn-;{^LXmc>%cuOjH%&M{Wh!)kv_e~`+cXo=f`5Mm(o*$(k?F;4E9qlLU3pnZoO;X2 z>j=_R1EoNPu8zM8ZW%=n%}3-*T{+5-81b@Q;pD!gaC|0Fvbbfeox1^V)}c)B_Y}gq zkx(kmva=OYh~>m++%GEDY1l1)DO$e&`rFl7j5hC}sFrWZW>~?Z<QGTOYRF}CYq5+c zr6^oPBvedzi2G54ZO^iYshZnXJsK={_zXHpI{<_Ykrct#yjW>dYUyX%#==T=ru3ga z!Xgb?aMD)@{$QME0kM#tswPP}!VTS?Pk>FxEu~Laz3lsXi5tK{HF5T~$aYpEOBRuA z^~?hLP&^H~q~PQpZLauQOyzLX#Ppz~Obht7a}P;cQ6`s22Ye_txiYb1(|%lCPo?kr zoD#Nt?%+FhuIvG=x%HxmKnMsKM@H;u<1CrPUD8FDv438ls2SHNhlBuc&h0J)dGNDS zQ%+W<Qq*?KbhTK!OBJ+heX#0LTxb^$jU5F?^%te_U#K;Q>w&nf^}zMZ{8)6vpUGr8 zgAZI)wQ2?AT5cJE+Hbmt%3ll~H2vpD2)~IQ#smwY7rrm`GR43tfhv_SLPLcWE1Nmh z{61F%zZeA^Zmm#eRjKEatGg5AE9le<WILOwzz786^}2d02TWGGnUljv8W$q17w+Zl z_S(?qym{_KFs1HDPj>HwrY`Bt77sxI6R{dn?k^MA{J6E)xAGMnx%*r6=k4Y<0b-dp z4epH%(UcaHw(j_}Ki`6}Dar`S6T`|=+9(CFcD|zS(!f~Abhr`~+09&qRPH{?Ee7O0 z?{KCH?=8BXJ4Vbm@7))dEa-pzOmaZ*EWb_@<n$O4tZ@{_t3d4Nk1po{BIpcL;F_v; zRXnwTv8r2Q3!O8^4MCEh%Q+-WU1C%{G!GO*Uj`x8=<_e}Po5dThrhEA#Tvc8eJH~{ zelXB3a;=(0N#gjNkvd7M0j;~dHEEYW$N!yCtQ=*ci766i$yG2<sq`3J7WToS<`BzD zI}l4I0Yk62F7fQ``=QVCLCuw>1)K;ERtq7)br11`>*$@h1l@XnmzC}EesM>ot1A&# zBChI$L17mn!Q35n4Z1G`2WKU@XQrODTAdY}FqgyRp)j;LnqQAPza_0AG@i!)(f9W+ z(WQ8v_a%$fKrL?GU8%DUsyIVgywbN`-up!t!$c#gzQ??*Pmk&+ST^J0Ks71CK4T#@ zn4M;y=$r+9E2dDJlNuZeD$3SF6_r10@R<VHRSgS-Q7J=HrJ1D#f`5;lV){8Y_Y7yN zBUZbYx9`_at)=2ebOdm;Lxu<gIz)zG<V?B`boo5twQ_<!xF?UbNpC4*c~}8&BY@T| zzsMF&)poAxk{_(vLEl$9+)RE6cXF=1?J7=+phxjWN2X!#paw(z%iafsQh_+vQ!Qv+ z_g$#3YBm{BOo8(7pGm}UR`bzxWz-j2<x7G4*H8*mgTa2_ZxD*4?uw>pEvs5cmE_Bv z_)c?~+u*=W+GwPB*W2f4F-sSnh)Yw>j-cMsr9Ht~ivt^)QuQ;OF;ctmsa!Y9lNpY? zpr*gh)(7@NN6D+}gvoXO!OxCq1RoW85=Yb&;f(LQp!z}v-SwLk(Y8K_{D4`MzNm@( zgNXIX@;L=N`dvtT)C7umWfd0iv4(Jh^&-nP<qmKDQe3Vjf%vU6iJ>n)GUp+-Z6AEe ze}Ao+CAWALWB8RBLb?|ra|*}%7lQ)tEVq>sP~(JzH?m;nntygWcMJs9pUV&0p-G^o zpT~{8Ghh#RuZN9e2V*A_ho4iD=gDt853Anvjv$9+Kq@-g?X*Rodv%aY@1uW9Z?&^u zR*HljmUO^O@PkD)!_p3!wjlYj=1rG{680M$5rdx3aeQ~ef$t~qe)c@f^y2?KE`v!@ zJuE{L4)`BuJ$0Z4Q!0RS^FDj3<|Ld?_BU|YKJ3hBaE)s1+E%&+_~x9JXT2*&)7(lA z(VMJxFFURRe?|$tGHh{ybFhay+dw=e#CQ^wh2M-ep&sA%#vwp^XWP@PC>VG5@!68S zW<B~!f^i7lgQhk#^o22;&TxzDsYL_B=Hq)mQH8eQjBi)Aq2ps=Vk`Xn*zDI*18oVc zj6X7vG++Wa1^jmK7k(8f7=@fa{x(t&5+GEF@E7K+vwjFrS?<--Z-Ge7Yd@*&FiIY( z_OEL>8={5zB&^{Xa)Ia9HG}B*P6KO<>cdQ;jt~~&LW8L8RUZDk3fKcx;NrMqcG^vr ziDZIba>A>>%QeBqHLWLjE2nRiGsM&v87aL3*&R$Fr1u5sD@=}S)iqP?++ahnJYkLU z$Y<PQsM2Gn>QW6iJGJYHgMSUd9beK=*;XT^v>o&kM*M;Q97Ui83FBy)7rrIx#Lc=r zvjh!Zc`f^biUc}RvohnfYg_WS8r)TKw5_#0>K{*%{z%`5puv;t48qKGft{klU)*%3 z8vkUq*?oy`UJt*DjYytAxvG2v8vsAvM$pYO{Hxi00F{XD{48Nt6Xh3G4=aV&cBU|$ zG)LRYN1&w8i@=OZ=Q*U;ICO(;FGKv^(2pmPDVLE8!Q790p0gsmn>w6i`qa`^>{qT< zT~L3Oj2t8+-A%A(z?o&>-=Q+fI%EZAm2Ww>I<NR+u<i<ci;oMl7Gv*HST8YS34R-j zoh_X%pXxSXx{Ynf9X7?3!DYBgeI7;`<a|p0t8-RwP*oGFb2fH)#UH3jzA`McEr#jT zi&P*AIWg}=kX$}rk<WJ(bT!r>tieFLzR`mJoDrp0RIA*FCzcOW6GI+;qJ~hKS9D~U zKet4xvI10zPy*MEGKt_Kegs-BYWkUYd6D$N<YK#Y7FWIYxY`(;ZT?+1@9m5Vxd%oc zqQ1*&k?9nCb6Ob5><XlHSPa8jAzng7(`ctV#HjExnH|dpN-)WWPY*J<)E4nL>tLhQ zd=La}8z(uoNyK7!pzk$lDiW28v?xJK{T}I~7VxdOJqP-M(bZ}yUn>AKoZxPHkWQ~C zn%TIMp9|KIs`M<@#HT*3QcO=>kVEaSwu4YjpIVkC$Ycpt>2UxlK8(a&1<+Mg<Fwc| zVV5Ifr^Vg>b)w;f=iclT2uH&^)3Vf4Bo8XJ-BqF@S)yU;bd_{ogj<TiS{veNRdiOa z=a%W}&brnNSEZV9^|YMxkn_C;13Shp*q8ZhXe~)7pyNq^R!TPat1{4)!Urll*do}u z=bkQ<N4c%WcarTz^GheclU-(KE~TKEX<`ae$)3@r+lt6mgVvRat7-b*=?1v^40hL+ z%&nGS*`xY-%3nf^)A`e!-}Vklz=d_3VfkyLhx!sHW@X>X+U`KJ$LZ~th7?H5D4vN^ zrkv|(v*4X>7jE+!et!tJzJn>W>6Ad`_@GZgM7c58{()4t0-Dt!kAO(}yrkb|lctZA z3^6X#j@AlE%AlNfUI}g}$lv=!x$T0p-q#H4E$iE0tbsHAPtD$UJ}=qZAC&R1*_04e z?7tT#G<LIEPc5|l!wW1*zKi0sv4Q`c1u$9fd;ER)z_X5HKt;~`JksHZdvfHbn*%%r zZ`c7W{%r)U;5d|@w%y_2-R%NrbK(vgFb$IV+0)tku&km)<(((vVc8Kpa((7SF_t8o z00|u|?Uwu8M>36yGKRmsTZII@h~p!?q1zkEDlYHmh;>5O$S`9&t+}U=<@;$k3oPH) zo@mAimC6&5+U~!X?awbkoe76u3@*Y(Q6z2C<zJ}&qSp#9b|X5TpqcRD6P0EgBC$g= z`v<b<0B{t0`?4*^kK9;PF)d0}1h{pYzF+yPo336;%H2UAzSAqayM_?$3+Z!J%AcDk z=j5>wbbJqS5ghuJ8wX*k_~ys~1$S>f9Cc~t;nS%vneQn3V5cGK(+P=Q^2%R+xY9bu z#E;`*jw!(vhxyMF>&u>Yplwz5b3bPYHfEMnuIsC7A+0kpJx;|@lvaNiYSmZ&G&@~3 zJv<&UJ*D>xU|i76vP&^zB7D`k*C_0WxY<eYws`-RJ=gsZYY#&7iU!lI(IODGB%P5z zAbbpUMe}@i9zqQax*e1!o@ZP{`)hx`vgKMy(CYy*(*D~mNORufYkTgkl_Xgbt@l|4 z08~~2hGA+}Bq}5Xnh2$^60NP8(7^T8vMx<@l2R>#Dy5RmZT=>9_?fX;yQsFVAGaRp zaVexpDh{zsiem!g(2-GGe@=~CR^?kS|2mu!ei?eIe>MPp@9Bo+jCvw8xb>sXObdRk z!5Glyx&HOXu6#$Zgp4;4h$lb5@#iMVp8~L3<S(`jsS18~>LHi^aSnI2AjE))gnLO! z$V4w#S*7NSEKjk0Gn}8{-bjw=jPxSrS?7ZTGWsUC;<45BH(WFy%P}KhDHHZ-=X1=+ zlYD;1j;XV_XcnQK>!M)gLFl`52<<@=N+bLc^u9QYS<hRl`g4Xs)WbnjvE)ykm^Wu{ zUU9;19aFCv!)Y{5C5BncP4pM20Gp!VvJQH~X6x`CJXWW&Z=>!CG!WiX4vNr8;;ZRu zrO>JB>lWQ~vE?FA5l~n`KQ-J)#%c1ngX)?&mf(Ocl{;hcBzkF^OSg{Pj!5zYI?W7! z1no+}jBY3c&P^dysX!G&z#Iv(*IQL9-P;~wYM>Njp7fyr@f?N)lb$Bzn@ZK}9IDGM z*&*jSGTd$S{8>>G=?1`2Y9K-X@a19Ic*Bd13E>6*S<e`5URMn#>M`?9>>=t_l^}vB zCfj0*E(zM!!JcT36^st!x~~8b*jxHUp{IN6Tl3ZhRH!QXuXkfNhS^^z+05aTPwv*% zke6MIEr8$FqGj|p)$NTWoHyK6TBYW4rVc<9{QeJ7@O=az3Z|f`?tT-H^pDBiGqJ}! zU1{T}#k&Wj;QWo!j@)&Q4p#5r4dKDHK}wqF5`V*WS^+&(hm2ZPMeg9lR0saZZW<}2 z8T|Ak&g<&WR^k}b#X)kBq;^4V<4|fcfKVmgiu?r5vtaH+{+#YZ^W0Fjt9FPo98iOm zzm)m{H5go$I++Q-h_)1yCK2-O|GhPELn_Lok>Mx=mnIFkwgfEyfaQs5%~ud+_?VL| zfC>;Vcv4V?Jm9sMVd<6((=SK(vBYSYSG#}vF<EIis5*G1e=~7!m0~&2`t&WXgeh!` zZR3d4d4*rP4N^s4*)AZZxu>Ps=%!1u-Z3m+%tc-TjT@UPT+1R&qzIpCIHm1+mhl#5 z>us1fXB+otDTY|28f^c4JYT@AcF67X0g}dFlIdpf#%|eD$8*^K<_Esn9p2*pOH~h1 z*0-$Ujr?xU3zjg}w&NkK-|T2SpM<Td4@ink9og=LPkZ0kKXdagtRsyJatj)^I#-_Z zjR^=5t#^f}5^q<kbBDDt5J?qKUlq6pd+6QTS0FG1oi?Apdvu~#|96xfWdf7+_g;Az z1M;H;aU1PQbo3-CLiIK3sPg@(F-*~r8^xuVxTIW#e5(v`$w(=nhj<R`DQ07RUKqn% zbEZya>s{|aH#0(<e-cMA7<dIkgIJ=)byNve=#A0+7Kyk~Sm4787T<er_5}zF!m{{% z9gHo)Fj0!wC?=+$czwLcJ#FV5iSP5C)&dHK{$R;^4w^@;iqa^bz#nb29(*cIqWcQ5 zZ?F6c3I(w4=3B2d2YXbCKJT+luI)2)=tpwtG<a!IvJZM(ZGh0e$zTt#0x{WRy^kyo zhv=-tQCmFJKTSiyyA_kjp}yM&>$Q?AOc-gRyznjGORwx+Sry#@_ZdER6B*>c=y0xN z+4vPcPX0srd8N3B4z1p4eyROX1+p|Kw|P5D5DE%m0hONBSTV;l;g9=i!<G|nRr{2M z8vb+G)c?g*UFiXZU~-1N6?pF1nK@>NT%(xv;_A$FbS2~qU9}OiME^$%X65>Sd+<Zc zj=DtSm^!`OPr8coE4UC1f&cf`dlPoLY9<At>>WG~&>PXit$z*T!7zCvprRP&B)H+V zx8sdz;9K1FxqIK87ycCg+_I|#`INTh$KSu4p<yyhr{9AaS+H$cLAK?IGq&@?68&7x zg+rgAFQiol%klcRL1@HJf^Keoe#Yr69jpY%CNzY=V-b#hX1H=0p8g9r@m4f7++^kZ z+LH#RXWTa=bANwb#L~Br`9f_3+*<|?!&Bj}pE_6w87++oRQStDv*MIgzT=}F4%Cy+ z-OUX<;Vh%<a-7?D8HdzYYcl`HpFY}Om#Yic(4RbnK4?|rUZ7C?W4X8<c4a%<Lyu7B z0eaL8Fk&%`M|>~%yH=b&!8!>e`-^_Ay0x^I&^}!L){u&Wo{`=1XKH(ZRcYp6%rWTa zT$)*m*^MC3ly1g|ccVdaqTa8_w-!Jy7s~_svqLh;>c58}E705=oc}tj+&fFK<P{Vv zz7%#qE~S4~xzk(H%_z*ww2M}^GYHU+_qMqGQG21TtB-KMbmjxYK*pF+M<m$WpI)kd z&|xm>5TO|hI<7GDMLOU+2m%)LCKv~ALn+_vIKa?8PK#+F@YK?)j=>$0OSaa|{93C~ z0xrvi&xB0PEY&%lL(ZQ0iE0^=kba7F_)6N<+Oayn9bCLf^<2KU7SJQv%(s#4MLwTu zWd`6Z_BcC+_CRw-m>w-e3Cv~E(>WZT7nv6sUfpzc1i^BM6Gbo~-?5@DW+2c&J(b93 z5(|@<`!f{u^-!Os?@WNEj3AX#lI9d<oQ>l{3oYg+S&{~$7(d}PcSAcOa=ZR=tydmP zLE6i5k9raSvC3CKah>AN<Yy~J(?tyN^eTa=QSK}KAHA%kJ44Xiq=s9$nvGp7-RoB% z5d{EgiY^Tj*u=LuZw_=OR8}z3mXg!n_EnGW_xIWb&i?D^P2kRCAa78gYRsV)XhbZi z<_PGbJ0lUx4GiHC7+ca(qPy4(Pl%iszU_u;m}kFv?1@8%ReK(<+)EiU)+8|4=GPvS z=+g~nk{&bNjwF32T8C*1B}C2M`#>!)WWpDI{?k04zDq7DNGfXzz-L%+Eq(fz=gjc~ zGi<_De;`i%E|?aLP(!pZPgL2`k|kQ0zvrHY$!g%#ja<2k+H^5J=cq5nj6UD@OP(g% zLX{8F(u0rJM~9m`O2U=ErwQOKrbow!<n!-}thf%<7V`e=Xx#)46VA1fpc!kMW#0nf zKk&J8L;$r2%|Rw}{-#~sv1dm>@JqvAVd%T1jR3TEjTY+iY121bAhbsk0>gz4{(G-< zWyf)SpjA+3D*ykhcc^#xEx{@TUIxc~nK<R-ipu%z%_qqIIUjiOU<H^``V;pd74Ul7 zFY(0nk1H$i*FQ=ydaD!=V@B850d(_l^<XZP8G)fSI407B0CPv!$_qkMr$fqS-)1`# z%XuTT6$Ci<zPUAt{>>LRjl3N?-(K+FB?6W)C4>W?A4nC~sFc=d;_Y~O@5f3${)YH- zu?!px(jJxd>wy~}5};gg8=jib@7s`zQc!h7I%K*VCIIGo5HN6SII1PvOSxv_9SIhi z?(fs(MXl(}G+F;)ACsND`Jwh|&P}!stpl}8#?EY-#I$yDteIQ`kwO3|OH}{d1i3&| z2YwERu}QR40?tZ6BYSReoBsdGD4g%r0c@`l-ed_tfW=WC0@$qIg(1nH-=#O|hIs%e z=p)1&{~9<vc5BoLw=fOF8Vu~82dY+XtJM|B{%P8NH{1)~(vmm4t31ZmESpeJ=l}rB zhO~Zp_yc@=B@5v(mv|GEG#B6Uw{Y=dyRM31{Tp|%Cb^FuWbq9`G(zs%^<KL>3XGt{ zHbo8(eWuX-l?v+_kCJU>1h<c$Ze??Y#N9FE_1RBq&30MuAe*T0NUL(W0#?9%-ou6- zCyIE-_ojQnt|@l#G~%w!oC1bMvcq@Iu6FoDOzWw-ft)QEQ-R>?X)mq=X&2M_>TvUK z{V7NLHx6`BTlKP^dr<~ep&dT^^|p!JC(dE=!0;L$(Q)3{weFtUd?4qA@zEL#>D4RO zIcaB!*RVV5xQ)~mIn*%h!EdK`>IHA4An%pZG=vzp#}GwEQR`$Mokt5**KPIEzaHS= z=W(<Q>ZQP%)$q32at+;nbwueTvBM6)R|X)3!G<K=Lvwv>4WNBPO4wtunBf0DbfRfp zdVJnv2dENZ9}tiDB~y#3zG{^7Z3-n@SCOWLm=cgZ-rYZ4^m|pvtja0_-Gv;s|2#%z z=Go?P{MAQ9gaqLdKeqKhEh8e8c114Ty_-+pR{CUjwUS_n$mA$>oyMNZQL5rl-xA?t z>v`u9?^UXCbI7}w!4vU2`2nfQq~T1$<c3?%)75{PsFhzopBV<ynQ^<?CX#F}8YJ-` z?I?81gZPuP7r5Bu#=@7yh+2n%^n|M2Guj49#pQF*A#D)TI`z%Thq4~RElnWFXc9RG zAtem)YW0$IA~J>fz$RnX%zlk7vX=uvYhM1YXSruO=8fGj>KS=}5p~Rv1PIOar<H)P zM`tGmr&E4w@mvO3ZY^>RAjT}`z|<<!$`sX}4CM#AttM6Cia7+@THCoNv`v%;yS0kO zT}8hWT|R&ONArvnqEs9bB+sdiqY3Nrmmyi;pvo%}u*>b1ov4L=lE4^c6K=40+J#RT z9IJ2)1|HO63Mf|6E(SLRG<slAZaBpq5S;`n&oLk>w$#nyf&*s}H)LubYD;!`nczUc z?bHJFM|NjXDn+XCKvq@aodC2q&D--xJrye3#NC;6q(9P;W}pHFwNKm8xwln^CeXJ2 z&OXknYW2#6iLxN2j<*~H%<_YhaFo7hK+ZN>86YhZI1Xs1kPqxJ8^^=V%qa_-T$@k9 zpf`{S1sZ#N$On8}XyT{G6Q&e_`fzs=X(vc;yZRr@gKs^!?ZLn40Py;|&;rs;;@uT; z|ABZ96)&AlGOms)V;$%d%z!?@=YPLXK$1@yD9Txik>HB@B!e%vUX%V(Z<<gd{ua=; z?xl^Dg(qpLT{?(xIX73+9d9Cb2_VAWdw)KzU+dFIuW^~aS)(^J150g?SXfb1$ewjh zE-qx>VRRy%FDw+Mx_4T+u|>oVgpBzVU`c<75?uTbR&~X8OovR-NGyISAi%gzUmu`y zZ)3o1&rYnSg_)HmzZ;26Y`CHsBO;vAK4+`Awm&T9&pXK{Z@cT|i4$6HagpcHxYN0! zB!|_#3yn8{hN%A6AHc?#{-zu!Pbb#5O)bXPP!}rJlj*(8bakz`3xB~U&eN@*^L0$x z+JQeg7r)dQ0}`L5UeVFg&xp_0BUlvOr&aJ)&A2`#MnwSb!iZuFnhVH*KmaN>(di#K z`(M58qyd1%-Y2b=%m9*2_%iTFW94BixQ4M=^`kaF&yH4*gldIY6PRh*cQ10(%sNp5 z2Z<5@)zW9SxhkPg-{Q0I&0S1+5CE%j5kzr-JeYeH)1`poV6}=mwX}hSNd{t%2vE;# zSZC7m^>!SSjk>oFXM%W`PKhkQ=J4-*q5w*6E>gp2&T^ClPZXwb)APqhZy6>}<VI%7 zI4I~#IsUz`$FsQU##PX9srS|urmUV1`^!Bx-ilGC1l*-px_^oK6nZ)D@!21>6zJhw z^3D>v^mKOvzd4*`K4f0y_TUe{3xhRv%-v+_r~AXT@gx4BsNQs~f3TtXl`>SO6^2ei znc;_yj00XU294h)%9=UcDEE}&0If=S3Ur?|Q3gUvXsdix3I82s4522p8%g)n+k>>u zPYV5bIf|xY;mARW#H;7kYq04~g)}J+P=CG64(f6YEtRF=E~K&<{H~@qDWrAZfgjuk zQ6VDWhcl-%KvaEGS<M#XfKz_H{HU{}FN}W~*pccUo|S1gDehUvby1-jd}Z6<9_M4K zuU1V#$9-X@g0~Jrgcall-XH|@FwSwREOn+VYfxKy+_rdEv<MO8U$FzGD2;{XZa2e6 z-3MC_(E<E9NPSk-;`kQwn;HLbw7Ev`C)1DRGX0Hyl84SWO)V`+3Igp1<*qP%!yvgj z4E7Lg>44~PDcNy^TBn{nmc@p~t)5_WzO?J;&F5GGZQ~<;Qu=h=WeS#8DIl&+0^T}9 zG3HexQ78l$rJgA69F&PA(pY=oj!kM{w*r?7POgdtcq<5|s4cn*YL9##4+O~8{t*fZ zd5igTeeAqfLx8NSs7++YC9UDpqI<U%vFBhf+l}@<pP%5>tg|?9<D8|Sik4zzhq$-7 zNkur1TNn&Q!LXMs!!%T1t+3{pe27Tluymsz$9Td&9PPT3_J%Zv_>s#S&Ld(f4S4ye znNFQ6z#4*M0jX5=&p)X&NhUi!D>^mZWaWqb^AG(6!=N5UKUT*8;0+A)!rZ7o9nx{O z2pXd|o+Mh>TLL^l+iW53Zw%GI3Qt%t=b2q8?7Z6YV<j5>Q3jE^rFlOMcB?)N>IwQ$ zt{1~>zYEbOz*IiNIsNtkZ@6`Inu6qyqu*4fZ-9)Wh$Cl;I_E}xE?%Ivcnu>~z$3&- zjrTL~6}u<NAA%1$3IV!=;NZ9vkn#!Z|A+YW|0wi99qg<$TI?EA?Wj3({zt78j&4sL zF6LtZKwl%df2!#kEIj}&EpYLoNX!cdmSMxxPaW?`lz~OyRTel7f(QE4Atq_K8taEN zRv)K6^QN%s9qGGI;_P~cSNFlfoDDRS#}J(NApV($?*Touv%OjOPi=A9c$CZ@LTZS4 zsFe_*;WkyKnOA9B+?j!`Ix!S(cL@xi#tEP#_ZLaJK^37vG?JQ_n8_(EDdpin>7bWx zsSHuSBIC3k%l!3KLd0ImaEnPR?Dk8K2<=<QOkq+m|FmK%yNc>*j5;#*)Xd-g#qAs@ zzQ~mD5BkAWRpUcG7mQV^pB0-zRN+9sP6b#h)}S*0SHuON)?=mot6X+6{GCEB0GFg( z;uh<t!=GW`o&f>cL2c=DQNrV;U!2RWAJSW-hw*>f1<@Dh1nbI720s8l&L-7G3S89m z(R8b(3Un8y#<zVkbt?iaOfLm1TI1n>@n!%X`cd$izX~mk?yQ5*oG_I^G8vj6*ukJt zL)lZ05i*^>DP^!tt}da8s)YbcU_u?n)Hf_bs;B?Q!*e*k*IfD}e(Pem3j?Tt?<n4Y zQ@dC(?no_OOJEh!<1_@(A;>OOZ}6$GAU@<F4jj?;F3WB9>1Ocw!g<r0%J@4{=BH=m z&gqXMQ%k&Gje6qKU<ettSUyr44q>mkq!o;@;iL?j;GccpbVU6z6^d@8UJVkrUL^Zy zzi^4YN$4x{Kw5eIl?DAHE1F;MhnC9=K%m-W??Y&5K^3<d8=Bkz8;cX)3orf-S3g}U ziEsF<H@HsTCl1Fgu~a7%KNOzD#-5@?z^X;3qFR9aBSv9HZuB!NO$LDG|L)rzmeBuf zd#vjy3$zU}fBSPwZ86|&pnkv27#AtZ)y@UCb}YMA%gf|7>j2qAroPs=+<%VK8=;E{ zth*T*KMgJ*UT`!$2t1{c^fQDvoa((8&#yv8uj~VNrlSNk9^T3u%HOh|?ormeUR8q! zDmSnSUUFCg>Q+T5l=>I=W#4MIf*2(zNXT;gn*csgGZ>@%cTX0tCz_20yuLOP^$9~M zk>Y0DMtA%z@rObSy(vLkWF8y-F!`{Zx@WM7*F(z$M&5Wg()=3-^G1Nx=%hsfa1UWQ zFt!w*m3_~T=5ic2vQck#9G(I3cMAZpCSr}Ie3;r64ii2>Lu7=1n>1Ld<*G0Ea+7HH zDU|NT5MyOI!rf7d0xu{?qLFu>_GoA}iM-|_m;`uN_g6Fhf9kUf>%1?}p6+((g-}cg zVuk89N^*%~!(*DnkEmeqq@kRCzQRH`U9@ev-H9|pL`YZ5a3GzlCX?&3CR4&Es}7LZ zWTa<bd?vb~Q*g9CGbSwC^X2=<N@(21GN&OD(&U>ViRq7WyV?kfk-novWZ3k)Ffv9y z>)Z>0jVUW;Q6Q|d6&3!n+bqzM_p6-ckHt0`LD@_Be^mC?QB`%{{xBfIK|or%L6Gi} zk`8I5JC*LPLpO+&lG5GX-J#T>yOHjG_u+ZI_x{E^-usUG<1fa5z1P}v&7Pk**WJ%h z)`0XuJ!~}cC^HGXF6vlfiZQsdf&hX$H?LLBAiJRZp%8}y?T;z%CpLxrexvJq#Rtgi zcM-EG7i-71rNggc@^Ib%Zut6yju)WRt{BDicF7sVslT0jV4gxW;NaKe(k#~7<b3)> zxeS@NSY?x}H3A>lo`t<osd6`tPjMb@{pIW=9c`LyzB2nBie?^`v4hi;T3(ffR!o!& z&KGuPlVfU^b^FC$n$LmF`}aaf+ZcHBm5<1$m##~`w%!2W1ck#0ve<p;A~``f%p$D( z+>STM?nNlLw<>T^#Tg=rvx;zBN-+tuG(GyVsG<#yPi33a4>iapKBb3SYIM!{GV;Fd z_3?_G@LJfF)SFjA)e?u{6amv4PN_W182LzWeR?fVi{-G$N~cd$D4i<}ZJ3s)0)VpC zAj|00D(VGr?)2gKO#=bs5w>9urxU#9uBhSVv*tP7E3FThmYrIMHXr>Hah9elaRcP4 zPdS;dTF#DRa1B1^QP*CJ4=DTLE?ub>-)Sa|q`i)2;8L>rekp9FkbU5a0hn9z(o%Tx zr~u+!_`G$@cxCpvA!#5>tmX|(Rn1FK+G)M~vKX&~bikL!D#ZwCR;<<gg<^C<;3J>G zkAX%b35aYy0UT~jnryTG&opG+uIuu^RkCtpc$!Ye(-uHXI)`4_SZE*vU?{9ds(>{K zw~p(vdD_c~su4Y(dwbt~Aq>J=<!O517T`_g=sXqc9Y^2;wIt<w1=mn4`pNI22Bp|I z<ZwU8(LJ3dqYS)IA>UCLZTUIaFgzh+62FW3Y>#0&^u?rlsDY$(-fGA5azlm#rQjF* zrSX*M7;4R$uUR#8VMLdodW6?Pzoi|-OkVfsHy)i^Zh4iIN;PpiGB#lb@ZA2D;x<qN zsPT2G7C_?Yra^s^#E8q`-_n^t-8Xed3#d8$FDmX-Zg#7dt)2M2>&Xxw)kjQuXTKOI zIN=j6_-u_+jHibrlvD660%mi+TVGNqkA!AbG86HIC|zkxm(Yq6qoGtF!D-}c!4;g$ zE6o8l6onH`Ln6u`0=o&fH=b5&e3UO<vMG`E68(@qjbQz!;%FYwK9GvG@Rm!jLS_}k zsD0gisSF3WnN<{iFT_`Hw{B0Lh;7MCX@%NTr8#gtggaqkG)l_ZZ&U-R@;900mVGFr zE+YbUbMbNQZQonm<NPm4^@_58m;2@XaKr1afp~&vnUcAAtm)b%Vc{ds&PxsHm?k{l zh$_ZuFUIdLJwzN35&e%u1N`?u@_s-;QjH17kqvayWGI6*Y4kBLbEX^V69KH3TCY5O z3sPl4&7$<JNE_xH;OdNX1D;;r8GZcp$s}tQU3)1sk#2x+Gr^o)q9)aKy^;{A@G9n< zz@_DnlrVf@AWU<>@tambR!W*RIUWz{_pofLE0mmoI-x_6cGa-KUdPi_bJYu1EoZjv z9!oK>&efvwqTimVTBOq8LT8SQ3~)<Cj_te6#_N$93PSuPdMeDpnp|U$a#hGH1jyTI z*7Sf5nm3wdOK1F=S0%IX#$$3|9aNnO!=kgKU$1h$Zbc}_NKe%l1jfhpm3$vV;1xZp zT!|F-HgVNn)<KW9n54_dBP9lNpP78(!q8>p4Tr3?W6lb@<^=dNF#7fp(vThsaRP>3 zYAiu*C&Eb&+0;~_s6?G<lIu@rd&cq%*4OvmBtY>C9SGvkB|D=W{U+=}WeV^QHnXwf zqUeQMth{Qhvc5q<U5A}J?maapuPpGQt#qFPRtB4Ub*!0QV}a=?Sl;Q12B@rXG<RXj z!<JDrhr1=>R4N@<t+9FsyXq`c1ifu8Kkj{#BaG!5X%%VfDk*!Uw9ROUZA9$07kMO~ za_^-HH1lhpjIMvLT(zE7_@m~F)e&ybTY!j>PY2iM!f#7x*({RKNzf}SYZ&QM8k4W| z4p5WuuuiDedml`zzU0|7t^7@hbVW2adIMcOXU#3ppg}_9-HKPwfE}=O<w~U#_*-#B zPk*se$c*71D^+jn_R!$6X5QUqch64VqKcj^tEtwJ`ze(5^e->}F2%gnK@uVIa?VaJ zhX%OS=JS3v#LNo+cgbx;=>^kYR!x51nRV#=^_z!62`<6@uFtx5N)kp_)UsQ2jwvOm zPFB~f+aki-b9C$Tiix--Q-qOg<Z7Ufl5bYr`&IDFmjItH?p%21KuE;Jxb(zLb=Q6U z<LkC>v+dyGCs=QcodC)^K%L>?!3Dc4`5;<0btZ@q_6m<UB%|TH5ulR*_z50vkK)Tz z2aj>{QBKOY^f|q6D!+9TAV?=nokKH45xQHlGW#C-)OoCx@7s^Xu0=40PQ@u(UG5}! zTaJF>^Z>C~N=zCm+WRsYP*1WUSr=_@@6gPAS96KI@BF8BOYwXotS|5V99eYuz|#ZS z02COA&Y-pYIe?=)wkq+fQ&kU0bjJTDN7zC)Mhp&nDVM(4fWP(Y`ZB1#3DtL&4Dd?d zfXF`2W6Z`mtqjMJI-pR#TIy{cvLBFwJu1qz@waQvhDn~CtCv!JRWYq5ownuz*uUhS zCa)eg%X*7z#DwbIpu5*-oc*$1G9>oLvhDH%{C?MV=c^EyXa6j+{g4=~6_HElm+UHl zh}d?EjF!qE65>MkqF3Uj_>Ba1Q|o9Be%Y&ZJQa%k0Nl(RY8R2d=n~?BL0A*h%6R05 zwV}B?uTR8$7HRBi7Os3>ZMD|Z>gd?ra51>~80y6md&YzeQ4ukA4pCZYOsmRNy(9VB zhI}dU#TrW@#(3U@PQTXBRQ@9#CFP$Ofp4|zKLAXcC=jKI5Fx!EN0RTOrpqy{PW&#f z$X9xQUVAZB8!3^`$d$4k<w-TE*B+&e*SoHD=&ozMg!?Ll^fLvV7?~*iWLJosCQG*S z;9JHE7DI+IKWMnMh%@x&W@#q5n?8KvWF?1_9kiWA-V8ZL*Q1dXT(&(?7J6bkA8A@4 z-_E~>vsH}pmYBvM+ENbCgE@UhP!Cd)aV?Z0E<JeSPycxOBZ;JRDzW9=nW|MSOLBDj z<fxF(J^<tdLPXlDzsw_);^!lm<-LiN)}ijDIR&+Semy6w-kwSJ4HK<Gmzo^APNtZZ z&6Lcvc9pPK^ixLHCn?G+XWmZtA9!7AVc>{Hkfiz@>-yS_k2Hy`yp%gvfMRu78&hwy z&|C|cP=s$J!BMPA9KEpn10)yjAfcdOHthF%v6zxHX;|~Jyc`9o5x}fM43JfM$x$8K z%O>oQibn8+B3bih%U|w(X%<eVPt!D!N&U%6*5#8dugIS`pJGujWH9z=()nw|@QLK% zEWOefy?1mmli@&a^Dnw^P#A<d#SldUWh0<E%U+qFIT`>fr`YJso(^`tM@F+xtLQye z?}CvSW?u`lX|QYvP+@S6Nu?Nb9FnW>Ud0az#<S~@>OiE#x9hpYHD7|nJy-Sh;rWl~ zJr3Kfj(l@W-<EQa7?H75+21HI2ylmHW#XCzfnEZ|{}?Q|+)ygmugLBkJ)VBV5yRNb z(m}7XKWZ_R#jkxBt!fA9ybU&4q2k5MWPv%GL<(WF=13Xp7MA?T+Pnuk0itK-3;Y3< zh=~K|p?5BKChVIx$Su8LT35lF?AFVS)8=xu*{_vlrG(^EV9Nkdi<`$<6td;_Y!5Sq zB+JZFZ7wif;>Tv?zR64Y0r;z76ZU+Gfn1e6VJqYaTw|4@3|FRKG9&ryUsB~2efRzN zlM{QjB0eYf8ljlzH62}^+1Ch#UqMTjlZdeQ3$L@zs*PEM`{CFK$og2DV|K=h+L4iM z{^n#cqA^Ao1$czCr1-;b@la+W8-_kaf@9N0gnW&aAZ5RYSCeBDvAVI3;{7$FLh7C- zCsR_4la`%^JUdc+fm3<|mv%LKbX%+C1~c%4#r{&&qE^sDwbe;ASDzY+%E%FK*E#lG zvYV3G&RcfNap?O@?-@<YpXK%j&l`m0`^`HPZ$N50s7n~#fq&TVH@pyO`6SESiMbVs zDEG~31N!6X#mU6zW!82IuCCCLM--yX8%ZPLMZ(_|^dEe=zSrf#nbMnfb_cMsxf96z z<Jk$k!zYuc;UP}^nEaD9qw<Lh8mQv$AMkEF3pn11U%m=o8oipQV&v0Z*UK}ZCIxo6 zDXuTU-%XRt#1lLw_uhlbiBMiXnW0_jPu5y|pvxuQ$#^HNwN<C=!{_*0xDNCnL_)h! z^CUFA@Y>rM?cm7J5VU1LygU@-_{^vS438!3Jmgy`0X2#TaxGPp(JF}xI+;nhNdG=G znw1%Dccg+$!9oRZ%SKR%=Q=9Q8r62!%j=fvA}{SKzVuReHseFs%sTn|@UtK?dvD91 z=h5DR^ug8o6I4;&qm~m?!w1Jhhe+?t0o5;-^f_35rf~b{^tX&iRkG!;)ee{cm`?hN z|D}I>K(zF*;-Oy@Um7>gf-qPKUhO)acv%VqJw8qm7@u>V4WnpRvTv&}OH!5_elBcf zaAge5-7FzqHg;*&bIrmbNw^S`biD2mWFNT*L+v{LGL?X^zkpWM{|##Aa!5r()BIb$ z5kJjBvfTVgxW+Rl$dJK<2E4uJ1B|3NX}oRNi^?AsAK8f7=?DBN!W_IZkVsTkMtqc- zZ(R-6jRjx+tkyelDOrl*qkj9B_SYD!3Tzb)`P|#z&hWeXjgD|7-=%>Xl&JP|`MMg2 zaiHSz<$cK<*rR?Zb$={lV%7-)j77C_F+o8Ov8vq%&$nUhyqlUI2RxhEWb?-)?W$%$ zD_N&s1q>MZm~h8@YroNi9ui$Cufo+ZD~cI<gkg4P^+A-&9EKfeG7LOr3aq85HDqx3 zlq^m44cC2aX_P7_InPZ4CjqX1(?_w%pDT*xpp@8!`VjWVQe(dUF-i?}S9=vp5fR#Q zR^^GRRVf=G0m5d523#j_jd|77C1dbpHIgX2hD*|`q>`itEUeysDGp<31ZVm`x{5`J zEdtxSiKML;0VP&H=72rGp3iJG36W0~uz}@upza9@97}t7fkmAw^=fK>9f}RLtT%|P zghRfji*xp!q!8usOTxn#i6|&KM~2eY93pxImQ&qRb_YPtvT;{0a#~+~N(27(2{bG< z{lb+JZD<waXDezio2($H{W1_X!s2v|5bN<>U|vrV+IMw5WSeTyea}y?zvPBhn^)od zN|6IPYsM`b9XnM=EZ_Kx%yx6yZuiQ^M9GTHMO0LEqXNZ7;=YN#b2?p%kL&L7<vnx; zcmRfrS>|;f?mDy3zp*DvXF0|ZDzCOta5upbCNs5R^ohm@n<soZEG7*mNh~5xw-@Of zX2DW4DA&eIuJq`jEu8ew6<1;gu`&g4H=avoXBOqZa-oI@!@G;Y=nf=qRgt!9g<|b| zA-V#s!Ss)X)_K=u|CzV*99PIfJo2Is5LuKd*&nyA5m5C%OF`8qZw0ByR^hNq8g}C0 zd!haS4hhu31+Jx(LY&CK`jYyw5GYEojl(v*#>hR8qNz7y0zgDxrw&ihWb>-_nI^^> zmS`=@W#R?_=K%^NyFPi!z*Gwihq_xd@NauyM0t9=rI!(GHctjL5c4)FP!M5-0z?d( z6b3|*>}A&jv0h;uMFwO4o8j7j>=+HU#vm*v$YBFMv2SMUf;4{5n3D-r?E~O>D#NeD zcN<`q$qipi;IBp6B?0a1=)Nc6Du>6yr-hdFqCh{4W@h+7xOvUN5(%-+9~IPU$mDO! zm;B3@DO|q<(%hg9X3xj8Bo+yYOmYtjt3Gxha}`|Q2n5lX&e_m3;3pX%4M>xk5v5(~ zVGr@I>$)ubSP*CMS1&&IY=R%7jO~gBR|FoD+*b@6m~EQGJ-kxUy^6__bOIiYWrR~% zOO=%0ePKWI%Kl9oQ{IBy80L+oQl2A43_DybGbGvK(Q#B0#q)L$zt<?*>bfxCQ`}{D zJXp`*6&0YCR)#+g8Qq*FZ$HTC_ooh}pH{WO0yQRX{vPHw-c^sti9p39!FN^E7Ul1& zQy)(GhBICz)y#(JL(8%se##{RTJy(<p(1T^eXY%m>&<SxST5kJ$PMQ|gTMJ&w!Mw6 zB#+ROi!^iW0rHNWhy6j5;#4V-?U_P{rTC2s>-tU)%Vx7<!d|<&d8J3}wN8R1x^EuI zyR#@+OV&;r=RxF#?A?Mf1REJ@xR)aOrn82KwW^yk)Trx_!={JkZMXE|g{d_^sPiTc zvt-~J`i<=`&Iv(R_$==<rz$og7MX8W!^4cV8_X=V#EIbSJx_gB`jo>|;fU(I0T<7h zhTlsX3RX@|Emk;8KvV2k^g{yzP%ZTP_>!2QnQ>*HTL1r%8BY{qxXFLmaOs(rVQg)W zi06m^UtK3O`A7nz@_N$>frcO!efVP?7#r%SupmT-V7y+ISS@m#7ike|RFV}$4-6W@ z`sk#B+>F5BIMjf;ml*l5aCevd_armw@eJ{t5q34r-x{uDdzO{x-S+L3#4_07`lTw= z*i`<;$hppd5X!cQysymgY2lD>vU=V}-~Tz4O+7Lr*r7u1oP23IZ7LfgN{kF=?`}kA zTsyZH6j$|sqZEgcPn&bO-y_c#R_2Tcom^91{f$S#QTTMZXJ-I-Lt;?mj1;l+&TvGP zi(nm~t+_Q2{9#Dg-ZF7Ki1GtKb;;Kk?OmW&K4^1DJ_{V`cBnw~LPK3Ay(66!-g;-G z)!gx!GI7bN_{JRYA1oNY;2>ZMekI1=o*S%_l|^HG6u6R<o|3HetJNJdq`dy49kU5) z(^}&e=ipkz7vitp75Zu<mw+msHAmI%I4}mKN(1GU2^QoMm5^D8II+JPe?5;?Qs8Lk z5b?-Y?(?p)Th~mR`$#XE^hivY%<`Z%5wL9gwh-6S!KEnO+f?qiOxL}HhA|qqqA<VS z-BIuNF?C$-G~jPXtVCd2J;T=CfOG5m>vHItgmu&zp@{WE_gTBer~GhJIY3tkpaY%` z4~6@3!NARk0q*^|;f1=Fb5X$6L(_40o44+G70w8jO=I^kz<JY&+YDG=<m5(FhXX>9 zjEv7Yje%f_0)8H7!XP95m?)pv?GsfNftLqVXm{Imw3>^E;7j#{(*c-3s_qE?}U z+=Yj0Z8>o(nd9CPhWpI|8bJ}jy0VT*K{1_8)Nd|*@BgCN(8%(^Yr2l|N>U3D@}C?N zV2wGd$A*LA5MUu*URVA{VARjymHBUqQuMO-qwYg2^Y0U`QOwVT74!CoYB0e7!V;$A z<TrD(-Ka)w{i=40VW>l(ajw}eF<5%mHjl)0QYw&}5{<ND2ODyrV_i#B|Dv<!d+Kb* z+MMy0ZH%MTkzAmq*XPifpKp_i;EUqA3guo}w!AMisx-;36Zp0^uEd^B_W!DkXy`ju z=&Va((yHUfYT}0=a+loIYBvZK4o|I%0Q@2q;7f`{Kl^TlGw2GhqK_xVkD3=wc)ysa z0aXFW!-UMHot)vZqw3nDNK3;H2K!z~##Z6gs#wXCpcrXSRgCN(CDQzYm^%bEC<2)n zB4Z_2mF8rg2t%Jk4eUXe5Bk`YlC1nk%;dG|r*G<v!XK0rubEw=vvhm3YI3eRUun`K z^^noKStBdG9G<fjr!|A74>*#UQp-QHC--D1a@kF_wONmQY`9xpb-64o%b8B~TA1Oj z!$s9oUdi+@;CyaMZXluf4GRuzZnB?2Y)<v)_CP6PZKYCgq%4oYz5N^Ee{KoNYA<kk z<~wZIv9DYU2$nf>@tOp^cid(3@6>K5YMSP>SupZ>;qq`#3DVD6(r42qRf)?VzQa>j z^~v)}A17Hhi++*WR*d_S9(N$lM8cQ5WJ(WQ4TNZ~7g7*28>Ym>Y7i088uanyuxfz* za~rTfAW7BoZ$B5*ytdngc0o=6Hp<drKo_iV<hkQKBU3|P!x3Q@-^XQhZBlSKc^Kx< zA(qh#S~+hzsZz1mcHCEdMP%d&02+)!C1CUtX59SCky32yM4Jz2HpDvck>m_QoH<PY zQp4d0>yMQNANfXp8dBEk!c+68c<&PZ3D?|hv*8PcqA2{zrWojDa~jL}rL<HJ??81s zW+V*%p41;_pu}}{nv6AC)JJpQ#h+Qwbn#QLpwca7%FMD<WSVGiCrEU9Jy*oEsKi<d z8484P3NG-S4g2vP`mti7Ku>;@nJQh=Yda?>F!t|`#_>xV=@+$1R<b3i>n+KLZi^Q` zqal}j4y$4rrl9sABpaIXhy!#=v|q5GGG8@pJyM3Za4J=mDjI8*Xfmy9{+L=3h+zd9 zf>KGe72@!P{=WBb&aap5tjjKbpw)0i*wK?NRGvr|q!o=?jl@4&Juo{a!Eu<YuwE<# zi8Xc=C(tFXM{Fe`+ss3pgiJS<0lR<i&#PZ}*zz$G-m@geR>=f7zow?~Z<85~q&qe@ z^Xp3tima}Ju&bfqsNq6U8q29+Q&!p(IqiAw0_LZN7PK}rE~OIL15_jJ2kI)CN1B4s zsayG#wNT+m^rYB&Lsua?%%u+YiP8Nv=;AqnzV6c)3Ja&j3WKISyk=2pPD>Qeu#)YR z(5&)6bG<KkLyYCySfokTd?RRsTHfr_j|zS;ld!OOt`mktZLHv#*)#9I46n=dzmof^ zTN<aecfCMa7qHJqWK%KL$`sJp<DKTyA|99GzTnb=^+^$kF)ak2CcXMmk`(&Cu)Cjw zw>f^21~A5jH5q>7h}dS{`87h=#&k759j2ql6b$&)Ab5S_j_dc-8t?S4Tj(l!`@a1W zxm{r_@%Rw6HvMM|uqAyDAF(4COYgioF4VALA&ZUM9ar8hnMM0<8XOTXVj^vpj+6M8 zk5C;?7y;iGM`9(#Roq2(j|;D_Ec_X{@O@u51{g_d-$|@1^)>NmOH4cZQdXc(6Zc57 z#)<QsOVxn$mEF(}_vDgG84=g{0CK<L_fXLqUVv(NDuPOyacBN2<*$q1G?A(grDhD; z&n^$$c3xL_sbj+u^oDhNE~cCw#@4Z`awkJeAn33GD%X<YvMDFJ(u)Ypy8(E8PK?Mj z@bXf8?*}xRwM1xLMf7!!5K5a6K*J19c?M_Y@aP!^L@+OGfVS(CfWPu>V|Ms9mLIy_ zV&oG6;aDf(tFoQ&HR2xRrSZmuuhJ$EZ^a}_0a|P(f#k+s%^LTpgGN`#?{O_`6ljYT zSy?=M{FgSHHj7=-@lha53}GpH4X8LZ>g2$N!pjyckw0%yFos=1B4222Zw7Ox?T9Hu zya{?S)Vw{17Jc4w5Bo&o8R9~TDGGyt)129~*^cHaT|sW69MQoS^ocCaxXtJMEZgCH zA;Q1fIW^k5bSAQW6CF%I4nt^mB)NQL#;Iw)mNU+B2s3rP)#S5aw{Y^h>o2s+QUpZi zX{g;vdl{w_V*82+#xJGCi9T<m{QFU}_mbP{g#*wgrNI}otnrB292SgJs&b7piGLKX z_Azxt)kFMO&SopRib@qumiGUD6av;i;8~9?Q@12apoRZ}C;5wQxo#%4MP-R?i3fr5 zH3pcD%-0gztQ(!5LU&vz_LpJX26u07b0c;!Y0&YvDt2#e*3<V8-swgrNa}tuH5~g= zAjS+A12J$+3$S>O>-}F&67REt{^~c+tv3=dJ{wZY2+{9!UG)-$JOdP0X3Q*W{riYm zAy(0Dzo$MSpj9qqn@r44s(JM~+syL!7q;of17nV>b@A|~2~+DoCzs$6L*?neBHr=2 zOo{#rg~P>9N0jM|A4TK{dda1RUn3P<)Au>~EdMou<_PI1U|wJ>DZ56Zg<s+I+RY0W zFNFc)=thEPZ0l8~?+dd_iX0-GE=pO{#Ng+ET+G>>hv4N>oB7qT4mKP|M3!R3Z7)}e z&!<M+n#Nfw;CKu{?H~!yllp8R$*p}612^ltPHJwi%|+Borh9rMV|nsbsFvrjvyi#) zv#7*AwV?d&xLQhpXRl?;d}HBgez+P#i+G2A^dA<4Q%z~b(965ari4fG14}roU{KZG zZ@}5pE-HCqXg=7L<MQC}cecSo$k$uEJN7UbDtG+g8)S#;>*(sfS?P4@EizvWExVGy z^^1Wcu*<@KUGF7hwc=i6<AwDPD}Kx>XtVIGp}6Z7oOP^M>!e+wmLz?SeMR&Qd&V(l zSQwCi!%BgnifMLUKG-IPc(gTd)=7vAOG&^FhQT!F_J55~H%bW!_7^TpYDEP`4$w6B zlnwnNc_?9DN%kv~``Mv(a`;k3?*bXYiD|1Vrl4+i{4;3oQuq+J{ZqeX4{aheG}IG? zX5d81pQHQ^$6a{M;A}2xqVtF4K-8{S5TG7H_02INts3u=OSkWp(HN+x0Wt@GK88ZD z@#$jbuW>?~7HRU<Qon2Wt?^tQL}D@xDB_b-(olK3{~eCA!83~dqBg~D&5(vlp-2PI zf0cMC=-J1;U%lZC;TtdWZ9GYTJoRzkT0;}`3@*M)Xe>$Hr-pO-0MiPLwU|lba{IN( z*lOQnxE=dP+@3b~emj9Mbi#0h(h-j2#7c7Xc9ypMgk^qm<n5Quj&ch3`MTl;1`m#4 z=W3BZEwC4jnDAfN-7KKxg0~-mazWO9%w3{~(B+bXBQ+%$3?tBsKr}#Ll+5KRwIFf# zUFmxmz?7BbzUjYL1;pnniPtzEYw=>3TUg28jpP#H#h6?W73JaWUq@M1-;G*q-*f)h zogH+p$!7+14Hq2daJ3JhJ?_Yx(hm+n414k-VYKiGk-GMG8|S-Or(Jtt`F5Akc@5t1 z9J0X7X9n~7(H}oFw(m-tW;8rb^4XO|fG!ipuWn&uyiY9Nnq0W@d^6fSDR4rbO|G%; z=?byOzH4K&Y<i=<K|+pTdaJ=9_qOHFE4SLE%Y{Fd_O>N*NuTFGWh}DcuxMq<CYR@^ zhmf_jQtaJl_72WZ$mVm?psvS3e6~gFQgo`E=36>jb#wtgHI#BTMED!V7n6eH6v(Jv zOr&w8i#X5)mJo5hv{9tWV5d5Ghf%T7ZOUZXam8$yTk)%W^Id{m;M%(&CC`ssZ|0WA z0(C$*K)#d=2`(h05tmB_({MZhBjW>ZFO}Wc?$c#@l<p}QQGqA2H~N(dxQzgdITYH2 zDn<sgZl~F5{g!G8&j3;CYpwZih{K;)@zD_V9+s$Z^$c!%lr~=8eb1{%2Ox!PmTDHA zV&~j%`d&^{jlV^X0r`~`yyde}!o}W0b)q%Vt$})%f8PDKcNwwL9YE0)zYP0xbnM_^ z=I)VAf+Dz)Ot`BaS$Hu>!RO{|Oy}N+wB^Ij(nMs!I<ToYEZA;ry%?XE(Z9u(+WydS z7}$8}EK6a=WJVJ!5j!3d&E3E#hijTSul*Sfp;Ej)K}rR7!~AfKkFtRLtEvrjYnUNj z1o6eOmCZrrY$xu&<xIlXP^90sjZET%xld|c5f0wnk00DT7hCLRK7Y2x-da@)V+(kH z2%vWMX5(%rCXL4a2Io!8ZQ?{mmnD}AneEg>W*5~m%{^^~2XR{S_M=1&hq3U)>m2T} z_je{;ix!xCuw5h-6Pxe0AlRsz#bqghbpolpmeE_kqf}`dxifUt{9vr!+Q>n@gMd_| zwwkM~qjho;*5A~`biH}5%2vo9xi5QfFD#ZSAIkGxoxoGs<^WO7!M?pjW5YVfM$QJt znP|y#=s#^sx{1p$*IjScf~p*|D^@-q8V!mSXZodUTAMFrJ>(KuL}DE{59WTr>-CVA zzme2A`_v?68yf<OLxDY-S?W5{(qqd(F0$S>i|#Dc*6u028)i@BlptKsTs>VgmmUFv ztsPugPg|~TC!`m6OGcL6S`H`5+qtp{yhn|O4Gt~FCH3|<hGso$t71hXHwGk?(u(qB zqW3JiWrG&?!`0omdg{lRYU}5%J7pzn9<fEgT+Zn>&@$JB+kC9P-pB<Gt40h%>khXB zP<g@d(=jugOV#z-S&gKjkeH2!1D7V{#b{V0)F=q~1aFTBGN)s9-AEL3&S~>w&?3OG z#2A3ebU61G=z>n>yM?`r0yMR2Eh}vJne{l<BACpt4e-LLx$q^N=HQNwi|^SP31Plj z8H(s0Yp2J`f!EFQy!`QYH!r0aPV8nKgI(9zUdlW6Q4=%?k{t+c3IpgyV7u@cQ7>M= zG6$lokXPYQ{&&!nz&MlaKo~xK;C3yrTq`*vA1%zkwYxd})8Rm6%)47)xOW5whB!o8 z?87IAMIlV|5Sx-Cc&1h+kpB9ja;N}MSKD3CN7thcI<3KF#4&O!a7dkmgs9!v@3u)* zYLE?6$o+{y3b1Y_C)`12f;GC%a1H9C3c}lkppV;`x{nHVx=V=A7n)%A{WA4lc(bfH zT@xo~qq4m7S;~gvN9?v@GT>h0IsM1ICi~sl*D?0@4v@Zj<`d)B<ml}@9KBJ3=;~D$ zv&#tzL3(>Y)*P^vwC~`KUmH=9L>Lhv*e?S9XHgGJkQ)9k+@T)dpl!S#jK_Y68g$DE zw%d$+*&3p2pa7wjKnBbij^IeAe(B<%lO()e&<|g*r)G0+2BT$X=*P0W8z+e_9{O^* z6sH75n|#rCXNAuvFaMw1M+PJ0M6hMs$i=&o`Hyjwm@sP;k+GQ%sCc&Vp-qY{Fa58= zs|M)a2;us5E7XCO43x4MmT(h8+Aj5=56#NDxS?wJ$>)kjL`JRO7(9;!v+~IoUL}5U z^Bp5I7KvCpQ#PU`*2P*Akl^Xb-cWD-jg3};H*s--*|&(l1tCP;<S9mAHC?p|=LkOd zLp1m2mG~9H<h~4g#>hqq{Vw^UP~v);4;|JCwq`Tw`$A_qRhz|HxyPt_t!i`Jgne?j zcR*6OsMkKl0Hx~<;ob`QC8`mt`&byPr)pHTAfo~1j=$s&1lt917DhaRUORPE!{N^P zH(y`RXYp2N;e;Kc=0oDigp&ufT$%zDEc?Yc0&hVZ-l6-p#2Y(150#_)`{k;o-vFaH z3To%^=hhGyv|?rjoE0SVVAIZ>3(<EQq^LRV<dm+Qo8npZ?4y4u|LD2&a3}pEZ8A<o zA+2GvS3jZQ)-1FjvIC$k(X+0DN{y*@kYTr250P7qherywnh3H=H+Y<x<$6ER0f~{q z5SUJ)7$rm1VNJVx=qw^(_*n84UK+Deg*JM8)`Hs)`m|#_547qyOZ(~WhkLp63pD#0 zs_~q5#DKO!2cJ^v14eS$zc?iEe_+fnXmVV*+{?}@;HIdWrfVj8`0-7YL7C)NLjvWS zrACznTh_}OpH`jhzd~OK-9SjYKDzBD;#-?+JMPG}j+Gx`uTa;iXi-B<pR)G#Vv_G) zP(%r3z6Pm;0kB{|Wd_4!*32^pG{NgV42;G$m9U?q?L}Pm(C4;>H7pX=V>8As;2N5L zsddD`keLg>ph9Zg`iXk<;*Qk)2pQ>%G#eS<_oIROvkiMm=8r$m$~|J-wB-MY3wHdk z4GE{B+a|{*98lf~H69i@X*yv{^UcsEQ55G>@fCZU&zpvtcqmV9a?%cPX8i=7n#2I_ zMDMKiQK*R??R@U{nz17*^O$_LQP^@IpEIL7LFeshJo(oq0f1+O4?8dS_c{Spix_g} zG%yw*^o;!g)G`_103L$c-=fd^O4xaGi=0=<c;8N1Z%ru(-39D7L{C|-0_h>>e@%jt z^wN8-$mnOFR+`%#XPi(jcY}8lnk1>>!xTK(Sc+~rT2Fn)6UzxFUG{m}eNyvru4MjE zY@zo_tK<WaH-IjeBhr3<n{ALX)x&N#ts&C#>vhg>5f=`dR;uIaqvJB=zTm>wxQDI} zWV1B{QA{;yCL<H`PeQY*_Z^!4?L7b%Kp0*o-1o*wMwE9S`Rl5cg4w_Puesy2$UIQs z{KSvg!;=#TV-&$Cd}<zLr5P<0QntY<1Wac853%h(tk81+IVS=8@xb8tekJGE#Na8d zx`!6+xFgcr?v$8+m;@n2_#9$!A}}!Z`@K7kz1#cOD97Vh6oXD}wNFMakHX9h*&}bj znTr&&rL|P!5X;3!IcdVy3aUM2IVg+4V1UTcA1-9Nc;F{}`93y}sOpDBy@35m-V)y; zK1SqfyeJ_0GiriLEJL_XN+i-kq;{*oYHaBHK`N&PQ=&BV1prWW3u1kOYSO~+e-a&k zda3SG$R5&&LX)u*2ikC!&7Q1NwZv3CA#M<^gP8x(W_Uibap1_BI3lVVXWowT0WRa@ zuQ-kAL*zTshBE<;QQ_HLjQ-68sWR&ap07lZqn{2vP`*NfJ+nv(vY&=5b<U@a64go~ z{?1k6he2n@=_tnj(K+9Cd@@3~wC*}ucbh1N^dFLj2m^&oPrtOa`(p(zhpjP*fl0E@ z-0=0}WrQL`Ktm^xiGT&~lx_Z(@owGYiTRthF41Jng98pDS*Oqrgy)N}()EeHH}GPF zeJA}7b3zqBCfN#~p3!A!rgp@k`}qyZq!*kr${R2zaAJ{Co=^HY$^_8Q^#x%Q!k+Cn zUXvJ$S6R9z-%6B;xMvN-@vHloJW=j@^UQQy^+@=VtQ+d3$2c1$bKjR!N=gPH%m5|2 zXF&j7fCzh2nyaLpGW6{e7D2D{H#&6UsOW^?DIvxfnNL7f7Rr8X;=+Er#x%99{BDGv zCVWnMo%4L6R~e(Odd-G=O}=%s1VpR^82jxm)hS=D#=`3a%_mWT&}$K$Zs)pVgi!Er z!_xOPfvD^64Ef`qfWR60&Jf{vj4xg^LJddXoJdPg*@~LE2zseo8`qN$AM4jSd~_0o z*Xz3>-wK}vz+IATrwzr!aEg7tX`z^xF0-y3TYJE>>-*_GrXcz92!n|@ncKCihMM|| z7B!(7tE&A*h5qz+q>kpcEe&GN%i#fsakgeNUKF%cy3VDOcXQ$uy;Q^LX*Hwr7C!T+ zpRL5V@fK9<y$8%~U%!sdVHJ`350R?TS=zS3ZD{wM=;N0hGA|@w^SeXR3oeU?!hPMg z<6Vd+wb9kjHfl*vwYP^(JL*Dw|M^4!Y<w2>hlS*?0695*6>8lL_#xW*dQYEPMN=2_ zn`IRFCSt2)wQAlb-2yOr*CzOKA1eM~FGWrG;W96RK`)(tX~@ap($mf@?rp5dmI%52 zV<5H+C*Aiq;D1cV`>Qb5S4?vB{+|CnDgOLq@7J;lm+>DC%TD@3I(_3ZWO}R^EKed~ z1(Y>1;C82UH&YFxYVzI+2d`Jo|5&IHVMg>2t`}i8EZc=w;Mvew7h-qMbz?^BZ$BB? zZbu98L7#OG_e$n#2gG&tHaYFB{#h^P4fqQ?5INBBw;Ujn=(PQspuHQ4hMDk)e<J8D z)%QF@xOo9+sDu#zfA^;X?>Fl@e+1m8I^FXkuf&2St9-BMLjS_~DFvA8kHMJ9LC`DS zO!s2?tL52kdMsL$Lb$qTZ25mEN(MK85pyJeH32L}vz){5S(5CQJFc*-F?V0<ZnBE> zo1^uU#$)@B{rcQ1m_(qy1XMkOeZMkc3r&is&6X`KrEE6{dDu?q@X+|?Ab^rwKBB(S zzM?Mmy1jYNZ*xcrAH3<*=ePeX!06y?P|}u&9LhQpYgpUWO0Ltgd>H2LV6?AWUZRhH z_6In4Dx)5g*ork1@)kZ=-v5$db&yyx8sJCBwHTcXa5a6ooEAm1;WuDR8407*Un0lR zV@SjmUQy9C8i}8;dtd5cmXT=lY%2g7Q3;dHd4{lZVD%Frgci8OwPGsXm-zQhm$(RS zas~gw*rt60w?(YXu$VuB4)~x>ccfu<p6QfrxTpqv^8X5UyhQswT__uWc!TGkc_)E) zdU*4WkcXbhZ<?qtU`=!I5C&hSiL$9K9C2+6lGBaisLK@sc+qE-Kqd>nMO1c!M9`xl zqWyYyD@%vhF*gC9tlV_J_G)1L6hfUfABNJcLWS|HfF?0vCx&UW5oevoJVv%!pgP8g zkr@NmicEj0q8FXeNpxjv?5O^W{oW)prly_f;`HbRFn&ZBkpDNJBvT0hN<KC#)Ofx& z?;_|pG|Ql>@MBZ7z1e6ePl$6A2F$5obC*f<@|2k!UGCez3}gYHITFQ>VmfPlm1vYa z?UO&9=pT+o-j279PW2aWzIs&@NcCirbr3f+6aVu~8Rj4kzzq;5==t1K?60A4o;9y; ztRgdjp?-E=b;Xl*hogaj_Tt@5P4+Ex4X`25^F)d79z(;Qck);vx8JH^$)B&I3owhJ zuBPo$Cxz`4uC98;`NGCo=E{5IA}VP10Qz9;^Mm-kW%4C>I#+XEb?MB!>Ys!};fLR| zc7@V5E`W;N-0#e&At!ytIL&5*UhfK^Ef``M@POUo1ms<6^63r{NC{TMBj<(j0=(kJ zOW(B{9@)NEGWLiJv3t_4)>gKZD<J-d`oJv03I5$Kmb9<#k?BOs&4*=!k%%><0E47* z7i;h;e8q6Rn^^W7dTH~gj%xX2Z=A_5>{*{eXY7P<sjZ=yj@k9$zQ;XWXxdGK$kwVC zCR4)wanX!=Ww&QfMz*xxW(!Q+`c`e-96V?@kWc-**=~@S&y*M--Ja~6El=*YXF;UQ zCw>L)@*ox+E&29Duep;Em#2Ejxgf)S(z`p&d?@T4pbs`N>;NCbW$D9dHvKiGA3oB} z9ZTd|rry}v9_|B3RokmTqXWJEkbO*h8qX>HyMUVwbCUTdph^Md7rJO)gWkVZOh20T ze|HfoeDa>v);9&=xqLFMQncN~P;YUX|8CE2l@NHER(L<P1@|mYfg&*S>m}>S-2AGv zCHWuUVPs&a3=XM&%qg3{9d1F*JE8t#ZNkc#t@<x(vBHmXrfwmkSuI^(gq4I34Ishx z;%&ow;^g%pPQ=b)srAoMRr~#G6+?t`LHxl-L<BuQ47J~{p5s9dW6{hyEYjV#SjVh9 zB}}#WQ}B7ANm1bKlki~VQi$h0wAo<VxJ7#l9V5elU#xte>ofiK31~E{t-{&@=zaW0 z2C?8T8JxEd4XoEbmggt}iCI<~|6vS3*yn8qsM@HQgAR?OxM-eV{0S4BTf8>`6+C-t zwLWni1i<nJHegSwZUmK#E%R@Wc<GSzlonpfH1Gjr1Ox);;7vQ53wdvU^f<Eb{Q46U z(7X$RX6b!9OaK0>QO?u9#r-`eF+*ghe&!cCUteVA6Vgb)Tk(1Mri(fb9$1CCLGiP) z!@<PZ@~WG|lg{*c0$oYC#dG+84hEASHv(1h{tiHV1Xx0W0brOw-iilSifRA>5NoSD zFQgJzsq6`l6x8lG8R))%7*&q<=H|>ui_5dvGE8OJ9Gd7NfK*f$0mjv#jxTac%>)(_ z=Zx_w<zIId+^&>2d;JRvC~!mXr1b|z;Q*$HV6vax7JeEqNJ1frE9(?VOY7h)SupgB z!6KBu<Mhzdp=x3qxr92t=p~Sdx3K#$RM9_`ez!Hh*zm0^q}GN$xOX!4pG9uP^wYW7 zt{$NP;rTqGN-QuK*q19Ai*i31hWf)~RohDAp-uQOwSSzf#=m@o2XD$hcDHd2z*_QH z2$V1=$N+P{Wu+(uUwYe#OrMaJep{LCbSH>ZvErrKUnG|EtfvGhRt9Mr*S(G0dv*|Y zp)gtj`|l|r<0u%^sA2Lg_y@A`+g&s7nF|6RIyR<V$=7cGvWpA6yu0;T*LpJ7quk+7 zMF1cK3mgxzuYpSidW`>v$1K-qQuGpuupIoFe@}-AG#r|Ejkb{y747_Modu(x7<iyT z4~{Md8$6Z%lxMM6u={jae`qD`CMEfgW#FY)abtGRlJzmZ|8+$&poA<h2aib!94YH3 zDu!2ZMRnFsF#!b+;GM4HuuN_2y=POzg26*QFG_+3ATPsBxwXVHW&lDkU0(chW(9H- zw||cY5RcwAgyQzZ*oFK<?w|nQzs1QoeLVn6A3b)*<Zf_?>1O~>k<g}Kb6LVaC)yga zBA>PzN8L@!@VIVMfSEJ^XeioOy(?|o@+$YIkn_$-Buxl11}!~sxI^xn`E_9505#8a zPo}3($JQx4egA*fs+3qMzjwbfKuW%rn8s2P#ONmg$e=;_@kUf!e?(=T)NWzx>D~Jb zwbxFDKu0}rNcqHYOT2v+_xlx$`$B3>ISw81;sD2)Fk7|Y)&hr<4h;Li_+Vhy@@-}B z`EXuHuJ~=crxPwaUiBd|{eTM<9))^-H*mJMf6<Q>#@=(^;I0Wgk`I6v`mNu}05v*5 zSHQy7y-Uy0OVw@o+vjGkLtN@20FmmdPlL3m7U@1T*t9OD65jZ1=<m)qd?-^*ObZ7B zJ$-agKf>#qqn9?uhcvyU4Q5AVV#){@v~&Oo!re{sA?;9Rb=cRgyXm92&IKdq2}9L^ zFek>$0nh*uVbidGW6l&^L;?2}ctVbUrVtjcDBXK2Sf}j7O@oeIeR9R!Ar#nMw#Z8P zHWw+ua`lOgvfcMkP#m-hOWk7osmTX^TJYkpBtPUq=bNM3(>N^{N@qnR_^76|D+k27 zg-AV!dWi4=P#My0k{x|H56x5QIIDWJF+C*C89}EN3&WfHwM)<D-`n(ZmHA}8-QQ#j z6{Z4qL}_4PMvS3;H_0CDX1&gBe83U2@A|@aL@Xl>l;YU3RYnY;1qR%i(u>~y=L;y{ zqEa%i@+~_b>)?7!0-g_DQ3+nY|Ep6QMc$NGZRY-ZWr#2xp!@RtB0o9_XE=qW*^sd# zG`z-5v7myx5MHTYZ)oeB*xR$KXc$}qH1@)K(~W$5I771K?fNB~p~|v?+3^N#VAqBI z?Mkd6Lhlexa0{!bN&`SBBmh<X`{FR^!`gq+)IG#Z*rvt$i&$@bAjfIx*M0*<`j+_f zUh>G94b2!4wrb|&*fENc(F2<?3uM?-eFG*GY<jqC$PMQ2KZ?hF3ZnDKX<(rM0t5a( z_vsP@hoX0+I!_{B)jsru3cm&&%L*X=<~89&ufHrPE7P6Cdw9`z)~ct<p&a?y4hJ~4 zI6N?KpHmyxe2V)@e}YG!Z1d|vd3bwKfP1ZfJFFFw*)E!;X-wl0-v|r@-j^B64HZ=~ zl>#&akCU;G3+X;Aj}$a05J5wNuhqGkVi~?rNnR2EB?F+>FI48ano7@#D&edr>5ojZ zx5P3SKtvb(+uVJ1mNS}f0t;v`X!)R==pC4^_YOG5*#j33x!L?}p1N?F2Bkr9#jgMn zUxoP2W9R7F5{@SLN0<84`o2=8rcg8oNRoJas&tb{X?w8U>eQ3jppim*!MssZymPB8 z1br?XMuh6o+}Ze#kt9jO*+{3kbPwR+0OzHBiY#?8<ljD*S1Yv9uv8{P5?=H1N;Pd? zLM~L;8dN=ALhJ~P=Rvd9i2ld}#S9roz@V;2z~;JA=u?(oh8}Rcq8>@J#`q}qCd{lq zkJI*mH{Dphv02Q$o9T!yTh{a700B0Y0{FOK5LX@rP)M@?RH3*u&#fJ=#u1<UH!H`P zw*X|c{pxj7@P_P7sDCo#>5iZzMV1=4tpgzcFDAtJ0(t<p*AKm2t@be=xbjg+ji}z5 zLQx2Q;p|lZ9s-?!_QRvzTP>ZQi3CbU7rA_;5vbF17u?PB7<X^is+F<QLC)DmT7NG? z!9vr9-9pt6EX3LB_JB*@Ai@;(e@N*qXyMvJPnWOi`gA$w`^DjR*Nq}PbEOB1Q5;n~ z@U%oDWW%_TnW4e<9&!mC8i=FIm?#0Hpa8;*>+;d*(!i_wJf@dA<(YYFP2YcT)6vYU zaVQbX*Z`$qKeTNy>YNUo1TT4HZ&>`g70WmU*rfEHdJC>72nahpwrV9DHtM?l?_Wen zmd;IWx)*|B)`C*oY`C_(Z+=q}>J|6?tbawJhz1-wWS!3;9tY6G-^cF9bhA#1PJ^3u z6Z&6>(YdEK6f2XlytC_?Uo<`A?jxDMcFFmjBm+bi=unb^FrCrC_7t{@(`JWOJdt{D z4!8#`OnB8kl!OWwp!3ko2~IfvY;*c@)?1b+<3J}1=)r$=48W({a2B=J9_hs^kd2Fn zQ%!1SDC8Nzza1arjMMF*cV-Lqi3jgn9CT2n5>%7L(SHyK5taZglwaH=Z>MZMk)QM* zCB7?7z<oMo@BC><AL=V6#nT5|I!#Y0zrK91+-z+|tu`PIlu}nH+nJ@7Kw=pZAnmIk zW(f^hlx<`_*Q9SmZ%j3A*9aKX0Va{gs3!|LmahnT>Q4T7mns@<lk#y;3hK-aMgnJI zuP0=#0Dmi@e_&SU)o#HjL?d#DDRkO19KV2@V$1|E7ExE8_`~)BaN!2@8jQ_Kra*T< z)BYv}80oGndO<9M4W#|_-p41DyYcUO+V*`}Wxf_LY4%5t9l01;M0=d$fvwK=lT+T? zbe>~mAzQkSog~2GdqKeBjXHLvi6AO5=ou~UaWtnV#)Ol`LCkNy{^(Po>5eiM7i&-c z?%}Gf>$A_X_{4HKqr;2~T$C&Z5U&+#2yuNz<>6(X1@yspn-49lbD6%ZZZQ00Ag95- z=F_LOfYh$jTSSP%W0}7e*S!~`(n=;^Sa*;B?JCeAZU}4y@K_WC>PDSfqC>fFba%Dr z%c%K!e}XoA+areE6!|;#uK2I6`sx-gJYVzK$^Z|@01nl9te$Y80(_WX``(z>*}>>S z|3l^&+Mw>+0oOnE>JeKKO6OT5pGDfO_~g&3X?{=|fA-mr7=BoVB6>^4Uo}8^;uPv^ z3f4OSqn?2~c==l%{G+xX;uxI$n@b(ET|Uj-FBJ4lk^ZLGG(&1ID_1&<X|5d*IM)Lp zA5Y`H*(xZ|$e>-=S5Fav$P%!VG1PGVSqpep_w}x~-k+KWU50J;w8$M!t7v6chA6d^ z5k0mmq~#C4*$fGsLV%)!9!s>X8xt8P^!^QBJqeRGzsYn^95GnIEpori`|)8U_lmiP zR+DDv8w%cN>4#Yo*@2>q7<aVRm!OyR{pMu7{x)ebZh&H`tw2(EBaO;BKHUI_Uy0 zJ@C5@di~AWd#0aBd=DQ6*zd-u($1Y()20W<b`tx?_7*lEFPlVAn+_wi*#|KG635k_ z;ZiAFKB)`3pCmd%LwS*1X_M!d`oW+YEg?Wn&?_*Z&(V;q89}0FS@!2g!GWrKl0JuJ zCJD$?Wyt5#(AuQDE7TkNTKP!-tE&jl93ls8o3ah0$EfuYFC*!*Nuj?t-H5rt#Ta?d z@piTZK!5X{ekp*NR?%b1BWl!y>RNdr3oG@JT0N#7$vdtk%}j|98Mlu4;g9%mB4{sv zp-Kfh%j@=SI*G0MT=D9jZT3nT&372NSeae>XLLekni?w8p+o)R&?CWyorQ6o?LX~B zI5A(MBPZZ?m0#y8D0?G%%Xag_C*G5m>5AW`Ai#DdyRFb$Vh}Tx7vhv>Qa2w^d=Y`y zNVD-{HEExN`cBlS&2?QbE%}S}_eh&@=!GAED~SmA`Qdk2-_$xCz|j5JutMRzvEnuk zxSSBK<U@kc_?Bs_dYhBxt@zS)T{_dM4RhxN+3Vi?$?%@<jbhD{GaU6&x|D2!6h_C2 z>s6|{`CAiHH|edX(W$MkcLxHHp6UiYo2DpLc;xWEuSY&WiXF9Mcvt_lkQqr?aFMUa zu0!7MHb!zc=Uz2-o05LzXlAvkwJYakZ;I9+(d<9f0~kESH?sW+jUulw6q$D-6$bc` N7MB+*718(me*pensp$X! literal 0 HcmV?d00001 diff --git a/public/currencies/wif.png b/public/currencies/wif.png new file mode 100644 index 0000000000000000000000000000000000000000..71f31e03de13cfbbafbf4b725d624edf45a47e84 GIT binary patch literal 1176074 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	OwIoQy9 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볗z@aBcX?UJ(r8D?Vyfj~*#%|h`4OaUu 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�_%ljpMnjD$J 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%0AleNaVbr~T(M=-#AvV#TmR<E4 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�Tf0 zZ?d;j&V;}Lz=?pX*eocx2;k(6Y$O-(ltS*}ly3%a9mFQ+CO;n?bz<n?<3QkdKHcZB zSvxj^fP<D_NqEbm!#bn&y%_iIk}wW78EoOPFWHp71EO*{$#lXcZN>Wt-}elBebR-m z{&2nnSoln=AY785UorAH9mh7d*pG=}zNgJT6R1OTU^GK);<5IDGVHzB{PafaSdb2< zH0i<1$qZLq#%A$NfVEkmrK6vG(t`>I-wezGfv^cr;@WxNm7%ZH&vp?%I4B~U6V(nN z*a$oJLQh(Nf$zZYi%~@r*U5+{8EiT3UU}FY%WO8t#8p0Q7F|*o){$3TY%dR!eJ4^T z^!kC9n<4Y@criSWID)n@ebA83;OzwUqmPn1Ap&-vq|trGsyw8djaYW?WHD4#KwpDb z0o5n-x%k%wk6wt^9s>EO{HuE=8ctO7uaj=}`}5JU1vFzr=*K>YZ@V@~yL(jvC>O09 zJBh}u!0>?#0{EASA@V^fHVF~n*Z2A}3na*6+~*vBdvPGX6EEw+d+a8y*burOxM2HX z@Pv)Lg$6H-6oz7aDAl>?&s;1(H*zASxkJ7I6c!rB5mrXO#z$n42l$B>!1YJZvjh6X z)z*;(810iuk;1TLQP)EeJRiJ1qU=fQiWeygj9l79A1Grc7R0T8UVP~b+XT)8gd+mi z&lYg)5AqBRYHd{?i@Q$V;6Dpx@{4U~%OpJVHpaZ;>ILIYX5(MzC|4$9;JVZq!c(tZ zg=?{2DYrTT#$Wnlj-tJlIV(J$qPp1y*tvPGUYYo*pa05`c<22l^fT=t8ddS_jxCYd z2DyYFd(N|oM`bR=5mfssy5P})6OY4}qu6m*YNQBmXwtSeNuIsvU)x8E(9EP6-R#4T z7r6*gr_t7EiVVsTL27U9=1US?k`zYY*lxPWG9?#M5B!9xC31Nn4cik^)g`}P#F(kv zE=HQ4LkC%ycV@9q8RH#+q#;d!l4ChD4;nY>EWWu*S}qEEY_69^`Y!N$XIweVBTAAd zL2$y$1PFB)zdX&u^=DKFU*JHNrlwLJi*O(KC5?SIgHPYN(3)IozXmtst+R_dD!Df= zzGN{u<2L;L(-+=B&y4`aQjOyHl_ZGmJ#HScN&B$3Sr~bF&Zc}efB{b~Y+Vh}XVmMf zv<ng?plRO#+4IJ#eGj>(A8E7Bi}YD@RTis|NxF{JbkW%6Q}V3~JpO7}pJ3fsh*)5R zKQbFn$uBV04*JA@`;;Yk+D5(Ak+Sl&KLk8;BmE3e;1XZ-t2=z-V!UICwvd-}<SR^g zQCE9O8(9B<QC92Ir<8AOp{aanI3rx(%w@R|MxXTQQoq)dyiDJc2B?uaH0M~FZPe`L zm%Ybns*H#X4?d`)iMVm$&-t8-9Qw3*Cb>uZVDs0=;CL5Zm`7!v1&w!~-l2;N#`TH) z$FFhy@V@Vzbb&p(2ETEgu`4nwhjOB$^9f||>E75=!GN*8F%KMaW`QI)>f-#kbD9Xv zhjTCIp1xZo`CVlbXJ!(<=Ic``{5h}8(^K9sWP>TKofmz?ht3tbJ&5f!5dL)|2fbE4 zap-r(ue}4Y(uXRKGO0`DTDxjSeUUPLQg*AXPs{2Rdq{U$XcWbd#Ho15Tib;|=>|l@ z`Y!@y=x49bJugU_2P(%A!ghtdl<;&#NUGwF{FSHYsk`8mkMZ8WXei#&9y*~Ny3#Li z{cN0B%#F#%_LI#UehuBeHk-7iW8YQwwOj0C8-Mu+X8Cz;kyqh*u6*GPZ0eO)Jeq?G z4|}P{)(fBFF=b&qBbNU(m5)B2T^RXC|Kwl%xBv1V|DDvN8iqsqKo8U7>^xWiWI&t0 z8N~a|WrbX*o_luEPymfWCCwh^K%kTp=PAEBLZ{hwr8&s#bVAQGutk&C#I4`YZQt{g z=Ba0Ga+OKwJzqG_Z;wyf%0nBy!jAEz*l8#WfAv8Zcx*ip<x;h(f07+_M^d{OMVimi zm7Mm7#20uu{b)Jhz$+r4l`D7JegyH99Dv{*Sj8S$7JYr^xiWgGAq_7KBw$_6IU`49 zGj}lm;=;*+MVub{V!gmnp$pRIV{cBN=b!rrE;#)Pjgv4ZM41pf=r9p@{o3~w@a}?_ z4mdFI^O7ub5zm0syI_5!_B-xYJE-J|00amPXjxYR$j89-?%mr=o_3Nv<ViH}K`tj3 zzSrRuG8h*Q1i6#N0HiF+;i8MYUCjCJdwxZSU(hN44z%Jq=p{F+a}KbJ+H;-(kHI9d z0##*kVDoN;w)8Q@y|8brnF!Uwi<M3+kC@eYn$+glm4OP`qM!1UP^k`2+?omE@w9>q z6>K0R!R~^`-pP=pi8l)XOjP^M7Z#wX%Or<E(@CuA^%nyAcJ|1KSXo>!p#zXU!9Mmw z&rW;{62+dlKtRBONj3hbk$)9HitrWRPMyc@FOwVX5mUqvqI9s<|N2ke<l|o3$lqAY z9U|nh*tP?`I(~TINfX|4gU2A~zrsixyHMp<xQ>MpVnKX%@s$^J=|##8ti|4+7wX~1 zSG3Fa(2<VPMJgxX*e5@AJ20qR8%PW0ngw{}%CGPkyA<s_f=1Weojwwv^tF+(iQk3v z4fc@h#i|p*(g_0^JXJm~K=uyQ=TF`p>l0PA33QO@CH=*V#CJ?AohaEql;sEB9ps{+ zeJ^*?=v&^M+sS3)qOzN1B0+41|7I`!PuyWx`Ll<*^5p`RfbkK1eIBkVl?A_ziTWUM zh~rAfe#DkwD=u@@*eym;`Vv#Y)GuBxK(M*z^0bfPeK0KQfWusjkiM}d94+dae5l;P zZQsg5lA2GwZF>=sN^rYSXCF|U#`aFA)|TRB0!17ei$G#${c5c91R8b9pr1am=w@A> zm?NLj5F8^zI*ChoNhi6;fLFjN((z9`{^!_JPOPU$$E|u9XN(#A%(NF^$xql&KKJ=9 zyjb|=GZ*9Fs=sm`xr(~*lpjVAHt#gxT<h9jy_i;3%i1Qo=mTP2o)R~AL`G=^x*vr# z2YVr~{<W_Qbzaa04!OOE%R7LG>0FRQUy6-GE!jRKuhNzla&s{uOxv-6x+Vpo2Tvv_ zUnQfB25Bq0{Zu;UsQ2G{*LoHYkj@J^7yTQX?Vp;$G1k1&g$3=R9hHa=U8AwtTm<=+ zr$fH_%dgU3t#&MxW^_!9h|9|&8LvgZmdb0jez8xiy{5mxr2S2Qm5x3$md(-1nLRo= zCrJF#Zfq-uacWE?7KI1Sg@d=`9l4(3KwSnZ#=ksZ!trd=U)3Wv0Y+>WKC-wJInBE! zXJC|(v0tBMtU#Xdk}Pe;hC0NrF^K-0IT10Jn;gheI}6)+i~0ozI<%r6W9K}0uE=-y z=E*P8-}97$eV5IcAq=uL&th*FYA3hKRDVZ@wKcffPFeLs`d8wru~i@Ylxi2q9-?zJ z#iQmO=REa63>zVx^O@hwqxR+YFD(iq4V1&gd2BQ1$p6llmLjhg)4oT}IiO!n6(KnZ z-`>BmAC|UyHFE3|)H(6wKflDHPi>c<)}%gPWmV_cjJyLcX*&j}qYHp;;%WbP_9bAy z3=Lx+B4Vfq1fBDJ`Q?{+nzuQ2d=9+xB7I?;zTvB{JXVRVx=^W%KEaHYV+-enT?k~( z%c6w+)`s{E8ofb?y*W1L)0Fn}6a3Lj-4yq`H{Zk8C!SqM)1NP2{D3~jnz`%?`ta+w z#0PomE%RUPBiRqgh;vPCjIY!nn+qZSdXbAGFa2Qx?E`#lirqdaBQgJ;iH<pAeb;vZ zw%^7+;MHf*E_yl#$oxf(rrnq<e0`{3^76x&a`U*prQRm=J7R9)!+L!iTE@AC5mk8q zq;n}o)5_p+_yX6(E%aBusqaoZ9Mld<`-BF)p!|dhIk3$Q&=JoZpSZQJfc<}XyO&&B zk}N&U5pg3jG7D5gosyawgai#kfCf+<LVz>?K|P_m1gN&ao&b)30KpCcasX_Ing9V- zPc4e7s?3PEFa6)YY`Ocn_uLzqRiNw~-)3&M9{*bQbaUUnFWtta&<j|{wx#c+aN2Cz zvc8!**LU@i&UM;C>Y2I4TRDgS_=Y~<JbCU3rUSINrmO@&O=9snGY+0`VMZ4kcHvJS z{rKPi!~gaFTDoWa>c+?+aCMj4)I=P`PtMQMe+&&KP9K>ZdSB2F|Je9x8ev$m{gL5y z^4D`;h&&{)3G4HxAMU)N+0XGi0TW)*O@2S`j}k6jFB<s9#l|h>1<m+R7C(mc;2d9; z^!nHaF|^az6{h>0T8)6C=Y_fj6k1Ja8}195OUqXhm1A%ikUop~D=fvcHk}H0I!#%8 zLJa1kXMP*JJY}b(ojd1U$R;mSR?;0yyQ^rPvMgk!u9RUS{04==YNG6du?vF?s@Y|C z(fP~IZ@>B5zy0Z(zy9mL&0=RB(fqlKK93&;1ZPEvWHLJNxfnI66<^DuCt&<kpuyjQ z$wX){>IFrd_573H3x=Q-uE8s^;P=0A2e<0Y?4cZxj4cMGUKDpipQj4wAbW9DP;?v6 zGIO4RG6SK3+n`BN_4_b!o_vp)MVCbk87mLELXONX_%J79%j1Nk`T0nOH+VD_dA)Ep z*Gk7<FpM0yXY#MC${iamA}qjrC(+`8Es@L4Vkstmgl*!zsL&3`>vzh<X(XMvEo`Ds zS&;_MVhkcPTo}($3Kx*4J*0J6t5}Fw7<6$k+K;@5+PVqWF1Y#rl5_l1ouT!Y^y1Ox zW}<e-G>fNqHb&yK8mm=<YH@-tP2rlDA{SNNzz-ITbM9^+_HB3Wmi22hiRWSmBeUVO zprX%WG;uEYZGNz6>veQQe)8Wq@@TkzX#tA{5SLxu^opcpM#l6-7s(#CC4-%#c>Hi- zFYbOsO8gT#Pj~IF`!IYqO{2qK>a~mWOrmXD=zH)H|MJaTxK>lJsJFet3A?t?iwONE ze@iFTx{><=*VvWM%AU`uOBm``ZLDO$VJu>9LS@ofndAn)%8MlF9?pWB@A<BNO?mZb zpH1UaFS!s2?u<UEfvJOHut+`foL_%or(5X8j1mCmza{h7Zw($gxm{FkTWmIvJu3h7 z8+a|Odx4#_aTu2cwPVJW(G9mgslMKXN03*aB)#?(pFVlQq*w&@!O#?2hN$@iyL};I zD_7rc89wb%K~_-T<@@|^@&ZULz^`NULbUaCaOe)fS&d=kTWLX(9dL8i_&sqiPW7|V z)A0~b{|^eXasjc&T#QvrWwV{wwX13`9b1!Rr7Z-WUwo?HDADdhTTIDkswW5JH?+LH zb!cU~a~p>CRTovUOWy#R{ny277sPWBY{RL)US({JLc_H2!{%*L5$Wl(*hp5&Nh8bM zZex4j@s%_ye$3ZOUF7+?4w>Dc3eQ}K!EkIU#t2H7_Ggi<Z@VM!;E&iA-nO$CU*Cq0 zf7(WshrjhE4vmWweO@RAo2kJAyE)4SMxP92OAdZH-ki9sK9bvl=%a<*Ii^4Bw|u~! zxl_-t#c6e8u4;W5^Zn{a_^<UBS;WV#)Zf&%#!UsjdFpiABYgsvXr0g4-F{G>N1K4j zkxltO{GLC}HD^4H&vrcmJgZhG*-`DYvGnAXN&{DDI+^;^FXFpiU@D3o#;$IHK$$k! zJ`aoB=>9erRsAX<LCLTBw$)(an+~v6hSR>PKR7?;0=vHwrT(c3IOB8sZ~Ffa>hNRg zH}f8y#Y9I!+XedI75J}z<aVr8pUHKUKK(rO>d%vXt+LQAjW*Agj*%o)PTEx3fOXDK z-~H6~@cl36{WK7x=>Y+~6!}mzvU^cp9P60Ghi2(8s`d=Q-@MbF;`1P^oPHz=_A|mw zU7vD(*n@wJRldemyFz1=!bQ5DXm{bvPU`WfRbTi0J~t!H{pMZmd^VTh$iHzTJ~L0g z;~xXaTX|V~q&zJpZP9o_mQ4}<+I}7lDWmf~_=#`EUx})Rowd0BOj&rwx5-^sJZv5M zk#&_L4bFxdxyjo{ZGkE4xW9AEkX0X9m3nZDtl_Ued>lP1OHAE{<#*n?Nu7$z7rCC$ zTv_sWGe^2M^B4MtC`)=YBv1O3rM6;6{FFMgQM>tND=FHl>i9{|iaegn>Gpw+gq1-~ zWo<lM*XIj8mEhy}y~&gQ@L?XAx;XE|mp4Yf&Cl3;{N}%`w{H3`q+-Uc_X{+WU9tx; z$LxjkQcUqJbMB&q@Q)5(1EcJ9SvQw*$DK2(znnKxVP4rc{^9lcdfw_8-bfl@q5qPs zm9zL3*T$pq>bTWAa@#SN4WdU~4A-KeKJs2EU%Fq9rz4ea)W7Og<;DxJYH<@UZMkG5 zdphA#i|+uk@`;m9Vg?x<e2)yA%^yiLIe@URNooGlq0PopQDNZpoy(u|nEg+Fc_y16 zfAcrL|K>mb$G`4`Vd35vS!S`;I~?W2pN^eHp1W0E%<3-m-X)>5Ph3Rjk3ar4N8S~Z zL4?cOxsy;ovmi3C7%)xXs^ttcPI?}UnHXjfI2Yh1Oq(FJGR!VqT@cH2;f<El&2?SC zW?&+2--K>sgk1n_TWVa5qjV=$KhM~oxGSxJl^=PJUhQD;@ne!LnTgKAevBX+fZAS~ zs3ter787)Rn>zx+;^<vvj{t?SdFXRo8zaXDY~@=(VCn+LBpcoSHdJ@=>*Xv^>T?sa z#aJfb4X}((*zyPDL(a+V;?Sa-(OBTnKIX1UG9&Wx&%v#3)LrYR3djGh73l5aJTW`* z4*#LCSk7X?9UMMO?M4CRrw+O?k`jwn7XT>&f@``k3!c`8N$SW}PZs?)<$iGIyc;7X zy^y3mx*Nlu&TFmfY4iC!^;aduIWNSU^WN2rb{M*FhU8ojp-`V}6nI|!xd3UL3?*%M z(K&hJ3%GG~5ow`hVVs=3*iqbzH}XoG!j|i6{7Nr>&caOJ%@VF<E}SgPU3BTk?jFu! zFV0A4UyVP=9e=_?-^9|jzDAFY({4v!99`L{{6!#^%56(6`0+<29<l6cIj$Nj<_|h3 zja`W}1$omC&xU9#GVLS2hGl(uG0VrBqagy+Lxl7c4<%^iSqPPuqJ%4ruYWKcY50Oo zuWVlre|?yEY1(JfZ|K3bzJ*g=e4kB;mc5X9{7?j6{(yPl-}JQyq9`*o%^kDpKg!T6 ztIv~wf!!|LJw-C(8l+^SPkVwt=lJ?k)0UDyeap*HQ<8GNb&+b!nYPYOZAqw)#boBJ zZPD2DpsABejqW5GMK<}DEbY9lBEVuo>S2D8xJZZY&=+U)K%ssFb-7{cM1O+YSb2Z7 z6IOM&8zauyIQ_>{6}gx@m@K4?@$O24MptRGiHe>B-euGGr=NfN=5PM`Zz_`weM%%Z z7TnS26Y`8H^?PK{Io_MGf6m8`GbY<m&X}9=;<JsBBd@j_zk7^MPjYs)h(2{x+u|2C zb(1C=BW)j1@4X1`AF@<V|Jca><IbG*LZau%pNse8#m@GP(9fnwuoUm<8)PJCJKf01 z`8#ud)-Bx>;)CiLtmLah{%!j?8za(!uZh4n^_<EuhqR0@i5fmO`wO`G@TZ^rBGCBa z5K?u8ro#)$7KFOVp&Ohnh7E1LgF9_qpP2f^L-%gLsNc$jILuAgSHZpuOwd7v2949S zS+0@a1bfmK-ekj*FRr#3fi~Q1e9lIgUD4pnMSK05^3oF4^wdS9Mj;HuQ!?>9opfls zQFHn^v5~t!;p|D=j@O-&#!n+9a+0TC3F?`zc1&QKu=snTPsBF1y8bO5_O@_n>yzYE zXMHh#M!OfupUTyS`W~<dYMs!Lu>RZFCOmE0v5n2Hl|5;7>KR>MmKr<AVVkEqI{wA? z=~!KhR9<*IJ!`y)_Rb$}g0xOjCeCv_wZr;k-UGPf&}^2lapwBl#`ZBNBg+`u-x9Ag zk7tsv%pnA7KkA$4<nO!u@I+4g@vsbETi@~~o^DrL);=<qOkI=V8m`!mkJ(PAzZ5Td z&zr9d$br(jXO{ET)AHo4O^vazr#9&aIj29YWBMASVC3cV3S`1>vvN1mDmTnUt32j8 zd*M48juLvhHpEi^@Jv7Hd9-bODV9JhR9E72Ua==X(W^hzt2iy~3*qB8|2|T)F)|px zK=p-E>R$`2yvueYU~RxL#VWpM6|xJwp44N<=%y$4{yg$Uw{LP1nOD}GYJN_)!ko{s zpE>=S9>oF~n>g`p>M5D1rT51)az)eR*0!61<fp7V{iK=n`V!4F@*{sTN~9qvE1a(h zE5&PgKG*xToWY?hz;sp13zo5e$`S57R-yx8qDo2jGagZL*p`0WelY3jbOzSF7`AZe zUEZa|7hpPP>7qQ;RbkSFMQmVohw2agdETG$#E75h&5PqQFYUrlY_J8-pi{dt1Bqu4 zz8CQ>uJWX37r?#4brwzN+WEuN#c}dYb|YgpGg6fEN(VlvnPgm0XZ-Ah0&h1)j6MN` z+6A)>oS%N0J8tTx?Ey^&TGN@uRxi#Ie~fWcb16uex=bRzQ<-f?QFz^{Q3;;}G$x<f zx!(%}m9z_DOd|^`JV$&n^G9)JqiV{A{?Z@$_yv<1`dPfrBDVYr$xY)>FI|*p(fWNB zgU;30hUY|}%!Y_q{%lO}S<NT3szK<2L)9xJ50>~;8Sf85S`PmZ)i(ZtbM9bhL(`7x z-!S&#@d!ZIMY7EZHsx;?%;AqdcUjnP0`(-0wv5$0+D(~v{4;e@zk-{#U)-V8PkMn< zUxhpN+YGTF+zpam{Pn`k(t~wgXnJg~iEJO6U>8QFzL(?3s!ogO=qi@T5~T5;6AmoC z+RNsWX){COvt{b5{*O;CpN1%eW8+O<o(d*D`t!~cPqXBI{6%>Bwv8q^{I0-6ZRYF+ zNObXq_LST#4u=N3wi!yE0TEfv(<az32YXG(-I#)hes^557^$Cfy0qh;kwtObH++>J zA7n97yzHwMHqukYBfC5?R!9L%ir0TQH!sO6$Y)#2w6mPU(=jyp#jTE#zx72XfAxvC zG!*sEXJWDh8>`YDgC743KY7}-&<he9b=psk6jk5YT9Td@1N!JaCg<!<P5SmdIfP9_ zyFNdDr-xoL+xIv-HN~DN7;O4va@jfK2O8m_!&wxxFNa=Vjm6Ov+9f|RUEQdHKXhrC zN7~4w*H^{X4{d9utp!JK;g#>MhsXiDHbk~QLRZ?0&6(S8c*lORiw~iB!H%xD<@u`# zWY0KKKO8*0TWf>bkvXO9z}TDmw}HS0VcRQg^NtGj!Ty=gTqN1(@bynOCtO&u+YJR@ z7w}lVxf<8hRmT5=mHg^qQ_{+{DKh)Q?=#-cMbg-Zr^@-KC&u`Zt!|X@hqZ(!rP>}4 zMuD-i<7Hy`%MV@oijn*ge3u_Z6|;WT7N^ZW>AYJ(zPSJnp>_wCypB`kq^#9liuq_g zCbMfEGJ0%Z99inH`ZE4#rD-&sQ>H26g>UDcP#Wj?<mhbTq>a6dg-=`VT<JVGd-G*f z%IP0D8(^f9Kf4}s9{Q<cb(JxQT)K~~YPlC%ITwg)Dj&7|V3*hY!><kc;?M9zUgjqB z0TmySnh;w4lCPbLuXYwX?aElF9T!u$j32AFmYJJf#S&MM#+Di5VAbbsOj(QB7`bg_ zXW9C}kJX*NmDOJ9w72%3W8>8A=#S&a_lav)q=?71@#Ua`VSL(gip*?It=*KbJ$%+9 zIIZ#8PmNjOM{k{L-5}<Zsh24ud)7MfZ*bU5oOxP%ne~dbsCOHamv^>~jL5BQH)}GE z7@xS)SCRPNIP+be91()#^mR`TPx-E|^!KTOl0H7PLq*45Iaz;|sJ=}erT*)~`1s&5 zPFM@955;WX<EoQwYvF63ICWb;k#*WSFuNhLGObkx3*SxsDieGL)>TJGO~-`ghxz(? zXb9xPFdNg65CQeEe)o{?X_2Z?$47A6Leg{!>nr?|!Ik6>K7?rrp+h|M%Y%L}Zah57 zwe4=aC+&P~DaFbrlHi;x|18Lt`QhWg|E%m}e0gK!n{WQl(EPWr$-RYb<GFK!rYB$L zd(s#GBV!FYa#F%~0-5aH^rSxje5sop4jQ@>^<-r|F{As`nZx_!94yPX2tK8I%31xN z^5AXdu8{g~E#Az<KNxOVTR!o$h2fo=89wyOvkQmfkWb%;eJLzwnz{04gZ+%?(~R4x zpUAzH+^J!HVeQs$^&jCFn(t#zp7E9s8N6WZ#4R@P?_e~s0ead~yRM7w(#Rjn({Whe z`mwn4{a_m-p8EK`&5^|OUB$U8;{wV+OSeT>zxT+C<QBs&KxUDHrdFhUeLQXE3;^Nj zI}%(#<bcWsjexIp*R#0@G?7y72?di=cgQnI%%XNCZ+RA!UVhaH94;5Q2Jy%;PvCX; zp_6hZy741L{QnFyKo(0H80;{jTgtZW<afc*iF5F?w>mS>;TOuEe2w)fbMGYY;sPED zN@F4n#_?b9u;Uzb4km7iK7(o|Xa3lYk?XDHDPPn#ZE{jKE_^GWQBivPy|9Z#zuM69 zF<?NJ;}ARu=c{ueiM^e^yGS^TjAB1^Z361S$85plBIe)<HyK@=gzjCwzT>f5i^)(N zhH1yLXTxA7sX-Mx2|YoY&3nvOiS}H3xy!%vv`#1QEP9S@#S%Og24u~XS76|s3x%27 z0#IHexVn*Z@V4IYv+dy8emje71)OmT6G^tM>QDLGdYB6Y3$djgsl}OP6I%ZQjOu(d zJl3zDrj-?lg#)=34<Gbj7)Y>isDSvDjGVNc%6o*tL}R6laS_q{(&0T|avtyGIPD-* z{a4pHa$S@#d1duMx4dE)S%dMSm_$^xK7zYzJHC#Cx}c~3U~v9v7{0-%ucbjvpTk2A z-Qg3@OEU)t`E$WL;~>9woJ_1P@%TASp}a?i^R|b`vp~D}Dla_V=zM6<?a@qF@<)C& zplWtbWj%uOgz`_e`fGa)ro}^ce=R2@wI>+frMyqe@dGV%o?~<z+0_uARCn?+*naSY zL}-PjEry&Mi!<Qo<6Mv?C6MMKqy53y9Sk!juAQNXuwoAV$~On<tJHPDow8kwTi|=d z9R}s~*(9jEbnKkbF*f-josZD2&8u&GH5Vl=R2=4%H`&0T-@Ma{rSS4a5B|#^to2jG zle16IiG7u|cgJJ5%@Dta_Pam(T`!!yIN1}L#>?5{cv&Cd3dTzFoVidR51i_$$$ZpJ z2RLR^tTqJ)UjwGebqvdSeHEGYMWr8qrCn^j7#i0<B~iDnNuMV@iF4k}ew6R<SN}yn z{f1^V{8^kS?*>k6)E_;`^wHCf#@Hja7dpY-3k^0r?5KU5-|)0*Y?xs*`Xbj@xuiJw zuU{!Tzox<|{Ihhu;5X*>X<T?xPi!;JU8+bj=HX2JMThbAx<L`T)!8{uA6Y#S0^f|s z_*&Gsc$49eAH8R!4oTa8Q8&rlwoCs88`SR#GX3wm&>!E?x$BM2Hvw21VLbvGA3%$N zp5}}7fyDY`pMuHStxr59f9+fyr0$$EJj0J3#y4Jup15{uhq2c&{Y*a(e{d}}b{a>G zZPR9N&}f%XpAmWi9r^yMKkaO9d>JF8<yU9=QvY(}AtQd|$6HZeY|+`LJVNWQ?n!-j zqsB?{yU_tG5Q$q?XwLelYr5Fh(Ko(}`h1;6|D<PXu$YQ#*H<h*`q<G!U3zMceeuK5 zNAvcpE5;3<ka&DOe%4++4Qo!=`l`R_sBKdhJN6M#Uq$CN9xvVTRcTK9K-&Yp1a)xr z{mE)RTp%uH<h~|Dhjt);p16tK`GeIw&~#`77>hG_Dkm~n{joP}!WS$JRWwO;7BQ8B z7@xZC2A(k~p;~krA?5!3H$<ei(DNf+{>rgIS}fsf|G4}yEX2aqO_;?u0yuiS*8Gq5 zI9?53+!)Ek@ULRS|M)6bGY{eiaOMavvL0toj7;FmF-5##yrZm*so777>%FD_QmpYr z`Y1U>D~F6pZw_6PH+-K;9qdaz*uF;dDLvZP@+SX@g<oKp_{sM<{~zlMQeF=lq(*$e z4N-jdtCGJ&^YnLw=wH2HsuJlh;eg>Tdz}oyCnY%@v^O(~`{2hJxVn?x0cXzBS7$&w zif8jAWjSxh0x3>6h;+iq#=~qZWP>D6Tv()~v;()t?QN16TwGAv`8F8rpzT8Z$H;<Z zFUrw&5=^{{v|cELZ!Z}7qBbx5ioD)I=%_z_n!$0>8S<Ji7<3aS6PWK)8jR@UkzzkM zXOPOobq1OJ<p=q8=p81v7!+0m8$VLP;rB6lRXuI!(4L%Y5H>Nfw--`}srdQVK%H0+ zv!rq8yR)D2xey%xmGFGP*heknv+3&w#7>bthr5fI(A#91$D6<Jf_m;SvgHU9*R<Hm z-qzpAJS6aU@>-VIqQ#g^X94GY1h&a1**>79+)Xsxdy=>`;|KZv8e^2IkDdcP`Fy6V zB=v1KJUoJ4zQN&zs1{I^=!dg;F`(-6!#`4J4JA4z*#POg0>ZoXZ-uXhI$=+Jv^w)K zT|DKLDL%&v7av>d$NElI8Bz%2=pwA&P1R-&zy3Q5_)#%@N@Gt!9KsW|--l;IFLIck z47}Rbv>EK9doLLFTtD<QSHCmg_82@F57M*xwKV;9?_}axQzGqiOew5B<9mvQ(UZ6t zMK&@{`A{7ng})TXCt1dfjC|@J#;nRex<~fdg>cWMyZDt5!uQp{H%B)*a`;8q?;7)G z>my~xy@usW9Imr?Jd48c&-geOXXq;fW$62LhT1dd%IS0%&+x82y+H6(Ug&4jZ_?Um z>w)Zpg`AKb&n0~_<SCeQ{>c#?4(+b8mFMU<7V<8JVM_V?9KC3W9yBDgT8jCwPMBCe zIni+Jn9|`KJuxY=$h$XBP!aDJTx$PXa^#mkAA<qLBcDN$<-JLLGN+(M4_c=m^V664 z%#r$QKc7?O>kB$vw7vH}A$syR7R_fks+(<qnos)Pj`Wi*Vi6>CZ0#7r57QTWF_m;> z7N6Sl-Vt-zJmvT{8yWhaCy)N@$9buwCq^vZJ4d_taf1N31a;IggS-T|c7E*pNwUep zTrcrtV?OfppHpAU+rEOG$k@am<Y<R3EPAoiwl*~NedzhBD3&Mns7!s19P``ABRoZ6 z8Z}9sFy;Bod8M_kjAcLM#iw0sL<YXaF>8SM;mo<e`5|BT3BJ)idi0sL-`G2CbJ{K6 z&V0Q3C%$=a4AsfMJwUKw7fg9!rk}yBtRsf|;L<GCj@sK(__ZT{BfrsUgK{-rGL++k zv1<cQM`j#Xchj7ncrcCB?Z^DKFJ5iEQdgC9+&<Yfc=R?zv9BVli~eN@Gzv;@;3swp z&5!;`gAyIay{r$5C+Q7sm)d4*@l>z6Ge>sZjl9Y|ZAE%~9(lcRO}mZCZnAc~NWV*; zF@K`1{={^2-fcYj`sd_FXZrtdytp*@_F{PP)!yjWx5#WvY5v=9LfH0}v7zg)&^8Wj zvA4eTJsURa%GyHT;fvI2an3liwlz+<&?mO@f@?SZ_!oNRbEB~6n%{YYP0_cw;*#>M zFUT96{4;XeAF_tSN4}eO@fIz`iif_QCsJ~S;Ge#9Z;U8wdyhQ*fR8n#wyWb``1qkA z0*lX*JAcz^Q|AA)A>)*#SA%?YofE~K8`BoXGlztqQ&u4;^ACr^_)YG%MO3MY%AXrl z<99SWt`sYU{G)BfuKlYTDpJPo&Ry0yqn7yUuZ;t0^2o1|x1D4*FBEjr<DAatjf#ro z*M!QYEb_M9&szQT6+{ocgX5cjCHuAT#f_2ozxnVlzWu{E=QT!oaNJ=|emzf(_CKsK z_o}#+v~s3w<sF-=^IF_5%N0*Wr~y)l=75p0aq>IhZfAUH$Lb?P=;!@0d7qp&^98M( zTi=#9Z;I}$)idgfZJWgt%jY(*!@<hik5}Cr4HO;uRhYctIoT<v*5KQM5}l8-SHRKn zEL@t%duB)Yi}RG7uTCd*WIgF0=}-BJ?D*s+JMu#;Ra;KnoHM!NopJ+~!Dt4;8N75b z`E$6DLQbC?C|%B@mrG_6nMulI<%yBrvC0OBucLJG3ZcPxpTsce?84omXMUD)I&?c* zbaz3ONx@<-+xr=`Gk9hq+m64T-^AhNZM(^0;>(ptY#V%VPnfpcf!Lxolh0gOguaF( z%AZMh$}(y4?eW3N!LQr`lO6ibTo4)9`8x`8%wNWa_9KEwH=)F*4uhs#69O!e)jJ@O zchrt7G|6jOXetLyi1_}Rw39(~>n;9+qXU~sr}Sd7A|jy!fAsDJg-HV@e)NJq3+aAW zIE(9EfJ2pkgD}}US>TzxkqbQ)^$S2bN{^lLbFP90Pi#w~i@5j&&0e^{Na;nlb(5Iw zvpB7`YOPM%kB-HKqM#~kCcUCWmx*qV;Tw5bCWIOu?SlY;kMYnk6Kc#)-sBf+>e$mC zUUUY&_ltO`Z`*imZXk~wV@(8@L5gSdQzkeaA8cF#mE1NoMDil8pOe6DaUt+62cqJi z_M^n?fI$J0JB+_c-2D3WV7loZsgzB79znG2LZ_RV%8Ms)7Cf+$8S^J#14n)_B_nZt zt-bM6`1{qD(v~vx!HDkIgMKhWz_i#&N&6t42~E*M!s_WcwVQ|k!El{yChjd~-&{-s zAfG?#lY<TARTn8+af@Z<m(@9?i{)r(B+rG_hWar&EdGs|yD2i`>pX3T_Lw(*KVw4e zUqJ{sZwZs{6e1WUpRx4fW4kmgn7SC$_(wqbmNslBKXk}@I(@!<ErNFrVkaNE2oVc& zA+cjxxtm|zO^tYUKjVs&Kv|9&LH8VR3C0R~1y7l|o2lIxXD08G((@sW-RS+rr;%{s z93ryl&Dn^aMAPFh<;M2TMM`6*IdJB`8IyBb9L9nj59IY7NnnOYejz8n7XaB1u&MpK z-~O&+y1dS7q2tSZL$mb#z?iT;(Pz8SlKGnsvbT=ge`9>>sAJ&xp!_2wrjD^bJ5NOS z)@4hgPCeEy`B?g%50oUwr^RGU4aWHclsol(3J3QH(~gY4k<G^7bodo8p>=IM$)9;1 zPoHcGjd{=JZ8u@e$<bGS)G1F?6}w5(dPCC!(goo0^`v}!%~yLNVhl5uA@a0D&|bD3 zt3n?sWF$ck+WNn2(#=AC0-5L>(_X_ka`~gUh8*6Dt=xyM<8x@}3T7Am)rp!}_zH#o zY3JJpkSHq|yfh}}tKv}}nYCHHke2#aSM8&r>tD`0ABHz0S#|3B{1sTm)<jBjR(!4N z>I$zX6v-rqe~&G-Cw0qmdOo-~K6JH_@Pzt0@wNU)zkKG0DKfLMRV<p=*&LxOfAc@G zVDL*J<A<}}jUDn~SZw8s66Zq8*^_$og7sbJe)p{}$b>g8wZ@Bx9{9R;!=A$J;~md} zPye%q{^e~pSh9}xHJYEih&lA*+a&ylE~rl3622h_gJsrQR7{=0x#KJT5cQB8flbub z=J3(B8*P9M37xwGruH5m6i?+L$Z_ECo6tDPer+aao#R{5!lp`zX7dwYzOK+_G`0CC zUg!u(>o4tq-$Cj8V|=Ln(>~<ylTWbV(Y_i>JC0=SzDSNhy07x&ZT%-RWaFbSTmkKk z7s=3ctsC9bCa2xB4E>?0p5WSZLTg9z@X=RWR$I=0`3FD!i#`1`o>BGF+?@Z#U;NL1 z`%nML|CZl3`^N8z{Yv1VPf55d;gLT!+zxR*hTM5&so%(qF)bST<Il|}_{ldk6fTxq z_2x|uxdUwZZ_4U_$XFv@Q1m1+5uY%UZh4Dg%b&Quo_CjiJ;gV3@WV@Aeu``wY<k%= zj)h6VIQ3Ok+sHP4jp#)gJf9GyNsgZY46IMfmwfZZ&}-<Q1%=g-L>cb*6kUF(KSBiG zwGk39CJT?2%4;0PPJ$6_Qs}s><LBJqXi>L!tok^x_jcr%ubRZKA#~@W@8rnS7@aV~ z>yDOzrjPp_y&0|BNxR5Txdp$l1BQWL=u-`TrN)BB1woG5k-<0f3Fp+#5<AV&#g0Ml zWG;OG%s{Om#|$8oXTa#<&cGo=?hbm=7~0AY-?X#%G)@W>qC;lzi{9*jWjZNNPbtvD zu1;pV(ZcUxoH~hs_#0ing497Z+Q>>CzmH!=X0ZmR2@kYEHW(xJU`>8?<}Q-2HC5&; zrqzd^eDiX?`N=&$;b&uHFp#vk)+e<y!pR>$^pmn<X9{Y=OaS`Vgz?ENLR_$qU9(Uc zyLR#1`l!9LX*HWtyD@d@lfmt~)1JG)Dz1Ct8NKujhMAnz>ny$iwNx$Of=)7|>r2qP zu#Jx`kY<q^>iSkYPkrWS`%7K-S0lPmO&f|leMs=xl)6Hn{34=AIJhNiE4isNp?v8h z1$E?U4@#8vqBPR3yXAQ4&|h;%&x5|hp+0BfIexqJRQBYR@?hGw2@4E^SYI<<-0d|r zRm{c(bjp)xUo9Q9?H4JlET>}w`zzQ&N}(!}l{TUdP(@_PDi&V|$?d}BxRKb`!eCJ{ zbuwS;p$OyHZ0u{hLzb{@u!?2SNx6f4$!c9H%F({)LhAq}x$Q3Jm#pNK|HSyn(kHa9 zr6WRmaf^3zr1h10)#vAFuiT-}SU5f&zNb6LA-|SJ;bp_YK>r4&wT?o~=MBx9bIHB1 zSZw5nY5tQg?&P5DQK32MnR0zyzc!}%x<-0RCYik;=tX|~Xl#PIV^`?$v`rs5Bagjg z-}>vz_y<n!o6vs9>1S!fnX<juTX=B8<7cHyj;m`TnoiwQ6{B>&_OY3&MjksNtp1=U zbn8RCb>x#deOt^wwKu#wuhp;N*RE%*4;_%no3GBO`%#P^pA8Z36cF3s7Wk@9Zzh(H zf1V~dW9`|TcNZPq9%$;HV~=)a1ECkrNmur<A;$E)YXyBbZF0wpUc4O{=v+vw55_N3 zD-}?oAf7++jmr^F!!iFlU%GO{KJ%&8(zfIRzjLvR*wo3v{I0*=#bf;NF+Q;|;w6-k zmSg9|RvaS!g1a`3or7n_-lc2Zpih`J6`g5clNFm?ypJ8l8@qNs-+G<7g`MzCTWf#L zd2_@qi-bA^ZLrlx@oVRt6r|0xPX*}o(}VKC%d_nh0cb-|P)r|f{i8JE<kLI#n>aM; zS3ybEH~fSpas3#3XFWOo@0vmVQ<l17zYTl!M*bTPN~xc{pLNF3Nnd2jdy}U&+J4R& zs4rptcGfdjyTTtHZSOfI22|=`^hF3139$j_4cwQqt((dA^`Nx>{?u)3fi>-m{8>vZ z&n>^3p6Nr3MW?MUpLZ5L1248M!`FJD|ImlGLQn*|{I<tnn6FLHJx?;rw;r~>dzW{J z?0bgD_Ny~CMpAJdQ|sT1w|TZIdFd;B8(6a@FwW|y)|0S|eI1MFKR8<1KKSp26CoZx z+3fDR?6ezYZ3R=^eVQj(4b!4V-{efXINCqc4&X_;@9wKCSjR7Xv9ea;*l-lclnk!H zaeTjaoi>6dqv7}i%aK3pvh*Dm#9{K=u4_@49{l8U9(4@|8h;2=KJm)0AHyT=S^(`4 zP~RMX;wPv5P*;p^9UbeEzip&?U|1Yv=TL_Zp?#j79E0qeU;g4R{_)?o@Rg4*Zj7Lf zi2o3E|HUhO^d=l@J|j5!FNy)@h+-?pI`1Vrnx!2)Z?xb506+jqL_t&mqw6KroV`%+ z8bR{NQY4mmUB03zmq34qp57m?6@=xsZR~t0<k#~!rvH`CPj_%a-kmvqq;rn3YdHqX z+Wmr$lv~U)yc%EigJFc-bjgaA>-+_6a;IcEB<MXq<TuyFUh@{$3*M4!4vlQfdH<yc zM`P(EGA_=M#NN%ZxR!onVJg3LXr)bVgAuR6F;Q)v&YZ!zgTZM-ty&C6zlBm|yQ}$4 zpGx@6`IVVntmvM7F(bL*Yi*Y2p4fJ=*C!gXnAsP5(fu|*Sq35ds=gnDosjyGHSM_W z>|mDZpzYe?+?}LZaA)AHEE4gsYbMi~5Nt;9q0z|VY8E(Mh_g9P>ZXoojt{2X<I5t% z;=|<b?o=i+lb1(byFdsf>=u;OTGGA?V<u?R<@k5?$(QC^0j3Gj8_ZkAZ>^`$njGnK z(Q1GvgC8v(Jbi;!94lHT?tg^SGxaF;6_hC(Z`QK5mpEWB9Y8@+{d^w>w;o`F!;4TY zAaGAxN~|q~E*V$eOvv@X;E9imEwu3Y=pUTLnzO{lmGP7FlAVt^fhkZD=%f<J;jMki zKjKqw79w{a;dW#35MYK`{|JvGizwyldt{-Hv>cU5?S|0P{33)dtutbMPH2A(hAIt@ zr;q}=g=DXM8FJfp`8sX8PadH?^y+DNHeTOZ@TIS+?_l40FY2Ri#B@{-ZS2cmH#wz( zV;8ywcCfIUti1~e$F(7{go%qOu}uqOk;m#RfYcAi-E|aM$*=VpS5nlnUXZnJph~X) zhi}lyzc)oN%8aasdy;d9@NZaI9lOHdytafudfHz$YUsqo&WGUUZ5bXU=n{y!<fGBf z#pggnmUHrZq<;PK%wABZuzkNj&3JT=&+xXf$FCe#B+(6L9dLo+c1=r0*2fK+y81F# zZ2!lpn9cq53X6If^y<esm=5nO;_**^kgvQK>9L`6OnA}#;9@mnQgww_pMoQwkw=#k zm<2kjbWYFb`W%(gew2<s$A@rj`_|U*7;F08A3BcMp$qM?o$j%G>bCQS0pY@g70&ek zws|_kFE2Fan;4$Fxgb<`==Lc{w(BQrp)~Pg?X(wK{1>dn5!qzyd`^dVeO&@#J|2Ce zV`+5vW<{Rvv=L%HaLimZzVS<NE(ZC9+Fm&IVla8hsISZ+k-a#tG;H}(An(oMM5|3~ z0sppg5+}&7pAJrnziR^|h5a|NoJxwVu$a5Pk6o2_=+I9U0;0~QxN97BdBjaSt+YxV zcz9A@{v=b<&+rgGYu2gPkvi=eRmV7f3t|19%JYjt;2E>siO(&39%>%BolBzRKp(99 ze&oon+(W=-$0Fl#cm=439?<9`qkk<9AKGKrF>W|ho}%`NdnHmVyWUB5X&RHAQ$7;6 zk8^5dRwun|*Y*;_+jZ9A0oPh{$As3shAtEz$qAvUFI~WQ?UB5W9r0n_7xLssC$v9B z@AzNaA6)fYD#9AXar<$2aFZc_@sMS`)Qtw1Blknb+(>U<sPWYbcKT;9zK1Kn+@rsF za-*IKZ)K)ki<=idR^n@mXq6fxY!+wS%p+c0$`OloH%OFs>`mFoJx@U8Ytj5}&WD-L ze@XxT`R&hnw_h%6zs;I3BKflKyvdVQz3r$$wpEJ92ba#^!_>7+u(N9dqfRmrxp*e9 z>ws5ZWapH<#`LaB)WMDkVUn-UvqxC{^r4%)U^DlJ_M#&-=TBK^Tb_F~VtN}y5x;dJ z8}E*d+b+I+J2=WqHk#9B@b{<aQ_s^ckKJU4?$UE>y|bqDoDVG)_=>k}!}$qYHlRyW zx)fhF-K3*`F|3S@pZUkfTU6Y1fBVgUxbj{}e05_aF8Zsu_LYqh=5XRG5|620D{GB$ zK*PpQS%8oHS5;K^YkW@`(qy1}Vx7E^zcOxn;QrK?BjHoopPp|69_(Y|(2PtvR^Rfz z%-e=ArLDXspO|3V&Vqh;mi80*=k#SRoosxW+sscso;2I{mn0fDc{>cAJGXvJHQr_? z{Vacwj?V|$l|2wgW<N3KXg*!i=g+`8hsD{XJ0WH8{60rFMH*)yPTa+P1X!%ze5ph2 zH~C$dR`%!sDx{&c0GP?E*KesDlcEc)AAXoN@M9kF^+LEGb6f+>;lDeL$uiio*dy6Q zWJAR9n;h<tS}=5Q%>-i7s@~}T#7#Xnp3WjXL$d~xqxBbCOhA2S$XOUJhO2%<+g;*r zoMaG$h;xH4Lv>~K?m*-SCZsnuMe_557C^J}uB6m?>@%AI0o3o77yFrD!q>i7#0F`7 z@eIT!l;n4E$OJKQ%FiF^(v1%f8uek3-Nne;TOOMY@PY*|n!T{HIQN1+<*Cg!fVPMD zdoGGxkZNB%akP$Vj+q9NSb0mMrgp%6CKVS$?iBTLZGH<IT6CS*YJ2?E`1m0FsL+xP z!*C@nyZMQ^(Fu%|r$C;6n4DOoB@Um97x7?AQ3ClELoH~|T#S65pX2RI?$R;n>0vCc zR3LIxKBo4T=$Qp!F_jLAlrCVTaDEc&H+W_dt1zhb%^XX6z1clw^$D2?%Ey<}-r4s2 z>XkD14wCZD#e%*%dOUNl-_633FD6Vs3f{<|vv-g=A|j{%!w5GG@@DaNj}2(2Ef3nE zBfUN;`XH+<+FI&8|8r4E&G-tUZcbpVJ&Dq<=$m>O>8qn+(Ke93X)+VwP2Sqow0!c! zCrEd(k3d;;k3XG~n<I6!X|lJxdX$rqxaZ^^{K-9h_~XZwC*Ag5#(u|J9~Qc}&5J>| z4{sl%bM>Oz^xzwds(*FMlEEx-9PIACZqPn?aBrK?E_*SDC1q3RgMV~e$Oa=i;xf*7 ze}N}JgvGhBJZ;1nV=S6qQ<%2WP4nRVkn;YLR0J+;d;@$^lOEeI|F#G=2_MJL@#(bt z@i&`3X6#F8Ii`Y!cH1v}?CURbXqs?2(#LSEPoKKCUzj)Rn^1Nh;?o>_s{YJ(E-uZN z_|c4S**hCb>IQ9!x|v}Z(-&3-#(nyO5%_oGMb9x8*aUIG^mAUu>b)eM@-!bU{m!*w zM!kEV3%e-Ur$uU~u{^TtRA2<r84vYY_-k)AH{pQ2;~CnVr&S+MV>~h{GG#k%_VzIP zGF6=vmF!s^d?w7r4ZXqFoP3lvfGT8icN}$*iE>QX_{fh8p=J31;lOA<^T}ymK2xhC z^<19*>x8AgQZwritV+#)<kLBrd@2#jiZ_Qo*zv%erXmv9_uem-m3MGn+;}iX+RT&q zFjX7o;iE8V+#OBi8%uJb{LuzP^6`{ay{Zc#5R3^duHf+XB0YV>ytREn+2(7X#cD{P zGY83JDr=e?JUOZ<=R?)v@pa1hytbq*@2_=*qCjCHpNwu~Mz&w5y2j6Af<Dq4MCw0B z*||1P^j7|e3x4ZkGQC6ZZTe@%uy<J_{a|jLH4>eRyZ&NB#!g@F_O2d!b`0=TT(L#2 zSg1dOf!>aX$?F;^^;<0D9Xj&2&98HmuKr!eVd%!gFK&os12h<ZhCjaPPk={W*Vq|L z;wZy(#Erk}+z2>s38irAJ1JQ7-J4$d36URzY7@IEF$~|O{q*Z5iS?59(`?+ZS2|f! zf7Z;kciKSvaoSqzC~|7+KFLBR9|BahFZHfpv{j*4(B)6rGsr{tV*Cg#s`jD7*SYZU z+wA<<8(@Qhy(t==r~IQTMJbP-m#QxqEkAWV>_Z5f|9EER=GsiBxroe>yM8CIzHi~+ zK|)&F$%)(C$x1-K?J=i+)yyw^e0^i&<Hvs+ng7kG`+|fQ*`SRLclMn(@Bjopu88+` z;c?SXY8o72=;ZmBhIGvAxsnODp8I??F3rXxYw5^ug^%}>4VQsp=?8E1zm|ur`S_gN zddWETqTmym%{m{;yQevS7QaX@?UyN#Z|MW_3n_onNra4#2#(}q*y^aP<XK2;9uf_H z`Q*d0<>m2Fx>xc;Nfn8Bnr>p#rsJhCFl7PeNN;F5gYa&Oh<i8u#Ma<w8W)v8O~)bI zU~MsH5$kCKPa6E#7fyN6=exHqy4@+W*z#2ngM4<^Lx<;gzx&;_!C}I1_&UW{&yblg zzW+Yolg=dd;YUw3c$wPhaUsB9{_CJ>FkAlio7<<6*3d@_y$2<_@X%&6h%MfYVv*<t zu`V_YeDrZ8OzOuZ^-);{@GekVo_rJ*nxUBs6@H4`_{Y~RDgn@H%tYm4Cb~>)HdFQq z6$a5qekY@p_fLG%#Zo+nT3wurdp7OQh;?vhqa!%lz6MJ1_+a-eM)C-D>cv9aB0~O5 z48h^o3*t}jm$491R==|aPSN7a`S=OynYfeDyz#v{#xrzd=lGy`5!Sz}JZH(<1;DLm z3;`u*vxqy7)kc@#lboiSHFC`+J>}&3nw>L-b>hXrUy-9G_(oe*k2RY<ZT{Rro%Vm1 zRW>I@3qL7O^XlPO9X`BGOBwfZWNFY1oPLJ&U_7?CD6vTe-+(921+oRn;GO!)8Qe$i z+R-*fX3O-|;16$o%D3vHu_ZB^;TK?!o;;pRCjM<Jb3RnScd-|rj3Lv$EymvGP8pCa zn}wRbKa10dEdJu9O~#3NWPHh<npGK-r(LCvg1P-G1eKAvi^s@_RVVKuSAJ~py>Aqw zkNx8tW#gk1M_bFIyK!we+F#&A`-O0DMZge5eiRT`TjVZoW2$g8#E#?p#<zV$T|7DI zxD(#?`=f>ru6jC~CS*VPa@O;!9Yn^$L_6WsK|n=hbR;*4tr=s5wnD|gH`c@Lg6Q}! z7HPL#n5(n;ofvdO({`+F>zh&1jRCS9+8><(*ZQf10E)t`ul5Uo`KG`p5$XLqMU`>O z(#K~pS-+r+j=AV$lkyp-I#0k??7<zIZR*$@fZ_djF3M6~l7oxVz}#_8+T+#@^h|1q zq*FwH$D7z~GpL(=2)B$re`Jlr`*Z|<<1NmX2UF&_`aQ9^M)}yT9_J#hPl$L@BzLjj zcS8i-Y^*Gn>*>sVy%La2<;76^>L7m|M^d^v24FH0^if#H5Ak>EczBPTD8$zbj>J6V z@X;|hbsz4NsURT&>cI+1QT>tresu96UUtucW^mMRp-;`m57Te>N%g)nE}Scstsz*3 zw+Y%4MsaZ`&9+%b;Zo)xdw6Ms(FLTv3~daZjrEUS&da{gPd|clb@H2{%~Pk-7wUod z^2UOOp3!@ciy^s(<svH&-u$znDpr#00MC?PS-y_Bq3R;xEH#=Pty6z2A}jjY+4XJC zDI~vAoPQdUS3f2;hgd@*)<!4DPsZWZ);PuW&}=#*Czl-K-pn(2<*%G;BkznkEw9dC zt}ZbjLK~Mwmip-*I^$4dFXy+xF;8E3(pNvixBYDG5pPg_9r4JOmQU|Ex8!vC@Az`O zhrUntMrP#(COp#0;CQ2LL_+mH$4tB$ctW2}wua3)x*cz<-=#h67e&>IzIyAIZCf|? z9ou$&u{xHIC+X?<z)l4T^lqJ2K76SIhx4Ur|7T<VhA!p7g041_L$38(*4WKMOH=-f zM=~_ZIEO4j-qJP0$0=`#^3xt_XVS{|7k-wf@`xO<lO57RD7NVK$BxpJBlL&iimn9K ziqpQ^?h?mgm0dp^KaCA^1?%bih?Yissh)$Q0^m4pV}00qZ{a5&;fsg=?I*b}PQSV_ zl4|<b>5u=z3yxnoiO$c$l@}i{j_-C;<SMJnu#SMq=a|V8cN0ZpN!I#b>4sa@k#cw{ zB3#dMJol!|P{<oSQ{m1RPpIegwY&lvOl_zS%1I8v{ka5BnfM>)DtgI2i;u$3@_!`* zn{Wj0>12NX`9&>pQYVOUR-HEUZZL0I#YF;|7j^o%9yuVD^c0UP#s|_;6Z6x3lsp;u z)u(~!+8k*I%z5HHc5@_iL;GZ91!4!U;3P+1)yY1(tChzI0W-;<>Bd7Bm!bR4hJ)Ws z&*YIo*H5JBj2_Xo@Nz+J5PH`|!ZECNn2_Ft#^PvfagNvGRB+Lr&l!AC0h%C}pT<|) z0AfI$zozM*MY>7MfQ{Ow0YZ6QBxaI<C&DUk2NHd<0+U_;1p|MPVR`dD-&yYB{tQy` z%aa(c4n*?ucRhJRq(ABg%{fn=0nnqir5Rb_Z29(qPh-BXq+FO>17vN1aO$sh$aZbO zN+Q8UN-tdV%OVy9cxO>LlhG`$*oPX}!90`R)Opj<FCIGW4c$y;p2nH4451mEM1`U> z*m?ogi90;W=zt&mWb~-|JDpUkTz#m``V1|E1a{F`6qk&_528AWO}#*3!;xFQlt*SK zrn8aI3pp-uD2p$o(*$xJUG)usQ$GCB5khjH5sEEw$AIQInSvAb1l@HG)BHcxgyLnu zGl4B(IrSkH;27-jNeKAZdw|?29)I!O)W1!@cX?SGIec^f^dj5Iso}*#Zrf6_gxZ|` zfUf8HxPJ03Mzt;pPJoA<NnEkhhLVgI4*B@6cB!*$@UZESkF1<k*2o*#Az(-Pc<oHP zFKr6jW+HFx4|AnWIayf8pMz;|`<#@7@;OSAk8U7~H{;Vd7>iT9Ap$R%o0s^K9a?GF zgw21(%G8H`F3oSHPr4UnjVG^To3?@I5khhY=@e`K$VQ&06=p2%;<sbW$lNwo0pW$M zi_7X*AKl~6*fQs6yD^e+Xg4G&$NCcC4R7^;Id&%Ib#?|bTjcLytZ;vK$A-->*P$bG z#<Q38O4hb@?cF@ljpV+s;*4pS>nH7V4tBY4kw5xoJb0F4Q?{Ey&YwopQ$OTG--J*9 zg2SC(n>jnS&-faj#(w_XuutasdW{RZZlI|D1a#{QF+0r(<nQ>p?P}_L<_5Mc(B+@` zbLzb|pI(5r^@v9zF2OU^l{n#f-ui1@wMc2o4^3rG{fr6H?zWd;Y(amqZVKIG%9&*H zBE+;b`jt$3M_e1rlzjjE)A3K)v@Jf0!z-{_tpfl{zPfT>p*KrPH;SWS6UZirWn-oL z(DVW@`GrwR&T|e!>i+2SBvnS<Ol$X8U-Iyd4#Kg*i{D3+%^!7<*?HJz+}MQ6H0L6I z^hLr221@=y;6H!pMq)p=?%S^xZ(?EVyqx$emtUt$d6EiZXA|*H{Ck`RkASZI@@Vdj ztk7$>>Sy%8eal_{&DuksN_pza#zgy~_K&|ZXo;@qbKbM`ySMoz81rZ?UfCUcin?_A zMD2k2WRFj3P_j;bBK7CL0ewQ-Q0#|K8(*9Fto=Bfvu*n%g~pRG9bbZ#2-Upj<e^y^ z^^43vX%*&U{370QY|`?l4)2)n{1VYKd`5TbWa=SpGd7U3m{uP@6q}76eL10J@n30E z@ACCO{;se1JbC`)^?z;1NpBoRROi3Q>-bn(^Kk;5<>f29=PyxHm7z{Thj#jIPV-kk zW_-SKwMYN0b2_TLbyt2mPy3O){7-kz9aq~Uw`0wzzu3Qi(58y{*otw>cB77b@`S-X zG0f(F^&zbP$M$B$w;%rXq+b8LXO>sW|MMT-|MUO%-CSV2Qv54f19^cXmIf6-m=m3# zLJobSm+6aa$^Yn>Ye&)OT1iC_Dcb~I3LJmJB)=btBP;A*&QpeV>G8_LH+lUm&Bz*x z`CPdhzgG4V!%(oO&AyY^oGq_2#{|BpH+tIqy8>D#OUcM$O*!b>Db(8r<sG~?FGaAU zXxSm$M(I?(a7&qURlj*lQ|kNVW`5+sMQ5|bIWd5GEKsND28sCO>5!XFR%tr~r4x4L zaL~7th1LT3+q`?&K-K0MXY?t93=Cc{`rUVV(bKmc)13{I@3H}+Q@SHKUlSmmXak?Y z_ShSFU6f^l>f$pz({`rw&s{yWl~DU;fSOuqMubjn`cwsb?BuMbJ<!2F2FvThDI&*5 zd@*`M(u*+aFzn;b76*QixZfWoh_3ue^~lFe2I?WLur_-9H4X}0N}FF+9Fb>mD|1Sp zfm}FeVzkoAKf98!2&-L{OY_>y@1)GH?3n1tA;W?iHuW%@RPI!ou!1l31*^ubzRFkL z=nBRlX?>X#yC^@KO)$8q!Gm`OYLA~j-lYOg^s-rfb>NR|3wMueSN_^V*Ez6FsL{co zo;>BG4W@o_bTNuI=`P&Hv6l=yj?u5p8X4H6UC}iclx?H2!`Eh9H1sEV;~RDlO&H)$ z1&j)IY~Iv4A9upmH~0f#Nb;W#w5(q&P0YDsr?uO6lg9@`F*et~$(Y5(T<{awiSA)@ z+fwN0=|xn0rSA#q_vi2O)1FDA<LC1CoK8=BrS86cTR-EUW9~4y(=_%?8=3)t<d=bN zcv-tXrcb@~f-L3Rx0e&oi?P%Bc%@jiJ2K}H>Uy#GQEj+V9Fu>xterdlIp;&ZZv8;1 zULt#Z8Q=5{{M13HO1o_o&$iDkTU+>QWG<pRhImj*Y-(_H9E9r}%hmR*9i7mP-q_Tq z?GnSWVKG!mvfIzKN4A|qo__N5+08$xP}enEw?!I0eO&#$w|O=Lf9k_nfnye}rG+VW zR7cXa>ELKv%KXu>C~@0g#(Tep)%G3wS>VM*Z9m6V5gZ7$18>8gPeCx`4^Pe=WB;7b z&rIT*vZWyhyD;PF^ohE)`RI*pbFsv3IAQ2x-^-lFHvQ5#pEhUHBK~SSi)^^m)Vt*G z1<a+G@`SdjQq{2PHNJ4=xb$EPZTq1|&tJ6f^ez20es$sGNk|(azvOE(o{nT69lZby zop(y<i|moF4KhdC*scEkslWaDXUEzY(!R331|FZWl#JwSD-DbWUKAQ@2KqY39=*!> zl5+Jj)Me@U)>SB0)X7IVPl^ow;0#tiN4sr+B>kvgZ*AHb8af3hM04rmq3TC}P+xND zr{t<zD9LYV6nb{3tc3Q7+SAjN&98%)@Az`-4Su1Y`B;(b1M|+*3w$9ochyGu)6S+p zz=Qvub1r9*-m<Zgt;e{D*_vYmIrXdx%fGO`Sg*9;_()#Y54kzR|HTnT^)U4juclqN zNiyTx)DM-OG_KFXXHC-av+wUPuFPg{qzAx3Kxcf?F(Nv)ZS-l2e2uv;_-z|hcE*Al zF*ZK?sJbA_hEg|W1ANA(nd|7!f8<!-WbG7u@`R4R;jc|;4}7p#_*dE!(!a^C{W<S{ z@~$>R$nkC0(Pw;YdGeXdr#vs+8-&Kq^egA|dLIWo+t++`hnMil_thPtb86&kCyRf5 z2zPxDq0`U#_Oz||aoV%`MR&(GMXZ0HLHU!0Y(`FB2p(hRMH8PX4o&@)GUT4nXzqiK zJ>TYrNItqLLT<m>rCFqI@KtvcPUp`$@7sB+Z2G?*TZNT>eMIfn&!leI@M>4}rA95F ze~e+WNNu0Y?b42qr=Ia`-G&J%W+J8?G;46dzwLkC{StqL?yi%prJd_7sh3)rxc-h` zrr$;O(S4lTIj}nA7tgeDbkDWX(*N+AfAG&E{EOkM8zcYSKm1?*`k(%jf2>vHIk0i| zRx+T^(6jraMW2vV#8etrEI%U|{**T9*p&QnaJ}~+LC)11o_H>d3XkBY{L%Nsuu?Q` zX=R@VIPbhk2f+>DMfrpBPCimkSx@YAuj~i;l~i_Zv|M<W2icX`6nJNN&iOe*0{9aI z)(y$OrA%f?mp+9T#YK1}9<_1=Dth{9^=y1t_5BGla^!s4OHPAVgMS8o+YVv@;)!?N z43)*=Y=mSIO4%IaovYo1f8>*Mc-O|rU?cgn@SMra-C<9Hyvvg$zvR2B9>*U)hAtCI z7i<}1O!9Bv{?zYZ{_LwICU^Q`)0^<ky23<bkfbaCn0#ntO-N>ga%n{VGx$cxT)bO2 z%tbs>WfU3E$@|$|v`oxwHGm~59t(dWVe-MwF7`|;R7KA9SA5PEMpC62-<3KvCI{{F z#y>VIr#}>u2_tJ{Ob!eK#Y}Jp%lNJRBj?|mu;B=kNyHPv{A%FaqqHc%%f~<@w_aIA zoxFD7H!&cr%+y;KIgx2nd`_N&E>8iG60GR&LH8&<8m{_1G}i?lB+;?DiVMz8LVPC& z%}m@jeRk5ZXy^+dBUAh8#BqF<)8Wne*v`+<6FGZ0pGAYVIt%xXg?z}reQa}m=Nztc zo<20`X&YOX(nyVD0IKnP!jokEpHI9#8X;)|b2fx%d+;mgl|h}21f}{9zfT)j*<nPB zFUP*%c-qXgcZ)#hE{@RF|Hm)=WrO6I+?9WyzWFg1Ql!U2;hXl_dQorq;{QR*uIMhr z)JNfo=Lk{D^(iD*J(O_Dx-m*d+On_0bi6@-e1C+GzR;1g?Yg?-7k|l2N!%LVE_%cN zzH&1*d{VXxU;ftCXFcxhU<y4s@Uo?TZz(s|$SFJJr|8BO{w_`;gVb4&tAke4;7gqd z<mp57v8VFoAKCI3i+C<5V&@qPR!@C$>>SK<;i9cLchp~T6HobS<Jt#DbxVY<WA(VR zwDoZCbhI8fRi2-%?pT-hFt|@)#I%iMYA}98WNom~Uf;u%KPt+Be^SLUV<<2K0=D`` zo7lYepJ`LZmc6UVCepPZ?RndNZ8~FR{Sd`n<VJVL{pzrooJH>YV-tDmr}Jlg?z}xB z{PkJx=3aGhFfH=pj=W-y{FS9V%;j(Td?ai9lyiR7?#6%oJoRTR>;+P2;qnzxn<5UI zB6QAJ>Paqh_H2mMW=N`o{E^x5+cG@9@s+^(BsQv!@&3fM1+zNW4iBE`r!4e`_HZFB zmdR;7<I7)K*tCx-8Tz*O@*iiYAAj0u>SF4(uzEf?Gib2mX6d=p&07p`gI}4)_LY4R zSEv5cmOk{!<D<$vY30HoCp1!Xkgm>PyAa4fWdxQdvG!D2^razDd!CDUbR^oi+4bAj zfw*D$#;^jSp>v!^BUoEliOC9`F@47rGR8khSL5_uzL_!-Qx@Ljbi6e7czN;$(yhZf zHkDLcpAC}X9m-;mEbg&;+aX=-6h?2x&icZ5G~<J~8<B~btl#bCU+2UqXx$`c4LOr~ zsS93MJ`MchD?c{YuXZh6Ia!J1X2LufJMDpO=zjAdFFK9ARr(N03mTy^lC1C3hw&-z zW>|3#c4HZzu#-QgF4-A+@9{Z4(suNVJ`J4r#q=UO^+ImfNi84wU0=twT}QPaOx?mY zRbh;FkQr1PLwNGhz6kM2>%dw!cGc7DI{6Cmew+6uHK1u(@E!Xjesr0D6V{)~w~bmK zY=8?-k3+AF+;04ak59H=*Y^*-&ap>n^^#Ya;omu+^$rQF^<}U`ZrQ@!U!P1Jv^<%+ zZdEU9U!5@@IEq(H|H?#rgrWecw8f|3B;=PT{kA;G=vcV?XkmTE*fDNiZ3%zQXCwII zTYDQr@cQRhH%1PNx3~T|HEsOhSLepB3;tRzC)MB(v2QQ*@r=F4Y1g?D;h{4aR?by6 z2?d9?iKHX%h!j;{I>^v%L7dy<aWWB)uw}A7PcPvE-)3F(kBkM=tiibTIJLJJ4z`PR z&PV@bKCxV6FB0s63oo0`@rmfGp}ydKo<vSZm}lM>(w8wQkDflNb@VkFlV315AMJ}= zaADV}CKxb;=EZmej~!!^()a1eeoI^T*U|eTybLV+^_dhWAM*@E?L0Zx6gmh?b7&VM zZC&H9NW|uI2COW$-sFO{SfVZT4hyy}#Dc{gg5Uq)_xFpb4sHXNpVNDj#YV<{3fu7w zFx3r%KR8Z0RL5Sn%N%Sb<36p>$;7~(BJx7zf~PO23ywehVID8;#GP>(ZW}3YJHetJ zzOiivkorbbX(t)~k8IdrEt2x08ocq3#{^S&O)z{@f79b&w88eAHcx|ah-kDBoW+Ja zf=Fhvn7bLJO!nN3njQUp0T{8K8ZcoNeRR)7L4228_2P{EwY5+Ez&mZKlS+07I{Ei5 z$!xfEL2}@2ouien4yGNMTr7Ie<f=>^=kTP6db03VJ2QEOUxmR7PupoOJd$To;KHPv zU8!4>ULXC|hT>Z?Et=>aw?%8)VBL4}Ow1;cy|~B)js6jSy5`rJb`d!8EG~Y?QzZP| z`b8U_JvwP7Z^{ZiAGt$VJCB1l`^5D1!U@yCzmsqUh0fQiiobO)Lp_m<ciK`6slVGk zEPzyWKSoj8TX3k8hQQghg)AJ?CT5|}H?!$A3nJ~S_3Wj>q4k%V>D}=9G4-*VWX_eZ zKj}+W>)z+WDqVE9%^*nVMaD_nU{&{iY89XQL`!z>;Ov-yeuai|{l_=;N6MQQU2Q9= zM}7T`3+Bjk=avYvJ5HuONz<yWvy}hHSQ`GSKa$@Iot(?-1zG63d8keZPG~(J8tLMp zPhs>;plQC^07u(;Wbl(9Z_^vY;~;afOY`HF8FQbT02bG<7e{#6-+HNMgQ0FypX(QP z&jOZS<7OR}G{oQ;L$bpZnb=nb)Cq+@Z9<tb06rUC>XeK(Z}Q|}`rWj}!$erZwo|9t zRNuF-@AgRfvrf>!Gsw<3uO6bO<3`fG>)Sde%g?kbpSD;0@d;3Donz{D{CWCT#tnSh zyf&imv>w99udR>N?xxv2GEZBI4sJ2G)@jF1byGd5YXSe(wexPwv@GLFUflWa-Op#7 zpZ9QS1MREvuT7CZ{NWEh-sY(he)-Waw}fWzfYK$5kEcx(X!6$nj?cX-JbjlfYnOHm z|8*XDy%>PoUzF0(3)I9*zq08ywgo}x;;+=N7e&7RFz+`aMHpZ2c)keL^OPw!R=~p0 z)Xv4zd64lZjDKMnJTRr{CM@sB>_wk><M3q|PGgJs<h4HY$&S5P9h-(2jP=P88#&_- z_}FE58olgD9z|i?vB4%byUd5hmQS|Ov$FLEb<V$Z3LWd=4sWC-f9kk;D?fI}SLB2` zIucj++5Ar5n6iqCj3c<Rg9V%f80t&oFyAK__l#y<kT1aRt6Qy~$Sv;Z^~Z0{**3D0 zj-1IG-c7d+#ZKpwmocuOr{5Y+`W3O`pN{j{oWa-k_Rtd>JHI5srecr(D)ZRLB~y<< zm=m}K^yvDObYYGU2TOj|_4|2G-N&B~pT%qFtnJC@ICrpDpLG8E<Qe~EjlTKDLH?}n ze$8AvQ%~mate3J@f?YqJ%}sOUyz?oH?L);Lp3<d8I{s%q)qdsG#^4$qCoh=ZSZjoD zu&{jW8DFTi_(c7kI^?fsSbwZ7d@%JZV)4Y@5%R%J6+ZI!sc&*#ZE2g@RG;)?Pwbm| zyJK|z*)r?SoTM{VTjb~?))M@RM*kHT>nSJKdF@*Jj&U_n8dmfNgR$!3I~Y8{qTjU- zA6tiKY>WUx#x{Z%GoPnkp8a^ROe?Q#X;Z}ypT85&*qZqw@`&WG_4B1WvIXT~Y!_CK zyMf(OG|3D2ul^zp5xZiM{zCZpS1I`O3M^P;VE-M$Hj)>tHL?Dj>^Xlya-DGgt=Yx? zeconL%Gm>$GJa@<UoxihAEzZypBt*-R<qgvN#oW3fDwHM{AZePa4&uElCZWv>#P}g zb*euxgjYlT|2IV6AF1;6N7G~n3X6z-Z6*ae_dH&%PmJxQKgMW7>kn~TH(PV;;@#vr z1J35nIkI-n=-UZ;7Lys^b8%h1+MqpZit_@zpYk|hU&5EcEVrPda~?Ydi9BCt=^`+L z)8ZhPzG6z+!hSAFcM2sRc`Z0`(wK56GoTrG`DZSyQsgfK*Zfk;+_kQp*xWb!X94<4 zzqg%<9`ErMxh7(RHM@ikrY88RjLszPb`z;}g1$<_>V_a8S;Zc?Gr*g)TavQSWI)W) z@z`&};oQM+Ap}PzRdtPrbbf@l6HWCdvtebfbmyb9br*RSHDlXgtE|Z2N{fKn4v&G~ zL=+#$+ex(peaqlFlY)WCe_~I5?9&Z{Z`x0m8Gz@X9puNB)OFtu9%g31Fc!eGdLNT! z@#V2{*K%z$hnnt)jZ3DUw5?j63)1Adpi<sCJ0*1WCv#mC=FcP?iqH&il1-CYE%_L2 zlW2X$evi4%W8U%K;h&3~@hKihcl3{uBPaO*F}1Kcz)>uoFv*l(B!iJ}8zPe&fp619 z8&`Jnw|=Qs??}H(?BX__or~JYvH;P>>DvX!PUe+e`43<O<v0<NPr}Gz3=G8^cCofw zJ;xuljW`n8!6e8Iezan=Psj8udHz#2<>e|S5(Hc+oJ0Bq`K`Oe7ftlAS=;YMNzUur z>K?{o+<ftow^41)iKkhfeP+w24#JgkzVLOpt;?-P=W|$`FDDkG(b^iUrwBZUAnK92 zB*S>PZNVbjg1qO5gI`$RH74lTRXpYg;~?ERv@sV2xr}dKFYauNMBnNuUnM_qg||;c zgtHrlDJKtDUfelIM@4t*qci%`_nQ}cVA%AiIkga37MmZ>1)}ymI#VCv7iO-R_T(wa zxj@NgmaAt&RQ`(R_(uBtkE-b4*W<ai&z*bZ!{rb}N6d*yn=%_o7Pms%oUvZpvvHj? zA9{(i$N9G&VH@tq!J3b!ugO~72%{nT(v~l@V;{PL6O$33MUu2O1$QqZj-Q*6%+bEO zxkWlWWR!C^GDArSS*IN~?YwgEj@@k5hUC}&j7{HvKR)O@m2rMH7{a^!Nk~uI8$CH~ zn03j_U9dTd`@%oC5f3M<b;Af4Ef@abpCTC5^*$*!b26J8CYYh~BI6JFRg(O-U6Vm; z>5@8RRcf3$)8{bPGvtl8n|ab>58KWW-w3{OvGerwjb@MTB+Zq}qrM@i{Iu7uA+zE9 zV`O}n_~&fI?OLPP8=<WaU<iG0&XAEq{>Y7OHF5GLIU8%*?(~c88{?DB*Dr55V~;XF znfw0mR#$9pxSTgW>ZWYyI<{pFoA~8dY0?DidokH<Z`x(*?EP=j)_yy`^rYYMl?s}= zp0SgSszocW-{Omvvz1vJ!pmosqh8B2zJk4NCu1plNc*-w=gY6@sqwurft=n*IAdU2 zL1Y3|Ovfk2HDg_v+y77u&0t^J=7t}ZzWB5$G&80@+a4as#A6qo%{ZrnK_;BFkAf3m z9T|~AM11T?475Tqb*`9pC$D8_yAHeSn5^}&`Z7LyVYaX245TUVnx%NiiqCh=ns}@x zX+m>g$-mmMf~plKPa4Ld&nG%%ZQQpEsrEN>qd)Z?x~^6DRYOY%XYd4f%C`TNE*k1r z^0hbN=*5FuT-}L<^`ZQn^r=~C`E)dV{Q57_p!wB}k@)c61i^nDx%4DNL1XDZEij~w z>5FXRs4o_`;HH^Pk^6l4nv;*$Hw})nmw4l=qLaaiSN>GMp58Hv&voDBf0xve7txje z74cgKbKyzXYsBhm>+1;pyTJN;^RVVm32Yf2HSxJ+(=kb8|CWmlswP117ny~a^G&B5 zQ-Yx_*^Q~{`4pY{KfW_?>$Ev~5u6U%2{f_uUL25@fp`Zy1Abq~c@}YOD99*;(L%;g zi<xA<{Vo?;8GdYV_*uc)n?c<Dhz>sCQHK_)JGnY99v5y0PoYQNOezO^)NVVWm^>4t zMXteg24r%Feisdul@E5h69*TYOhn(ap~q0+nRm<11mdX)Hu_M5OWP-wwjlfy0F?4E z#}1_IYuinJriX}&m$c<zxNT?ueaPSMn^vz$y>^bR@&;IREd+Y=Pc~V77l@asc2mo= zz=p#gS?Z_s(M2EMwH<`F=bubEGiaaodM1J@--$s5MZQ+tBQvlphdE0fxTpV}uXu=q zVe0EaqyCD64G`wy#->PQ!2~eV)wc^XGA2G_Vaj?5hi3g^k_(7@Mo{G7D>eis@zV}q z3Vz=QD{eB%hfdx@j{GWMNm%&voDcJqKlwv8H~=B48S_ELi=h0<%t>T}_NGtr+?3kE zTr5=dT_8n9a9-`Ij}O1kqtkh6CwJ(6^WAypP-NINX<t<L;i0;VVoFbdw?63k`eXg9 zbOKE6yXVem7qal@c)=flHSrj_67bgE@~qTkB}s-@ol7?yJFoKc4IMep@T93e_4qh) z@+4p5uDW{C*3Py+ZD{0>Pel95C}_J?K5ca_8rohC4~1Jc7ddl5FMn)IpFL)*&Bwa< zVp8%Q-9*or2m~Cv2|!lc1D_vZ<>AfzFMfT`CWgL;tTcQbSuPH%Bl0cKVeUl^9{P&+ z@C<YKw4aRe>KLF=S9<+f+w4U`WR9-*Cv?)nV(7{FP`3V)C9MxYfL<S_sxLcC-j09D z_F@E&z<U<pofl=W(+8j@6jzw#mLt3~ACEt_yvj?&AIu#|X$>RuoOgUS2kC1)GWKSy z?N?iK6T!yWwV74lro40GjLQespgAxvfAK|@!twZ6FrY7%lCNpXnwEIla$C=W+R`}b zGf(v91G^NGk>m0MJLBF}!`ISC)j1ja<QqBKtP5f{eBQm29y=?WXcgCZ{C<>O^6Tda zH<!%36-7)sf!=9_lRe^QZhF#{ynMAfr}WODopi%7r})R#X+!j*B1`&177<roN``(U zae}((;9jPqAw;DkXQVZSer}ZLD>F}HGc4}~Xk2&oha!(pt#3Rn)-~PfpA=}f-YNGc zzeLur^PYaEK05A_9h&m#_xUq^=LfmRx9X1#wL^Tyy0l{_^4F(b&sHBP>3jNU`1=C< zoVWi6r*O?tp;>-?LK?2h4c&~7o@n+&VV(-jhNz=YS+KzoW&D#-VB$DP-|9RW9<u26 zG)JGPh5ZCivREI^8f4aE+pg)@G;%bNP<ht8T|crnWr-SxB;_ir9JR&V6_k}#pYR*3 zm_pb2H~4A@wuI3eo*GAZ1y;{!iryGag!VAiKx#te9~t<c0mBB#ocHgf71gH^daY;4 ztAa=m-Qh@+_Ebas+x64XC^H`S04!nKNLq8epqBKX{Lvknz5eKV`NKqy^6Lm)_&Uld z%lxwME&;ukcU{rmmZw<Ah{o{K-@n>W(K*L7`4f|IhpW6aB`!g42*#&2c}QBh)p7N^ z7EL++9O1~HEa01}es%xUg+$PA*sg43GYEu_|E7treEjOhNV?xYOC$ZCqI*PsMcA(w zO(lJa?x^@u@hkZp)c;q?zLW*SYh|~rbuy|UeaWDFa_-b?694XbugNW{ihQP~UPjZ} zb=6e~H7e!9_0p2z`%n9MqrLRJ2I2+ToIF3r<8mA$VC_Ap6)#VzqYJU5jB7nEPUY!n zb&SC^<&U!JP1!7HW+7_9XwsYu=SS=@%Fu2Hv=}o%_Gf+1J3c5FTL!(s(xmXi$H)6B za_*@NlMh+FFv{f0kY0S7L<}0{z3A%%Nmues=pFMzJHJFT6DXPvDCC{pb`#b0Saj&| zchIQJ(Ggcra&(ORy&Gzg+`A2#G!4eBkyZ&GSX_Iz$xM7n_Pj;}1H1U5f6{eIJ|tsX zC*C|_Tuf%i<eLP0LC+WDq3eRzg2x3cU(TkDbMr{$C(*@!<C$pW*R*^{fk0>{uYjE= zaPmtg7DxP@Jd;!Yi(&4np1M4?R6^*sj=B&_C9O}D3)OWd<__e+TAJwpu4z1H;S=3` zc_G_UhqjuWi_zfoB+0%fq5cTnw28IHBrxr#iwYZJtvh#JToh?z+C`jDKcH8KgG*Y- zS@rFv$h>nynWKzt2U(g8w!{*{x9LM!Rl|ezq;T8;ud-3!e6lM1P_bVq|9+gjmQ}y< z`9oN;GM(J1kjmMQ)<;$O@INnS{6pSfU}MC^*V`Z8&SR_EK0T?I5=VnR+l6HM#x6{a zAuf&~Ufj37(b4{%da#%()`0DW(P?Afp0-HFhDldyvzA_5A^gGU$e2ab$V6P+tSilw zFMnwfJp&ngEKkZu{E@GpUAhi^Xx2OYAaopxoxaPyV@eAmjXXYIKdnyKb}>Ag&eK2f zt?!6m`sM|TKnGmuE?hBrt&RBm;I(1lBB0u1-yrE}jkKJ6%5G+n#=gki#pTFb+VE4D za`-!**GE|_=Z~G{2?WY#qj4nTYkdUE)KSP1rk|e+kIKzl(XU}eM|enslh=(yog312 zIMz5;F!^jOk6-s{Jm)rS%t7kP{A8{xzVOzzgRAyNS@ngMkEhN8in2pr`>6}xT!0+A zoJTiW96e%d=eOD{Z@!}E#j4(q<>HHuNDpoock}3Y=d*JM9LCygQ#;V%q^FjL_Zi6Q zQBCvpt`0gUKZX7id`z9L4{}!1qOL(*s=tXxkFmH%>Y*_orLlBFDV{UukT*kg;-hzE zYZ}Cl%%SJ-)^CAnH~2Cur0Gi2Q@H&Y%%o@wSg6}}JR*W8?Ps3c2n}oU@mXBr<SWa^ z#uEM}KD_0hd1?qD7`>fK1A>eO(FmKolU<zU8nRK5x+Ez1Yr~9Hd{7Oes3OPL+OTyS zztq?9)0+=2^0izu)~e?N^)zdp-4xUwSC<#-zmKoK`+2?s=)G~zwUoZ}J~Zu9)+~{& z&$AWoj_qrAGFp#o<HHZ~+s@c&PDo#Z?OX4%E8ciqJMve|>ehMmsEw5MFD5Fdl79Vf z=ccaTvYFU8YXbdAckDY&beu<k0o~xudhv%Df4WACaJtzHXL{+;Ir(^$JJjLeIlfNb z*lK-sY!1%O6Dccg?Ta6RXAXv-AHTvdw#hce$LPf0#_vD8pRW+^*fey<pBWeQm+3QG z7titWc0j1Q`Pe3Qa41z}4S=buD5#Hmp4P=D+JT!&YNrE|F>`!@|BxOrY)kSId<Y&y zHZuHmT$4UJk@PEQ&-M^slsYv1$zPig+2qh5y57}JlJ+<M6FVt3d^upM&O@tx(N|lG z^~h;C@x#A-A)OE=<mD&#;8%FWRP(kKI#)(zM(*0Hy;XmB+fFK1TOTZB3h0E*uk4<G z^UqrFm5*QD82NYq_fP-wzxwk(3-(k;Ef{HR`%^>xTt>{duystTqRx2g`86E_<A6zY zQoq9XI@RVj-jmlP1t!engQjvO{`-g89^JS4k^8w%G=hgdR}zo&DceSi?k@bh)ZIhV zpO8E{k1>0(bKCY1#pWAg(B|ZE-cEw%ap3OxiN|R=Zo5@-PbXHMV}d+_=a8=65KPCh zz?ccOi|{PSe#tKRex<~_EPnbaN8+FJ7JQFX8lZczo583T>bbDq?}P4+w92B<CdN(> z)u*CPg*Yb%tx5g6$bnowxwRs+CCM4uUK}fv$p&w=j;5<D1KCV`nJh9HI($v1D#K$y ztv^gEp$)jo8TV*E1{}I0Crma6TwvQEL0DUk12fko%LFy;?zzyF-@)v}GsuNL0d#U^ zG477UEXZB3eCs0qT)3dw33>fgpPfM-#(^-CUKe5}%IItXUH;fK%jM{uiNZxkpNcsP zsmccq>p7g3e`Ed&b{9BsbwlOwqZKaQfQ4IF|Fr()#(#8p2TAb+OD}BLrCOAEJ8Jm5 zu%@><hfaD9wuLr4Z0v#~_P5UR?hx+}>E?(FcoTOQ2QY>y0N^R6Vuf_@UZ-+G^K$d# zl!_vwPkV^{Js6v8{?O&~l#h<BpQ=pOE=15ZZv=!);qt7W<fgpYty}3sQ$4WEQH&Kz zV1@R~N9(F*TNZ!3&DY7^x?mh1Ya`nJ-u<6G;lg?rLf&^_0Se6Yo#WTYg$QB;PGh<z zGrHBsv;!E`4bq1hLtB2f9K7WZpT+IkNNmj?n`=AW&vI=me{kUIBH~dF+KZ5~qqNyw z498B3KkrNGlM!iCZC6Lm<<I(Jq)nR(UHqk;3fk_3=%_;yk&$Q@L1cBD4ei9oaitn= zpR*WZ)5ztAu~BI<Wz;!!(2Qwt2M^WLzC)^Gmm@s=CnbOUAf&;yjjg=I)8FoeKK}|> z%H?C(tBc)eWEy8J_>x?rq(|S#LF>=LwhL};o!&4x`n~q}hdZ@Be$rkW{AxkMT!h5l z(DzPY^^Xj)*2i6F(?f3C;sED^$~iivD>=MvO~p))_Ur;C1X#51!!tJFOh`Gb9rpqp z25IBp+l-~=-5FQsy#xB!Z}Q}pjS*v6=U4a=c3dUYpAePB(v$NsI!0G7#L%qIFB-T; zMnNWjOet~B62tBz{+<nwVP5&#HTf5=iaXdc1~_H=w51teMuPSm`NHuBI$x*Ux>ke& z*|hmNAI!r$eoj5xBw`EyKlohu_{9&Ip0vE|1+4m0khFa4wSzrp>}VHh*|7<2gkhhL zimt5B{ae9=_b>(FTl*#^2x6h7P1R=D)4uAv<c_U_6JBe$4{7__b2kgL$F{H2#`wMc zWcm}^_NX=NqLbPL^_!1AL2C^MmnR5+{P1JjV#oXtTWftE-ad7fw8v@rq<x5>l-*(E zU;30O&awTJjn*;Z_095M_0<fF6WF_JlD4m8<0Zp5Hyb3g7U(<i<fjk4i%;GM!?&&2 zv3YeYj>>6Yo(&sgQNQMxyr}~wj_=fY`40B=XUkI;-(|za{P7rGAf0+>qm3*+Pu{eG zk=qTBP^yQ@R2cibU$Aj(w8rhmSlg?Ov5ro}BdH#r6CwrXgZoZTbu5*7slH@f-j=Am zP4uKTSiHg7wOPh9X?1f2SRR(ir@JAMG5*#!?X=jA43u-}KVM5iOMdl44%u7pt()ju z{`xQiY~HQDma&Xr*!WZ;Vapc3+$m9p#mAt<-td%>w0v@=oeZ{>GW<u*#l9L)ZTq!} zcek~YrjB<zkB;TKa3HEJ^ndvH@BW`Z`<LbW%Ezy6jQr(a{^f`N<A480e-nBC*(w^v zJ{Q7QG(3xdYpYz|xFbUE>X*M-o{W>{b2PrL_tUajz`suWl)mYgntz?|ra!4WV@3YG zV!nCl;%RslT3z?~PApG_ZOlt|;%E7vk{($V@~5zAk1>HS!`t-h?C@{-LLKX-;6-h; z4TW6hD5%h$Ud-u$9C#f_6go11KH{6jOlgqGg7R#J_zA$De}0=^c1fHKk-qHh_j%!4 z?jn1ssr+5|7yvCq-Q^NnK)4ZU@m8%ZpTS(`hFyLKAd^!jijU#rYqH$!5crQ7Gl}3k zgKWx7d?rCLANqcwP#Ikm<Z<K3H6i-h!fuXaLAg4XcKiX&P9XZ~=%&B@Hs_sGT^MFU ztBkPN$!^_szzROt$w@Yv9^=}fJCkVb4vjF2_}p{IQ#R6ju?F|t;rPB!>~uh{*C@uB zm~#>q=PoM5)zMOv`AePf*L;sOQ2Fm%K#0eegMBVm??Jfy)J5LduAXKS&EkDugsbiZ zx;uz>;f{L(-UiX}5nl;-yYMVYGUF?ZoeML$aw`5}4PF;8#eDp`qRF)wtN*$w;z^;| z(0V>CGQUK_Pp!7<U%wU-2q|2AgOdG8<-=D97%@$t93>f^@jqrIo44n1*H_0@G~`tH zWk|(^KLyHsY*}%oM7x6}fA1?`oN;@6boUMp@s2oDpIK46iPlA^#ab4%#hdmwFH5vJ zk})6`YJ6d1M1Qg<oJ}U1BhxSVe4c8Gj&#aT>-#v1F*Rp=d)f*cbI>iYVO(7&HIFZp zYgYSJq}h<rR!V*1X#*7y`jI(!VDd-JE?x=0^eQh+RUW;ChUn`5?_=`^<JRF_S$knO zR*W4ZDLIrTpru2+eP(Dz4=la#O*|LNbD^W{E1Qdv<(ODocoU!ZLL@&0jc<d|wtvSq zpzF&x5(ejO6JfaOESYG!d6{^_ku*L^J4UZfOj}5ML`a^$`mrYjx1f11(m19s9WD}% zMrCkpINHk}KgJjJWr}-2sQI69ZG4E^1xS1bW7?<SDX{8_oD?<G?wmte@1#H-2rUzz z(v8?O^ghuK9=_oI=2p&>ktGvXFGfQ&<6dTs$nupWHy(cZ#gmztN0Uc~`nD<Z+u#27 zYMl3n002M$Nkl<Zx)^1z`MSTrmU^JOn-Li+$x?R~|Ko?0RsMZ*qV2=Psh<{9K0{-C z*ihG`jbzq{G<7ufi(+_c^^mj0xU%DTWu_=Xj*E+>oi`cyVc2<uZn?!9j$*02=_l&B z2OqayKEYY;fkI!Uv4>pkR6D<r44uBxue#1@KRfqDe))sXSnXX`-4f_m2$7B4!B|fm z-pEtmbS4)12}ja1?ml=+5PQ(!a};NZ%Y#H9N1e8xYhS7(a&IlsKu>)-b31%2`H&|* zX04WaCu2z8;S=&*Q-I1BUYbeX*-N}IvBkx<4Hxb8H}B^KtN_v>@4LM7Lr_P)(w*!C zb+=EbjNPZ;Dz6WN**NnImp`H#w&(eCeIvh)O3WVp#yANR*}`tHTx}?r?lg;M`~Yg# zk>BNq0(QK8zCg7O!V=NF*_JtApNfO4^J@ybUNoP!Ek&+g<SDh#*x0OJDu-W!HGlBK zP4?}L$>)Fb_^I&HOQZ9CC2~D6^8F9<^`1WI9iA}t7%Trj>dxLrvn{*JU0wZg@65== zWOjn&)c*z&B*+rtD?)}086i><0uT`r0udP`0!!AUP8>P5kSsDpXd%mp$atpj?e1!x z=l5IdoKw{wx9W~P9`CAi&i+{6d+oLN+3$JJtETeftgbWua#aTEatJ1Zww)AtY^U5a z8QPD2893#?!FFCfvWa8=4sIx(r%(&gkfWgt0v{PDFD+>#2_|p;wym+Jd?FL}(Dv~a z;nZ)&hV6WzDzYCsOMA$NZ%@>zEq~yeH${BU%>+*vQ>GRgvJQxS(j0xdUJKYKaf81) zQiyLuBff;6xz5t&%3+(nuKe1dGgWD?Si)|e50L)fzhX~gxPSKYof{)!!takD{HyA$ zJk@4dS$<r4I>t$Nok6o#hPL$))aeX*BcFZ_T5a35lhT>H*nWteZI8-*p7f*89|d&q zz~z!ZD&h=F<E-79_zi`R@lJ@pA~_vL=iVd5DPL6>BLv)f%LxSdFj+s5jXfw4x}n*! zhRuYTAjaeKEXe#Sj8BKS@$tq@k)QGgd^SV=?9YDk>?dxFuqpC}O%vhPA)P=Rq%PF# zD+BoM$aewAO{_s0J)GqHRP2UN6ddPNW`c2|%F`kEa;^p!>UyI_fZN3o^j&-jBhPV; zOgaf9Q68%B+3%BfB5LU9;!$~=<h{Y}gy7iPV3x6EV1@st(3ZE8SFW5$NEp0+AN^JA z>7=ywa6*$OXb81&$v(74N^i$_WN>n0;_RkKuj=RoQ~l)1f&*X|`dRwWzF!Z~zP9NL zrUrgxcA|2@;Ek`F3dlGwvCYja?FQ~$M1&V~4ESv)=fnapb#g<*$ItW0CRh7DGQwHg z=g9)(Qy%-c0#z#Y)Br1`JdipzDYy&F!Z>Mnvgrhn$<~D`2WCBzG}mA9a$lafdHK>! z5jMy2^bH(lUWxyshkx2~7bY1N&{22YEm!jrR{;bW4ABP9CSimqY$iae<2}KpFiCv- zGX$pYlb698&H>R5%2GXRTS=||XpjDsYPg(a1(KdRb7<2jLKRlbcYPH$w1IPh^@{I_ z|L})DJT~m~XMM<28ZLUe@OkcA1kpXdMx8#go3pi{V@n1Xxkd!()xK>D4S7JP{UT*y z3K!qTNzxM-B#R#!gC_|N;oE^`imM3<(_YVl34br|!2vcT3LM1J%2@(!4^@GMz9fYt zg=Pg#zCO$NaE#<ep}uTPR3_8PmO^Vd>rbvj^moUu3-0kT>aXlKc8v%_2HNA)N*;UC zhgU6>csH@MYWyI4DPiX>E;}|Q8lH}WbSLnlIL>FR+a5j{x9Ex7@9i(&cY_|ZMkhyn z>7Dwg91H6&r5%~b*N-|6C{s3KGS4umVQO4kpIN$VQ#pv^jZEwiIVz`g6Kh#`YTxI? z#k~>pYeu$f|D@;!FKwuP681Fm9pe(Y_Jw<b6fhLZpUTdQ^@GGX=omlUWcKP}_~qyq z`N(VR#B9eRFpYuE>3u&;3|q6pv-~_O;`&hMYW)s>5-9IxLO<c7Q1L<rz1&3dQ)i6A zl{V_ybr!S%Z5**Rc2ck0L<CG+{fK_UUwpLPIWRZDz!`fqEg1Pb_=k_=%PV~^|H#n3 z-@X;cTk<XEs*K}b^&873`Q#G#WEDvnk3&7XF`|5Vj6dkXJVi{Mcv9^+d5*utueHGv z_e!#ybp<q&K<twog$;iiycU-F*s}1c6VW;jlOhOjN*&c5<M-PI5lR^S$5OFEE;O`l zJWT#WKX4cN`jB(~tzY4FTvP5Z?BGvO?fYJgQ*I2_7t+D<23ER_0aTEb!e3p{*V9IO z`j}W^xiK$ZddRpwa4I0BC?3CCoE@`E_j<Lh{p~pH98ei*>(e@wac!JAgQpqthh1Fb z9Bq`1fzp;&<0g<7`*r;U59%V1F@$j}PS<AOQl~yh1q}5#_dDoCW^Ath%JG6<-MaRn zc5O^BE_ifvmC2l)E}t^do?SP!y>QDn@d!R^CuKAa)|2#;X^V7QtA48EWRQP`Y^4%D zu>c*?J)E>#hO{Tjp_yw;5}VQRQL24v*E9~#eS-It4VuG;%LoJ~<5&LMp0-f|F=O+U zMf&-`GeF@+Zt%RKPGg!f#}h=LMOzIYZ6&JLm_va}t7q|=#uSCMN)pf$B4aZBJ+aR` zJf*F?$G8!X{<kxv8(l7C>+z*O670Luqc%oh^55bAtI#FEbhX**cX9c1YS$35M3y66 zp9;C=3qXflU=O5ZKHnDo4kZEpERFjV|9nfUtyEXmy`G#tuiwXb(|srM&m;FU`-o0H zK4+hBB*;$xXr&DZI*056-v$OSfg}UAi!i1jF`&`Isb72-uHN`M$@NC}EgK(fe$1xG zo1gl$2v3QyDbkIRp91ImDEyS56GMMq&>+r)<3#6^6)ZFjn0Gu0;lj_LoIpaIH(8av zPhz}$=`Sz1BaR$d^eL+<qtPW8SZA=!4cP{M;cOsfK|7^g2)h_gAfx@9Je=6)VCE4& zFk@#c<n2Uv5Eq}nOnl@WVAZGn;^Ou7SFa<VPu+a;jlsxxg<Sy8LSeoZBKnc&4|%xg z%#QzTig-ic1v{ViAfumPwCjPFHwfBUnY88ci7oYkgPv_hav#g=<l-cZzQCN5ql;{% z=}nix*3Bp|Lswg`f0V{-jO>#|KJrc8KFvZ&yU}Owd4lH!pH%4w+E#*<tM;;>{lbWo zpJMs)MP;*6+bMsp$Piz}kCY)3JTf~;Ndk7^DX(mVut0S)q&7sKyi;WOw>LsN#KS}S zB^Ftsnf@Q&qoje7lmnFDw{P`>PFV3Fa9r>zn2SC{D<0?lByoLzn&tx02Pyt#ownkl z@2_0j-?0&PiG-Z65P)1OX6z>A^3<N^QL5ENovuk+eyt7Pzs%-{?>lf&-J2eLy9-yx ztGq4S?@K4~hkD0v<kt|p3W%H|GuXi&8eBq4+lH5l2%`-=@Q?DL9>lHBf-JDs53IyU zv5{xm{WGP{yhi5Y03h?iag}ypIR(qM$mJrmJ}J#Y2~^sPWBt--yt&19>k&Ktf)5|B zn-*uww#jdk`WL1+=B=|7A6q~L2nZ)=>`ha7*)WH^Ikau!t#qJw`19B^&;y%K+JU#u zxGR5SZlWEP*+fHRZ=^yO8mR+Ad26%j4cSXc8Exk;FFo!qP2ts1yznYN$AIz5bW2>* zM)~xVvN|ei$Z}G~eZPw@yi^u-P;Tpe3d*|oylC?I^WHojFEx$Mm9ccCU0G$JywOP+ z#}>|c5g>4t2T;XHwe9ljrpR28-}o$0UU<w?SuZ&flfc^zcdxN!6m)}}c^EyY6e{@l z<OI%sc$W=q<2}0bSN@D?8HU#A0+rP#?^deI+GxYH$woX;$w?Fb>tk4A`U<~rPVq4U zH%53I!59_2jUC7>FKG;elXv{Lab^2DaSuOJUgKe|@QxheFa6R=zi5|9?X#6vnB}Pq z0_9X4p}l?@dXy{U;Hb{xfPDL$`I>c%-WyvCywJ)RZrW(<=MyX||4K1Jgpa)Jr}Pv6 zk=;6u{;FHFTZ!j-${5k$vEx$O^2vG+8o6<gEVaLI!uV?>kt=f79+4fKy=MJ|Y;NE^ zcM~LjXP<U%b}c7N?BM#we|6b9XqnW&IWl@W7C7>OiZoe27$a>HfBmu7;z}h_NuNLQ z8&}I~{i?PcdyX8{Oakp^zoO<(Nt-raDc>0OK7TsiuX{8WF-P*JJ>5uMT|!7&*mP6$ zMMl@z&ZWXe$I;WVBeZZ%m9=Zfy1%xP*y7sSosO}|$|r2b)X?;UDu1@#jS*?G{HA?3 zO}cTiwvun~xyDuycYef6#_u#!+t%iGVN~Ok_@wXfSAVrP(kWFP0b&QQ{B4{4wSK+r zYpd&3J4G(wP1(5c32}@RTGGwh!p0s4y~s6nfe}FSsfo!PfAR0Fqq<;$5VUf0&Ha;O zzx}cOt7L1(rB~$A65kZ@juYiEq+@PvAwN@i$Y*RUubrRs{x)zNx50D#nt=I$KUo)! zqdy-^{PzNU`TWR@k-Oi8(ce>@2vyy_O!+gd3VNpI&zduL!ffv7lCAjYDz+}NsjSZO zch(C4cywG~tJL>nG6QjK_!$gy;df?Bd-d4swqH4K-IuO9>gspDAHIZjX~VgmmUK#R z@_*twM|_kDmg<G{8qieedkzv#{VxfPBG6oSz*x>CBrthDL3XkuEK+uJ!tx9nDN&av z0tl>q$tpqH8(o68zs$0mB|agLdID~q4lvSAaHvfcrVCA<7HMGZhRD)~83CGaPNIvO z4zFH+c=qz<)w5Rw`#vU!7aQ0OgvtgzVKae5zWYyNc!O**I2iur>Exl~a!$SY%9kJv z-Tl>^+{h<@NTZ|2z-C_N+B*~7d__kd(lpT&`Q1R+1)Fs{x$NYacV|E|bnU04_NQ{0 z5IMB?c5dkAyW}j=yFnq$;&G)Yn*OYw-uPRRZx)|U*rIqO6<5~UV2@Ki>j0Fle<F`u zp-W?J--U+n`>=1cUF^rTn-sK%zDz3*5udjDUgs?H@=#%}#_^G>eN*{DA@wWsUfW(9 z3jn0z#(sUWMti(^&5Z=U<<m5K2(x|<l``gvq=!x9yJqXnO?}zg`cUN%E|}Qd`r8sG zAIMx=klJvAr4yi>P4REa%g+o&(n7$~3IU+M3y=H)hgAonILc?83lt_vbd^*3dN}0q zX+ej4Wz{If6IPk-T(I#cK|g46;U|pa;Pxvw=*ADYW}FfWz5&;IH}Ue6n7Fc%Ns{vQ zh>~@N$g&m@RCOb_I26`by+#hGmQEM)1=B{3@8X204Ww{ix*;yjwu!Sa(%hsEcWfxk zrGEsV96J#+x}fxlEAotieb0!v!faZ-KPC4Gr3z!8LEN%2=QzB%1g@K<d@>zbOGS9$ zDmyZyqxDY-N}J1J_p$B32pd|?4J?H5iZPy<NvDa%u2e|We`78A9FA*m7|IyR`iVC; z#_-1BpgCslrP@0;WZG}&hFRF?+tAe?NzqeZ1opWxJLu?Pow3j{5c}->z(#Q3?VsXp zKS?n*c5?w4O?}aFvQw6U|MIB4%nN<!t?uZxx}VsUMShToT&mc3Ikc=GIfsAs)z=d3 zc$!b7BWqyL&3N!KoP!fQaltW;YMX4F%;H$w#At5BoWrx(2z<U)l(j&0mS?H9|D;!& z8-Mh}DW`La6AWm;9rWJJ-mn?2rPM{cy1BF)Bl!x4H{PIo3uT=4#@cJ_2C4dc=}9L> zlOBJSgE<#?>-{<7l{v8w{nb}krF!SnFlI=xKZTAF>akPnYCHL6{eT{~FGPaI;WH%? zn_!31RL0@1?T)7h%zLw<h?oAgf_el<yYanNEdL=Ixs^*fQ>R_6rLOXD#pcdC%s%0v ztWE7BbwRlFpD{U4v#OtV@Q{`{<sMA)<yRobQP)GQ1||L_zP_t3$wyiy`%!$`a<i}e zB-cmbM>%81t2q42QvSK})Zt2_AKy^kajvY|I`#%Z9^T~Nxyg(jO!4cAQhE|4Ni*6) zQ@Pq_)X-n~S~30kBJUt$a|51{O}Pd?L^z!?V^?iC?dd1lQ>SlWH|1A9`I_pt;LvXJ zLkH~uOhB{0m(6m1S;=*E_0eWQtPTQOlwQ=#DmOL@b;)}`wrdu7w4aqh9(VdP0KP+| z>vrR@M`NY5(?27t<UUSl0{(FTaIm&7^hJEqIbRt2N14*2)M+bq*A8m~;f%M+nZDCB z;w(H@%Q6a1Owhi*2gm%=4}eELP!hMmKl%we;Sq9;4{3uCR)}2rbsU+=Z+LGXM_F)_ zkXzhr(8dq&Z~o$w_!mmypg@KcCsOs-M%u#uQL%u8w6@r^Z7B;@(8Km*QdL^j@#vSK zW1BKY$GzTt_}%64rR$?MMt<<k>mUE*E8ar4w$fmviykRI=2YcR16*-Z`^hE^8TME3 z$=g=rwiB)(I?1)X`Br}1X4jf7J&_W%^7x3>z}sAt1p8+`LGM1R)nl(8b9l)AV_8p} z492tg=-l^G5u__#^4E&to+|CQ(j0(08E9iF`wvuY;X2n|$e%`2ap2U^NzHO!T*+X~ z)aoZmvoQkJ`jxRdL6Sv;FHX&y@OcWruSocHnSC?<{xq3Eyq{RjqI4uzgk+Jyz@!{b zM7fFflV;_Czq~SVdGt8}hJ{o6WdfN4Sz^dFq=!x?wllbEhuSEt4ZITsv`o;o8!%Z6 z!?&N>I-#<odYPbwm!<N#(BB0?7H*x9rVpg5nGHJqq|VI|;ly{-Wj7A;<O>@&%9sS| z2J8ei@TC?WE)1RHIpuu~ek$PN4~XK|APK4l)*QmyrP!HZoFFKXHJUo<B&NiW${{`V zq;cBBs4Ui`-RXk%E~vc`Y+1iLZwmW_h?8t5*OKcQ-YyXM<K7wS*nx%yY!-FU&eI{( zl}~rL<t<EPnEpvW0cV}5XY@j+*bn==`14cWyhp|-gs@!~3V>;6VaF69BAw8)-#d%h zuKDE8nQJGq<ilw(#WgQY`%T0`$s}|Z6u6bTSJB|8ZXDqy&IN8!LzDgsy`I9;cKK^j zX*Ai_<)DxGX*-6Urt)h+dZV8(Bx-`|qxF&~8FZulIZupuxJj3TC03puV!`F(z4p7C zU-fHkZjVb5+>u9i>-Q2@&d9pF;+x3epKS`YaONk~1j-+C_dZ`>U`;(I8<?KjvOJ|; z?YF<U#vYO>fBo^W>(E~M!ejx2-Mg^tHSPB4(8#r-lpj1gK9zsQ^ayNu7qi=zI_2^p zS=NR}KhPhJ!}@L+31i9v5II`5CrGqqbDTohUX4Y*I{DPu{RT_f(7RMOd#Qk?JXU7M zoxc!fS@SLJ#{J5oF3O}Z+RD^eb)T+;OSgD(5<W4AxZ^eLG#i`Jcle|m8^Y~elQv?Q za}f>vx384jq$tWA-}R|A`J}%50z^&wRiRrWZ;><a5DVhx3VlhzQI_!4w<a&lNlMkg z=jZBQ^MY{aG4caazTnHRv8`>kZ!FOk&Oe!_oug-tvpt*GY46Q!<h^C{9X`V*yrK?* zZ2yEGm9eqc`~_5NOi6g^jGfsOX?x;_dKf$0G@#v>)xD?E+#AL`p_n+(8|mW)N;_*i zbdZJeW!{Be5^W~sjo(@3UwNDLy<LULdEk#enK7&I`iS#H#=z)WxW?GnLLKyvl8ivg zMJ9hkK9&*a_!K)ZbHWgMnm8tPT6rV13h*DB+dshM*W0M9JXFBw{J;ws1){F=+^kC| z=ff2@M(Bh1lgy5^O0*}pS{+tzZDO)6<JdOJ>r<7xH;Qh0?fNcH5#kixya|b+S>F%A zl0NFUPaGflgXz}Ay7tM)FO2J~=lVD?%l;p7&0k>0%;{fo{G~Hf@Z^D<FP!JFHHGL9 zVh~(?!k4mgrC%VLn{njGno)kx(Z;3Q__IRUmOijQfptv0a1Qmz_}~Kx*N!}Cv++AN zl7Pmav~vhVQr$RatiVU4nI~rFLp5QPkGOZklh}!Y@%IPw)O{AiNn7io+V$jbuE*4I z!6H-Jt9^DPX{fJyb2vuhhhhMSR3Rvj*j8GD6PruYvYT#hIBb$;1>72kaK>Bcq`iF_ zIzagZlH+mtTfcwuFj-FC3w;?LZAg2SufKO=#JFZ(U<GVz^66~<4m*SvHTsu4uX4v! zN__I(c4-{_EnN?7d$Dh9I_1m*<b{J%()t{J@!^{ve*NRA{^I3P8zaB|o4@(f-}(># z<_+3>9Ydnjq3{>U-*2q!iu}1WJ@cSh8@8t&G^ALZ`>y*bxNDs_59N4RekA;t(5@st zn@5&UiSt=_8<uHxKS8%l`{!sb$cgk9p9@c9TCpF?5j;^dhB)PV#m&rIUrcahDCn0? zUSY-{<@TRCZ+6@rc4MM>+g&6}zl#iTfj4mWMXSDam6xmf9+7#MNEci4BniPhH_Y(z zJGI2)tFVzHn*(fyxQXJ+<h*%y5F4a@gfNp3N(t8m-7MIsy9NV;g9AP=OlY}5r`+)* z-v(O)K;LQMHAW{05+pE(JgT1?BApb#j68ncLJcMnmcvh&Xp^5tKV>OR+e`*bcm0>A zaw=P1J_~Mc9!Fkrj2$nI$zcMvWymJ35XpAIt1bzSqkH<5z7f{Vk`FFERV*T5pBDsV z#8uWKkkeego=t{I{b-^E^inHP7ManV3a?pEbIn4?i52_l8?tl}kUp~xeK#1(Oj701 zs}ckkL~*sO@+qe;uIvQW1&%zIR_dh{JaLtk3PlB99b8CD(aOA!h0Tz>2+gk_aVU#N zV7v)3>pA1b(&R&1*rnU++F$w}gONO^(#NL3vmd8&uPJ&m4G(FoPWw1>@U5?~=90pZ zx)1vnJZhyasrZ9Wb%bEyi-hdW+>^)YTAa!zz*WZ}(6RO{wzj{y+Rq~R%MJONM?OK- z-;Ec_Y#-{U5lDL4AUafn*0(u24o((*iA&qBDkP%_IcR!{f2|t{dl@BcQ>WUZaOOo? zIRsrAfr}4ghtVMh5q{z3npgp?YduXe%w_e-HPs^r?Hw~SE*v9MC$YpR$F{bjUR(MU zg>-U*>J1Zcj)Tw!PM+x(u7LwT@xeC6jIyd*;6dIobo8-?RS^z<wF_=3?tZBTimmDI ze2SQxKH*f1e={s7{WRDcfh6l=OL<$<`hcQSHYM=ee)<|pkum+FA3%NMs`$%4TxCdI z7NzLe8+T(KHqnu3Y%GF4bIa{5<A9|88B=2qd4-=C6*4y=zC;`|M?ZZ$F;fYIAOA>R zAto7f{B&7c!=>~PGqzM8jx12^lZY=ZW6nvV^ox7=gu3$IBpr$f=QzvzSdhtBn@xQ3 zNB<*>K44!rZt`9dKfv&5ulZo39{^x5^^#8JqH`ljz4ytZe8q*ntv;t-%5{imA?k4Q zADZf+%#8{4nR=JN>OyG_%c6JwaI&&O3so=WDFjW<=`$9@sU6j0A@0)!WMoGeV3av) z4f6ifyMAp7hs+x(=Dj4==}%{pk3QxYq;>{MeL&wvUgf?Xf?1Xb{B*F|5(1%NgXvO$ zZr5#8gBZ6Tnki4Eqb0ok`q9yDUNrjvA0FBxLHYx%`b%PVKY$7jr=w4zVAzM2^rfd< zjU(gh(APx1qar$@hj4lNNKEj2ms?(Li~jxTUf=J=1|M_rbJi<mRsH2Jj^<cd@&N<& z!fm@Un6_?VV+VB)FUO?gv$z@0&P&0QPwAzCg5y$e2n|0xu?}3nKKFrlcBohQR#A`z zzQkl@^pC4P`p&Q32&>#vZ<}>1r@UA8;Nk19kkNID<MQ3x7th{dzqfC1Gk!Cs*KeT{ zdeCrv=$O^FWgvamoX_zMVf;F}FK7P24}OrR&U`s~erYGR8JXQ2P=^PHGOiw_J~E5T zoPbe+W7~w`f@`1XExg&%M!Km#c^M}%uDK=wqMv5%F`E{#W5zysffKfIX1_WTT&kl3 z2;n6=l5^C(Cm2T_+p<X+87-X&PBflnbD_QRUT9=&VDsXro2bQKo2usrbO;?==`VHB zH!EhXWB(aL*|EV2F-CBNlU8gczD!K|Du?l>jDfL!;Dw9N**<kybKo<4*!t#g|N3wK zRPgUgkJ=cK2yFfsy?#Z;wIDT5PF3nYS{1I|(i{Wa1Jbb6f5h^v@ROG87!O`r9@H&K zZI-T_MNZ4x`uOYj#e2v>jZaM;wr;tO^bm6W<-Xmp1r%|g*yON{GtVP9Eythv8sWZM zvxCn?yhT-Hs}DUbY?8E{z-mz))p!S*gO?eALFdh;pP2ZVp6~hS=14=EgPVYZZ@Ksk zF7FK4U!n26BEDnf%^QD}W`CJxHcI%Vn)mV;ysMU>LlAZIqnj%IH49;Ut9}-RwCB;< z3|^!`51&BsyT{(78xS($DXLc%b>MWewuXdJe00@0(9HsWGBiN|nptEiA87-{-auHV zha~ur_h%cQV?!5DezGLI{G9Y1cRqz6tcw%n3_a?7yLkIXYNG=*_LI57!b?~=s;hLI zj6=^WnA5pxrTpIHyGT&;ZUUVf2F4#@Hrf4!+fTcs*VZ&?sc|CNh@Ti{wQZJ>!C$g) zaj1QB=sU>+7oCMiN9vR*{oyAa^s%1|Wg?em1>#z{ygCk3N**5Qmamyh558;f`lw~P zp6~xFTT|<lJN=5hSwu~%mu}AaxbS>3hJ8ok=qZmGA-Qg>ltat|&$wLhE_Sk=Hq%OD zuA=ETHX<K($@j(uwsEe58hq<wOH1T;v+n2<@J=3psBb}I`w|hgxb}s7^)r)fyXe5a zD3g93iqh48lZMY0t*czsr9h)EKp7`oh4BWBRb+TcKZ`UFqJuuo5xS5HwaB*eX*Uj( zax=h$MGB}L{SRnPtq;`oG&%q%R5x*mC3d1^>g{Kxj~t#BHpGKfV=0R`!UQ-39>BM5 zB%(k9He(QaevQVT6^~zDXvCiK^_YH&Oul0QIQg0uE_Sg#&0Y(!?H!BfO^Uce*lt_O z!7pyCBQ2pyDtUi)^WcS@(k?OzW>a8p5X-)}gI=rFw8@936t?fE^>1}>b40s17qw1| zic=YEuU~ckLWUi-@DV2d6rZXTYmeTz5s&qM?VDKNMd#`#ZSi{*e{bgAX1;6em5;}a z7r~CsR=3I_O%vNtOt)ICWiK6b=Qs(h_LR`jI_0Ln;uE!1h~m2|b8z8hjCGv2>F(2m zI9$j1^mXDdvDdlAcRS_f*Llwq^Rn@nxm2D?85=^=t4SViAisL`IyX^yN0s)YAEOya zhknWmPUP1&fU7Q3Cy(?o^tFZdj;-Wu5}UlJZYVj&gk~y6Z~G{~z_i}JIb}dL$xw5@ zPe&hGs%bJ5pn?qEJV-;C_6ZQFnDUZdblDhOAF^fTHb04~NCQp9SX&eaUhs(@Dti17 zXug9OyX%9_{)bJZpr3Y3==Y}Jvvvq=x$wU}p-5Q|2^t>S5Sw7jV<XRoBy?6@PU#E% zXVxz|lzh~AX;-e0g}3ropOwS9O;N$Z(5@_wKR)Du=F0)de1v?us$aj<dKFycAvlD! zYujzxWL;C_TYZ#|zu4W}$eJ>JEPL(b(;CL-r6OGVf*QG77UxJ2>5L_|g{Jhy=)Nn@ zNp@Yj{hD>1{_ch`e-CZCYD>aYU57ukS3YG{-s;mal05y}*rLhn`@+3?-CqOp-7Y3! zRo=PyHEnK+{OCtNdiM1XzRoy*OPqibPmI7LOsl^-8u$EBhWcT&)ySboW%&Ywvt^yU z{<5+M7~c7#vi-F)u+mvM^iCujlElkqyEG6^`3~@*n~G_OXeV;`g~k}!{HEHD8tHJD zHh+b)Ud{VwNw|f@ZpNaaA)Zg*$A_|;GxBO8giBwfZ;R70h>cnEXO4lEIs`vs#Bq#m z2VXwo*w48#e&dhK2b&gOA)}Q(NZxgZby;tWPgw7o*g1szia%Z&-*tWT#t8KP2gH6w zg5>p?@0B!&s8NV>7w9N6l{H&imx283WGAkZuXGfoP}12TdsL?BKCQG_6}%%u#Wi1= zKhN_+DX+YvbL8bT`YP_?jC)*B$O|C+c^!*AfO}*y{FdV*aUuoMt?Yv)l~v<DB_tdc z(Mg^H>HwE?lr)S5VKO1>0|r(XFWyXZxEt-`dGGloiQ~@03D`l+S@aG@2UKswzxC&N zc}nCBzeJO#M^biUgcq>#<j0$D`L!Aj**fU57}!qo%CVn1d<$HEdhpu}^q1W98)W6} zBF7DlOf=wlV+_UU>p<4$<zc;FoyowD%uX0C8Y6w+vViofCqD9@NzyS@osK}EZIlnR zY*Lsps2HFKJo554>|K=lDU<J2X+Sh;3EMXH^|3y0GDh88`-BK}&=5X<$hbjuzixAG z2q{01^e+-%GhaO0ph#r{BD}f?=H_o`WzvsNs3Umr>%!i^sAWAoCzHD2B-sS|LKN>@ z$SMQ9qt9^cW`_j)6WLFUw9Q-k<6Don!YZS_SC(NS>j+Xw<eUDWF5MPbCIK8=`D63^ zylC+f?mBQnR9d(BR7Bs=XB4MeDcbD|eW?d?361ur{WAw8p|M!5>Csehnn|~d1Y4S- zvlyBcS(d`KXELJj&WX)MN{p+1rE$o&2q>|e7!W%a<?A2vzow{Xp98D@<=;>3>J!sP zPKYGw=wtdvf3>7_+jncO^3W2KLVNO<LowWFa53dg(@WmhqV`VEE`ZfxCv7+J%&*Q$ znK8z-|6=w}!@J0+J>_?WwJ|jjMA;GxB}2Wmk^(bu)b-OnGDRQW6vf%fVx~<yHenTE zIQ0hVWDyVms|WQlzB&{}JNxOV*B6cz^7hB3h0{)1)QsKq7d$llq-k8TJw8eoTFy<T zeB!tE17kycVxaLQLMu;TmIiTyPD}sGBYcEVK{|76llpvGXq|f7&|_s*E~PyBb7)y7 zwczCnhHYt2OO0cju+$UE5{rGhO^DJs&+_oV3TgLd))?WZlaWIj(M#RLhoCaUS`)Ni zVz^W|MvW(eI0tkbbUf&zP1uu-gPZv6+~~kV__bjqghu)+demOSG`!@Iq`dfa=bZLI zY>9wg0S^3Tmquit%I&Y^C!X`GzTmq?{M6Tt4CQts#Cf=1aqU-KuTP5ThkLW!IngJ) z9HRzB*WmiwhtTwsWpAFetv~ncSW+#^Ns4X^B|dv}<Gems`K#gD3xUDqKyG!a>Wvre zD@|c<gGakPlC#}PF7eNfy(Y@A4)2XQd4~}<-10F+HYjAAjDFT@Px+{nUj>Yvji*+S zl&RyhI>~3{%-GeIzzH3_prv@hvxS1~9iOhZC|eDN8!?HWc}bJHRSw6Tw3(hl7;}Y= zH@QA(8nU4PPW+0#n>Et<u>Isye6BzG{xW$f$(h8Bz3}sV&@%lmoV;TTWQr}+OH}ny z{v5QdlSlNz+!i@wOS?Po8$VsC-9pDTiUf}J6!qyP>f{k$lEFtQR;Jc#WiY>X&)R3& z{5phB^>&Rp0*e{`;}h7Z`lu5!s%uCqhkkC1aV$88fUG_7o%M(IrMS`waZe4W67rwU z>zdBaY;*Xu)N^=xs+`Ia_2G4-G}lh{N9T!NeL_Or`=Os-73TeE!~=Ej4?>1PZ12-K zUo)nE#IMNxwO{(BZhG?GlyBHD<?~MBB4Yq$#W;1<2JpsT^W>spMleTdbJa=vaX99X zy-zFvI6e}S*ls2q#I9^1x2MqOggnA7k8KXNbi{3;RLG|v0gO~>UbwjiM+U`p3{>V2 zDvQWyjGBI+*74YW3FQ%GXow2k&>7u?a=gklc$D`m!|EeF5Ylh`YLj!2@k%<56#dM2 z<(eT3R4%kK4`ma>&5Ukn_!Qu`zLW6+D}B=;7iB--&96gIpBNJvI=5vmeDTsfj7O!% zZ;U*@`8_oHTk1Sr^C$)nfilqBwKQp{k02gaXtOx-L%x+|!6VofF4s@g->XuFtyt54 zBoy?naQ0)%I)=$|=P7ZwE={AO@GW~@yn@o;|E2weEbYRd&Mc3xmenEu6-y>9N2|aj zcQ!l#|6&nZ$794_1UwsMsa;IVSw~Je*9z!h>Hwo{?5Qo+=>-+P*WyT}?JfX}*VY^T zB*B1V(7m7U8oN2spHuyoiOfxseFCAuPoH!V<v@L(Cq{fK#LW?ZhP9ta?Tc13lnKr+ zzUrp|?oca-^7m%Vrw3TXQ}!>DI0Cw`bE1yg(WQ&Y>~ixI$p(%X2RuLVVi}kTR=Pf! zu(n*7EQGO>n%9Tb-wDr&kjk;;+PwJM`r3v}{u#77L(&KxleXk9n=<5gVbUh`WpZND z@$KvK$ih**fn_vMFWpX_okYnK^xAJ-Xp}=IZr^CH?0Gyjbfo2^<>JVji{f-+tC+b_ zb)te-KE0Qx6X5iT@|#r67a&eCbVGp&Hf^-;VgNRwhgZZVF^jx`QD-+rzTs2Kw`_{M z^=3_7@rm#OSedd|9ob!AX~PhZI5KLX_zbx$mcf&Lcnd<mYQNgN6A5ayo;7}dVW$41 zt}gywzT~MPUP$O#^aD?vbi86)=*ls)y^<W3!!CVfoxHSl7EBpR#Z5nsO@k}qA#7^$ z^i=vdLR#0pQpdu!Zf_dm1Msume%)j_I02_Vd@Gl-+0VY4Md_u%$xeyA<=MX1F48s( zxXH(jGrV@Jx+uy`7WEmclug>yIFN;S_{yd49NG;#>4a}E^edTgu+Z2W5w%f58iKDr z^6VI<P8<&ZAV->hq>vb*FZd^nu;{h2Wr7z8Cfim%a@8E#ASjW|F&#S4%UDdCdXfQ9 zxonrNiyIdgd0E}mm!34+OIxl~Zr0&<`o6dvk-~iXq_pJ$`|!_(ue@Dwlg!o#$U>bz z?`m4zlt)^*nWs;bo2u~3MhXRK3NIfIZJ1OuH*22$Fups6HK3nr8>f^F^yt_puDF?o z=9y~4=n*_&=`&=BzxbF3`0F?I2PnsfY$JYiLodyau`cknW%PV7NAAstGDT7{fz6W| z^=<8-8*~E@z>V1oqTj(&U8UtnynX&M@lhLVpY#)u%9FmA7<}^HtV`b?n-#Pf(<HAa zh^Ks3M5nO_6hk}lg?1lf7suL;eej{LOu@$nwTXI7%%IKp9Z25!`pp}@iu#64>Dd_R zJHMEt^R*dfNn&xv7V@P(^5K9t#9dt5S0>}THv}esIpy}&UxCASF^2ViKwy8=_X1`E zaO91tX#*yHCLIp`SN@F=+EZP$U7+B*zIpfI9bYGfESucM)f!9L>br0cO$f9Jo-eo& zexLUvz#FdW;bwg7Hw3gO4%X82pQFGz?_Hjh1wxwo5Z9(&BZq#FdigdkynT!OFigMT zh~;a{?D{Ff0PEKww6(B3L~4JA7ZXsw!fZQvb;Z^@-)6qSXX}C`l0LwRP&M<{L>9;* zr(-rZc5EtQL;d{FN&0F4Ui$+%z)>~%9r1w*eMLNZD3f!vH(|o4$3b)Km{>1uaj@z7 ziTyv3BwrQw>%t${%*l9>E*m~RwUV1Y<W-J*z=Ge(%j8X<Ys9P@c<)?)C_uX*2+3>Z z8b2BNlx5|VE?Pzx;bT|qd?sxJ9s7@Gzr^bcX^9Q+7sscs$beG1yIE>qE1Q@$yT-{c zC_)25@%6+Cbk`nMn<_{3Fn>)JBLnb`uV;K6S{fOxG}eFRgMCAH#uRPVedUuQvd5-7 z#+6qAjbm?FoA${lg*TR9@6pRKDt`~t+qbn-Wo%_+!AD$MxoP5D<XXb3X>EVReXBvO zpV)rV7gpK2{#9(pmI4$<*!rm%aj~Hp04j|P{a4q*wAA`Enx$>$CW=X=LKc3aW<5vT zQ$PJu4q121xVE2bn_e|(Q+aD|gpFLvmU%m}7RuN!pPaZ>Mf<EVxjw%!M1Rz$Mo)Mt zmmdgtHK~vNwc~fkOl%sz(BC%J8e5=+f2NN1#%spm-QDkn;3H0t-x&FD^V{hD?-f5| zZIyonlM_V4TB^cl{g-p)dAP@yf$z0~`6#pp@;oS>B+mwKM3=TK+AU`X9gTym-gZ<V z7cnkly|n>2SzU6{&g0H@xDns~=#^7F?*hMBxt*!DKhXyF1o-aUlTnc1h|8;A2UnS) zj~Vq!z&*>}OvYY8Yd-oMGBD6;wFFXabQ8yPkojbYH?F=Xgr_^+@Uy#Iy@_{$>ICS` z_1?f5kPHwzS!F}S_lo4^cfKZp9!Fqjkh&Ou&Cc}?zy3OOzlFYmSNd7VBTECHi?t4H z_32SxFt|%c-YzT*SjyBORlW(t1gtD(fe(IsMH<=wxuBa^6{C*9^GtS(TRRHp!Rfex zp^QYH1}0WK;HZoa@;0eYCq3k#f4qr#OAtkB2?WM~X+SfW?S_VvK^7s%FTQu>_H_P` zCpQA<B8m4b95Zpxf<aovZy+}K<kJ$`4Uis@Pq_V5OhT8Gi3-_MOIuqf7*n5s%a#8e zq9!O~)QmSw>YBrLulvM^n<D(PxbW*MEG(dG5dOeN8Gg+w0o+H5wGcK0H47-F`q-c% z!at0u0#4C;ppX8+r0gI{|J&cWd1vCt(;?bZ949z8Mes9!sR1}JB76M>&Q)3_Ikdfe zJk=-H&gTm)9Zto!PwRWZgN9_9?8}w`(QqvK%}{59lWa=0sXE0kxcbQNF{T3Fau#?Z zAzwE`SSSMT*T%S{?gQ`p=*!5W1dA2>Q+csh4ktt=eEP%1o^)Qn7M6Md?L$9Fa`Dtp zF8Gc(3w#%+FK_sCLo(PV3wSobUOs=tqPG*fvaIi=kG<K7vCvJSWn&t}wLlgR+CsS0 z+uJ1ckx%^14zU^eGPw&#J_|p1=Ej<_B)mlYE0JMn{bVH_h_I_58N2k)`iwAcf|#<H zhgU@#pQJwhuhGME$|3-3U43*n1-mG*Id%!y&?GP4E=Z}PUsP6cr6Ij6U?PK3;76Q| zZN_S2!V8{?iVoCAJ8Y>~(oEbH&hZ!80jii#icMqxivBzutP1KTf8^l0HjdwwOK|(E zGRnMgz3K~LV!gJ7hNjUaY)ikAcQeNN55#(Tzu={xi3wIlQ)Q8qCl5Jsk!7l|k9EX# ztOyNshjqIq4FfEnJ;d>+KOw-cefe~vA9$;aytHuQD+M89JD6<W#m{Kdc3mthjBx|J zI4(s}d?YkN)SA?%4bdzKQ<b#070?u%di&2Sr|{1FL{T~3zI9%0{L6<0_(3*8GLQR} znYJmPH0(de@GCYxw6XJ!cB@Y9KefH3%}o)%?i6vbsUxzst36YX?J}1sA1SuLrlkiQ z|Jv}_B*Vs;5A1smd5O~xU7W{}k>RpWw8^~f&~%Q_*3itD4@cV3%}pC`+Vz>f=Rz5( zb0q^f4pF3hcmN@vsPG*SeucPj>az#(>GK@xt6r7a4V0{pl!bOi7IM_q9cx_+*mrsA z6&OGxf8zJ#(Z<TgGwr5+$gTaVtNI2rHgV_{zjbO;x?E8pwoYHDjd~~_r?9E*f*`E^ zu0FV&Nm=Y)c_-%Bpe;rw{mQRCw{P{4uF0gY4|)UVT24dey%q8|rh)G)?Z$Gh*u;UE zex<+ecoGz0B8&LyPh&Rv@*$A+c&TsdE7DU~Pb7FH{vmVcMe5ZJI`J?4Q<+HB4IN`! zZQVGK#^@>#^#cp0VnWZ2;KnWccISGpF)(A@v5|4<lPZke>{^J*u^VH0j{TE3V*};0 zkGH=inMP!3-c6azNmPV}sMti0RTsgd?}0}@+^}Y5zE%MJLY~IC@D?v|qBe2eU`o6l zos0{F#F4L?VlWL{Pt&&;XgAQ5+ip>(_!VX4>SllYK;L;seAQm2*ou7S24oaAO_~rm zZJ=M;7y45AboC5{(h(|lqit)_%n1@nQ4M*d5kEuD%8Op+g%w}9JrXNlS)2J&Lw}(E zvx!OVcx3V9AmbdBHGNAt_OShuVk^qq{~2@I4R}eIY_opnLED_)s*tj`oeVho0<p|~ zjf~a$;l0)3c#WRe!mBtp&))oY7(e3F70n|6|KUIV7k~0!|I@$w7V%yknw^<PQ272J z@T{%AKZ&PdVpPqZj=G1Lo=eR-qus20XCg0tsyx*VwtS_zbq9JYPEwbg9c_Aey?{I_ z8)?qdqi_UTzK=!-Qmvzfj>i(mTD4@)rGK#^)oN=m1TXTQoP}&v2TWpnh%m_fbmZ-u zXYW}=c;n+^w{O@O@vAZ3AZ20UB<Fy{rcP4XHRsc##!Pom9TvQV>KThN76@;d3=DSS znCwG!vh2j>lPP`I1TgMO+gItY4o(pkCkvjCSq+8l1eRTCC(_~N#1>1y&tR9EG~`Y2 z91DbQ0_p_22?VvCe%M2K{M!`qDC`ZJLE4~`MW_?C00VAd$zSwPmzHY<h#Wi{*mF~X zF_kkn8caf7U0{hTo+*o@@L}P>W|j*RdgYW^7!E&Se9Ki`HjvtnyZBSgQY2#%E*CTg zceSqEGyq(9ThbZ9i6~SpJdKw$QAoYer5hpW!yS-Mi}<ulc(PE>r&%sW!FCNHJ*WI8 z13yRXU_DUG?0WK!v1vN=70RO%CzHRMAjc!Z_D2^6m^*nlb2_<+x5`%Iv)DfDq8^<f zLhlt`AW<jPF0F9995)YCsfv@+4L5u@$dx`<5EJe8mwIUj7ZdtM7aA_MnS|G$<<Ai= z(oLo`(r>m==i;#A0yDGFP+{qMgJhdNrp~#+L=E}9c+s!Ie8Yy7T8iJzQFR$+2-xxE zjfXZ<=F+$C%G>zToB1w2!LNvEkAGUjKVpsV>m$`|^*EdY+$MR$Pr3aAR~n|p$=De> zA+A81gjZw_|8kv1+b*EiT1@rmuH3oV;kuiWwr^k7H-?NjFc9akokS;zmjq1mUWFZ( z$e5*{j5qNmqzNRz)s;Smg>AhtD<9iNXfOm&3zFA4;+OPKV%k(|w=D4C@8kW|iN&cn z(9BJp{!3nblkmMc0L(vNZKJmB@ncH(pKz5&JT-w1vb!MmM#-`~<MZ~P6e3&c+S#^C z!?6<o)&QhJ>k}lygf}I$)owM%5DS3ZEU&3VOMXmuw2honj-836YY%a@Z{?qu1HAHA z&OmsoE?%WKG_9}n(=Kl-(nr0<Z<LciEFXl#b@X>0^_>8It-^jxzYnKlzJQGN%45vQ z#!6r+hn$_qFj&639;-wsbA>TJ=wC2YsM;QWD_evT8a#RheiTTJeZbKVl|d`22>=3V z2M>LOc|!eU?Iy1B`ZC_!RjOO)NmC}%ukp1uNY^CKjiXSSx=@9-R}vTLG=_~IA$MpS z%Q%uRtHKYhl|5JLlt1>thSnKF8&92kI*&^$V@uy9uPy7pYr_#seIi`t6SfENlef9H z)W_5T{@R1T@Q+Q^(SEYO&V*^K9(_uCTgBf5324`69JlY-?DnaT>eid)t|_F^vFyBN zd*U~e-1*)w8#(NS&@@NcxapH22p)e-U&GI@fVf$oIHMlotx#S^#E^{-U>D%jU%>W- zfc8r+sf+Iud!%@eo+KlWK6>^=P=}s*e>LPtz^6|VWYklCw_k~Q25!H8$e;1exhdm$ z&=tQos`ArMlzZc>x|fUeHf4NJ&Qk%-&y1580$jo43$*)$SpB|wNIUJ3rJD@dpx{HI zmppa-HD9~?`t?_NlEjVC{F<Ehhlk_K&E$;s(RXbxKl>*y^oK!p(BAbI<=#AdIPr%U z%7TC7#ylTtb{r`0bK+OV12AeGT<CWbQC)`zpGmwYMqTf5^iAQ8wEm&6pU4+Zo7d2_ z&jCt({aMuZaoe1emCJZx+OZP+3$4YY2lyqU3b48rad>OfRP^M=l<RiC3MIV$>ivZu zP9sRhzJ9Y$0j|wy$_8Yf5M})6aEWQ~?!BAqvmNx<FJrW^Ree@Rd6=xr@$BZ?zx$8> z^`BI_?>;|zW2B^R{x_2Ta`H0#Zu%cVMBJ+dKZ5wnuc%FRnAK3@o^p-NTVeg7j~O~A zEp^CFNaE`_03XOgarFO6B-js6aU7ur->V(|b4&6%WPbwJv5x`O6ze$grPRUHd@Amp z;^c#Wbj1OoHOB{m8S)uaE_U+0w7fXgCq{fH2%ij7pF!;e1k)@sq33}2>4!}8Q1X-E zJ3f(q0sK3^CL(qF3A_$8gO@>{LCYZBql=~rID_%HAy7h1XniNm;;-D%6``cnz|+Y< zYN17t@DqzMT$n5m#oJFSTURhA#(hjpg=1}vtu7ise#?`fWiaxFMHwPbxbzgcnXI(Y z!B@tllnGF=AGWK0{e;AY#aR}<hqCyos`J0^bAWvo#nea;I3Q><b)%@Zx!T(PGs*v& ztd0EYPvBoV(Lp)+8`5c8+Y6T?#7a{yi`@<e#f(nYG4nZ*S$4sYpQ)p-Dv~-3QK%dg z1w4{@V~q#-`>LeQ*dakD;XE1QrU>7i^^+F5BPg|T`6_SwZ~0hnp6gV_3eb#AxaOuV zyaiZU$tF?Pf9Q^Ha1}hZRR(pw{E4O<)`gzD{0mRaMs?n>jzD|U6&up7oJXHHR!hut z>Pv^o&_x7<gnh@NHJ|E@Pt@)ps2gyWGk!`%7S%capuMV>WABD>kWZ48B?e}pLY+zf zQ_hc)3bELX`0$EO#t7-}n4z)0s*dfWy^0rGqHJ0@RZsiIiNCm^zs#pkwwSBPronHa z=dq+L<sO^Zk{cBCOYC7FdR5MRXCB|K%*vOZ5IuRzdq}6PuvSP8Me(rSIuA+2*7obr zi>$P1Gv)H@Kks;Q%yt(;rj;RuWt4{0<W!FGl&gG=&Cp}vT>rK&=y&>LdDpHZdt~DT z%*xx*k8ez$TQ4nrYR6n|8bvGH#GHh&$N?<4!dHj!?Th}_E6)+zlv#g@9NLSvv|}Cm z#w4%RbEI#5&Ta4L6KVvjYS_8{BoXcHyhg7NCKv7CiR7Z)k$y8z>!k9tC$Uam%56zX zWDh+SeQj*nIGs%qHZQ;72Gg&}*niF+8($?f)Q5z&t$sTuJ4e=*AMl~)j@M)SwGWOy zM=0k!gQE7Wq+DQf*eslCBemN&p+b=@^V|3YvS{1YtGY|q)NAF3I<~hDP1V3cF#?+f zQ*p9Mpic~hI7!${vVlS#?Y)QcnZ(KFons65%$d;2n8!AO7cl(HR5pFO>mAoR)EWnA z)6VzgrqB%q)-4k|q;gI2FloOtsdbYZ`PxI;fdx$1#aqD0dZi^f<n%9D^*3ihq+Cn8 zdUfpENAGSLUrw3<j&6}fp8+nu!gXogWgb|0+wa07>=CP^*(ZQ~5<>g+nlW9Khn{vF zS*Kq0(%)uCYomfy*UYsb)`zP5p*9)&w(DHiKdXPK1;?!M#WWXXHUjj9**@+Z5Ey`{ z$%ai-m3PDgnan$$i1A4%e;F|Lr`q?SEpBxL^pM$kyLRc^4+8x4&)Ykn+EhI0@nI7_ zx=&(zjhyk@jf0Fi98?=?bD!3VkB)xAV^HK8|Kh4-($)C(Z~Lg55k4s;jxdpz_Rvt( zz-t@F0^^^UuKd@{LdQUD00KM~CowE?o*O9LfRb>?<r?_VmqTsn)i}K07O*;PZB9N} z<TF)gfq>d0Hk&dqf#l>*J)5*g@GL+_D|t4R9#{Ih=B(}07+7-hPGclf#FXQIV~4;C zGje9WgMV$7)`9?Uok?(MM7~ShN+WcX&9<(yR^qg#&0KBj-o@k7lQu>W;}0;`FKe%w ztmntG)7U8cc!a+c$T~<nI2w-7>4mRT!2ke207*naRQpd#1V8}oNVMbdqNYwT$L5IT zA!2i23iwH?*UHLN`sVHIU-&e3`;?r~Cn|i}8?^pvIHo+w(9kwp7HXQQa`J!AcLsea zTQ)`VH5$KO(}_Zphq}QAG=^c|^63CUDT`_7b~@<UiNU^05GMHgy?TSU*egXg2AmM4 z!ajmUlXa%h&@T+E-8`_)WL<YhmGcZ#;bQ=2_ul#pbSG``JfNKbPd+@M;{w`EjszX@ z!d!jEV3Um#+V0#ia+e$X^po7e$Il`eCuxT#lY%_0;?Ry=K+FaRI>n9yYd#Z|!G7ga zn6Z5(*rB&R(K#&^pP<-9M*=DG3Kv-EL<*&meD$X>Ee)s(TN~{sU%?lBj?$cBI!zk2 zZHUiFoAu^|{u_Sk=ON$ZL2H}zP9{iK)1h?w$u@AZ%J52xWjSe*<FM~3^huE}0Q5h7 zQ5cb`dq{-l+9%i8zVymNq@Wcqaw#1NIr0hrA$KZMN?%QVDU_!DvOkG;w>}beoV2Q! zRJ2Xxagolhm@@a~Li^z-`VMuDqx45??U=xd(2-Ki6kHZx*gzVk?PlnFO)j6TGqFmG zzuXuoyaWIb-}waBvTI!*Pq#gv{5i&0=*10?CF7cj`W^D^0w;1#zvrDNjLrO9qQW5L zaWkd_(W!D&UIl52J}^G6Rs%2nWR;)(SBB!Mkx@r+OUJWy(g+r(LbY8y?U}Z~tu5u- zg+=-h9rHN9^ps)rQ=asPxVC|l@?M7~mm|rm^7aa7%BrO#y;8?t_^`-yqtCRluP;}m zFH-CHO6EM#;DWKTDkCtY$~K<@&y5V;5<Y>IImDF7r0%_G9IHmy${PS|@3L83F}*Rl zK5255OFxyKDbOIOpMJBcynJG&u{=bPWpR}sPn)q&+e@=@I&Sa<$3Q}=Mo_9r%9x|^ z)4cTUap^|(88`8<!A+Ya243u@y-snBMsd4Ce=wbEn{A;^y>d8?Cw7CGe!wn~4_?AJ zKf5`Sr<Yt9D~rC*pI<-v;LVy`{dbCT%mPw<SI)JUA824R&fYY6^OE<n<Yq=c5q|n= zXoMF$8-s=(f@vEW%1*qP48QZKJ%43RTU8%@xyRDp%?Rh=Zt(N9JfCv$$qUILLp~Ug zg}l%UD}|nIvJUMqMQ%R5KU3SoD>6z1cn*d1g9on|z)bji!|NuP9|lP&JcE`~;L<1P zmvxXrf`eL+s@=NQFdudZoL)KlH#hF1oiK_JQJ|Sk5U=WL?eMmbAEwALmFa^^K4owV zgDf%_8<;f>hwxHnpeNS&UL?Ot)lD<eT>E$p7T5S(mA0~p`tt3D-Hz+T`p~!Caa#S9 zDf652n!e7TETVgvjr_Vft>L%K&TDkk{{9J<L)v3AXvLPG2-9_){?_s4`fQW!qTzL^ zlGe(k0Tj#omCShnHk8$N=~wzr2a`^&z&mE66HknU0F-_D!n&oCm?atcL$_;5uGGo1 z_%c^7Y(<Rf&x7-n0a%WmZoqU+tK4o(<O|HuTbo9A;|OsdY7m2@`WplI>J3=<DRL#g zRL<SRiLAz1`Y^bhl`U&-FvC-UH6Tg4er>qAX~)W+Hs!M&*leE6+QE6iO)KS9*Wi%l zpG1iu^Pch6)Q0FLME<XJqJ%<dDW3-QiK9p(sO`~-t2`GzsFZmYTW$7!ATX4rAT8TW zLgpk5QtEBr!)EfqAN|6cx=qTV?niv3DKMj(aDm|}oU$Hk_y*rorlA{r;JTrQJlb5D zq@}L5Dc7@Se<1zGrYCKTFjf5+7yCOGRUgae9^A!N_v$}a=*<kOwNE|=_KA8s?#W2@ zM~=F>M#jJjZNuRzvTNH`-EZAa5pCsI8lZ;ODcgNqX`ji?HSKlt83<{4>IpfXXcxgx zX&=vTan@&Q!mVAJme0CS2k@iXArjG(_av0pIVifga3SJTBfdkx7pY!fs<k)A;xKGj zkP(b{6yL>{kKIYpML`z06zpXuKZC4`cMreEY#-kF)d`b>(IA*ej4YNpc5ohxLU61X z-yQD#exlMJH-HA_7)mmw<5j-Ckvsu+>Z^WfDrpk929|7eU<ZSZa19zlDVGyCFiar* z?luz%Wo6hD-V`!npnv%ic)~}x%4U6T6p-(L0X`Ecaza2*()Q_G;T8KtiBKE3(L=no zgXou32+qQgl(kp6kRQCYzisLF;gz!TphjV)MzySiMzR4|7y~;KGz)<-DU5Ln`>Syr zTJ?vh%xT0pOwf9G;Kb|4R~SVvOgCBjD?`{BHZG=JjOXTjCf#VAQ+1JH`jD%CwTlV~ zq(<r$3#H^l>?TE4$$&)XoC6wsY2+q~DpM$NiXW+dXxiYiquvof^0S5roo<qOgVKc} z&6Q7uN%n)*+m|4&@zM&6*T!Le3wz8Ys3dp3%#h8F8x}=MBrVlYpO7D3(FLKhiID}Y zW9@o4?!j7_pg^yOZa?Khb{9GDcKmX>XB*fZDI&mkeK0a9M<9BxgabppwWqBM?6}Qh zaxky-viQXreWF2;qwm12AXoV1Cy4dpXEVqfHxKGEhNZ_LJs*qp3PMT3sIf}B)z(Kl zZQ3}8G>Q>8>r8D&r&2xO1-6%MQHC6J^vPrSOJwM*gRw;RrmuY&Hi`K@zDtAuIpzeM z>KFsH!QMpFcf3K*xWK2BIC3LTJ_M!0zG$2)UB{FE-GF26fq0)>7~F~z80Ue+UHc3; zEfoFi2V)0x<hOkws<w_yTy1mwyD>s-c*dU4@z0bpaFC*)p1`7~vFp}3PGgYLPFr$Z z99s;l^m{k<gc_QT8R-Zu&g6x#?wYn7uwu}>wNjMk(Dmy7Sw*p%8CLog#lzMzk<60X zYe@yqzR`?{fdi<W7$B5D(Ehnlo4%*bK&<Z5uYJ0wz8jsvac-<{$<(7V8wYYDf(*Cv z$W1>n0(xs_;nmM_#<9Mg_E3qeF6@1}MOyYj5W;4CkShLmM5&ARjVxSM!D7q^jWlt! zLcFxuXx_OX09s~X(;`6S7A7xa7cPBWf8BP4l<xH$eW}k{iKe#83LPSVq{zrVG|A`R zzHlwVSQT2>OOnp<X*u-=F8T5(&7dr<MErk1Oo_F<@27A)o7WHABq{Iug|uqE$`hW- z%n_|=)Gsp^lXtCC9C}DZq4ugw%7PIhR%FsAz$3mXLp~Ic9!KKt^08dfr5`5A=A=AI zo?Zk_R;I9Mwr4619fn}}E5j9V^TOM<G7oXe{pv>)LMM1Rj(pj(p%y#vFb=qlbJ6b@ zSI(R2t-QSV0TRyFvWH7>l#vV#Kx81)Ci|5M+qHS#1?GE%=tmFV50)oJ5*zh#h_2H? ztMRmJ`|LX?w=jpr%%5r3!fUg&mBPjY)BzpyVI{s}dwdup_%+?=1G#(^NwO;GLGs>Y zH-P&Td!I^|##_Epe#83mNSb41{9Hc33dFy5^Uxmy&n2--`wpeK<||toK~OH9yik<T zC$Cw5L2r|=Ie_037z@%fc1o0#wT8I*dFX?~HKGoBWCu3lcolgFWE~`Y#zf=Ry>@Aa z-U%a5c>wogWq53Q(#FU)H~;f@zW(qx{u^?hR(LEY;E>Pr6EF(8gY(IVL3ld9?Upkz z=p=NqhCf|r#F75=ynT2Pvi;dWpx)EJfj{#W2df6UQ22|<exH7rA@wr~wAR@^vFzYk z{d?Wk!!AO_%sPHWFy@)JI8|eON(5>*I{Y5#TQ@~`a-<t0@)BP}`_kFH{o(*>5NFpr zi*W*&0WLwn1sW3=3!gl)=jMnnZeyXzo=Q@v0TUmQ_8i%u08Skf7`PhP6U@1(+84F0 z4Yc#-)oX)520Zjl=9A#Pfk*zSme2Ac03T0`fRN8DjY9lqGDEinX*Nd;)MK1O_SHcd za$py2Bz`(%bc}7d+07zB8_>MCfmNpnEaS?jj-61|w~Mam<-{v}5+F&Th1~n;a4Xw3 z5MdMi3O9|lrM#BrVo6&1v6Xoa+$MGAt+Bl@0|$VUUO$ac$lAQqgn9uNe<{B%(pR^d zEuZwpZs8CHyLl^L<=n#;t#%_s`+Kv%!N!R7>4r@FBdZ$tj}X3J#C#>}RVWj!wUCOz zC<`0v@}vh<(-=s-O<CeH_6vW46igX<1c^RGNZ^IyPv%D|T%Qi9pJef;!G@wf;9!zV z?O9PuqV$&U-n506h9FtjdJPCw^b=nCv_vNBJI2MS9n{-Jm$V|yiex)=_Gf+pg0JdG z-wnWhY}a-dv`OS6PfIzkk4rKyVME6*lz_d!ZMJ?|S*#0;JchP)!swJ<6Hk!Os}%Q% z6*ZS<Q(+^^j5AxM9l3^%aUi}+c^4pop_~}P)wFH9aCH3a!YcrCiY=5oNL&X$@>7|y zp(<$~Bw=U+E$zY>clN7v>Me#eV|xJg-+ot}d~QsoCEU%kpZw&fgG)d11dx3%ZO7Yg zh*WRmq~o-n=hJg{cf2!4Sbf|-2SNO3>S(mx)IOoixRmwU+KmolqXHL3TjAzz;3ZB7 zZvWNx?MLP7c+X9n_T_L>!=ydD32@P$7iubB1f_B0iS3nFGmylWhmX6Pz)+R5J+;(R z=lm6W;^*=TY;XjMauN*9AwM@}%bqr{(k6J~Q6Z&ei>0-lR4Wl}RLV2+h_JCk$3rBi zvtb=E%AlAb5u&ICPBwZ4=zp6dvm4t;hwb-6gZQ?9nj~ZUoX6yuzMTHqc}jxHU%z*A z$}zgJL45nYo4@G`X=}^$iE+F-#ib%0zJ~xE#d4h#CbV#M?hCy7MHki6dwLZ#(}C#1 zt57Pn+4P5X4j64^GN!vJPF>~n+CGmwj0x@Krkvwt$A>WX!^Ye6IAqn)25HHg^Q87$ z;AB_UkxLn*B_CgwUp(ay^>QUI{^yej)2@9iZM?HA6D1Oi!w;lZ*KUk-jV7GFVV!!2 zRyt>Vus-u~e09c21XgGM=qP<6X?RC6X~mAxv{gFbV^8JL@10xX!v>1s6G|6)yXm+6 zA+f}M`*zrRu@6nMs?XF8@=gn<v)_d*ynK`A5;4V>ng!dY{t$^a?Ug4Tm`6-`GJt&a zQ%8;$jJpqhm_UmDyH1f^5)5jX*e|w(N$h!9U%ukkX#9n_*ROq#h#Mnpl#qYPk0H3O zc23S%8(i&*VIzBVVANdgku{(;<S=F%6O`Zl#;^71)m>P5oH5F^U*}5K(hDE`iTBdU ze9b0`?cQ7X6X9Ov6Q9Blx(;7^Jn|a*wO{O??b8EW-7Jibo43keb+SXFkGaLS&!#NR z__J-|486?h)Y<M~o9URhs9XCTytNxJ(H9;j=bT80VAh8gaK^S!O_gzT$H=U?Xiq;m zmjW-Iyfc631N5Wo6<Pe*tN;5uW*(cKv@!A<zww{n@&eXBh4?S6B9CRXa8Y~<f2FS5 z@!S1Z;jN3iT`M1-r!yZ?J?tb|8soUY?e+1*e^DSW_Q}AqJOfq{oungb>yv$ON(-l0 zo09`GSPlx4WrGu&BJbH0@nxPqUZ0H-Hb<O%7c_&9K-8y1T&TDpFn}qQfs?C?WpLU% z3^1dr^r>fWmn$!c^W7!<q~Q699$@s7^p(nBXrT3z%l$-F1#WrN(14gvYe)8cjYY=b zW_d!;a)H%}0sa!?<V8QoF?m}|%Bp>oAvZAu21HJ3ATNYel+7Fc4bTFK*U79;sF=@V z$g_zPy6P4&p`{J40gJMFZHlzRfAcGQCJOcN4;+tt(hBmzT(4t*kluj1I%zZYzMs^^ zo7<RF5K{Z)pi7OqY-(0{z#AKjpUE@+Q;2YrApg~)i>cs%pf2Gg&++Xodt+8vpfx@v z9YKxbIb5XM|5>cVjl8-@BX&xsQXUz^&8KR#hh-EJo>CUR0;CdrXi)9TA-R{t$E$02 zRIma|DAQAmqUUB{34w=T0)@}ou_VHohRV1%x%yLl1`Mop`X>1iFZ2*HoR!svTsXx~ zw3$3(5BRI1eKa=7!ZLHG4dq{7cfrD^=6Q@=evIYxRq2W6Y9Rg}yJB<Od16F}`o8k- z7-6EG1zSGpi>?5M9QqkQ{A3>)A~$`hK2F{q>LhHy2S=+(-=cZ{sR(Q=B0Pw_(d`X& z`Xv3JMnwtjQjT5XGa8A8*i^cqqpybO=m%FF5T5#SVi!-|ZSqsOE@Uc)xbj@Ok`*_X zWXVste%sqW^%67q={s}*PTuOD7y^u&fQ`UAW<r`%xW+vC0Bb;$zw)NAN=3&`K1K8< z72DVM7P5L*CTR`5@YXNbDCX%3{o9QKll>w6T*XlL*a!tkY;#Y$Jq0~{N6#rtZ@l80 zytiuKVUxJR*FN>n{8~)(54qsApZ%JnzpT`;<HApo-m#JBRhsq97&XY6BpPwjKfGN* z)Q(@qNyobVTtH=PjG>M^Tlb|CgBC2Hv<a)+A0^v__bOTWEgbbW<r7xhbD(!dxi3O> zGuJ-u*m5jqE}sn{;d{eszd^?t65q&J#V)mtyvsALo`O<R&ws|F#n9?znD$jLpUnFx z6)o+?ul=f)aO#q$B;_5M(GM8;sJs5#wS&MMRwkh%1vffkE9%lexfvfnh#d-DI_kUx zqF{7Lo%MT&f-JH-{DBfbQyKe8OFzqI$Jke@!Z+2kGX|-}x>Vz<##Lf&t^&eO4>$bF zFYzbxNzJ|;m?cbEjFq?Iwrrh$_Jh};%t;%kV(D;gwmMoEi32EnMq<SnVEJf2G0iJX z<C?k&WSvh9tCKV`&mPPLU%#Z0I3gwe&6IJQ_Kv~$p>_k`KG@V8XaD1`-sFkj`C#Lo zC}pir8^eq#)wgCv7Wy#uiYnIXZ`#g-Kj{ar^lSaf8v0E7>mQ9BEh}7P9)1f$b&@8W z><CFU75%Vg^)HZi(ck<^YR2fyeU%m*Q6X3!;z|m;frA=Ha!l=4X7eN$Ew8`&>e;Jo zg!pwRaE<L66B@fYVLtH;n)Z}WJ?35jdpD-~0hckrO_04J^HJ8u$P&3cB@@x&FY4wW z@<j$>upZ<XDPDEc20qCukLU00Q`X0fb<6$AAil|8<^>;N%KyaxTH-;`s%xU_Nl-yV z)An1gtw_B(1O$YQJ*9mzP?pr$f5?h5wVysEK1b$%>NnQ=RbuOxzIgJ{PsMRe%E7$r zq}{mC7N(6KJI<tIa(ybTjXV46o#F?E_WWQ3AMD2F;>epLF?lxOsQ%Nx&)$VJADf=E zF;b#8{|jsVn!$ztCngOmQWbw9^3%cXtEXd4znqxU=hUBdOZK#Zy3xrOn-u(lL)MZ( zT01Q4;lN9j>+;f3fo{vs(R3G4{#>&ecu>ssFn|>(ci&VgZdI=r<C3jqv?HzhmHz~$ z1Sc07EI8dD=_ZK*kUIE;6@koP^qgSiPxtv!O9ikk_+)aUMcHBQj(i5Lc_z_!K03&b zuV2;4FMt4-{+>muMr#0tP8L1AiRt2mKuG|8{!YpS)-VN*>+<N0WOqn6_}Uh_244cM zf0324yc3Qz6a@o>M_w8j`c?yByE;;5Fmb_cfbL7^iib$h^3g>3v)pImadO&ESxQ7c z((B}%MWO*q`|ylpC8bERbjTjw^54F&mAw5H{V(+?FD2WDp7mmJ_50bV`BBQ4Lblw5 z`>9xx%2#)3!SbZ3(vyS^hrpDNi^<$X)3UU+L+NP8>ahML1#PWPKqW5+>*A|itrspc zkJTLNvOme|wSIse_+N3Q*@d3pWj+>hp;vNJ)vru0KFrSWpoUh3_MiGpN)qPyK!2t( zatR8MFz`#Ftj}z@i@7#cxXF6~&y%Dxp_<R%G{GZ2ArF#PGSw!QIUKJ!$~X3xzip#X z;v`IVfft@Gro5?D!O(>&d>nIuw>IobKWb8u@gc7MZb#_f;P@*E`ifF@40UYn7+V?Q z7lJ`saAnU8kY<HOeTo+C44(iB+5aNZq;L^05Y4TvylNL0R*5V2jdlJ>8XPWjo}6PX zcGPw<vtIb^&%#Bb<vnfL7{LbOsNXI;LczZ9pe;xE&I#D)F;{B=iyZL>ZEGEey4d(0 zSnVzk)AEzH?Xho!tezzx1=7H@(6e;12y<hEeDRlSkP<^Oo{*&cXor^eQqIJEK*h>w z_{%jcaSUN8<^O=8F*b?+=zBhq2N<#Fj!p3(2djRWc?$rvM-Cdu8%xC7<HnznrbYkM zh3;~LQ#&bp5|?<7Wn~B*vPXQH%{gNAzUN0d<Ey!enNbRU{^F;IE$5J|UZq`@*E6Kx z7}is52}&!UwaPU-g*Q2$rJu>mS0XzPcaGb!TAhT+{O!i%wQs`*7+pvjUWQ+;_SeDN z@z9~zIkxfih`ESi3`rRAs<1UfWXzlgZ%x#=AVT>`*%0+G83o`H{MZDT_#ZyBb08Iw zE4U*&#t2Sjp+#BrJFgy-l)$4gmnQP|?QQ^P1Aub;EqF>~vX6w<vi(C$bkHB=y{S2I zVh?CU{*j@yI9qNZh-Pd5_Op5WLAcbbpFTH-@+;86*P@iR&UVlbS<`C&ExnHCFbB}T z(rUi4C{^{hY<v7*AZ?R}P}1ctjl$_zQZhb93T%`QvBW7O>WeFWDo5tVm5xIpF5tBV zj-wrnS#IpEO=_p*>6n!_6tv?CDjtWv*^MjvdgcgijsIuv1SWr8M}Xy1eU8fe^1*50 zlL0I@stQ6rSe)V$tdmWNrNq4ObF3my)@8yw4{&761&{t1d8H;V>F*7-{o~Uj{tAsx zhX{}{F?{@x&#{+Hh^$+QweZw~-}q$o#Otot+z^?$6rT2F?h&x-Zo<YU##{b0v$pOU z-k2|YZQc1L!qSe&M-qO2c_y|`{6AxvfUyg7w1fR<d6Pb7+Updz`KYgNwAu}e9Y5+W zHRU{#d6l`OOKWP=s;-vOUmYh)#`Xh;%ENcej}2@OK4s+-rgO6ED>wHYPw=2mH}*+C z`kNuSSJXK1?0o&ejET^sPldGaEK6VAb5(cqH||+HEq#xTk-OiA|F3b7a(WWS-4u8V zQh7ZEqp&q?&riX==R|gsBzk&42K{Z*48umSQ{KUy#sLYb+{{bOAed|1!CaCh2ZOS# zQ>8q#toy#{`}E!S=XOeY4DJ}L6t`||qcP3rKzHq#gPIP_+PCn~FcXEyNb;jYJcC0A zA)_oe6pl#;WEM5#g~}p`AdmoNFpxaK%KQDRxg#?b4rYV?_DceMf_x{v_K^aa)WwB= zUrLp)_CUixybC)ah1nhdOb9Sf9rzoN_i8YZzc)w*g54=y8Xs102s=^5X31CXOax8_ zIh?Fw1tya6eCc;M2|@`nOb&h(A~3=k#3L&<G#KTmZeb)J)z)xfY}QO_$DUY@_Skdl z#j(cvIjn)zXOeI>p%dpTm@=iM0Lhm&=L`KxWV3p4p~5;T+Q;@$CQv`21t5!+&~8BQ zqVqD@X_u1YihMi9rBC_Z6C=Wr7GARZl0X*=mE_b*xg*(Ziu6{h6M(YW{G7JD3^n{h zIb<S>%p`G=KII$QHE8*mx8L+~jDaou1aTGx_PIASZbFbx_d?eNS?nkeKz(VV?fPoT zbd2wWclcDsVNSro7a@gl<8EK9>L>ZOXb0QG^{KCYXOA0s9fvZ%9xkxDkc?m0q^*=Y zbh-f5=3VFjpc2{?I(^z~_<<Aumjt-Sqzqhik#kUuI>;J>D0L8EDxPu=k2Iu_dT=>e zMQg6<b1SUpNX)^O>L1xfofOOi`GgOSeKj}|PaZm66<B^=7bZ`*8Dluw)c)9aAuRvh z90?F7*+XQDy{f8z^5IbTh#9!bDUKTv3L?xcHi}H4&_&O&K^PXwUOiSniC#I|m-bZ; zc}r}sA!0@N=?fc+Q<;<0O7Xr*V_RkBkSw`ey<s=w`=FF-KcNh{@Q0pP4(FPDWmDYP zgf{-GPkqbyzI`GOV|fQ#C|VO7OX<syuAL7&g&&@N3de}O_@DSjJ1Dt1!Z`7h-t<-a zfP8#D!pr7<k~XQILSAKoB|5F`g<5&k&zRbB>vvw$uR6DK1tzfi>D5;eMOQJlD!2XG zzO5|swSsf_M?U3br5$mZ*9r+Pgfe$>jSt{6i4o$882gF`Ml05o<r!W9EKT47OI5wx zHtjGlwogp3Ch}-!$R}TDTPnNp!Y;QFf3dKe5qlkFU;`8M5Z=5mFiyJARu*Y{m82-r z#=PX)Cy8%i)v`2<jp<AAL6XPOXWKVYmEf`vF-d+NpGd&&*O*EgJ|R$8tQ9#eNmkxo z?KerL&U%u()oJ5vL=hgKQ01x~>KX?UheO|uuj1!f|Ba}nB>)xN)Mn(M_^z4qwOVBW zKVPvF&NU$YB%O9D_@qc3VTV`ZQv1>v;mbv(p;Gm~uD2S)f`}OPb^Bcy@nmVLj$|^v z!7WFp;EUz8<syhhqUf0On}F%NSfowU+=6((L@mW>k-meMzL6?vcl_eg<Sd)coPhG# z7t{7Vdz}*!FM;-|V)mnYscY6l7N-4pmxlxA9nWyHiTswis<8^3*%*1n6DEAJ_v|e+ zT?MO#HaNykC~_LwD!IO3Rr1poEmSNijlpaD=sGNBV$4b>d}4#@7dTf10Qt_q?F;R< zG3PKD6e_1&75WopThe4NH>D4ecjZ3jG<8sKz`{3zinIEdFTD~itd!l%N@8PB-1G<Z zj;F=xpV&PVprWlk<i}N>%HzDhuMe;+t!_pYer3*8hQc_OAh2t^7rdWQiK7GU=7pD+ zd1bSl`zPW&%zvNiC#5HEjG)?Yp~^p#+xJZ>`LqPWlX0HL;R>x$F?FhvZO%SAQpCB) zG|<y-gO0gZi%YKqGi{4c(}i?8RYG=oI^P0Gxwf3P?`@Q2T)Kbp=h{I&8ER8Jq&S;T zQN||fS=%gho&Nw#wWk??nUE;C@CYs*>z|VqFb*Eg=A`btTIw_SY<D3BOa`MAuz3~( z0+Y&4I{id3@)@*&>&qn#5Kg=e2KJYKcK^P?+MCPVOi7RSJ2xGiB&Cx@8H1Wlh~A(j z!U`Ck2{zE)PmFt`TAMhzD_>;ZYwEz&E-sRWjuUzgZ+w)M`qkCIB5yYU5`>`9w#yYA z*DjGAOGZ=ZC`0TtXD=yln^z8Pc*TL>^apmxO$CIKgje+9wNC!iYGab^Ti>g?9C*Q( z&h+uh1=l1mlFACT`M}~6{ba$(K|A#ZDpm*fIg>I(IjRrR+X<l+8ArT~d3o3mHux`| zbyjoDQzB02^R!5DMknFn=byyYHOQ$izI1F&i=@pAgRQs56c|o;UjEW2xml?mw#%Zi z>hwS1Om2$!sWm2!?{XTN(4$hHQGoSFae~Sz99&_M;z!uTkt#2x5zbazGn*1VGFgA+ zu}SSL4X)z$#d%7rAoPbcs<`CI_w+oQCT=_#3H+0zNgsh0g^XkDFOK|6-+Xxry|g2P zV+R@cr}xCm<j?r^DYVdtzVLF~`iWzBv8b)M5QHc&{@Lb}Kqhfbx!Ufb&7{X+i~Q1i zWH!H;E8n?5Ssp`KdP{$<`eWiB<;5d=q%3$~bRAcbEAkB3(6uD}__zgSRZe4v@zmj@ z&}pbliPP9l8&*2(iA_FWtSlbmW8#n^JWy%Z7ww~MD1P{b?^$oIe7%~j?evR%EIf;= z#JKWO$I&MJP#>T!z9vChfm!_$6B#_kqs@LBvEddt<&W*iSQnn!gMaHc)=S&AZ8w&y z9Y7hMYlkwR-U`Wh(T>2!mR_M_s$chp#;-7S&a00HUfQEi5rP%EDchC|CuRO@vTct@ zQJuk${E8dt$}hZ?llIJ6+7NvIM(g;E8zRQ0#Aj|;H{OI3@<b#G!L*X3&Q!#=T4SAb z`)8Ztl&`U+P`xM<<(zu;rqoTt?VI!uK7*$QSA6N~%klZiOI3RdXOd({3zs_aJ<^(f zG&<%cSV$D_U(iRS5|NJM>W;4rMmJ@kO4%Sl%#kZ=7yi`qUJ412z4^&nL6rK0aM8ta z3$96+`pUvgPgU?T4xlIT>?iHmBOAcxtp~?3Bbd4kcwigr3>HmNs(s8gZJnjgi^6ow zWJAZX9HK&WtZ8@Cam5}T2iC3s^$Ib?ukT==wTt?TQ|kBw_C0P2wQu4>X>`-6{KAt{ z{1+RW^d<TFr96{uVaj>OzU7EAxWdt^v4?uuXz%!oF13je_;_fUMbbS2As^*)Ju9YI zXNo*lt*sDA{ymTdU-YT#__Fna3L73RH-GZIj)y}QcxO&fPKh6MYTNY@;kR%40_ysY z@UGqSGtB0pBR%7}9}+$1X8H~uu}g%P4gO(}G>}MFA|~>gYgEMi98rtD_v^T8Cfjy% zAZvHZ!l|RUiQ!}W&TaZQG=bT5Ob`NYt!b|CSJ%%T`WCYL{xZL=vz7>JsgS9ym03OP z8?Ml-#|5a|Y_!O6<(Ep~IcSJ)lL_5x+{;&0^`D`WjYh^ozKZOakT%4%c{ak_OrtL2 zO(xO?;E;LpBB@u#nDjWDr&ABk?ZmW=Z<0EaG$`EOy!fr7?va@%Z;bqdfAY`&@W1@W zf9n@;pN#uRnSKGl>O|O;l+#BtwY%<D7k+W*PMuJ6PQBzzv2Cf;V?M*fmTS^s|LP@V z)(98bb@YrBPnzTtY3(Iy^1x_w<5-Y$T|_5lpd4J@*f}A|kGcjUKLIlE8^FCev0v;H z2bu$vPlUnCAk9KR4h_f|s7|U3X!A*sHmLbK>wS6v*cq_GDB3Y`Dial<0}VGE{HlpJ zc}Eh)58WZpc1Q+)0u3}nk9HR^(#(d4S0+)91XtP&fbkERkvv-#FR*#!tT58>i4|qY z1`RN(wma;*A>z)i_9;E}&?dmeVq_?2yYTWH84DLNY!HF#!dNez<Ddm80~8qyu9ld9 ze0((%OZudXFY%-%*$5rj(rcA{Ws}!E><`5gj($VV$PuY3zev&)N1mo|;#3)21X~ZB z3-Q253Q==JE(lwenAa>EB{nIrhx~GAvfg-~7p$@=a{B`BjNeHInmR}SgFu$@*dhgZ zML+Gi$%g8sFafi1;KP&C^3gW=6%UOg7;xcB{v+D91-Fm;-oAL%iA{dg?@?Z3V~Ik# zw6tscEqpxD)=iC0q(?smr~PLi=Ae)47x^gndlzSxdB4yd{R1@gB4lMjklgg*U+Sxs z#M3G_#D?UdWm^Q9c4b{%%x^NkV@tVBs^B=xg5f26;FaF6U3f0WAHSO8;smxJ+2((M z62C%->P<^S84FfeWfxZYjzyP9HcJs6IZ|wX2n>v1GVc+p;-tD`&o*P*ri_i@dC(U} z8k3T@ymi2DT3L;!ZV=kk=Ek~i$P$yOO#de~RmbfIudy3M!&O!?2upJ*aoN25$%7YE zuWUYL@k>4%RDc-&T(l+r`I2Mw-mzgwsE<fSI<-j_!1@g2ZFh!Ihm<)v{)yD)^t9pv zAN}l4QXebsX1F|s+qiDKa{97w=>{*t$O3%+BM&&n198<lSC!QUT&%R-B)ohw9=O`4 z+kfrfqJ*xnqi^OI@FO*K2fY$Kc!!^Sh8Liu`pD@sBS+d8C+dX!{&jo{Ups|w?5)0z zALO0u`-zRt6|0y0BAs$8g;x(<j??Pp)n;k=RnoPA(wYJ{*VvJK`WTyfea9U7?YG~g zU*fm)Prq{N;@uB6^ac2_A)8G%uKJf>!M$_-x3A?dU5+MYwW)I2()ZEC>J4j|7u6Sq zkR>!ifRnOG&HvF)xb`8mXFPc`)pe-!MdLIn_=(M$yY{vTY>nbM@a@a>o!b9u-xxPE zN1o^s<j5G7Bk%S}z{8<%@=ssl3z18J=%t;e4jPMZ)AEhp=?6Dj9k1dnZ0%be)TcUa z%<)rfjqQ_yO}$nI^FxQRnK-V@GQZI26H(Ur#9if;R(a~@*cLur3l9Au6WtI>dHf|8 zQ{oXkw%_%^P1S!&z%(Q^Mp@g<_O27-TN8uQCLQL@#DpQ?CAvn{Y8~6kpEmhbWy*b^ zFqqocB#idhe#wW1GagnCL1K%!c71l*$2RThd>*dIx&9^Y!9TJ9F=IxXW?k!7-hEdT z^)G;V&Ke~$QC=CMp75-RtrIUF_~`%qt^DGd8k@lPK11QCckJ&GyC@pE>T`J!s~>a- zip_<Sk8s&kgSYaAmcqoW<z?}jT0U#@HC_GLbxyiERyt5tcCU{A>JU!ppMw%@2Q1ju zr(cwdK3F*8WHv8okF7@!X{&4M249;WPZM8ggwOb%TIM)pqk<$q>o-LPX$&2&*Y@gF znHNW!y3xpkkMI8GKl+z{xb=^{ey`09CanL%0Ql>VWpcu)&YJnG{YA^!Pa6B4@gE48 z8}ZbAN*^%u-!2ZF5=|c#x1Fm`Ym+Vl%EXTUVxswU*DpeTvhh2pe-Z})KVARDT6G*d zs^>a(aHJPSY7<I@^bDT%j}6lm$qP<n&=!}{BqtFUIDE3~i&wot$|ebro#Psa2$sGh zB!i5gk~V0@=ISU9l2XVj$sp<EG;PTMtBfu#BPWBslW*lvmVCm^%U=^5rRL@bfl<5! z#|bPFkXLvPod)jSSZx5!O|~|Ccp%u;8Mw0}%rzS#K3>R+XWy|HlfH1u=65lbFAGw5 z%Wr>%*za%p%LmpeSQZPz)8NjY1(oOk-`s@SHZo-5IP3(RW}9-MEGw@;ck+X4+4YO| zk@1zUx+K^kdwm0K0w*mGP{h)f9D74k80)%-kY*P>@(`gXZDZ17JIeq+@-5#yokQJo zcCpfbS!@-n0#pdaifHO!9*~riv0xcku8#j?Q%4^CHM{cnx_NaduKJ$IytX|1R=G=9 z7Bb;lfy`Lb!%3BL7R~U?ON$vlMHs%&?P7##u#`(1dF{gAjk9hnmbQxc@2Pn)v*`K% z<efdQCe3!1XV2`JdA|-hKY@gVA3+8g36dqtBEkd&m=Ge6>;Q?tc8K{4Hj)$n2`2^# z<kS+OecqWpUz_W?@3p#n@Aq@w@i{)n)ZYD6b=CT=RjaD2`{~DVgzVd|S>OrhOYkC} zkHLzm6Cee0YkSpk()FSv_M$GUF(+e=Y;KZk179>Kx#c0DPTI;WY>(&&<(g6*8JF_r zs6FlfmA`h<R{7Ir&{^MtN`(beJz~@06W<IU=>?LkeAO#S2iP|I5>WMjkOoIMO_k>G zqMyu_-G&%z^%@GnJ-AUh1gPI+sTZ5#_K=rJUANr+L&mAAeq}4Ha)p+;_>rk}(m=fz z1YV#SpR>{Hh9htpv*=-eAp!Vq)Xj_4sxa83h+lp6MscING$Mci+N6C%G3{BvUHV0x zjHxc*#P^*_=dXp$#T0!LJu=2d4@9so^2#T^7s>Lm{jZ$Ht@<=@{H@<a-l)<!#Ck8L z#fhC{MOj<8VUx15hnM4B3u!n0BSYy2KT_DlpURs8U%5M`9L3s80%Ir63tJI93+?a) z8sqAlfm*u4h&1QY3^wvRd^Ra>_&PpGOSkfYb&OlvXVX9LJn6X17<Q8(ah!I*q$$6~ zr|Z~mTVengJf@g4x(eTOE48Bi=!S(bv8%Q^Xse%ph1Dmc2e~kr&#{k0#m@~Ebh+U- zOU3Efv~TT4E}-P)#k%M67-7zhFld5FQ#jhZss85IRi&?7iBtx=zz0Ps2DcIeWd91C zeg+o~PqCvLg1V5Y{8~Op%<0mzKXY*eh1yBJ(v!5CK+Xlij0`p;$vgjnt*r{9{Y(GI z7K!Tl6XYu3(u(a0<0OiDv1fa$V=dz<ep4HCV?=t5Ly;AZS(6_;^eYoUNoSrl<@UXO z$(*ES`Lj<sGOt0azF_xs&Wq1qI#fT}Lpz$p_o)+kt8<=8V!fed6Th@EH16-&Y)iiv zPVKBW?PvKZk94Kq@gAS7v0`C;!1?*serrusPakW8wac)mFG<Y`Id*KzPapL#t-h@r z+pK+}!|I3t;^AQS=7FmjNTXK7&`$X>t*q^D>2V{eyb7;PUE5|%dH)eW=c|`|HC$P` zi81{IKYy)DuJ%)yW!`UWu|IarE_H3<uZsDb#I;ZRO!;>svc!OMj1j0BFBsQ(+GJ$K zaOq$4$sA~3!hh$A@RE@K@GP&(`L>0b(1^qV#F37&_!@EPn6K{u-G0*^YsbR&=X@(y zh}up;y18zEj>&g}X}7#9F*UNnCv2CO82wM{z5X0G#s<jI>y*ZP0V2=PlwZGUBd^LO zP5a&4es)v)`r{VjNJF|$-#-1noPKorX&WO?KKwZ*`iC0hW0SV}RZki<o$x(^?#}47 z!xud0afH)8?W~2EoXYI_+0hb;+dYE$meV-ex77cbs?+|z_>PE1<0JA7#|VH1=IT#v z;3(Aw)TO@Gh~3g=JupMaYl#P=%`<|K1I4Ey94xy?*~w=oC<j`2CO8nd2v`j~5J{g% zn<PK7NC>RwDTBNdnL#%4=7V~`q~$<Wjy##c;@$u&F@KFln!T8lBs?A*P9UudU?!~z zo)C|mV*_Q09XU_E`albm?3S)A-taSc@7NrX&*JY!L+}wudAu-qe(R=)FQa{4ebF^` z8{Yl7QT%l-=Ijq??A;GVGbMxHHC5i)E^-7gwa`#E7Fn5;)+TCFdsbdIN966~+l83? zs#72-FRu0N8(UVC$cmk^cwxc>+SU^w<tm|M@g3ya$EKY-rI87f%`zeD3zbzqU3@9W zmP>wRNWN?%T-F87-&y?hBG*2tFEmG1+D)r7B?!+sz3wFAL~Lb#Z7I;h+j8{v+<4=; zc0|tM%Y#hu+i8Nj4A-88b5|@+Ugb`leefI{7Z<KTfLG^!1h@9-B$-JN1MWh>ci8B6 z?Z4VmnU3)Qo#0CmID6|BVO>bveDGJD)WZo~1-!7q_mM^V`TjAywADU+<%MT#nT4|I zYX$wO<@y9C`XIE*yY^%hq%OXv9Y;<on+_WFP5ET<Mix^R-pT#&oR8t3^R$hf@VB;6 zxk-4ElBEbPT~|5e6<StEoP6NLDdwdlnDxQ2o&@}k4g1Nm@@FwlE{*t?bf-OagKK6A zFJYvY3O)}#jkS*PfF?#6i|x<Y%grfZJyw?M`!|$1f^Qx@{BS(lUp?BqzCHd#d!C4k z4@iIgPMHeRCq?}FV4u#APUBK-({U~=4YH-6|EhIV)-L=Veg@BXykL9BSm8$=X^^Cq z?_A@P+Ms%)$(XINKtA>{2-Ii%gp)w}Z)s-pAVXH+LY|C*eIfGni}=zBOmMZ_iK7nl zf6$hP2wGTFg|WsI{^ZuDP5<+sld^S8f;VGd9BrcQlsUARFSYNxAj}3s-gDx7dD_Mp zqxgckNs<dA$D{Uvo_TEO%h8F2T~ybfBbzc}2V;kJ@bG6pzxwK{NUwI?q)^K8LDZy} z58hoz^bWf>5!U_!NxSQgZsa>=sH~2(JD$G$;`1k8eExaLwQDeAAN7i1)o+T@lth0) z4|33C*`M}csu;G2e)F;AH047`Q~NMBPd`apAFAvnQr_C4sr+G_jehHtCw>^*Zj!rx zu>RdWbAg3Rs(+1A)JF<&M~jU)7nIOYHu<hB^)>M5XMM=0f8|wwsC|v&?UTY}{7qe) z5+=?M`_+|-s<lb7^N-5qoys)oPu@%--oVf?=@Xvi2hZrDj{2Z6MjO<}oR?ST^_TS{ z{XSz-_Q9z>vaF5qA(K2gZdh}Q<J!}8Nn!)6mTrOj8M|O7U!rRYzGF{1oUfjdMLB8= z>PHp|{v}Z^4;#UEfCmoUl#LkXEDe{)B!j{`Hs!hfBCa>S<X2p6<`f%wWTt#`D2)0> z5^Vq8IbH#w-={#G*EzR>dTF{|^l6dUQ~g=fz8LwnS7J|Mg))HZI2C>Wq;I0Gv3F!1 zzC`)R5c<Gqhss$RJ$F6D1`T~LTsF9+X+mA+y~vqs75%X>MO%q~+Px@#rfx**c|W^$ z5#Z7o_>em4W8c^vO5~m=c4F(`ViWDI{oUxml*i3aIa#l*;+K{ug%0Oi6F%UlpGKyb zNS@x{qD~*QT^sD?#?njQ=VbhZPLfRMQZKIQ_=+_)bUg1kQcfYD^XCEl$d8}2F+#un z2@L<~NAe1|aV$>LkJerLlJ=^+)E}O0?JqL712X6@Od{eTXFEwnwyN!Wc0m+|YL8Jo z`JP_2v(vvX=`6yS%h&+$@kt)#^IiNxU&7;D7UPgB-|2KVJxGDGMp*xMb%e-q)y+o+ zRk6d9nR6tx8qCBecvM;jssW95e+9;5y8|SHgrMRik>3T+AOe4gE7Lg%VZZrvQ2J8G zXTTebBC;R0gPR2_gV-l26wnqo8+?S;CoZh<oe=riK;SdTk-?wvy?g!o$*Whd0&hP_ z!->H~lba=XK7uRlIXckwm4~t#EafGRa{He&dEs3s)eg#Nox$eK-QAPd$niRI@H3^@ zFZ^8i8=MGI{;H0_qzmww&>*6mL~b<P2_C}QlVcYGIUjxrpzw9k5DNxQ@Cs^O8u(B? z4=YkXG?Y2LlQ!dTH@dPbY}?d_6y*(q^01u1I56oy77i}fGHDDC#qoUQF^`B8q@PJO zeEaim>F=Gms24a3`1F5OQf^E7W|R6MZ^5y(ep)`|KRf|e&Kv-kcM-RQutpG+jlRfm zUyBu2MQk$#pT&u%_ASKHulY`=V~0aIV}JZ~b)}GcUtXpU%RO8i7s|~^?r=Ir$}lt> zJ8yV8D~rG^hR{JC;J87t6Tf{UJz5o#l9>~*u=bsHH=eQF$fiXvaD-EjTs->(m^QF~ zxqyC3ze1sOmM%^0L;0vXnSZeZ=h?)Rzj_o_a=YldVMs^c6_XR&jVtkMPJDDfxOqaC zKHq)=wtj{_8RK3Y*aan)epJq2m$&*TpDBH!emUz$Wp8^hwUf5AgGt&wcWIHUHg4aA z2X&=M4o>k(T^)5uGv%s}ac0@N^kL)e(Jqf51}VO@G|la!#Wj{$XIk2})rVck8>{fg z^mXHw<vg)LzxvauT<1Z<3y=Dfn+;i9Yfr2cTBw6qqo=l8o#jlTQCZX{n-w|)Nq?(v z&Q}Rpkt?UeSor#&F|Z3)`(Nd3%i<qD>gLDT&PGiOAN4ZEMsKR@A2*uQ7XWpUtrWgY zuFEgmtPh+zAm80x7x#PNQ$3ZvF;P{F;hhs5+tpJU73JuA5FJ;ZYY%-?`P3tQz`0+m zNaqcl{_A)3Z+Lf7E&`$LVpg4x7z?btb7O$qUXhQ7$#a-ZN&X$bwp-n?(thwF)j7_2 z)3W{W;>Al~)DIg$Qarzc;)RC3CWmKk-ph&qxBLR#y%*%+Ni|7H93y&W;tP1%Au<Sn z?mqJFx58}~HyJ$p%V1+y@bwpU_o81<^Khf$DI3E(Mzp;tJO(~%66aBPzsCm7tAF$L zEBg0M{Ye|fj;;mt6@16Ff_^SJ<c;l!r%xFd@(6$RGR8u$YaVKWRqM(VbvQ>Ss)IB7 z7f#=$SqO6bS>>g$=X+6?KD7Z_d15D`86P}4zt;a~2TuQzNBCT5uAQVLBk49Ka01PG zQCbUvT}*lE64=Gp=l1vzf9d8x{5kR{rw0^A$&D9|{k2o<D+6UT_9mx{ojNC(<B!@c zcwD#wUa_R(g_uTc{LojQ<)}^MFHMvE7I~^t>Xc1AVmr!>0k??*xjE$xDt|FC{&0>l zWo>Ml_r$S2k-opgw)!IQp@aHFhOwt*=N>mVR={Y1j;?ngQq!2z$NpS-?FpiQCT-;h zN8><aLE>ZhRPptBUkD$c5R0acXV*>m3pY8Qd5nCrsJ*ZWW%;CUkk4_bj5lmJza_tY z(T(g|o}lr`4iKYv<_fUolbFf++4$miqGLvx)k!-f-r3JbyvM%r0pQ-M7i(|m*0#oo z#*q3E0;&c=Yqe^vyglk~9h?3N<$GRiZ7%=7s1tmZaSv$?AqtaX_x4NsA`Clb=pXHF zs*RhYo`v{xd&<-L#mc^R@H{$`o5D`?oXz>wFG9Ticuzm%sgZ#VPjRIs|7-o6TkCvc z5^nqHm|v)`%6_W1@s2)%Z(^YRM~gOFKAZwt$%9pS|0MMv`O%sABaz;{c=AUt-rf9H z^r;j-8ovk{1>8$I&n38IN5>1?FRQ3LSJf(PWxkd#@=*OirE60fw)NC?K|0{}?ECYD zh01p`{C*N?4gPn)DQO&Q+U2S9d6Yj83`Wz+V>u3Lr%fPUjcrS!sYAOQ(!Z&bj%{bI z^Q&NJroM}UXVg0wR9_IK2qXi3C$CQO21M}{XX!Yoz+f{YDQ&&rZeXE4|40dOp#o_g z15sWZ0F*&exnoGX8YRFIB=VGq!GeJdXK0k3#MH-nVZ@P72D<#X5J=!kuy!$SFxW|u zkRF*7rgT7WvTrEmplkqf(zs(|#Lb!A{O}6h9rpfm2k_WM`fT^aE(!ij0MgfRzO;&e z60*(2kc&*^SXpROL&9xf4RDbJ<47h6*b<T+aQ=}WiT2jnXU=VfaRNIxMT9TKrF;5g z{nJTKoULEq+3%lwUVSP~;MCVdhB@LZ_K$qEVISr1#HGxgs__HbA~UGv;{svTjL~S% zJZ(49Ha3$Thjl4ZuTQRhvmk&@>>D_tD);gc_nNd>>IUAjyx|z%>cYhZ*!UL+_L;WG z!oWV^MB6!5DqGuy$q|P3DYDQ%-T2Vnz%#*R9MCG)r4{>OC+Wt|XF(eua$*yYI;e1W z0!$eBg4A4WMTzY%y=&#rj@2b}hNphlv4amquQd|z<2pX7>&3l`ca`#Q7bCg&ReI3u ztA0($5wAYcnzD(q<0caIJaz?9z2z-k$CMICCyNiABS|<50#?RIBF%IpO{2R6a?PrL zP|mL#k=sY1fL{5EA18@Nsa3+XRvuuLtH&5(=!U3-H&w9k*AL^1<n~=KX}5e$duFaw z`!zlUD%ju`u6~vVDx~j|3>!y#vExFtw#sJQly`inhny-ZL@1=jTt8Odv_spL@X>zq z5ndGG^mPt5Fu}FYa}hmbAs4b-gc}F+4Q1mBC1Z6r31bWCs*w56Sy|;3Kk|b2p3M>d zVpn(po>(ldn*lkO2gw)tDvyM>-?|>rzZ`S;7QSOF50IeokrW~aq7)Y$rJ=5|T|ne- zK|D$9xhI;4KXHhI6u@naGEUWI5GMtCa8nM`@(oRC1;6}*iyYBy+Kdf8(fEcZ8oh9d zoV<MUMV{K>odDdK&4okeG;b;pi?w6oNBzV(%uQM^npT(2Q|jW_;K)Yp+5z8lT%u1F z=j3l`7g`lGefyYr>8#H=n9PU7eQ0^m4Nu<FWLX=EgHX{;{k%xNe+CXRJw<jmFHnU3 zbA8|q3Fll<*r=l4pWoU)FQBEb+5=->_$s@0jCm7_WTs5yi6Ppd@{h1>r^*Kfq_+K# zGwQbw%0-I~1({eTKYS)Nshtvhl|6lL9It=ucrer@Mn-1!DwmEyWhGh3zrK~YW?j`v zeWjo(tlA*H_PQSVJx>UQcH|Lf{aMY+E9_)B$I5TJ8-oiccoKEtnh)*QPS>y0TZG^M ztgYG)<sIM5CI$X8@mJ-_L+S_S$m*I5KfveR5OH%XH?Y_g>0DTwg%8erTtr&-aGWBS zdK<TrBh$t?@vPhAdE;bd!CLg8W1DqPp3)LlTi4!+(b|;rB~zWNN%{jH&R4}8SHOjb zu{1KWwt!;fhPM~sZuU5C<qdFcNIVPYFo8F|-LG@BU7A@t6O+ZcVF141&moWvPIyaC zIkBh?3Jqj{p1j5NB3?T6f9jFNF}fQeYunTT?|AepOVwLO(|alMF$vOvy~_XqKmbWZ zK~xE+!EEH+xp&%(>+<ubgu8Z8jfsuOnYEYnuC%8dJ4t6dz<SC(IwnL7J!o#SWL*+@ z%AR|KMzYi&Z~)UJgVMJ={uMt0_eQ&h%;+i%72)(C7s$rR#2s34k<ZFxo_?^OsJBh~ zXFTCwwrfA<<c_iSpFU<%wu}_z&iRx3pM81%M``@XkDs(L@>{?4@BjLb{^0k14u79N z{HTO(zb2`IR^C(S$L9}~u{-{rCREFyc%<HSFg<Dlo|=nE7B=-XIgDKRC$MSaG>omy zrWi7O==7Eif0;~acL-Q#KyzU30?~{51W`92rv8=}TKZ0mTnrMl#K~Y|acm%b#)R~O z7c^ziLDd&;y=T$JBO;lgvN%R47o^YGp=Qjc-beP{dH0;BKwRKCaJAKE{!AFcS<aCY zV@$uBYF!4p6PvnoJbmv)AHjNXl+~n6duPbNpQQfcc!4QCvSm{Qo!u09ohL@_Qr|_4 za?HdoJb^lk8a8A?XM)h)1-fD4vI`=6@Punnhv|xt+>f(=<<n~MmCM{uVVtm6FR1fZ zsPGA#v`TMjN+lu-AN_|xXxdsDmNp$SOh2cu38GFwS=>TPU+N@T`8t6TeCZP}K(Z(Y z9<abw{*zawXuEuuXJnvSNbBSgK9qx#y0JU9+(55cwSz#lduh~OCD>lk*9%kJ6VC;| zcNcqCTMeOs4fKurKK_+*&)3GWc?7SY#K9ePF!I98F=fY?X%Y{lfRA6jVo{IqX~V{j z9pCfg#))+um-@DMcGQ=p3pjad>V^E4r_w?fe8=Ryy1>J)(AaMo=gJeU>N(|!JiYb^ z&n$wJQ6Wj%=;cfMK)*#M{uIpdr%k$`L{7(M#uE!GeVxP2SO5SQC*){r9=kd*Uz=$2 zZnv`fE{!5}9E+8)2m#5N%<GdB42YYc<5$<**t1WUcl<+`mBBJZq+^x3nX6kC$7x%- z<o-t|3*tRItlOtU>Wj##o#sF}^qRQjMIGn0<IoX~IyojT#i=V>`+55tfI#i}nLAbz zo5;O*ZcK%Syw%Qp^^Y3zZXdOuw66{RD~bH6%Y@^Zb#3=dy86c6wLEa-v$71&U`qQ) zp^U$le`JJ~wWiQy&JaU;bOWd{J2H-Z%2WG{p2IIh21bg)n6&w@$azOf_0BjqhAET% zF}8?L;FEj7rcA55`tK1Q@QIdu)E+qtFMVWvLLHQ-7Z=pqrtJJ>%)&okU6}sq%g><+ zTsHpMG%z*=uhb*2UyU`{_ilXLF}L=HLN`YC#hB`3y*lP;9r`OfdEi>t7_R@W{7UA9 z6BlA!pn1{u?lt(v8(=iAcF3K2Zlc&{@o(Cdw|)i==RPqP`!PP<;E?}b*gntL&`y`{ z!n+<}y`a8YSG)P?*Aeg4kNRii*-%4|%o_j+r@mNB1S;@VWH*l9+P}({WBQwN?2F9- zqCdb%sy>OwPzCewC*?eR3Le@ZjKPcL!nggZjnq2_aLEB~9sGz{#y(#hs~jUV?UX{N zq%$WH;m@(Fkm7MDk3N&U{ZhE<`<^@RO|(Tp;9b+K(8?Epes*(lYmk|FNZR>osr(`v zIb@Byt`(p9o*U?VV3SLKm!s#}uNsIXO~#I!A^KF>IzD@|p?)0B`G`=lh4#?S`AUvd z=<{rn;5*t<eBHS=EN>(%fzi&h^c#h@9L}%KSx4WXTl+<i<4=2zf2f1{^!*UFI~v-z z*$}mFBNOooJ(ab3Toeh0AJEp0$e>I)EK_k^cQ{sed^yJaT4S&STmQy;Q)dr03XR;* zG9H-xN^kVGj9h*V+$TxJbnTEa>r*|pGcJ2U&IzgUu(3f{*L$YQU*2|5=AiMD##H<u zkbG#jfvJ?V<i9ppu&wj_pzpYhX22fxj>Q>Ep<UZ=-yMuGz5M*ox&YX3B>Q11gKs&q zcFZUT!W{Aj^xNo&mN?|x09WMGuD+Kg$RbJ?Zg?5vklgbl2WrGiHs#m>I>H_{2`O;p zqwt~I`O>fUtA{E53ht(Yf+M^z!OMK~^MC$Z|M{;M?ql+wv@tRa{ujFclaFEc>jE36 z8DTYgJuId8(%}$~6q<f}RC_%=o%LG#>rvJzYXdxwBIR#Wc<aqC>9pyko}z<B%1zS- z?pbdg4xi6~6^H6$z{`tc2aI?5`*j!Z_!AhVCxZ+c$~iZ{4Q=TWShJ{^?+iP6ynWB3 zci;!=>5C`Nb5X~H#osNzI?;<uCuuLFdv~!HWPT-p1q(Fy&Xm05>*DMgkJH(%T;iI# zKyWw)GPKpHi_P*_eoj!)MZu!j()PR;_0gXR$cy`am4b=Q3Db$q1JJ$rkz@X~3&#)* z58>n$TdR+_25%|YD2_1s5SD)eTjU%6kfaNmERxMR25S%{G<YeU!7qIknUq1^m8D>1 zTA7uoZ3|O5hag#KVec;1;Zb3ugZ`9_Fcu;{>EPsTz6)XXk>07ODpu~JZqFmHeAQAJ zT~H*e{1#&(>*tWZ6N2YMR{FL_?p-`8Xw@!3bufvaqy5u&jM&DaPI>e*@{Ex@0$iUu zNCD}@h9{12<}4gJd<RbkWJv%cDW^g=54b?UX7Ap+*y*|Ks0zM|JY~zpppWCT5Q?7A z)!rZ2Jh4r`63&HS566=-?gFQ>$F$l>#=!HT;L%Z;azV}l^&S{?^+MSG7VnOWm_9ue z4PwUiFWaT&*h*|kj@)5`Y@|&7hy6hyE#CTbd_sBDO(Osx4;PscS0r_H9EnU)PRDkh z1hDg?QhP&O1w|#QrJ;Y&FZ?Y%7wq8!Ep>>Tq7CoRpg!ybke+Q2pxBhgG#%%OO~8m! zzfmU^kW-gF9bM$n&BXSXblp5L)|7G3B7gm~Y(gCdt*d@#x$!2vvFDM7KUk^KWV%~? zH>FsBRteXRYUbZX!=ej9ZFx3c2X@$HG04I_aZg=L=xPM(`;g#De@G-TP9H??KvFN= z_;xWl_adnEkw#h^=__DPSx#FF>Qcz~@kE^T(WvFQ_^F>Z+nvjzyL|LZ>W+HrI7}<6 z@~V^elO7cF8R^gmgj$kZI)%wXbaWYTT5Rvdp*TxN5{<(<zu973z|xd@aj7<rBjd|H zz30Y(DfU&bk-;ZEqQ4s%#4B~FynN;&Q#r@h%3(i2%18ax&#{+{W8^i7fBUR=Cfk3G zG5>4h(ARDXE{#0p^Wn*J<nWy}em%#Fw9dC`#0B6JVx(<;ZGa2yWAsUfq)+w97Wnct zrd}ZTqFEU}@RSKi{tvD`s6_UIYX$MOHyirSUG_6=H~wrm`b2i}^e;5xw~=4&sG%*@ zg*tmaddJW<=0Ej(Bx!>lBh%EM{v^%9TGvet^B%Ue-SeC!KVa1dd2DMPd>GG`^(olL zzS@}D2&kTitd>djV#^%L>>s|CKAhm8nwjS8AIp&Q$yKlagw>XO*n;nMKFgDfjFZfT z;sqBwE6VgoZf2oFeMlJp`N$D*qK~1)So5Bz3B2g+=1cA3&&>KXv4roPPt}7Y&8#Dl zD{}xewHIOo=Y#<r0mWAjj?7EIXDvytEqpO)CBkPEK1utOhx%tzXx5MNjqL_foW%Ny zRerQdyK7C`r7@ct(&dkb=nAFs9oDE=U1D$P`Ukv+`gfk}nqC?{rSg=u+AZt$XAEd8 z64|s1sB7k~!<AcJ_Idh&@d3@~?78qT()OMhtFvZ?7PE6?EWCbD+qgc8m7(c;us3XF z5KFE(gTaS9zL6dSDdO<XMw_zWgBc473IXU)8%nXw(6njC*HR6X@&TA*@PyOOLoT`x z8Hw}=z2O61Y%_EY*c6loooxfR<FFDG8=&B6H|2PQO@*}e#iNOWRClu(_lX}yW_fTN zI_U@CcHBrG<hSqs=R+<({_ImWM*Qy1-_wl|4cJcY=NL36<M0Q_1Bi#tb-=VR=tJz+ zG{fQ6aka#G<~XV?Y~O*gb!*R9La;dfx7lFqNw$`D!0G3EY(YMIaUmZkOD|}BYU7UF zon;qZ8RVHzyAbNvBg!X(i9z-J1rO!%61JD*20xzw@kLw0mfwqfpYa9lPQ>rtKhIMc zU%&b~i;*s>q}jV!xoF6RAc2}dpnRQ_yo*NwS2hkO9NUDCeq-I80My|c2x2jV$CxR> z(uk2eC92xVCmTY!sKj<YJplbYK`@h>a7pC5aLz?2Hq7Js%qvOucP3VNCZC|A@sG4U zWkumfjY2Gs3GDJd_)BL*NnoT+`*-22ZDtaR90X5nDGw81e&#H;Gca03GB74c4t)4Y z*T3*!k)YZ1i_qw#yLTsdV?<bKFRi^8((l7FALUohewIf{2hUYAOrt{a2MZoUDitXs zdo~*`GV3q3$nv*e)D_)@r<{JORU*qVp<qjW>F_7$nlg!`g!ObRXk8C2j9XB*Hoppc z!`HQZQtA~GSReh3FGuz{_X5GYn=^S~lJxOwzGwg8!`qC#r(7tQ-eml~VH`6)vMJf# zf#Y1nuqb6*Ic_7+=vf`q-S6l#o@^dnpJD*}@lC$6z+w>DgxAJNE@&uF100_mb&lF6 zn<D~>LsgzS2;X1_GuSbUR7mi14Eo(_p8#8aX+=I6W(-5qapxU%V@)<v5q|yN_$IwB zCct(KawpS2c}U1CV^~;akbml{ciIOwXaM9iVA6P$Xe?#wiyWWHxWuNWchswsix&GL z@YE#^4o=2%Y_{~Yh0;~R5Td9}gk2p|Gv{6Ga8YP{lh*k88H=PsJv_6hwl7mwboqt> zFfmf(OnLZL66uzI{EA9(?V!jOU+$tya^(~0!6V1l=#}EgDg0}}((M?n{N*Kf#xnN2 z<_r{C3M0H}^Op4m{iBOo<<lRdseVgZ{>M01mr2eS&OduR^@3~C%6i1Q^p$ef4rxcG zV{Qje9!bg*nd}E`r!3v*tQ<LwE-OvtM1TII?fjGrmm9B`xEMjU%In66<3ri&2X>@! zZI3=pfo&AWd4Qe7gC14N=K8=fnHcXp2Tew)2IGG&7L7S0f1Vs;@Mm)a`D!2i#QD@7 zH$ivoiMGhexjyJklw0jkzp-o5Pxx`Z&dRywm4^Cjqpl%lBiJns<x0Dkd#*`%ss;Hp zt+)q1aK@0X8Qf52?ISF8>h1hr;OcU&O_X2t)n8uCt&@jwGMgvD@aO-7q)oOW!K@(q zOTkM|-MTq8x^W&DaYNu7dyxZt``z`D=U2v_T3-g_J|&>AN_bSaY=1?<2RXKIev2|9 zs3=)V_Hj!gB_1|#Q#)VzA(x5#p1Zc=NlCx@sV=BQ-!MnHL8rdd`73Y6b(1%zlqYc= z;<Y(;aO_459arD>MBSM?n9G!vUOUFTFYoVKky?E4gHKyPAakX55q(nhS0VM-%JHl8 z2fk#RPm36Jw5#us$@m`l#AW9rbdt9lF2cs<(v3-!w>mvzZnF*m{_)$4MMeg{>Fb|2 zLgbSTNdf&Y5s<JWGI>NF<SME9ha%}qS=-_t&eOpK$W6%1>+(b13IPJNrIC5VKA4RL ztd8yEI0lnO<S9+(eEY?C<U6l~ax5X3NWt?o^wkwOQ~Q+$<ZL@2X)y0!Wh$R#zpWve z59Kk=)NevWACvBh6rTA2$NJ7q=7mzFN+7?+qHb1=tlL_^lESvizBHc76CK?WjO^O< z0v{wlte=y^4kL%v>q|l%zB%xoyFN7EjXIk=ca3q&SIpdG?AQD8A7$du?u!>+gNA&> z!_WT5kpJlHCvS|v^be8gKYTRD!*m~y`O`4;vQJ3ghW>4J%OY*x0q`Bwdf|69E!n^8 zT!%McuH#1@gg!449%@jyeyZIAyo)l{r|l?Ag%bpJfn}V0o!va^KZB8UT!b({G@wDF z7qmVp;iAV)3I{Yqpp}5jgyY>OQwJ3j5030b$^Bg?m`>!v`GQp@HG=MKHW#GTz<kH| zq4P2)11041s26nZKk%JL{*q+tpA!y$4qOABvb{A&UW2W2IQV_xoZm5Zp!;%G;g*Mi zCINzp*kl0A1cN^6Zy@Mjn#1P>zxtslnZ&_!BK1Ps38V`Xv;o(Jo%VV6?pf@h(VuB# z<mv^;Ine+Xne&)z<Ul_wM`z^_-;0V?I{_7@ftIqcSpWcMnk<EZRX1fb4<Tr#zmVM& zTDEygTmC4kqm}l%@XBurJT~JBE9Z*n#1qL`B)bsnrbxf*-V1YEV+Kgphj;Rgit>d{ zY;R%Gb#k&wJ1A<>1!pe=o6{<ZAtQKBbIu3<Uc`7Evp<X0c4ep>0v*1NKD%isU-i#o z^U@dAM}aV7A|b~Vp|bG(DhT)i?uYzhTW!n*$nA4pl*kiR$5(f>`_jh7xq}LE0AxU$ zzaKsK1&MosA}7b5i%Hw;@7H&)^I}35Kl0p#fjpfQh4HIvkvrnp$I7#J48~WfOPoj! zeV%A>BSxb7h;-Nf@kN>0#~kwUd%(KVE$6weaM2om3y19fK_5c?Cyy-Fk>Yda*tEgQ zTI(k#6Y@Bx;Q7{NoKWY_H%iL}NegA)O1813<7+!fSUn;9#oLBZ=5*RDB|%iV_Xvh~ zbL_csCW}Mrt;^3vE(!C|JH@Ft6E@D3u2H*^PJxf0rMhjw2vTLrT|1WJ*M;5DcSA&7 zbMb<)TQ;tG(SRkCmm_gb+sTu^#1s6$^OQGMWUyjgWKg!+rGBPO;4twsgaW4ngvR9J z*Z_Fb#Wrih#DDzU+%au^@4QyREF|Mt${_!fRxX4yp6WB|cO=TkxjN8rv{Fbv+L!WH zX8`hK9Cfi3jCAJ*37FVH{ghR?me1rH=Z{ziSLZOttitDSl#oy3yLPS)1e4g1pul)F z7CAR{Q>0IfXsgcYxjPF*^`eGuZX9{<yF1vN=sY)b9YCeiujK5e_sV8G@ar#Ym$h9N z+Qb29$KQ~zb9m!N=VRwgWmH$cLffzWyx~0}Z{ECTPUnUSKBk<}mkUGVNghR8dge^) zv59fde${59U5b{K16ix}jK%SRY|dzFH+)3Z+Q1vrFfVoD*Ut8%7dt*(=U@7K`Y<em zF20>!F_QUVQkf)ZlV?*>I-WV+f;13Tg*N=)nXgolXM;doWspzCw?3h~^+PE{1ob#* z+U`-h3gfx?rjQc@vY{_7Cuh0!_GzE?kk%@vMJ#i0k?&W5;@8Th&D^|(R=>tXe^AC% zBSZT@KfrI@6k%S|$8sSGobf?E&cg<8D2mxXXakBLS!0<W1$d_K@D){{GKK<AtWp<! z2EQ`tpZ0s`VvEKNu(T8H;%~C79fWZ`9|?e4`n4iZ{hy1}({E}+h@gvQ&89kTd{jUC zij5Z5%!%8^SKxd(YR2=ePiEB@Xh?rsAG+wT4(Z>Ez{-@E3Ejj<boU7qeZ@7pT4qff zJ>bn)?&gScR!=ppHL79C@DE>e<J#oX(g2}5FdN%<J(9MufqLW+OL*;0?$fFDRe18h zyrh+Nq&$GNKJOn9*8~23#VGNG>jEmFT)EA#9+-t)TGJZ4<Ypf{Owy}A$a8d*UTESw z<3l-DZg8?W#Ri!^;dyAMP<@2mm?jUC5-v@Pr{1M$-O6FvRJ!?$?|@XFB)=wg2rzl= zgC2w5Ht-yq>L>2#cJtZOKfKcUnDS5F82QbA{X2j4-+uphzlPZtKbGOh`(wdB8SasN ze>}bTVLsNz!EHw#b{~3m?vr>s^<#L85yv`-{9sAP`(>wZm2r*oZNk)qw48&(0bON5 z48c7=3Di#l8Dl44QMtLD;$Pwy!LeTnfd^j^aD&4mFV&ND77`402F^}K?}5tzlcw#A zGB+T2&?NO6oR!E84}X%+VC%2XNY@MKJ1*e7c$Tig$&11lH@+;c+U}jH$byVnWC`c) zXYQ=?Jz{4<`qALjjS(h7`5@44h`5Mzr_}yVP&Uw0c7iw;Lw;YGKlOo!NqYA$Uk0ak zBWQq|Knk43heT-^0Flv2Twc;5j76s|$WQo8Ou%lkXA=aiuwQa$1JcNuO&p9L*tQ5P zc+%#PCul=cd}NDWLtFVPcZ0U%imz^xlWuiQPNTA<|I-Fj7Km<&&~w<aZT4wj0_f8U zK5e87nO6^qr7r)qp?<UankOkUi>WT|)($LUXmojTg>U&%XM3p>5&p_<ZR+6x_gGS} z*0q!;9Vo`eqm%7f(jZg%DD<kAbWK_(FqFOMaFO3TF|^GlQtTaQ>Xbnnpb$%+Jf`mW zc!4pL&QxC5LE18Mfk;2PkkMxyH;xaV((>IQ@21{9c=h^C-i;#-@5Xg}df~&^1INXt zFECu0<f%;Fsd9Yi1KU5n(+4~_UZ}i!^(NXnsXIQhcuNpbuSo7k%AVVF%i`ua{^BcQ ztxKQL5Ia!en9>qHRt@nkcytUo>0Fis8H1Nks*ew8HJO)o@KI7UFP62P3oYACmTG6> z8mXApr6FxgBkkc)dY%hbU<)MMIi#~~M-EZP{r0Q*4Sn$eJ7z&5p7>!t5^mkp2RDrT z2<78!3%y%9e5zsSx={2!Wo!?<?ccSVv`yM4n<L=b<^`|$aWRGsJx@FgO$Tr<F80D# z1E^DIY7+mz;Xj96YP<eyqB<#b;TIp={*PEg3n+b9wWRGFlgI2C53wyfp1B|nLHUiW z@vrhWp2<*q<f02)lWbOwJvUEUdV5YTKQB&<_bTO|<1#uAvBxy!P&<%2{`E=dtgTM} zs5}u$UeNVIF*xAK!$1AmnA`(y>g5MX-iZ@jB>J+|JVi!K&Q}}3!xQLi>;qsfG=t+; z^E&^74L|#}u|IK*d2Q+Jd%%o0;<zc|&*#e77_)u9bGH7Hn5WMqb`U?v317Uo=owF< z5ntE@ao(_Bom*aW{`&46?Js$eEH^t0OiJX}7@?#4JjY+|*(LE^B>HMD)MFDjI5^k< z)+e$dj19d(<3(_P@k|=7b2@+Z34k3tGBO_P>*(Z_t5%J@w3$AjEJ`#umOa`9XD&$U zphmlWm-B@mv=9~cNJ~h-ru2O-eB1B(lc{;-K(g8&K5ah7d#P04%;y0RuVYcU;zRbA zWo-}`YNwobpmr^!Eez0=a^<P*B0vBDA-7LhT6!|ErG2VZ>gTQv^>^mEY?N8=Dnq); z03UEYlb^DLFCU=~tn}5#{(R2YwS8*jgfGqqeC3w<`V9Vn|Lj;&HV@T~jdZkYqCq+I z$M6)M)Uspx1P&bS8A;;di&+yyAf*ptaG`+9xjuFi5F+6LE_@s-p5I2V-WW_wMo01F zoi$>1Sr&K33lOmqFdJiXLo3cW8*TQ#yn%Jiam&p~*U|aKNWWI+IFpCAa1KQllb`Ci z@vLi&-Y^j+IDyoj*bF+EhgcV_nSvjf(z4jP@_@+DvETWV4mQzN{>j6+B=M9yxU}u2 zh`G#aBZ$iwH45h%U0SsjoT|(442=9Z8h^_Zwn~}oM*5Q^9eIFveP+_;REF)gM+f?J zG*p-&Ik|L125<2_U715~WDHH)IMgEN(0iQX%gRDqbOylw-lW_a1LAU^^Vk34H~-^b zZTrXOr&T@{v+)0$>>vL$)L&h!bPFHnE^=jcIPBu)D!qMSpV>L>;%n>w=VkpgR|eWa z$JR!q7`eGcZRh~D;JJgu+)@@LGqE|z<b{j_&v1Y&0VS~A0nKA|1hJcZLDU9l5<J|L z=x+m51_!DE)x}Ys&>*)(eg-5LH7|LA>gOz)5};_?#TQcuG<l@bM`n>NGA2MdInd@J z$w16RcPzG~ty~lMq^01y086lp4YU-0@u!H7SsFy8c?1E<2?oH$USqok!OC>cqHOtV z+2{<(^u^GR#UYTur6K1qGsRlK`j^`y(~xX|$U~c4vf>0jpP`VN;uJ|$Hw6c~Rlm_o z`-RfNo2!G9%$W{5J*bUVl|$K~y>>I#*7losc3g00W9)bes5*p0>~iv2+tiPhqPndN z=AGnEp8Bx<lRMb<5onQa%2L1DqTFgdFJR8Jc3cQ@s>++i6sNVz)jE|>`vx}h)|XPn zN@%J2xVoDb?Z=M5z=&)CA>-$)b8g-Iq0036XDt4?N^mjf#YW%n<BJkqMWU&;b|Phb zc!~RzmmuFVZtTVU8Uzb`7YDtQ>xH7@*bPa)-u5zl9aA6NP@ypw0kLz0Di7~i86(0& z*%^1x6t;5pg~Zl-ag+D_a8Z&)gXXeNrayMU`OHOBd=TD__vml`O&`Kb{JqGdBlw3l zcuRNvY{xd>;Mb{2r}VUI7dh=aO|JYJ8Hn7G6E{YuG4>#S6vl-*c2)lZ@cD3zsCOw% zf6IWR?_|LVuf52v539?0?4mR<!88`Ozg^U+OJt!<U23c5aw=^KRS()%zgFs#SNZPP zubfp}#`>;p=AJ*)L7A49<4wD`0U(ZkkPVR73PBi?`R;oNMaqi}hDTY*CH&T2N8g}# z@6b(5!Piw$9}drv2cX)7{IKgqXXz>X+D*2A#+EIEAKHu0hN1xe4{h_nY8zstd?Ive z`ymaJ{v$tDz?^kV*$1KJc+HHGrhI7A^))Jhl=SI4hkwXY0Fvx`p~%?8=7E=vcp1li zddzZ+rXG|%{rdGgHWrKt%+2#6@%E$R_x+Pw$2H<(vCs-15VKK2{yrNiZie(Jk>qZK zfF!?_(GAV}H|qZi+|f}xAb<Q=Tg0yB8#|2WZj7)#c-gP5<m)TY*G}5-E*m57X@8fE z5#xX6dDlP0yQgfBJbw-i=I57uh1c8-n)oL&B}4$4YemO7viTIJ>rbWAMm=gvnrmNi zvfe^i|ACjT{jUADe-mre3-}t}4Eu|lf68g`^J1@@r9nnTmuE`g0G>ExK`>*IbW1E{ z?W}L?=7e@uw)%&#ovVwF-4jn5)8!;BkM7&kci1QK7N2csT^wn39#e)WhF1P{4qy%n z-*9RRa4WM+{4=TFJ#mBwd9$99T>Zt(JD)P8ji;4dPxR|F?IZgIjI1xT3%wOu(Swq7 zynxR|w_n?0eR$X<vV^(J8XwekUeGVBdiARW&L0=M0q;*s<2lt4GTKNPoPWa?yK1|` z2H<QAuf3GgWBzPMp**bt-4GcFz~Yb#8@ZtG%?Gzu)QQJWvM&J{^c>$vU#Row?MBeZ znOw4oJ-s360yOeMRau%G6a8x(8l59NAN(i2(tq}?8$I;}KIN-FX3Xg~?SH#H=o9y( zUO#jkscQLoA{-2K=*X_zZU*UN-W<svK-&D!O+Nh9=NosFQF$Dj_0ORJh3%KD@gk$L zc7s-&&{0N(n<TIBTe+xD>&nb|bQ<`T#jmnFlg=F0OJ~njgtI7QzI?9r!ur=I%cWJ` z((<r9Hbm#}O}%9Z=0gUi#&@5~s*liL*wu3VqPBBx@Z9+8uYeKn+?)8x>611_=$}7D zkH2>tBekYZWiMU(DXv`SD$wz{e$(!^I<9lH|4>0rABXWn6n{0^JAhUe&(M@idudJc zo~Obhb+$B+`&gQT;2F-=$xobVr;edVQ0lp~@@pIn92Wu(Ja;~=4-R$N;1GoYWP6?f zVVl116Y1bGnEP~yYs2h1lLMKHvP=xL<$}#li#qb>5BjDZu<u3=>$0#!5Eo{q1U~fg zQOyXbEH3uAz%v~Ko%$p2z{`4hD#r$_Om^DD1DfXADlgyyKX<YQPYJ0C4fzI^3D%_E z%4NWnW;%w?z{}LKd5fHh&nJ3E^Uw>}KsGp@pP~qR5EwXlpuc^R!{Ax{<Q*P0?Giuo z1lc(gPMMmd(bC?vtWCY6qi+dn(4}9g*t?0WaSrJ;OL^B$l3v@k-1g-++`xyilePjx zf$?E%D?w?PCM()-U40@uAM?=02_Mw4H?_j&PlWuhzYJMn6t>M{6K$itIVP8e7Z*M; zath|e9n^!EHi@?=N7Z2Lc#*7cO2ePu>;_A|vWAkGz*%_o!k@9spYO@=>u7KJii<qD z;b`A@5daVTn8BAr8Qnnf;wJAUQ6}mlTjbLo6)3h%9b?2hcV1LDuIOjSo^XC`=NWDO z;y_g3BmIg~xY*?V=Xu<nQGiuyBcIbzVV?#HCwQ<@o(mNjqLVGwBevhkO}z2~)p^8v zk}$iVmQEJSDq`C>M0Ha?4&;`so4ms3{Xf(@{`KqQBE#|Oqu&zpgJaIDd6;aIcIcEx z#@+C<{Gfecw@zZps%&nA*;iSdMOOQ}=jxvXesmZ-dM5NMtd$(YBk^_QON;}^c(K=d ztCg}OEiAli6KJ~_rQOHf_u?V4s~2{XU1h|koOlO57w3xMUu03N%H28|13R|SNo^O( z3)aZv`ABI0Y#*&%w3$8)o-)Wgu@k=x59PyeLTcLfMcdjt9w4G(Ip>9dbXqP9&EiHb z07DF%P2!{)A9B!+u8tE)?;<<;2<IO#`h;UM?8V`{u|q#Z?m3rDdTe>vw(vH>KfZ?j zj!lY@A>6nqHU|0LA~#2jCFf81LKF#nI?N4HUrPk452PjTSVjTHx^td4JJ<}Jqfe=6 zXDKu$IoEli<Qm`&ze*E11rSCXB1`ku`T6vwzZm0%&-3SeRfeZRc3#m2(h%njanP4N zyFrqlV0CV#?~R}Lywu&zkrzA>;MZM0^WA1_E}Q3Ty8@AF_v+|$qFuBd#;(25Gn+if zOtD97(i8E$5;fxL8=U1Zl<|)htSKLh_N^16upPUpq0)Q-Xov1Wi$cz<Xesv82>vw{ zHy6jzjWI}5))|Qv^@%*KYP>wglYLNm%uTA)^#(EyT>6dX>LcxmL4$k9B7CH>y@%#p z+PfiQOio$ZLU(M(xnHI62_73h<f)K8DdeVzKf#<|7jn`LFFRY^^ha+JnCc(iSkcDW z6j3J2(9c>fvcWt2orB;nPY%bdzmStL$9ZHAuB7F6@^F6WQ<L^KNnNBJ{qO<beZ{<T zjK}CTB#Hq!`vbmnc%j>kD`=scdZeG7<7mtKb(Bj#;_IkS`Q;$>U@s;q^eSX^jx5z* z0kuKKiR)0>IAycRO%ccwe_S0OYeOk20{U;?$=Axttoy@}PVR;)Hs?HO!P8#qSK%Tv zJf#`BV>aV>Y^F}M3*LA~KiD6ksU1cZbztu4*Yj#W^#=Q5|MHBS$k#q_<6fOP7$@e@ zM<11X7_=OJiQc7|r&CcaRIOJQ=~$MIN|WTb{n?u0XqB!@+Sh>_fZ&S9xw`taD26zA zg~!O^#_h%j2-Y@(yS%Mme#$M)*b_TgZ+jB7l5*N>xA=$aXp;0?e?%W`C>;(rPWb!N z0R6;|Pudvamc<|PvhCmbiM)RaXk*}y=Cp2P4vopao6HFy$6`O`-P&)ZF^=#U<6B|> zt|}4Vp`hbk)Ac+-`qH@P#!T(l_!B~b((lg!Zn?H2Yj7anjgez;LrXY^y1^<m9r#pw zWFgGPg+tHx3f#SUEtS+iXA$Cyl>C`cFND3Tl$^npAmV}@XmOoXybE;qrVFP`;sh)2 zjDOBkB%gi8qqhXCw=BHgvjEDYff<~QrUp<KPx-xeCNeL~41Us-M|P%>o1KsZ1ur7K zGxqeY6CuB#LD@l%!4uqi$4&fR+@VtRO~58j9CoC^G9Q8rzIN)O&Hl;)4laVZI5Zh> zeDSPz!7O`GsvN{E=uF=|@Y7BNu|FT>8B+ZanIrzOxpb}|uJ)9NBNyqhQEi_<e}TOc zRSfA|eb095bN7}UQr46<f!xgx?dc-c#fulce$U&*W+z@2H7<0(({7m`HA9Yb(bC;~ zDou6lmh-7pz{;0Nv=>{o&Cw?sU8u>cNo7ypsKm%EOySH$%Kw>5$VwN=ln#8v)Bi$e zK5aKGT<z@`aWkTmN+*`Wou7{R<*y$}*D>J*h*0-W{^sjfPo94Ly0&)QKvQ40J>wBy z@@p|J793|L+rNIz#SggpP<)^r82@`pA7zs!i%mB~?w<Vo=U<a^VZs>J%E~KpbUX5p zhn_t2rTV?Kz7HklqWn$=8ToC~zTGr+5$D2$pCIPK#UJzZg^u2>Z6A;WU!Ks{he=+X zoqb9>i{q@1=LwR;FA#+m&c%d}M5m9TxEJ+~XI-<4l*SBs$y24uW5-PIo<$z+NCyg- zj*E^@(XMHIMBAm07!$Q)&*KAQv+a}6JLp#a?MLI9?fY(w=tE4YUWyz`Mc>*0X{oZl zZP+t?*K=c&i(eYCVE`k(_G+>&8Vdrc!fC(6wV@lC0Ly}TFwG(tKA0!>LemTM(w5fa zAq@-oIKJ!@Pv$r?s`wjujk6|g8{eB8#^d|#!!E)N|L_J^xummwA&uzlcoEl%Ns4ey z(FvINjyg}{Y2ynt$dT8v!6tm(|3jU!N++|Ah9wE7Y|_c5h_o~QtsZ}wu^wH6Bc?H9 zbny(jTW4$Ks-4oL#DS;p8Ax|rM810c`pMU?{Q8Vfjr3Q-00|vmru>xP@|3T~=^~E3 z+@-gjG48nc*K6Dy5#Kljw1UJ&&gI=SGxw=Mp6-N4Y%dFve&97$cv8kZt>;tT@7bJ@ z_ABC1wG$~rH~MNX-#g-y1kau^ugeqL<ta4o<lk^S_Xf*6G4k@Y8zeq?$JY{h!sFK1 z;DwkGLm~LT;~h!*qMp*IM`ijbp9KRp@qGG)fe8iRp{3nT+PpVFYLk$lt$w78@CB&U z<<&pAltRe#LqnyqZT`fv{58hWw;IR<oOKzK@X%jfYh*11d^VIFYsfO97H^QtyPuMr zFi^tcTWJQ9$A=Bkr05a3_PFw@uB9QJp+$wHy_24G7|x)4Zm4!W;o3o8WjrN#0ZrWJ zgM&}UnvR;Jojvds`oBLzk8iBPGV(AJ20N|qDX%`-4G;VlJI8hcQeRYLMNWUN_x;2U zX)SqUN^DM^jS+MEOg|a=k<<?flBYk^0T}ISJ)V<tc#gj`cG>^5^Q%fe(YA5huU)E8 z;yVD^L^+h&@;>1fIi(NHeX6N)R*u|2an7<2#CDu;cvCM=Wx2-STp44p^c8To6W`#e zedHY<8N)=~(F4^~o1{&^V}6Lu&|&8db+zxkk?GtgFX;)V+}+qvXZ=e_)pY#w%4hh8 z9Wo0e@5AQsS6B6xpMABwg2TrRFkQnj?vTMgG0&!u=iqw|VrWS(_LH~ur10~cW6S27 z+V8+hYhY}P4b@jZ(n?N4NL^?Nym-U2Rlr2Qi%jwzI%pAl_~8@(@$Fe(tel5F&{1OP zy}Nn$lix3*T%WWt@*Dr=-~Htu{lV{f<@uS!eihTDZ$C=Bhfj-W?xxZ^&mY!vX6J8Z za-GG0YbpF~rH4%Zwy1s&9c729PCZ7w4jd6Z&)}eZ<TgZY2hIr1d4{jK^d_HTz%yxD z56uK~2MYYDf>8&dK`1iu{p=1*$L$O-U=zF?EFAB>N+IPJEeM>n((dA^KgpYg1ML}F z1R?JR-1FF^FM7Ov%VNa^3wLyGp7MfJ%AbFZ%Oi)o+uZkt)*ZaT3qO6Jwvuk;41474 zV#Ia>`3`RFAZ{--$em=R6*AQ~*3-rlSfg`-5<wpF)v$c>X$3OM|AXIQ=aNHyp{sn- zrj2lug_3W6?mJGfG#9?!mCHo|Frkg?%SZW_pZ)fIDYgJ!UCy%SXQ1B2!`dUdUWf)) z{2ayI=JmBbH(xrjDR+7DGz5#6<mmO@yDQvH+efU0GsOqd2bJewqH{u|VR!M<pYdfC zS0jb05n6-&DC8m{O#^3tLg$<ER-cu5b7insT_hw)v!%-?431jL+Zh0^txz}i5b3C+ zayJfQBl|j3<<KMYyLgRJW+8!4_PpkDd@%tXlV#ynLhzIye0k;~g$orI8a}b%BJyw8 z=<unL^1&`MR=f!HuJ64UM8NH)p?80&3XN=lDeu@lcNx<UR;s-J<m<EA9f6ciP2<-H zrmYK!PLzAdqqR0?;nvFw*Ey0dmBHWsvR|d|JCEW`+phme$mBwcOp_WrcA=FfB@V;R z7S_p3`s<(Cc=;W&ODrjxwY2<lW_$UopYd>GRTf*}SzDxCn1Nefl957XpO~gB(js?E z<WN^TerSlNviX$|E(DZ+ERd#$ALXm@^A{Q+0Etrvs?U^@sQ@POg}o&cZ4||K94XsA zMPl9BP{`owFSEIk3MoLsh5PZ9(9jd!!sPJDI8p}bN^p~PmdQQhhg&v>!TRQ+6uk0o zoiw$#zMG98@ua-WLcYAVYH@|prU3@8_O&$)IS(c@qLkIbaYV0fS7ASRj?729FdU|S zI)23M1rDD_+tt6M<DWw~^B(=~=Jne*{aT%|It%{jeA3QM2IXT%#5m!FSaQo8c~Xpa zH%oG!wLF~YTjPP7yKV?!#>feIs`(lV>jAk$Ds73ssDpay6Niq}xiOrJUFMePfi4-F z+9q>@0_<3qBGvr)6R==%;mVUF+(zFg6^(<h*(i2X#5>LV<Vc>B)o&r-`$iPV;pKTZ zFiKb5q8@yDmt2|AA2Hszp~4>;R5y^lVbjeK<yAUq>Tk7x=f*wH^7U~mHX%d)Vw^z4 zMmF1Dc~VeRwa&k`--9aUXFcKtZ{~d+K$_A^5>^f*K2l2iS(b2UDllbbcMN5t0R2?S zL;mxT^W~5+6u$`Tzyw}$0wL28vpFptZ4Ll2&I?reCk;`!7EXPXTA8t-&4Hz0FW@~? z_{5WQV;QFJD5|%8Y4wh;Jkg+S!cV%}rcWZL<10**#@SO_*q4pT`=aE?0F9M9n2zVb z!&7Y9Ge(s=Ht!gca+s)E)Z|0aJ-H-l2<O;voI1Z`K9H|1(6p^_jPuY4=ioU4g%jGR zBUL#ufmqO+INczSj*anIb98N74U>+|6%AVmuik-)e^8b<{~;CaTjsO2utCw54n>ny zCad?@Ix)4MG1ECV{m;37>XfxReYSlN{|~J2jEAK;GRo&0Fv>;BhD`<&eI~B;k+t+Y zCM?Iu!3o^*8#)?b<8tWcqcmbO>=fDrOi?;^)Q2>--|-iCsw3gh6-oT9Yd;NrVeJ=> z#iOu%<2%}ozusu>2AJ*F<hi<;p#S<`{`P<R%WM0`mOp7@q|ELS;N~BFEaP8g_;g}= z@!O=dled05`*MD?wa!3ikhMDHbpOKt`sHz6oY2AXZAm>HBuBawu>jQ*Ab?r04g&4d z!I9j+?m5P8`?P6E$Ve%CoJ8Eo2HvLZ;u?@5fc@j0XCAk5qXSyL0E%VD1X(Y<c;W+i zUuNZEGlxM2csEVliS{Xx`y1Xf@`A;ayZq!S6V+WTyAbp1D$?(xbq#Vlic%+Nt1O2T zD=0|@BXx5?Tcxa)ql3G{$^ndjCSj#@+-YHh$Ma0qfYfiRXN(c5*lBE;JJ|BD?}UeD zY^YA|xU*O?_$W1V*P)A#tQuU?AJGHE$fZ<L`JMz^V9op!FLqYf>KL2JP*_q?T2|+# zwqJF$9R0mRKpJ%N@>yH%rigbQecL<N=ghX~$3?wQ;KV=RFDJ}tHzn7uT|9C}M;m&; zE50T}6R-~P`A|uci;T*zP%ed6Z;7A&EV6QsZeXtLnNWevLT_xawg`M|DKC>=28{!* zwaSo5T6>_M63NPBy+4_^?OCiyXU0)@rO&zhj~)6mciLH+;Pa7-Gkny?i(Tk=_cJdS z#)oR7#=U&ShA(HoVXS!p;L}ide6K&_Ahu@l<fG=^GISE>@PfuoNyma?)C&mvExgIA zuer%Hgz`W7Ij%ZRR&GtBl}z?XCwKA;g&<Koeor0iUU=&hKzrrolOwTjX-LI>(0=|T zuaEaTF4MQd+lEcdh0{;N+t|dpboH(J*WithEr%ckX?PhA)B$|?n_{l%_pO$`N0ZbR zo_c5)@0welSS7G{$qKi0u9O5*NA<B@{MyAab8aGL?9nDo;j63ug|5_($da>T9;M2^ z{4?&b&9V6<=M`!&?OSQaJ{^$ZyLOO<<I+tLWl^T3AK#C?jHiXuKNeRV4k2j{uk>ei zTU{Ive#K?&5nrHDiaEASzWxw7wq4s$K9cYpn|#MX#x2g-JBQf!5^I)+@G-$4POs)n zO>(5Kwbn`B;>w(A0M}1yZ!2cwOSwYBto^mJ#%^Uoyky%QC$%nqH?RtG@@ikarOjCE zCTcf79AD5^810>M)L?AZkA3<tFQRo0=Hls&UzXD<vTwqs+BHv$c^AKaludu*7Ce1H zX?|6%k1TvcuGqj04aSWrazj%eQ727Nw}G|*${9V!hfspk9DwF)dOVEw<Q+ffd;5&I z#=PXyAo^zKVZNqAJj}s+NX-3JJaOgYT$CqD{Cc83!g>D8_vt5tD{Zb#eA>>ZXO+Qt zp?`Ms#h+8xHXg{QPI3uq*CnbWZU0+tu21b4k*-RcYmay6)4IY++dk;J1>dJJ8;y3< zh48Q_(tJwiw563{M&2<bPUt6h{Hlu#sW_52tvGy?800E3)WSo0DFB<=Vn8bwZkenc z@8uzgytHL<%etr}z+AbV$2?Jgal9E9yWypL(}Wj=^5Okye6ZIC`lz<lFB$JVZS3X= zsDR{?Qj;+Iv|Y4Ip96<XD`(c5@HTFw{$dz$?2~)vE@h70c+y1M;P1}8`o3!ib%?db zuKGmgJ4I10aUZ1WkoAS}-XpwAr+q4YaJ4%!L~q9mu+AUaR+-<sS;`t9YjtBFZKmou z_7_$P%4s_%a!SH}K9Q3+U_a^a4kS}RI*-S`(2)jOmlnB{BOT*CtbtMI@LCe);Y|VC zxruYw&HACUGMk&kam=VwVtP2Kn?2GLy1)fSTF5bAv4Pz#%#k=(=7SeHUuoGVv9UND zd#;S8JlzIP=1Fo0g}!`uQ!9Nyy?qq<v@5itm%7OVS}XhYJW=?FJIJXV1KZ6=ec$oK zk-55kmY4N=^LCyb36e65tjaW${xWT!@bT#zBTsMsj4}PAH%20OrT+x6e;KIX6tex- z`sqsq`6k?tm2RE&$HM<z!YOM4=c#za*}>GI_(;O5f=8Kx1Bc{i2Jf78FdM8d!479{ zfCOkvy?7av4jvD1l*L~badG8@?-L%M6Lff3KN}Zbm>GoLzwai9@WMGMN!*Lx7yLY$ z$sp<g^t-=beDV2{FTVWZ$(LV#nHRG9o#9;6vpADR<Z)2~j`|o79i(rOLs{f$uyHZs zCX1T8h?c&SP$r*n?c&Y}z+k0JPEZC3({q2#hDFi_ybbX3PhjkPG3Ko-wte^j4uLw~ zCx!3f#}woujLEYEN$OcoMF*!$TkJCRYhTpXo#2C7B1`Nfm`1BZU491F1lUfzy9uOB z>3=_A77~6Gc_?@;4J+H=g^Z6ym%h#FfQ~9)ZO-kF_K6p}E*9V2>kB?UZD7}M_Mcy| zp#)!4<-D@w!VKTg&&sF#W4+kC=T*CWg_Dkoh$WaU+jpB&l{y=h)iKt*_)&FqO}#L4 zh->+pr|cq&f_=G@X(qHZ`cWR{T@<T(C%t~pyS{_Q5#AgKHG*C*hV|>*(amG6_!c&F zF`!T9D>L?Cbg3MUfj7YB4yl`tZf+=~#v$(l&qW#ZSv($hhhUhCq}Ula;YqP&5GBGv z#rm%2nQRrmfV3m~*il_%EG@~^kLx2|T;1OgLy-5~8+_}YCtBX#@yj&80<6qAMg}tU z<wC_V=AUp;%oh2imU_$WUl{tIzO(;=<JiLAJk~do%QJL_l4LvwDR_M7mxY0@e<eQJ zN`HKcnzd2<!q_vgQr%P*`ApSO3eSnnELgI*0>bvh1~+<?1-L9ybQar`amEkoMfUo+ zt@YLL04_E5nR2ZLl=WZFmG?YS6Iff5AW>ULOW0F}ZqB$F<wdP%^?79#HfFUS@D!i0 zbJRj1WcNc|OdAU<H%?GknQ<(k0;xSx-*fRxK}_m6&&4UVX&d?njOXgSf5__G)5SEl z^F0BHVU;vf*?}wv>cv-v{GVmdS5URiJgU6ogTWR@p8BR2Et-WC7Nd)D$LFb3I~VHh zFCk?jPvvgRk8dCktkAi(%EcIC&#$KXZjRvF#sF3)>B>_#u+13nSMBmu8}JA{X?w;~ z7>@bGb!Ev2Z|sU-($uCSYg;Oxk_saqlYBLs?%@Tlu9P<APFv~6zQB87bEZ(M`ehbe zF{H=0fJ$5XFfpD+EY8hwQDUj@AYsjr&5?PE#IFJapwGBD;wH&HITB_Fnf{8r*c{sF zAB+uWWWYW(yuDI8&lW-W^A(83q1x%&eG)C9n?L#Zr=dvNC+}9^bnRl@t{s-Qb)qO! zE+B`-!B1gAva}!2qHW`(@y7C|lxR;cPM-dbWLqzDdt&<0{3PL7&#jZj(%}?G2e<Jf z<HeYl13B|`jqw-zA#tSrvG2IZF9|Vz)rTeFlMnQ#4(km!V~!hm>eGu->e8R>r`T>} zi%jTlzH2hI+p?mr?7@SM>eyFjEETB!;W+G;3{_s#BcI!V`cIyGAXgvlBo8-JsE9qx z>_c&6k}-{Jxv_+j>f#Nz?T5VVl(^LmwBkS_DSR0q=IY}>GhQ@iNSnEq^>=8|+$X@1 zT$!K{-7qNx0+U!ac9N!aaPe$l*B0%c#+#8L=+#G<sAYfw&ky69NqP?sVW~GZ#3$g3 z0SiNm`Y3l~DzUUFQ{%bz#h-;?-Cui!)rF7pqR04!{7lZTAVlxh@EJPz1oXp~^T4Z6 znkx^)=~?A&{o&WH<<P;+iR}ZN1O1_Ce~M%K9>Xtk&~~*=ctlUGXTa^48J~c!GD=4r zljZmiYkRMq)Ng;nxL?UecHq>@CvRPME<dXOOd6k(K6zt=M-YFXf%MxyP6(X?gK?lw z(%9iRr{z*E%uoN6Rt>#0a`v!ln~ps0eZaKv5Km`6z#kMwt<+V=OAR=uJeT?h6n^B1 z=-(m34^ya9br^pW`nx21$a2mO8KPW>S!L^TvC?kXKF|5ImscTeKaR9>&Lk1M0+tSS z2_ClD5lku$BnL^KLhvq*PeHg5@jQ>>8F>1R2^R|u6zcDwl7RzX8aw!WAIWZteD&2= zY>s^K<g@&wpTU;}84EZsupz}oHZ-B--v<LZxp%w6&q<I!^)QILSp&n!kYI!S8PL$o zBIc>T8B87L>ix{c76m8E7cYHt{qq?>QW>K_F|_1N(1e|h;i;VhMrJ@if`@$PFZ$D_ z+}fs-p=6vIg)-R>9@=@vap)~X;e-VuSbM>_i{b=x`0gZ-O_3~WoruMgwt+Sb`vDJC zs1lVVPCzlL@u6)p?NApRBDT_CLU?g-A<i{9i%-w(Ysz_21hO-qEG=_wCQXB}3(zh? z4bJevKGhT=V?(($H4iN-MsBm6bW-M{Fjd03(|Sddk}zrUL|()1>_e-?1V9+U_)9<0 z*=JwcuL~e^@ziDVAXhj0q>Bm8v6Wc*O<p*Mhj;<wrbQobt&i(_Cf~<#>(dk70E_U_ zv>)tq@!Tjh$Ns=4CPW5!XimxK`{3j!HG!4%ioSF`k7;CjN!E#Lirgs=18QumSo-n! z@c2&A<cF_#$C}%D?||_xF|Py2%i~;o=$oK~PWq7Yt@=q|6(T<t>;qhTFrMWXL8SwI z7eMiR;twS)Zq9G1K+hNuP10gpPB}9Px4s%URmEU^nW%Ip)sdoq+SqvV&Sm;7iUTQ| zB#BViW2jWu<;NJM!mrS%S7d;Md3<junJEL+10$>zEPzlX@8bwxD@n-W>70=dd>U<T zA7&9g0$=ShV8M_0(T$S)VH{cMM0327!#^A>4B<uRIv?cc-?4q%dT9tWa2X#XtA>is ziHilPZv{C15<2RJOMnaj06+jqL_t&~i8*2i1*YO=b{nMARGIfwU0@UYSTF`@E1|Vf z^R`Eyaj><Qu)+6(f8pB(om`AjVG11d@#p={f94g=y{yiS5o5xL8NPg|%Wjxt{DxV_ zlFXb(j72`7=BB5y$oK=<NH1Gn#qor9tv=zkB2QkwW#g2MMs6o?fK4a+egomeHJ11? z<{ZRv9wwu%D)_`jEE3o-hXQ$$B@h0#YU-8G8PNK`%Z#L*GFE6u>Zyau@RM{vt!T4Y zfs0>Q0wyvIPdDv@j?O}A2Vp!R+=QNT-14-*^V>Js7<uu+C-V534f<(sH)DI@Y3?{d zYU(AUjwa_E`-<mM9C8%YPu+!LW0Ou(j>8ushjcm?w54NO!eTTDRQiX1r6I_H_3OCW zBo~{3Rlf3djG1Cf{met#Dl7fE7h3Z3us+1dQ>ScmoEJ{rs2Hk;tktuWYJWdD2R})k z^2vGSvz()l0p0W9fa=%?FKv!GzNkMh{TGM6=y<Q63s>JFM_1=p*NwukH$d_R8TwnH zJdzG?83D(f*}2-b+75=uWj_snWrok8mZ<Gnn1qEy!B=1HnX}YIci`2d^NvppL(8~O zr1X*RBNF1?8z_-;Xbq{-seJ7p<1BL0-(54BOA%XfxY3$bfC?***~&$Zl~Qe`{1S)A zjX~Wsf{K36MK&M6`czEm>-6a}V>0}OdCFJi<gE?jm-t*_iT#1?Gj9U1DIx)zBw2YU zYu&W8ofbi__6<GwhhG~{nd~oVlA_zlpj_&9KXa75TDSs-XLKw-;kzD%(1m6tRof<d zGX?9VnHDnpA$HPwI)I6K=fJ$P#Z3uham>d41li()n|=jYI@&q>OV7GZv5B_h(Dz;Z zi7QTW%BGv4y|VAdiLzuP#jiS!ESZ1DfGfvS#)f7#v2pzSE&cS*Pu>{$jeqrT|Kh*@ z;qUUA?VH|e{{dMl`)Rq+?-AD7{;1)jPD|UtaH1JNE~hkn^K3hFu?`3btz@Nnv;;Ix z1AzHDN*VwbUe3;+5@{gADJVNQ9w+gyX=!hrGAjCGZN7o`fR22mE0!`Ywa0n59hKoV zXOR@%r2@4p5h_Dc*{mmD+|*mw{|9)sO;aX4X}ZB-<?{qJCqquLos*DvOl}!aPTXF+ zsn3hgp0jbm`#;z?xT8If-LW|#f8Pn>!nhkFy{JntR1aVodcgU;Uw=OD1)CsW=IIch z5b<ddU$p9=6gEF8%BD!(l+TK+7l@_V7jXG#tdIS15jZ-C>texR6GgNoawo83ssuRH zP*&@*xVzy+Z1?l@3Vh|QZV8;RtBZ-^#Kv6wOD7YrPDZ1!1`g|7OlHvvp9DE%6CSeB z+sU4(f=!-oQrOSh%tUWMj;AYJeNvZ+ZrcJf{T#WV1JPWR!=o3&oqVj*&hk};$U1T; zvhA5Rp{c&c>I6P`<*urA97?Ku5gu4KT2f}x&=&a`1`B3i;`fG^<M|#D`zae)z{o`! zn^Zx%nb3!q3!QwYkv{8F5C-!4WpoIy>LZ<)LHU&I$Z6p89N)t;lUpFut}e=*ew3JH zbCNPYPT?g-`Yd?#%WgJlSNX@+D%H>`Ru)-+XruVcmcw70v+;)EU1-SK4Wtiz4MzX* zNZ&<1<x+-D<et6f>uBPB;BouaC%&iuA!GX=NbG3e`t%N@c$pz(`Xk@*ub99}TR15< zDU;1qXCYHnsde(Sl5v(KiZ+0c^}BcoOvpBVMf?zyu1Mlzm-wl^OC7T5n`H309N^`g zd@mTY&{Zb_)n_lch~eolL_n4vUC0}4yyFFJmG{t}9V;kAl)$9QV?1)fQX45#zdivt zDdPYE`pZ+;j!oCtem7)!>I}@lcJTmB<hTFw(m?oyHJtnl?8p;dfh)eI?E)7_hzP%T z$Fp#;KiAIKO2gzXHZiYBBRN*c>_hv8*mU5~5PIZ!j2Hd)X*lua&u8NpzND<mApS0v zT!?0o86Ry~y+wB1=B2@*<EFK`YX@Q^<2!%A<{eAkd0HBq>i{IV>O=CiV@IsC={fSr zVY^bQuekEEUE9&5ZH#9*p)IjlV4<W>DLjUOaw1CgU|blNq;=0w1+uUfK~HSg*4uy3 zSX=s@m(pt7a%>+dtd-x5;J3*m!vOemmR@kwe>!g%e-u$OD+f}BzW$siS!ismM8~m# zmgq0<7-LG$r#|lZb(dEhZi?J-OP6;pKjBp)*oK2Km9Neuj%W+#4mViI-Sl>hYCeUb zP9KeA){(6CLw#~^8ac3&w3OS$McgGH=%UTx7kg@aQwT-N)URDrk8KjN4#4&~42w8I zXeGy=EQQZp#G>ACU~&UU>6DW#YKrK>FMFUSw&6vtzU(n^p?-ubQP)1ur8eemZa=u8 z+_3;@<-tDGAP40n?V>-z1ie$+BJxp)FSTz^f2N)ka^ULs%3PZmBi1hlhML%3`>rpb ztN7}W{+snm$B;5M?brs2|KS6Yv4XSI*<Wx9Le^EZd2Y=)|8h1mMlT^a&!0MQ6nDxB zH#8~ObGVmly}qj~?<Zqz;f9}h&x!erYyh9KKI91?e(4C)@pzEfa6w-;H@ZfnMz^EI z8)l7%ZF|etOrJbA7U~PeyXrx-3eGduj@<-kKk7xY$=r;uO3N6*tP33S?%GXC>br;B z`4`t1WS%iiyZ+<L!SgO1^-J3o7d&k4__$@BlV8VFsK7)2g03+J863k+K#e~c^QG(B z%z4b&V&kIFwtEw1pO8x*Bb!*h$oQ5%{y?r0eIFicea^cPQlE@1SpPrgM+H0@dm4{2 zU#P<z3M}7PI|^$XYU~D5^_$YFla|)`xwv@e*g*YHx@&s?YX@v0fBu`OmqzHMhSKy` zPBVP)4eahadK$kf^%8KbJ5R-@9B(EVoa4Zlp|2~WV-_CbaP)@G*{1qR@7Ta~Sqpnz z!3u^x*F^Toey!1X>AA9R9|T|Cj2r9yQ(EEl1HDc<>${OBa<CC1PvJqx+7mdRTHJSl zg@$xIXp1~gZr=Q}-}s%s;PjKyu3SEe2m$v0K;TDzo#va&ROuI&==T`+n;bOfH`~&2 zSKtSR7a>@Iu+vP@VANPg#=QU)zy=41yy^(_ZgE5=rCve5FD<EoDedn=pzQ&U^sN|q zA4rhuAO2W{Lj-!4^Q%UO-ep(1fOlw=ztVUlUF1CKXwW1*oCuxHo%}n9oj`L@Lak4R ze8$&aKL6q~p60kiEEi7%&S$<Ao&e7x-GS?){5N+#vd@rYkaa>L*gofu41?WGke~hR zXHUNR>Sx&;@d*zvjGfGU^zYprG`QH#yAt4Y=T~<a^bO*@0CzKB1C|SSd6+ZO)6c80 zHtL|>;AjMP;1l%o`({`x`kNc*e5|ayx0*e;$q5|5X+lGdK`7mlI%ykzXbmx7sJ8~l zBjDM#^^q@p?H{Rf5(;1$9kU=F0D+|sL-`0U9qsEP!gqS);yCs`;da5P-LlvgRrMiI zoiUdyz9^y$u*H71*|*ib_H**Cj7STOJPpEX+1y2Uer?9JsCPRRP9FaGm^P;#kjAzK zbo;9lL>^V9?{aP*h7Ee6i`VPz1M#I<Iw7VJOaP?hhkVGjr_jYvlEN*qoLfh#>X#b$ zES`C(+g>~Lf)3g+@~&j>Y!#zWKw=-<9v#fJhn!SQJYaKl(JWjqK(r-C7AfVr3rH{G zU7UE~>37sK{edT4`?VJ}<rmvSKMPRu`YC;hR`!k4p#1#{z0o!rC|ZQ9w060EkXTE7 zHa&u;g{w>2w8h~sP?iXXFzFDvr!F;A0*`TGA8e!^(FGX$JO}mqg6mfO#>Ey!=t7q| zca&~9y5Mn?DFbl$vs$hngA{&QP#8lvZtfZ5F0LWTe`J$R?*1y2giP2w0Qz%e99p4c z{Bc2DSo6FzGyab}v4>+wX{4iE+O6>VsZX->%;xr47F_76T#?n1Cw?GT?8X@slZ0P+ zGhUHj9@@J!<>}(Pybjf%cWgimtsqTVmce&y!Xq(JqSDt^fg4@ql};+M{PPk^PAd!g z&~9wqIE|SqqkKFxEzmi`?(IMFF!Dp5)oaVj5#6;5`Zd+c(I3;O;{jGOu#grfn};u_ zoJWlqSDi~fGDQO8lDyQf8wbNQ9b!NGGQ+gXRM-KCtdzCs#$|14+;gmY0cubW8h)+( zeF>{b>QO?{b5jsWD0nn}*uVNPs2uHcwY1Jn4WImAPox_nJSp-Pn7h=0V+=8dGfx<c zDj%ew)n9(nkWw>I&bYvW3Q4WL93d@R7eFd!EV)Ucyy>GTqV;PhFL<q2qxjp<l%m#4 zeNIkWdRkd5NGln3DgQhjglz*u-8IgYYH2Bh@!7bj&2o(lN8><!q5h!AZlHQ0>wTBz zUNqWo`ZX7>sOvkB6yLfPuw~`45BY$n|I+s~(rajwS&UxWSfNe)6E}W>ztrvpmrr3P z7hX2OLcidl<JLzvThAlhg%eG@p&5SmwYD^myCD;Q^;t2(jPYAvECuR;_p6^xzz>b) z#m^WQzyBqLF!oO7Raq0ya{~qZ#CC5CFfqAC%Fn^G_B`z|cB@D+XZUj-+pCxf8#o@- zLtOd!SpoDo=Ly$<#&~sSLqh#c%BsVASfz@R%`yBr1;~H!C=b8J1<$RLk30tzIAzga z_F_7%;5r_SH*RcjIv62Ky<>zn>W}$k_{m5yl})%VsN|#HIwvTBabw25JOoFtjdO}G z4bNjKa<|Itf8Q-e0RT7PT{rvGROeM`(!gN~mF5<q7d|%8HdV)&_HFN^>LhcVg28`e z(8xp0QpQ5`%NedxAB^qOg^p<o!E66p%%;WE$tDtT9(wv-4IfSi?~MIkFW9cm55|FV zgqQ4U^E@d+KUPjGI(?PA)MX!dVdZ7t<ys0@bHT*7F}e1XKX5suNx6S^JJtj~8;-0m zBNMpkBgsj3={ZhiD*2%sI>4CJ15o!OJ~{oZY>Xi6A0yx=Y>fPn9##B@pdPntFO7a; zYsO72o#)n1`xts5wRYM7w$zT9-kI!xrO~RunS=9?hmgW7#K4A!ZJb}qtvMtMv2SZ% zxW~B~`5oj7yT>5Eu=8l>M+{JX{d}nXL-vJYz%Z~oS+_lSQ|I6@c&d}Mvbn+26rb@k zx^8OtlX2Rp2QXt#2j(r0raGt-(COzci2MEBm;79w8zWzS*{{xcE-weE?_Tf)X?MIi z-nYm5E|b^U7~#ccT!dsJzzatY=pORIEAknnF@%e)+QUGx3%xTp5Cl21R&`Gu#p6N} z80*dhlHx)5^tDTSgpt<T#7WLb+{rEr0_1C8iBU^W9zZF&Hp~L(jN7!7o4l)wi_E6j z3|nXy<<15Ox<_UM<Kj%6G1aFd-~uoCsS{(@MKAbVnWs+M9J)foNkjX_;=*%yF}@e^ zktY2QqR2psuRi{CVtLgr>vOGJo$HHRM^smUA-guKyuz5YS{Bs6`DfC$vIpbPBlR@f z)s>9g^TDybx>_;~gM-o1Za*R^Ajn61F9zusW#BN!?38OGVcVy@`z#K_rZDh{<RAnm z=hk_wd`@1R_`!l0hsuQy4EUdZmM87OQRb05bgayI9m;;(_T;oHU$I*TBTZhgr61ge z0VcMk4R%8KQJ#^d_0b=HG}#pcF*u%2Iy$1~o<>Y%i9D!mQ<()wyZK~C{Ei&U<cTqU zaWrMmT~H}@FI>EcabaRR8ahTCE4(04xpL9zc=S*G;3b@LEL+R%KiaXKeVheqU}+nC z1&l955n!-UVAJ47JV9cVY}c2D-Y`3ONs|+xGM>qXk2S<eNm$8|VrW_i9M$m!a%~Wq ztOw9?mOPxe(a}B)T4fzM)K3MXH*mWt5_y#X+3lO)YrEm&_xnpi*_vX5q3Zzjys}Sr zoL}k(7Y>y>!czu6ob`Lr<NpH7_lj@XL{7bbCgYA^J@d0C+isiolwB{P#s_QUA_^1V zi*$jlj=(x65ks|0Nz0>fA)GTlT20>mQ>!e>v9&4o@8B7|lqXH$mr{7ppTo<iuH@|) zariaHXqW2n&abRd2^j3*<AolCGQaZlNH$h8f2f0ViF(Qj+1wbT<i(JGP0cqZq;G8q z{mEgze`%t>{EE*#cNfxMl2E>Eng{_meN^A{;9UG{_<KkEaRQ)HD677Go*P5rx7ab1 zREB?bZhxU;n2T#&^E^4G^0YEKX~SByd+(reg%$?jEftCJY=rp2N#|jYXW({zGY<8} zOIYi>5Q>~sq|O{3U@KLQ#Ah{uRuX&{woi>|8%6=(xlk%p6p%vvL4jipG8GH$s6Tz{ z#*f-VN8*oC#x?a_hu9w+UdXY=(yvMrde&oKIapV1hFEk{yVB2?5Mt_c{<zF}r9^sc z*C#xB_ne0ivT>(xf53k-2jpj@JLa+u(*FU_bXwJ<DIit5Sb?1OzZ)HXo!dL|S=U(a z9{_?teZOdmp(I&bK+_v=ChPOmq`t}Sm@;aY!Hge>nDHB3MXD_FRK{Ga+Ijpt&XhOx zR)mN4?z+1+Qx4_wy?AWWDB!|rdt<8ZLS0|B%Zb993YtP<r%foaPygkG>FB3o_LJbp z0iXOlt^RDM8}r}=i9AivIY!Nk)OF7}4y2bvW{j{8OxjQt)ThZ@SoI#9X}M<g7okoV z>((~WEBMmswLs!XV2o!-gdCfe|Ki!UWnm&-M62x1t7_ZvIr2k0lB*O+d@a<|u?;8D z6#o61B01|}`(41*CVEH&#(^gfObJI%Uyi#^<41n*Z}lM#@z$Rb7pPlb(dX8ur0LB! zH_(Kaj&dLC$I&B}MmU-k%8w?Cz~lFSyj7o)|E+9{pzwded4A_p1o<J{8sdkb9=2nr z7<g+R8}p=jF|fcO?)Nj-_H~uQ#c4v@TIy0!E|=o6o!k~X`%!gH+h$Q`xTYN_*E-AJ zS07m~Wa83_`H1#onm=@YwNlEb0fV~E+>^TPiXrRDmBKe!Sv|mk<--XuRWeJvbp`}a zs2iPxyX7k|Pru;q(?9qJM0PZuK^d8xFbbYWrwt-rsGEEnecmU+lOb-bynOlDlP^C1 zA}?8Wa&f@E=P40?N#oVmUq5;E>UGM#$h9w$oF_)$*MZ+YmPZ4jd4rp3IOrYKn$B_$ zCsFGvQv|E#M?b5Fu=Zii-oRnKhbdW$C6PKR(ts_UM6_!HwK8!&a&}@Bra^t}br3oV zwf(j$Q}5(;@=wsCQGN3D4(*4ng^Lb52`hK{Nxf<hS-?IrI9IGJdHR9Q-oL9TnRHdr zN+!tOWs|owYYf%(X$EO)Vy&#+>hHvA15NEGfL%B~^Cfp2ovdp!7hD2LRg5kuDN~<? zpG1@rzIh73GxaTtU@dkk3!SRUIvUDAF8R+%a66SLz}5*y86CnOIdTVyy5%d~9tAC* z2nw=y2gH}WxTPnIeNx|4mvf@hcVyYrvbHcSui_P_aF0HRfc^XUcm$bt>kc@K;-;75 zdl!0e7J>s^)47ck_OVK_9$~-8#RnIMLfVhwpnL7qK3cuvdw?&PYc$SQ%b@;0=FX%? zvn@Nz+2_5kGR6ap#2BXh0sa6}1_;5(fDoOq!~~E)f}z168e!8&Mi|U*KpuDqjA3Lk zLINR6maxm!+?$b+nLN+?u653d$hb{a#Wn1Rb9T4-y>@f<X+AlwuS?A>!CNME)B2&d zw7v4~|HQ(WzvbfPC08@q9FYmO&IKTLevWR>d34@y2-qhZLiJwquI*xbY+~bRE61D- zh?CIv*>+KPStFIENLv&x;3|N;)_IuLCxoLEJEzcM>h%L*TMlH5cad7Kz<Ls%UKSf^ zrAR7&VR9-j>BYv<72P%$WMn=1WBQnMtq)|#Xxhjdc<Vi6qRegc@<gxT4SUl94sc*Z zqU}0{t_;WyZJ8;3`~)1Ep`o%!MzE5r3@saJ#o@?!Xl&)kb5M#n)>Upf%3I0(m$<)< zl&fTmP(EWW!i4tH4Q=bO`k)$HtTf?m1|2f4#d&&naAj#MvT|O+K~IAEr*vx%b<-}| z$eRNhr-9j5`l9>joQnbE%OlgF0S?GJk0^M&W&4{snGuhAQ{VEyQgYTSw{^HF{qTch zgJTNFwLR5QtuT%UeXVkyDjM76L$M#;0NilkLbp7LVRGjPsIp9mSe!=iwP<2(hal1l z?NhnE!5%TwFM$y@ud&iDe(S6<sFQOr{(&CPd2jK(7tPY9O?++Fu`QK|(X~N5p*+K1 zzaO2_F6soVx{+@z06rO+M_zChnVQI{PkqR@Dy9tn%CTdx7vlb^(@HK6L-df>9`eM$ z&kJccLCQ-;g(oH*JBErW2qxmBxc)88BQEWuJb)tz>GJfKmekQc#+oxaVOPd)ebkG@ zJvwHMY>>$-3@<w7x}haKL*<8<<087bDbgE0;_ea9^y|ESqAtGqsxCOGGKnL;f3{23 z%gaN+go&klv5@11HvrpLNz+*^Ge|q_Ol(@T_>gTjbOWQ4DbM@`*@8=0`C`0Nl#EmM zbFaO;*;pI;k$hz-pXH_8`itXC4rEXsMG@wDXeNC<x?vkbY&yD^rtMIC$Rrq#YAulV z=+g4B1+^<z0gI>UPTEb!Z>J9-5<SoH+>NARiVUVIzrIMjPJ1ff-C&ysn0D9hj;GQC z?x1&K2pZa3G%%TC71l9Oa#Md_r`QY}uZd21J2v;mP8LeR)^DEC4-E0E3+>Rc{9;_? z&YGDr;aAhFJ%MdrdrPrF@i(7#G4u4rKi>KuCw`QTkw5!a|Hg0r%D?!9?;^-g{y4%s zHtxs1fzz$U4`%nuv@Lac^idcxhZA6U>)J}T$^ZzKMoNJ>EAE7X+IgwHSKa)*!aLY^ zGm+;bJx&<A)<}95CiNvq_aN_QgLyUHHGKhAwzEUkwqHlH!sz%)-T^&!kuk=N-Ml!- zz*cDWq$GoXf8Ngb!$F{9`JIn!YS=-gStIA7SNa|B{ceXFBD{jbhgDy*G4csdiM)RG z2@3{Zy_vyOT0SZAgU>!=bL6u;IpS{pTi@p=_S*n`nnQ`YU~oXoqsYX&F`^O~6ed=N zW6-cnRXq;H$q>3|?gSM(02DioPD`_nDV2u!$!21*+F>u6tY0~mwL8}Wo-`KyZX9CK zMH}UgAOoNF?p+4`T;1HDsE#QoFHh4M{KO@#PHJAAW?_=aK;3~2d}(WosLe@uaUs*- zLS+^!@{UD?gO+|0KFl9Zfq4uz*PV+zHU(B&^f-6;Yabq5Nee~X@L&67K^fC&kI{)( zy=u?ej7;T9qHV5V$`*-}Hgnbq8l};#ug9e1&PkiN2ole`uk}Z1p2vxBEj8^#wDMJ! z^-CAjrqe#a#O8orDIA#a&ICDaZd(g)un($3@}rySJ%llR$7d}hER3;?eWlIzZP+-F zN_g~l;p^+*<;f#k9(wwKVo5Ikhwriw+Y4{HY{m(3`}!3Vz6&r1d63YuPDhbqq=bt! z+&}4F_-j!vJoG)`#0j3S_Ti^&x_$7wLoQ^cXuAQ@g|!O|Wvw3qP}VBHL0cGzO^NT3 zpx)ehY%5u3AF^Hd&_Ac0VcN&@>37nqiKy2$9?~pqSjvndY09}5AJmf$O?1rbcEF^) zB9JHP7>vc#H-?$|rLM%w*D*qyX!}&2xLE`a4!~C1b{$jnWoehcZCJU0381?4kg#$q ziy<;ioPwnHWQnjRob7rnT0_DGqx?rN>6dBvNFmwqv#$E8XUB}{kg;p<<Tn4IRebq6 z7dood?g4`Bb7*EPLY|Jj*w1m<evE8}YN3rtrBRhjdDbtKi#FyWHNQq<Thmqx+uD;( zfIVr0s?;L#%G(Pqb(Ch0Tyz2D$FS`;ZM)J?zTQ-DJg>~s5k}axX_@pqYJ}gE;Lkhv zDtm2p;6!(Qo)VncUno-n|MG;b#bY1)h3f&oRhD0dqtEJBZ=Su0OwwGR(gf1+-*DJW z0b?6a4Ff{)ffbmvF<^;9N{=c`u{nnx(z-T+ocz1lWL#YFJsiUg8HX4aGB;q$td+q2 zz&D|M)n>o_5}Q!&rfJx~PV4y}n^JgO-~k+eqAtMnf9(~i<R8xRumng8fURtlA#BzP z)>{~iT0~gMIw&1-4DWqfEbBqatQR-@mWf3KOH<A{lF>&>SCPe?16?u(>NgU!Tmq&O zS>|}HU%9yiH3)xr&&@Hv@y542ynF7`PF;WcjXTH5lF$dU;gJhr>;%8AD}aDb#_!mm zatM2l+Z_*MtJn;FcBYYQH__c_QEK7f8r`xkpxrax)DYCwPx8dZF%I#oP^@*+R*p%~ zXq(7I9c+iON$`=0`NMBrSf1A_0=W8)J?l^h?$S7}vA~g!b6<Fq_vVM+a`EQl&TG|e zCn#}b1`c}q@l8W$(>F8k+ip2ZKTp^IXOW@!O^f$XsQxut?22z07k=aNz2Zwdtku2E z6r9LMMPlfLT6k;k`l*s^|I$C86k7J{6?*B&(|N%039vj_tzXEpQVVejqvuuI*gRwF z-Hov2A$|D@CvD4J>u(7D)TK=Q22Q+;+vIl~4LpEXyv*Og3a@ODowR<SVs~{prLQ_; z&!<nn`xpND-}}wT@ME4HWn*My_;192?8lVnOVIC{=1Ty-u<D1Qpuue?Lyh0`*+MkN znHfhH_H48rj+clF&?R;OlS62InS46Y{ctV2@)gcHsrtX6B$m#`Tl=HM(NR)ibz$~Z z<Sw91UJ4c$y6HUh@)`G{Q*5_&3_MPbP9k=^_iSvu;i(V57viReUv*#GIPh%R&hCWa zPs{n#NFK?AuM_qDUb>G6e$Mmo-~0aeo_zlY-{)x&H$~ob(xapMCp`x-@6_)^<)G{& zVu<_?v|TDM^+#LYb&Sx=KnK5tDbE@Fm(ax49Xj5lC5Uy>S(rNxGX5MsBeOo#WCysg znL6Q|JhK7C0M?BW8fJK8Q9H0B-Vuc^{EUy)5_nzAYE$jk!I<0enKZOR`_xQsz}t>4 zl61jbkm4(O3L<&&J1b?OV>`LT<083FgM>r)gn*(z)5%Ew`7on#^7YT$F~S+8SHCN4 zeW2|Pl|0s&j~#}l(ixQJ;aL8)=jfb*AW1GJ%BIMYDwzQ|;j}$YjNi0OsddF#)3$Wf z;-KFCkPQJAz%J^#{PqKIU8L+C+R##87e?4affVDaOLz9$I#Ur_R*HLPX-OqCrEBgC z@jtQ~r*>e3wZBrEHd2PzEsMpaSs9NDYe@sR3#{Jt*T;mnQjO5b3~<s6?4+&rkdJ?^ zyVc(qm#Qtvc$YTI1>oKatKsrfo8HBPS@7C6e*ea&M=aELw7vGVeMIvJiXeeHZJr|N z_h~655`eP@@+hq*v-ZJVn56%tKL{%h|1eT7ZIXqm<yIx8OqkR|Qo^B+?Z_x^`UCRU z|E&xFk@X=pr&t&``wMAetHZ`cxKPTLMY_q6+l3K?(tnpG@+ea_O++K@-9<O$&NeQ8 z@qCb?vP7BT8qUbj_JoQO5bPaoR~t9|#FDKJOyM+!O=$lTCm$F^mJ}XvU!D+L`8|}q zn<Tv>XI<s4F83)>8nI4W>-XX)4No~>!*_hML)*N2=C__&ZvD{?(5TJ2>7b7o;=8Lf zZQ@VH`aPkv8f1Lk>#Aqurxnv~7|j;-LOt#l>xAs+s$aH`*}T{B#xaNgfm2?z)K~Ny z=J>NAw8?qIP_bqCc+Pkw41ZKXQ@yltbzHk){j49dd8({qKY4XN>V?PtVx1Qut~aFF zJ~iz(KC3;qUuhRZV(DrdinL98fcydydZ|o)bfZ)>bx<BPNj_z!TV|b{qGRaOMujf% zIj0`=GgkSe1N%YsIqVDJ^i5z79y><Dk0yYD37OZ|WNK@NIj8=WS<*06clm;q)7r$s z)X^sLbHiAGoGI9x^X#@mZfIB+0oB)j<Jv>J!el694Iqp~Ee_?hx$>(A{~gDsKcG|m zjQY?IMhHrl;FEqnEkX)d?dCWh8Q8$hIw%|L>eDr8^ucia@Jw)AtK=y?d_@`iWZ)PX zIoEgeE9upS@;()b&0;&{<W`OLv47-1ION<7l=V+3XwjqD^uPFyaslrFi|`EXwoUM; zld7lKh5Te2lb5%313AFJE0cB=N3^tsT1{P3qqnaIm2Yl1qJK6shJH3ndBUk}bguiP zo2Pu~llILV{(7Ud!R_}joL5gDq4E;sNp?kyjA!+3GNokTASG!+3+j7AhtlXf)$5nr zZpvXW-kXa0lJ(-*2hC?rhP-@~@7P47uCm&m9FZd=a|$1Ir6N^BVC4`fQd@8P0DC)a zzOq%0ZByWfmgUlMPBBE!OI-^0q|k)W0><&%anrnhzPJm1KQ4Al?WbTQL-M0w8UO$F zqlzD~;L$clQ1VwX*f+K@5+hwL^&=|$5ZcwyVX+0SdRlNnqo9pI*`<YqTRf8b#HF_Q z)Z4swYRno^C*BsE>1$bm&$??qj<yBFbT#;WBt>d2U_W$nB}{zD%v^I{!;zszQ<@&0 z2f0;uBn=EFbuW}9go#YnF6}N3%yv3|x#iUy-Snu7hmNbT3ED-R9Y`Hm4KB9d@i}}4 zAwRI{X2|!y&!z}ZinvMQ<FmdCmy3SqGZ%{t{L;VLUsvcLqrkm8VEqYmQ6!vejcchi zrO^x2S@dI!a~FAyzqTm-lgAJ?8oxR*bUEP*Q(K;C^A1La);Vx@P~0|faB~39VwQ!8 zvIaJ`98RON_VzzMDINY!Ipt$zVIq`8Q>N(B&g3B;i*mmwz_48%xO*c-7n|99ROT$q zU7RbEl)7-p`_L@FUc7YSB9<2+^72%B)R%yFAV-(uq7R7FQP#yseaJFlim#o7^R8mk zyE(IbVk2O*LD+`7Ic4Zkn?o^eFm|CfVQ`n8W!g7?apUr(Af`-n%;F>$-q^_{7skl~ z-U|^AH}}*_dAqP0n**vCz0l~yCU2+r+P!uL3-Jq_iL3&y$cl4>`kwZ_mLAoRfzAX| zSEw!q=({XZh07ws<vD=11!oQ~oRz<e5b@JbDX;zY7s~K~%0hbq0|w`+A-#%G?oC@} zh4d2D4xst7qD7`W3+2KnlM4`iQ2XZs8s`1F`niCnXG7LSgFG7Nj-K*F?k*_Ir9ViM zwz4nOUh*GHg$CNtuo=_RKfBNtB6b%>fzK0kEHI1@84CapLv3Yj|LEd0ePP&cbJky` zP-+ksx3<tzCs1x(E(lKM<Cn_MUF*Ys5kP5DZ%c{mMW}abZEr(mOmAp<xv55U3D}&F zWQ7@7K;j?$fc0*uuc(A)&Y(5ZcyU7{3}VBzLz!Iky|P|<_sTRwO`&bnM*vUCHEd1f z-*N@Q7buI3jd4!<g+Dia1{bpfgH794D8X*)KWooC<}8ol>t^I;6A#haQ~t`TuhC|X zANHj9a3ILnNA+#}-=^|O%Ud>U-g39yk7U1PUTy4nRNW(&<RiB-mtG{BF|Fg0BG^vi zSzE~!+CPe?PTswtA*{VpTluXqH+sYjyPWY?{XqYd&K_gCmt2Is=LU>2N;4P6t}(Fr zsk`zhO$3N+`6fbSt(;*hh=~-*Yx4tRHg;9&(bHJ6fY^T=i0lEr86^K|Gjf{)u5`f> z+{OSSZSFWi<*_jmo1nV{Dfh-yc!@H{Cank!D)JY3po>j*g9xnRQI|H|{NQTiTr^Q0 zJEL3VHAa@R4G=_m6ax9NdTl)y)PN7ZEjz(7>H4RRC7jCi^R(yGEiYiz?+n_nW3@Jl z?#MopR44N=vfi62^7A`p?|2%gb5!k%S!_xI{x|%HDkPC@>6*%46iT~}{9;54{1gxl z>h(LuzFXER&-h-?Gk(!YA$k!lT#sPNL#YyzREhXEbm$3&tZSnjnbfB^G!OqD0vVT~ zZ`-7Opq-#>L2fp9DmdlQ3B0Vim9@&)ZIX5j$#?tcOBut&1ukoC^^~76^UsQy@4mQU zxf>(cU$O>mtZ3O3%^Y3(we~zKXH_7+gyo@}ff?N*cHpAeU{v#c>a1(23L<{|fTv3h z-4yZFE7zdyhkf$L@kX2zPx!XCvg<&VHGIOJa{Gfk!e_@gO;>$lX9;P`iR}yfN=xL6 zQs}9T1FF9iUTI7VXB$c5fCGN{NctLr51#$o_QAPT{-8@D;8&S!WBF8O_>+g*fHqcC z0LDtzKKl<>zCTX-(Kbdtd-~sh`I8TS<QEa9J?zJk>h~14jj}8^7bmdkw_pK`t-KRj zunv@}k6?-r=b`RywGMEH;5dZsepX!5ccGiJ{=RcQRQ3?=*DZ@QaYj<7Xe$8y6{oe{ zn9}k2#4QnYj4Di$octf0Ky2NmOyK?r4)e)}NJ)f77VO6W=_@f^v}g+lCI|msxK3wf zfR*>c`4xPh7V+s2H$&VU`TPx=B0SdT4t5uRwRNVykzM+GNXuYsC(oe3z_9HDyN|*a zL585L$j!04%F;H(PMI9<wzo7}XBRC0mB%=|hlX^Po&#wfr=PmWu6eP`!j(?4R5TXP za^ZJiPdic#Mfi0v=md&=l?l3Fg+OUa18IFq0XiWr{aJ}c_grMw4q|4Agm|gQM}!XK z`>P1C9RsjC+b)!q;U$Nl`F@BOb&P(849Y8aCedz&bmGmzg~fxF!rGQJX7ZV!A?V`D z0%@yD7wW=xa^8jd+6v&<z)5Xijgh;5+UER|R_R(-yupt0+I>n}T`HuN#Y41f+JdZ6 zz;j*PI(>t*YI=y55aOhU&@~1qbGNOkpK{ku!cMfi$tVfyJPhh@s7|X<iXJ>2@YI@C z3MswgRhrPCM3S|uv|V_*aPrPFf%bO`NLc%yA5+#(`$U+p;~;aWa#n9ixZr?j{wl7N z$a}Od8S@k#D4VA+GUiUKCb=D%@Xr|5JB@6<x)9=at>ckvg?x~ddU@bE&_EYtv5gG! z+Wr<>AWHfR7nc61m-bPj$OJ++EPL0@i?(ft+`&U%dIK_Xo;$TcpOgH$IMYJNPTOk7 zjRi~Jusn6j2vQImm6TE`(cQ2zW>aH)#57Ez$59VGM1_~<36zE6;Aw}BlU;0SXJs9O z)FR4tkt6k#)Mll-Jk6<-;69=q@3kQWAk;T<PP&U=E6Y>XOSybn7m+S?LoT|dPDZ1f zi`+1zB6bf^(-os*jKuaJMWuE!ZW<cek1~(`ibY|rHp+%Fl%!=F#=4-k@8UQ7x?9Te zvDK?mD5GT^|Fa+mKXWWp5~D|B{M9-RH(|Xq%&*VV7yZ!cdk%i>?Z%Cf4^M~~w}t7? zaQ4Ok<4895cFcqA^leia<4uf#l+1u7Xv^Bfz8xQJReax@4EFsvnR@W&e~yWw7e3}= z-P$!gtV5UBl{l>cOzI^;S>{CaZ@LmG4;&%yMcrLqrEA+kT)9Iunb647eT*H?sn9)* z`zlRG4LJzyPg?SJ4AjY?oWIEN>?yy-XPrfZuPg>c&4s!jI!A@VSux|n%5U@23f2&c zE0>-7j}5VChApG}v==<0&)_b0m`hEW)_2LTe_Ec+3z7RDTj*2$)0T|#<Vggk{$76S z=#Xw4I_V4J&*5`-Y}@fo_z)bjWD+9Jj13td0aI4z7hkpN$5R=P@MG7J`mPtg`M!nn zP0*&Qlrhw`2sD$AGs2nrj@iIbmnZYmmeyS^8le&YoVAWp$KTc4hK-eC7V^|)-Dt7x zRz86vQ@@}y02cXbxae1#b{y#w7=S4-LEWtnLHOwh`Bsd)vXNOMN^{o(8SDMN4K%`E zTJn{k`r22eNyvtX?FNi|@+7Z3oj6s3@)th&ou|LMIpP}N*yNFR2sOH+cZ<T?Hn(rq z=Nd=0b$MV*N_rmXcd1)a;`nF1?H?Lb85`?A;Kzp{V13iJ0hkI%Xt`rb)$BOB^y(L` zS>pPPm-39y%v`^EgxJtC9myf8br(jT8Rb&8wvN5AbtFPA;SI`GUFs9UrEY}1!Y_}& z$VdH_*3i38%Ny2)*e@*G_DjpUkYT{m{~2rEzxj#(^UIb$Mkx13p!662;=g|T@BZaK z{4EUj2OojlM<m8JAC-SqfyPUKK%4X-jJq{Dm?e%2M_4)(Ok1X^^gE~tZo?gp9Xclw z>k^2vc|b;9rD5vF59_d3N-IywPI0avUq8JD{UTwlS5IQCxGEnEEVw7bHEa6J?;s^f zhpaQimhea!u>&q^t;C98C+x2B`JSd7NQ;ZR^}AtVJ~S9q@>9J00*#v@ZjS8hGx<1B zCVSh=Re}=~1J#J7ojo%6n?|PaaWL2b@2egb$7f6g-~2g&<c=?cYc7JQ*E;=u`_f#V z8%w4(uO9}*Lc*pOc4H~IYrJwPzraq~#j9R{KeW}7f}M2%mdenQ;=TioQCh9p{AgZ< zJW*tsg=tu4uyfYQgmKus;O&@FS3Y=ft{l)to^3~eD!A_`;tx-Jx`4K-c<2VEii7Or zB8~V3a%B<X<jfH{7XT<H3|2AWYu)vrFfs{Z8}8wv$DoYDD_<6k!UbnfqsQtCztESe zL?>jz7bZ3%7Co|ba?<Bs@PW64VIX?o<}AE6V0jTcxDa6l!eKw~A_kjr@-+nUBB==u z7g#0{p>|gebyH91+NTWb8}c%};m}2)zD5vJNMko$KINyhU-PkKKa^~ZwzPjZMtnk< zcYpPbY+|w~b<+1EgT7w(miNCu``o9$KI1~{23>o%CJRRNXj6~vpf3H$PprYwGG$7m zJU!HpG)LSV5QdQ)Ug*7~|Gq%RrK8>4lZl_kcHkpleo?~Z3VO)LHc&T%_S?l%Y)x5y zeot|Lj$fJ<2iU^*@$OtuB7^)Q1B+GlR2B1hLbNKU(%ZAO00nNxGMg<jSham5mI(XH zNjxdF{a3E~e#^G6I#z}zZB?0EAA?MO`JVDgvusi}#+Oxa2d8{XS2&O8qlrn6aKSOV z@`XkP50d$PjZK)qLT%x#J9ukL+HcYQPKRM>Hcm;(@1Lw!Z}){OWo>VHN*X17J)Lx0 z8riUE7LDT%3m;nYuz-_swW>+7$pD|Sl;Mo2IPLNgyY)D5#_eN)I(DHHqV@+bT5&)6 z16zS4@`MP#ICJABh;cSX*c_RSk!+Y?x7!@M*q^x|y1-KT+KS1ntl5l)pMHfPNZG!j z+>Ynf4NQE*vBZlkJHvj281UjvJBJ3meAIkx>G<nfK);lZkD}*BkV0_OMz$kk>D(QT z%`0ijt<ylZ(_X-twl6AzKA`<{1M{{*E{v4RBYdo|wrwH%cw+pIn=o#O_{5X*ZTdJi zkx;@UmiSS&01_J?fvV$~y7=^zPwgm+{0z!(|BYR=&G>`*M0j8XUAt^7?lq*Gg4inh z)rQ9yqpXD3Oq)mc&RMB|iMTsnq<!EVu%+k5x$QExuPlx+`oy+fs73!OuzlS&fUnv> zbbU-dKAo(M{Z`9+{MyZsTO8TL5c}AmkwzL)DZlz5G9Z_7#5aaV;8u3l9j${3%4ZEK zaq43e`qnM4M<GJiFjggymopMOg@t$Vp%FXOmX^f^BbOK}qfck%X<Pl>&BTGxe!GTV zn&MIY#X))C<z`WyTopX_cigN^T)V3m3Lj<a;Gw<u36U@X?%WjVCXI9i)_ySK7&_80 zKjE5ICu>AqIRpzWDGjMm9U2F|I8l1w0&hRjw)PbO4qBB(J)~uSvOaLOKSx93vQm?k zJ5q`onLKs;0s?-9m4Eq`-gypXcwXTgb380lwmlr<0uLWK`wFk&fTOMS;qU@iJz^K) zrLk+mAP${F25AjF;r1zh2*!TfSMvln^|f1d?^Ak?$M1jZXW4@Y{YN-G+Qx{oV2uAv z^d}xct_MiOj1QE5Sy3BMh+^NPLH46^3v{>xM{EKUkp7UyKge1@-R5b?Gf-%GCayZ0 zb-|~?VKD@QTZcPwA5Imwb%*mEG*2AsuCQkfDV0drc(UI}1dj|zC9ZX1Az711dih?& zQTBy3oerA;Qs6-*WqC@_$w8LwgFGRS35$xw73FF#J8`};?_i&f=DTlRIP;+=CJLW2 zxbdfW?`(>6fJ;j$!qCjXH;S|acM~J;yE91bzz{)4rnC*RE7Jx^xVW-?b|C1WDqoJv z0PDxnuKJi3R=jIyZp)x8`GHwk+Y0AkD!#k4P7#5PNT#6=pOraOsWWU@bJMQq5_Ljp zYYJQaTV_j31~-{h%U8efw4Ot}z{M9Bh-pW|X)oKZcWCw<RTtyR;cE+RJJ0=#`1WgQ zb2uM4K|3*Be^L|$qocCar^+{yOFY=2M%tduUlyk>%E5KwlQ@jL>nDv}FoOUL^aee8 z?_$MDg77&=D{Jmz(?)(WVC@vSoSfj3r+?syS15WUik2czkfr?~cV=LYq&ePuH;R6w z2hikM<k9e82?MR9wdK^4+BQ;!l~p#Tw=bH%2J6;uOdB@7!fkqCU+|jTANZM{dGgc0 z|EKv`?Qaba7w-Pl+w&)%{=~PKSovlUG=1vJabdq1gUC;Qz%NUE_jkYZ<afXOySyUz zy=;#7kvBiSm{(lTyj`R^M=tGZ7m1w8U3p`V2w2-JUMx?gdDtVzyG-^znSpm<F&5@L zVdKw=>z}y_&Z5{mGx`=V;={9gLvei2@(u0p0m|JqUCh=_n=@wEk2@~t2O<`^v?{YI z^&pYz;zw2UB%~X^BAvKgtkk5J077tDbkI#!t2j=f_aG^U@|}0pc)VJQ={wSHzv=65 z*aU<6cLu#s5tWNJf}U|MG#J;#&)5JDd4;XyD_HXqGf#cSSZM|KuoeKt4R7H*Xr}l< z=vJnsn}uy?(vpF@)XR@xwLzL0--m7rl_3dElRn`^g5H!%xv-=#?9wAq+hXs|MZ~1D zs7xOp%<$E@Pg`aq7owfJv@LYwPu!NYoFg_DC(IoW)WdTrCFW$G@}k-&L^?LR0pb%P z@1MMJL*&Md5uO%F-lv;@^GOk8bYsM^B{v7!8K6GA(_d(F?ciXBU>UcW#~lmkbkSdF z)MMxQ5I`<<(yw0d?G*ds4e;xa)k6&kM5gFTPK=@b?w0SiJipBo0<ZXvne{P4WRW)G zs%7Tu0A{A07<ZMOBYl%TD(Q@&`Y9R52satxPo$-N+BV?z^;CrPg}*$xc*xquyXTHG zw%_OjEj4OR+ew5Y^4ZtTn{B){p>t4bd)Lm_%|Csk<BS)&>QI{vllY5f=mlUm&BO07 zT>U6A%9iqQSBCy4pK(JUgJ1oTwso_BwiG_#*wyjgjc{eu&ec}ku%&H7Ok-kWeYrM> zUXvc~5k%bBKKA1&C;U`c4~tZx7k#cF-2~T7fP3Q;I`~xF#yMXBq2(AhIv`9~dBNv; zG*2%9mw6dE^--VxQATCfUxkraXk=W2u3^fuVMiM84((RXIGA=Kt^L4tY;3wR*@nv} z<Ggg{P{$nFPuVP|e;Q}gg!=eFbW`SmNy}6Ur3#+yMPvHpraU15P3Y5R+3<kAAx|vZ zKjIJ_3*?b8UYq$;fpS1^FQ)UfC}p;b?UOZ|JhY`UQKP?56dTGX!M3D*D&v&dW)d<w z;wIv&RBpL2>b7BhX5nm%)!lY9tsVOmU&jJr12c6^pS+a~j&cI-<R@On590FEo@YC4 zeS`&Zc^FH`IQ>8z?5Y-vpIA78oC61p<?T!0lGkT<tlP0nob~N}0>t)K9*?UWTej`! z&sAG5d^Q;wd;RdW>%abzR{MY-;&+`#{Ga6aSmALuMxMU^#it*heM1`~KZ?pW`grs> z(@90A$p2Y%r(imOwMh;w(&HyIE@f7Rj`b!v+3**tn~Wob954eRWSnAwzGf^f@eJ!^ zSJa2f&iaR>J8QoxwS0xUQc^2}I>ipn=Dc+x)K0Aw&bqZtj0sEzw3II#WiyaVz&|I- zbTm58yZM^7kJ;a_p>gYLFLoFX2VgsolZNznx7mSS6Xs5b3rOhXF?Sb0T+HOLw3JO} z9yu8UP?8B3{@P*(rQ#zCIM<DY+N%S*7Xf>rX89h`@{(U#8!udA<#908`tTnalh>F- z=ZGoNzQSrdX_(%4?`p>O)Mx{trMrH%{3#AtTMa4z3Tu#Rf@Kz_ou<fw0n|SNY!q3F zV0&ayH*jzde`Uy>Kwu?fI(IFyu;?VJ?%LLk2iw!og@zMhCw1@Y<fE&hfjCT%DzIaO z6Q%=x+Xo&nQ&!0xGJ~?ZCssCv@<<Rz{*#|_>6S|4t(V3wLM)4&-PAxXO;ghHaN;S= z^n>U45l<|c7U!7QAkXrK^2#9%{;>)1(6o2<H4R}rTs(5vn7Je9B1}7LJAF;u9#K(E zC|KID(=3FnZ<{WR-0y|pwmkiQY*Zh;2Rqrdu8WFqee2s#e&0|1)RS)$+eiI!{TrU} z+C`^j+_cN)=3B;tUDUbw>?AvrEq%OSzxT-^Hbyw!vq9qG%iv~Od_liN#`oNf!@bgU zfl(-q+R$-8EJD#~uiD-3COo@=woirN2l=&+>A#Y=#m>*Yc;UM@J_9ek^kq^mrZu#G z<wP|0vc$0`{J6NI=^Dnq+YaeJ;C%2KGQjkrMqt~JF%J@L2hs6I#Yn#xa+XF0$2IDL zT6qK(UcC5^i%as`k9yH6EP7$Q!?vO*JE8bVk=EBKi?2&l;X20E=cF%y|Bdap=CoV; z!Rla}bS%c8;V0c(NX1`Q1b8S4ypAzXni0=B?G%8dWoubBVj@EMg)aRl@*tyNZR?2J zeh%HpPhCTK?gdJihA*|D-PrQgKcZw^BVhH`B#S29j1kAY;7CfFM5fx*{6TYUV~OKT z_yU^?H1aVoPL_FrayMixlV?KuOKq(`=0KW^L5@QRCJUb&@xszR`R2{LC!fy-iBFB# zM|_$jzfvQd`D46-i}KJ9y@BC(#CrIFbr#B$IUgAN!FA_+p9=GdFw;>;K@r6M?%b{| z^J<C%g&pW>Jb0;^XMNpvZa>2Ylsg0%UcB$}xqYYYs{L|-ML+jO$Mx=N;Gk*Wur2bc z1+Uuq79zq#$J3}`ah_spC903>V>#?^K*bAe6lmASy~xoQRofHgNFNG<*{-2s?3_1p zQ5Je3<(dVYZ3o&#-R$St<PehoJASFeAu#HY9kFtelnW^BqMvE>*j)tav>keb$g*ja zu~(pi>sSm8WX|}^xaxdH(dg2P=JvDtUl_~@4I-Qp#8x0)+fXolwz2v;2O2x}hzh)R zwy%e2fm0VO{KT=|{>OJeK76R3WUi)6yT9{$ARzc_iq1>Bo{<I|LPb9MyLI}$?X(+G zwtAX1tUVPch~~)N*CDSP>i-^*O}&s&KusS#ODaC$1^oI$c*{e3R^PQr?KwVm5uly~ z-SL~XvHJRJSI)QM+U&XWz*v!QW@QYeuft9`qKqKmWbN)az@~^#iR9uO7&leCXwHQ_ zaEd7Ht_7)&%#~XmtW}-{Ag%JqT;sZjjB+nZ0GnC8!-1mJYhyu$aW0Ac;Whni)}od# zjCf0PX<Xxzk8%|+;&2LX7<N>$-lJ=2eN;7&#Wo+L!)C(5JAH|C{BUftG>mt{Bid6h z&CoaPA<UEubG`Pl9N;@P(k|*tVQ57M@|J~`^pthVgiqh0NZ33POsrp7{*1AceTQEX z<*~w}ZjAiwU;3NB{wu%q3;v?zqtaDb?VE=Ap*4?*YiQ5Sev}W7VH7^YOmI6`gN~4b zo|3*2ob*6%Wa%DNWa$+mokExpU#y4Yg^6QbK;l&Qid5Mw002M$Nkl<Z@E<C>p!`V5 zE8p7bqRaB9Xm?-lGg&*V9<^9INX(o9EUwc-&yH!3uSYsJ<(VKH0PSRSjQ3vHWHY1R z260jJ)`N?t#4M1+cOY;9l|ca7w(SlY-AI{<gMlQEpid_jE~3dBzNX>I9Wf^sJ8qBN zOo_Y-4*bgQ!tz%B4(js`ognoN^{bvsYh&>Z*SIu0z$~1D1mp`l@WN^9qx?ckc*AZC zoN`naC(lg$L#wbbs38)Yl!|20bn1jONl5@&UaL_-R(tMWU|A@2Bf~*fdfHpLJsj+n zNjl^+5IbpiKo;M+*g;<yI0w*vWVH+GETEZ~o^fZV3nK8=Fwp2^P&qOoP#3x`C|$S8 zM`j7+{EvK<(*kv3kS3Mc{y^vjM|J2$r__qSyrd<+>XPcvw|);xPhGjl9=*5T^`;9P zx&o5mAAzqJnnm8mHhm8lzslWM$&W=her_5!2ptjps|+hYIv`)}GPkRy9Rf3bCkU5Q zC?LeucA+-5TpMh>sKVR+E{ePWav`MtZiw|F$OWI8_{%z6c<~e4KKYgY2CN@t{+vzI zANV0<p9af^lxG8VHbwLyLs_w55x?YVGVI{s6PdJuUpVyQ6hQUSmOdSXDDdyWdLZS# zI>7cv#x#GTR|GFsyf8C7<qjkJT-eR=NF&-7Uc8ay6r0ng8FwJQeKL#z$wjqHx4<|& zBmgyJ-0uZRJD`?{kv65DC#N3=C9#%_5Fy8jY%i1w<GF2k;)Fg#a?#=iiw+q$%;zKK zv`fU44@V+TNpZH!@ileW0pQpiTXm5ujDBg~_bBm`Pkq+%jtAhy52sySbO&D^?QgbS zE(#RG%^Psr4&-fw>k-4slXB9-KK(>Q^U7wzoNbp6SXvIhwU_c4(tq95IyxDJgWEV@ zIc<N)_!jo|q4MfLt3>>vP<&!yiX@edj?z@86IR{TQ5V<tfkD9DxgI-77dY8U3vW!E z0$T}ud8R+cr_4J(N!rCcb0tmhhKH}rykVp8O=31d@PF&<JH_Xs2}F<ZLl)cDry#tO z_{k@qJo)sKPoI4H>8E*}&R68@<HpuG7JTn}{)*fWG6vYsaxv(jNL_AzAcr>hqW_%# zR1RK5YU#L!;L#1>$QC_G+s3A^LA#`VwV`yko~-h>?X|1@LcWX%_)#|4fTiRlM^g9} zwI=<7jZ?>D$J;#B2)^=qL0S6k7dB>PA)gP9FkkYwKG-qdaa+53aqb+`HV<1^tKU<{ zC}P_sfAFzUqIq1eGOuopsg3;VP`|G)Irr8MoNGVm8iYIiiz59C%%g4zTH5hJy^xnN zCa*&cL+zXmG|I<nY3Gh}@_=~73)8iSa)(DaniP%$NjiSi59F;>u{k)~|3uFb%b*); zj1T-2P1jh+iH+06Il0ccz10HrN#&<b+xJhN4a(HbE!(K=Q~NH24WOJ-D*vt7IO=jz z4%f4LBOq&D@);+_Cbdi3<;pvDR6qXof&7DWy#OwMbQ-@iudQ=92oS7G+qgLZk=y4! zsp*)~zNLWzKd{;4s8O*k0^qA{TW@g9M#%WD<!+Q1YmSvI_GbWgO_sKgsgNi7L@L!W zo1iIF&@mz!FMoBPx&Q)WKGmFJFJx)#nyK?mc!J<~5!sa!*?Xf;{}8w1o`MLcFBr-% z$vKs$@>#dE$%T$e98YMtNi=e0>?2+Aoio}F@^XyRmunmR4Y{q)Vcn$FCgYTnP_8b* z7#7~NbQ~-6ucU!pITx-v%9S8}qLmHc;*Br3w(E77{l=&IK|$j1=9(b5A3ogv$-nfs ze?9ab>GbFu7)bg*knImYl6*sE8sHI#mXd@>^}lJ)Q)!fjA~x6vI^Uf_kW+dexCq<Q z!M}eB8%{Q|AyLRr0cC0U)Sjn@%FbHp)#<Ng|39SF*YP{{O-ALLPxhXWTET(MkPd0* zq0oslr7i|{umkQr3!YmpfV>lBhkSGSHpspX<Ajh-&I0OcN8xYid{6l}nH}(ki>3Ys z{Vb?moNYrP2VF7)yvpPQirit|4TkFk8XRC2*TJb51rB0uC*|m&ZfaXz;+(WBKZA9x zm&Oc2+F%9}ta<=1ZwutJY8(LJ*PL~`Knz~^IBCrQ78<1!`|aQ@I=mqdtS99w%{JPk z(|)Z0B06-jVnumpAqu!q2TbUdX0c0eZQz}*ULaL(@l3f8+Y4f22XYrprQsvxwqy0- z92^%Py?evN&E&08>xc65EAh%a5)e5+mqr#yQxiK{K?t-uj9gPPHH8tbbdvH!zIB~Y zoh+S9J0Vne+MImby$f|^P_K9V^e&enQVHSEf}WcqnY7Sh-}mpj*A0cXb=$i-u1pan zMatAenoIYoi$EqRd#Cc8zKFKt46Dz^v1bUYEn(>;*?uF;9)aO>!;>NZ>wo^QC%^OC z-+A(_Z+|<Ro<H#8$n<#^ey?7ALOb_yZNC-dYcjd3j1Oo(e^u(U&woH4Z=F7>Mz!s{ zlaCEuyy`d4p7n!z+RIm%KF|))DdP`vwuPagZ6Tz-{DY28ZqW3Cu(39F3^8;QCA3KU z7`Cqw01h4aOn>g!62if=eWel8DL6Sp+Ruw4($>|ZO}Cu_8pvX7-c}2VB4um~?g@ZO zz=Wm*s`1jdq&!SjGi9{@bR)85_BC;RA}6doVJpY;=u|aAOGtyY+9y86_<7hm#IOQ1 z9MeN^FoGAq5%+o&UT|^bDL!V#1<E|WCf@@;8BaO3tzwLnRrk;<Vc;l}c3MJS`i$)^ zY%v40_?G);rRk_Mc{2XVKN6DE$CX!E{NS-;&1r*ywH{{_#*)2Q=@`}W=mOEmb#jOt zD+9%;fl%p$SW6>Qgj#y|xqV-`66?p*<&pmJc*h^?O;ge@@%L<$0Z-n(6E4^*<1oB@ zR6jJNBVBZV%Z3W00Qqj7_?p@)ZhqKTUlS{m8zX)&-Ph(aE<n5+MSkC;-<`_SA_${> z<F9mBH*m7}*X|sS35JZB2&o?$EKeOU$`${NugM2l$M&(Yw7}648z}09E*qiQFu`B) zxR(_Zw#`x>DXDO^4*eIvE1GDI1~3eD&*~ZbyBP%i7gXoh`ILj*eL1L`n=1R{rE_I2 z+AQ<Qk-#Dn`sNiwF5>g6Pt>cEV%7$=lOkK5{ss>}fX-kUsRL`9YBT8)ua=ohgSWPk zhPDEoLtVP=Gbdl^Xiq4JN8DG2yv(Ky`ss_brFPRgr6zdWCd7qP9*#kaO_bFm(x5_h zf&?X|4XzLJ)B@uhR4CC8v6B)2Q@`nkN7HPGyez)%<G6lv^MWUu^<ngbVK;Vwp-w)Q zxn8s%IF9BOOv);PFx6{iieS-o6riB8S7+yt_$c&qvoCX!^Rzxax<S13ksTeEwzBv~ zZT@JKjM-$;KEk<fjvm^Exi@2;^nkUWrQZO*7t>jbq1S6RG1XoCjuo0y-H2$LY<@Tg zOP9m;${G=v-1M5d)(bCeZx%_z7PC+2aY}DHNx!;L(k2yjf@Lk=I>!~)4+7uq+qQkh ztzXukA|pI(KQ}%*f7@S_xiIMi<h{AlHFrEZGODK=C-Sc>E2QzZ`&p-6+Br}5Qm=n{ z!$_I!*Ojq0wH>6HHl=Q5{Q!<-sTYT|7}vg<IVaStZvUBVqS_Rd;$z*2HZANsXllDC z1+?jFUIM~q14p~z56Wg)UzOSQ>F}QMMBTk!d-L|@e@Npo!=rDEV2J;SfPW1u9CB)t z4cO@`!xjE3fxiOaVSWz_v99+JNii;Jd<+uglY)F#j|1;0ut^P^O(eo$<BqBL=%j;f z*!0F*en0-I`up%-m9NYLg*=hyD%S%9gt?<vh;X{#-9^(FHJ;{j%2~76%`=`*op%&n zthmr&L&S{{V>?qmp336L1(J{1yCIPaTnA1E1SgysXqCe{AF;QSiQ@)~gY^#T(rm|< zvH$!<|Hjq{vxoYmUfR^9US%fz>^Ykx@Y}`twVjs6PG;*V(k!iw<=6C1Zq{Ez_zDyQ zN~yA3;cSM=TFi>6to%C(dI1=G>(#g9R{u1WMXq2*9v5}x88X%XY9ByDQ!x1$n;iRW z?7}FM(eSTqPIXMOAlYLq>(eCAv~8Ji^LPg^ZD$sT+(~f4Z~_a>Oj>}!H?}8X>_oB) zQst3@Pn1}v-&EKR?5BnS3@zn~J~^37iG(IhUb-YZDQ;b5ffaRQXR6|_(W_<F$M!Bj zDDTCelbw_7z)0Lxv~7|y;3%<JdwPLE%l7eOY^)<$r+;ivHrJN5N626cffl9~P@Yr2 z#hw^gWis54EnD3J5jopmtV@Vc<+ncTYjMB*JHMSf!rn3VLMN}z(Vyh;`t?oTMRl=c zUv^AzbJRM?xxjyW+eN9i>tY4F;j`LM7|VL#Gq(G*M{G=g$Twc>RyzEINGbA$=%d}o zwhUv2{z?tJNZW4{gLX^$1|6Q?)X#kSq?R*pd+EC*Ikp*^?b$^|7uvP;Ufj5Ncbu`2 zJPYk2$6(~4pBseGPK{G!A;CVi@|1?W41fpc9Lw6SE^2FA`yFLm<jU;bJHC%b9Dks~ zEv!81pV$Rn{aD%=e;hZ^%|)#~pg3N<DYqffW+H#fwXHU>{e=<l=-UcJ5N*erA(wKg z+6U`%?W<Nq<^eod0&98YMjI+5FPQT8&kX-5-?GXO$w(fy2f4OMja+l2jU+s6Nf*wO zlD3PcwaPxbI)Rij@%7ubkNz!;3)VnT?mS{W^io#^tGjg)Mko1#H0nnmPtkMm%yrS5 zAtnB5ea0N*Rc4QVfRzixyh78m&{0?WpqDc6icX4&ywX-C+ms19{JqHYCWhY>a_sh3 zL7e;T<KLf65yybN-~_!s;UoO|6QrNgM%u>^yBnjc7k91^qBnBwyj;7q%@HW{Qb$@p zy}}9Gw#0616l^$CGHYquLm4WE{$OZZ&AbGnrM9K*6<1ITeL>|o_URnwImaF`^i5O& zUaIDu>%72kAI-%W0HF(vv>ViqZ??SfY23bQ7<r@$P&Yc1NWQX1f5)mkUa9VKhn{?a zZ<|sWU?Si$1}ZD~hT<4k?#>b5(;g|CxLm#1q>VV>#$WN8s=sI#W#&v=Cb)C>bc~et z9N49Q$fj}q-(&7h_a;l%k@Xt@cr6AG$>s={NP#pjC>b4OD{Ovw58n$6GWq(ZzOCOx zGSUXkf7;`eNxYT^I<OToXR#nhn<XV_`=j)=vlpw#NE~}WNLrkUO#o|O;BWJXT{J>K zq*vHR!H&<TU&1%i3V#hjK?VjuWqJ2(CPQtjAK{0#iA-$I9F*Cw?bEUOtle!8<<ocL zQ~H%{MQrH!Bd@l3;H5nB*9WS55RTK9DF|A?M>Uis-x1P|+H>Zir6YQL6B!&cG7pfp z-Wwc_X3`O6>$H*f^rT#km08&O{Z(FRZ9dS+TXr6mnOfy8Q0OhZaqJ}yX~#cX!9KA0 zr6)7Xj?EDASG~2g^RaxyiGqWZxf*}Yd<~4(Q3mN{eGNZ-C7V>K>FL0uZi76%PV&h? zn1q(&y<=CNxPhwq+nZbW93C}1`o_r1m#=^R-Mbq$Ms$ubTuqPQb-4Q)2zQ1%nX@=F zF4?b@wCUm|4@1}9)D2G}ho&_4!x)#+6Gwb=w4+)VhDax`laU$6nc9IF2aJfPoWUDT zadWD!WmcUX=nlofYIGkba=JQO8Sg-Uc_y6(Jmrz@^;pbEGJ2-*9cURO0xOVa7~Yyj zYwbC7&6G$65oy?oGT2e^DuW}PVmj9?iykkE-m)q3K{y)#d|#bOxf>;v3;%3(QG56J z9Bl1mc3$r~%gZ~=b~Z1#!W){$0v&nO#ZH+8J<POAJ8<Dup_6$h@*M=Eq0SESYF*lG zM`><|owcC@yD@mir{&5|oP~|vOJHKl!dv}k(pY`0lj2oQ>7_ipBr<$sQhSA=JXvPt z{Z9<bAVt~8BE2*p>PQ9(*_7(VXg95@ODCK|{^;qXru~&$ep2cr5%WOX@5rcw!3oQq z@ulGeYMB?r!t{fhz%nj7@p_S#jR+?={#?q$|A?|cf_~ZoS@fCwa!xpTst<dYf|hGX zuXusbcSBB{#mBx*%o@SPCLBt;)(K9mBMm~^T8}E9;+UrdbjZ}VQ*W7*Z2b^R95AKX zr$=7B@Z(js0PQ+5WkV!>Rr^9FkNF#Wfe>3d0>acXZML|PL4inAY|r9UHtm(i!ojs2 zPB@drSU=ZKOm`#7X|^!img|R$mpC+PXYHLkzu)~HwA)WyM7?_TI^Q4h*J@nMykT6} zpWF6Hk+zF%qI{0j+MA>rX_Bta+7Bpj^7g{<1-7KJ|FMk{fX_waRYoA{SHf`EFZ9P4 zdF<u~Cv^#`5^Dp${h`bIYJq*_#ph3WRp1r+c;`o1^(V){StNMjLFiC!IX0LDZ|H^r zHr7YR2V!L^)mpu6pU_ZuwXqKPv=K$E?nZ?hjP*A)Y<p`@pmJDeo0nf{bR)7fcfqJ0 z@80qHlNY9>ZHJ6O@D3%)^lgK7^_M_)%$ma3R2kD}DU7esPFY|_hu-b9d^fr?RygiL zJ9+|_iv{=@%iEwV@k#BIQ2#b*ok6+o9P}HArk#7Iv^2ZW0C+%$zv~^t_=xSzLfL>- z(8KwFLjRRp8p&IWUdspRENK-mkpp~W&qgKnfD(+wY*?CMu!YeymOgkQ6*R@|xEp&* zTfG9myrG2nKpxbRhzdE86?WiN6*t{qq3K6eZO?u`#E-2qJ?D^BL<d)0wAWk5U<&;+ zG}cerb~k(|-9_`0&r+R}e(0+<N}0Ycjf}<3XC7C#8mu(ciG0hdox?zU8C&l~832LF z4HM@Vd{|qFm$rh>UJP{XuUxSQa%qe8A!TwFOTUe+E0b+3j5xUnlRm~#hFl1E_Z@z8 zM_}5&(;VO_d8EH?N>DD%)XImy^$YvNOX%*edDveSv+#}W_v+mz3zTIqs!P+e<ik03 zaGb&}j8oZ6gIM}0v2gM>tiAfmDcH30(I(<x1N)&z?a}ck_>r-GvEzz;UrFMb@gFa! z6uovuwA63^G7jzIY17(VdgVb3M(HV^8n!?cYC~kQLj(s{`jGv|UjTZ?;kaVR4F>v{ zYZYJhe)Gn1H$}J!$J38~XTzYabGM&0hUr)=x_A<zwlih8%3-<}?aUAOOzX#o^nZ@p zB2`Cy{1I_7ccWwU3g;-9{Mxwv=xR^kaTu%+3~hAw2X8oZgF_x4cuzEaBQT7Kw2SHl zp3b(gKJlRqo^vD1S7lw(<;e&AUtc6BqfZIh=9;B*pE3NA=jqs!Y(m@fv|ajZ{J8aw z8Eacx*_<-_)W&Yiyk<<<O_A8)VpGetzru)bz2k?mW%XZu8rk%htrG<yg>zk&jVsf9 zEZKEeWdeBMw3Wy57xxHJ5Bl(M-npU9aY~rLAz-v57Rxf%Puk4BV3~LeADa!_mW3Cv znIDOF!z1OMD1$)hqlX(WX%p7$Zcg*~UfMa=KfuP<uyaHQef2V4p2m@pU)RdhK-f=v zdwuql@4Z>?6N8LgKYz&aNQp<^82QtG{;&P-fB&!k(RZ-YPgTY=#XWJ?92VEH(D6%x z4g4k5Ur=RRN&m~j7ts~<E~d_Px8$VzG4xs2)MDD0*ANja=uy0mc@&UXytsIfTKf>} z74L2uM0;&kA$R4t3->@yX9gt>y^cNcLa!AzX3Q)+09$5k&<v(kJ!KcWL^3M^hktCH zF^8SSj=Y-~PB8h#h>Ki0mYX8^solI@LnopGW`LU5LDu{+5!$kLWCqM*ka7^pfMo}F zV0U4lWDGu8NHP#-g5wUf8!2wW0AsN8E2=8&fM(voQNHQ$!fHP$Mpx2ggyZZfAyuS8 zk2oSEUl?gEbS<_tj5{#yM#FXRd8i$g4G!SVU<rP0FNc*+n%V?iDE4ln@|IV?gcRK3 zjf5x+@!DM(Ecc=u>t@fPa2-^|mb0{-Sbg%x#f3yI_d~5o#|FyRL;0K}Qpvf3fHD5a zK$<e!)hADMY@yR0Yj8NoLmHtp<=tRGE^zlkMEP9!#xGMon6|h0!`Hic`>hmFMvIZV z`PIQ(gMix3+|acnN*9?r;VMsI^p7k?Z5-f&k;x`hB6k)O$eGFBSi9PHxIlmU)G0xm z#3JEoa;+h~$g(z*L;i)pjsT09Cv5`TGLk8m?xExGsO(@v`2NHg+lrh}ULk}|`b5Ie zwBNaqav}5T_3JRS&w3I6mRIG}TUo<aobiK7E^TEk$?9YqD_78{pi+PZilWv5kXqWo zYSMaC`%x!<Gz)zp+eRex3;xVw{$ORyq3xdYRGI#*t#q!~rBqM$S%7!k(cLSW@PzS^ zNT*#bQ;~$x3C11MsB%m*Kf0(y=s`G()njw9cYGY{GKMl{*eB92^!EyZ?C4E82j#K$ z!m*TbQ^~u2-5lv69yd$~4k_t((Og=)iD5hMMUxxi{_=@GU98V3w|>2gNC_Ttj6AW4 znyN3jTBR^a)B<CxEjO09?O?d;mtmW-^eJF=p}RKC2Q1lSQ}1lLN(P$sFTDkt%7-w@ zv*jeFF9Bg)>H`7P!(nAss)&7w9k(Ja6=^H#<fYt&rCRcwjFhV<^WZ9vWeQTEDGgNo z7&493lg{8q$Zm$@sZ7T28#ce0GIQ}7zYn^d!ExCOp0Nw;GLCDPkypQJ+v_`RkDX)v zeu+<%>1!iW<aAt)J@pY~C)7qeerA9UilXRu@(qkWZJzRN6Y2SykHjp~7O_fV0Xgo3 zQyyt9-qMS>GB|`T-L2Q>(l>yy&GNbna`_r*pSDs4<W;WNO8ul(K{{7ecVEk}PwiOQ zJMvtNs-rTfL+JFik%+_`-(SLm2L4l>RpUzE9DdIncl+K~nofU8dqC5W^Q2P{z16FI zT=}*4i`_IuPc=F8N;)M|20S>dDn|ZtsqMPfvZR}$cX^cN&{olrrFM(dYEeE)PJKnU zEJWjj9p`H|zb%ptJ^VxZOLN;m3+P)ruGxP2Qvrw9*ut{3g$g8$fXWiWm7{vZvVku- z<e@X_JDEGy<`HS+hlYJ9eNG$Nd6zV$v0)0zE_{R!D`@x!Ue{V8>=CP_&bCb3j2t_D z0%@bC-FxGTO%ccS-B8&zI(cd2W(Jh(|H2v91jwUIvGv4~rVQ%bz@yBNDo$&MmbPNk zqkgj@kfO}7aoaC_k-6`<HbAcpX>T&d^}iS@qDjox^&8i25*Kdg4AYKf`Top>#*S}p zMmVo@thViX9iwk&O=tTV950A=qt+r}-CRg}k=K5HPbA@Dlhq+|QNDUOK8WvTs%@lF znrFkp)jrG!4p<yn6ALsvj`lrdZ*S`w)O9Eaa`k$wn@nzYd(&%Qo6{H4G^oof$lv)> zf93D|@0H`R;z!>YQ82!}@Lv%8k4MNDx8kmkHs@KxpSj0RN&nh>UxUMfE9`yYwoI7N zMfjxS?q7rW!yp~BAFi`hr`v!=n(g;IsCsrhNvQI6pa?Q$%6XJqMn`QP3{4dpBImz4 zj5^jut$_=zq|48-&v0}=H!X75nb@4*;%9$}#z*IU$Jp3S3kOmMhP0=0$!uuZk#`Z> zbSIJ>0QYs8on(~JMYtW_x*HZ^H$0jzpKCkG!=r;)2OuXw%Y=(O(i*sw$Fd5>L9pxy zrgtDa3co5*{0^pF(5(H$Ed9#4yo{Ai{T-av^;VR{PrdEq1vo$vS>VB6Rm_JbgLhxW zsLbJqc)egyWqC0W4kJnJBFurZ6NYWA?PTKu#JlgkGf}+i8-4|fE?rzZImnv<o;wcj zXg768-;40j^shi^1F20_Qr7oE&IwHUW>WKFW97}{Bwb~6;;R12RQ;5}y81zLJ+E!^ zWXn`+nHHA6Qf?@ZD}7+_F|V#L3qdUYkj+gzl9AbVtxdhN=Bp*{yo2_vzu*!)#y9br zHc>iV1S-jC9eD(pBIS+pqTUY(+;(ckp&K|~mj0MbI4aQ)A{x`=f`&HCLcm4U3(~X5 zTC7+wrwiqSlw+3kl(qd;-4n9eu<5FNF+-+=B`Z`Gyy{l$#$==)Hwn;~i?Wah){8|i z^74+d88$$COkLOX$j21N&wRqfyVtLHvcwIH`o6L+-TGPDr41TsOj?#c5S~h|K<aPn zR{z+M4UBxJAmgZGnv1u7E5ti%yV#K@T*KRomC#WROF8Y`M<ilJV?XT1Nbu0lCqx>Q zq4hpBQ=R-?OYagXQ`<&6VjsqY`j0ww{1%oBJfIVQpzoH^syTw4@>PB4MdC)$Ba7@& zgnnVWMkhhG7{2*cBlza&9@;I7yXb^oj(@=G4QqFiBe&x$bq-J2+%cwX{YU)+d*GG^ zU<oUOLPaiP9fi=gOoBRV#VxO`Q{xS3n@BS->Yg!72=(BAK>mU_7#2gnzbaGT_Zt^3 z;(Zj_Cjs3M@x!Zc{dr!-8?uq5`pu@SeU9?nX^%4WUlde^_Gv$|>Jy(HecIEx*SY=! zV|s4_h_Af*pgbzCnUGw1@N#_4A>h=@XD`&HQGL~~L3yor2`D`SCFz?e%#9Oqrd;~c zRj<T@VZD8r|M(?!N@-BuB|tI0z`RHQ$X)F88=o$)e^3bx?GAMSx!|UK`s9LrsB|1V zq*)vGqTDCZUcRa=+YiGia9*UyH}EFZNAJYPV@vHhGA5roc)`#1xBct`0G;q^XI^=y zT<t<dyGfjJ?_h&?4{OhRDS!C7jl#^&#>X*ic^jY3m&~+V8?wf_HF~k0NCZ)1D_2 zehYuf!kD0(v{U3c@IokKY}S~rSMd*Zdxh<7ac%E9Qn|&A-qfr2iZv=wKN5{d5k0&- z#TdY36lrOEq54T<=}hI&(~qjNuQoZH#+HGnTz?)$@dwryZTrH7I`zRBF~~%mjQ9Ad zy7@}B>-Bfs=@-_%qx*&?HgKHo+DhGRCo4-g7x9#dqkW!p^TXJD!tfI(hizehn^@Ci z9Acg<%*944^Vqb$*>+OiTfP%wu-!bISK5}wmgy%NtM&-Fm4kTkx|X#K?3c)gY}aui zOgK4*tRBLaXJ74i&UJjVzH_c^#~h07{I##XazX<VoI48Ne&~~{FOfIjA8~U78iwiv zP3)O4P9opjY#^^`{BZq#-1@klQV;4@PH$X#4d!_4k4zY(+g}8F!fVd2^TBLo>73kl zUVLRy=E$vWwKdHBp!O%9{si_CesCmC-Lu>0|JmeYhi_zKghBD2@bg*S82L!z8Z26U zRA&=B6m;}2s(T3jEYs*eY|!xxjf=lzQf4L~oQ^aI_gK}XLh3k$G;jwfB+`LPkn*GE z&H(hI=y5Q;Br0~!m(s6Js&{lZzJg!!wO1>J@$Q5_qc&Y`Z00mhl9NXh#p$`mS$o?V z==TQ=JFLG#lXqTSpwkI`RO^Ocpm_7<bB>!Vl6+#sIxhfiBQF}XY*{)bb+FT}>Bx5I z>6Gc18H76cWip?Z$p#5&@6OyZ`8!BTV{PML=b*i|$N)a|rdwBw6h?_A0QXP`+|YQa zA6zIbp~SWE$F<TskCUT%?4ivz2)nXJ{!BQ~mGr=c3vgmd!>|-iUX`U2*7{T7^a`6w zSWeLB&ap%s@VmKFij~K~wY%57@a-<PGMRtLM>D14qPLSS{G5z3A-QY7B909KH&!|! zPb_}}<4rDrV0r3eJKMHYL&v>_&L_oj<16o1vp8Iw%357_V@%vEI2`=7)!I5_+6EDW zQ~pw39)~TVv7%nvA^PiQb{cdjX`jbYrm?kV1UWXR@HrpEq)T-ia-5~lN_!X9gH^K( z)7Dd@D?>w)>a2XLdk`KtMTdd6TKM1)-w(px4d#JMap4OS39zRN1jYpx80X{eUU<5w zH>S<~6JOdPp)IT@qbv}&-aE6=hmufFo$3B5SI~ivt(F|+wySlrF#&`r0-34Eokh|< z@t{8l^#Yk(wD@fYFD83;NCJ#uly`9eHSC_J52zBg{K_-r1u#h4f+L2MdJ|TnWDqJ~ zIa{Yr`nP??F}NEb<_#~{a59{W*s7JYGGS{sJ-xGjeqRA!gVru+dxwy`@F>y6qf&S$ zC{cJTsIsIjqKs+bD$BM}WmfKyojxE$`v3OZ!C5&=VJVHR#s;;udpPHKzILoU$|x^o z=@{k5Dl<puYa9asj51d)VWZ`tOUpAZj(lEd&7Sk%0mEPWmg5F(Gd7TR<&e(DM`|Mg zoH4$mfdYvZc;qOJ>Y<Lx=ve1`c8s5trUy|Ue<N1KKtorV&W#Z_NxFf|`j)=Pe3_r> zWn+YE4aXbtbkk?Ns`l(T8(@s*_RegifMc(8;jfGx$K9ZNnT7JJ*Zrwp=Wd@6-F}~b zq+HQ0Y9uW+`%tu2cMp9zMgWd**n>I^A{7_s=Z2kfU)yzbmqU2U^?s1*B?JV@!gCnn zr5GaoLcen2c9GY<;rxdcutVEjpGyxECbFUrZD9Qi*Iiuf_NcCw+m7Dxbz@2Uy&fB8 z{zMMgMBnyLq=9GrP+L(Sdy&$wg{}O`YNa*{5d9lw>Ze1DKGAp5CwOHuZ#(DbS0Qp; zL#bQf=iEB+?33Dq*nTcg<s4ZBA5#ZY;ZheE#~j;nss>p5HxS1Nn?GrZ<40_(to0f~ zn-Ik=_DwJ7ps)R~K@V*P2LM$`eLwhRT;=iiuamU>s?%-~j6jLxCR}Bgr}V&uM#h}* z>v~jq1g>1-l=qff8y!T~=JW+y@_5CM+R$VW+8dn8T{{Ok=%(7X&<{Ta#7EIX8@T?b zLBm7;LAxNw25ipxv`BTeeQZbL^B@zy%h*WTi|RZvLYqfL`I~}GPQaWvaEo79=eoeE zp_ldzXl>+J8iH*vU)6BjvhVq{skS)UH*Km9Sa#CfxmjCA7vgLNK}cHS8<au&<mn6g zqaP`^Z)Ouge^zE_*Ka^1n0CW+ZImZt*=TUH!Y4Ug^VklB?G3M77jbR0Hwn~5f#t9N zc_;@3!Lv>Z!sqq(xqfm?)#mb)pRu^xPVyDU>nHo?>1)V5G6~!H9-i`sue>ccL`Gt9 zkGaKq8_ja`f0yw)v)AyT{N3$84ZtIxzLAZQKlhja*024WfBy5lSoGvo_100YlGmZG zC8(H2>FI7wb9V?l1n^PWHqb{EUsZsxC%2}Yh^CFFH<iet7alblm>{I!0Z!06Iw48_ z<hO)^3pUIwGd5h)4-oy@MF*d+jZwg>6Mqrvm9}ZSx2oni4XV<yZ*&*tN>DqX^Xe~O z#+U3a=VFqM(x2va_mqntR#|V~yyexI&z^k7&v1U`FVb*0DD0+)G~6wft|4-g-n-^5 zu6A?8*K@LKNk`8UDGp|!r5#2t({@(}{tPyuSvlq9ps_(%xvHZBg2$mRx;AY)9~hgM zScp<k?%KFmi(^^j6LJg19{3Zlx(jj)-oOYKIjJyKCkG<=I@qTTY==1_189NZBni&_ z7e6*@J~h^xEg;G2ah1zS<C=GH%<CPIXJnG0q~;>c31J8L(zmkp)vtV9_?;80cia5w zJZGx?&OzIyx?&5Nz}KHZ^e-(qyiG@bVWJm)ezBo$re$hA`*00ZkQ&0p!Ut@bJ4GOL z!V)W-AS*MusEZ1jY6x%g;c3x~CB<AICO&K=fh)ycJP#e)n91L=7wX9o&1C0XS+UDn z_LdL5NCtqqrOkki-&wESF7l2<M|9MM7}5bBTp-kX!vSXjFfu>tl_zBboq<Mt{iK^B zPjCGW34NI{LOZ9gqGN(roY0F1p;dCVm0T!vapOU*GM2tDg_F`qBv2q*wsOW6M@{(! z0szIwD}C6(HCt#(#s!k?pdWFGox3)+hZn)QLmatP*!Gf+Iya7-HXN_2Y*^W4sQM9= z$}GM@s|zp7wXhl|%_(g={a;(;qJ+G!f;bi!>iZ;Q%c(MuqyuPQ4|yw=c8g8%e`&Yx zdXeJYt>Sm=D6Tw$ABkGueA&e#hQ~;qaZOF!SZdd?FF1B>KaC&?1yqEV@PyVyPHGih z{lrg(YRDdXS)cwbwy5ZwIZ9inKgmN~g_~H|gp+sr8}-UqM(}k*iJa^A;#x<33lS+B zYYLWs>EAn`XPF^&#E~BwmRglIPfVI}+k$iZKRjZ$ZHEF-i|?sp#;(dCntu2WfnCdH zgM^LZTQ2&puhaO{h;1#bLbxH~H+*(;BsxLBC#HaczhiUT&kKkbe0#vx<h+aMBK^g4 zmzjQ_=MAv>q#CKi1Qj);sEWoUDYtO!3;@<TK)vx{f64bEB5X;-KCw}4B?Ysw$HZ6m zR`wMsDq*Z_gC3l`s!F+%OG~W<Si9?gZjky0Y3z|l0T&XxAadL$(%0v?)}(LEL8Tk5 zZt{9z;^u=-D`aydPu}=6t$IU~8wK8w@IpA_B{3YBtFVj*bP^)(j5`#hlvC<yf5){x zS;!o&sM6LB^H*O~*3vZZoa_acw6?zSGLTPkvJO!eY>|!G_~$vtM;>KZ))NQC6CoQ4 zg&5f^%zx_7lw9TQ$#ErA!ABeI6eR7YPa9K$zi7wKsV&QzN+4)xZ(1dMq9bLgqQo&# z{W4~CU<h1J$_HR&Xb0-gy^8NT;#@PGNNO_j$%MnmkonuzvY&gJCr2`-Q?LAPY%8OF z5Lx3ZK|fCFw)$n=sPDaF<41a=V?Swdpj>p&X|sOAA3M&MPlyJNyms;+Z#zpUZSQ7^ z^Q5*AL7jrgIm{>$$127w@vUFIm19gmT@b1Ce{FNxIPEx_4tM%EXpsv7X|Ie?Gge{C z$cgMeT`8Qw$Tm`T$1=a8;uw~3Y}T^dj%{Z*RO)kCBSOP+X^Z2=rmvXzI-H6}eo|h) z_?<<=6)y#Il7{1fbgtJVt_SyKb8G}HZM@em#=GWD-=j{M)G=#z=vMc})~UEQw|v9e zfAcZUkx6q%*k*|iZk*T_v5V#QwI?5L{>)$byT5ipd$i;?vN57`2>u)R#~-!9bchXO zr_D}0X1ZgoI~m|EMDAh#zs-(ZUHPTql;_K(z1Rf6D{MM3M!Lq2so&8SSEgTsf%2?l z$JxP&+umy?;XG_~S$GYS>yU-hP6^d<K;t9A+r5Jin0Y4%Kk&)Co<YUCtKEh5kt=s8 z`^3l_o)~dc<a1u3$xbPo9qF*p@UBlLtMKi~0VDXp?JGBVQpAmyOl)(psKXMX4KgUN zbaU8kDd<kIgSIwu;OGFbc3PWgzdSBFG%88Y3tM*Oxn)<l*hb5jbtJPTEMNGIVUzNm zY?rpwty6Ym%f+cp`naA0bo8?E0@`*Bf8`%MQ!9(q97H=9lfxdVl)ytl<{mjEamb=P zJ4ra1@E@p5D*0OZ>pYsLy`y_LV+VbOyV=zln*2+v8x+PA0h8V9V*(T2Hd99;7a8F{ z?L28EmCd$6c!97J!C^yaWY=9k(ozoME_gz``1coPU0{U+CzY-J)?c<p8T;Q@gS9P2 zR&vTkvDy??8PPSHC9cQJBb#6IcXCtyr+m|bZi1-bdQnCUN{&35P1?6~yiyBo<>Qc6 z`C}My%nNV{wO2$rN*4|ar2)=SCfzbAJo%-ewjnQT<(oFN-i4gMLZ!dl<oiM_5cpZd zoBT8{6TAz(GCb*$imz1*2*z-MJ9vVZg?{4G&YBm5$f{gJytFSSSUQ1SKJpcklfI_y zjA@oUx@;UfB2VtR(QfvE)RR#6;Kw$l;RcXA@>fNZj==!7sCCok^2Y}Zz4+{+T)6gq z?M`Ln^5V>kCjF!f6o^H}Tp;B88QMvyutt2awu*nrgmS$lwgS%n9lKI;1bNv`*%)Yf z$5)-N{L+`LLO8`+`x;-5EXF9yg-8^UKxx1@nZ+ez1>HLU5RJ2!9=gN~)P*0Q<wHDp z61Lyv1FO+%E&zn}55VwBJZW(!9CDZ9`8o#TSf>rQUzHDtk*fqF2XLW7)vBvHNo((G z;WEAxkM5R@yj{?mnRb&PN5<x~RecYY&kd2JyXogQsPx%vj^MZcGKUm2ukVb%c=^eb zm#;s~#)wahcp;siYvk2feWUM{>#yj>7#$nNM(XNC-T1O;j@n6i`ER7OYLwV!kAK<U zsLz~DI<}DqNEF*0i942ce6UdAS}r}q)+I*K#KK*J{=kK${X5fX+AX9gM@L|V2%3f@ zq3pZ%`JfGb1tBo@JyP}$HYnp8w2k{ESO9%|nv0Lnx)I{>l7q^Z%!$4Z=cb6S(DW5J z>;+8p4fByde7M7o8uo~%*^Gg(fCgaur>q>>OuKlpnm_+Hq|Wws0*P+IBWv2L>1=vA z7D>lH>X%(oLtlS%9y882#?U$!!RAv2j}3~UUMnx60u;LXWQDYiCuvbagcvy}7}^m| z?V?*+Bed1E>jmwXmJAhrOY<ObWGfyh^aBsbraV3?n}B*Zy%*S+hp=$6s@1peDM)mN zQ23)%U$u}f$W;SG6Ts>>^CvF>(hfLHHh)EkZmA4E*K&ciX=uOQ$SVYAWwKw7?}sOP z+sA7AaPh>UhsN-vr@d-~$Z;)8-yRst4cagAlc>GTwQTbN6r2r(qLDE#Ze$8X!9sQ_ zEfF+4g{@BBXz@vi!!84p^%VY^*W281%+V()Tzg8#kk|aVdE09XHp{S+?d|uq{6PFZ zg^~3rc*5I;T|+BFH$s-C8tWg;*VmO*IUEavNB#qwj4zm{b3+(eERUwtIe)L;$k+5X zd+iy~dm1~qSt7o$Nvj`6wZ#9Sf4oYAz4Ao=t`orXbu8r!Z{%$MZNHF)_)BAPy>YGn z&K)<reraD?IB6m4Z&b*~KYwEzBaBzSin#ya6gg&17M(7knJ+7|4Sr99!rWteN8|^D z(M8%#TNx4$z&%t{-9P5Aol6`YVe=bX_QQs#6?^`0MwO?B9K|f}r0$9^aKhSch1esB z3p601nOHan@BBgEv@|kkmzLwZ0@yhmJo3bdyQ5tA_%nU`OEfzO37g3YJEbFSoX*Cb zWpJ;Ln=MR~T+<RC?W&-u<h-<uor6Z!EZ_oHn2WlD<AiaSjxeFu#1-Xhq!Cbl$dUFT zE}6zF*AkM?wf?Hd4mwT-PIfk+lGcU}Y#m_br%g&qdin<ZX{*o^m%N54eLw`eAEvDK z4MiYMK<V$Mi0LkZ`zYm3MEXbManj?@yXr4|f0{+0x+{lI4LB*Pi}a11SXdQiaaJ2m zZIo(SX#FwqSp<p7$o!v$W$x~<_)*uV4B~DstO<e~os@39J0eFudFKepLa2{_y(sDA zQ6Wk#<dUo$wVdh6X99tiGJDeBT$HdXw@+fC^ef*XO}#MGzh$BABk!TaNz?YQAJP_@ z`d~vM83iHj|JWsVw|GMA5@ELF5=TB|)xRV@fjm+r+^4sTF3U4MxDas>3jQtM`*C7T znu*yy-d`wMAE@uvIFgsANBt)YzvOEg>3C$rXnd@`U98gvOUrobh$FkYtUg0ef4stp zArD_8$l}o^NwbW6r2Bmx+Q@c{sdBREYAdpkhf-w@gO5(NtLM^pv08uVSX*MfXdz9I zo?}B&+QRW6{mFWH>2UfyHUzHx?GILyn?9PKAck4*sM_YGFJJ9rpVZc_onyD?!--YO z-XVly+Byp>aPs<E7+EuTCM=`gG2>ihTdcg)C1``%!J^dJanYddIyS0xTW%U0C6A1u z6AXMYmW=$h*NHM<iG+f(ryy#t4M%#!*zyZVnSmR-g$PjUvB0DgpmF`KlQubZ2g1Ct zhdsoSPUSIG`%rRp{H4*j_C#e+GVYPs*J<)94gTQM4*oh#H%CT%Y~_<8FSz6RieHiP z$q}#aeRSF}zZUMeP#LheJf!Ch5iT~=zjHk}ql4ps7l07(pHN+pHc8{!z?dQra2&&P z_g#GbFSzPdc?1+MvH)ZMIH*ruZ4nM-yKN#5<&oJC)+gy9{N+)Q2$FuGA?4#it!)51 zboFSu?IWDz+zhfD9R|*g5%!$0FB>Foh;Y10>|N^J6oGP7sJzkB{yT@n{evrqadlVc zWX+rO6yJazX|oAasa)y*)~G*WeQNu#`5gncPIPsjf02&)FdGLL#G4}PcUQa!A|v=k zzKU;2${fkgV5NMB13X!|Tg++4kHBT%RkBoi?xnuG@+VH)Dr}WoW|H3+p<Q1&-s$Vx zhXjaC!n=Kr(YDCq8l;n>c-uOsZ7Xx_DS{GqZt)c$eH`X;$T+$e*;x-M;DvVNLO!sf zRBS=L`WZg*_ZH_|`;Y`yyoiCY&san_mS}3(*>8Q_!g1*E2mP7$b?jbdKomaX3E$yx z(M=eUQyY0K(?F>s?tj|^hmS1OHCB<r3V+C)dP}6mfej2*BbE!kGWJHO8x`BH`V?~z zI4MiN;WB(+**5N2=0<@}t2?Jk%e?7s2=pezmW^7WS-id`^ZeE|v9BWHGXPl^9AXua zpTb+$@zamEIvy8JJq&A`g9dA-g;`wjgfqSdwR8NkJ*`XHnEZx))h2wPq4hVdoL3&w z$N@S@<S@TBTe?r(WB5h_!{;{>zW@GP|LiB9fA;g}uXo!nIqq_+(Jr>5ddlts{+{Qq z4f;(pzw)|vPWf(ro%SlrLuJ?ckJGiSZSlhfd4-=2EWV`1nQho5nRqjmK6T|O5|smF znaLasmQu;xK+6DKp2l|F+4F?0orF%!0?CC@z74|Q;*Mn&=|fY(k(vB<y1qU$c;L99 z;=t54*Z~<i94zeEJ8;Hy=J-SJ9RU0&TC_*T+{v*n18D~cJGX<2L0QaCW?VglLlabB zwz`Rxzp?hQzI9>__@qiphz9i;ow5q5?AFyDm9am4RdJR=>pQR(-pz#SAX8;sTPRx= z4=L0(=!lbefp^#{3$EcG{N;q1V>4|Xw5w7rlNU$$xS7G>M4pL>*mA#yukZNehaZ;n zQQ^p0DRaT8#L<OQCSJS>ED8G`Sp$%hWv$D!K{5eB{F7Go2F?*~>YHXVqD+|^LcDmA z4EEL;%S)=|nTeBjEB&FZj6vywNfAPRPN8|gbRtQcD2I5Qq##Xow_OxkZ;buP@2`9G z;zAqE;T{rz(MjLVKc}=WoDZ8+LfJhO#8`;%C%^GS@Rp?wwlYeJ(>|mgws(D@m5v9; zd%g6vUc?U{eQ^2#B^4%iP_oe{Dg72Z=db*1n_M(Z>2aaBN*O00NB;w<Eq9Ya2_e!k zAS{dIx$VFOq?-<OJMXaA-}1DGX#Cw~P!w|NSm<g$SY%PO{sKVw*uGyJ#@_@0uDF*t za+|OI#~pvi#2Lf<hC%%Z8v1~B>c^3*OJvp-W)mwv!B-(22bJLEhyEm^ZJBQjz|iqh zzS8-?MxFM1>B5gc@m5x8N?1DKZ{#0%j`P_R5n}X9ZA7RXmS-G@j4mi8Sl=?G3=!OD z17*sQ|DhZGI4NiPzm){_sBA@6E^(bd3o+&PDGKUSl#$IQQwSFZPmW%-FS<b_vfrTu zs;Y64Q!n<+R$nP?+XY7Xw{GIA&PnG4e(JTY_K`ki8M7?2Z<LR!V0!o%yD9C5ox7Rg z;#Rn93OI)6j_GUK{WW%DDGIOr)N5WMD?QnS*61${%k+b8iuA^auhhzK+oom#uqDBX z%o;)It(s8!6gb|gp8bj_wuVo96$Jm%m%S+CzYYSV|EXVstvlKny-b&;sBU6FVC<Jy z{m?7^qVeRUO|>CuJ>1u0{H~9OqxNnx`ZS;8#6DH)7#&#QgY)#sC$IT702#+gZyGpe zwpksEx@PKyjGM=khe!JjVydp=fddV)P!si))O`ZsD5~#s;Vo3kR8i#ks;F8ppsn9@ zFr?f%A`vMax~4*(`5Jl|_fgcx`W+vn`$a)nhWr5*`JzivrLDaUD?|7x1N>@-V8wP4 z^e=r31luDUjKeDM(hteXp3I7x*i-pR%YKvblSH1tpz&=Bg{CTDV>6Xj9<)V-#m-8k zT`Z%2S-g-tZnT|&3u@=i&Y^tY2j21ZjpdCTSz9TW8!OWG4hccYj!gsf_3vyOXlJd4 z{j38oePrhV;_z~5tSmWk78V`ybeM4jjTy8u{P0hnCKGOySQV)qsgOH!hk8T@`YrH2 zmDKUR@<f9m6|?OeB6BKSHjTCfd4yX!;Rw3AWo+^bPNZ9I*}1u4I@c}3(_g7ky=dP= z@RZB3>=<{3-W}N3Y{0c1w$g-#lCKOcseGYl0c#{fWwrqb>f}M6a+7%5OC04c$kSXe z=|kr=Q>u>o^}kV!_R^1Ow>c~yF^hQ3PkQCA9qk+1wDU^jktP%5^WT2<&ra@-oBGB! zMt<(+e(ue`{iVPEn^^o0p)X<0algT?3bk(hU@A1K&UhE^iuKs(Hps_R)kE1<lWPho zL8t??{)GCN(qKw2mEsMQX!5AhqzJ#ew2rz1=^+jem1#%Im)S!wUtD%z9f^UBQ7WUh z+dDR?wQk`7shzHtt9D{vkD~(xpFy?c3kAI{y5<qJ+1a!c?x5vhCR@>zDH|fd?PFjr zs`5P%Hbv6$G0fsRsXSwa6g$f+lN5>Jn*j!1*K#@Kf*>-Kr<2MKjLNX`Akr6xm0@G; zkPGF=C*2FG8Otr=v~>$YRdkS6bP<g7`nP>b7(-x*<>ker3$Dnl+)j?(X$V|tg~#Bg zLhX)5YQ=%yfvog^%OjokXa2RJZRy>`$|d~{%#k}h0~#T#hdPMcMP?QO(uHPUqhZ&c zM+C)UdV#k0=G+X}MJF*oON(VoQw5-9$T-8o*Lg<j2E?IUx%4{+dIx4{fHv|kZR>#w zj*DNgq<|m5Kpu(IRr#lkVu{Ob7ZIzcFrgr>iw0phG<Ex#6=qu3+CoXuR0JoHn_Ym% z{s`hl5t<-}k9p(sEY8(YIkNWW7Nj`OQ7KQ0*e76|3pn+rPU)l~o|1e~ux-`p8n1sW zPTL<k+T{zvffL144H>aZ7wxtW3lWZNkl0R;>O#@FwNZUKx&%gk7oH&H&$dRt_H*?- z{}$eoh;q^2e7b@pkuM897aM^bc#J1?{}YJQ#msZW=O7YVo}rVr0?%thvVDAh7BN04 z#r00g)i()AY4-?2k+eB!6Z>4!#QMB<%~PQ;L04`L<>!dqu}5A@gn;(W-_(N=c%35Y zl#kBRqrPqD69l~zm9|4spZ;>8>E?$QJ}%TNBd{O(m43zA&^Cv*JVLoOhi{--Hp{55 zGMq{7I-;><y)dw@3sDVZIaH4$MVzJ%e)TnDWw5ujR-Eul$(%sbM+_Mo0QZ#wEP2X) ziW#`|9g8<49r|*($Va-=3mGpR0@^T!G+IK$hny4&x^<STlXe8C`a$22an9eiVv(xr ztgXdWzr-moL18jSvnk>)CitBU$N1tZzZY;m>9vP^mA-w}aWD8R%JZ|5lBG;(ya2gj zBgDtYwW&{z-f*$h1w4!aij5Rp1cPzxvKflfA<R#JzItqkj_Q_jm6OEeM;7g5MQlo0 z@{}EHFMY_u%GI;;gWv0ME>RE1uC&46r=0Q0{``t3Jw9Qx-%bAyeBhTEg>jmnn`fHK z6C(Ikz9oWuEPXN-c&9p>BQJZiz_xXqP-HdrL%~U@U&cX482h#s(6>29ezLKZ*0~&q z{n{?psG}EG@k;HHLg|z2X^Jj&l=vr*;E>?NIseLAnHz6DPyrLX@FGyZdG&yxVmkk) zxV1@pQlyR3&cZK@G7u_Tk|RsYBdjO?M>jKr7KEm;hI|yyQVQ|@@ag!0@7p)<>#R#1 zAE1LdN&o;r07*naRJrMgX9J7mMGCGiyfiJy)2iu1N-bb*7&e|J$ls?dGU{j$KszrY zN5(M;TUMXc*3k+4*hRXdXE*@6<?5e965w6w$v$u(hn}#&8M3y)|CI}uJ#ZbnodYty zs=Nw|v*QOFr%sl;iPC!Vky(CHSETu)z;VZUJgTE(WPxbo$|$~!5{VB^=8<*?NgnW~ z?X%(=yHU`-B7S|%I{Q^#388HlK9Y@$o4(3XyaL3Y2&AsIO=YYc8IxlZ*PLS`Q^2>c zcQe%XP#Nh~mTulCPu5AqhQ-;BtJ;qZ(i2u(2HC6uy1s(u;2u1EH3vL>%QBx9JM~_< z59LE2z{*@^!L=+QI=jiIKlB>wxjMgp|9^Qqb6(xH>@1&dpXS~wOGZM3h>!#lB0~QH z#6PetB#=oEl5to8!gd*fg#jB0BbQ122mBil1eWE%P6#aFgvd?Z)AKy<JH}dTH}}@9 z!spDr*P7kv=a}uczV-dtKmUzie_f!z{`)687#UH2AN_tdjYa|O@(n>J7U&@m8+8oz zQ1#cAJxJ_pp|2I|s7IOXks*<VknY5K%C-8*6_?0e(7T~+UcAyf<&<w6YGQG>%(QhI zuIVlN(ecUaN5kHMKqh68!o~|>J^}e0@H#XM+&8ggq;gt4wOTTiKugpe(5$JwIw<WE zBR*QYozFpFx-&95(N_i+^m&xaK?1sd!jws94pkfgHEjk5VBVV%m%q@?05tlyW5x!7 zfJryhYa0hl214v0u9u6pq_q>*)n0P4Exr0Q#4gyKK&MW*#U)&AUn#wxbqlvNqgVjB zNkiR+RtU~5@MAxRN^NG4pRyZHn#moLV9S-lwp2grxnct{k$HG(B{yr`aL!;o@QS%| zbmD^^_TF-8WgPl0Bz(bFCSqw~qE4!PnnVHg00&gZ4<Ge*W~}|RgM|1m$;rA<kl(fk zaV8~WZQ=ycja?_EnJ_9<1e3ld-bD*uMXfk8L#DL{dI@WgA2Y%+p=5JQxf9QRhdSTU z9$5!zF-Kmr0AvAV(us76q(vr&0Vv%zsC~AL^nJw;2h1Lds52eviEWVY?N;8}(DqfO zmPMvJx2>~HP2Y{TUNqC!{FWJum$tG+L&w6}c^62FpZ?}2OZ;iqEDQv<83@(BzL~V+ zguGkbdh*ACNa{Nl0XR^lb7YQ$^~gHZ6g%yTZL0(I(D3OT<8U34l_kYxlk&3-Wf3{` z8=DH^UCj6diD~sMF&BV9drOFanWCtC>>2!_TNW`aG>sj(V>9HI{$90@@V(+81G9@D znkENmJ{p}*cC)xGjj*=fv2dRBlaF7KdH#_%>${l3MqVFqxWF;~$WIx}?|30C%Q|L5 zg?^KuZonIapHkf<O#%u4%5%!+OCJTaEQf0DMF8v~bZjA-G`OTeZD91PW8*k{1<D`! z+H8CazFF9H7)|;(pn+oSe9<FqF$!p>=or<;=MhJkgp@a#JG%6fTxGbFPbPRlrP6xJ zC6#h?S`_6~Bti8PpXM-@Om&lX2qli*!g>Kj6EMg6s5l3ej+=~sju*kPGiH3!mUhf~ zZfT3(HhjkmLA8w`yoF>F5_=76%hx~BK9sj!%ZcF4vc_j(;HLO)6j5`N1oB;pEh*zA zY(4PHrd8uBBUmIFfXplOyZSnI#W)`9=NI&}GX}(Bd6Mb{FG+m)k{2y<F!F&HOUHL; z58or=CK9xKl}10#A*tn**@n`~;Uh9+j7Kniy`g?eNsL}GmAPtlY#m5sYB1I?do=~? z=&n3RuptTY7t-|$brXj=|EJu1O&Du~MZ9v5h}kCJOh^|d&?B>z1Ajirv1LPGcuGML zdnum<{+j?caLrc&$~IU>TKQF|xvi`$o6|=F3{Cr4#%&KY>;sG^*>nobp5L@<Q)Y>b zkDdRm90@eaq_bZ1X(0M-*Foz~*Y;gm<g1P|hG--Fqf`ebc5B)8yJ$Q%Nn2GB1xirw z(yVRL_qGn7rgz4-*FM(g9aPeZ0RbLaG6y&p<m!CT25$fJu+(3r3=bwjIf`@03LS$@ z5<C+vii~M0iztgO0SroRp*!#vWDKO87S=dp4Q*t+`Rlk?r63|5cnNbi$Uo~q?K5<Q z+kJv^#7D404~ZIEF1d~w^EArh!))>F@4i@7MY|uW9Iol}WIZ_YGJSs7(S3)qE*;~n zpX9-nwc_$KKWX8@3*i>mHdH4MwpTCnYmK#wX4*cnZ5h6yY1_7+xHeg2o*eolFJ0Ys z`lJUVIR7s*SpMvxO}J`?yJ1YV7E5(A-ivXo@-Be~^J#=17Y+E`D23>V>!81+R)a2V zrgSSWlIQ|E=xniVy&7$qdE7np<6u*9I1WggK5>51l!87W?2jN9UB)m6cAWf<j^p@t zpbW1LWFQ<<C5DVmu!H2Zhn>QO{)U){j6Cg7AT%5kvow87cOO&hI|U>bP-6ys)(wGk zqVZ7V8DE=`mp1M~Z3Z@Frrw~e8L*OO&~ib?;x4`vh~CoqXJH4?44~JxOPfM$%N#&@ zfKyrrsgXJK7~l;QWl&r@mzN&Wpp07Q2r7NaT5fjD7NsmC6t(t~&egA$Pac=lel(Da zwdL1Ow48voA(Iw@u01;`4^Qf(s~x!|UHgqss9<F2q>w=~0;?kl^@oO!Vs-;a5wzS0 z<)v}hX;06US#numU_NCN-%XU-8n12b!|sxTdsqj2i$i4mG=P?I*|sFoG!`I-1GJNb z=N#E}si$)1-n29&fEv&jUz-4hJsxL+u{gx?3Anm==?9k7b|lD=7scXhu*{J1aO(Kw zI*hX5Ssj`bCN6J(b;rXNW$PsDr}r$pLCj<*O>B`r%JkvLloFE{fy9aIcLfA4pcVA$ zZ>{-u_r(iG+kt=6F1pgzDr*><XTSkqq@Sw7Sl01L6&wS&0wMm;r3}*4q4!n}y#njY zg}<OCDgD}}v{HDrP2?BbK2`~ngO^Las&{TsmBA30=r`jE1^G#IHX?Kl{8Y9xRw=(Y z;I2=RD!+&aUt#2L8%Iwd@~O4OAy!%7nFWh@$HIE)5~n|!FF(~!zoERmBMQax*)oAC z2iBk+ge^=9Lyw#7`+=tp94FQfq|Z_@e4hH#2NU$s__N5$L3!vTWyU^UeRjhrs-N6{ z;FlD9$z>0xXR{&l5o~kyEq-h=^>`HhgGDCxR|eCuFSxP6#v!L2B&yCx6MEXOyo_?J zGq$M>YhUfRHj{!ut8Fk9DiASljaD^SM(U7x006Yc$Jf>Agf32cnd6=I_X!6`I7U>5 zg_$^Y_AlFwn9kD}S*XheuaPoxZJRp0ER56)*)Up2h<!j!E@h@#XKelUWk=AkiDsjb zY%ie}qCi_s-O}Dz@X$3bs73GrA~+YKD~bTpG%|e+z+_E<yv{??F^`de^=mIL^J^1% zFVcISg5l-z{sPZWefLWaMU<0u4?ggbLu%P6w-?Qp{(q#+AATidZJ>P|?Ubu_uh5}0 z{rET#13%@;FCRG;ygr*T!pbQQj0ZHx7Y0_qmrFXD%*!5_rw(cGj&02C@b2cGz6E|i zR5-^9Z4+7SFC?0-jtGNrQyxKO-q4irq=E+=Rk3>nN^yWIUv*T>*r!=Cf?Vm6mTgL* zsjX<oj3d!&5REbx*Zx3BsQiI5hX<se_#{;3CFFFi<Giza8XqB<p-*9}q|6_6YoF8J zwt?6Z^j{bexrK~<yFSr|D^cMLh0nbu(vXii{vGesZl6pH5;yIa7lP~Fz-(}g(Rfcd z&3nQI-WQRoZ!Ytjo>(~*KPou>kUsQ;R@R=%qdxg34UqC=Jgf3Uptvhb+PIV>Q)oye zAsi<yUX#mPT(6GzwqY+BElV+qSNZH)yS{T>=`R6Eue8MPftGUjJ$kiAZ6>wy6xA|u zpDM$lL(7j}Y#f-CRSM->d;7DoS<AZ5B7`1oAnoO8Yx(3y?2e8pkAEVII*+pH!_$7s zZaYFSbTx=$`7wu+S0;lz!w>k~Pn>w#OFGW=>dOVr$9Io^Imn;r_DK&$e)gaK;-CEB zH^2Yq=>Ofwk49srd+LmhZk2D@ZTGwd@{Jks*ZAKEc&BptrA;%!>yCz_COIdmU9_Hc zsnQRst37nIuI~3OARmXN`!!2z`2sga(V2d-AT8wnF_BecOc8tught9Mee<SU=TPY8 zi?QqyIuK+o69GN4)=Qdv=oMU^nJCOc)F%f73yc%I2O}I>IH72lSa8g;*0DTr@af}j z9Z0iaqoZ1%fq`^G2a0rfJ2C@RIx|eApFs^;(sz*SYD6_GIk>j{Q&y^x16s<U&KaCq zb>w3LX>$o5B17}q-toJL3ykp65ohRa++u2}JA(S2nd)!ZSs4Ds5zo5XNJjEz$m9=x z@omda86>T4+LwDc1%J3kkI>;pwRPGzi-0+qhhi2QZcy^pd|(`$JJ>R4JAlq2z5``# z)=8&!=wvN_6oXaTN-D^l&Elc&6&LVB7tw$f#WG{6Jv2%nG8q#Pt8MPkO+PUkov9(6 zPtmAD(*Vd`n;QpI9>*na!%=S*z`&BUd~ZpcCs;3C?eA3P*E5PU?SAAfzw+$l<YZ>s z_MI&yD5e|kZiehL?Kk;q3e2Rhj^8H4uLED+i(`3w!vfM*ofams^2>~Wak6Q4F`?}& z<UeWh;T2j#%{s!$&=_5o+tv?E7Ikhyg02UixTaU<=>`@Zp&Y$871#rzjLurYDn&ox zRQB?6Skm|GACcgoAuDaD9K>00L1PYs)vY~&)}+1*4s`(rV$zfU5iCD0+qVlL>q8$t zmgOa=2vsrUU)nBgoD0KK-UwZpiZ8c#q%^X?5mx-x9J~=Mo43eP=_+p*jTEOo@KBV7 z{|3t%s*CB=&pmY!yc;hMUh~8V^^Ee_jJ-!T`+((HtN}0iQ0Ar`El)ogJ+dICE(<?= zar;NHs$*?vy7{3PnH6d4Bcpmnrz*B}S}=kLKLQyiSwv(F)Pdi8b%-LPO-$tt0-+^C z^f9a*69bb`ls@lQRyyWGmA2OUUH??h;0C`mtc#zGjFq!^woGLZR?O;Q+HB`p(jFQN zz(>b?{YqHp|IFDyBfIa|up&c2XoZSgLa#^?P9?YHljM1WmzZA5*Q98MvE<ZS5=axb zLf+kiTvFRMS{hlepw<nW2Mwfu8{AlUF!IHhullQ6ZyrB-1O6)yMt<r$=*xRlc)7Im z%li<u1(eCSe&xGI;-gexu4z(uU@u3IXqUE=<H!!I_|B2~eGVn^1e(-^;nFT?9LGzb zk8#nesTVQ=d4ndARZAj;+~Q`UxZw#vb$5<*^RtH{wzaxQC=`ji<Wg5JXvH6d(RYOl zWLU~i_9yP*`PEhrC8%v>aZM|if5wMi&5v@!yW^@d_-Lh|@A;}}#sUvG@J)R;{Y9f- z{>Ti&u#^=@$NLj}n#ysNa`k`ASEqWo=-fu3jNoA~8_^=CG;EPbow~rp9=5r#V2l&) zSQ5EQDYS4xD6DLx3K0CHBLi8={fpgGMlSDWvaapn_!xP^8@cfB&ZULn9$ypg*!;VZ zp3U@eP?Ggu54}|(zLlHg!z}S0jL1Ji5Sw(Jr;WEAV_)UZRU2|I4De62(VY-GYnw}z ztV?5Qh4Ij-zTr8vgjXW<-L}w%(IMsdi}d-vvg4jl_4ommUup3YPuLv12e86ewziI* z=wh%e^Amkpn2<&R^*3m*z)WoUt*_Kn;OG+>$zOSe24(u)?vv!PbEB{a4`q-KWv=t{ zB$Rkw%Hl<x@^~#j08&pxnR<B8ava$F`9J>oU;Gp0_*CJO9*jijkB|Nb&i6A>&;pF` z%|UbNu6M)zlDiQ1^Wyw?c!3_24iu9?Y@NBmGSZ0-;HmriXs~VrNK!{i=}Bu+1FIu# zvWY%kxAIKgw~BPQCHAcl9smOWN+MaUMX~KW!V2P`xCa_5ZN94DcLXVLI@`WZw-6%> zG1D2ULkmh&b==wx!(i*;Xs)12Oj*1jE`K|3IxwB`2~UM|Q(d>WUc%P<M2UzFOkLp4 zB*&oPpuQb8GCMoF$RJ{U5ZUG?!SJscg!5{d1CSH413*?SsS%=Z8yDxqJ@cV7rmyrv zVxn!?sZ$956LsngAbRG{m`k~Kp}7OP6k6sdpvgtA3}7hDcsI0_Qy$C9g$<Q15_$+- z<yYLuW7`*R`N~55>qXLYpu|kjMnnrTiTYOkzFFUi)XmHA1vVtfN;6+u(P6kES_WMu zl>@+@7|?*qk%^UsVA3J7!eXDDEMqg!;t!q30yT1mN$knw!+$L-yfV0v^n||Ukcb@S zqMS0QMsC&_DuWY><?6ZVR_oWD=+b5-5Via+zu)QiE%Z<9XW&|0UC<x(4RVNW4>4S* z+(4J+qm6^dBrRk&IrxbizqFIQTb{2vsk^dDHOx|5E;6~4X@A?OZQOpUndOvQ7C*^Z zaw|wiTCuM@F($1|kvcMgQX`CDm5<syjxSnETP20+ko??2eq^akz}%BZ3mCXREM}=G z-@W=%2J2GqEjpQJTmxI_o@8t@tzFyx{h3b66pMzkk2y|$OrImBEH-hx(<aj|(r?Lx zXM7q0HngYKQCbcL@By-Y0-Q2IsO4XpAJ&1UPTALYvlxYbe0Iu-68zN3=RDri5$s3V z07y$a*pBLs+&PGj3?m2FF2vV=N1Eat@^%~(_w{RjrR??V9&Y5NtzamG|MDVs;h2jt zq`G16cb5fY4ghIDmcL%Bm-V~RwNGeEai!^nl%9B22lVI|I;}P^?Stq)w$LE9g-WE& zXa`L`B^@^kkbb4z<<quN33W2M5EPm0trGc%Pe{+Lv}6|+;skFJ66fFX#roJxU(;Wx z@Loo-%$ZNQG?g<XMwpQ(Oh|`7sl--cB53Uy8_#%L;KFJH4?wJUJn|R7T0?vKT@pfG zSV`QrsUN01kU&SU#j-{Y{wd>Gex?F)+``ey$h`JCs&6HZHQJ~zj(qw!du3C9{oV%9 zr~JCimtTB=@A9HU#$G>&_~MI~kG}ie?>ze9U;f3TuikzI8GVIuIG46io>(thsJpg` zpE`-k16bcMk*7haGt@?n1+zbTIPr{2S=^l2`0>y1)F0wC!B0DDJLvDFE}fSUYV4H0 z6O7*EtG))MHiREMGfpALj#vFaLx_bJ6)Z0_a_;ui<gL%fvj#y9RoCX$I!`$MOiQDO zV~}!4x#EzH8xaSW3PNa3>>TriP1?$-FUmkZ_K$oB=fQ~M*b@&)t&~dTx1CZHSjRi& zC*^QGLh#_(!vg7h5c$>XAA;J$F3G4(@FV}yP6cxS{M84Uw5K0jY`a7bSZKG}wEQA> z+IDEzzL6JMC>q1WpTy8k>7Vw)WJ*sP$y5Jn+_nsV$F?B~76c%qjOghLw{swpgAs7z z1I67Z*kl^L<u7X5eCUv084nX%Mu>b9>%$dSxl;?k+OqA33T>|;y|(MP7o^f8sSLGc zeKk+oI)~Y=GY7=KWTo`jbj%g|Mjs2UCEiP#+T(^7Q~OmI4@NArUV75kXAD^rB1e41 zHXM4ZHwA-JUw3Y_zu3=n;DW7%QHsS`nXmGM*}!D2Oxk+=<AeN-hmP~OuOWB>ulyPn zw#vAoPs2}qVZybHk2XDMhdwacl62RJ`c;1x8GSiZ__X1ZAB?<z{Nek&S^sBFHR=p! zzDC|W_9fhh!8}L#T^RE^-5G9WQd}I9C+#1Ncfywc$sr@BGF?Ezbp$!($xv`2u4v#b z>J}|f%eNM|5q{&qQGN1Q%=>YuoXQWtN&7y=!zB;XxecqcXJNctlo8K%V$=%inTaIz z&F3J6ydpX<ZID(w&vba|oa{q`MZ;4D)E6(FKYGJ;^ZF)}h=Yc5dU^JqOS%wuQSBpV z{<Z-^luZWg@(!*-@F?|r-=got#<hzUjjimtNXsL_tk9N;PiO=ze3aNpBW1+-6vUHo zt{semlw0A1J!pi<Nn1HGvAGc<NW+0q-rC+@vB=}r)a~FcOsolva2;S7ES+5MT(OmK z8H9JRtzH?3v3=-D(LvCdO?02`FxI@v!32*CS;UbBD!dUT?btzG8`&NL=HIB7Wzw;& zMn@M6ITV>U>pKa{4`!tyj(m)UQi^N^Xp~e42i~DQZ3L0L1zngTln!<%y`f3oug~CS z8L(lDUtvR_w7sFzMUu&d5sX)l)JT`h$M!K{)Gvl@Xo}kiBGt%F!XmG>krPK3UZMzN z|Hv#Qc?dhv*r_OOu$<Hf{M!J9wh2hjp71L^YT_ac9Q%%aS6)w8;JHBepv5*RL2aV{ zgjwjROnSN?$Rb}$<Qgz(@@HSn&+SDpZ@?riEIEzPq?jqY-mK1IJ4B@|7boKKq2p4I z2Fjy>4cf<rK!R{eO3-FtC!M-v!~Yg%nGy<jy{Gt6M>6sOL%aJ}xoscKDbFUu4IP&x zbzR}C*R<gv9DhnKO#BUbyXX&ufRzzCY9Bk>-0BTZUi_=hN~~`NUuF&U6&EShJ^l%7 z79-N&?*oUM=7TF5WQ3cc2fu*2_Pawnx(=U4mK0x~%u^cRWDy+uqa*F)<xed;_6~S_ zSX?ESpS+USH@9sCRt9N+Yn(K+-CQ6tIP-^*^JiRx$JUZK#&_#RF3Ypgivqw{&cE$r zIL1r!)M=lzhBoKlaV~u!^nw^XZ{%_zI&yQv-bb*IP&tGoq#ea+oghg=yAZvnR(p_G zIj{8vRxa=ZQ}S0iLz}kmLSNeg;~}fO^w;Q#VKd-JsQ&Axo&H*pbTeGgX8Oxx`(z5K zQy6VeUR&iQpfJoQ<cw*3>`8bp+EP4%&-EZg?4aJ()fVbs+xf&qd_+0@iz4EdM%rf5 zA*!4t#;a1)oAOOIaWh+VwQDGsyo3f_$jKN**Gkz<#K%W(d;$mg{5sqXFIN5H)vIh2 zBO?aacV4}Go^{R*W7iMS(O-0OoE?)Sb_~g8hxze2bE8k9_%4zgKXvwUy`&!^M$ArP z+d6YKZPY`NJ}GtG+-kSJAU2jqB}=N;)%P8DG6v;@5HR!_wG*39yA(Ax>iFUKi0|kp zT#>S%<L>QKjvE=XG-a^0u8MRF${Ne^RHo&r!Y6c>NMI#|F<ko8j0r)BJxnzWiOO<t zv(E9Sz8_gJrZPo0-A_cz(kJ8vIDIHCh@9z59-3$y%SBOl`;uLWkapk~n*8;kcRY#l z?gLL411VhiP-c6SS!q}<ZIw;C+D1`gd1H^U-`X5tsDkHsX_w=sPl*=$Bo<0IZ{_K{ z)j7ZI1u(qPiOY3@hfhENQ+kn23b74zfRB05*RvqFr%2y19d2o(f<_PEY-`if6G}4P zjG7TfeZ86v;8YhJ_#zfXLWJ5+{hH2)LV-iZ(Jgi@vtgG^=y{lB13LD30O_xriPunh zl*piLl9uO&Yr6fQ9|GoS8umGvlMj00s|RLeU@g4!xUFBF(Gh^!LYc7c@Y7#&2+0^> z92f-A4<fUKCn#ZZlo^-r)C&hq-zR1}`VP8-7X0#I@_YJ9`gP%~zseFel*z~W8i`Y6 z6k67i&bpJrl);DY^8EsSy89<T82Pz>_DjG2JHPq;udv-q)QxgibyVE)4R`aFUmK+L zHncT0T;n>6O_>R}O&MGV?S?D-;-7dKG*3|?mYq?zI2vszSsH+GBy&1Jp%0)t3HV!r z@MXh&`AHyEQ&R<7c<4D<qn#Ne$Cj^tn{TW`9U=N0xg&84<|zHqiHGo(n-lhK*6om4 zh#Dsi?HH|b20huOUK4@Lm5vl6Rq$-6ne1Qi$;u<Xp`|5VSiOGp)uXq>p6E;10~b%v z?QWT{q2=Ieukw41Z3F8ZP!yE3FmybBHNi)|JjoAMCP45QNIE$~M_ACZXr|p&rIVl- zl4HW_iZF1(x|sANxPt}s$cw11JNU^l{ww^*D?y(E(7n_@-?xMQwO?qb$Fp#S{q3MY z1o;T(pyl_P^Jt#DFMrnekv%6jt>ZxC!fHNY#Rl@tfr_;F?!N=9ry!o1cd*tP;E<1s zz)Q!;dp92$&^_4T@j=s(A#}$clw^?sfu1<~306O0*iTey3+<q>q#z#yWihRF<a#6F zKyBH)yF@hgvHiHDCuq!NgQ5TWp`}^;DP#B`vx{~dSG}?!EpzVB1Fmd|q5YJ_j?&qD zxsdNYFVV9t)^8vZ-jTPd+_jE6ItEDtO9ILS9Nfz2<eXo4khgqb;+4ZA>nOC%df;ap zgU268ITZ51$%6y{C}j~xm9Ky6PdS%I`bTUcZvDikF^<u-hEsj$jtoFr9CIc`m8(Eu zEcfD8Stf6(N~BJRmK)pD`fi#$28KHXA{$83(Vps(!x7OX=Z1|0tzkByIg@RxmP!s9 zxl(n=0@x8uN-Jf<qm^XjhitTZ+C7IOa!0N#KwO0Er#{%<aX`Pc<<iFDD{GWYX1Rr~ zYRAMH4n5WVEelpRh27wE@e?16fVG(|C5LWofq@DS=SK(ec6`vDrn7L8zV@!d>8t6x zvAwhqO);|ZZC?6^k!utUGLrbXKA#?~&Vfa;;nS~1_Lpd~fOBjiSZ_a)ZrT_>gk|Ju ze_2Mgy`Q>yaOh9PR@5#wV`q6&sE!_fOR*aZ=%pXEUCXDoi1ZX&W<ScoR#@6ng;8GT z2glF&5B1tA@{LU`FPi=HcAYK}SZy^|<{Q$6a#998nLj%zb(vcSriW+tPi&UHI{d^x z=nQ>Zgfgi|EEDF1v%s+p8htkwRgTrsv2%d^CmuEJO=&hScnp8o78?206zDwmFqY;M z)bX$LfNZ4y7Cv|)Ec44Xyj$ZV8$u64{AHDzOg(_{04aeuvKqlx|DasUn9x>1q)((9 zrM7k4kFf0#dmg1G&e1_?(l#Ux{n{yW7XqfeW3$2)cJY+O61fylBYgGt4Mlyq>X+a7 z;?dvu>7T|Q-#+@`5C4iMp1z_lKjP_;mpSCH{2lPxN*rydG`79h&C?qWQGD9uReq}8 z!x3%ZQzGoKIVc5MTMU0~mVWHGgCBaue@#=@@kk!pwC!x1r(o2VzavC{7$6ty@DuCG zD{y8hTN_n$sVRH;*5?E(uJDM0Oh7%O@45+`{<U;6?<yN8+m6a4t?0)*BY%B3VaqkF z;<`Y+2I*Y#fJ0~OVaBK3LaO!=Sa}`$vQ``&Lj-u&LiU6b#dgTylgW;!iWGaZMoPbt zjyfwNZDO4)-#>SqTd6VzJ_a9O*GyhOCsyp1X=m#@hHks&YlFx7>>TUg!PDamk>%aF zN@^65KWq)n+WTT(8c13DJ{)N1Uzqk?UJeXAIB8eysL2Oj9M}8rSi^kq5P`hEddIMt z57YEjgh2ob)jjIlj@n4N@X0|${WhSnhi##p!`ntihpy}NiDWC23XWaXao4=cd-Mb3 zwJuLuP##^tp(y2r)qneh&)N!2LOmP+F8wGG8OpcvAW`TFBRyr*Z<HYy>Av*Zdh3M2 zH;C;!=B;p_<zKm!y)=&iO#1oIwJ%BEAk-d=tQ_$h^fy+nP?DZP5RBw$|1v(_t%E;h z&hW4;fC8JY9sTvNsj>DFl>QPnLpw)TPhT9}KRo*CAN}0F{G=~lRf<o3Fd`ES_rEaA zKa7QHE{hX1a3=F9Kl4_{w8R)~;2hj(3jT<voy50(;m+7HLn;UUf)_fizl{&!Wj#F1 z7bXOU;!<u|@5=Y}VV(7a5}NCRv~@?()xj^MQ(V=i^uV}~YuVPgNZ6+|4pLu3|ERx5 zeG8WAMf{;<4Sgh^h-UF*p3CVlv2u{trpjdhZvB+gAp^i5mmmO_>ZVh(k-PbDlLL}h zeA4nmt~b7K1aSFg69Tl$-sF+XMVE^;^BIKTk*{OCcT?Dj!2v>{a4BLr=a#ax|70UL zIO?EI3_D3fJp-YbbmCl75lG2Jiwr740i(Rc8E6>@-8lG_hNmoc{7FM`N@(E(o(oKI z&%BvSppt2#_Hc6B%d&v=E@l6OwWfY*PaD!SM+Rl$l!3N&2R93(!3@{US8KN4IAJ^a zg_G?t8;Iac9!#<$6Unp_Go>4r{1mS*?3(;B;VDxbY2YJRgrR)v93upbBH<w$$6Je> zgFiU2kFZJ*?Ijak!Kclh@Y}VK4rFZ<ozSaKFjQafqDkv^Uz5J&x-xb6a}HMQ09qx4 z#RkUoz;;1fyx>zOzFi`6<7e{Eg2?Zoqf|F~c&2sI!G2DpKBDbpw+jratEUd{BqUpW z5a{6f1eFUy599bb2<m)Eu^Sn5o=u84B4WaX&`44Bt#$#)t@>DsEs2nvKVvSDP4t$0 zYEx#py2~rQs09*nv3bG8vRQC?SYWw0E<pWXJ4>>5wrxwwyKPecS3Ys1Hn0Lvl(0At z#gs)aZ4`KH!FVAb{b-6H-E{fWClF5CitUKvr%*hb%7T?PrF|-wIBowdjzI3a1<(;V zZDaeTHOW_aB?e1=_`&+QvHi$LnjK?yQJD?PEQ%x%T<-NdakjOsLq=#fH1>X6@-)va zzD2B$9`K+`7oxLR!*bdQfIR&{ddDMiq~_mM7VAS%#KC>fCsy`}eHzRP^B(;<KjaVF zNh?n!pwjUbGKfK@x1<Xf8dDzE2o(#cfoAMS90e?sN(5_B4l@KEnp-Di{wcSAI4HRw z++d1QLd(>*Ho=yp(;8{0LggON!mpp%2xod^lGgBF7UGvi;hl$`Ax{s!^`Fjny7#)c z^7xqd{u0d_4$bp8zf$AJX@A7Y48x{~lVNz!E1{uvrQ^Ye@6r(JNd~X#8GTnq5hmDn z{%tUI=13!x1qTfIqdt1CUC(%FU1K>OcvDfDrI-Gsg0fp1n?E>H!M{D*_R<HPZ|p}m zJoWnQ1#>+o7^z{G`20C*0LE%#S4?l;ynghC!xCfn^*#l1^OUDasDI(pCLExA`HJ_G zc#z@;2yA-vb>3Rciwa-Elb;hsoNi9(XO8jYeUfCK5K$Jdm0vY$J~XwxMM#;}fOPs0 zt*O4YFMZml2CR)ekleIaV72$G=bRVUm(uqKZt;|}^=<;;4ZN~+WCU2+>SI5_`>h+} zAM(d%BA34E7zv~sLUhmOyhuT-|LbdJLrj7&APpW&l6G7K8CvOa01K@IUDqm<pdl?8 z<<7X!veLKQ;jZ>JR#so$s{Xb~-mS)mDKDU2+u5)DWxHt~2<$kX&2hNOBTS*)`YVrx z4|BBywnG(Z6RN3th?iT0EgV7wUTtF!WX=HvzS=R`Lk<o*KvsfhybzlaBlcbyw7G4m z<N1`7Pklf2iEsSZ_3rtBS7GcQFol{IZBN>i^W*j5ItY#~jyK5R!3g@SANwTQ${;!G zr5Vzstm{^|e8`kuXjT7Xt!aA#miE#w#_lVlJWEen$|a2boM=MO4!kX`Zau*Ai7(gx z`03D-W)EP_GW%`%B_!T*VA?}|o5!~ACH2^?LZ9t1_1dC710Fo`i*m+XX)Ew!l{J<G zH=tTP-{zuENhfR2g@uRn!N-pt=(;X-e!xkBw?w`!)@}y4^Whs>#J@h=eE6R!{=~P> zaxlWXApSjr5(gs$jCCuZ^B#6=c_DO^rix-iYj|R6tUE{z$$_47au$TXlr=7Q@o&MW zm|M$3J)ni(+HVt|o#kQZb->%Px>VFF*1}xNZlxD#o$yjw@lW}$v=;3G{;iUCX<m`8 z^esQ~*gE{|F#Ne8pb`kmZ63=Rqa2Jaj_rqV22m=UjBTzA5aeyU3_N}mb@TDj^A|53 zz2s2j72nJC)4|uANcxL2b|i5O%9Axh2245_nLKJfgUz!WJ1+}n*JA{~ALqn(4ld^) zTbiXSdB<*rioE)kI?IngIE7d9A)VV;AOjX)2q+E7bntUfeCFk+KIpG;Tr@6T60r(p z6{VFW)9P^QP5$bf34_@D84e}RqFdGIq<#@l5aErCxojWnEhB^%17IGhW@=nvDua`J zZSus&^p(p=O5N0vcH8$C$WPU?m`OWz)3hh)`SeKMTwNHzT#-b&hRJSQZX6Q`e+T@w z>aDE)CF<9)%p-7Q)^D_J78Vk<eE1)vN53dat>`Pq(xwzF{kB-rFr^)GZ!u|d5b*L- ze%CXlE9<c#PT?fP&Lg{)z|Z96_s97NF20v{>0tABv_U@c0{@T=+8#zZ;q?;=7n3s) z&jjapsPi~GvdK;9H-wI|kKFWRO*6s5jtv%B9zVV~bL?TIpw<%^f@!-8JB8{Ut1r+% zrcVw~ZGi5RFa5SvS$Ln&P7SEGqO8gs@~4_&*%jAJTQG%GtW5g1ww1paw{2iv84fD6 z8ygE(n8I@R<{3i2FK%8~+uy!n`xvvmoLKkoA}(O%OIiE~q%MxZi#%+MY-28;7>X>B zSN_tGe#gNSgtat!MQkfp(D0c8>H9A%Md_!cl}!~aua5>fc|RR?fhx>?0=tVnsWy~G zbR7AVQM=a0#>(w4kNN4WPaWvH<8Sz`BXhoXrQopaSl`$oYx7q3YhTKxoNX)H|0q|N zsogO)8-)s+h2|t{-v|nhG)`wQ6As<TD-?Oh6&BYC*el@P22Y6+#MREm6l{4cuYA@e zE-mFX6pp)i;nlXvrelGC6W_7MPwwjv9S5>8vOf5wp}k!M`;zfDZ(IcP6+QY<$8qqX zi;K~|`j}rO(f=YGaQcMvRQ=C(td!Nt7L0}}lVH!;bksQ7qUAy_#073}HA?$mxeU=G zlIvm%F+Kb!JL(lbSU{to_EO*VM-YSUV4d~_R=(2KH~lHz8`d-WMDQrPdHNy;BOY=H z`}%S)@`S^XC#(<rD)FmV&mVok%UON0<khPek6y7J%F8R^pRvR>kq1<KXvCtYQc`EI zkL-MEy!}0u+%h*$ran|Wi|V`BL?cXIvd)9szhjl~LYDZ5Z7a?o(Z02jbTtw-u}|B7 z(fd3&so#nh+!3R8hDQ4T(170|t0ehbJuJ_GkYk>Q%oz*HSBXM@<P*<e8~MK>{+~mo zkqP*KW?XhnQ=G^dqUaoa`*Oq5jQr{w`HQzYwV!pYvrpwI-^?Qi5%g>uR^O4IeyrUx z<^iy6D$ItgS<=ti*E&bB=EW`^R7Os2vEA6*bnMewnN{yV)mpyu?<2AX);m0Nm<r9v zk#Tt1Tp!1WZ}8Wfd6$Ok-7_df`{!9UsgW)6Ajh_^?YV~lvHu-JWl(70BQbQg4Yb$N z+j!@v+PCXZ`;4J=Nv0i4Y2u~VygGb+cu2<BWY+%McFMZ#DK*o3$uE|A&3u;+tpK3x zI{w5a)80!{JVWQ%uH1I)5vDo=Gwm;|7{O|B_;g;MHnno#wXrseZ{=`A3It$EBlnhl z-96@$hHE0`3g?YS?|=R4!2deSub%kVN%t15pZkS>^?Sebo4@Mow4dKI2L*fBaUeZZ zc2ts}QO6x@he-?IpxF4hFRheY`c2_m0eusJ47LII8dBRC8sqZQ_)B!_H-C-Sna8uh z4e}Kv>5{x%cZI#CYs=dt4nA9~QODu8=o;VUcPmfE_O)}%*LlR@*V)rD%|sufBU9A5 zW=hMUX6)UPq?}9~WXb!2qIWC|UcTgsk+*Erm=uh&D5fXn>jtq?B*?(&2HZiw0U$3r zf@2?T$A26&?bMOg4GsBBHcnt}66<5?f#kqRi#iu^S<EUGywJ(Tb0%N;2R<H(+`@Q2 z3Xh3HeV()6dBG!;el<miJRS(I=uUpn#~2n|g7OX76M=fm4t7Hck@M*_ZBc1PUi7ei zDq|v&g}KT=QSi%$40@)G9mrgGfVzhUDW3`6l|mQ2qI8n7K7+J0<&_0y+u2FLNi#3$ za#F~m$pw*g3a<>NPo0s4Y(gqVefaF+RPaRzGzcwA1-DX&JVHVzpTs%ALZ`ab2h6vv z^`F`y*p~B`$1zDu^QgCuYZr}{R{&(xpDrPFw#x)%aUoM%mX5T-0v_s-1rR4{p7+@v zo+bLpZ@z8;zBHt0ODO}lOlJ9{*3PISaoIQRFTsQ7PRjCs$`dp(JoP@2r3{AHOdZCc zER9pHTftd~z=9DOycN^9V?z;|Px`o>bfdH7>OS?MKKf}#Wl=_T2#f;`sieg-A<_}d zP*_4oY4Q{oFB%+a6DdESOSf%eT7bs2(LjgC;<hZ}LML`d)oftMWZ^QgWo{_bCNYQY z<QP#J-ZKtx^I$8uX%DU6wpUd9kcT4~Ye32((|u{l#8-XPTA2*-J2GwGmJMh#z?HtR zb17fa)`ZC5pEe3z$91lcAD_`*`gKM(*_y8W&{@3)t_K)WR32z0mWE6mtI>x{#tG_# zNT0a0L*&`R5N*LHo#G`J!&|)kM^SHH7obUMW0~t+TN_!2pzWSd*R7{42aTlD|1GPc zR+9UMATHI?4&>4oMH-Qhh;mJ_wlj_l!f*+hO~TA~(h>%TfNm%ct~SKFjMXUzF)uy` zkEyhW_Mur{_3+hk(x)1H0?_$Cc@9>5Z-QUH^cOogl7*)2MFZGg+;KSmXRb>@<**9r z_*ZH|qWft}qC<f0;HJ!5ppM)ohT3Mss^isBl*D4Ia@P&5kDZYbjp74s9er*t$5+ys z=ZNjQ+C{&S&Kq7B><b@kf*YQU^a)AR?>J<7%U6Y6%jo~HB?p<$dCJ7Ykr%`_K4Frt zuF^v33-avT>SoJBtvrd4P4kZ7zGt9)Zf%zSk2=b{hmx(6Zf$$$15Esf*s^sy6K2y~ z(mE?@sL(e#cp0Ol-@ff9<DKKXp+1mID1(2%<`4ya^dEgJfvDr8<A^fV=BCBjgOMCI zIIgYO)GPAJJY1TWS1MwF^6?&o)o(H>E>Ugc=Fs+Tn)a|wlnZ+LLSC><AF?QZAHCWy z?cdI|6!FxL@-I{Io3~7#h@h5Y2g_{N=s>1;WWm`($9$!hvDNW4pXM{(KI0J62Se4X z9K_jh(uwUu*Kxu5BLipw;T^pO&G|R$H+;}I>vqMZjbCsm;s={K9GSxaZR3^AutMAm z)}tBxk9hz)8H!i?nqD~rmodqCWq%o^qja89p-#WBjjZ=dd(l=|+uKiFe<J_d)%xWp zpZbl8RlcoX85&1SXjez^y$o$5`u6ZS+Y~+gQ(xpXZ9h*Rv5hI0Ms)P)or-eIEuqcL zLn_0{yz<!(OdF)JadaXRKNuNPIdtqeCZ(E~o4$~c_HhwWf0w-N8DGH8B{8tYxO2xY zmI#u5tv{q6zxgNs;$Q#X9pF!r{VWF~N{(IrfKQSC0p`D>NDX`pY*V{WhctWJh_P3! zW~1m_t*^oFkO!_X!WL6ktL5*){(t0Y$!X3KiE~u0rMjKqjI9Y`aN`W)gr*N{oi32m zNyr6O^h>znTYSJ=99!PYU!r-!Vd$43g~D%H=##(DSe6H!DY(l&0*IQwc3{f_hohI@ zS`EH*AP0oNho7<v=55M@WSingEY=(#d<@T1X9wA|Esy;3w0{PC7azVQSrW?Y0>nkP ze6ndG-T`*?$>Wyv<_`=~dB*|+j_|_mfWhdWMXusVK7+#eVfZMx0|J9<7rx{T3olZF zaxl3t*!k(ua~>=7P{hXz9ju*5-PraKZ|yMrz=<sCrE*^vWJ7f}@yMiX3lD{MN9rAN z<>7Y)Ex%GUztW1EPwV9u#eqy*`{qyy+vJ5wAUWt>FAt@Jw@;2}Y2%2m&4!V>b>lsU zBDOOVQx=l8L#|*QIFl=>$wZH(YfNZ6!$`R|P}MQGFk76>4jJ1w(-JZSA6j`yspU>c zE_l$XkB+y^55=&7dUs=y=73`P#B_*}F-(!<<zH;ng7}l=&`CLIW!HawGAC`SpJ7_* z=CF(Ip}J{zA5W)k<;eQ@@Z;E68av6QO@IP1y-fllNt3&>Y7Z9&UQXiu^&e>~E3zO& z{i`~NE?%F$C>?SkyX3<n91masE<Px}p@1bga;2EGv<?7tik;G5Cmnl1NI-3)vBVSY zOjOpCEK}<%%e6$DgJqeY{UQ~%VyOofn6%@>gQCgecS{?QDbv$D=y3Do1uZXt_F6&f zCo5qz;U-c3LrYxhV+&=H({kJPv|sVbG=KW9JnXa5j+WAbrsW>6#Udk*d_vB6!;n8@ z1JSghzPf;$*EXe_!{?zbtP6Oh5PipB$AymBSGpm75SCxYYiK1vi!K5mF54cXpluIM z)D57{2h@uoVB$vgYLQ!SyX{g&n?}9#r7ai0jTmidqZ;HhyhKpG1pAER2R<KZsf+E* zO<Fj4DCr)c6s9EPW=K34;iXvLX+Ovdn;DA)X<KxxG97l_2;S}M`MRGr^uQ>klsWey zb2b@{Ex`J?dUV1D43T^qY^(7V5Z1@q-NpP32_IZ|m&00QupPvvJoCAHm4mCYDTR{4 zSy^H`%PbOR>Zd5>f)iq=CPQL323u4ZXau%gu63;sn_K-;@nVMFB9pL(q^b8)dk;s{ zjsNK5`0Q1l;yAzi?hJ9=pm;E%OXR&8>`+4!T;Ji~*J!j;Hboqm^p|7Y(BVfMK-t#S zqJET|h9~5!3jUG`Fzq+nf6lQ{IOU5UOgeKGIPo*uwehx1V{z_=($EmqUF(>u9b%B= zDWJ6Nx(61<-GKJML!O3}t1`6jI96n%O&mK*4R|m0Tz+|XR#~M#<{-s23P}A6didlf zjSH>hBF6Mr>J)vnDsSm0j80MpDC<9Lq%Dv3hqnaY`!!YRFvc6(AMyd4WgaQghq@lF zPBBHz5l-e;U*npyx|>&t6Wl&qnUt#s&mIEwD;U`z+i`=000yHW&}ii#W(@8cj2dj6 zmvD~1Ayn*decF<~zfVA$k8H&Ibc9bU=B4_q<Fj5t&iBki`7lTk!h8gYP?jl6*C8E8 z+nO37b_m{Si}ib-WJ^25#yyB|9b><;jU3a2F?M~YuP9p&BJ?-(=C5tpHicC}^dhCa zeJ_&-nfh`2+kgdE`iFmxe&Vn1OG7<`*&tv4Es}q2ppU7uV>*BOmdMoan5SQPiDTW; zw0$fK2g<=3n%dS}L&oII5Fd4cS-*2`n>uO5CzN&jp=H}15<BT%NKbOxu)2)c)P4Me z`>>y;<g*=&uxa=W+V2N$h)$!VNygPxu=(4mGk4Znc0Zhyhpr2aOrVp$kMdxNO{P<Q zQ`0TtI+^)vdh74T3$yWw7q>o4pv0?B<RKr4E<%ZMF<DsMExYnrUY3P+&~a#V&AR4T zXk3^Csk+^zwe-T6n=~=PW{<cV=_}6;Vs^Ojg`MkSF-6z*4&vPV=?XRK&hQer0+pUM zC=eYSfI6@+!LS1BrnYs;E=?x{2R?&kPDGYxpmT6h0D?BjfJ@#Due6d6o)DwwM6sAW zpb=UQIOZJy?b)F#@F}lym#!0sZ<N2u6EOYGr3)E9g=gLYHv_V$PNK&C5r;iDWvl^> zQp!M8JFh$$1fk{NDXzC$ha9R!Q0`pN$sj1K<<gbr^r@&6LalXxE~xk}_H4iNF;MFR znb@@Qm7nFEXgi7Q1kp*$iK{2}T?mctAS=_UPgIg(=t{FG;k{h2`bkakxeF3qg$&Z6 zkF;7}T%jwkrY@=;30l4u)P=AmE)}29=Ef^YCN9d>ha|A+nx+0CFUyrv7~4!L=?@V{ z*?Z|9n-<KkC%Lf&9ZY;Dn-Y8;pUjg`FlyTZI}00#ho2LHvZf6oAS?6rVd>V7Eq5{Q zLZS;7?dc<#REW=g+gaHt@;`O)9di`NhL*O{s)Xhz)1oD?xuIE@pda9qkZ+jG;_YH5 z8Db8Cm}S0RE7qpR00KfvYhHtRl#KA9Qc?%dju$Qlgta=hbbR2_AEerOX6OO>G*9%1 zVZHvMy=^1gIz)o24jD6zEgpE4Tc7ZNW$hX%#xC)J83P{kJ@y=Q(Vm9-TeRaQ*6mO_ z$fHf-{OYwbC`r*O1L?@!aZa6G5Efcq_3MsH;yHfTA5B>Q>}eN}((OhFnDh_Yb_9^F zG<xZ?+SsuRn%daE$e5I*ZUteKw>H+Fg#*`Eg{xNL)(kr3;wESh`Pts|!PHQYjllLN zW%9CC_$kjz!e;>~E$bx~nL@N&#H==jah!-~$~l*)@u~2El63qdw$1b^Vb5TBRaBnC zwxnY;0n;YL;Q0;^-gJ;BKC+2mp7nsD@0sv}gnli{y((vIj~>0|i65R2$!3(X(Q)D} zpMJk(EY{BZZXDHARvsup!t%<zX*vbDnVX<an>IGn)=@ikz8%i|Rr`gBO%9MIyoVOI z#1;%wIjvo-3}^hcb7O6+%@eGTk77S!*BqVS^kLkEKJhNL^#I8k#Ico6a;ek?J~8s1 z!x7u2PvaC%7@v%N`^Ez}#|iA|K`Oo!H-s0ISXZ#|1i-TR-O5$z(r?y(+85Dde8i~p zl!GSitd674;z%ZRiKz;Vo~Cl<1D`mEDI-g)eT1lg=0lIj*}P&(SKF?w?O!=W!4|Fs z^sBr~U4jHDR>$3tDYr7nhY+H2ZCf~p?PlDvf-L{`nf6oVkft0;CM1V!3NN>{jqR6< zw&=LjaVmUmTYO>H0kY5BPnqqYGI>HlMzO{APh>%k6r+#&il=IBM9n9Fw(G*`kFM$q z?L8Rj%h-KtfPSn1q7vN>@WAd?MOM@DvkkZon<7wch&;57Yua2ncxd{D!;g%S)>AHx z;D<W&kv(6ZR|m$BLzf5y^~i=lP=6kb=mP@e7D#V7K#zTED{YVi4|&Etm2>-|A9!iM zbB(4g?Wcb5nsyl*Y}-CysFBNl@-{ykpM%W9Po>XViT>`jeNEX{pQX8aFE8VT=NX@a z&%)&$Bl?;Q2wQG?apP0u)x~t?ChaKD1YsBVZY;>cI)=$f`0&J@nFF8~pP;V3(XYhy z$zt(sHx+JLns-BJN<9oZw#^Hef8#Ffr^<h}gOQ*Ag<tyJ-~Nxk^4lzkpY?D=qpDVJ z(eG}4m2Uaw?&BRa#+D~!Q}^heEC=)~*wi|}(z@+F%5XZ+!WhR%h;95MT`xGqyr_Jj zhVL+Mx|v;=t&<)I>o{jY$v!~i0uq>XkSJI!ML9Qn1Fg|?;LUF060d$1h3&nDIx0vE zuLEX>&~T5fT+m6Av73#Y<))n!jWg9&PHAv;QY(zm6~ZdY==ixZA<2tB%6+WSH-oQk zcHS=Vd^u20@SP}^*kN~N8y*gx(&_g;Ioaol0oBVP0JI&X<Q+L!39cN<ED<C5OI!Xv zGV1{9B;sJ@<RD<+dTSYt6nV~ODctDR4OjJ4RDD*xBNqelbrB$)Om^X=OvP(lnZqVZ zN1B1@gdMS<y>>JoTp15v`RysZ?U)+*Ho<*(5-X33Lf?O}la-U`9*ATR$5zo_`tl1t zveF)Fm#8!LDaYQ!T#j}qkV|JvQ>56FAYM5KBvMNpT>p*`oZLX4Sh(OTB(j>fF0m1i zT-qx&+&<_-&~>ucC)}i|<4&N~ZQCq9K*hf;%<z`RRK%Yp-+tkuh~;xOY0BiE{P4c; z&-1h{&Z4Hiu)L))wrA#uzQE<B$N0JOi6gvvX=<TDCO7kh*u>aOfX?(}tvTwNIqp&~ z?{Gn8N~AUX);?K)A)h*KonYc;tf9O*R=Cm~HWZm(yp}H9z#P%QwHkKQuj$L#Xd;86 zS#6(aJCX~UHE3fyn2)$F!CfSh-^-O;Y;PMPx8n+xzD(NkeEq2$zzpfe!01ofB8yJJ zsaYSE?>+$}mVRJuHmEW;ClBQyo%hNzS`h#MKmbWZK~xu@SI3UjdZUtB33D^qON^#P z&UnBWo7MwB7{hKFeVU;BTVdLMuRj@-vwg!2kudc|dBzOfy7?ex{EY#DI_#|)^3@&~ zI<!^}g-Mz^zRpmNN(wDmwIDGi6tv8ZM<wxYwR$z(Hm%*QlUi2fNt>@cX`jfxbcvOP zdc($5k^-yIKYYXs)Oia$_%2@4?&xdVt8@D33=DEuY|Crg+C^$>H|H<?SbqM5vjS!Q zV@{D5JwGx<dkW;M?X}y}e7zM}fTa0mW6xMa{d)i)nYOe!h0oJ#O2wG9bB5%F+mPf@ zU~VliX|vQPnp$-=6moGIA2vAXM8$jfn5Y#S!6O?4$5-k?XJSg=7;hjod|{^?`tcqD z#IC|pXB$1k&e;ruYajQ!^?ezw{R)0*_fqU(wc|8~bq)llHZGiE?YNkBN48yiOJRd` zhHdX=+cxpB0X*w%pW;|0Ok`6D%KMVm+8>b`27Y0|60sK$c?tfmeL}`@PMt4vJG$R{ zq9lHK9$1uY<>`6{7V?f9D@;X-Zkaoj^{lgvqR;re{lcIZ=RhLfEEHs;g7$9TikgyA z2WhLLaFlIb<Z}Gx&puh3G#1tulg5r9#Lm#jp&08!^R-LYtCh3-GbS9oMj!d=1o;Qo zeno%o`c%IyT(uFbJQEMC$b<}$Gh;C0e_~|TAEyn19d#?u6V|l-APf76FC2JT%jHl+ zU^pR<>zwk*J-l{2vgGu=t}_%nPbE`VdsIGQ4Ts&)eGie;Sw6d_66W1o_5#qdFIn!B z9<G;dBkODLm9MsOT(UlGBXay@c&aCVuX+0G&6_vSJfDDCdRG}j12gRSoUxV<16KFN z$)00mSH7?vJ#B-Pse2bKaIt~%a!GsXZN2Mj3UfG{1H525Ca+(fzTK+oCk{mY=dw-8 zuk-SW?*}~@*Ez7wn2rpwSj{%v>IY_|lR&J@rK_JkdH3_b_-}r9YCn1O*$zgc$%l`B zL?``wtNShOQivfeyr#*XX1j&ajK<sIdwAA~eF+EfmR<3w<li<g*TU#b4+R_UR^5g6 zwXRZJXpq#sgt;41qE1sM++7v!;+T&XS8@-~4&Fgqc?LmPbToI7GT>i#TluUHm9OD< z&@0ezOs1s8b6%(SNYnP(1(9Dp$Rq+0rzSzg%%J3AnNDVBcVP7DV$H{O`#r)u&PIAW zuJm_sOuLbHkoG&4Z}=&^ET-WfIi$Z~+JDP;5Pi>!%^c+1WcewLbUYM!%YY~!LkBGN zm;r%Ua_Y+zk%>haaxmh;fI&_zi$8v#;)M0JwW-#MO}N!2wT0yyqVo)>vE@vR(#lWe zGEqry<*YrC6}Wf<aLc3Z0&V{-q%P9RpT8VXpp`mU-AUL_wdQ+_0B6xG9%<W4z|wND z$cy^s(L)F9z4CqInTW$sZjk|f)rTv#asDm9s-O5=3@YvYAg!z*jVDAe(hlmegZC7U zycR3F(a2-bH5`2x#I&nVbEvzE3F7#?b$Yk@fV>l;aN3&)A0wTKyS%kmeZjaBm}Ps3 zBtEym`A8_$t48b|UKZ(ZLnDu8b2ya^6lHdSC;rT)5(dUkJNt>J^rH(C-@Es(q1m6e z&Z2`wpUtqcDUbXj0~OlTwVDZ%%^PzCu?gw~-11bG4u$r){7HbIx&j*)&vY+q!tRKb zhlOnZs9S#WYJ-b%g!rtmzy)WCl~ZJ-BC%q~-@`rqH#VYd+vbQt$XA{suSnXH*aHyj zurp+cP0LvR`hosnivTY;pQ^0^{j@mzM{j-UJWLoru~DOl0z(I;3%5QQ{+4S@f-)P- z<`ckdU@Q>QNVvizN4EZ1n61-xjxX^gm9_niK;3aCl*o4+R5lOmq`ez=7n;?D!r0^5 zW|3m#-7#0bVWK!N%%Tt5C`Z!726?Ye3vYqmlKZrSb){*)g?8{GIRxZI5q$dBqUag& zg$r8X)YVOuq#Spp97%wVIH8w}b-5@PH-+K_*+gLFwR#?H8-0g&<{)iY0$>H#{;J)L zC6vCLx^7(E%)jTILXH`-vdw(ax$_DSk_0Ce2p9fZ03PXS#^Cw1SuWeq_9vh7aOxfJ zgw@{Ck-kAY_5cc?C|6cZPMLt<L=4m57|aJhx!ww6{Rw~KoiK}6$d;FC>G}&$Zs<RH zP>HNw?JKs^g$_vCL)qP=Yeyf?&lrmS{7;!LV&&-$4WchFruq}TK2b90TB3E0fDzVp z18u~H`UZLW=s%X!es1zum%M}CA=KDLnuf@BiR%N%8UTS-pSxDFFBR_aoq(``m#=M@ z7LbB|0Iv&teqMeQbK~zNoVN2FG&*_w$U5hL{gc@BQpYtPDbSCL2WmBgrhgvd`Aazs zZEO3DOr+%tnDsCq13#jcr@Y|XIZnw%Q&-b-VN>;!yJJ-39{Pc&Kpq{#<<y`gu33bq zfvOkyIYfX*c<K}cZJ0jnL4q=cfBVwgx4`(1zP5vK9zN)Y{_Ob?;3H3IWt}*@%fIah z;eZE5I4}MZ#-2IY&?dHpbAWx={P2yx2rDVelna;^TxbmqX}fOsg{}5|$D7!k`W&8! zPr7jJU(pRXWwVXL6M&6{-E@7ka#-&8`j&%`yi>)#L6DwLkc+dlwH8#uTRUv|K4oKm zgSy%-#^QuG>9_s}1pO|)N}u#V&pPROuwkF}L&KAoxb7kN^(bJoAE3?s3XdWC8$QtT z=Wh4wK;qW+Z42RcO>J7CA{NP5AKq&l+f7--k4&Rybfay9PMz?%s26TpG4*6qmNq0) z+O>ssi)%ZC2QKM4R$EEO*s!rM)*N*8)2x{@HvCb5Khy2A9*i&#{udPgPg%$v3Tljo zq|RHdXO#ww(F)gsO<Q+Kn_L>(0(YwKWe2`2>~QUj!kw;l4=V+2%+~2P=IbC2z(<d> zyjdM@@!<!4#EI-xZ13MBi*<W49BLQ*lOrk05BY}iu#cG!VQwKkkh##09+&)GXk}X- z){VKF3bM_s-cI}82U?oBj7IJ)3zOD&V4_1hh+gT9Ei-siv7bt0GZ_5d4%*@qoIDva zlE!Bb*ORnUVHR}IQ&uN97asySsQK8dhb&Yf&uAVoM=&e$54Q4Ul5&!iTIo5NCzpDF z3Ffm`LM)2UdM1_}4mi*<U}xf^*03D4p#w7zStzW&M+~Hs`|+Ye2gGckhOc#!bP+7= z$m-$({bF-C0pOhNB7@aH<jB(^%A~;BKt7p7l8GMqNjB&>cxEzWB5<%a?E*3rOD5q? zEXo`iA_p|ZE#vx#%|_WZte!hjX0i>AJ~fb&*sK*6Df5QdUENI>OrvkxaqZH$XvLMk zl!Bu4nOBE~dL&$Ak#6{FlfLK1!x2`vK%V^5*87QCWEon)@8XF&dN|R6FNsiSHu6)D zHshY3Qq^bErapviyV$Ny>@HgTdfI$SOuN1ZuAlHqRK2i9u3@Kaz}R0_OXK!05()65 z(0-N>z_rB|P8|_7=%X%4S&)3%I2mEBOXNLa+o-YbTAwbv@=;$?Xi^;RcV$h*QCoXP zlK6f(OQT~_=?V_J`iZnlK2*Xmx&*3O0928t!0!5hn@2WOq*-I-vW#Y-zA$MAki^;k zlfGlyxsW~lT`iRlsa1}kO>zil8;+copLR~+$OLu>1k+pc7MW1)qy+OK6MM=E;?lGq zI(GDvWe=zQibcn+95e%)v0#WblJ-e|d9_cMQGQt(j&5@tSF-?hY$hm&Z4%pHli=x_ z{>h*!Mn>gS+}4=@&vA`SXdmpd*7hmx>Z229qe@%JFuD#;GNJ9lv$O|azztU9^44H` z#0iO#o_fa+=liQ)iz_wtbd%}kMcZakj?MjZqt;)Os_f#ZZP*+<nB`#L2Md0p>YNrR zUWywI=<<x8mgTKp8K?Z(>O1<qb7r2zf{#O7G}D&Q`ruPI%FN9V#NGV+q=RFNPf5sM z9!Ln4hRB=J-sF%^|Fva^Hx@1-HkPwt%9?o~Pf-RPsfuI#^<k-{4F*h%?K>Gyv;q2A zrc9^5R!&7~IWaK$PkvsTHgY4BuhL>y`~2Gd4KH2Qa8DUaZATAVUp(&t%1d6l`s(HU zGL1jg%P-Wt<Ylb3xu(cZA2Vg-YyjnyN7>ZXV6tV#DN5clN?I^F-tseRfw_N)1)lAR zZ~8LsynDh}c=7a0eUUjS^Dud9!c)E@UnLw75)~%vhv2ItWu#A8%U?279%~(W_t)-J zxHPjC#Q*xvIaWpt9=mo@F8PF)#0JMG;)TR1A)I2-fC40pA3FKIHiL3zv+Fc$WiBG@ zBJuFcINkR3eNVQbKB2vA_w-}BU(3L;ji2<xJjopgPN68x5t_U~7}+UfY(rca?Mjau zn|70XS<?hTDdX)Wu!@#gb(abGLk`>3d|=AEbFOrdC*Y;3V2%&2tuvOQuVGM;y@v_* z2@fYShDsp8K6j)_cxsBT4ASbFQrzOJBXVVasI9hdRBn72055I72P)S?m9}e$W1mx3 z%jIDR4fW%1Z6V`Be-bUP434?{ZZjZ!NC-`Z_fN%?S9+_1^rM@J34sibbt98N25?iR zf7?FOMv*bq)i-&W5e75zrhuF6=t;Q#WODg5cJwZmzH}ZKR&Hr5j_HMMx^>In`J#q0 zdd%6u=L?_pVB}B#@9W?C+kf-bf1sV7#_VJKRX2@#X@a9Y1rPy%ZK$J;$?aU=Ev15s z6SxcB3DMLY5l%kK;4Z>Xkk?^0B#m6@8kEnF+Uk1Dk&cbbMMxmOK@Y)7typq&ky2c1 z8!XRcvcyBvQf<{ZnICZrB=9=1!Tgd;!Q3SIFx5g=Wvv0!MSpckfI!4@@NOcp16}Mv zoKGHR^W0AuJK)B~5XmIRAmF0H1*5p?8VN$blhf*A#mAY{?EJHTh<ve;a*TNC#0-M( zT?n{9^wSwG<@Yf%Z7qLk<`6}t7MH?f5J2}$3zto%BZEQ;9~@vh-ijIc4D#~l&>{oo z0t5vl{==WSMjUOto9?Kg{sIZdWZp>{+p>W6QyZJaD|q0ShXuf6OBZ%I%#$v%)ih3I zBM%0wU4avJ2V)6fvy@qmjob`zE8T6+$!8!BTqjx4tA{-Gjq)brfAYc@D4~oC-dU6p z7eK(`rCqhptsv1Bpv5Mqz!G)SG%--(Bm*H=$`xj03RK{`@DMEIr(O)GiG?jYkw$L; z2_N}n(7Lp__9h)q55nM)mZd?R><{sI{IFn7X!wix3OjTHPg)s@r`+}vd0@9Gk5<5S z)9HIm^zY(?M!1lYnL!@5^M#L96;Zqa70k>8`3QBwnr*2df#fF6_UERpod9yIV(f)4 zI;rpG#j-P;v@L5L0Fi0sx`hzbNXe}We`P5h(X_AiV#zZ^L%4K=vA!$<McPjg-AK3~ z^B}}S5ylc+b`M3)0}|`(htiQ3c!6~>J$)I(_`Gs)<>?C3k*zqf2M4PPqRf@`lui4t zj{_2!DH#15o3YMHqa#-PfD~?hW!p;M`e?r=ymxVo-{+I==z{EF7>cDENN>u{ANopP zIz0j*O;HZ$SiF@M;1qhuCq18x+HvS02NCtoq4e5DLIi!^Lu067H*G{xp0RQLUmJUB z;`@e_#-NV*bQL&DGMAW&DUjd7f|7v$<xeJpwOUOZ7RFrKO=0E=ygUJpAE2jWYQ}V# zajD<7f%$NWJf$a7HLx9gG2=Tg4*bIxK0RdVTw3XD0}e}>`_#{4Q^m2aEd(ZZjbDYZ zZNR~Z4$aplJ>64QaeOK3)AfB|+|WzY%E)Q*u!uY+sM@7G?6)p407o!g2-gpl^^Av1 zpyj!A5A?w`uTGAonG@My?Ytd%Z3nSuZjx^NA)?6Ne%^lVL5TM7SA0xspFAz{?hT(j zzfRwOnqQUi<?K&6{NO-@pXSX^^uBy?9EkYqG|xF$fvg00N+e9NaqSz{QE)9}z5nK0 zOCli~8dK^>BWxQA*S?FKGsYAnz#-#-+#WJ$n{1Y$6FhJ-9|5!DwgR8B!4gs}Ie9J5 z+OT6==tkL7_A6ZEQvUQm`>upbGY1Q#-#zwg)$ruKH+#_7{?c(%_zl-5(=1ynnwIYd zQy%*6!HRWR+eAy534ztMD=FdfBLdhYPswhdopGamxogRf9+p5aeHh$4jqBKLkTida zl5w%6z0>!yPqI!>fI<fz!I?7C_3Nafr1Z{FO~77b&g5eYX-ikRb>av@?9fS6dktNR z3_yn;%@iN&JJPB{A>fUjJP`3o2@ei3mWV*mFYBL`TP~qB+zRA@l6~iS<ckFHX?=U? zjqJ#rF+1|gqkKHD-?e>wS~&Eqaw~6bstuH}K^|JK^o>(B)!Po5s&&qP=!;Km|H|B= zovu0o-1e&+rVX*Z3`V|Vtfx+vLIuzIWlEVstz8e<hmO@p2%O{c>Q{QF9@;>1r6<=- zi{ho(mUUyLTIu9;!7bzWfBF|Uzt!aDxqsG!k?(!)dmn!ApMUj_aihN*Q>;BMy4I+d z0+Q<zf}1;ysex-y4W7Z=>@|RN8}C|ax<VZI1AQ0j+ve9nAA)xfFgO6az=|`BhnRB! zzw4Cd51OQN*dY;U)mFC^78a<I4p?~xWo~r2H45=cb%h`uwA*#zq@gY${HE-XbLz{P zJ19fW<hKiBms3#4fV^f?ZU?ZZzK7yDFBp6AGJ~dr<QoRiJeD{;P`Qo;Dg%zBwUM^X zphez+b8T-~50cB!!PgKSM*7f%zJr&8(T26XCU(N}^k3dS)|rJ9JjKlg#g##x4v3jV zBnC6BA9_Pv*p)FFD4sf4&fhhNtDfHEWwo1x941ISp>gU3oypt*GcSIl4ALD0C+>!r zMFuc(^!+OKJ6Q<4iwkAi!LthhOhB{0AVsMx;+=X}Ha494z#+>nd?HuuOqsIF$2JLk z<&H{JMGojE4<mV*mS!di+YEj!Y^6BX5442|mA7@_3!!X=tc`y9MXYeqC#Yo)%~(m^ zYyi?$wgIyDG0LHxdTdVP2R=^TIzO$54v>uw+5!05@2E*$4H|YcRM_fPS+@T`qG4ll z(sTimr4po%@zgX@XumAt-J$d8v8aCX_m%@RAEoDOpnR2#4JrqNkuOXFm4%gMDL1BW z7seG~@38>1iznxV+Yxju&5daM8kpb>Y<LZr={%JnENHDW0l>fudWMyCD>ug11ycS2 z)}P{Aa;MOm@MA-n7m^7VRx;xP#+HsR>F1P%7P7_8Y~Xtc;-m2{ni)rM**-avv%?&g zum|d<2^t-vy4lKD2Tm7M>Kbt)t-fFzj+DeMEIp9u;#$}p6GzI*7VO%jysB%8rKaME z6LA||jV4#!?1yr<qBgiuCa!l}yHF)zH8$#@Nr;GJ|KYD=u2z&x`?fxnOE?t~E{Mkc z%f?gNIOfPte{hj34luUBA)EYx$pwsZyKuK{{Y$&kA8ntEnPT%PbPZly%e^4VScx3O z2DvprNqQr1aEE^C<!_=SB8#Ar34vTksDlKBv%GVXa<|ON@EacG%^i7mPD-1HVQ(wb z>gvWIJf7QDjxQXzvRQuy84p=~!LwrIYkSHpb7aFj$kn=!4ifzL&`uh@e34H^q35B< zM-IkppMAlo;v!;XG+rAuj<(R&-nGv~{I5xha~IfrgI3DAOt2#q{w|i)nX?fx^D2Is z`EJN%)E+xzY_P4!BW?UhA6q@sA2FUUSmmf0I3DlkK%`%z;YpF;xM_aE(;^;<ynOWC z?|hNVCq_Idv9A4^Hl?lXM;V8S<?9m?QC-3Bgm}kc26O6EdmsHHzJu(}pIkn<u!nB8 z$HIk2n#Mk%Lri}_GspY%2g>3f`iR#Wmt=fbIAH=;So7&;gBx3t*1Hr9>fS>4tgE8h z&obp~TPTOPwgqc5`)%Z?Adop|MLzQ*V@4Fy4}{QIIqd7(=EQIcuN`;PC-0C!rr0G1 zgw<7jVpGRJ7<bG8f8GIRTRvm{)#gv$F>XS?ZSGhO^4cLX${QN)lPph}3iL`7P#T+I zi`a?Ue2rZY!bB8?@Wd^5GzLoq3gAOt9-)^x$Z^7JUZ78$wK=q6uZ^#qAYfneh4CyU zAlvm)=kG(B*l2Af%=W*I4<Q)oh3WWKTYI>huTf>*)5gl%Cqq1-Iu0U4jBWHw`cMw@ z)UI?QzsLy#3!H6y9->GatAv*6fj-qJcF>h!4!)2vZ2{gisgk5$>|RA5GOc}Wcm2T+ zJPh_7Y2^@dnC=)KR+K4|<GSUsooxYL`kpugBRyfyi@d%m%-Ba5!xct5Rh(5;`EB?5 zS<nys$|L;#LS1OtJdYp!@%K182!qdb`>Y2e>cmOvf5QiVE&91iw?kcmr?NWfHJoME zS+jA|3)@C8x1Cc+!@z^wd<y3#ua=6RP2RQoCrmG=?K~SxE}uF@$B}M?a;T1j28cog zx@`$6B4jj5-F6;PHpu${%v1}1l|_Tf{vMwtwlRDIX9Fn1H9S;yski#a4RTnyOv_St zv9lPIIui=B-m{yJ{3IPeam%B2zF4&rcA2JgAwaQ;Um8p%3|QKGC(AzhAa$+Rfu@^= zE|;y@L8JqTn-mAIY$apY*cR5E$eF-=GdF|ndtRs%+)Q@Jk4zb;;O`(~x*HBBYvlE^ zZZ2hVfK;wEOwyy6_Q-)-EQ6rnN3WqH8l<9c2hi#tIr1r|^-|<-`KquXxbR2D4x|*I zBbuWp_Veiyi3=+1g@$E25Q<|ER{II7+>DixH+9|u#|_z)Z}GFJa9|C-F=J&0T49Q} zsFk4<(<Y%S+(|dwLtj>6R)=C$jDm|}Y1@XG9ogXxcorg}0jT{$LL_7iNi}q`VFJq| z%^n(z4@gg2l=sLsWoNliAs0CPs<y8ES{sP+mfvh#+;BuI4bA1B3zzk?sw6!4+^p*c znKHh%quup6#g&9$E>4Y|;QXqSeb1LDGNoe{`X2Asd8>^2GjQ=)d6USbZQ2TmAYSEb zcJA;d)f$1CJBmouex(!WfQ%jkXpwA=JDJENfB!~~3-v(%sN2#tE^g)Zo=KlrkzMq< zINCmFee6!1X>q$qD143L0v$^-5xB|0yj<G3SIezyy?ih=I0wa{*@Z`SSzT+5^N`Vn zwhJTM1>0Z`Wjf?g#?ZHa>IaTb@)0<I+=4Ouo3%tdLDJ4+Z?fSNjFj1zC_{mapJcR$ z3*l_S11JZ9#3qC_H+;!e5@O|+YQd5ieb;HlBSaT&+R8SOSIUQGd`h5!F}ZE0{vUb9 zwd)Y=P#%__2kxLsYxIrWwF37rf!)Y9_>B5hjcSdxxPhmr;#6kSlz2;s9y1omH{%fW z;|t>x0+zS5lSv;at!rI%5?&6{konGGnWv~(-^sy-&PjOhc#v<}z{5W8STM3WQiPOJ zqz<yk;ZM}|V8vgkaDykLUu8fK$of;A9vVo?Ll^hg4nk0mjfjrmlbtz?TBVMf2NJ<k zIOrVJdUOO%i8Z$lM*vLO1N3dLjF)M<kPRh4wVl3ETj}Gqt9?#w?bjZ9-gvqx4>oCU z*`$2r2|PDa?|53|BZt)1*~hg<#svKKIqxBP=~rmJc=6~JU!C!=1Oox94OwSE#{+Jk zI#I@I*S0{4{RhVyZEBfua^b1Yj#su@eG3r5;P0Aef5J2$`s8U<zo-i;G#tZ-ir~1P zoc!DGI-lEl!>X`AS)a`u^s_-F7Is5@yMB54raZ$f+JuMwl4}npWMH{)>C+mNvW#gY zs_V#Xg)J0iD--vb+Z{94Uo3@8Na?HP5j^c_v!Z)H5RncrtdpWUnEt(|oipy3lOG}L zK<wwZ>=@+%l(BYB|BG(g3EyE&Q7oPuK>%^}$M#d_{?@8dlcTE|1D|rM0LvvGZ9^VX zDj+7I01;7=T(;_neDwE#QJwxzWxj&z`j=l@RMu|d`&DUQ!U{7k>6EAPZd)px>DWVA zxekF9=?I4wvPU-aNezVbwR;6`pX`TJ0`!;s)Ki=Kv%!o>z-k?z0Iv+CnLZtPN9J%) z#*t5Y=%Nol6lyPVdkM2;3!n9s_Lva8D_-#8_xJ=9(pJjr!H7@O<lq^+$~lK7=|i<^ z{R1DtmRdvFS<jDsV<7}u{Iz0i5c{vsocbz%#*d+ABNbGe)$VKi>Rp}1JIevR1o3ST z@r|MKUoH8Z;j<r%{O>>etAF=*{??bjf|7nnln^`Qrm-~aRE#CItnfP38g=l&73LbG z(S{f&6UV=h_SOb$Uffh{TU<%~*lGFXzr-WQEh4ENe&ak_uguY;-f<sy0WWbKtOe;v zBp)ghqBf~~#UKr@m8NC)@5&_Yz>Quj=R;-pDYQgbEdO=YQw|g$<(VnJotXjR&`Uzd z;pwwZd~@@h!;v?Sp1$@|D3>1{41B_2`4y$*u@ej&1omZU($f|$2>e9fjg5n2H;b?v zn&O5oK9++K21|;N1$m(1V#sn2Mf~2dr{zys@nylHJSt`&;ULvR0;NQ1L{O)#-&6A4 z%mPxw6hfh9A?Je22?hX&XeS40>(wLQrG>Wxp?QjdaYAQdiM;A&UA_*Kg;hTx3;|$Q zPA35eSi_!#tIz7>;x(Uyq#hV)k38bI7zr)ts0;s*1Hhyuq<t+<P(Lpxq+H5M9+>{@ zuH_aKy!XMjY?Bh1Y<pO36g$mix4@BU6dJVH=c-56456(YXzh5T5aCJ1iCCYYO+R7_ zmbwX|#s`Tr*|AXAr%Ei}1wl56MG5KHA_`C8ohVXd<KYYNT;RA^(&mlpW%wC7@8U6= zL}><2`_uN~x)mYzyW;Kn^c847;w8Dy;j4-IxHdhIQ;w(4-ev*+hJFxV8eg$532VD= zdstvQXf9>e9=WB!TSLsb8KJ?eK4N$k_QYt>(H2uLZ2W2%t?iZI7Oqr*=|!z_njcP< z2Yw1n=i+9ZO*aWYLARf|nX!EX6Ikfch_>Ut7ewv-)Bfqc!jUK~V=v2w7xj?{6kkqe zx0iujvhXKu2vy`z)GX3zW95;5K7AFAdc@-*BR&4K$T^P9CL`jVvWGsn(lVT}8UAG& zY7&KN^1>wxTX5+Uitc#Hpx3c<=!xA0TIr|lq&IZpt1zNhsrV439=cxopSq})0>v(} zf&SG-m901tj{0-V8hD7vwr$@-B3J+Fe5Kc~4|XwaT`qW!cSkPAM*Cuk4Gr~=l-}1+ z+6wycuI%+8buo1F<M^%4v&kCc$Z;gDJz@!2YCqdBBm$-ToIVF$_#qGFna7Y#U#Y%q z#@K|rfyf*iejWdO+Tk59YNl1ewQbSEgIQoY8&j61a(-mP$AN(J<72)~<AWp!%Dh1r zpzgi(Tpp4@DqqiO18AN8&F%}D%8E|P620`_hk~Utn&<-5{@1D&0~d159c8yDk0h}H ztO44q<2m~2-x-T*SLw*h^~!T>+83>&KfdZa4Bo!}ii0M7&JByFO}<ye_p$UaMEZ`+ zjt$zdn@#%-w!*LSG^cZYe#vHh4Ef@h=u^K}7Hy`F7%4c3n5KH;+J~t~B~xE?t<=q< zUrTVK>srMpQ{KIYrjY3u*hc!cy&syuV0mQ@H%Glo01)DnE%HE2zhEuLy6K622An?Y zm~S}xgnsE<q~BC{Yf~Q{*vA7dea<iL?|a*71Lk24j<kFFBebQTz5%!r8<bjpxuDe# ztJKpA9hBX<5hf%vUJX`oB$E#Wpdn7_TSzt+GMJQxI!aGM#>nF){-f{pfxa>rqI1mG zG29O%fbM#f*s<kF4jKiL_+HYLbZyx+i<JgH6!E~4v4%FqFzH_Qy$#wF$KjIb&^A3+ z>!DAPRP`}8>^Jy{*Yg=SGL{6t_QWY;w;UKjYullGLn%r1&srP$dr(&x+oxjG&&Uwg zUX{kSv7gju^xO3(4-jn|;XUkAPOwwor*Q0x9n+=T{_I+<?O8hKm@iCeaTtUT+cs-= z<&?H#`s#biX&vorhX=6xj{2npbPI!gHQye<*bns+zf$#>F(7r?o_>_4bcp3)y9=}a z)wNiOZkceln><#o^%rBWln1SLu3W8K7-NI5nZJgnWo!4;-@1uYIk(Lu1FiS}=PzIV zx}cvkI7WZg@I4-h`N41g+8?6w-(SY#FUjt}x^*>I4ZLL!$L%22ZKE1*x;Sv^zfdh2 z_-g~FrfnM-sMNs^j5OFK*Zgf>C(Js^EriJ+Vx2Y4Uk9V0wIibZFXDp0zjaf8(4~B3 z2!*9{08FAxCsSU%x9ApGZFs@|M!LWW>ja{ZVrF6zUs)(FzH(B=wQZDfHv_N0R(hX7 zGr3Zfssou5Tn1GLI!L^H1w3PhlZ@Yqe&eI4F4pE#m++y3Du<$UGIBCx!3HTGO*F1t z@({EW&DohPZyR+IV<6%``$#4-2T&&n7mp6U`=TtdIvBE0V$zaseFANq0Ff($HiMXh zoVsNri)_lLyir@Z%~Xt}p_IQA#@JWc83;jjgQgv#2l#7q?JGGa0O=}!4pETFAa1D{ z&!0x7CIc%2v0qz~hL^G@Xhh_8Lk-~A)jm|3%CVaR@dR)I<wE@WGjMW^T);mb8N1km z4=j4{gIp15Em1Ds4e1ZiSC6ELt&^9NTy0?;g~QKes32V1sT*CX*jCXpG@B15dHr79 zf+MaKb2pZU3(0(S09!@()I(W%0tByZlnvgr#mcFSg$eQKHAUg2$@M8DK^D!g4kJ@| zK|5k8U;Q@+OxQo4e9)$Ofux^iNs(Jc(B{Fg+r<w0`V%%key`oj1H|_}+6&yfq&<+6 zZu!es+z22IIUrknX$tirx4UM`-wvk06a~5I7PegjTVOy*42tGlyQ+tFSX$zU9h;L5 z!>P0zZR=T7A0RPMiHEk*hDQK}?I))iEp`H~ab=ZCx@l<H7Q&T=y0ezb^^C>5-KkGx z8SArdDkp|+>LbVMLJX~JXm>1eVZ@*RfwGUu&p*m)@A}B74=-t)V^R7S?U=quKh!$X z=%PnD2qiM~>idn;$7M^f?P6CNLYrmGvoC?GEZW;KSu$Ce9WY(^=fDFxv7hRImpMS< z(9FgV+2U)^u`Zlss-6R{&dRuL5E_v~DMEPka(ozD6-hQ+_K)!+bh509%L5AFq=a;6 z6U)!5{h;lw@t3~v>Ti8<X<OS5TG<Rt;r64@qZyRLb}-oH*N}4g^0y(7BTMQjSUyWT zu=W$JLA`UBm+Lai-0WB(yz{HSzOY}N%Nz$xH;~$?PddC{@y@95=nZ4a+qWH?@-zb* z_>3WVMEzPDYM&2mkl`mE#P<mj_uYI(G2=<?8RM&-KyJX1Q7KWeH}KU#xi%c*p-pJ< zi9ms9B8PSA7PC*02w-ghhqn1?dzjhgwp%aL^6#b1?Tyd<N(`HRB1rjU2Vc44AjHe} zdilOG4@Wfhi<i$HeevbXN8kDKRmNDqI`ieLS9warjjUdtUx0~E+HPKoZp$ld`)c&i z7+j`vrLgHhqI*C6?${qX2%i_kj!v#qB-8e%{ie^E4?K1DwY;OuB2CpO^~nGuYw4H* zJUHF-x4+~AAznh+IbQp<FFIa%IFqLjJUH=bS1*|uO0?}byfaqhfabJ?ZDCvaPIJY` zIFt{z&VFyj=?{)K?Faf<+(a6Kll}yP<&H%r7I$rKon`0R&bHfe0U@Z9PR&AWnl_H^ zY3pfK{hfcunj5YhP>p>uhN{#0yu@q=Xsteu8)+~2NjvjJ)~l{t`C400RAhaqyq@5& z9%lAn6j>mtKG8jL_Hf%V!ly)@(eLxbv^dbudQ1ONRW1brJE{0;3zPQ-Y45dzw%}6U z>p{g~<DnQOMY|JXOC61{zACNfJZZjk)!p&X`nt0`p?L6?zvFUcv9Dy!FAyQN1mE^B zD4X@tGu`>p0}HNW?OEI)%x!JDhjy#u#?LrR?tWpOa6u2Bl)vhg1CEhf`8B1SqRaA` zyh`R^d0<xFD39FBckN)g<Fyq13t_V`NjsV*2%mlx->B`iuk`p&{rY#yY-`}Gr@uM| zaG3Ll-{Z`n6hGhnvmcB^wU3YfEq3|urm>xOZwdQ!$dSj?F))r4v)jU&|5kiLxADyD zyp6Z^ZhWn8x{|~Z${;AxT<6%>icN1^-i5VnuPbZ_aue2I6u5X*luCK()-J%*0gDp= z=r4^6!jXh%7AVH|f_33{uO<a9Y~-}`H*O{LF7|kcLZv)qt$oOkELGk1*^X0Q=KCjA z;Q4nlI)_hNUYt}E-%dx~)7hT(x{%@%7#3{~N_{D5H~zvon7J8Il<bp8>_8AbXV8;H z1OToZx8y7=uH`Ob;N=UUcCePli@X`WgP-ueal4aqCtVlUeaD2nUHrNsa*%VtLtn>+ z`6*y!Q<lhPyNwMG-?9uIv0H@>jCgzHu)_gbTwub3SQWL0dI%GHp-*e9E$wKo3=F^y zpng}rFNd2?U8F(z&0{}JWa5CfkAhw&1qZ+kdeo_Z7pT?87J1Gh=l@Z6Hocm3Yh8bO z@7~>g9y}U{Ix_JyIP@DZHwILQ14U&b5C{@I5C=lQFhU725rq$6q7#uYX2OJ_BL+f( z0|tb6`fazr-~WGIRke5T=bR>*(+}&utJbQuuJ?7V*Q&ej$VJ=%1S7yRG9$bCIw|sC z=xJJcl#3G<4a{Me$+v8e07EDC0#|+pX*AS65X$A!N{l_Vhm$e{jO|L-2@^UYZXRQ0 zrWJn@et3zWH}r$Q8(`0{m24jH2;cHnwD>L?PX-5F#k4dU6fD;jUth8=Sv}xD%99CP zpo>*Kmx_eMaiL3K@sWW(dTxtr+(nW4BLf4Li;zt55z<L>UIt42x^Q<w@5IYH$ZucM zE^3C@m}2Tp@sz<k@8vJw1mtera|PX&cT%CE^3(`oTOL2nwe_!6<jqmTas@<WatlV= zsDr5bgt{0@B@}^(NjwXdP@02BKH!12&c)5deIQ{leqE(q+-0&v-4z}{WUD_Zod=eH zj=t#27kOO(2Y%wB0QsDN++uI<3g=Gy#96F>j1|LuX+<WCoX3}ELMnh7sed$+>FAL* zK>rlmn5RzQ-!ci7e{H1Lt*bn;OZyeCizGKLBnaiv&58fkL-DIWK=BRx5!;cQgz`vr zA=~z$dV1P9atM?D5+Liz$#`rDp0-_Ertfm|SN}&A%OX=2nNwHEQwI8q__8!Om}sg& zLTs@0m5Y@5R73hL`%(N`zi^XV;ZJ##P?^zS{6o9uPQJFsF7ipeYCrT7&T{V%O3R?l zdgq)4Aa;uH%F})mI#>Iyove@O41={v`c7#^joK@EKqC`p`%?!Sf;wr#<E|n&%9na( zqA!_<r@Y|j<^%t}<_(D6b)CKudTQxAL)7cVECQnIYZm@&0z}`ptxq4H@W}vQy6QhK zu|2>T<HiU!<Pa)#i<tH;Zo0nbMVa;)kq1~6Y^41wr#8rVWuJn~7`pI2)nXk&*$^Ls z<`A1$A{GiEYN&>`1+g#XRMWHpeQ15DzLxqAE^=%c2sGcmJk`6&-nenx_2vRUopF<7 z-1iG#z4GGK?HAwt=J$Q^m%r)zM81!C#a(cHr-*6&2xaobO`h_@2#OkUDf5PnAwI73 z$Xs2>3{Z-rYU_9V<Mt_SpS9mLt^W1{2Gb4dJ-p!Udohq8c3yi`wy6)>A{ns_knv;c z+mQN!?hVFBUxaV>MpHLLx+$W+(|+&+H;?so`J`=5x^h)#`PhyUtULP-=(@3^pJW`f zP2%gQ5qjGnNmqXi4jmBg-+m05wx9f*0bDp`F8Jm>f3ZC6>9miwYCBUuX$uoL+qV8p zoc5+X(Rtcm()5?pR&768SDURZj4hAMvB@|uJbfXw?`?ov)XzKtUYf&=9d&;B@+CZ> zVcn^T4Ql?WCrId;pPI1Q5gT!>9QGI1qqf-%5pN7?ljpwwFJq8%+H<@Oy~|0vXq=;d zE@hjPetoy?NxQBuZ@jRfquwFBxr%8Y(0Qr!Jo@BQ?JT(E_w-SV8@=?4)PLdPAi$;` zplOiy)km#Y+qOYk9?m&B&+pS#;taYJ@=brhSP)tDYv_2`_bZ?I@saTfd5Ze{ZJ&ZE zpSG(IKN&=p>nVPZ4GiL?4K2R`tc?13X?mS@r!S5_4(RAIyvY>y8q!B%$6YVUf9)Io z@Lqo6>B~3Ye%se>TnT*-(w}8x<RAQ#pZJYm|98LeA28jE({^=|?D{)U5p;xv0O?#_ zUE>8P*q)ch#+&~su@tSOlX<a{Hv~-Y^~T?gHrgExe;uZAb<l<Sq{YXS;$GNb<BuVp z$Pr#S2k)_^B2Sn;DjE2PG7kNv1>KYn{U^95OY-t*Y*rW^Wp>PcF9R?XK`tPX=n!i< z!UG#XfeDo4U>qn9^6lup@#Qxdxc|~Ic;&C}GHK?H)n#W@q%?Rt2h!~reBz}4ER#E8 zv%w-jCL;1h&~#W4m=XpPUpiNq4r<$ZDdz@lR?+R;oYdRdJFsu3uTGCU!wgdvL`G={ zv%%EigOi<dWlLepSGSf8Ep$?kOjH@<cEYVKDyy9)vT;_5r4cyjmqq1uch`x`kw-d@ z1Ja?3m&ZFb^T;op;pBrXffF9URBCIu=c*%)I#e}%1NpGOFM(CsyksoIEhB$yYdS&Q zG!698TmdFuE)5ZF1YA7ngfsctY++ZLE(B))que@)l%wZ^Ymt?KPbc`LnR*P~hy{#y zG1O5%RaRj-P!3^8S=7yi^%dc&i+l{j@=&*#*e3}Aq>n_#gae&K9u*$QX>ovJcbGVV za`}Ro96sLdBjU)+k8PgcI>C^dG{vkB#h0*u9=#VJFcdoY>xYUG97Q_I!w>nai}Y*O zyVo4CuXT#;b3kiDV5BIlnS-;q3s*VdN4eevwX}IRBsNr&fP_}HvQ)f$Nt??Dc}!^| zc?lAOXgBluNZP{%Q`6*g$GnH6C=fA*G{z6<YnBuigNk5KgFrv!6Pt)PG_1#z3mf>t zDKA1oiO&!&u6_&*!G1~{`@n9LHD4Tow3VSWq|-K_yy9*M-$*PlaA!5e$J@@Z1$CTB z6a3sft`7n%jzYPS7uLgzdbg~$kf)bgr@Xz+0b66kMD?+~0KD=xqn6fc)(>a;ZFLAQ z;`T2T!aExT#5eo~L^}z$ehC0Hz{3`qAX1hMl%N6!e8&O#*UlN6WUNfX-=E{foOVZq z*wZ{^k$g`G+w$0oWUZk16u21?9>udPKRZB%TYW1ws65%o1;>qD+m(d0seJ64yb0js z+`b!QSdx0VWn<))O$dKZ<3f@I_-<<0cRJ<(Y31|ONR+cOeS*a6tmsw1O)-jr>k|~n z2fcg8PUWF6i#+1`tH7}`awseL!f|E3Fzq|LV^G^^3wcp4958BV(B?gvAS7E2CkT#B zY<J~rz1PNPedx!?M804i-c)$clQX_U<eo!))z6L5{Op71#obNbAM)y@kN11igv|l; z?&dReBJ22fWF}1vYWQ_-!3FwL%c<WLTSbIB!ss0RC)0G=k7h(E^;G@5Od4AnYOf@# zf6dmPSJvwB>F~E+ptC-%VP%^-G{M(7MC}F!c@b;KZ&bOa9?5hJ$>KcouR^t6@n3mj zc&}ABZ6T~Y;fpLT)nqpVyAc@6(uRQ{tj}+KDpR$G1oFDYYKF2$2j)HAl-tE$HlstT zJ}XT(nb_9K3;BJ=#WOd@@Bx?6*)VbL#Bra0q1z{!-7Ix8x${fy=;mpk#DEt3U39<X z35dL32A*jXwgZCli+kr!a|p_=;BH*>rXoMd(0R2LPP&^esbk>W>~L=Vf(;bq7i{Nz zc{;=m5RP**q&K>p2WL|a-qwY-(uSJEvizeY#8O8}B;hB*+TZqm%hQy`0TtIzXox6& zeJA?UccgDh9h`()RzLEe^){@}*=Ch*LuBS;y%^$$)<4Jc&l9sl%d|d_jSky6^2Yzb zwXWX1>qgqjy7K2{nEfKWlso+w@GGx6TTgCI*zejuYX~<g<1@f|twwIZrLIg%Z|I}~ z$g_Q{j`4HK^Y3fK;#a1%ZDZ}bvd~BmyUP(4gv#8MXEA#6Jvbj;V?%5stmB6|sLw%D z*bO|8{zE_hZ+>$xznAf6*%(nl4Eej9{`Q#7x@<1S-icT9%#WXVK8>%DA31vfIXSV} zO_8OwW#2uPDEQJD;B{y(uNAoYkK;jm7(q<u*`U)s4j<<X1hAGp!1+qx;#i!;gLV>s zjdkI>Foz+B&s4?(e&M~eq)mGB%JJj#${X2_y5cGs58+$PnXg^86NOX)z?Lbt!?~yi z)8;#VIoU9%r@v?X29KJ$D6fn+xvTYtmqNaN%}zd@&TQm{Xa?&{jKHVNj>!(jpPpoc z!~u#!T{^`OuAPiLofJ8|=8PORa(CA4aMEchmx4xG;6g|LWHFhEpLP_7fkQ>e&j(qK z#f5a`0d8RIH$zXl1nBpAa=o5Bb2N{KV#qgz<XE<wA?BxSfWs?x0WOH`oYPqc7Gj~; zddMUJ+l9PzwWA%adI-nFMIWRak1(i0aIn;d)m{G5zmZ623o{|`d+|6PyMzby0xRLM z*~E)g>U7Y^mPe#5u#-;=&H%;+lczj!NoC7dDu&un#cRXnhPNP!Ar5iWYF4xhso;%m zci<Wl4$cmM83?OX@GRc?T3x%4R^Rfe&6Q3eR@O->)1f7KTzjam?M_ShIk1jNrzP6K z5}i<H^E-GZ_3!yD{0AoRU)*!Y2!DRhWJ;P67ejw|>tw<9W&33DWLvlFI2<&+0?)i8 zO>kXGPNqm{8~oFBc_<3>^5jeJ>WN$Zm7q9@NnYc?1a{=0JiO(};RGT%WR6tv1#^#l zor92aZHSHB;BlHAIIcI2BLJ?gnc}$CrjA`uc`)(gNLhG8Q$%2;z5F9!35Ku4l{K*B zs8gybr(Q2k;R+kuX)|d>1y3B*Yd2v?hb}!Fw)QS--fN;f@&r1YCXr0M9`R4;#8)Z^ za1k<i^00p^g+?j1FW|D1zb>ToHOKMeA7P*;$-Lu8I<}j9%xj(L7f}JgBX7$R!(@XD z4bTj8qs=p)APw6iHAGs#0*7{x^u3iuGblSU2nMWhhSI5C@n5o?l$yWeMK@c7FHR6i z7uUQ_s^j}DOqu0N-*`hO*zIGou`+OhF|9oT*UvLo5SK&w+c#4u^Y}qG#jQ7_z!zS; z)XwORo~nu}v~%@UC-7!tL_73JlP)ZTuK(Ky_qZYUzP5+(${nJ_jtPnt)q&V@$7-KW zd^cmyYMm+q8Oe|-qfT&?)r9R${oRYmFc({+iwq@hoP+2H=1mwz@)1j~ZTqzz+h<5$ znR^u1{=lEhyi*S57;OVSDWE;u7Z|@_k?CLZzM7Y-`cuXHLlt$BdXetPsg8%t<fp%q zsZ!CGWQ-FwU-(y)2kKStRj#n-m8Igfy`FRGVCk8$fxZ(q$|m<Ht_<Vv#QT#kMbJ;; zFloPJm?>f+ZFe4LzN#t<2Y7A*c;m}T6ux7nd|Z%kJCmrg4W4=cdn<o}H*{=+%I0{h zR#`+6M>G91ZNKs;=+d&2@vnaMce2OF+30YCU%kRpnVpXoKZ{ZPPhZT&2(kbsGT+Wy z(-!56=(0AJ!9JC{Pn1c^cIG1Uo~JZkzVdxFeR9RcxvDCc_R}^1Mi==>)6JGXUFeID z%jkv;ndf6GxeAykK%n1u3~3|9<zJ-GF;9s2BuO?#nAOf=cjtB6mxrNr#g@PRKpnN8 zIP1E)0wS2FBTOG)t;8Oxb;WC1;-c050ER~CT*+B(kjM5Bdo5h-G3@ny`x)&R@q^R) zRTgzHI0i`f;l_w{+J2~XoYPHP8G+W<55JNPWqVZCSS~tiQ`aZP;`ZjIJgQS=!GC74 zvvihEHmksmPsoeI{v>@0^m0wS@Wu_bZJtmgD}9muu^pjb?SigRD<=ty>G(bVZM%!j z^lf^3+KzbYaOFqt@0REH{`}cCMp!ug?6ccv|D*Pvib!=lHiA~Qnpz=^&-7zxudNU1 zwqC^jbB3_16F$bY0u7JjtLR&{&a~I!*^vES!@^zj4ji46f`!>Quv4~pk!<8MFKpHj z#uJu?@Y@i!?5S9I<p~~fCQkq!c~2uj8^@>2L+<j^s+ENEDbi`rl(*AJKMjsS-isHx z$y-X(&M5beHP4{FdX+&_2piu2`F3|DooMBqBT|C6PkHQac4VVG9U2|Ji?=N7>1bBZ z6*sadk7Vdvaz|zC<8^jH8L-mnXs<b{h-yzKD(>Jpz_pV>>cv5RMGZeYv5a!<NSy3E zfCE(9n#aj+uH~6sW9*QQCkw~3^DJ#`K?kc%Wht+8^sR^Tv8=X`=5?YV4UHk3Huf^a zj7j7}rh~ncmE;A*j+s&icP1o9kO0SNXRpn=<R8G*6S1|{gHZ6|Zb5v8tTPOj(dNtB z%gCUsw7|2QWSLyo+F`2YicZW#RN05BM&kezyZ6ZfIhUS;n6&*@7YPlUpa><Zr`XjD z!(NYHnk8QENH{RI?&ay?OuBxIg^OGgrl?YcLNu^EI`_(g1mWTX#MKOZY3Pqk_*^ji zB0&k7b^^bP8hyzEC&9j8(9Ox$Jc9okSnrr>OZy4u9Pvs?HWl9I2?TXhkFJiYL!L;8 zgtedS6a)p8S%rf`mhCY<BnbJ9%D+!jG~4RP<R6&m%YYqyr6kQzESGx9aFnge7y;v= z3n|jtEec*}Qf`?C^148@S>*69P_dssEwGL0ANdV9>BL;89f6zrf|In(^V*=k{Z4yK zUWybfhs`_o@G`W(TKjq(aAZJ^(2gul!u2cr0VnOqGJS<GnuZcE#Y>dfbPjo`v_-LF zWsL@8Z~av7PTB%bS#-*oi}*<SgdJJZR|ZarrR93qd1CobUxVWIIpika_y|*X$Mq$# zG>jvS>?fF~I`J(oE)>I~3!;@{Y^L4D7UHGPl^*HVCBmbe?YaEQP`#8{+$^vxg}J5j zb%O3<qi|#pGEs-FabSUutSt`iB!e%%l}T+t^_)09GBU*<eN>Dx`FG<39&CC#wpyYb zeG0|9t-QY=cS@DhzOQl$lXpFMhy32BPrmr#HBSO`<66ILzZN;b$s!~&At`l6DH13} zsy}t%g)&($`l`XSnFnmzfU>mE;%agMB+np-fVG7e2H|YC-n~ap+bv_6*P)qGPw-a+ zWl|SD%r59Ex=CbxTW8K2d@{sM5q}o!KhJ#0U-SB25&wC{zSXDl>?iaB`A4@Xrajdk z8A)`ZMm>(c={tcde^K=rKT<)sHBNF6HMSXFgkF6zR-mwY3u;bmBH!qtj5C%`p0eoQ zmdEG8(;T!=NRV&ZvcL)Bd_dpmPZv5jTA!{A+kfcO&ePO=pFVJok@q-Q7tSsCL|1fd z8>p;~)qS^I+lGFac7uHH{TWGYqG>9dicS_1lW%_s?~Gwt+}YO18z5=P*F5=>gakb1 zkcP6GCyWbS=NBIS8<SS@FR|ZZ?|g>t_KDI@J4JW(bc4b&{qNgf_!BpUq}|2Z?UVH( z|0dhe`s$NN*+hcIjqQ2sP0N{<CcdeEx`|S~)K%NRPu}s=2r$Ybja2OLiOf?Ez5`90 zWsX4F@h?8Ie8ruhEg#;z>k~ra8w#pU>tD7E>!9*=F%Ca6gbh|v2Y+-No=Y!<bK3ee z&LMsHH($EasPC*CmT8|oyzUKqJ>LxgtEO_wMjEyavKkKanKw4Da1`){&JMu<06+jq zL_t(37dHjhZra)+`3Y~(w-UJCJl6uYPr$>|^2njA^10yq^ho=e!UQ((@&TXr^T9sb z&DW{h$f|8ZZ}@}L^5LbVnV*(lpQ`E2XyM{-%6NbOv-12L;j?Xw{Lnx9$>08uzw+~c zhSJ}s;#O3v)2oj|>-qw5K^Q*>5wi{E)yaGP|LeRCP#%?Moo?gDymb1bYz2G_^!R#& z5BMswv9P2+l~fEd2D##xzF72-;7OkHUK+&L&5;Aq#6>Pqq?N%rM7_oqfjdrIlhd!6 zz}wJFbin*Tr{mznH@KFDMoyyxIJx_?6AX5+Uoy~SbAyRdcDH$IBm*=ZP~K(_73;>( z2HlRV6MxuKW+(5)M+R=<4cn2WTzd>HJ4QR6?I7)Jq-{rG2*0sW1`Ep4sUo*Ls+Z^5 zK=JG_J@U7P>5-%~bceom6CIB0!e~VAp4h`N*4rgpkRZJB<WokeD`lqudK$cRjSYdP z+^J8};&ZL+4Z@8cfl<;X)VDb2AeKoycP+HB7Ft@$ut(}F@)cil<)V0`{JL246FJFv zBu_EKBv?H3lOE9*W%+foR@<+3?*aPY=E&H^zl+QYOhO#e$U-QL%u+Znj5`V3B5fhU z+A;Pna6shYKqc?MN`<`KRm#9qew2<p`mcN{?Jfwy8@drg8m3}w2?skea~1iG69AL1 zcpm<q+f;H~Z1A-ou-$#|gjcXO$jb$#TKzgX^pWS+z~IFIQ&-y1Nf^JY=Y6f*wd0ZI zl}Wx(GZ;r5?TGhgLK10U<i-z2-u18u!F4fDkpu`ztf{Tf6Rh^Iukm9aCA_)`GbSWK zsdW(kq=#r=k_O(3A$;&L(Qk^READ_LRz^2Kvd|&!3y584+2)nkbp6lYz-!|41*9#D zKE!+*OsEJ!onk8|FMOIO>>xmcZWWsNBzBK{;Obx7?h?<0FLr>4JbhWOPmS1~3rm{( z`kS#Z+Qs~l6At2z$%vi6DX#JqU--Pt(6*^ulg|aP)^&A>n@C7hV(A1%c$4B|MD>zq z=^NRnlvj{}eH=oI%*Ymd2w!F;B?p7HI%74nFY_lc`79q`G9gZ`>E$0H&?p_L+V2>I zQIVG6^JcDK6sUvaj*qQZj@FxCv7!18E%OY~U}OPkGB0@IkXv0ZbkNDVxOehvT{-DZ z-Qg#eIf12I`X6Y^F}i(24lXM_H0tMWAn2FUI{b^gTl^{7+c!wd!OEXWP>HVZ+$3oL zHxR%hj_pU+Fw5>q)#6g5rDLA)plH^VYo6k_@Jint5rj3QIykkxZA?K3&yxn&!TPto zVh;4Pu=cec6H?dehc4)+TM277c*oBV-Td&UNxna1)35mHg4b@A)P`(4q<$+`WQd@8 z9WpB?AL}GKP!{*)CmR_Xa-AAXc?I*VFhrKC1Ie~+>wkP!LtMjLrd*jQ-wmDvEI1M! z8c;S12~z=S8_t)IH*Gd>)ApIStPGhe4bjt{W}t6)0~`ChF?DXJxJe+4IC<Bb=@_lV z)HF7Ozp;m5`yXki|2MxyMVxbLcI$U&Wn;{zC+&N2!2CRdpHB%JGV;;J;fZ`SW5;wi z9<nh)dE0*d$Go@kf9n^YN6&jU8C~?Zjup)QN8Q!Kt9=iQdNY0@hcwe?%ij+&s9)zh zt#4`cX5rXgKLS3!jicuMBH>{lU!Te*)NGoF-**Ga7mfWQkNl()8%NsCW7KW!-njJu zNJ8o@a~;~v=&<v1%QjRG+vey`(QZm;Tf^3^>Edb=uM8%%W8ogkBrWto4tbki-rBnL z$Og~YC1fC+_GV2i>BuC9#V3{@pPk=_E}4-v_A+gIv5%dPNTd;mGIR@^^|X3fPJpqX z`mc1u3s~pc8<HOZH|G)$jyY?)joYbEAWSP*C`E|8k%|0pg|WS!Iyz=)M}^T|2G?lb zu=eLb($CXgH#dLw!$0;5za4<jaQbW;BkGDheup~;-(Mr1#(&xlF?ot~lvId`OQo7^ z<va|JuOF5^zA7};3GJsax1t~8ebx2hNRI%%Du3xO?<e7&kZtiEvB_m<X)6!I#b(Vo z&*3-ppW=PcvOzo{hm;mC1AneRu9a|vn2j|jCpcbks7pnan?PJAZ>|L!#6~#>ruhzR zJ9(T(`|R*(h&#xyj3F;aI=gJ5*y+htd<Fs^E2KTQ!?hv9U^|mcP=RS@1{OHd&twrA zmE8`VV>$upE^oClcpbTf5w@Ahj~wJXFr|#nMm%9wjw817rsLjgAsyFt&?uI~i%S<@ zSs++hny7qT++=WZFsM~Z%WirHc8xP3a!WhZ%s;4(&eE^`sf!te9c=X_S!Bav>k7Sl z_o#YAu7army2=4=J_Un}5>N*75)x?z^D9f3kS~89BfS8M7%2Hf4(kQ|cCsNQ%iOAn zovEt~{@9qzBBy>T#}IFUG#A7I<gY%`G~?r7J?fKv(nKcpJttb39Mk~hLm>8;!B`on z_;aI0LvZ-bELmP-tK>;S`NTV|6<wig5Y1F=+kq|D(Hk3SJItB8g|rzRue5YqCTY)n zI)ppJOc--`i`cfs<k6qi_%!qlhbl?;8Wh32#4MC-Pd3VXc${sz6C(96wC@3{m&E86 z9~t@~R(n3?CrZ#b1#H^n#dP7ZCt+;{*|>mD7DvQw8s(t^t3zlHj*Fcvc*ty;7@H)W zwp-fLvU@mVeG~nm6F;)uN1$*)ZuvTi192G=pFUB%^gC8p%JeJJFwy5T879soekW#> z-9Xd+Z2K15h{3v3OE*p^jSTH?OW)EJrRLWMX$SJd7ebGd6C-tsULf4eJ4RxF(9r45 zpsxFOoceI=qMYFR_pg5P9h#wgqBo_z0$D3+2xY9}LjglaD-FfhQ*0ci#q}xm%S&7X z(K-(;Q3yfzM98?H1;#H|uEdeYvXO&0eUfq@O!_Z(Az_?8C=y5&Sw~N=<SjevL4z!A z=|VewnD(T<03@~y{<JM|^aV+Acz3V3`ieFN$pbzfz9YyxnOzKmkkG}Y<+c$wQT?>- z>SrwSEQ@>~#J9+QK0m$VrwVV=?)5FDaG|3v5Oc#ulof%r5ZjLku69AIh$)8!dTASF z<~SBl023s=v9hLZ!=xLP+GZGHx9Xuj%A{nrMLyQ+`bPv%4rEXJuFMYWcf3#J)yrFc zI>XO^dD`{WtCx9V<OO%<^L`Qh>dv`{eFgAsmt%YD4L*vSdN+j-eiGnYU78bHv|wc9 zLfL|2zoYcZhORpfOCaSzjQwim(yU)%2VnNS0hXr@pe=cQW`lBStGrl$Xxra7Z<4r> zsawm`#3=cWZ=JJjxwe17;nO0f+ix|!n;X(wfA3;mdpVLRqkf#)YEvIM%@L-2bQXvl zq519i?CA{Z1l$7ZQ_4*2_~sbs`*jTAMxlC1qfZLaSL1`}6Eqxe9EqI(ij1^@4O=hA z#s)C)K{tf(ljPG!eEa6xLFs~Cc}hdN509~rib#uk$P*&O_7|!Y`Z(*>bz*vj*a^LN zGsR62%iOe)pY1i{CJjjc2wn`vjS?2Z_t>O1mQCeS=;RT%-W<nPe(k2u_xh?+Z2<q! zr|E&C?s-xg+S#<BOfy{Rb}qN{%eywzuGj)Q?2{*%4?}ZhR8FhidYo*fj@~jl?CglB z{v0c_8iPjO^dV!n*erB~FP{9aGM7f{6E5MYULfR3J_fVeXL@06l@3wM5IT8Wi=hq6 z$K1k{Qp;j{3sR}I_3D+FB3nUdKzr?_3~q|}l3#6U-K;I_d-KzKpEQJjY<~0ncVzRq z!mbQH3x9Uif129({?rWCPsM&D$?04z(t&jtu0$9INEvxsiG_W5)x1wQ>s(I@lgj)A z3Lk;2qkdHIQAQN|DEFH2SgW`&r^FY)2XN{{*%hYE<bp8e(H(f5`zg8GC?Dc&Jsdo* z^&%*Y!=F=OPVPxXFj7l^>us`G_&SNPF%e54jV~f_&DUX0_;a8eU9HEhOKrg6fawCU zjh6vS0>GpZkIoM8OhKS)$2Xl*6cAKg9|5GZosE$!)*=tG0584R$$0X$Q91*!FZn~( zo;;n{;;B{aFW!8D8uXKX#qYH`6dx8&q+C?MYg7#VwNdnCk!|b(eBshD!w++hJaR=! zzhl3>yAye!FU{-V)lH_>pm^FKVo1}8As1R$dOljo=+jP-f%O>Rv^yh5Y*0p;h-*)L z?FT4#P>Squk<W;l1mp*w!~|jF;egi=ERw{^Gl%t?!93TJ?RD-7yEv32q8z-(&MF#; z#^x!slULH!#eDHv-)px_io_YIl*e?&pcQ`#gKwE1%Am|A;x~5&RN+1fAvn29_rg_5 zE5%W~M38xTnWcW&R8&7~n#rh>BY3E5{3=FbqQ_*<=YninFMXLH_2$oReDBC}H%H$3 z^R=3*w9B-9D6g11c8^-hLSdFksiWFJgQO0Fjs_~BoH?`=*rt<hn#6!5q0i+*k@?~a zGO_TRG`6|>UV*+GQNKce^0P1s&&nBogJ|SpD+?~$=^Xlr?NI_pEzn+ofL<3Z_J=Z! zKPhVjQ{qwO5L6lDdIl*qFVc+aO|NfWeZF#tKXjz0Z1Aw%wXF{Qw28J6U(&d|$I<{P zt1?xtEzgq(EsYN9an#?ymP2JwJ_#kJKsxf<31D!Afm&;#^rX>TQ)du=Wib{;nL{ED zpb%8@w3}MGe1%jYalDf+@6eNi`4&?cRO5Wi)Rz~R*nG=5Nek4{NrDW5{!o0=4Z{00 zQG;{_S09QDrDIxqWl`-$H0`E+Ha4Q(d}*~l#_5z}`ViZ7bkXmImz>PgS8eNQqb`QH zuHVZac-yEtpe^o_jfKqLEQOXb>H7xH_Q<}3^yZfL8Ia*m@ZP<<%N<2GTRN`PwxJq5 zpdML(4S$Hpno|w{BP%cwg<|!Pf8n^cA$k!5Y)WjiBw&nAR%X)HMCDNVWOFhefW%&U z*j8FsF62LO@T3U^{#3%BA-XB@<(DsyjgkC&1s$au&DNPep;>!%W5jV10<o_gDyuNL zimuAtzC<0gQ5W8=6V+IQh(iaCpm+grv5k4^2t{?RCdo`%obVf4n%2&}Loc4>Ls`He z8fBbtBO_yd7vH5*aimdPV$wxKwD4&g%e(-8bqv47SEMfu$DfCD6KR%C^q;geLwl}G z$79oOD6>wtOlcy9cG2!)vni0YK2bZkpd(dli7SoJK`wUv{Tt@KjFqtvyWHH`CaRD9 zs6R(Z-w(ZaJVq&>>s<1X2b#j|5xoKSrKJAbopQW<MVs{lY@RShp2(*C*H++M=UQqN zn)r-A+s+fpS_M>T*<Y#pEwo|+=s+y=P+IbW!m~ej$xnlTwa9mt<VK?xq1V_xD2C5v zJ&oi^Q&@2KQ1<7v8ROV$@Whd@a0*f#wFiA3_RwFtaa{p+)5N)?<EcMwi>kxRw0+{a zF(F=qGz}g9X5MOBjHW5lkl4?@@nYk_J9Sadvs`*_-oQ8pQIGL;@Z?!M>7Vw9F_UBd zwh?_t=Rqd)$=HZI`hikPS=-%kv@OC%<e3l4$MV{eeCXKD@+7=4_^$strm16Xkd-gK zj1J)qn)vec(C@XsFYq-T+rTw2JT5FP+oyGve=_>U%b!-H&lNuF#>fx<=uiFrum8%= z{|Pqvs~W(1yatW6q0VS!=p-9Y#VnBVBO2GDPf8EZb^gaVR^(TeJ%+trUvUnHy8;~P zi_%BlS0@6EOi$6YEPOHSW3xO3A1>0eB1X?s-^%qQ-Xr>}t2~cGl5<^3mNaDq*8;=W z(6hsFJ7fnEJLWvjpI-S=)yfQx&^9h*&&PO<=p&4>(s*54+XZzJ*N!5vVA`<v4#Y8V zjJO?K+iBR5*;zOc?8d^{Ct@hY@{fF+l+r<m<luE7Kgpr&B6uL6TO0hNUT;+G+Ba zUplqw>R+{`6LRuvKF4-?#yRY$rn8c^n<*FoqTpb6bxA<ROgv^lRc4Fak<a)By|u&A zwj3}Y4uBRNw}S=rpCMPsS~!D47L=1t9bw-fkLs&;WyzTiTREMOKrL|L7`%|?6o2%> zVE+NE^|~7)(%nUmAVO|^ESgvk^M{@YpohlBWbDLBJ7}D~V9>rp1W(rU)HVE5FUnzB zkO?b$Y;D1?Eg5xFRtM0P0e-o*-ptomB__u5_nOQQnIf|i%Ds!#rp-Q6g=&tv;Un++ z7o6I&f4%9O^z|WqPv7uq5&qthN9}LO^Zl&eExhO7JKpn7fjc)vxD);McHZq1U$pJW zOCNNA)z3x{<aUi_xpqs;b<{D&7#*COsV-VIb)qI91Sje06Z>(>M;{rRX3b`Q0IV>% z7LSl?;(fZ}j)A|67@s0@G9WAELkHl}Mk<o%T^Mog0x26Kk;k?OZRZ~%S$}Of#7J>$ zl2Bf0!EIWa%HOlGVeIIoVyk!)#9l%_*SU=Cq8IR`aF(|H36H$?p#Wl<!~$z)^TgjE zwl)(tn`KU^WBg<m%rY*Oz4)dk46gO85o7=G?SxXO(gr8K075b?kS0OduJJ|RBuAdK zVKUaPQmPyhh#;qKVbi=~XcJ|ku93sGt)7BaW(6Q!f}|)Ln9c9PuezsJMAkL~aM(t1 zq->e#w6y@m7WFy(rgha4;HJ;hPb;H-$q{?Xtl{A2Wf@@GFq&&wBR{^A{tcMDHc#C| zvu8GK&`0g6^OHOJrAQ{pDT4rcNQ1F#558mL1CwN_?cLhEw3&{;JMfusYiGz4g^PJ_ zc=RkBw+|$SbmYqhH1r}Xu|ZhpJN8GFCfL9r;ot>GMkJ2&p)+!i9=Lz&3MlpWLVt)~ zpuGLW9mfk6#4o(2ZM#_T=QCd(8za7O^(FZ%_{X2Jp*8KzCsv+gm;B^RCNN#Ug=53i zP5Valh+G|O>`Se)(GqwC<qR!T#-#`8z*=`UybuX&PC;v4l2f8jzoWl5FHaN)PuhIs z0AE0$zd?OuGi-d(_g%P=p+K?uNS3;iKS#14*o_EnN`E}Y?qA6Ild?)tK3>^E^wBwx zD|$&!*^W;x4><8s9^U!@kg5CR#*xF{Mr~j0hN&dct(zQ<71JKTb2IOTMPzZtmw8G; zn%&fKW5@Aw=8|lVh_Bz+;b|+|Xl-Z7MLz2>>Xg2+3fF&`@y<N+v5c)enPDR##0JC% zJ>XL(*i=#(Ymv==<;kW2<=QGv?q;6$V4TmG<%R>|SPryMgw~mDG5?ezUx4I(2kdhZ zgp!UJl8zo+Rhg7u<qHQvN59S!eaD7&ZeLsYhk8*#*f!X-B^KPYHQ@~MjD3((Sv9Nu zPh?TD$Wqv=EQ@b!owg30XL$%OZdfF(Z_B&&UwY9!x+w3tF;YJL2b->OODJSPZQaYK zby;5JDaUxn$dxB}f>>SEF*=zC@6|u@qetYkT|sC2h&;h0VS;0Ze&v%yu`52@`Rgg; zK3$WW%ELSF4`FU+pY6t&?|{6|ngkyMMq5QTsLEGc-Mx7JCqMX){^jq>_j85Mx-k-^ zZ*Kk@UCR%~Gm~+6RkOHUXZ+Ymx<Z;)il#0;2K)2moPPEsma??bJXxHw$MQaPebP_^ z96f5Ex*sV$2cC+x;lypuUT?f`;z>Ajx}^cVwb)1SgBUDvfxYT`g|E0Hr8EJ5C?&+8 zAx`+sKz7KMMC-3|Drq3c76NFQ!q{j`Wk|PQ2)_{N#8YSmPeBqXRKm!h92|zNk6e@I z#=#DLs%_)UF_RNJukC>84M>N~F~BR1cUc%q2;~!9l1IwH!QkLSW!T}k5UjWksAx7v zNr>HGY$rzVQ8}Thtm)WBkl+r2I%z9o?d6?LH$8-jp1>tvany^!J(CPYTpA>mZOCh| z<j_ttx%OI6d3e~dWwOeOE(6QtNAAHDPJ(W<hz(m{)uZxyy*3DQ@K#P(C1{nBF-1Tu zac;O%Qh*RKv$U=qe&hfuvH_BbN6}gojY~IRrD>gJkRnfB($+VG*0$;;sr*w%g-f1K z#iZU#R_F=AB(0348NHF!skvNZt3dR0*o8|W#M{lwWL-}dhV~BB*4olknQ(xHF`?i| z?qqbcWt6^SGK#6pW{iI=J=&0dy#K0Fn<*=gM{+mDeD4H5<G1wr8$yWr-jV#H1d|7! zws_9QNbU;buggmT-E3PQ<6kc0L*DyPUhgPt_M;0`GGy|Re&vj)ifiyf*a>R_FD=T! zDR>kjEol(QbIOo>D!bl)!e?WI`tu2xJT-zYwo%_(;HC&s{7tWIZIp+TwmfM99_ZM} zHkoeXjLkpt>?@=tjJEE?%t?(tvwowX*;q7I=vCU}<q+P<U<8a2r`)H^f`bi|9U7?* zVFD*F@>~?4Q73&Qg<7K~7RxX)h&%R-PfuC<zX3CE(UOE0^`A)^_!il38LHbsJ$cGk zbY;~3_I;4l77h^bPYp&7)fsr>$x~WI7S8WR3Ko!o4Xzn71g>KQu89Apf8KuIV(P0p zOR#)Pj54yeK369Qw7^2Y#M&vg8vOVEtcAMwr&sOItdr{8MX|b323{uM#)F%3?V63t zT1>eDP^gF(ohaVE;h<%QP0$8<hjjG=fAV2)48rKh<+U&VrajQ!eJbo76XX0<w^$(~ zzWs;o!~WC>GFbe?B*yVKdPCEGz?V3`aU+$un<Q??OGEuR(6ft8@ogKG2aw1s%dNYP zm0}8~Us=bkKYtRG$G%xNDJR(x*Y`@9PM-NB)gQLVJ|dfjoKM8<zkcM7Ddu=VKX-=> zo<k>jY=nG+pU-^B@zTHNW#`z%U)#mB`Jtzur2WIpav7^Lr^taAk>88d8Fk#g-mzA> zt#fr$>QmNSM2qHIE<BW3$c!v1M~-Kem995ASVgCwXx_*RY&HtO&0T4PuJ3>iZssEX zJOmp&%hM5EK$dUii;NW~T=lQrOfbC*vCLzXX><xoDkzd#qS)bYrR1-8xi0-v-|(JF zZaYE_oF?fZqBr|<k<|T^C7tri39{9tzGR8wWz52d_2cvrWY%-FXXh3?UZIJA*YT_a z_135H3+JR9>c63M$2rLi9pBq#0d#6B{2O_ZCiyE{>jW_EqF(agFrA+^g^4nTl*EBW zBIiKBh<DPc4zP@my<-ekPchR!S)gJBWib@jcH8S@Uh?&K{aarXrSRpcO>DFFf7c*P z^tPci8F|&KLHN^tfnk&7p1I0<Z$6}6hbH(dn{-ckOv_tY8ke^E(T9;Q-K-<Dr`MK5 z&y`o$27SS>e$m{PSATUazBJlLoieV@#hbHrMY1-t4v-<Z;`a#T)X4+fC9#=T7}*A& zNY98E%2%59FIc6RBVsN{cO20)^&#_>PrcvW@>^<P_?M~wTIA1n{_GngFYaFb<o*5I zAHb-wWTTk7bFAc!k-v+bs1J-R&=vk#Gv9^46UA{j@~!kw4Z<$o<9O+8ey&6M5&hxU z2_0oBb}D#?vh<9PG^JXgR={CN?9XFF4C$fo_2VENad+{htV>(iiu+hz3d&HBhv5<E z7DgqJK9Z#fS6`67oq9Vo%F|i4;V(VOw4v62Jntuy0RUH&GoF+-;$sKqWMz*G?v&YZ znc8)7J&JA}hQG?td7lj6j6ji_m{Laz#O{Q{Nv(A%4e!_)=K$=WOP<n2_V8bN=isKy zAuhf=6hXd@BIySmP#9dX*D)9|*aTXG1*tgZ1r}OEl!Bpe&hn5CA-Xxy%4BQe3@XTH zImeI}`M?kPvqVxUPgYnDta1jgAg4cQ2lCW217`;v@x#wJ2l&)y2d|V2A<Hk<!II!n z+?+BAFQG+opmX+%r(jcPV_OGjBsp-j3#%jYEB`?`x?K4}Y6eVc>j%+k1xYM+>3CTi zNW*;XuxZP@Ru0O{PH6d|FPF8cFw$K(<8DACOE@V7o^;tIuO*d9d>8KeTIN;6ZV<>{ zzqKrLXUn<p?>jA2${XH0;v%U}S-3IM1(btl1(S}0rVA<W2EYB{)->IKhxwT>K}{6R zZUC$1*=WcmKPO;>owVTUk$IG{$L5)0;^kJDcI#qA3}MR9ySVD+q{+kU)B-XJkt%|W zv1>1i!^3%+x@Xe6xaP%Hr#<x%`yqMf7@tnQ`1oY&USCwO%CVDHeRDssRueuGKyb0t z05V@&Z~F`FE4hURR{EB!o4)I#U~EkGuCI8~*BycwPN6~Gl1Vui@hu^s(~X1TO5abf z<k>#cyhzUVN>rNi0z5d4m2=yJIVtA!xV>1WQo=UbSYgG<5hkJVfac;@Y-z4Rw+~I9 zICf2YL)q9dfJ1m$fgKopz)y8AOmSN8yST7i`m3L@^|iR$&qE=32W{yi?Baz+`s)f3 zUSK4UC7imr>0tXJC-_}p)Mk-2y6Lab_pU7USswZ!Q%rm}8=x+rY4fybC=s(}l5FHB zu5Z(R$lNxSCpYnN7h;vC|88|hU-0_&O`Z^OgXEbV0@N}khhJY3=^brlX<w8+0w}}M zvJYtk#g~z+a!)^qljpq<RX%vAh@6#GXU9BiF=Ql7nTPvBE?|A~#mC2AzId5`4SC7W z0Pc8n+|7}FVkG5kj`%M$-j#K8DRmZ!q-Xt?XY#quhgjX@$C-l*zNWW@*a!QxVi)@L zOLaVhcp*T1<_qtfC%nzKjk0L;T872&tRI*aPe^_@;eek7VHVMYC-B<7Vz_X|Uii(; z3;UB?o-vn^0scpS2i+{*@rjI|6+_4(LqjrJL0LCMb}!80P>bFes$cJd_=wdlAK*i< zaQdlqX%)0XVihUF1q@bvDeY9>EL-Ey96MyA3K;u$Y1+ooE;`#+-OtlE;;D1nUUdrn zr2}j>s9fMf&ka4x)ma?vYsk+=sMp6qol;-G*><u41D+v#M!{^@k?+6PXnW;V^~f#_ z53dR0rH>(f^S<?`PbJW%VzR{{UL%^k*12?229EiwS9k?aiqHeBum`Es@xmD!vN*5Q zxsL5^{sdw2vqFf4Pqc}KDMJ(DQ@*8L>^W~au<=>#6yBBb0W25tIgj>Z)u;JXC-}uZ z;aaw|S{KekC)5}sHiLNeUyzMMlZ(7(3Apu1>&_6HkZ#>s-~Loe9~;@pvDUA$Eia!Y z-x~!>t3>TmY8PQwO!^((;r-#K0`nP9pM7KG@BYId{lnk<wO{%pjPuv6%Q`^Jd{*+L zG`!)cd{WK2<YbT@xI|~!r`lQW8<wZnPo<Lw3nW>T!vWVhHWtA2mChnPm6tLU{HhI# zE3WuC<iWAh7^lsT=Xo7oV@obS3M*sih&QlT8Kdtq0p_&Wg`9ZG#V6&$j~o}M?~)8B zCT7db)(ADe)0as!WQDL1X0~#`J1J5O=wyOm+zvJqO;##S=7GrIl*e5&Ik{snabU2% z>=c+>*qILvZKO=TJSutV=qqcfNwU1`Xk?MG5AiZ^DTC!>JLzQ+Z#>7^Djk(X(Ybn* zZiz;FnUS#58lK3RRhW$76Iz-Lm~Qr1XHG)t;Ly#*l^vfQnG{8FGAp`p4+DBrpx&*Q zPTc!~S#0IA#p<UX44ig=(s%K+i#5x3^C^=eV3cun-vPyi<`LlOMBRTOi5--a!lMHh z*026Skk&ynbebRKf;)a0Xepf`SJn?7vEnnt>Jb@98*589yL6)1NgNK}EgIpx_KpSy z%jV?Z5h+?l!IPZ?+4mJGr72Y3h7$BFO!T)BLPI>ksTb-}x-jH$;Axp~TFasw0M$Oq z5rooAddrAG7t6Lbl(>?Zv`asaeN&!AJ`;cEQ^E!p#B5$+f2s6c2KpE6hdg7erg#6G z)D1re&Dh#Sl^Y}c)$bb?LvM&_b8peTPm=Hi3Vxdj82WEWO52l2c6dbc1vz7F!By>X zrZ>+GFyG@~UF(nLE2STaCr|nwlo-48i+4`_#r7gD9Pw@lb&?NlR)l%tgqKcgLpMnB zyIwYvGI5QMU|(f{N$ib{#BUo2$5W3?JVsJ&p-izWI;b-;SVzX`+k}X*kdt~yIj3C+ z02cYx*{5M_qsfvEa0mR6f63EV#&Q~H)5TLCeMv%<H*PD#R%H0}q`;;u@F<R1;@cL3 z%XLCvbK0CE)_;dV^3=UDRJzE9T&ur8>C0ow5hIwKl%0@vY55$<ys!^tuMs`{hALcw zbriMCTlIjCEHzGOJEF+a{x`oBAKS&UBg@(}eX#b|F(peQvtL;mjcdlK6~N3g-~J>& zj|@P4F043Z9LsnCQE=L410x<s`!vT;>sEfq%L3^gJ0eP=x0)xtwjpzc)=w>`FXN-< z_~RRWH#s~(QW?T_g%yiKJ-xYMTcxiSN4}9qrtsj9Z}hVtVVvuWF*je10JuN}(03yl zMC}t{E;Pq?Qr@}%P}c^ocCue|W5i7nUpnaDsk$-ZPigLUV}!PAzMCVyXf^bwo*<PF znw&;-*}$ao2S8=W*l|z5^v&9WbQXeHD4%s60zrOsf>u7pp=&Hhb)5b$^yOi`ZFgmB zJ3jlfSv;qmNuf0L8~=_r<cGb!vwe_RAszWiLqEPXo51xmWoiFYydg9Z5=kXzt@Bh+ z9>0l3-(wt!aN<KpQiclEH0RKj#NgK7m22n@O!XuWd}X#zmu|-sbO?9|C0+kvBT%Re z|2YL-=3St6zN&1(AMJ<h`gPlmb>U{4d`&x!)+b8SbdHqI-|+&kjKUi_$0Gr3pIGrH zqqZ$^y_wO?j-`_}1HJelI0nlMXc_sed~LAur*HBn*2)9jooA_+_Ny<}f7RjY1Enqf z`d8~i{i<91gyOB+?YH{$f)Yiw&@9eLN7}7FVM?#?O_%pWU#_f6w|a}Sa_z<psvWvj zrpj!;b*<0hF220lmzr--26aqd=UM}S^^wRy*)VAxr~^2GCoPQgr?$sa@5*YMub#^H z4jwnp-h$&hM&tvfe5H8WM;s`@*YCvek>~oZzTw!Cx&gOO|M4E4ckln`M}GR>{$U7y z#?xot7#ZDv4ZHoTm=QZRo=W1XW{;gY1z;j!3h!CS-C66k;Dz7o|CjhNtz1KXEB_Gm zyD*94JdkU2`U<>VK&z~{*ANFLLm5_%P!mpgfgj)~@OS37e55V@Zp;)*f`sdZ^lS{m z8&kYeCe11FWR_;A^puRtb&_Nbe8r7+5#9DEJ-d-iS_f6QG&~+bbTYS-p;(5(?Fhv+ z*pckQ!0uuniSJz-eosf|FD_5i5=hY@Wsq1s<&g;o6f2~F2_t$0U4FturUfz<Z|lc2 zGI^bPHlIB4?U>9@eKVPBy<0!PgxSHdJSEE^wmh9=N=v#P8F=WK-DL1Le<8#5v#jXl z$AKL?FjtNhTQQ}pT#A^93yU}Hsr@^Vu59Jk3DtJqD}&e9Bl(Z=f-|b+uBdlt__S{2 zVZ9=(vhbls<FAp?6CrYve*}d#M33qqwiy?w&5Er{rS;&1Cj6%!mV?Nt4=5#$aU_ex z6^M(k4&fcyO2u~P6so}quJsS?Odz1SdH@iA7(N|1ovbi9Ql^}YaW9FPkd9@3CYGLi zT70L_3(B<<NqG-OW6K~&EtZDq;0xHp`q_h-?<_3!EkPI<g|p6uVnPt^5cN^`{7#m< zZjA7PR_`3sCU1Bg|JKC}L>yf6xcejf_R_LW6e4>RgT<q8W=Hty&sn=@FaOfk!^w(u zAA72cAL77q%3bcjsC{1q8KVg^JPYflh>NWL^v3rEi0j5-`yeL_nnf8Zhj_K=5b_G8 z{FrY$If6KYE8{>7Y&KZT4BerhYv{zEPkYJJ35=C`%7KqS%gL0w`IJ*OMA_6y>r+l- z0V8}%LlVkIo?VTZUJ+l9_T}nh5Qel7N6>Rw+~k=*pjY{}EdR*k#`mHOKe09s6}SX| zM8?@=pKR+J*tIP%7PqYlAZm38T!id`q=HR(_?^0@F92O)p=d1aGztr>iq=CelwT43 z0GIv_obu*cppj+!(`-Z|cl*!sR!>P8tdIQ}rF1MXZ~aI<PL{(1c=a}vo;LMn!A!oV zG-boVHrw%*Sea?BnSg_nn8i)YwK2Wi@J=iv+C)jAoy?(OqV+*C8xuZ7(w_`OuXI$v z<F9Q`V{=gT$msAuN9>H8Z`j6s@4HFp<TOS3C<52CNuP2vKQ~Rdo9>23{w2nCAvk<X z9S&qHtQ(j9Hos4e@FWNe&KLYl;-woV9Jg!`ImgI+gTLc-vn6svV|_&W(yM<pEsrf% z)+#3JexfZf*;w}H7}!qu>mibLTRP#QCI^gZ`PRo8+aIZub<}+L0dzf-vjKkez51qE zvHe8`C6ykh;OjfN2{7seekfI|(p?>PKGfV=f79CMIFcx}#l6PzOj~m-QC{Z~@wKb& zw3XzwkJX=LVP1TD#u%AKC)oiI9Z^1cQ|88k_R5P=1<FyD<w1_++J-Wpwsef)9DbQ! z(T4hRR>#S1U~GH$pZ3g4TjZr4jw!y^!OaVwx_tYVr>x$*$p(r14*byR_-Y+zoF&g- zzgSU~duZ$XR;*$s)W+uN1M<zm6NU1LJX6<b5{#e@4WMaYx`X!ODw_lKjiX+`TK!`y z2mpZ`trv;PKXqzfYP)pe5?`mSXLGij2AMNVe=AP=pX!vKW`o{&lyTe2(vRN5%RFrm zE>#O!@UqIL&cxqi*B~twH;lqdJrDavCZVKk&_A0}>*zLRj!)vrSU%EOevwsy2%d$t zewL3o!e_mNU!_l9Sju7>a4b(iT+QZX`T@!UGqQxgV;4YvQnqvsUBvCXaFoMz-bLcr z@ZpPJE2GbQ{#tB|{LlaOr$6^M|JpZyhRWw=gHBXuG_6BmIZSG`THyC#e44Phf(pNI zXZfe4g7+1ml?fRlWM$dBG{XAeN7#{n%7oV$7ViL#zQ@&(ux+RPfTMB5HHeQTl9z;L z85)7Oz}1Gria;o0(~r+1TllO@-w9rFBUj>s-pEO0Dt(k?UW{ykkT!|PKJq1B*aY;n zp(z(fml^3wqega{fzujqX<WWvz(F|+C-Y%!W0rm<pQOdk+wfuJgfI&dJ98Sk1BsI# z2ZwaZOkkw#UD9lXRH$^oHfRV}r3@DBD59S_jv~=5vQ)vX!;lJ`uy{!#V&pIg9l28v zNTCjPJc&u`7=b!i<yv|35e{4IBHHoRqr37hOZ6vF=%9#_OpLzS6)7DZFd|T9uyrL? z=U|!ljK5X<g1h>!Bj047Iz>OAh&%Yz-aBX>v4ig%*2_VMdKAXVNZ;wwiA)x0@Qo>y zLRmq}j&{sLVZ;?^;3kWRFy|N|8FQ-cc@)_k_{Jabz{L2OvHaBCPitdrHubcVr`$=2 z4dkdGWs|xbdm1T5+PrpRQoeBKrd9cCM>!pVq<E=sM=rU9pE32WE&Y}_n2{oI0T3uS z+MM)U%U|1yW@t3D1!WTB0Yu6@tCMXmx+jgynb6f{woU1yAyF4RQr^MVH<Ndg_dJ7g z?h@&b`Wt$1!!-*x?Z1Pt%%vEc$eS`Jgq9y^WO*tm@59hG?azYxqC|bKhdgw!OsK~w z6lJ3Wx6Mz9d@_b-Q?Uawlk`$F;pk>E@s+ml*Pr3Yqo32Klq=$mh-m!K|FL7*i}h=O zN9?G5Nyi(f4l-#~4#1Qp8z^qLk#<isw$!GIFC2oqeU)}7g3_61{ZSJ501qt}O<dbA zX;bNkC$eb@`_SkY*`#$I$}N3ERc*Su=qD)(PT|NnGfCQ?45s<?+t#}z%Tw_3E2T1u z$3%yCPURM0U{!lmtSvp8A=QX5{g@St(e(MW^{ozcU%zgfmGAOWS7>2R?P^Hd;X3wH z1{L7gd^a5oS#TwJ(HVzY9kbEqb)e-_{T=U=+k(=Tx4x|&wqs?e-IUF~R^A@%qmc!p z#BTVG`Wmcf^)#f-k?(st@;(vtdB=w4Tb}xIVdfpeuuzb^fRl|-P>~?CaU4uJv}ZgQ zpc8w>X#Gmvc)H3bX1s-Q<0e4<*3|cRaP3S1@=CWycu-H39<vL;6KJpBzXm7<(JaA` z1~byMXKn3Wbf4;QqhnvRoQ(pg=c7WyskZQ`$Ua^2BAcLX`@VO?f91NRZ+BskCns6Z z=B290qey99*iSjrev<NvI!nGX!cE%`oQQ2JsoI>hA$wA(kI1GWHkg*6<vH1B=OX#L zQD&V-&g-H(yyVwII?7oerC*>bysMITkdS{3sYC3UpKJ_G7hau9iMR03hPSfW*V_GO zBNm0cp`%~sW#6_tg4VL5Ri@}=o^8r6u!n4<)pN&%jt#Row7($Kj?!5jrBVHKTu7#G z$s!zO?GJ+^44xMisPo84$C^0;nfimBKI{*<y1CEzsE+&5zi9)u-n_^=_UXbkb^_h< z7reN4+vGlh>qeXJwTTry!AsitIqGXDV$&Pipf*q4&d+E3DGfxinGF#{j|8P6B#*Kv zr=En^a?P!t)m`6y?$792HA!dl#!W_Tq;L3vu=VRlDz+zmtvBvUOZ()h6nsiOe4%V? zrL4|9B%*+0(~8A~U)yl*_FzxOhOO(^99rRNrvQF7a!8N1@F=`<{^Y?&A6ICj(C>+J zyw9u9?ASw|JnB-R=iKZ7iO`S%DgFqyeVYGBRel9s-?af8<E=%C;s=?%k>qvSFFZ2t z38KvE6q$h|Ef42b_G$8dH#XI;*0+SW9>lc;N-wsfF2qq=e<qnW3`}?f<Hm|K3h%~S z>r<Xtles<vU;EwNy-43DOg7Tre|Z1D-~E-JtJa_Q{I%E^`PR3-b^o7#^%s8+2l!iS zj#i{ssrpu|*4NQz0MlX2`l?_N5Kn|NR}z1opfqU&*6c7))(w_Fmg$i5!Yg?qg$7v0 z7dlICL5}MSOl(AfgI^}20zFn};mJ><0i-e_jCM@82<A1HK?7%L7i-~xA=#@lFF48~ z4P)pygdF<IId~_Ipc}5at6R$yXrYLeE0mcyQDA3bu~#NCp~{sLtCqCGrlHd@PgA!S z37+lxxr2}s6)y7khwymE?)qCMcCQ&k-jIIBzi()%Y{Y=m$sZDsxpqoN2uwN=Cv?y; zWC5a0G{6S0Nei(ZrX9X-fe(-5Gr5G09gYLv(%A)+q~vALDxIj&=|Lx)hUePT4ypqW zoh2P(1|2#w-``+|CZEWt-JmNC$HQt-9vLu3FQeENpiI<x%=sIyUSX?qQKAhp(bn?F zvoh>Jp1UaCNkO*0(5rTesj5V@i}R4uYME$2&)=&jAcy*A90KQ=lPCKM>M2T~k8)O# zbnCgcSh{PU&=`4BccZ5~g-b}e47G~37r({QF*}=a*u=@4{)JZ!ycEPU3?37xvVr^1 z*0&6iA9yET)=loV>Q`c?Vw9<P8C)H}mb@|_ZQQm%LF$z{z!vgS`mQCbfCHg&#U`Xo zdWzqfY{ta!rF;j$V`32-DAU*mn*N8q1L@t1_CxBkcdo>TLwM#+k;@zwDsTBG8{9Iw z2L^hb19u{t`iZjEwYIDe#vh?)Te|0#o49#H{%h<;TH~#(wuSgR8pR&UA|3k!m}PNA zA8?B=nP>lz$wlns1h;mSsMX<(ZYN+)ChCmRmALtt6Ei6>R#tI5s+W1OJA52vzyOy# zN%fTcv|EVgj<!CAoXXy|3kd}gLlOk_w=SgNKMFAAfwY2}E<Do6fdGv4N6PkWeZ&r9 zUupQ$11@8y_=Oir76PRro_0hPN?JEl5?D@=ITJl-uFdOy_0@YOz<mLxKCPXkN4;>Q zEmwL;<vMyRgoh%blV5cLz=WI<4*-!;DIsN?yj*_}ux&~h0(6DT<T!OzSo<PB+F6)T z)K}D<Qx+fCV<)Hpw$}(?^)hLn8D!FmTOGA`7d26VQ(r6!#^4L=CzDuwA!9)7UYRpC zNt44#e*QHC9QC+m5?*`?3DIP9h@ZO&z+p3sEhsZ~-0*!OKE)M#jSRNyj3fS-44+dj z>GWL*=!(zh<)Zi&WH^+H5W_q6=nMF#HdT%+itt_ArM^hxaYEfO1KFVCzg@T~;>Pif ze|e=|wz2%IuXZ<2e$~N#L7M0R>ks_2<^H7x6IOXVTA$j>@mE_}pD$td!h`o=q&|V8 zhyzVsC`^5uXD}AdzZks}5Ba}*dH2OPUZM*+T9)w`fwK@<M1{42`G$6Am8j<-Z*laZ z#RQh6N$m!H{1H8?lM54}3YWffXqG+{{aOzb9?Q0UW%X9y`dsQ?S{znq`3;figY8pj z9(bhnv)p7t&TL*2tMbwkC~{q5^Tab>dfD`dyxMWv7xr8l(NVg<I=73wjtAuV0#=_O zuzmIk%+}|7{wZz8-fE!W9-M*QG-8aN$Vn$-Ki8lhj?W4xIK1d9Y?HPJ`_B5{0Ua3e zp#n|h;KB`*^t-kb`wNa+UQT)Yz8h&<f6k#&AJ|0u?4b=(U-4(#z5PEMGsy4)*4}vN zW{y1Jp&j7q9LzaK7R$)Gp}wh*wS8_9stbLVKdWd!?mPXB#z$6cZa*nsH^8Qj^5h1# zPy1G?@wu&k<7}YMIJ5a#&_l~>qUdMc>OZk5b((PwfYht33Bs$Ze|Vt(_z~ZlOL<_# zm2iF2)Y2-yEj#g+M(9zjg~Kekob=PpA6ZgAO0fBW8Cr+bfpwS+>V@=<0m_!mgV=5D zeYTO<5*U4@cD1U`^4O!4BV+s_lgrAIIa9_gw*(L_w(0x>l4R+f_0L!!b-8WMlJZhN zb<p0*5r5XFZ99<mFW4&|W$+VLTUgF!^Y4A@XTG({t+byd{#tB|MDq_{{0rj$ZW>#8 zj?of(NvO-TVW#qE6;|Pcpp_?>EUnEEi%eS+LC7a4r0gqCpy~u04oBXMuZVSqr$Q)= zkSEorAV1Dq-d7q|KH)fgulcfjV4K+Sl<$EY!6%2#>(JXvZLqPTZF=L$Gm^62PEo@o zj%#z}vmy{HWAt186doOD;05=CBm-|w8X9>{$=np7eUeL~bkdWF4+9R3I*pwY`MNN4 zk>Ov7WdcOL9n8CT+}-jeZ#)6v2FW{)EU0ME?yAe(4%|EN%Bx>7R6vq5`0mKZ?xRce z5sm}U;zXAYme~bQw*Wl{w20?m>d{W!fiQI;LkB4ov=b6oQ#r`l$$6*33`^v@hl6bf zIq8c9j04L%^mO2mPbL}Akfvt^7FwCLi*%2tC@k?C`vT{Tl!^4syBp~FdqibWHYI5X zm_gr3HOKyBA{!!3vK^r1EiX=yKbT}pTt85!$r4UJ!z+SnM+Kg{1+htV5+`1hiHLTt zZK^Ls_*!pKQ&2@wLCu{|O`=uc)-Q!oCJ(EmY2ZjWIVx@Go77iJH~ghczJB9Rm^zU$ zQy(TT6A(8>kS+2{UuMNqCi5*#2yt_I9gWu>4pO6_TH8+aW<zY>RB4kIeElayoJ99z zq@VlPy+1cmDF?iA_N-0xImSg62S?q;Z@s&KkJwJ43gt3@sQOlK>jF9)xjTq3++P3= zAo2tjCz}>jkpADp#hCW&;iBM;z0lOHI4)wmd)r04JZ-Z>3xQq0J!5m`{TtdiJmrCl zMh_o*kNu$|o|Ak<(igIsk{+lc!ZI>iCE~{x_(Sb#PbE($vTBv9!p}Lj3=Q>dn}AW< z3Iy$wT#Uv>l;<aB;*Q<Axlmi(Vi0S`_q+I1OZy9`>fGq3Ofl=&CzDYHR(S9-IfKUf z!%l7}41eXb%!$q}q>eIZ^CfJ1)z|I6N)HF3r0w6Q{@f^d%R6P%OLa6HH3EI8>|udl z?P2{Q<9^5tFJraeP%Cm}F{eJ^BL3!?XpmM6vPb|~SJGVg#Bz<j!3!+q^odz0D>uj5 zOvHe2lD9U_h6Niz;RWr5S9SYmH@()TxB4YCY$MehnXvcuFuwxIX##nU7w>6vc{wSI zl`O1;CD@Lo8QI7RJ!Dfpb+fKAM&N7jNUPg3Ho_|_UPYdFrBk0}o{f_XMbP%I<NJ;d zovf-lc4d5%H~3WY_z3#ZDda{2W0H4?Z+U5{vukC4;U+70#or-2OFUL`;IZg^;Xl}@ zI{slBy~9@O=(rO3cv8hpQYb>71B$NWZumDC6B!R6V7+VeynkdCXtou>vN6Ix=4du) z8fz=>^vcUcCs_&gZC%$z<Lwu(SbV;6V}vo%A)$5F_F}p|Qo5;#7z$Fc&D7<j!y{Q} zVNAY#rgf}bX4)p~m!C1o$xoxOY04-T!nu<MOZz9b8xXZRd1txyvyPQ7uwg8$M`bpj z8j~2f_7@=>9uf<ReE3+ReIu)#Bh_mCNGq@a#}0=*k}-LeHT9%C5fnMF>*M!gIIieZ z<qar~sP6u9*!GqUkz50px~Gj<=i-eGBWvtY+0(9~WR!>v^c&}p(&n334WkPN&3MGv z=R6V8)n2_vGRF*M^slUKQ`$OyMC?ztoR2uhyd(YYJ>Kqk6a4y5+Ml+N#(Yd`Bg<kV z^vaV}{PgUFHoFAnc6RB;2u4gT;zb#k3kE#2(4f@SG5rYrbLNb;%i2fTY@e3n8L+mm zqHWM#ck@bqZjM+7oX1{}(0+*+4}5&lZ+xfeZ6C@cr2b;u`jTFZn|$Y6;>s&@)scQA z^rRVI1KV=Q$4^MxA8#;kKLPSOwi5=V30?(@Q_|9i$n8f2(>nP^CUZ(z1k031KM_X0 z)I{6F)@x)5q4A-?6Niw^q4=#eM_F{#_iX#tL}lBxf>-<AC&i_LQ$JFz%}UpaS-rC~ zWoJERb6&c!2h`LfJemDiFQGX&`p%T8W9lFOhz)|baJTLOd@Taq{MRG=y?^}UzxAK~ z{V)D0(tPu~O0-r7(Ee8!`{Zx|U1#}Z+`nLe(ND*{*lSft*~J#g-|LHE#_tDh0BkIF z=3G8Tv5}|j%19z<z{I4*xv*Hs)Z?`ylm5YB5hOAAMVzh+*vi`Jv6BFgbd@yJ3^v?p z@(z@P*n3|h#NWg@cuEgo__tHB&Gr#IJ8dUW9f-CQPv-(s2d9H^1uL}(lTHIT&7T7f zu^HD1;d5xXS;Q7JvXfl?x$8~mzJSrZgaI#(v2~Cy22qCGd9bqrF@yAWQ~+hd#z6M| z&e_S9)8SFaOcAgb6tPh{GkE1A&(Kbk0oY;LG6yFIASadL2`5kQ@a?40*hOw8TJSuB z7s_l-3zT^+B-?OlW*{7_v!I+ZAsh(Y{JI|L%*j9KhgB>E9S4r`Gulp^8a`yveT9i^ zvAOotyVM!YDbEB(GRV?Nb?wl_MgU^R__&h9Hl5I{uN?f9^<wX;41Wa~{S{`|#g<Fg zSbD~rw@9Mqm@+kZMm?pSkTz8RBxttkT)l}7n$lJ8`lmHdyOXfC@FV?5XM69pvf4Uh zZHPJPyZ3Iiej+Xa^-t1-8#XhXa#<!VO~UY<e{XR8le=%=YIl*PZv&I#ZdSA&&<~&V zogSHdQ?Bp1NufN!qXM0vnioFd)h9Wg^B2Qznr5-(oi7(ZPB`U+o=z%hCTXWm2tyH> zN*{VK&~~Eausvkrw!Dy;iK5y;szG_wmUgRv6Qw@v%Up!zk$&vw-8d0lJZ8aAg<=<N zn@y(JNkb}~_U7R3s2e0MAa?=O$)_TONaSwXI&4ZiWHLTNnZJIf)LG<c-?33-qu;eZ za1k6ml{mWAuJth|S{}{IM4G$#iqiUWLWWJCt6hX^KsJ)v%Qjmn;m5Tw)`%f8hNm8B zMj?x9hGA%i-kEc-QZ}LH6lhNnsXnB$N)lHFf$*Yf@sV90OB(^H_A7|qd%<Yt6KA1P z*OaA=QjcDz{ve)qhm!_F002M$Nkl<Z6kbsCTY*z2>5pB^VMpzG*fDVUsKz0^3mIv8 zt-M<E4RPBSzNKlo4orcP&QAs?dcl~hzOV24Zi6@cl*VznzJSj%PS}Uo2jwTQjyc(E zp^dnxQWx7Bx+z39nvlVtQLtoWBOaY?0~Ehu<H3#APX29c>StS1|A?8i3u9Z1eTy2g zr$QUJ<q0+Wl=j(`%eLZA>1ZRf!IGcQz|8l9sIxYbwl?iX42wYei`uUJLnNnMdHh-4 zbMVa5Zq7&Y?kM^m-}RMzCkcd!k`8RzaD6$|S!m7!FOC{PWOJe)cp0PYo9&;hv;f#L zuwUTygK#~ldKo_p%(VF_HL@%mrAdF1`a|fW4}xIR@-QtAbzg~BPK6n6X&b=kpTY-6 zzXof{+z5_etbY*q2@5yr>;r6q>IojPVIpLthoF6aU>fy|xt-GZ9uGI*lr@h_ppTNZ zeFmG8{Ojkom+K)!<sUxQYe`5Znfh)1_SmPB?AtH>1y=~{S0B=6+4SQHOUFn3&9-t6 z-VINS+`5@C^#_;qgI1vOD6bpj2Kn2ro^y*n{V?U)4ND;^{PHcH@Q!BgMeuIq+I?VR z1O0|_f2Qsxgcs6}TwDudUY;Dmu=%NrGJ~gFd0K=z(!5?9)HRz7+QCoYp-s6Esr#fP zUHa-RugtrF0~LtTf$R1`<*|GM51!Y1$fJ6BBcwFpkUmJ+;&Ubl;y7P51jksM<n$Dc zq>qA~UtoJ+JeH@id=p|Xbt;wXS;E^NF0MF*Df*tPf3NbC-tfzYC4J56p&aVz*egx# z<U4NcqYM!v478E$=PD60a~b(#YcbY-!VT=|au6F`1s8<N$l*lEORn3Vk9zsjAO7e6 z`nOW}H8{1#zXpOR0v*qP;rxT9YrajLM%Fp6p-uLh^Xciwv_2j4YYeHWE+)#QUiipv z*qJYY16#O9dYLJl;RMYE?mVaz46*}<Y|gS^ro%9=4ZV3ehqpLALhwjW%|cu9ks>EC zC)4Di*T9>_Vdql1TmWt-kl*gz^P5bvyyxuUf=RgTj8bUdk1ly!F!Up6ZD3M(I-2j~ zKdY~Fgb#(G>y_p6CEhggu!0N8)q$8n<~@JimW_1a+ffN6`NH*zbI1W>N1aZvlMLam zc!7hKFkM_J%FtF;c>3S&+9sPb>O4%kVD1EECoczoMUW13<)Q5z?6Wb#AY<CW+VTu$ z#F;RKw^Tq%&~|>$YeXSbidZp|0&8@!)TcUia$4Glya$ic2$tl-0-4EHcHzrcd$c&Q zCnr&P5`|<08v9#jAg_;i>Lc}&SPt45RKvQHEd3}p0PU=sp%YSP-Ilz<C`0RV>r~v> zlvwgoSRZXnh8l%PA+CO-8XefnTR2mRO$SdJvabJ2H=B>(Vv+bs>}-7oTN(Ba91ca0 zj&jB?@dY32T{*A12%EN}5TlUwdC#Kh6?r};??fzji`;}mCc(5z)Ad>Fiq!{vnItmN zwA^s&MOsW~;x+_js}HGi+J^5O0$(51hvUoWAgL@kNaRJIyNM_nXm;}hdD;wUV=mUJ zfA6-#*0Qy46$oxfaN0Uime>vi?YC{ocB@|RnKU2v8|1v_WYU%?u(2|y?pPVx#*qlw zr0ZR87qT$~u=U;8GqP!yE-EW??W4UKsP(a(c3Z#3O%kMIeWhiI)9;~w*bXVvc?2Ef zY4<FMho*E-8PEEDATRb`+xF*9>Y@pv2=Y`YwNLL6z9Uco0U22$JOX(cz0DAG?6l>{ zgM54e`Uk53aFX@Xl%4_xZe^0@0*6~JYU?l@0Mpoqlkk?Wy|4B^@MJrLTUXtbZl4H& z3BqXS=n<N23)?p<rGAsc`eSCEMGA@?c2zFQ^ihLPPxz!}#t#gVan{X%(OsC*vrldP zWTVqQmiF#u13e`LovKDg{8S#Qr0;w9WQgzoc>Vfy767544)A&CFW${WwzOxhkG#lt zM?1P<W6_%r;_9>7w{2oJA$dZ@4gQBVs{N{S+t6+@#s(A@f>^sClX7PvI1X`?9|>Sd z19{>CtDVFP*uZYRdU^Kzr$1#LG<eoguGhacKA^b?MB?N&{3C?&&LQXF8$3@OnJ2_% z7!A7~o4Ek%WAV-D^R@NLT<lPQ1~GD_t}<V6e$a7ZeY<6?&rK^39O7@*mH7tsG_`)Y zKiNWBGm#5h*2sC%C@x06i%mC9gsHOnwiI(p9W0N-F4Bn{)&QT;MY|X>KT<Y!9XeMM zYGjkAFn)&4`t0`e613lRW8;2aHXOR(_!U2GXzIX4a(ty+1U+cWL%L<v_F;MY0^zMc z+N?K~gjI*!TyPwB6LWMD$5300{=%bAo&Xb;cJ7#M|IvP;a;R&jPv|7e_$6uSUu_zD zC@3_o&)i@dds(;PN_lW5Uzs*vy4ofIxawW_$VuL|hqlLp#)BvmH~x#gghzSoVZUB^ zl*<rbByQb8A0G_-%EtAzuU&j&kLzm?l*dhCgbi&usE_fse_`aU-fp%TS~oM7WR4P< zC^sywo4(dXc&7hteZ}bkHUBhNP-Sxj$ys-?clZwd3sCATFrp3Y*rDSy{TIAFtPkbP znDpTb*8X3g@U_|)p<VwNlc66-ol`^B3GFl~t6=LW75K=8PvwblX&MhOo`in@@fY(# z$F+06dUP)J>Wc%bU14LSxiWVG;Fe#*+A{R4j4AHRl%!)ru(7wyx@$ujS`W#!K1G{a zN<1=JKZ_d~Y+RDvIGN%adNvi=4tgyU$3Z3UIRMnI#C>(UJ~tY&IYNgom2^79ZN#Gs zkebhlO~d4a5E)PQQ+|mkv-t2g2Nu53BScAa?cE|D1@1=51%Ghcfzx3U>`2m~*vavc zmh_j$(iX<fX9om3Rzn7CR0%Jxh40;jcE-wQS@d-T6UV%%8xTaQ9N5)P4q(w@TNiEK z0Z#`nsB$==^cZ;}lbxdY4g#bZJwjLVsYv-I>A5m&PBJ(tdl#A3(H>4fkT2KDSAs^H zzxBIxj#wC(D~pS=NKkRamnN2J#vs)$9V{uKoX^zr0XX)%)|2&N9UXQRH}yF6bg5HW zW#HXB<shwYjn&gS!;a){*gB6?w9n;r!~kYepe)ow>f%Ck>4f6&7FW7GXhU4@i;jg? zruruXH+INRwV13`&fbCP2E%Rs#?nDOGAMVxl|S&>Iz)957bW->K66W3*$G%Sp_qgT zf0Zpe5}Bo1qxyz68e&A&lV4An0O^l81QNriK722L6GdUVA))X3z7&{M26Wqc-${#9 zvzT`R4xD`56mb!^6L|CX5I%mR4I-3<QyyP-a-|JAk?6uuohoS-Ys%G($VO3O1PLwW z6~FS6NARZ)dbB@Fu-=p}?FBI~X(wZ(Ls!=lAH2I@SH4MtN7+GtCf3oX5UC&gAnU=g z0)=u|3~%{HW_6+rZ7`ZYgJ>H+V5*qvWWsG*bK-saP%N4H(oU2hI9l4#`aNtsa)o_} zCL?kJD0pPDh_w7CQ8|S<QWWzkSk9rfr}_Z-77?T*xr=$iD}_@gP~o6#y@TK(UgerL zZ$5fHKBTp<C*8J9uj~KqYqmT*!=r6w_1A9<c?u6d^Qo!aUMPde6Kg<j<=FS{@J_w@ z5p}=%iYA;e`eS`#7aUa_H_3**W5n`T24zayQs*gq_Kbhtz?TjFgtLpNTmo<Vi_w4w z7oM~PRBe5@5Pb3K%P;P5_&02<xJj7z5#UqG<_(pX{GG1vTCshsEdBWtFF}HIf_)9a zOLaTnze0wJD}pTT6Y<KTRR-}AM%Kr5eH5!l0(jQo7&Nh@a&5jqZ3nR}8GcfbGK!Ta zQY=mLnzM^@^@#1HCJkgS9Wo4}O4bkM!fK!3*%usRes6}@hi_1f;<>Qfg>maz8tJF> zwa_D<wE68fgk!@EdF0=|U13I`Fgf+oY_*B8oC%|=-3-(!3)%kNbbyJ@@iQ3hXV?H& zzsRDKjumBXzt&2QSViJ|$PG|*zKoyps@=MYAZ+G>Y~TgYz7js}=OxHO*`rkZK!0}V zle+fjj;H?nOx2)Gfut>C8q$kfo@YCc==!a`&Uhei^?#S2pYgsua8G+zrpPdal@S90 z)Ak-&=M<jW%&}<9e@{EK53%3w6Ag?-Q`b>->L+vGff2U0RPL<<`;j4fVVXSh#g|j; z8vntT&@uQj-#j@saAUN<!yqtEo-X|4{1|d&Tb}K=Q*q&)r*x4)DXwyAZ|NCZkEyp2 zplbk1m$&+>2eCB7OKf^!%#&vFBxKpb$pd^5M^|c9pk!T6$=iH&@rkB`uVb$?CX`hD zGt@X)9v`4kojjZarY`BA?>@ZwvBm#7#9yn8k-z^VKk>)E@vFb|2N>pW#5h(UAB}r8 zyk*yl5A0XueM;HFe70BxtK}z)uns(atf7t&d+D7Qqm{)aFF>Eb6}W&(-@}W8>6u!2 z4v>pHVg%XAX)os7#ylL7XXB~dVH8ejP?T=NvZSRYQ#GON*B&qfNf6r6(iwknx1RVJ zkB`$L?Rj!Y$4wHt|AVMfMNSGG0A0v@U{U12kq$<rIVzhM1OyRpC+c=?nXsF`brCT` zJt)^xu(up|JHpVA4uegIhn3dmgKP@rBHyxO(gIQCdd$=7bi5;rFygI@p%3nHJ#=dK z(u};|wWD`%a)Lt4p;qbe7*y?W^8!{oP2q(hK91Pc2{wa2oun`fkus5M%zMV++9FG& zV;1oaIH3y<Cv*po012pMtpg{fB5Q)fKA0~A1AnP2vL6JHLMg~Ckyi;uoXSOxeq+y- ze}K^`#R;DZwY-h@kk(n>9n4Pt>I{wWtL(xroo1hQF~72vLg2!>I9ukRxjcn*qL3zJ zeNuP6yp&|*Upd!@PTuf^_71=!MK)Qqm~eYXL%tqaVDZSg{-SS4GaDqpnvS8B7v9p7 zel~qbC{A9iJLN)9>-ep5RtNP+F6~zNea8r-(`NLUfRfP(5|Fg<z0(Vol;86Y7kN1< zWxgnJWp50O1U-OW+njmuQU(r#JYAHjYc>yTyM9|78l}}d^K$@{&%iC8)EN_}V`8Vx zkmKYDf`-aA21y^&hoF5~pV-o3{4C-%c*9HR(oZ7w5Pi7Z1!&rrvWt|U?j$^gPIXlF zny0qe^6e|MK^8ayZjg?aFDZq_?%DyGPP$F^G+=Eb*G-Yb{vj*D+7BrPcjT3hj5sWb z4qlU}&I%DCr9ry3MXY2;lE?%=<tdR|_EenBSRS?U@}cygEn#uYDsD8;4gs6K);_nO z(IWOCql>lTNn>f5dKlIQsw;<x08i<k_|n+&j6dO~{ybUa<QCYXw>>#t+3#B)<?qHD zKb>JA>Edb^ZPovzU0uuDK2nL)FYUyic`;sRvz`1%3!mz&i`bW(K6mHuVjRs!c6sS@ zwm*fMh%~aAWjSNe9Z#FsSNrpYm;BR5`>SrW$jc28kG@Al-EZ^mvG=@?U8x|Ixcw>Z z65`6B9)~f6fZqnKhD4kjM>Z*ySmN5|%xbDMBqgq2D<XDv<6_b+4MgC=Tk;6yN4YY7 zj(yr5<-mtB`&(m!o6p&Rrk`0I^n=(|{GpM46g!2MdFgK)<4;<(N98`vQMs#(qE&{K z?~rBkS1x1KKf}-o;fE!{#2S}ub<H;wB>>l5l_P@-e8<5e81L8@q|n=x)K~hZ_pFSL zbNBpJv+d(X#~|dUfqghO1q3nX$w&Ed_;is!rHStX-}-64nSN9x=>V&JYHR*siOoGX zMr?aZWciM>i)S3%;qCS~zwv^Xbn4&Y`0p_qIAgn;9{vsu8<h^Q(6Qgxz9VzrY|QY^ zx*Km86jol^&+??L39coc9MkG!EZoNA1#0p_<C2c<UWe$?42#%R+h$$?9b<!<mv=66 z%C)|2naA1(+R`vQ;4!vuLHYM-NOI&uxwUf~UeA%aiTED!l!rP@T0ZeJ;zM83T%2-) z8^4JC@h|)&8+w4rQ~a&tjVqIQXT9n6y8H&EPTNw}P@*L1LMWT%_VFUFd|X&kpv09m zb{+jJ6nAkNJIDO+2Y=_Ee(R41`D+n<tu{uq2zPaUnbR*{t%F??*6cC%09?~ooNM}1 zV6O1r>vSFP>R6v9K^%BM+cZx+ZPnlKjq$c<o!myYdEX(f%|k6vM`Ph?%dT=<NtHfl z6Yw=roGX-NemU7fjVzux`J~f0X~j0`gaDOZGzpIuc~+)Q6dBl<#N^HMbQT$4=}gl3 zyFoI6hY#CeHzT6hfiS4d?=q#CpVz1d{L-PQm%KUbR`s=XY7Qc93hYEBKtudu`#f!9 znRy(IjY=oK<z_IoQ;$xuWA*ERB%Fgs`8n8%TUZyIrqP>^a!F?g2&IvR!ds@i3!~g? zduhdPBYv;ROMc7J`A&y>%WkrRME}WW2L22*9ppd^Ul(b4a)5ep$jV*5ltnPXOyt{? zc#{g;StgL5o!AFZdukc$Mw@VGo5`JY^%OS+l0Oo~-D@#RqrMVQPTIkcfr_LS)#3>- zlXeC@@Z}x<Afa5+_PR>SuXRuu_^qBo3?H!!r!K{QP%d8R4xGHyJv&1|KThjwW-MRx z41EHux`dxJ=4iQkqcI@b*h8Jfi0ny?49bICogC4w@QF_ReEK6(v&3R+sih%KC&=}m z55PJutB(mhTM!Pf!-6#W2ah&@cr+pW3pn}^Cw#F5_~y$;U(BM1yTj7Z4sVH_ID~iT z1E^%+9TUZ=ul<W~5JfMZ$l0=SafS}?$VAe~4A;sWW}&G_3M2ODfMnGxSwaZ}3n$ph zEdgz=Kd#4#PYF81g|w4a>2(8Y7ny0V+{ypI&+}?OY^yyaOxW~cN9&3WPdAV3J2$K^ zT;s*hzcXkn4?eLYiza!;4hSaw16Tco1U?gO<<1@E+F^NyzOcZ>5k~)BSASvDzQMc= zLn|_o9y*n9aS9*naccdK4=PjSmfmm(tw?@~VCfVaHK}fjZQMSjx)vZd2_ACkBOv(` zfZSb-&FtT_-RSUt$vc-`O_uB|SJmEC)oog01S1AW{166+DM*YMfDj-XOYQCfY72w8 z0C+%$zqDF_)#7R_<C)d=ukg(BgaIBSkFbO+GcY4A>T~M0i|2XYwK8+>syY|9t*&Fo z-kA{@vF@>AMPz*W<%jGm+xF9u%Q64u4B0b{3=ziKfJj$e<tzQ-DPLkju-jMdN5+Zt zbu<z#8Q<Y{Y<x&q<^W!v>reA`-f{kMeAEsS&>pf1Z%+D*$?;*=@3{1RI>KvZ{omXq zUcwLXd4W1#sR4q@ksGjc6VCbYw4L$7r`>Myjvb%y;H9Wv=RIWLIKKM{yc;?`g05|R zf`u2n`h*Fes)POL(@!0D{+ZOv`PD1qc;{?!*PdF-b(zvz4zA#1cL~M*>0?^8g9J>* z7KKZqjp|%eXRgfm)*RN!Y0$-#-*xOY4oS<FFdy>5wJtYp^qYQQKZYlu{Td%P?%2eQ zqQtmtWbMYt(4~_?8_J1s-cV6)+=|sgJ382K=twzo)h1k}t-sV2K&~reo2sGcnTHNK zV*t74KUPuO*e0@Z!3ao2?T@~En5Mj?C2HT{k+qS=_aMnNDg5r&*(N>XZsfv_jt7~m zuRh|2p=IUJ#{2%B;1O$$x%N}vxl?+!*^eeUI!^B1KCQga_~erxhOT497s?v5-Pp^f zIC=0!e#?$JpMvy#KCuEs^*eu-+wpS;e)}gHO@Gs`w6*W0?Yug1fFCTldE)zi7>g$A zwOi&Fb@y*#AcguL{M6;JYYcYAN#RVfn>f&RJ+^f#Uu)!d`mA3$dF)fG0PpN2{5@PR zR$hwQ*uLKl53jF>;7PzFMv_McDz%0EmUO{Wx22&zhs?^#wMiSK-a5<MCcFTo^v%$> zZ(T=8cgJUFf!Fz>^KI{Tv@w6{JK)H6ZP7M;i}7qs(r&`gcZaMXyct{G!;Nm*t(%GV zZ#K%2Lmi~$IA~H65463zyLZ1o06*4jrTno9ab^Cuf9gBG$WQnF8w}1&*v>e-VF0%i z7w_Tq*8geB<Gd=Yr%uWM!&$F&+onVAO;7Vni->7&p0jlNpSIRbd+LKUFfDsFFlRsw z)(iy^Ny?yjocwnXrq6A2q6kO^W`aq8f)#lEqV&Wv^(<^2yZ0?}?9v<T-m+LR_~+)| zfGjL<*%kMix$5+z@jGCo<)jl~m?W6Ba)@8~6uh|NXJShrpbTBv9I%lQbmcHmKwBDi znXntwB1dR35&L)~M?Pr?Lj#pJdrk@lwN5tTx_~o)`9ekcCQ*Fyqz}FeyE57)UpIb| z$hN&O>SrabvF8NHA#AmJ$&ZiP0+U6SeF%SLOHj7|F`tv`-WaAHn<n^L&mk>;NykN_ z_*r~YmUq;Skd#v;j^z!&_ESI=_Q2`Jpor8VqWV@xa_vL~EolgBAp>r8l1NH7dF$|( zT+3?tNy|Sq5$BQ~T(+f^C8I80N16jM{-OTzcu$H965tT~A%*H{t!eXK-8)}+=$H0~ zxoKsnocC!62LSI8;Jp-l<>4g@zWpAs<I1OjT;%D$_NQf&kEDBJ5qwCh-F*$Ij81FQ z0ie!blJHkGUh^rm{dedXc+t)}C*v-@7%S-S_saDfzZO%QQbr`p%IkXyTwru8LWi5E z+-$MfKgI%d+yrsS;)1E4g3oul;cW`6XRaYFgB+{p?0poLHsMU>e)_%dA?bTRT%gnk z3a7!wS|OyZkR}@%+RGc1!UUc+!5x3QDUx?Bx#(dD{P@w=q0eON*97b{7ueJH_D^nh zSR{2(4Q*hoQ{;-_GTKCcfaj5$Uu7CPwnhi+>td@5uCWG$5|hRC9W7i#8o88PSl~Fy zOG-`IFrYY=NV_tbQU`)jUY{$)kV$K30lV<w=>><-iB$kacV$4|*n+wp4`Gy(GNT`U zl*K3)kr^q375BtZGW9L*`bll00``M>{=^enSPH&Ga_Q9{+8~Y4FV>vbF0n+20G(uS zg${hmi!A-j4Nm&sKC;a@3R$O5_a?*o@DoQLA~$J6nhFn{%=_Xy|B~ug&Q<g?up57c zGc4pLM*`DZl2wduH2AaK`a_rt68W@HsZ(<EpZ4ec;)}dq`_3I``)7Z4ZGlh3Ki#b1 zi4J}_%`wa{r~EQEgin0&tIWk=Gf^+H1N70#;#@3zxj&n)prxO|q1%v6{g{uzNngc( z>O;{%{XIq>THvL=`hdDfTSDruzf?=(-p0^03PRgJP8FDlpEVV_i|g7z`7<xuXYz?n zF1$jk^dw||XB<zgJjRHPz(z)B=rh?MVY4V>#CbiBc?mf3w}ZLJKeZz<vQ;zTN;61< zXX~Lq@{}hs>o5L6W__@_wN4uSN=vDUCx*V}uk+}!p_}+uS%l2jnbX#O=$Zh1loBxI z@f}RjB7G#5X=tcl6w<yxTWtjeWstw|Gvkby`i5UwicYje9&N6k^q2MioV~I-C&kX% znD+FY{4dAS^`-W{C&yUdvDGJi#FK}ziZ5aDtqX7c8=t=8M+uC9el1O(&Nv;pa&sG= zog*AeNRb!A_GO-Kl3*{^o7qr8-<L05#{cvs*Qc%l#pzeIv3YD;UDPp_goml}rjTpp zUU?IbQrnZVY}?w!7R%9>vN!WmPF?h%P5+%bveTyUsuZ0&X*h7VEWAlSxqj$|Ac0+Z zHji8)2oHVrwY+^JoORJty6EKib#7n%L=TSm9O-v*`&*i~;H-R&d9`Ed(3Vu2$cK{R z9`yC`Jk5(7ZlX!wF}8EGu|(hSMZ9+1&Tq{dTTm&!rw=^A#}o63hthSOk$K(u4M22$ z^>_Z^zx>4!?4!v(x{VPnL+AV#vcIgOX#CV9w|q%yzBD|%zJS^Zf1=WR)UoPfji{Tt zOT&FMozuWbt&6fFdF{nJ(1l3zv~79wL4$H&rRtz$2v8cFz$^r{Q{6tI9(cPxDUHf0 z197f2fB<g$_Cx`SLC?qzEdxug!52n(%!6leZ~~yhdJFwjo$^c`-W-K@XF6~VRtf1= zCt0Vz=3qkTLP{>6D)U9`Ftb5;8WyLE#Rhm9N&{M@OOTY3*G{_PUicU|_i$05ZvNz1 zf-G?ASeD|-x<S%MMFXpd;&?>Z2IZa9Q$KcsLS&avW#ba!yQoVYHP%VWz^WVu{e0)x zPcGb%c9PtM8i010pHSSB<6^f+hI|I$1a)wC0u~2E|0BP71ZZ{Y701fxZ=>?3#*;lk zUj$z`>9kdSiZsxJC%n2jb}Ac40r9jb@({ljwU;s!CUU2-vgd{`dZ>UZS>JL|ikHTR zr;+Pn^<FQXz23akE3ZCe(!Q3jILf^89J!Mni$%Ye{De=4y1D0s*ahI-4GS!8KvdCB z$JD_m5B!d*{<8K6fU3>0_Q9}C)|0YWV54Pkc-JPSBS3ANYjyF4V2IjPZi?V`$XDA^ z6P@(UJ}$4`b92iblQLQ_9mkubr0w{A^V*}EL9yG6sn{kw^`Z8wYFJJp%XRwJ8n5Cd z$mPZe3mlHfbc~VmjRC>4e{xeW<0ts&>m$HYDkp@cpbo;ThnphWo+=KX0&(GEsC0~q zReww0dlLc7`JRA<QD!?tx@KzDI1(+~v_ckrVg1Ch?#4^rWny3@39C)L(UF{SH~ns> zDhidA({d^-Bsp)n0X&?cV~1`V1^(Z<p{x&NZmV9>E1<OP)8e#G6{5Uzqa}4oaatQz zA8-UU^OQ6;2lmj}G6vdf!9w16p?tC;mv#!YUtvpDoAibtZJ`I83aXbp#LF?|3%x@? zm_=UO7FH5m?@d)V#yTE^dE;h-1#r_v7%TA_yPuyZmR{x}K8U#CtExBbHfBErhT2se znP=YR+J&<Hl3XA02@82ZKR+`Mvo5r)_T352ZP-!1<L}zF{;Cez7#wcM@$UF}Hb(4R z_#X3&I=Nv%JW?d_Un9qBeDD>%;@sl~m%2&c&wGu>z6;@THe#jcLch2Ycl>lN!}bUf zKZ1ub#8~A`lRCL!sWI~e6uJs$e~6R%w56gprzk+-Qb2BbpEq}c#3xdaj1-$Bn=4Lx zQ-j3}cg0bzv85PFQ}~wRNhqrCt(}D{KXA3rF`x5Qr`$woS1@6-6caM(hjc~swvD8K zq?I^ySDv(u0&6SsB)Y&(a?@I{yl;v^<UK7{SZjr;K-EK8s8n}4CU~niwE*v&S6thq zT|YK9>l-7xGASQ0bv5bry7Gvu9@47KjyRHWjJ=|>N=a(sCST!kOgv^|MEb5@jhpiE z>k^S&vQ*eNj^C%`w`}V99=*)3!24v1^Q2=<sg(Pcm$%l|m1lY8LpI><oX;Tq=CNNe zuS~*hivHRZdKu4ju;b;H0iXCW^M0O8$<J&11WDJX;foBhjjqUi#NK0){&X*CH`1=j z#Z59t&b?N)=wMF0seBxBEjt%UM>|Fr%8ASA12=<eiy#lqmd%&fweIuEu?>74rpN|A z?{Sn*y`zJG)cJvtHePwN5rN$4!;5~qA+mYmp>$^x&HBg<O=-9(^@>k_l}NrByY!VC zY4Xpy4f>YFjUVAl!r8yB-R#HL@e4j=7Iy3wT7lD_rLHRNb7Pj9BgSui;`#IEX)jFr z&U^ijE`5|6BLt71#qj@itwmqOX&$;+oP2>Me^_^R)P3v>&i3I03O|NR<cK_9mbFe8 z<D7`<8%;0u_jJ9~pICob{)2aw|5`p6H~<ipYnnMBkrllNlyc`X?VMbLjI3Y>-}dOH z-j;H)bs|c7sF1lJ@{Lsv+&2aR10jJ~{xaK}V9Df0$H3VoVA`|6;0*(lmzyJ^Il#Gf zO5ox$w6c+s3oDw`rlQa=Z3~j19D3Bi+`z4l`#y^39fJ`xU2O7ao%Gbt$uN3)9pb%? z4VNxr)E1qprEdy8Ftg-6Xg$Og*6)Sa@L>$DwM|kBMdUJw?~ZxCi%bwUaOUO}oGhZ4 z1l`qk($1twpF}>|qc1wyPuUnzr{z^9<z=<?J&io--hjL}7&cd*5mqZvdGx*4G6<cq z41Dq_M)=uw>M8T1PrRu)$%gJi+GX0yMR6u$ZD8MW#E!H{C$yFZxw6GKl@a>8Ir0z= zBDKTd#(sl;g}s(*2kD;2vVI7+_2$>MUgzv7sq%KwTr<`#+NNfx4YHX)UHis`=bGKg zIFLaoTnsJqG6|*hRBWEjJlgVZ1DIw*H}))wV>ohacgl@~E|$)*V@Sy6h~s(|M&=$q zso^Jm>0g6`-?^sV4FwnCP$jp2+Mnjxs0m;B)NNvqN}P%;hGYL}7mn*=9CNM8kF$7S zkqf^*-fzyQHo>hn$|kO#7AaR2C5Z>b5#pD>0%Dsm@jYZSeq~bxTEPKNI)Du?WC3PH zc9Eq06w0wx`@||kvwaH-+8S4T^E9@jUQe|zgsHB*k@5yAY5EP7l_aq3PxP=#g9K)B z>qydSqP}-sh^_Ic6({ZF)&}2CwiKdG@uq`>mCAXNEKkR+B!osb`yJ52S&(D(t3Qmc zKr5edMthp)PnkT1Q7_y7a@M}VO9P<%nc~aTMGyEbt!WL6<=~nNBi|{nUbVx>OItqS z3=t?ofBm!loDPYs2W?@{#eNEX<>d;X{*$f0NJ}3RE`A8CpJGZ|2}Q|^B3UrIXztfl zEHgi_Ve$GkU#p~FGZz5tM!;L%^`j1JS8u5FBX0t{F_v_mvU0q_*Nu!P+*rnbaIJkS zF87=y<3zSSxW`5&Z`^pEG*5)UD|7txodQ3F$6I2<(lZjge)R%*`c**nt$t8;<0bSP zE952(<GLpFz(gr%Maw(BV;^93$M8bujWyCpS#qS6#awdXk@NJ4RQR`Fa?_(T$cw*g z5<h?8C5~5uHh$O-Za2A>$_A4y`UBTHpL;{R`d1F@g}#mxWh+IA_FDXulPir-9>|AH z*B%F4T0VSIHM!(0+vvgomcBBCyk#28roQB$rXp(>OSC)e7eDiOVtZ*TeS8oZQxiUv z5-hAiQ?lacl9M@fnd|c8FR(i&s$XJ+zNQ~WMEwtc#8Gusw<q+}*ae&Gzjy8=%NE(B zVIMg@?-E-(cAh<Zo;Kf@nkP_@*)ik#%bV}c6J1xz&kYx!aC#kCyRoM)XM>MA``Zmb z`DR0zyf@t5_`2c!`j~eTE5OO0^q}v$(Bw;Hqc>%BZd~yK8>FLzx}UcG$o0vAMU2kD z+7%tG&zuNMe0SiK)hBSAPqo4NZ2QW7Q`$@Nnj@P8&|0|kjl5{vB+qP2TzpqvKDlGR zU7zg8+J6xr=Fss8H06%Xkl9$7`Ivlph8M8$iP71YMY|5SZ{2)&#-Vph=hII=&Bn;a z0i?xF*ynyIfWAIOJaLUPI<DSTw>rnhu1n~5Wi<|Xs3(M@)!HetL(6MnlueqeAK&Et z*@tHM7_L9cjgi0gQ{VaRU;EGB{{y<{&)3WukFH^kbkB{a{-|3xk+-~<Lr_>9<YP#G zSSf;sBkq7%U95ko_O``w_3{IVLME{TB5k2<mCa-w7y~2mR8BtC$+qoU7vOsp_vAZx z9Uw#e(qMnN4$k6l>B&n<3qFI=>pn_3!NVZQ;>F_)3$G_P-ncu64R8$x-pFScl*xe_ zR}f6l1hq`86~skFCT$>wC3)LCCqN>@E{Lf*TH~AWGM9!&k~*YF3&K1xD2+}|)Y3nA z04JKks5c~7LwIlI<on<#{oM^N-S~=h&?|go51v8RWLfsw<uMD!!k@JD73Dd6Zg`5T zD$3(x)|*}@?%la=5ZzCfkY61ZH+ng7GXYWFB#+QMPq|jO{84XHWL9odDl90onbKa% z!mPbq;7CNIL5wWL<J_TfjF0Lb8;Azo;t6RQc|)r-R|c!vT6xv&VSlY2_Is$2ubnrq zth7Q{`)$4X9@1&OdiU7=4Pj2Uhu>5b$BXh_yc0(HV`ITWx4LBVgI+$-oJnwP9xLDz z`oik(q{tV<q>?1;w#B6O!M0e)MfG!RdK2`Ro1frlSA7}&u<0Vnn<H?1G}<Q#mbSXM z5YyFN6m%nmF-?U>dE&ER_-W#kxzX}wM%8oJCPnyh3T^QqT{*)8;<j<Dj~@$Q;Dq(a zf=S|BWa9-t+l`AnF_IfV7J<qv!X$NYkt(c<U7z+)raL~ZcT=Uh^v1@;t=Gc##gTrZ z&Zk8D$-2L^(YRKXTx@%<Sex26S-ggSb=r-;70J9enm}WFW%aNRG|J&iFf6Rn`e!Sq zrruAc*Jh7r5p8?)($x5j$l`MjuJ%2T!b+o5&o-Gv6zNzF;haP|WQuHDA2fkIq!fHm zu(W9PHRK9B9Mae7crXlD+Jg+fu+mW;ZDnfzc2Qr{+TOD8r6`8L&5q(;$1r<w!i3oh zt~Sui4Hbq+zlNZS*`_X~5i<tQIAI^n4UHE{lw3Y*XKhl&gw@FDS88vtk)J^JrogYc z_^TOyoyD)nc;nz>*5t(h+uP0^+C5K{AX9J9@JoFJzt3g{Po=oo5Vftw?(sWKswm{E zi{b<jr5M(My)}mTfdhy0oU-}kNcxi1`rX(^T{?$BgB1JahOu!%I(_-8cF~T=0sokh zD!bSZRRTjE>s@mJqC}_%Umh?Dy<=mf9TFXdEU%syUYkY!!8c3X#fBz%H(h8`apHMF z8-UhnM>o;@aHg@dV_REof0?U7;KSFk39c+m+F&?G_r!ql^^{W^aMup@V{ZJW&DPk* z+@!6fs0~vd-otZwj~ej<aRM7uPF^dM*NSScu3m!ZU*-}^wqJAsBuSJ_+NiXOTO1J! zA<e8W@q6b!p<+)r8`z-B8V(zKQ!0+|iLv;1<ylVhsV>s+-xQd^v+P>yYhQbQ*izow z)h9cjQ}4}bH}ftx{1AJId`#kxUKxM!nck2$zTw3TDfrXhvQ@rpYy$5~YOQ?r?A4<i z*4H;YB`QyKRj2&Xu9;#da|&CZ26eYKK$kqVJqclZ*1y7W<OUv@<Yz~1dv4UTPVV^f z$xf5wIqx-_^`~{UU-@6JmEASzQ#Kp&0SG*_iG0;fex{8PU6*%^C{N!_6lDV|9}qL9 zVv5m0nXgBPdZON#7XL!-O%Gv}(+@>VvAH}(wzP4r+^)+hN;YFmI=SBfHc#~!|BZnJ z$=U?n#)i43?H+ybLW`5Ma)AuStb1_Ot<1_;+VHr0`v-sXoB!mut^3&0N4YVgk?4b8 zVdDE2n7%fn6HeDX&A1M*HTSMX81!wINIH=UVYhs=e+3Kba8GY^NS(^Q$7q=pXxJvN zyTf1Q+rDLUjVOFEaz%0Z9{39>*xH@^LpBaI`T&5+8JyIX6UF5T#g+y4Pr6o`Lc>C9 zJkR<rRZiY-y%}IP))zP4y`gNdVC9~77EpEpk-^NPvT}0q9Q`I9ZGg(+S5}HC-~4-_ zOavNu2@}REAkA5z7<9ndKpNabc7hP){B0e0!p45kIu?ISsQU@8pB{)4nwQ{-0O6H4 z$)j84v$pl(<X>JSdF<h}a^A7{bONk8v3g|@z!V%8MhGX6B-NoL2Zp9BcC-zLivfad z7Rln<#>y&>#B%e-5*0jYz+Xc2P3akw<%zD+Pw*ChY#~<o4*x8g+ZOpxZwdXq8R^2Y z{NyZH?GP|k+DgiS;N0<|kF<SYy+8=tqZ2Y_F@aWaIAHa&we{vQPPwGgpKF8M6o&NB zfR8%a=bHi>|I(K$nDz!LAoinw)j%<q)@Wc~M8fgm@jGQQ1-=G8<V*u6KON~p$Udvj zXa^||x|ih*xxN5#^aY@L$iMK5BmL??L6s!J;XXjV-Zm0%n>Rv!+S`fQ92w@2R)~P3 zPN5+k$5M3NG3tV+R?DwgDb>=r(5rT}r}9S52wr`%U?aX53*z_sK5*Vd*lpK$iOA3= zrR*aYVjefQvj80V8dJ(od3zJdqAjp~f~I=?R3@>3%PefOG15=*-30M#G;R>br@)a; zZf+=REA7{pHAn5t3sfs&Ixyv2v})~ZzIsYiUGnseIwM@=^9G@dXvcsl_1L)mj9!kF z3EtlL%0=4ZEuH#g=e#R_%Lh$qB<{gu>Z1bXEHp=lAaGI+{;3^VFYS?$Q)O)*gqO5( zOnl{r1gH>ddwpto+{*(dO%H9pWu+ihm>Bt(o2O~IA~04d*ZU61jOv!W<eKrxrnNrQ z@p7N9a@W4XRzLCLe~Bl;TT|MBfp%ffJ`Fs8H-066Pbc?DLHW8d;<#Hn^0WVM+1Pu- zyFrX4Zk*_&!t_99%D5JXV?!L<><?vDKVwgIyvpvTn<B>+=r8>7)iH?Q;ww)<e92ei zUb9)FeBF?6{_v?PV+49=GvIu=s-ONx?#QPM#(3ljePmRp9lPX?F=;7;{oN-}*Y?y; zQf~FdqSQ#2vnNX0G(|6kuz&nZY^TN?`HcUof9Q!F`4>M}AeftZo&<xV|I=!HWeR`j z)E3I#w({yH+CKGajJpULdeZE%@fKud3K7>~#2)?<i?P+hQwS-+tXmnndE&Da5u$o{ z9-WjqxZ=;@zFM9F4zZ}E0@WWfV--nQD}^NwmytCr(qd~;B@ja)shWks&cpiBew`$? zRvztW>{Z_Aj(?~Bwoi2A+De=3y2%@U^$8Ar9o=l_kay$m6E;7-MjdkrYhLBBeV-QD z_j`%E$(Z=qU$Fu1En`4mQfE_S9+it@y%o+E%HYNXH{O2Liw%g^_<L`{yY7)j^c^`@ zR@uka*hgy7MLB>w%5oVS32eRdV`$h0Y~~W`h0{MWr)k>@oKKgf9r&%6R&;}o$!nAJ zmgluSjh+<R<1<ny4LxZ{bLAAx_SI2cx{l?&GQgP}$H4=4%W1ftq;ETin=qT?<J>QO z``(`*cN5x;tWzIf)H=LWCoyF70?##sUyWYbYMGv;nN4f&55m7T3%}vrwMXf%T*_F# zs6BWh{a3c_W6M9<jgkNHzdrfiU;J}l|9L#<T^a4a45j<#JUjh<{bye3-|g?u1pC+< zb;@`3S1}cQkUmiT0P5Y#Ar+Gm{23D&e9O0F32d1dYSaYR77u#qJ8{#CmD@2cnsuh5 ze;s&S+h%R_G<O0P$7)aF252ZKTv7wA!O)G7e)>d!AaEGOeJg!}mN`VKi^K+df`oxx zNfIy&8q}ZgzyhD;mqK~rzhy{;CNaXB#$1<l=t<M|1V4gG1I=Yp5}_0mq#D$RN9x-i z8l#Kl4a7TvD9e_m7n#VJKC(k>ok_SHP9WSs`B+_&+32+G<^bn_WhAxkDc^NX@I;?Z za#_L74N1ufcLZH{WoMc`QZs2Ozl%)SY9r~{V5T#;sF#LIBUYJVE?jS_peJS>N`#16 z62fo;=^NOckf7uB+T+j>tbVnIHaF1JQ#zahPB~1yo)nPbwZ8%qy1@5c6v1Bb<gp>8 z;!0Zi&O;2jrA`dm#OdJzLR{q2Ug%4v@sPJNo_(&4OCJ~sr*DO8I%R3!#6BZf{1Up# zA>2vJNs>>18B3u=!}@SxmCs35nUxpDz^sm5_W)a&NV#qyc=7^?`u3f}$i9_S$DHjz zcpcgBH$H(Y-n1!~#*sHwtlfZ}+?_W6*%ZwuFVrjREelI^@hfF6I6J1m*KQ#`GRPBn z<rmMJAfJ|iTI5%Es%RsR++O3mRQhCyc)dyO4O?zvfaSkOR8VRUlLm<9M|*BGsdM41 z4NRW(1IM6oBO5N>q;W_=dReq{p)IOoKh58TtyJ`bK1v-WfQ2{3LmXf#Yx^>kwe#4> zMvJk(XxLA_v4^x_ULWvgU0&LFB)r)9ArEnEF736A+(|0WVb)Z@K<OykFla~+9pXbH zlX}}n+AcS?l!FGt%0HAty7<;aZ|bg_u7%_bf!I%F()Dttnrr)g1*6;SouW;)m$t0` zOGX0b*F(g#kq3S3*h*_WM6NFSU+gI9{Lw@zP1`DsA}VVdsOwOmO;Slin+(s3PCj*+ z4L{#!!<dq-zM!85O~%rn@ks&l-pu*SC;FeCY}dDaLMoqj(<kxE7|KuLrKJC;&(KmH zc%(nd37+tRX8vFxZ9VOkn?<kieH47cO@uK`4FXSGpw{k6pV@ym%pbK0S}H&6`-G=B z!r?3A@g3(iFG%`+Z8*L(a@ie79UO@XzA~agaE(ol(Y+SKBfet^p5EZ*1D4pKG^Hz> zjI%NiUa&)&lexGYhaW<tKQXTC_BH*2vGjd6P$^Ik-5JYXIam7Cr}_vL(#s)aZD1+v zIF&*Rwb8;f-z#xT2N|_(`c4}=h|CMANYR%({sEkQV7p;H@6AC8H{ag+M676KA6b<x zV(JI_Qz}{&9wX55GY?Pv$``xlYY5PXGMJoWuaRAuiEaFci9eyfx*%ZW*f|D_v~Ap8 zzfXKu|M0DJmT&SE%Fz?q#gq2!U2mU4hxM=c9@iwk_H-O*mwd>9uVpS(E)L7_4PiNq z7i-^Ir}54W5^sR_IN!xr9@`fkO!gFi7%-X`6ObdDhRCw~Y>!>c=h)5ey|&%>p$<z= zJ)(ok%43e&Sjfhqg`chsuh_wL4f3eV71y$SH?5rU$+1s10l@3Jab&v45Zr+kKYl=N z3grv^<+Spxyy_G=$k(o)eDVpuNc2hQgeLL_PWv4EiFd4Ne9~vxg!b@P0Pc>U(am4` zd;2=^JJeSy?P@%zj{6jm`k!klea2Y(<k2fWM6<V%`}P0);n%+xQXk>z{s{Sq1pMxI zzkBzCU-|xTVZ*<oSa!qV7`eJHteyU+JvCtc@!8?9u^mBR?2XFR>RShZ3lNjV%YaJ= zbT*>BU3Ony+e6;!08q&P)JxK~p2&qGBhO9oA`h;YPW0Y*vy>rt@>m=bV&0$OAO+5! z;FYAj6KJ5F_kD;9f#XI6W(g8h`X^H06JsmH(LR%PgNAegk`^?@+Z|f-oeXnhqAbWH z9siWcKa+u_0Wg<=i_FjvX9NDy4h<C$*T9s?ve%`cesFOy6MOaAHtWl)w6}eOZQ8J_ z0Z$uLcKZlh`{ai@7>uPAxbm$g!#Dk6z+^(_khbme3MDQAuWZ)kz~=Tn@?}B-htS`4 zb1^hE?V{zHa+7pR$0~33Vk`X7ehN5%h!y(T`f>p%EQ_8jzDpE<h2D}9FP;+#SN#tU zMSjD}uY^%H<sSiiEyY8})%C)|;<TsFz&~#&rP@h;+hi^alXcow|Jbzsxz__4*rk!a z9wIJ8#6D>#W3Qb6_Y;bWNgKT41L2Kr@}1T$=sITV=Ydx)`EV%5E@mnRIO(;KG&T?( z%mYVU@H|PNCz^XLRr@!e1dm)<jEFNRY8RR3$%Nhz;2*?_Y!dj@FmRREle(KK!r2!Y zXZo`;Gp=HLfWk*!mbvh7gCZLm)MaDDxMN%3iz^Q(g=bINy^9@%=veV)>!fMfwrm(W z?zzsR{P43+mC?I|;G$E1f}Fm@MlNJuz2Zk#S=i($4K#7A=cRots5|bvcwK+ZjTAiE zUr{ojgxb&Av~VuCwV_XpR38_TKr{BqHBkBqo71kP%{Qr%dIZ*sNudo76f3+urw!=z zkC)b+^b%bLDqIIH7_%8tTSa&D-;I$_k_UaDtz29h7b<FcJ^D2k3+JLS+~L>0_0A|` zi^u5g3e~ChtCu<;BWUJ1n;i+hl%aMHckOSUG&o9C4y``mLZx+{V;^j(jU~Kv%;Wp$ zA|0=le`O3VS9ualeYX$D>z8h7a5(>PNGm=ng}@U({KVNuy}_|vgUTmk1a<V;y{U^2 z(w0P48+-HOMfKRemPVEvBe#=<8#U7K$jb+5yP+>{_=+u47k%xG!zI?KcWi0@jjsZf zn<vJJ^F){cqg0@0ZqY`{EFV*R0$Q<O#Lp>hv1Llu)ozZ7#FGK@s}A{D@W7>u!cclL z&S+A9+p%9VuChT#9=_0A)2)p*@Azup#%}f>I&3*(H&pG9$|>J$X6iE}ZLPbDlX;(d zX)M!>kV7^RDrb;my{J;~=mo(QSfE^1#>i%@-9c0$kc1}xws%9fFmm!~xHpbje~TSj zG1lhdTUK^?YAfqVxwZgp>6oHpa<3YH^5I0}ow-80^Ou(j3+5FA+h1`pF6i?aZ?q`3 zPhBYEDS!R6{>u9?^e2w+9=oKBuCX_D>Rotc@+)lkH#qBy!fT`LcduQuJ*Dn7<1k~; zd5`fBp^z(ns6E&J(L?!t(Xw(c&8!1x%lv`ACT^gNYrOP_aw<12;kfOgk3yt`uvG}g zF8W#Gf%YLT(2}*r!e&g(`lGyP2kwSC`K(;p*cdLKtV_wICv5#i%1zSQu?>Oxx-vgZ z%K3p59j9$=EzNFjHb&YkRbkgQfgQZGjlH7F)C;2?U9U8reEsWRkG)>-K9PODNqm5Q z_q`?dy*v^liC6vLqw?#Y+9!RBEQuHNZRf4ZxBds2z$$r7qAwZS<^wVUr<)&sP}Vh} z`1MD{kFCugJ^role)s!0`p20*+Kmy-#V@pdi!VR?Hyo7@k2@%?4tF)_wSJ9%ty|cK zbqRA1{96Zl2kt|I0Nl_R2FrW-eSQvh_&*Q=uY1o>Jjv;m?~&<!`kY8Dy-&t)dk;gU z%4C+1^pH}owbc%i*zE&!wA7VMX}?P|^_i5^(RNQxFq0^3|EO<FA%uaJ$6-x@1udWA zga&2$)t62^dh|SlpU6U4`x_j2l=cNahfUwS;S(e4{F4w23>sehsBOO+?W1W7e)w%S z=r;ymW+8ZWa_dc_fp#8atD(vt(x$xBO0nRTK##A(DoH&<lZa$+@`la+OYlA>giZoJ zCT{>VNae{GCO6?+jOHCH;*W1j!=rXA&9$ldmX%{+wS!`*g0_%PZ0D75kr@4zAE5Ap zpNo^e3t{+cBZ+vBN{fXt1HLp$%W@WA$eqQ{v_>{?{qsh$$*U#1b(JfhE(p)T$o2_U zA?beG=ddcwxejeF#Nmwm>ZdFQ`)qP?Ep8?eeZ~01bu9!Aa_vMTvVY;P?y?H5_|$W3 zzod~<{J^$>wO;%^6l`U;ZT;q&+kQ>@e{6BByp#hyIA+q4-||`7_vkV%w2AtoG{@Oz zy&V_^5L|lJ9C{3&<xyJ=4Q(}cP5bm0BE_D?DSheLKbhc-9mpaarO4zvF!Ys<4aZme z#Gk;lw7S{e?_c{Vcjp1$+wsb$NksD`)$oG03*u}ttQ?MKWpN=Qob_;kpT+ov?e<05 zEtk#{pJJLDGffGz+<Z&H)Xk0a$q#8rx8I+xe|h6{_!4cg3FHqr^-f<Q%hWgioi@-O zNn~%(+eMUL9k}HMnTbJJ<RUlY@^}hGSwN~C8|&1|Cu!u(srq1F`$XNTpt|41R%VYp zSpZ$>^zn0_U?J9W_|j&+VU*lH2ySBB=$xA*7tU<%(691;a^q8i9h>TuK7o(il_}#n zer3N(bw!1~+cOx+qph`Ba0l2i-bKD`>RKCU3rdmEO0T0bwCs~?wD{x##EjMQ@*NsW zTbp@g0W47u69B?^m6$X1q$Az-cc}!!dIKIeV<pi%eIPuxh%A)PF;gB=(a#k!{R8J+ zY-diQUK#zA@P@hY$rBgD(8HdgATBuCXm93}S)0H1r)O7hWz;yvd3_V@r0Wf&Bw`2N z`_X68Y(GEwKH><qCjF}L)1MH?*VgQF4%;|U7Fs!talUuJcIalV;*(9DZt=qteasa7 zX-j`|jf9-B88YwqiOkex0|;L6HDS?7J<>nKlKhHIe4kOahX4RT07*naR7DzRT3tW| z-X1!Ww3XqlHd@|S0PEB(ZF}C!*4wPj)2AUV0ozR4&Gmw|SLYIsy|~H-12Su?j4Q^P zn^w_L<t}t0yJHV|Gv}zw9Hr~E81f?LwC&>5$N1GUboKgS5?-5P)%-<N>07ASktdsN zz`dGZ(on?ZrvST2cgI(w{7Q9R1WccMQ>RZiHZX=`leH5p<Td(5$M8ni2wMNsgt6V| zr>^4pb(RD%>Wx#rbU1QHFxH=3xvq?U)MXuKo2qdrg?PK6o)?McZdI=^p4DF!MSj7v z9~3S$I)-h(mqs@I`SzBd`!&{5-VKiS32n&lCWmtD(*d7;`l25?P?`CawXgPZEh^(D z$W&W2o;e;BCpXXdW8~sGcD*N5FO1*Hk+19$JItdS&GCi7iHh*c*K5{quw8fq6Z$bk z?MMUiR<?x+se!TGl&7$u7hkk(@WeGfo8)~>@e6P^7RbACukTjM(-h)TZ=3M?qjR}^ zzxB~+2(OHr2M-+c)PW}*`zY%m>g_lC!NamFl{>$vHydzjAii_GJtIBwnVyntYh3Wj zS^Ku*S{dEo+az3IWkRCavnT4cGr2PI_Iqf5D-9p%>7(8l`N?noqu=?}U;2gL$Jl>C zgKx6)@?Xnub#meC*iF~+)_sxui{M43h%&+OBI6g~u`t!`)X#b~xYoQQ54^7JOY3v< zMcVxH5P&;C$E+9YuHQqY14?q~pP`$L1<NC^v`)!eI(04Oqx&cvWvRZ;zMxdT4$4jp zb3+imZ6_8(i{N9Bp#0QNr`|jxSaoOfDFNC^$ORkmAv?xI559Lf6Fh?0PrFDrfVptW zccH7413rP!OW(e2CmIYroLo&=xG6FJu~XzC!1PNYq9hqW#IWCUgPn=kvWxUierHe@ zPTdM`{cC@d{;rR$xp>(CnSedI2xpS!{iNNk^O#9301-N+EZA)wy((*UR&sUQVE=Ga z2I50Mq=2^XFo~yW6JJ|-&3$KXKHHPkQP~txzCD%JQnXTfJ*+J}nI%s`9DfQBT0*8= zczG~0!iz<zYc%?D0T=${vlAu$CoqDG7ZL-kUH1r{_EQ#k*5)lAeM@6xfORAXHuzkL zV=@>1;gQCihNoqSiFVRFp@L82(v#n&m1pyVw_g}R2mOKh5)2n%r;bRsBtlJ!)w8ty zx>6o#j{LO+*by+Wz$<UYkA)=tt8%U!PS!XKzU&49x!05IS!sC&B>bgUxlg+(s&I~n zeUE`8;>Ru`1c(gw6+0Nf$&Yn)k}{dJtvJ%Cy}D6QcyTyDyxOTci`OIL4qD<bPofJq zVzwh6fa+pfV4@w1Rs3#w*H1<`;Ie_D{64Wjtdb|#kf;r`lPR>HR>u62LgE)OMP3{? zv+xDP?>a=E#5H6sJ?PM{y@{ND(%#a6SH}e0p=JMx<KQw18lP+LScDC!>Te8HpFD*F zTW!okJS2E(BkZAF#O)%i{4;Km#Uy^7KwyCg!}!$3S>;fjdo~kkWCU0gA(~lI2>UC6 zLF|Cr0$L9R<$;o51>Eu;i-2wN9uXAU`7(Ba-|7;kp;KheBxE)=z2`5@ZY(HAfP)N1 z^{%b3N5+if<{Y<>D@6oNUx}Xsc>3FoL+2B#Fi(>O{{6JuaTPm)?|d9xm|MHa#s?67 zqR6qEBhf>ij?K^*niBND_N75@8-5)m`ilLnjO4Oc9{ayz=A=RM*j#$x+o#%meE)Ga zB+*Mc3^3und3!~kxm%y*y8NV2e&H1ueH;I<1$pAX<BzF?Q~GGz#@6+b%2ZtNwShW8 zH%axCm&5wp5KohtTKL~2oTaTW=aAOaPbLtlZORtITSJw+O!DhB?fMaa+D84lDY8Bj z@U+Wnb*&!ilA4H-lR#w=UaOmMrClHMX&$dv|CLK_MOWV$m+}}swwsDKz5{|%07MIR zgsyW&=oq(9RKNA9LT~u@!>?Vx*|zk;M;l~wNI$%cA81ET2#*;lR5r($K9spiSqAoQ zZeBxQxjBrL@+mEem0tYTmz`1(Ie^(sM?a*goHK6#b?|UZ;-kKkF7hffvdGI*;yQBJ zW>Pv8Fh0Cy!!tO_85rZII<@~@1NX^`&LeI#b-cg>8rq@bNE^dny<k&&>QlAP>LcrG zQbzI8H*S)<c_6?TSiD0g<O3LY-u^02;iHpyldN0&CbwQ%7kR9b_sS-pm3!M(4sowM zmX5K~O%G{^o4Jhs4g7_d@ab7#LWgT%maZE#%ggp`*pM&X*aVpP_S7ry%AO64_@aGG zKcJU5`iwfREy52v2VH=$W@DzZakwV;9fS{UQ92t7%NrJ?NZfvV^yv4$`Op62@3j8o zJb%<1BV)3EPww%B(sri6>kwZE@dC8&9Y?v;Tl}JR5755ym%4SGyQ*kgeSK|}p~GM~ z>|X?{GZ@J3CGB_t$-JC*I$WWGTTDavLmCJ1OUuR%VME^m9-4#QN(If4VBsep6Yvwj z*i<knqe09-+-rh!0y8&*)EfkH%wzU`F!7qn@|HG(p%Z7HC`ecd4MmMavQUJT&PD9V z6kcT*&EP^16PTc1(L!te+ko1NlU^%&HaJF}=;(y#;*sFyQ!OOvSQl*B%#DQhy>IjK zIcyu;PzVjb4x@aSEqP>J(crQAMcnYoiTcWv1;aIvLq=LIezFlWixcH)l9_GQ!#Wq6 zHHUT5C-;St-pmD!I`R2m+k3GTLqkj$Ti5X}JlD%-NN9II5tpBnR2I5B!B`if;tg&q z=6X5W*2zh`7q)GdUA#O@l?fTc6PyPCXMeU~;jds@x4CV*2+U+kKj?GmGunjP<4Q*x z_T3!V89{V`E(9wdo)sF}NLss?@;ZGAT{V=ai@w6?4?zg4z6=!NS)8vd_U~$5IbE#p zP22i-#$U!~Hz*~zI>k<Ufj;M-EGhfAvJ1e-TQA^TIfXgcrdGLnM4GXaaP2$o<0_Er zs8m^N3uOtGVv(-pUW1*#@UUH8=F$=*xlp}MofuYJYFYYl-9=sMm6Ja|DGe})S?JsE z#t9U#fAk4&63mTtCV6PDBw)00er~d2bx|C_V%6|*1HwfgL<UptBu<gUu|0n-?36!G z+0A&;o}qypZq_7T2{c5qf#6qKq)F2D>h_kK9QBZC#%s8rct^c@!^8!>pO(6D<n`9A z&(v1cJ?DXufxOGAdV3>u#I8eDfiT0^Q@ZM_^GQz{63JLgysOP?@ujO=)ki(omqe9< zteURnuz&}=7^B+n-XZ^?6<+F<>xpkl22ZLhpZ$^|JW_6Z?L`B+n?C*Y6OI?i>tpQp zsUI%*seFCP8!8EJY|)qUB#E(hkKwI6m06t?0~q74e<QE$+jh`oHzodo19ralTIm?m zz~@OMezC*(E4HNGjgdPJV-8)Fxx+a@S@%g68To;RLs+ktpY4@XxY|H@A|Ka|t(EJ@ z6@?`IZe&#-O|6U}%SpO7t^r^pZsxs|_oilYv4T{5`y@A2UM{^Ut6vmA?j$cM)Sl}j zV_)c4zo12^d{&!cKYh!7*~+v4XS@8A!SmqQY(MO$+PRUG2KruU1ao8vA9#e$p{tZ0 zB;ox7IXL=17a5y?mQEVE=(Q9=*BsiCS7QD0<x8G)!tZuH)pcI=l|VP#_h~n<@b4$| znJ+`llZeD4xXU?l$qhB*lXB=AxA4+$#LEpRW#y7*Hv|eRU(;c$xmHho{FPr7iqz6W z|M+>I#IrqkiE;H&fD)6AuX`Aul#P62zfW^z4ggl0>?V?H;^@s<%dZytK|#KrjReA! zX5&S^#-eU~Xy91&XX&p=S(T+mk1<rgu)yDWfWQ77c-mLT#vfzC_MQEwEr0=clQkJ{ z%g<}d*F#u&slWB<Yt{zR-g!~l*LBRwAxv~IOR+LQD00}>whP~wg-r)8vW+a!XUg$K z%Hl<*$yYyVA8kWx<>xZ=^RyaqPM&C-BlGI?t?)<~`j8Kf=jg+D6t7=>Z=Cf$f?k#_ zHt7>3malp#mb{eHxsK!CTJtfdkA7q1?|thZ{|BBL`2}qKTw^Cq_94RxcR0(3fIg>w z@i)JMf6=-t&X+2`M?c-~J=I@|?2iU)(6~^b>;T%-!Qg<U#x`<`r_^VFN;RjePWQ^W z06y59^FM=gk&_Eyx}V$sm8@r5w<aYgTn9K4gO3h&uv_M!KF9cwfg<lCfk%T3gP)BO z%YM@B#POQ1(-<iAi!7}9)tkO7%SSjO;Biup?54YLP_8-U2@_(KG~!?6yCfD_Ypg}Q zj*jZ-fj*l;KlRbH)!J|A4qz8cF5GLoljrJ*P8%$Nkx!%$d}vK^^f71x1DuQBz(<ae zFE+2dAn@NK0ea!A&vDX1Y1n}WO{`7XBO*i-`83FnVq~>R7gp+dEU+kVTKUvTOPQP~ zy)q?VMyaPakYVkWn+WlsnGF&2@oNmeY%4bk!2w=dlw@Enu6&u8tpN7y!`f)|ik!kA zQTwp?Ew8kaIAsUoqz6bhTuLLPLThlUXsVZ{ISxLb%ogL}`H%~JAG7h~J6N>y)!vp( zlTlI!z1n&X`KUWrNffGgbL%3Dy5&G7eNq};^H=!#fD^ViIr@Y3`L4Fz29BRx`$?en zE^ro)Cb>{|-Yj;p*@frw7p4bU1Xgydw%*)?j2!#&T|rAjnfgie43k6ekQ@4yJ6NT^ zMe_Q-{x9#fBMb<(f_Zqt1B>f5sg{zzcGEutfx?neUiuEK*oK9l-%0jUNK+Poe7gUV z#jhJAE|%Bswr5daBM#581Il{yQF(@+kKOXiBbAf$^kMt9{iKabsO?^_U&+^-6Thw@ zOl~}d4=8Ou3OwvxfElOr1fewYhfM0pU!KqaHgV9nZ#x~cp8_AB%p-s-Oru5Q&NU68 z7NKd4KD4mtm;Z51eHYKzZemE<D8n{(()JO3Y@%&?gmGk0*34TOXW+%W(I&9*4>!;+ zDKtZ(^|7VngTwyuy7LjaddOpr%!|fj`Pepj+U<*oSnra0K%l4SCiBjZ+&EEoUWh+2 z4t<w`n6aQdD1l19fbS7HD^plAM!k7PX8TLn%mwmu{L+Ke+kfg~o#Q_9w4BE7^`F@+ zQz!`KQ+D`o?63|B;b9)(9oKFYV}r^(vH{7H;enA{+RP;FY06P<Xi44wv<}?iD~lr@ zFyURo?JsRJe*vXUT;Y<7N76n?>Azlxw{Sx;fXXBM_WS02FNAIS$@q+ZlLLEW=bf+1 zk8AtL_zFzqr(x+)pehC&zKAn&inALd*_f4|vX}5E^H4^sBY5(I&jDQ#3L>M@3tcK> z^U+7YQHHndOvE<ub$q;GKGA0~e(@*2rXZd+$c^&&o0@6fook-p-`QA5Y}CixU^f2t zCQ=@q#^l$yAdmQL{2Cr!Q|`RwSI_Ws;-|dh*A77VTGsbdUK;QVk2nb}^i}3ZpZG$j z*xDz*E_RljUm-VUW_+qQv^z&Yp0d{_$8x?(lbhkOS^NvVWUM^`*L7sZpS7Bac6tI^ zb{<YYP!~MyPWg?19;DLqvc4qsO{r4{j;=l4^%-HMku`cR4w~|i#;#SuQ&}!>X@|c3 z?T03dqb)*nY$A=U9e^__y}n!<b2T(ze)1D;WS6eLp81%2iKUZ#WW3sG{c+`tOkp~H zO*wXh*Y=q(`n39NtP{pxDU+w~-qDYPcfkiFIBQ@1Pg>SzY`C7_LR&1ajSa%e&!nH@ z!!LgN=l|U=rs5+$ee@e6vEAcGzkzZ8y5%+U=GQvQ+o`tiVf~j$4vVXUTydBF=ha=? zzf@Vd--m$XxnOv2+xy`Ei0kUxpUvHYLJx#<&m#nAYd7<2+m@H|(VB+2qRh~{hgZt> zlWC~{BdnDbI4!$L6WD3%g3uc&CK@IPB1Zhh`VQ(2_S^^%_`0y#K-f)?2FC8>`w5uW zl7CHbbK-gW#_!2CV6Qw%%eVa!B-P6L_$dp!e(I_YJ@!#IagHR)tR}KxK{?-Xa7}F& zu(g%*eD}b0><A&hEDmQ<Y_MxUb+WWQGGd!flC_OowKt-Z41f)o`Ca>EZa<8U=CQLj zrfksE*31lnk&grgvuB;^a}nC!Y|59$OMlDLMX|DY5;wAjK7AYeH#plCFnF|&#hFTw z>rJ6lz|<)d{SQtT;zCva@IuJQM7#GSQuCLN{9`RWcwGn_{GC`PX@|qUQ}zji@~bR4 zL(_CE4+&t)Cj}}a*D{NG(_iQsxrSEp)vL6<UfY?!FJ0@m?Dz8hbhS5H^eNY&gEf|) zJh0*@P(CphOs@RpsW`<18wc#CR@~%zL*;@`!+IcN_~--2ricqiWmo4+#PRKJjJ&?U zjlYIp_0K2A#DYxx;>#OhBHv-7wN-QF47aPffYp4tIbZtJ+3m^}-;0Etl1fWk>Gih9 z%fQK+%Q5aiRP*T61?tj~MD3tGLNKs^$Gsc>^kMx<+=0V{yO8mle=Y{p{g!tX`P06Z zUF_5zg>4*EzcMl&_#{Z>qd@h_vSn(m44uck<4Jj{i~2FH`G`^7wKL*Ts(jMP_(eG5 z^u91oe~^9O0aJb;x4&rc&zoo-On|=fd!ts})FrY5zcR^D-}S~wKH>&WF(Vge;SsLB zs)V3VUnTBwr7o3S`S%Ek_|eAUYre7yAAbY<j&bUrHZg@4?e!gf9UX}I@e&(Jk!$** zHRn0{f-fb@esZnME2A-}8?$Y<etE?X_~UL!q>r$L^M$_}rawjmPVrlPO4gc-ztZvN zZGq(`%BMyA<lF1=slRJWfR&JX@bh?)`g>F^=Tr}GHpESz+b7emUDWN)C$vcW?w!c2 zG?CYw!@jalP02WUosCs#!`15?!cr$s{t?tuWKfQ5<j|nrA?a9k%!UkQQf_jwd07}^ zSOWm}mM0kxIRp%S3zxKP&E=<Xl7(2xIhT)ElE}t{Iq;4lD|<5qhIoTpd)L19Rs6yj zC0@o#{bc>2W20lFH+1@9sDO)}jvxA{a>_qKlx{C7Vd^O&n6Qn#ZfZMcHwIgOFL^yQ zie7p3o266x4W7nMDv#6W+kc5=v^(atrSGm0M*gnd-aKoZ?M6J!kUioDa%9|)%Pk*{ z=wEIs%we4Jrc<B)l$T=qPK~tZgEaeHyqusQ5&8(9u%Gk|rF@D!RA%10d9DA~zK#Rq zh)-m^<U3!=tsqC=LSyGHs3pbD;JY#MlmL)GZ@)O4u@rlwbMU3nICebc0iCrIf<zYG z+j*fIBi(?Jf$#CU^8*qm6R$ZcL(5y|ch!v=`jTTrJ@ybLz9U}``r_VLwVgxS!s&yK zdyn-Sn$oT=o0P+NaOGp0H0)D-ApVRjo8)iXw!0~o_jd>|Z5HKH+xF$S+SR0t&MA>= z>>4;|Du?ndZV))>Q?`kdxoG$+TkN5&w2L{1b*8kDuf|@luF1Lft5k3O8ZET!f7eX< z55%AePdXzT(#9pohNd}xk#uaO4$D(tFI@dzXr=IPZD;H-$%>iaH*)cjpS~g+BX7Qi z6a6)e9Sf(E#<1H-YiF<Rs2??5X<W-o_kDHS_GNRm()CO|e}DpdISFq%OI!2DnQQ%r z96NyC;X39|)>V0iOGeu}!0)d(yKwt*^M~-Qce!9%5tCCDi7#TucWCsn*}VILi6V;> zaF>!qqAL{!1!6{n3?tixwhOERx7UO<2yC5tW|0eQD9|QMd3UnNZ`Ko}Qaf!1Ej|;- z4T|-CAN24u?3l?*jVOmFcm}e4<9X$88%;;rn<*zV(>+-xz#2Sl_h>*>7NwWa$jJ@W zonOC!jFV$@JI+WvlWeT+Vrlhe(#_&YSt)C)v>h-^6xd9@6<h5|QKI}S%~Y{uSp5=w zUHDb`uwL7ofw}gV<oyIv8B#qwEnVtD_o$$Ovdyt!FN3@CaUm%Tgh=`U#{r+lo>s>E z#3C?LOV+aON3xykv^W_a4WCz##+4prFZEUEn7j;>a>65vL~3NeGE}_ka`>Zo0PT^V z*yB12Xpu`52F2USJkpFlE&?_!-SX7;>#OxkeY5WZ%GV>1+I8G6-gi+GTo~*oU;TK; zs`A$FgpUuxzl*-hI74p5%S{xMzBh4>pY|^eF;=Cnn$@`*cAD1fwM|X!>Q9<9MdsQ} z8e!BvSW^fCpkCuA)LAG|XUzx}+5GyFVF;xn%<3b&Rn{h-_A5_yd*i1>!YP!%q>Mph z0CCGtCWAwL$1L%Z@$L7D_3e;FDHqV*K(e$79dVRp)6%ei(_g;)8dcOKxWLQacB?yP zp~09ISE9*iefzSXN(pI8?X;UcGcKS5qsY7q=DruBi&ht$($oFpAJXS98*40RebH`Y zP%hvkr@+D{?3=eT^;J4&0h87S@=u(jHY$VL8;iXd;9<*TH?#AaNl@8PxAyZBFj zY>YrzS<5+`6t6a-)_;z4bL>*OTW{MSC#&bxCbm61s(Z94U1&z%iNWE`$y|T>#y7t4 z=-IR9k6!Y@!HX9!AKh?+_~IpY;VTJ;9VO?S#-Dwf!OhnX@-;K%vl&5lzP2m_>1)_N zwr@dH;H*|2zvcq0{w^;!Om4969c_y%ZNPg<2Rr|XgAUI1z{_is@xrfV?na67I%~;C zu@pD*O<CgMojDs^X!Yh_czcO7<kM%uOT;AK3xGbTowBxwPNy#hWo1ZS0j{K$R=Eys z!Ez{1=Vo=%Z{xqlOxx$$4UF`IbG>lEX&xI;=lF@(>aer}3!Jz660}J<r+#m0Q<v7m zETMJK<4WwDV@qjB6FIMVw29Mm3Y@TCwj00>Z}hcESZL&C6eQcc!S64w&}Kgf=P9zc zu4_E{AUBfr$CSG`iXAE|8yt5&X@Ug4*q?s%DP(UdGq(iazVzmiy74*v_!hZt(M_8_ z<?CM0o<H-^`OwzRU9(k7&m(HYjNefa`4t4bn>XAH^Ujdh^HlTBh0?l(zCTW&{`NgP zC*jjIL3uzVV@JMEo^Z@2r#ze|67RH8{*lviE?Sqemh@5{wJLc_fd)qzGGCDU6t1w9 zu`gbZjI-$wKc(F|@g3WaTkCxS18%YDbz`LC-?3P_Zsw&74RzTgascB?ZeuIk6;@sx z;)E}`Pg*{GMjw%{3`<`e;Y`*^KROK^>xHpR|4{b$BYEfpCyrkw$_J+8@sq)$v2tBx z2T`)Yvt4+PUE^!5Zp7)s`eOCYe9x4G(*;+)(n^0|b1niazOv<>l%SPzL2FB5L^e|K z3-NhT>)Ri`efm+qbX9wqz7iWFfA5?B^!I-CKmDuUMc%&@soUS_2(Q=SEXU!-A-w*P zlivCTlaAv5mre1zy7lLy3cTr$QqQINS^4UAh+xHWk@8hMZL!x^s1LCa=01yJg$u=P zJMkwNtPCs~O!Wt#A0Qm`oxE8bCGZdsvvUoe?Ji2hcf!u%2L-aR;D*6$8f0TcM#==N zwAg<?H!_BAg0BlHmrm03fPotxKDMTOse@E=DqJH+@ILmhKd+WuM96q(Elp%?ZS8&V zqTQ5$Iswr(gX8kMw&jyNCc51P21vo6P>E7@Z9z&9jm4ZOlt+8gI18OahI`jeoWOEq z!f+zZWC{;ZV^<b@cYZa4iu?w={L`&D0bkuUky7o%Q>l6uruFiIR`{sLrcMB{YspGZ zf}z=5w#w^*g}{!@(h5CWDu+lzU@~jAD&;*bgBcKq9@{S34i?I`Uz6lrR4<zov^DXQ zvvN=u`lJ-P!a-jgxd?TSpEh0!z%1>}m)h!}tu1f9v{oGPAac+VKQ|nMw{#=N5}(|* z+)QHs!qE`h$j^z_@!L-tUG#QA;v!%d0@aU>1dYY~z-LjWSZ+SX_w;GS)Gp?H(&wVj zN22X}D`h<=Tv%jT=988bsOlzyK3Cvck~7yi^nc6JiRDYzqBlz7#jZfO;K-s-=pfkt z{Amlu$UZ41Jpp>7LLTttnZ}|Qu=r*8=qdJ)Uv1k(Q=ZIV0qsIaewZ$_jdM5iX`oai zxw6RK1iUh&$Vu~5@Iq^IKTXR<igA%@x4-0)Sc#3rHy-bTJ$@B*V2HootO~C}<;9h@ zAYQ10QrWIAO6QhOG3Duk-^H!{BQE=FfJ#Sum8Vaj?BX}J6cAccRSqLSwDrb0wN#LV zO1k(+7m@e@ax72f%Z)j<b@NHTvd(ttiJo^BQP4Ko^d37kzLs7V&Gw0mXU<!3BA0{^ zRvOW7WKbvNv95m<^H=dbS6A`QI*XBwQ~jj55T|}&7Nm|rao*-;PF;OB!zZ77TKFfQ zhJ44C63dmuKx}^_<0hTRe`LPpC8>GG25rm^haZPR1~2kBAc3bV$vW5OW>p@_5AN!) zEc_JTxlefYRF1?C{mtM&I<-r)K=c*;l=)h|l{1;KCJ;S^t04q<<4u{+W{OzUM>d&H ziXfIF(8wjeG6t!6+5xjqVXEJ0E6b4@p4li?UU_&J&+etdcV4FK*zw3FVhE+*yzUbV z-6XZ|%d37Rp4V`I4-9fDBdI_c+BuKB<rN>g&^kn0eDf_sL(*RR=NO1jYjOSqmNv=- z^PF;I(8ur%-}`aeDn!^|v#ovSh#VuzElJzy+m72^6Z(mJ*M-Wskk!$%|Jw2yH_W<{ zPd%C(6M6qeV%lz)8h`aY0P$y^GV%k5-57cPoO<Xbo)OdJ7dhgul?jyeL2c50NX!}w zIA<6Kq6_P_jkE0oY(k8TQIS!(SLX<wzJ({Ud2{X0Tffpr@(wEKGU%kE4NaQEIXX7A zUZ<1>@@8CdY3{st_z~^WxXKk`(u3Ew)fb)nT?6n`iS71{{bB!TLukPwv~AlB0oN0m zL#eyci|mo_>}PpPW95l|OS^^+zIEP9*vB4jjzk7ziO%3hHs#R{;*ySykFl3D<@E$S zWm$QaMsPUohiTV(+f0qU)nA^%=DjYI^%ZSktc%TvUB*6bwl>j_dv6r}NHpR?z5QgU zML}9dAB7H_{#M;$6a1`pYrg^XyMOm*{`v0-{jsO7#Kwq5Bt(3VVft&>KWUv}^VW6{ zWRwJlj!G|X>le)7@sREp#QYNr#+c4Ph=P={tfvp8HaJF7N}uI)!b@;cOM^q**|HFy zpNlP?{T9+(IB=8Bk<G$Fm<I0z2OlYOv2FliAR83?p6nAAuSNs|jdT*&2nM}raH@eL zbTaU{x!_0O8<c?Gg;;|G*MhDr@ZZ3l_Gx4OID9TTC<}iZXky7x=f2_9clE3hmY2D0 zF1%}()I^r!T6^&)pB#)ACo6}IRFxfxmvHD<r4DJb#URcn%r{PQY$99(`oSk$Y6tm+ zxLHI;M)bYqXD${#01-e2$|OvfT^2MhU-)}xjMEp2TnjQeC~Fv5*;K{$Y6YoS$YR1O z7(m-N$x_TGiO}+zBySCrg{L-yX(lG?Nrx^21A)MowL0~PErqdR>Ovqi>^o>#KQvFD zSg12!nt`2a<#?E6^)QL6EKQ4ZU&aFmn!B)+mi=eCPW&28*7}3AH$P}hVR;_1Kaeea zvY~-|T3uRveX0vY--ppfu4vNAMhX-DSPYr)O;^K_(@&A(NNKlAauWp2yvJtr@8Yk0 z8vn9g0_dav#-=ETYZ5QYUuEen_)R-FVHzClU_SWLX%fZ@bI$q@GUd~9u7$UGeM!k< z4|#Cx*!E?S)^FQ24*}^T&%3dSdg!}oa+tee>*C3UyHBDWe2Izq3I=ri`9<L)EAnjG z8}G<6i{v8~0OTTHx$HlgZ7#mHL817_>LG3y@jm|D#Z~lz#+aqK7n?%67vgtQgirE_ z^OgmbFGHDf`)O&V55%X!c%z%BfBF<W``-gIb({$2-}02Es<oDSbp(T(VK>C(6MK-y z9o^6YH%FNcz4meH{n(hc$T9ZN2HiX=&F}-PbVeR-fbQd+aTzAa)OK+*DMs(s9X^t{ zD?Pp*%3}I$ewv;O^;8DNmGfm^R?FsO#+AP0p&xrQ;+$CvDxazS`sC54JVEk`4U^um zL=rU(Z6UWDB(B7luJxfM5C;-Aho9qL*{oW8$H^w!JQl}#<3-j2l930#-*H&FN}qni z{*4{LIY>#`O6t;#mgLfsyUF&9mC+qQYq=TW1Bmd_PHw=o--5-d*n%R%=$8$#;9FyT z`3fxjfnzKF7AWwuW{EEjUTA6ukvfM`A`LHd+OifB2zbX~;!S+8zEp;lMEPS?`C*&J zRBQykbAmS-nIo`=qUGk0`sx?v6y<N+1}ElKz@}<zx%LhyW%=aBFLI`tTA=wq>@Ko$ zgfY3FNujr#oO5${!#FpM`O4-I<D^!4lBs|61~YLI9DTul4iCLRULNs?^2*Qj0+LO* z@adMYekHz70r)hoFT~e=2!&&Elh3$=1Dv_M^+T)kX*1<gZT${JgsZ(8hh0zxZLpQ2 za>-L4&Du3(`_m^<`ZPwyv4khZY!XYA?~wB=JltHr^d;E+8Fg*wjedCGEB234?^=7? z6uA9jZ1hl{KK<aPab$vy@AB9<u{y6jkyBaKVc;_FYgZV@7vU3pVYH2WwI@6pZ#sUJ zSJ|Xx*>vsWT~CPP29Qr|*q%NDc5NsP`I&a3!Q6DECmoZ#l-*w>ihQZH%g_E*=IsS( zT#q4=cE{J!P~O#3c#tywP&__b{;z_5b5mIwr(4e4!g}f%PY?No(xH=fTN>mzK<GLT z<q5d$bNbYnFJF`WFAdiYPj7C%m&&ie=_|7_^7p^}bHDzpzx1zv8CUtnI`HQ2*!l1# z`sWA>??8R9;&ewqq}4wDApFs=e2<Dhy@jjEwmflXjB>TI5Nl|12URYGDfWHb_uI8o zrh^gW2MDJO<?E#HcOq}zvN7VK+2gg3I~qU;5)A(E2GNNt;*jS%qD%?~6NBLmFOW)5 z%%ZT9>=E1ua*a&{3S;y9z4cczGAT%W<VB?oLNbdE;>=_xV0~FlN=Yk3E(_PR_>)U( z$BNj}sTGP8$_RQc;sjc5<YCDPS@QTVbc+LA%Dr}SbV;b~m*?hN7lFZPvcSQAZ-!<; zX|+7drTo1Fu=EVJo%k|w<yK`-1RFV9GxA$+8oH4q7pdrF<W_w72+S${<l==(7A?7> z3bgj{U;3SNb|SJ~8iGLyAo`n$M7ZF@pwd56CO!NsIn`hta-_E+leL>F_j^c%hLclu zSUR=cVn>kkqI{JT8Lmk#S@?yW+Mcp4TvQ!qhlI)-fH`w5ZkG<ljIQw1R%^ShD=K{~ z9mZDeSz3;ryyTCCg*Uq{PE7Fy+A`5QW`kQl(M~?>Ag#m+uNlK#7^jN{Pbq2B78F-5 z?FG4Wacx<^$Zqb!%DU6e_IF_dmXk161~!ek<k|~;iNpBAb*iY%Le)?DsEFSayIct6 z#+3Z1PZ`u18?7JPNmre?<Iql7$jgyB6>Yz(yXC%c(D-PNDVcm-1hEv1z}~pHxd1Sy z%4+=bI2McEIBy;J+1!g!8%K8mSKAH^Xhv`I^prjzfA!@X%3~MngxkYwN#`0o6pPG{ z9_u46e8*3;f%c77d**U*GM2L;q%Dw%KXtDU4xG^1Z7zG`;DrJ;Ghm!UseK@=ZO2mi zzIXa$7Rw56yzi3*&QI;L#Y^8i7UIYCYuT9!3r}s}HD_(%Y5Tz31l7yDB20D3W{|DN zh6rVS13LNTDReS*Lr(f`j<mnCX*OfacaQkq7?%0WmqCdQeZ<@(p0Z>UmGVnANczdU z<E3;n9wJtlgJr*2(Q(b?B;d7~wxZp*r{5<5bIhMqb&(El4LC_WZ$=$Ujsbo06?Oh_ zW~e|bdOFu9&XiZ|ynKO=#nlVi9vidr^Qib!`v)*>3+0SKW!9$R&!I0Jy4mhU$b&UH zv_eanl+UxNu<}|WiDT*opK>m+@Y|2^D|}qLscZQdcX}<R3{pS7SBBFkAyycrP&Z%B zX`a4T8v0wQ1XWkd=0WA;b=Fz-4cC2&Kp>Kg-<xV5bv$U7A~@16UU-FuH4>L!I3hyj z%u7dc)@+WrX~iaB{6V_`6L4h^SDdw{EaJ=BYx-WGIppJ5@698=nb?gl5tA|(VIx!4 zmGJkSB=VKtTQ)^}j>#uSI(F+ft}orF%os|i)F(p-M4yawJSv0DK4sK?B~L$h%<9h@ ztIgev$ea@Y1u<$g-?1tW-w$MZ!xJY@*wnZk8S(++l(kRBYj~F*28tYS2q>d=VCt{1 z19oLH_nK39T~CKD(zXHn=sS*G?V^3Op)^eK<CNwk9>?+(e|=Sm^gH;mGqn5)j`Y3O z4yLS$EGXZ|AzpswdEmV^nY*bV9sNt0<=+o>Ixj^Y>i6qD@mb_D#oxd;Uzx8qh#wGJ zt=l;@yp;=i`34IyT&@kqu@l$EOMTGs6WxTzX8N&xnI|lXi=z5;-($yxF+FNkHu2kM z+QojAhkelTlR3Y7{J+2PlRx+CG=3%0S7u{GYck#ZfL{6;%W(`{%>I6m)_EROf8k4q zn|}?S<+aF5TmGB2&g*OawtrTxd!3Xz2tEXV9V}m#&xdG!(fauIETDqZaq$6kt%ojA zYyekD2Vbx@SO2kf71W5#Yg`0y%DH&RQ~>M9GZD5Z`L&NC7s4RWda*Lm7&zhMqi@f@ z_O+CW-H}F^yct{k1T$+W6BQbK@D2!O(gLHClwug92}A~vDeFi2h%$L>;Fh<^$;u?$ z%I&pw@xPgY9Ns}Go-j+>vMIhe%?GWLFTlvMKC7&e*T8M?4TBO828qIhlhhTKn#vXW z+8_%97lYNW3oREoy(T-_0weyUa0poz51GhpqZZy3rLwe+Cf5wyB<7RYZ3?~PBKDfo zvUxWbe8fohj;xDfz=x@mIurV=^V2Aa*ho9=LEYM2JEd%!n=12?$!(8)XfuhwNqK~+ zPjO}2$albSy*St0vXf#bsM3*E7V37%5D@OdGPO%*c}(TKOBWf+wa3bN-aL-ZgLTr> zlgb?uq(hSEx|fx!wg?1v4=)y!PT2N?<H`x&g+(?eDR&`Iy8X1YIv2O&JTNeF!6qN+ zw7hsOV&3f!par-mr?PE7YTL9IjQVz2bf=uKY3|`4`KHuyoe+=)WMXmb6EQ-Yj1Mef zf$750Pq);)3m5GooUubX(#K{V*u@)H`^J=UPQ8ny99g`&VW%xzcvX-3Ph-L3y!R;R zIVrz%%LBXP*Oqe~Uh?dQNET(@2q-UypMJi4@q+m0SCqPd&E^sITbhv*c@k%bt@6Pl z2P_VLt*fqiWSHHW`r+6kvR2;2B=t^gfpGMt!|XG_V*|#GdYG=cvPDieGrY;gM-sD< zE3kpb_G4%3;xoonZA+d$f_7{br1B}O2+)c`5r>Miz2M@u+CDJFzgh~qB&<ulW!i*P z_Qp$jq+-aIPDqU2DT|BKhL%)Z2-Ds^vS^?7@J4U-&isUJoJYKQ@{@Oe%_v_V0ACh< z5_$b}THnw%zJKKH9mmSAt!2w$9^cJ-b;gFspnt8OtNSkQ>kGz55Q8lpDCNKSX&GL| zmD{KIGBUgICa<^L^qGsK-u=p+KeY=*PTnA-jIM$Af|RefQB+rXN?V^3xF0Im5bp?l z<+6^FG$^jjSwPWuUQ0c&Hd_i@(26oVD#r937x`;tWa*7D_^}=Ko4A_#sgq!0EqOT0 z{CZfcPhp>(XN)JVh4gRE7X;;1PHj<Jo_*Xl_0c|xnQ;aj-A|e|#o(Vx+qQfvnjAB> z(BVkZ^uiM~W53O<R(|x@oA~X=Bac85Ai+TVZfGd)S(o_iS99Q<c^0_DP~x~_p*QS! z3^$G5Fp8>upWH$*@=yUU=boLLwAEYQL-OkBi#*8)L}HHc#!h9CN5&6h$Ru5Ds~nZ3 z^rL&~YJbOHVzL_{*)-;wuc@sp(vX^&b-_=j&8eipv8Ehu1b7oIJrDg#6q@jRZ=&@H zbQYhJ^t%3KB}JXK&owlS`H^8@EGvtAa==sG>U~RH_{nVGBM-lz)^)6N!OT6#x3tnP z;2%B+u5H@eWc|XJE1SpKYi%oRYz&XgRp4v2;3}s{n(D<NjeR0XPTDCOBiar5uKcC5 zcn3{o9=UD4#=d+o3ms{!zsWQGlK#L~lp(UVU!`Fk&Y3>S6QT#~$*Xfm^^*1;>f%F* zu^o7wcO!P`(Vi#OLf<Df-~K?JUzPNg+8FsiZ~x49{_Nu){xrQ&x$DdC*m?)SI}Km7 zBA!d9GmsMqE_m;w{l2;j%4Zg3m4Pr&AEFf)9eI+a52(K&fAsmu{vySdjX|bBE1#3( zAtwVj<;l0@Xou9|U8#x`n0NSJpcW=orI_>9cbBHE1}q1&SJ?C!zrgSlKk*Yx4orL; z*1Ig@W#8d@Y<4in4Nl^`A=q~kP-oycayt4*?c_uCObAt?JQH-Gl}9Ma^B84rOi(iR zk?2?>^f|%WTl28sGQJ6jLGaxK07-w^Bu^=Lh+~@*wU0%*BWxfuKsEs*58x6&#fn^& zuL~zM#EzL16C7tD<DykqY?<8hDMsanUdL7&<WoJ&m7v#_uWicCTpL>mr8+L|L<*W! zFmsaV;s9BcLqJm&{4IK3w>TjdQg|sUz+@w%@{H6pkW|ip@?hn%b(!!aVIPxc@ms9G zPcb^Se_C^$fEPykN#+{nl4`q4#iiIjh=?aoWsN>3pga$%OaFkgr8ZsJHqW9uvO#l1 z+&;VJ<+LyY*0-E|(|^k2AJ^5j_H@$SPo^EW@kiyt&lK3}h&wV@-};~em6PxlF8Jc4 zLxzsR(O!8K2f~Lj(j<UTq|IxS0&ZP#i$Cp=wfxssSr~(|eu|3tX?52}6}5{E<(GCB zyxx%ZlO`8bF2?KYF#s})cOK<wKSlTK4_y|1-W0?yvA?lJL^)|24r9TZAo|cIOvb)& zKE*=JvM%+;0LQ+{BrSIFN?-mfgRxA##J}hpIcf_(c~&>8?C<rt&9#e%?LOfmtzK}W zEG~(fqsOX{_2nt7D3LpS7sI@yfDCUx{g197<PH95ANwO)Zm6h3+=zt+6f8SmNMm5_ z52`&1AtWXLgWTM*hj7Z7_mAYl3fdetGvCT%;X@;Ilw4Xv51c+hVJ(OMBNy3OM?*2K zGto!F*-y@A>4&)q0x~{ipCXVi_03H{<`b`b6A~P6!skZ74<oXmcN5LO@zJG)r8EZ{ z6dd{}$KLQrix>HUV}IBGgmDu}rP_v|rYhEA&hMVq#_gZVV!ZL42GWy9=eT*7!T43! z<)nNX8E~#sW<Y7u#wOc1*2YrRmfAl}y|K*&ZB4~FzP<_lQx*FfT=3K9B5<8k<Y~P% zrlXJbTXcy&$;W=mqHy_d4u{xWy7sHImD&2x<V4R#zrFS=Ef@;=(C}+w#<AhIe9i64 zQW5h~LiXrXX>6?Qp#ja2F%6WRyRTzvW2tq*MpnpI=Fw3ar1;s!KWtk&23Vq{3*XgO zoKh&hWWpO5H-hyK{V{eF_%;05$iqPKhrPLXY{Z`Mh)o<zl;eYp704we#!6R;V=rZ~ zdzIZa+aX)z4J+DQ$GL%b+Esl-w0qKz8#B17%_@Iv5I+VsQgBjFgi_bM-v+MA9~ow2 zq@0iwIK{VL)YEr#Wy}KL8qIO5DAp-w#X^_)MMvpK*ZIwH18DTP+K#HDPJT(zt?@y= z#)8-r2HQvLe~TYodtpZ&yiz~(;v>+i4%*(BQ(GK#)9=(l%l5=RWbit6lLx6fBbTyS zK`snP_hgmsrj;c)z$=e+k(aW0Xi3I4?O{7fI$1N#rc3Qftag(M5cL2mG!^9FOQRda zZg`cIzS;h?&x~#AVxRb=UF6Xxc*@jqpUvg*3-2cytKYo-zqkMUI}z+Fa{5YbjC}js z-+u9fU;h4Y(vN@jYTu(%scc7GI{FIu1<TU&Fz|H9oQTrD^0Q^@9>ShjU#=A1dgG*& zF4tTC<H;S!pT)TY+jH$l?u9lLZSvUo9qS4}ddJ44cC~wBJAyz@P823@)xu`sK}%r@ zC60k1SU%GDh(#LbynHY6+3y5F&U;A58%eo1nIu>Wn?OmBp_~MqdYfEGBxHtW+ii1^ ztj}DJcZ?cvZN^{tIPp>TSYGguo^&={+qTYpd9_ZQPAVJ7oSY2m9-+Y`CRIrrkWH1t z$*=ayM99RDMdM5mnShk{!4U#`f@Wlv_{eU+#WLZ!V79H?xtUc4>Xf{Xce5)#{2_GU z!ae*A)H{(;QL?ghNjJ3XN3@N-58f%rUlGqqY4NUbMTMt675PBgev_|tPDEBq&_sO} zM7=8B;9I3$+E98Xv-AsP`K4CcE@aMS%mE*M!UB_<5^S-3LUq#Wvia6u^R`)2Ii!(A zpms;z+Lz`SVZqvOE})#S)3=A-f&zSj&jJM4=n*)1DKF<7*eW+wc%F+-VER;ucA=cd zkIR$MiA>^^fxILcvhf_?^tD#d2LR7~$?AH@8^qEw9yE>M(p;O^5FS%=GK`wCK!fn= zLR7yz5A7%nRiSB=IlsG0+ptvDZj3nQ{FF|b?N^kFj)D$&d2^9I3y*0*R>zb5lQEyg zbT>rTZo4QP6$7uDxuJt{;6lfzA(S6|s_0=0>1%&sk42qC)H3pp%nU+d`ssB9P9KS{ zYe)aIV;A0Kq|e>luJ1XvpqQ`ybirpYqz}D0r?1x@5ln^9-MU?<Ys2(GSSxRBR$F)x zp(A73f?F7M&W#}bo9JcVo5)j|d`RTxLjN5mA?;;1RkX_-E_6etwuvk-KfcPyJiy56 zSO`B^p7>mqHfJTtpRqz;44ug@{bpYU33`^V*XpRv)n8{#eBnZ#>nr-wD{Ss2dw-s{ zpW5yXf_yh#YkR-ml=qViJ#Co{dUaR%5k|UxLV4%=Nbm`t!SJhV8-Ijz(H<1hW<W>J zT+e9$tXFQ6xhm-|GPNzb5@$*VD=0Tk)_w-JlLlC^5RaJSXZ8j+6bfO?^XmdSZ~KHI z2{Ji7)^~FO@Re5D1ImdWGfsIU<5v&JuPJn`P><0?^oJ?EXkanEIBq<gt7qPf9Favb z@C&_gPi#mX`q24wyZXV;1WvW5tO)Z5oBGCFXN@pCGpA7w1#D&>c0)6~rMim9V`N@` zOJ|j(UJzdKFW^?cjB9m<?$RF?V3hbi>fcyDdW~waN#xWwfX{!&kxxJA@21FPj^Bp9 z{J6I4rgCoRed>do%>9am8ydj}sJ^Bzh+kicQbSu?-ta3lzWd7L7?5saHf2-BQ~2uB z6VGX@jAP625?bHx8YNfQSNzyrbHPVE<!@h9#;kko6m3cpE@Ki~yn6L=<`Q%l1bTw1 zuTP8RCyF81O-$vPwX@?G1?6{ai~#qBuY_24%OR}g9sjxc2gbU{K{@_8c`B7}3TXq@ z+@~j=KYt#Y3l~L&7lzz9@rtvwg|{qU59Q(%Tl!uUZEBq`-WT|F7_ajLm2KeXpiW;E zj#K!#=_TwQOG}<fw9$B$r&|1cMap~++SEf@;@B5HsVU9ajK;J9V}Eefr}=O?If(0_ z-wOYNr*9w~`(*v?1$50EKhk>5FBADh)D7>y(T|0*zwCeM2t&;I&2RtQFTH^DS0;U> zHb%56zmfe9cr5+DWAJ#(WQW0VF*?`o{n69=Xvr^*eIb9;jsISn{)833tYvq&VFtSd z+gYQ%Qfd#TG3$c`Z`Yn{29Z-oZV`<06vCm=O0Um!|H}Hx5LpNqj&g(Mtv6h>`n8#S z&yPV(bchUwHrtfjg~e;&9sK#;o&kos^#LKBpaRQcUHDAg*8Arq$G`Zt8MF*2fzd8Z zKIIlsLnrp4Ex1%~GC*xmv~Fc+FP)k%e(*pFj&h(>U{BES7Tz|4W4|k0SQiZWsW5KH z1X$S{%xi-niY^U_<Ot`UhL^IZ&n=K#<oj~J@~#acM(AK->Exd_>T+nSW#NWVIi&8y z70I?~m8mnhoj_fRgSS~)w3C1IWhcx|iif==D}@oj#TdXj#0$T`2t`U0r?I=W@-Z#V z&9^R%a|)YMJ@BM)Hv{L;k2+;)pHQpr$mXKH<;t_X?Bgw8`Q5M64r*mT)Gve`&1jQG z7c15a7x<-ZC29HVN0!&F6w|-?DLVaNo<itmh?@Xi%x7VZE^nEX#oa}%<6>>8Oi-5@ zCFSO<99(IGex*QJZMRO1n)+$m_A@Xd4`t<D9II^cT)WT~MrJnJ|04o;`5W|%Z|X9Z zwqKA-*`D}ps&`}5-*WS$zE}CAlXxOc>A@$9qm_{=D*2;Po8TLfhg$j8e&T9}YG8dn z0rKY~y}6`*eaAA^2)z9AiD(#yQDC!CD?jDo2##^X_((1-e<IR8fK_Dh=Thz4-JDgf zyqt}=8rdKPh4ycBQ}gzfu%|z???MN;;#csKS8se=e9otLiigTMpcZ@Rb=pN-<f#g^ zj~sJNTl(H^%~-3R*7?_dGxoVC)P6O^E?R-6qBO)wzayjZ-m*3_*&A!S{bbH-kKl<T zK6!!`!sP}KnY4oVo-!7v40vENj=~Q}l~P81Zw_ssENL{G6dkE|GbVB36}}(|PWg0_ zT(p%tPluq7*Cz3AZ~JoO2q=78!Y^O1;zr0PHs8GQmmGX#-5Wn_5_#0DUmbYD4Oqsp zGSF5#IzH;l8w>8>;W(<@YBOmGfBH>t28D_2@bl(uRo{NquU40Z6~;q)>gLzkUNLt3 z`PJRjX+KCC+c*x#9?>bCrHzogMyaYHEN2-M*N*BRb<*0ak$Y=&OKlQV^0VKl<KMB^ z7zqXWQyJ*c<WhS4*~jVUk#}iocT>hJxw!Ec$Bs6#F7`d+RVXUg&@zi1<h6X{sz4Cb z7fYEeY5Umz<Y3%K9$-TYT;-6rKA$I{q#a>68NU6){@tLTHst_k^%Pg%$wmg77JYKI zvCBCoz`$!>`5Oa$LZrITEG~bhZq6zo^qr&BQ<-eseo+@xwRXR97<gcJ(?zy-+;F-f z;(JD1nKmY4Cy`0Y;R~g|##g|f%?-c&+>FrAP4b8e^#3Mxh(FMv{bJk5<k;*SQJabD zSgZXLcZts?Y3|oRltaF`35HH?x8;!y9KSB<yh4of2`~Cuei_Gf(2jx3<q%!}sGU1@ z6DOrh|L-`mP8#Zw4=5=w&hfPrWx#g(^%ea!`jVT3H>Gbbyd#_R)99~i@k?f0FZ}wA zxfGPiHsv$-ElO|qS7~UoKE4g`%G_AxJllS~(hplskq&wp+jOVbd2%SS79cPpkdz~` zV`~$nt@J<sEl*`$pEjn;SN(4PKX-T2v)i)n1%1z#HRsw#dbCaK89#xa!k!^P0!X6S z;t3`mL|zQZ2`>o;350k+njEzu9TOY!0i;RWfOasUeP|ft*=x-=|G)oL*SN>?tU34E zX9oyt)$@!|qpGg=y6UPLHO7740cv~td;36tc9SQ5%rBX1^t3^`adr6CpYZJZ1$Q<X z_z0d???3!Z?GGva;5J77*q{0{|LlMGyMO)vijn`_b=D^a*CBc%o&DMNC&1rRIJ7|3 zVGj7x{aoGmQ2au382y4YQ|JxmlIvD?;m^RB;`g;*NWb{vkTJ-bK1Wu=whvSXb1&6r zAVSkOGm)o!-Jl)>5P&X5Td&SF?0YKVd&MQfa69Bc9K?AY@X%40K`vl>8YVah2(Poq zc_lD}yy?O(T6m2)(LLYgm%xzrmv;UIl+qr04Vs~0GVzfd!NCL~I1-?f@L7bt`u0pX zf#n0FZ=?VKKmbWZK~ztrP#JS-R11dsJ=EpNk*7zqx=CQhBd@G_1%FcVUgi`q{2P4F z^+K_4B?lgPOoUM;2ekZk(U!K<^?(Q#pDscYRP|@+kGQV+X#p#YcJh-W`8}AXT|Fsa zN%(jb`qDQ5vCuTbAFyeMbIOl~l9?0W9HkD9*qlys-M`8AJYWZ=ng9%BZ8ee(ft-&p zXhyOWEkxkvz{h1$Ma-!-RB7VLADpJrPIc<F^_Z5N50St~)dsCzx2mVQg}Tb3^)cZ- zY{^Gr&ov?_eH_}Vx_HB9#li(CBJFjGQwewM;zmYYC)`ZBi$9>pW-I^c|1MB4E#os0 z7vZ3%e&q(+MT0Tw8ji!F$|Qe|F5to(UVvO3@{uWi)i)Q?=1b{%lXvtUKKQck=p3q1 z$&EyEbvbZ!1)e%!+v0ll12c`y^$WkKxZHy)I}khN1fG`l&D7CRTo5;G0L+aB6kMwp zTl5%vpttsNy)w|KZNYRcDO)tdm*nCToNx1VNbIwalu9%8&A|qF7pdB7|Kwe0;WaEY zw5{!-XY;rl&54)!R{9=j+Te*WNcE<tI;BiUx{}FFl|Gi>u#FGVg6%>SjU%JF$`?31 zQ(c*9T3du>`=tIc@fnYak8FbPr1CC2p72SOJf|K7i=^Sx8;5o*PUFut1py@Z2sEEU zH%)Tcxky_Qo@{9`x;ItoP^oUYy8j_c=F$!fxf<g#uG<%fU&noHGkT6Epabvep@Jlv zLT4|NcW#S*FEjtlN4~=Fe6*-?Ms7Jv)s)9@U!4s;dTBGZX5QC7ae*9P#V6mV??0F; zQ-1Hpvj&^qV`sE&K)lQi;|NN35;~-4b@;bL6#UX&sK8EtZJyRN8xOwhnD3LPei*j( zwHWfFIX8f{9N)&Xw82L9$Xr5!S^l-vDXW|KPL$v}%;E8wnLkEG(l#Lv$K1O)pXmG$ zSakrKpRti5E$KIM=lYC?02-vp0*iMwp-nYHDc6TCnmO)cuI=RoN_%YJkCR1zeK~4{ zcWl|dLKDgU%?5a5FxZIEjf&E79YDSj<FkF^ATe`k&m<_xBWvqMN0+G6<-4hjr>R0j z3UdJetW5`V?K^^=w!+yIna#O-Ki0PK%QtU)A4E0-@Mo81(XmsZado7t;JH3|v`gC@ z{OqH()WSvyT{PcEMAo63V33WG%te7~q)gs;;}_YyZIzqaem|a#k=Rb(sgqX@@`bio z{JdZ3udy=mo&5DJM8eH~FlVk1YkNe0{Q|W=R?r_Uc$KkZgCgHK@i7k*vuH+BSwFY0 z!w3#ziRtZ2MFOPks@{li_)p9le`ss!@<2RrV=}sR6Bd3Bo1r$D$m9#2>qmj{*22rY zWwxGP+O;7&hFP(RFmiaqBMqh6#++>4+B}eO>-WWEjubD7*A{5(H=849*eH#VX9H<I zX3~uYwn{zRi8W-Q8ym$UG1S<i9uvakTbS9f8%c&IzWRRUCgacwd*dqeE*QStxg7vm zWw9%nt9E?N{$4k<0!zlO2addGkXN6@(i!W!Np|L}5Sb0Rv1_OYKAL>`$^ZGM{>p#% z&q(z{N<X-b5ys6R_>By>|1B=T{@+QQPDe`3;|v{yDc_yB0JqcP+^T+Gm(OW`iQbd? zI_gt4->ot*9x!)&PQ3%ASB*NYtZi;+F;z+`${-dwVDQ#L1AoIR%A-7TJj#PR=UJE? zS}T_UwLlm;5Q&_#FhFYrsb0O*PQIx>)C={buFW?Xq{_@>d{ebTYaC8CJOrOU&B(QK zHwY4-UcY(!lds;+4Z=G=Png$7O=2(dMOh}J{0vQw{A|~^-~8lbUl&W@EoqbE<Mm0r z1cnC78hx1Klj*Smw?84OS|G|q;>$h7$V^8KLY=fi0|U14F@in~V~LbKMfsGU3AR`f z_!`uFUNg-!^#zV@2KOm5+c~b?<KXzUlzr`a7Yl)^@vs&_{k$C&=xI^hn{e0Qa&)m| zA}m0FGbdz5XrQFO$+|oFxt>YuctqgKt5kB5lQDU3in9130>;%}`xH~J1#dM;19-v1 z(J~8i04dFX<sC{O97)B;7rPYZKb>I`iM(0#1@T&B^v2KPu1|@FMoFAmzjg*sJ`0BA z?0GG$yJ(npw8+6<s%uKUPTqy%p;OzS#~x{G%0;b7zR(~#X{tkOoI*do<%c3}m}wZe z_H*QR^Q#Z}QvJz|Pl*LCKt^)=0h6RiA2`l2@?LEf;^>}h_1)A6T<K<<n0Q^+K41`m zC+m4mwPWB+(%`|E;ES8`^fLYzdT2&|i^^lSp%kiY7YsLF=v?xqs7cq^(5wNKiyvAl ziaYq|O`9v})E`{qTmR8{p4Lz9mvm}JT@}NMf7Kwg-Egw!z|4(ozw_waY>>M&qo~DN z$5nDBqlb+YH$^Km8&oVODzS<9LME~$mY`uFi7)*E)`La^H~o!C+fEK1AMwr;!HpZn z_R{YrMPk6a#G`llS;wFMf7x&jzpt~1XQo*cT4*Jqm7t}M$<$4lR!^NcINuvV{&}ke znhh6nNK215u8+Cl6-RK<=Wf79M$Y0Ny`uLtHj1xhQES|3Yaix9xeHh9$`axr6Jc;q zEaj&Kn)v@}9Ik%EW-(e(^%uDLJ2doD4lMWz7&h5s7r|t!FCDpdJXAEe0f5UFXN-)0 zv9;r5&HcnWPpnWmPa;)nfQMK8DKK%NLoW^C;cpXLdB6~>owl+{f5e`dXWCZ;k9|J% zmygEQ@6Dy}zfJvYPVoD0;xpFjQ8M7hyZ+FBXCop_V#wT7V8>35^VU&p==)CaWV_l} zoneuDZEItYWyq+Tj92jN$FIkiviJ{TZ^puN{otE#QWqaozi=}zgojC(0dry@m$fK8 zN?)5qMp<aII5Ky9rEbTTGTN1$4U@<?mo%8ZXuqaXTygIWz}!oS^$B%uwup#Q>72NN z?j*Xixnun}c1-!h>Cce@zHtw0{FeI<YjUMFdh|OnB3$46NdLaJj)Ih9`W1~FCy?{G zQp@~Gj=pV>H*ni;f!XmM0^u+;Mvt+BYrJi)@JF>|uYGc|R$}wE26i^cve-%6P>g@& zqCQ(?#DWmZH5##Q<i$5vmptUdOFR1JQrGx6*gbS}nvY$j99y7~)7U0F^qa9{7pcA$ z{jJejb$HcIkzwNIhius720m|I{q*af#vkWPkI4~IwY`|8e&0%Y_tkvVf!}r`HuU)k z-<RlWqoH5UYGWYG^&^Ao1DgeJzkZva$Mvy^Sue-B{pbv?`p)|E&C7f=rcxjgUCA$x zaNS%;+ia3gpQ78J>NW4N*YWxGL*$~5&A7(MTmPB=_F)3~2R?n7E*qWF$C>lCe->uw zqiXJ_+sem!vBR-9za=+&k^7rm&)9!#bXaTF<{`({WbpAFKYPo+Jbd`}g9i}WKDK_w zj<@2{XW7IdD_H)u^F2EHneWUsUwGK7Z{-D#{lVc)M*UKO=2U&q?|lrvqc1%I|1R-& zKmLM`Bo=-ZI3HgnZ+-1N5EeDbAdRgz9!K)f<Rk2z9{AG*`hlH(kQ*a^<Ujk<|L}kM zdw=71W9vWoIeRzI+!{Dc2if-ct?ggwB?p`F^<_4kD6MzVT7HIc*J(+P|K6D#k6xy2 zTIeH7>I$`>c&j<(W+ub(&sjyv->*ms_0$1enii$OjE+k`#U%7{nEgt-l|7ZOrbkr@ zm2hfKL$kZl(yFdcqry)UzNM%BF2bR=Pp-h2wtQ~+<?95oH(A6dP`%D;yWKQN{nbG> zMPAM~g?rVpUpNLkG`k~wg3|Dg_JLX4E}A+aTc}Uq$Gd@rOgTp0$WP!JZ)Hy%IUnTG zAc&JYv_kjO`^W&#f9xu-QXELQJZ#ZormHUKLa;;^ZlJp$N?`OEXJ0fcA#KrGo(YuZ zC6l~2N&4lnp<~zG{*lGDp9!lhCKnS+CnofBASSgq*Uog5niqfNO65T*z&U|)Tu}6V z2DgFx%8Rj>aLcU}=ZdYSw*81^TlGuKl?kvM-OSd9Q>+kp4=i35H31IjOh5#43j#%x zlRwC0HX%yOv+ac)m|;RT<s(ztCHVRU?MYyg@X%O>FsHs?sh7`np*x}7p8{%xJ~Bm* zFe&_yb}oSSS@29N{T;<Si;W{uC*s-$?=v~ybskBGY@#3EBfrHE?j~vFS#Tct+5$6v zS>HT)#S2z#pdVJ3wZq7{^jK)^2m;6IB1b-aAK6@o;{KO@3+c-8)Wl{zf~kvlTyK4Z zii^~K7L&6eN*;gc!c2Q%w4F^63qfP*v{}Gf*sa}d3b0*m5t(OU6CU9?A7L4v1FsMD znzr3Uz4{~d(nS|wP{cC6-GybwecRLKX=)d`(dUydU<}O1?5w^|o?C_VeQtiU0H;^& z(>g7ofoAF%acqZKS|TG|cG14FxFLnNvZ{x>X%}d6AD8J7`s}(m;e_+>Acnb*9w8N| z>u+feb@I`b&kwDdu~s~`2u-rNq2ucv_p#F~=(P?0U0$`7i*4FIvd&^z{7kw00Om*< z*{2_R<B~d3PikxVn;+0-N5?Gq$Ct$E8Hab=Lm{MQ`X8CeyVT{q2BSW*T{6-kb#BBg zykEqxb?@|D<|>;Ou?M;0cJbv{C_bzm-n&$$8R61>l@8(W0T_LPlglJNKnifmd}aCo zou#L(kcka8e?5Wzl-K+DYW{OmmH8?#-53dP_Q2pn?vDGb8t|gP2RG_x-i%lOB;TY^ z-jyY%k*R_Zran@^j`@7_QS0%#!jQSC_~$wmyr6T%C|3FB=`oo?B}cPTJfu=l4k1&0 zQ=S{bfd!ST;<}nN^u#DW-D-+t+=AWs#SuIR==b(SF!7>(gH!rGmLKYDx)V|84Suw# zt!LxOdSHY<vfxW&G%LgA6Ax_2;ZHvEnFE}^G?Y~B$b71f84Ho}bZ78V-<TCXwIzN5 zFA|kY3%%%IO*I|b_SPl7dDt}LkdGgqr`w6gL(7J-8(y}VO_EMqVnF=Im?#{4N9X?d zeEb~CXgw<U5?7WDGTE%JYJ;}(PdDlrL-`2WK73+~JTEKxAriV7Z}90eyoZ50ZEmFd zv5K<^V#Dxd#v@ui0zPppvPIUfUgYC%k;!-<pAC}Tz*K(p;SnQz{f%;L7|v|ZkD|Zw z&I#a*HL3Fl+#E%BN}5f1HY6Sy51#=V{NU)@+O}w+gKpr_M|1g1{CmuQVCp9aW@E4% zzv5}jA>C=YuDorTakBGv*T6QsB8EA6;tP6<BQM49H-?A4n%b=X#-F|IX)|cv8ge~& z{3XB4BSwXQI9uC9=C$uN#sbL~Y;=0qWV4Vy+ZSC=gl~0g`^3Pm6T(lwA-?+7wnt8O zimt!=vp@IO|6!_raOnrRF~Z8}yuY0e`Ah#YEv|z(#gi1jimN`UQULpXsd)VI8O_h~ z`95M#+E>QsGN^xEcSB5*){*@bit!BRUJOa9qD+sf-IdafuFK-gpkBROcSJQ@uXJ64 zPjEaiPfa>Ot)Kzu+a1^dP9=K1UZPKtr#5hd50U&=b@kCkmBMJkCjsYGgU#EYyiIU1 z+3k}_17Evf<x8brCGhk{BZ0*N(5n&xrhsH&Ft2pe@#vD^Ct&qy5`HJuKUO$09yv8r zi#>gGrITO+)CO#k6R!Bw8=#{}Ni4n8nTWN=U?>hvgi{2DMuT7tp(6j8pgsMwG4k=X ziGAd<5YTQC?9EsEZx%hT@)L(XuP6YMQIMtk9ycOX!?^q@K#m6GyYd6#Tp6ot1#Zn% zhg4H&>_u(5rQopPZiH2VD#Qj9tKx;Jaqy@d)5cT;R6DvHj8s%6E%~RnMN4@H2haA^ zhrB8t`==*Lx6-sdwlqVYMOqrmWA(&~O?DwP*r4tSp=0B4==Hrh*W@PuJq5C3O75uM za)~;DFW-o$qKjI(MaL)fY8)_uI&GyFy_&<(cKDZ0#?<;rCu?{IuHz@TChT6Xznf@t zli9_1ndMXlCC-Gz95pHvpAUee6F3>>fLM_937f8e4!jzDnO+J%fQ7}Z|5MJnWw168 z2L=QGX*=i2l#&{$b`9AsF0#PvMq_ei_O?Fm4O%upx?oQI*oGZl4~^Eb*=a|+^1HaW zol82nOwOkD$=KZD^4(dGSrmy&_2EO4PP2HMnARKF@TVId=#i=a!Epm-LDU;qm1kXz zriB}v*SS{i=1Js7gWkY5t&U(U&?|FgpPLCX?Lv|r`h+d{%I+yFnr`dp>ZZGX6CU_g z|Fn$_)lGdD_OS_3#;zj~oB^70<;~^r8{cJMbA?TYT-KK5m2%~ery0wQ#US#J$M!MG zy+KeHy~(!p+128H+bdrPpc_WRt6Wh@8i4Z9XP^4YU+Tl(0@#zmUFd(6x$a~7W^bPH z+=Prd!;^M>QMuAQH;8M$Kt<Ndn{hTWTNIBD@IK~=BU#N~Gp?r((ARfg=gBkw_$r5a z^+h)L;}zLVGm_>e#En~%evJ;4gCCWW_(Mms!bxclto9fE_zhTf)9eAl%WQglsNd#B z(v9G#a$rih*HGXUH8grN5gCSeThn&(0J6{cR&w?I*Up^LEjC1bWobiB`nO~TYpYM4 zsbc#23B5vvW`r4eMs5~VewqG{k=q}K>!CaHER*8q#EM$hchT{h(3JH@d?9f9O&_VD zNa553*$sL|rIs^};unEmpYv8vZ&r&J1bKi5{@CvL&%;OqSLt$zADN6Ph+}W#DYSAZ zgPp%zx+-44L%TI#gUhadVFT`ae6tzBfB7vQg$=$3XCC<UBbklQXzsWi{f2LN1dYGX zjWAn<Pb$T&d4Oi^rhUfD$P*Tk1q|u?;0hsQJULyOS~cU}n>bBH0IF}?Fnc<cO87~1 zeE;5e;|*WcuD{LCWLvv_n~!$C&G(hO#fN>8Z+~rHU4AVVg~yw~SnK}Y`3ZLV)lbSX zB=V<yJ|Yyp{^B5DCO&Y@W8>7}+4vv^lfCNp)HZly!x``9FL308=X$gSF5aHGJbe@k z7N%?>pE+QBXJoNyzNtJy&$?f_VwrJtY}>IIVt0LaUeHth*!d{X{`96dU+5RWrateE z)c(^S{K#9M`?lNk?aX##huR~uuoro@Z{UcX`fltyF{HMNFUV`7*nNEsF5`|*%$r0r z2Kb^me0)-W51rTwer(2m-u8O?HvHOtY#m-`EH7g`@%(SI-w!eUU^hno$j|=tU;ZEe z`~UX8iP7KwGKSZ|&(qd%DF4zr(zZ?QoPU|Rg;_^ln)2s-hU$0EOXJ?6ZfOcQzjA_F zTNpH`Z2pv@d+1}5BlmD^U2m|T!Y`ddh3-HPZ87J|5)aH!dqCZ7^(Ew$4{j&J6^UXE zbm-lnQY4p}ZpgG0h*Q5(3Lti3-@E{8K$O4D#FZc-0M9P}?5qk1(kyJVaPONM3Bm}6 zuYLlvL9G22ne?H6O@_+1q9vzq@#g9@YiMKnmA<Q`V*(X$EnexIRPY2bAIo{9;SCR` zLLRbs_9n2k2Z#Kji<VQuWM&7Lkb<wFG7N{ILEneY8-&@RdckoFmAOv2ZJjJF43BI> z_V7CxLDdevHFEzgAB1PwG=U!)7Nwg;7v*D{u}UG)l?t=<^i>yq=F9zpnJ(`~Uyto; zlfZ0Ww7*RzCgGDKjS`fdoO|<fXpA58Q9d@l8m75!7gUDP0)c|G?K%yEONPbO-p$3E zy)HR5t`2E0x8(Y8cpclP-2Or<?QL7R)uD6JwylU=glG$VX@u4kM@MzLuuu=a@*a3? zJ7J^IMbDAp&UcIw0xLLTEv)af;$i#HYCk1MchN$cl8p^M<}ypH>9^85u)rRhyRaX8 zhAw{Ur;U-uhioKdykt?+8+T*J;v;a$y4dLrv4XUMkyGL1SJ4d@+RHz*(Xt$MW3xDi z+C{Gm>k>&H!#PL$Hx8cASKp1n&%%c=lc2HFj`3ZrSzL)Jq(RT(?Zbz>jva*RcH)F~ z@zBls`l3yhF5L1o-<Pzq(cXySs)s)IDLxyFU%H`WyN7?I$;NK#jk~2;zl&Ha_h_NN z=88NH`fOV{1_7OJ2Im_7Y_x1&4~_D(umtaKoTd!nte>r}oN5-(u{$B6Lq*B;(AOWs zV{N=T<gO_`OqLLan$yINk)=8y_Kfe^5+`<BSvvmoJ>4rrEpg0X%%<#Ujb1oFWuKFD z;_Jvbecu?u9+CCs*`V>Um3{5pO_=_nKV4Cpk6p0e@R=vkDVsY5-9WA0*p3b`r=Q5F zblvP6@xY2J;7N}Xo^hU(V~fZ?TCENFXRZTdEPl#rdGSf+NqcW%iv$Pk*l>I(WfTb{ zMUH-1Hai)wQ+qqBK?jQbaR9P8<O%&@SG=KIE*<~y?+Gn7^Rc2u05P<CQQNnCuRqsA z4=%gOhECT$(e=q1C%ilM>qBfBZ1yM|*!if2HI)NxF>9y~Y4Bu$6Tt#8ejVUpO`%eT z2U9s|#Ja|S`qNT+12pGS&F(YV`GP()zP;`C;^p~8k?`-FP2aMCB`(kl-1w|AS^4kE z4*t=1u1|S|7(=$S_5m+_$U_vHG^Jr9(HN~?8iQa4j_$^PR;Gc?+bQ{@hYjw&Mc^iz zZwLO`AV|5J)~63gu=u3d79V-xS4e_EA9X&~3C4<b<-{j5RyQMB7aM}*n{cJd8NAwn zeY7;Juu-fSy5#6DQl(6s%3w2sEIIT`=lsaBw&|L{gaqN#*SB)r7@{uxM~?Buam6rS z9;dID2YLBH-<FBZT#J$P0aIRqX&;Ba4OFrXk2KJ;+4$`0zOnh?W3vfnV+1W9Q?fx_ z9*6$Ij!%va($v_)W-Eib+BUr5h}mPKvAHqWjj>3ke&@x-2{y5-hd31yIYxJzETtJ4 zCGxR{d}7^v4DRjQpN59{15ElYzIxXs{J;5+e*G{0<r4V;o_??!BgfYNYw|zzeRk() z(&pc}j+>8r7wk9;cYmZi?$$o9yO&*$vo5r;`IOJ2<#BbV@u;1v&(VAi^Zn&Bs15F# zW%JKtJ_1eJ!5dM%_%3`Y2WInuPdRl7f8Rw|N+ZbAc7y$C&G(lM!o{z$KF}(c;>vSG zQZJBcux9B(I|0y+c!QPTkU;tFT|WDq-Eo2m(vpDHFGMZx4NMm56JR#T*jSPDVKD<= z|A>tBy(4>-KD1m9O!)W<tfL>7>D(Dg{zsHSMXv|@nbIbK85ZM%%QK*D*hv(07j?c{ zCDZQuW2MX_)?gT<)+3&Sj(y7}pQW7d6H#9MC!mi^BU_00$0+}gI<!VcQY592)`69m ze`}t#4R}!yzKFoR3Z+%ZE;P_jUsw<XWbH$xN80f^eTGsO(xKEj6JQYf1X{m-_DCP( zsgB77oSXgfNIr|~nQ+FQ;dks|W9lf`{Gr7%wP3_t`JO<IENbs~y>SZPRk)}}=28gn zPKOLaj+Hfy*TN4??eZMEN!AJ{^v|(6_0{zQu;RkqiBwZ5#*Z%j@wd<kEsJPA*3Z($ z2ga6156Jla!h|}%nZ)irI@!+xq_Up&>WY8$j4k;KwMu3Buji|75G(s~X`6l^o_z2S zAx9TEbgEv)OBPG?4M0>({4j3FtY+{@5cJR@vjy+ir`omSa!R3Ck-gACa5F{@^_z}r z-S9=1Jl)u|I85xK%k~d@OQXk92)&Y<1>xZ9r=g?VI5L>UB?PJZv*^)V!ebYq=r@+6 z4S(gYzM6K6NM-OMsc`CQ`PDyyhwmm|%4f{oH)^(x?2Z}FbaUW22e_31Ukg8n>(#p! zB`09^O@H-QI{b97%JUIK*YI-c!EDo$D9qR*_a41@F#m<N<4U=lzC}iKpK{y7o8L-s zX48X(!ZUN5`OVD_`;le&6QJ<=&CMSB9X=&if}w#<v34w&fTBBI)q+e*7i?1H7#*sA zs@(Xvk=v)e*T<XqOLX81$nm*%dEg**(cQ)QEYQdQ+jLHcUrUkUR%DW~<ASFB_>h{y z#xB{R3R@PH__Tu`ns?Km`Hr#e3w;14Q9bzQMmmgoqv&H6bUFQ38zC8)Vy@wl{IY-T z3ZNjR42s+x|M*81iD|04Lg<Y=1KYVV)hi>AO>mg~Ae9IDnDCkQVR-Z}<u+A+dOWo! zDtORwVsdVht8cN=1}E1&Mu*zc*zC>S!#-t%prp@=Hnbc24;_?6j>1=O2uW~~@T=6# z2W-l&VFSu>;9c`|sXp7WA?{|=i5)`6_~~18aOxz}r#f-I#QWJ?g?Df^T{5*|>`bT1 z5!gyrKBMp2aO}+=XRL^Ce5K<jbw``FkL-MK#<elyt&p$2if85{F^%JVCwO3IT^qT# zZiP*o`LN%u6i4a9z|bTU^}A_Of5;|C>fJQH&UZbLi=G?9Q)n4}ZOAWZig(|%$#v>x z&dbl|=KK6yOE$;fC&v38j(34)bMo3ikfYZ(ZEC~VEbVCX!LASR3XDWo?oNIOnD$M` zmWEi;cw+50-<R?xza(Qb0lc|Jedn6WF&hxtXTzavrY{0#43$sk&f&T9Mb|3iiCy)F z?}71_9^d-;&wt){N8TMv<!P=tZ*XF=eC6Pz_I>aqvUVdzkEDN6EZowBH?hooJ20~u z=vTnl&6xDX!f$#Ed}xOL_|$9?DT8~RuN!#tm7hMIjYTjHHYE{Tym|fFz4;F|{h&8S zzWKdZfAY=O@BhPC{}GXXiLTJW(&ib?9psBzM>{ZExB231xp~M567xU7Lj4^U&F6Kk z$Z6ZQ{5iPK!QA10^=rY*V0lm&QAggb)m$s(;;6Ds&5NGXWrq?RtOZ<{EgxuxV!A60 zXG^-LGF$*IE`;Z}!GV@`Eo5EYhT0%rbyh3Vx$|jjkh;jsE-Jf!%mP<mzUaqg(3?f( z1cY3l-DSLHQb=G*(C90r2@+^%E1O*GVx*O+C+E-%_XIAoyvh;CPGTkoIKIS5fdAl& zwDM#_@En??CR0%J3d8cdbi~tS$S^=%wMdrW(Y;CKw3T8A?q^8R^yJ)nVizraN*j4z z<<&YjttK%WBi$T1`2=;gFgZakhhdWI%8^Pr9xKU#BF(_0ZU4~dHCpN+4`lQEsXhSV zSyF#F#<RA|NZ+Yffit#|6>nrxUV8fRI?g1N*=X9KH-R4hozT)gn<V3}XwUb2OusMI zs1fcM&gs#VYJQRxLz)1b@pGJjOzKDG61Z?{;I!=o-&U~aC?Fdvr%+l4+jZ@)eG~Z| z@qKAqF5KYY*~#?izMB<A(0=HmW1{VG=q^F@z&%ajR^GvL<Cga7l{)oJ7Y^KKdZxyr z3Z$cp&cILqY(MobBdrH6bk}xtc3s<9+#DGSeDQ5*)F4(DopeMe<0*AEMn(WKusfRs zFFs|X$>!*bEJP-yfv^F%?4&|9`e4)AYxy3zz>`?*!_>D>MhkcPGRW2Iv;i$$^|$_k zMP3UpPd<k?Ux3d?v(R%BZn1h`U0V>&CWe?NhLMH3vuN~0PhS`>jk~e!ZZ-oZ0~~0* zxe+@PZn`N~VkFkrllvlCIMV9T0;v!=IbAHK>GIKBk*?QXev~O>v*E2RN5@&J%MMJC z94qJ0S9T;m9vjww=(4!s-@o<|K56lvV{R%yPFf!9>YwkqDPaS1{KS-bYHV(rU$*ed zb7FS-V06NJ@GrWNAlirE!|y3JJ{kMai$GHH`A(`+J~n3e`mqb-54;<#Zj2?L`P6qa zq@U@nzdL@CW0=HV^CiM9o)a6kwe8zNpFP&6d=#R_J3!<P#qySGoAEn0AeFP`z+?P& zM457JmN9Eyo*THiu9D$F-Hurrm=EwU4VEt*!K}Uqiwu>WEO~lgKeK6+FEY+en^fzf zQCRuJk60+z7eob^o1w8EKRC$ExODrwRHv!39lBF9@(sxF#LtbMu{$=vG-KaVd{`a2 z7*wFtYfr|N*db|qcI*%zjoyB?efn#7rFO(Xv9umEJ8m-2>Cm>cm)qv}<>)-UWR$h% zXsilEzbo#-SwNJgk0uufa?2DrOfG*Oj;S7<f)szs`m8sLV>|kgwKuEz$g#8=2tyAq zH{kNvwf&wvbszJkoZg~pjI1*Fuf8b7j-5xxkLL}m-DKtuXa*(xUmssGj;20sF}`u= zV{FD^S>)qHe)?Dc>>GXH-Ppg*4YXWr-c4;Wj2XZ<+Am^!_~<{LUm4Q2<H&kZ>@nV6 zML&7xS%9H!?f52}CupJLBR^zO4wExRW{eL?^oSjDB1+{zv-~1o`@p6{@Eu?)D<3|7 z+;Nxd%daB`7-{v@@5W(uk39RGSzYUvPI$eD9Y6Wvadw?e{rB0h>c&#;EAX)qA?GK{ zqm07Nxc41Ma&*mqWCGW|j_mC#>w(zzW#9JEAJzn8>w(w*j`3H%0k50QxyD<^`I&Th zVv)_YiL*1;f?t~Y+4tu7LUnXwiX+d^QjShh^W~om(hoNMpf^VTli&D_f03W={l~HX zzyEzbz?r4zdF$d3{r-XR|H3?R)M9@5w1a;0`sJauSor>aXfEEr{Couyz>dTgP^}&t z87SvJ?59l&6V3qpyi}zYn6a^oxh~Fya#^Va1Jb<N1@rs3D4S9ta^;q((Wkhr-CL(E z7hnf#&Ib9^XiRGYmYOc;6NCf|PdqwdYs(>A^!rEBE@;9NP%<SAT*|0xYrtn#L8`0{ zA6#?UfQ~Q0WG1d$2D;atTD{IwD}f$gG+xZtrlXKQ6GG1LygFZ6$wQp}0<2^qM5vLI zT)9sB^vd9svz5e2U8q7kG{Lh28+fI(lSpi%?C8e>63o@_D|!NIZA_$U7J_6!ORliF z;z?6gi3aW&7~Qsi3ro2YIvS-&=V?1c8N3=N*PwW1gQxt!!GD0-TJ)ZP4PeYa)j6ZD zPy!=g?eF7BZAK+NV<A=Lp9%q0YOjoOTG~2!VcMBWVAH=oK9B}CL&Z+Mw7?9`)QxDz zt{S)R(r4g|;l~ZiP-z|5(jOSb`oYSnKeY3Mg<BjnPhG2WQtkrfz_c$9t?gU>#!iI| z>C$*c3p$;8kYNT{ePjI<nH&3o9@TP9wq#dQcB>>e{*UZ{z$IVnp+CMKe~;c>3^pdr z(;Ivx`5Xrm-Z@5Bi)V|<smBQa@|zPXrG@`xH*i_xly+KuhJN?}9a=L6#x9LPu@9c) z*3V@_=G7|ocxb?p#Aud(s)zpIizSZg5cu8znp?t@-?tsVi_XZ=epMG@UF@-Gu7?g@ zy@y0`<U6!&RCqeo8;`YfsSi#ll;`~|0GiOJf5EBV$nKL&eA&LZ`f%c9<8s!F;C!c4 zLu*KNUWh{MP&1KHSzC3OJgxn2+p)#8Zy$}m<3F(#J4KE$efW`CL0*2*EyTdsV9G$7 z_FPF1`!#yBO`VVIm=|_&?WWdzX3;(IdlubnS0#pA>6LCy>+#b*dR5M}#G;ka7n1jT zsn{SO`w<RswPj%WL%+WYZ0dW{mm3zj1-k^s8&u|}(HQr<<{rBIrsJ`Y0my$lBBJj+ zr|HoTtc1?!cIAhb7MpD9;h3xD?FN0++F;Xb+v5wnxuL%bBM+BzeaTmQKo9=;L$U4^ zx#`zFt}To|(f~IubJ$$;dCgSziEPGs)eVeFe!$N=TzN*|r=M_3I;V)$Bp<sRUC0|6 z)w|d982hWM?+xmZI@e31{>rbxl82>hhhvurwlKvheuT<DU9YuK?Gx1G{Zjkrflg(p z>_^7XW9QnBysoXw+QXyU5%J18=hB-kN=vRH$5nUAr3rNa`6rMYU`y@KG(5&<s^Ly+ zZ{R(+@&%=1!vLqf<J?*)#m2wX)mP}PU0XI^{Iq#?4Z4x>&UM~Y?u~e2SD6Gh1P(WH zh>63COn8mI&BhhJ)6Y}(k%`tF{_Tg~`@NsMvjG!Kn`!+>Tdr+J^bLlPef=(PJY-Yg ztK@JRizAaa50-C*s(5sXKSWL<vEk&oYMGd^Szun~ExVW5FuLZE)U$=yWYc#1eEVYX z8n=$`?i&znSzRI%>lm}OZ+I)0AD-tRMscE}4P<H8JuRG5b<GArA4&w)#>mb;<nLN1 zyqA|)XCud^h__($&Gw%S5gS5aFFA6JUh&Z(FL_3!Dn9XZK2nDk8Pt&tESz~D!OyI{ z$&>c@q0MBlyScg>BluzBOJMQ$OE!F?^eWTYG_D*oe?$U?4PN>-3607@eibiX{Nq3V z7yib-aQQ<`Kj@8-8vWC!KM^nZKhitvLRVi*r(eZ(pwjdD*6Gsr>I|MQ!qt(qemQZ_ zrL|D&Xj_&yjNYVPxi-JUs#_ZJUpWQ!2|k@Ka@R%44;w)w#i~TJ$T6)w?`d@&*;{&$ zJ$6OpVZMRcih>-t$#OpB<?)Mi^debsj<~r<P26IoS$)uH-4RAV2*{NsbtY_S?acrm z^YenQUw`Z_ug?j-fB(}2(7X<ppSdcnF$(sbShTT)fKhwr8au%r1NBuer!I#Ct^g#& z<}bV>&wO+K1RqL`jG06-QS418qWudUxy_R56PZm4UMKIj>a#`vY9i`UFf<pR0&`UF zT)wuFuwcty17BoL^ekR??GHtI3bb~}(e%bhl^qtPi)JV0;LzJK>{6dLN!?tvcsr$~ zFvU7h0}Wo+J(2>6Wd}Z4ed7t7HVr3#V72-#$cPu@z|P_$b|_7_lk`nP(9vb<%QBPx zr}lgAumTr4XCd=4_WY192Ym8W4|3>Snp|w2C=j4D9JnioN~hHGC%kr|FFkG2!E3+d zTDgmm+$e!qyzTerwAx-mP)F91McQKM)D<o~>+g7z=is?1>lfkO@U?YuoVuk^-kx%( zI!u;sZIIfnU!2uz$QT2GIQ$QZgA?4!gu=*&-=;1SEpGjR)07kF;bHM-5i*OoE_}nQ z8<ZJ8{KBzsNf<X%H!@vv(ji2*yb2jDtv~JP4-It0h9j%YUDi=!X+btKYPJyXO<!dg zIe?3I7DaAi=SinUvlc!La}G3JCZvSykt2G$u6;GvMq)t<NvkVap=<c~!6xtg%FJv) zAR5`U2dJFOOoei4@RTPw@=*TNCy4QjU2v)c;+VH1a(y=up^UrzevZ&7n`}CdbW`r< ztg|?jjCWtq*?u^D)z3{vB}!?0TDUB4x&){3fIU(@c2Gb4Ha1JcNvm!&i-=?QS=6pA z`5ZeBLT?D;ck{OA_~u2cLJ%c?WXVz0vrtx^&AZ5vej^uJge<=$a>=EA>@qR`D4F*A zNBNG~Z`h+Z#(ZMOKmK32;mg?fbh8WmJP~&T;hLP{(AQt*we#4)FQBxq<DVAzyP)5j zlJPe(O&YtqK6Ut;!;TKMN`zg#J)yVZk^vffM9=h3KZ3xgL&cEd17bpXyEb<d6lP?d zgibJ`pVV_e3U#VOdfIAp9>uOXTC0>qUO66Vv*AQ8bjgh0@CN$8EvMcD4YeT!k7{`W zZ2n2=I3<t2(Cj+nS>F0XX6;*^A!mb)>S0ye)C@VD+t86QH+}PQ6O6{^*|o8UuN~SY zRH-T%g{phc44;y7)1gC-v7?x~gxGS(E=K!e5Fh*&+?p^5=3t1usmA-_KP-#L_VeG$ zTuvU?xf#Ft13R{LZZdb%pc^Fdb@|LK)0b>R-o`C>G0m%dM8%sFZ*%kPxygH*bfHQ% zxWx}1*omFYHd?nmev|FAX#-c-lV5oHJ^fLiAHP7O8z5{FxW?<ipy{K)-X`Jy-s~_| zU%$(D>!pp36+N)K&Zr#5N!B%ulf5+?J!hR5UN5})6#URN-ryMj`?JCoHQ%?=u^&kB zoO~PW>&GZ0Mv&L0;nglyM3340ji03ah;h@;=<Ya1%eZpTyF3psc0s@PiF~<;9cE)> z@jG{>%|-?MAoSYL@6Nm`Zbb%f;bfCU?AtNPWAtA85U*!Rj9z}4@Z3!q^()`Jk)1vW z4f76C@7`rYCO$_$_26sc_@Y=Z8I#hM!Oj{XcC9z-H*qSG=4kxkmws)DXQpn_^zTvT zPn^mhZ1#iS82Mwr{%8Nm@BE$L`lsoEfA1IdLLDdo&Eqtj@p*c5@_}1`FTgL&1(QFo zTblR!t1dEhVB7}89qvwdX~PAxG@iqJU%764IkVDt?XWZk%z!xd0?HOCm(BuyCx1%! zvUOQqrC-GQNcCOWelcHyEd7B*!Q9r9fZ;Mn^=QtPDN;(KV^bOmn_$<?hy=8+GGTrF z)2{=cz~Cp!K4jO{E_)^dZ*mCmi6oscd<?~xXZ40ep7seurP_YX@~3&FCZ9Ljl1yB_ zP5(tE2YoF->i7CbSg5NHgcNFhy%?VIX)BE=-^t_ZvFT4dS_R%B{<PB=exHt!Eqa;I zC8~`Khld3oIq_@zOq3?5zUH5{SHXYjH3rBMeuZ|8*W{X{12u(n1~M(>@~G{CQU9IE zec?)EC_U%}P9ICjYR7V02>D(gxC47-5!Qrjp*<=21?pn!Pj&T6->LQnt|x&0g3o`v za!z)AJRjGZ$*S0goQZH8_>e#R%IP{Ci>9r8S6io!thq*Y`Yi|yp1SrKzdkZ5cX1FO z*UpdmfK*$htbXaVuB{KB2MuSI1}TL8;&ice#)Ud*7hk2R;?$F|@}2zR$!__Z#mA8+ zXuP-niYyz*;3h|F;73mQS6ccDi_U3Y{a8<5!P~asF*2gvCtF!yScvV$hj`L&a(6S+ z8=8!TZk~8bzt<LGZpa=n;?lc9jza3(6yb&bJmnvp>JzZaQC?)g^Nh>j#;`eV@}grA zm^M$OEl&GX$znErq|S!b+6@IXr)LTFkY`^9*UC=Q&uqnRx>S8Hf|q*!eEd>9Il6cb zei-VmTsifO+4y3|f$G$=7uU*~&Nt<&lhBI<8E0sXkF&2<c0wYLa4VCVk%N3Wj6+01 zw>OK?_ehc)uA79Z8{Zh6avu3yBu!trns_ZP!ymb)57~8P28rI#9Gl(i^vA;1HuP`b zOdo)4syHJ=Hvw3&wyIVa%sz!}TkX8~WH_?0O_Cm%4TX%kb7LK%2O-&jUFE|))g^>j zK_2>vF=GRL`0CYsKZnKo%4&>!%FUr4lCk!FY5vJIw)&6HzV}6<BW!Jd3E)CK3B>5Y zc9SXJ9ii*oGR{Us3aLPoj<exlY;FJ8aGL&`8@a&Mc|saa5aC>#*;pp=z5)O`BH|&< zSc)B0@U4bMjpKjm<@j>Z3SWDWC-5B~$!Co+a@D3mCx7KhJDI9fD2zWLmHNh=vw?GP zQa!l*9WFjO)Xo8S{5I$LgJYZ=SddiLIth)$Cu7>@*w8EN!2x$bkI9C>5Gn4}&VK&t zL+};@kG-C;$3ZUH%K{9EHt*HpU4ZnRSXU;8N5KQ5{c*%H=_~wV1x{4L<JXOKVqWN2 z7mN%*#EO-DWZaLbG``ZSJjghDf{!4jZyxc{<ZzA#fzA5T+Z%neO6*jBWF*N*hYlZ4 zIdtTGKmtB~wI7%Eu<fJu7+-0ejE#=p*pPYi;%)I$Tc1UJzGV2U12YzfU)Flz(;NPy zi*;Z1I5MnUe7~~A=I?C|B@g$G(RbNA;4j<0H~r&}8I#`35HAC-4G(jO7&x&p4N1l+ zS!OO98~N#D^Meg^X~qOfM~AeLSB)6dIWe-dJ@u8JEswk&MxxOTh9d`9WeJViKJYeu zyOGqfkOw1KSD`}(hh%ePc+U7xw_^*P(y}`?<ZCZ$@#O=aZH@cIquIy+Ze#^l9}Vu( z<yjN=Y_yVh^aS@Z!FTAA3$`@Zr5(dezk@Z_0iEN;r+@li{^h^>Pm1ybKK<Y~M%X@s z=x1^8|NTq-pfjcBxg3}OF0^)?y!jw~9)4-wseGw!9OnUfr+>eGKz#qzuZqWk1>4Kx z`SY0PJ529#57-v~gITJXu$r@D{%X0}{_wnWIDN8Jpo@~MTpp(ddC2^zd0g!XUJ+NX z5)REnZzNI3kxExHDOr_FP$}?%$ABHW7|jC1#t1BdgB@*(d^k_Lev<EH6<7p~&0i+4 z`MjtHkS`J>`_zrB`4=cVYgHUnO|se&_(P+7gIgJJbK{c3qHhB_LKXEuDZ?XQQ*<&} zJW2FX5s=y=1ZcCk^$jxQNt&mtCaJFPLBKuqcSl|sg--V2=S#FCa`m&Dey%ZhF@4Jg zEE;JmUW+Eqv3*HF{v{Ji=)kvLdf4K-1i)0s?>42&ADFZ7BH?G!7pmcx20E@OlAP@* zTRT{QkW~Nad%x143P=p>=4&*d6Lb>iuQz0Y0bBg^4K{a$(FnlUH2rTZ1`mzeC;9j} zda2{Tfu9A);F+YmNYM@+H#u3$8TUDYT+!tgDxMrI|K3!i9ay;9_@HsIPnf`ZU6`N3 zCmY%;Q^!}w*pY!8!6(m=Ao&;4ku6zdoUs6}H|w$eokC%p%D)J`Mj7Pb^(r+-XEcLD zMn^Y85*u1}6Oy_ZxD=*+ZV1);2*GTSs1p~0w?`K^I7_4)dx#(WY5T`F<99(7_-Yf` zFF67`3!dcXdi!N_^|KkFf8v8#7=7S>x!k^9-o*(Y-<gC*)6K4AFHCHbZk+y!@2%Yg z4w}@1!bczCH~LLa3~lts4_D4%7Tm_y`9i#IT10-Sl=*q&DZTb_c&EY*alc0+ffqgf zyFLo~q36f|q(`WtMSf+)+A6Yb9MndKxKd%odR5)zij7<su_GXDQFrL`nbonVSN{#E zz_M2VCtpg&YyHMTlq@OJYwbK6QKb@*M;YxqzDF4wTzt^asS@#yKfFsvTO~mWWZI&{ z6^GisCp=3nVBnq}?aRn(esEnMKK}de-Q0w@Q5btqdmd%ylLLtt>nB0)hDPx7Upn#{ zs&b~Ujtt~%Ea8j+;tTj{Hp_r(8M^Ak$bJEAZc<)%(}o|8&vbLe7p&^v*v%I{mP+F; z0X#X5KcBSyURm%hgJ4`Tj2t3szYsY-O2#k*sW#`SBjd&x*OeKA+PB%!2D&jn2S2&@ z19JR^-%UFCuu1cjqv4oSe(Ki8sH=_)6L%&Sbd#hMP(f#82GcM2X`Sk6!(ePQtg23$ zr|-uv>p!V`%vC8!qxv9DP0z-0VXM!`IJO&q(_gh++hZGf{@k=q3?N$-Og?&4FE`cY zIsQB>PyAEgiqVJdT8={Hb<rCvI(f@t-nuY{P5qvg`FE?yXM9^L#%|_D<JFhjzj{3z z4?9-6EC>?(#ifI|<i^|vNPpt~X8+nI{w-!XUVr7|w<o5A&)e{27d-S^ZItV=VdObN z<Dso<-L&_un8fz>MPPhsw(GvR!5=EutOeS~!L=!ZE`J%jg{FSV80LGM^a|_j+a%RL zHmaWisw}g%U@tNj2mjDZVPI08IguZvGUbIoWV%M}W`8QkVDsmbbw{o%H`>89Hd{BO zueFV}uXx6`{OH$y?bog^G;Mw4`R3bi3PXP19diHTSF|0qe-vTYS??cPM?ZE4(>G7j zXK0X_-uk04u>Cvh{?a060O+*8JcGYjH#pkCi)Sd2{}Eg0B8Cin?Ao^vZQ$v<8Dsb+ zp#Ch#Klt>c*ckbv|M`FYkN*B||JFZGXa3t?>XFMi+UWzebxIsfQg=CKYaXXN{MJ6N z+p>Y#0eNUH{GE@wmib}Fsf&|xc|v8Hp3+(x3;O%c>1vcD<?3dUR?SJnvvlV><{F^N z8FCk`y|`$sCO3k|-nW|Ta@HN>y9k`Cluy;8<)Cf<9c?<90~$3iyp?1pdv@?A0QOq{ zAKRcjA$cb1v@|f-&1Z`)7K8i#T>_n*@6_j4s($iqf|XreJJt9Q&CN}3pc0s7LP?-8 z0SI7cF*i>gc0xyApgW7DypPh25i=4QE1V!Ys#&!5T7$Y2dZZ{A_9x)d;7<ybUUhOk z74X&i)4n(GCb*kP09|Q#lG$YA$fWG%CqeW@UYYO2X|gJT)Eyy*Rn9FRt|~G9QUZ>_ z{6C<SqX=Erclvba0da61xYfHxU}t0AvN;v4EBIim3Yv7XTvUqI6{lB$W2d9*%30VT zc43OZ(sPYYkJvA!i)W;AY*<kAz&o8ZvXUvV+EP!3@#h0{=$3wP@qib~0Un9bm)ak5 zF|@QhjvlkPd6eNV9$X6q{#+kP-nszzEH22l#UJ=VeIfW@@YlBT$j2ndCVUngI@*c{ zoUh3v)1fo+<gDRIO8Hg=hn!OJ(P;6ZleVD`G4&Pkv?JE;A=fSx#DuYfoV*2#{4?Gy z;BuXtuDP)dUawOI<GQdzqv$0OT7=n@hJlBJ#@J_KP@X;|=JZKz;71<vImkD#D_cpf z-V8vk&<8s=QT)*{`c#f{Dvcu(n5E5Vm+XPnx9zvqj|^E!<}HuWbL1LZU%c_d7Y-gh ziGeOG2%FWnrhVYpaQy-r+ILyd7mv^bXY-lb^?~vFVDZb*hfRH~Xcyj>4P)~cc8>!4 z@E>C%M~GMM!<c*yjOMM2=*<sm*U)JbIsu7KO?N2dKaDgSQpwlO@>I58iqFR97z)D_ z{vO+hDx_rldUa#uR-=mscyJ?xtLjBiW2bGUHHgz!xlY~oV`W6I)lTL=<*_duddu0^ zM^i1Z*^!Mt#30@Z@s>t!5|2%EA^F^}b`M$EQDVtca9Ja^gvTEAQqaooIn2F@qn)n2 zq7t2B;vA8~MQH^k*S;$&7bh;_fi8Zh51Y^R5u$uTu`-NLA|8K6HxC>}Hg?HDFO7%k z)~)>HzK)eEu;8i|{2b`CBJy;@juf$D*EgEl3I|_V@)B;txyE4Vl~#3_vKu3PHJeA| zJw#z5m>gf@wQ3Hj)=#_3!2t$}U)4X*I&C)g*_J(=)lWR*LywJ_9f$Z9a75_F6MLv! zxk?6Hj(h)>3ts-CQvELc;EfDJdIZ@%Mu%A7;vb!WU8@sghVP{_+IX}*aAb(@d$`o` zeE6XXPW)W{=!x%d-p-eGcD)$-g^M3`?yWGfO=2M-_5lQjUB8?)=Eyua#l!3M`1{7* zNEw>NjLJ%(898ll^k$mek;j{^T0i9DA+ynRpcw(*&{j`vaLWFweQo5Xf7%<P;RR-_ z13$F0hAv(TkM%>SN2!UsB|JVC_>D28r^$gw^4%1n!}d$(skBLAGryQV9r^crN7QYb zF9()tztd03)%xhZb4L5kcZ%4&2p)d=k4`I(dPi-0XqSFQ$GrU*+L^P!NQE^Hz2Otu zKDy3_*h8A{buw8_0>3)p;UJfKeoCf^PqBREA3QQPhBQ{0f3=f+Y%}5v&fvZH=YR4q z{LO!~e1FLKk78p)2c*OPOgij;{#<A1;OFUcbqk~I?jY(v2mie8Ufuw(G{2M=$B23+ z;)IyN`VK9yaQ-EvXKa5diZgZ|0tjSxd6$TKiZMTkD}}%V`>K6hv@xgcw<qwapZ^EE zt23aBlG98E$4uImR<TCf)Q(gUZEpm@sh6(yKnblh=pxDPeS@osB0ul-?a$}4g9%Uq zpkI&a6Y>Q05N^PtF?#%J0?`Ego#Z?nQ@?tEBQpOmA;@ivbn%E#0-?<o@SZlzE8D40 zDyP&pAf`MEi3Hh^pfIIvay6k-?4+PIX}4QVrpq>I86OY70C<8%o)=!tEWhX$7*B;i zWYT<9+`u3vg?7hPW!?();~j_fv9$K5Y4kz{q0@HDtBNLpy9<?p!Lxt6XbcA&SC`sa zoxVcvvd6hN@^5uno>RdWi9PlxkI@TWk0nsCN}#%TVdUxInZPtp|A!vj<uA{F^`FZd zKlQf*twSeS)6!8uH^|Nx5AE&mle@m@Bi~j406+jqL_t)J)ZP7nd^17MWZkDKC3$=U z;e+2dMqD2n#t>c6>#wVTMNdEN(W*z8Y*{`;RyH2Fz^)FXIYReDKUPS>o6VZ{;^>_| zR~)F}4`<XWy0@lWR5n*DWBjQLpp<7}p=}6R^w_AFn_*9PEJ$YII<M@D9mj^rXK_4i zx#=NOV%0NO>|H)`GE8gExv@xHKW7|8$N;CZsW0B#piy)eX7qAh104EDHf}_S<*N?2 zrHKJMwtV<lkbYv1+*!b%8}<=qa6`9xWqHlu#iPg6H;13&&bRUuk2_5~sys(8u#Ls3 zoDGkWOK4=5_IF~z${%p7o7NZP(%Ng{?JO2+ixAUS-sl1|eE7|wf4m1>?X_0<3?sH+ zAN^0(g`p4g6DX8=O_Iu!y7uwuyKbmpkV8hdS+tHE${d0{+Ap=`^u^Y}GoI-;b&mye zah*1m)+w}_t`)YGz417_F54bicfsEqEtZE*p4gy%lA^IsX7>2{Yp?IWX_*r5vUBil zz69`n9|~k163bK9m>ycOVEX`Fr1z)|*g?{kV{Ev#1R1D+urXVJBS}8~KR3l$`0vds zc@Zg%^j&X0;@{Knn#R@>BhO7>Xr@PS!7AjFAGr2AKcW{Q!jp`SP|s#h>N=O4`cfE5 z-55r%2)rf934ZIRt?g;3$H#7DHIHBE$g;AxAJcCwA39*SU4K=+?c3((#!^Glj4oF* z-_6Z18Sp=17If@YiGxdgw(43UbW7pT<Wo%Xc#~rMXEzro7RC?wMSHO5rMZToJ3VUZ z5p|o!7xQKI5XjM+$}j}0-}U0A>M%fo9h_+!-yYFNH~i=~af2395ACvPdRx2sVd4SZ z;Ys4ljL~`XEsR6cM#LL=Ht0H^=E0jcQ2MYe0um4X*|3T}si?@MIpysaRihJ#Y^o>g z+;nc1(VvZ-^v|JF+CKUb7&q1C8aklh3p>#xCx6<FE4r|&kI(3f+90PF=DWc8+cg1Q zJI?r9VnyRbQ0AjEGgi%2tn@N+XfMIgEse4dUSu+U*%eQ=d~b~kPn-Db2*1jk_R0o7 z?XAzXM5R#-=+Lf=>XW?Hy<SpZgI^va8(wVXa9@DN)whvNdHa858_I_to;f7#uA4_2 z_Mdx=`4z~eJ@*s%@0tbfS$kBru?;^O+WRrak$vVWJZCIS%&#Sg5uC^o|Fs%xxpnH5 zKK&WzA4B@lY>fQzU;p#};P3zTU;8`hlt1{Tj@bdQ`5kWS))7C~_I-8tcGn#&hUEBm zn|~3X=lK8X%MXV?Vc@Wgz-j7}uDkGQodIxDXfe{z*k=*b8BM+#oWQ-s=lKwA?ND}x zeB+bLtL;=LY&<A!U4#$@iE;1Cfn9+B2X2et1)f$+5XGKY`s;#&W`WnBkdFequ!Ap1 zCE%JY5^Uc0J4iAS*vv4&d8IMe-XM`%6#3la#{{bYG^h*gHW3=&@xz>i$EGcv#T1zY zCjojVLCS96EMia52}}-?-ltFV`ZQfi&y0r_KK}5XhUy*3yMW$Z`r@U%6O9QucqZDH z`PpC-)ysTdyup@Um2r4?vWacUw+rJkDBmZi%3Fa_-BfwDko?e9vwb`Lnu@@#-3nJ9 zgi@s10Z#E!HREt6#nIjO3>+hr;JiBiR0tD&Cy$|Anb_ECl_A?cA<5dl`V+2;gPlex zkbgGGWm9OBHyKj_fBIzm1=X48N5-@VPQUOQILf7mh6XfU?~!(?cxOSdJP>N%CRgVg z-S&U|_I6Wx=yj109n#~~Wo~v94o}P^G>?5^pldOJ2U#i~TP$93_50L|ZcW;A;k-J5 zlP;K+s$tkpZFNljU01ejS$|$Q54uBtZ1o}^c_NWINlw<gyluz{&5`i|*VrO%h!ylq zC%MjlXbom@Qc%{1TVLS{Gjx^tpM|R=o+!@~pa6!y1m)9N5QS+%O=?24F-hO*Q$Fc0 zIQk+O>Br$c{Iw0g+B^ck@Y?l|N}e+K>Y|e5!HI%HH&tW-mxJE(dU$xRo!S<lU=%mH z92HbH1tg0=OBM3aJ+jjO@D*EZ%G95NOdrV?$@&)lU3{t&hxY&v7hU}^PsB((eXR|y zgA9|FwmuwQ!*Be7PXO*4EL}E>z0-!y<JDvStv`ld`@na*M5fXUjrv$*AjjMYkYM$L zm+Sn=rLpnA!>Nz4QLZ=9`J4R0#k7xp+dozE=y|DIMD{?R9P}P}HXpv^O?`Z>w0rHw z)lHGELLic+pl&y3!20RWwuhHF#V@P;fj{tX<q7%M-5{BM^ie!FjPLUh!YlY_<)$Y% zY`{O~pY2uh<>==yH%BgVYMaf#zyyWq$kcHGFMakQ<GnhpE}<deQHuw@^LW~S`qQtD zT;}-OoGGrLTiKk`uPBtq)NgxB_4^7FxbW(UfWx=uiyW`RvwoU>>^Mk!sUN@bWSK77 zdV?Dox~WD7CQ85Xi}Y6PlRQUbQewpDoVqX@`{FJx@L|`FH2s*iH1q*U>1qehhaa|D z)S=6FDoFKY6|`60YD=!lFnNTWa&#c$j^|nb#Hx7+L*TJi*!TM2o?7yv-Tz$n;}YaZ zG6v^6zDADLMXt)k=h(L66g)mh2iHeVIAkjWXS8$Z8yMoVRKHgfSZ^4+!Dav2pfZjO z-{y-mJ^1nqJ!n?m^!=;sVxaLZZN8W|%5#A77@FwK&Hvg7U$Nc>23&{uYva+Ezmw2M zo%JIcU8}mT4zRHpU9Iux@+$Ed?BFJ@=f*!EjRCa-+@yXlN_ZF>6*TA9S&L3gjb4#; zYy>*`h9-QxJ3fy68%F}s@tinXd!*bkz~|$0aL{#-k)D!z`m$u_9pi(1c<9@-H5oIx zP}b-0wM&;wbWS@Ptt~6_p+~N4ffUAABj0{hu(F2L`U1Lqqw)m~%}roeF6|Dfbt`Uc z^FBWdOpnG;V>n~s0nfg({$Ko&nXTrFVrO&3Cdq7$eaKth!>8vn28_`;Y*eDzj{w)t z@C)A;Kl$DN^w0gxe^BHf!Rbe{G19*H^y#mrm;UCxU)H&v=XaR<HMn)6p?PmTj(Mt< z=2M7grSa#h(m?S4i_+5FoIKx=D+IQE^Uu-THhkw^@r<ehSDJ2swDCECfZjJpW^8_0 z_>r^Yv_UA?hW+7mC;rq1Pav+Q>*7Lu0+-s6XPZx}%E-O4%G>fdF&yk1lN;<U7b!BI z;)GJ*3m<I)V-cQnf`Q3l7zhrp^4aJQZ)O+20XGwuH%ELn@_i<{env9o2EDX34;{hU zjn3@$PC%SMK5aB4!(~e>$>6y3>P6w;(y?*}K;ZV%U3Bas055+>hCX#U@Pit;^ECPW z$H>~J<;KKV3>S1wbn~-%`Ca+YnP16CAP%6Po9jf<Nsf#;DA7c=b9q%B;#Y(Awf=!k zreCTBVU&+hr#SX$(`g@|;k`0oHO<ju?N?$UK9eA{@>zKd9P-pgXOYyk*ysix&3J^% zT*O{<Pi5_pmi}yC?DU{hu(XUo!{OAa0-A(Q^PKcebq<beAH~v#?bE`iUxVAv!dpBP zGp9@UG(tSd)l~`%{pyR!cX7=}#}^M0TIaaa#cMx4LznL)IMGELn^-_dc<!QO+tD9& z#s^l$-Rw#8$N+zcG%sI`;WBor>LAKz`fvMja`w3Bmq5WQXQ)uI*Hb&!Q$IY`7VYZ* zD^I^C@6E<3pSIHL_0n4Uk>V00bpUa`%XF)%41@|?eJJNyyrc8b$w>FJpCuRYjWH90 zERYZx99PP2ID>{vj<HkqG+uDaQ}gQCJ<#}Bki1bL1~yIC_HyWBB3`-)3x&vo2m16= z53an(BDHZZXIz45%)3C;qrE;Ay2b;U^Y`)F+yo?s;ccU0Ky8K?mxDKLeB2EJ7{_7I z9ByP~kd(>bb@kr()i&tNp$!aux~VM>sY?F<3yoB!t?<~Tt?Fj*rbmd>M3j|Pu6p2T zH+XXaJoEzN7@UkT<4hgiNrP{Uhf4~h10M(@_#h7OK`EZo_;vEqKa1hg7w4AO$;BRv z=G6P*MDe5k9P$%S#4UWuhVRhNIrL+{^wpa;q2(qlH(;GZbCV)}_a0r4{5qDc9z$=$ zCqn@EYIyf8oy!i<lZrW-<Yk^La*R*v?~&J+5cWnZx&)xWm7gqbDnpli=GG7S9<5ie z<_2(Yn!rj$?bR?=<|CNnMFw%ZeKNJF&&8aG+*-qG>=pT1qrOxEYdo!wxT#~4-GH2p zy&Y%lGj@qB(^qs{U#abmT%G%ghgp;Unz4`T9*=o+`H#dSIJhZSopX&`YZ1@Cw(*J3 zH{Ygy{NoIel<Q}Ft^PJL4;7T~nH0<x$5unDN>q`^m@0bGnGi-doRH0teq|5->DzES zXNPWZ$Oxx4P|*WV*Kk81seLN%U-C4wF)0h1G8!{KgkI&~_v#-u?04*he;`_K>=B~# zV6Nd+)-mjXNnh(zn-`gXW^9LT;QMIo&`(3<vAI$`y$Qu%Q|?<D_@JMoaV7Az8JZan zwL#SN6T5E8U*%UDYj1W9Y}XN?r%&UB)qL$T<6`U|P=*@Z6!x#e)nIgnKDv*p2MT<u zZBXl`)>dY|G4=-EkCE%op@P_?G$Ku|9jmUleBW5P>b27;F~B%?bPR>>#EN+nXx7$4 zYrh)>Q*_t~>^-T!Z;UJ)`<L#4S6^8pIO$!(1EZe?kIvI~jl;Q?#5eF@Bskt~2W#I> zpQ_UgX5r`KGouSD`_kAqZ{7xWJ|3hGV*kHdqCb+;k7{G&KmJpH{%`%xZ~wKwlz#mK z`e!<KoM6k(`)!@%Ue9r#rwfkL_&d(EaLRYQ28lyw>o;GV&DAeGd9M$jh1q;*+~K$F z7v*H`f<Pc4*G)&-KCCqQT@~cGRubQ}%X6M9pCE-H40RKR2fDoO4B7J#S`LH%oci~d z8?doH{9!z3QKl6)Lh6?5RJVBgft{}#!}b$R^wEJ$CNLUEg3#*^^X=2~v6lo;i@Ur{ z@!k&hSKb;)T>_cFx_y03A_-i5$|LaR5X5>TgPF*m_F?=~UP^5cn;qfY3{=1b-{kc7 z6hZ1Fg?=_RCSY4&4tQld0slk3h^Y&OpzX&2cH$>WZ4yLJqD@SbW>S1CMor8kD|nyX zZBHYd)Cu<laP<w^$v1t@$I<I#9UAo71<vxRuN|IxeiHlSh~TsMO|5bpa}HP`gC~DT zFxag*mE#XtJXuJP1xWIxwSC%OF)$&8Paw;`{e0{9j=>{GC(^XtCoc9jQOzQnf052Y zHZ)UD*N>mRy}r~9ZXwbp^(_rDhDV=};I&5q=sr3x5AFAa-rBtKf<Fh{>ZA43&~E<@ zHazfMM5uS5ojN%3>BmA2(!pulUMGh){x<TnL#}G`wuRoxNRM3<=r=6E;9ptU|Ioyu z0KEX+id3EcjA)g0Fa{v>dx3D0((=|<eOed!UVoKEN5(vG^44Y$Dv&(?Y3t1pQZb3A zmWN>AEo=r4np8fi$EUAhAOB*B(kDy^xLz5J>5m!9mG;Qow$eMY<$A))u~Ekf0gIK^ z;cdL`$4MGz6ZJ;txzQRKhQFH^@YOSP*pXGML!Ocbqja6xlVzu$as>V^?=C{oV^g2; zMo+!m4Xh_$7HnSAmbTwKP#b!I%bzEmZ}U^I6DMbJtDO|gCU*I$b#d2soAk{Z*XL~j zl2t~xQ>o{d{prQTS7W$z^jqQb3o6M!W^)D$H>yF7T_!HBjBHpD4$Uh@kr=JU0Z|0` z+=Rzzz>j@ft3@YW@Z&pEUHyX~SN}HORWN-O`oTd*e+`MTpX;#;jgEhjCC!6db_a(n z<4b)4o_^S|@ROg+mzA?kZ5}(a?e_Eb;rdSb#(I4ko&nM)lX(E4U*4C01fcv_qdB{} zIWWfe`@iUfX6dCq8YE`s%$A|o`jA<hc#~&*Vjf)R8~9>L-!?gYM(*koo@l*3H%8uQ z;)BLpe}N=lz(^)^+E?scar8mnl8JmCKJ@L6_}Tnf6O4Ln-k4`R&^7;j@t)9|_0H&u zM)iu{_)!=!pXL}(Ty!HePyFZm&>ov2#XEMr{DnV{(8=)NFMQIC=h&vPHg)6E{CbW$ z#K9$2Nsn+O>T&gX<(s)O=;eiO`!8+!4nlPaAsYkT960(8wGbsE9?g$UT<1_Xa~z05 zjZB15&VTzlzB}zl-)wfRkCMU7ARQ}D<lqYv4<7x*e)svR;|TxQECir76|TOiW@H)} z^h<t}JRcK!{~<rQnl|>`Ic)ukPQG8lL5{8!`3T?5K?XOqXjcEwe4T3>j$%wx+ou1( z)Yp;^{P@SjC$z{Ip9)<(X7ere;%e4_WNZRwj32q-!<)Dk4#8(rWF}7Wsnbt^oVfU~ z2by?K{k&DCu6mueP*4@VgXgkykdI3x!F6<P8hOxbzeJArN1g(vUR&c=<qpZTE06wD zMr-1Qcos#{P9BG`wQbcku|i+EhKEl7=*%wpTY8ltCv@->Q+$tzd}Y@Ed+@#Yncu;S zc^+7fIJ4>D?Ub;qJl}pR7L6RMpR%+%hjYtQJ#DQxr}lO9d;8|=;G8-9)2ILU5C8gK z{9AXpANuu=YGXuaq(lE+eC@ybWjkga^Ev!A2xfR+&7AoDrDYm8*TUcP`!%>NyMCUu zt&_IRc>b<m4qDpCZ7}_Q5^@tJo?{`H*2C{RtiL43b287$9rj2!5M1QTYEGvv!Ay8~ zlHfh5_`U*sbfm>R<%?FhXez7aw~dc-`ythW!`4QLDV)5UMH=-R{RBm%U8i4sIc9@k zWa;-PWHPnD>TARacotB*ux?NkXf3t`>KyIa2v8aD;bZ>LugEz~b=x{Ih6Y;o$FzYE zF!^kCItmHo<>{u$VF8qX6P>_nVW%pa$tOSy_!Ic?gm2->mI7siau-C*ks8+mH9?cg z7Ed<?eR}N%Fm3cg$C5`8AU}MPrd*v4y{mc1pCY)e*y{&wC*@-YY#!-eAd8gqsV=Nj zjt5?QqAJWO?NJE|IZamdxJGBi%8C3rN-nUa(#a9evgqPX-?a6p(}}mx(1%99ATWM3 z6WoOHwYUCg!U#Xq$aOyeq+Ax4Tt|O!B`~KW#`yNBZ+qaR3pR9S!8$<jw2^D&R@bqT zy4~C%$I@u~!AW){bjO|#*cvhr#W_5dm%IyBcpY0aE}ltDxWnVLG+Svj-C{dl<Tlnb z9@h4Ky*Pc*pWoy6=~KVBqaAtOF*hcz;cwlPN9NT7?1%+-#S2#Hxq<sC3zM(*6>OGU z`(0wkQvHw4Cmyu#>2kDn(Rd~HmQULFVmAD`(Yds=9V~LXtPOJQBZPi>xZj@=c{=V> zKlCOptj{H+Mb7ELA#-R|o=S4MGyPlMD?sGTO|b>-#F<%`cj1{h1&TbC;lRLW=e`A! zc+>A#DBx@ipfxg%Ol0h)c6308oHnMx>`k|Ys15CF@sG)<P}%f#aZWtsH-35KRo{+D z3>N#ugyj9`LF}$h>To9tlDGKx<T@tWeuxl(<(Iew38DaCK%c*qiuxJ3^kvHJv(qjc z|4Y0$ZQGZHJN;a$7tYWQ$wRNG7i}`EPb|8+(!+yXIg3JbJ*B8nci1u7+JgsDJ?rp$ z@{CNW=^Ko(W$KI*NBIT18!oZw;|&IsW*%CZ<^~MSkP2DjgIwdM#>>QuiNX3Nb-n3h z%dz_flbdFE!7dFnn@(M6Ub5pt>e(2nF9)@o7ZJ|*AS0aeL?gWWGpppx-&K!NfZKQc zB4f4*izIY%PG374r+I_Z_)G==?nfb>j46EKOg`7qDRdruX8i3spfS)q@2Ib>oykG~ zoJ(Meh*t~6dTnbkSst^g@+fOtWHKpLHnQ%4%7JT!D?llE)#@qhn;_$@A-xc|@i0}> zSDJ$4pi}H+Ew}O=GANe{S+<Xx7a+PN?;0x?`m7rk@yo}<E{K7NU)7HItPKyp50Q;; zzE?&!`D~0FKS<U7$|3ozE4yyQ{ODjU>behbl2@O`dmGDh1KmxY@}K^r+k_zf&w)at z_KIFz*F=tE#ku)c9<YAw2RPj#$J&H^{kTwUu5PR+X3v|&sW`COCaqn>YU@+H_9H3N zALM<=j4n~9ZrbpfxSMiR@iERB|AZVVDtpI8HV~4FpHKSx=t0)mWSILd@)=itg$AAn z6@IbO28PXhA6qhK)OLpkUs&2>le0lXPH`u1-^8?qLBF(a8zXdF8dV@C<sfuzF!|bH zHo#}2cs54xw8p3Tek5u>qDm*5w9{uZN9_7$=W!hI*ZZmSwg{u9l)t~H^~aQcbQ>f8 z_wWAv&;C1q@az8~fyTFaeQ$~@v}^Bx>%8~6C)b=ee>2F(k?-yBrF#zE|CiDX><7T} z^2*d4Z*m_#U!wVMWPJwrzqZt<x7^mYhkvps%~$74yR!+UeSGXZZ_b!#7E}AsU-))& zf*Rt&M&2+?KpuZ--=)nBVFQ|Am<iK_W<w-9C=EQpDn8!eOsF}Xr)M)6Y~L@;1h!04 z6)4^ondinWPbkhN4Kn;@CRiIHdqmj$D|Z7y?2OEP6UKtdB8uGfqEi~XxK{|D-Xx}N zC#s!bG!q9+v@3H>6WGcDXC_+wW-P**#O$-k4UweUFO`#*b!vmv#c(0gHgHP0%AtJ^ zb#v|NN>zV&s0)PCT%nzQYDMd!FCJaUbX12v*rbb3DRfcQ`oPZ(OBM$49XFn2y6e-8 z4&O0wXbic1vI720s^M!w!jhd$aG8%Y;d$yTmKE~>&t9#2*rm9EJ;pk%$x^4E<c`Yn zXzkVF%B7Z*)5UccW6C+u=P}o2$>CXF${65J3%9(K(Q4ZK;LYYvTEb{7Jh1FgpG!Uq zo3sbV*t%XRuWzr^d}vtg8H;;r@zk}S(kSnZL1eedIX4*I2y@IrqB;d`Za}i|DPH<N zhL{D%xh^d<j}FbVU`hXW0jEr$$gnV7d}UMQO<rAg-SHS5yI3i3z@ulo(D$N5sr@UV z&|16c-?`}uBA@EPj;@W%<inU0wP!ERNjv@DWZ^b;h&-uNPhh#D{YoH<VhgVdmm+!D zH!!nU9iGKc_2<&G@lnS-$wglpeiNURRliC+?bi<+y%*nD!aS@S+raCuH+h===FNG_ zM?6lN*yW9cc>{oLYWK9E=Xy4X(*OB51;u(p!M+*i_{5}L*t31(UaDubltJ5=V{{n1 z7dG_CI2$DBD6mt>HkQ=BYl9n&$~MTUox}$RKXhHD{W>&;P9<)<n^;s#^b6YzW@RY( zD2K*9b?l{|)z;EE_2w{jm+cRY0)^}R1tF|lcP?r%{>;ZS|9v<=+q`dF&duG}bo8JC z9?8=e9%!<&HZgOKk@uLa3c=|cL3}DQ?hQh93a!*;EWtapgAC?%iA37u@S5kr0$-V* zX7#2}2qclgrP6$aBG$=<Ms1i&xwl7Vo^;J}EI4?IW7o(6__P(QIzGniaGbNT_4e!Y z%N4<^Ez;MOCsZzb6`U@^CryDFUtgc!H)qzCJKv8i#i)LWkT51AeTquY)9P^Q$yT|@ zR!0qPdyhZ`axUHEQ=<aZgZ|j2;0KL2C5b&3R{SBA9Zv@ri`~p%XCXoz+~%%xxIqu( z)So^neA<lDfgS(VhxI4E8$1u4+$`6(BagYeYcy*t8`9R5<rDnih?mxeBQ}{<18a!A zaWxMl&b^;C0Y04zGe6WevCqa=`hHAbyyV9<WcrEC&(XLRn20d`7Z|!-U&5d3%IS^O z$V<1eM-Y;%VQT;2)s|^r+mL1F2QYkTe`ROiez5T|bZp?wMueQbx+xO<$+GL(jl)IC z3ElNo`HZ2_fx0#_7?Xax2G(Ky-jdrqmgdUceo8wXc9R0{+NAwCn;+FD^<Z``^gT%P zT}X_`9^%T_3;bPH*JCIBI%96v7e1<2nz5JfYv~4kc#}hd%eG*+vW=vz_c0kV>3_WW z+l=?|J)0sv5~Gf+;ubix;C}t}*R$5hnq%kNZusOU%Kh>UStG}{|G_`|fBtNl{)kRL zx{Z<F{LSC|_&dM-TfPM5k3R3GI#DV);ifOuwH}xe^@RlHPHVxIro2JBzWWOZ9X@C+ z?$X-4wC?n-fd0^BVZW5G1jFtb-c{V-`z0#BT7Ai1Jch=j?pedH#-aglPK^~0Dk1-r z!vuc-?Y}k5VzBe#<hpPuoNE(_nbXpRD|M1--=soZ0_sK}aP#(v$v$7`X7{@jo=I<J zUXx2FCbV;qr+>)>)0g>DtdKkDA*ebsVm7Fe`2<ygZYKRUmu7D!5>UIql!q@kX??CY z`+36YGnsDS_bKfLYdL0Uhik5J4}603ey@n&Ysb8wai#wy^7xhFR5_<EI+*YamjM1e zsh`b}=$C>ZKL^^5I}UpHF*%l-F}l~oVaL;yw2eH<rEwf!`cZohebRLbJ~?zDSEwFC zAO4tT<ZZcip&wcOfggT&k~dk=wW=Ci{iC1eMv#pHl*O|rn1$~mr;}6dfDUuaq#u7P z%brk8!{L1LvMlqo)gM|@P^a3+g?<m*wZWlIy4${t>lIhq>N21$mFD`>(#N%}WVzFX zxbh`m>8`85E{|Pw6+eLKsZ8EEJn4_W?~MzRpG)Wr{UTr2`T#AA%1xeQ{jiIwjO)4C zF?Oc!Dj0&r8_Fe`%id&(6PoF8XeR3-&Bq6LiA4SKimzJ?`G`(8VJxPD$RCYYb!hDZ z=KcG`mH3A`+cUG7I|OGul)Q>z!ja=wZhA&1V>)uIJ_`;b<Mmw@QS~Q&;|QOKQhqnk zfW&(B;khaBgbh!&tnQ(25lFYohP^RDWqNwsJLYPak@H1=RU$A|0j!I~62G$e&R5~R z_njao#;m<7L&j6YK1VxhXyiQgku7~;0ZF8<vdc{tG)6BAMB|fg`Yv$!t6d0^!$#MO z^c9>(%+(fiALi<{&$!?PdVgSmG*Obg{)$%(reD)G&}09$A2iv(k6h(*_?FY{x|^D% z6?*a<eexUmUY@u!w8*l8;eh{v=a9W-m$``;TB$uWVL-2!PiWB?tV3zZpSrdghYh&; z#-e;SA3uHaRfonvZq&R+jyS(hc1c(~eZ~*MFgJ!;r#*RS;m-HX-(<5%F~o+@QXF%o zuhNX?+F@v^8=r|cO#h-Bq0r}p=JX*vdXS@ZunCd&Pw0-Xz@@i58!_=C^%A&+-RsS# zy<i0D=B2j_R-wv(OyVM@BRhHrXKN0R&a>*~zd*G!1ECW$Orqn=S8PnLx#=ER(P?}{ zD0Z4QHdpV+IDr#5y5PZfp;-OP<Jf{Ny;UK(*&o?Qf%~;~wwt_JiHe6t)7qpE2acln zH$T^vC+)^Vg-ZQgqH|A5a}3{HQ#X3~2<)eRd37ohliYyzCNwvmwH5!n(!}y7vBA6$ zxrny*605tJEq=y7`gTz2_C^`=+PrvV-grDVtz6=7Z-!^1reD(9aa_?Okv9!&=ookD zC-YtM*%<M5F@4AHM=pBIn0ol}iCy|VvWU%Zb5l-sH~Tg|$h>{En+&ZBU+@mFVD?yZ z)h^*V_R)7IMKrK$Gkrs*@toK(G_6;CTxCD90uu~g-{z-?zsYf>5bF9jG|3~Cr+!Eq zUTY`x*h5m^bx6jXYYDz~b4o-fedpE6mvL_+gm>-claIcecds{R0<SOh9sN)(ZtSIm z4cw7o^d8>qH2Q%DLr-*V-ib5p|LwQm<l1J>e9Um{5twX@ybIi`m)!{Z2QPl}udF$# z^`l5Xx{VRN^3!j>`q|IFe*cGa`77zSgNsvg)-NXh_nBt+(mmhnHr!94(M4-=FdX-D zuvgtPepmgS<}bX)kY=AxXUu-S@mH?J6Y_)Wqxh^YP^;pj<@d|@(Q|t6Y0{$)$}7j| zvIpo@F#*0(-ASdr-vHmboWwuGOwx?FRTh+iH96Uo=%z!0k%>Js%6!QeTKGARY$fGd zn?+i1gLDN|O<{E<iwTqD#{}DcZaDyGSOoP3F~P6jE0SO<5DJLf*LXX?`{;i{e)!JM z7IvaL?S&KQm7BXZQ3~)D|Czk(a3`oXSO;c;GC^0^<ad7LEMpK0Ll9}o0iV(($4o*y z;V;}k4Y8ek)GhsKcOHG&jJCzkLTTyDn+fDhU66-X^4LsL)_>g;0a6-msvTX?W$jA- z>V}`iTsscGN4iRMOf_6i)kPxu;fa0DxlBFO5;jqXZv3lNIq|nPtz4zm<_oX<_yG7E zyXk>S+YXNM*0nz6&!)SP@dvbdFH@uZ>?jy}9(Y;h>BZF7-lu$PeZr%312eMD;$&Yh zUVmSh8V9{w8r{Or#gS+Gy<iBB3SAiSy*@dW=a`@1b*;~+I+9#0s#H$%f7Af;NO0hH zp=7M*4@5UBEP!(KO%V&z^!ddnG&@fDfbm|Eu<0{2&;dUs^?(QiO7`$ea29{!$u5G& zc4^4J1(K&ry$KRmQa6-)p@4IF_hvADX7j+p>)UUB-g+>ruf;FD8aL=>p_tTuC*Lmo zaxHFEmLuQ7wT}}cr_Vw=L!ukI*{FT#O}y$?vem)Lc=&HVV}|72fXLXlXisDdk{g(j zX>vCTSxn{&wLgCRHlaBSSg|~tR<&_?)xgs)sl>~@h9_;)68U1^rsyS}?nX2#K5oE9 z+$dJiMrlmuKeTeeMp|>y<Rp`tpYk-Z?`gfk6&Rg!bVKA;9u9Lxedxkcms0efU-p=> zXP%okEYK|V%6BBHJxWBIBmKd52R0PTAPuch&p!)P?zL5bIyT}jd}zK0hOaqB*5ZeT zy7G?6$A84o{9$A)MSzd7OUG5>v+;xm{6ncS6*tfdSN~N7GN17qU+Fl0O=cuK>7E-9 z-#sSP&U00|`lNB)4SV3}mki`BpSGgqG<vKK(<e{r0MaS;G3B6V9CYqVVfuRM#0J$L zJ$3wK#-e;SEHogBm^_(st|uE=YwN;I9Ek*<r8gh%Ih!Hj-T8Q!ho~`o#(Ori^beMF zAopzUV8U+U+jt0K7$fu91Ybk*2mHb=+EY8Stv|evk5*3HQd=^ImLegq6o|mGVR<Hu z%#HAiY*@_`eQyO!Jdc*f5#Ocbyw=kGYmAJKKe-tX-L4Og(6z(Y!y8ZOu7~T=?f9U_ zY;>UMa3hb;tJm)u-?U5e7h-69mmiE@q)&{gu<66UfbuinF@#2aCj4eB&X_E*oak>} zq4#t7z^`0aTQ-rt%1yX3J5Ahu&{Qv7oBu71+_9t!hA2MTdjNyGy1#w<wjYN9FTQIt z*X_sO{c@x)<wdLM(CjswBfFfOY(Q6Z$gy&+j>@%V=R9L%_}$kl_*dTe#BPeLZ0!8i zi>$RH02T2-+vdhTAbIz0V$tvp5RWBK{J7tt6}o-HEpxN^8STm)fB5;&zo~7+qM7q; zU}f&l#)t<mc^LZs_0NCpXVw2lcKVez4*pHI!5{jK-}t@X`8&V$zr+Rpkb!$ooNS!r zQTwI32gKuQoQi`b2?|c9xOL5ci4(rkm-0J_m2vZX+pm6o7yPLjzdFs&V3y5;*Q5Bk zx{*UDsewO3?#op-oZ43BKX@#jn%3T$T#l>ExdByOgWBn1O*!U%ITM|U%fgvY?aCun z+R0xy_z9AJzL&4KX`L@cvq0jDnJDbvxd4&8KY8dzA%U--8x@Rme4C$He4m|NON7$T zh6yaE-kb%;&+;~~o(&LB%mp=z#@;9<M|1oL+gY@rWYY6`y}+0d+niXm>_S<<$1d$E z@w6%8Es_3YZ|dFLc-3E-PTFTOok<N&bxa$&4)$wG?rPirfAZdB*Rm};&x_*Rnwjbd zusVJdKZ0S|f*Wp-i4@f`L?$c(E(pO;0)kDOY7h`<sv$r!q>c>%f*?WAGZ_|O6}O6r z6A}Kt{~u$mwNIS5_a>84<HkH^tyztFj#=)t*KQ#KL`nE*n_Pvl!h8WrV@VZvC=7n! zOaprG2!6P>Vi5-}*-Zo6$p?5A{xl|+i?#+Amhl6!q{>4Zk<X_L9+JgpY);$%M)kCb z@<*i9;v3pgIQ~4~+Kpy7&{oGHN<=PkmB%)Wg)N|54ZU*cb1g#-%YzHfVdH^6K1G(s z&{=xM8<u|Phzk$p*mBd?V1COEDi7!hAAI>L=hPP$?MQ?Myh=kERYkkZ;U9Rr5D9<f z8al}j4>_fnTlH+Lsj_&X5wlrHf7!NeyROaBAEd7zNO$-^DXiSr`HNN-dpSNdL<^EY zDz7}r#Ycg6VdCOVISheGV%s0WY|<raUw47?>fTMe{xVM^Adzw@it<!84?pow$hv8- z-QdsoaL)^)^JGf;w+mVNx&9Fu<g5SUZ~f3&X~u8m5e`FdbW$(qwk_J0TFK3*baL5_ z^e12Bmp|wTzdyTM+;cJSyH=tT*r6?bjI7;|ltnsyz+cGni4hGxx&uD8fqwe0HqgdM zr0tbMyI^<6c$!@60mG-fjBlo0q`J8D*T#I`Qr~C7xC(x4GqhY7yAgo?Yjs_9i5=gS zH4EL)pZ3+R(A*%3av_x|uEx^TPBM*tRv8Lh(BN5SaTIB}B((3*R%Y8S$HqB)01RC? z0UMtkob5-!gXfNYI)xi4bt`hy+>@<eBa3vnw3iQZ#PO?9>bOxzNXMzaDS$3$`{F3r z(8t_6Hfl#V1)cMn4sGabyNsP6chdqL`;>B17N5Zvv}bYT-To8XMi9gYem8ce9cK(V zB++N2uiq$p|3lAyX@MVFXs?XhA|{NUNEzEG6IaHQk<C1&BAl?r?LAF2H$a20vGvDY zLmcfZe~C$Icu9Zzcg8vRW?okxuU#js4~4BQx-#3>)LXgn>&4T?UdeB)javQ`Th;#H zDmdW~ZTf(6N0HIp_DEaKN=Tlzukk2VQtIX(#nKFU!Gud@W6LH4PJa-@u|)l8H>%~K zzZlRmchl0AuaV=e3GuFNDTI37f#0_6L4;%2e&R2lb9}y%Lq?l9?)$ZdY}y%n95c4h z=<f#e!tEU4r~lu6`)%uTzue>x-Dm-xX&C16eI{=%8|16s>%aDk%3itB-_qxNYGl5G z!4q5%WA31j(zfCRjt#YGtrQw#A9>4O-Sx?=Ree%I*{FyO<{(8ay8b!a-!g-6(x~03 z2cQ3x$w1!zOnLiW$2swGxFalSdEWsOnSuA|Msd6>bB@_DJ22!u1ldr}Xs&WNKJ}2u zQti;g+jE|BEJ?dzs~r0H<c3dU5@P?@#qpwcl!oQv7{@-8X)E)E>lz?LxCvwZ^@_b{ zC*hCr2z=YFhjZ>5^e@XgrwQBjCYmy^kpHK@_eX#9O#psmw;$!fh;8)Qi;sT(;?w)T zLPH-q>Nq;bH9S^kz2)x&irR&y<`Iw^9P5YOqx7h@{92dvd+5r0JAizyc;>$^RFu^q z%6uQnpG*D44DDvo?^N>4Ud!mn(<y(r5O&xT+C{-Nf2m2uT4I{$T~Nt|9*F^RVJKa* zv<B_r#A2b*#;v#bDHDc#I>(Cz4&|<q-6ZpG$qZTyU<{DYnH-%g?`Gi5g2n+@UvXf} zU`E=qGLD@3h6ARVd|z37273qio+3NAcaT-o9Vi)+n~p4Kg>WtfT$n{zxyXC2$gj*! zMg-{yD{mK5{dEZBa4>dI&cJM}p5<j-0z3~Ma0Q~}7N5yS%ktHd*e+I>o1hYXH!S?g z0=NV8NEC6hi8Pki5zHgp7Llyn>Q|t(ZEQoKrW7T=W}}`r^orB33`tai(h|>f7Y(&P znJ~6JY$tu|LEFI0P3<Az)MpBp?uGZZsWil3Cik8oC-vS#judWw;w?*jxrrP6Da!%N zmPIFOm4&jH5qcZWl$AHRfCNi)s;pHX<AQeb&LnPm3QJ>58NMMjx8h5+x~3Qu;q_}@ zbee8X!7gMH&xY4U#$J}E?WM(E$FR~aI|%!~7meailyVQe3m-Z*eA=IuZk`m06WO;J zQ+7NU9kX{}knz(WFBf1LC!p$rO9x!LjoRU<jtZm%3=Ub~dN|=HW8!x)ggoY5yrG}p z^Uh{POvkq{w_kfv$ZdVo1H^ustA_K)Z+?v<9AhiT4WGpDs=ng87z?RG24%6rO_f1B zzv3Z37v>&LxNvLVQ>*r$=jv}zIPFDp{oc4DV;$R3*|Ak@Al)E}Tm0QfKj)G7{sK$K zIZYtP%F%X@J)r5qmQ3^HU%)D(k1H#yKWVE>vPfUfWKlVXZDc$3sw(<sqz8FgQ0fV3 z?Ln?TQVcJP47Gta0~3DAoxVbTL(#dXT`%Ky=q#my1`i4)JVljv@Z3m(XG?S*0N?Q| z{7fT@c(if*HF7CiE-Ck-0HE4W`cT7X?5Eh7OJC2IwE*iPzA}jwT<F(jmbVlP*d~d_ zv`R|luiuqdiXy-K6s7&ua{SVZ^6ITzwokequx=7P1QSwGVl5Fb;nZvUzw3Y=Sj^Xw zf_+8NM$*iU3S!&Gi@#WHczFouPrRo;Dg+@19%Hxkr(;YzH`>w(&Dh9vtW_T9m?s6K z5nK;EJQ(RX=;pZn>hzx-j}q%!{B6IAF3{I6Z}`|aBXd<HBaDH%=pRbvQ<&WP$br5z z3MAl7*y_Y0amAMC*+0o!rY9TfN9(Klu=C0KK>1I<9tFhJPoym$eZekoKMWmd0Fx&m z><j}(@zGyBK*>w;@lA2^o+}Or{aT0zVJ}`>zy8s7)*m4jTZI=X<xAhu$5|^%D|B^K zb&o7Pyxo3ayUE`}LD!XT<gMEeZfuq}`YkVb%9B#i-KP<Ri|$a)OR=Hv+}1T>pP1<3 zh#dv_uu~4`rys-?ly}^kK181382AXAL=RAqN&C$B<``#CCqWIar(c0DoF6>O&w0;& zy@x@{99V9`iEmkSwhsJj(1vo+wtf}Geq~yCX|8^;y}ponwLY<QrD6K9SmDK0M(6o^ zUIML9a$Wq5R~Fko^O0=|toVwVxf|rxH{SBJr{e_$mKiE@+Ux%L*I)cRg+IdExeES~ zDd$ro|M>6yoqvW8{MU7kHtMSRSlPq6&0piiyO!Og$7wBdu=Z0F<41#z>EC*tIG6N8 zoQJf&3-%$dd8O!3Z2TWT#0uvv0-V{Tem$X<m^;v=zR3raPcyf5ItA25S(yPZ%#Boz zC<(?6kgmuELSSb%F|0NjFc$<)K$c^Du1tF1*`8@r>lu)pP<?^l8$JcQn}OE}Ad3VC zC<a1LtzUc4!Kr$_gD78Q>A(gH>3H$y0Pi5|q-5NQSG|-+xzK?48bZfU&XC<tTD3*~ zlt(;)N2ZwBft^KAw<=LF{CDE7JnF1OttWG3`5>)6gn)?GY>JMwFkTi6ya1-PbBeCz zsZ4v89=1V;6Jk>nZ=Eq0hMTzhYqMS4D}kD+pJDSRqBG?iXKz5;_~P1!LEHLLv<>2D z!?j~3Nh;a;p0Y=_Vn{JmL%X;sA)iAD>Dz|NsZ79o8RBEq<q)Pt@7xdi@6=Erz3^?? z{9emr>!X+Odx4?{D%UAL1skMA5dH{~C$sRh4mPo%?WI0xUv#p#yt+7yTnC{^EHPyY z8L*_mpTD}|6Hs;&`}?+ui=E@r|H<#K(%6TBjo*w`u(f@aB~l-<0+NwL^{l_AfMbUo z#wd(*!*do_>e<a$WmE&ea*NIam{k|YfuRvuk+Z<E*QY%^VNrzyl!(REx_BZt^>9Jy zBG#{@D2puQ6@LLmUXB$#yy>_SDS)XRLUpNUT-rsSHTEYDJ3JWKcHV`Z@h&DSV`()l zbwYF|UBN6N?ZQ>r99t{5vRA{C(oJ5y_(PhEmD1_r-}k9N%LXE$EmwaZ2j|rRF`@h% zV}+^xJxJ>T7lnC>B7{h5yFNm%Y%ZE>XMTnvZKB@6$rvDw+Eov=Jz{g}zB7z+@oN2{ z;v=1kdgl*5@^ZnyvPJg5V+mvAs~wS>bmj=<lHk&e+MyiUR>VfZtsnsxKQxhDF}&F) zhJ9ZFqF+)IAKh4g-AgR!gn4O)nBuH_q-$58cGILx(Q;`jqxLK%>nLbjz&{(0nR7K> zb=Us`8F}&~CWn8|5WHi9w(4Qn{#?5HseABgN9`?zNS<~GV_8$Ez1yy~gNGu1>a5Qx zkL?v=q7alNz5?zZZplmgh%ap0izf}_njIvFl;<z)xUxIe%y>h&hrHn>TDZw@6UwQ4 zj(wHSKK#)~pYU`8KjjI2_-peh3aYx=uKtmB1CQ|Gp?-HC*&cO;*eI~eQe95o$z+iN zA9$@kI9K?#uUaln%Yr@f%ST<5rL>gK%YIn-0`Dybm4->}sqde*2|Rja(=3qy4jwpi zNZVOQ$b36|?w|Q2(aBrd8LP3W8`E!i^20-p+E|-jp2A>Fw{&B_94_-tCCYtjL|qKZ zymGfqs%IsuKH_UDQN-7m>d!rJ?4if5GwUz%7S_0P#5tC%ym_Y`FgX~}@43qBX=D_y zPgT_Kvc6@mk*0=IhS&UBOFk^r?)0DdC3UrXTaeybb%^yHG;Y0P2Kn|4<ex(b?Vxq! z7acehiGSKI!p{|-rvIgF(Ifp&yoCWiE~cRg(hQx9U&1+;_Z>2^(eRU};o2^p2W#7H zyS0I^+QMMnwqp*LSl_1%-!ER<)O7R4`atuDPTsLpX$#x^KzWA=qpPy3k#N>`{Bw@> zdiKx$`v3Cdd|E{Pf3yc9D);t_CqIAs)sz2<q*LRs6zVjOqkLCgI$RuXaP2kv*L%X! z+W0+SDaJ*=lh$|PZe6;9@})OlyYxc*`NrzyJP{L|w=g-gNu6b+Tr2H_`hz4|62_aB zj#+N2X`7}%vF8$>Hak(z+6;XmWNi|#kf;}vRgk!ONTR+(sj}R`$VW06)MQ~fV~+nL zr#SwzAO}Euxp?U0*}=;+g-`BTaJ*qaeF=>>FIv}^V)>Tp9k`ql6swcr4xsX&v~nRt z2Es}a{tnvKCs3csnN6YcTj!^2%nqGwGO{i>w9xJ8y<Ln+D-(hvuegzfsIoK<*kK5T zit^!e@~7A^;xyx3D_QKMrmd7&OSas~qy#cE;hMExd}V374bbum4a#hXRGoCpIyprj zsYoVvu1wZ18Pn<0(AmQX<;{d@8P~Q=>45;PFqN);HFoQQ`aFD!k0>8kg#b5pk5^`s z8oAU(A%!zY5BaZy;nGT-up5ScFvXvIs+ZotuAHGonN*Il3yjJ5igGLru{;hNkbW41 zb(2y0)y2E{ERIID)x|jS0#my6#ct$obu2IZ=~CP>?|u@8y;wA6V~E_liO+^WTiWkt zv9$}y@}z$r-q2L!inilh_H%8KMGM@bD38VBC%Qr(+tuf0V?2WGrcqMDt*uE!R`ra` zz$eXuc^9fwC3Ior0+a<B2PBrKRY)wofG)zwt^a1B$>KG>#d_4un=chqUHvY71TJl< z@{^{rs7vuXehF269lt_^GQa=4a!5hEU8vbNcDxh*v@3v)xBU6(yqj&sS3YCuCB%RA z5&kI>U%j%xXN<eborStKf)5gw*Z7yb4w9jxPIB-julncH96ps#0EDGho)RcO?jUE3 zp#7C;W!9e27rhM`x2TMLQk0fUowt)-(@K)I8NQJ$w?b>Ll|rU%C;fUi$pu!Pj77+! zOra@e<W}~mP``)}+lJ>@);5jW70Nqwk8<dlmJi(0zp;Ae#`q2gaGEVaLk!Q1tF)bM z=w=~)Djsw?mezL4c-Vd9&Y`VB5F&PobJwmBE;5>5e)YM41Z%&#S6$o)+vnPD8S`Lo zo-ad;j4Gkcv^;;&iJSVQZyBSx{mn|@MlbE7K#?tV;uo%MQORd;$bqG4bqnsqp<r8P zuAz;tY0A>Zz>3IFm3D4cO887<x1@ASM?0QZAY*6oJO5>U1HN7-?Dj!n4aUpQv~s5H zljdegQ0t@0Jq;B7);>bY!@s3XvJ4U-0~Jc*e|*R>8CxEgvKK<OoxkAcIF|ycJ7$<A zkcyoaD|~G$aN0(#f5VufuUa2pQV?kEQ)C{<`&B@HH6(`%$mG)*X<xDOUmW?maewoY zr#<||5d6d!b!LnY)ykc5dHm*DXSsd7cJp9Fxi|n0j~dLp^2MGt{!n&I0M~UGAdb<# zgCcf~|7y<=0s>ljq8NC1=BdV<jcF4<^o#XE_s*Y##m0wRlxD8y;F#|t#SU+LU(>XY zV+95dOeL;eV_O9qxQK51#SXSt;kLaCPa&cGfwl|Mz@?p<rb4b`w{ZaK)py^wr0?b5 zafmr7w$|QU@><&RbDf<&B@g}$U0*(sA$`3Ex61vDJ;A;2sez{9szVA|%6(*nxOl=< z4#&-w6-MUrTx{jGPt?Y6c>VH=&wswPKgRe+eK7K~pZ)h=@zlsa$N4-Qd5^=q+pIdw z<IeRi?86fAuFn22FZ@H=5AzRc{)foh_mJd<bUVV)8*b`;os7ILQ`1T65gAgc{T)wk z#XIpHO@SbzouLM%dXjmd)=^HCY~VN;69xW3nQ)d{JoGy7kqHrF+CSHTWUO*PVGzQ= z*$6p+Y3z_69z@EZFL*h)`nMZDH%qU1In>*1WPD`a4NX6Z@X>jH0l>+0exoqF9N6{6 zEDTLUSE=fsN=~aVGvwf7CNJyUL^&yW((Pf76RjJSCvSUVo=L<{n-u|r%n5SnzUG%3 zl-;if$S>*-&xid&Y4(Ep4-VR8*2G$f^kQ2>$n7MT(k&x4pGm|vn6Rk@YwMY7P5d{u zVFS28RFy=C4&)F_5u9RkP=M9WSqu@kyzL{#wn>Rh8%dli8^KI^=nbsw*H5HpnHzV5 z>ADxRGwoBL4AL1N$cEOuRdW#mVhI8GrJp!Or!IlH-1KW{XW=*H(h5C!GYK#4#8Vd- z;CEv(+%J?bNpY0Rzf9^~1a+}p*($TPJ@KymcHz)kaZZkBs&+`8o1gecPSUnR7HhL< z@Nne#gf*KBVR~_gjThk}kTPoZ9*hY~o5mhOQ<p;u<0_%dZtT5EN(+QU^5O~;Jt?s* zq%W-;;)t7r5jScseiv6e`DvL?LwInzi#GKwFX?2Fm;Ud<=yKtA5>ubZHw&%GQ{8h1 zMxM%&jUw`FJ4ss}*Pz<g`@R0!uQvBHoZ^KoG}|s)Cah(}mxcpd`vUj0gmMUPKP+B( zXETjHd9sdA-?AVcn+E>yUwA05icMHL<tyDwB{15I!ay%?2ZQui22kIz;$O#LeHt2$ z{oow_mJK$(X1hRszmlUb0u;Ts{fANf>lh>{tW?5Q9QA0KBub~Wv{`*6hvV8IeV{tX zbA3g*4Tn7=cZ%jFzqX$|GER)Vkw~^<&QP)r%-DbIY@b&=L)uh$kZRKUU)u;@rVZWH z<r83hwsVt@vpb);dGqmo#$e`7aU^0KTaPaCi4@8<vhKK%z7<(&3t_EW8Xk^>F0!ZJ z(%(Mvr?sUS|L=w{_C(gjGp6N{O?_<t2$3g@d=e|~YoW*|MBO~bKFUU0R1N)3Jmbpd z81L82oSUORV}LcQQ+2dW^eJ<~#`>2S1bj6vtx&O*(eR*;##fCgveY^cTc5HXS(9#g z*A3#JYiJB@_{Ij7MFwe2qnqbS4<<fkj50mE!_M+J7$$w@;aK68CRLUdhuCUl>R5Lf z<HnxnI8`6+c)Mey@_{c6ZhP&zZKYTrvi;iEX>-y!(14G@wopI6eqr0@>oKJLDOKNd zanDPh_3z9<_?_*#VaKreKEBm;hGShVDgVk{yGBls&7}?*QV*Q%q-{C|K{pmv002M$ zNkl<Z*Ghpz<)ve+&*_UhH!aUR#o$?TPgY1EgZ$A=*c|>4N4C7cx?{3<(skSs#`UK< zYA+8_UgdpG%sc!mVEP+LLk`<~;T5Kg?MH_wViV2!2=Z+saMV5igj@;w7m3)xGV^;C zLgWE0ta{}Vo}gWQGS}rfxwPZjOj_2fUuuU|GM8K1=Hw&1Gz^_j7z^-)wYPFUhvCli z(W%-6=RIsvSJ>_&(m#(m*?oZi*zwy#5#PCEc>DV8KmQ+o`KMnc^CP{TJ?lrRAWx0_ z){`&a{#(?mH<Hlt9)`!t9>V;Pe7nmDxsG?1oT)!Ao+ricPEGfpvEpij>C~Xpb#wo2 zO21xhIG?u=JF`jsnHf0UWel8wY6+c9eoMdQVokZGI6#g>d?q<=XK4r5<{d=K%{I@1 z&k6>br+&}gucu&L|D1#=7(&H1tL^vG6ep!D1P^hf&$SZ=6NZbfy!4NWBa39&LueP) z;Q`e=?#&<<U1g`Bvgdl^quVZeDA)nqN$KumH&hJ9D3XP+yv1`-88*3tTR9t#{7!Iu zf~+~jDc!**uN`D=y;{3AGX~p4LU1=Tv9;YCBR6T$gmd9`&>}ylF{V_jFiDb8-js|y z0RjdBp)W1LD3|6bQ#n}Pu<~#I5(nQK*j$EKcs4w>l{~F0-2ibbcyTPtBE|MmE)3-h zBCVB1>&j!lp2K=7y4+AjIrFwfD1)mXy_ref_AxD@i<hG<<)J`c;^%(3UFfEc{Ci<R z3l$eE!vh6Ub}VGzv-S#?p?~3+dKXY#AQb+PR~{90(5tt4rSFUahf4Ar;wyjQY6sP^ zja-1xebNu&&$Cg@8~9nYxPaKcWBrCBbuDwDK}F0BP3<kNeT=5X#`ClYG(WZ<hCV#l z*coD<m76&H!0X{?{lo>fbUmERA9nTuiW;XHOGn-OPI@+9BZqiYl$Us1uU!=J6|SuH zR)&GGRc*icV&Gl1R?cn9*bE*0&bhW)IofUkpWE4<Zbn+~*w)S64Wu^Ul7D`#7(Jxz z0daAWLstAHM5UAFx!I9K<<CoA+0^+92#%+_fbCa&D!XH@?WIo`l%cxYSFtJV@_q#y z8LMRzD4f6vzz}<P!GBZ$AT2%CCy*TH;#0KccyT~8WCXv9S^cJqSK!)gz^$H*)h{9S z!p}HB>^P9ILuB(@@^u4KzcjYoYUCrm8#n|@$a|A)ugeCxRpZ<0FtnwkG&_zf+y0fB zR+E=}k_!LIz`+KO)yLkk7dB^e>4C^|=^(=!zt$3)IpTgt2<`Hbmt2jKHdaq;@YVx` z%#WoNxhRhk6x9cdr;M7~OSoY%La23vdieyLL@Z6a`@sYMehTiW7{Bo)ww_x;P`}=d zkjDUT-7JmFzWXQgy2b#uyvO#yxw-V+Wnr*7CYMahM{Z@%j)ux_1%*?Plob@~cd-{p z@{P=FU>OD|r+)w!8r(urm=bE+Vz0s|zqFK*5Ik`&_11-0K^AWP;wV*IGO+TV;@CsQ z2um|-B<l5&^~Ks*Td$8HZwU#NztYaV`RHA^91z+M#0l&2RBnCAVBOQ%WNulYgyGT- zirR650}j?_FFCCB(01P`;=pEmuWVX1GAj!_GA}WANF(z%W$K;&ED!RTbCnZ}*k^3t zLmStG%zM^`pkrJ6lYZ+{9QHR4b<*czMaHAFeY_X{ETVle0eDNKBc7$|D=kVxr*PZ> zj7;f+=$Qk)u_bk}q1H#1=VLR+>a^|1<&%E$Go+lH9|RbV_B9Qhd13aeppJd<#|vz1 zXSoD`)iB~5HYF{;wp-iA{<`(@h)pT8eCH2oq(w%(<fT8syoA%%VE}vVa>uJPU8k>H z#<^n8`ol|}Ad;^H>?c{*XP$IS!~RnyE9LP}%_~3GOupkD(jkNP?K{Apzy1rKe)d}< z-j6o=(I1TX)W|>j(?9$dwBUbfE5^YdH0NVw4?uoUHcotje3-vfJ(~QX@GI{Rg}-5D zk04CcDi=I<c{?B_mwws${~-6uA?e3bzYfdju!J3BmcfiSn^kKo&Bq>7AA|sTI|`?` z*sY;1|H8C<hPl`<kH|}(sy=qw$t6RTgK@A<T(Virv%U;YzWXe)S5XVXBFDv!16>E) z4t^5UH@sY=cT)5{32c6-Y+XonVq_8a3b_45%7HR;S^R(WF%y=v7pKI}SQx$5DKbcp zy;zVUmD)u-Ge>?F2m0qOFdekXl(~S^O+?bPbS$CjxHpxo(D~QGLf0hfrC4Gm=61z0 z(@$|l7SCF-H#C1O*_y@=;Vmt6q!>h@&am|Z3Ex|(D(fyR(~lp>R$FM3v)yc;Hj1j$ zA&m32fnlz_V;{;_ro`HXD=lCwKYVZ}R9^t8eKexw^%e4@<s^+!H8AEQH}DDKJ`9%0 zhw{*y`lTHV>UYtw<pG1P3)VJj5v3$dKWXbCXXz`Q;FVGvROZ-Y{Vvr3s$3vUF2KdA zUg{<;#(=Ji1k(OP%R`Fv6Z%#9mWvX~YYI6pRnrZjM^-a?_1zQQY<EH9!3gcbSS(u) zNqllE?=4|bk^==u)kgh<)OHG8%JWG$oBDiu=cmld1EFj#6->MB_psHQ%L9?;`Bbj5 zS4LsWCkJQ1ZTU4$e}-=s^V+Iv$|n9}n<`U?QL9|i%O_8ij!1)L)b_jjfN6t%um0O# zgbn>H-pH{b^uW*{N_qQ<8c))tpOj7j!bhE2CQZY0XsDAq+NS<=Wf$AhJ8iHFaCxXh z4hw3slBckJ$~NHeBV!?UfL-i|F2>~22HBu#W3i>DuKcOTxlt-?hzLiWwoy0dm432Y zc&oGNLB4Ks0xU{`w)CJW3@C|Ak>^Y=-=l4**G%i<?Nim^kSPk3N0ZfaZMr%~Nx<xR zX<zhE*M=jJY{e>_wv%l{f5fKU*l{5E)Tck7$E5j;&De8(l`ZYXA>7SR<Hirh<|3%m z^(se;QwOJP?mEs^*7Zk0m0usIAKcOsPCG|u(u=2d!W(BSuY##ha=seyG=2?zH!EYO zd^(Qa24SD#ukjZe23Bc?*6OR;sqLJvB5=5q25iH`*T&;Q&w~$#w}cQGN<?T;KBi>c zDnOe*+qYHm$xIm2XCj<bWYD_;$M*I&>ydZ!Bnr1M<ohDm>Z^=4pWKY%7m<rx|LYG0 zD#wx}J$!)gAsz_&Qa%X>Nc?H9jpY=POc<sf3gIssVbwc0mRm>=FM7#u%2JU!^*ZfP zc=9ClZ=Vc7I1WR6Qi9E@PYcC&pdEoKfn?LqhraF6O|1Q(V?YFjTH7j|N(-FGHF63k ztqQTW(8qg-D{OQkpQlc%CV*oD_~mI4^Yl}n@{5iTGzYWr)2|I4KDfcx{yqh_wo=Z$ za`>S@_HE`tSsrls&Aym5^Dud3%qAau$<H9I=oIWolDR2AWFS3lhGNq2+A&^Q9u#;m zB~0um!PwvNurh}}#o=vz_#}~}<!L)&(_U%mvHRkSA#d{wXPNpY47~Hh%DO+XtW3gr zsILAVq`?Nh^7B0|ALW;gKK=BwC!c=$DSXyX{1qYL`1yIBOxj;GdinB2(#m0w&s_iF zXaC**{-b_cM16ns2O}!^7e0CWvw!>I>HkO4<H?(_4S!R3$sA63Df=PGE8eCb@@jb< z&z>9ipFUvzHWW@jU3%7UpSgv7PY&Eph|BXmaQ_jDBguLDbL7l`aIs<S<RBr7cl8(A z|I_Mb&fFs?7g;ZGM{?TJG1)~-7G`DuKnUiLk{?mBFi`~RE!wLoaF|42L&HzUtb590 z=VQKFBM~Q`H#}PB;47c}IY|NQOSATo#AC39faRQ(^Fl?ST~s1~gR+M$pM1ja*?;7( zPq?vgz(sB+ajm25#BY5JTsf#aCJ1CPEg1jQxj1tG1_s)eDtiuWNC@i9I18#R1J0^5 zP$8m$4NV@A-hyl-kx!h^Dn0WXoEU8Pd`A+z)T9kMNuI=)iE7GIuV@?s5Zv;mEpGIX zs{F060JN4HcVowDA#GI}PS}+h2<RdsZDFuJB*J<Q08+E`1sXjA(?wZ8;IT4?4~5cF zuCxc4EJnq1vk6bzOj%YgAMelR10RY_iLFb0XjSgDw|?iN(Fcs;$&bsn&H_yuQzqVF zdF#c!@(@lrxww%#gA=_QZVyMs*b~(rkRn9L!9DR;zB69Ctv)>{O1=DtZ9E1)_px;S z*hR@lEEIg&B2Qf4<B?T8#4(P~*;6VPAhEH1!S|N<wKw~i`1ZRjRMN-50oP02t;^z1 z0t9XKoJHqr2Mqqh5vJJ)vB+HbEb!O>=jnqeqD%lP8#WZvZXLO$I}50*Z7kciGfo=; zYoGpv@4mN<SVW-1UfFa51I43F&55gyZu^xLDykRzq@J6lS#Xc1L~J2P_vkoj?OIvY z;apH!uB<+4{Pj0%ELiOMX?yG>KX@}5;qzS3Qf}+?C&#{*Jg)u4=U-$IseXQaAukSe z+#P!;sJyN3yIaU}FvBaZNl3GcTk9Qz5htNzA$2i47J_FMv3{KiqWPpUex~NOQGLfY z6V^ksecEad!m_BxM|{OgZAUCTO!tbNB7t_Av2ya-E_}R`*^SIf5Z>sWU-q%x27VF| z6LyhSi5mn8U}$dpSthKZZHGP-?6s9?4;Jdi>SvoOn{-U)5CofwCu6%x($rxJU>O4` zd&L};c`j{WBj6j@QM*XXzHEPyb~c2O3_hwE!`MNl-{mPaB+{-B&p4F%mBYxPqkqPR z+HtP%#D4aN_$4^Pr7y^XEAywkwS@;i^lg1joy3WbV<+kQgib7sY|%r3DQOw8x^YD} z+S~EV;liLKCN-TQF$Kk@fV2mV0gn!+{nr+Owa!0d`RTXet4+^erBT1kH=!7+WwPai zFKuNOzM!RTd3=&MBF84RjoPG4Ta7M<PXMQEp%pom(XTQMT@bPkahxKZgHmOw;>D$0 zx}kH#)xmOuoR?>XXnE{1I+?bgyUEsX2BK|8ohu`0D2MfKPCXb=zWY4UTmAHzZC3@2 z56;t*@~}SRKK|%9yiZm}K6rF(hWrr$-!dL?)an`I)<;kK6oP&y&G@G6GJP!mw*F2% z|B+LFHQh0crxTbTKjHFV-{9BRvK}3IW$Tm7AMq{`L-p4N?We0}#;Y9Q<5!H;Ye#Y9 zC7<22$A3_0zfLF3=pY=tKKb-xY(_h9Xy6NN9qXl6+p(Tz{NJBr7uUKM91u9xt{q~- zI@RGz;@f!I%r<k(QI=0W*}1)AOlSgQzr4yOY-m7d*Aq+Yv2~F$e#YU(7hinw<nzxz zN3T!O8jJQH|9SD`n{U3Uf8p=a(ni1W8$WsS)1Ut2$xnXr)8t)OIF=!D+RpdVcnI{> zmtQ{l@~f|&e8r^=lvQ3_um6+3_?LdB?SJgygE$!Z%YW^E{P+L(Pyg^=(*FO&HmHql z*w}QO^AcOO;R?59#*1?;OS<F%xaIK<+);pQ(=h;_FatZeD{uSYhUFbrqtDho8iOl( z@OGxOHziyM2WE<I>c(c4E!q|ALE6q*s_C|8?L%CF4td@KcEuS{Pl-w0lmQ%D-ts-| zIOU;P!a)z2rFBk{kthHcdKpdBPhMOPXbC<j&KzW%Tr#_)JS`24{2AvG!!&m;(R_@M zp(`TziL0AgMrj5;CPH-dgHql_#b8gJpOCVT=9mM14#s}Bnq<;0a6%nZdk~UL9u;<A ze#<9q`A)09vH-#O*}y2PDpqFbIC;@t($kl6I0B7bAl@-4=lu(5gNWW+1qhCk$fWot zl~12vnn?`uftb87K$SmaoIH}lCK#u6q6<c_m7H#~u`nNBt8Z%m{u5u*Ee3NE)Ed%v z6u<^bI2n~<OY>8E@)4AxK%3?A)@UX~>;1$;(G@gd=^G2(dv$NdN!qr{M5}LEOj&)Y zTmx@eNHBRT3A`c^$><MXmR#U<!5`@W(Z^I1E|&?E+Tq*9u!}wx0`PYMu@iZOQ64Vk z%r7*ASn;K?lmB5$%1md$N-XZ$%Gl68Od6k#4lO3##DHx!q>nb9ML_f3r6bi-rXdqP znp8QTKJ!s@7Mm{kUFg|gz_Ned1LV^;fs+)WYG}*8)U=B#4^%vO^bo-Vk>*|arQg_} zrybJcU63fDGDF7?z~mA7+z_GiD+&L17ErA}>|u!hB+72s0uXp8r!AlljCj(H-=I|5 z1-*6=zdk0Q5(sPAA&+@3|JwfGDnEV^;kZ|j!CyMWl}#Z^S9nD;w5`p+l}POHHHM!- zS%oY2f-0AbX6@=m!40q*g^V%kDn4b_dl<61yWsqU1^j29eU@_RyO|L;?;jzZjk>zV zaMdmc9P}(7VfPTcwi)?HnYEdV(cLIU1KZa!cvVJen;V@-+n$c6mRn{2C<u1Tm=_D3 z_4+Low2fa6ihZPGo2k2%f#9CB`ANsz+>Fy-0N_9G#&QyXh6SpX_8I+@_9$CgmhBZd ziOQ!o>Ug8Cw9l`c)l)vqQ^2;})E(bo;zBH}UH`O9y|Nj1bb|%2xq9;Yu4z&!Qy(ym zaw*4Ed3{}5v_G^B)?dVknP3dn5~#AIsmY~P&<i4q*LEz!fKPX@4KklXO1jFFTk=vV zja2rA&d3fC=N0Ys+9x^lseGta6?iMDv||T#vLxLr8VofVHXJfeP4k6Sx^0Wwxbkhg z=%4lZj*)2#$LH7rS`(}1VK(GSe#$ZqKqr<Cdn5;M6btO8eR@Db(Nnp{{%SO+B%~z1 z44|dYh>&(Z`@*T0zJ^TnGuH=s3KRQ=o`e%dZ%d_Vd*q5Z3#4e5I>*zFsVX5qZRH_N z#%X9#oWANfV*1EK$Pc_67u+zrxplm9+;YR}nDp``IM8=|@YmCP8ek7cJYYEvb)nUM z(s6HP-|^GDe1vg+vTtttD)YigI|ud5gO2sek#UAO>Xj21!mHOOd}!yDLtqN;c{#ra z79NlYPsNi@Kl?NX8yZgjp)>T%%U4_I8|vrWDZg*Ot=&B+$>B<#aIRgX_56;n*1=C2 z2Jy9<_UoMNdZu=MmR|*ezCMgj+Q6W0ZT#s2V;fykvN=elAGSU960VF@*b!RVuJh0B z&-Lz4B8%6x08eKlTgMH2!?^%b+RC<jWgCvo#8J-Z!iSe03TXq|EbW7}#BDqKM7f7X zJsegq?cvi$-+uFL<~3#1o*LOXY3=V*O6pi!I2!rk2ZvmDpZv@J>@WYdf3JOh?BRnr z7_kw5`pMhh+^0r#kn5$xc^MwY!o}(I6oPrf6=(BXXC4klak?hny)XQ*miS`D!H3li z;sJ}h9<qj;@~hVk_)SLK9qbCY@EhNNHzQ8EhA?9zYP#`z2!BgwBnnW6xQFo4o^T|_ zWYMF_G`Whc3{WJgY_&-;B{-l)%eO^KgNg@+sx3=v+ji-mHdog2Y1=t*LbEfpm6t$y zco1ie$Doyu^~gK;F?j1&xttK0h@`ojb|+KIe6?oMj^qyB42BHLtoIn`%qtFf`PzZA zKVZIF!2O$PClrI<Rjpo@t0x!8A2Yx@D0e_Ub-VYFg~?8msvOyrNm+g5*Gn2yi!UD! zR(v`olee1$2J8cO2~iL%1(&oeN&A<@kwQ;JN(<I9q0A2eVnCh0UkmfeDT94Jt>U}8 zd8{11`Z?eNdrK2!nG^Eor0*ufKNPHv#2U_fF}eGnNl*StReKNxNBH?K4J!;Gzzv%B z*wS{hC={Z&Kyo5bA?@@lvN0ERmbJRPo90fr6Ci5^Y>$tCpr6PqHX$Dq^cMOV$KrG7 z=foc}qm#Tr7bY^UJT3s0n+=~npdGSM!H4Cq-?%W-j&3659X=A{^3Wh($zTFjQ)!E5 zdo5h(P%izvly7MaeA;&GfCTXL6UnxhJfsUYH42?fXth6CZ{I3?YbB*!<AUl#x^^zI z<4UNamkSXeL(KvtKJBM0JROil9&IWu{-l+~6?z%xFoR90<#{QxF!m1`EEfx!$^kF* zr8}it+gw?o(|#?-_Sp4ad7*1Rv%h#KN@nz=Ej|2<a@@3e{7oC#7hDYY)2r%9IXtyX z`kr0IHW4=EeS)F=y87=|dQMx(M^>~qZJP!15mPquZ`)}HsH2<m)ZWr^@#O;2gADyZ zGuUoRQ-4w)%hgYO;p2;x=yQ7sSN%W%Seg5EA!FNF`uq{cmh!#W<>Qa3gGM(N7)5^C z`;b}LYpZNd@PTJ{FQ0t<_1F9&1dl623ynfU-_|D5TRQfeESjT<a_BSFU)>A~uePy2 zG~E;_Q*;B+e(tBi_xNMSuc0$G)Mh+L%_9@YfPD<h$4!qLn@BZwg)4l^+uokEZ8VR! zR|RXZDYh`EU+1W9xRfoj&|Lan`Du&JU&0$Yc69S4yzeErfBmBVLSFyQf?Pufe*NXN zE1WB%Ukw8+;|X%P@%4#H@!c@hhC9#VQ&GfmVsMDHclrW&AfhAu><?rA04GN^^z#d2 z7NS>tnNKFdKQLnPr|t3w19@<nPu~$9bY;l0LH>~eU-2N3bl{LBP|&h|$4ZImSJJcI zUx9lQn^6**S#Bs3`*${8_<vD~Sw}WqyyA)`-q3(oprH|+D9;=%Ka7;Na!eZk>>5Hp zb<J@ej3|SYq6fO<DW2&cJ70+L3_5xVAl_rQWFnJdIYva{j#u_I^#^H6({|>951rUH z_OqRPNGN4D$@*w8pRK}Mlmb^8M>#wJ9=@%+)=N)tb?lQ19UJ2>@QZJvr{j+8 zT-d(9NnI>c3GLhU7f-UW@%IUV&-v88UxVPFmJRb)j63RyFu>da^9fG{e32)K9WTD- z6Mx61Z~X;BXge?YH1N`}O&uTd(qh(7noT<@lXcoB^8;n;e>oV5{JzUc9cxp4(wCzu zjt9j4nvOP>m~(;sTo|w5Ao*|n<ToOV_S^Ct1|Uo6+RtrV$9%_({%r2c{Mdj8gVXoM zKg~BdW}jn}dP(1>L^59?w?0sx?zm!mF?wYEQkju^<kcP$bS^VEx7)TE)2LJ~ZKeO; z0oU=!_<0V8?0@o7rwzh<{>A4{KL70V91vw*2S&L(AoEF;Z@&H}a=*c@+NEQvd^$Er z@5`^geDd~7^|Kuu=SM~|kV7_}$noiJbpGnAub+JRCEtRfZr6+YMOuAq7@KG?khxbU zd=-@)sDE?i|FOp(%)y9Hjr^m(_lN%qzx&U>uTgal!wz`YeA4>TC2YO%;#{iVo0Q8* zid5K^caf%c<hj;ZG{vD|ogKrnM`c*x#S5SrkX)f9eneEOB4<0wBM?)Rp{6QKiFk)? zE}FidMr)$AVhxU>MZN>ELPesH?=%L$GTsnko4Lf%-+UKJMS^05j@&2x<tKcJ`xCrQ z{&@sbIj=kgQ+gX@W7Cm^n}d*pECa72j!ZKN&w#z4`EDn5F2?+N!!u9DSy*Mm<b=di zB0l-y;z$9c>Ei0ma|S}{U$a2T!We?;b^V2nmCg3a1jB$T70Vq&eJQKUucHk}#lN$7 zaH3-9Z~}J{<dcC+giHYWM0Aa@iby3gjFE_vf_Eog7*B}JNe?9PrV3!bCB3tZRWg?= zDYrEKLTO9dzKYUv=}5zRQ_-5#H7;g+R~e71m_>w>M1v{Urc;nx<;xvk!K9HdU5$E3 zwty&@5pc>b!e;SZB9S_HfDKZ7BW(y_KTXYsl<(K?FZFoPl0V(m6tw-DToz0UCX4ln zR0aSze5;Fz#yBmyxFB_5Li<OtQ<)=m2ny}!gB^_thrXmE`@#~tF<+Q$SS+KTcnDW) z@+>&$L|m5a)p}}0hpt+dmgAc&T)3QJ@l>%sBCW+=xYXe1ZkW96YU<&7P3qE>GiM4@ z00uyoxk$<QAW%Yi21h)LDYDH>XlK_S{=BP;__U?80QAbji2jyE7`6|738&xfqNwoF zw{Le**~OZ`l|k$HmyHH;8mD>W<;wxh@SlSX+Zo&KV%~BWnnh55_+X>_5)~XgT665m zC%)vBQ&qKzX(00_jvIkq%7Bfvtx_t77isyr(cMM4n;30n-G+==_|C>29M~p+LQjf7 zhnI5J7j`kb3*JBuXyC<K-C6vueIoDp(sLe9$l~*3AA|Ojzd0y$C7FeF7x!%wWC#(N zK${4WYC97IeZCubC2(A;FU58N2vBUZ8wGW?e*3R!n)7IT(c%ZrAz=gKh;SQ^2tdnO zz69Z@C^)g>3^g7O#zoRz!UK)LZI>K|fZ*3Ni?09J>e8yezq+3dG7Ea`wBwSxJEl|@ z@aY<vBfzUKVqeBNpO$#a`$gpY%Dyso6JDlTE-x^r%jaNA9Qu-98`Z{X58GCyN58ad z%Ib^lGm$!N<hYj&E91|bc?qn1#TQCG+~HrEqdbzdI6$_jFM$+KKa{ul(3A?J2Eg_c z)6$}^Wjt{<mXdYl(}O8=K__w7$CTSmS<2E*>Kvm0LmJwK;-rO|w_I6L%?)QM%vs*H zkk(!#D~<$7i%$XlKr-oDp-Uzx7g^1hbA0{<n?H)qD}qQ=LeP!>;zy=ajIGeGUsaZn z*a90Hh?BI85FFr1_CtjFnLej|atS}z;osJUmTe^=6*edbt+G02ZnS+Yubj3;4%QjN z0&DsBSZM%HTY04VoF@}^^Xr(WZ@s#InX%o?wNDwsickSfAMdKtHj#r`I)Oh2oH24> zJPZ!3FyQAx&deFW=!eRuP957xnN9yLztnQG{HTLh$GMJoO6P&9hdOT7w{E|}=A7o& z6Q$_aJ$gvuniC6$mSZ^M0kcTPL3QDPS2*?4CjLT?FfS3p1BB<_^uq?nL+x#F{3!2^ zzm`?Ms1$tbJ>ck=g$>eg)Ux<{@GGt7tgAb}VmWoV;MujFBiA$ML@f(^+M0fu4^%S0 z@^pqa;mVi+oc`>Aj5;h{ZLm)R^_?HuF}8q*Uv+uIS6w{tI`z?-wx2pWzSNd`c(aEe zfP{DTwr!j@wlVbq#tmfE_xhD6eYk%7_1EA0tKa<HUw#lzi(t$T;~gU^YIyza*T41b z<Inyz$zz4Q&J}>mO^3-~crC;8bh`SIj@U~O)7v2~C`U4QM{W}0XNVx5^h1EseOUTX z=9Tp-!<F9^-fsUeZ@2o+VBdKFU_O(?Ah&B$n2G|MM6C?EK)3J*-UDq17ybryGB@^u zN&f+r>kUFUw)CtsC1~K6$<j<rW&UkrVYPCD;CZpC^$c#0@vAR5K#5Asptj+87ANLH z7#SQ;8ypxNXd{{QNqISOJ!f+C5rLfYXMzKYf!1e-@5uWGeMY|2zh(fvXQ1~|2*vD% zYA4XqM;=s4-@&&N7lZdRCJp|M-(#mvzY*5KKK7VF^o~yk{8U5v<Y9>ZO_@vTdW#Rn zrV8LcFz<q0Q65c0A`_aiSBMQ{+aQG}u5iQWVgDWiv3Dq8yXdT(UQ3rao8zNQO4PTp zZ{dJVU4$DNrh|J!QKJoqmV0-y?&PFqrwjtFk11Pz^~g5Df0QP_&S9D|ud8uGU5B7} zH{YQpeJj^K#Fo22a3PWj-8z18;EfX|vbh+r&0XAOff-)F7(%SEWRD&o%)qUE1-}VX zANj2yUp?@@$O(Uo2g$TyS*GI1v>pAlTq}yT`eadL3G_o_aAIlF2MKT@OXN_KgX3W{ z?XK9;b`j-5jSf0AsLSH7bRZDngF~OS9mIQm|AG&A{3!|-huTS<?6WLbkpGUp{`SrV zmzy82*5#>!`IKClb5XbUjXsf2{^h3%^{v`RX2pYU2cZ*xXo}Otn=f~(&B7zR^n)2o zJQ&HQtUee;wAvvXY4=YQSe8zy@s41+dG+?O?2cc`N==?-C_Qc9BGARNpYj>MWJB=` z8|CXQ^CX#LTy5s!uLn%m@yZRT_<prz_dbf2v6san+}i4qS^a1aHpqTA9g98r<Rcy( zrym&h)5gBxzYANj)80}-HML9I;wwWr2c3H`An#Z~*udw8pI~=%j_lfkN-uj@4x~uh zuKM5`zgI%oal~}tlM3B(vAk`O_Nb-;T|zuET8Oy16dyrUDub)C>{T6IXt$x=u=JM? z(q8y}{YZRmN*jQhjes;Xf>reTJXNIA@ZrF7>~6aY-%W~bCoTJ?yd`IQi%jb%FQ}R0 z;2E;%KNJq^`f+?@a8m}fy2}3zHr;-l4F<Z%&iaOAnukXC7$ZYyVISWc;gb^jjAd?E z#rBun4B}AXJ@Wb<D1XW~htMgdZtJ0=!NixFV{)EcQfCiGu$483eBId(4@)bfWUK$$ z1KE%ZuA*C6$fPZUCTaO%+MC!7R^$^0d8BKwWw2h_A^P%_7-M}VPdT~ivmQ<@4>Rh8 zf!4!|b<=adE-Vel8soW}Dqr!EOFynUu65Yla-b%7`-5}BjKecNc1*TU1!(ltcRGIT z_$&3mBzC;7tl4PV2DXJlRFL6WzV-9zpV;bSzW(4LNDf;O?$s-w5XK_l*4O*g!S)?_ zYh#1;`lK<>ZsaKgbvon$?h2E(0Z#KcmIO}Q51sa>v8s(MtUhs(#joq^Mq8Pz+aUfc z<}&M7F6)%ZR{ru!WV3%Jw4GK~i)5L(3V1j1X&>jvq#J7+HE?dv0XlK}S`Y7+ciX3S zto)^Ied&7Gsto#T1d1JOV{P-A51Y<06zLJJS0sf-{d{rdA^iP)4{M&|>+*7}%0UM@ z`Ac%op7}129{8NHsITpaX2>Fcbu+Dvzx}pfg^`XyUamEiU3;icX|>IQ&!L-#9$V*& zR)yL5$}z2nB7SAbcf-_<+6_1!_<8$VVfKOCI%|F)%Kp{A@ymbnfBwn;_D@jvzxiI3 zaYDMu4VWE4C;YR7@5h^7a3LN}5BM$j(6i3o^GLAXnuWJlExq7QWjh}kXSoCT0YS@e zh)w-b=2TW>i_YL+GXq8loHgH-I>-tXf)1mmZ)zy0%r|03)|SKqW4~ZNz(1%_?xL{d z&N!%Rx8bE2rB0mre>Jz}4E;((2T$dG>jV(~C(Jb^6@TLHZ9bJ^62NX*Ao~fI_)G|G zQ3gF|NzRS9Wgd!18_>x1#=+Nvk@=2k>Hu-D%it$G0jj0VLO>pV-NS)5e$ImG?o);b z*If*>Sx{!t38FS(!uM&Bo`_4gmp1k55RY3$t{a3@2K8uczLJ^xp}`4gu#6_D4h_R+ zvdU#sha)fx6`jNxf3c73<)S8ihB&qn&$0tPR7-aV8dVf*5#KULU$A^`0nN>V#n^NK zJ5i4;7KMWCHgpnqLbS2)8t8AIgKFr5DDLQyMH+c^=>*zEhqSwZ0~S1A1SrKECm@y! zJ;_CUY;Hb_GU)0f`Lx?uW(46P0DRIO##;u?!o{XBib$jD)aL+daC*21Rlj3S2u-Mj z5BcavE~La)c@%MhtE@h*T0CS7pNbb5t$<K$VBd>wY+6`w_(`4q?gnOk!MF>lEpu_J z485!q#?65A(}#A!!XoQ+Hp8i;y7p&h7n!wE`LrEF3*uS$(a&52<tq`$bzRK30D_rB zYlEcfD@ZVEw%&1Beba8#<tZTLRF*6}fzy5jKjAZ-Puf9J-YwJSYm?|MQ8%v8FS@=- zuvi;L#umBg%1fMc$e}$4c6bO?8&@CsN^`_Ydut16-tkTezsLR(yK6sx#(a&SFT+0Y zStO1PP0Q0o;p(%#xU%RE)zM9Hzrv#cj)(e?aBgJsX|Ib<^5W#{W29|=<zeTS6t~o4 zH2$lMo5J!L-4r&VymvElY$B-l=T|+5etTa(w;eY`UU=&-2JL0rXiK>p%=aL~HaN?~ z6(-Tf%>++vLIbd3bzBJTJT_IZ*a3d}LE1-IK+uPL$zLw!8to`-E_9N-_7YE<7$TGQ z_TsNHrY7~4Z~scWC}QBmb&M(<!1^@T=p!BZ7-BuZ^yRWGzf=~T@)>KOXVU>qS$#qu zDsLr(T5PJU!T=9W^(0Ht9fu(GZEf8)%y<=s!YG%%Jo7Jhi;gG}am2Acx{s`i4)Kf$ zGdFuUCO?siCj;f7T)C*MZ0!rlQ{MLIW*MMq7jX?GR(%|U92<?<oH@n{FWt}|9;UTS z8o~NrPnlypkaX<x^C3#x7R38xOJQXzjio27(ANN+v`fqCE2hN}-B>In$=GuNzLI&E zM&|gQVv>$K;p@`s#!@=xp+v^ij8&A|K5Rf=aYc6_^_5(XXG&SWlh*ymub+HG|G2yJ z;F%``Ja}+kuzyE(U}-yfICt*>$vtggde?9J6{XIZqdRyzR;yy=Z~wH9+V+SuFMp+P z!lQaCVc|Wv@vzzX(U+Gh-@+)5vKjB#YW>Q%{8s0u{ucE#VcG?n;_0(F)T2(=>RR1Q zw@#STj;~(r!Nciy#kKA1J8i>^Mf0HoGt$UwJ<b<Du}$kI<~z@N=+H9tYafY8a+A-7 zh1;?o*c7MzMf<ehY9|kQ)_1g%q2w3?=}&(3=`+4=^BM1Bv0RvMzTxXp-}<XDZ4>GG z^;~0Ns&D5?<&jS8ihr#=eQ$~U4`0Ma&ZV}m@7U^B&F<jmuhqQ#C%^MQ|IxpRa39F+ zgE|<oP5<4S&wu{YXJ7vnk{-qW;Gl#3I^nzU(}`x#yW!zrepArQ(y}g-hrL1h5?eTM zjZ(LC8gtL03;+wVakED)!X*||AmAl`1_ugRS}2hQQ~Umr;E}KCPM86GZzN=)x%2PT z5pi?75h9SKU-65#q|cm_a&5JB%VXs&-Rf#x^;7s#@qXc*a$&5$lpo}QPkUH*y`Vi} zS$*1c3S(ymGb-}Qr7+?%aD@*Get%lkcMOQ(V3_Y1lVSKxxj#deg{PAe2P86)X9j6; zGk`LwIAKUH12hLOmw}lfwg)LJ035tC*ishXlLix54nvqEvj}1`aiNx9Ct)y^VQdp+ zN4LW^SH00Kx`_S5f;P)n6ae48aA2;zrr@wI#IN)LYd8SNDo2T%oa;y&_y=xu0}dR0 zOZOD05oILON?XzDTbUIq1m#15zNjTi!^*u#CVkpY`a!iSp~So|?1-4Wiy0?<;|<!+ zjqqy@<&-rW11r@DS@zLue+j`y*b`vTwv}ENLi_2O<3Yy+RY8x*AF%{hC>5Ce>Jizg zcj2Cc!9t9Qs9lsK;5GH)otJW#zj~N<F|)eOHZ=OGvqS@<U$1Y=KZ`V<3h-dW#Z5&o ztTJ|Er7cLdUWsf+^V-@cCoJ>dg(jDaI~U8LBlodGY#Kg3%G$oIeO(ADR}VEw)8|~o z_>_oGj&w2EO-yOE4dg3n`)=*8Owd(c=qaP0n!e?04ed{Z2a<mV@s#!67`dk~dYD%4 z90FXdsa`6VUx6Tw9fqeiMV!dg&4GNpY%}FD9$RZa$|LLOaxP#&NuBUL5OP6nh^}m} z&^kKS=ar}J<tOT1UEnij0ckraw!!|<Lo}>FTjnbv*ekY(Jx~Cf_;t!`tfA$ZfE1Ki z-KC{8K4QI_lhUTndUd2=eZjimMF{HQQ+oghZx2G^zu*d|9rb}&4_J4V%BQYMQk&`% zwFd>HYai1F>#m`BWwUfEC&ms}_)Tw{>6<IFb+*~*v-Mr6=J3Ec8$(NM7dI$wh|niK z<`Yrl&u(bc65X<h&sSK_4bg6R(&oZ=#VVz(EU`Cya#k_4QcI<ENv~;=9SS;X>`<7< zK#4qp1FnAJ*oQ=sZ{?`{JN^~6eMP(Y&Y{S3kZs>`102yQ7cR2VW=qp~TKg4OWX5jt zZi1_Kb<IX-#s{C83Q^imsnJ-VgGT%iUh?ZzyQe+aY^{A_HYwQ@p#+%&2U#Z_AJe7> zkJYtu#67juz<|g<BeMMu8qy9A>Xo;aR&ez-s@|mNU()7MC-65E2Rm6l!F25=4)$$_ z4L?Dm6BYXvRLg=hc;*dRA4pf&MwJ(#ZG-e@+QT)|9!}V9`3eN((o7!^W;W{*sO{U1 zzK_Gaw0v)ePZneoD}OG>``7^iGM@}z`NbEA-9T4g>;$b%uP<dR2j96Za|s(_VXXIE z9IhX8AVYq`%H)eph4s+mC9sa~=B2s3OfQVGNH^oE>qUb0)(%8T3u{}tM)fJTJD!TP zOpT@0@uK$W7^lDXt0;b;xb@3-aV258IDH?8FR8VUSe~aeo!?xuB1vI;U?Pri+9!e{ z%O2Xa4Jamb{p?sFe*01SDspF?%owq9NZ<4s>NndiXSwan6GS|X?V-r${8F0q`=mz? zHI!X@@BDAN9wL=(w~kR+tEZkC?EW#b>1RIC=sRY#n};GkndvXk__Mz1%>l~G|M%7Z z^K&VFNa2G!82QC7e({2*M*cpH{MR2gw1bw8yWyJFnXdWAV2(0}uanFcCzi*xPWLV7 zIC84rMShI81Oute$hVubEC3vI-W#aPf8#5d1D2r@NSA*X`adWP_66LMtS^2L{s6%? zi@`_{0V0EwR&^8Z!sJ8)QRFGuNZU}D;)iv@NGkR!ZvB8VXccFXh{N_F@2!{E<3WgG zaaRfdp`XD_`54nm#rjU(mTbFcnc(B~exI5F)33<5@bqgnukZN&CG=e)WclGlLYbc; zymC;7zGGsZ7$G4~CsZdsAIH1r&D@bg0V;%t>G>%&7atCq`agH%fr}F%G+eBkR~_w} zMH_H7fj4E}>!3?jeAPG>5gDC@mF`&S6eNJ}+(a?R%gfL*Y^e#QQ?k^^!)O3gAqF93 z$XxK`3*}ur5sPlz$-HIe4M*-FtyXg%J4nx5qogYr6ev7Dxjg|~bmwbZg&qnkmb%V0 zi!58oMM9<0o{)}RweM_JY&#(Uv)%o^{2f1O+CWVVSh^@2otKX=kq&vQ2R=Cd5g(a! zXho-sjAKg?rQuRSUgCvjkdR5j$Q7FeWMT9UVNYmNhy6*fzeyrcx$R;s#Nzv63EKrz z7cRTNxW?Kn{Y9?Q4879M0mINp9pqOUWt28OFGZrsPkrrAE}X2FhUNC<=WGz4^K*&M zIe@zJi7ggo*}Su`5;pSA!plWd4mw##Dz7w;ei~mO?}jbqTCFyghnv{EoDy;FzwIJR z+KM+;i(G40+b4@ZKhm|WfQ#Hf>uSDJMPrLz8Py%Tjg0-&OdC61xR{k5pN_FG%VIvC znu)8a)JJ?{ZC~Bf@2K@(KIJD<;4rcL^mD3-$wR{@;L?AzZRkLc%GeqtW829l@^IOo zL6(5>de!Guxweyb4v9QUaT6O!Tr3M~UHgji1y=}^+C{19Lk@Twq~``h0-f`cq(+{# zqvN(b)X}g$X}-K2-yJ{7FF==D$Ahy@+0HQSzGZ9N0a)1Bi89+L?KHdu-*%QneY@?E z4f@JWowQaK+x5<$Q$t4=;OY@wYy%khNvS@T`3W02&z(NLe9lkI6<7Oq<7)0Uqz8-) zL=DK(H1YWGR%!np496g86k*e@v6VKjf4Zs9M*kqY97<ztxU~KCBfoxyHE92CV(kZc zQfp{qj`|Jk<+Bv^fP?Rp$FAxUT<g2p)&91P?=+!y*%L!lTfK9&e;#xE)E6GKkSHDR z;!DT+q=#<cFX_SwYJY2p9ZB}7srHeNpe0?^FwXoyDrG4*wG{M7|7e3Op2RKU#sCLA zaHGp&Yr~8ew7X+Om=XIvH|q@KGF}K5(vs&=4{a=Q{ka?Cz8Atnfa|5ty73f7WPjbP zKYdMqChz#HRtDuPtyynnebzOa{-NxZn|{A?8cRn4#EvKH2ewUpMR}`}^xH=rzZz_x z=g-BnUsa#jgzE5<v;V;5iX@B7QW0C|XVMk^I#yZtmM1*ZQo!_(0X{I(PU=<Lq62<< z&mnz$gSJ@N<z#ws`_7j7s<5$f>^^n|zB)OkRQJw3d>YP6VL#<1wbGJi4zQSuJRpc5 z+$;YTx9x2G%HdOjF$!hA7`0#L^Ds#LpM{=dSNU{o1|gv^j^|!&Bkk@77_o`ILdcVd z_=~#KCbf-xm80Wp?Jc};rFpjZ;S27a;=A@a>Y3k^!<Wd%c~UoYv5j(%z5o6%{@XwH zB`6<M_}~skY~7##&j0i~|L~9h;I~PBwykZ)z4rH%XS6BAI_JV~tm9dC4Y=?2v3Keo z@(}aFhTJW!E8X{{Py9`7JQ&*}$Xb)mLgFgtcA%8KkI}>Ou(@CyY;Vhs;)nR(m5<EI zddgXOhxQWnlMvFengh4xkC^bb=r$+(E^Jcsp!!zKi*8n|9JfG+ZBy-yOF0|Nw5<3H zNXVX_L=3=8KpE&ZO$A@G@f5;eqwyzk?}+bT@%=|vQ4FlUU!og)CRo32z~kj*%7Bhe zS$r~}I?=!3alX1OaMbC;JFsSf$|Bzh+)cTU**lRP6EN@*Ka;xlaB+bMri{7y2{e*U z+X$^uiH(jlJSSUOw$Au{VQF3KJ8@Vde|`DzXIX|x;Y~|na`0Dr0rtLirDHA}r8((Q zirj^;fC;4)VDhCd?X~xSZIlKB$2e^eZmlJG=wXS<ZHSI$s;dk8{EhC}fGA36G7%<D zfhhhDJ>{xTsE-ixi4AFAf9U}a7z88h0yJ?Kah4dY>Lyl|hK_M+dyB8>hg)u=coBAU zm?x&pb16%FigbNzV8O9&as?KLf{e+=QyU57M;|dn1{3rn;k(e-#YQ)2=?8#RA8|#H z=GsB3{+(O`0HF4EL))*=p(_=B6(@^vWN=>{QRu_Ff&7S1cki$_Mfv)UPlUKQa?z=L zF`_y_+Xa=2&RzJqIJC`;^K=(+5s1V=_M;7kMr<IhY5&dV=e?tdB-EQL^zGpWb-so( z2et6aufZU94jK65*+rIqX5~}g58?Qu5BS~fS(HmL`e3&l3K81|woix}!P)kxPascR z)3FI!0LsEeAC{wxClCY}9eXGNJ#Cp5vG>OqSx`RrQ%dTd`SZ+?wR&|dix4rQ?_beI z`2{RM<SQM2LN)!4wCzvEQ<l&cCW~tHF%AxTxRI$W`pj;CwfFKao(o=a400orR1SKE zro}0ju0F<Lr(pS6*R2bXR4#!!54WuXwTWvrh0Y(&k?lVM>t6)Q<e_ZFq=1>WNWT5& zEt>>=vm2ovh6o$GD1Y#6m-@P&UZySYDdUm*wl_48WjBwz$&;)2&Wp<Lcvbt_7t|?A zCB1z_oX9-=M2|)qixW&+&uxohoKjjlwQVG<ZS0dVr2Z8_N+WcnGPIVq2QSi7r~TyG zb`#a|9_NaOJ&D9u&mOd4GY1N4YMb^6^Y)>RDflrm^~r>3FEFZU^@={+GRDmu@)SQ# zIdKjJ<W7NQ%4RC-r3h-@tG~JasNTXTNg#n%<4ZsX^BvP941{Irm-Q@3D}}n5=8lYl zCPR*p+t7tzsBS#PjUMn9Z{dvN{4Gm4dHcWP^=;7Bmb6@7(g&{xA#R2{29NCe7f53G zL6YNI+7ErB5B0G<Flk2$`&CB$0NZA)00%g2lrh9H<>>RnN5QO@F0hK3J_UYgNQbi8 z^TdfJ;26rkn{si=yF9HkI37FZNGve=<^ww|k04y&^w-R(=!oUo=I}22wJq(g{IKf_ zmUk>sj*fx$v$e&_Re6=MzO?eM4ht`TuO3)PTYc?+wTUvzr+ui0U)EQr_95jHK2Oua zviTl3rSI@HxsFk_rM~32*<al0uRRuDyLYakNrCD3r3?){DD!JG9qW3S^y0<0p;ce& z;ZF6_Mtw=FdM79!*V@U3ldEm!LB3BTd2r`^<NIKq@q-R8c!!DbwDUK-aP@ae=)<~y zkOw2v#D7Tqx4x^n?Y;(`PDk1JA<ou4EI0pMb&tXSs%4Q7*&^#r2e_ql$Prit+s<OA zHycVR7c;qRip<!R9uLd+T6<Fls!us$!7Ipjr{UKP8DJ~hA$R4y6;u)F@Un2s{!Ugq z5MM+9zQe_P5H-+*CYw(h-JJG1xQ|o^yt4MHk+qD_@&i^luB20DszG@&*s%b25c882 zc?7}%l)*jUD}C0Ntokc7{3;jZIw=abgQYff?#d()T4wZVH&>l7okX25K0=;+dgZ6N zuN*Kvxd$E^Btt(hDRgoGR&I$^MbT{sCcvQRH(BUWW+mAT%I0O66UU`0AXeQV45B9M zWB(5^w6pTn-m&fAR5JNl&#nK7({{i`b_qO^J~r^F-JARi|9)AgZRH10;fk|Vx;P%M zNE=I6(d;q6s?TgfBHqeq98#ygt8;ANY)D@?76@e?8+CIM>b1MF@t1`Z>3oV+*5yyT z+r}*)ehO)sk?B%O>ZV+n$U0CixZvTHjTRWD$2d*zq&`%|KRyY@@08V0eaBvs@XxGi z956L05Lkb0-$=c%juqUr(Jq8`;bfe}1N?mCR251OQuZDD0tIQmrHdtOHA>TGTm+l8 zOk722U+O1A(VIGXxoGqeUydL-ko41{z67n0{Zh|jE$ylxLobUTh+2}x84H|ltXx>a zle+S|Z3Dm)te3ZfEv(~#i|*YN^gyJa#2t(N4g~O(2hxZyMPq%=CqBG5=*d@oIH>58 zFN|A2K4ZiFhO%e=WI3OhS7x-}KmIxk=-35$(s#-sdi6;+aCwPkUZBYOGlxfxBcqG_ z{ApS9^%KQwTa!{~+7N~nJba(>v<|>Y7iO!~FM!ZM1O0`oi(1A<m4=Ut(wGKCvhd~f zYhPlkF8LG=pQt|b2sYz3n9wR;n^$?=DDUBjezKd!)kQelT)u9C4V7@pnRNRd{5ooe zJzxtp{tzs05ChxxOwNcad1Wyps(p%2bseo857s8d4=T4U)$Y`A^Zi);PCJy4S$TcI zpEj{g46B#A)@M9Wf?8y*ywTUEb^MxwzV3y327T5^CjC;GRXhCc3zMe3(@!XfCG;(k zxyiq2>;_N$P@AtmIj^QofeQ^7Y@Kk`Vu-C!%5|Y(twDc}{Md3gP{zLJMjpo>a>vf` zV`(`KXcUO7;K-^R`P$*8-PmPw=NKjp6|{XDv`6r#Kz>izB*jOj(qFpKw6%Yj4N_@P zfz9mC+5t!oI^mRbo&r&e@L9ilKx48-wnD~hWZt0OIdF;85aPcF?X^k#1%YFC^#<{1 z4|79*=_L-Cp)~+&>#$j1aN`;JySB9r10OE5(SCixCk6V1NS_+;>AQ}-3Jj`3<;s|f zkM<oMJRyayJEyKc+4k`ReO>8JMEQhJr;@J+~D9$SP}<&_44#ea9~NIbHvoy3z? z>)e#r|E#xf=2x~{%K@`8?xBdL%J@uuZBto<6F>G;f5MI2)X|e39ovLmeH{PVjVg=0 z!jCptIC%-bv1|*|1DJIJ>njkxL)xqDWIMJmI=8JI3)`mvO$$?b`V`AP)uCRn=a8cB zQHkB*WV`J_r)lM~Z9Rn0PfRx$ua8x)wUu-ob9|c6uQn-%c+xF@byqKg2hB4!klur% zv;%oV=z;H_|1GO-t_L&EJI1Limww0E#y#=}89vy9k-z%8zyHgB@OS^$zd@`2G!9h% zIh<fS=uz-JiTA;`^K?-AE)wk`K;XenPz^ie=*#2HcBHA@j=au(lV1`SO05UmULr-J zhqzZX`5<}jMy57|#AKGn)-_HkI9IG&i1+6@*e&LboNI^E9OVFz3-o6`Rk4WgFrdO6 z`r=Og*>+SwBNMQr*;PqkgLd3x0?(zjJdgV7?@BFpw>-dWm*&l--oa8GgyG85BRT@v z=;Zqy_!<po$V}R#3C<BY*kIDg5XmaY#q?V~k$vmtgYwt@Qbi_)P8zCZaB%H}Av<}F z*{FA-WOU7YC#=ha4fV~Dng9Sm07*naRE_;Eq629TPpktmqC+!MA=GnD%%c}&p_LcP z>Ph1bkk3NM1>Y<_M9x4TB1$-dntTuxceoujXW0-C-DJqXcNIS{ZWHOJf|pQriBKn} zlU#iyGu|zkcXHZ6mwTT&w_+izjj9Y>`6P?jKmYp)#ng)!I7u@>yD2bFa3S19z2v%Z zNe%VgRNyV~OKH|NiGwX!plM^<y}ltfm$3f9+F)J&1n2Ld<w9~~5jfcT;PA>~4BreP z;C9mo!TPbV6Qr5V0cG(eSNh0s2B}MG<f7`3qZO?eM_G)LPBx3a$m0TWE`9PEqO-#a z#mbPw17X?x?^7Uo=MQZV>44isTyW)?aVM5Yzstf2CU4kWNYkfF-f$SAwJ6dQy%i<m ztW?&iha0SXH{Y}iJZ!X!rP{a~_`n0Z3%9`fqGum*#-4t4#jrRovNEnvCJ)wP8jWCE zAtBA<rnGk1#d_nlO%}5HL2L;PALoxhK?r?qqb&M;BH5r$-pVNTCgXp?YyZ^22RMC# z$4(-PFtHo(IgkMYt<Z-H+-yJqR|WZIaZlQDO9G{9+rq>Kq+A<W9h_1p*C5<;f10<3 z4NWERmj^NyQm(E2C4<Nhnzr@Dl(8T6_ASTLY^+$6%f}(!SUXf^C72*#D+wtL4`j!_ z>+c7^0IHX=W=a$Z-E+7JtqbMQ><tFdsWJ#uUKWF+FF14z9qGwCzkmf3VLQImVWKkz zRTnn|J&4jy{f@uwUwr90XF);QMEUAW`hisKXR}E(YYCrhYBe|I9j9!++Sz=5sy8yL zlmGh%vgPneOnU8?1CI3T-Gp^au-;G`*mm}_3Q}CfR+fzmFOL3~ekI+&U@v^@<=bv{ zq$9Mx>eFHI>*VV%;sj#k6j(dG_G<_D&xj!_%@jMCuy0pJ<Qm=u8bDx_H%N)dOCbDO zJf^lb`W04~=Jh@OYwcHpAsU?GD~Dy~iaVAw*N}wme&I;kzu*yB)vJlXQlQJkhR6|F zR;J-4&*js1-zme{h8f==(l#9*JjBvQUZW$F)TK`as8{{gv3zA0-uBL6rLe5m4C^z| zO1bf&juAZ^8<vU0@5U76VgsT!R`@v1@6Xz=?R%IlUtU1%yFdJT9&lMl;wS5aGFVwn zZ_o~wA9b=`!;!Q+I$%3_8dfKLaq}5(JSf|76d6(neJ6J<vSS`3M=twz`&|379~^iv z;w66Ns(jkNzH%OF$iIg?e$B=gk=mD}ktZVZj+P#36z4v6l8$W<c~}oCk7b#==0GU2 z$3K*%y6=Z5YX|Y$mX%e1S=loO;gixXOb=kp>p#k9+i23|U%Kin_iJn$q!1aMTZ$*V z2hGO&;YG*5`oqfLBWT)lFPVPKR~Bs*#}x6EMGnaI?|$!Z|LHGDevsjVJs4?gKmD8d z!XKNq!|E7bHv_~EaEoIwc?8zFrD^;yw1eo1Tw7n?e{b3G30)un_P@R8h~MD@P~-@( zwbu@pT<9Elih4|F+Q;fsez0%gm;ZsE1TfJl(6?3Jm$L&e47x!He(%z8^B6Iy&fbGh z?XGez3FDPMw5}D>9s5<OYAeX2u)(Ef86UK+&`Wb->0fz}t~{-m|6YL;7TaZ^<Rh)3 z`}1;Mnfw{Rq2QvYKQGBl<kx4!lNR>#C9D~sS%^`Xg&DQ2V<2QoK6qx5JM?Hmc`SD_ zaq!Qle&qAr{b`@j3w1dl4+D1EJdX)6VL5m^Deg=u40`P%M)|jY<Wr|@qzAHmcUCFn z-^(;yjs{P^3tf3zxlD>DyrKQW6y>*7&1zS0_uwp>{}Pm2!WGT3Yrg4)9E6D?<3M*4 zEpjp9n@QG31WQ>MP{v>UL;3h)I>Z&Qc@{C)H*(OH)aOvkPe=3*^73^e-=~7gD-6nG z<g>k8q}z<K?a+i>H{?69N^d6D)l{0<h=3zM7jaz-05LMiM)|a<_?81)c+*^Ovp}UU zP#!s@$DcaOt5>Ci!r+?#o!aOas8qqHWzh|uSv)Eq@R40vNGp!AsJ{ym;d%g2eC6?g zg#W;h<)CBf4KE4NCi!FrY3!HLk^bQ?)VQE|{aU*S7+|0TQM=KfyrKD~rD5;t!nTW^ z(1=W3a7u6ccg6$c$cy#B%f?!bp_7dpu=R)bOV_ye;b+Q@oaTL+Pbt(>JNR_Q9t0h> zq;lmDx(hnwBa?-ihf4TCzuuD8ie9k~K+!w8Ay;frUyvu1Q`SYC0x3)RbrD$EO?Q!6 zUq_6D`VUFza#a`GukC7?_7W~i22|Lf$3O4t6kDA-b<3qZ9NKtE$I2dHxae$KxJY(9 z&7zvcaePSI%YvJ9BAYzP`wLO(ZM}8MY`qw1H{?;=sfj!ShcE4CfoM)yO%?XM3p~t9 z1X%JS5a&-Hu!u6-$)J6mAJkO_J6BK>oy50a`!Yw%Z1d=9+b8V;-@4&pN_cD&`C%_z z_2?5=7N|8Z6(?v%EE4~UsP;o_(Kf_Bf^*{JdvN4y9&$%8?Fh1U*6X)k@z3eUiy+;- zY+L<Wn`F$EPG}X{^3rlFs6FJ9zK6|}GkmGL%U82#C*>t*S8hp{2egNVd3pCBwDu|; za6E5@?vACtI9OV!5xq@oJ!yyf@Kf>zH6WzkvX#5CraW>{t~|D34*aYy%t;G$h}kX; zp}d*Kqho5c?Z{EcMVuVjtoJG*_{b_w+BR872Kox{0~>NfCLc8D%kfFuuIr!J7kh5I z1~-T+s{Bt`7H->N^Fr9pX@rGGKkMuLQlXx_<F&r4pL^MU@ds?V8*k;Se`A%kQ}k`$ zQ@R|8Q0F-8VT#v&fMvasJ3d54(yN7ap*eKZP8LqEB{qnwzZq{>c{VS2={0_*UO-@a z5LMlkMqgE5H}<}0w7mMhmVWg_%V{#(O&P$6348dQ@zaB4d{6tSzwZ%|*3+l`3QERW z#vf&>&Hb5NIt0OkiO#(pgDrR7P$p?MRDauB-qJ~1nL&q+1Ls;=Gu2*w`RdUxkbmtc zjQTu%TF<C{Z*!>ACjbF>5NiJV!c_*xDfLyB7rYJR&6|E*NAWy7=@{hGSlZ6<(sKRc z*^^H{`7}OcA6gldk+J1(2Ji#Deb5IZzx|8f|C4|4cmLpT;Xr@!+WzYx*RqFcVGJ8T ztlzv2EX>ARZk&E~DR_rgJ^KP7690CpOX=bnr+j3)fc)x7dBDi7Z|HzjuI174@4H9$ zgUa_oZ@m*oJL)KuigI6=baSd(s+>;14qi1<?k8~S85j;C8gi;*H!6<0p>f4d^#I&P z7pMS*Y~@-VCYFJ1lL3AP*$Z~W8ITswAV_BGEO)r}(x<YxWMFhYW+=}jD35F~m~j0X zfRjN7;d4=LnKa+>2<^hG&6Pc$O3kG01m#=Ry<CiC(IqmIh!a}}e$7Xr|JF^yWb-Iy zNS(0e$!L$nR{rWCbY|s6>z2Sqi93<XLwgyFqGO?N?tww1)gh#jQOs=aBX1-Qknp*N zO5koOipf>pP2T{NS$Hls@qinpR1&tU{1Z!K^Gh{Ad5XZvkY1Duah&Y5kFq+cXK6)w z*l-gwyiA)3Z0-k676UGZizSc}_$+A_Jl2olYLgf`5b?*zE@j|ctR2fc(yLdAMu2e1 zqK^8=DXs~sh3M6c<=YMmEojs2M;;j^2peo_ZD0Yf6d~zGC%Dw9*Ir$;Zod6ZzHU7B zu*5?WKeh5J0qv*Ihz@SpTns4>99j6bJw{5}=$W5*vAD~o48GQ{v}yOq87&^%3TJi4 zK>DeN#5}zv39q%~xl^HS;v&W_h6YCeLZSE&0DZ*2hpfsVojX2h%3%<??x&TpKXoHX z<kqhGQ+$z{4A0nH%LHD3;xdS-Pk49yNdPwEl4BSfp7<a<{OZgdUw!c_1P1M8UB*L| zm71}<Sm-8@jda9$vcZjq__CrbP{D26?}Ap`qYqK9yx}(+!7L=Ti*&eLPiI_2#*Dof z7Au5?zuMKsxd$WVFYUCAjKW_s{vj0i*hIRd4Z`P-*!j$*ZvCV&#X|9?tXP_Y_=JsZ z7#>pG<l--`VBrHTCGe{iigUnOU!e4T?P)vpmkxX<h?O7&zjz*OoL`}_&&xv}71lr* z?XHbzAui$z&twre?<&aqW5m~<wjug*DW85|8kb0(Wa-k@X?K;jaA56^hpv=otfbCO z#Bty;Z7r%o$)}h7!cT}j=wRa&X2M8bJ%T{myt2vLgNt)qS^poAN*5g#*S7O8WjAW^ z2>2lZCaKQSkap)|Z3|R8H{(#>H6p$EG_+TK<!q2vgK{J&dh~QG*m*vRSWI2Vh-@Tt zIHJLQS~Qgc1V7}8kQ(#3D2v_6C&-J0_}d?1PRC0Sgw5B(h)vtKeNRIC(~(vl{9EF` z>EMwlU5m6qy=$0~2iSI*?je5Uk_Tn}Vq1uTtAD0F?9-7)9o$Hd$A(5XpVDuecf;;D z>5~kWNxDz`*iPsbSPlqiEBlG<=+h40eEUs!YYzpF9wG<6zV2AGha!p1!>2Z?f7pKV z7vGRN;vF;HjGKN#tS@g^xYa{m9%k3y>K9j-m8ClNK(xMVo8m**S$H+@;77IO>k}h> zZPcKB>+7}CjuGNjwrU{{=VQOpsP9KM^5-1g1CAbaoH|LvF+;kJ#pb2092;ul6UX+q z+HzsDezrX_E;#?Vm9B48M$^hEjJWF3eplLU7x^`xRCM>CSRS=aKip6U%amFA^0mwZ z5$)!aGAB-Lu)H<4ev3phiJkN@edSYrn%DMJ26gh{XPE!>@BQun<4*$of!;pogORlP z(<i=M=KuOt+Fu7WZ2T~7-p;V)J4jsP*5!`Frnen9K^%a5LVXmF5ERm-e#($eGdNf9 zYdRfA%tgLdK9-i3<%5#+V{ijg;CBJ4-@E1SF9E}j>_D(Ym-)zUq#X>I{IqxAEn!fJ z>;n*>fiq3WWH<!EW!iMv73y+7Xj2y28!r!d4tQne9-0C_NHefGxH;Kn@EczVzGXwl zxmuWBq%*N~6Sn0UAc6B`to_uwqqmQ``%}I5zJuhRL79m_|6}N5=5Zn}pG@@BxuDHy zeq=>t<nuJ$Ly;F8L%+y(9baS;*K97f@<}nXMa1W36UoB~CKu@}`ULPY#CF^=Msv$# zL@e^3C4}jTDF5|W6UkG369b}tX`c~G3P*Biq)d57cI$(eiqf_$*Xn28O&9?Is)|Bi zcn$1{t{v-3wvhI#F9WDQjW0!Zvr;YLiQL4<!^L_h{Y?DSdI(^<q?UMTj0n_KCv_~J zQ@7wvy>f|r@*bT~qF*UdZYF1WL~N#H7a${hpj9|Ds+aVvKVXy-82K8GHlQpEkND52 zdw{q}R{GZ~83nQM2xcyZtDupozG54ciY;Q9{i}<vKG|{YzuGRFb>#Ky94_=+<SGwU zV;5Qai!*GPsn3FuA{Qw84i3{FxzGun+CV94t9SLa%KFMu-|5(C*Rmay+qRa(=%lRD zXL02sRD0S!@jHm6Z9UWhE{jL}sEbpL-k<UQ^i$svG4i40_AhZYYhn{)bnRf;NZ)8f zk+Y(eA|<`;F18`^A!A68U*FoFbGAJCK=+hG%+g-o@nJIN`J6U~BI>VhfmJ@A&J!lK zE4|nQ2z^stw0;)COV20sp1RPMiY)!pzB!bF4;w2t<ZDA%GW@0Y01vH?X@B5d*suJK zz3DTtJ%r&cf5X~V3bwU%EtCK7o>=<U_ppgN%OfN)v>xWeU~b_i?MREn3`F{bie}9( zYyW`B+~Fa+^A57dX4WI0w(#8w`nC)CZX%{13j@BBx$=abZQ=xByI4qQq<=T8+|h-i zW89!^U<Xad4g4Ja#gT>n^4ceFIPec03Nu!cv29{s?HOi~By_I6wfq`)Go`GK(G4bQ z6Z3np(zN;7Umprx+FTjKGxF5u>Ral-h6S1Ov(MDWSH~vS0d3Uxdc}vj!G#g9NG7iJ z)aeUZFOUvTeOzB4M0{@7SPMu;*!c6{TPEAp#SPlhx6TjI3L|au!^0>&XpJSa77Ert zKAw;m_$fyfg8ENeCyNi!U%hg`Z5i;v54`wrB)xP7Anl%?pr=w_iNBK8UfgI={GD{4 zaF9TG%fGVJzO`qB361@VOXz_g-&QQ!ChcQem!GN?4qnuei%+<=a{e$pd&-M2iEID1 z*V0Tqc(#LOj+1-XqW=Vr@@=P>GWM3@gFvO@j|We5kBnEY36FLGTsr!~`GjD3+vnva zPY-_b^a3ojo#p-<yn$5ODeaSzy{VV|q2piQ)#M9IE%PZ4C8tFk4j4;em-6%<aEukS zI@^3b@QD7Dt5?&@PrFM;nw2rSK}Q)nueI+*YQzr<dRz2ytWX#|?XX*ASl-I)Tv8cN z*~Ay8q4=gtw`~Oo^gT4H?Ap{zd40MiUz5_7)O#rM8HXF%&#_@~?(ciRmHB<}Y!7Xb zao8tx_-WoeF@nyvjZgJ)D8gRg%?J6y)oGMOAN;|{Z~yM^|KI=cPyXQVV2%IuYM5(B z(%Cj#%O93)o$wFSTXu~XAD>KE95V+`2bNY_*m3GwMxA(pG3I(-Sem7Bq5D1r%TZnU zn&4uG%r+;YFn#p)EHf2(-Y?QE@R6$?)n#>?N@yty!-5=}Iq*(?VTp`F{r~L!S<A1> zx+ZkaIhr}=np>z3Ab3)zb>xRA3JPQkQecA0)`FBua+f6Rv~LR24#h4_N_Hw)Rvp!e zA3)24!gEFN$Ogp3GqD77t=Ww+rq}PfBL43?#vF6)wU$YN>=Ez#bP;zScSPI~PxF6D za(Df7hSvCjQwl4BA3n`clyqeQf9M)m13$dM^t=L;On0*b$PK>jSffY-%^;{7f8tJ~ zI34Ag@N_`Ufc1q*Q^w15ffyAYOoo$AwmPuodW#|f$Ow`#B!kiPBg5V3cehTY8U&p3 z%4lI^o$$B$3idbOeA@+*3?uFAb*i0o9a$nm1CX%qz|xN)cA(whDPLl({pXnIdav0` z&ufE0{`PzL(tAg85w7{&%Sf88CkK+#9((q<20nW`cxRX0z&JG^UHBeLq$>7o%>=J! zbb^TDbNB%-hrG_{q5fT<V^=>)T?x3+JcNgS_6sru6j>A#w4@&UJ%o(iwM_#MxX?q# zUugQyg+bH8NCO5z!wv2t2bu6(u&69>CrEg1^9F&T#UCYbZ-d{bjdDK0$D6MfCWOng z@>J!@+JL(d*^vP}*lR&To%C_5GE!27-)RU`ZzMW@N;bXNp^3fm%2rOXL6pe(t(TE2 zEW{&&Lr_|0Y$<5jb=riWD;L`LY-Z7Fy4*?e>)ti{;<GRN81Rz}_*Ay%GM4$-g{HQ6 zC#?ciJnm$VECf*xbQ1jCyOQs|_t@<M$@WP!?zM?JjdJZB^6JU&1c~l6ebwNd|J=oe z)*pXiuag9ZtwTp`<pjVMdC7s`!}irLh{slyHSnHTu|PXI3xt*BM&V4K^IiuPZ*~<# z_Sbb<c5Gk2AFTGXZw2Tk$!lZCcU{n0fV}Xi6XwuU|AV2^3CPKzjO<9X9**DVl74i4 zlSigo-7%%7FD#n4$;c<Z%;U@^LJjasC%<5jdZDw$ZFa3~YiqnPBLC{t0-JIw$TM;2 zhZ7^OiA;SbVs?CH|MN{5u(nNnpKM6%M<S0&NqoRD=(Vwr%Cd-mR_W>K3$`E|uH=nv z)%DA-B2)bOOXJ3wVC>gYrUxRCptPr7Np?a1`myo|Y=3+VkDLH=K#ad1yL1tte#Xc7 zTFUf!=;lxP3r~RrzjX>Z7nL`%=W&nNDB~wR*eUJkEniHX&TrMba}>uzABUbqjw{R6 zK|c7W>nv38!_!{t)2BSrG__91Ume0fxz`6Qu<=no<d?g0Qu)@N=nNV>eN#iW+GtXu z9iX+b(C>NRm4fSTpywR?==PPFiyzS9l0DePm6ud~FP!7C5b`5^7&tWZsU$fCx^lAf z^8~VQ4Ch$AVvBdNg_uc3{~UWBQZ0&v%Ab*%f53ru>MixIPvGg^ebKHg4(y3Jwgldq zZ;bQsi9@&jN#tr>@twBI&~Dod&Da7C-9oA<xes4lKZ=6{)|vLXexh~UyeFAK;@2nN z(pTJTN7(!s52<?AAL1L)nZ3|l`TQA{@k8H(ZVN+*EMfzj^E<YK+3PI%R>skdZR_vp z>u$LtJX_(<;v{#S{rM@YyzfgDJVLOIK3iW6Uw^4Dx&5Yc!YV`OX>m5~qzm|y8!xgr zs;?^(nJqrhPv0*ez1xn~2at^nlTjYp&+T&c^;#@BF8$G)u1|SSeaqET86ND<7HIo< zVT(=QXH4*mG(N@(hJ4D|VZO74k9Y69lH|j!dCEICHGlQPw_Qx(%V6pG<yT*Q_Vw3a z=X~ELsXf&FyLW&6&;Qf^^8b7C{OR5Qsb3gT^$DW>AVI_bM{ji<^Vhk=oN`VM?p|M< z=ht<(<Lt_B1Gz`eJ@|D`AER;ef*jZVczTcLM?l)l+nCZ>h3EcvoD3fz9YzL}NSMN8 z7-gh$DBf~T-XL#Q2c=>^<8uphtTxXTD&5hzo!2w)$0?aQF+?FcbtpNqRnH6AejU+= z205ok{%gyf)92dH_-O=$)zciGCwbBlb$I37oLkc4xGukVhhQhWWY2Z;1H#IOs*?VR zUv<0&q1U<i@^$XK<!GRUn<4i6oq<zk>_NA5$@vR@&Ogs%cD=Kbf!f3Yo`GNk0Ja87 z#u_eB&=?=b4FG*LKv{4Fc5G%4#V1e|s*}IcPOgHRs3(g&XB*;x460<p8{O51<F1hj zT8RvQ=l1MOTR6(zJGOkdTg)QJ<S4)AGPa~5)UVFvdk4Bl%7+g49l;1%-ViQXfr<0# zq@W58Wm1n;OAh{mS&EBakG*JETKFN;9kl8XR+4Ks8@NlA>-6&PB6ox80M=cPTmqym zer!;Eo!J`Pwm$)c0Q>kxvR4-G>VymJ$RW6rsw1GJN|$p-a)V(zFxfr99{9@J`cFA{ zc0Nb+P{j_eNlPE?Z!jd2Z5)E<BnnQJ7L`9J!NQf1U1wW<7yMppYin=yjUq*66IlUJ zba>^bXJaFxR;bV{%Uo*1M~v7nkEDK|7k-te%;LwZJcY5>WODAK$nND%-RX)@;04s4 zD!G9-oymQJSp><v?{iFceZ&pu{N$cs9&sPBREM3=C5K+>9}nMMuz)}YkK$I3(0&}F zqkgu(?$YxRNc!T-6F^2rv`y6FD(zQTL0?n9Ntq|r1a0iqkJYCCVkOmHeS%j3a_zW7 z_cEIFF&6mVgw~6E%Yxpwp4J}Y+t)_dXTyV@w%Rm$y-85rHWUSS_YFUa^*_6ulP#MM z7~>ZzmC0hz>umK&brZb1IIc|JxTkK6uXs)y=WVLtX=3Ro(6xnEM_#&onb(rYwWmt7 zy#&O0WxR0i6egg3`l#M~__hr`eHVi6nAx@ygTv={OyFq=AL^wy`1)3OKEcxIRQ{3e zwiP<O%iY8`S!fMP>5)~{&o^T=3qRq3zPgq0`0`7y&*Uz$NlfICEV5WIF`2`olSKs~ z9_@3&U-$@L+Od36nXOOlpQzF8`oShfYm4xdOFiVGe{hbDdm88RpB>6OvR5}FXz<ua z+ah{x72a!W`i-6ARXy}07W?r#+jCg*@Y8*?*LmcLUsqT*PdUA7*U)JlPvPpi?=PKp zA7DI#5V*<GHlA}S*)8YGr7!a#*KlfgcJ_yPclfK5P0ILC`;`!s2MnBJ@k?`M$%(IP zPtUK5@QnUpgG_Lj*eeu+SD%Xk;vM4^fZDQpfF91|4GqR3Of!@pcyb+_dt7PuSkVQk z;B^rh&ur@6<oa%|^_8_Xzq<COqjU9@SE=~Nk9obT#IvtIrf&6Jw!0|(HowFb=HnIr zm%3<P`*tppSM0o+s(qxdOJ8$kxoy>CxHKv|x#P#Bl<XWUYmT$qDLDDss7+GN$L_*> zZF21ByfD%4`nknc{w$S7nBKArd&_G5(10V=28Z^3?PgDLp!fcQ#GzfRP>G$fyt-c* z;cd(UbL<@)<=YStx9)WlF!im-?D*7Yp1KY6Xm0TbZHq2oZyoM<`;5Ww6{Oipxw^vN zO_AyL#X~>7!EUS1@#Q~vVZ~7yI{b&s^d^f}bHB=B#+x_4$nh7IpE>a-BVI3GdMa=A zBkxzg`c=zbWs&9W+q0mRax|6WwYIQ6gWvt|=DR;&xj*emOa4=z{?Gr{fBZlCtN+?R z`=7^I{&$S=)VSvG*Ff?)l;rq)lgHtn!#sy`E-8PW?xmq11Rq70&&_y__x${p|4GM7 z8J~`|mH!EA{C8dY7vT)dExCD5Xb*cVi%p&t<}_Ww^h*ARI&NUSn1BmWnvcn0i`V%L zGGH;<?f`VyzuAo2AmNM-qjU6p@Gi{lJX05s3OIu2aD!}BLh2?wb8=<AMbnQ=ppHE6 zSMfm~e(}iA;5t5oCd(M$4=?t|N5ErXG?{w+DxIx`kp$rRUs?RED2#4kPmt`JA>?OE zVxaN*i*)cQ_ezXOOFLr&OE!EEDgPiCDA~lpuiEHnP2#>luR+vU3JN3>Fo9m55Q&^< zPkvevgDeK(>EB>4I%z9qLdcXgKa+$8Cui_BI2cG)cfcoC{WIrqsw)>OH?(jqQ5Vb* zJhp+mGBS~qZ2`!goQF#C7CMx~V~45%=*oWe91XIT&;y=+R}%Cuk7kmK3GD(`8iDEH z+li2Ya}%>p$~zg{L?;LsJ^cj_zGQF0>r8!JdGYQyC*-HNHUuUA*t-Ez>QEiL%wj-g zepVNoghi&<(%t92TOE4tP~)}0;RJ%A>slS*h4!sCvfef}sizS;fVnuXC4B*S`RuiU zonN>f?(KVlR8DOnIJLv2gKzc8!b5zz6WZg8lTmQ7zz99T6W-3Xl}_+-hsBc}Z3`*$ zoe(hiG=)Do1s&h#?hYCOsQ!KIHFtm90eYR8Z`%ya$kn>eQG5FQ`{?SGgVZ@crG|D5 zM&01;X$W@LKGm_d@;X7czT*2=`BefxA=sZ0+|vY`M2g-cYbITt41}(U?8{8-P0mMa zdiMzda%Uk!et+$SEb5!h!n3xHAMo<liMmkFk@bzquXm-{D16+Vi)bkq$k91s&;>;o zCpoWg1W#Rc@?07?udeCax?rR9i|K$0*S;dK68m&wjh;U7&>*wA9?MaDEGX4S1(s|e zaNI<jZVTS?O_SI_QeL@3f**xl9yo~2Q{R_Yb%}k!lDvImXrVVBzx}(#k2jxv_wKug zy&Ckt9xn?cf>!NmzNS5`ZL3dw?wxH%ma0F;PJAe=3*%>!<C&lR5P3S8PCc?^x4^*x zJ3F%J;TMzg=kF}^Nv-(RA>Kd!=$j(b5e-{)3{7_>1@d?pYdRrGU39`3+o;rzsrBjU zi+ufwFw-Vyr_34H4!EhuJU;O172fEqeXMSqRauKmrpmT{=nW>(X$y#ZosDdCzZ(kL z=snWQ<b^NLXF9H29k;*GZ|3h|-?rg1;a3vj(63DOi;|yBbK36^L>(I4t@a@=`T1y3 zw47wQR_0v!V_Uvh37gYO88-i^3wYTOBTMTsH1rE}>Fa>`h~;!WciTgy3v2q2(1edx z`{m+Bw=OiIy9K!r9&LJ)L*?|JkCI_}g;MC?pLP`c@b$K_qZeCW-I9gu=s32?*P_*j z?JL`{#W7gn+qbYr^-flB>r0`-Cw&mPPiv*U-KP%lD|}>7|Ju}}PExjCK=NHF_Lxn` z-ls02hhy7qh`b7Yi5&BT_+I?!>NdTNIh$bXXW!*D=5N0FrZD*LyAWwhq0wJ&ioK*u zqes_dA$U^x)u!`rFqJj*uTR&91M}Rk`ML7G3fIN_l52lc-=Pzm1n#De`?W(BMvZmv z{6fqo{2jl7qxlvt?aNaPo`^8{XOs0Mvw8c>&yCfy{gsvc5*juM%v~rz=jK^ZFlO=H zgI51pTO7W+R>q%=&v5ix^3ea)ufF;0+kEfkhknF0HwP;3ZV+^=ZykLbmaAXw#w#wr z_j`X!`#|R$5bQ61`O7X^jFu+`zbq^m_3Y<=XHV^t%=4=~fl80`#d&Jv+iw?Np!thm z;78`K0&lTy?G6u5jxe}>iT&v4`!#&BPd;id!O0l&pZ|mZ@W1*W)o_2xcb^tUjsqlS z`281eKmRXsnZ9HLjH1)s9;lxlTD~^=(?a;6^=Rmi9(th4+FOHj=DI!p%0Id<&PPlB zSDZO3H`Y1&*EUDjn)jLBy>72Om3N(UFprCmm?Pz@FL2w&x&6ke3L%7~^ET?<E2nUj zIVjHskZ0*$9<Y`?&Qs`ox}`J9dE)}d5=ual41?JnkQR_980!-wxx1KP8Ek2Wo{3rS zex=jj-Pr^c2BCC(?{ZY;E~Rd9{LtUvZL(*O-*y7($kHkZ?M}!oiezAe+{s|*&=IvB zo4=0R<X38ds5E>E85mElu$Rfoov@4osnCp89Tf3Ld5Nu7XW@7{aCvOh0RwJ=(VtDo zS95folZ%WwX3$yIbUFabyIA4#JZ&%)P06ifg};+l0m!9Oyl3d-F258w4%@}ye-Ns3 z`Ocmo!QX8n!A5+!SImj^eje)d6>wIz6ffXV7ns5tkJ%-e%};K9C7e3xa5T9&!Ap=? zkgs-eBtno~5=`uAu3UgK2wx$aHF@}_^w2pl{fWW&(xhtf(=M6F@L~0?i4t}APJl*^ zX6E$j(d_t*2AA@+0e<_G_n=X<$Q-%x@`OmgsgvM}i_0sO?D}ezj8cUdYnxCyW^+9u z99c{Lj@SPNJDa}!E|0$k#w!#JzRsN|LErAQS)>t&MwV=2t-nyG2@KDo4W8`>-i2D~ zzV%H;Gx#92KGNoXk>Kxs#eXzYmcZ++U%xWViG5z>{k`Hxcd|?B*ZE`NB6+o6Xa=|o z7J{znri{EMWD9;f(brFf&ciPw*J$7~`;k*U+-sIr7hj~mi$`U_Hn5#o2#Uj-dg1>f zdcOU^f<pSo;CpR@uc6<&;CMy8)#LcGU$>M6FlEzK6?)pFzn-Ej8RU{iFMiVc@HA0$ zPQJdZFljga?f@bO9_5a8x%O1bo3{yYEq)}3T^~4o$$~!2>IAR9PLu2WN$gq(^OC>{ zddXKi)($BR0oF>vfeB7&$6m1Y4M*2xRPNgS=-_>PvUu$Jk<SL%;66|4seMT3WvTSD z&wuatPB2c+T08OtkA16K&I5bgs%4Wii%?7*;_#{u{DX&QPOGn<Ne;=BYD46YKCx>j z@zsGz21DlRaQx0>xLlY*D$Uv5<$R(Nlt!Pl$~U{vxMe0Lt}8?Eji=gX`$ax>6xpJ~ z`oUD&m{H=S)meC{x3e|x=-fq`WA4Tt*Dh#Wm>$W$x|Q!Kj@f&9k@L1W^otu>>kBoY z+4a)Evi4I`wcoKfLTrvkkO~vF=)?n&DeW32r(VATQ`i>KHCyDHzOhy8*e!YOTM7>Y z{m4-}j}BVexxT!P5}Hyur0lk_X26wqH*h&uC+&mU{?6-br(eQQoN?=-i$Ll#Jn0r{ zYdewY(Jsz8lXMcF3AALvMZ#14HYWRmo#?hUcNd)k5+3X_U&h~9px>HL)p<(m%BD|r zj@FGGOW^QiH}<Tb=7>IcGH&w?3r{>uCO%9*w2V7$Bsjl`9@6zs=N%K&@xcR+hlKB4 zylsCIyI<c^=DQi~|B~<eE=rN@-mI{2vg?g2t+%${>8yX+!ociiL257?tIDqyB2lDl z-Jkl;n5QOu-(<h+l0~xMPkuLjR)4onzWw&Q%FK7`M;Y_M+<u2X%comjXZh7Hb3Geb z&~TG-H2spyw_SAk<uAXe4aCpa)~&CZy1LT=USE?54|>S+s{8BL|I-5oui4a7ep$5Z zYrXRig3#@U+_+djW!!odK|lX}mid&@c0U<m7WlJ&_)q@V|L(u>m;QtJ%>Q8xXpR2Y z*$13X!2k1f@t=1d&&!=(nCJOAwGJ}8x)-N3e427RXQ$w|KRn^*?9M7eM*d?Uxn!S! zZ_aOh?0{CR4~+ECgd8K=$;{<&I(e5ZzBc#>nI|!y&MujIyd}suCs(a`3Tg`Hr4J|_ zP7QJxzGr*ogMEM>C%9t1=M;qvWSQv5a(d{AnYLA$1XUR{ZJFToNs)ADJ!WC#t4vV7 z%;O@y%h7=@gZUdlpx|F{mVs?|;?hYc$nM>Q3>^EgR~YfDB)so{-#htiojk?12D~{D za2OyBMh7$H4PygCL+7Cv{0_>cBk0<s*qvOu+2t%JF!r~WGnvMFbP3=Oto)}G`-ILG zL~<V4lmoHQa?@>d_xh*DP(QLiV9WD;NE91P0><YQSGI`<qWYt=ZNYIFJa8uC{3TQ_ zp<<t1nPC7nTlD<g%kc>inoCJrk#~Mk3QxwC9$v?O<m(nP<TGLD#J1q-43#82(NF#+ z3J*>z##iv^Kfb3F9W?pk4H!2;S-q8BAREY*1saDRs@G=DB|1DSx2W>oHIQs5ROg)V zh31{}iyp~_n*-Mv&hYk8#y$1G_xWvupMz4^;I}V|483!jcBeho$1js|9-BIO<&AL3 z*EZ_$u~#T%H(Qri@Z0u)J`zE<b&{2K%x;1ro1n%WyBB%#%Uz=_kdTy%q|FD0O}coI zyKAoByjft|#gX&@cnh{(`XH!wnu$J~FY=^_53pH)Eq-KvtDWVk65egC!4o5&r~je) z<<}tE<Wj#A(WTO7Pm2V21b1c%VvyHna|bj5nZWnE@AeHNckS;4yEY20q^+%8x!}KR z4=-N|@|6opvt>2pY2j*p7N2})aVP)!Gw?P#M3uZ=s6I_{uH7czY#0D3&Qtz5-K!r0 zY&Mwh0|6g#_MIn_hg^5^*l$^cHcw!P+Nj<Dt!ZsCb(OxleK)$tm~3yoS6yWvImyc& zC?*kPy>DQ`hkXOPMTzN2H>q~>0Ymf(H@(rVJ_;B|O2&O^pbOl+Ruhw9AghZfJB-hs z%tHei{<V56Pkix9F|lk^J5`$eB289Tc|Bp{)`8Xez_UZ=LE}6*lRV#=&^?))WM5m5 zqmz}k6Xlb=wojRMM()-Wnb41eRL;uEKaz`Wa_JoJZTslBmjZ3!+UojK+k#15aYs*^ z>USiA)4C~5Opad3pZ|ql>a^`NHtabZfKBJfzRl0!@R_a2JNVi#z7v3WOZ27l*+yz@ z72mbl+t01;>QAvx|JXA6x87soQ@!IAer(2n9D80dtK9n2@K7#QIyzRrD+4(pZKFfS zEC}!}?VL77NnLuS@(%y7M!APxbqCd7@cDLq0Ii(gcuBweSgeh&fF%Z-==;@Y`wM>9 zE%<y1&A@je&o-qS+#tizuc9R;lJM_OC`Wg3)#@vE>pO{Gzf#_XjsW?;ivg2ib<5{M zxb@D*ESxBpz`LHl^I3KF(zrstz~I|)$e0j(dV;}l{yuA>c^5_GOHcBR&ecQNTTcpx zPWg}zpWr!4xM$SJ_%mGBwfzq{Q#a(xcICKFG443uM2BB=3`)IOD3~2LR!tY>zD;Gp z`TLgBWpG>A)Gy!-?mjWXALUuNKnIS68R8SmhOhd%@@^a<)7pmP4?k?d1uY99=)hIx zX^rt^@8e_TvqcuVgO}E~u#2ZR<!xc)>Q3I?(0D=KV`JuvUCB?jyRhUMp80}bm?Vpv zEU#bd|33Q<{=t9pU;VFPeoFD9PeypM!0Ye7{JY+K`R4x@r`n5gr>Fzce69^k!_~m< z@lv>r&h;%@Bfk(kKEd%|gmn)&YB?u8=XvuU$M8PlJhFb{lMi_Gsfe=ufMytckn<a} z_z>{)iPZF;RO0Py&gsct8TbyE?<sjMI!Kqu$9H9*bG^LAZgzHF;=6Q8fTYQ_y=%D} za91wxC#m>w58eax(%~n;%4J{UsNb}v%U3^U>#xb=#8VYIKi?PV>nmBQHxV-Mcw*$M zEQ&a$XUn7NXHa&Yj(-awXF{d(JDY*Oj}1qRcE&eAyao!nhd(B-*&Xn2C;xtsu)%<R z20NQveWR+=bhwLS5r3kOPXn+VozFOdcOJa975F6w#))GNJr3_7@6A_yQb`s6=3F`N zQT}C;yj~uJF}jFEuWaSl^GeaY0#(_by}t_`xW(&Wl`FQT&tc`H=l~yiMGBq)P4?+y z=#C=T?s_u%%|d`}o`E2G0*zEid9m+f;&phooslIx4U`Qs9<<OLFKn8wtjIg>5#8%A z3l7n;m1hA1d+ahoE)yJ{0N|F@X5h|tVI3Rr<oJ1fSh>Iso^;_ONhdA75i#LX7F+fS z5wrZr@-B7aTPoTW{&30J$z@57zp8_0VX}AYk}-Ca#&vD^)=N2t4q5^^iy59C!P5fE z7YUNT%0fijbSBZ@(OB?LhV%s%A(9(T4W_*kLnr?h9NxXNNC^kov~72O5`5Jjkx&1j z4jVX~$7r3C=f@wjxDv;rk8jQ}3_h!O0qx}Rw1`E8PIUD*{$o$q0{q*zSkSn4_5g+K zXFrC|>)I(k9QyZe@`yx7m7yKvNs7LIl1UqTjpv!9ddeb(u5U)p+9|tWO;)~@*Ef8N z!-wz^=QX(NPb5d)cUh^RXRO|zKNf`JSv%6V3dPQOdIel3p3TDpw{leZ_3KT5;>&{Z z=zp(g^YqoR%`5Wq<s9extJex0dU#0o>Ur8kqUx@#$V_SemG=pk*kOw!eBI<C1^&qZ zC>yf1P|MBflP}Ft3s=np8x2ZZ@u1M~U#Vo5W=T6&SEuxC{ERQ&cHIf3dYIFIt}WTK zPas+xi#^b?@WXf6t0|du5zwa@hI{Os0y>$znLO4G<sBThB}!AS3!IA<nHZ!z0Bkrr z@)JC?snr=jC9{bup^&I>j_8+GcC6{pJo)c$#f{DuIP^p5i7M~<)$mM(+?xrVP@ly& za_s3cEJl<3l(@WWp9jBVuU>02Qya!`D&#}H59KY<GI+A>owRpxpauw~OPBvtmh4l9 zc(k3f<Edj->r))bV@9uRdX=f|6d@^XA=a@L+=QloX+E2ibFEKlvsjh1&RRWy>CKle zuDrs<j_R+zH$?S1+v#(HnjJsXX7DQCxKwKY(S}V9>Bkn2{x5XElDYjtj`~xZ38p;y zk#R~)xXPSe+lDbWyq?q9;@Bp=y@{1ZO}5b`<7{nVhAyM6eIyoCFYI8;H9dWA$<qMh zIb&AgjAhx%_t5JiR$!|qdri>tBYACR?4VBe;GX*PwP${fX6+HW&hJ+IVB#xnvTqz& z|9kZV2dDlN9=HD_&$XHMYCHpLgPYzgG%XJ7L!x-3sIuHe4T~P=lEFu;JxQTo!O!b2 zp2nb)RG(<uQ@(n?3l!j2e%gQF$%gKIqH?eLc-msGHhIFuqL?RDz=>_)+!&co<Lwp1 zI!)yYt6tBJ_uP@+%m({@${FvX|FtRoXRFl%naB<AO@94{K9eD@)+XK{8{fV5zrQ@= zb+NW1iy|*y{P4ed_2u6+2|n#v;M2m$Ge7uy|LBi?`PcsPKmTv1`Tcp0^hoPDo-X5^ z%5Q^z98VVm@R4_5Z{G8x&S(urR~$!&cXGgem?}ngJ$_jDn_g>KbVKCn@blRJOZk=Z zk@y^B(fICnq(5d6DuWOE-C(jL80UHF_4}FkYR7vuPDMrj!@uMe@`68?;W@u^PHG^J zbk3pglwYiLF=|Sxlf28saTxUM;FeC+B&}OIyZ!=AI<_s0WRlhL3>d+SdBRJ_m`*r@ zf~Q4#XE?_O4ELRS9jd`D_03;@$Y9#QCaevv9WYO)tNd;{R&XX*CP=P{Th|F^>fzsG z^9hvv9TI*>%4dtmgtLPZAiCS6T;qL?xoXx9Xf~(EosN%k={bDJG^Z1YoVmVSl-#tu zVEV`V@&NF`dHwL@Kj&3ifo)zd3iRIDy^AOF$^rh$^&WO*Jvj-646^->M{Hji1V~$L zIy~56+=u0QMNj&d+kwZ}>48QMpKOvx^f%!4DjC5odXP%E0zULuA=m{2VEIW0TQ*gc z<ao~?uhu9CO~GEGm;hXe<zuV7?43&w7@nfdB<m`i;zwUmQl(HdAcYTt1p(5K(?Wr^ zW)g#uc7rCH_L!Z!^Mb4{p5*%4TRVY+7W!(Y|MBbbqn1|>a<?#dzO@6_Uuf64leecn zER3wpnc&}`^>t+WF~LgPb^<Gba+W@FeFC@E+X-3)LtUIWZ8Q?mOS`>~(Khf)@J7D2 z_uvq+K{or-0-xxA+hw0#2waQ#LDKd#exBs6M6K)<Iew6>kb=ZosmD$(@=cIfqqJXt z5!<}TlPWLw>nj#`$U)aFik$v1_2!8Xcj<2MO^S43Srj67@FFL^CfW^fEh?zn)J|H^ zW83!xG6_(HWOEGOQ(|XztxUbxj!r@9g2h8d{qeyM4X+B|)F%}5%h_t35Yq>iC`L0% z^=!TKp!f%v_Q9dwx>7In$e(|H%$h~NvZHr=lYiDX<>3dgDfum9`zr@psM!r}2flFp zFBz4GpJj6K!}oifylp%%4?P(^uzae)co+2Z%>a-8$BF0?O4Uz0B^q7tlSTR<67YEo zUFecQ0&C|Fjq~60hpqupXDoz9;fv^WdZuvrPLi4%*&O+K>zs{~v3`-9y%_8R$;p!( zJI{67esl^kZGGD&)2kP9VE`6GwDTVx{c|k8ljnQ@=NL|>J}OYi^thcuQuT@tw*StR zF{BG2&btjRpyS5|?Nc7gmkwU)0nL6aw(^us^MX`nmnVAlF(>?|E$-+jPYSS->6_~m zU;OH(v^o~LaJrxTKb;4Gw|Ek!{T5$AGxG2wW3IYX55q)L`(2yjixwyJoBCGr;3;(h zBFEv%P)+Eu5h)_?k?&kKuUaLao#(srU-V6!wU=QJU%%kV3bI_f`ZbeQY5mqPv;&Ks zlW^=7<I!QXm2Dy6l#?a;KG*s7tAmJY&lH&LBU^YqwY%An?l0bGCu@JTRTz>8ji1n= z>&b^Zdu>tVp4Yxnul)!699fmqUE8@y9+|E#IA2}m)o%Kx*iIkC-uT1w)JMOs@vt79 zrq^g%2ujQxec<fofgXMQ&;;*$9=`u^Kay=6LU&L3bk#lhXoxSa?}bX}lBYfwUy#6c z9AwvHpZZ8`V8MH`)b1@uhmX#u&~Pnjx3|xAY|PN28xPEfz?0$H%Q=T^dm+$gpa0u` z?;rguzbw&DyISDW!pH}X@CSeXAN#}q$6x*z{vclWw|r3a(aYNi9XVT%f#i(${2reZ zc%Jv<=xfl=%bw$uzTHVb3wHrNcGPf?(AYj!{z2ZjJ@NdY_)ol?jE7ekUV3Yf2fdl= zdI?n#1MtwV8CTxqlO2xyUy}+lhU1H-Gyi9Eawlv+I}m5ryZax|R$h2;EvsOUt7aAG z=vjj2{2?ryVJq&Iflo)c4;{LrE5OVoDv$8L&SqlfF02qgz1w5!qR3-lNynEC&){a@ zbj+^jCL9KU`}mw91H%s{Rq5pSxV?^ZHa3v!tXt-BbP^xEdeL3%mb`5na9UsT`2I1n zyvKHsQ=Bv#oUGd6SferH^2c=e??d*AiZ}ZlZ(DNt{2Xnv-n=W5dLEZ2LcIo@bkFZm zyD3+C6=28ZHe{<zm;PW59rBj$u@6cgDu8Zjr$AL7J_}w^yIZArPlhV^fkm#k)Bn&8 z%^SGmC2=e7*Y>VvbI?D+IfT$dR3|~J=D}}}k=G;m4BrD=DGmO7@z9%myHMWuqJyta z?sh>P<$=3p2KM^(rC1pP5E@sH0H?G954Xh&Ry>7;o<+YdilkjNNDF+{CLVMaTno+? zgn>y6vP1^3Nq50-N7jhEl__{_&q2yR@ctr=S7Q2F%)T-&ztW;<LKm^si!k&CUw&>+ z+ZD`9g^!McIJ_2o?>%NPd#YrQ`rf-~?Dj5?P3Q++XVXuxg~w>wZ8XP!9GHSlBYxy@ zH*6Ey2pBQ^^l}&d*riW=1S>}I%?=9t9!G=!1cQEFu@h;!Wy0)3bA9dQRX)m>g%SKZ z>CRm^?`_{;lg;rp(H4~2EcPteb(fI8Me;0Oxl`sl7~;Jbd4zegTbS~AdA{@?8LXd( zP3iPwD%-0>k*wG3N{*$pjo5aR_2l`_W`V>q$J-p~Dz6I}dS$xj+M-E_?~(ij)nrur z<f#uG4r4{;^#g4O(HD&N(;zlwUGUCzf0i|L@FURdxwet)2M>JaZIL4d5v%gcjugi( z7sl}>ve0wE_m0k=u04|8kI`lv@`pQ@<#TsIYj;g!yR@tR9AxTjleYk}eR28BbOq0k z-<#;95={_yH&%Nh{CJX<W*gtGY|~-7)1itqvvxm|hvvgAf$T~%86h9DXA2KU`Rby4 zk--~ZbX_MADSy30&^2QRN4tMo@HuscR)E5y6Z*;;xakHh)XrA&;17=LQ`4t@=HJE< zuUr0TRS)=f<pZag*;`hNtB*z$R0sTQ+v@60)aVV5O6$|BHRsR59r@V>?LZy*uG~8| zLJ7a)+m$Q8b;P2<d~d7VKorAkn?8J9%P$U|PGKCv5yl6_$-1J+SeRsV+(?<eNFVBn z3`hOVCXuLzT4=7n#w#h=<=o@RNKTr=k#9Jlt{p&;qir`G&Asu|$-j;%iR}sMdqQ^s z<;gG6-*|&&`-14N&%?)c`{9(~p&zu-TYGDtuAe^T^j!N*e-gplW*+ve7}?cGvs23M z0vQ@t21iM~>`9~5h`dg$qZ3}r?<+^`2jVNyavuR_^R#KgJ|^;!RbSu!fqdal&!|$d z$SygmFR!0~2X<c@(q<7QquArS@AREp=up4x1YRsXnAB>n>lZoMas1eqY-Cptxpi1M z=%x<9k_AlT9Gzd}UE1;546U0Vk&EY=DQ`VKJ?Sx@!RLn`W@|7TyGDop8%v&Kzr2j6 zzN_M?7V>=Y#l}!LVhMH17W(dMKU_S`x>tlg{~Q0%Kl4}qkbIxglLbC4j6B)marWbj z&;LRKoj+b<ePsXa2`82A@t*%2{&Tp&a_K`O8MnD9d!7n$cs<Ym-OhC=I){6FqB0iY zHil0HzvEdr1an$-Ku0G`u0FTClSW{o%)%D}^i%p7<2<s1vLNMs3ZtaZzpLe7^T55i z511#mKYs@MP%Pf1d~5Uxvv>0K%;8uGz^8N9!M{r2;T0MSA&&)-E{deXPI>ybM4{?y z9dbj{;0xevUc+J2cd=cE6dk_-Cz~flEQ;vh1@A=Qn|?u|1E>MSV30h%S=o+#dfg24 z^AF~1__Qb;xz4<SRWcd|96CeFKG)Tp{PDTgHRQvsK^GeS0(;Z*b9Q^)rgA0gw@R1Z z4N|z;NIXtPFFH!|$($1j2%F{<oo;}hrwdnn5+-A$0!2Ht<eg0L&(idlkqVD+_2pa* zZ2Rhs78>k&j-#2p%ljO`kX68rK3kiR2#6;NoG{5GQW^ZAI%cEu04GQ3ZP4bJ0tG=s zd87^zb(gVtrIm9km8g@YO+JnRPT7Tf9FvcBxB5;?%Bw_!UYi}7D?Jw}Yx_w15zyEU zxA`lbV&m!<KDB31uO5zFsEFNWpeO2up=ZiE843ufk_=6}uD;7-_iU%V!;vrTTMD5a z89c#4AMNpNewr4ap2r3+O&DMN&;^Zt`y}<%S2#kefn#1T@xf66VZS;blH@15VDG!U z>pYe}HkkS>AOCystB})=JqnjR{Htr^Ca}qvzDD2%&SKiKqvikrKmbWZK~zHy+4!NL zJ$Zek_lE?kn}qnls4}tJi##E+0DE`n*vaCDUv^REPMkhTB6}YxPMHOe<iy>;@dpq) zZbAY_P&{2N9();wukzG_$@`v^y9?0zKIbKZ&?8mX{M>Q-vuFBON4ln#wT1jsCR^^* zX#=qV9)8V70NS8GdH@S_<nF%mkufLbN&kK@Ftqp*iSDZlTcDndpI25sbLs(nq}gkj zH$TXsJJL_O-TGUg9IK@++IF%d3;5Y>lL`J)AIkAAyrJPy^$Yhdb*v85_r{LtxjVi- zn3(ovqQ*w7M&9H5T^KpzUE5dkLq$`JrE;8#Z7=Xy&OhVuoo-=na=CPE8&1h**^a5{ z<0@5XkOw?j*_G1Z$Yxx|b1q(PEg8UtTNXQXJM~E}<hBd9Q$A?ar`KprjY}Nb?cbks zY5pN_WgLq^sROp^q6q6~d(FTvsXLY&|Mbi$x7bHM^{~FMb)?Ua-__13tM=ej8|98Z zU`@d9b<4<5F0)zN1vL3+!EOCP3$0T&8=Z3Uv~1=3PE4pq$4*dNp9mgKfu+}_XMy`g z;v}$QqmC0Np1I@3<MqGx16#Z&m$ow%BPUsV5#nVx87c?f*($?1Uw=0r)YipTHhovy zPk8C~ELf12|KC@v@bN0(n>>L9Hq28NJ4Bb~--9r&_Ing)gs(|^>wyh&&0<|74bSg` zFAohjy2vD5x$%(h7}txyH?L*JruoL|XZB$AYe&cNO<8Og?J~|A|7UmSa66{3ZPJUk z*AGUoc8HAXt@J`4j=C%Dpb^XYt|ymq0Pga%=PeZVdsE@Tj`IPylSk$5W}`7<vCh>E z@3+B2b8wg5<O-GA`s%#8*to=8>Ip8M7CBlkxz@fUGUyw@uFdWIdE0Z251GhN+p$gR z+2YU2_lgofxOS#18x^fyKu`Kvq?)ggfqblPY|_VdA**)Fn3KMoP17I#1+bse`xf}L zF!H`Vdi4i??jQN9|K4Bu7ys$F)8BfFHOS{_&ip)w^KtN{+o<pLhsXC}gPR5-b#VEB z*8?~7pEx{n{}-HSj5;8#H~b$ey7vD!iCf8x)}72P3x}MY@|D#H)9FJyRKACh@9TZD zkvsGXaC(qtHG|GMd1M6f;$Dis#?BMz1B3^yL-!%~I>XWjbI|Zt-;TzQ^l91BF=v3^ z(;|CP<aNF&vcUJiiwx7@sw#HtH%Zd@y~>tea1*TXE*pcG0V|!T_X+Qv)(##=6oLE} zMhr@V%+-fLrB5nEI3EfVI31&QU{z1u!YOARBpUz)9&f7h?`=CzRuldYUt<9HIc~Bs z{ufV~blcvwy<@d>TxQ|yO7h_CdNdvYg&EIhV4<VnK;^<^)1}`G6TuDOo8->!7j*F1 zADkURD|G2J;ldmJ2|CmRU+t4W{f{tUL4oP!JpY`a0-xidp>Q_gE6&GugXH8`fM#Jt zpb;=Sg`QyL^9;)HJAts^A-KaoFip?oYd{+lxMOd!LhfAl^@7sK`Do2%HxE-%H&uXL zzc*n4bG8P5&iPJ`>?C!e(RnZJC~H5s7Lh4>+612xx~q>~mgaNWsz+fL9Kl1gZRD^E z+0tY)3z`jVwU@9UiE^oj>~5XP?<5&)FLE7uZfagGugqP*OYAHta(C@zf?kh-zsk2p z&~%s1Ag+DqJM?YOZ{Kcl0eO>Cy21VS+db7I$dmk{L%zkDRL_fCPU*>xWSXUGD_}|V z@nncQR02M=VbKCgSY&b_*!M(-$%1#`-KkCe2hXCy>->z&CbrCu`2y13Wqj!_Ru&ba zBcGJm;ay&@7+w7tehVm->rWam#{b&av5y6$96hz*b&hLZdf?;dT|f76RF!oLL+h!I z)&>QePXTW=2gPs?SVp58AMKsJcW086iHTqqJj}b`NOykhPl*87UB3baPP+8a)Za*S z+y`)j6}kD$i_{UiY*hT@u{1wz9m=fOYXj(1$HTucq3h@m4?*`HOP>$*j&AyZU;N_h z$eAZVVpo%{{u&zFcd?#5Ojb+~vYB{CCcgYKlZGycq`ZDlq~rVZak2^CqjleDqOaGW z?wGLPo*rI5P+#o#{7yV2>x&^#I!IL>w8{8ti&oK3f7S&odRO;aEby#uJA3l<JV&SG zjz0Y(e{{TUwDxAxg9GM0+(U<rmoH;<_rzl0bBTU-D|0N<UBa7ghl=8ogM;_I27j)D zZ|t!sQjyd_w#v=7(-u0xOaDcm@;|cc3OX^19N^m)9*gPPAfLpC|BNTu+q00R^*tYu zKiiRU=Q*qIHb3?}0=91Jhp8KW(5FxE>Ghx<^g{RL%Y8>-PcCipsQupsirY7IJgZ$I zT-fQi^_@@Y)Eavoeel#?tx3*HrsqWAgS)ZhS4Y0f({A5&VMM#xxLH4oztOQzIrP=& zFTy@{3K8{0PWrq^8JSG7?-LHn`MDcg+MK@2A~IT%deP^h^&)gw(O7Wpr~S>oYBP!c z_ejYk<@b1fnvXOE<bE`kEa)}`g$|{Cd7R^XYd!{+%*X8u&yVEsy;q@$#>RvBQYk0z zh!+a_Y<|0`DxdT81X<A`*L-(%5AO+gHsa&uDUPj`rVClrp>%zGw6?gQy#90QYBzxR z-0Eqx;I56(#kr#=G{{C4*ISgnZE5Wd&n0y*Ty=XlvM`?h_=g|ThaG?W{BysygZ|~g z$HoV*ZENe!eWywt{Frf%9nk;!>)*><<Mn^{Xa3wj^H(Rsr~Pva%-f#ld^)cM5^((8 z>BIlOX&CD{{sg;RhkOpEVSFqVRs(%T`9eM>O&{WNc*L}T-!Z{#*Laydqf_d?JLzYX zK7KmV8>lZt^Rk;}r_-)o&iPN|Tt@dFmL1uj>#^9r3@*#3qfYBl0f^ZK`<%uT!p@?> z@SgEMtWSNW0GUVqUD`v~%55er=|BaKeNrR?v;`60Ab9=72F5Omq$9^~y;_c;DTn{S z|53+nGr$|P(pkRAQ81wscjv(CFamTx-`hoy$~B4WpRRSD217n3pb<@l@4NhlwW08K z;56Ulbhe=Ab;k~x>8J%n9UKLYk<B2oYaKPi%+j>l_4L^wUW$k2WT?2L=}GuA1Dp6i zh4(nAhUXl8Ws_09yrMpK<S2gN9_NK@!97bnH+%y0>|6r4r(N8+7zfCq!D)#f;Lv*D z$iEj(l-&)joEP;3C0BPv(tGI3`pACuWJ0Ab)XA+E_14z|f`zX-y8+<@3&+5)(Q`Xb zudBzExkSpp{aA1W^OgVLe@F-LBQG$I#0D<NbZFFHz;q*1eD<PLAPB4Px$^>&J>on6 zyE=qye17!tu(>QhJR7vQBOjZk9X{+H-or)PqKE)(?N{)lU7Gm4%H~?|0$#p=_f-O0 zG|AbCP6EB^a}>!uvpNZa@Vss5rRXNS<qMMKkFIvBXnY*iDLu7ii#DAUgwLBy+JhST zzW?ltAHMkP&8q~H=`#e^@A7MXo<d<aG&b2{6X$SNW>IFpkm62r@;m7wOY9U8-J$dA zMDFBSfcWu86XO)5TtN0Riy!(XPq2NPCra4x%j8?Y=tpi}IOd~!WXk5Q+qYTtF*&&H zLN#fHTOc7{&T}w9ut?{%kMB*6@-w(E^7F?52>bc{>*)C^-*8a}=*>G*9v$_8^6(Dv zPMrGF$dRY@pgedDgmca==~x3w&m8l_%G<XdWwtOB`6Ca!wzo#7A#0MCKmTkB*My4f zWNKX<+|iw%@D*OeY5mk^i0}JS>L>rD+DXIsuKt;Zkkd0Psg;d?9GqUCf*inh;ewug zJJ+5<6r`J!_|Aw|p1#S`N4<*~|LKRq^NQHlUwh>#cOv8G==0P4Or)`3ZEAH$u53(L z@miaYye`BOMf)y*^QhU^Mj$*Te5wftAba4ufHZ3r@Ew1Qz20WB@+J#nKbnjN(JNu- z7T-zoRyTO$>{(rrql=b_nD6-LTKo3|js*@Aywa;q>UOlB_BjiVx?#(RTX~gBtt&FY zU*WUk$yP6?><K<PLrKE(iLJV0!!*=9Y1IX_@()aXh0XLclKSE2Y&g5O-J+a4zOeE( z`ZChTw|~#^!87#ve0DvqzE>}YQ7BH@r!pE1##q@HBy}B6?zw)TA8o#phR1Ms$KLCP z7D9Ui$l^r&POL*JborAu_(gSiYQtz~qjzh2>p~yQYe@2hMr=ar)?4I)gO9fBr&9g$ z2!A(e2UA)xFSrn>Jo^4xI<~QR*gl1=l5RgicXinQKPURkEgY;bx&0V>mj~M)`#--f zkz*&c=^(A1hU2>V2X2Lf8|>ho+vno2Yhl8>_6ZMgo|-YHuzCF;4D~1Me^cYoz=nFu zUS-h(jVt4&dymEdi3)UF-@3fUxyG<A_HW_)$%cEK$V~%%l?9SxhMI>p(8HJPIn8-| zEhnzg*^?^brTNf&b3Q(K$zAD+XTicX8S8_H*09rWytcS=r<SuXS>p4-AFiKBAMSiX zTU~vjfd|s`ws7J*DDr%4cCR7&Anks*LA&i@b;hwPf4&`<H}PNm-6i^I_Y(_zS{V6> zNtW^V{9pd!fBgUaEC14e8YleQZ{u<NFs*Ss<+{G`Pr2`(#jWGv{XY|~G|of1ldJIQ zMC|g@5RkaX_sRWMSLl@0;{@HCc}V42)+61EpQ`@=`SmA<K$N_Cjsv|8vrfiCr7(kU z$N2%_itx09P>Ajishjt{5|_}Fc)p)OR{lPni}Q4h2DupaL-gdN)}Mf!lcn{i<IT0= zqdy-JfV8tsXVuA-*JiSsYjR*>U?6EAmO=P-)cpwB;d5zpKs6{epsDnO*TH(6vx_1L z*mJ%PmTVg+D-v0<MW9E%U?;g7*ut+qO*?-1Y@5O~_h&H3ppeeo2P8X@I(*<`!6qN3 z>T%$1S<P08a`1e9Y?h3lrk~KShEH(M$}4e-cbxoJw+F%)KQ4<-m*i~!D0=^-`qFuN zU)zie%$2R5fI7iSxAa$D{FJr+Q|OqX@ENa5>nTf4VH#mR<@YSKufHr<;s<ClM7Hwo z)gw=K`S0XG5EdMhgrGfiy#UHD-Uj{zFM+QPXeH4P@}<>G`Hz!nQ(F8}GO0_@V$!q; zUP?zUeWr3dGV$N&8(-Yy){JJ9YuC`54Pve2`;LR_yLIs*;0^E&UZ<woaIPQiHvyA{ zk+t2lTWvRd_vDueB3T8sYw!K0LhzB?g45b}07+f@+zA;S^aHMyQ<E*-5iS0qOP>1( z?Ng97IqxKQ@B+RqnC=d%Uo}V|h<;Lfoc@Jbt~Tj;oBIMU667gqHzw%Mq(#uz^^Oqs zN(veJ<RQ3B#Jm<`fdrkXki6I_69ccz{E)uLD>M2d_BLVtDxjWVY2^o&%}hAy<7ts^ zzWJ_p?h^^Ic|AjQnmlV0f!*Wnxhh_sWXkuEevGXc3m>+8^Ey9&938qal00@@TAhO3 z7yB*j>`r6-=LE+539evMji^I<ynXjwWVIlYiCLbO;pb#@hu5)xkyjg#h|XrNpW6Z) znFg2hz<}OlYnXUTw?B`i%CEi=S=4d)2luvvB4pPZ$*!`O4?C}IwtW^N9O;<y`g(0U zIR)U~W^;$UJnHMO`Z~}rzVd;>yuOqPh-883Wfs@L%{QhFmAV0PevY?|xa^pujk`GZ z_}sT)s*|IFCG;g(^i56fcnIs`*wuqZzIlWO0*V)B<&2C+_j}HslYMsZ${QJa6M@@> z2ET$<T*rx0+GQ`VeQe;Lr6>4{PzeD~wj%cw@#U$LD?2^$t{&_GFL3zb(_?fFoF_*1 z)X0b`uYW~9__Yo?+Fg%mZ7Z##4c%O~AIM3p)Ao676k`-mJvwKbTVE;Ye+^Wk_)boT zTMQnV5NKxcbJj&Mbrhsa)3L9Oq%YDRS(xbS!Y9_j|4z`ic$Z%f@kCSF@Lg=sh6th! zX=AtTkYFCtla6yUL*xb@+wpHaErf2{L>%r?be4kP$%`)VKu)R-$40KNtq8-Ol`H3W zLf-OYPjw@<eAoejBzV_nm$UulRcX|#bmZtcdifjv<ZFJxCXX`d!83L2Tr%nA&v@Iu zPd}*LH-=qhRzEbJ%jkpCT_Dn@p8gd*Fzr)gU&p)9q>O!*#!tDiPd<JfUvuQkd_nz? z2^_jt=G!mAxjJ3>sH*(+>-iwsw|<6C_t_%*l(ECHYhW)Oa;{7}7|mVtAA0Ct==;>q zSXkS)Mn?CR)8X<W3m$h&*y4!qpm<`_Q==OL=&(8<um1evrH;P);XnC<f8<~KkIDEc z{nP@V7Dj$*lSfWm^!IZw@V`l8NQ`g>N8WeRZDcM#JiqW4_QT_a-|&#VcJ-V#gwyeS zh%5g#!=IG>2^pl{IISy_MyrGOQEjvjha3*XfiKc;yrU;IO8U@8vHw`?bo#p#gmvT{ zi^d7hxIw9{ASQMH%ubbcMJ<2qjsSvyhn-{ZE7HeM-n0Mv3Ova6<ODuHp&_Gn8sxxS zyWh!*0Q)YEtW!71T4!c*#cI8yn@-V(R?$MEchKeOT;&ns$R|+Woz{47gN41vs$=a$ zETGJ#UIbaa3j~*(*N)C@l2dZzx|6EN;qGSp^}q|xfQEVp9|N|#b9Yf_1mG?RE6vO2 z`O*2|RhYBWjy_ClJIOydw|wMkjb>f)0USu_JAJD6$N5M2TzeGz5MwjfxBXJykky37 zfO{w``=oH+SvYuTq2qY@0!o_yDmy{tvU{B`Mg|-Mbw2zqK%Mj9pFOw^xC{6y#G&Od zQDcXk*f#K{9wXEBIeGP)1JgdOh=GY-CK;*eLyJ^Pr58Ved++=|=mdlY^zQ@{Ki8ob z1ZSmFm|kTU82*HA9B%k@%OvG4AeVQ_19~<K5nB|w?*Nxv00hexBQ0X6Bfh=1kha%F zj+LP$ka3iHXuTvqnd<Lu;I;^};LOkRe)ZLtQAxX{m*9%d!6~)07sskRy-SNuS#bdM zA`1}ZlXLpbhFg>nXq&*FP9<_^hwBsA>24Zo7iWUM;CeEnB?#NM2ee+c+u}`YAl0Et z*s#G>Y*t?rTt(alqgl}4lYK3vk2-tT+k_o86C>e;KE`ITgyyk#Wb&x-0$LMQdI(TW z_`$3%A>#tbeT>dRMP<>ZVvtT^Vxui2X)k2;Xnknp{QE2lTZGvpFpDr*xb25nb1a?O z?Al5lz>ECBVZZX@51CBy8A1G&fi3VAaQhkCH*dZTeuD6PJK)DG$k6w~MzH+T%Z88I zJl8oDyuW$FH`s{X2G5`1lBNA`4BueblRfeer5v86>BDwi+z3BUR*iqa!ggK5+I;(R zeY&mo29I*;AOECq`|R6qvLKShsXf-ck02_yknh_gUv*I=uP)_j5o4NOk$p^9B~SP8 ziCB_KnsMoRRde5?;A<<Rf7^Bg`T2bmuYI(Q_C2u`@!BS|nR1z3$Xj#gsNmYKV`Fr? z`msr@P0~l+A(ZQbr~R-cg2^*M@0Pqv@8Uf1jWBey`!F?M85>P%AP;$S;vBzj8lgTX zFi-85og#S*&~YO6x=%Ze<*`S|Thi1=rzd&nbos7b%<nCL_Eo0%fdwS8*Vn?AE!erf znWIvYH_qrHTymhNE>9?w(%BE}QZW2Kv%fNbklGK^*&kv_r75rZMMt1*VIc9#+#&Y_ zlQFA{50x*z)P8&mn?5w@$)$d9QlB5+@%oE)zCI>(8vN;V+vlX4c+<E2jCw!q@PQj2 zp&L0L3$7H1J+!IDT`4D@_Q0+dX27#)6%F`ak6`QB1Mm83biOvAe<%5&E50Lxbgk_A z`nP=N^1@~P0bAmk{9E3$T;ICE>!$L(awc>AlRgT?(bqSsxAh_GJMok!p)oyr`N-4X zt)BK|gZ==0K!U$gVqg7C`_t;9-y2>2u8+Zgbou3c62665i_y-%`|fq<JS`N=R%~vZ zJ5Od?xYik^0*yz;L<#-LLx(N8;D-i1_f&>@NnQ0Oz!q3;Ib35*+v(}gOE@-p@}KD> zUv=2#AJg~Br5tZEZ(P~6{A-7cw?z>?fZnZBkUQt|dFnF{jJ)_e<$g*Zx4@@`k&oM@ zxqttk`zQYT|Lgz$FaP^-_MiO5Ge^DYp5LQ<=j{wG(6i(1FrH;SPS*?{m+zfij`#Rp z;cs|R`oE4z={#|G|Eyi;Z^-GVVB<ZCcmG5`HVcZN&EWd;oR0Ml;tr6;@8h;jr=a{f z(aS>*BB{?q<6iG_`z_Xh8RD(}P=;KT%V4Cy={Qs5Sh(Z`UzTyD6O91eN!jh>Hs<Ka zbZ{BG(-Eh~L?&B0;&YU5!04di*uh<=s`EYrePQn49K>+PpMN%R4m0#JdXIiiowQSp z%+(LS&_s7zazg~A`Z?Xu$j*RoGHk*sOT5)Pj~N_hjB}(nT>^tnK6o7X5<%#sUEf@A zO-KZ@SFz{48>uX0N97_7<LsYtP!9LKa`@x1J($Dw<X>=@w?6IwqzqndD{Aj~_dUP7 zMlq26kKPFF62|*~;Tx+e&T;z!gAyEPE5C=_hl@k#zRS<W)*`i2v&s)o;Y5Qp!GEqF z+tDq>5861}lF?(&T_<5pw$|XGBj|oiy5cwd=K^1OpVJ_#R2h2qw0q=%iGOjW$syQ} z+^&nyCIX-33nBz3cOz35>`b5&Am<(1z>+#aX>ha$lQT~?xbr0Ki5h2t3ZKcm{c>SP zhV0ovn{GQsk1W}0o1QCAok2`eKD#UscC8Hyz*$pU^6@%}o?B!Zw?~kkTBN#Q5q|k+ zLRqL3sNePlIZ7lSt$l63cfSMIR~@4Ai!@kqV%+6GJFu%@IL8=UO}0M>%#Y;lM^DL- zJF)4i#I!%;*J1YSH2ezwXnQK!qDau9U-CoCLW&^&vrN2Mvbs?!NO%&+f`|IdMd5q5 z_S_M?L81D+{ZzkAppS?y`}M8_+w2+MFB2S^RCY3U`m|0q;D<x|V}27MU%tulMHV_- zr|xdRtB&E|?eS#`BQNvn(1P?lm6D$&me{QUZjSnMZ6cLYKI%c84et3dwhq4nW#Q>g z*etGEi0Wc`kjQYqGlEv_b#!o!c3}cn-@qc@XhGPb+yeCV*Yxn3)U`u-2c~$jqgMtz zDI#Bc@|ZTC^D9d}9_vH5cOnq1{;_8J7h_QBq2Fq7#G5KrIlDMpB;2+0$lKRH;>X;! zUXr6<AgMlSqrEvm=agnts$2&$d35VOM>5>8aN}2PrMNbVJn=(66HE@g$UXl*G$`$# zZO_KnuD{i5CJKbfi(LLbOa-eA#s}S|g3bo;^b>b{=ESQ9BCqUGug5P7d*F^COS-?L z6!W}^j+31#V_H7PN1RJw*o*X?)K}kJ)z@NoeUpmI{~bG=$J17Ct-H}G!Dl;sAAdv$ zZJ6lQ@?^<Y`pKWXt26C=zn+)2)AkeG{Cg#Dljt#OUw``j{_<8PsP`$6@(It|Zo9C6 zu1);JDamxiubr@|4URAKrL)PG+8)El0)f=_o}!L7X|vkzVB@P7H%Dyd>ti^(%Zm*T zEqUa=uVA*{ij8q@f0X)1V;`^{e{I>50}@;tm^%(SCbPO;d5jTW-M|~{wbjLW(slf9 zxqN*hoJ;HK5zeh|a)5hJj*PDzQ=;ePp??SG6%(&wb}{uwPaZB`#h|eTR5qL4MqfQx zjIiM0I~~J&`_`+QTWGNuCZXXKC2$r}T#KRi9lq7+Y?>#Gx{#*dNAE>_4cxnTzbaky zl=&%N@}py+dx<Td>?x0aY;6H%3o-G#;Cya@KV|t(nqIqJ{mUCI_Mh&`$u8B0jSsQ- z%C*Opp%0%Ox-jzY&A<Og|J=Xx*WrCiAGg4#g^`cj<&pcV7ysp-`Rd*O_WziSUvRpo z<Xl5t&hz7(o6~9t$}ir9f4W{HxYw7~28CTc<vqXtU)y;*$=G9068w(R$DqgDA%NJd zS8AsMp328#=9l}vjeDKSY5kz{j5g@fd6sAPb)RH;pBkB-<SO1+cW-dL@Q<>dWappU zJ!U}6x$QX30_Zca`sqeN33(q2Be$dLD)7?)uhZ2T?hcBMS0HZC&(`3{Au{7<z(h2I zQ3Ji&Bz#1qwqW)zxTO<X$rx_%dxu0u%1x?FNW6Os*7hQDyf6rcPmpHW91V&lrxg0! zBllPV$)D3@I6m2Sb~^TI(dgMP9Xg>f8c+FDymn1hB6ZS%e3o|yoB6~FDn(Aa_!M0Y zO0~y5s+;^>n_|GW<x3hT*#z9o(5(txF($_~(Us0I;PbtkdGXa@Hhdm3gP~xse5=r1 zK$H7N-A0!FtY~GGpL*&>wrDUhDqwvibi$!N_b9~Q-`JEF{ug%(db7_HUnI$Ddm7w} zbPyK^kbxza-pflq?|9Kb%vqo!`vvZGcvP(H_PvYw89z<*5Yw#O6C;ni+oAjRv<JaY zUuEO7I2`*tn3Nd~Sf`wA<M%&i=I47F*Cakp={2@3e5ivUgtoSOCp_#b-)4cr9kd2Z zY0sDbn@q|rEU+W1yPx%B6Loj5qgU_~7nb0Uc>+N{&`E$mto~`D8D`nO@2}V7TP5M! zyT!pxWFH#*VD(g6<@{x~$+}0TeO*^QS`=w}&v!kx_+pZ6;X@xF7!?4r4{ZdrnNa5& zN)}A+Qw)5}Q!D*B!8f^!dt^r6gvPf=)QLWXaZT3T1@un;uYUDSk6!P%iI24{<oN3K zm%+<>{o!A{^r5Qn#rd@#INER*1yaUV>f47#_dOJoh16YSVJGeE)oTkA@n3d}tX_lp z_S<iA{{3ga_&SRP`3Yiu+mD~;PGr89^7+dI-Z`=*`kr9v6E*tA*qV-8Y*9A{FN;6| zeCbE_$hTo^{D2!ooJ8Y-^(;p49X8Z9LbFd_M85^wv&AM7$JdTN7PG+fE0fOeJhfty z8TmT##E32Z<;ceT*<E+G@idg<oq&u7fwf0ikq3V0bSw$EHk}-us!S}pIR~3<DQ%(p zM`jM5M9vo$-eNQTM_eN9iHMwQ`nNp-Ml@VXJNTP4occ9+h~79=zVKWhRf(IA-u|yV zB^r96S-NO%d^5%_(fR0bb$RG>K&ndYlKN6_M&+k;d5uQ<^yo=f{RLU87KHd$+bTc2 zTVRGW*dUa;MW4J=Hd{PrSH|O6x%H2cKhmuVBi(J&__8xO4Al>L*dkbM8<C@R7MS)i z`nL1OADRH$^hK?llbt>kH2(eQ`>~(;G~U)P)6VXz5!&k=dpo(-Hp73fByYjaLIHWS zRS7?B;+;Mz_1_Pg9y(~*r20h9CaSj31){=Cp7}FNX?t5NB?sM9xpVZ|-hFqdkh=fK z5;>|@bi)fiy`?Jyd)AhL)yIJ8$4YDCvv`m)`E7%l+*_QaKN{bB^UY^}<8S<p>RdaA z_O;J_nxg)c{C<Z{zo<W8$It|;T)O(VE|Vu_BOj6RQtm_C`Y;A)6<5dE&1;|QSNGHf z{(app$L0s)^1@G^L>4w!tl-?Xy0q{R7R7^WBTL5#whA0RHiA+G&M$xY%i07y8Mb{D znDl|i7aZAa{Ab?_i!L8zqdkejZl85g<m<1$t_`#q3+1&VTV_LRI`To|&0>Q+DYyla z`ew=|?-_riqb%|-Zkld)96+l!kG$;G>i~;&)M5QC*ZTMQ9H0F0oB!&+fAMF?{VDyt z1wJi|{Jd>i@@N0-AOG<0{gr>=FXrMe-%dt>hS~niQHO9Es^fDwrB7*a_xd)L(rTA- zOP-D;U-~-YbprBqTR+d|3I8W&BUlO=+|s4EtK~lmo4GFUfIkioVkc*v(4+Y1boHFn ztaTH6RFmb!5G{M!1vmrs5v4)aL+IG!gR=G@Eb~ls6H${Fu#f!EC@o?fo@{%|#~xz; zkFd{WlZD9vxN_$j?%1m@SG!)G^95o8s+aEUMiv8&a(5QeE$8EK$;)+vFP&O8!31*R zP6M@-Uma^#xqbNS-aSp8&f6WnAKnONpMFNJ!DR;L{)z;;W@(Y5fp9u>9cyW)Oh<jw z?Nr%{`FmIA(dp;9fYH_<5Ex;nyz0z0XlF9S4?4+6rybDYfe*h8MEf`yt0lWT7VWuX zD5}poM2O!yEg#w0ntJlMTK)w(Py;zI<Z8KNHbj;&dY9;-tDGKWcGs-+6uRtasHz>K zlRFfX9fH9w1AX3G?VX<cIB4MyZU;J`R|Y!GZU$wWy14Bg+#c~?4d6u<3WQ7QBd27Z z(NY%w3J(*aw+(d1NATf&+FL(<lGV?Hn(Tx1%1m{<$~clSd~AG~Oo8gLa@0tHiJdY` zr)01V7-Bca0Jkdp>nP;PAHUnjgYm3Fht~#t{N$TlvrcJTxWi+zjd!wIAK>cK<nBaL zkRY&$j({rR<mdX4Wco$SzW&0u;nK0-0zDsl+s8w_I^%I|!D%=KP5`M*RK()Npt%T* zFl?ZM-k7JHoC~4V$6bJnSpsukCE2eL0It1L2!{`{r#wEFt|70Hn1CzCGJ&qe1?`<3 z!2O^#?MaAOA_66V4V(}0_R(m*6Fx70h;L*v@x_<<c2L+i0FFHTsC>ErqAwEgZ85~6 ziw~gM@So0t%r8ItMRfC%yYA-F<Lb|Q0=S@@Z{*xZKfn9oyS$pW$%kOH-?&JBXJN$o zf<yMyr>G;i)Kr5x#y0uywaTEozDQlDM>bO}F;Ihkb^Q8^ucEJSWjswv1<d_6O5|y~ ztBmulctX(g(}!6Ad4s;bIqje9-=#1A@{4`1gzb|Ze({UQ^1@=8){zMSfAK2N+q|2f zFN6wUBNX|_Y>{OXqL}!zci+X%Ir$=sBR<ldUIppe`iJ2CXv?+NGSwwYZC8<tzM)#X zv7JTHwzuS)(DDjCP`^oD`;#1dcRjHDwm&J~kAw@pwTTFYZe-PWXi;tF+J5YGCpGHG zhhw$B_bb1x?etaXjepx(<(j<e;Bl7~h0w;!!f$<@^wj};w)npZLpO^9bH=vIAeB$u zB`|L|K^KujF=ZixK^9}w75~b4H-0w9<w0FY%26ssbOYDE0(`D7FEFv_<nHTGPdLh4 zJvMgIZcB@AC|ly=pX+B*W+5!K(z>%oWc(c&GO=Llev*aOrNL%O?c|;O!-EgV+hW&j z{{(m71FL6e`^m`9me+nS=XHtHLv;?ta)d`Oxk$})^&jJixTfC?NgN}-@w(ux!%_%- zeX4eO(I=I@NZ)G`xIQ36j~)bAY=Kd^r-;-*cC5Lwd&Gl<oLK7{lnp+W*>+)(hzzac zz>`_b#W&%|zqn6}OUwT*a!UA)3w_vRb~VQL2@Es>!J-{Q!_VS~SJ%MQ=E~(~tIZGZ zE`kKEG6Y5$nif&^G-UeTz&1`nQyXd9IChDQ<Z0g!ouU{)Lg)P_Q;eUAc4NhYabzP) zHf5iu@b)p3p@*$E6Vl#1p{Bfctp56`_(jUd&OVN4={GBc!?jFgYQKCIUtYe<O}NTF zn35>Gg^};OkdC(Yv&9MD^Vs*gT;GrA!sGjRE0^zy5O(L2#vYq;x+;fHE=RoZc=$+k zn|eDw*LQHM3$}nG@f-9n4@bJ*1(4dc@Z!Sw;=#MLTYo8U+?IYp0`uy#cYpDZ|M-vZ zBP}cVwEu|(J}r#=#3Vn>`1}6cKl*R|wSV)U`=fLYf7^Sd9QRp9E`O`^Av|Y(o=WcW z0DOualxZx#OM0IR3Td!A{91DFYkNR{O6);HkTRWa$M7g3d@o8fr#pU3pB4^Q2lLQ* z9jrl1+TG2Zd?-(@8!Q#@=m`NW$IvT@du*OyLhd0h?<1*n57_&*S*E-`ihp^b5vEjV z$CqD6Q02GY1#Z1N5wL}`IZ58OAmzW8I^W)@Ob4C21GcSTCx}Sr*})>^?zFhe_k99% z`2uj1s~r&=K%*N;GhhfJI*{v>D?4$OM+QPSF9SJ!(#bvrTHwyaHE`_O!Q2V7JJ{vg zUB3?If$9(tc%8gKM}Po)yoOrY)Lq%XZ{=H?_XzdZCh{aXm>`u;E|wiC&buwAz}a<x zx)-PX*4Z9`Okipf8X>`UaF5On^kP%2_IRhsbnKSl$xkddzzM?!@q)sQtvF7QiWqwq zHr66s@=S7W+wb5TnwV5h6Dt2z0ZuNukxsA^xY(Pe*_#Z4nU`G{8SAOKz@Xm|3A{SW z?(hxGBsR$SpTu{{wn0yMw@l4U2IBOp!O?<BZY7Ue&V1C99we<k#}DbayJ!No-Te`a z;aF7YNtFuUWZqzt$Gl5mrGIc<-?eDO-}5a9@-<)^iR7<7=v4c3!W{mwF*{W*GDcy) z`0_<Qn*8OLUMJXHGhDjh5}OyCN{6<x$xM#3;F9C5lPw;m9mJ?_E8l!c@buCISm4>9 zc$7NXjg16L^f7t;F>OAs*NO9doGs7{PUP0UJNYP1<j5`Hx0#^(7J<j@O}zPN1GMPy zGQZ;TGMQhd?5o)AOZ69dzH0!u3HtYUaU^g8$?x)OGkz7uFPMa7Hho4W{cQd6O#<|% zZ&7qo>m#Xwp+gsNSSjakldu1Z1j+ZN%{K{df7LsG7DedNS32@kNFOziZTOM)<Ovye zut?yE7?Vc}MCf(_vvPG86#7Ol?I1KfX<~E7ae*ot=`Q=z!=8rIj@NG5{u+$)^VhMT zZ;qrsBD=e=-zEgLFyd8{!dACbdTm0kpvB%6H~dOU@65+f{K^eKz5({jyvNReEi!)} zfA%Xy?>r0>I%r6q5bM)86i<rPs#}OfW_7iASi9{4c=Bc^lw*HB!cM_`XA!lwi@oA2 z#s(#Pnt$vghvWqv{3^2c*#0E;)MiY`*y`G;$JiU8@`POy_`4u;=p~O-(#~W5=+*J5 z2%#Ul4|edyfY*L>ebyF5EYL;3;78)fd^i12;5A0lU|s)qy*>(m@SUt4|B}~nI&!@6 zYeaY+nZQoh_*C+)zGye)=ohPAq&+i(`puP-5Mh6Ss|Uv}A`~z%%mMCPTND9fAxl~9 z#~Ti_jnA=j3ur!lmA4<nyRi5z4fe1}xhJOBeC0=;)SdS7;B#pJ%BCH80(EUo-LNfO zDCEeAZH8<47P0gl`{`RxJ(zs@#hHum)kl;2mlmPZ7pjwA_$8#TzOGNQ<@&hzZhZZ= z^VPxlvlts&pmQUqHySDtnIilY-8rA34{6yVvRka}Q!UMnnz2n|u}qFFj_4bthh3v1 znd*P#ld|ybLQeaT*<<vVul>jk)|i*#PU)gwsz2sjACI=D0>TL6>J1KG(x3<a;#pvs zJR_{!Evb$}!LhI+8IB9b08$OHV|5CwK3bgfCa-*cY4JS$6#c};WEsw}LHqQ`nQlnC zw8&rqn5{Nm&p#`7Xye`SDzJA!0Lj~*ATI7*>}yeE{tSO(A{s1Uf#ZihNt2@TgY*6O zo+`1>Jw4T*4Gdan;DKHjm0~wzJ6hntSPXji?wip5RrBxSMG(tpejf%&;B8_-bzz&I zu+Mbe_3VSM>)B(AKpopE7kVdtiwv*R*VgXf*)3b`m!rNJo%GxP?LYK?`{RGB!hG8O zS_^zy82Pp4c`A&n{T;a*@}DMWUj9_{H|6X$fZH%iGz~+uZcF_LmtR-*5%6YpQ2HG- zX!rfw;{CSp&xEdS=lVgW_Q+NL1Ch?R{VzCW2e6&;d$hpbjBC>(9s4SN06c@eI3GKL z-=H>mFqbz<6(yZfBuu9?+RM{PWy=V?x_04TY4$lR+(9a|Y&tgsumB|!5|1b9n71gB zJEsXC{1SrKZ8n%Vx(kqiFuh{$>g5jYV=&IZ*C2v?XCUvL)yOH#o+Q(TTnmEI@uq{V zfFKAewN9d6jyAa+*fRjsrwcM2;27-jYHyti6Ks@LaQkZxrBK2p>8$CnyX|A_m&r!I zeS%{<gx@3Z^Yl7^2dBYbaPEW?t=<7P3MHur--j>|IydlHs3NO+Qh#@H)d3Asl%ij^ zUdx+#T6XfT4JKvwp}D~`gQ4@-_f2gKVLHA%Ppb^>Nx#|uLWOq**rw3=JTkY+lcDC; z!0-Ywp7n`b(K9(IW1HY6Fs>dM#HaswmVfL)A0(yLKz6ZKKKz&03!0bUCNOjXDmmZX zro;P?Sb6vj><PYh5g^QmySUL{R6uh!erhrlTy)6XfFt>IlDE5#15mC#WtU*nPi!y1 z*+en6tNl}+qc&JSKZ=e%A<0j!7yxLFY{V?;BU~}t2FaOY<k4~Tym`GeHyj%lOpx>< zPcOX6udjS)cZ)6QLb3^HO`<c&{*}Pc9kD#kkx9na2~?eb@#XGZx-%_Mwm9*<S7tKP z_v<U)c+Z;nS!{TbK<^h{zWVHI3lEXo0*{3ezb0b=!^GjfTJzuk5C7w5Uw!#?e%jRs zJ1st#+zRlIyoiR1I>6Uc5qF{Hr9P}%CP?AKmtJQ9!;>fiRCaO4?rqvxA0Mvarf)!J zJ9Qm7=g+ab`chYpv4=o>cO6X*@P-!Kn;2Pu$q~H1wDpi83kO}u$^ubZdT5Ysz7sP9 zH?%DaopGT3d1xea_5I7d`=0aqz-ce8^$!B_uTmd-R6cdf2O<}QtiPlZaU^rt@SN1W zzCF~EpSp-W*-|iW@km{G)VsXsTuNnM_~Hc5WZRP@e1*Kcu>BN1%<;fPAXHA?%8p*S zC?4F$-^LzwfET;&7$7ikYNzl#3#AxNr%eRtRF*-v@THx(rn9ojP@KuJg^w#qxEy-7 z{$8bT{Q70yl=hm@sb6&ZbDHP|{`#PEzVZ}fL^kF=`YFGulamTMy6tNN`wG2Gvh<Vc zvbyE;E?|W9^l|i8<>sUKbPP&fEf-qjf4DxoNJ%p11MMJU*Xf?xi^KH$G}@W-Z0dKu z&wu%&3F-U`b#nGqiufg1a@jh0)p-S0-M!5Bb?9>CMyr}sFF0%KZL9V7Exe(lueDjY z_=S)9#&5O1E{vzY?NbTiUzr2bu`ccXU7ob6eZxup#BALjwQ=&mM}W4i_O+j9@in@1 z5}bT!%E=yWdX&X({1iRy-Q-x@^{Zd~vYV#{EI70Gow%zfiQV>u-0;ENdQh${_KB7F zdu^KQxBbS(7CcCWl1cZC8*ZHyKC+U(i*@QD3H`S5a}D0&$d&ElU061*$+8RT&f5l7 zS8|k-16};cV+;G%k-o~<p}%T>9GVtmJ<aS1X8i~Xd`SO^4*%cSxrMITWeWrR!vYsu zZ^40m_}FYrpZZ>8Ss#$`?0a?T=(Wtjhsi_c`f&W``ks1|=seyU^XzHygq<XOv&3Cp zn~@zG&;f|@=Q6fF!hgCQe@z|WPcAyGF6Lu{x45$#EM4@C99JgtSwy;aZy(T~IbNI8 zpGeAmcZZ*lhkR(|rb@cOSAR!=KJETQ3w&A_`4devfPdf*|Ed4%ul<{U=|4;x_}~8= z%9_y6mHvFb&PD^&2-*-GFZgMg_tJ4?*?*+$Io!w3VdMB)rlS0Ic%XkfjAt@c$?Trn zqVy(zi*+11ai>e#(<HH71FL4$Snbk>5DW<ZcO29@{e$rv9>Vj`oR;^3EY8pI%67oz zKBZkf4N?d1pvpJMcOWtdCCYZ!(gfR`lrD_q_<aLicPUN8qKg4XN8W8gfNueI5_5tI z9rT7<6Z)KG5F={EJ^ab(T2R8I2G^@4T<(`)p+5W2AqeZt5h2diA;70z3?gtPunlMe z?(WN@E?c-=WePvA&FNwCqW`<4wXw-MJ(0h>p3^*Rn{{=&L65t3uRH}q{u|Mra~}}9 z!KHz?lP`nS8N3XPHjnHZ*ly5**6JoKqh4Z6hOBLz9wF7h<GfZlrl`%sqp}{mb#j*= zqzTOuhTvj#n2I<!c*stmd=Pr>E_Lq&ju9Hy{Cq=NUZjr_`)hW6_~9c#kGEn`I1qe* zjIl)V<e3=x1qd|zU%$b#Tt+`c@bSMC*mFKvQZIq$@3sb%S=4asLgCdJiEfc0W$M>t z2#p3mm1hCjCP|rWrp|n0!Q#m7;H5^=_V&}+lV*JBXQGQ|w!<Gk$&)hI56M-#1;Nkj z^&^v!L3v@x!yM5`AiQk>+Mc3WJ6&M9p!WJh`;quXgRl^B{I+*wQy=<_)<O95$1Fg2 zib0=|iU}-!S=h_O+GJVK<@F8$|K|zNd>qvVmQTFsW6c%<Ee!5aW&ztTfB8-NFSHW$ zX8R(qWUzJHN$9uFimDb&d;{in%IV(84te?-j>*y%F7}HPc^bn+yEgGugto?I*3XcK zZg=AJuw@F`zaE>^J`t9j;MM(YlWbK#2u|@M<9x${u1QH&KrD#(D?=o_-yP+>AeqDM z=lW`4_}odFdetZ3Az=1&9};+5Jo>$_fA6#3OaEbUgs*j>JNzwvex7=v?|$N4knAxM zlaAfVWoPi7ZbI+J{A$j=bAsO%g6={?ZNVmyZ3|WNF+OcF-#$<Mk~cf!Mjkdg<1U}H zWye*s@qKo@8SL@?7Fy`)WxzekakxZs7C!sd3mta1yL~M=@;#NedG+WFbrFD}Q=sjn zE&b?~z?^GSiwoLYRE`2>OlrRnAMO)tL1mW^$d**GCO3MOu|<3m?ci&((Y1bo4;yA< zx7q`I`p!UBG;p&ea@RgM<{WG`c=^vsXyhQ1%?VUG&@4V%gie0RY@i4Pp~3D@xx@M9 zJMMh6kUij&7cu{ID*ctN?qb*GYv*)~T(x1uiP<VgIon-3&?Q_7KcD04CcPaObKdeJ z2id%qNN#=fZG&q+lV$XnM|<`2uv;{&J@LU$nkuz(^Qv3ye~$8=Z}*j&gFPD0_VU&3 z<UcW4<)?hAIduCW>m124p2<(!W4Di`@n<`-FjM@UTwUnnL-V7;A&@e(*{AyE{PrLE zWwC@siuPI0ZF}IajgUg4c8+`@Rvp&<j}0G&*mcL7&@65KeSJK*;?u^ck-@8op760) zL?-d7x~9uMWa_oSOxk0UJw2h#O&(&bZyN4wt^c(VD3-~Qf1*cdI#sWht*_oIIHL<k zx?{I<G|0xTaQDrzJ0;$0G+S`lE2MYPu=Y7}1T|^$I4Aq$QXpQi;IoC1LMD59Y;2x9 z^YOtNN5NmYPhY{gj3Z&PdcV9J7mJj6WNF`mS!Fpf%j;MF;UE4}fB8R?{VDy)7PwyU zCqsUMNO1D?@BdFPe)&Jf;m*t6?;B-pr2F>^e%+OpBsrc2>S#mhCp0;G8%eSL|F)Zy zN7mn%>u+g`kI`j|o35>%<q53r>ouEHFHnFo+d1a!*z@T)qO)@Qkjv$FJC^>Ftb#BB z3;K7!dvL5C8#EhOWPoUAoBWJZFd}9!vvp8Nu>2+ylHPgs5j=Ndzu$X~R>rMt3!vy$ z(m6^x%mvXK{B+ofbdqm?&R|+kIygnxZnb=LArqo!t6TvysE}E-c4fWV!=DHnFd8Jv z@Snobz&CYw24?h2FG0L~*DZf`B=g^_G!}TEczNCP9qoTE9TTTG_Q|9Jp?<?bPR_4Q z=%fz)vV}>~4Pg2)-RN!*eCMfy;IVV<W46IqXTP7t4c*uVKdCl4a^oFLnTJMTa$Z=c zweiuh*rDEfThLXz2fsRH*EV%{luz)d@9O&MheL8I%VZnzM;=+x`*0&`{_9tVPj#S& z`aeEU+cg*xfQ=4cDsovlr=Wk*Ea8u*1fIMCO(t>vv90L0Jp31YoO(z@Ucf7e%Va%) zr(nk&_%Awn&!e%qF24jX+Sd&>1u1tiq?6MG`toe#WFLA8Ff}Jn_Q3azm(MfdGm}yt z^#f`lgl_UOiB3?*w`{bXy+SMJ^~p?}Laf0lJMce~_<k25*Md*9Y+dX)Wt-?nuH=&` z^X^Xk<$EtY!hQCokNqX^?JFLEL(?lX=9CRM@k*Yb()>1e<-W-;&U~AvP0;w(-MqZ- z;2Rw5s9xyyF0UozEHv}l&M)!=OSV42L_Uu&dpaTwq`y#eo{SKDcR?l<$c8+juNa(# zlKMgGe3J<E(z-3D*{s2F_zKk3$-bwt1&_i9|1J~+E%L5T*_6$DM>F#6^$2wr9(Zz} z*nvIRx)aLex2|J{)?3Qj?$KiZOfGEBwS!G2$~BV3P}%rg+Z)`}jq&Amm^H9YU&J>u z=j;bne~7KaFlF)G_^q+xyYDP+;Xi+<4@HmqnWMT0?K|<OXUA5u^NH->=Q8bzOms+o z%g=<F$W18#c(&(lFQlT4vYs69UAGMcN0Bz59!*T%b+LJ}>J#2Da%3QHKMY!W{2*;9 z3nG4d7Ek37v+}pFyYZsa>fRmJ)fHRd2{+Z5^R@4_ZFRdR0Xw;~=+t(7`T+Jx{mq-F zW%~m#xkE8|(!N8tLRGLyMV4;bQBGFppk^d|XOvo|NQKWCKR~-CsO`v}1;$r?F+-@I z`YW&O@$r|FN56p|ag)gF!^a``fNLL|GI$oSmD%pX1^VoxJ?c+lf;?TJkILAWzTj!> zoA2uj?j(`@?)Ni#ZcNm-deSLlB>%;qPu^Dnum8SFeB`FeLyqcBw8^vM>`p<JqbA+= z*Na`td)5{T11I*#p=HY(eLO8f&|AWb?J8^NutS8#jCoRCsKTQ2u{8SYizex0)lc0G zA>+z@3Iq<H(-)!2X0`XxrMy1iN2hyJ20e01>PnsQ3qp51Zb?*;7dor2`>G)+XE*w3 z6J$ZJeM#WqIhQv6y~tAy84u2@XysGiS$qn9_L*G92@9M{UTw?xoBphH(e}hpIw5)L zfU0D%n9#O=F!|A7(9)+Y?gUTXj>|d63y&YNh;NaZO<v|TP^n{8c!Iw^hi7e5>u*t8 ze~jOJ<EehwhHmKhiNK7d_w|}vzuLw0Cl}rL-}F_-vkzHjTXKj;jQdwE?Tg8?DEIyM zU%vSL3jb;M8(HAf!pLuArUCt*{=#4Q=HL0(|I$Ajcg*%Psg3bx%08N{OG)Pw2XFA9 zg|0>O`fk}bm2@v|PKrND^W&MnwP^2=`R%czRVa{<j_1_zXVY^YzoBLUYit&pj|Gy$ z_flvF!@gii;v}hiyRyyhIr~Dqzx%LwWY9ZwOR-eTql+UUA;3|kLJWyKa2tfBgEhdv z&Cf9Es{4p;I_vsFI=0(U>I|*AfA52XcV#~1?H~=jp$&)4*+Z~x;7reaI&ab&Feb%h zAjciB3|jC*tBQuw3A7BL+u#dM@Pk)tR+rj1xl(0vw>E^pT(|}o11XCJ5s|Z<evYM) zqk&`rhV!SbY>PkpkyirqyQHCw{^)f7Yw0bJ8_(x_pX5|_2k_Zq6BfV5VZw5Po19Cv zXMG@Lbj_kj=^kZEH}+?vZiEJBo4D5u$)8;6{c{0$IV=y_BQe_pd9-AxO+gLXCOQ`d zrB2?W*A{=+-$1=Ur}83x5cqKaj+_s^Icbg2tulZL+C#Wp$8-n#k?-0>dfql7MLBp^ zPJEtx#MPzc<T+G}YWoY{(hp#EIsbIWPw=t3I%i=d*Yd&DcSDTt^AS&2yvf3bz!U8T zNbcIUEhWeQHA61C7?r#|W-Q=Le;}xOv&Xzg7ya?5FA0?6NB7QHVIsrY;&|u`=(q`A zd<^^vy72TG3Zv7_(-^9S>=rs+n4l-aD`MrBVA-NUZISOIdAF|LqVTwL;7zzq>iJNx zvZdZkzVpt9BRRAUu<r7H{!O6bXuhA~XcL6{s4WN7kKs=*{b1`q*I6y8KdwI!e9!(~ z;Yp|)`7)`>ufwoIdqlKVQZ|25gLH_GloBxNB6yt`#J>kWyUV}r@LlYMx(Qi-=2pAO z<XI4hT^c0-06+jqL_t(rKWRPx&+Oex&u&SUAM`xeyjB^R0RqY5GcaauB-;ZEtA%G) zyD=7$-NFsR!fu*!ce`8k#71ooz?Zg!kgz9~M+{NRl4q#pkAQ@*kd0Jbc{_RXT=@U~ zE7tQo@5#(ld8)EnfX{y4{p`IXR;*jBh*+_9?7gQSC`Gi}e!^Fd&h^FYy7~$$^Hm{y z`s%?rzaB|?=d&!+KXu~KB=5BGZX2Hj_VQH|NPJgenakpH^p<IXu_e0WAqzNl!k+5} zM#6Ki^-BplbsS0>Tk+QoJK?=@*G4K$Xwc!nL}P`XQm16aNV$|5+Zx@}{^^-M@SOic zsdR?u&_ov~05r_S)uT_4*Vff{k~?8Pb=gPwvT~=rt6+w*#RIVa)lY51br8^n7nQT+ zUPou}J6G1qzw(ivOuM?Giat`DaY{j?J9bmMS*ap;F!*r~ULP<Muh2{z&_wj7Eec0> zXo68*+wP>-W@1~TztfKZ%C5Y&GR5gkKAV?^&uVWd9QZ(&|DCupn9&K_nf+euLfYtJ zN=&~$dPmoWU-DI;P=T}UK6YkFzhGSZg<Qimic@ax#KU1FR3C{89=J?i?Sdt)$)fDN z_Fbdb+F!qjB?2>P^utD$CtP`K=(0r~+fHt`KZP6L6MTt$xz;Wnb5-Apf|VZJWR7j) zQ9lv>c9Xx8U$#+-hbMUxXh?c^nO#Yc4x`j<gTpO5QJ2Zf-ZXr{m3@N&WB><e10)Ck z1+TIv4Jo$U_oWyU0@SaQB^mG2CxsG{2p+p3v$X1%uIV;7JH7-CsDKPVXVRyS2}pS* zW$Wmatv#faqdr$7-y2NRUId*^*__lC!h?2%k+Cg(W!hWX*F09KF7oBIK2EYh1f0#g z-n>XvAVR-HALx#sJ%Ku9m*)1Dbc}Wbe6c|=R*Sxy$Gxn0LA!NE(8x3PYaGWXRr3ct z#^@0j?^ek>%7PQWALJ3%e)2r4Z2FF!`1$H@YzWT+gtL+auFeG#R3aZ=!?k^Fzrn=d zMss+2=hyziFa5U}ZQpL+Rs(MXBi~k22kt-q&wlyW|L))X)xVI-f9utv?YPol-gIkc zl|o9kvrFUJG{@a8XNSaX-om`@*z#%dZ_eTCu)aRepyK~@=idlio>s1fx(K`pUw0h* zayS4ZoU|$Ix4LvquLZmwUAB;-Q)H4}{nb-`Wm8Xszb6HO<m~9dE5MK>D7Yzym2_G& zXn2=`Az_LeXw=aR7A7Q5<51}MzR2A_!4Xc3&O8t)Wl+Y%;D^MpFwa$wlVGyNHqq5l zx{FbVsORGZ)+qphS9@^Slrw;Il9qviE~m52o$>Jh>Q<*J{07s|bIe|cE@j91f<1WQ zZfBlBMNaD}X`LWtAT|&crp$o9>W<uF|I6vCoV@;eohN+khL&xQn|?jg`{--<8X3k( zIPzThE~Yd14hChvd^iKzz0~J81<9*UIp;T&s;hB`#u<n{I>}I{9N*E;C>IW8@sKjn zr!P`Sy9B<1ulfa+^V#M&^3EL(lZ1IOUFspo+HR>O=dL;Eo=uMyk~H>Er+gSVc&~@0 zbWJ&D#d*~=N;XIQ^ovPN8Vuz<_8QX72VN9`o$bh1*#dX+3zv%vl>F*~{jj+bEeg0@ zUiA}QDjPZbvRsaE+rr&R9%s6No8#P>^wgma@)vn|>7(4~nL3Ql-1SPc!CyEoEp4wn zg|s^EGV<qXv%#aDJMrdh=Gx><8{@ckm!4h!z>%s3!!H74v)_R~<%sDqnRl})!zvZ< z?1p1%&i3>vTmml%1|%J=397{T&PtSrf*n?*L<XxutO)t|lTXL-i=A6d!s&ZxWk+Oa zFe7+89`y8y&+S@T?Xedxw&P$1zHk1IO;JwhKYyA2u0a*DKReDQC(()t4*CQ|OzJy1 zCT!9KS{~#sIhoo{^&_EVYd}C74(;}VDU;Ier@^P9qO+vIMc<KoclFg5;Ku1Zp@;(u z^YoMM&U?J5b`o4|<H5xOInM%XL6dSOG3nRi+<NB+8{_;we4Kg<&HE<^Ugy4_CC-YQ zq;bUQ>%G44H+svXM(^gD38h&0jx!!H*ml1%6MfUqvrJCMKEg`?1aw9hGYM+lHZAE# ze(k#YQ*Z5iR`2045>wH%{Ty9a%QQW0M!nO6$)gDs8Kt$~h^}wpQ>Zu~RSko~F`I@N zoWa(9q2p6<r8cuFBxz}X9Sc&fay2ZH3;eYxe!!$iemX`)S?WMJ?W>cFbNBi>q0q-& zC%G-3`gv5j#`X|t-&9<oi7$tg)8@N5PdXhK+pLTdU~KTBeTw{<aMBG0%t{<Of@6+s zr(dHP0)-m_7cwb2I&N^Bu2bGbm0q-&%UF^;eOrEGH_=G~G%=7M(w0UqR;aRha&J3A z8b7w`1BVAM+HeVicpPosXOowyvgJ<Vrk`UICWYFHwyaHQ`|riJVJ@wsKRlwR>Si0- zbOcViHdY>Uy!9O>bg70G=apw=w1?f<|D_)3BM9dv$kZ?UDb3(QgC4bKfg2Rm@91ju z)pmb)lwT=QZtI0y<457?D&6oPEi(B_USCKZcsg^veF{D9iUa(>qM!7L^=H{zzv@{V zOnF<&2ZuVoT+?6U7$diI;9C#swR#OMY4AD*0%&vv*T?`rKgT0`bX))9(5mghm0kIj zXK-z~j6hlX)qW#(Q9DV$*uL?s5^;_WJM%JbpG&6`us*fUrqJs9t=jM5XZjUoy$9uk zJf7J1Hl>VlXg_i66Y%%}CtyKFzBZX0!J+%`;mhWK_~A#z10D}6@7zEU8l|JDGi~7U zV{L(Ma)Tl5Mv%s*e&2up{r2t3O<#%51bo!7eEiajbaMM7Gk&$RekCWA@Iiikt}2O* z{a=6jKlznkPuAP*4K$!tzun$Y1L+5TF3%DEZW`P43~yNe|BK){mN(sW?6(TKV7Q!| zZlit2bRbJ(l5R_H&W|}BK1<?;&exXGxxZGf<R2D#=wNU#!F|e4$F3i0;sCU$pED@- zI{8I3Wa-qt6BiQ>ZcwH}JzfXS_Hl&;pFTg%w_t@Olj*oKK+j+q=Lhx59lRZ&CX$Y@ z$<5pq%ds6jr+7MTdLT}nHPrE?{*q`P$1Ze|E@#u{2>S@ul`hJLhq7_X7l%PQ&H*~b zj~~uh5=@3>sBTu0Ajn?e!R=Do=xwtlPJT|_Xq%GP^6+*mU1wLkWqES*i-)<uo*Ev= z`Muyd@XZY%*{vYR=vW6yeOw%rz|O$B@{QdX;Ab)sr-~!T$*CUcGW8U^x4bzwu=?@= z9!FP$^TKpsZp$S13d<hiB=eIi;)qm9wzoT?PnqP5yi=fgAxsvI<vQ7rmA5!WPI^v` z)^E|nG&EfXfLqVVM-EO$oWH|cCreuiO6L5+hvH}izq{o0#EEqr2XE5mS#bIV&&KI4 zFm&8~95`*lH5km0t?L&u5cuMa{MLf&$jl*p*ojV3Q>OW)Jpq+z1Hnbw;6sx`WtItk z#F}z~65*x_VG*;(R;sI%N4u*^OmwULwx#l#QbE4TXxR{;7&((3oS9AxD`BB{<M=`4 z9TwF?98#EP2WuI0Rv<jITpCZ&O}<9(;6aw`ht>ND-nh=PrSO7Q`i+nchs9~aj)w=9 z$p`m`zARyX|GnZ<x79~VpxSy2oO<cRFnGz)7DAqE_tFn`A`rabr_R;mTvMv{#yR!U zL}gtI0yys{bHn_DTz8dE@T%wbnH+pHvU9%e^dhac5J%PfQb2S<B}4zJEh&5IMZ4ut z+t_Nq8YW-8x1QKu_>FUnr%q(iNqK+C$Rs{B6i2vp6S(=JD@S~a@{2xV<1riWZ4of> z=+?XMeVDQ0-Mo-?zuquTxoWBAid)-?EcwCnwximv&&r0s%51`+4qC}UaBQn4m7hBF z$ph0i6g~AkY2=#;7Q*(ax8Wk^xvtIjI3Slc9^R_8773ictXAq|H2r}|KzR*~gdEC0 zStc#8wYO@0@FcHw+d7(63}B0|g#3URU1-lOEg9eV$Ptdh#IDg3FkTs2;P5+T;Tt&b zGO?O8TF~TYL%;e=1EQa1q+f7e$jCvDxo+U_6dO*LrNQAb2liQ8O4~H4tNDaRbwY-0 z6}7sY^6IZ=;X}VoHrLvC`+?Zy++@MiOu}dK+spEX))(4CS0L#N(^Ez_Q$9Qe_k3MO z;Pi1<icGLEV-~v)Z0#?{PDaD!s_2pza(EKNWtUq|^0imKLxY}KSv2paIdUINZA&R# z6+@F<AKmVz`VP(X$NSm(>aIZgoVA?^rhT4C`Aopso&GAgf+G~2RA21MgmvGoK?mvq z-)n~}o9j-lJ03*;;Y)u+S1l76_a*M|@5{djpL(8`XS=4GnJCX{gDtPl_UnbtYsV?4 zjy#Uxy++;<f+pUHvYS)&(i?RN=$eo(4ij>#6$H6jr@<FCvPEyf-#SUzJ>I)F!P=1> zUVS0?*`YcfJA-4#OfuYVE~RaHZ6GuTr}~&SF?u#$O^{sxiES$HhJ(F&Y1-hMVEhF5 z<yir`Hz4Rh8IQ7~H7|P|T@LMOU1XU0Hpa7UJWZbdfc^wpKK=C5=-+gl-Cxs}Z)MRm zo=srn^OTvOP#;MO-vZ}us`Q;_smF|m8pO}t>g(<Kx6{Dez{t1L(;cWk_e;O>PqS*| zpC$3%zmxIPT$~1fY4#esh9o`5%T|B`6}vxe?2`SnJJG1$6nhGURoq^Rehrf5-vG@u z`Cp~?m4sIS3|mTPyQMR1oIE&!dw{B6=cm;5ED4i#a(aEvmF=lSCypr7(GV+zBS0a5 z1k(8Hc-aEJ9jSpbU2F1ZFd_|Z(U{3qa^k4Edp#4%M5)suKFg$G9Pl`B3RLzPbUD>J z=F-TrQ?xtqo(WtX`M{LzWL^d!33jYp=!b67E>35#!8eXTI(%>$*l)KESV`XjqJu<A z;pfun7s+w>q99A93DURr<00E+;Oo`?;5)dLf5Qz{#RmP*SQNd=PlGds!p&?ECEM2# z+_cdpyqEIHVhUv7d~~9hqdMcraY8!*t5cNndrUdwC?_qy30Pz@nLNw*N1tc{I^5BJ z{vPIzi$`fN-Mcw;HWp_1*dn3Ux)>WIn=P>ZM_3d}rjDbGY-_VE-?TYvxgf8z#qrBI zSV+npWQWh%nvBED0V{sG;<)n5+&yIz^vUHkSqSFhTzV~puk3AODQ_a$)dP-kD6FEP zH|MiQk9bLevX!Gi3P*Gud5?9lZ}7_6I%%Mv)J2L<d3Y)Z4yMg@GMTo?;hFt9VVU+j zu$?%oBgjLej-&JP7P>i=2md{FTZbP%!3QqeeUn4<iv-Ukq9S_2WYX{-S-ig_Sd<E_ zqzA-xyQ|ij)ggI_UmUScaF5M)GLrI^I=kzgCk&#~*s-WbChdYDKL0zP<Tk-e9`4m& zcl8$f(T4>cbjtbu=zAaa?pyEBg$eyrmmBBVZg!;4VIyR!43VQ^l0jPbX%E`P(Q#mU zH(CHW`Rs6CYRa*!ehxnU=}g@9CAnJ|p4d(&W~ZN|EikRq)Bf<rd4|vKu@|g%!gDy3 z&rWP683G${X%q6`hy;~m>!fu09$OPXt3k%mFOvL_rC%s(pvlW8-O2nS_(!MjzZac; z_`y5h`{;vr9_Q;nzTER76PEi{ro?%Ek(D@T_D=-Vgrs-}x0XCCRqEQ`{bR>%1JMy) z%WuxN4jiMT97dlFlr-&do@{-JzY=J2t`3gD!@lTB=Cq0ObAjziU_w7Om6n-=sek45 zsb1JzoPpV|V<nb1b{^er-_;;yCO7H;j+V(8`nGv&B>AZ`^=c>6*x1$yeDd&mwNbbh zUy_?QcHu@q;OL#6%1?-a58>)A?M6G1ABr+(*Tw=jx=+#|c2ba`Nq_pQX$Mw?2_l8P zmd#ILtJCs5#U;vWFeT}IUrh90%Egx;S8M=(%9<3`=JRMk$FRsDPhf4{(KC3pC&83Q z`II%j^cN=UeQ9!o1p;^@S2$>0sE-*p@I7s(%#D~)OCbB$+S+R-x9Xi8>%X!aD+HhP zrEFm3TWQBO_loR<FI25g^{CgNK&0ed!)M~!Hs2ttm0a_w-uC0cGja-`CK#fxOW!>E z1RmtGTzK04^BA>b$H|a$#Id#_$fb|8VxaGkNZLi#z!g{U(Gz^?;&EV<5!`q;M=K=I z*O$|gen)_~LE^KTN1cItKdTqM|NZa1^WjGymFD)HWLy5o?(?)Ce>{PLet$PMf#wGv z=0(w2jbYWCdY$${zay_lU;5rD{ZMe)THoP&jwIJ5(W5|sfW>@8hW=XzEhkVwZ-Yb4 z;ZLvwp26Xqj^xdl5)7?ttC(!YAhvAPUIPp{x54$~$-U@Az$h!3!q&F0w!!2ZqY~Gs z9+iOy9b4<-1Tu{MJ8qx{_wYLP?sLDcZQ2I>`0LnF*s%?Ir^lh|y<MM&b{@Mij)bn` z!>144`GVcGzVH9DU;L|o`=1u^+n+bmz}vvc8>#CG{NUw_Kas^y|1vgwM~CfTuV6p+ zOmmp7U>aTv1ZfA%&C@EKOYdJVrCbYd(vLYVtsevSm27+(5Z`1gtvf~TTznPPkyFMu z@%a@DO}I%t9n2l%MMiVrZZS(cTTbTur0jKd4rUTg?p!A=zFE(wV_QCQ<oux5Vl%M1 zCSs-|*_~%3PNyxg&;f^mQ_zAb>@HF7h)H`d%kneWG%&(B0Gok;!(XRA14TRC3=EDO zx*c?M)Zo=&)6$XZOo#8_k{Jj~E=xT>b;zYQPvJ8-mcN46N$Cr;BTJoL<+InZ2}qs0 zI#wAZJ5bj9n8EAt+X-J_GJ=H$=MZsR)IE%f!hpPT2I**r&f4BC3{Kv+{jIK6mMyf` zM<0WF6+jm=!5+Q29!IE?#-rgKnDGm~H5ItF-yD1An3Iyht921QG%%9mID}+R>D1#o zoz=bT!{^j*V8ZV}k515d@qF&0$&ictBu`z%@<wL}C_gxc=W!xT;OcyqXK+*RaFuRt z$NAb%&a0vlyvP7{XjcPeVraXjkKs9JiZ{PVHSs{qIevDslYHfxQF240#fndTM8|PJ z>X4hzvA-NS<(=p!zrl~BgI!tKnd>^S4Q7~N%tWKS=BKpt6Hcp_auVUCn~W4+F5b)P zhY#Y+Dvwqt>2;973|;aPxOJGiRre+q&)R-rE<_!5?pE_-BUUGTDIj{Bz}`s;?#IE) z5$xoEBAu(4r0?njFY>iYVwza)KBbSy8xpJ3nV98NzL&pxjK(o{*;YsTt4<8-e0i3d z2qrXmRZkwbz%5=vn~3@Ij*KWjkM3m2{INmKa~})oXL~boO8pFUob2FtPOn6%-8D#| zPuq49otvn(uGDiTSY(a8jN$1soU0!)1(pp2_oFzxf=O(B>_kv!>Y8(^j_P=yJ`|3z zkHJmP^B7ECB%AYlft!HQOw5MgnXI&JMTUFcBUR^l>KuNXNn$XhF7yLrrel1$d&`Dq zlDmBchZ&4z{B46N$3cFU$<Fh9w*B+mHGG;E;ZlN^<MzuxzA@Cmm6bjwi;<)DLocZ> z(XsAPcsBgoYR{AzJxO6ZD&!IXmo9@^!h7wDE$6&_SF+eGeye{o&Qm8zEM7Jhi3cXR zwz0R^5c|xAMsbvvBw$zZ@Jv^*TJ1B5Ipi8v*Tn@5qnD9w>!&)!uU6KMXlThF{MrsQ zr=Y?`YpjgDK3aq+*Q{n1UYTHN1|1Bo)OmE!Qe?<^R3&L(mqBzO+`}OwZTi{+f6}X) z(4&ivIbqtdc9ix(=PPr^8ZvMH4Iw;7M!04&*Tg9oSQE3kQ$E2!6G>?oTWSBN4W_?~ zZ3+r#-&Tn1#BlgaorK0=y?P<1Z71N1bK3L3cU&r~Q?k{qorI1_p?0y8$uM=1r)tdg z;Dn3rMv?Mdul~wJ>_mUoe(>_8DRw+xz?n&O0t=CS``{_(7e=@p{LH3o^<Bi%hio4E zd>EaDVq^(iUL^YL`LqYYm3~G&0gDZAup_|{vNq7+JiKiG09rt$zX0x|1U4KuI70tq zRQF&_ysa>Jm`5@?Zl(XQV(-HQR6qLYdo6F}2)kX}^r!D1ToVYO1L@kkpa{Aj<v3&E z+ThqFo*!i54u1MDDjFT(jcw3@jVyvF0v&iAo1S_CH@l!beNEdHOxf$|M#IXcKi9V5 z!I!+n*|8+$*|kc;4p{xEM^&tVX;8|z5xV;9fq5Amf;_Wgrej6$;FEsHWgpv`fS~lz z9leZ<%56XeykHd^yV45((#ZAMXX#JE8~&Fbo;+e>?4rAApFTmH*ZV(x^e2>myS=#v z?o8_6y!gMqC4T-d{osdx=WqPA-;6Q-*VV$b=Qf6)L@PQ5+a71|yC5BuE~lmCL<^qe zKagLv-jH4gpNe1*e0|{~>5V8!(bm7N*iD+d0vAuArEfBOy#sK#iS7<Nr~4gpTVnFA zoPch%Y~27~97m!q)0JN5Vlg?MJ?QElIcBd5S1_F>TDvQ824t`uJI`Q|!7=Ve?~T3G zxhkhvI?@-3rhB}?DgvEne)6A*Lpu8Bd4@gXN;^}XZk@9;K!efACb^r=c!Y)5X=Lwh zHUK*0Qy%`Dx6_xCa-6%$l`=(_&U$DSAo&@{>NJ5JCl=ifXaR{|P|~fPWDpM?FzBea zUL?&n`GuZxbn%88+(TuKb3OE=Fssq=IXZ-nfk;OAI)$Xum&+#Qr+>L#$9?dzr|k5R zV^`ng+)9x986aO|aNF`|tHa(6kk^cm&Ni&0kn_|BUb?{<TwYMu8y`t-JstkM-$9!S zH6oN*`D+*DjUAY%;4^!vIh^fK%GJ^=n)5S2EfyT;fC{D@2flbuTA@R~dC4Y5%gVs> z`RhxJFByjvh2HQ5cK$;*t2}lxIV&~BF);ydkR*EEqk7m$ze!+&R@zwXb#SoRC3Ge< zWgL$wn=Cq?JE7zFDEn@l%J<{2kXL>KETP->qL7`;K|_9S89%O*7D0sM%cB(O>Znd_ z>f6gpO`<tebp(^wiA<bUc|ILGlb<QGkFHq3Ve;F%si>yU>Rv^Lw_LY=5XKM=>RjeX z1$fSh3BF)SZLO28v3<^Q!2=_Yr3E_2lwy~4sx9lbj{`}^+P44=nb1V0fh>JSc5L_* z`O5@a;ubb=gcjR1QNN$OhvD67pJTqoQJtlaLkr(ihJCn$ozF=omD9X?<q2^C7Hqc< z)xNT?jnEG~bxxBWg%hs3M}zta+wi1}jVz;!TqIp;+gxz)#pU;Lo?Ik5TXc(u@EB~l z^Ev?%JgV!~dD7XbJG4#9<Rr?AUaVTt|7WuD&XYc>BvAEUR*-n*Q17P3wk%c0LwoJo z#PC1%A^$Ljx$HYOL<?a)d$ZX@>Pm$J%Rx|w{EqhOJHYAzj?2qL+jbQST|ok?!FsBG zbL}q)4Q3(Pw823)6xA^yrzI}Gd@6VL+MCrzrw>9?JC2Ewy^pP$e1>j{*Urg3)h40H zQ+M#qiiX+;ym-jw+GHJcH@fMTWBxZCJv>Wj8vf}JA5GX&p;fxd!*zFeC4K1calz)g zd4YkJ-ZjX!_YfSri(ioTvi$~>=%iItJ#DAeeW?XDHrKvp0<r9GcGvFakG(c%!7kGu zJhDO|Z9#CPlk?cAb1+2GHrlpQwtSRFqFr@4;z!rGtDbM<!}8H*dg-2$wRi(teIKbx zudri9iq=M)Yz^J$6g(Sd(5a%r)KAJ8o&^a61H3$XS0}(XeGGWIL<4sH;f%#rt>8;8 zUg<(TOdu#U^@rKn6u7aq6Qqys^ar;-6iTB<IMgZIojM+VW+HEVv&oa*6;<?+ZTK9$ zx-zL2>=O9FkD!;pk065b)Fr@g^Z19A3uq6v(ZBa=!Ex`N!0c>TP={zM=ba#MvLD;5 z-Z5s(ID*jF#q@XMrw0EJD%>^5u>8ZM{FD(?DbGojHhF`0?N`2jy!8?$yTT_v0=DRa z9wr!QHO;)+37)q5j1d!rAd?rW&T7Hs3k*5HOz>seiuTgFY(3+RP)D%x>U`>|eP;Wg z=q@(N-t72SmwXQGt6z^wDf$#d!AoF%^9O(PfBIpP-)=vF2HplnegdU!kw5pB{+nO< zd;i_9{X(w)9cenk8yjD+*B@ixjNEp6)Lv$IYsTa!rJY%>u1%>~e;_}V?+qyNMY@f6 zZ%~ph0^Xlnsw4l=^q`J2(%{HqUz(FkiD$d&Zt!k;KvD*kf^J>N&iSTYk2&jwa%cw* z%>hs<TM{Zfr$pB6F$o6VRIp;FV9#}a#nUqBfK#}4XX~hN;?mh>Fuh+VhjYQp%fQ63 z<al)OO6Q-*dAdfRAtf5FQ=U$B&P}vaK0AW7yV4wfE}RYX65D~l3?75J0cAS$l*VJq zW+)GT^pWepw<ACJBSZ)Fp%dUhPk9BMmy2<n0t@cCqyF{Vz{rF1&9-qC(LrB5uhfI5 zbyLRV-EPX1?VCgpi;Hxd@9dPWOjp?;!N0qlj_P`K+PswH?8ti-ov7>bl=M1HXk-Vw z>4PWQuY)mqty96SvT;0KWI#7C4_B$n)DgNMDn(%6f%j{-0!@BTQ!17;yi4}CWy4Ax zr_di7*EXi?Wo3hN9E>64s#t1I7vT;}<!R!!Dd1>23~f#w87H_gK?~O=ljB@Q-yBWX zTP`Q`Gft24v(LonSO*r%-Jzv?%5>#JCa&{r_B=PgcS)y23Z>+>8xuq~=jlY6Ht9I| zAV&^D(Tg@`@_d=31irzMI6(3O5_wXFozxNM;3f~w<O7L+7N%1nXK#JzSNa*xxtn;D z2wnGbjZc3;Qd>!4+jjZIzdl9@Iu#g7pdl|^wMyYp9sP0WSseZZN34Y4)TuA;G4V-R z6AlihG`bg9+DR2T)`6V~)#zgMH4b?D$>85W7#z85uw);hB9Ah3;8|==tQS7^JiK4z z3`{31`fzoSos-)0-~iV;3Ga@TKlz^RriXq`G@bABuAGt5<gs_Mq%TgTCj%XUuG0qT z(Ow<I@z!oqI*06zsn1koAIHgL{r<yz&KOJr9ae!n$d`gV-URMRUS9j7k3WyzUcB>e zm$gTRv{R3k`Lr}L;&1HYMS=%i!+2zkHC4(gunok7Rq5y=W&GeR;OS3BK0KP}S1*o9 zXwa&CE0_SZuL&PXYvH39cyJeNswVjd>0ERuMRwaa=+*+1hbG#ENu_JsxojVxjPVhi zt$k-;T(xW_)_tMzvE#8Rkkc2m&+rIdc=3Llt~$dPh}s)o@k0VfoY86cN!>mtbF-71 zqZeE2$=i<&OM#y9#StKF#JMqb@Q(g#gNzz4_S6mez);enBkD}Z%1P{T`T+m~<5!vd z2ha3-+OIxw`bGSk6q@9kY&jRCr?c+CK$q=TwfmH{vQ^vfr@T*Kq(Mi%No8Uebb^nu zdDnJ&_SmAac)47CHh4`h`6J~76O<o4r$CB~{7TnOf^W;+@(lDA&tR=06qKFg=*MsE zIs8$ae!44D1Pn64cP-;OR*YQ?JuK<BV9`fSzo7kg{0*(OHT*uzOOw0$Eqtq2W0-V$ zgMt3x{WAHsjs^Hgoyc<>eyrrkOG!Ouk@SaI(NLQYF6CF>%3EcuZl`|d_(|S%@yVxI zDUm)JeE}dZbEOBm(l5`dhxFZOANyE)7V!A^;{<UdJ6Y!jTqHR3wFwh@^vTO+=BC2* z$01W5jRp9!0<Q4UHU5L9Iw7m{>zEx}(b>MAgpO9$>bG=eC7|o!3)Iz)*(%w*6uY|q zQa@r9NA#HVm#L#2OV%&I&+rxP<YK=vL+9$ekGiyehX1Lffd$`jD{Tj?>l&J?=4qQ( zn^MoS35p1KTj7(J$Y!OFy7(gcVq5u0!~glqzx6-<$^m|R_z5)dHZbxNDD6&>doTZ3 zM!w%mnqIq|*q!_zbJ68`X#~?Kra>rjX(Aen-r|)lB?>gd!7G{HaM}L8n7;ww$0XzF zjWz||xDX0ttAyi}Uc{f1I;uU5^guh9Dn}a#%9PRn%Xv<kyBQ#DgJaIowe`0=3=-T- z)?6Rx3n|yHR?}cwWY;6^bf(~)*Qv};)BPU0UMQGuJDp>GOT5r|gSb1E28Jwc?as-L z<cg+z2aR;11{R&APIEsK+sAG=?HQQxP(gE?00Dk7c;?!`W*Zp}uT6K35Btflqvj$y zIs?Ku{h;WJ?l!N*`m<^4V3}Z!)0Y9G@XB!zfDb3-Fcr4^Uem95zs*@`2j#^PL!@$D zOE2BRN=^dVIsNMh$eX$xeQfDLXW+AQ(o%_ounzNTu(}M+Exl60LkAoO<$Sql`RfD| zU<!4$N$PTSxlWfn&T;SD#)(j$xzXRxLU+<guO>YKoccr&i7PLyx=9}1!^1ezbGeW& z-G$B_F+8j@x@9{l34d(rR!?j-sg-GTa3M5!qO<BY{Oz%UlxZwD&3<V1m@B%*LmZ^a z$kDgghK^>#M;rX|L$7E+7rSzBJv!OCCh0iGa!1#xn~Od|FZJXuDaYtNOPJ4H(sj;E zzJgS7Y-fYh?<A|IPG-v2IBRW7q0uK&@JT0eCc9cAa&f2J-7JpeYxf-YFXG5qCOvja ze;h`RqP`~hx|5Nv+{w*S<1hu!@D*B>E&4s_sO-d-vIL{u@qET{jh(@7(k<^n@Fpp| zp_g*u%VwhNx)Uft1hOTMGtB|#3~yiXZoXXe=+Tqt)O(cBnLBMJP%Rf>>e#2BtHT() zoJ=qNo9F7|#HRo3o>g`5PED7U$jx?itfQM*f#XiwOfcvY-L>0mP%UM$ar)`3t6);^ z8ka5;pI;^@)$&PbxzZN264cOln;e)lqyQ|@1KzjoxK<f-_{8TOgY!u~h1}$%YX@KY zOzDeHa{*TSVuQJ>>4mphG34>6r(izG3lj6bAunS#@$_<5UjSmyF9XvFQt;(JI~!O# zpk^A&o+CN?g4)1I?#phqE$P&l#7-7+T^mi_l##FePE_e{aH2K1r>zg-q-CpadvtD- zK08~Krj61eUE5sa<7H@fgFZJ2VvvI*r!TTf<bLd7x7sz3=;;2JS-IqfLhFUTPH?qB zJZ%r3>_uBWD<xL0lLxPS6TsH4_6cA0hM~~Me@;htCUo<7g7MFzPxO}Dv#XDsM=teq z(O2~@9ULh}7oCtE`bi2evj=d>=6J2w6wSs4JiZsB>a{Y0cYQJBX%BFb|8d?|(-%CZ zo$VuR!C2gARF<?^vVqrrd{ytAe5Is137zT3X=iZui(f|v6ZD8QvFYkDbn$1~@|Ql9 z(Mk`ES-~)Mr@s$%QK*rX!3L&%d|8c7bKN#j-O8>M!4^H+!KYlnlPQ1r**5BWCZqGN z3XsN})oqFojbSnA$@7=CKpuGMIA~ht@#B$kCgx*fQ>%f=%7w!Qq;sBQ`=;P>w82T| zUC|Q1&w1NJ^2uA73K&}_8=Fe`>GP%?fe|!Nf9TI+H$G)O{8>d&9<{N;Y6}7h9{I>) zg=rTL9z5-}GVKSGW-Lm9!{zWPFe0F4%oGH-)2lMx?}2CMaH~Qao-aNQ{^AGA7u4{m zAl?L8z)VnLY?_?vV0gucZN5HJ|17$~pD_qcyM7Dq>h9=i?LhtpR|YP+4i0p8U;XYl zjNa0^wUg0H849hjvvL=HJ8m7}uR6TyL)o$A)lJ^;_2}Ur8*FcXe^L#+4UGJxnmgrw z;TM19pa0#z`D_0;w)-D8NlSW@?b6~ko74JF`8J-@D=_}cwqQwmwaf+P>rS@Z*X2q3 zars{daKqNCXrcSDC|@mfu3Ij;;fybmoy5xHBj{%bZVJ`Wl4y`?#uZuhl(b7S+$Vbu zu8uIx8{liX!3m<}4uRIoDRwEpcrN&_l-h|!rgoMcTV}x011|^8)V;y0H*^iEIq!1v z;OsjF5)d&+8Mt)PouqL<lP_3eqG7^euk$OA5;*%zzznDuL`&z2`#IL}NC!O==cJ#! z4#c?_8MbUNgl-j1C*5bVar~C1;a^rR{B)~~DQogzfOMB4LMLzJU-&s5KEliGDvyKe zCpZiZQdhTxyxH#3zVdD`9LH?nSB5%Phf#-4I&(A_cQCYMJsaKCd5v<$b`ISXBKZXU zl6S7@rMi;`K{j@g#5v~}ae&V5x$fqX$7C%_>!0PEjc_dCdXUM1!F$RK9@tx7fkE3~ z&z0-8AUU?KGYPxov6+_1J?EB7PI$pyCCXayIwkl77hW!MhsCw2rBi(#dv_k_;UR}h z*`&a4bHLNk4n_9FIjM6LIq{M-@KYWS=%yT;q7KQ=Y4$jO(jwo|a$IK$FJvk`Iw%v- zWB5grQ?@U?6C5!?r*{tU)scdwL=rpXY`O|hIm4461D(v&D00QQZ_hv{CPP^gV8w+O z(9TO#@tbm)d{}w#g{8^~jC`KJ0z43Rl2TowG5F@F-I<7aOaq?7+mW%(eCx7Px$=i+ zdh-ZC+(=Jw^c5xUj0;d(c>s6s3WuLiEFbD#(581W<HTBBp?>vEz7nIq(w7Njtu8sv z12c}QJ7ir&l0XF6yyL@X3qQ+?00lAFv**Em{_w*O-wzFaO6n$bi>r2^t+4OZYnqC8 zp9os1AAO}41J3HYNo&Q#MEaG5*pwA9Y>MHj7n8$Bwb$qUbmEifT`;;ql~kyu=d+4s z+Cf+PL}`LKZ5Ppj_b|W%_ueVC>O`HoTN#AWqk5cnPA8`DAAg$1Wzw&hkj<TWpYP4& zg1s37o<4~^B-oTXXiy}&c$Rmoq^9zh3e1WXdbIoWvOcS}PqN5YA#>7+d2KH%i|~;j zI`kP)t0>wY=rpi>Z%fk1(~0wGhZ`8iJG`~&oat*2+kUb(SD565#o55%cgoT{TP@!v zQe(UYrK94jjIl@2;IonXMWS`uP%S+;XrpbcFZ0BQJK>C4u*AeI^_O-%d^dS?mb#$~ z_B!=JFZg5e+2F=wc$*0gwg$gX^J>5BqB<%K@8S?_7+Z)YQ@~`+KKhy!M3VL0bgY-4 z8^Hr|W^7{5q1pZ>x*<nl!MD#C9s(>Y@EIRsFKlgYw#4pJo_%_`BfNOAT;Ka{tQh#{ zd-HNmHm9wU551uYGk(br&y1JaRD+4ZO%HgvPGaX#5$$S&CPA0-XROUd^_b)MFM|u8 z>J&bK5ioR)r`lw72;yw#Wb1+L(Sd8_E?eL{g2fi|Q~k;YF}j@b!Hp?CSTmB>fWc{_ zi_UTArCx%|YTjt8a(<cebSJ;O2ZtlOgL4AU(^seudu=^%L{V=01Oa6Ap<i`F%!-k2 zVW9OAyvous{TQc~->aPt4F3fFwl6x5ZM5#-%DM7(w2k%EUHD}`Xxz_N(x}bW`Z~5n zC}otL_vDQY;Kln*^xfn~Z+XJIdhp(rk#|;0fSX|0*d2Q91JmE4@%ZuRHJ#^?U+u9Y z@cP4y4T1Fz5&frnqPJP4GJ&2=XUD^r)hp^~+Su3(yzFA^rTt>~ool|x$O{&a(szeP zI{dqBUCp)nz1A@vmZl?F*u>UBY23f}kN@*u`S1Vv;(L4i$u#gbF!Gb>?M|ux<A=|G z?vMQ8hd+wlf2i@k(H8hlBow+SyI2;V=66ZUS+A2Y4dqI)%~UG~e}k{r#V~mVD9q%@ zx(p$==Lc{a;<W*9`EP!V1;kxiTjtvwmE;TAddQE#_KLDsxjx6h(NAS|@|8{5=&iEd zW*S&?-7-^feivrT>A;e9VZp^*w{QxjYg{IZvv~S*aRZaDTn3d>w9ZcM@YUIrhMDYM zBxN%=S$->i--(n?IcZ&5pQ9j&0ovr(rd02+#!--GpyFKj?nFRZgCXX-_3ebY$vX1R z+u4=n?FNE)CIJ?NSYhavt&%f-WUB(z*`uH2_k0sw&3^}$>OXwqpFNob_<}{X6UQm* zMC)i9I1F6n>*#}QGe9}^%1^dloV2-~{I8xjWxzY&kY{1(?PLMF(6~!0Dv54DRu}Yv zKl%tD{=hqLdh-g-I11O_7@_(Okjv<F@Z|S`cQPjbVQ4;&bB=Zg$8)S6bB^z!fApHl z+({)}t^>4uOY0UsO;$~!))|p57-K>(FAQB=5rIQr8IQAnkr~|-47=p!40Q01U6rrn zd^=}zebgYw22_$p%HBPSLr4d~HUYiBjJ|O-6P4O&Y%-`zqbh90(fNEOg@a@QeR*b^ zjyN9(Wru(3is9E;G=YxXb`u<Oa9lu>MVZ~?RlcNmGU#}A{M%X*o}@p_iVStI+fGD$ zLbWSJ=rIOjf~Kv9FyY#suz(NF+ypiqXP*G)VC~)H$TAbFIFnfp{DL#xNnUgvFnrHG z?accpxWH6XC#|T4X9nAvF=5W1eq`*=`S1g$Pr*LOBOR4j`OpxY`63e{^<AFBLni^J zt{-P|^(^(H&f&Bwf<wy5s~*+C{WyI2!`JHTy?39qUe&LPG}(gpS!h+R@GKVdMOJLQ zeCPAjKfB7FA7unq)I)0doli4y`1G^D<a#H!0yLjz@76jQXZyVb8@$924(-I}Nbx(t zj}XkJPCov`=M%G1=h%BE6p;^arF-m4`aEktv;=b0pZ#7w2}zfo2yxUyt8Jd{)L*Hw zKXxm)G-HW(ICM`i$m$UNiy()fmp;5^mGbZ8T79L)yLWZTh@i?-E<YtQZAAa@BCCS# zz2^}e6Zhn2Gijs$to6x@a;LAb8fD&p1;^OYOk~e$9{~X6LxU`BQ;|8M0navNOa^+M zMDLBkS6gl1*pz-xyHX$8>x(=_)YSy~rr688yD5DpG$z<d8{5UR$+bQ&a%JKT@8BN& z!e?uH2p#;--SQyAGamfq*uE_F%Vya!JK6wH`#nG@L;vuhhnENHD7p~fP@}~e&}5zd zMBPq)E3OI<Y#h4bbnq%WiW|D=KW00}v|V)3nc!ULg;%-kS0M1y1Qwrso>fITx3#}I zZNe8yrcV^`J$LofhD;{Ov8y!N4@D2tN3>QWGuxYfa)Q(xhUBGOAx1TkIVb8u`N%T$ zl=Gx@qMf?ZUUtmbwm`qOX$PZwbm)J0&N*4bLqYSSY-=w(G>`7=2iMwG{i4_seE05q zUrJu?nm&!rV(u*>PeAke^Lz?Bc*(`4ZP4xc(y2bkx3r=Kbsz3pmQCJkkOdxXH1(gh zLH6#(%akpJ!*g|(bPR3(j5z*nVAUrc)*jo396rnU;Rmb$1$_<P=n5VY@bDs_xH1-J zY+ZjNm^-o#-PTL+mrj|`h6UD!AH3=xwJCj^x<a?@QeY)C$;)o>U7qfZf1(al;kMD% z7rQxSR#)<gwYGu{^$xE5<qB@Q^s!@sr`VZ#s0~g2=py}qaTIhAU-zb@%-GfXJ$>9R zZO&F7Haey9<#&$ixga@?zGw(N*JMx@e@Ao2uK5v@1`nAbD*QX|eEKh+{F`q-&pT@U zseZ5C+E0b%U+=;{_`wfe{Qckl^<RjE{?Bi!iS0lf?`*GJzmj_gbT2fQw7$J;L%f3* zl4JvU72jSLJ{P*|-K1@U-L%W`N-l*u<W0K`z~BII(l3Qxe`2sOiM~We3NFn_f6nRB zJ89vw!#>t;^w8q{fuq7*lY03|+U5qwh1#4HuTvz7YtN<d`NBgdy3z+|AflUtY%<d6 zwS(l$^>5HkU_^%~eH=8OA9UsEWbYU0ih~?4cNEe&atz6gq;rmi4x2O8FIePSN4sh< zKxgdfKs}$u9X6LIgXRQ9Ze$|c*&}2Mj7WHcul&NBvtAvM;Y4_x*MTL2yE2zA3FI!r z%M5^=+8Gpv7JXEWr6w(S5X#oWId?VbuN=|6Lf^m`_!e_5uCf*M@^i%{3I58G^SLu% z0x~$HPu?<w*Fkhmnd?i&(WL>JUW@Cb9muA`>odLT#Ne)OOAABbb1bRDL-m~WGF)EA zL6pRCL{Iq!zcSuy+Xh(nB4F@5PW$tRoCw!(igJf_c~q|HDN~zkO&jFH2M3@|0NH1+ z9M1cfD?0R7+%%&sXLcq!@UNp|6#*xTJ#+$l^h8*GM<-bb1Xuf~oGz?8XY$GHv4wfu zhrR-?-V>0MM=nn8+}SsQXb*y|@Q6PfS^7IyxuD09caFU-&^Y4NQ*?yh)j8@#R`GCT zwF48($m;~D@G={F9GjHRNffN~K8}U=NJb|liYgo0T~Vi9+VvKh7?GXbV1z?k{X|9+ z3X|qUB7;B~NDi))E&UYJPL(enwugt*i3y{Lpvf}4>U-=6d~7LYz?oQgQjxj@L(eMD zo${BN$PNCHOK`!vS9}czzZ~(>jssmhd2hxS`PzyJF`ATyCSA8JN4-x2^Za>M%4HJc z$)2zny7|hDphocf0t{QS%$f}JvAahH+$CSz)gA>?`c4$O2tR^2V60T><T`2Un4Ny| z>1Tb6MtulYufvT$69^M2D?0SsCIz1-h$2sLLlss2)LkU%B+NwYsTF_W6K(SP^&=?a zGra1V0SE#<icY=TMWDi-q}b`~`e$RoBkjF+!`H^>Pkqy8w#Z!bNs8465i7ht53TSV zCa11P7y1wHouV(cP@75N;S`;e?}Q>L#TzPMF_mNO6|@4B2*zI-$aT)OPg!K7H#T8w z9ffB5vOFr&$yV~`7^bs%q=tT<3rOT|Y;q=F#TDBg;_Z=;AABjJ+>BRrk0+3Lc9cKz zk&#Z?kFcfMc8#t)C`X}Q!mSW^0&P&lIgzYf>Zh&;Y|6A<%>)T;e~Nd<IaIdL=nG<< zhSq(bIDL^m{OC(sbsD&_r56nVvf)oZ`LsciuH=f%Y};a|UO4G`RwJa{=u-njR`w{U zMo-SiCmFq9OF(PK8trR%S7!QZ^)&iTUs6F%+4kkZ*GcjT3K*Mmt*uwzl{pwGH+v|J z{-b++`P4yVrkHNQoj+T3mmfJTFRfs7J91p~MuxS&PRjLZ`nEJ8IFe5`TR1xuWDTvh z3+7uR2vB{%<YC(--m@DE1zEpLIrMtNsJ1)l+s7^Zl%aQRcXX;=wJq->vk6Anz~-m) zmampkE@kRp1r{9I8w6^9qo}m(Evrm$qC>}mZ4>aFHlI$bZEWebW(b;o9`3P2{mBV- zkvaV!-(!O$tz-R6%E5oJ-AHil2S;zlYC(u-JoryNq^u3UaM{*R7=1}mZ)`@}8vVnq z9$ar=LqDZ&#C!dM<PBW(5d835<(lAk+e?E*`pA(3&bEP@qq0{YXz*13l}9Yf)O^O& zg`42!)GPYNS7mHyq_TeD2bqgD;qA{)rGdABk)KL^*TR4HFaGjB{0G1N8-F=X=HI)f ze*3d&Xx|<l<d)fE({x?hY_@6idyxdEvfHR#q;d8)KbH-FMkdFmXVW3>brZkg=XAgw z0B%6OP0?F$<iCcq8<6k#l*~|)b+;q&9p0~Llbpfv5@><r=uM`M>eWqJ3tsa&L@S!V z?a?axcJOg(tjh71Pej)NF*)JXbEF;nH3#rIcA5j1YmP8S0!h2`Ix##kkm*zna&@Y5 zzHrINKYRq}kCU;RgD+inaz>7Fw{&v6B5J9DyUE{<z5^Hf2BjS9^mtStgBGWI?{ew< z@rfMtcehFSYC5@amSbrTuh3NXo=jR(CgUz@Wp8L+L5Aj_y1|jstCLApesIvqIADi_ z^qgMyo=mA*Ay-^ZShO(kDQhAkSh8(@iVr>Z;iYKw+sO;%1fYXxj>VNaeqi}{aB&3O znb|uoIK(&G;s}%|MwD&dI7b2LbtjgYg*H%-6g(-{2}yYfpLk7Ku=wzGr8>vQW+(lu zND2Q_=Na_#U%ZjO2xu7H{D7%`0|ZyKpLF>g^)P^&;U&(OyK<Zzce=`RcyX88GxH|w zr5T({M?G+YO@M8smGb>t9!k$eK`J|0$!{{h<=|eJPV&o7+A#bk3Gl~28hB7&N%8AP zo0XpbJG<b><`G(b`zpzoCbWemJ-V2q7y2@3i=NN96(3fPly2+l&}!czAYxU<+{JV3 zqbJ~MQ=CSRd4x_#NK*IB8`jHH?{tSAhyQ`emC06|$8r7wIF(#pXJQ-KgJ&M?fLjoU zDiT1bj@JI@J^7(a7gmqN?XH@&{rBEgw|R+a($(E3pFKHuIb(YYWfQE>&#;TnvV!EZ z&pxeA<w-L+{PgoL&I+Ulolpvl*gcQlyV@pg!Dq5Smg<0xVgu@oe)QEZ@}7`BS`b+F zfoHbzNhYXP+4Sycbi}@%3aki>WS=GK=_3O>xI^oKcd59J{J|YoYts#i#FihYP50dm z(HqkX+U|lKv$7#v^?9hNOZA_cOJdqgcxE!~%cA?JC%Vn&BD1pKd6%B!@WA0W0G%+W zJ&_fzr_o7jq;PD1)Ntx6$o+LY2j{Kx9{otkp|E(n0lYa?jX<wEySdp<9$ZDSWN(gS z{pKy4zLG!EBdq;J_bH6NM<ptkV`Oe0#c<EW5CaV#rLyp-(R2cu`b%e(-3vCQjXlrT zn`YA2KuXFLZ}6<#DOB2+#OI}t0-FSIf*xNa2<MSAfsjx0f=za%9}>I}{QLeN`a?Z> zaVk6Xh#iFOV<U@6WG9lPee{bq0@?6Y>kr%pPsYEXhv~yi#3#s_;6ixP2IvnCfe(Gn zZdBfSO#bvWOCy#Lg#MPlErSzfz|WX}%{gq|u@e`=ec%wZXDdJ9O)$OfG<<3AUPAhL z`UnA3t8E&%OdlXvrwo3UuW3V-BFT6@_7HP0l6MRikiKlek-r^p5<8#1<J3VXYQ>Mt zVKiks#*;Va+s+&xr!CThJ_8KB_Zpwz;o9AG?B!V>^GU1i$_ag!eq|>0Q~zU6v^IL9 zA9XhEzI7Qow!NWcYy)reIN$xOgi7~cd*P#~bGpO})+S&f;9*QIs~wvsSTTW#g?Tsc zxq1Kn4^nOd8l#uU5uA4X=)<jcQfBK_o$B-9Tt8rZPJE8<p_bs)7PJo=eCmGs<Yyhf z<WDd}5NC7+r#_qSrHpjr$Oj+1-_IGd1-Okj^In!0l@XuDBjchn$_g0OKM4E;p{}|n zN5B{a*x&mzzxbQ~u#CR_`KdMVHZby2tMH28i^os@=%c5P{zYu{jr2O*#ud-EI@60} zYlnOaw7W|31>fla2XKG}=Gw7oSK#f=ziunO3(~s~8s@9{#d#1frF1iQ3%>3u&cQb_ z^SW})3mxUZ?RE$J@Yut0euD_?jT|O2y-xatVrd_!_FC<?g5)Sf+S#WHho+E5mjJu$ zsG4IsLqQRFelrXuYbIUSpoqy!2JxhK<v=ThbC8Z43T1V~*&7r|T8A!<P6n#-B_CWE zngQOxEt=lc9EWFz@*dch%kNjW;kD_&q7R3!Y?U+Fp=kgX9H|48!Qgq`fniX1kRZtp z1_rM3al<E>XS<;=>b#_1f+H6O1^}+XcQ6#i4W5NpNflheLB95Nz&D$=E*M_H&mvUo z!BDv6p~suD3lrr`eS|U^#mxcDMV+ANXkZWJL-U?VSn^sZj=}1wL9mpEshkF(NmAZB zSO?jF&LIIm4%H0qzG~3x@KYXwA!vuE&@`Cmvq+II4s;m>HNviA=2-hm4kVmIZ+K5) z)7{}}eXtjDga8@A_U=^dvB3@{lgG)zuXEJAOMv|-Qk%NbO_yOG`kWGYIYoU`D3eHd zN*mY5rqq=UZX2;mH)X4{>T2$ovC+PZK$}Xw34!9B^rRdd<X;-n!)kUp0J1BPBRkP{ zT@FlAl3?|RJJ+UR`UC!^{dPr&3F-6;7i%0;002M$Nkl<Z;Nb{9fe>er8((2QbUHmN z9<*$k0}Q?t<cKx!+R2KSc*fDps(}fNOg(zHL>LRNqxW&TVG6(Mk7(%U?{*`5CmWnP zy24k0Io_OA6GUaERui;K%H!gSKJgYkTD7s0k@kyG6ngNC4Xcj?L_+#yR*-Nm*@Q=I z<lAlP>QU0x&P;mTMXyaAz66?{W}<*M_@89C`_s_pc$0%oda*UR9(w#C<>-Ly*lwNY zL_n#J6Get;2Uop#S!<eD`4v1;#-vrh?lZ=n)TpS~OG|}@OTm-|#{$b(P-csQA_62< zk@Tgj+DrB%XG{N)RX$!y%M|X%(5u72jP2rSFfwi03w70vAP+r|FQKFy(=H1;c4fR6 z+hU_^Y5Md|VgR3=Y_kV%cy3^)*^`b#Jdks(VA{!81>0Iy3+gg>s%#0DZ7>X$$sZO% zN1tI8Nc)Z)^*LP?l4JQJb8I_E+Yf|>Emx|5s@u<jMfXCf@{lQ<m!~T}@^5*V1q+91 z$nArdjmNT5zb1iHs^1V8oW8lu4qey|ujFt|L-a1_z}B{%u}_n^FZ#&Z7oGSjYgLFx z#7z9W-=Uu*^$21oW~|8;+@<F<G{W}UFA2IOef#|e?8D^f24Ar*wjE&vnCH>ASxq%7 zu8b|=yY|k$^aas>jw{~-HmdJB1e29*@`wJk8LR@K2mR3jD@ZTkEX4e-9E(fSZM_9b zc|7YotX$kxVjerPic8Q^o_@dvbEVA>n_(wN)i!f-8yp#5hK<n;UnhNDbbxoojNSTR zJX~&UB%SiX*hV+g-)YuOFFdQwmO4NiuFIZlIBcz-IdLJSaIK53is=B7VSNH!-v4Gb zj`D1*fd{sl$L#VktjIF90nfH8=q&-fl2y0K@0gSTMn36_N4V%xy<4F=fok>#7H;G9 zeEOLz`ftIA29gi&#%($isM-D=9<Ux&G~O#KZ)xe*x`Hv3<lSz=*YmWA$1Okl;b&6; zy$VjJuRVbi{79d?;iHeZrw>;<j~=-JHIH-BJ=+oxven;8S)#z>F<|(2)uHm}Zk<ov zsjn7C^VyT9Pygs#z5V?zH1I|f`0s+?|DSRE`9J@IfAu?m>(_rPz2aYaBRN_9Pq1l( zyS2+ajrNkJrM1E7_}aXBy|C>;w+BCkU<AFGJA@SG0DR?OKq$tW9BH=2a+CG5JSBe! z&#?Dx2`O|JwwE`$mHX8+1Hma<VG%yp;lM!HLZgThm=2AuBwjO$JE=_%&h&|;=nm8j z59zr5Wstd-L3A8ucN`5&>Fo88>N$ITq~cO0I~(9sWYmATgA}}+mkbPOB4<*ir)^aS zKCVU`>BU#A2G!c!$Z!?0oi?uNBx6BE2oB{rv%SV+&g+QMk1c5ifpVMkoj}e2Xi&9h z;$3I_I6y6Cz&}*3s!YzSo4Pn@@ZacN>eR{P58MJL4Lp9Eo%1N?f~zMBJI71j4c^<d z)j`oEqq?Z0Fy}=cnnR8qWak|R_Ub4Gc9c5K;ziTp;o#(OnRL>jeRSxk78gBT%%4;^ zALTCL<9Abz6B`GE!@}>QXO2AQRsAl$gDJ3iJmC4f#B3*?V-HI$IFu_d%1=qFHD=P) zDahe$4qb+wiJix->L{BqGV^5jT^uHTaduWOo=?{{cH>YMxDL}yw(C&EIpNIgogQf% zVlvg9Fh}3f2`A3hW#QUH_PNV60g(n)7MD9ck*5KY;KV;(VYnRk1XBE}`?Ntf?rnmX zQGVdZ0mBb=qPFhOV}J853KL^@_)NArsgX6jacW(ggg20)_Xq<am3?T<#GTU|dYKG9 zO~50PSN82s;G5tGT>6{zF{PuwahJ;1DQ4A0zjjr7IZorKtn`L<=+b9oWdkNg_bf8W z#y0gs6r^3US)Vf2k9waC$CE?6cjP|)_>*@&`Q+o=@t(W3CVObG0Wdz7{K1DGWR*yc zALJ8;U;5h3lLi;i5-_}f-;(p_B^$mTJhaLr{ZsNke=>MY6yc+!XU{XC%*2x2!-1yB zD_a;_&&x6sS$r8idiO}osCWft>X--4X0?(#_a;@UyFABc$V}JjJfBPHSBCJVE?SRt z6MntuwCy10j!}7dfiv|JyxJyytrGD$-U*Dv@z+kG`@Tmfsx~R{jtD`?hv9qf;^Ii3 zfib5^&q>D!`c2XoU*yxjksYsFpAmxUQZf*s%Pty(4?115`cCVrj71)~l$n57j-gY^ z`GFHm`!-1J4%xuig6?dS;a8Hfiu-ZRgqqNFdDDM-gbsc-_A+`QBU_v0@;aCB-@+;1 zEpR1TD#f`pB@fR-TY6IZdttaqhbGx5IP|;1Gxc4*qqo+pejw*?OuJ9L8Y5$St%1lO zaN)~WDL7@=Sn#nk9I`Q!tsi~-qj!G)_kWnrrhd{1J-TeQL9;WFvofSFGS0OZtG11G zBAMV`>yljbvvovIXH3#BX-^?aU8DbjuYQvMLT0v(7lGBMbfOq}CODE{VvM*e#EkKQ z(Z1RrU*wB!@R03jw&&NMsh`%x;aOg3Hc`3Zzh%_FRT{}#7{{pxcA@^Y17-A~g27pB z6T9~gmd_Iu@g5>U5p8Z)R4R|p;wd4r565LAr~1EXYf}%#J$%d<KS6)>4o5OB`k*&3 zw>%@kR;K?MyTSM1N<VybNuSbO%kLKa<u~QwD9>o-A8Z3_`lHmzz?slb0Dz517qnG( zU(%14LuWJY;d}YI$Psvaz+W<lz6AW2$H+b7%mkV6y1c=Sb@<R{lWxRJFmK+0L$@1T z5&Y8z;D$q)k3RaS*K{e*3v)-d39#%qUnWa0x+Gibxa}hH!}TJMr;Sgvft;~<wCHF8 zX@ZdR4l2CxqtKEErz3gb*<hu1p<lJl%V38NUO&$&FMQMcvu6{u#BaxEeSR(Vo!|QN z|K;EKS4Hsl=R48B+rY?oqQ)zdpZ^QL{8xYHZ~w;6$6o*KYwGLHbb7DLe@&jAMk~uU z1Hg2wi!Ql(6u;e^?H!k!<n{*_D1{3+WjgSc!Rb&>>ae_oQ0HLCyrktkcsM^DL5p-s z|3UrUva&R1$P2>XnG+M~^PAa$GTdUD`#~1<SE|to}kNI#Dlox1&cDP`J$v{PK{a zZn8Xv$bcE-tQbk>nt>)?V&qC!hEAx`ajNV3b;+B@Z$=jERaS#{{DQvBwViz?H^~ze z@k}p<=tsxPneG=I)GJ-#$spIG>)_1JrMGckoE?9tW*2IQ?r1^Te$~RDTwpr5)yL6E zFc~msK$*#mJ1d>=2c*1&=N-K9{dL>e_~w=11q|-lB`pkg_B{BLez{6<S!9;zeD;C3 zmKzd_zre~IJuMe46$GWQ$fjt2rwAStJ;%bsi1+|+`K9OR)03J0x30!XVl&4H?a?4T z4vQl_(rI71s(hTb;>m!|F?jK=vcVA>sbkQfNgmZXgFOd;6VdXqD**zI#5%QMq_#84 zqqlH93aDCYUnFIWRq()E`QQY`R>ONRS@6){$k2dm+s@d{*au|6bMS%XP}#}EnW+OD z*`KE|tsayiN586(GMyYWI72VtgM4SN(*$QGD;%0$3yviCG7~%u41bk5m#zO!f}-!h z1t2fB6QJ~WCYBM<J4KRnCJvldElo;bvNt!4oj>K>BW-`Vp1=t>=U`D_FM-Hj8ik&+ zU!KqH>I3R*1z{hTVRNb^d;1slg-Gai@|%m{xjn|5%eSeIo`mD}Ihi<QvTnjIm}D{s zhQmhy69Ts7F%vup@X-ImygPz?__?2#$$px5czlu<oPL%^VmOuRxq1#=xccJL5VjPY zQ<>@t9bBqUfr=OoZG=2KZlEttESenF`MhI-8<7p&ft~sT&&I*n)OQ1Hk*`50y0_{e ze<lego8D`J7~AS&GkN26L{S?JSffL!t=nY0NT9=}rpsU28NIL_D@jW8QQB2jd?@;W zUHUX{m=!el)iM)Jx;McO+0ktj5!Ju*F#LHe=;b><%C!K>O>kt}R6Ih#zwW7r2@29d z(kw|&{Y|?`-PAzX-^lmyVI)HQv>OxbvALvCy1n|3Jn{m|rn@Dtw!&TtH}*GUv^rEY zu#u~$=jU?Oa_kMBq@E*QjYH_t_e-DdjVv7>btD}`(OOPg@rCzZ5VqNdP(p)uaOD^7 z$~e4ta-3^v7e4S=IY|&YL9bl289iO`9k7<`M2$Rb1K*W7M=~A!^okD?_Aft403;K3 zUm`J)n&tl9p)->*{naex_qC=E5;XiU^_xCAHZXnfw4YX|I+te*5Ma-r|8Ai_@T0H# z4U9~|vmGg?zN95j8G7u*Fz}aPNV2O7?|TZ(_OF$1CbbtG9vod&an7sD5UY*BQ$CMA z@rm{*e)vxsja7$9Z$A@U-CAtQwui)nF(ABdU9u-6MwZC1d_W=n{2^IZdQ3(V$T30Q z6D&>tuzk_s+wpky9bQwvdaHh}Jh;Gha@~n_EIB-?!wv8Uv^?oIHV|^B9fSwmG;NP3 zO<D56&t~|S=z-OT%}Sz-Z=px-2k8d`P#CnxtZud6c`0pP(j5K<ZC;3dCh!ykFV#5W z-}$T-9b43o+u<7@CG-R_Qy<{%(^q>ua^44pPIbe!%6nQ(ct-<m0WH@85XJ>#M|ln2 zXU_y%^p!ZdZtb&E_Q8YsvLij?0iD@KUxF-PA3SiJ@yl^!pvRFF%^&^f<Bn0v^SPvf zTmNh2^*E<=V~v$c(rq5KnH4TGrcBV~{=fL8U;Q8cY60H<d}kVX8yNY{RCz^|f$fjy z`NaP%Df*%xv+2a|Hp(AU;F4YBrvs4K&LFt1lhYgW13VLjo8*=&#w5Oy-ee8CxO;Ve z0KUqzj`yx4mqE3lufpHrd-WXtuVdy_xF2)<D&6R+o6b4sois@coKEz1yB58s-%ZO^ z9F{AWxsKx*U-hDz28AGBy2<LPLIw_A(%E(bR~jd+JcTcM<ve?gCJ(-*m}|OD4hQNC zLVDqGBn{l@Jd?k>^vZ0I$&zmat}j@?lhJS-_P{`8@ZmJSo44mDrr(aa&%U04hf~oY zN%&xE_^8l?TjL``uG!?+WqtW0clhM&`B!Eg#1QA!liNN61^ROhC3fw5p3=qBgs=QG z_oO0r1s%R*U17@01qZ&-orKDei-D1-+?2g7M;z(Wu9&MG8DHH3bPIO@2(6{kw1q=p zh_u|&sRI}Nx#rYzQ1IS*s>36&VHxQ-0X~H|&V+$^^y@Bm3vt{tX}It4m@*gJY2D8q zB1?<AoVf2;$V4;){L{P?6HSx-NBItFAAgCh-D+WYi_?imcAMkUMmNnT8@Z$BP9DZV z=8)L?D2d=;9Cnk3%I@edxa`FM7u$5<C%Xxrz(s=>;j_+IGRDTnA;be5%|k!!pkIjz zKj_tQKh9a($l~j90wUy>7eti<acnJbWhr#}z73P3WcH2!g^qJ5NMe#(hbfa@T?9J} zo|MYP^?ZULoKi6IRiBAAC)4$m;RH_Wo8#bN8(#7mXE6@o21eSp+up*r$&s?{W6H*$ z387AkQr<+rnl4N=9zbbjrtRHhH*8}*`RR)mGlBO~=uVPCk0aP;+p{u7-FX)MVO{|I zD7H&?A(fy=-jC2{{PX3PB+ROenTT>m`?Z)j?Vmpht<N65^L|#4_`ImcLG*bhC${Ok zIG%RzTFBks1XD~3@DpnhYe<<1p0QQIKabIHtZnbTmwM3ur=7GN2}p#;uGmP>#AITY zM7zV9iG;}nLr^C<(rfjW6uL4Q31c~?U1q<1L7|Dk1l!WSg1h=mTNfC~dp5JsBopAg zygK2X@L-h-%r%NZZiW>iUUvKPb8R&*raeIs!K#M|w#;>oIrm-`4!AmQx-lcVdyJ3l z?C}L%g_eF{RvPI~v@87vF-JznvBP17taLDT)w8CIjZM1Zwdowm!=45*C&f2doL_QE zPx;y9HNa3!=!eF1aiLi826r*!*ojfmO4%KD^-Pzxq_guN0D1|wN%q(Nck(ZM1g^At zjE#V$^XN%`ryLRKa)wU)vpd1k$dH{b%36K~SITHJu@mnL`8a`*AO8ODr+s`<8%>e6 zjmLQm;JpvLx4;Uj58nCS_rBk|=Yk_PZT*W(zSh?0;6(yQ>@ys+x4~3-3{HHakG8Vx z-o$gqX*@db#CkX`9X~04NpWuLn3W^^g6SsV6I`MLsRLR3q1Bhr2S55nmh4+S52m6n zv#nh)0axb(oBUJ)T(=wzy(F>U%Xl*{nC|0Xsaw1$Gj%}PY*T4H-Flw%5LBn+$mve( zwWAr&jICg_{nT~jVgs{{{Kj#-kVF1FUYEW)x-b?Q%jOZNyeBHxg-Jitl`Ngq>vz+S z21f%uq1XCThX^^MiN{>RudlidjCh2m!I#_sFs`A2Z#;|*Tzx^q9@*R|ptB$@4W#tX z6*uI{L(&9a^#h}$X$L0za8J-c(E54c=7xsPMGvm@IpGzIw#h!=glGJOkxN-NEubym zadrU@eHwpd#sskCEBsBrG3}!j6gj*fM1M|Q+aDOS@Udfp^0twwXXObzx((b%5A=ct z``;b?83P4;(58b4<g9G(zMGp*(S`iBv)mDR^zOqyj?&xhyVby0#dnMIUwdqS=0E+f ze(!gF`#1hk4ER6#Hp*xR`E3Bd6^t%!8>sWMg_*hXYr1^9<!b&H_%^fW8sqI&Y#9_z zUvRQ?=&0*GuFxajD+sRHUw`(7;I~Lh`ucOt!dCEp9qO+GKa$*$<u)x{d2nB`4Gu&O z$z~@%$6Nhf>)W6Je)a}OoOj^Qu^Vj;jY-M5!Nj1MPSRIh+Myd9vgaqArn|u$<aEgC zU}qAOy6I%k<j@=DGk9fC=$*_g;eHXEy_pt9y^OL>aCp1tE~m~sb2RjK5HjExK<gYQ zN8aRfn!^j;jg8qVo@1}*V(f%cstcYpry~OeD7fjXaHq^33@DxSL7HuFjeZtpk8lKH zFYg?0^KQ@Y0Hv(F>wveo_6VB(mk-pAOoO!OaJqr7mS`T`DjRu%?v5=<S0->An(8R$ zUneV0)GNnm2U*xSEv4lL9(oI|2hnW@_Cw>oV4idK6Hv}k>8g{1(-PnqTc+_dxvYJ} zMmPn6EnZ5;IlzmbzSHAO(uyne*9o~EbN4B>S$hgkEt;~GF-T0X+|_LWA?M1KKzP+= zg0k0BHzO0d#%ZbcMlWQ~PDk^2P(&#m6lcZ=M<DvR0*BK?!ebfl#Sub=lQQa<2_jzX zb?jrebbEF1){av!Y>=nS<`6Q~HOgTq$pQeqXu4kcVJAgwB6t4MfS$j|gj!W%B=B^i zY^3NBjGYSM*VenI$?6A66MXPCh}v_36Zk?gj=H=2f-wRuXq5(nn8S}U%}d)%!A_)d z7jD{qK<JpQ1a53GY5t%v3GAMUK%CL`8L=C-!x5aj$8;R}nb70?Vvm6-pJBBQZi7W} zsMB|$=lO2|7y9pN4*@zsyEvhrKQVbr-xmZ8pgfE-96PeXU%2CV?)w7R;^ecHe90#D zZ-r6&*?yVH-Pqjai}U{Sh4&0R51rhZ_qaoFevtPxJkCV)QGz0m?YYaydDnT49NIx# zu45BqVk7F$uNFwBeS{|Zn8#_hk4@Rg|9~xK?@A6fm_GdeGk5<@P$3&*Y0xa!zW7mn z`rM|zCc1iI@5)2RvQW9(hs0(k0EwrmfA-diRe~wnBN{snXm9G&WNiA5WLp6cy2Kna zf>Xb)jstH}n#{I!FtrxPD=$Z3qpQif$!{U3i@&Wm7o*l%Ud&bQbuTULG&+zq;|Li; zlkFz2Hm*HYXWEYP^jEN=OKL8b_vu$Fi?q`QdOggvpc2J-aHU1me(6qq_htuPqZcNs z4Y6-}XOdmr68*V*?8`^mN+0pa%Y3aEao3veZ6AL4VJC3!pNZT)E~8J=UQDKK>cby< zGyw-Ue5Vb|PhKaUIj1{1CWAUef7-8LqCR~3akfNX@LaZ>yV^dYNA{#H^4GpOFzruc z&rNM{H1oH1b7-&K4gMQC)QEOBXE3=A%!Qw%9gv}uJZhGIVAyQ~_pO8J=Nkl1JL{v9 zIX+KcQfh%68_8A9D?6I(Chd(q6g63sR9+mi4g8z{azKs0H!m;`l*>i`&`;f%2(Rwh zgz>54QI7c9T{$*SKQ=OKo+DmDv}KjQjJ<)yn*57yk0^LFW~Q5L9e<hnfkVG-jAy?g zleFw#*{(7drc^54K&DLfo~!m-EH1w0^b>+E6CfEsW&#^j?1k4jhEw_S5_w#+Wp+Gm zdxHM#6oZR*Wt?_^`D-ACUdTMbD|I*e+;q5%g>AQM^R>^h{~)W*cV!2gR<;5Ev>CKr zkMAJ(tUXTqQx<JBz@V+(Y-B^%SfngC@??eHKl;nR`8&T?ptnEYsRrH#M!r*ZUXlI$ zU;Hb7`XBtQ-}n!b@^4&Izy54Hh_BCm(^S2b2JfJYJ=^VhMuSWGC4W!mc+J0_wa}eT zPzQB}qnmUk>Qm&1gBuKYiM;me2H|VrUdg<Oe;p<lq61|IpH10g3YFY9(Y&VLJsa6B z18|Y#N)K*xIHx+d*30EO3I6w5b~TlRI7lbCX~hRYcrV2aV(B)G>6z4|BhRq|T{=`T zjNVxZg1#3b9jF*JTi`^SRB+t;>AkEN@o3B3cI1(bL)JS4Cd1DXk#|ct+<1pW1Z(HM z9egJ_DNm(^3QY4bk@I_TkZo$B`6)l@PXYM`Yj|yr($487HNizT?PPaYzrNj|wA;bG zmv@e@%ew>k+6z@ZBA|QZnS`5i<iFBuKqS{qr4vYUJt<OMk83x95vWEtIjDy7BUys{ z{x~T<bt4be!RL~*6{j@yGM`CSpP{M_Qx}fvPdPN4b28>Jrj*OzEYIMag`GXVFfmP< zL0ox3v`&6<EZ(52?7>(1p;Ko#oWXBmU=JCnhX%vOb;{Hk3_W~TjyzJ;34QZNX8Pl- z*p;)<<<MK3ArFTulU_W8Ael?kG1r_<a?B$)^QZ(|_v;W{c_IJpjz_c_KnNb^wsIn` zSCg{b;czBD1JBVJdE@xtB@IQ8z)K+e^$?<oT9CW-Kp&JgN7V+0KxZe`IhR()J^ak` z^VWZbUjEQ(-Mb2pxb*H8L6X!;^Wi2_SB{ka&@y4SY(FGM57C(y0^3@3#fdkvrA&^& z*vXq<f?yiwkJD@7Gxjk&DML3l@_d;IylwAN<6C}t%7m``9XiU6T=>t+Rx@#gTfMfg zQPf7p*b3*~<gd?!bGQ{QeR4;pJQ`vJjyw1b5T&OTaCnv%vRan?Ajb!J{Kefs9Q$<f z)+1Ev&kJk4^tHhx@&;0#AJ6DxW_g>okQ6+qlRCj6%~qAmt~;jpjvL^zH%M-RD+9mq z2iD~wmaEZeX`f^|n&4dQOx>q1V0R6Su&11l{ixNmr#^>fEGgwLV@-&$i+gzqa`A>+ zB-?+azad-gc?`8U+7F!e5lq1s-j%~&fA<IPQXJ2DPyI-tnavxJ(U0@wB#YcfT{%k2 z9=)>s7kJpT!1lcOU}pn|8^^#Ni=8|qfGO{<c#n<_UD@S6KL?YfoCDajQ#R#c1g9VE zUF6u1z{is(W2?^DlK@~@OA)KFtd6pR;Jx?fWvW(Tm;l;6-lY$PosDkai{GyDiLI$4 zedy2(jm(HEdtjE=)}yw2`gws7Fx_!Zr_s@!Ekw7Swm(n4qw$0d(4FJp2&F11>4%@? zx4fWn$~cn0=|_((dVb`GofODkmYPv|Lo;<xvcLg3xjC~*8CrNRzv0>V@H~1g^bkLM z7ySIt){*bX34SKj!;qqtLkWaSZuoG%dHTtd337NPe>QT{|GfrZ^*5=z*n~PtW?>c% zK6P&5t-or$<yv}Wi)}REr9R8+;P9oI`+*0epTc2nByjD&16HoX5{l~spo`53niXTN zr=3+E@Fg)mN9|GHkZtNYb{U&oJ;>KrKYJExmESQgYUEiRO^|^+%1xd?in41v@Z$sS zU9mzAFz~Ro$)7rREgc>>mY>0=P6hQx7y3FI+#B?m_l(RKrmUdL1lY98Sv^Fz)k!oc zAViaRuv*W`7Uy7=UpmcW<v;wTU;R6O8ojsMcdvoBfsyZCrx%QAYkxA1$N!pyX)%|a zo0B&3*8$wXzH+LeZDZYrzn#<_(7<6}8nsUQo7uT7H>|w^n^Ehg&xJLAI=<U&DJ1ok z;<r$*J&#kSgLu;oCo`~~k{4#fWl(;Fo#ekUm4mamE(l>c7dajFoeUqbg$yhip98W* zXlZrKL9Jo~*9jXMc*~)8-{A4guj?Rkhj$9YW}iDoWz9ek#2NOo%RU`zf+7#&Ks`!S z-JJ+`B>K*eEERc>W$T?FCC!r72f_d4=LVf&i+ve*4FU!u1M6*I1TS;PB0R6Kcnl9L zZk(>sb?J=Y$(M%z^GnXxY;2hPN*GVZ*|-*}{I4m0$*N*qg+DqC{n6(IA}2|^qMqwg z26HDP*EsqXTZm0b$2exW_AGO0(_v8Hrzb%<Sg*L{sf%szfTvwgndarxU=Qa-%|W<j z46;^_*zOC$^=|Sw%PQQ!%Q>z?fj69{Oqcfd$Z~BMy;o=4Qterhv8w@cjPriEGZjAT zkR|O&nBqjtl3RQXp4M&B8-S6NZR(pGXpTah(_Zb2LeBZhM`jNCmaX$0n66In^_m28 ziaRj3k7JlPxHie)+)$pf_tPHmO9v*|Cam(UR_HN~n7pM)C-Z;h8^8Tmccq>m?J^Bo zJ8f$P(vHLAi{5n@oV;XoS4L_1YG97ey&zSa^fJ!AC^a)^aiY?yLP8_Bsf(T(7|@>M z_*I4E3Z76)8Erf0d+wMG4l-JKl1meQ$F}7h@xY0+;jG~KF@bvS6T;b_C(!z3-i6=} zIjE^0I<>5v4pHYMMy~QXlemGEKK$>*&`OU6`cgL@4I`KOFnLiI`YNA9glqe)ASqpw zMNTI>r#J66sT8S`WK|w@v3xiuo}iQ969|u{sKf3_^3@jadgw~L;KhsgJ?tYm8?0RY z&%`!gEXbWedL&<MtdrR2nN!~OH#|RRpUobo-rGKpJhjQ3m&uf4CPQb=)w7Mx1w7Ob zJ(qW(b-^DprrybTFZ+Y+UMwpFUp}O#h}9}n@9GT-{2)COwP}~8obGC7B9P-wZrd-N z)nsimA=v&L&Xi~CwTmEhr2qW72nAHKm8fI(@a$x42{XC0ISm|8<I>`40vP%E!=uY? zfahc=g&Z9kV;oxuD}9tNeRn2}0zt#S^yN3_hvuM^KIMCz(@spmXm_#u>d8u|*o>`# zj|3)sBH0prE0g;2&pZZIounK)dq4f|hk3c=_rL%Bt`>POff0|6k(13Y@7f_*yXDZy zb1o*>J#vEYlK=A_20XAqxNNJb;yI|u*?>z7qkZIQf3mN-Yw_tzS7yilO&;2845g+! z2@<rbyQLSo=^5Yj&KJ?IpKL@2q2JK3I!d21?h;$ebzpjAx3#}hB<b{`UG2Cv6Z<n3 zhKe?=?`SvNVpC>hMQi8^HqE1@nf!(h`?n&(duzM^8t;{KR6G2HH*LaB^5@aNK4str zaOfPJkR<_Xvh2j3K5WyExS^0e`LseNedh*GVC<tdu_N{ew{f8wtR9Ar^wGJx*8imB z$)8F3)P*#5El@LKE<2ugIE}vXHTDgsfb<47s`Kb*`fn?kjJfn6z`-9`SYLRVl@k** zpffm?O;1(*kxUSR-lcUgE8OU1K2hxkAh=o8hfab@se3Cv+#KN}&kB`51tlAmj~03G ziuTauBY9kRZm3wDHRUI`s63n-Fi~~`GUzJHCg{bs{)PZOp5;li#okrSpX|lkpPz{a z-Udc~CTbm|fA$yu%J2TpZ~ygwlB;hv;?od%m*@?6(L{C#*y9%8>uE*+lX5yU9f4l` zlDCC!j$8gF>E=`e)-G?7f~{$iZqk!_p)+0cZJF1f-=KLt;GJBhUMJZA7b*hW(Ya!E zvcSAby_r+EzlTN+E8~`E$0of*)*(uvgTm0Se^YMDsG43lHm^j^&kT|PbdE#soVTM? zD8+*0xz05&DeS;iq`B7FCSM0`Ab9-P67MWGG{7YdpP84`At?T&nH=7;gg<3xyAF`# zn?dYE`fCX2l=U7j7li2^?v*QSl5%8$hw~*-7#C%|sq}Zsa#l>T;*5s9@>V(P<gX@M zx+Ul5RXe?AwM2fFmg}jJ;i`~HEZn)k%LV?LaY5P%?2&2{cc2?-$(^l2MduuBas}y3 zG!DJ$XE4y&@^vApd@%J;bd!S?r;jAILS2ByxgSV!pn2+t4y(sW=UZ_YIn{Nja}K^= z^r+)upuSSMf8QNR4pVF?Hp3}&hw^!XZC-H6p=dBI=Y57b*BtH--hWXihae45q@1}L z_R%}qsw_uw6-s*ZE)$kWb>t*dWh;OA$#%ix(teZxu8vsm+)U8JHAfbZK#%u1c<EdN zBH_;@pfE|-hMd>=Y?&Z0D?^~au3-y*+D-4YM)n(5zN}AvoU_2#IZYe1U;(2Tn6^!5 zv+z2a1WoXvpYP2CHch28+s^dYp%}E&b_2_SeU=w@KF!NlE!F45wE}~S&6%WVZ|L^Z zrKJ;W)mbLH$EobQit4x>=R9S7`qT=Q2MM@N04B8Dx#M_-Ugp}#i^CV)k&Jy*O9^i1 zgY?65r%oNP!^!UIj^OEJDEzUv-CI6jIy5-h0sXbFB2S!a?^CdGH22FhCRKtWCJeEh z@MO~J&T3xfnh7F41cAJl!&hrePCbUh&L8JH!oKX{eJE&}ND9Q@xpooe1V1h|e`wP! zJ1{Z8--8BtIN1rz#p&<Mi|HmZbW#)ktH<ccL?hBgZcD1^F1VbeY@3cBhLQbc^3u=> zR~1IDl{NJG^3}XUDm9-1v_}s?6BW_H!{ojDUfxlWFCo0h7pLCMdq>Dg;rc4?Qt6~S zE4VIqHj_5(57<ob>eL6J^r17di2LDb+G^^|YLW1+)i)UFf>v8>$`--RkNQ&IErqYc zo01XxZ1RWJ{JK695PAy^lV^OEp$3Uv$9{sZxB~`ME5hFf7(1S&P8uj_;eZFCI#3|x zEC0dcn$OXdoCm%f<fnG{PAVX_sAyLjWyRCyd0DQ{Q?IRbVwJY%9X9XfahX{mGVed= zg#FN}4n_E~si)m)FX4IazI(*09E4ByG<^=6-8QD&_yziWJDbcgLBXkGGU@}TzV(-6 zhIjiswo6>BsWUii^oe|7+u!hxzy&6@+CuUbmfqaOao_?rxgf4*2XvB-jer<z2NOC= zCP(#Y+?#$nx`>`uU;0be)fY0#+2C+IX}ywmY-;OYdk3>Rtc)d&2m9z&pE-J)zR$b7 zGz@qa7gB{eJhhKId^;~b@WmVM(1~m-mjH>h+K9S3WeK9}ii6?dMZF{)&SWlr{!S<K zNmq(~&=7c8JPiPb_PnbLfdEE;#S7lK4e8mZ-3Zo<+{T5}Phi!@!pehCunCS0l$5^| zkgp#W)RyLaY<AMwt#m6ftln4}v!Y{GbNGC)AcqZ&y<t=#l2-Wzm9q^EJk18*@OPy@ zt3=4<W(MELjU@8nZyu9EXZF#@V3T%q@Z#A&`7eI`@BQwizy1ALXy9#N<Y%GP8=U|9 z|NZ5k`gi~EqaUXIe(xsvtEa5~4K~o)T}$1R)u49kosx6W^fbN>>{{#<Y{4%_FwhLh z{A#$@E$0TC$vVk{`%coe!2gTRhVSZzkVmdccSM}Kwj;@=*WC{MUK5DKtCmxARD#6O z&*-fQmo&qSJH^UhYVp*`;v4FdJ4n%r)1lnKZJGChNZJepRsuZFq~k%JJO9!#5p3lR z5&|OQc;^Lv8EiY?217YHgG?nvJd>v3FZr&!pAI`0wWnqTO~gQ-!wk5O=eVAX0}DsW zLB#2SFB=V<)5~#Eo86xdh#5p|L(;%9GEG@nW<%08?cf%BQ&0Kfcj2Z?tiH&W8@aRH zwy90S^}ru)ODaEyKDbM{pq%$MNNmX-Gtys!BF<X}hr-cSk_YAL^JG_92gZ4wI)bFY zEUllx8h9r#VB??)NGxAdzZkZs-r^|qeIhxZJ82oPO{fpgCR)m>j}bry=O~WG;hjVH zu#X{xe)8&EX2R%`hj4xo=gIp>>O2JtCykxFJa>WadsHU>-GUx#XwHu6(A>0OD4n&n zbq1$Srz~6~#OK^;%=OVHhh9*oPMDxa<ro?91|Ns2d-Zdis-$f|M48eLZ`BRr2xgn$ zYqWTDv5sOzt8ByL1_G@1c$%-|<j~0yRi|h+2o)GRm99+lbF_+qgEfwP(yKE)dCCM< z!0bitSX#wnaxD<>^jY3dkWbpiYi*!lSCKVn5?oysl0Ie}NR<*NI={VB{eE8HNH^{@ zh6$7XX9;?EcLkCHBVGdAcOj(ipM3slczE&7yH?r639Vk~Eq@ctiIW(ica=udtb(ab z9PZIA{o2Q-#~!1U`D5Sq2ux?>DStU9lSgZ8>g$2W2-Ba=T~q-F%adaZkqPZD?v0L~ z+<)4-H<9!%htEFCJ08MQ148Lv-%UR{LBZSs&FT>EIuRV1ZR&y2I$0)fb^#~+baI*_ z?%5I>>}OP8<~=1oJQG-QjBclHXSGat4ZKwz@}ubLu@hANdakuqbs>M+%Giy^Bfdz0 z$LE$GKlY`kN3od);f1Y$*Ux5>kyQup=Y1(3eE9x5&pvwpoqONQ`%~UEd6+s^f2sKV zlb=4do#chQ$EpNYOw<K=`W~2ocg%r3OsT_KXZW4An0(BpY_!pdcjv~V$glhcUCRa7 zf90oJFQiReu8*U6h7_Cd_p|jaG^p@U<)D^wb{kk(zJNB9o`ElwA+!mBGf_*K6u6)Z zC+H%~xrVR(1Ub>j(IZss4mz7jbNhwVjrRL2?O)rQRU?AQ)4sfX(ideu%1czgmlY!4 z`~LUF4uV6Us$C2Iv3WN^tRAuYQy_1GoY6z{&hEUZ^|QRMWc%gv$X|$EEnoPpZsKoj zKR5x934ZLkx*r{~$*B*)5VTxdtwBFFRbU%^X{U6T%mtY2%WrKUKU)s=DZ{@Qq*3uH zj@T5H)>2O9>|`l7_*Tvy4<8fA#rxFJPFy#z@49*IgAN7<^e}sHmqyNKyouhmN9{Dq z*u3E*yrkW1V8r`*#`g5-V;4c(M_<8DeI&RRk}u__AJ-@7gR!BW%1-j4_Nhy<<-AH- z9I0D%t<RaUZR`^-VB4o>HIy%I-Saq2(%Hza)<9<iNra!k?bJCRBiY%;-bV3FC=bf9 z4SH0U+xA-G(jSaY1km9j311>T`KjyaA2&Dy&+2gX3-1J)*e4mrC&Js<5DjVfqgQ%Z zJB9;I*V@wdUD}ux9(Y-LGd>2q8<~w)Q{QlGy)FF6GV*BS@PW|}x6K64(8s6#Xk>#v z{l>?iJp3bns-)ij{LD1)HZbxtQ|%!B!4H1$;_v_VU;nwZz5k_F{uO#{rPKDmlK0IC z={DM6K%8#RNw>Z3{8{_Xc7aa=JV{AC1qyNf`TEprzO!NpfwbAzZqukW@YjNUP39XH zxZt>yyqw6&g-#~IU**3PxqAWt;5X>!Rp5cVL+p@46LcW9GJ2FOZ7~go*3n5eJT=lC zkg}o!r*HY{utlaW+qHKP=x~`qEdx(F?#FSi>TsQo)f>jWXT$)o6DNo|cxTX1M+Wbf zNqMyDZ0FMloTS}n@R-gz<IN@A%N2F(y@MIy+&!xJK@4xVApL*XyPIF%mh?X8=bU}s z?!A4x+W`h3A!Wvh{~%IGGQp9Y83?t6LgGj!I5rs|Q2fS4aoSFV1oBG~M`|YqF+<48 z#PZA&lnGLX2xS5cf)F;{eP7SZ-uv+Ve4nb{`t5zr?Y<Yg@4bUvd#~TBRrS>KR!>zu zRjbxo<sJV5S;&f3j_M`J3pzZ_AliWp9A`Xf=Y#on28ypgN>BTk0Y<qaS8VKZF;Va- za}%nNuP5C~DeC;RZf@r-!c$Y|0rWrTf*VAmU+;@q9NomyItm7LP<<7}(naF8g@YS~ zoW?;-U53VnD-E>Z3eK%7`409lcQ%p-35Zlqb&2gx2r`l70C3>rXuphOUi{!gfD^D6 z4AAh{jPmS>qhW%^$@H!YaBQ~Ex-Z9Q90at{#iKC1G!{B!!ykEqx=tb66rV8i;0tZ< zPoVeSvG1LlOzJXGzg~7a{1sdAf>jnT@|wRKsZGIITM7_Xx(g_R4MWLO#^OlZg-H*` z8laGLp)^v)(;Uw|c9KPofEHida={m0q$Nji3|X)fr-{@ajLDlxb%<as*CugxO=N<f zZTTkf&t7JmevbQ@1alFeJhn}Fc0N2${k+IR0zT+}K3^Pnp><*6Yhhs~L@!^>gw9>< zD+{V&!Gt)7>$JP;`B4@WvZ8SBC4J{z2zY-8dHCZTT9~-ZVX?wNMtlqIlG}k)JuNvn zliNw{T|A2bDPS?6j%f(cOI{Pwi6RF(>%t9F&(jCms_r>(he-mN;KNtp^3v6Z!PEYW zymi#cZ4#&+Ol(K<IkoIn7M#?#de%?D`!EYJ`l+Bz?WhkVLL>GneI};kn4j8YK-lUm zhGbDEW$<*7mp>MM?cfN8ww)wG-!L4FZJM}CH}v4uj+n3{CHR)Ub2XDd_L;|k@|7De z&VBr3Irx#ia#-vzj<mCm&0k5M#gTsEJ!8Op(adK)eahP66b^^?@`0N&%3gP<LdxUh zt@I>M&T*ccB1n`B$)n5s(aY@U&}Ng~$6W@-wPOOT(F>U9M;}19ktjHF<VzvvJLGDM zEe}@?^23m_Jpw?>-nr6z^{+1qO!-pJY{trw2iB6`uPCL>*oEYA8SfCWD94U0+_{nQ z<Y~SpW0z+hf3+y`_{m$r6I|i9U&AOL(;rlrP_w(q;@tIjzZ>4B-Q(2)h8G;`gV57{ z+V7^G)u~-z&JDr4>9AqGgZd}K$gb{|?DQ9=ud~aPR@uG2xqTNsB);`f-IT!ayvOs7 zIpJeu7#70(Nw;l(a3+mLh2qjCa~OMfXjC0dr0r{9lOR2SN4=3^!lX45>B6AfekF2r z*O^8A^r2nwPk-8R3ZI*&oYC4`YTNph;TxSzZP5h3lZLUtYIE|_)@zq+XBIN%x`K_* zz!uO@H-XjOpzFfh)?alt`r3G$PdWh~nDIY$y{N-2yYVdT0UpS6mZxt*XY68lOh);x zzp!)>_QKnY%k;&+q)X`9FXs^x{E&C=qS!l{;I2Lcd&ITd(Lq_tkF!1rK4bd1d}xBF zyY|cRTc(d6`t&_xSy+gG@Tf1m2+Hn9W7NCHYqTFQ*ceu(jIrm%i?w4gZDr(xb9`gt z%q-H-*F|nf#OCkKz(j_<Sae>`$}V|cy}Z2t@4fe5zPCokvUm6MBhbLz!pM(6skc%7 z)t~wK-~Z09{qpap4gI@2FKwVf7dr82=sW-R`F3u*;<U(?-N;ht=ztT~Xjk5bS74G( zk=vv`<vQ?sfGNCSaCIacvB@q?5L*17M7T*V7<Yp6x||rIJ9c)KwqVavC%SPhti3$a zUIUj9eM|>^;5}i#RWyBXV55<wPe*#LxsCncxdScu#ji73h7V3)AzQheuN=9<1!KuZ zc7xc1IKUSMuMAdb+6rBVHUqVhm*bLzFr>VN5%l5!<gczwoU>Pt#^H;voJnxvp_4gR zMwI-d_~1>)oofTL!7_7+WI#O=E>7T;=W2svc1{ehW1O4s$d_V8y3Y%&rwW!q1kdW0 zLPO8reqTn56-$BVGE5fSk5C!$y<v_vG<TqeivgZrpu6~yu096$k@kaQn_{7eP*V5` zE_~%EUm+;#6nD*0?OA=NtRo0oXD!QVOrp?C`AN$_-p`||?*%Z<+M=QU8&dP?Dexv{ z7Ap)6U|YAfk<g3&O@8;Cj?3Ixf5FL)vnbD>pze!99pxa4cO>)<dz`nc$CtTl`9XIr zBrDbG?v%S<>VwTPqH!qVwx|5aL&(xtGE(AP(@J!M&qUFy{Bq;02z&PieKVsv@QI)_ z3U`KQ&b<T3NkY4S(P93=9e^a}oJ>0*s@mW@?s_XTL8~Oseng}EmV~w!xD@W4;!IlH z9e$ZR#`EIK09D?enno@2)e@6%lN{Ibwa2uN5Z(0*Ildgqc+bc4XL%1sKH1uL7QFc6 z-m@GJvlHOaqdZ=hg^Xw=j-6cvGg0e=Bsw)wn?-?fF#9-O*{9!ekoRL#W2;HW68`WR zXVD^>_l*QYY%I2B)glc0Z0^gvpcGxs;y(0ibY(*KFx#2O2FQ}dm+Wx3jNUz-v+uyq zf=JRV*wLFwYWk~A%;R7`?xM!hPh_IEm+2$toh$=8b`csPp{-l>{*vNT*B+Z8RLX0A zec@<eS)noxi!Gdgb?&)x?Wv+hfcDk!rtf&DKMs#|dIQt8hO7mnq}RNnvuk%LwXev; zI<F%Khx<VntkeI67nAvEur;aZiss6E%0(wBcR#y3svGs?2tHzxLn$v^jXI+beSjS_ zd1NE=<g2$-Bwj7<OdE5i18uImMcU32&!ohnYF}WSIy2t19~*A^i(1=FsSfS7UDCDv zvD>lT>&Vf*Q4xl$%pk}$t|#=I47Q^zS)^6&M6l}RvJt!GuYxxiXLCn%KLE<0mn`#@ z+`&zuIn*6`g&l-T!vPE^T?RRgC>};S218RuQl#|}82RlFVkiC5%m?!s>W@EuhI(jR zWVg=O?mbBz&pSlEo}D{iYuv&`7dI`acwdhY+!mFc_1}FbNfw+v`elMSefZSN)P=j# zGch&U>}P$m8^ywi1rYpc!}@Jwx-&S7le1_ybpc0@$lfugI!N646xTOas_LEkMj@lU zWYx~^=aDpYgz8WEUJSn4uy!4TtsNvE*6vCQZ-Y~T9n?|&8OuJBF!B%o@c0{oDVOU& z7sj~(Ob&T?xY8Ewz*+6P{Ubm$FkV{e8{{Y6#j)u`7Vh1ChA$R}r!FM4Y&k%#flkWR z%3H~kS<o4uI|0wQI-is^j?B&$<4XBY3AlD$wq1sH`?c64zfBnZ>K`I+(wxC;|D-n~ z()|%u-RtMHIekE7Fa{^LGKJ?YhZ5~`g0s7C^l=G~Q+Ie~*KlYL&+<hvix0C%;$2Pp zyU`mHfhQD(M}1p(9QA1b`lA^`MwYFy(XkG%veHk=KEz-Sf17_LcKaku-xm{{UTRFX z7ccV3`J88AK8w^LuHUFm=q>mj1^=T*bi=M^QD0q<i@vlcU%u<2zXibr{LXHaj74yU z7+hphCfC3J(?9<kzhB_HpC73P?iNOVr0PA8Uq1Oi|I)>?fAhOZdFQ;h(41I&9qI%8 zwb<MdndI}%{WjpvyPfWOcaZ1w-vsyOv~)V*b3Y<-8%D=6|8t)F=_HzQRzT;{R=?7E z-7e=0=ti_!niRc7!u&cXR!?TAR7RcMd01u6lTPu%!Xag0O>rGv{l%4r#9U8FknOxU ze%zr|RPIn;zrnwGs!Ie<I{EZ;LjxX#8af0frYyio1z^G_7!o*soy6zd$sTV5otBwG zz2YoqP+sb3*$zigyDO_dR;T5}S$aC*46sn<K7Sm6e3tcI?mpShoA;Mona~7bZp2kC zvZc$;pN@M5$cGO@CHXpYgO6vmFY4698Oz{659QTe2u=gwxTpqVSHeuPMRLdv4s8U4 z1(vp#3?v+s)5L;KG2Q~9&_QzsPWq8N15Ob(4*$>uKYE=u1V-5Bff`c+H|eKqkg<gc z11l~c=~LTF0x0DVs3`^3B1CsiWFRg~oq$19>_Mhn4{^uRTjRN|3OFc<BR(+Bt^Me5 z9Ei;?I$cmmx<7SRry_Xk@Mj{pw*cd`dJ2)g3^H}d{y8=$eW#Ayl{CTfd_4ZpuuxLR zEHb(S`i-19Akr&QczyojSw2ZQj;DI<dvV+ai_^a4(-iPI6Zy!MzdCrC{L^YD!m+&? zIQzqN0(^ElJaK0<lefM*Bn}Fj*%O|zK)CIS$fP0gCJwu{u1u0c=Rxq+(M+Yx!p-O~ zf>u_%l8rM|hbX!*iLPU*ZUR@aa~9|n_xQkiw_bCugCqZy-CZt=2hX0l%bdGb+0iiz zRO&W3gQpIA8mBJ_4PFZ<oY5>kII=MDB8R)vUhMchj@r}mFcV5}AAj`8@ve+GZ6>)U z)Xz-DQikpI?sax@m<W$^9lh6i8~JO)k@L~T<9lzpA@;TGhFOoATx9|0D*UFmh#tbX zstUW;wr)p9ufp%V)N*w5G75MRd)i;tpj(R~m*Gh|8D^pv4OahCpAU1#-Dh+A*vlxp z`ZS5_XUc;|pH-OHgvmY!{88@Eb6iLFqqlvRbJMZ#oZEL@!(dk_RvR&?g>U*hElqox zog^U^M|ke)dRB%`>5}to62NJGp7V=L4$!v)Pe3yOt>3Ym*k95E(L1kwgy}(c>!i$+ z$owdMhc@Ls5C*NRH?|F4Y1cWlmu|n$1cWZH(iWe_#yu8eEC2In?x@DL@}VA!A#Xi> znt1dbyZQLl^R%1PMQCY1k5d1$>jX#2XTd4QWpG{Cf}h2RP@g^u?bM}ilFaH;TZIe1 z^f)bBzZH83Y}k{uf)<j?)^X12Z{@W06fYjgRTRyIw+lMCYTp){$$CLx#)h=Z=aIK# zSYR#wry;hV)MFZBEf8$}s<YHd`AB_Fzh^9(N43B{jeK6JJ2woXkJ9vc-D!6pYYVX- zZPH?z$6vnr%^&NFRNsE*-Ml~Kos{=3Fbfs;ySwDluB-6U9agaiHZ!tLJ(A6x_^~DL z^O;3%k7wye_aZ`fjxHN1f02P~<bl68OcKSDez0j#sEJ_pmwIXcR6T1$)8@g#XYA-& zK>URArxsL5<bY1-$&Y&Cqa?oD)|P2c+Ua+v1!Mmdgt3!c?PD<Jd<1-zrzKnY#6$iz zz9~0+Vn^OyJfO=i0480UU60p~^EE28>A+D#8(u0R4Ct~shE7L;bJjQPcWJSa%`<rR zwslP~ve9GE4V{i7V{=W*HJeh_<k}deUh!!sr$<t|qcgfwR|1^i)uAs2>L0xO!wWti zC*9bh58C}X9idg*NLljQ={dppX57`DwYib8?JQ*k#nq`gQnn0CPV;If<c?k}5_oTp zzQFO(N9;WIMhEdgjc4U2NXXE|YW=6|g!y6%nltW7n>yC!1B5@_X!tnslm5xV;STMG zqCfVJw#O!+*Ec=(#i!8iV>N;Cc$&vV!O?ja5Y>6$wL1a*X^YdhZ~HdJ*n#p^9!GsU z?+Nn0t63Pj2+fbWuzA@0=s%Ase)Rsu|NWPW`0nRNu7SISksrB=hrmz$)IWOpo&WZ4 ze=EJn@20`5u455T16u9-joh^3)VR|y|G1%)eh{%wAy6LV-6%U38>fz7Kyq%>Pdc(m zZeH^v#(5fTaBSKOA5f>*j=U!QDPcu|;?U$Nv&HA?X4=N9^A~n*YbQT*J<ONKW(;fv z3;?~HbhEOQYpE%ki*U8#9Y6r++y`p?ZoJOX+4&_p`O6Si#Dn_=M4Y#zqSNGc-t{3J zR@dS#7EXL9V(2W4iwsurigG=J%oV3QFW9`!!bqLQ+}-IyjRDtyV_@vTN%kVgxw~5@ zDf#y^fL~{8vVr=3j-kZaF~H@r0Uu?)JPtD;*-vunWF#NG3~q|y*-+$4_I21zy#N3} z07*naR1&^ewgyM!Krf+7;Z$e2s@}>#e}E->I1x#px2a?2aUdsaaXd&1d;YUwf}!Lq z3xH${=7FB#(()Jl9b_}uqS<HTEA0|NobbX3H_YODQhOHPN9`uKwoc@X-G&xk*3p*` zDwWC1t4vZ&2)aOpUi4IaNt>|rkU>88#N!-fC<#9tAP&I&I1JfKlK41JCZn~#l;<$2 zFLx-R^KJr@#D2vl3lIBlk-Y27>aMS{I2R{G+o2=n>a=rsr{V*LNsel4f?>qz8|T!W z^-LjamvL@0S+OX?IdKH2>SRMET2xvGHR)(P%zGFvGMQy}Tiq%EwbMZ*m|bU@;*62q zq^k=OnZ%d?!GRaNy>eH3m79f;!RePD>F5N0m74{QjnCbuILFzIk>*uACZ*o%QO8!> z!eek)Z0LIn0<TPWjy(6yjVvsLuZu2x48NQ@@8YoKSJ<|w{(TNs9hfjY`^398@*>qZ z<LwI~M_=}dYU4Gdw0F*T9Pfuux<kb73@`jNaqdf6qqEDvBsuySUh71cdiXCociCcR zS)}5;(iwZe`^yM#*GKC=xV#j!i%W5~!+b0viwD6=7gRlU!`{?qt~yz{=>~!6?vE54 z-KFlLms1(?spH^{bw-ZVS8%spbH=L)heh9AraMd0raI9|+wPZL^j>XO;W-T2QA7WA zigSjCZo7a&h|-W|mkAqM`pN`5xmBRWl8flcBa<C#B4hDsJ7_S7f|@1du4i_JTx5&i z^`juql<&d)O#bqCj71UKeV%`kNy2kS77wzk=OR2_SuA@*1KPcQJ+LW0c1P3t<K*Y? z&Z5cyDF5nHll53z`+?Z&Y%S8pB3nuW-0x&+9YHx6ql4gwXNRfR4U#+=`I#6#rk&|4 z=%8|H``Mi)gq6TfomNLlQ=k1hoXO^@2YB$Kjw~1}J@3;>B)A_~Bo55f+t`?ilS6y5 zgTo^(eM~KSw4kK@yp@&1r}?_fTUiWo^l_P_+cjnZ>qTHKqQuOqV>Y>UjTSw&4Uz>b zsgozhkNg>fyD$=)@NOS%$OL~+0`a>8Tiy054elTg(y?O`%C-aYul573i(2Rz8`-o9 z*8ivjKWgF>S3=r8(c{ptaAy%gnd-S`Mzetv326QoU+`Ppf~%==PN8)X{?(EAKJ@Q1 zu9d0M%1>l>L^gdjJFnl8_Ly|-*6s!i^qLB~)s-^h<yHD7KlCJ!uM1GoQT3iaN54a^ zWvwF=9`jdwEZ)((#cFz=dL}2`PF)zI^mp2!g;e;;L%>Gf)Jdu_MOvR=Yb&88QQSCa zapK^eOhenEO8qvlY@EF<UG93CMFBU(9Ldj_&ggO$Te8b0?=I4&@l?1)&u$S51J1Jm zPp`^)taJM1Eywg@V;j=O_J?L|uQI6v3ligJ4o?>T0v}z`qs0ossw%J(_^mU(fRSp^ zf48-17h^~2&_a~9i4GdlEELlbly0b4s1o29UDNs0i|g9>YE!L~<PASd_iYQ{^X8|k zi*NnZfAWv^s#NjZ{ru=OaML6B(b2iX91Z;B-~7dY`rE(u%YTs0>Cd$}o*Lz$o;KIr zR+Fp)5PD8j$N9$!!988V=fk4G?oQ-Xe&cekEGuX8pY!m&6NYAGI1^(@NVp?(pu1V_ z$oyfkAUeZ!ik>28+0pM=auK^e#@Sp&wwq}HhKHWsP>*t}vx23xK>_et=iRKcpOrN! zH!dbAW5w{gXiL3GAD2nnWy`cWNk_YQEc}2SytGvP*797~5VI<8QfHMNZHpiGGs*OV zLXWTXu1N+F=#V6@`gVtw<IfrBpqhA{2M%uzze|#qL4LDTiDc*4X<Hl#=e2d@hgN{l zZhp^!4ZpJ^B@V;l4U7Rbr(5A>LODzs=ObiL=NLq;2}ha1=bGM*5@Kj`Fr*hRu*Kts zET$W2g{(|l6VZD9h6ZHnx#cSLzE%grpS(`;!G-T!4Y^!bU#XX^FB!!pEyh2NhQz6@ zDLDL#*S4{^1e&d$(N7X=Ph|s-E+5~!e4INgnHX?3IX3v_OmLdIII;Oky1Lm;#yFl9 zNo-vnf1r2pqWgFA^1-*_SUvFW0%!Kcq0KRO@=WrxO*Xb_B2YReXn}KQiPJ*ZkgFV= zuyI~!Nc|=+upGRRYwTs!NcpU71wVeb?5!L161BkBT?RSBpX7ug+WJvPJ*twF0W*^+ zW%n_6W=GF$gTb@UwJW?Y$A70!=M_NzAuONHy~CqBOmg<3(@t`f4?T~vke)qE{X`nJ zaH<oFO4*GNXKyBXUNq{C-sp;K@Sqok<h>m8ZVpn<1Oh~y@GP*V6KOf`6~W`&d7HcE zVC$F$kGNxpy)dHvf~jqw836Vz-9%y634T7gd{&278an{1GJ1||weuyXL^&Q+sNNU- z;h|JcbwBMxi_t2rNrcx-q$~z-klV)uue#WEaPQ^FB(Do3DLMU-ogWqewToI&%XIRV z)eEvZz%owT^ZSYIERO6xxbj4<m&vOX<$cP{VoN4>i`PB2DbsSr8=kT-5tGi5HWT|G zBlY)Xw5e;4XxI(t6PWTY@+gm^JE*jmuy+~yu9<<dPqOHy&9SYJZ@;7O>Eu~j;mC}W z(9EyI2WhX)m3gIMbMhyz$%UF)K(mXFWN%+H5HOceBIgtD;>%ATL&z6~`feYSo!E_f z7@N@<guCi9?L<8#-a1uZA=+JSnJ}B!!G&k=+P}pR?WLb>&Mpx<M%)>H`>l7fJLKIS z?|%Io-5p{<%dRXt!9M!n!+W0u)?(D9HkxC;aHPQ<{iI3d9NtM{*MLV}*!rBci(0!f ziC3m&pL=XjS>(WX#|iS$7=`BWC*Sq$L;h}|iO#t1-8X79)l~TKo>-1`J(1+0GwDbE z=(gnww|-jjdMD!dq9wy>+s)i-+_;osacNgMZ}`f$u4iXMcqCJhs8gTERlgSI?IdvM zV~j0Gnkd_C=ri5t<ytl}I@8nc@4=8u*?D9_zc33(l+%SE@Zjj4j|ez<(zN-0A!zZJ zT5TQbm#f^>8t4#gslk<_C{y1LyWqLnov|`~VEd-(!A}mSoS)bgkr(#jLHjZ8(gFLG zrvKcFY!(90m~mITo%e9;ok?_I0b)KeZFiI%S<zu^(~XTT&hZh_*XY-U_I&|@`)gl& zCp6b?vW~HQxWVb&I$++;Vxk2V<<ZhVee}_XJ*z|Mc4lZF7BcY0M*ur&qA_%*zhDz| zQ@uxSJHG6Yu?UZE<B2v+7sf)$gLC|gES4mWFR*P}fv`*R;lpR`?>b&(97el4b3*r7 z`iD~`v<6k*)aTfdMeqlI@HgN4t$!N8yYK~R;BH~$3sUqZ^WnX(|M<K2KlpCi|685F zrV+GxYAp#mn0>e8XfV69uH{cC47tyaETpHSKZ=y|;MoJf5@7+H6R1=xJ&5N2K(rFh zr8_Tu2Ka-c@ZzWV&#|T0r=~%93-*+<>c*%Myr~($>-Q+r)SJTJs8c1TUN@x~SmA<t z!YQ&7PRYvda3Yh)=H`^vl!5K9pBzWN>+}3zb{Rycx?F_nvZUkgWHxCAjCT4tb0qQ; zhs42AoC#?i`QV$or6!Xc;5cI(?hML3GH57Un+ap+_}{Q2(=c(w@wv1R{CIXvwx&-) zGek#SQ>GIT6Nu2-u$=OfP7Wf)+rrX<=PYX&%CEGe9c+k=Z(pN#D$+u|9G1%-HWA$C zP8M8O07L+=n+Yd$L5%*sp7Z<;?EI>u6WqobRGS{!cq}HcxALm1q;>IS(JPEXf|K+d zTd&A)W`x#z94TL{U^kqs8@3V~=*t6ho;$K+hjJz)aU}yk&QR@&%{4!huQ(?r(;UP{ zar|rrMo;<q^yVypaAeUoG3(cMlHYhIYD<m?vKIih91!g|emW_wz$0HsjUp@mI97>< z_tB$yz;>cKVNOExtC=u?(G|d=!3pAwD(C23>Bvb|Wrf!1MAz@sA;%7m*->I5ZK`6C zWhU%);&4n&`0MEA#jD~LNpL(erXEs`9$R<On|3l2y|mxxOj~ko2M)RLMZc_c<LCq` zjwgBWAzl6T?iyLb*`#N&D;L{=wk_PkR~Jx&TROeh;a>`{n9~=Js(_T0hmJe-V{cR6 zoPT{yC$V@aRVqup<`)k~4bUry{Dn^IApExuD&wTH5pA^Rr6U+y23+`m8NHg^ys{V& zr#zN7)GFspqA#;cfo;)k|H6oP^$>Y5$2{yp@s1RI<>qDEWG7!qudeWn_rMFi8@hz7 zJ<{dUpK+1kCcmP7luBt=W>1++uDXs6F`{pOk+wEYy*r|*bFi2Uf>Ygxe(OGcZRN|$ zTea)UoKXNB^v#n$<x~IR?f$Y8kKObyMcSTQV5s;llHi#D<8W@L7add@ddqc>rY)#s zH;q1WY#b)4ULI?)?p5A(BhM$)W9Y*}ctwd`+0)TB$d!<M3lSDkF$m5g*R->=G3_kZ z9V5eoMcH@qz7SuQ@u(MjvS{M5Ha8$FidY=63yRh}O5-sDi&b`wXm{wCe7VED7e-8K z;g;UV*rIzAHoBg+8f>AZf1XL3`U<Mx+qz;ytwVK^tOz@2d~_RLWKLc~@NPY~UC>ht z9Uz4TK2<g4)Jgx<-BDLZS*aWJ6x%7o4_ZyZS0cb}fac=-y75J8VcNSFDnoRwFWCzs z-mheA@`WGuX`#4&P}+Fk^^@}maqvGnJoqSo;d84C*{!c_3$p+{?Xzv0zAM|bE4HYN zAbl3LOuUVY>Gx8f>{oqHn_hL&0@~ZupS(``*+cSR+>1eW)7TlM-uoDy#l2j^Z;{oR z4)!9&(=6(-Ig1XvuVm}W&saMP9qpG>e(V*m+Ss&}E+AyrQrmbq(znq6=wtQif%hqN zvVwD1{F)nGqf7eHH+t-H>PbJPzGg8a<N~ivMn@UH@Yr!F<yeq>dJR<iZ?>Ph$QZNr zzIAqy$Byu5(S@wqm~!BS>7RXBrXn`K?WlI84jl#U51sBZFSA%aabumAV$Z@E8yP<C zee&+JKm75d^j++W(7@fo$QPmIGa5hpvp@U%AOHHdzm*32Kc#`>=4@KiYBd^+u)F<J zF>Uut4x6{zY)rZVLe4%9)az{PIr@JS&8@VvKIA6cXSs?#Esjv@&G2coU(<GrjX3g# zn>v+?v7+AiBly6s%#?mjS3`Pr!owAqsrnP5X58Sr<)&~sL5rgMf9ot=aMz(q-gqZ@ z^3G&kxOMPdh)W;8?^smU6xahq2jx0`Ni2P|GmvyLlWo@qwtSfaeEut^GCgo(U^BpF z`@EwL82oUg0GSLzW!ujpvl33}8($LwLz<yuz@K;$8mA3;85wgY)Kya!JQ{eFb{-b( zBu%}~^@f1XAa~^jE1w}8b};Z=G=Kz;XNT*VbZy7z3_1AnKN7Guc;_6r#)~o+i?5`0 zU|xB<{2A8bfU%Rp1<xTG2Y+G0<HoTH-`3c0wdKLb#5p9k#{1fXyO@_bZ->R8Z}RZ* z$6nf+&r61G7cl}u5541(@^&TFL5Ra(p<p{#bz(DlK&#Fn+iE-xP$oF=?azgFqOhDR zZ37ODB>fHVnFEnKX?27`w=z_h;UV&~@1U<;^(B`cIY@aghOEH{ruLK*cxJ^R?Bf_F z8)*{-fs<O251%@6v7NP^<DhYn+}R?hW9*0{7Oq!eJeEb0B(3i&s8a|&GUN|kxbVLh zM4oZ@<M{h3P34O73FU5w7*iLIU(HKHyHz`BolvDdyc0ruo&}pMVnuKGD$n@dJm>uK z<>-%Gom}8GxaP4ciw{di3nHr@P%q?ZUeY<d(gZsZF5={>L-OzRncP|co1=YA`V(?p zX4e~dc4A^Uh@y5l{RhZVr<k2BhZN7{2~Yy(_<T_WK5|<e#w*+Q8C+bIaANEV4<pau z*51N;`C)IX+bc{LoK<V}tp=woKJXKC(_USl_{RIlFz-&83CLo5cnJ?^3cD}fJnHL% zx(f?Fvpf0GaoSAzPJhQv_QKXh`fr9eysvsdACgW0@R`YY9?`k-NKSBi#LEuC6e?c4 zV5hoIIm>0%fI3}CW*0Hp89;*MEGF!8(+5jMo%+N_#uF)cnj%L${EaSWqEefVICenV zp>o}?E7@b9zGG_^2a^ZS)Zwxv{G>9vGb1o?)&`;{6KXF-{Uq-vuv^4ppI|cRZu`@` zSKu4p`1-wf-u*`OI$uQk-uK>bnUB*hJvv7Z9;bOL3n=g8Q^{{<XNh<Eczh@3R({yD z9dYm;cdEC}FihRiR{kyYRM!|;dYOJdnvedgr=)K?0#o_u1&#!d_0&H|T)lMH(!$&N zNm}hT1kr-@tOknX_(_iZ9^#24EK	c?`@gfZa|ab!Z(n0x^uk$HI?RWfe)km_O*s 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%0D3i@P?Hwu8>X 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�^2u)6rNc*v)kjx<jMW_< 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�zcpdcQ(AUH@tvv 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֧NH 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 Pfc=HDak6G!@S*=7@B1aG literal 0 HcmV?d00001 diff --git a/public/og-image.png b/public/og-image.png new file mode 100644 index 0000000000000000000000000000000000000000..e6dd65594634b716bab130d64e029164eba9de76 GIT binary patch literal 331623 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�fQs! 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℘x|nCpRWr%Wpa*6q#5{J@V>&4np)6#4bEvTdX(Mf5eVH29CRE0xFkuEr0tj~ zC^sP#|5N72ZRm)07N`3q@baYvi97gxnT`u<pL((D_Y8;_i7eowb*D$F^WRp^8%I1v z=Rds)I1Zl&skzLgpHwPXH2Ok>6T8jr7%$IOF`*v5iSFK-&Y8`Kzed{LXq4^t@${7V zk)1oJ!$l_yzZ~!q>qEF384>ZT+j<Z;dihNfeNFgGXlXL_buJP<Yswcd)3+vO%=t~) zKNI>~WS_h%(tQW>T=x4AX9~I)$P3uk=%gB5`hY;L`GNRI(}+PE(Lw#8r>G?4#K8uk zs_44pdOmo;v)lKtaMXES#O<ITN=7OcX9|+TtyX|bGw)CK=3_J05}*7RI$QqgO8UPJ z%gt0=6!_{wPFEJV-1B%V2D-!DM>A}BUfo6nT2@<tY?_>MD1+Kw?|7^ZTPeg4U@VOy zlQ-e=>u`=VR+x3{7BsXU&}VYY+<VD}b0UUE{oB~0nX7G&uz`s$c}Q1Gdc@G+SpNW| z9PL6jI%9S9chve=F&!#L>N4#1^@ZYwX852o{0k2S6~gg|A-5j_nHT0&TOrBYATg^{ zT#8H#>g+QA2?<a-{k;WT25-$-#bW}b2Va1^CAwFHLB><^6Q76TG!LHMP*7ebg)n`z z;jizQ7M(r7i2cx0<bl!k_l=5pDurIm-n#CO82z<)AK2{vaQ0c8ttK+b!f*vp>2hS4 zrI|fipt2`d5nY#7R$f*lcB@cSTC&(SpA6`u9bBj@NgTGK@Bj_#iA}MHxn%e0!mm4_ zmUC}P(^BT5Tr<)sUFSN?f5~afZFZDk`;e4WB}@ae#ia25U(ef$TGF%G#9=n5zkP~T zibx|)R-ORQ)5hKK4geZLUah5J7**T8OLL;y{6#~ht*uS)e@(b%?qw>t_NA)!bK%Fo zfAo|w_<hH5ClVbX;#OAe4v#~rPltUI_6B2EBJ}g+Gsc$^rJr!W{<!OZy~K@KxO-Wg zf7rw}2}QE1ck$KZ$g)|~wz&1!)Blmw2p5f#H>W%LgpQZY-+SHRi=MvZaJ2-pk<s&7 zJbtTde7yXQw&M*Wdl1uf*6BAHMIPDbY}R37p}^8>?C|a#@u07l)-F9|^|wXEEm^FG zE$MJN!tJpew-5YXrQ^5XxJ78PKVw2Y3Buh;^2rr}r8Zmj?zPS44eYb^10wK44cuLo z0j^&Qb4mw?EBuyGNH?N4$bRkv8<%AoXN=>K=}x7gbN$ybny$z$wVb`7rrs6jrDTDB z$I^PGBKaPmkrIDWRh8&zV2}F1^n&N+@|FT!ml3AmzZ_NJcL4~8Jndj;^m`dVLB$8+ zxONHfs^=Y@+>(AQv^eZYM)4_>;krod6(}H37u{d?2LJsLwNs||ELB{c%wby}`97u_ zzRd{1e>)b<@gpqR_=Oxr%FD@F!!IvpYInGkOR3q{$390|KHi#t(izW{n_^+;1)Csf z2J$R{#cl<@`q27B*q|bvB<k-7VX#e74F%~JjDMNgcwV1}t7FjWvO9bM?A|#v1K-U) zG!IG^Q?C2=o1x+<(yv#om^@swlj6?GZqc+`7yYj`_(Sk^sfeiwAiJ<{R1T3U3mAIC zUCWlh`fkR)G-KnOl0wan-z>{$5^}haJ5(;N)m9BnzqGqwb86VNFnywmBVz<EYi-@R z%)*;|xn07Rx!XzY7+8dMKK93wv6avp;$dB@D-D?`PORSAWfyZ`&}8eiNl!N~0iGWF zL^d%H=W3SFqi6)wc!k0H;9Nh=71qbQ_OalKz#xz!7d`SK_*$T&b5sCds8bTz+x-v! zu_E>N51nUcL&zYx*@I~7i|e$6f_Z}Ug5r70!@<JuM4bJ<5uH>9T+s9;8czklY$jGO zQs-az7wBe}dehLh$o4G<Z9~43lM0}LRru}kGbsF0_mxB$W5M7a)E{xludZqv3N#m( z5jQUblKNOCi|V+xuGxNvj|C0W0r##`lxmjs^t6o#(L9nZx}rch85)|Cz|P%5a!_z2 z25!aTsvkUn#4h$NKM{r%4%^_r`7sdT8W^I4F#`4^x}YF-xV1eSz|;*gDQ)pD2vYQ> znb0rqomh~?!C@!7pwWWBN#m?#kgISU)6baYyU?8)-~9-x&o4U%k^{}F!Rtj0QB#Z* z4p4hJMC*2p*zhlcfPSYNSW`AseQ2)zA0LD{>`eUn|D==_#+v^r(Yzre?_=Hy_P#%` zPjp=2zn;U=69#OO#Uxy!!@}|Ulp}dTFE1ue!jkD@AGkt$oceNyD($ifkC>Qen+_jf zs{EOG4)bSUT&C6(U%OYK5@Ico(m2MhGMi=o#Y`Rmfog>rSQU8rGg2!Yve-OfKk5^! zlZ5*o2_EFpNLl$MSHW|dW_QQ1Ib`jRiu}tizP@&v&{3#ilAJ9~tuXIQc~dAM3l8>p zIC{2tUyS|b$yA0Xu(9ikQ2FG~S!RDFOnlb1|6W_j?%j3Q*6j{Q<Ktg>flwT?SLVpT zfnHb5q9_?Uv)ki0n@>|w%JolNs+kKlZU^!_>4Z==Cza(9HZSq@w1e}s)*l*Xbibtw z-Sh0VJafOo7x4@5d%f{}Nr!gkrCntRk#~D<*XVH7nkMH)CNH}roliIrp9dXv;7l(% z+PMn*?PyoD5pUxh{4=8d_`;hzpL4r;6{{B8Y7db!T{N8`+8xzK*@V$op*(p<1wXqh z<MV-_Z*)$L%%ltvgk@1vH#8aoGrx0}{)|j8OeL1H*J!J2JVD<dvA=^XUWH~q!PN>c z0)`tjh3qou_-^QD(jVKjcukto$7X36pTCm5T<~|5VRA^ianU$S>EsY~=v}#El`$%7 zhzL9#Ksndf{R!F*+dJzF-Ocdb-h;Di)3^V%;RInaC{FLS&#(ePlbQaqk^j%^SM3wO z<^gj)E;e?qPj_IHq1UXL<`(&WQBTa(ZbN8|%HyMI)DKwnP$h<UNC4$+B>fP`L|?Sk z2m=uRsWpL<YwR@Dm^Il19Xl24jwFU3Tr-wI#GBDnr=zSD&mnwQP9u}~5=GuJt-*9d z&?>01BCH5VKxI0>!{d$ct9RV@H9)&$Iu_?dja$qMs8UREj^bKQhSGyy5mNq{M7Erl z13sMg^<xi>NWk(BI6Z_O9uo7xLp=ZS+1xG)_JE;5(b~t#lBt3R{?6!(ZP1=uH6-n* zRGaR>`oFZ7IKmZoq}?2)Xo=YP@81PX2<uRr5dt99u6iAPiOtx?C}ril|DwN$5$0X1 zuz1W85||X!#Utee27uj(syB}eJ5$kAT1~j04AV1cAbxKJkV-JIlnznrUjLk}B>Iur zQ+9tB%f-6!-K%9R;l1PO^h~;#)tsL+#0S5Y<T5pJ_<1!+pcy5tVRZ!%3=a1JO!WlA z;bo!))R_l0Ity&|ZF+#v$iz`(U24mUVCnVY<Rqh=9{1Y9Ce1)aOn7}MYZg;4lBka_ zsKSb-vUD_5CkXj8t!nLoK-z@An-dEsCT>k0j8wGdCY192D{n|hE*=7LppU`*$M@=W zH$OSOj9vgbz@^^vgXLq7d;4<CLt;xUwN;}a>Z-B(X)$iMAqh4sZ&Y(&hRRpjuaajU zifP}8?i*RfkPXu{KyPij=gq+F)kBY8;(%m;GHS=i0Qcxd(k%P<u}SJhS66fsYAN|G zO8-n)*=dNsvMxPK^Jg18Sr?LHFc}WNypF<HsXZjrrY6?NgH8qGu@<>#DKW4IkLbSt z>{YIrUiP~x5V9?Gm!g5OpC-mMrfFnd18P&4V(aQ1YPmU;o}2KJaNF3*m6($6=7h>` zs<$^5Q%@fFzFhQE<#&@%|I)uXzSpvo1g8K)KtM!$jc!UiyYchw3qn=E+K?H7Tl@I0 zL^bc2lO0*)b4OxSAfmtx`NBVPf{^M9@B+d&?>N7BJVtz@%G}Z{maqFzpJqz=i}x$E zV=mqJT5Qp@r1(f+A*{McoFBK;f0{~qLQJmjX@5>}K{HbE$vA6Du2vF4yHJ_!0;()8 zuSi3$V3~6CY9C{o;##U)I^jL>JLfXB5KpMz9e=AUeA1JCH$x+vnEM)V4cy=xneJ2y z8m#P`@iRR=P;_i&B3PD;W;)|}O5@ztom=J;*W?ZO3wr0Gb!V;}oG?1NTi$o!eV@1A zx>oz5=YXmID{>?Cm7VR4My;BQC<kS=NArqm(>uB?xBn;cWU@wxT9n%T$cj>cu-MSp z*hi=%>+gly=-J+VBm}=!{ko;~kMH%U)$$g6b>~~X?iX5V!T+&OyLa?#0K>m_b0V$_ z8T8+9zLbWp6Eew>NZyeXcZ0#&Gy03_wd|Ig`FSSqi{QcpZ$h%asRJ0M*+LQ%%_g3^ zpH5a=W;6v8U=da#<RU%k1zC2P*3j;e4@WQy<KJ;x0m{u#rjnla*P=F#`L{+#<7{VG zLa}L`1q5+<4<(f~WNx5HWRexk%?+CJz8X18V(FoxMAGyGV(P;fMq`;Yb9JsWvJoxQ zn*t}CVLuc()^d7!dNgGR)V>i5X1Cyb;oNRoRiCOE`&D7{t0(=T)O8P&yyl0AUJ?0+ z|L|ALdw#H}|4n<L#^Ra+6UeN54wJr1OiE}B8xG+RM{Sfs!W)t29xI5)j|nDGC1Q;Q z=R$6E*MBkx(qiNuI62vRPiwga_DRzZgPMfz^YmqGf4P5vscmX93Htp&MMWrWcEcag zx}viDh|^QIk_vXqDlCXL?#zk5GUz#(mU(!YNc@AUZlc<`Ijp@wVZ(WG1n)*h1BAYI zq-N4}%jnFM2&mq34%ca7Zq62~eeNnsg7PjTg23wF+CHI(X8K8FKM99j6T@Ge%llk# z$vn;V8*$*)P7e}gS|WI2NM)U)3rpyy4KQ4eISd<((YO()qV+OxP=((c_J1#jT*>_e zv`QQ#IKb$;o7$}(Re)D|lG11H5fdesIO%&EGrOE><lfQlS1ob&s;Pq?n+bQFm8j@Y zq2yLeny>t8E$oB!@S5zZaxg?qKxtFeg~tjq{qonHne#<`bRz7TQ}VazFY?m2M^gUW zaog8S`MIjFinRz7KH(|me~@g~LuZt0z@6(joROXer)Lj+H>xr>tAtEKOX2(re<6~T zIQ=)e0jr;BogAbAZK1t{r-Qm>FLrZQsb-zjTVkne-Kw-`>*LsXrzU~rfuh}|AI)|| z{G(Np{|fs2<=lPMcgc!q@rV1tgN_nR=X>H@xs7h9v|>aSUBw1#;PEUiw8(Gg=G%yW zG=}C6I#fR)hr{pxW9qvDp^pFmOJs!;j%4pRWW*WSt0I(fW;iSJ&fYSP<8+b|GD2mK zGtY={C>cri2xn(z6MpZ$pU<y8|G0m>-mm$5JRgIyFj?rr08JzxSp1K#4S<-AqdT;z za?w~AJ_(aFYj*`)4KM(Je9YLV==>%jKwlv<kM!{M>b_1Yk%ACN+;r*7kk%O`@9CMO zp&qY30s6LFPaZbXabRzUSiko~_|348a;F?S`P?)uA<v<h&6SS_?dAcpi$v`nJ-w;! z_xa3Tf-w+F;Hj}@2dQU?t7=oU6EoY%#Q9257_#|O*@dg(#-hy>(w#I!?`WEHNTkG9 zgAfT%({%ELyAcm$*)%SalY`xt)t>GScbKE)0BR;-3^|JsE~;DyJmXBdeg%BPKjmOH zad<c4HX%KtFk#})V7SmsFb=&Cfmg7ozf{2qv;!pQyXrM$znKceT#pO;>kP&nbY~Te zqSnlu^!SGF5Qt0qc6b}?2n6$(qbXb@t0^PZ!S`V|%`8rIlA^`AecMTD#unoGbQxy1 zkB=+uD1#Ha-uL!QQYMa_@e^1%ChvS+as=1N%9<{~WFo&NQv7`Xe(|mv<?-|4mZ9vu zSP~|0(YnH9`i>ik!uF5?ym(){9I0Mxs0OPA1xF*n67X1(82J>TCyfFqhhk8)hxtq{ z2)&IH8;)0tG@_WBqg(V~X2Fm0GP!ND<g>5;(6mCt3X3`VTr?Igh+H=EE!|NZSVcZ! zL>WndZ`w&TqS=ahgzHUcIF1=xnYykgCl6|dxQ)MJYuQ+L_s2^3Mb5Yotit~tCD!W5 zAV5U|lP)Nxz*vB#fO319;(!<EyMnFz9i3jase#B0G(QLG5{uKs1;oX_aIZ;E(uim+ zuLJIAanz9>)AkdJRPKeqy{q0>m7O;gdh&|+ZA-;Avsslu)bypqX))B^+P?<ndB>B{ z+bft!EO#2~!?FpzzQ6<Nys!Zqg2{CP222k-jN_>zC`3BJ_m`0FxC^w4td;DYqkVl^ zc=6e6XUW36;TqSG$eUlX8V8P4HNFW?27_{Z1RLDg6V(&cL;;Ud;b?x4=RtdEhk)Za zIa;Kv^AJYAz^rNHz->G!u=b%a&(hz&sOU?^hmWYNCV<Ro;A1$1(QxLs9jZX22&ulI zlfxoL^nQLB-_7}3hYrvQ1p)U4)5b%-Kd?lFjsdx@#xJhduTL}rCiw(88AfIi!?YOk zKgC*DPL*)CdTK2IVK4}`=Q8eG!t6mbhV=^MD83<ewj<}>0IMgF5(i=ui|O!U_!!D} zaq`)WnjACTN%K!2!Lq%rjztvcL6F%_0inX%Z1lnt6a4^Utew8eN-}W^9)bM0t+Cn` z38!b)f`wo#F@z(DS0#l88Z`xP#@hHrP}>e2-}m|wbE#2KnnXqWtbK}G{v+|ZDXz0} z{`bVFO~yMcf2`LRotPLuV<Hm~FyF?z1oww+`yaO?;~jR9wl662b*~UN+{Lnrn)`E4 z1@3L)woQEB2{$&^=o@6-jM3Ey2<Tbw?Rwv68i9q!W*fQPl0a5@mmqdVQ5RJ>d8^xI zyRi&1Kb7+T@>oHqk;&iQz4LG58K0guStkH=?%lgEA5}!urxMDq<$vswz^u#tU5P(j zLy|CL4HI=gD3Es`gg-0>)g<u1{aE*9K<kM?{d!Lb0&IQweYn9%(HaazR>9O{=KJK6 z4UMmXets07c+K}*B2$`M^8*N+Ba#y4U$ZrWAdmpkVkRs4p@Ho2jr2?Kh(Klu0HCmD zd}q_p;(7m40(l&q;9!$cUqyy8Wg9C(^f*YUO=w2v0G|*Km8cYz2i2pg^Gk(tA2T!W z9Udhn$5+mI8%{20ES2uw-k%&8P({p;FguU!#2%5wtivNknWqnxZZHKdv`9eNj0=fJ z=?9PE8}GcsLxq*H)_z?Z&QhZNNcPZX?t=*erBuI}7f`gS!gLOJgr{A4ZKY!lHe_Ff z6DvSwNDJS`40+T<?9LVMPZ^XRX>8O+NZinwQrCsos%}Fc&tCn1T08eKC5HE4<HL2Z z5$w(3a9y)yaq<Ar?9M6p5(&a=pp()Om3l4HA5Q!@26J@O$hWC^u7J<+MSehaSYOga z>hJN3r=j!PLXO_je_Sr4Fk1!?+ZM#d4CYG!VkR~z7aQuomS^S8$$LdJDJ|_?Uw>v3 z!V#yr7EGUg_rd_1(2FTNQi?*9emO8A1-U)ffpK$MGGk$$>>ksw1berjb0Jh!r6xZ| zPjnMB4gK!rLb#8kG5#USfFpZnyZg~?vEPpumh#p?oUwy?L+-_QSp{Fo`>==Wn@tj1 z`p-+LV;^$Ej^)+>{`wb>Ukgx$;1IbbF=l?vo{KIeUxJB0*f?tRet#D;Q?2<WBiHRY zxS7U&(tK7w#s03yJ;nF*^*1Fu(U{oSSn)_Gl_kZi+T`-7`maS3!5XI$+Re!XlLefs zod|=)N$9`Ad^b~?mAZ>Eqhi(P`6`bT^Ato}wyUFyJ>dfL&1fm#xb!BW!Z&Emj{=%T z)-lr4&r$sX?%E$BarkO`wL5Qa50#yAQ{e=>>fU|$lhV=pRPze?uy*-khm7~F(NP#B z?cH%LExPz<^iM>t?$l$@=&Vm?ZGM<LI3cR=MlO|;Lf5j?XA!V5zN%{YXzUr6mL(<F z3OaSob@7=d_ef&Pq+Z7c=Vd2nW;nh6TL~e;)^mC2yS{q@t6t<~KaWm{=bdL(K0kdV zVmZSjsTI1#47N`VKN^LKo*p=Co5;P#2`8*BlB5`)xtm;t8E1=Q-WHWTK=!F$Ft+Bb zJb3G27j~B2oW)Vajg`D;u5jKHHCMA6D&NQ8l*7ggeMq24=?IshrK7E-qOZxkw{|ae z1oio|*<X0e4peagkO7&X$!+N`JH1(7uPG6Gn|r<NSKe3a{7rvWMjQZB-iAn5F27@u zyR=QF{8id^TJuJutpm4`es1%ZWceyw0lxl-4|?XTxX<AkEIw+m>vW!9%gM3K8-|eB z?(oxq#V4^_jZTlAYccah5hXMFK+|Z)S=`I2s^-$DmvKE3dWNXERS7_ZIQyal$x_BD z7Nf(C6k2;QuPNPK+L;S#TLBYCPDA0JPad?I9z*YCm1}Lk{Bb>x@evlA)^W3KoAbnq zSu>xuaLB!lU?LE|h&Qk+PPV;2$3xySnj^LO?}UpY&7mDohDh^XD0ujt1!KiHzO=L% z+ok8F6mOWEY@0N<GDxR>v2n!!0m#<qqVZ8cbW2|<0M42^ee7`UVTg@A8S9SEWfP~K zcpn$RVIO9U%iTUECth>nV2;w6kqQCHA$JxZEaw}cYjE2deGa@=%3!-cfh%G|4IX*@ z*l5B=YP+BfaJjN=Oyv3CCnVjdkizssS_x=E-Ur|-5RlRO9(rX6Ek)HT01DyIFk?g+ zUjYN|YgnRPaI}f#*DeW;lgaO>tBBnBLo87-V-)7}d~|i;Yb_yU0=Hu{Tjpf=Blut0 z`eu8yK|a3XWA1m3=o5g$F*ZIPYsR4Rq_$!!NXX{_f#;X@K=1}(o6GYRgmGs<Y1gaB z1Lk%QYF9WVM!p^o0!xs<CW)_x%0k}=M_wXD^d!5S&$dn_>!Qil+t{_+<_1t<?`%Nq zD_2NqHH3ocwWJeSjG?9!wrq2=2;d$G6VT=vkm|l~R)vCVn@{S-XV^}Ay`r`BW3mNc z$=n-8yrfgJ@j_o+qPezTg7;o`Qmh7?LlBU*Z3#Ohb5&p?j|mY<m}|=ZOVI<hlZe3p z2n~g@r+Nex7@}ljMq9eobhdpy13cbuEoyM$27do8Zgq%E{v{B4Fqrzfk(sIma>Wo5 z_-nq{mR=_VOUWwQZCIvfs(p*q)7913<7Q}^W*QLE*Wn$H0?1N=i|&MYvC-C~&9N#^ z7g|;%XcD$I??&I-EkRB4*pBK3AKGzlgHq%DL$^8Tv=u`SyX)-)ddhtbWt+0xPl_@! zY0T;QJ0#8~1eWpBcFPw`yjK=dfDm-M@2Y@hm56`B?oMS<6;qeP+BppFomAOZ+K;84 zfF3MBp&x9>6w~PknAR=iI{#WtamS#FbXEW^O6;7L6@r}8gMJbser^p1Uw{N{X3kh^ zw6X#W*cClNUtc>MMeDsOwwWMRH`$Ilt6M{O?Pz}1<Wp{W(W%ebkME#wz13*t!G@G7 zws~0X7|^`&L@KDe!K>q8SH(cjs&uPVFR0UZ^SHm4^cN?^x?U5csGP_0ACoP?HlCqe zuP-s0@Hx1duMA?oS#xPZo#!C+4wT%{EJ`6Qo%Jd8s(nnZj>d=@Nm(5Ri?qg<8ePn- zSkL@+oY=a4Q3R(x*T(d?`OoS-Kc}a5dk*U&f9u053=T=(JZhVMzcgo(I<o$wx4ZA= z)J7?C|B)WDZ>CXPtod5JspZ?J-bvByF&OJNkLQ}csJsTeAgHO;tC=NU#gjHFijk_J zKh_H8<IWyDZOS{ny>Wl14WY`}+b0&2djW6`jsq{mNR7YXrP6cO-j0}~RfA}zQ22MH z19)m3tsQfGL}TOYR;CMvDS%&_;Nxg+F>c1vF@0R3WL^mioPx0!Ftwws0^CG)qbk1& zcak?W=4nr&f{)1T!mjj%bsw0`+0A%$puTdnuut3uuA|1r{&pn99UE}M_V4^@*Ai}< zvp*ilJB~B_<91FElQBfw(|ggig?40U!glfAOT85{(K{34=H7(BSFNZ}>)+C{5V^}% zWQAYos1bOHLiZDGGxQMcdUNv`bYe8%Mcgb&PG9fqd;ABI;3E3fnHXNJ>l#-82P_3t z+!&YrmKq2}!K_Wys;Ht%-Q^9G7-qWBQnOiI)frV!_z5qQ8XU$#MFN7?T&ViZEC<8r zfAHA?XgL~V;9JegSx3=|!wDTCBPtsE-=A=`h?^FFiTLOe5+V$>ME0!WBE`PGpNg~Y z`uvhOe6PCh?^9eN0l}kV&n~!xHbj>cTeR{p@wmG|$hjY6@-XX16_)_b)a8ud`Y|ZR zIRXCF0(rU`egS!MLkJ;toCfE9wZe)9tqDAFn359FTJ$N>4$Z96jC-C_K{XG*wxk_J zN}o{2DaFt&axQWo_b^uvJ=%+mBs;kt54Pr$R}7(#XWGRPZjnr~W47BuW`KYKvM#7< z#vSCnNU(%XkLVY>7{uo`In4IYlbbqLRUbQGUVj=zvlYs?(9do-&KnBmnzAA`ujWp! zQkDjhpSE^f+?RT7$@L87=jSid=TL^2GW-jHvp6E+dF-wX4|BxihG)LHSp{6C^f@Nl zb>+!7^Q-g$0Eak>WIs8`oq1bXv1JY`P}8k$IHqCp?SB%-$q^0Z0;j+<f{u4DQI3{f zU?5le<mi|p=?xz@h1h1>w(j<2*72=fyQtVqJDVXVU>5G~sZ34ln4YY~xd~@m6>^3S z_q(dX%EQ3ediWG=9op&viy-c>Cg<>h1S5f^J&kb7RhYo^&cjShm=wstg7;mE%}Fg& zYXGTzC*P;c_<{H$LBssGzTNI^W~0dXS<aesO`7(PyUs(@qmLRziYZIVUs-oexp*d~ zt}V?TR%!pwQl`bK{Jzk!*wC@}E(t?U9t`wAHc@12?`?P*Pp)C4fy;(FNdGNKO`O4U z0daJb>9LP>W9av54>@ntuE*;v0WYSs;?ycW>1EEsiPxCfKMmjI@=Be2_Gk=#_i<w( zxf_P9Yi8qfXyUd_nEj6^kZPzX8}sI@%)CdSF+DZ>GB>BDBzFuYvt!zq&mm#wK|+Td zi4xV{im7o>YdPr0S^Gz2W@;1?1g=`Zx_SdZ^%>crLd&lK3Y6;2UiX@CMU!X5Zl(C# zfAzKDg(W7cK1RVT<!~c~BwE2<Kx-3YcV+7|eg3j$(={Fi?+}+1hS4uJYs6eN`lycL z1&5kmGlVQ;l3@8Zx3*Efi04gj@6ZhT-Tpe~g3>3(4|4NdA0;J*Gw0$FY@VRL!v57u zr@EZpujMa(9odx<b6&5FH{el2N&$h5?7>q+s)GZ6K=P>mlxbB^Uh_DOXSm|^iIy;Q za$<tkn}_(C$l`H>_Fe{XnS4Oir(sSlbudrJlbF2gvWXV<HgfXM<i?{-6i@}j(I)2P z%j9SxemM%Rl^DFMWOp7Efak<A)9>&$u|7N0`?r9ZgmnM(<zS$X!bbp%-^NtqOG1B@ z%vYu7D_<9{|FA7R#RyL>(ddQDgOMBnMOL-X!FN_AHQ2URIdR6i-?QZCB=)}cmtQ|| zS>%zmtCN;Fx#yc8!r_INKrV~e4uk*zGmx05D472?NEI19YT_~2#x$|m*JlnIqA=v| zWSYLxVSs3*(v%h{C?%VX*ATX2tY|y)amtn*8Y7?9i9a1g-2;2u-x>!=q{LN~REQ&i z11cjiIin=^6V)0^US@$qs;il+!_-TQdNUeYX3GK3lDG-Emi3!srnM8Xs?M6{2oDLq zrRV>iMM6pOKKROf?EO1{oV5yt8foMC1jOPY+FkCdrl8*Zsca)jzzlpTaj=Odj`(`W z^VxK@lLFYeSE?++jF%^Vj@B?6$mNmm_JBKji(fQ2x1H7?d^sE7<@!$7PTk=I9(>3w zMa2rq5Xq{r4w%o-Hf%_ZQIY}9Dujpz(;_8<z36<I3j_ZF7uIQV;R#RSB8`NLhT%tz zr9%fv#YMl6$$g9fg%GBCayDuk%kq(6Hlg`Fhj391{r)48<fjG)9s1L)P&eA>uFR6u zdubv-fB9Zg1Uk@iSNL)ib(!LWn@rsU;bI!K1*=cLK2k^jJDFV&Bte_gjkdP6Wk_F$ zlDOyxhGsZJ2hSquJ{M!^e?iD1%{Lj}*JI``i9Nmw%b<x*1vUZ`2~$QosNj3=9Zv(J z%v8pEP!>ycNAtJ5duf6o_xRapO+Ug2K_?(0x}afi&p{JAbfxy5cc*#J)KgvEb{t1& zGtl(k5S!Dm?1{Y;$z*Ev_FG?KS{)`gW9|u|fH()iP89c<VKt9C-Je)6FtN>(lzw<_ zfbkZjtd0idX$;lGb1t@;xI%goN6KovWLuZx?d8`^lsGpQkmcG}&1kr%$V_p{E9%G8 z2M@99psB<Q|1;lhcUAzILNtn;XAHFbz4!LV$!4W%ge!mCCjj-WR>#oSx?KrV)hg#| zfLqVT<Hd3v7_ndcp0_P>{b)zK^@d)?Q;RwdpD=4t&G0(}KVSR=3&{iU6Z#~OUV-NH z*#j`4rVaMU>?nrxwz}@BfD_pQWbJ%p<d*gjJ=R+>_onq!)&jEZ2UR4b_w}4Ki#mlY zvTH7O&TaLXW-Au%<p1gUmd1CoP9@?LTa^dneQ|U(h@YUN&Ty+SIYm2=C+I0p>6D_$ z7Y#}R2Nk!5@)lafpG23vq+255hGE8~9{9%DE3Fz~F$6R&vUp_%VZKf@LTH9#m+Kq< zO?@}$bBrq~5VT;6s4isS_#FF?gj!S&GY^-DR9d_n4(>bJfYwvA1G;NVT+?qRCf9zn z!pad-4Ej3biLY<!v-y`?B)Oqx7fjfuZP02Ei^+E^{jgVWd;^fLUXOa#(ggl^oK?gL zHpDY}SV>a?zgJ16SN*poS(L56N=0<<Z8c#kEuW!SFcN@GXaR3RFthaA4Kp}=q#e%e z4A}EqRkPK;in_!gQL(w8#wB*>WgBG)%)QgaoZeBG@cVd@;$<7(+stS+GuT4n)QA3z z-+swm!SXU}7e|@vVObNEGeuVD@ZMRMe6gkFf0JL3+&RSESD2>~yZMPudSLxii!${b zRBh|DX4F3Q;drBF2?w#|4$p@#b~~}|7K|{)m4KR5iwTRs>U67|#s*>8Mpc8S=*g+6 zD?}?StexgGhT^p*;O7|6xo34dr+me`4C{Z9=BB54%e@5tzRQsi@xyoC=wx|&WHynD zdllQo!V`&z0C#CoaF;#GE~4P+rjMm9Z?s71y53-ev6G*8zWA7Xm3j$JQGnOWyO<X| zRMTfEnMHVe+>+4Nzg6(GVCSZPg*-&Vcm*zDev=k`mG8k8ey004L+4XEWm(a`JK2|u zX&K~;x^6P{1{C`&LK6-S;ZzPQH>8$i!~)G%DTqx)LGJ-@!$v%0!FfVf4Kw&F4XOQ{ zq9i&-f6eiE@KQYd9%ia-{9FAxz;GzB+q_`&C=So-OOWIq))I($Rawkd-Oh%R5@@s6 z6c}Q_o&t9IIlGFHX#iHd8jKXnW%)vCW^72=H3Y<`XXegS8L)j<GM8rZe<l?%Y)?<O zxM9AK+OE^MPAlX0lSGu+=}rMZVXJNb>62AHTVqBm&HQhYU3K9E<3bB2T9fsC!_gm- z<e&6BcW3e4JUL5k+b^vYXTR}cKHOR|^yYH^#QOg4;x=R!y3d_!gNzo5;{a0V$3>k3 z+{O<N?O`8h6=WU{q-=)&iN7dnlUK;HVyuk-j{NrAH#|T3=-Mt5ZZKM4u~@Z}A<<!< zuV0&iw=<RhMb127r9I}wZ?9!HNo`|uDYY@uSqMPQA+-OXXKZ5P1){psphq=9vzo1L zvB0LI1%OVrqMWr*ib#&sdrdaWNS#8ipEEY%jMT^p^=ByFSP)Mq+k2kUL$*Hi<a$_p zre}BC75|}MOFb)&$`mq_djcPPaVezN)iUT3FIKyM6C?F9d^wf<scy(M)7`)6S9u=# z{c)3f`GWfpSqj*;$h`)8v%m3KCQ-m!q0u^sj`##Fh)shkc`nzd{rf6{mTw4ZRHo@e zhHqZPKeKUPw<T)uJYM@h$^o)q+3lv%pC(*16NHw>L)9o}U+(&bq?AHqD)sgKs)Yqd zO7`HVPYo?oH=?_$CEDmMaT?(g+{1Q<IF^Ur!>z`5w*A`a?mO;UC4gOH&)O+pkcAuS zTShMpyePyZVQ}*a{9=*JjP%F!nd++JxzF7axIg8-S;nER+EXIs3%~OE4ywIfP!km^ zxeM>kg^Gx{htK4S_T8Jz>0_@giWJTAjzEKaKXw?QQC3@@aN-iVicS)_46~sdFo*NL zv(UyVD}$F>q?I3h7)*?_832XJ3wcXDU0sKv?e+k!`yeNgj%eop*&R{I^Ct&CXsFX6 zy2C^K!cVQ<!mt#DcL+LC-j|Yf-uFySo^m~aBcJ=3nH@FoboO0Dxz~!fJgAMEfR)=$ zSeXYYi2q6->|9+v@v>pP0Qk@WPuqzxRrH=-?{!`kv+vHD7cqjrh0uJAye5x|>`EBp za0G{(nPoAv$pbqX#F?t<I5k#5;b-QF0;{W<<&*D*U!u)8{8_Am8ya0SlT3VuyRlPR zPNk<k>~#;g?+8zl)Vs%7U)7A;P`j1&WBOA^+z7Sm%ST*x=K@Ryne+EwIt(Dis80%k zN7?68r7L~70W%NfYv-(+dY5N8NQ#NbNczPG-lS8M%p%CFcgR7ezp!5}wgTaOekS-Q zt+FCD@-W&tr6J;zqwQ=BB75@yXum$i@JV+`Sv+&i1uWFxViAx&;6UJ`ACR-*P$kGH zpU1V)xH>F^%3ZROC``SIa94-&4CtIAwIKvHfFUo-vgzvTMPMbfOn@5}iM?=k0!WUw zKhOqh-(PvyLHzF<>gM37gzjoFqgN1FWCNLk)F)KYFmz#>ceOb4+-f0JRS(m0&}S<k zD_hJ)BFE%+!uP%W3GYJJXZ3FEmnAS=<q_oy_)D)o_!%fVZT9;l8POn+T&b6aU@LNf zfNW{KK5nvRHHbyqkZ_&s!BnR$Uvod_t2}ukRM%>T#ow#wsyJ_hMK2#RGGWP2Lg3mx zbdTJ7Ri6&zQ*2&8kgWKhxC079r$0qH`o){FIR-FwO3HMh@7mlK*dJwmb_*x?E)aD| zwjJ}RRYb9J`z7L$hwW0nu>Hd|2hW@2*&RIbWUUm2E-p)F$yB%|SX)~aaEQdNtf1Tg zQpjhfI3<ml0(}25LkH~Mtc-)JYpE1?Sia7y^XjW8WJ>2RgHO7=gZPEX=*V|=)F>7< zu@`qVCDG2mag=ps{B3EU=WZ8PnHWPEvTg{kotZaE(!F@JgwF~O4hVpalcynyGk+v@ zodNBS%?aiG(;~J0Ri}}sMu#u#=1xYn#lCs3A&Y-H9g?|o{8$S0SaO)MXDo%R@BDI4 zVQ1FYYzo&C+RH6|MzuUrG^&rrd<@W*_E7tkhHy(DnzK#FSRWkJ$uBj$J}R9f75_&B zHT3^h(7e>IOgonW1XW|Q*B}i~{hOBz5x?73-rV5=<3mrLRv1_=Eq}&5@T30H=Eo&l zvO^Dik3G@#*i=<Zc8R<05{i!3O%&*8kKsYbCNc`aEkbiMZjsRYJXr%zl<cP~)uMXO z-ApOC`S{!~cL51afzrkz{vDO6YE}c{V$@`PEEdjXSFLAcB|2;Rpb8X`kbVC6O?taS zWDfS6>w!>LoAHk*bg>oT)7XhX+rFn=tl#Hb{deFDr!^Z`%QNwB6rCl-I*?P#7XA6a zySK`=eMXuquMe(l2G;L#HN14RIv0SB-CD&T7Or}kocf>P#~lUh4LW`h4Z~tPLYeQ@ z!&dRv&B3Jj6*#+hd{|P0#n`$}z%(l7<0xTBm<jzeV7~hwu$TTsdk<Nu$9)dK&Mr&O z2$6y$d{k~FH>4#z`l6jTV>)!fmmgnZ!)cJ3LJ5os^x)U%?}K*BW3~xEUXvNVJHRq) ze9Hyr7bfCASYb!G4jJg5sVMklst_v0!NIF$l$`(uSj4`I=Z%@`F7LgsFy^hKc7bNm z$3#0wC&^ARv*QgN<U3`!s_Ab`F##S5^=RYA*g2bDAR{$fTe{tBa32HgSfZhCEvJ{E z=`ja`*HhDs^vRCT_fAUr90#H`I6kw;jXf<CwxQ~;wwm-6wVd>`G#Z*(U%|gwss0h1 zv7uJ5`eR65fKNe;qpGER73`N@#bO5}BL56fxuW3qlWoE)qt)_bsQ=C-<wX@6)YrQk zCLd6>fM4<7ybLvIGO7z`Zz#8Y&iNmfS>U(KhTW2Kaq^LJ0jtj)B<p~ezG6@%Q-*o^ z@MZBRXJNbRW|LY4F<geU>Pzheq4H0LC0zu+TDvcOeN{KDYi#79Adj0}LD`?)x$VAD znWaz09`K?l-5>RG`F5tKr;BI=UWLb5w*{uk*=wqT#pFukwIVR2AUN_1i;+(bXigYC zS2k!}9$#Ep0y!>H+E`35W_s+<rBr8;VaK!{g+g=HR>EUf+NOk`4*S4}l1{~Ymh&I- z_C9i`DI>yGy8P4F{=X@4uGw1&H(zWauO!t03s5btiHggLW9cq}c`j1jj^|UnFSlCC zPE|@V^j*tIuy!`H2PLF8IedK4F6j@YRHC^0R@pr-j_VL(`Z+*^l&N$C!@_u@DG`fa zs#Xx4Z?S6(Lgr}48ADOGkwrxoYO{n(aX1ZeoZ6}ncXykFh;PX38IWq+_MwdpQmas2 zm?{jwo8RdPCg@_&o(Aq^X1Ru7uOG;Qd$cwHUT?8SeGGST;kKN7%<N~L&E@lR7xnj~ z9FT^*-$>4R)*p8SP+@5V0VB=$UV%u8pP!QtT#jz*^Sb|OrOagTB306iG`Iy{V+?&C zOODhex-fgoJG10f@ASSF2*?ZlP}(u0La49Ux{D4YTcp=yz;ZCkg2Vt1)$Z)apP7nt zxGc3lZEC(`#PZ6@W=BhK1MLM7mM9>&Pn4?M(&zzpuDgxJ-oq=FnyTXJA8Z<wr)lhl z0=*_)@ORY9!|2)9+`t)U=OjXvXXe=Zm<Lm}HB5oaiF-T?UeyQxcR|L19>%IOqWHmE zfZXW{>UTqg%`CuA+Swf22<eZl`JI)o`iP-U+YP*Ry5dQ1n^AGwU^x=#|EsESUmQ5X z16+T^W4rrFsipq-9hNp(Pglw?z@U!4t5cwjL=GVLtUkWZB0Aa(q!o~D>#fG4mI0)& z9;vqRo`^&;nnP2h>2<-i+fh*;+?<?BAG!q&-+1y_RBso&$UBJ>5M1)^Dk;3FG?)un zTX!d4vPiu7eUuTnv|?g`7U|TCB4?5@qs6+&-HJrST8G?)CDg{VpIuhFpMfoaFw}Yl z7yUQT&jtj+AaWtbhlFz8{o9W|<GnISRtNKY8MtQGB0v}!XBP<Zi%wVE__7`T=lCIh ztU_cQ=U?HBL43`4<<?VH)?7YXeUX94BiII~oY!KG{-ROh_0HSU?FX%zqlT<k`eTls zMxePeE5o#$Mm?Z~|HW>Y0y=#XDT<o-d?z=~BSy`GY6r~5MsViQFsoNk7XTI^dOE@& zC?uq4^ifr|mdevXkC#Sn3n%XD#V2%X#ejd8YQRg5pA38Wx;iH84!!jU`_R8G7tzl0 z==+DZNzHw8e9T<PB&caD!<|uSLv)9J^Y!S98dm`e6)yi2D%?{y9NBC%&vYN%#C0)A zrD137j1Iz(Iw^-YUKGR=1Z35l<kq!5?|dCejbmhz2nzU}ALjvaVT#ot$e?kInj^Z9 zNPBKV5`KrBjiZ@jLXN0D(YP$TSfH9S65qraGKGt%|I%C8bHi16Vk-1cD=&y&m<gC9 zvCDQM1ceL{uIgVWYhmyZL?gm*>PH>ab-(MX79DLOcs?}?Uce%%vr9CD0`I;sRy)rA z0qws9Z8Q+GOm$xvaNak7{GT~fXL-E>T^&LFk0cj~!bv}W=F1h|rRPH$e2uWu+uxF& zR`u1Ix2xM>yFii6US)mMqNJ3Wx|J^Ju@~oc#hw~(Z+~?Owq?5L^4}l^el6-~-`~3T z`<VLcMZl)&#R1=RK}~?f)^1j9UQ@=Ba%`Hv^J)}O%;+s_qmT&=LYPLzC)e_N9zz=n zxgfygvBmDVlbWpQ)6f3EBde<VWH_ub10UCC(xXSa*-9CCp^&fsmO8U_k29(?smpw^ zQ8MBT#J}zmY7|jqM~(jHD)_q?&B%t%avbcBcGDI|`ig{<it+yI%NrWh)Sl6~_cBjT zB;Q8f27k@EeF6ib3c2Jjrm24dQqa^Ch7ITCoF@xoWyqONoF{2HsAkaf4`#6%UU?X5 z-St&JhT9KxB}_{k>g{f^h<5`mB9w&=FXVR7)>Tb*ZZR4%?Y>h)NXHFKm(6{4WRF+b zJPO_^b|TX22~1!5g$<oGUaO{rVm?<^%kQwK^aRas?EIoy2!%=Js4lCro)7ybOWUwH z+91YUGJpSUly9=g)vkXHOrEP`f(+a#b3hj;-V1nOet5{%$hjeV%dwBRkAL?O@Po_& z%;GBWz%%>*$V)L47)^i~+brBlkjr7GKTRu!CBP@fzXkjx8wiC^;l59|U!-o?{j#=Z zC*%_q4a=j6)IMfRV#ge5Yp-*`R3=47@*LF@D9JdZVffx(qbSh?j8NzJv+I#8P{vd} z73eGG*ZFEmlD?nkV51pR04*}F3k%p7fYcHoY}vE+K+m$JUugh45%8+s{GynNSjAiy zJ734v6ByQ83Iom%`OryLu;{f1*?mNZee_p1LScA0hm;2b=BVhgHaiLuq8&;Cs4m>t zM6#EF?=F{$iyhxAVB9b-fh;w+`JP?lnjHbnPq^`fjCHa?MkakJ!_UleUQS8r8dc!c ztX(kp`X57N#BxsNSo2T${KTscb&{9}uR2M0y1cl(m8goTjz~R`9&Zj+!E_pUI}aq! z+nm)Htuu@gRl9O&@%b(KKI&4I+w}4297C7ZE%g$r3Yp*jr!UJgd-x@@WVG%`!i-gY z2^Kx$F-!Wm?kXD{FW!<HpQ|hfh~a}~QiyJ(rW&0Gvrvn_;5leYHC0;Klh)AHb<Y=F zx!mF3mU}Nb?+}zXOQl7F+AP;;BjSre)bfxyH;=Nr5TvTJ`uOu)4l)IvM#kh31-mP6 zJ07Qh)o!b^eZzYF@o5z+p+eX)Q4DG~kS{S@%$}i{w!~LK|8YCtDlJ@LGBTH{LrBGN zkT<Qf(}VHgMp(l`6Z7`ziHVJ#@L<$Kz;hB<pFw)Y&P>Eh<;*8S6OYoWm|P>+yk|WY z>_phh>15HR(2-vgj2d1gfoq$d(ePCz%;LWpLrOx=3|KD5?`gn>lD@yp|7;lYm~>%a zz%ZX($$-z6`GEvA#*6X$(ETMrDt!PGfcV`#9I?<<!81mCitQ$$5m3Yd-?5-C!S=_O zQWm|CEOnb?c@Ds@%KrNG;;SR*3-BljHC=8^K24^0Ljo~f$SePVTZ=^tnS#Ob{prCW z4ev9UUt5%B+gM=Ms3=!OIMhwpva5BOw$rJ3=6;~J04S?e5}ylQuPyaxP<u7?AUiJn zBa0GN0(3bIew$gH1|docd7&!Xp=POtRWobSjCTTLdT4+<Sq`^+Q**`YMWq4*@{PVc ze1kZX!c~^#G2q|htMTaZZ(5FHC%=6UC*+ae4f$^;ItgNoS4N$_)`^vI58DG=fr)IP z2o`FI#rb(lA)fa*s6b~Bs|UXceclr}2fdic8y;qhZ*EypR3^Z<>g@3UHy>A`Wd$lE zk>bh{ePjLtVg%f2+@?Zq-pgo{JanT){h%?c2s#z3qZ)0h?w9mWam{T_OU-`o-X>{m zK||N>ET}zE&PcJi1{lnrgrh$vVDa}GAaU_<&5l_yuF>|I7`x|x!U-ob<u=CbSR)x~ z95%Of^cd*x&P%xk*hVNl2Nhf6Ck%xZ$>Pa-0#_d;wXw_!hXYdC@?HHY96$;;He$?+ zz*OM3F697PQy)a-j9k>*YSI)nYFMb}7qb88T7O}x7$7F&@~!g9d3hV#^+l{1$yZ&( z95$(NtL7P}pryEVo<6-J(F?WZf*uk4+gPJO%6touC(tKy44FoE3>gEo?rY6bVv4?J zW%;cKE#c?MW22*Z9!mWPKf9)z9v4P#M#J<NH>^@dQ>w0Y$dXb5l+7<R#j!?R;yXZC zge*VFHJ&0dq!?lD?juUL_Vro?jc54#4HYrD1Aw<jU$ebgnRqU#W&x1$>=*x_u08DA zoIPCPxm;@pj8(yo@dkC3V=~EaBMI#X{{HMd2RA-RP6LfM`JE+?RP}{)pu5(7M^;wE z`)-C%oI76V%VMyy()1TAEG>U^5&dp`qa}Bfo#NZR^4-1ZX-AM1cQb3!S;}9IA7O0P z{_s!Wjj?maAy2}L1|Iu1QVJYsV)}zlv-G`fQgk`9m>gg(p0g#696(OCezs~iF>RqI z)tLK@pCKLjAfO$&pKLTwOgZb>4i08*Z*N0#4|^b7?5$HkuGL7>5+IQ!ljpmxVZfWO z6}asJ?~)pB?jq=AvU~9+c(@@x9tSaF5$7<~nY~MPS7J2)m$mb?8qr@LFXtFoDAj3L zub!fPjpv(J>z_XV^jAH5Kt?T4S=4!%wP$dB-<CtQk*QBR^bEZB1gFY|)22Gsw4puq zWM(KKe^pF>JM87Zkshf&`=f1|)MkvB&}X+*<us%r8!-84jzAUu^bftJu@1x!azRq1 z$C%a}Gyq5{&d=%O5RZc|Rt9Kr<T7Bg#%R<aa#DL>LJBz8sZSU`J+Lu89ZOCCue}Os zP0!sK9(GA}{jQ%!=gq06Kx$UYZjOw1rymGr=$M&X0Nx~SXg3@VuBONQ4zB<vVWf1` z%&eF@)3Bawp{Huxc>A)!L9X^rwL;fRg?i|hj4Hmqt7_<~_Q{_EIOC)t!0!z5p42O! zY0=JKR2OCZIQk7?ZZ8@++g0$mgsZDS4DTH)f;Dx0^0&$Xo^E78VK9xtDhle!F?2^> zX6Diu;0evTa={@fdh>E{K(li0mAQQa@_}s0>FLxOV2q-}f>eDVD-ZSr>J=T(cXE~% z^bfnna)2ym4-1*fyss?kU_JSD-%xz?@(mNN2JdByGAivE5mN~As<A%=0VELhqV@dz zN9M}}T=aym04}MViBHp1B%Vt8AXSVr026I+aLrU;A}NU)P}c*uvzO+~YEp$|0ZV3y zB8N<8r-WyEg-br;wNIg$dEYrZDUp%*V=oJAN>3Z?<2zr19a(?W{|u0}Ob2g^gY|yi z0mkJjqMQ4q2B3<;bZrKl1MAah4Is6>{mK-fo4E-!HFUl;cFaJkP|eLn;7s!Ed_#Fb zR`wOsy;1lis)tucRjp*Uojn=!6DsyKX;AO>7P?J3@~V(ISM;I_(mffFrLg~WT!QWU zfgIk!DOi9o0=$VvEv2D9AmvP=uJnlRLRSa$<terTAnE2~4|Zrxs`r<$&$lsMR{@hL zt&5~4a5x<0%0wbE9Mo+XAs7`ffhsIaeyL&78-<g;%}!=IMC^&W#PdW}>$b_3;y)mG z&Z`0zda$7|%lBGj_0_ANKX)JcJ&~u1l!|uJi&j&Plm;)RLv$3V7i0FgCi8FR0agHF z(rKABFtvE=M9%P1sRKYY=?`mEUamfQKu^As<Zl<CllOB}{~|r-E<>A~Azjar8}55Q z#U+F?;N&wrO1z5n1E_l)WXZ|iIWtsZk~u0dEPz~hZd8L|8_kztJ*oO796c$SyMu{> z{oLAmg9t?$MryjU-<=VPUcN5D^VQC*x7CFQdI6i5?`?Ls5%fmV^r&gU?qQ$ET*mwQ zl0q*09Q3N8@)G}=h{c_0aWw}l|LwDe2-ipdss_B`V-468nE+!Uh{J6D;VF?>KW}a8 z`&w<lwP_QG--DSK*M}E$*jH3=uBWXi*kbi}s`XyKmKuI!|IOLCcmQ!&U#seDkAwnL zrKmS*6L&&qVDpQ;3aT1Jm<HgH+xa{|D}!tiQ+Q(%_r48w7ak3GSTmAIcfOpX(i~L% zWJ4nA9gpjJctlM5Z6(n63#RTrAlYh?08O}WZus@dN7c5=+=Rz?e7waXM@B4OGqpeH z5_X`F>;3h@kKJ&R!7lknAT0HB<b#Fbyi)egt0y(<>-nwp4`_S-XN)|s-+zQ>5S=QU zs)pk|gOWm#4HrTi_(xUWHby*(rF+bbhjL<Uaj|Ib^ZlGE+T=RpdwsU17ba#WC!-8T za}oUc*=H)aGk|v!pUPoJ_I<yd^8Ot+!L_^_XAedf;_WHHKT&ZTi)~2C4%x)+T$Wt4 z8j=H2_H_#9h^cRPCc9|DYFdEg*GLok+5paQL}Vf(QsM+4!^OgVcj0u2SlVCE_B^#W znh~$tWGdKQCKz(V0)QYXc7~%SWL~N=v~!2pM0{HovTmtS^CL~%Poa*ywe>EE2olT^ zyH?jgS+<tCC6rihO{Xj-3?}=Zk(=u#c#BWwf5a%<wE|SQFGV3u^x*b%vG=X?u{_Ec zRCVhgevalfBpbK_kTFBR`Xj^hY<}156sM<}4Bn-7g|+(W&u1zm4eX;0eTRN-sXj7u zv$9m_s!ur5#>(tPwkfMUI!>R<RF5D{ddv2c5NH#ojYe@{Bv3>x^Mk302{E=x=!R>Z z@e_tQX$X}Y&!m?ah)5&&YouEuR;(IrS9)m1_Ok(Qa_bj}@B3B2!E{0<wy3D08<n1X z^phC3d=$`A2&WBdKJ9Y<!AlZ&KavG$a-YFcPOQ3Z;cjH{tA9#VbTK(MtulmT$SS(S zZtV1AGlpyzfS0(GM#l=vcSar)YE=?)Qa=pZM7(q-OjcAPG*^H9GBx6>CpElc9~lLt z(cC;J&<oZ#Mg#a^clXKF{VUu8ef6e<Ws=j55Ybu7Qx&26)ssCvnYn2FR#My*?8{Ye zq;;yg5TKb7CC!KE@KPhYcsiYfPtrPHftcrgl2RyT%}ZU!kVq}#3fn|_Ee^J|Sc^W> zDMOL?nsF3D9e4s+LRL16CXZzlWc+TI#KELj?C(IY-S8}5(@MmS&;I_LQRLSqN^1g; z-|OFaJpv3G9$SNNP#7X=QX1bs?#aCL7qd~@jR7jDF(8@#8s;v=^HsKiuD0>Ewx2m~ zdfUtf*`ER}y{|`sw;<9FLe$YYWTzVhAz6mfA*+f}*HJKFJap+I5xf6_crX0TI{iUF z&c!-*&F8d&i);to=h+{EXI+T8BfeG{Nzl}&xZ9aM_WZ?FT8roB5>g)qgB=B@GRZpG zdQ{m^wHup*#ln;o65u!Op-)>uHiA=0MR(sFX9Z0&W?_)N8{$L}z)Jd#sB`r-P1xe< zYSXDw=<`m-N<2^Kjare~8{o~uZcNXR%CI4o!?pw0J=PKzA(7bIj*TrCWx*@Y_b%V| z${RMSa~Dis2ZEhe=Dq9K4u!7QdL8nTtC)*+r9M_9=<(5~3%581w;2x(df%|@IN;vT zJBw*3xuUuVG9EKv;=Slz`t4!fZ2ZoxzCns_;t&Y)>BVUZOXPZr*2B7va=Q!np7Y&# zzUy;{IPaBJ&Zllkz6maII}`qvX%`$!ye@yjrZoh*ON`{FZVC=Q&!+Y~n31z<%*i1Q z%y{Pxdla?w0$CvK^Dzdu)b5>q9XHJs*qZZ_<aRW5=vk~j?PAIMkzzLfv?y2t)6T8y z%1wPuKR~RBBLLjW#_5^=CZW8MBZ};C-)SB@#spQ^-PA_0c>UA!EYtA3;hr8{^Jn>Y zT>bpSPBU4eVq926!kUX)1;aQmma>hfuTr|@uuiH;|HgkTSG9ZHH?gnl|62Rn+qtE} zU6$}y%ES|KCRwp9j;{R>U*CbVDZM%~Y}aal%8DFLZ!l6px#fl0uZ-7wL~o9zGa1X< zl$T(CKE&Jn4%DQqXV@L)1_AD9V;NSx&hX9rt?`zyQ}{`)ewnnB>W`%8gP)wl#htyq z<LtrYWUDBZ{<q^5FKXDR<>rqMUODbGKot~p%hQN_T@O7v#_uK$-2~6FU|+>-?cRcI zy?3xhZX2Jt)~CMyLj8ok+wS7)%QBHLC#TDmZ*8AhggG{>Hx1dCjFG;$BuZ*kw8>t- zF31`IjA~;u_`Ku_LQ@5k!ZnXWYaW~ml2|QdFNAxJeOoyBUJ%b^bQbo$@pKz?sC52; z?L|BnldW2<U?*}>tEkCpl8L2BT!W<>WIJ{U=5D1hqOYhdyxWc@BC3;qed?FsNO#Zf z_lYirmM6}<oY+d1e8PVR_#i<+mKWYoVid{?tn;tME0lH`Uz4}cVP4)pI8R+px?ine ztlg&PCA99{EmOi~o<kMp*-wvsl*e}OQ0%m)?J0aXOFtZhaZekFRy_9@X^*=}TYims zyUOI`*2KMXz$9Z^)7#-}yd+^T%_X~>{ryca@13{hNQGxLM!V!PMKoqIk~(=gvem{u zT^!R)lilIXU)_bfb8nOz?<RJ{C%rHA2og9y3MEeSG?BGQOR!>HK?%AV;ZNS5hg2VL zehNQtIO*R%`>-vaxK1<ZKp#&vG=e+G{!(rgy>omHAqgJ(5iZ6!baGDI(5hWMpwF1A z;X$<h%npBaxe#Ic=`Jh(fD2QE$bRW+y~2bvcd_FAt)892C8z&xnvmg<b15=z6>1u8 zG_s>Z8(cwb@&7iFfLE!m+4F7~?bhsXZx4Uh5i(UeuF;ONt>x5GU)c^2yN0>L9^UMF zR(aTRe$e8+A1H7-+s5MU1o8;jYjL#v-qIj1g2mQ`PIa<i-qwtp2XP9k2L#$CZz<X; zMg_1&Ppg>7@#I@R^Yneq`s-60oEh{^;-R}@JeZfn9IayTn|*#bFIVvE!^^Q7v<Qcx znPIE&@`B%iNBvsR>Tn2rv!z9r(Zqf2nDH!(mP~JId$aL_Pxg8EymE0^_Jl`#@LAaA z=JBNmbf!v)3*M>W*rgk1vcwkA^N^EztbrwMytKl_y4(p#<IuBi<(B*0@){Lo$~OE@ zdB=Z1wRxOtDk_Y6dPU#=FxFPAIvq3*2@D*+?fDJ!|5ucCJ<Sc-frMZRYFF3I@kc-2 zVWO*b*w}u{4e(Na>G*9DOdl?Io3r7yJ4~Or4{M{l!M3t<tO&Caq+o8Pje@l&hC2A} z=^2)LRx__Jej__CF5cPY*g!XIce?gBH&p(54+I<|UaDL<5#7}L#s#AKgh?pQbc}u3 zJfmJbIFCs0D>So_)(|Z$y5iouoA3@}B6hPIi}R(w0ubRLMG^Ux1BF7lLxtnh-%mE_ zhTaTJm0Eq+po^F~tD4|0Kie!mR<}Q>i{Cp-AwE9ebWSdcd7XQ!s3?eIlv7DW{lSNp zgGs{%iv)&@>_>NHH3$X0!uy;`QApYiCtQyGe;3YgJ2n<(v3i@Wvr|vHhI>9nxPbcl zBY6JlO77@%)*5|C(^+*6QereII(y_tj3x|yne{eDSJumybvI^Gx?X}vj=zAuO6A76 zg`URl`}IbS8nGVy+Rp0@Xcxn34|QCymQwS%%-wl?Q<XGw?6O^i0;`anE;sM}x2oKe zH<cgVizuOR)ZDqt7G72+CJgsu^@w_IZCQi+=?$e5n<yy?x@6@q8@#Yzc$O5GZD;X9 zS`li}(>wHFS+UR8(Q#3DwwKNNZ3MI~f@AEm{Ct4ks}va;n?I+;b89VMzA3(F#NlSh z&f+Vdq+7AhXX(ozy}hH4XJ^XnxC2VXN6}zYljb|j^KR{|SF%Q)KIQy2^{yni;+ZSg zR-on^Cl9ei{n>g!duNa<o*uH8YQ%2X6(FBZ!>%uT294z<q%+4aHtMlPKccXs|0MY= zKOdAw<yy11%R(cKGYRzee#v?a)z5wRl<c0CDeymic<a*0lo(xp-2SS%PxI^Q+?+J3 z{E8)wtd^RXxaWKC!9FMWe~<oG4`UEs6t4aUb=3xveJmgLR);1Sb90cfZ(85Z_1UnZ zS=<TiP5JqaD{>OQy_DO86`iD{>S-{bAAFwbQ4id&!GFA^#5{XDF}HK$QIs=55`Bw` zhwZM^gE5`tE{1U-*=rPpt>dbhXNft#YhQvB0up&h;Vk#`Q6Q6qm05|zYhUhJBX#44 zDQY#<BAe^(0hf`6P%O9~7(mXp3r0{(TpxqMB=-UK7usamfzSg!A10d8oY20<|6Nv< z6thiXr!5nlmXDYq4V#<ia{GEZ#l@ZvK-3Te$w=gL@oJ-X@#L$76IMn2=!$@8FZkC$ zT-A=h_;4scR#SpwC@DZZmWzDCKLH9K$gp`|dbj=Q2nL06d6qQbL&`z%EifegN_53& ztl6{Fw6yiJtkYC@p)KV0EvzzbG_8xdjPV1!DSr2?FHm4p<kc&u<`$jjZ_6cRO*gB3 z7X6A>@f(wj6L;55qD!FSi@&1`@aradQ6qTkNBY2SR_XfL9mp@snVHG{E1mV@pXJ0y zLk^y#R6-!<W@diCf2<~J-#p9SN2S$QgQQpB{kb%vozK`gu;(&cHAStr4l`)9NGDTL zWCr`!vZMLxRf?7dTSC2aj%Q}FS2k>DWUUp_Y3g;@{R5;@Hs<a7-?Wn!j?{~U@QNDg z>goB{p(x;iuUfJ$xie&VOD)EBNP>I4pwBwKzTP<Op@8E;E3J;R#P2-cc)-s8=}6O; z&x;GDDHMBM%)O4)s;RHqayu{veC*sXx5w|+5eOIbF+T0O@}F%HqfKiYYJrG7-rm0N z($4B+i60w3wrH@4Iz0`?hMtTpRnTm8WZE0y!VkBUtqYE$70*QKY$KLjzO{!$J-`NM z=wqs$c3M-_A5AJ{JM-rm3P!?6WdqpV2CjugvyUdO?y))YEq_!ag|D#bL*-!4x@}9E z0xn_;AvU84?_NE-WHw-wq|H(*Tx{?5x_8l+%64G@CAcy=<T3`(tiJKhN;xYz!PY4) zjI}AXcEq`hDJ;g8mD25e__8ey*}n8!W-rzV*!u=Gj5Le+Y}M~e{&&aBw((3YF6yu3 zUgmTWv{n2uKHfMtRJ=*0G|I`o&PYy9WLG?40~1CsJ31{5y7nJRF#l98b)!xfclNEI zaYf{2CN8}s8%s{k-2J_JgqVHpp220}@!9pA48Qio(-?|)FE_!jpUBpVi!p#7E*Gja zltxhdTBo_IvWHI;jK1Ohjoz3Gx9glgcjr;>zyNF4w2j(pc~Q<dn~8)0Rhi>E&!v^1 zoS%r7mK5?5eopm^8IyW;112~Nz@I$KGp1~P=s8j9F6}5&W`D`j`pD5uR9W*(Q~!mO zKWp#tApzRJ_AxDCI|SH6@ijG@-%>fWuP(aVz=^T@WY0{=TA9;ZJ3r8`yS~iZ0Zy~( z#w?3AW$C)*qumzTnOir}x8wuXbIoWiM;CAP@UC2u(tS<=rzhCqc-vqI-5hIkk0u+p z*<z2IBJ(yTXG(SU3!RuI3RfbE?@l}RD~)Wd#%O#>F@8YsJW%NdKkQ`}#iEJs^wMov z_RyxYFJE34t`xc5`mz*2Uq<}Bk(90f-!nMoAxHm#_wmgT??H%C$YD69s;b>CV~@Ol ze?Ls0^S9u&(i_sz^lg#`yEiB6503ZrJ9>I7kJBzoOjKNss`z+(O!pEQ(73*|FJAZA z$%OsGXU$(LkJZw#0&M(j`4sSuLnCMw!V9;YWPuwVRHJzMrfD+@Mb{2vy&NK7i}UmF zxbZZ9R>Hh;)cVVXS)_kXiu<qu@Il1|J1IIT>^O)!in;60D~zShJA_pGZ+B@|XLQ1u zmfWhPyn6#Ll-FN`{JBZKAuJx9E7hpuDpb+-liJ}6i}{-h)Xz|P^YN0YDVsWw2Mpk+ zu!bMIySh{bgl2Uihv12=@i!%9&7vkI(>{O+d1Baa{M5A4YgCs0Ei{=}R(6(rI^u;< z7enV6BX9E++57J);G&|Xb#<7UES&g2g67ALig(uLat#$J<5G4JvKWx9$dry61qO$T zsRSOv@=eSP6=}ew{<JZq^V7OkX_j}lOVvx;;_Z%Fl?k!z8~7}ibiFpeuE*6}ImH(f zpGp7c1<e{J&GjK@&#Iy7_l%7s$(^H?qlw6l>*Ff_kEgGWYwCUfRs=*!kQj^(L1dJS zZjcfIQMyCAyFnUhK@dp^LFo~rJBHL4NOw7q?uO_1`|^4I=k?;;JLkUQ9oGev&<c2h zNl}u-X2rlW7i8Ph`cUj_&CFi$0MU%Ur2XS!@5qQnLux-<!Fc2(3q3*Cg@M3<d&+=; zpc!w>gvSyonYr?aRV#*#`Ll|M=2*9EUbFue9Hc@xhvb90JS$EK*3Jm&e%5K_7HzCq z>^`S+#L<dx4zzpRF$pVRc|vKf@81X{4#lZm-W|AIithJW6h9&saB(8+K|d^G!j{(b zE6d-AvNvhVDSm!;<x!F=0~Z&81>ZV1Hl$#+rxIp#3eORlYo9{n7W(myFgdh`m+PHg zuXG;8yW|t}V{Nt@>-k-td@;2su-kPu@~1q-g5lf7r8M@C7#bMl@BJ8*PvVGx@sBX! zIjX&HJ83t?jeZ`k4YhNKsQfc})=@-Z-WyDhzCxqvMA}QLNXLPT`Bt{`J)yqrq|MS$ zD-}o5zG2#e*7X+m&?GsI0dd{3DEsu#fwu;eznq|ig!d4Y&s`Ljd+1r~e>jNTc)%ZR zpG4#mx$moQ*HB-tsH~kdU(xAW2^8(qw2P@d5p1<jIW^%?d3l*fP0B7+)AVaji=K0E zo)8JHLU7k|2fLudg-;B*p?okuJNqqauDtHuS2bdII$MW!Ov<nOld}*vfB&pB0u_}L zJC)Jls5hF13Wg4JE9C4ecxrLn@Ap%YV%{+(oy6gZ`LN#$He^d{HpLnmO<W^3WGk52 z6=MoAp+vOV4{!_txx2Jh(~aH3&@u{+GwJN>yGt&oMEL1S>(ZHXZVcXdsdw=~Z0G{9 zOPt2w2Ho&dIY{l%)J^rdz1a<Cr=_no@lWS`V_=X8q7%Q`VLbj&Q9d&MrMBPiA!jTE z8`DTGkV%u)+LFkYbRRqtrO{mc^+e``3lZ>KcNE7=gNk?(Ii*7Ju2(t+I#85T^7U)e zz07!^nQ&Fo46x%bZ_N8VIb_{u$}k;fsW|d%(T^jo#B0G!f7icMvsAOnzj?X(vIRt- z)q++g?C|DE$vC_Q0`-wM5pbr`I>m@|?r`Hq?z_7p7D~-85NH>8Z{Zov0?-pw2?|eh z_89Ovby2YN>?-?2e&}YKuF(ErQ{yl_(?Mq~WtgpLubF4UAT1sK7CQv}<+{dj;kAT7 z`WH5+^_x}mS-!M{iQtJY`+(}zi30=Q1zlCpyjjWfC9v+bUH6k9GIGm0rmXF!04PJz zSx*wp3mK`iDpYH)cYvs)H4|pBM~X_ex;?U}Dmh0n+zBlWrc<6O`tV$@JUGwl$@QaM zV3+HW9gac{qpp7Z>hyk$KHk^vK50J}4PtkIQ@p^g_?Ji&^K9+64OkPPd_1LZhy|CW z$wB$^t+#<aE%&!v8TDb62f`e3LKoXhE<bh+E-}{KY=}ifuf8zk+-GF2Y`O8r#c_!! znEBJ+z#iFcyDZp<k~#bEfdEnQckTcc$rlP*KE`kf8GhxPy<p?WTC<aRkikBD)q5iS ztpD05k7c@2yVpW3G0eV&t9D<sgIl+%C=ZXu?3p5vuYxuGjA-a4i<l$oQ^=GxQ8s)V z6E!R}99kK*t^{F7@A@^HhDGe(f34a_N1IJrKXu$?#%i7&TmNf`(cu4r!1m*nLDLLp z=goA-02NS;<lX?Wr7Rew@GL&s4+7cVy0RHwyI*9ltxvKROg{4&ZzQDCs^rD9k-yM5 z$}S(a>zqN+G$$l^9WmJox~N^)P(IEq+?F&~Dw2D=qr=5hinW#lfSbZ33vx(fE3NvM zd8Kc%jK|-$!&T^ui^lq*zX}KlY;WJ1fz5h@3obt}Z-|e5(+DWnX&|dEifVJ@vsyco z45MZ?Vza4<J<{$b2u7p5s~00<b@=Z-Jby^bi$v~PX#>)knIz&SHu)#y)|gC7LC%k} z{Z%Mg`eL7jkJ83*Gudm$oDD36wF2q>8%1W%vIHajvg?)0g%Qc*TmA+{V-gej4)^L- zBCplx9;QdAZ<^)h-(3}U>K@MEMT^DoI;W%RdhK;$I5HgQn2g-htNOYRZk#mP!(eBx zWhMK2Ac|>_4A2@&F?B`mpb$pODUa3nh{ahZIb2Q-dyk=Zy*X@E-5BfoWqrR;D%4$E z>yhE};#J(1hX!yj4~!QYVvbsMno51d6WCq2wZQ9pP;px!rgll#`7C7OmfFZD8}#tu z?Q2huzvg>sMAJF4Y^y0Rs9<trOW<I4ST@R~%l6lP4BkacSy2=@-%eBZSDk0VwvueW zRd_Y?V2<f&Jt~-0IPYO|hyIvVrfw#LmSol@P&vv<AUpX6*yZzcD2`a2&rV7XWeeRL z%IY!3W0xL%&s{4rTu@jlo-AwgaP{y=mDb9zjsN9w*APR+i}KEOOD$}^<WSno9!DT? z2#9D?-Sk(dX0O-`UasbTvzK`+U*YI}JaZDJt-DtCj%s{=|7=$Y`4OG^joy>Alh})k zOOB-HS)*v$u=A%ph~Ya7eqLVJx#(-S>4tdd8=IPA(q%nu?Z2UKUcf;el@OvS?0jbp zev85C)1a}PQ|}}1VyYf#%$l=VvLMJjm;GR3{?Z!)9Y7i75m5FW`R&}xFx+I>SDKp| z>00+Um(|UD_*J${u}1UF^Gq2hUVI5vjVONL#e`D~6(WwRQt!%`v#H6m7Hu8x^p@<; z#BPunJG-j{n<i_2mm@>XIEwzDsHCK3pt*_vNH=yyG{*fZ#=O$Re$VA_M6==9knHZt zO6Jkp;gw5K-Xk-H4!IH(0v40Pw9^!K?|!r*Ca{BN8tdutine5`2!>9E(OR1#JBM_o z7ikcL>I3u<j@g=;x{_Esgtnh2oM(i)HPGcI6+xNxeO#4RXdXP2nBQK<_1@k0z431E zlugC+TB?-$x*JMe+ETQKmZclP+Z++q<)ecZ#7$`*kotGAY~|yd2YBoH#<}%qpeNhd z*>e7J+t|ucH`yM%I6uE@C~2!_;GdKQlIIJkx3Y=Cs|&xxE(f38pDBp7=R(Sr?5o2~ zOWopaA(&8b1Y3;xGs)8>&VUZ>>pa}{+$U1X@?<to*2YV8S-;h!ws7fH9mKtj<9kVX zf6q{tz*07ZJU$%!lr2x{S^T4cAT8;Nckg&N&@&9hMVh$nhDO=nsfKfZa;KH%BTO6n z?P0|mO?A|IUms{;o>Q<ZEJp3J#{BnQOmpm94-syko<}&`h!ca->WFHA^zX^Mw6o)w z<b_%x&x)^gye$?v7^Fva?$53j6wFpwL~dK}iMkF%h0|s&Tm$j1Td6q%XRG2`RaLc+ ze*D+3GN}?CNhb39B0H0WO-4_;OxxQgv`&}w0l}#0<wvJSc<GohD}>9ycNPOe{M8Sd zj)Jy7cOCz{(Zr;p3>s|tZO6}UR?(M2t_TKEGZn`MW0oviibt%bv|q|5X$1C0W!rm= z(Gy{;UN-`lshu6(|M%<_T*|>hNMy#*(bqDmWsdTHeRHe;Cw`Onp;Cic0-jpZ6Yx^& zB@meb2b^L4H{u|sWDb+Ku}c>SzoWy==Mz@)UpQ<P_Ch1h6;>U6rDj5q^|QvMH`p*k zPf(<{{n?B6Jkz;harDa2M??iV`vVhN*`53{PAQ8LyGf9@=B2+|bi-lz$BG)nLw$Lb zj2V10*H<oItVa5lf;Sy($(MA7<O!@4!TcGZfq~EW*=a2;EE*+FYqd2(I2N@L`y4%3 ze<c5gDQo(?<<U$iKR;h<v9J6(WP2XdB~&(J^7yXs+(%%QmX@}D7kO0gb-dKMOEUVb zGx%V7+H=DftVc+Avtf`R`-zhg1?_^jA4>HntjyEK5#dVllYgn7lp`Txz#<s``*+6F zd`<Z@w@IpG=?yUB1P>KM2c+8mZ$lK3nh-ggE@_E8nBWlQH<Zk(MM><*ii_~+OGtsC zK2$hbBZ8JIUp3NLGnCXt(3X>L>Oh<tfp)1jaTvzsnXdqAF8U5#rVlDfJXQp!`n^uu zh{JjRny0nj$aP~f%%-B~mSTLt6abTH#ZG^_uG6sBrNK9P^<mq8+Qyt4U~R6Gs&@cs z8Z{Nw0*Ia65s!1YDnXbn_6>x&ygV?Q{Dt<*tj}sO*(40OS#+GwGP8Cl9nLXOoCs+O zP~xLAVo4L2QpmfwK)=iYi%U`AX|}ldTD)e6Ayph*6F+exQ)Kt%%49DJv`ZXn?V|_t zm_am(foPBDueY@`qPv4_tGvhN<5cVriL?yCgra{?3S)~h4mKP$7Xh3N+d9?1WhZmM zBYlAu3QB2iP4Nilr?na!Coy<iblv1dtt)~gW*YrwgJJjCo1e{#Y#wWEAC78m=-0G< zjNLxi+T!+aSrZ*wJP5h_LX}e}Bp&t@(okRNybg9DU6F3MSJ!$Q5i3hG_5tkKwYzf@ zkGE;`twD8-za+5HUM$GQm`Hr0Gh`y1A0j6&M~|AYY$D2HutFFtHMO9kWSzd8yaWv$ zy&3Z;sjvT@CBf7-zzEvbuEwLdNub@`VM#mhi|l;ySp#l$T!anFRb&r9*U4B{%i5B~ z6X*YRtX%fmw>}r_aHfwCqGGe^h6Qcnj=d>78gbFC9~XLTptu`0HcLOVF*Sua@$gFw z)@o@LOS_9Dt3M|uq6P=EN3i&Ig#B)BYCqQ1waLEhco73#k!Bz;#>6DOUvvA42}3d| z2|3uge?@G{l))_~ra?_7@_hFvQ5$2VhQ0pu%;g-~M`3jW-B{h*pScTcFE4Qi1bxP> zE7ZVOD<N#sc;(yiqWa#2@TO9Q7|(Lp=@7;7TY|7*{$Z=F!tLlo4aJa7wB&s8Bdfu| z!GGgb#TZI&h)vF6(*?;?4mkQR(>0+p>LI#uVxP0*{lpuJVb2A0fIs}|n(0qjOLb6m zaHAjhU|^}pcBUA5#OTy5#6qCuw`MQa>e=lvSkHpaz{KGry2}GeY~Y+ff5@jnG@MbH znMSOCmMIxZ#>PB1a{HOFhG|WKiWgV)gGbW#cB{zSUA$qU&XaDe-SqVI-!Ci^wyo7e z#GNo#opJ~^$BI4Y!sz2**svbFXiDnC++@P0p-^-DZ-04AgJLv;T|Pk~#Bp4>Sz?{T z?96C4zZZfSIA|X^tQKT6eT$_~_GpyaER&R<`rN6tHL-6<tSnTaqtu6!Ffg#n(m1QY zH){Vg?JJwi=fwt<tq7hQF51IWfh#J2V*U1>P+qe$N$9<K-K)H3+43&p^=b3Px!oLa z-(bzzw(g0sv9Ilmg(m+4SE2QFUO<MZRp(LF4#j$h!Ibn(I57b)8oKU8EZ2-A0J?cd zTs*5;BL!xbfV4IyN!tmZ;(Y|V%atZpJ1F6?*{*&D9buDrak0?nRGD&bC<9XuH5Wha z<YS#JU}o^Bc=j{-K4*{+nl#+}hys$j<{Y+Z%@7MG?814Cab#zPS*iWn^}e!?5Kl*m z@Bw#3?Vk}d%zBr81ImFYto_S9`3!+B-`?Y6jp>R0atl?f;wd{Hhn$?T1(oDhBpLxj z{)0Gg4MoM(9jY5Ppd$uuAsY3uJGnD&EGu5Egd*wnk?%{4`JAv$9u0xGI91;ECkGW< zn*Hza%yNaLWi84JRop5cOrCU2*7^90U2iFLyp6Ga-?*sDiI?&4VW1D}1n(%m&+L-1 zw@22IfE>w#bcgOw!l8Z_rw<L8f?dMbdhqb*fx!08DSSd$fTw!;a@o+Ql#3Hzc+>fy zt^?<N=@F(7jy2Iye=Ih_!E%Ji%!o7OnR&6M!wJLZ7h~6A(dd{Hxy`KPS*wMj@Oqpy zBI#df(7WUc%_(@dFG&#R9{N0+r|o;AED2ez^K)r+AwR*Hxias-sDh%aQ*v=Ce*EUZ z^07HiCP}gxXZQ578$+<C`J#=OnC1g5V~I$omiyPB|Bg%q|42>=X2;=j;&FVUemg?| zJ}wGpsq4I2K?Hu6brZt}Ej)tlQ@cn3ijha>=hWh{m1A7BdlX$@aZE!k&G~#eD)QGl zX3NJ*?gw=uhF-Vd9wiXd!&1E5-3>D`{a>Rgv3HO74pKYDj#A@UOC3bW??+i77!zbK zgYr?o=_aEplpL*!*W=7Ljbd7r2<_KCMb;u%Et=%_FL9iS*ZZ<#3rA8<h|rw%)<34s zZyGLzrr%5)7KeW?n&~<^a$CDRI2|kaIjf)%UUKGpC2~fyt!^ifjr&gHwggPL8kp`% zuP*cMdP!28{RA89`!5fz#pmKOj2K!On*ab0t^*U^U3A>z3td?K`MZW6Jl1BTI9S8s z$suy+?c0-9UsM&7K-je<@ShbVs+?3Jdszx2`psx=i&N9n9VHy=3Bu9C_FL9O7xdbc zc+aufBOd2`{QkZ4NVgm7C@E>~Bw+tb`Dp4#wVbAL*f+)E2cF+a<lJE|jiL|7!@|}` zyOwPo$~0F!N}7mNoPxJwPcedZ0Fr!PGrTHS*7ih`NiAR?Ru9v5dH3Zr*6G@dP91YE z_Uqr*jkOPi))sy(0l@vUKW&z59Xib>!Tni*N}+BSbDm}D1i@nJeB38OkMZi)ob)0S zW(|sv-sg>1y6U$ESGz+410GqMxh~?ww^XO`o120DJAusw;`_V3r8bN8=<HpB1p`mR z#_>|Q=SbV{5yjYLfByWnZhh=5LzPVfP&C*0JWY3vnR<73f30JnqGzBB%*peV&KhR( zWHn)cYYwmO@-ndClXIVy3uAt`BHlUyZVvr)Amgf)$mnPvfx|*gyrrvkPS*$I-p{!B z7%U!Xp)D$Y=GbiNCf`hqW{4MB)>@v_rb4i+YuR8|a3JRN9=t{rzBg$Wo3H27sau-0 zsK&QNvVf*Xy%ruPqUbey8~wZMCDW)uk+S}2<29Oi{X#utqVvXJ4Y}4@c;UHxsmaQG zQcvu&w$QrU$~J#Gy3kUn_?KbjLi~7vrt~ebU38oJ6|H%mj-zChll-ygDb^yhzgS%C z;b9GFR{WxdLk9b4;EC)5EhfbOFapKvx`ZZx(`+E>!1@i)94hKWKLe@r>{Y+tB!C$n zWzmW06J|8Ar+ld$L4rVqZ0qY7d!vizfKj60`WW80E`t+Y5rI74TXbKZ)GKf0%&iGG z#zaua2(3iOZt2={VC_;cfy%vU)x0JHcITXLf44dLnV7^EXvzJaCw!k-8_&zSZ8oH4 z)Au5uedDKkr{0=Z;|ses<u@9hd@ql0eI0JEzwRK%JWA&ml-+0Y4{jsAKEy1Ea%g-< znOGEFR@Aqs8JgA?C{J1Oyz^~spy$M`!@7iu?`%pqT~ILvjj|pa+G6Yti(MTU@9v^B z05~($T8gTJCuT0a%Q@yT41Q8}4FJDCb`B2(>oYfIcDzWXrNXDORBEgr@h1=zdS&L; zV28R)O8AxbyxWcJ5GBOL+;w4338Ek%C%}uTF}Z?92NF9($|cVxxZBYKN}Y{QjQ3Q} zGUcVUuBB9`PlP6-EZ#oQGHbv4&9mPUnDBugcF)h>zJ5)mK6L`kzDcK4w7U1L3**oD zIC8^#`J6%YrCBO%Su4Tj-@m!dnb%q5{>RYVC9a)1zDT}|<zTU0DRZJtMjA`tp+KHp zTpacV#`vDU5MTl+$dJ^~5FxJhuweF*SLccR8E-ru`<K|Va<0Z82sv(f8H*XT7QpUh zh#k<P&oQ+2DLK>5aJ1GAe^i}#UkCU=o%mAjuEvp&{!8!ci$YTi3zOyPIEp37d-m?f z_U)##07Zst%C>T@V|2^FkqUHHWQBzfyW88d;j(@?H>fyP*2bUv2=xBOF#H|CsT0px zXT-t`C|DJb0E7{RNmeWck=FLBkB{LxQA>m2bg!bA-&sQ#JP~LMNJx<n7_(CF)Lhhp zvKO}$N{c>t!9@%11t7YlaM!%^b6sJ}qOtK&v)elL4h>>sR=aMYq@d!D#{bKL`4K;` zUuxg;2P!<b`{r*;N}80J9@V?XvtY{a97lb?T*=c;tp?T@dl5dmni@FrD*_&cR&*gE zBJlf4MmQegYjU!{21X!#qzrosVr8Gq-U>6vdwYe`$Iw+5L=`J@swMWbl3`N=47692 zE4bbOxH^p&!<rdh!rK`Hz}_WY=V!CCZ*dEOVQ%6Q2<>)?rGMHAZ|FC1#Yu4h**dX2 zQT|`I#4JW?FQ1++@f{_pZzUvnX6fuFD#U~?VyNESJpBEpYq_;jRAqPOw>CxyaeU`t z9e^@=N~}1b=H?dsXtRkB{2esK#k&olgt>qSP^<zbY*JnlCwMWVeBz7=M}|Jl{zIE% zs4-4c1#%?L9H6jcw=1U4BxUT#wh60EVPXf}81IYCS3;N-0ro?OxT5d=k=29D4L_AX z?DDqD`VnnoQ&TzHnk13K8qF=A!24!?ewS5W|5r{Ywvcj&L3^C`!>}B6eOP1zd#y%p zF6n~l@n	J2*1j<AeN>TnPRiIQigf%$v#iBe$YU0i<`adlJ|KCvAQfibwEeeu7;9 zRe{sSGi5e(#uO?WV$j?&Za``(VthXm<ph8Dx84b2im!@UX%!LaWK18b5w~PbL7vR4 zD8n#a`Um|*IQ}?G0+}71K6jWZ8gM?)HWvCkz0A;4JY>z)aLAr2)=lOPNl2s(Ng&`5 zo4xJ{J_Ya(lA6?)_hJ)>8K9h!Q*VB=Pj>)C@+g)F261>qi$3P-x;&y7&)J3BDnKIk z40v*6;|hHQT{#Hxo)h~}43J}t@E|7au82>bhRRYzHy#}toWHYHi!@vN^(!k#RE!<| z3&@Pn$^>I_M8PbD+Oq%Ch)Qa`XNrkg4>@Er(r3pUG-y~;5ja`ZbgCnH6Adg{cD()l zda|W(P5Xv_aSdI07p{CDoYQvp*RzzrJk_?gu7uS<78kddk8+&lzr7Orabn+)D(_`A z0{<lSGp@Dk*DnW~u7i3%-C3-EL7hiHOBF;}UUsmqCL`9#wln{yE=fMPX8N+%9M{wt z0l(}&i?;ueAb4q?Qu_dYAG~cvmzYI`m(f&M;naQ36s>jbLQ(u_=&8<DwT^Tmvp>O5 z#0qu3Pt~j9x1&=t4(=&K$zl(`+BN4CADjC4uw0AB2Ov$@9o&|hj{hr5F2G~PI3Q~r z20n1o=ul^%fU@!Nh0n!QLE+3rr;NCKynMxbpx5_oT0x;y!10BJvQ<L>SO9RHez>MW zx~^wy6I(N{n8v+vp-x*ok$jY1+f#%T@t+=e%d#qXe<H^h4B$_9!1JN>RyPrg9T`w2 zRT5*udqi0IL)J@-{G~tg6SLy!&$uTU>BSlt3+7d16I;tYp|dV)%Fp{IHFGsm?ISI! z+k~FY;0ol58T<154`&{kSax`(8)uc##*A%8A+I25_E!FdIHpw1q@0%nyf)B%|C0Cu zu|mw^bvthXLrW%vptB}EG={6Hp5h<j3w6Lk$sY-=I?1pb2(tK@k&LVw-?uSev$wey z$xV(^M`Y^0ugDc^>`wczIuZV^L+6Uq)?NO=8rG<s@WjA<j#@p%L>7W<c_A(17<%;M z(0Vhde(wbC&}E0_7r5TfXnPB9Z{8aHwKl_;JcuxdR>Ve6GS^kc9Y~um_0ieYc;Inf z1IxxTA>LICyDRh3wYK^!fYI_js?il-YwCdKa>>((wzpcHEqRNI&-1+8!xtQPw*0}w zATQ5Xm#X|-7ROLT{*?;(eDPGEw?v;w-<2;prHYC;MbF6a5BU2v*>N9FU-O{kT_NPo zWAhqaU@}f3loRLI>f!h~Y2ETAjy1_p8C*~3)tl^h1O{vAp9Sj&W{75xQ&RyAs4aFl z&0YK>cw)~~ZgiU}{=4c!eHE|HpeW=|OThKJhG#wQ_=xSfln|ob5ez{P9;Hrw>un(i zVZ7ueb*U+)Qk_%J4@S6vG^UTP9ReWhjnEAO$i`UhPL5#h`bX9+i>AEgpz?I7l3$&v zvAXt5+la{Vd%=*<Lwqyq)T7$>Jhb5p#8zl+@*E%!+0};P>U`k){1kx1BP{?`#eR#b zuWb_oQEyW`X4i_$CfCxk%sjmeN0&5c#aP7OGa}qk1_A3CtY>o8{<6zxY1~~_FjRcD z6~OaqAK3u%q@$dGMD>}rAKUXYmz^Kf=s54~ixLOZ3%=AIyw|m&ekue&t3bx2GYs{| zzLqLUPqzSD_rSLfC7N(Je%sj2nZ1cQe1CssZ;vZ}f`kSBP<nNifHqn`CO|~wa#Flt zr|{H84-;x<YLbHepyx5Hg1k?5n!0ZpC>Wq&m4f4dO7_dUIO2iQk}->7$v5E@8Uc?b ziesJ}RYi%%ZvVsivz-rO<x^kHkOZ-(jbyDK#@>bYEDTTr1p*OFWF^S>nOm`L7zW$# zeEAS1&N^+C^2PNsl0e$1P&g$)@>hF%tDUhg%k|6)6I#7wxd)d7W)wJ_T{zf=0@69y zFcwwFhqcBottgu+qG+;eesIqSH`C|j^h(V}GyL5SD@Jk`ri||3G9Uqo4si*UXQb=B z3ficz*X7~mouFaR7Ec+}3@<%;nkwA}mtD89wyt_nP^qB&gO%0Sx`}>foFp*rzZ?6G zF+s8uhvNyb_$`^dn)MNA8V(Oo!83MZUYf%xEh)cE0M>Q}q4-M>n~yQh{lvNCq)W?h zEd~7k9!dzitXr@fRIs>pUXn-CV#@emvy5(YYoc_h`?pj0&8*cw6X>x2<gqm|`8j%^ zIreH>yZ&kM(wVekV#}LQW5#=fmNGq$P6YIV4iVH94N$x9@+Q7!`92Pfx~dWn;olDr zJKYX@c?GiX)KVKifi9h6e4<r#;hk%9?dfHgfp$?G^D0I!P(B&zZ<3T+!+Mn$gZ@Bw zFvh;D<nE4--ztLqoc)^8r4#rsMC1QP4pKN;0vo6ziJ01{T3GYj0%Q_~!an^X8^nSZ z!0bOSC2O+AxF__qf;CaVE}qmAf*~>-%Wev0I2z}h+++d~IYM%1$yKu0Wc^Jdbbq-y z2{{uTT|ONT)#D)D7YCPWE><lbyXRdS_E~;B{4Kp|i7SRZLt}p#qg=QRP4n@7f5`|G zT{C$6>HnQcXqCGcxe-hX%J%RG$gIOtnf)Y36pP2ArG@T}czg@I2AU!hKKQ4{bT<f? zpivOo6$tyfcFpzH<nr<}@CvcK7m+my0T#sR#teA_(Ai1Ly1djCVubyw$j5k^WZ|Vg z?(t2B83TwPQAaLiKX-~80itPkQcWqA#{1>SNM_)dd*o7(xQL8?7tvKq#l#-vnlT#> z51z~intG*000!e7BUkJ)P~L9tF9sJ9ckN<Ywje4?=F#0da&y#%^Zr+mfyf~XE!R)6 zh;f36O1@STN$)CjXgYhHeKAQD*%NIBE_b1S0RRc^=8toW4H=j{^7Op@#EHA<y*H~B zB08Jw<Fu!06hbVOz}dkM>+P_TZpre_4+(!QRNz!Rx~R?n5Ea$!9cPBi*C%NCG$C1@ zZES>zDbKZ7e(IpT-rvw^C<p?|e5#li`i-o;h+59@mB8aCui|W<pe)E-hX4L14hGj* zJue;OpU##N7)27-F|H!ecx9~k8<zP09icWhcK03A<7oaEx3sQ%Z*LW(!OqkKo-@T- zyVFPj`t#+qP%(9#razAOprYdO4rkbY_Z(2<Skv9kUw~tN;P5`_jdFfWokY#Wb`;O{ z(w!OSQY3z77wle-^*)EBuc#0q>cM8Kp*bfg$DjUX+y2%J*L><9;co3b)WgKILb=v+ zsU2|J=V(g&qYwpc_00U9z+;3R!)Jwg?~xvlZo=Z_@87S{r{1A!=iap5;ur$A6#wHx zHlC_KP=H1Pih@r&8QIK$rW%MmG7amV{{HjU%q~(zMuAl0h<JFoKgWq!OI<3Wdle9W zET4Hb4j&rpv9xt+>94akt!Ou*+HHGz{M>8sM|pHlmY2IG)D#_hbnSQ1>6sQKKUJ*C zlfh2}PkCa#J3nE<H*;g)U__;8INYu+aLI$RzypcQVjpdWpSQ3&k=bir4{BEH5IZf2 zedN+BJ^I{-0tQ$9iT!)hi^hb@rj<<+%17SCO~Y4?_pD#c#QFfVG|3Fk2@z&E&Q8$w zd*4efP+4mS@Uhra_!`#EeAeyW*f10(th0}gqfqS)JH(+N`jNM7)y0{z`SG(EZvQrO z#gC4;t=OKN%jTXZ=sJkU=$|*&Ek=fJkhc`k{tUWu_!f$Z;@^dZ6HY<Ft%rx~VuLY1 z!u7038(JLl<>$@L82!wPle3=8JeP9UEjzpFMLN@bKm})<avLVtVlXvv{C91i!k(R< zYy;wV3UX~gh2~HCyyjt?nlDP>x0N3R085=1P6$!qWS*s9?Mt6ASg6pwBZit7Knx%* z6nR`m(v^1LPN61bT$OzC)5?2EaLBoDKNPnbb8OSrdMT`&!c|6wC^|5<Cji%sQV>;_ zw;!}GELuq+#9K9NPuir!7h}$?l*pnQ)AH1g518gx_UI_SZ5y;p7FrBIGz7XEQ?jlu zv>e*1ImLpvtZuTCQRzHARwdv6`@O-Q&m0_Xej6s}t4gTa{0P6jIX>PMi8cPxy|Z(> zqR`=MXXj`1uK`?`3Fo6A#&}ufZEdxRrLOl&Hxu(Q14J&l-anqu5HU6;(7n9ub0IG0 z|3a=~KeUK3M%F1Fi&9$W3jZW<=)t6gAfc)$w?PtH55>^n*vPVQJ7oGbj*WSfKnj^l zJrBD;s?&~i9yQY-!ixA^A`9;BgL*dDJPj2E@ZhS_LL>YF51qFPy;D9dHqlX3k0_Z| z8<)aA1#8(gzI!(+JFgk-W{8A?nXnNFcSj4yx}We*%6JL{$A4XQcmB^f=J)qg_QD8M zJ<U))u7`nzc)E+;jL>`pyZo|!0Sil~Jr@%g_7AC%od()RH%o{Vey2!Y*hIqhPhpQZ zNgAVYo8R#)-$V<z;|D)>%bxg>+ti6<!I($#KN^$c0i$!v-*U6Zr|SO2OmX#HJvvhN zY^|@ax8Z8bcGpw&s^(KlG^8bv<mKg^GbTg0NNW+-;Zh@u&C(yeBQEP>vN?1Xdsuqq zm;a@kzqu(x;?OzM#>b~DGKC#J14tW5pP-#Fq=Wt|lvtpx!x-I}JCL-kog4m7px;F% zP|n|5+t)i`-69oda>iEfHFllTQ|DvozwF)G(mnT`QRx+tgJQ^X{H|t|@&^QT-q0MW zPBj^)598v7{SX1_ecdM|&I@lPI<!$S-7pI3hgM!d_x4H(QcLr59iCs2fIJmS)hMsF zSR3;VUIUaU8=tx_H8&fsy;7uyL@ViS1eFr8LnL1jYIQq%3x!#^uG{2LmDtqusSTWq zq8n!3d%4TD^}&L`Dzn_}=RTtF=O3BiGlz#sL+2M=b8dHlbiPR^R{cL`lBbkQ#LDGq ztMY2Ff`iw^&r4CF4#t@8Gj)sIu4MMwNy0rY!{g&PwarQkA}M=o75*fBtHeMD-{Q|9 z_juRw{P>EWX2z9%vB(NaNFemr5Mt<}Qc+!<ELUajy_N`U8jEpXKVi~X1xR>Hm_$4; z^XKlH&!^e*&f)vKOC{7jeM^w^D&`FbAqBp7l%TrQp?5g?-LayP31sNzeSfIVJ_SN| zrUW{GL*`=kvPIFf)RLJ6O<;%2h(DzC@8}Hv?@h_+w*gv5m@BJJvEct96io)N)BYab z3z0o7hGX#r|2a5l0@@({l5+P6?T)#*z<k(aA45#;@rl6om}eX#RthrCdC_KM_O3BS zy}I4q-HOgGm7BIjzOs?=W-hmLCy=XE$?+T}&hM(dv5=}vwQ#)cmA$vP0P((}zOcX< zq6=%AwwcR6{6;-)Q*dgA6nGk&enZZVp*br_B%y^UaUQfNdcjpO{XRLQ1f9vf`4yoQ zi$7iZPeLRl`mnBFl40if{M@90ICy(D9M1V)=fMm1!U=Txw6cO|W#RWz_ot;uI#}v_ zA7|kgNs*0U<OBIX`tjP-%W=2}$v#1?s_Hp|+%~dCsUeGRYmB8rR`PN(QKSs=J3m;6 zh?a!q0uR!BN+$d#4aq@YMmyfPU*1PxVE|Kac#4K)88%G%oHWJw>OK$ZC}m$;npH1# zW5o|TNcM;6D0cpsHYO|8xGKZf9z40a#?k4n$3_SZ=?INGxAbW_RKNIKgz7p`Z6q^m zI}}`Tq3hk<Ed03^g$j09IlZHzM=Ag@hh7OlKDVHk=XZAAhsPhJHq(vDGVH)-7H*jg z&QSKmR`fqG<OE)HprYR!#jAOV*6RBK1|}{QRlp?f%K(56$!Z?5(=GO0U;~JYb9;81 zeT@CbiWLCRh?To25q)AV76zLP@B5RbiEBdqS42XBUyxnwEiJ4jVcxTtA#65^XLR(& z#kb1@vpQ|gNgCML`8P(?tt%(Lok8#gFK<#$g<PGD1LwoCGnzona3x)_mHR>-&VnnG zq&d&!zPa8I<vn=x1q>PcVMa%9Wl%oqQj>D>$)*vqJD4HjIycCD{2wK4O<K{r|7VaZ za}Om8Yrfum$w_~(&<fl4Zx9Ssbine(nW@N<Bdlvyx=&xBy0d$0O}`h`<w2W6L#`mm z3GhA!G4<NI)33~M&D0=<TEWn8#bY5%=}ABbu*UPnoFbY95VyPvk&R4IGZ1~zm!M{_ z@9Ka`Yv#)>7RVoal}7-uZX#v`X74Ayn-M-eUVp5$=Cp2FI9N13YM3meaegf^UA)ZQ z1q)kwEk6Glk>S@=54FpM0dgH+4Ij_YC$oib-7kjXts7kEyh!gp##mfVh=cugDKAF8 z#@6nwt7#{cCy}U{s5$V~6J)+aY_F}Pl)llCX0IJ0BgkBPJWz;E@gT!s6tCr4IkD=9 zUS3~c*l<T#Me$HTrFsHV^kCxEMl<$Q?~ds0<YB|=<>iH8Q`!m5_4TiU;^oX1JRlp7 zWF?D*ccPKdF__WmN4b|>R-HKS<YbgXpL)H&uQRg#(O5&AWdIls5<Le*j9@?H0((`4 zkp5WwiWKFaruBfeo@QRE5-88|A?a?t=*f<Rth0y5?*Iug6?FT2D))c<Gng-iNngi1 zsU>?A`^UUyMgPg+9#;r?c0#8#;3%7dn-GxOYXcKSRBW^K(x(hnC}X1KN)Fvhs)=o@ z_Zvop<s(^i-)V=U1^>`YUp(O{axyUy;*d*TiW4nLz<LJC$wzAuXahF3lTdCS8QpWS zZ{UHx`*Z1x;2K7|_T9dOaamS3lf0Cpj7iT&Mh6ro&jYdmM@$@au)XN((dlJ+Q4!7? zlCCBZ{juuiS0wQt$T%vTSEOkBW3T2FM`zB@5pHI*=;j^v2X|(|e6^R8A@t-d^{B|` z8bC#ziZ<Q)^-Be})oEX&wtHPPiwltFv#0e~nFQx#e*vW6rXuLGMcWtCrbcEa4CJKR zg7l&04>DUwXGrkWsT&_z$P%%0y)keD6#{~eaGB6*#yVmGA>zf}*7W9;?2<SU2w%EZ z<{NS|gbNd4P8^Q?-0bQ-P|)KAqkKq5!dSw4hkCvBE1_0B1$)gaaa~p>=vTT+`9w{< zV$P9uYmCpKvPCBB>Bado7YN)FetARBA@f6RsfGTmjJrZZj%-B)=#+P$k_MzABCRT0 z-JkzeLx8<t<5Dq@lQwrce9X?U@LK}#?WxUip{%IM0aC2a={DHZ7s<4RZyK948+F{! zIDC&BWF>QSJZ46;r3YNEXl-iVBCD=S8YM8n*f-4@{|HwjKZmU)1F!5~L8a+#hVsV6 z;DI83JId*iXOW)*x9E6SNQH(4XY9X6eK5PCZvQ!}ete!P6?4<S)MKHV5CwmJ!WyD6 z(h2OX7!|TDg`-+--Y8wZI4BcJ2A3^kV<2_1GygjiB}nFxFVRKn5xufIa}Lvqc=<Ff z_Rb5II*T_}+&E#wBP0Z3p;D79{sBgWGs5MHkh;n<8M8#GOq8b<J9)HUC~S83NIOHX zdzm~IV~qbk`A3~e8z>?0isZCIRZOXMZvx;VEU^-3Bmf&Xte}c69z64t5EJuf|NJC~ zBu(J}sg()O-gMYh^<#)*!>&7GBmRbgmLN`)o{}T8*EpPeqj5z&<A_<bWAnWzYET%C zq&SVBctEirKiT&t`RI5u-nOO&Dx8k6siH0`1J514ZSidNRr@a`Ka62|4`I-@V^Qb+ zSodv!(N7cv&@J2O6)upR1Vga2{_hnq?aWZVgG9)<#K9-5D8SxIdFE|$y(CB;>1WU* zUu}vq2G%Ccp4+phv|!^IK=EhC;<|N@*UXu)VA^Mu){<bOv9|GTm@VF1IDLmcirQ`A ztP@yISqzT*XsqN{uvG4JlZg19<#{`G<~zo%b)4N_YQQ<r8ftU)=-mJPbF7nt$pKB) zJ%RLjEz`!R?T-@it`n0dw13MI$l_zpio@?6@@w#Gc6*T8J75>(quZUo85(WIk;T~Z zIrHATTv;<0(j2~a`El15TI&NvJR3j%0fjhc7f>XM!#tI%&QzYo;*IMo%+JH8Hs0lm zg`;Dm_c6l&$uD)*!r&m?DAw;f<BO$EiD{6sDqeGj4IrOa2JDI%>Uyw)Tv>5Aah#Cw zw4!H(QhYam@(kdTfr$yMbme-WtQjU%b0D>RifcHvQ?I;i3rPCDZd2}RUSDE5>KZjg zU7ojT1y<mh%V-gzU+xwBEkmZ9`p?H$<RiU{kW@UHyYGr()vkBIYTl>2E(y<D9}W~u zZ2c)n9^#MyeU6fp-M!uY3H?(!{Zb>mprLi+s(CYO98h_Cn|tlPxb`h#U{~y9z|ex~ zb8wb@AMbwQH1-OyEVokOui~ACp|#U0GkC`%u7o-Z#W1hN>2j7m$^H5}ns@9|XzHp( zMFe9)hjxdbr#pLW^^p)&#tj@;oFLk2DCw_5+|>ta(91-H22yr`nYMhJhP-3+4cqcz zkvugJi%IO<a#<Yq2$<$HBGE^UK+@?oLxQZ}ymMG0ZC+poHQ*}6jpH3#=sq1=RK;u* zM10N6Y~*{j&%m_4bK&m}*)%9x%5A(kzgf^o|0*s3-py(M9#OY@i|`LDytw7M@!Y*R zJ-G=i3I9$M#1>4pe`(XHPFPVRykK;M`Nu9dQI0BzeTeehu0x0!9Y+lBW0<sP(Afk$ zWtlPu^|DNz|D8J=Z#T38$IRI|<pTnR^5FT2qe=9<BVQmy>}7S&D$HBf8BlKkY{?wf z%Khc@HFnNQup1TO*avDs6{1;aB%gRusWwkf1lH>vX3Lj3c`HyHJ4<gV`|pnWCWap^ ziDT_!_vjX=?tMObTeMV)V=r5=UUpIt0heA|Kx#=VjP1QW=Ut|tG%0%#`bP8_zK0eC zo_U_ukMM#hy`{pNz+IV{mRz;xw~i;_CHSutr7_D)^XVu47Twp3(*WF-+eqfi4HS}@ z>HojRDB^$CH3F|{H8ij-OGcM|vE%&aCVRs{dM+L>^dCPcOH9sWM?_W9*du;$1wQfi z2HqoH@ViVoh*7$;Os|`_H#<jg*RyP#xv97LQl_6c;@M}P{rO{)EGaX;GdZ72(~l(p z;K3+Oe*Mw{gw0}9hGms^rkpxD{I_V?bj6>^J7>p;pq`Gm9?&%}P}aKX`kn2?f236e z)+U-YY$l*XB*TJoRab^QgP#HFpeX8>LR^49qLIM#0aT*(Hw{%^_hfXmoUg?7AleH@ zJw!W{xvUJx4|&w#eiH$XUK-ZVZEB3r&C9Fr1vp|9LP%F|(P&$16Hd9;`{Mn}dYCX% zDHVX@?Tl_C6Sy86<oJ%bv5*|vb$L(}RQ%{aa@QF#=b@)}Ti9G7`bCb}&hb_lHAu^o z2tb+)Uru)e`GAF}5ONa3DuT_8&nDSnq+O=eU?dE%W#qAaG?UX;u!OLd1_L6t$K~$L zErtNhE*m3nO1D~LkzGxu6e35Z>44BxMccZ%9v}J6KXh==wN7sYeE#6rkZLE(|Ks+} zlUE9~X3&o8)~nAa6m!>}%i(H1IL0nx3BOA}EcZc?R#PTN1fXz0@CpG&1Vk%#AO0&@ z+1~uNnIi@ACq;qRJzdlB@fIbfL;OPm+L<-LLWXM^1PitM5<V9$!^iv(?k_FWB!|7$ zqXa41^Fa<KdsgtWa2mR9uvKisQon$XH5(A=CCPDoAP_LnB&_8jpgR!bz&P;!y!aMZ zUqga!@lU~5Fd8{T*wD_d47sZ`m7nP9YrkQUboFaW3f4}F+V`QNlF08N$$Cuw`!S%- z&HR|H7Cvzxi&$CN{vA1H!-q#8NBi-_ewyD}%A`G$h`jxAvnV)`qF+%mSdzUwUaDlj z+q8dVM01*s7vqOkH&8JxuUjGH7{%ChVQ0Av(cP^#pZJ9m+<#N*d2R710NMz4Zj}Tc zR7N1r^E9NNz6dbNT18+NmDpbs?|0+=d8pNjEm`<ZegL%whS8C4ZY~t=*1xH4yqtN- zHM#FMyww%PFaJbbpKm~(YW&|tiBlyYl%hKs({@5*>_$9po$-3XjPs}Bv6D&GH)<x< zT-bnF@7b@xm+Wkj8vcV!^wwvx$e?aXxC~q>t+JrN!sjOA^kIiKjDDS;O)=3;qU^z% zYjN_9;QH6EQ*K!j$*hSWEiKTtttBEerC0`8e#CZ{iql>~m;(<7xi&sU%LA@0CZIJ| z2ZHd~**+JdMNCrEk(ekKt9S3$BJmmho~D16H4SehAGHrvqV7+!et(lDStWzpNI~fz zO()@M$NDZJov%FYmX40>klC*IjCR@b%TPPJBxXet4!KxFJ&A-?r>0+^yL+0PxNGcy zWMj*JXb}q;C=D=Vy#{4Telr`9kw^W-oMr-iq^G7c4~FUC@Dl@@&W4tj*E7V*l3?nS ziR5I*X(LCx9@+{6xf!7Byj@oS5N!a65A>#{H2Vj;HeEGb*P*Uy$^~{AVlMdha?$Dp z?}>?+6S{qQcd6=H#2p=zEUho|+4{HNB{Ihr-#7<nQ0+HDvgvqK5)ym}OLhwn^V8Ee zrF~*fPR#Fw8H%7KN@^PWLP^A+a#gB2&q*wQiKy;huFjW_CC}d5Zlc|sNq|CTqn_96 zh4xs&W9`?TR5YCXVB$V&_p+v}tOkjgMhdk$V0J_*Koqq`6PGrXKk<Oos31AyHk=%I zfhc5ufnPfAuIn^lh8GXG@bduL+L~0hkqj-$^Oieen8|MJ6<R!oIDZZpv^3yKM}Rq_ z*W7|?QK`B!=QESBJ(FCwvaw;|Ab0#1T=2T}>sHQ<+n->L{=3Xa-cV?1X|s}NN+kiR z#6r+&&q@Grzx-@Y75@_OXL%p6C18t&_Zmn+IQQsiZ`Q(Yco3$K5gin26tPyZJyI73 zsXxASz`uf?ei>bv)h~_oC~4dOc>3Aumub#h;8{~=9cp!zC#nQ@9W+L`ssT81*f|&s zmDZ}JKlBa+NOri$-A!g=g6shy<tI%L5qS`>TAfuVhB<~jN%3)kn7ZR$z6Ky(v~yGq z^nx8e8V>Dt9dsS)wveAE$ZnEoQi{e1b*_7m9(~KoN{7Gv`d)C;R-veiTGn;-RMQS7 z>;!*hL)O`kF%;Oi`y2~fr_0V=i^G*WIvhgI_2_-~DG;QQY}2JyC#$X+P)DXA7$prw zY*y$mAxr0sZ`eQa4eSeuj4^KxybpK)9p3-E_4!Xc?VAB+_cB=8At1Lo5~Y|_0)7n) zyELBO-}lHtGJOE%ICyT<+t#F6`ySL&iNaA=`hhdeX9KRvu2jgz@CW52QW<M&r8^WA zqJMs;)F~20%f&p)_kKq7H<mlAU9q`(V`EAssq2+Mf^7QBP?)J3a%@b;(~cnrqE`v1 zoxTy-Er|lGiqyU!-Pg3V%DGp_=V{|bImK6()D5PMo0rsgEgtinTtY|>Ij0k91TfBC zzFZJe;EqLyhPgTgt*yxGh5u`bu(Ej5yRzhNdqq0MI->zPZ4$>6Re`P>`qkdj7uf*_ z-~8$7^s>2A@D#u-=Jd9FVGj@2XXasH5Wgo~ebL|G?}2O_u|e|`_<hR`&Yg>?>KM0N z+}%Hc!<REcxPgHSKDaRDgRhxL+u3hKxhC5r0?4~sSkco=f8^rgbYmG%KK~mFar*J` z;ILs8aLF%)zN&)s{z;sNhFE-GugDPN>Ka_b{iWO)3|>B^fNpHtsD}A_02d9K6%;+@ zP~2H;_c2`w4<7<?;`u@p$I$&t@<-Td%1!iTX!evP!J74?I)c1X5EvEXv$<PA4+i98 zMb!5Jvt*G;F(BV3-7A}qkz9{T5Ex90AsRqGsW<OE#1Z>$vmWI-yRlKflikgK*4ATs z_r-1m@C3vo0Gb=tdW-1d!amfubGS(*A6x>gywNPMv9a0>%MO;t#@4CN`!9=_=-XTR zPi!hI&xqQ7<!$`ku#Bs<w2WvmBnjXCu*YjsGRyt@uLIt{c+t@cjnS4g(C)?iNsX|u zaNsI9FhpL8M{5%g0iWv1M@c+^GM-ln6&i#FV<LgNa6Mu;5Dncvf6Jnou>urFH~4T3 zO4qNqG5f)@FNdxC_EWw7d*so+eP74XZkz}5Q`2CnT+g}jG@!~jmR@=wTfxOO437dF zm(|MWS7HPwb3osmj83N?H^TM}Cu&!bBRQC~SsU)y*eENX2wkH1Wl9!(9}lm84(oZ` zr%<i9I1l_Xn;&Z_B|esRCR2%I(YhOZ;{g&4b%Kf}5c2xTmbtR0ieRy9LcQabTO)(a zg8d+3__C;^52sx*FjfH23Vj+<I~Q6V9+PSSYTPpAJIjXRV?dN?e6P+}&J~sa(4vUI zB=ji|x^#d^ULYR|X*)YDV?D-MbX{p-JAa?6a;Hl5Um*BX6i~n2_d%JGOJM~^#jr4c z$otg}myAr*EcqKr9{06r0T3&MA3~pK#|#qataU)}Dogut$yUN}Obqm)4FnYb%=cj0 zF`nS2!ozvm!7po<J`Q!cQ&De}0vsh?Nr=39gDk~2C|v+&4tjh=wCobt%-lKe6KUh3 z?ez2{3O`v4{xQcjQNEyw9)tPl+vS)30l-;1SD$Z{1h(P^`A?0PCu<5v>9$Nno`#z5 z*$W;&L{G|7gtZ9@8&&<1Nhg}Yz%wwXC{7N3PAxLUFX~~V{#q635v*OK@^1XC=X-}3 z4$Np1p2`IImf0bIuJpmwvZ~3Qd;ai;b)Bw4Hk0e*^H!rn|0a17c$9pnrVpE+<}!8) zb%QS3froH1e2Th3_;q$+wlNjo|5QSWE%=}pI3_Two@4$FD)>67wVI#(cH_zNl72(g z;o>6FjWv^&1?Wfor^1hqw72E~7=3hJj%ZVqudaTOkkybijt3LHOz4V%v%{Li-k}Xh zxP5s{3L-0T@o>Xo&>|f3wS8HDm{e`u^mKI{Gn^DtEd@gkrvC|5CYBDdcbl6YA_TYo z3R#TX1bQ?n?lua&cb~Q{sh)bp6~FxjsjyEW)oyVpTyy4H#oS)ZI<NU(Fh-d8&HjDP z^r&!zf>~NShA;iS{txEgiME4!KOglwO?Mu{uU9_+TNujWAH{M2Iu=g#cPV)F=7tVi zAe@2$a*{Ml$~#6WTl)?Qe%Rtb^86vtJ!?UU_h`Gkq@|OQ6~pvmltTnSQj@CF>{r(D zmJ&2eFGSJzfD8?@z8k0H0K+33Ht85rA7~xcc4%U1<%T8h^{uU0*Ur5HlZTf6J&rYX z=83n>ewDtbj=OnC8TrQwzF>I;xzji?i_u260QRdw4-E1KK##?D@6D<c`2M4_Cck=| z)UHSl-2nVbF%CJavXZ6^sA<jH;>0{?gdU)rO)iIubhviNy566WBg9}bx{(l@Q(_R) z+kp}SgBY^N<MY^}!&U^zHBq=A4xP{{>W|EdX{6@GV{dVFfHL9$r#<)5KOkGwUc&JE zsmeUpHROj0$^8yMF0VqeXNNwOZD9C}?DU&Ap$cHQs}X@$g)uL%aFxipJ~ulHRR68D zAn(&?Ma1C&kiWwtX@9m7L`S#!`nI;NhE>C~#L?+<vUYGiPE+tYrD4p&C3iFDr#rfq zO&usy+%^}<RvEV@ZF~FNA{~L5^_CN_BwvDT6;ph(i;TXzT@DjIARgch{w4Ij=JWim z3!q;jo?4{<cKUt&6jVP|gtCSU^JbLfbbAc&;ii@07|E{VW_0p_>E2$lt#C(txNBjK zjtdGcqmGa1Mx?p$smw*WFqy1C%fYPCb3pR~wm8Qi-b+u{Q$U(HSX|V4u88L}b~uWn zMNh$o*X2}oID?Z|MvcG7O(65p+8KCTGu~9^#&sHIY|=V0-1_?Z%CSK)dJRhMp-acd z-ahZ08^&CubQ7V}7l?;LLkF}13nU63E!b(x%Q&ZZtuaeEXN(Frnvh5o7|So<=h*nP z5mhEt>?=D22t@a;bC<{g`QI<S$n67|j}2^)ON3BxbW@ua4H-P4Lksga{!72FP4>xV zGz6GpVw^tzNaN<kjYDxTW27uEIfD9Znyt&U=ing41fpCri(i>Ay~OxUR(q3^xI<V% z0?wh7cmyeuDz<WCcH-mXGkCdTuTea<Wm|2NpTe$J3Vl_#^QO48u-q!~A=<=lVRl$y z-KMwJ_AZH7SJVmC{hKuRrk8OHC=fZ-$-Gg%{@0hez(gepI-nq?CkH7Va|;n2nc2Xs zYIHZ2sgOCbrmE3$PcfW`|16!~?6o^5bjEStM^H(_obQXoTM0e`q#O8%BGwo_5xvbg zTJstDmxDax*ZN6}z$Ae^mQ=Epj7rglias7-c15`c4UIzE^Oo$iw4Ya{KOO!bQ)l59 z)%SgUM8KgzB^;188A`eZ1Ox?C9J&!0x}`ypZjh3cmS*Vgk{*!m?vn23@cGI2_3#gH z@11+k*=O&y-Yc6#<o=X7!Y~!}{LYFTo{AxZcwa~_oxi`aptgP9cfjT-V&wJ>=;Jc` zzrvjXpNi}*wsuP+NjGB<Ll>Z+kY0a$xWCj`C&7dk4Mnzwk5Mu<KBQ@;+56MPDwahF z@>AwF+5|!?QTf_5^_az$)WYfu$}#~5LoPD1^aG8*r|_X=>399Te%8pxDrVHbapzI5 zM0FJiU`tx0XVN_^vS~!5^oiFphnMXPcXF)G=(eB5eP2d>#mJqzNPWG{H28B6)OX7@ z3j!|N4pkBl&zk=J)rT^@KF;D3`o4L#0sOutiK2@19sim}j(i@R$2#xV=G!)}$0aS@ zfq`;r_Ab}_v)u^)91kTtB9|ZJMG{XT#QJ;5`vdgn5<j0nk^d=VdT54rbaQUokrz!D z^C@~_4^lqdOyv)FwC{z~IhSM%EYxQ6;73hraI8AEiAK=oYUo)j1iYv&N7zV;?IMhQ z83MhHVh2I)#gl@n=-QCp8dWe<8Ge1d0TszUuMuGkq!#+tuOr*^bXsv&IlPwyBfs@i z75BegCV>?9B48>-b|U0$zGD7VNnPz5AZIw>DH(Gd1Gzk;{hlVOKN2J{W*|DA0|S$X z*5&{a(!4HN|5!rM0*?;TA;f^`{)l*D{tU834Ao9bMUBV>hZQ1tw25n>{cBOGMd@Q_ z{ctDbMK$|}H4e-olWSA`N7JI@79)NA^b6~n0ew!@6DM)*PvS(}cd|RYnjv%0#z7t( zO(iw8XKM!sHZ}T=j_GF)=)6($UO`Qk6L<cd-%~RbO`QR{<r%0yEJEwP@!#U+b~6&@ zw%+uA&;3lm#<^O3rSs$XP<erA$b!Q@7Sc+L0H`?4Qoarc`_DTRe=_5vduiwDx?wLm z*?1_52)+=EaphU!iXAqLo!vT+m}h0mdA&9$+!3<Fn1V--;S@CyGq@3ySXnLb1~<YB zjK5bcYMT)CkUv03XuYX>sMb3j_)f|hYcV=rvM=FtEP-I+5Q9%IHb&lvUB_<Bi9{k0 z>)o%6`En?CQvo_y43C3p$RtV;wnfq3e%iL$@|v4v$n`-&+qKWRr5n-o;?-Y)tZ~-f z8dK>M@8KXV{1n=`JQt0+loV64Gut<?LJI>Y+t^zvuYiI!^<8A3eSZdVeTU5RlKUR& zN=nlHk>>&t+47a9%5aZDEAsU&i%15Sq_y&wK{e-bO-T0Day5K~lIK!5qDwXOw^>Yz z`d=k48o7eH6;|*b#++yC?!S0x<?0$Ps_4u-6Q}2Xb5iJK<R+<MET;&<WdqF#{g>(A zcA9{=I+ONm3x}u@mQpRHNZ7;*yJkWBgF`2w3e;ws&8;DtAw)8<v7uqMLG>pLBj<;< zWQRupE2EnkArU~{8b<X*r3k!qRVjEW@VUHq3g>xsyo{~TzX-ATRH=8SNWU*6^y?WJ z%LBS*OV8-<=7vLk`;3byOcp0vLL$P6D^)b6OcJ;2jNJ6qwjNadb`_&wZpdbP$aMVf zW)a_Gl)THF>K_9xIf3*zB9Q_ehM`<e<P17it#_?N-VjDn{Fq9kkqYn_nY@rZ+b!-J z=+tgBXB5fV1Biyi)#MxrvEmp@n9i%`{vU{cvA<0@3kRo#bT5c!fxT1{{dh2wVE;U- zN7VRDK<k`yOl!{ZNuCAiG2mpFnZ>L|_aG+@VNxmS+*%RevUb_q+669io>P;}ACo6N z5AqDaT|k9I*ibAV0FvBmW3|ZJ{u}H-;B=-k<vYA5eRC6?zpw&dwzo$ne=x&2E1j8B zC~{B+4QV6!5&8v*^u&JAM+hBlRd#{D0(3qtbF9V<1_qMA540_GMej8nI!_#U3u&=f zo7$^=E1b=f(tG`&q(=uq;JM>Ux~arG^7<ReEf2~Lm7IW)7`ZyhY<_v;tY7*i5UN)% z{rBW3iWvmCRR97~|HH_)&@a57Dnr~Ab_IC?7DEm6oZta3=cC1E!ry=GUV?L*M2IOQ zR7oFIWG_BHWITKZ&Ev5HB@ug$J@?HApcf&MLRT^ms=!roR8ZkFn722%6yo)!<>_rx z3`xq2L+9%z9q0)6Cu7@hjYdumOX7+^HQH26YtH!F?yV(_xI*?86-rLFw&?=~5tON) zVYjLJ2WY>L=;CFI<boEPS&=w~={Albas(=p^CH?7Wg5tq`e;@Dv<Z%yXk+u8-Zh|% z>ac*Hf6wg^79KPmHZ3vRGC|Ivw0!n0id6@VDi-~$zgY<wnE3-;!rSFlhbyb;(;GeH z>LMxx$O!BD-C<<%cAqcJvZXQcMX!A`^LIh*cyQw2L7pjrhNkw*0G8CdxHoeW{5b6; zqKz~Sb?@wh8E3LgS_J9jL%CnxewL4`uZjd|MX6ysMD3qd!xA*940#gWiTC#2#Mdh@ zdD0&jA^Joyis^_@)ctd8Wrzc>;^TPS^8Vw@Ak40Axc{?vEo_gdh4r5^IS+n;n-z4l zg=8M?&Sts9X}vX~7qnuoXJZJK7Tm)kSY<>CTM_h>@3gc;)JA4cc>Jz725y|Q@hJ9x z`+}F)=wY~I#OC(Ze@DBH@{o(ugWh;zEpa29y%Pt}E1^W!iJh-t;Aph|J=yQ*s7GX0 z<YP$-PRuPRl%~eaL$>Nj3`3o+PX)7YHQkT6N!>`vhR6Lyvg2D4fqtl4>FilRi~3QR z2I;IXx!!AQg-hOG?oYR(re)v;&?(x(ZHPW7Xl=$!VkUo*(%I0iF22%*^S16^YQaYn z6fc(dbTRU*AnbsheydyHuo%xs8uT7@8~+rO??srqKK&MqkvA6?8<KK1qxet79p;7G zfJeG#X;U0OW~mhNK9t!EAQd!WEaqwcBLSD!-usqJ$(iK&jt=gYwKccY7WB5eLUorC zFPJa?LRouyhGJ3jK<u#VF(LJ^JVdU%=R%sW#qukwf(DJs`Z-tr)DrR2HbbYm3%Py^ zzYv9D{T4;Dq35^Njtt=g6fGa^CbWwUIAe#sN>cNQWZ-)C&+p`bnb%ldVqO4-+6uNj zTwGQ5V0UeeZZn^^9<@<C8_^99!U|6yq!*lz<GYi-+`ny2RQLm$hrj?|k#!yAP2b({ zxbNMoKA)Bc%nMr^JXZOBXrv7hAdQudvzy$)KCaNgv{oy0d*7yv2XHPnHy<q03{~kE z8ZusVaXrMBh6*m)Hy#w*w~4!I$T!*sg%3pOpnOby(@V(V5YnKY-r)W@ViDnQWI(s^ z4iLFbxZ~iZ8(rz|Ufb45+Wwh!;h`e><M+kIoG5klf>%_n|EYh$M-Ph7rjHKPem_Zq zixpaav3)$sc!7XFyc124Jz@aiUrMixO}Oy=EDeV4ox0Qd0s`Dk7F%)OdUCgFyH8$l zv+g)_Q9MWp|94{Gh%0}0-pyT?D#^S?MR~5>{wsNmsu|NtMPJC(#$#MJB8h7YFJ5|< z`u59Se^a1e%s3REUvwY-B2HCmcyxwp7I!1P1>$8km0$J-DmiH!50mMB)W#?*|1R9g z*c>2B8?cxh#^IWktIYe0bKrqp^lh~OfliUU6V-V_T?UmprI4Ud1lwhRt~7^<<-OM) zKJ?|Dkh@MjxgtKqZZte3fgcxpi{fYgyp?;(HZAbMM&c4KCNCeqDO9>Q^^znx^EtYo z$sUsM)qom-dPU%yrYt^%kiNl2(Hfr%>Ww<kc-p+U;1Gm{Idk1C@jG*L?A;&?`YO~_ zNN9@rx;y+)McpMffu6Y@9QbYN{z%-WP>R!X(tWSlYhY<vG6Il+OneQSj{CbYcS!?X z{B3Wcvr`VZs2`A1<{P&70S7g!U_@yyIh-6U@;p-CQ|fsAL!?hGL~#liEIQvBLFRfp z*o<=dZ>tUNbf~*M5q<8Vc)X6G2(f^xex2L?_)QJfIB3EpPcD&?0*&!I%rvri?j{_2 zsX>4jdG!_}gYLD`!&&b&rMkav`P?7j7gdXgcBA-rG}I%&yIzoGC?CNw$Fsa>O%gm2 z4HlvuAu9)mA)%{Dxvz}3!&zGY71B^wkAR_}OLmvu<8Rl!F!vAQW(22f>H+hj0!dh{ zF34XgEQ(lPbYR+4-pgD^)sXdSz*StfMcBG4ap?pWLU@^(^K8g!9MrLYTXb0oBvJXB z`mv=0vJmg*0vAqb#Y6x1QehtlsmHRo@OOp82NVLVvM=M>_yG~5IN9abskPe!MYrh3 zWp_FGyVdkq8S6APKHuiyow1#~nD+lE^9!q{V_JRsWK`>ZuX*;ZU#`S6gnF#cy;tA4 zB>uXrvNxOG-m7jcCAvy@!8(|AzPIRqx;ia4$t%RJ!G9@Du*+FB{?bgdD$gS$hO0p8 zo`)_xw^gY@G4l~$kj(B>1CLpcwdt3K&u?A>#LV14EVly#EiRF__tgs@l!58y_<b{< zci%)x@|&!sj)QUIi?tsD!+=F>0$I0|$vB(J%Gz4t@iFSc?GJIme95C7NRTRwt{`!g zFC$-s9&H>>^}Dct&!AKnz~3%IE%Ye*O}MMSH>u@H?-)D}gfG+tKW4t1QfGR7a(4Mn zae3Op+*lDc5dLRP6|<HR<Ku;0)Ghi;o$T?YgG{%jTDK#0H;s$wii^5f*Y64U8s&Dc zlCJ9NuIloyDgbwV>vB5ha&&Wg`l3!9Uxqj=yEI|9cLJ>Iu5Ob9_O09WFZC!QQe8a+ z9?bSQY@DA<<D4r53#xqw(8dj{d;u@KM>oe@oBd#)6gE$Nx(K>ot&`Jgse8Pqd=9Zr zQ8DoPxeIXcE&WxE*2uSUWl0-@2`e@Krj!y`(ACi~Zle~A=|#>j^{!O`=7Nt-H2B^V zgDUwJX2nBeAXSqROM;I15h;3nqnm+WIPDss=I#qCQdH8t<phcw17k&JeaOYv^c+0V zNs`mbP8a%z+qkbMueK{L?64nl#14xCk@9S&^Hj*y)soxg=Pv<7Vh7WM(^Rd(^7x7^ z+xYyip$tKj#pTSfob>eULSMEk-ZsisY|yFVQ?RhPsijlAx#F(5Dd?BiA{m`(@<IQf zI6&H1y1Ncnjn;uB(GO@y0EWILE-(`Fe%5YA&b)l-HC$SGY~g%PyJ=oq3&lWpgIS@N z>vcVDSyfFr*m?NR3QKilB^4~|j7atK&{=Q_YZ@ndn-vRp4t*GamplvEF#x20>P3|( ziJ+ThHb&{y<k%@MrVfM@KzRm`a2FtWsiwR<<8q;9669j734rK`rv!qzY=aI)K8vO@ zBc_yTOFzxx=bXi2h{PG%b_5*exagI0JD3qP$4}|5Py6@{S8Iq3fgX-Kd35K!4jB>& zH~+2@LY@nBrE6o@S_M4j^}opMa_)UlR(6ozq2!E>YU$~514mI3o%{L(-o<0Rt8gI5 zoc0pcfXJA4c23(!?pfSA1IBL`!B(_06%1rDiNDL%f`>wmpcotUsrw`>#8S3_PMJgo z1`8nGe;mD74m?#1a4<|)7@KA(apN91DM}ugifhxjx3i2YtwY{WKLUl&$uV^5F>`Bb zrt!%Sk|uS*hH_tLrg8dOD}OyuYFnrFl)OiJ>t$KZGMPyH;^OcmDMj0>peS(UkDr%c zwL^&-Fh(Yb66ogIk@l^v+JU~XMCsmMiWyDkrW}~W6;2SS4a(2>S&Lf)(r~NAr&>$g zR=js(;fE3~zHam^ekup){2Z=P(=Ee=i7$<TR?+8ZyQtI{^=CS|xx{=d49FjXd4iDb z#JNhaPuC>1k4EgF3Fza{aWz<h_&gQQp<)}!UzhB~xfn2_;_<B~k;$BxA^n<N&Wqtp zIvW@AQz#fH3;y@(3n|g0Ek5H;y&uF-eP=ejq{Mt+53KkD)}JVbhMzT=#$u9bVc&8E zx(%DQ>;z4>5hAeSCKi%pQ<6y@d(QvJRdSSum0RYCh><4cAX;&dE3Kaq<Z9q{_g~Eb zOW?I;q)g(Y^;+BV1yHuz)Edl4d)~YYK@hUsJl9xeA0))6bHJ4N9c}f@adpG&iSxl) zl`Ow>_Px`S&dqJl39@D@Rce+KTh}O3aVtjBsOpS<W0~7Ax5x!c$Q9e?D5n*XM0U2e z3LMb0XCZoTV!^HN&{~KWkt9Cr2z7S|*Sg$ucJbZgqsX)QhZSQm6tJ8P;DV9PKfqmn z-B?9TPL~roUcmf8EM$JKR>K1g+g(jlleDdkzcircCu9Z2WNPaM9CG%4#NpL<nt6yC zKYMH`F|gTZWN--zj%yUFZk0aj>SeK|D6}^ziFxK@`#G|W<UhoKqbr*ZXb@()OqD8h zb-`?I1Ii|G-ke$>OV2ou0lP(7??0_fSgRtH)UmDs!)!P`_V#<zrba-P%ays^H(mQ` zXa2hVzpKEKavIazVhau9VJ@!;j<V0i)<H(!<*B`fg0&A8X{)A^_*)a#9{-r{?Uo_X zQ`bx^BRlND1JgkU!K8``$5WG+Jhcj{Z<0<Rs^YH`LfzRU#_A)e{`VHTaZKmrx<oPO zAy;H6BAK3+E$%u@rx&<i3x!9#mpOwafa8UHf;*;fSWjS=&)V6al^J}5EhL)Of*A<a zU&F%#=vq|DsygEV>6o{b!GfR}Wa$oQA!d*S>pTE}1^*HwuUx2^N2I3$q9LXE`(F_d zgQsSng5L>}4~D4U(uRw^Zm1s{o_A0OP(fy_CW+E0MYHW#aSUr&Inyr`iq%t;<7)@Q zEfZ?IIvzi9We}wUtKjhu%hNYqe9hTAbm(+IAvQpw41-jq7{&x|R7dcEY!&>{8k!f= z-Fd&z?`PF8&pyUYSLrt~JvO%P*HVhxtajIWCGZGhx9*kzRQVS4O*_|$^;uz-F3)@r zf&vM`6>e{M50Y{mN|Ne1PacF>(HLif+XhY-bY=N?l2;P5eG`!s6hZjc6IoyRhfiM5 zWKr@?tp(hN_49rpP>Ux8wO`P^Kh`(D`eQ;7+}e7~ikh0M-K{qMS6Zgp+MJWTj?U*v zJbYkKMO6N-8UUzzJm(ZF9V-o1bRqj#3*{z!dPK%uyD>%fdtl5h*ew=7H(O%PK`@TX z!#uRI_z}E^0hXmdyT9)8UVDuJOJZCQOnH=&L}K=A&3;D5X4|%5FA4kaCB@nRZa>ko zm<NbQSjD{Ap1%9y+FuLBFpt*P-$>qdZS3fXm8BTUF;%)<T3rnX_P#f`Yia^QfYTck zY=>7-Q*fF7f+xuO-111^jG<eM?fE{)8sp(Vi<Y>5N|mHdME@D+x8kmw%N&Bml}yUW z<91O7CS@-OxT>c!l+LcTkv*0WmG0hro5tmnrD&q=lDNH{6$1|Ze-S+lhE@^ya*T$k z{{Mn_rtO`p$6fO-3rP@YRwK*mNML1g{S2Gk@u5+usr?Z|{D}g>K}mI~M{W=xBiEZ= znv|B-{RfSFggZF6OdgOpgz#~L<Y6BQbFGA$jxLy4C^E6#=M|j+>3_eUPO0Zu&n&Ey z`*HXF`9t>w)ZgC~c-@Jms)ny`hN8)nz9Hh-5vugS<u=)J;Pi3401pSBlq^=W?ozdK zfJ~qcU|82CtHr)tqw8vQ&dJEGuxX*qQ1j}kYZewwHeYfG|E8SmXTeLu6(X8X0)$^z z5gq9G${dn!<>X3wE%QFGD{$yJPy)S<9FqigtG!-r@X)A$H0zb1`y4SP7;U8_TThw( zYpG*9Fw9<=v6S|fu^g%c2EQA4&+d4dWpjBWqu)TTx#F}7V(m<gR2dmgLA4ZjiJMh4 zTqj*!tcd()t_MMF{@5==9=Y4owkGl<ziWcUApedurX{e_`p0vetE)MixW(IwD&tQN zfZr=+l3SV;w17s8IQd1gDRG|I>s3Wah)-<1%dcYw&AgHHe{(?wOlC+PIB)}59A*QZ zC=1wSrU8xdaJcGFbjt)MchrlMXJCLm)7D#`Yhr?9V1>P`ZMKi1xkJPYymm)lv58YY z*k3$+|Lc9T&QsbCF_Va&K1fd_4Nj?nyV8G}2RT}kmOzt=Nu$gQ!IaSTNr~(bNo+1Y zk!<<#T#hiH#z3@TjUTP9-V`99@YJ9?ZlpWy3DTX}k}uU>BtoD44)n|vLgYjV)1V)2 z3$;t9Jmc}OH|5c2Zc)@s`5ktIG9U1?uQj(-h*5f{Ljhc1`^>KRHJ3<FjBB+Q&XgTp zNK5*pFo91ZcsieacMh+4E$Ws8?>n9l#0jfuB$W12$c`=JI>)E&L~!`g*|Zp3AsQt> zRs@)LS{Awg+YwW%EJQ4Un&OX{Zc+C#YN)vMkeO)&cw(P<Ebejg6c?JBoadX3-%Sbv z6jHoOeB!YX1x0)vnZhcG`*&+~+-zSZNyum@<=Wj==1`##^$KA6bk>uUGcTLsnSu*u z|70i=l4Xpz^}p<OEG7NCw*p6^qS_`8-{vLR-*cCEuv`yD07e0ugzE8e8zsW?4<`;z zdj74?{VvI)3@qtoe!<jNRu~gc7PxW}`#qm0uxw!z;~N)@kPZ*kZfc-0{Au7?wH6RC z<JO7K(Deqm1d&*xB&kwN(kw_$0jv1a;GceHITG)SKOsS((=BRJTq`3kqhRS|Lpxpc z4n$9RDPEB`AS$wghy%*bUYOX9J$N$0YLbQw5mTgS0RtJizJfuc()^l@bP8i3Yxx_( zKx!|rGcL&X#K&KK-aWquQmK?xza+dgXYET*)3%*PG?GuI{jOi{EiI_79yBeWFR*fP zQTR_f7P<Wd3OAW{umOn-JpMlw-~r4F<pxhd3QJVm@;+b#mCahYCa}5t$49<#9~_AP zVv8CuX^GNi45ScMJUEp&?E(eB0RF?fm2=QHdet*xH!G+kg!I95^~obnLd%BTnHjm; zEQulG1+FHVT`Drdduqf&Z1yjB1lrcug;UcX0vnMmhB@eaf-`OI{ka9s<eILT?oYnN zo@xsj+BC7!Wc#C3&_FS<XHW;&l2u-~YN65UE;DRSK}?x>1+X&gi6fV+9WHC9YD7G+ zIu+99{El>LO-lQD{L$usn(}>qK0GF`qjznB<Dh+a_upAFjLNTS7E(?0YesYt)VNS& zTfAi@g{cx)pFWIy@mI$3z{=;Ikxw;pmY905^#DX5Yt%RnKa`T(X(bN(o(-mr+Bu*r zyL@CBbuc<ALL2Ch7-^pmKuokJ<#a3n{dD-?YyUd0yN{$!tI28GowmSdQ8w#0z31B5 z7HmKL=wpk4b&OJeo-DsiM3h%9N9hP5U}Y#fTUs)ykNXpk6<32na{uK{dmlXF<`ZEV z<k#7*9vMBUy5%RgLjA+w<%(f}dR|`bY5;Gnv<LyZyHIbFo~7lZNmGim+ju%MV1MG! zVPdJ<;=)QE{q!Ejt&6Wk`x46M@Ri41xh%Hu?@CJM{q_#<nV7xw_tXKX6gV(5UjANr zDFIpfJeaBK#$6ZOZ({qSQ6WfdICaKx61;}*vrSW9(&-ka>@Y#|%JpB&T-=mU{kk6| z?^?}I02yf}@tY%h3lM7$gjBIWK<pc?UDjP}(LEUlE-@4OmH`21po2nQ&ac~un=rro zn!1N3dpyJb(5gNP!-<Q3cnvb}+UFR`n#Wass%!b9rBFk@rMnwm22`-0dY<7umj+aV z0BQfnzeklt71i9LSI-?To!BH;gNX#zt0lQ8X@B_wS_%^krr2t-gxq#cpBrnxw?%gI z>({md*_R=bG9#m6^f$lsHprZ6iT4I$lHerwTk{V3YWlf{9W+BB{x0rV49s}eU!yPF zK?V%wcYn{)#YOH-7kf_359t1e)x+Q<LdDHVJVKVd`mMBljVH~yt9lidx9DjwHqXo~ z+fU|ijHU8Os%h)+xZZL3BIqZaAUIq*n=bzLl0tju7DU7~@-gwUx5v>uTdS!RRlDmh z-v6Q}KndwT)4aA;X81KE)T65E%A#SL-M&Yo=9F0-Va65vjPldBkr`qe`iZ8}-z{fF zMZqoqrz?4ffh@O()6Ac6{$wEwV<=!zEW;=2(|t92a)LZ7evFf=<Pgdi%*>G5-fQRE z!VMMSk?hP>=5l`x+VF0De%sjOioM%lNDnN%_X_E>Y}cHk|1>PqspKIDncK`u$Ijle zPyV`Vs>o81fAh^lF_>d&T`$TwplBYCkNYo9#|t1t*JGM*Bln)R3HM|qV(<4Ad_w3R z7ibba)tdGh_8;~g?xcwXL(fCeCcvKgNkZFtKOvDiZL<jsvX!Z{d8ReOodz$n>?Fv0 zCQj@?U}B5OVImN{;TR!D0CRo#R}ewm59JMP6*vWD%BbHFjnHk$zUOXkOUpW$^oN;1 zNpiTHRI+b<=^~WDFF1LvJlBRi{pZ)0f~JBd#IqIjwspa`4+vry%OR%rn}+*$rpkZH zX*Df7+B313muME*#S`1)+T1w@l(x$94NLKjPU7|~oinf#zP59tc#KNTF4aSEz2N4a z#@1i-<ZrE&2qE?;ureM}Hj-nFek4^X7tr3FtMF!W+acKS;1TN<fy&}%#%~J!rXD$w zQQQLt4-fOL7z{!WA42nbdJYF{%V_^aR5BR${StEn$hiA41r<x$TR3-W+{`J4<jdD9 zK6g!8(EEs&v$uYqm{21LY;D`Ge9(M%9CMpL;4>J6Zk`lDbSvE6)Fd-8l6EaG{iSn+ z+wR7pk(x39IcIoM1566)R-=0xTZt+Coq2$LZ%VIKz28wFVxgk41JpGIFA$FeG0xxt z8rxTDVyp=TB#Fje_L~1pvSIu8t=bpWvtGA>rPI=4#~?{g6^yUBxUcN&_JOlf&YR5+ zRM4NtBCLqko4nmptB{;=_T3O2WMZ>U@H_*YL_0^R+()096y2J9ofWf?VUp=i5oy2f z!5NYNdeUgMQJq^t33Y6|#CM6Z$yZ?<P+;Vd819d5KRRcYh@TuXqCR8cr_Js>JX&5A z{4)KZ7zp2bVI^Y{P$U&MrMNET*?lI(0CMM9lsn-+#Wcg}GXTmaD<`Td+RGO4?VU+J zx-Q2+r1Iw0Wr~aTxK^J$4MTb9p(*$NXU9ra=kwzz+&f}0m9Dje?)wGW9;9}+_bM$7 z3OtP1ht8eN$^B^*igl$<1xV)}xO}I07s(f>T(b34>|>L%b1%rrFc^8g>{_h9yK<Jz zAXs-90_UKyq73d8sj;dek?|hH%7%>ots=(ucrE7Xg4ED_!%apEXl0b6)8r{VoY*mv zk`~lA)2aPGN*Gs5v6}su(+ca4O9uOV(&QKu%LJxoR}dK&)tls6PIMTKkXj^7LnB+a zba8OSJArC23-w%w+~WE0!R}d;lIkiOz<W>l0dn1`6{Qol&SGg!i?ow;E`{SOH)~L9 zFQ$iEHz|j4pbY|xs*p2rA>B)gZoZT42wnXY!;Db|M8tSb`R)^ML@ZTQ+AS>*B4wOg zn&7TDcoA$FkLu^g;=XrtJa8m{wGxLbfdl|oA>Q9iVqU&N`E}x57QY8p%@yWO9`EaG zS(NWqw%9i+srk7qo}Z7*2RH)xhl2maPTzQdcuGtzLI3dYq@0uDUQ}_|H?$J70Wku^ z;zd5Rk1k-)NWJ8!si^05_5|9jl9<%@p!sExn~DP`E~Y!~Kt||pPN-d#*DGW^E8UY{ zujFUu;#P@I{{rVwm4fE1Aw*)tvXdBvQd;q8bW5-PcgeDE-sH>Idjf?z;&f-0def6r za@|F?Sle=TYbhO6s!pZsg0u<S0Esd1FpKq=i;t&uAvBD*na^BvMo20@Q3Q679rUbA zJ0}1cY59Z?Um2z%4aHL_va-+;!Yty^kkrMU{c0qyu&vajV6ZSK?zm9%<8ki9gpN~W zDhk+c7r7eJwt9<|7KtRO@S|08{vMqqc57P&1yfR}=IWoub@x)y0}ONu=E>Uz-7AEM zkZK%QDBIX-Q8z}eerw%^vu^N`G*TcM=_r$Wbze;ZN=^UVBlv-rdje@vz~G>{lS%}z zGEjS?&~)=b2@~ivXlWf3@h4+}b;t;uB7Z;!vk)zG0eUGh`^CU!PoM|FAkv3&$ZeHk zDoOq%Z!WGqFVkB@d0`bZ;75@YN4MQx!pb(9d2UA2?iO{J6-##~r{gC{+Y6O!IxTpq zlKR-xGeLGC<G&}`mX>MD`UC}<5(9%6>cTe-fc+1MMitdF=E;gq^ig0oso*(8V|yH& zPR-mp&|_t>laci0Nw{i6?Yb8h_Fqb>v0ofGBbwwg?d28qm^%PhW5cFa`G!Lmxqak~ z9C7^*sure!2E>NQ4wP2~$>Xsi(GpHZQCx5^#vp|-Hv5P*;+9TIIp$m*W(km5AP3ao za&E1=*?e9(gWo^2w=o92A07_mU}g<cKCvI%FDl$`9O=bYwJah`!8}vVE6<CN#HEs5 zyEOWD@?3p{EU3A*bd5)qx`UI{=*s>};7fmhU+t%`&{V0^hVQO(KB&($5Q4m;GWcd* ztX`TJWY~i{g8qLgtxZA)mYtsmM6~%Vuz6D5NsS`A#WYq(7Y%yx!>(OSDzw2|0iPed zwFT1y(@<a1+~bbfJ7OyR40CD#JhG6U_2b72ypHWT@&SIj0w{#(G>9nxOCTRZ6kkcI z$p`IGQZ^`12dscggGeiJ(HbrB4&8|0?7zkjLrw9NL<SwEFM>=b$6YA*bi$H&2jn%| zUtKD)ObI7lV!cRM9~cm9GN-3&<f!%<M1@VHIolMQ`bZ?+A1Ab{VPVe8m~Lq_n%M0r z7bVqVz)wVU_z`Qdt+56Rb<yH{R5d&uFFyXk)>o|wCLpOtA(Ru9D_&)IMp8{I&}=#- zPafuGo<9>BB^KE-ELVGjUj{!qP1jYDq_3Gy7(;tPBwiM)5tpiHEb(>Pyq~->Y+3}u z%($y;@0)5^8(DeE<w;jw-xA+2K3)g)vi~VSw>{qDQ=NGq>jlw%v160D1KSW+8miH_ z4Izro$#&SHz%F>-zlgY12Schv-5XPJ3<)tP<e@j@_$WqJ-787{4Gn8KqXP5E_BwGT zO|)gz>f<uq@T44l?o^UnOs;KC_)O_wp55T{4o>jCJ2fAXpNxEdhiSQL9?ep*{P|T? zhj6Dzr~VWB(G6@hXkM6v=BQOkXwP=`nea9WWo2t=xlwy*cvFLVVUx97pOVx$yhW0| zb-#Xn*#`zVblmLfq@ah9j_c{jr}lFa7-EXbb%6|xO(BR?p?K%3|GEd#`QgDk<inQe zP9kmCR=6+#NFZnfzfyL^Y-5$`8<15s<i2QzW0fSoH_l?2Cr)CbvgYv*Y5R!d@G902 zLr_cW&G*Msaw)mYu5Fhjx>r{IlWz^0ZMKEH*C6$4M^7m>n5!DHAj<G2g|JrKwh%`b zruaG*=1A@j&1~-0c0z<!TU*`tHJfkF$E;vft9acztzC8>zP60L-g^mh_<)xyzQs3l z?)bPSP^kCI4CbwJa`{F~)v|Ha-CX@aG<<(EjJ5LPE#pjY9kvXG&Tb_bR8fo!0|^au zDSHMC_w!x)W`TTNfdU-6UAAo$@L-Zblzy(PN-C7fSAr^r$Er!8=t*$|g#-EWq;z*7 zR@r`7mPi&N{rT;Wxbbyj_0O+@fYUwH2p9kKc3^HT+_iMKIydUpbF-kCBi@g;%A>*) z)TvU91_C`Ohfmd7GcnloujFK{taF(ZHCt|Ou0Utk5u_g$^N`R&#t~FOG}xLuCr(0a z1Yx_6)w*m`Cs(v-LvZ&tga?80be@p#YSTEArIG8tc8)-Q>RTnS>wdf6s^bxw`kO?X ziGY|lI--}pV<|DyY(UO-!O(3$&TU+wgxE)tG=l!;2Yhq*Z56!`MsD-nqtmOP$6^8d zVjTA+@4*S~E<JvZF28F>r`E!yXzBr*q&jIUoidu#C|r*7*OZKY&ix_Yu5?;oPCg>( zxfJ|_(mD6q*k!6nnLl?Ca#YyaDPfmGGi^+B^Znx&AyR!&T5WCP&(Ipg?OdpOr@@hE z6E|qx@O=vESP5v9w7)F)?p8|@F%E@6>K;rz5UdXB?9BH+If>Ys(@H@q#>F{XP<qxX zd7SY)zSkkj;bdV#<I{p{G=0;*94@0$G+F;<l%crqf%j_*{j7T{9Symc0iEjeV;za} zu~Ub%Q-t|>J$uuL2pLu4B|tPMe=MqbvVA`yr0e7I@_NFaV_S`&8Yd+Q9fK!jc*i!| z;Ecw(b+zo`wyNNjiJ48!w%gIxPtAi~C%56O0918O@q14Gd|~0~R4nM_1ZzZU+sp{p z^%PLoJaq={D%aKaGU!e5Y<%LtE2j`M=N<ArhMQ**=zg6u{2GH)9{~3_+y7!Zw#}1d z;`_4*=3b)F+D~C`mtTPVK8-h|_k>-~qq?me?~_)Oktu#4@_(mb`;it`)B_28!SkM} zBC{j+v~yp4VIQ~<3?`oPLmLKQdhX(Tw0V~(i(g!(lVt6gm(~|<S9xyCcWfQWe)B#) z3^sU$QGeP}7u#~Qb~Ti-vmJlhrCGT?J#f_vw%@<ws#o!Fj0I5wCo(~%54*kM1AjKP zK4vc`G9}LMkMp-4mQ=cxoln<1%$iH=4m3PD>D?BWUo9ecdjdse%`<nRqEBpD-#uA< zb`VUGL)FP6gffeuFd!7961*7*Nu{`ZCY#ruq**Jvg^qdP5eurheeu8zx$fe6wi^)j zx`3`SX*DG_Z>3H+W>R0Z{iL)hzS@Z0pVV3jv(~ZK!NB6{?zy4VY_R(aHDdQMDK&}M zR29`2QJ1(?3WH1bivRK#Q@K3TEBJNV`z;nT%TY{(xI7E1&ap|YX6vd*j?*n-eg|;D z$cTTgT{sQ8&8pL8Tt5Cao|JKUm49v?(U3W=dkSpvacyl^3J28*d*A<_Svh|)r&o3s z9<(NyU%n04KR{*Dc7FMR%FQrz(fNn90fnBX$IWK(zDcPJoc1trG1Wef1L>2vJ4?N1 zM_}Mp#8&CD&LS|r10>|U^)X(#)-~<-XiF`I91I-ufJqKWhuCWpzJ6wxY+p5Q`E~72 z*jK{WwFE$s6J;$wOj{|aB&rKea%<)C%ZJf1&vCbeUYEV?Eu+*dE^GLtnOEiH$l#g5 zBHI~l%6^CS&Wm=E?ho*w#qS)3kd>izJy1QhW^++k$#xmAh$>RiYu?~QQr`pE44JVp zP={NTVha)kzIA?p;plq(34&6tYLm#UDaF*aHUWxEp2e$8hu&|z1E&0fo)`KCd%v=j z>~%n#W?~8s=qz${K-9W>hd(fG0Gp(en)9I0a*eOB%q>PhMreGIH6GjUbu$)CeIL<Q zS@Q;;mPc@s3E1CEG=CbCI+7<e4d-7C)wWlJll~137QQbjd37kd#I8-rKwA#cQP)TS zTh>*vpy8{7;3v(%iEwrxAVn{a--aN9oWt8lu+Wu3o(IxI8#MH<0~0?32@k&)zr?7O zF78)GA^LlzKxVvm{`vT(Acxul7r#7_f7K&w0&qTy-17O;1poFjfSXrnN_JDwk!tt6 z4M90(Vt<Lh5x}e=U#s*M0xY4>qt(W*SdSz~T9XI6x<vKDNt1f!4|hM6U5xCwyayvO zmY|TqxjE_gz+pgvTOQP8Fr#3Q&X^bhQ6;XNJ0C>4)BkVb=g}fQ1qo78!7!l#F5NFH zoeL63^8tH-JeRxrPM}HxXr$jDi}kF+ZQycjt@H_T+_hEtn-V>&_1@i99JYkMP)ler zP!K%DjW5ZO<sW(v9d9fhHmU$U0g!V|!qk9^n?JUk(fP~*-eN%CBZsY_u0}~w4mG_g z5L&Ts(bZ~wS+Oj?XA3M2vJ~<tL){k``)YKMsN4K%m2uMZ&5(_9rr^AZkHs-#r^%~$ zUK{%#9mkOh<HEfe(*w-)hfz&RcR=PC|8>4E79e5l?R9RpfuN$EAMU-y&gZ@qHGmE{ zw)~S?ey5{;Q0YcI$YF+v1A)!L&lc)i1RC)J{tQGZtDb?1{(_6?kEVKj1{#qFjbJcD zXK+1sG8B*3M^DM%Pm8^1BO7t^oSAu}(w45{a||RHfj|4C`Y;eXXcvs)CSOLjkzbEv zUp**SkzW46YXMKT<>W3{@?tc94mJMYZNE47e`ofCm+!RG-$m1BdG}zwF3mr)n2i%K zerIPBg@Sv3xv4HyJV_N}|3T}EBF$$K$@%f1Rkn02e^n2sp7P<SeR>AFpkQoi6-aFn zY#kY}a2S1!`{~*<e9hlrxaLSKEk%wkhZ&bi;FPL#-(Op%43iWdczZ*UlA1ShII+dy zAu^*Gv9Ld8q0p!Lx*W;{V=nzLVr_rC{l_P5*;<jPQ=xDd3EJwHj^Ckv$-5gH8@gu) zlQOtu{qo7YR%Urq8n4Eml9EQszr+pjosFiR$6;aV_4_|Bwbb{o*3CeXD%&)uawcGz zH`5xb@I+7ST_QzEUY@M{00^V;)&F<SFq|M(1F?EYeyi0L1V5%?IlDYz+g^F)DKn;c zz31S!Z^HQA0_<Z(<b)LkA!P>Nl;%B$qg-I_pD~b-;J;9QsBEw2Q772A59w50b96!j zP1$1b0SyP_E{C;>VdNcGSCp5>p(_%X(nU|3EQPvb<=Nc%r$v(b?tVy9TQA-SGLP`t z1<>tkUqo8y>kDxnu;TPu8ukXGw80u>C+Q6+C@j@^ye3EL%glS3#WM{&gWv$6>a%YG zl5Q6N1hu$R0$DzQ*lup_GMIk%!T{fa#2pY-y==UCo~NKH7Yw59&ZUmFcX+>}{$S<p zqusm_kFk@yxXmvaJ-rc;*RREU$KY2KL)nUe7Tae<e0Xf1aZ#ea;(!W&RZxJZgNj`E z)om$CL7czWe|OXR#OgD~7GCvAg*Z>hW|*YJxom{7%_@1gB<WU0sHa&XcpaL)*2B%p zI_NR6HHk}ukplu&TN34$=jXaO8V}0*$!<=o9KH}j6zn!LtC=}a>X5^l?_K&@8mh&C zcmze3{@O3&A}}x|$IsvV4?xkf{x+l-HS$Kr2IMh5>I)B%{Ik#^K)PFBD)oj=7w1Ih z6YW<K336$Gaaa|%5DF$ylL@{cf6~pX!l5=fVV{>SdDH*l$Sg;zK<?^RKK(7;3WiXH z4XdG$D<VXSGG2hx{0YaO!}C*3T=1j&64QDh$#Ka{TKZYr{hdlW$SKg3c>^#Tm5QJB zh3U}%tc9V4Ri9ryu;6L5$WSB=8YwjHp0$A3r>~6oVK<wl)X?;d4QPQ;Qb8#lVF_<) zwRV>E;1oziGVRXGr#+FWyLUkp>r);H?}F*w#r51M34YRXgWO1J;!P#3TOq8ZZBJ{D zE)>Cy?R8kXXB&oVVNB2Op+OYYHI@L|zyLhcdpGx%I#uA;kOahi|B+FMy6E`H9E6>Z zyOAC&sddEuKfeL>RkLw78UCvV1sFa>shqpgZacd66aR<>1up^gwwGXG`#?I6!RsB9 zST||rslWHarN`f*DzV|9>!!SWwr<{}6EJlx)Gl^Ty`1R<+dYmu>*32@W8k&9Zd7S} zFMrqTc|u6-%00pA1&B5kw*sfH4atJ4NDdpwy23aGF!5F8;?I!7P1`FgjqZcDW<KCC zV~@X;mS7_NBC<z3V>WB>!4vzT2itMI5hi8*xc|FF4Gj3u&{P_3oJT(BzHk@py!H?V z#;?@naR26sP~)nR&e;Q>NCtPy05pEylXsL4FUEh)MuS)mKTv)g&O092mFgHqBl~!` z72k}TP^GaCT$(C}ws2A42EzDGFM$D6Vsb)FF#hNjYdmW1Yp+S}kjxq7WueQK^@J(z zBa27)4{pBY%D|r;z(3h<ic6PM9|c6EyWO!@YhJFPGY$+Ngkr)hsnBLW)3|pNv$J*h z3jvw--PpR~j1Nc195w;|1jmqkv86pimNk3Ig<53vvhTHjhzHI|?O@@BNEieD6SMt} z%|ymkfec}b9>X3$rWikepv@@EZ;Wv>Cg{H)pDzLH7So|s!`{W2X3fqC3FOO8+!7Lz z%Q3fmY~S`Cn}q@3S{^sh3?0w+oC4{>{Z<@+49S#gM`lAm!#?x?oQ>xjbmd~bMSY+1 zWtd9j*PN97nl^SIU%0Ciu0;@DC%w#cf<-Q?*5M`BQ<pO7XKgi>cOH;KeB*hQ0vXCp zI-y59JDR21E|>|DqNW&bN>7*P3U#qHN%OI3VH)4-5uzGo-*D&shvWITHET}uE?h?a z#1WnsNEA=8)N3(wN5|6s5cr#0O;+#OS*|z$Tka6jMk)>Vc99W3>ov-|n$pWpPN1Tf z){S#|RfC4haSOU<>&*obtv50-2Eneev9f2sURvL?`?UpTB|M9aAKUK!jY~*$vw_Xx zR`L6k{MU#cKaJM?>LURrj!c*;I>o9~@5>Fe#OXbWNM-J^O+7ImsBwGZjkJ=FWCFUQ z)i<c-ACiFC0($nm%QT-zmLE=Z)#FQ^I5)j_hdSLXs{0mdO4r>57o;uHh3()mro2hh zDW8YSHA#mor(w?lI0qW39Uq`RkkYR~=0OiM=y4p;#&=MEj{8e7W*!j2?jy~?yrv2t zv9N&jJTPPRXIW@LDU9`ibKSV6!DJ*%RGF(DZ1@XHBa4T;%~nPe3)MRMOP}jw_dbn% z%Flzw7eu6BaK69!P**#F$^1ST3)`r=m)BR89aSZH<o8h@`xbbE-vu0#0Um-DQ}Ui{ z&<G0|nP%FTPXThY9=48^>zA3K;{2GjFwsHYaQM36Z@(oRQaKRUZPqyl0OlN1$)nGO znbYb)7nl}(0%c-rYdgj($HQ)tCUrxqkP4PJHLI*JOy70Dx?4-|H5eR-9tkF+c;5DA zYbQo6B1Bt!8Yx>lZ;`l%VY~yn49j}abx>m>%ge_MJ5{9W@`H%c$N6w`OwKlL|L5SB zk(V#p?B(5yFBtp)RqyIOuf4iRJUXW=HL?*K^~z0E{oifx(nWvBH&6degRT^0c;@IK zV6UMIn*}UH;NF<uJ8eAurc|s$TnlPnE)Q1PzsC^~*P)&`nHCee{0J@<a52cH(w<~k zQqJn?35TOkt3QOcaFd;xTZILpw_5|!p{1HU-;o4HIo#j<P_~$br@Sk}>v;C}Z~28@ zQN%uxv%~_lp|LUR-v+?oQUk%Woc+D)@C`+Mxa;tcYIlrCcE*X68R3~k-1#{5_j|KD z*_li<tsj>ZatODwq5J{VI(Woia}b^FBC}Sg$Zh3RJ!E7$9;q3=9{4Jqc_bfcwVbRr zHfHZnb#EsRW{sH*Qk3!)jY>QId|?wI>G;jb`sQgE(sb1K={JbNW^bd5sr?z8->n97 zMQfFf)`J5*!04D})+hX0zS5x>5XfKwYP0<PU%x>;PX@A3>|W8T<gRl_gzF|X2n1#; zEiC$@#H$rig~U3cWrLM#unoT2cVVd_E7Y{)_=*_mdnbtO@gZs5M~U=%kcNSMWzR%> zRVhNr5kCszwS&KV!p9SKpAV5dyrVamg46~TAd&+jd}j6Ik`hCUEGAu^|Ca0r78F>6 zGzw<len{Jeu?G$OpMn9PU^g)fBDSKrB<^#8l&W21$}7%Gy6_e{ivYHTIJ63fZ!I&i z`z>?@NnjNh${jOmfrw0L8tBuZ-4)61k;~QZJu@Oub+~*ch;^m{K#i9w>$vKi*lHv| z;WWq=fAcMK*sDd4T?a?!plj2*D`64V_JE_wlbJ)))05LvfxsH}87|5#qvjVLJQX8Y zBbtV7bkW>{Kl)nf$jR1wdxHfZ8|mzO75*LRsn%S0m;zVM1lmg7C$|(-ipaHJ7lHR@ zK1d-OQAmeqaeA^HMf{2RO2c(KCx|G(i?K=JdRPNuYe2!AHd+#4Ml~}=nw0GXaJ&E9 zRjC<b$6DY3vtJ_;-teqVuvS)hZvq%welTMg@c?;g+G8FKMp8-0Sowt<Gx`&?`sJS0 zHFPLFPH)fQBr`|o2pQlBM7CD+Ej0AnC5Z>o3=Iw%Iu-*bIY)<M+ns)sk`dRO1CEVP zuXxix5b?HREgiOd(PO0D@}1G;v?1Z{EeHmx9+&4f@S9nnl$^hR`?T}kn<JgS*Tq2c zyV1OS`G;@Xql>_vAKU8nwpxNMrjI6a<T2nU*nF)U%)HQkA4u%E(G-;XhXLenkfj)J z&M)bdVW#pmvUcM3Z?JH4%ZwL-IHgQ(L`isU@7HWk{wtxxP($7&!N3qW0W~+Ciq!4a zTIKwFlIwhk#7>P8w}ja;%;ji|tCMP3-CZ(QuK$$`%OVgxz`wZ9^Rq(7eB16D*6l{? zDgbM$dMQ)y&4M3nq(s2g=xh3Qm(+xU;}fQ+quR#xz+qN$O=~vBD@PzK)73zgbRLhl zjpj>>JE#9}_fkazOsfBTHdZeA!}e}6y_CU^Win6Po2#F+wATv=h3L1jx80GJ^SJ;3 zJoZUQlWUBaqC@KP$;o@8AM<-BiW}ZHFWbJeNs}XAS=-%&vc&N^ykoo{mqRbM^7N>$ z#bG^%*sX{4r45Rd)VgP&8~95!b~9CD5z;ilaCcfxu6G}d8nqP6NVG%8wIUf-k#iT1 zy>lb^W@l7zKELAEjSyj6)kF5az)I+YAEc8V4*UCm@8LPF5pf~C@o=XuOQLzQjCgS> z!7!?U;K0o1TgxIy@xn95`%&et<gp0GK*uUF<r97-aNy{*DGfe%3JPVzX)=9PNqr^* z^8u5Kbn)G49-)B~iZZe`WxVB!7p+1My23z<)>MH*3E=WRQ;?si6R1o|w1XjW^@Wg? zexJ0XwsXQ9Wr2p<<dpZ`@-vk@h_Ypn-RIA&|DQyMp(fyx3#Ot$Kxo<o4ZjSv!*D{V zyeMZ=E58@D8>&Xr3M4Ejg!6vMhr8N2jxIGd2-Zo{zrW|%KI7|3Y5wGEWgUBCAH1Rd zHlIs>QJfFG(1Gouu;}L&;++)Kmh#L%U*B;oN8ez5)h>V#)>K)OtFS9n?}TpZhcW}< z?2f#|rTN3$V~O!x@^6f6C!UxNs1a&wy37q3-qe4N${rp-YL$j52iUs)o_dXfK=3rs zD^LgI-p@ADXGPJB9Zq6xP~>W?kF}b}rEYVfCrN{cdZ-eSeF}TZ%J+@Ulk4!cX3$Fo zjq+?oQI(PeEz(@<L8Mp3;KB<|eanDSz_$021IgX<PQ0QPNy{S|7YP*Z#}naV<z#|M zjFMh&n!bWC@7@$lLxQ}7GGs5PAWDU)H!~;{6GCq`pqlDSuAG#V%|B>BjIXs*eb-7= zV@g`M$bM&czOJ8#9iL2tQPkJNR3+EBO)&p^pc2jmN<BL_&D6sy$B6NEQVnH0-%|#c zhliY`tJ&SkKxes%wC(LsDF!Y}jsYFPZe_r%zxK5IHka4`C9es0ZCj}y9c}5D-Y_i` z#mGkRF}yR5jo_F#&gojF5mm&+&5ob>G*wpN8(c7Wa)Pq<&dd7Weq~Q|_j-ou0;Cx; z@V2{FNiXg=nJ7UeE<|9^IZ#;t(OMEps{h<LCq|&lL<SQoAQIufJ?^g!TQyvGr$D6) z=RypgwmvxI&U(eOo?cV$7Sm(>7m|%jcJ^rXUUG@wmqDN%J3D?;pA{L@bk6J!zcBS| zH}woOGftvqG%U7gk^=amu{=m~n`@85V2gMPuoEFPhes$PKl9!E?oeisJV7>$XyOCM zXG_A{&96lz?n%s#{Ps=R@`3}k(10D_v|Vid{mW3J&lR2d+#9LTe;H5Vs4|JlTV4h} zPqykOg1Lz9n1lpb+OHGsAH0ejn{Fwe2fak=P6ViB1|nLf@gj!6A^`$cZoI!PR3y=o zSfEn3p)lJrLe7<s0`PIj;2=qof|vrZOrqQ;J~irI;>8_Z0ZGH8nrJ5pcMRSvC*A)p zSk^=Kc+Q<)mlk+(a*UepD*e>zicd<IZC-CNE&+n)twV!`so}RrzPpqrEQ6MY9x(6; zvCw-L8BK-^0k0tikIz!h8M+FLwH47c5o0@bc>=qb`VyI{-MVWESPbJ@BuUSE46OT% zlJ<@qgWcpKfG25CJcEh#j{Hf&7r4-4Xkpmp)!|kNZy-!{?^puTtRD7AbL?>cm0VoV z%HBm?*N+u4&gEB8O=ila%@=f9_J=xpk0HMcb8)e+G%;?8K8HuV4)eHJDEezQfDp-8 zt}8oTnz_Ke1w;Gq&xFN==m_M6v=XkQ4V(Zr@nwJk-@N6DxwGTx@UeCV(b}l%==-p_ z;2-Xs#nIa8&{n?SKmplXL9+#K$Z<!|ar7L<{mbfpadtMTEPdYdmq%kX?UMe6gY)ER zx%f-mdimd_ipup_g%iOMx;xTmMewpCy)kn`Va^|Tq-Xhtlml58WK0V6TYpjRj)`;I z#_`ZRFEL#8MHA|mXt@7(iR0S~3u1^8q2}>Zv>*`ol#w1cKY!FoD2&^Q^l-boGO9z> zT=+$Y){uM7vPpgaJa4dvG)nPzbfe9<p|{3%m<wZpXW^#uRCEcnuaZA*Q6QQ#wmWjx zi$YWdZEK+$E=0gek=H+rqpl}*Z%V0XN+&I!={}!dZtIl3cs<Sti;zme2g8={b;X3p z3khwcaCCEIHWL-#8(<Xt-vx#co_@LNj&)<8-Y*+ZB#V-BxU?{1<cu{Zi?WmYCArCi z;aD0gR6jJIPFPgZo<>-BVX6Bb*Y3TK*mw~0sMkZLps~5OqjEHKt+TX-9G(83@aGXx zxf}=NaYTd?CQ#d7%XNX=#abSRn56xGxtLlXqE~5I7f7E4HhqHqG+Vzsx%~lSNJCHi zd5L1C_COOn0D^HCtCF`*1s|@wk8@|&H6G&y)lnnjkMB13=M@Yhbfy2h?shWH%VL#n zGU_Q3@~ER%#rD~CMbOAsZp*UEZzym1Zl<*yNz8A~{pEAbB`iI==<M5kp+j)A$L3iw zcA{g+@KF9&y?CAZyzrkqi5>KI77D^hESNxXT8L*L5x-BH0@Z?g9Vwyir}5$qK71qJ zvPm?1Dypo%MCsmH(vSEpTSVcDi@lU)$M}1yy>2y2sy~g2@jg9&D_)LMKUv767||gm zFjR21>C$2^pj4fIOe&_xUwK9I1@pg)|8l;|1!H1BAnRKfU6RvQLsz$R3S#d#LaG<P z-C4PxPV6$1yYn{Ru0hwE`Y&rFdh}2L{57d=F3GwRo*r>4`sd&hgNS+e%os}oLdMSb zy54L*(^$Q|xeJqWx&u{6XLb&A4iuPNOvz$OzSzd1!z)+TKV%lpUN$+o4zKO8<13^E z+O6*Wef;+Ew_}%t?`Tw_+horpmgX*+vPY~U(k}eU)>JI4mya0#_mXJh{8*v$_?94B zbIAv0mP)XlaGe>M`QOYeS2R1Ni^Z%NM1jnexe_p@(p`ZDF~cfeKBE@Xm6czi#k#+q ziP4J{KYTXPR*N=5jpKN1FGgrIdVnfa&W<kL&fzwgyi}i6n3v@$&`V+(ugmc+<@g(L z_;BHCuw2=4n}~Dm$lm{J>dWJy?!xwm2!kv!G%`p}wm}Nn*P_T)j4@;zWH6SJhU^SV zmZ#7nJCS`bL)nE<LiS~{C#1=~j^+35ecwDkfAm+M@0oMXy<GQo-RGR|7yZ+Bl(f`2 z_UEriw2BP|&MD7zU4p!REu&B0-QslVsokRvIRO%Vs9oMHh!HTJtX`$q46cQsw~aq2 z;`arllwjK*(?$L+e_;PP;A+^A$a|yhF7Mcj#t&PwznwN^p557*b^N#B>N;?K1D)Td z-n*_leI`!q`|3yCT!-RH9Ch}|RaWUp0;qUBGzH?09dPhJGga6s`~+VU$dG+y=gVb> zo+NzLk4{R_WOdUGDEyVNSSROjm%&RzK3XvJC;jhPBlGOUq#Z(1bb;DMXUeYj+WoQa zeyrkdoWSo|!CM1cYH1Tr^cGtWNH@AqSX5ci;oRIveIqk&oAU8|8$l^dTD9Yy{55?n z&_}Sf^M9u^{?(%)R@w;lB?q`>*!ABVIn<46NYKuh=h6F`!1!3*5l^rq;LvFMUTb}x zmcDiT6dUYw3$m-NK`ZuR{;O5Jb)^p-`nGNZ%pf&$=!m3@b@-{->sJY@(QW599Hp)2 z<}|I4Q58QP#_Qg6Zp5&>9K9J<GHMWG7^l6L2EM<$8duG>IQef>HCU=FBl3f-F-iGz zwMcE_n{UgM1f1#TYB8)pa7Nsb>i%k@{AvEWdg@}VPKD7Im)Y}Ii4!wF&`O)?BoUCT z5v>tLb@Hz}lKg$UlBR?&kw=+^6{&l?|G@D#;{Q4&T?dqo)i}gkPPo6yp0)da4!!!G zFd_u4<F%VL9|NmJQQ;W5zV&Mf85*WcFay?M4F8f7!8J_=>CQFUg7mNirN_tL;K}R_ zC&b;C64Ms&nyk<=^4VP<x>*GsVUdc1Es0M2;6NJPITD1CeB5N#KrivNean=dGQ~4i znZ>}p%lcVq(E(r3(;hXLWXAY62|3@+({Oo>+ur_1dqGT}hGB{KAf*+Az+kn?UBU+` zapK;j$5FSh{M+c?tuRfR^-n_YOHK8t{>6)j@kZ#&bi%T}YGvCo9}pC*pWVCRx3<fd zNE3bc9?1R;b|dPFo>X0%(0)gj=FEJwsPGX?pW9XLN#nx?T%vJ_%b`dugj)gijLg}n z!>Sn9?r&4qtMlH=5>>OfUDjg1f+gVkoo%>7OQzYc!@$pczr4}WVd|vhofl3z83yl| ziycrjmcufBi8uUm^3iWrUw;th;O>>9_0bSAbu}&(^$Pqdvj6Q-{I8J4=u|~~(r=nz z>e0Bv?9r@C(UINK(cxeQVcGiP=a905H*aJkO!3Z{pDFo2Ze)ILH}6Kg?%JOR*;_7d z7NXQ2lYb{0+|S!Ip_wXJFV+NItT|`8=lwU%l&4m(8)a`L1CMZK0v+$Tg)WH5d@P4s z*~jhWqpnF+vHcS}F6*+NvMUqT%z;OUMT7A=$ibgQZP~`6Nd`oIM^khRq=h_dyx=E0 z(g6BZ3=nXHuLvmob9{S$aBs_<B6iamI$2ivJUU5%=9lcZ{c90OR#|*<;z&S2=iw;j z=-?qSe6*m>>c^xdbE=-|&-p;7oTKep4~pfO;saHnBg$@iXo)ck1j6w%7Jr^|Q&SwK zHF&V*x`q^%C+o4gJyjAJu+#aQ{cEKK*!s>H=dUYA8LY^oN*-qQ;!@=&FP^*<vhhY) zdAA11Ou{?B^wmys>{=A%yQ7VM#9m9+W^=?eN1Ne+T+y^_NCuC&Hp7WFi#670M$G#F z`Qyc+4N=NBre|Kr9$kC+{qe%`xLZ&Ry5miYDtL9}N)JcS^^m}Qx%k`_zbC;*j~09z zIG;6p^=jx)EKB^LWtE~PRS7E>Q%cWRFarbaBUKP9IAw&XsBcN0DHg9nB7L=p-o9@V z0fPK*!rjs*u^aM$vw;|c<Lr#^0waJCmx9<k5;j3OdZ#2>M?6Dj2(3A$%tf{#f_zUr zu38$z>W*~-cY**P$o1vcE%D<v$O~YzO*YV%5_Nv?>)Wzj+w5X*!AE3szW(1Oqs>ia z^6P3tlf|kW)YTbr-Q9;Km$tM*?uR3H(Ra-=qFio^UQkFcFW)zvL=kYOrsa}4i8W;% z@sd2!7mO|h>G9HoK=!hLA}nLcNB&ec^O!a77Is(gS}>TP?02!|)U1yzO!hKjWt6K4 z_@BUEQ?TTVrD;GRm5n$rQbox?i@R!MoK$0X7pC!_;-GqI0J&psPRQZXBIEa1Sf|VS zogcbKoB{Q*{H?dHpTx0M>+?b)63luVR8$KSLBhZn{o>-oq>>T$q$lp>H4Op?;4DW- zEW2euNF3j_<9Qlkk-&Y&GuYR!(#d<`9iH3n`?aStJA|a^7gmc0yPwknozC`%swuLf z>z@p}ef}JeG+QxYHF0yw5&VNK{c}&-40z_HND=S6+x#q0>ZIf$t5MAlkN0nsjt^ma z%KJ^`uc3e#!zSu>^)GPxa+Q{8axn+!>{(0I<bd8J@QcPI+Xbj?BHaj?$g25&VfqS= z5}Y5=Psk})a$il02frZ}RE4GkR+QpDWsp<-02@}6WXvtVR@&m~TVLbLVuQW%H%NuL z6DMS4mRp*eMX<=8)^OEj-JDgGVD&U(-D;Y06oJ|3`)$&+hen1hgbTd7`pZ}2ayq9; zJ7wha+z&^QPMuKL=RUuD5{R*4;MpIXRL4-SUx+Y)kc&2P=fdJf6jkIfm(EDXTbH%q zzQr~Jofq$q9j&8}DI1(H;C5F|DVsyRF^J~XqGj^s=r`DunXYF4wyIhEVStY^EA&+s zBO~5!;39eUNq!QRd`s9c3w0&c$ng<~`Uh9y++a0;F%XCk)V&o_jb4!Rs5`bdmLvYP z{=1f;Ms;oZNH`N-e~hY$7G^dv6uO!5X1`1+TwCb+>DJGh9K#Zvvn9y>#h0s*IN)7O z@uzv%a+}gN+CaRs^ofr(BYEW|^j1*2|8cq}gH3~<?&W5lQ^w=MhkaEZlhd9*R<Pl! z8Iw33u-3!Pd2em5k@>0G2?a4hp~eI{r6ALi#seTEp6)rN7hDoARz>3}?RS=UW14#B zubKj7mgFU(lO4ssenIma@&ONJT>y5_JHv?G61+>Bo(uG3x74_m*feM?`hO4twBHfn zdKHVLZt=aom9D+zB@6BH_TOa^sd-amj`I1EAMR(IAc4J$^K>Iiz9{l({*t;K*zBQL zYehn1dW(fFJP!s|ujx=S*-fssY*r7y*KamFbT6-mnWyTUH}M6tJ@5nm{Bihro3h2V z*LvSu6A4y-_0*9ww!CBARdG^U#!Hvrs$Fcme9p!$<XlYh{n6FP2|pLn=?`*G+h$|u za~b8m$bAJm(&f$=x-MwN7(pbKdKxgyhnT?3@I4iofz_;d_Wq{i)mdFV@Hx)^b8b*@ zJiVyb#J(uT>8BqHy*l4P*C6nafEBZ`k;3?I%WxG{orDq@H*&?l-gtiBMc;;t0o<}J zWZoe+($w3;Op>9O(pR0-*MzE(w_1>r7+?y!b74hpn-*+$7D>Mi8@<FF<H%_vUy7%A z!=#-48x@awG|-WI*?u!iDyKg^L5B<MAW=N4lGY<vpvx(BR5g;-UWuZrone}vWx)ux z81|7~VLSQ`?I`(P`KYG?aeJRSbm*;s;V6dFg(&LzB!f*QM7eokyPj<to8z!ZJa<)8 zk+xcUe~jDIsbgEQo15)d6VGPcj*SiB=JdY+X$=sHK<<U^|8U_CsPE(-&_491C8nb_ z(oJK9p_=c=R#aq@p$dT2+f?qjTi?mY4hU3?*aDknn*ud@@CzX`%*V%A8vks0F{nLI zBQ8t|Us5;yq=`3}{x2e%dME)(Vt*_Sy2`w;D_(FPsJxXVb#j_r&r{UFHS*B;8zW}& zhdJYKd08nR#|XA<J_=(l!xE8sREt=Dh6-SY>G27t&E4M#W$=RAc7n$xY!qNcqd%?L zx}<Q|rofG1e-qFOe+3qqt<~|z?#Vn;{^Bd%ep}V&ne{o{w-@~1Hs#2)IR><UKoR7_ z?_FACvKMew%Yy7nCil->PepOV-jFR`?Ouu*e4GW>g8-3#U&X6uQ0~P9pQJahj)Ssf z0L*LYAWKhgsirg4AWZ-2-$0GKxi_^9NW3;tp*jnGjqRMA?CL#aflnLAg-X8zDvKjE zJ>Xz-<{pF(wSUu3I@?zzL$@*H+Dk_3YhiF~QL=%Q)md}qPSUteU5VKhjfzAqAfYz7 zjQU9lu#7*UB3#n_y}q*Mm|d}5+Iiw9r6%_`o;KZfB~C;?f1a@FL0R;@30hzj&%7VF zADqV(i>MgS$-GmvDMDhik{SwJtxLrRAE{33dq{IQS?TIZ%bZ22>Rx|cQJj|boS||g zg$~rDVL&PQd84v`;3B1YI4t)(K8>fw@r|%8=y)UF<)T@796{Gv7l6a&PFx4CoCOG1 zg}&I?g*-uvm0K6{E(MN0an6~jV$R{hGYAv9cslwV9f<)SJnp-;(}GkXaU)e1m;};3 zb{K&`<?aYd32;dI=Ty^J$&VWq&ai}tx^V-tp33M+oWrrf=KnCdsmSdG8>5;KUNQB! z2gzsYD1#ljVkqjcVDp$ZYr??QD`)*?Vsyf#IwF2`=t%3hX<ss=m9FB-k-l}dwx=b5 zRI!^4`k;fDyBFkxX`jWhW?I)Kdlr3?q<{@-c}YCS6I32~S+xxyur6c^UoKf&8;+lm ze{IU_NF{klrQ8M?Y8M9|xvd5|t)ASqp9L4mCFOCcMMsl3`uB2W%>z`2?7ex*MjL>& zB(0c*gRLcSd9$x|viK?4^}xhra{k2^UwH26@jiPTtgL-(J;r-qcL92(6#<ie`LNaw z%^ADWv)(tG*_#Mt|K}Vu-l$o^$Q_InLh7XDMvZ%zz6e}>tBOg)Yv4&<n<1;q;7r^0 zU0BCj3Nv;RxG@|A>bXXq81l@U!aV>kv0kWu!PN1f?%w^&Z^yy@$KV3T0uGl?_4?S{ zJng6*$p2wHgscZslXbs9<Albof7j6QsqI01?M8dIg-be&8f=#-y-g&;{Bws-6Af^c zS4o>)U-&3{@-p6Ts@rYGD8NgbmQBkI&<qcrMZ}jqcyxQ@^H@n>(v<MYk1W;>(Z^xW z_Q{pC0k?TMhHT-X#-oD}mXJCShoeMN4p|3S=7uWXqBCCkSXaK-&VNdf9rc?8ykdZb zK!C_75D=WH$a?-S+5Z6G=9{y+2Y_q@Vr`JS%J`CB{2yN{JqT<T*Z!q+>>P%-7xYCq zIYKvRb{_|Mn=@Wag`HKu0BL_EtA9FpW_83T;EOx4zb(8EbEyHVlGb`Lr3I&UIKsFz z8(QV<22Yyv$nxbBkgP%)h_ix14`#{iMGi$dUrfI6k-P90Q{OpM@+AoRmZV6vAVzeL z?G>AK^6m5I9IGUaas=&JizY63R1bbv8y@acYn%{74B&p<)mU7`D3O?r4V^#lXY}62 zI$p-3jcRA-o|@6qKbJG=!EFuQR5LY%<gn6#Mx<e+irKKWdr$4<fQP+=AWo?zJYR<h zbPiI&=l<qqkJCXbLBWSYKITap3q#Qqz&p=xtm_PsuSzCn_WA-3WJEwRfo<K{i6w=l zruy)oD$~th$0LM)<wit&%oQ{=vVuAk_~_1{S&7U=L78#9AL552fj#YDVl3gQAua8F zb`Kiz@H?IG5JRGeMgEPq<#9kO$F;BwKiayZ&m-u{{*eA@w=a6tv{${pk8~0mq2aH) zs^!iuRtXO-2FAx}c`%JQkM`oDqrrCv9Zfs+iF-Rb>S9$Fixk;(fJ{~g#~1RHR+L+) zN0pr7FqCqT@~ZBm-4xJPv$bKirfUp69=D_-OUMB}-MQWy>2~c|YN~@r>$w=BW>x4Q zz;ggGl>=4Y*OE*MYo2;k2cl{9;2l@R6`glye(!~sKGi#@2{Bi4SE{myWC1iW>_x`K z%*<rQ{Gv~v)Skt2y&>xjuhyKlF7dT?0H8D7j`V+fo6pe=93~-O`X!e@SG=@j!Vqkm z$VB+LS(*8RPaP6q1DG%$UKFq@(|2!VAVl!$u5wyDx+799c|>2My91>NTvi0#oheHf zQ0%Tut8$U+I}HjI>Lj78a*}Nyc6JU^s*-P254z<IBk>uVDn(IJ^@rRf`gDfB5lUD# z5S|6q&mBL!9Hq8$uP(0`p_)K<*8R`)z3P0X0Dfv_*UI?!@J@>HJgX>}FkE3|<u?0u zr==?=!E>gg<&zVqfbuUzVB$@|eeQG94$5bQ3MeWQ1I$xZU7te`<TUV=?H5$UQ%;8e z0>7{czhO-pJaApaT(V?`2+`UL3P;kei=0--SsWubxSADDHlox_WckgQBjuCw+=Uz# zvWhpaIeT^7a*u|p@qBTN6amWn;*%wAv6N(|z^OfV$1yhr+mrjzH*l{IQd4bzD=pC4 z_1O#EJx4Ij;uoIV;e<$QEjoDIg<|v9pI%Bs30uQIV_JMSUbmNS2E33nrEe<e)n)Ag zqy0n8>|)hJJc^%ry8mm%+O2r&U9|^I_$4D~#5NUL0{6~a4P%NOF1NZ)W<p)gt+tY| zpPLQ95a~&f<CX1s-SsfGlTu?^(zfVFJB?<k4uvHkmVyd~?a1Y!X?ej$*F8;kV|3K* z)J@NgK>(me5R9eLkKF7LRFCFSLx{$dvf^jj5sAO(iS$;%0-(_Odv-Y%pLN=TONNX7 zSd{OBn;kn^!Xc2Jpua&%YhoAK0`O4_Cjx_9dyp;E#FK<>KA{eXBT_3N7A8c0g?1y> z2Y|yP&)#x*7-NxRiXLy+C?~yzsMhr&ohMME-Z`?akM5^1R<;wQW9=cJDY+f@gcd}b z<3B8S^2iU@zwb<1oh}qylJLm;%Bw9U+*l=40F+F8L|FAP=C0Kd+Hr?F5DEy9_^(TH zDc;t(BJbCCh&pso!|R;xjhHX5Tl_yD?XQC6VifoT6Zk+J^Q@DQFNJNxx^e#ZMu*_z zB;au4MMJyGpE*Ioql!|3Jv8^5@66*TDdz<RM-s|pD@T*`r0k=`_wC+Q%@8Mg-tPt) z{LO$P3K}V2yBl2K(~1PWVvelda$!guG7$((xF1z|2$-NkctY+gV>00%ZAuKZ0<;h1 zaLJp^91^H}%2ZY5TFU6_-VK#$fSuo_1Np^<o3}a2ojF}#RvpkK4l#_SNxIK^j;lo# z`|g*{5?5=gJuJ_1R?+(<wjkWz_g%}n`KS@n;^9|`YxLvYJMfC#cE9s?cba4j^e5|2 zHE4bHybLS~j<d+Nn((g<Cu=rVS7=4*`m2*y;ZFyb?eNC)mnqCE*DK<zCOos3JPZ+j z(|73LjD!J~Y_6y(7dkDCToEaOGdLX5>i3bfZ}Q<c>OsTSF1WR4z8`pA{m_mU#3&2; zb%A;rAdFn)ZKDn5&Zl3T6)h#o0z6fVy*DxV8QWh=wSTe5_IrK(2uX5aZ0GiTwb>il zf@a94>T1J@=-vCss+D}<6v&BD<52Q^GhDjQJu)jHLz3r7tf7Om&qPDI*fgBzY?S}8 zM#&2+egKrT0i!-)OiXP%8rNx9FO9l`b-$9J4|t5iCGR)CK1#c``9R8Lt2i+7-Hx5f z%bJ0jSwUgOFZ*a^k6u4!`CGQpGHo>zw1w;fP5W=v9w?{RKYsB-&}e~`ChsV+v{1lX z%|S$C9<5TH)PA>KE@wg0nV3+SAl;H;qU_7iyRN?;|3nv7WWirof~MwoH7x0*7@er7 zS?5kUHA1&;g(Gcp!ZAe6>UTu+Q#OXJH(L^W#aEXJ8^MNkEMD?IBmcyCHE+#hOf|x{ zI8wX5la;M;)x0U15J?fG@$bf*P;dmo#&#MeRz0V(;=w0Ru>fO^XzEVjP=St)VAJ|q z6r9!BVg@P2NaA5b3Stz1=d)2l?n<xN&`M48){*p}UwneBk4|KHQikW|g7jYv74D)$ zvtBdbjSZSN@~BvAa#!2{gR;vlh<lPGHg~(6?OQWsC$P=p!M5zvGynWe*S`d$ZR`Bk zGkoN9V|i89X)`k!Rr4NPLPiClak6lU(7fJA2Er82Z&S`9gzDqrF@)NJ96#{5<|H$c z-db3oTN1dux|x2wQIef^Vb^22IJM2a3eTce3<#2169rj?NcaVIM1#<Ph8bPauNvoB zxhS1`3Cpx9lQ%c@R^1tktL&UInC(wfA8iD`1EjyN$<=d<N`_>livP9cR~~k2)?$QX zytZZG2hV~8obj&?+86<Vo6p7@S%bxhX~5!}p~YWG*@QEjdsde;K8^{$^)YKE-vy1x zOgziG7+!ssH#RSq>U^3Ng`%a=GgVrRZOr7b6GJ;<bU{556x+O@*UMxzC!)$ZQ-}Tt zC$&tRZdr>tI5lA8vj9B{k`5<MeaJ())j!y4CR)s-Og-qWR&rV4I?fbZuQXnI$WKH8 zY}-CcNDt_jr|mFxbp5bPL38tqJg&9kFFNz_kxD;BB4+w7u0QwW_Xy%$!3)wTef=$B zg3>;h`m%bW0*oWYE?-0%4+TwWOxPp~vKP<-)iPTUd40VGr}GJVjW~Dz3~ESUyCj9r z$Wc_5P72hBeo&PeJ%XLT41Iu}GLUXIsVVy_9D$nX1;oUT9$9_ziWPnFB80PVL}$Y0 z?X`>2ZkXo6@x!Z}tOEYHGJyWH_Ir~)8xXu5@ItL8>?|M`C9JHyJ%g{@sNX$-pi|GC z8y>wN?eI;cJas6-LJ?B_tjbctCU1FZzM{EsFflndF3@ely!^h(V8MVxpKV)=7AOH5 zRFxSY6gcT5-84B%JBu$3zF#$^d%R$Yzzw&-Bj`;znfS-mFW936VX_`cQGk2BGf$w? zh&$}v%BDuS!0oqjoQ71ZQTr4|+0WbY%1Is_I@2s6K|lcR?6tqrxpYQb+MX3x@Hu^5 zzteQkEbzB=dEuML;*HCxA<=j8wWCs<|45zg|0{K__a7GDQf48JVb0bzXr%Zn)ft3a z${r)RPztJq<4@L&5v6Wr$bE~TK4<TGtbs!$zNH)(aI!wESj}0Uv6^*z?+vzKi^jGf zn_y-ab*JH8eQN~Aq0r~Svd*k&Ge$~_^aVs?98$NL?anV!g6^Ak3S?&L0eFW?VAt|X z<U6>Ug`@={91$RspH=v4r*T6$)wyRdb!UHIDP#=g++#65-(v~Fu_#8phZYX@<9dTl zXjdl7;`Guk0{QNRw9?zZ$}GtKvh)w}m_gS!<TeX0q~pN2AHa^Z>%s4+LcgqVx_#`8 z(IKKoT@6{yM_%f@CV==^T_hHK%Gt1jB@DWO3^PHV2{M(OF-#g@y#LFa?VpxXi0(!# zSO+l=xBRuKr0Sl4+iAh=<fAhjW+hSY`sU5|f;fyvH@jw(6`n{VhRhYZBSl#dbR!xQ zWA0%^sBdB_f=uEb&eE1?SW3e2W_xSmF9SF#z3RK`Ku24fCd;PBJA*u4Yl0gQsP4j% zIC1q!B6Yy6?AdC{3>tjEb{|w@sPYre{t{`r<V{FK*`6ewdY<`dKR)^MpkE1P(vs7V zm7oFZia<f+Z+yHkGcA4arh#K0%wc-Nk7nGcVMDr&-+}(rmgKNHGx>5@;9W)6J$$a2 zaiDb%sRN_heUgX8g0ACo+Ew$Ch9}KMw-#OJHtn>f(%7=Mf#Wi_nEz%s5XWrJZ+Ma! zbN$4%nuf!x1$PboBVNI-<WJoMN)|;?wU~^cQfz@usTjKeieboVKBC#ehFRnbXzHPp zzOW002;65;ATmBL0%7$L96vL5sX8^hLX=zj8+VEkYW-rW(abPxY|T41cY84)WnW-_ zBwB0OuT!yN_c6oh*Cemoke3xFuTP$$es~$UEb<%7s=~p#x6nB1@uupFOLgO~9b<Y6 zkl(*sgt&GqB^4E08)#=!VUP)}zIiHORby7AVX~t)IPq_x5*ppFgQ(o~TXk5h-P!Ew zy0}4mLAb+0S@h#{hqcdYFZgL*Hs<C?i6YpN&4gWG5o`yCgN{Dmt?MqtfTrH>FjrHW zOLk}cBrp>dLCFf7CGoyAtD>CAU)wMS*0*EZ6|-E@HqS|di;rLosXcc;g;!JudO%AS z*lm~UdY3eMxK4E{>WquAUo0VMO5mzJiPDnA3|W1XmbSa&qwV618#9fVboL3}mLErl z9`<hP<u49y(9)UmH-h3et@o2(G}rBZeyMrGx`_D}UFg=_+&u-%`wEwvwDhfNw^0&l z+>5X(nSTr;cl?*K(ieTtmX;k|%e))ADA(`$UT^k+%}P}}Bkan)8rBecI(z=8*G$T4 zXXxB#?~zmEzlUqQbyQ)Y*twjU3ij)Z1vMKDzk2YdPid;F!@Z8ZdSBje5*{z*e6P@~ zys=kLaVXpLHr=cBx)SVsr0lg{akRDDPKZxEtjA1Y4vs{y+_82g`}aqWqBbUjhL7CW z1VU<1L6$K;e|sl8>0&V;&)1Q;9=>x%7eJQRTd)(?=QQ=3_yGnuqsgo!z5TRO#Wad~ zdox&jSr8yY@36e%{!0?CENwXaTwJt!PKbnZtsKxoPS=gxQ#4*f2Yw6eHOpa9K*W<z zX`<DiCg+*GfIfQX0w+m<Xu_&%-DL3q`%jJ4uy1R^&#JGMD5?wMjU3<tgH>Z{$yjc} z%E$rM?qPH}BEo5O@;z)~EwgV=v-)tdau1pq<;TmgopIxE`9~4f3=;W)WwbF2{|@|# zT5M$G2nx-AL9$6}H{4P%yYSqW|5UBN*Z-%3gBpA2)rFq5=_*KK;38SE)VDtOwrWPj zh0-1ua}I58iosO(<vGx!*_}7OI=+`}ry&3JW5Y-SB@+lFJUQTD@lJl$wfWXNZha7K zwUM3};Dr%$wxNC$NBl*{Aeg>N$_kvsee*)jS86azTK9Y?_3hWEP(pk>v{|1S!^0q= zvM))j#PI_-#tP%mtEh0+&(ZYx#XovsB8SS`VM0(|-xD#L5xHQMdkFHDBC5PHfxP>- z-Ug|adT<&#z~aI&)kjYqSUsvY2&yK(`<dpUCIx2qn#%fcEqb$RQ5AI(CIcVdGD3wc z3d;V-2z7P7#ZyHizIp9MaKYM#wJ&_?gvo3FeU=N4<M|<x9RIA+L00xC(@cU%Ehg`B zYHZsr(?m}d!RV!>5U$*hUQ#dIvk;F2`Fwn>s}jD}aHq*lQf*sJAv7>B#+1J^87vu? z=VHA|2nQ6ybhRu(xXLJ)<#>705kM=<S)mZ-Hb>>)5)elYbq!z?1x$7vd}_JnZFPhy zmgIi<HLmf`RPQRjJ%}tN#_jTd0Sfe}kA5~&W*7fxculiwvpxz#ZguvG-v6ka5=x-0 zz6`vy7(M#5eN6Qjq^)dhWO?SSDpsLFSip!cF8yBtx<woQJp$SlpP(rN>%6z-pyr^W zc0qc}yePl(@^2H}EYqjkd|;@v%1u4qpRfN{N$%-KY72Tvd0UjEw{HKmQkiy9`wcgV ztU2esd91&K)P#hvmSq`?0`6Cy(81cr=AtzUyyUw9=@zEnF7Y(a6bRG*#J^&I#Y%(I z+VLWBmy&lKBW??Kwjd{Gh~2GBz^uGe=`ErE6wJEC9SyzQ-Th{LS67YTApcV)zNqYs z)Xt;hh=L0SBi^JPNb|%(3Qake*48-a)s&w_E%pgR!c^3Fv0jjNl{>#Qq0M|xuTs*& zkz>C{qJi(*PhxTb3<vvgi@CFFzF+B<X_ypanNo1@u`&*-d*fR?Zl=ci;$OdAbo0yS zK!c1m%fLIXqRFFf^ke;eGd#+?aL^e2vJwd=b7uC}Bzamo6rZ990iXA?eP?dij$0zd zzo-N}kIj1V;MEu!_~GaO`{Di*xlZVIa2Dm@;h!vqJ9l^J#DmzLOx-e|XYQ1Vfe4(# z3Df*ZBFXvgcJ-_hZ})FtVVY!Cp4%Jb?alD-IOR<nkei^QBg>T4GGhZ_?@jpe$45?S z^p*B1CD@r<*!wyHB_zs%TNiu)ML1=fXD0f{tqsc70O))L_^zJA;mw~l$*D?(rj*Q5 z7DhnS5av(=gzw>5;uV{&7Z@SN()L;7doy%lMSREAQ<EP-c!>7ZwJu&rT<UxlXG;6& zb9Ng@7+}iDPo%jQJUkee0Bv*j%qX}OWOBnnOTc2p21CB3O7T^(WpN^?|Iyb4ikV7> z1WI|z`)Cqz5c4SmI(XeNHwz*?hk6(rA3`+)A&dl|Ma=#w^3<Z7IY`d|uE68`QTC}= z>-|;gS9+_GwiyebIU2O*5`SPUWzMOO<BwO|ukp&wT)0ZdSR!w0EylrFGiGq?-5%8e z2Wo)Zu>o$EPNh(T|EYS84p3X#9F}871I-hWOMrJ=u!+8#2TY9TCyJ7@C9BbXjm8(} zZ6+S;^QWf*cXPBUxiq%zBkt@^at_$0*E?DD`1{`@#-8&`m_=}F7w=b^J>Pn{r*mTV z!s;#gbGJp{3d<IfCHy-)*wkzi9b-kEf9U^yP&}?>YpSvI$`zYCvhkN|8A{h;k1@i& zsjI$rF(CE5FZ)C55ttq4`l+jt4$A4}Mop(=-vZJw{*r*@OPOc>NK-7<t^JlRqzeoD zOm7uW_=}=d+^y;0JNaQn08S7ALh(h|Lw<=G>tk!_$N++97;})l(fwP8B?)2!Xv%U3 zM_M<ZjttIhv8KhvCD290GpBO2>(W!_tm03(e@whw2(S_Ws5wZD+j`aX(JUBC16vis ziqeinFRftU67t}~?Gba)r{xs(?Km;>COiUOcV579<T_+D@F+*`gjqyt^_lW|z#M)- zyjG->f68Tgk;7F^!Ov^vXf-gdKk~`Vq^FJe|F^ao;VNXZkS+lU-kW-)A{f=#d8F@t zs~Zb7QOYnuOF?E?2-1P7#FXM8M{8*^O~KYhBZEvGpqyfM0s{Z{Sb78)mE0M}-!cqv z@0Z;3(Dl24koH;Imp4y-k`oFmsz3hyO~0>4AR(cqry<&D<C$cHs94b;!lRX2+H)g- zPd?qD2q%Rg20;0iJQ$3|o@DAVcy;tC(8NHXQ0mky!vnRu*!;nf;KErYfFUoptZ`F= z!Q<x|+S~;xTs1oX6$^at<lX_*-YJewx#FC}ZXoZ5pHkJr>IMW3Dt^~ijSK8Yf1?J^ z$+Zvl(x(&A3h3J@j1{dZcL!3mgn<MwwTp#`)%^V7Ql+G~)S4od2FjjQus?B}WBi^o zJ#Zsd&Z#p(34Sr%SIZD4mu6Y!SD*Ug%QuuR2Xj*l9N<KW0ujS$IAeu;yNgD33LK!& z0NUG*1ZYxdsMrD(v30;{GSN$T*{)}Dp}uW(gqMoIiT^i-HMCVF!ETA|NAP4ga)cew zD>WLRw-;E&z$G?!4$k!45^D;_zNJ>17hXVn_C>*SsFtyzU|z|@yldLPNZ*$AsR$K+ zG$66~6-}3SDQWM^9DjT(LL<}*XnszN7az#vOc{GtF0jF0#9K5P$mb;$lc$BKe#E7c zCd*)%$O`KyG>=DLj=19VIGUBHr3AerOF1)A3aD+t*4Szl+q3!#2$UW#sgJ0q`KUJ8 zc;M?N<tEYN%G|!u^;_%c=wu3diN}Q>xc}LNf#CNv+;4Ml2}i2kQTo?-{{F&t8N}|s zi|Sf4ggaI4<pUftcDki_HxOD)ZO#<r<37{K0)+pxv0~phc0dfJ)jAU1Fbt)=F7AVv zjg_o?KX$qi6Y#vNe3rsLU6|G}vxz_eoN$aU-h9Ytv4I16TKsdgQlwQ#GvTuU0e_OM zvMMNnTtD|9gL)P)VuW8(X0;6<b+<iCs;TgkVk}Z~nj>pfSx>(@F7L`G2a<9_<EuX} zuwfJ&d(Txq0>oFfD8$vfp8!US|AQzlx~{Lm5RgKKQEvvazpF^=xpCdQxC1+3^*<6J z<vRMrgPF+iA8y1xs&A70bv>3n7T!hiW;tN%F~|O>Rm`;%w4Z5r_qJ4`u5O>_8Ul{D zfaCH{R{5MYYeC1?sVXVmY+n;k%6rQ!ZR3IoyCnjbM!MBnipLV(0M@JQKVpDQS8?fG zjTK4-G}qo5=d`mqr^WdHiILX(OaFr2XsnbC7XNdj`a#r#>POn*ccY!H3Hwh2@V5f$ zSy6=Y%Ye|?lr?s~s^*=~8_e^oF_Z(ROEKDTY45&2Z9uT+EeH(_po4}y%Pqu_{#rKv zhRY|P4sV=bf(bCtn`37LE!BzKXg-^-6|Z-iyLHUy@Z}Ob&`W#0_X5L8xqF~T7Gp)> zC!{gD<g{Dst<I~8Np0(Z`R-pQjT$%<-FyG)>7$-LLc8lgf=H2Xk}w(CA$@Gd-Y?{1 z9*{ir0U3rvKE4k{cr8WM0s!&XWjnb-cGVk{T9gFO=UdEXK-IQYDH<wYcwg<e^a-mI zdVKVt@_DrZESez!-8o2gDN1Ch9rSP}b4Qkx-#@merUX}q>75<jvnB;v-A<Rl2ZzG| z<o+jy_;KII^5V5>UcFaco&ZlQNIoqYN&l-5;Le?Vv+$KaV-M`)b{i5d4(JpT+pNT6 z=Ya*Qy+Qt{azQ-#=c->`Ukujroky%o$eEgR9{BoW3;=>js=hXzJ|TTxJSK<h!3cKZ zNuG}+IBjHB(^hTk2>j6@S{Sw!PH*K#{Mw<zao3--v#f1Qde5gf*%W~HyV<76&=L>% zhyR=rE1(VAZL?U@{fCTKDhC+u-&-42Dl{y)4xSW`%)1EjORaWH?rh+k%aLg8dxEe3 z4zSq{3nZC!VzQWYU%Xzu(&y)YzDyBS)iGW6`Nco1#|-I{Xk8`VX)a7nJ-p;SXo9*( zclFqIr!3zw{@B<EX`2cQSGsaVHyrsW7p2Y)w7%9ETNCsgF4lmlTXzBTs^&44PA**i zfP~9#|GQQ1q2wMEm<72%m<wbS*o$hEgg7>9(X9?Ui{Ct_Zf6^fqm04(r>Yu;#63X| zk2P3Oqv7o0z?0m}u&*&hy8-UZlfsmf@s9i^td<`gR59)JTcgd*4s1@CEX%Coh={d& zz17}D(uN{%sxI+s(Q5i1xphZ5*u$+0G30F_DcJVI7OgEMSRrZdj75NTwx7whfP$gN zEC~+&r*lVF2@KF8&%J{VWa*V2U5&jH*S=(0lqR+fpx&>`A$PBel<P@{YmmOuqc-Pe zyh)GI4K-dQ8y;AzeGaO!N{bEX`mh!fTBsiMBN}TLE&A56AvYmqd1yUm`h;VI0#YLZ zkP4&A4G3@v(2&Bx=QYyil4Lpa8Bs7%x?nV#3*UqVqcM{hG@HB6)xMuPYk{Me_-3x3 zj|+DGqx`)nVFCnQUK>*8;9IW7iSx>@p3X8i_ZH}W1>*w#+pu@VOoXbHUeD95V^>h} z{eGE#@JYzkEG|7BdQF!sxV7(AXiBMbP~^0SqE);Zv~_;OL-8M=VC}%yLQ8ml^^kP; z#I?O5%`1}=IDmh~N<nI>#~!*e;My8qgfN-CMv3gte$`&M8Nf%#0yQOI<i^?|ZayFG z0lN_=JnEg2V0DYX)9Z3OCurr{hKe&?5sJ;mzhFd<2@=6rQlaTJd!l~PM@6um62LC% z%ILxS-w-xDA22{JYlCEQxrbl`Ohp0iM@Hs@|MRdG<o^YOY|b6V01XTsMV~()HHPpb zu^8x}WTh}vf<Ot)Ef#Y(i!1`__X3h8hTOk)8L6lw>PZP({uc)Buj>_iaK`Et9}qED zv&K#VQQw^nEvLc0qptD6G<H&7fAP95t0rV9H~>cGN6lW>RP2`nG`Vum`YuVpag5?7 zT9M)-J6iQW7D&-SEGRlv{9hmns^if+?Klq5GoE}J*`~3+sN#ObtWMW~Qy^FZQ>AbH z*h`}FON9)RS)E;1`RnaknC3S_aL|Ym*a~=|<vh|t<_g5_#k18g{G1`a1u?o>y%iwG zcI66Ga3q#a%Igk8`SbrKVpue67Y&?qVjv`%y6XTfLL-XZj^dpd3jZlppPM3K98-%< z5mtVb_UjlC+lts<U>6DaD?tZWbZ+|}J?)fJYVoO4PY5Dr+sU1S=bebKa&GEmem};8 zuoem&Fm0On&oL=2P=ZD~K3F7%(QF|HrOwjzqZUWuJLFk$1!x5zMM{Cv(;@SKczf@g z`9F%;Nd|-buQ#}ES2Spq{TtQ)PQh6ssqMNh2xkk)mcB4cukKVt3xw}n7$aKOeAYn# zp=GQX<Z;|+3L?cNT-YdQ*M`>^wCV8x>g9_#%upR57U%%Ujh_`K0=9preyzt4Ur~Im zZR~cPg8TE`z>2eIr8v>TxBWggBg5-2@j)P*k{6+GwUU}3wThyBcU--AvIG&LfhFFu zPQGGglz&<W0Sab3jt3(MSnFD^7>fBr!y%tG{3_JU6%FpWyxslL-n)K8PX;nPc_Q=$ z(1+q~WyU$RPymUbU+S`2#7Rky^Ui24Nn5#nUDE<ltw3A7cj%;88&a0pYoBbr0^c63 z8IfObYqtC|oWOs>{eex+q6q)dm}{J@5{ydn*<W81P@fLm?(?&i&iGw|5>JFubLPu* zteBXXVwVEA;pI(3x-AT|PUlnbEX=NS9r?dvnj#_`zln_zgGvtaZs-<HIPxyv`L$kk zR5?`WYi|F+3y`U%ZX9Et(7Fyq$H(16Ue#xeVv-=Tye)2uldX8eeC#ze7*G^<XSCsQ zmo`XztQf(Pr~RKvuKr5RuPfVEQRq|k2Y9Y%P&y@`#(-P_WnGvqbR^X6e`@)xd6%Y$ zFLGJU=Cn|>PiD8_DyLs*IW|+R2|x>pwL*Ce)0@{GJQju^Txo#j6&t<9^Tjj*)p(@t zDT}INNHiJkjRNHG^Jw->V(Gk8QRoEpIf;yWsV#Dn<KoV6WEE&XhCaJ3o3YTN@%B>( zGgeEB=Lff;xu_%d^&NH9bU|nOoZHZ1(D#;Jv&%q_McZ7`u~&Xi4p%5iiMuf1_yJN- zT83$D!GbaJsmn9;VNBaqkU}|UfGG!n>&(^(`-ec^J+!LWxm|$h8>09UgU}C<UgwtE zn95;SPa-aAfNE!d+b0t(7LhvJB?$&y@eE&rvD1Z%_iTPTjoRiNbVLR*huZW8m)*id zp{VllVZ+1ea>u$QNZGQi@l?qWt%m;s1HoG;PP}-yXXe!yq^Vr-ES~UTyvIT57blSE zB5ki!37ICgSXZf4&56XCkD1@@xXH3!j*nBSQ!SXQ-n<V=&(O@M%#vhvf;rQtwh`y+ zDf|1w>j5gn`8ud#iIG>;P$^lCF*LA0*v#QiGwoT{H0+r{4bO`;D4T}Ue_7ekI}SN4 znlg|f0})Ehwak+bS1%$;wj^afJb@shKl-t)5U8LIMGS_nFC3+RBLV>(sQ5>p6@x6l zOo@74PsJ)>#0}}<Q=JB0A~Vqj_N+A@12R7^8!nrq{x-;~I=EDiDEMi=8+hknBB1=U zSJ_E;{!>PV^2&j;#ZAfKmP^e8y#=RFMtI5Ll389IQ^lcoa`cLU(Dtc7IY|85atJ%n zMcg7^a~r58Wx;FC5!^Xk4seiWir|eOBGThB$;B3A6e<4Mzs^P4iSnF|lTyV`<<`sf znIQvfoY%J=!A=t7?*1xD6dDyCY;M+OQ~$Z^I8Dy^es|yhdrzg&>>*F!o1WnpNAsOD z^$n#bXppqigGx5Uc(FW^uBo9nm<VXdVg(B-wHX%tHlmcxhU-~HsxA4)X%{$l^AXKR z@RdGnCZGt+eN!^1mBCjNfMQo*Zfx0*Us?aCp0x!D3N{?eR4@s*hAEl>4JPL>nMJty z<xf%7PW4zRO4UE3B<WQ>AzHA*KLd<vk#S2^*a6Dh3at64JBMkW=EJ02brDRwVdIc= zqwGQYI&}bA_-o7Q(i8F{NG`O}=tPtHz`Z=euMb0yet48y&`jzd!q^(fQ-ddtNzTwa z`5e!!ORA+Dpm^6mrxdcA>nnib7VRwemb2;pCz89rZele?Vt>X#X1pxXP{p&P{A{IP zt%Pg+dDs3RaK#9Jt9<L9v$1F{*6ANEHFe7_qhA#gCaWnTnD5-}5)H*3rUq&Z&eM%2 zj^5owekLhkbs=w5Zql2NA?lpv1>e7)n0Y&?+(<NfwfniCTmJf7Saa24SGBrVP$#LL z4p0%csL4<8CD6D^YiY|_AI+1cLwc+l$K9o%5k3^$1HcDd_p>=t6;cxQ;A*YFJ@+>{ z6n!oNQ&9YTvbq9m4QW@t2_^ZK1ic=s-WXe$ep75Ddb*9?7EjDH8bc)odl8$jv(_$V zFH^PR^je)iq9N_?1wXuZ4;zV4;YenWJt#B^sjkHtCRrU&7Pfg1o#~gR^L2h`uv+X+ z4j(Cp1oj=J8+F~Pc5bW=pnSYlbd<JthQsiahhn^DzMkYk4P&9s+J}W^i6Bjy0%&US z&!MRgeV@)x-1`Ui;pe7|E)eu?UO1Q>7bAm!?Eim%TkQdWKKNvB%8KqaQ@mwUdae4~ zuaG=qW)>#|4W|1=PhBb&`4o;CigIGNnZe#TyzfV$w*}9Lf1eZOkzRRF!~NY#@G@V^ zUX1ePN$;cm_>4P;Db^x6yC;ITslu<WsO%nKY9z2hWBbdGIvO8s-rabZHo0mT%=5Z$ zIiu&U!=~2<XiDW&zx?|i9n*DdZ3T|@yb>3T>1WD2;A9zyB1XAqQIz%#%v99&P^s?8 h@}oiAX3UQxp<Qe?yVZp*^q*<mxMqB{RL4I2{{d>Y$!-7u literal 0 HcmV?d00001 diff --git a/scripts/generate-entry-points.js b/scripts/generate-entry-points.js new file mode 100755 index 000000000..609ed3c92 --- /dev/null +++ b/scripts/generate-entry-points.js @@ -0,0 +1,32 @@ +import fs from 'fs/promises'; +import path from 'path'; +import { fileURLToPath } from 'url'; + +const currentPath = fileURLToPath(import.meta.url); +const projectRoot = path.dirname(currentPath); +const templateFilePath = path.resolve(projectRoot, '../template.html'); +const entryPointsDir = path.resolve(projectRoot, '../entry-points'); + +const ENTRY_POINTS = [ + { + title: 'dYdX', + description: 'dYdX', + fileName: 'index.html', + }, +]; + +try { + fs.mkdir(entryPointsDir, { recursive: true }); + + for (const entryPoint of ENTRY_POINTS) { + const html = await fs.readFile(templateFilePath, 'utf-8'); + const destinationFilePath = path.resolve(entryPointsDir, entryPoint.fileName); + const injectedHtml = html.replace( + '<title>dYdX</title>', + `<title>${entryPoint.title}</title>\n <meta name="description" content="${entryPoint.description}" />` + ); + await fs.writeFile(destinationFilePath, injectedHtml, 'utf-8'); + } +} catch (err) { + console.error('Error generating entry points:', err); +} diff --git a/scripts/inject-amplitude.js b/scripts/inject-amplitude.js index b1bdc79c8..3caa733f6 100644 --- a/scripts/inject-amplitude.js +++ b/scripts/inject-amplitude.js @@ -7,56 +7,62 @@ const AMPLITUDE_SERVER_URL = process.env.AMPLITUDE_SERVER_URL; const currentPath = fileURLToPath(import.meta.url); const projectRoot = path.dirname(currentPath); -const htmlFilePath = path.resolve(projectRoot, '../dist/index.html'); if (AMPLITUDE_API_KEY) { try { - const html = await fs.readFile(htmlFilePath, 'utf-8'); - - const amplitudeCdnScript = `<script type="text/javascript"> - !function(){"use strict";!function(e,t){var n=e.amplitude||{_q:[],_iq:{}};if(n.invoked)e.console&&console.error&&console.error("Amplitude snippet has been loaded.");else{var r=function(e,t){e.prototype[t]=function(){return this._q.push({name:t,args:Array.prototype.slice.call(arguments,0)}),this}},s=function(e,t,n){return function(r){e._q.push({name:t,args:Array.prototype.slice.call(n,0),resolve:r})}},o=function(e,t,n){e[t]=function(){if(n)return{promise:new Promise(s(e,t,Array.prototype.slice.call(arguments)))}}},i=function(e){for(var t=0;t<m.length;t++)o(e,m[t],!1);for(var n=0;n<g.length;n++)o(e,g[n],!0)};n.invoked=!0;var u=t.createElement("script");u.type="text/javascript",u.integrity="sha384-BVo5ZjsjH373rWbcjz9Qjb2L6BgLwLADcZtZZPu3nMl8+7LPDhi1NcUEf0Ate41Y",u.crossOrigin="anonymous",u.async=!0,u.src="/libs/amplitude-analytics-browser-2.0.0-min.js",u.onload=function(){e.amplitude.runQueuedFunctions||console.log("[Amplitude] Error: could not load SDK")};var a=t.getElementsByTagName("script")[0];a.parentNode.insertBefore(u,a);for(var c=function(){return this._q=[],this},p=["add","append","clearAll","prepend","set","setOnce","unset","preInsert","postInsert","remove","getUserProperties"],l=0;l<p.length;l++)r(c,p[l]);n.Identify=c;for(var d=function(){return this._q=[],this},f=["getEventProperties","setProductId","setQuantity","setPrice","setRevenue","setRevenueType","setEventProperties"],v=0;v<f.length;v++)r(d,f[v]);n.Revenue=d;var m=["getDeviceId","setDeviceId","getSessionId","setSessionId","getUserId","setUserId","setOptOut","setTransport","reset","extendSession"],g=["init","add","remove","track","logEvent","identify","groupIdentify","setGroup","revenue","flush"];i(n),n.createInstance=function(e){return n._iq[e]={_q:[]},i(n._iq[e]),n._iq[e]},e.amplitude=n}}(window,document)}(); - </script> - `; - - const amplitudeListenerScript = `<script type="module"> - !(function () { - var e = "${AMPLITUDE_API_KEY}"; - e && - (globalThis.amplitude.init(e${ - AMPLITUDE_SERVER_URL - ? `, undefined, { - serverUrl: "${AMPLITUDE_SERVER_URL}" - }` - : '' - }), - globalThis.amplitude.setOptOut(!1), - globalThis.addEventListener("dydx:track", function (e) { - var t = e.detail.eventType, - d = e.detail.eventData; - globalThis.amplitude.track(t, d); - }), - globalThis.addEventListener("dydx:identify", function (e) { - var t = e.detail.property, - d = e.detail.propertyValue; - if ("walletAddress" === t) globalThis.amplitude.setUserId(d); - else { - var i = new globalThis.amplitude.Identify(); - i.set(t, d), globalThis.amplitude.identify(i); - } - }), - console.log("Amplitude enabled.")); - })(); - </script>`; - - const injectedHtml = html.replace( - '<div id="root"></div>', - `<div id="root"></div>\n${amplitudeCdnScript}\n${amplitudeListenerScript}` - ); - - await fs.writeFile(htmlFilePath, injectedHtml, 'utf-8'); - - console.log('Amplitude scripts successfully injected.'); + const files = await fs.readdir('entry-points'); + for (const file of files) { + inject(file); + }; } catch (err) { console.error('Error injecting Amplitude scripts:', err); } } + +async function inject(fileName) { + const htmlFilePath = path.resolve(projectRoot, `../dist/entry-points/${fileName}`); + const html = await fs.readFile(htmlFilePath, 'utf-8'); + + const amplitudeCdnScript = `<script type="text/javascript"> + !function(){"use strict";!function(e,t){var n=e.amplitude||{_q:[],_iq:{}};if(n.invoked)e.console&&console.error&&console.error("Amplitude snippet has been loaded.");else{var r=function(e,t){e.prototype[t]=function(){return this._q.push({name:t,args:Array.prototype.slice.call(arguments,0)}),this}},s=function(e,t,n){return function(r){e._q.push({name:t,args:Array.prototype.slice.call(n,0),resolve:r})}},o=function(e,t,n){e[t]=function(){if(n)return{promise:new Promise(s(e,t,Array.prototype.slice.call(arguments)))}}},i=function(e){for(var t=0;t<m.length;t++)o(e,m[t],!1);for(var n=0;n<g.length;n++)o(e,g[n],!0)};n.invoked=!0;var u=t.createElement("script");u.type="text/javascript",u.integrity="sha384-BVo5ZjsjH373rWbcjz9Qjb2L6BgLwLADcZtZZPu3nMl8+7LPDhi1NcUEf0Ate41Y",u.crossOrigin="anonymous",u.async=!0,u.src="/libs/amplitude-analytics-browser-2.0.0-min.js",u.onload=function(){e.amplitude.runQueuedFunctions||console.log("[Amplitude] Error: could not load SDK")};var a=t.getElementsByTagName("script")[0];a.parentNode.insertBefore(u,a);for(var c=function(){return this._q=[],this},p=["add","append","clearAll","prepend","set","setOnce","unset","preInsert","postInsert","remove","getUserProperties"],l=0;l<p.length;l++)r(c,p[l]);n.Identify=c;for(var d=function(){return this._q=[],this},f=["getEventProperties","setProductId","setQuantity","setPrice","setRevenue","setRevenueType","setEventProperties"],v=0;v<f.length;v++)r(d,f[v]);n.Revenue=d;var m=["getDeviceId","setDeviceId","getSessionId","setSessionId","getUserId","setUserId","setOptOut","setTransport","reset","extendSession"],g=["init","add","remove","track","logEvent","identify","groupIdentify","setGroup","revenue","flush"];i(n),n.createInstance=function(e){return n._iq[e]={_q:[]},i(n._iq[e]),n._iq[e]},e.amplitude=n}}(window,document)}(); + </script> + `; + + const amplitudeListenerScript = `<script type="module"> + !(function () { + var e = "${AMPLITUDE_API_KEY}"; + e && + (globalThis.amplitude.init(e${AMPLITUDE_SERVER_URL + ? `, undefined, { + serverUrl: "${AMPLITUDE_SERVER_URL}" + }` + : '' + }), + globalThis.amplitude.setOptOut(!1), + globalThis.addEventListener("dydx:track", function (e) { + var t = e.detail.eventType, + d = e.detail.eventData; + globalThis.amplitude.track(t, d); + }), + globalThis.addEventListener("dydx:identify", function (e) { + var t = e.detail.property, + d = e.detail.propertyValue; + if ("walletAddress" === t) globalThis.amplitude.setUserId(d); + else { + var i = new globalThis.amplitude.Identify(); + i.set(t, d), globalThis.amplitude.identify(i); + } + }), + console.log("Amplitude enabled.")); + })(); + </script>`; + + const injectedHtml = html.replace( + '<div id="root"></div>', + `<div id="root"></div>\n${amplitudeCdnScript}\n${amplitudeListenerScript}` + ); + + await fs.writeFile(htmlFilePath, injectedHtml, 'utf-8'); + + console.log(`Amplitude scripts successfully injected (${fileName}).`); +} \ No newline at end of file diff --git a/scripts/inject-bugsnag.js b/scripts/inject-bugsnag.js index 114ec87a6..7dff7cef5 100644 --- a/scripts/inject-bugsnag.js +++ b/scripts/inject-bugsnag.js @@ -6,76 +6,80 @@ const BUGSNAG_API_KEY = process.env.BUGSNAG_API_KEY; const currentPath = fileURLToPath(import.meta.url); const projectRoot = path.dirname(currentPath); -const htmlFilePath = path.resolve(projectRoot, '../dist/index.html'); try { + const files = await fs.readdir('entry-points'); + for (const file of files) { + inject(file); + }; +} catch (err) { + console.error('Error injecting Bugsnag scripts:', err); +} + +async function inject(fileName) { + const htmlFilePath = path.resolve(projectRoot, `../dist/entry-points/${fileName}`); const html = await fs.readFile(htmlFilePath, 'utf-8'); const scripts = ` - <script src="//d2wy8f7a9ursnm.cloudfront.net/v7/bugsnag.min.js"></script> + <script src="//d2wy8f7a9ursnm.cloudfront.net/v7/bugsnag.min.js"></script> + + <script type="module"> + (function() { + var BUGSNAG_API_KEY = '${BUGSNAG_API_KEY}'; + var walletType; + + if (BUGSNAG_API_KEY) { + Bugsnag.start(BUGSNAG_API_KEY); + } + + globalThis.addEventListener('dydx:identify', function (event) { + var property = event.detail.property; + var value = event.detail.propertyValue; - <script type="module"> - (function() { - var BUGSNAG_API_KEY = '${BUGSNAG_API_KEY}'; - var walletType; + switch (property) { + case 'walletType': + walletType = value; + break; + default: + break; + } + }); + + globalThis.addEventListener('dydx:log', function (event) { + var error = event.detail.error; + var metadata = event.detail.metadata; + var location = event.detail.location; - if (BUGSNAG_API_KEY) { - Bugsnag.start(BUGSNAG_API_KEY); + if (BUGSNAG_API_KEY && Bugsnag.isStarted()) { + Bugsnag.notify(error, function (event) { + event.context = location; + if (metadata) { + event.addMetadata('metadata', metadata); + } + if (walletType) { + event.addMetadata('walletType', walletType); + } + }); + } else { + console.warn(location, error, metadata); } + }); + })(); + </script> + + <script type="module"> + import BugsnagPerformance from '//d2wy8f7a9ursnm.cloudfront.net/v1.0.0/bugsnag-performance.min.js' + + BugsnagPerformance.start({ + apiKey: '${BUGSNAG_API_KEY}', + appVersion: '4.10.0', + enabledReleaseStages: ['production', 'development', 'testing'] + }) + </script>`; - globalThis.addEventListener('dydx:identify', function (event) { - var property = event.detail.property; - var value = event.detail.propertyValue; - - switch (property) { - case 'walletType': - walletType = value; - break; - default: - break; - } - }); - - globalThis.addEventListener('dydx:log', function (event) { - var error = event.detail.error; - var metadata = event.detail.metadata; - var location = event.detail.location; - - if (BUGSNAG_API_KEY && Bugsnag.isStarted()) { - Bugsnag.notify(error, function (event) { - event.context = location; - if (metadata) { - event.addMetadata('metadata', metadata); - } - if (walletType) { - event.addMetadata('walletType', walletType); - } - }); - } else { - console.warn(location, error, metadata); - } - }); - })(); - </script> - - <script type="module"> - import BugsnagPerformance from '//d2wy8f7a9ursnm.cloudfront.net/v1.0.0/bugsnag-performance.min.js' - - BugsnagPerformance.start({ - apiKey: '${BUGSNAG_API_KEY}', - appVersion: '4.10.0', - enabledReleaseStages: ['production', 'development', 'testing'] - }) - </script>`; - - const injectedHtml = html.replace( - '<div id="root"></div>', - `<div id="root"></div>\n${scripts}\n` - ); + const injectedHtml = html.replace('<div id="root"></div>', `<div id="root"></div>\n${scripts}\n`); await fs.writeFile(htmlFilePath, injectedHtml, 'utf-8'); - console.log('Bugsnag scripts successfully injected.'); -} catch (err) { - console.error('Error injecting Bugsnag scripts:', err); -} + console.log(`Bugsnag scripts successfully injected (${fileName}).`); +} \ No newline at end of file diff --git a/scripts/inject-intercom.js b/scripts/inject-intercom.js index f344e92f5..f6442d9de 100644 --- a/scripts/inject-intercom.js +++ b/scripts/inject-intercom.js @@ -7,70 +7,77 @@ const INTERCOM_APP_ID = process.env.INTERCOM_APP_ID; const currentPath = fileURLToPath(import.meta.url); const projectRoot = path.dirname(currentPath); -const htmlFilePath = path.resolve(projectRoot, '../dist/index.html'); if (INTERCOM_APP_ID) { try { - const html = await fs.readFile(htmlFilePath, 'utf-8'); + const files = await fs.readdir('entry-points'); + for (const file of files) { + inject(file); + }; + } catch (err) { + console.error('Error injecting Intercom scripts:', err); + } +} - const intercomScripts = ` - <!-- Intercom --> - <script> - window.intercomSettings = { - api_base: 'https://api-iam.intercom.io', - app_id: '${INTERCOM_APP_ID}', - custom_launcher_selector: '.custom_intercom', - hide_default_launcher: true, - }; - </script> +async function inject(fileName) { + const htmlFilePath = path.resolve(projectRoot, `../dist/entry-points/${fileName}`); + const html = await fs.readFile(htmlFilePath, 'utf-8'); + + const intercomScripts = ` + <!-- Intercom --> + <script> + window.intercomSettings = { + api_base: 'https://api-iam.intercom.io', + app_id: '${INTERCOM_APP_ID}', + custom_launcher_selector: '.custom_intercom', + hide_default_launcher: true, + }; + </script> - <script> - // We pre-filled your app ID in the widget URL: 'https://widget.intercom.io/widget/${INTERCOM_APP_ID}' - (function () { - var w = window; - var ic = w.Intercom; - if (typeof ic === 'function') { - ic('reattach_activator'); - ic('update', w.intercomSettings); + <script> + // We pre-filled your app ID in the widget URL: 'https://widget.intercom.io/widget/${INTERCOM_APP_ID}' + (function () { + var w = window; + var ic = w.Intercom; + if (typeof ic === 'function') { + ic('reattach_activator'); + ic('update', w.intercomSettings); + } else { + var d = document; + var i = function () { + i.c(arguments); + }; + i.q = []; + i.c = function (args) { + i.q.push(args); + }; + w.Intercom = i; + var l = function () { + var s = d.createElement('script'); + s.type = 'text/javascript'; + s.async = true; + s.src = 'https://widget.intercom.io/widget/${INTERCOM_APP_ID}'; + var x = d.getElementsByTagName('script')[0]; + x.parentNode.insertBefore(s, x); + }; + if (document.readyState === 'complete') { + l(); + } else if (w.attachEvent) { + w.attachEvent('onload', l); } else { - var d = document; - var i = function () { - i.c(arguments); - }; - i.q = []; - i.c = function (args) { - i.q.push(args); - }; - w.Intercom = i; - var l = function () { - var s = d.createElement('script'); - s.type = 'text/javascript'; - s.async = true; - s.src = 'https://widget.intercom.io/widget/${INTERCOM_APP_ID}'; - var x = d.getElementsByTagName('script')[0]; - x.parentNode.insertBefore(s, x); - }; - if (document.readyState === 'complete') { - l(); - } else if (w.attachEvent) { - w.attachEvent('onload', l); - } else { - w.addEventListener('load', l, false); - } + w.addEventListener('load', l, false); } - })(); - </script> - `; + } + })(); +</script> + `; - const injectedHtml = html.replace( - '<div id="root"></div>', - `<div id="root"></div>\n${intercomScripts}\n` - ); + const injectedHtml = html.replace( + '<div id="root"></div>', + `<div id="root"></div>\n${intercomScripts}\n` + ); - await fs.writeFile(htmlFilePath, injectedHtml, 'utf-8'); + await fs.writeFile(htmlFilePath, injectedHtml, 'utf-8'); - console.log('Intercom scripts successfully injected.'); - } catch (err) { - console.error('Error injecting Intercom scripts:', err); - } -} + console.log(`Intercom scripts successfully injected (${fileName}).`); +} \ No newline at end of file diff --git a/scripts/inject-smartbanner.js b/scripts/inject-smartbanner.js index b5f4767e7..639fbe7fe 100644 --- a/scripts/inject-smartbanner.js +++ b/scripts/inject-smartbanner.js @@ -11,7 +11,6 @@ const SMARTBANNER_GOOGLEPLAY_URL = process.env.SMARTBANNER_GOOGLEPLAY_URL; const currentPath = fileURLToPath(import.meta.url); const projectRoot = path.dirname(currentPath); -const htmlFilePath = path.resolve(projectRoot, '../dist/index.html'); const smartbannerFilePath = path.resolve(projectRoot, '../dist/smartbanner.html'); if ( @@ -21,40 +20,48 @@ if ( (SMARTBANNER_APPSTORE_URL || SMARTBANNER_GOOGLEPLAY_URL) ) { try { - const html = await fs.readFile(htmlFilePath, 'utf-8'); - let smartbanner = await fs.readFile(smartbannerFilePath, 'utf-8'); - smartbanner = smartbanner - .replace('SMARTBANNER_APP_NAME', SMARTBANNER_APP_NAME) - .replace('SMARTBANNER_ORG_NAME', SMARTBANNER_ORG_NAME) - .replace('SMARTBANNER_ICON_URL', SMARTBANNER_ICON_URL) - .replace('SMARTBANNER_ICON_URL', SMARTBANNER_ICON_URL); - - /* hardcoded injection depending on whether the app is available on App Store and/or Google Play */ - - if (SMARTBANNER_APPSTORE_URL) { - smartbanner = `\t<meta name="smartbanner:button-url-apple" content="${SMARTBANNER_APPSTORE_URL}">\n` + smartbanner; - } + const files = await fs.readdir('entry-points'); + for (const file of files) { + inject(file); + }; + } catch (err) { + console.error('Error injecting Smartbanner scripts:', err); + } +} + +async function inject(fileName) { + const htmlFilePath = path.resolve(projectRoot, `../dist/entry-points/${fileName}`); + const html = await fs.readFile(htmlFilePath, 'utf-8'); + let smartbanner = await fs.readFile(smartbannerFilePath, 'utf-8'); + smartbanner = smartbanner + .replace('SMARTBANNER_APP_NAME', SMARTBANNER_APP_NAME) + .replace('SMARTBANNER_ORG_NAME', SMARTBANNER_ORG_NAME) + .replace('SMARTBANNER_ICON_URL', SMARTBANNER_ICON_URL) + .replace('SMARTBANNER_ICON_URL', SMARTBANNER_ICON_URL); + + /* hardcoded injection depending on whether the app is available on App Store and/or Google Play */ + + if (SMARTBANNER_APPSTORE_URL) { + smartbanner = `\t<meta name="smartbanner:button-url-apple" content="${SMARTBANNER_APPSTORE_URL}">\n` + smartbanner; + } + if (SMARTBANNER_GOOGLEPLAY_URL) { + smartbanner = `\t<meta name="smartbanner:button-url-google" content="${SMARTBANNER_GOOGLEPLAY_URL}">\n` + smartbanner; + } + if (SMARTBANNER_APPSTORE_URL) { if (SMARTBANNER_GOOGLEPLAY_URL) { - smartbanner = `\t<meta name="smartbanner:button-url-google" content="${SMARTBANNER_GOOGLEPLAY_URL}">\n` + smartbanner; - } - if (SMARTBANNER_APPSTORE_URL) { - if (SMARTBANNER_GOOGLEPLAY_URL) { - smartbanner = `\t<meta name="smartbanner:enabled-platforms" content="android,ios">\n` + smartbanner; - } else { - smartbanner = `\t<meta name="smartbanner:enabled-platforms" content="ios">\n` + smartbanner; - } + smartbanner = `\t<meta name="smartbanner:enabled-platforms" content="android,ios">\n` + smartbanner; } else { - if (SMARTBANNER_GOOGLEPLAY_URL) { - smartbanner = `\t<meta name="smartbanner:enabled-platforms" content="android">\n` + smartbanner; - } + smartbanner = `\t<meta name="smartbanner:enabled-platforms" content="ios">\n` + smartbanner; } + } else { + if (SMARTBANNER_GOOGLEPLAY_URL) { + smartbanner = `\t<meta name="smartbanner:enabled-platforms" content="android">\n` + smartbanner; + } + } - const injectedHtml = html.replace('</head>', `${smartbanner}\n</head>`); + const injectedHtml = html.replace('</head>', `${smartbanner}\n</head>`); - await fs.writeFile(htmlFilePath, injectedHtml, 'utf-8'); + await fs.writeFile(htmlFilePath, injectedHtml, 'utf-8'); - console.log('Smartbanner scripts successfully injected.'); - } catch (err) { - console.error('Error injecting Smartbanner scripts:', err); - } -} + console.log(`Smartbanner scripts successfully injected (${fileName}).`); +} \ No newline at end of file diff --git a/scripts/inject-statuspage.js b/scripts/inject-statuspage.js index 0315cbfba..34d9d82b8 100644 --- a/scripts/inject-statuspage.js +++ b/scripts/inject-statuspage.js @@ -6,23 +6,29 @@ const STATUS_PAGE_SCRIPT_URI = process.env.STATUS_PAGE_SCRIPT_URI; const currentPath = fileURLToPath(import.meta.url); const projectRoot = path.dirname(currentPath); -const htmlFilePath = path.resolve(projectRoot, '../dist/index.html'); if (STATUS_PAGE_SCRIPT_URI) { try { - const html = await fs.readFile(htmlFilePath, 'utf-8'); + const files = await fs.readdir('entry-points'); + for (const file of files) { + inject(file); + }; + } catch (err) { + console.error('Error injecting StatusPage scripts:', err); + } +} - const statusPageScript = `<script defer src="${STATUS_PAGE_SCRIPT_URI}"></script>`; +async function inject(fileName) { + const htmlFilePath = path.resolve(projectRoot, `../dist/entry-points/${fileName}`); + const html = await fs.readFile(htmlFilePath, 'utf-8'); + const statusPageScript = `<script defer src="${STATUS_PAGE_SCRIPT_URI}"></script>`; - const injectedHtml = html.replace( - '<div id="root"></div>', - `<div id="root"></div>\n${statusPageScript}\n` - ); + const injectedHtml = html.replace( + '<div id="root"></div>', + `<div id="root"></div>\n${statusPageScript}\n` + ); - await fs.writeFile(htmlFilePath, injectedHtml, 'utf-8'); + await fs.writeFile(htmlFilePath, injectedHtml, 'utf-8'); - console.log('StatusPage script successfully injected.'); - } catch (err) { - console.error('Error injecting StatusPage scripts:', err); - } + console.log(`StatusPage script successfully injected (${fileName}).`); } diff --git a/scripts/install-local-abacus.js b/scripts/install-local-abacus.js new file mode 100644 index 000000000..a5b9b56a6 --- /dev/null +++ b/scripts/install-local-abacus.js @@ -0,0 +1,48 @@ +import { execSync } from 'child_process'; + +const clean = process.argv.includes('--clean'); + +if (clean) { + infoMessage('Running deep clean.'); + nonFatalExec('pnpm remove @dydxprotocol/v4-abacus'); // remove abacus from node_modules + nonFatalExec('cd ../v4-abacus && ./gradlew clean'); // cleanup gradle build outputs + nonFatalExec('cd ../v4-abacus && ./gradlew --stop'); // stop any running gradle daemons + nonFatalExec('rm -rf ~/.gradle/caches'); // nuke the gradle cache +} + +infoMessage('Cleaning up any previously built abacus packages...'); +nonFatalExec('rm ../v4-abacus/build/packages/*.tgz'); + +infoMessage('Building abacus...'); +fatalExec('cd ../v4-abacus && ./gradlew packJsPackage'); + +infoMessage('Installing local abacus package...'); +fatalExec("find ../v4-abacus/build/packages -name '*.tgz' | head -n 1 | xargs pnpm install"); +infoMessage('Successfully installed local abacus package.'); + +infoMessage('Generating local-abacus-hash...'); +fatalExec( + "find ../v4-abacus/build/packages -name '*.tgz' | head -n 1 | shasum > local-abacus-hash" +); + +infoMessage('Vite dev server should have restarted automatically.'); + +function nonFatalExec(cmd) { + try { + execSync(cmd, { stdio: 'inherit' }); + } catch (error) { + // Do nothing. + } +} + +function fatalExec(cmd) { + try { + execSync(cmd, { stdio: 'inherit' }); + } catch (error) { + process.exit(1); + } +} + +function infoMessage(message) { + console.log('\n**** install-local-abacus.js: ' + message + '\n'); +} diff --git a/scripts/set-last-commit-and-tag.sh b/scripts/set-last-commit-and-tag.sh new file mode 100755 index 000000000..34a298a62 --- /dev/null +++ b/scripts/set-last-commit-and-tag.sh @@ -0,0 +1,43 @@ +#!/bin/bash + +# Add the original repository as a remote if not already present +if ! git remote | grep -q upstream; then + git remote add upstream https://github.com/dydxprotocol/v4-web.git +fi + +# Fetch latest changes from the original repository +git fetch --unshallow upstream + +# Find the last common commit +VITE_LAST_ORIGINAL_COMMIT=$(git merge-base HEAD upstream/main) + +# Check if the command succeeded and VITE_LAST_ORIGINAL_COMMIT is not empty +if [ -z "$VITE_LAST_ORIGINAL_COMMIT" ]; then + echo "Unable to determine the last original commit." + exit 0 +fi + +# Find the tag the commit lives in +VITE_LAST_TAG=$(git describe --exact-match $VITE_LAST_ORIGINAL_COMMIT) + +# Update or add VITE_LAST_ORIGINAL_COMMIT in .env +if grep -q "VITE_LAST_ORIGINAL_COMMIT=" .env; then + # Variable exists, replace it + awk -v lc="$VITE_LAST_ORIGINAL_COMMIT" '/^VITE_LAST_ORIGINAL_COMMIT=/ {$0="VITE_LAST_ORIGINAL_COMMIT="lc} 1' .env > .env.tmp && mv .env.tmp .env +else + # Variable does not exist, append it + echo "VITE_LAST_ORIGINAL_COMMIT=$VITE_LAST_ORIGINAL_COMMIT" >> .env +fi + +echo "VITE_LAST_ORIGINAL_COMMIT set as $VITE_LAST_ORIGINAL_COMMIT" + +# Update or add VITE_LAST_TAG in .env +if grep -q "VITE_LAST_TAG=" .env; then + # Variable exists, replace it + awk -v lc="$VITE_LAST_TAG" '/^VITE_LAST_TAG=/ {$0="VITE_LAST_TAG="lc} 1' .env > .env.tmp && mv .env.tmp .env +else + # Variable does not exist, append it + echo "VITE_LAST_TAG=$VITE_LAST_TAG" >> .env +fi + +echo "VITE_LAST_TAG set as $VITE_LAST_TAG" \ No newline at end of file diff --git a/scripts/validate-other-market-data.ts b/scripts/validate-other-market-data.ts new file mode 100644 index 000000000..9c0ae1df2 --- /dev/null +++ b/scripts/validate-other-market-data.ts @@ -0,0 +1,718 @@ +/* eslint-disable import/no-extraneous-dependencies */ + +/* eslint-disable no-plusplus */ + +/* eslint-disable no-console */ + +/* eslint-disable no-restricted-syntax */ + +/* eslint-disable no-await-in-loop */ +import { EncodeObject } from '@cosmjs/proto-signing'; +import { Account, StdFee } from '@cosmjs/stargate'; +import { Method } from '@cosmjs/tendermint-rpc'; +import { BroadcastTxSyncResponse } from '@cosmjs/tendermint-rpc/build/tendermint37'; +import { + CompositeClient, + LocalWallet as LocalWalletType, + Network, + TransactionOptions, + VoteOption, + ProposalStatus, +} from '@dydxprotocol/v4-client-js'; +import { + Perpetual, + PerpetualMarketType, +} from '@dydxprotocol/v4-client-js/build/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/perpetuals/perpetual'; +import { MsgVote } from '@dydxprotocol/v4-proto/src/codegen/cosmos/gov/v1/tx'; +import { ClobPair } from '@dydxprotocol/v4-proto/src/codegen/dydxprotocol/clob/clob_pair'; +import { MarketPrice } from '@dydxprotocol/v4-proto/src/codegen/dydxprotocol/prices/market_price'; +import Ajv from 'ajv'; +import axios from 'axios'; +import { readFileSync } from 'fs'; +import Long from 'long'; +import { PrometheusDriver } from 'prometheus-query'; + +const LocalWalletModule = await import( + '@dydxprotocol/v4-client-js/src/clients/modules/local-wallet' +); +const LocalWallet = LocalWalletModule.default; + +const PATH_TO_PROPOSALS = 'public/configs/otherMarketData.json'; +// TODO: Query MIN_DEPOSIT and VOTING_PERIOD_SECONDS from chain. +const MIN_DEPOSIT = '10000000'; +const VOTING_PERIOD_SECONDS = 300; +const VOTE_FEE: StdFee = { + amount: [ + { + amount: '25000000000000000', + denom: 'adv4tnt', + }, + ], + gas: '1000000', +}; + +const PROMETHEUS_SERVER_URL = 'http://localhost:9091'; + +const MNEMONICS = [ + // alice + // Consensus Address: dydxvalcons1zf9csp5ygq95cqyxh48w3qkuckmpealrw2ug4d + 'merge panther lobster crazy road hollow amused security before critic about cliff exhibit cause coyote talent happy where lion river tobacco option coconut small', + + // bob + // Consensus Address: dydxvalcons1s7wykslt83kayxuaktep9fw8qxe5n73ucftkh4 + 'color habit donor nurse dinosaur stable wonder process post perfect raven gold census inside worth inquiry mammal panic olive toss shadow strong name drum', + + // carl + // Consensus Address: dydxvalcons1vy0nrh7l4rtezrsakaadz4mngwlpdmhy64h0ls + 'school artefact ghost shop exchange slender letter debris dose window alarm hurt whale tiger find found island what engine ketchup globe obtain glory manage', + + // dave + // Consensus Address: dydxvalcons1stjspktkshgcsv8sneqk2vs2ws0nw2wr272vtt + 'switch boring kiss cash lizard coconut romance hurry sniff bus accident zone chest height merit elevator furnace eagle fetch quit toward steak mystery nest', +]; + +interface Exchange { + exchangeName: ExchangeName; + ticker: string; + adjustByMarket?: string; +} + +interface Params { + id: number; + ticker: string; + marketType: 'PERPETUAL_MARKET_TYPE_ISOLATED' | 'PERPETUAL_MARKET_TYPE_CROSS'; + priceExponent: number; + minPriceChange: number; + minExchanges: number; + exchangeConfigJson: Exchange[]; + liquidityTier: number; + atomicResolution: number; + quantumConversionExponent: number; + defaultFundingPpm: number; + stepBaseQuantums: number; + subticksPerTick: number; + delayBlocks: number; +} + +interface Proposal { + title: string; + summary: string; + params: Params; +} + +enum ExchangeName { + Binance = 'Binance', + BinanceUS = 'BinanceUS', + Bitfinex = 'Bitfinex', + Bitstamp = 'Bitstamp', + Bybit = 'Bybit', + CoinbasePro = 'CoinbasePro', + CryptoCom = 'CryptoCom', + Gate = 'Gate', + Huobi = 'Huobi', + Kraken = 'Kraken', + Kucoin = 'Kucoin', + Mexc = 'Mexc', + Okx = 'Okx', +} + +interface PrometheusTimeSeries { + // value of the time serie + value: number; +} + +interface ExchangeInfo { + url: string; + tickers: Map<string, any> | null; + parseResp: (response: any) => Map<string, any>; + slinkyProviderName: string; +} + +const EXCHANGE_INFO: { [key in ExchangeName]: ExchangeInfo } = { + [ExchangeName.Binance]: { + url: 'https://data-api.binance.vision/api/v3/ticker/24hr', + tickers: null, + parseResp: (response: any) => { + return Array.from(response).reduce((acc: Map<string, any>, item: any) => { + acc.set(item.symbol, {}); + return acc; + }, new Map<string, any>()); + }, + slinkyProviderName: 'binance_api', + }, + [ExchangeName.BinanceUS]: { + url: 'https://api.binance.us/api/v3/ticker/24hr', + tickers: null, + parseResp: (response: any) => { + return Array.from(response).reduce((acc: Map<string, any>, item: any) => { + acc.set(item.symbol, {}); + return acc; + }, new Map<string, any>()); + }, + slinkyProviderName: 'binance_api', + }, + [ExchangeName.Bitfinex]: { + url: 'https://api-pub.bitfinex.com/v2/tickers?symbols=ALL', + tickers: null, + parseResp: (response: any) => { + return Array.from(response).reduce((acc: Map<string, any>, item: any) => { + acc.set(item[0], {}); + return acc; + }, new Map<string, any>()); + }, + slinkyProviderName: 'bitfinex_ws', + }, + [ExchangeName.Bitstamp]: { + url: 'https://www.bitstamp.net/api/v2/ticker/', + tickers: null, + parseResp: (response: any) => { + return Array.from(response).reduce((acc: Map<string, any>, item: any) => { + acc.set(item.pair, {}); + return acc; + }, new Map<string, any>()); + }, + slinkyProviderName: 'bitstamp_ws', + }, + [ExchangeName.Bybit]: { + url: 'https://api.bybit.com/v5/market/tickers?category=spot', + tickers: null, + parseResp: (response: any) => { + return Array.from(response.result.list).reduce((acc: Map<string, any>, item: any) => { + acc.set(item.symbol, {}); + return acc; + }, new Map<string, any>()); + }, + slinkyProviderName: 'bybit_ws', + }, + [ExchangeName.CoinbasePro]: { + url: 'https://api.exchange.coinbase.com/products', + tickers: null, + parseResp: (response: any) => { + return Array.from(response).reduce((acc: Map<string, any>, item: any) => { + acc.set(item.id, {}); + return acc; + }, new Map<string, any>()); + }, + slinkyProviderName: 'coinbase_api', + }, + [ExchangeName.CryptoCom]: { + url: 'https://api.crypto.com/v2/public/get-ticker', + tickers: null, + parseResp: (response: any) => { + return Array.from(response.result.data).reduce((acc: Map<string, any>, item: any) => { + acc.set(item.i, {}); + return acc; + }, new Map<string, any>()); + }, + slinkyProviderName: 'crypto_dot_com_ws', + }, + [ExchangeName.Gate]: { + url: 'https://api.gateio.ws/api/v4/spot/tickers', + tickers: null, + parseResp: (response: any) => { + return Array.from(response).reduce((acc: Map<string, any>, item: any) => { + acc.set(item.currency_pair, {}); + return acc; + }, new Map<string, any>()); + }, + slinkyProviderName: 'gate_ws', + }, + [ExchangeName.Huobi]: { + url: 'https://api.huobi.pro/market/tickers', + tickers: null, + parseResp: (response: any) => { + return Array.from(response.data).reduce((acc: Map<string, any>, item: any) => { + acc.set(item.symbol, {}); + return acc; + }, new Map<string, any>()); + }, + slinkyProviderName: 'huobi_ws', + }, + [ExchangeName.Kraken]: { + url: 'https://api.kraken.com/0/public/Ticker', + tickers: null, + parseResp: (response: any) => { + return new Map<string, any>(Object.entries(response.result)); + }, + slinkyProviderName: 'kraken_api', + }, + [ExchangeName.Kucoin]: { + url: 'https://api.kucoin.com/api/v1/market/allTickers', + tickers: null, + parseResp: (response: any) => { + return Array.from(response.data.ticker).reduce((acc: Map<string, any>, item: any) => { + acc.set(item.symbol, {}); + return acc; + }, new Map<string, any>()); + }, + slinkyProviderName: 'kucoin_ws', + }, + [ExchangeName.Mexc]: { + url: 'https://www.mexc.com/open/api/v2/market/ticker', + tickers: null, + parseResp: (response: any) => { + return Array.from(response.data).reduce((acc: Map<string, any>, item: any) => { + acc.set(item.symbol, {}); + return acc; + }, new Map<string, any>()); + }, + slinkyProviderName: 'mexc_ws', + }, + [ExchangeName.Okx]: { + url: 'https://www.okx.com/api/v5/market/tickers?instType=SPOT', + tickers: null, + parseResp: (response: any) => { + return Array.from(response.data).reduce((acc: Map<string, any>, item: any) => { + acc.set(item.instId, {}); + return acc; + }, new Map<string, any>()); + }, + slinkyProviderName: 'okx_ws', + }, +}; + +async function validateExchangeConfigJson(exchangeConfigJson: Exchange[]): Promise<void> { + const exchanges: Set<ExchangeName> = new Set(); + for (const exchange of exchangeConfigJson) { + if (!(exchange.exchangeName in EXCHANGE_INFO)) { + throw new Error(`Exchange ${exchange.exchangeName} not supported`); + } + // Each exchange should be unique. + if (exchanges.has(exchange.exchangeName)) { + throw new Error(`Found duplicate exchange: ${exchange.exchangeName}`); + } + exchanges.add(exchange.exchangeName); + + // `adjustByMarket` should be set if ticker doesn't end in usd or USD. + if ( + (!/usd$/i.test(exchange.ticker) && exchange.adjustByMarket === undefined) || + exchange.adjustByMarket === '' + ) { + throw new Error( + `adjustByMarket is not set for ticker ${exchange.ticker} on exchange ${exchange.exchangeName}` + ); + } + const { url, tickers, parseResp } = EXCHANGE_INFO[exchange.exchangeName]; + + // TODO: Skip Bybit exchange until we can query from non-US IP. + if (exchange.exchangeName === ExchangeName.Bybit) { + return; // exit the current iteration of the loop. + } + + // Query exchange tickers if not yet. + if (tickers === null) { + try { + const response = await axios.get(url); + EXCHANGE_INFO[exchange.exchangeName].tickers = parseResp(response.data); + console.log(`Fetched tickers from exchange ${exchange.exchangeName}`); + } catch (error) { + throw new Error(`Error fetching tickers for exchange ${exchange.exchangeName}: ${error}`); + } + } + + // Validate ticker. + if (!EXCHANGE_INFO[exchange.exchangeName].tickers?.has(exchange.ticker)) { + throw new Error(`Ticker ${exchange.ticker} not found for exchange ${exchange.exchangeName}`); + } + console.log(`Validated ticker ${exchange.ticker} for exchange ${exchange.exchangeName}`); + } +} + +// Vote YES on all `proposalIds` from `wallet`. +async function voteOnProposals( + proposalIds: number[], + client: CompositeClient, + wallet: LocalWalletType +): Promise<void> { + // Construct Tx. + const encodedVotes: EncodeObject[] = proposalIds.map((proposalId) => { + return { + typeUrl: '/cosmos.gov.v1.MsgVote', + value: { + proposalId: Long.fromNumber(proposalId), + voter: wallet.address!, + option: VoteOption.VOTE_OPTION_YES, + metadata: '', + } as MsgVote, + } as EncodeObject; + }); + const account: Account = await client.validatorClient.get.getAccount(wallet.address!); + const signedTx = await wallet.signTransaction( + encodedVotes, + { + sequence: account.sequence, + accountNumber: account.accountNumber, + chainId: client.network.validatorConfig.chainId, + } as TransactionOptions, + VOTE_FEE + ); + + // Broadcast Tx. + const resp = await client.validatorClient.get.tendermintClient.broadcastTransaction( + signedTx, + Method.BroadcastTxSync + ); + if ((resp as BroadcastTxSyncResponse).code) { + throw new Error(`Failed to vote on proposals ${proposalIds}`); + } else { + console.log(`Voted on proposals ${proposalIds} with wallet ${wallet.address}`); + } +} + +async function validateAgainstLocalnet(proposals: Proposal[]): Promise<void> { + // Initialize wallets. + const network = Network.local(); + const client = await CompositeClient.connect(network); + const wallets: LocalWalletType[] = await Promise.all( + MNEMONICS.map((mnemonic) => { + return LocalWallet.fromMnemonic(mnemonic, 'dydx'); + }) + ); + + // Send proposals to add all markets (unless a market with that ticker already exists). + const allPerps = await client.validatorClient.get.getAllPerpetuals(); + const allTickers = allPerps.perpetual.map((perp) => perp.params!.ticker); + const filteredProposals = proposals.filter( + (proposal) => !allTickers.includes(proposal.params.ticker) + ); + + const numExistingMarkets = allPerps.perpetual.reduce( + (max, perp) => (perp.params!.id > max ? perp.params!.id : max), + 0 + ); + const marketsProposed = new Map<number, Proposal>(); // marketId -> Proposal + + for (let i = 0; i < filteredProposals.length; i += 4) { + // Send out proposals in groups of 4 or fewer. + const proposalsToSend = filteredProposals.slice(i, i + 4); + const proposalIds: number[] = []; + for (let j = 0; j < proposalsToSend.length; j++) { + // Use wallets[j] to send out proposalsToSend[j] + const proposal = proposalsToSend[j]; + const proposalId: number = i + j + 1; + const marketId: number = numExistingMarkets + proposalId; + + // Send proposal. + const exchangeConfigString = `{"exchanges":${JSON.stringify( + proposal.params.exchangeConfigJson + )}}`; + const tx = await retry(() => + client.submitGovAddNewMarketProposal( + wallets[j], + // @ts-ignore: marketType is not a valid parameter for addNewMarketProposal + { + id: marketId, + ticker: proposal.params.ticker, + priceExponent: proposal.params.priceExponent, + minPriceChange: proposal.params.minPriceChange, + minExchanges: proposal.params.minExchanges, + exchangeConfigJson: exchangeConfigString, + liquidityTier: proposal.params.liquidityTier, + atomicResolution: proposal.params.atomicResolution, + quantumConversionExponent: proposal.params.quantumConversionExponent, + stepBaseQuantums: Long.fromNumber(proposal.params.stepBaseQuantums), + subticksPerTick: proposal.params.subticksPerTick, + delayBlocks: proposal.params.delayBlocks, + marketType: + proposal.params.marketType === 'PERPETUAL_MARKET_TYPE_ISOLATED' + ? PerpetualMarketType.PERPETUAL_MARKET_TYPE_ISOLATED + : PerpetualMarketType.PERPETUAL_MARKET_TYPE_CROSS, + }, + proposal.title, + proposal.summary, + MIN_DEPOSIT + ) + ); + console.log( + `Tx by wallet ${j} to add market ${marketId} with ticker ${proposal.params.ticker}`, + tx + ); + + // Record proposed market. + marketsProposed.set(marketId, proposal); + proposalIds.push(proposalId); + } + + // Wait 10 seconds for proposals to be processed. + await sleep(10000); + + // Vote YES on proposals from every wallet. + for (const wallet of wallets) { + retry(() => voteOnProposals(proposalIds, client, wallet)); + } + + // Wait 10 seconds for votes to be processed. + await sleep(10000); + } + + // Wait for voting period to end. + console.log(`\nWaiting for ${VOTING_PERIOD_SECONDS} seconds for voting period to end...`); + await sleep(VOTING_PERIOD_SECONDS * 1000); + + // Check that no proposal failed. + console.log('\nChecking that no proposal failed...'); + const proposalsFailed = await client.validatorClient.get.getAllGovProposals( + ProposalStatus.PROPOSAL_STATUS_FAILED + ); + if (proposalsFailed.proposals.length > 0) { + const failedIds = proposalsFailed.proposals.map((proposal) => proposal.id); + throw new Error(`Proposals ${failedIds} failed: ${proposalsFailed.proposals}`); + } + + // Wait for prices to update. + console.log('\nWaiting for 300 seconds for prices to update...'); + await sleep(300 * 1000); + + // Check markets on chain. + console.log('\nChecking price, clob pair, and perpetual on chain for each market proposed...'); + for (const [marketId, proposal] of marketsProposed.entries()) { + console.log(`\nChecking ${proposal?.params?.ticker}`); + const isDydxUsd = proposal.params.ticker.toLowerCase() === 'dydx-usd'; + // Validate price. + const price = await client.validatorClient.get.getPrice(isDydxUsd ? 1000001 : marketId); + validatePrice(price.marketPrice!, proposal); + + // Validate clob pair. + const clobPair = await client.validatorClient.get.getClobPair(marketId); + validateClobPair(clobPair.clobPair!, proposal); + + // Validate perpetual. + const perpetual = await client.validatorClient.get.getPerpetual(marketId); + validatePerpetual(perpetual.perpetual!, proposal); + } + + console.log(`\nValidated ${marketsProposed.size} proposals against localnet`); + + // for all markets proposed, determine if the slinky metrics are ok + for (const proposal of marketsProposed.values()) { + for (const exchange of proposal.params.exchangeConfigJson) { + validateSlinkyMetricsPerTicker( + dydxTickerToSlinkyTicker(proposal.params.ticker), + exchange.ticker.toLowerCase(), + EXCHANGE_INFO[exchange.exchangeName].slinkyProviderName + ); + } + } +} + +// convert a ticker like BTC-USD -> btc/usd +function dydxTickerToSlinkyTicker(ticker: string): string { + return ticker.toLowerCase().replace('-', '/'); +} + +function validateSlinkyMetricsPerTicker( + ticker: string, + exchangeSpecificTicker: string, + exchange: string +): void { + const prometheus = new PrometheusDriver({ + endpoint: PROMETHEUS_SERVER_URL, + baseURL: '/api/v1', + }); + + const exchangeAPIQuerySuccessRate = `( + sum(rate(side_car_provider_status_responses_per_id{status = "success", provider="${exchange}", id="${exchangeSpecificTicker}"}[1m])) by (provider, id) + ) / + ( + sum(rate(side_car_provider_status_responses_per_id{provider="${exchange}", id="${exchangeSpecificTicker}"}[1m])) by (provider, id) + )`; + + const slinkyPriceAggregationQuery = `( + sum(rate(side_car_health_check_ticker_updates_total{id="${ticker}"}[1m])) by (instance, job) + / + sum(rate(side_car_health_check_system_updates_total[1m])) by (instance, job) +)`; + + const slinkyProviderPricesQuery = `sum(rate(side_car_health_check_provider_updates_total{provider="${exchange}", id="${ticker}", success='true'}[1m])) by (provider, id) + / + sum(rate(side_car_health_check_provider_updates_total{provider="${exchange}", id="${ticker}"}[1m])) by (provider, id)`; + + const start = new Date().getTime() - 3 * 60 * 1000; + const end = new Date().getTime(); + const step = 60; + + // determine success-rate for slinky queries to each exchange + makePrometheusRateQuery(prometheus, exchangeAPIQuerySuccessRate, start, end, step, 0.7); + + // determine success rate for slinky price aggregation per market + makePrometheusRateQuery(prometheus, slinkyPriceAggregationQuery, start, end, step, 0.7); + + // determine success rate for slinky price provider per market + makePrometheusRateQuery(prometheus, slinkyProviderPricesQuery, start, end, step, 0.7); +} + +function makePrometheusRateQuery( + prometheus: PrometheusDriver, + query: string, + start: number, + end: number, + step: number, + threshold: number +): void { + prometheus + .rangeQuery(query, start, end, step) + .then((response) => { + const series = response.result; + series.forEach((s) => { + const values = s.values; + let totalSuccessRate = 0; + values.forEach((v: PrometheusTimeSeries) => { + // take the average of all success-rates over the interval + if (!Number.isNaN(v.value)) { + // we see NaN when there have been no successes from the provider + totalSuccessRate += v.value; + } + }); + if (values.length === 0 || totalSuccessRate / values.length < threshold) { + throw new Error( + `slinky metrics for ${query} is below success rate threshold ${threshold}: ${ + totalSuccessRate / values.length + }` + ); + } + }); + }) + .catch((error) => { + throw error; + }); +} + +function validatePrice(price: MarketPrice, proposal: Proposal): void { + if (price.exponent !== proposal.params.priceExponent) { + throw new Error(`Price exponent mismatch for price ${price.id}`); + } + if (price.price.isZero()) { + throw new Error(`Price is 0 for price ${price.id}`); + } +} + +function validateClobPair(clobPair: ClobPair, proposal: Proposal): void { + if (clobPair.quantumConversionExponent !== proposal.params.quantumConversionExponent) { + throw new Error(`Quantum conversion exponent mismatch for clob pair ${clobPair.id}`); + } + if (!clobPair.stepBaseQuantums.equals(proposal.params.stepBaseQuantums)) { + throw new Error(`Step base quantums mismatch for clob pair ${clobPair.id}`); + } + if (clobPair.subticksPerTick !== proposal.params.subticksPerTick) { + throw new Error(`Subticks per tick mismatch for clob pair ${clobPair.id}`); + } +} + +function validatePerpetual(perpetual: Perpetual, proposal: Proposal): void { + if (perpetual.params!.atomicResolution !== proposal.params.atomicResolution) { + throw new Error(`Atomic resolution mismatch for perpetual ${perpetual.params!.id}`); + } + if (perpetual.params!.liquidityTier !== proposal.params.liquidityTier) { + throw new Error(`Liquidity tier mismatch for perpetual ${perpetual.params!.id}`); + } +} + +function validateParamsSchema(proposal: Proposal): void { + const ajv = new Ajv(); + + const schema = { + type: 'object', + properties: { + id: { type: 'number' }, + ticker: { type: 'string' }, + priceExponent: { type: 'number' }, + minPriceChange: { type: 'number' }, + minExchanges: { type: 'number' }, + exchangeConfigJson: { + type: 'array', + items: { + type: 'object', + properties: { + exchangeName: { type: 'string' }, + ticker: { type: 'string' }, + adjustByMarket: { type: 'string', nullable: true }, + }, + required: ['exchangeName', 'ticker'], + additionalProperties: false, + }, + }, + liquidityTier: { type: 'number' }, + atomicResolution: { type: 'number' }, + quantumConversionExponent: { type: 'number' }, + stepBaseQuantums: { type: 'number' }, + subticksPerTick: { type: 'number' }, + delayBlocks: { type: 'number' }, + }, + required: [ + 'id', + 'ticker', + 'priceExponent', + 'minPriceChange', + 'minExchanges', + 'exchangeConfigJson', + 'liquidityTier', + 'atomicResolution', + 'quantumConversionExponent', + 'stepBaseQuantums', + 'subticksPerTick', + 'delayBlocks', + ], + }; + + const validateParams = ajv.compile(schema); + validateParams(proposal.params); + if (validateParams.errors) { + console.error(validateParams.errors); + throw new Error(`Json schema validation failed for proposal ${proposal.params.ticker}`); + } +} + +async function sleep(ms: number): Promise<void> { + return new Promise((resolve) => { + setTimeout(resolve, ms); + }); +} + +async function retry<T>( + fn: () => Promise<T>, + retries: number = 5, + delay: number = 2000 +): Promise<T> { + try { + return await fn(); + } catch (error) { + console.error(`Function ${fn.name} failed: ${error}. Retrying in ${delay}ms...`); + if (retries <= 0) { + throw error; + } + await sleep(delay); + return retry(fn, retries - 1, delay); + } +} + +async function main(): Promise<void> { + // Read proposals from json file. + const fileContent = readFileSync(PATH_TO_PROPOSALS, 'utf8'); + const proposals: Proposal[] = Object.values(JSON.parse(fileContent)); + + // Validate JSON schema. + console.log('Validating JSON schema of params...\n'); + for (const proposal of proposals) { + validateParamsSchema(proposal); + } + + // Validate proposal parameters. + console.log('\nValidating proposal parameters...\n'); + for (const proposal of proposals) { + // Validate exchange configuration of the market. + await validateExchangeConfigJson(proposal.params.exchangeConfigJson); + } + + // Validate proposals against localnet. + console.log('\nTesting proposals against localnet...\n'); + await validateAgainstLocalnet(proposals); +} + +main() + .then(() => { + console.log('\nAll proposals validated successfully.'); + }) + .catch((error) => { + console.error('\nError validating proposals:', error); + process.exit(1); + }); diff --git a/src/App.tsx b/src/App.tsx index fb52216e6..dd177a58c 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,50 +1,52 @@ import { lazy, Suspense, useMemo } from 'react'; + +import { PrivyProvider } from '@privy-io/react-auth'; +import { PrivyWagmiConnector } from '@privy-io/wagmi-connector'; +import { GrazProvider } from 'graz'; +import { QueryClient, QueryClientProvider } from 'react-query'; import { Navigate, Route, Routes, useLocation } from 'react-router-dom'; -import styled, { AnyStyledComponent, css } from 'styled-components'; +import styled, { css } from 'styled-components'; import { WagmiConfig } from 'wagmi'; -import { QueryClient, QueryClientProvider } from 'react-query'; -import { GrazProvider } from 'graz'; import { AppRoute, DEFAULT_TRADE_ROUTE, MarketsRoute } from '@/constants/routes'; -import { - useBreakpoints, - useTokenConfigs, - useInitializePage, - useShouldShowFooter, - useAnalytics, -} from '@/hooks'; -import { DydxProvider } from '@/hooks/useDydxClient'; import { AccountsProvider } from '@/hooks/useAccounts'; import { AppThemeAndColorModeProvider } from '@/hooks/useAppThemeAndColorMode'; import { DialogAreaProvider, useDialogArea } from '@/hooks/useDialogArea'; +import { DydxProvider } from '@/hooks/useDydxClient'; +import { LocalNotificationsProvider } from '@/hooks/useLocalNotifications'; import { LocaleProvider } from '@/hooks/useLocaleSeparators'; import { NotificationsProvider } from '@/hooks/useNotifications'; -import { LocalNotificationsProvider } from '@/hooks/useLocalNotifications'; import { PotentialMarketsProvider } from '@/hooks/usePotentialMarkets'; import { RestrictionProvider } from '@/hooks/useRestrictions'; import { SubaccountProvider } from '@/hooks/useSubaccount'; +import { breakpoints } from '@/styles'; +import '@/styles/constants.css'; +import '@/styles/fonts.css'; +import { GlobalStyle } from '@/styles/globalStyle'; +import { layoutMixins } from '@/styles/layoutMixins'; +import '@/styles/web3modal.css'; + import { GuardedMobileRoute } from '@/components/GuardedMobileRoute'; import { LoadingSpace } from '@/components/Loading/LoadingSpinner'; - -import { HeaderDesktop } from '@/layout/Header/HeaderDesktop'; +import { DialogManager } from '@/layout/DialogManager'; import { FooterDesktop } from '@/layout/Footer/FooterDesktop'; import { FooterMobile } from '@/layout/Footer/FooterMobile'; +import { HeaderDesktop } from '@/layout/Header/HeaderDesktop'; import { NotificationsToastArea } from '@/layout/NotificationsToastArea'; -import { DialogManager } from '@/layout/DialogManager'; import { GlobalCommandDialog } from '@/views/dialogs/GlobalCommandDialog'; import { parseLocationHash } from '@/lib/urlUtils'; -import { config } from '@/lib/wagmi'; +import { config, configureChainsConfig, privyConfig } from '@/lib/wagmi'; -import { breakpoints } from '@/styles'; -import { GlobalStyle } from '@/styles/globalStyle'; -import { layoutMixins } from '@/styles/layoutMixins'; - -import '@/styles/constants.css'; -import '@/styles/fonts.css'; -import '@/styles/web3modal.css'; +import { ComplianceStates } from './constants/compliance'; +import { useAnalytics } from './hooks/useAnalytics'; +import { useBreakpoints } from './hooks/useBreakpoints'; +import { useComplianceState } from './hooks/useComplianceState'; +import { useInitializePage } from './hooks/useInitializePage'; +import { useShouldShowFooter } from './hooks/useShouldShowFooter'; +import { useTokenConfigs } from './hooks/useTokenConfigs'; const NewMarket = lazy(() => import('@/pages/markets/NewMarket')); const MarketsPage = lazy(() => import('@/pages/markets/Markets')); @@ -60,8 +62,6 @@ const TokenPage = lazy(() => import('@/pages/token/Token')); const queryClient = new QueryClient(); const Content = () => { - const { setDialogArea } = useDialogArea(); - useInitializePage(); useAnalytics(); @@ -71,6 +71,8 @@ const Content = () => { const { chainTokenLabel } = useTokenConfigs(); const location = useLocation(); + const { complianceState } = useComplianceState(); + const pathFromHash = useMemo(() => { if (location.hash === '') { return ''; @@ -78,13 +80,14 @@ const Content = () => { return parseLocationHash(location.hash); }, [location.hash]); + const { dialogAreaRef } = useDialogArea() ?? {}; return ( <> <GlobalStyle /> - <Styled.Content isShowingHeader={isShowingHeader} isShowingFooter={isShowingFooter}> + <$Content isShowingHeader={isShowingHeader} isShowingFooter={isShowingFooter}> {isNotTablet && <HeaderDesktop />} - <Styled.Main> + <$Main> <Suspense fallback={<LoadingSpace id="main" />}> <Routes> <Route path={AppRoute.Trade}> @@ -96,7 +99,18 @@ const Content = () => { <Route path={MarketsRoute.New} element={<NewMarket />} /> <Route path={AppRoute.Markets} element={<MarketsPage />} /> </Route> - <Route path={`/${chainTokenLabel}/*`} element={<TokenPage />} /> + + <Route + path={`/${chainTokenLabel}/*`} + element={ + complianceState === ComplianceStates.FULL_ACCESS ? ( + <TokenPage /> + ) : ( + <Navigate to={DEFAULT_TRADE_ROUTE} /> + ) + } + /> + {isTablet && ( <> <Route path={AppRoute.Alerts} element={<AlertsPage />} /> @@ -117,18 +131,18 @@ const Content = () => { /> </Routes> </Suspense> - </Styled.Main> + </$Main> {isTablet ? <FooterMobile /> : <FooterDesktop />} - <Styled.NotificationsToastArea /> + <$NotificationsToastArea /> - <Styled.DialogArea ref={setDialogArea}> + <$DialogArea ref={dialogAreaRef}> <DialogManager /> - </Styled.DialogArea> + </$DialogArea> <GlobalCommandDialog /> - </Styled.Content> + </$Content> </> ); }; @@ -141,8 +155,13 @@ const wrapProvider = (Component: React.ComponentType<any>, props?: any) => { }; const providers = [ + wrapProvider(PrivyProvider, { + appId: import.meta.env.VITE_PRIVY_APP_ID ?? 'dummyappiddummyappiddummy', + config: privyConfig, + }), wrapProvider(QueryClientProvider, { client: queryClient }), wrapProvider(GrazProvider), + wrapProvider(PrivyWagmiConnector, { wagmiChainsConfig: configureChainsConfig }), wrapProvider(WagmiConfig, { config }), wrapProvider(LocaleProvider), wrapProvider(RestrictionProvider), @@ -162,9 +181,7 @@ const App = () => { }, <Content />); }; -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.Content = styled.div<{ isShowingHeader: boolean; isShowingFooter: boolean }>` +const $Content = styled.div<{ isShowingHeader: boolean; isShowingFooter: boolean }>` /* Computed */ --page-currentHeaderHeight: 0px; --page-currentFooterHeight: 0px; @@ -188,12 +205,12 @@ Styled.Content = styled.div<{ isShowingHeader: boolean; isShowingFooter: boolean --page-currentFooterHeight: var(--page-footer-height-mobile); } `} - - /* Rules */ - ${layoutMixins.contentContainer} - - ${layoutMixins.scrollArea} - --scrollArea-height: 100vh; + + /* Rules */ + ${layoutMixins.contentContainer} + + ${layoutMixins.scrollArea} + --scrollArea-height: 100vh; @supports (-webkit-touch-callout: none) { height: -webkit-fill-available; @@ -216,7 +233,7 @@ Styled.Content = styled.div<{ isShowingHeader: boolean; isShowingFooter: boolean transition: 0.3s var(--ease-out-expo); `; -Styled.Main = styled.main` +const $Main = styled.main` ${layoutMixins.contentSectionAttached} box-shadow: none; @@ -227,12 +244,12 @@ Styled.Main = styled.main` position: relative; `; -Styled.NotificationsToastArea = styled(NotificationsToastArea)` +const $NotificationsToastArea = styled(NotificationsToastArea)` grid-area: Main; z-index: 2; `; -Styled.DialogArea = styled.aside` +const $DialogArea = styled.aside` position: fixed; height: 100%; z-index: 1; diff --git a/src/components/Accordion.stories.tsx b/src/components/Accordion.stories.tsx index be7b479be..40a532a46 100644 --- a/src/components/Accordion.stories.tsx +++ b/src/components/Accordion.stories.tsx @@ -23,4 +23,4 @@ Accordion.args = { content: 'Answer 2.', }, ], -}; \ No newline at end of file +}; diff --git a/src/components/Accordion.tsx b/src/components/Accordion.tsx index 1bdad5c2c..99056f093 100644 --- a/src/components/Accordion.tsx +++ b/src/components/Accordion.tsx @@ -1,11 +1,9 @@ -import styled, { keyframes, type AnyStyledComponent } from 'styled-components'; - -import { Root, Item, Header, Trigger, Content } from '@radix-ui/react-accordion'; - -import { layoutMixins } from '@/styles/layoutMixins'; -import { breakpoints } from '@/styles'; +import { Content, Header, Item, Root, Trigger } from '@radix-ui/react-accordion'; +import styled, { keyframes } from 'styled-components'; import { PlusIcon } from '@/icons'; +import { breakpoints } from '@/styles'; +import { layoutMixins } from '@/styles/layoutMixins'; export type AccordionItem = { header: React.ReactNode; @@ -18,26 +16,23 @@ export type AccordionProps = { }; export const Accordion = ({ items, className }: AccordionProps) => ( - <Styled.Root className={className} type="single" collapsible> + <$Root className={className} type="single" collapsible> {items.map(({ header, content }, idx) => ( - <Styled.Item key={idx} value={idx.toString()}> + <$Item key={idx} value={idx.toString()}> <Header> - <Styled.Trigger> + <$Trigger> {header} - <Styled.Icon> + <$Icon> <PlusIcon /> - </Styled.Icon> - </Styled.Trigger> + </$Icon> + </$Trigger> </Header> - <Styled.Content>{content}</Styled.Content> - </Styled.Item> + <$Content>{content}</$Content> + </$Item> ))} - </Styled.Root> + </$Root> ); - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.Root = styled(Root)` +const $Root = styled(Root)` --accordion-paddingY: 1rem; --accordion-paddingX: 1rem; @@ -50,9 +45,9 @@ Styled.Root = styled(Root)` } `; -Styled.Item = styled(Item)``; +const $Item = styled(Item)``; -Styled.Icon = styled.div` +const $Icon = styled.div` display: inline-flex; justify-content: center; align-items: center; @@ -73,7 +68,7 @@ Styled.Icon = styled.div` } `; -Styled.Trigger = styled(Trigger)` +const $Trigger = styled(Trigger)` ${layoutMixins.spacedRow} width: 100%; padding: var(--accordion-paddingY) var(--accordion-paddingX); @@ -83,7 +78,7 @@ Styled.Trigger = styled(Trigger)` text-align: start; &:hover { - ${Styled.Icon} { + ${$Icon} { color: var(--color-text-2); filter: brightness(var(--hover-filter-base)); } @@ -99,7 +94,7 @@ Styled.Trigger = styled(Trigger)` } `; -Styled.Content = styled(Content)` +const $Content = styled(Content)` overflow: hidden; margin: 0 var(--accordion-paddingX) var(--accordion-paddingY); diff --git a/src/components/AlertMessage.tsx b/src/components/AlertMessage.tsx index 7fdc0019a..d66f1a52f 100644 --- a/src/components/AlertMessage.tsx +++ b/src/components/AlertMessage.tsx @@ -1,6 +1,7 @@ import styled, { css } from 'styled-components'; import { AlertType } from '@/constants/alerts'; + import { layoutMixins } from '@/styles/layoutMixins'; type StyleProps = { @@ -35,21 +36,25 @@ const AlertContainer = styled.div<StyleProps>` case AlertType.Error: { return css` --alert-accent-color: var(--color-error); + --alert-background: var(--color-gradient-error); `; } case AlertType.Info: { return css` --alert-accent-color: var(--color-text-1); + --alert-background: var(--color-layer-7); `; } case AlertType.Success: { return css` --alert-accent-color: var(--color-success); + --alert-background: var(--color-gradient-success); `; } case AlertType.Warning: { return css` --alert-accent-color: var(--color-warning); + --alert-background: var(--color-gradient-warning); `; } default: diff --git a/src/components/AssetIcon.tsx b/src/components/AssetIcon.tsx index af1d4031c..1470b67a4 100644 --- a/src/components/AssetIcon.tsx +++ b/src/components/AssetIcon.tsx @@ -1,4 +1,4 @@ -import styled, { type AnyStyledComponent } from 'styled-components'; +import styled from 'styled-components'; import { Nullable } from '@/constants/abacus'; @@ -8,16 +8,22 @@ const assetIcons = { '1INCH': '/currencies/1inch.png', AAVE: '/currencies/aave.png', ADA: '/currencies/ada.png', + AEVO: '/currencies/aevo.png', AGIX: '/currencies/agix.png', ALGO: '/currencies/algo.png', APE: '/currencies/ape.png', + API3: '/currencies/api3.png', APT: '/currencies/apt.png', ARB: '/currencies/arb.png', + ARKM: '/currencies/arkm.png', + ASTR: '/currencies/astr.png', ATOM: '/currencies/atom.png', AVAX: '/currencies/avax.png', + AXL: '/currencies/axl.png', BCH: '/currencies/bch.png', BLUR: '/currencies/blur.png', BNB: '/currencies/bnb.png', + BOME: '/currencies/bome.png', BONK: '/currencies/bonk.png', BTC: '/currencies/btc.png', CELO: '/currencies/celo.png', @@ -34,8 +40,10 @@ const assetIcons = { EOS: '/currencies/eos.png', ETC: '/currencies/etc.png', ETH: '/currencies/eth.png', + ETHFI: '/currencies/ethfi.png', FET: '/currencies/fet.png', FIL: '/currencies/fil.png', + FLR: '/currencies/flr.png', FTM: '/currencies/ftm.png', GALA: '/currencies/gala.png', GMT: '/currencies/gmt.png', @@ -50,15 +58,19 @@ const assetIcons = { LDO: '/currencies/ldo.png', LINK: '/currencies/link.png', LTC: '/currencies/ltc.png', + MAGIC: '/currencies/magic.png', MANA: '/currencies/mana.png', MATIC: '/currencies/matic.png', MASK: '/currencies/mask.png', + MEME: '/currencies/meme.png', MINA: '/currencies/mina.png', MKR: '/currencies/mkr.png', NEAR: '/currencies/near.png', + OCEAN: '/currencies/ocean.png', ORDI: '/currencies/ordi.png', OP: '/currencies/op.png', PEPE: '/currencies/pepe.png', + PORTAL: '/currencies/portal.png', PYTH: '/currencies/pyth.png', RNDR: '/currencies/rndr.png', RUNE: '/currencies/rune.png', @@ -72,6 +84,7 @@ const assetIcons = { SUI: '/currencies/sui.png', SUSHI: '/currencies/sushi.png', TIA: '/currencies/tia.png', + TON: '/currencies/ton.png', TRX: '/currencies/trx.png', UMA: '/currencies/uma.png', UNI: '/currencies/uni.png', @@ -79,6 +92,7 @@ const assetIcons = { USDT: '/currencies/usdt.png', WBTC: '/currencies/wbtc.png', WETH: '/currencies/weth.png', + WIF: '/currencies/wif.png', WOO: '/currencies/woo.png', WLD: '/currencies/wld.png', XLM: '/currencies/xlm.png', @@ -101,16 +115,13 @@ export const AssetIcon = ({ symbol?: Nullable<string>; className?: string; }) => ( - <Styled.Img + <$Img src={isAssetSymbol(symbol) ? assetIcons[symbol] : '/currencies/unavailable.png'} className={className} - alt={symbol} + alt={symbol ?? undefined} /> ); - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.Img = styled.img` +const $Img = styled.img` width: auto; height: 1em; `; diff --git a/src/components/BackButton.tsx b/src/components/BackButton.tsx index 9c40b64fd..524fc69bb 100644 --- a/src/components/BackButton.tsx +++ b/src/components/BackButton.tsx @@ -7,7 +7,12 @@ type ElementProps = { onClick?: () => void; }; +type StyleProps = { + className?: string; +}; + export const BackButton = ({ + className, onClick = () => { // @ts-ignore const navigation = globalThis.navigation; @@ -21,8 +26,9 @@ export const BackButton = ({ navigation.navigate('/', { replace: true }); } }, -}: ElementProps) => ( +}: ElementProps & StyleProps) => ( <IconButton + className={className} onClick={onClick} iconName={IconName.ChevronLeft} size={ButtonSize.Small} diff --git a/src/components/BaseButton.tsx b/src/components/BaseButton.tsx index 25b42471c..377eec0f7 100644 --- a/src/components/BaseButton.tsx +++ b/src/components/BaseButton.tsx @@ -1,4 +1,5 @@ import { forwardRef } from 'react'; + import styled, { css } from 'styled-components'; import { ButtonShape, ButtonSize, ButtonType } from '@/constants/buttons'; diff --git a/src/components/Button.stories.tsx b/src/components/Button.stories.tsx index 6e42d85ab..6bac9220a 100644 --- a/src/components/Button.stories.tsx +++ b/src/components/Button.stories.tsx @@ -1,6 +1,12 @@ import type { Story } from '@ladle/react'; -import { ButtonAction, ButtonShape, ButtonSize, ButtonState, ButtonType } from '@/constants/buttons'; +import { + ButtonAction, + ButtonShape, + ButtonSize, + ButtonState, + ButtonType, +} from '@/constants/buttons'; import { Button, type ButtonProps } from '@/components/Button'; diff --git a/src/components/Button.tsx b/src/components/Button.tsx index b86ae4c12..9ccadf5f5 100644 --- a/src/components/Button.tsx +++ b/src/components/Button.tsx @@ -64,19 +64,17 @@ export const Button = forwardRef<HTMLButtonElement | HTMLAnchorElement, ButtonPr disabled={state[ButtonState.Disabled] || state[ButtonState.Loading]} {...{ ref, action, size, shape, state, ...otherProps }} > - { - <> - {state[ButtonState.Loading] ? ( - <LoadingDots size={3} /> - ) : ( - <> - {slotLeft} - {children} - {slotRight} - </> - )} - </> - } + <> + {state[ButtonState.Loading] ? ( + <LoadingDots size={3} /> + ) : ( + <> + {slotLeft} + {children} + {slotRight} + </> + )} + </> </StyledBaseButton> ); } @@ -129,34 +127,46 @@ const buttonActionVariants = { `, }; -const buttonStateVariants: Record< - ButtonState, - FlattenSimpleInterpolation | FlattenInterpolation<ThemeProps<any>> -> = { +const getDisabledStateForButtonAction = (action?: ButtonAction) => { + switch (action) { + case ButtonAction.Navigation: + return css` + --button-textColor: var(--color-text-0); + --button-hover-filter: none; + --button-cursor: not-allowed; + `; + default: + return css` + --button-textColor: var(--color-text-0); + --button-backgroundColor: var(--color-layer-2); + --button-border: solid var(--border-width) var(--color-layer-6); + --button-hover-filter: none; + --button-cursor: not-allowed; + `; + } +}; + +const buttonStateVariants = ( + action?: ButtonAction +): Record<ButtonState, FlattenSimpleInterpolation | FlattenInterpolation<ThemeProps<any>>> => ({ [ButtonState.Default]: css``, - [ButtonState.Disabled]: css` - --button-textColor: var(--color-text-0); - --button-backgroundColor: var(--color-layer-2); - --button-border: solid var(--border-width) var(--color-layer-6); - --button-hover-filter: none; - --button-cursor: not-allowed; - `, + [ButtonState.Disabled]: getDisabledStateForButtonAction(action), [ButtonState.Loading]: css` - ${() => buttonStateVariants[ButtonState.Disabled]} + ${() => buttonStateVariants(action)[ButtonState.Disabled]} min-width: 4em; `, -}; +}); const StyledBaseButton = styled(BaseButton)<StyleProps>` ${({ action }) => action && buttonActionVariants[action]} - ${({ state }) => + ${({ action, state }) => state && css` // Ordered from lowest to highest priority (ie. Disabled should overwrite Active and Loading states) - ${state[ButtonState.Loading] && buttonStateVariants[ButtonState.Loading]} - ${state[ButtonState.Disabled] && buttonStateVariants[ButtonState.Disabled]} + ${state[ButtonState.Loading] && buttonStateVariants(action)[ButtonState.Loading]} + ${state[ButtonState.Disabled] && buttonStateVariants(action)[ButtonState.Disabled]} `} `; diff --git a/src/components/Checkbox.stories.tsx b/src/components/Checkbox.stories.tsx index 3a4f24a97..b5ad9c547 100644 --- a/src/components/Checkbox.stories.tsx +++ b/src/components/Checkbox.stories.tsx @@ -1,4 +1,5 @@ import { useState } from 'react'; + import type { Story } from '@ladle/react'; import { Checkbox, CheckboxProps } from '@/components/Checkbox'; @@ -28,5 +29,5 @@ CheckboxStory.argTypes = { options: [true, false], control: { type: 'select' }, defaultValue: false, - } -} + }, +}; diff --git a/src/components/Checkbox.tsx b/src/components/Checkbox.tsx index 091ebf295..acd081945 100644 --- a/src/components/Checkbox.tsx +++ b/src/components/Checkbox.tsx @@ -1,6 +1,6 @@ -import styled, { css, type AnyStyledComponent } from 'styled-components'; -import { Root, Indicator } from '@radix-ui/react-checkbox'; +import { Indicator, Root } from '@radix-ui/react-checkbox'; import { CheckIcon } from '@radix-ui/react-icons'; +import styled, { css } from 'styled-components'; import { layoutMixins } from '@/styles/layoutMixins'; @@ -26,35 +26,32 @@ export const Checkbox: React.FC<CheckboxProps> = ({ label, disabled, }) => ( - <Styled.Container> - <Styled.Root + <$Container> + <$Root className={className} checked={checked} disabled={disabled} onCheckedChange={onCheckedChange} id={id} > - <Styled.Indicator> + <$Indicator> <CheckIcon /> - </Styled.Indicator> - </Styled.Root> + </$Indicator> + </$Root> {label && ( - <Styled.Label disabled={disabled} htmlFor={id}> + <$Label disabled={disabled} htmlFor={id}> {label} - </Styled.Label> + </$Label> )} - </Styled.Container> + </$Container> ); - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.Container = styled.div` +const $Container = styled.div` ${layoutMixins.row} gap: 1ch; font: var(--font-small-book); `; -Styled.Root = styled(Root)` +const $Root = styled(Root)` --checkbox-backgroundColor: var(--color-layer-0); --checkbox-borderColor: var(--color-border); @@ -75,7 +72,7 @@ Styled.Root = styled(Root)` } `; -Styled.Indicator = styled(Indicator)` +const $Indicator = styled(Indicator)` display: flex; align-items: center; justify-content: center; @@ -83,7 +80,7 @@ Styled.Indicator = styled(Indicator)` color: var(--color-text-button); `; -Styled.Label = styled.label<{ disabled?: boolean }>` +const $Label = styled.label<{ disabled?: boolean }>` cursor: pointer; color: var(--color-text-2); diff --git a/src/components/Collapsible.stories.tsx b/src/components/Collapsible.stories.tsx index f47a2f500..4d4c75b08 100644 --- a/src/components/Collapsible.stories.tsx +++ b/src/components/Collapsible.stories.tsx @@ -1,11 +1,14 @@ +import { useState } from 'react'; + import type { Story } from '@ladle/react'; import { Collapsible, type CollapsibleProps } from '@/components/Collapsible'; -import { StoryWrapper } from '.ladle/components'; +import { Checkbox } from './Checkbox'; import { IconName } from './Icon'; +import { StoryWrapper } from '.ladle/components'; -export const CollapsibleStory: Story<CollapsibleProps> = (args) => ( +export const CollapsibleStoryWithIconTrigger: Story<CollapsibleProps> = (args) => ( <StoryWrapper> <Collapsible {...args}> <ul> @@ -18,13 +21,13 @@ export const CollapsibleStory: Story<CollapsibleProps> = (args) => ( </StoryWrapper> ); -CollapsibleStory.args = { +CollapsibleStoryWithIconTrigger.args = { disabled: false, withTrigger: true, label: 'Collapsible List of Items', }; -CollapsibleStory.argTypes = { +CollapsibleStoryWithIconTrigger.argTypes = { triggerIcon: { options: Object.values(IconName), control: { type: 'select' }, @@ -36,3 +39,38 @@ CollapsibleStory.argTypes = { defaultValue: 'left', }, }; + +export const CollapsibleStoryWithSlotTrigger: Story<CollapsibleProps> = (args) => { + const [checked, setChecked] = useState(false); + return ( + <StoryWrapper> + <Collapsible + {...args} + slotTrigger={<Checkbox checked={checked} onCheckedChange={setChecked} />} + open={checked} + onOpenChange={setChecked} + > + <ul> + <li>Collapsible Item 1</li> + <li>Collapsible Item 2</li> + <li>Collapsible Item 3</li> + <li>Collapsible Item 4</li> + </ul> + </Collapsible> + </StoryWrapper> + ); +}; + +CollapsibleStoryWithSlotTrigger.args = { + disabled: false, + withTrigger: true, + label: 'Collapsible List of Items', +}; + +CollapsibleStoryWithSlotTrigger.argTypes = { + triggerIconSide: { + options: ['left', 'right'], + control: { type: 'select' }, + defaultValue: 'left', + }, +}; diff --git a/src/components/Collapsible.tsx b/src/components/Collapsible.tsx index 51483141c..6d4f7c429 100644 --- a/src/components/Collapsible.tsx +++ b/src/components/Collapsible.tsx @@ -1,10 +1,12 @@ -import styled, { css, keyframes, type AnyStyledComponent } from 'styled-components'; -import { Root, Trigger, Content } from '@radix-ui/react-collapsible'; +import React from 'react'; + +import { Content, Root, Trigger } from '@radix-ui/react-collapsible'; +import styled, { css, keyframes } from 'styled-components'; import { popoverMixins } from '@/styles/popoverMixins'; -import { HorizontalSeparatorFiller } from '@/components/Separator'; import { Icon, IconName } from '@/components/Icon'; +import { HorizontalSeparatorFiller } from '@/components/Separator'; type ElementProps = { defaultOpen?: boolean; @@ -13,6 +15,7 @@ type ElementProps = { onOpenChange?: (open: boolean) => void; label: React.ReactNode; triggerIcon?: IconName; + slotTrigger?: React.ReactNode; children: React.ReactNode; withTrigger?: boolean; }; @@ -36,38 +39,47 @@ export const Collapsible = ({ transitionDuration, triggerIcon = IconName.Caret, triggerIconSide = 'left', + slotTrigger, fullWidth, className, withTrigger = true, -}: CollapsibleProps) => ( - <Styled.Root defaultOpen={defaultOpen} open={open} onOpenChange={onOpenChange}> - {withTrigger && ( - <Styled.Trigger className={className} disabled={disabled}> - {triggerIconSide === 'right' && ( - <> - {label} - {fullWidth && <HorizontalSeparatorFiller />} - </> - )} - - <Styled.TriggerIcon> - <Icon iconName={triggerIcon} /> - </Styled.TriggerIcon> - {triggerIconSide === 'left' && ( - <> - {fullWidth && <HorizontalSeparatorFiller />} - {label} - </> - )} - </Styled.Trigger> - )} - <Styled.Content $transitionDuration={transitionDuration}>{children}</Styled.Content> - </Styled.Root> -); - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.Root = styled(Root)` +}: CollapsibleProps) => { + const trigger = slotTrigger ? ( + <$TriggerSlot> + {triggerIconSide === 'right' && label} + <Trigger className={className} disabled={disabled} asChild> + {slotTrigger} + </Trigger> + {triggerIconSide === 'left' && label} + </$TriggerSlot> + ) : ( + <$Trigger className={className} disabled={disabled}> + {triggerIconSide === 'right' && ( + <> + {label} + {fullWidth && <HorizontalSeparatorFiller />} + </> + )} + <$TriggerIcon> + <Icon iconName={triggerIcon} /> + </$TriggerIcon> + {triggerIconSide === 'left' && ( + <> + {fullWidth && <HorizontalSeparatorFiller />} + {label} + </> + )} + </$Trigger> + ); + + return ( + <$Root defaultOpen={defaultOpen} open={open} onOpenChange={onOpenChange}> + {withTrigger && trigger} + <$Content $transitionDuration={transitionDuration}>{children}</$Content> + </$Root> + ); +}; +const $Root = styled(Root)` display: grid; &[data-state='open'] { @@ -75,26 +87,32 @@ Styled.Root = styled(Root)` } `; -Styled.Trigger = styled(Trigger)` +const $Trigger = styled(Trigger)` ${popoverMixins.trigger} --trigger-textColor: inherit; --trigger-icon-width: 0.75em; --trigger-icon-color: inherit; `; -Styled.TriggerIcon = styled.span` +const $TriggerSlot = styled.div` + display: flex; + align-items: center; + gap: 0.5em; +`; + +const $TriggerIcon = styled.span` width: var(--trigger-icon-width); display: inline-flex; transition: rotate 0.3s var(--ease-out-expo); color: var(--trigger-icon-color); - ${Styled.Trigger}[data-state='open'] & { + ${$Trigger}[data-state='open'] & { rotate: -0.5turn; } `; -Styled.Content = styled(Content)<{ $transitionDuration: number }>` +const $Content = styled(Content)<{ $transitionDuration?: number }>` display: grid; --transition-duration: 0.25s; diff --git a/src/components/CollapsibleNavigationMenu.tsx b/src/components/CollapsibleNavigationMenu.tsx index 0994e949a..d4639bd41 100644 --- a/src/components/CollapsibleNavigationMenu.tsx +++ b/src/components/CollapsibleNavigationMenu.tsx @@ -1,13 +1,13 @@ import { useEffect, useState } from 'react'; -import styled, { css, type AnyStyledComponent } from 'styled-components'; -import _ from 'lodash'; -import { matchPath, NavLink, useLocation } from 'react-router-dom'; -import { type MenuItem } from '@/constants/menus'; +import { Item, Link, List, Root, Sub } from '@radix-ui/react-navigation-menu'; +import { NavLink, matchPath, useLocation } from 'react-router-dom'; +import styled, { css } from 'styled-components'; -import { Root, List, Item, Sub, Link } from '@radix-ui/react-navigation-menu'; +import { type MenuItem } from '@/constants/menus'; import { popoverMixins } from '@/styles/popoverMixins'; + import { Collapsible } from './Collapsible'; type ElementProps<MenuItemValue extends string> = { @@ -27,20 +27,13 @@ const NavItem = <MenuItemValue extends string>({ const location = useLocation(); return !href ? null : ( - <Item - asChild - key={value} - value={value} - > + <Item asChild key={value} value={value}> <Link asChild active={!!matchPath(href, location.pathname)} onSelect={() => onSelect?.(value)} > - <NavLink - to={href} - {...props} - > + <NavLink to={href} {...props}> {label} </NavLink> </Link> @@ -66,14 +59,10 @@ export const CollapsibleNavigationMenu = <MenuItemValue extends string>({ return ( <Root orientation="vertical"> - <Styled.List> + <$List> {items.map((item) => !item.subitems ? ( - <Styled.NavItem - key={item.value} - onSelect={onSelectItem} - {...item} - /> + <$NavItem key={item.value} onSelect={onSelectItem} {...item} /> ) : ( <Collapsible key={item.value} @@ -81,30 +70,21 @@ export const CollapsibleNavigationMenu = <MenuItemValue extends string>({ onOpenChange={(open) => { setExpandedKey(!open ? '' : item.value); }} - label={ - <Styled.CollapsibleItem value={item.value}>{item.label}</Styled.CollapsibleItem> - } + label={<$CollapsibleItem value={item.value}>{item.label}</$CollapsibleItem>} transitionDuration={0.2} > - <Styled.Sub defaultValue={item.subitems?.[0]}> + <$Sub defaultValue={item.subitems?.[0]?.value}> {item.subitems.map((subitem: MenuItem<MenuItemValue>) => ( - <Styled.NavItem - key={subitem.value} - onSelect={onSelectItem} - {...subitem} - /> + <$NavItem key={subitem.value} onSelect={onSelectItem} {...subitem} /> ))} - </Styled.Sub> + </$Sub> </Collapsible> ) )} - </Styled.List> + </$List> </Root> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - const navItemStyle = css` ${popoverMixins.item} --item-padding: 0.5em 0.75em; @@ -113,16 +93,16 @@ const navItemStyle = css` --item-checked-textColor: var(--color-text-0); `; -Styled.List = styled(List)` +const $List = styled(List)` gap: 0.5rem; `; -Styled.CollapsibleItem = styled(Item)` +const $CollapsibleItem = styled(Item)` ${navItemStyle} --item-padding: 0; `; -Styled.Sub = styled(Sub)` +const $Sub = styled(Sub)` margin: -0.25rem 0.5rem 0; padding-left: 0.5em; border-left: solid var(--border-width) var(--color-border); @@ -130,12 +110,12 @@ Styled.Sub = styled(Sub)` font-size: 0.92em; `; -Styled.NavItem = styled(NavItem)` +const $NavItem = styled(NavItem)` ${navItemStyle} margin: 0.25em 0; justify-content: flex-start; - ${Styled.Sub} & { + ${$Sub} & { --item-padding: 0.5em 0.7em; } -`; +` as typeof NavItem; diff --git a/src/components/CollapsibleTabs.tsx b/src/components/CollapsibleTabs.tsx index 991f0ac4f..e68f2ff1f 100644 --- a/src/components/CollapsibleTabs.tsx +++ b/src/components/CollapsibleTabs.tsx @@ -1,30 +1,31 @@ -import { type ReactNode, useState } from 'react'; -import styled, { type AnyStyledComponent, css, keyframes } from 'styled-components'; +import { Dispatch, SetStateAction, type ReactNode } from 'react'; +import { + Content as CollapsibleContent, + Root as CollapsibleRoot, + Trigger as CollapsibleTrigger, +} from '@radix-ui/react-collapsible'; import { Content as TabsContent, List as TabsList, Root as TabsRoot, Trigger as TabsTrigger, } from '@radix-ui/react-tabs'; - -import { - Content as CollapsibleContent, - Root as CollapsibleRoot, - Trigger as CollapsibleTrigger, -} from '@radix-ui/react-collapsible'; +import styled, { css, keyframes } from 'styled-components'; import { layoutMixins } from '@/styles/layoutMixins'; -import { IconButton } from '@/components/IconButton'; import { IconName } from '@/components/Icon'; +import { IconButton } from '@/components/IconButton'; +import { type TabItem } from '@/components/Tabs'; import { Tag } from '@/components/Tag'; import { Toolbar } from '@/components/Toolbar'; -import { type TabItem } from '@/components/Tabs'; type ElementProps<TabItemsValue> = { - defaultValue?: TabItemsValue; - items: TabItem<TabItemsValue>[]; + defaultTab?: TabItemsValue; + tab: TabItemsValue; + setTab?: Dispatch<SetStateAction<TabItemsValue>>; + tabItems: TabItem<TabItemsValue>[]; slotToolbar?: ReactNode; defaultOpen?: boolean; onOpenChange?: (isOpen: boolean) => void; @@ -38,8 +39,10 @@ type StyleProps = { export type CollapsibleTabsProps<TabItemsValue> = ElementProps<TabItemsValue> & StyleProps; export const CollapsibleTabs = <TabItemsValue extends string>({ - defaultValue, - items, + defaultTab, + tab, + setTab, + tabItems, slotToolbar, defaultOpen, onOpenChange, @@ -48,61 +51,52 @@ export const CollapsibleTabs = <TabItemsValue extends string>({ className, }: CollapsibleTabsProps<TabItemsValue>) => { - const [value, setValue] = useState(defaultValue); - - const currentItem = items.find((item) => item.value === value); + const currentTab = tabItems.find((tabItem) => tabItem.value === tab); return ( - <Styled.TabsRoot + <$TabsRoot className={className} - defaultValue={defaultValue} - value={value} - onValueChange={setValue} + defaultValue={defaultTab} + value={tab} + onValueChange={(v) => setTab?.(v as TabItemsValue)} asChild > - <Styled.CollapsibleRoot + <$CollapsibleRoot defaultOpen={defaultOpen} open={defaultOpen} onOpenChange={(isOpen: boolean) => onOpenChange?.(isOpen)} > - <Styled.Header> - <Styled.TabsList $fullWidthTabs={fullWidthTabs}> - {items.map((item) => ( - <Styled.TabsTrigger - key={item.value} - value={item.value} - onClick={() => onOpenChange?.(true)} - > - {item.label} - {item.tag && <Tag>{item.tag}</Tag>} - {item.slotRight} - </Styled.TabsTrigger> + <$Header> + <$TabsList $fullWidthTabs={fullWidthTabs}> + {tabItems.map(({ value, label, tag, slotRight }) => ( + <$TabsTrigger key={value} value={value} onClick={() => onOpenChange?.(true)}> + {label} + {tag && <Tag>{tag}</Tag>} + {slotRight} + </$TabsTrigger> ))} - </Styled.TabsList> + </$TabsList> - <Styled.Toolbar> - {currentItem?.slotToolbar || slotToolbar} + <$Toolbar> + {currentTab?.slotToolbar || slotToolbar} <CollapsibleTrigger asChild> - <Styled.IconButton iconName={IconName.Caret} isToggle /> + <$IconButton iconName={IconName.Caret} isToggle /> </CollapsibleTrigger> - </Styled.Toolbar> - </Styled.Header> + </$Toolbar> + </$Header> - <Styled.CollapsibleContent> - {items.map(({ asChild, value, content }) => ( - <Styled.TabsContent key={value} asChild={asChild} value={value}> + <$CollapsibleContent> + {tabItems.map(({ asChild, value, content }) => ( + <$TabsContent key={value} asChild={asChild} value={value}> {content} - </Styled.TabsContent> + </$TabsContent> ))} - </Styled.CollapsibleContent> - </Styled.CollapsibleRoot> - </Styled.TabsRoot> + </$CollapsibleContent> + </$CollapsibleRoot> + </$TabsRoot> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.TabsRoot = styled(TabsRoot)` +const $TabsRoot = styled(TabsRoot)` /* Overrides */ --trigger-backgroundColor: var(--color-layer-2); --trigger-textColor: var(--color-text-0); @@ -125,7 +119,7 @@ Styled.TabsRoot = styled(TabsRoot)` ${layoutMixins.withInnerHorizontalBorders} `; -Styled.TabsList = styled(TabsList)<{ $fullWidthTabs?: boolean }>` +const $TabsList = styled(TabsList)<{ $fullWidthTabs?: boolean }>` ${layoutMixins.withOuterAndInnerBorders} align-self: stretch; @@ -145,7 +139,7 @@ Styled.TabsList = styled(TabsList)<{ $fullWidthTabs?: boolean }>` padding: 0 var(--border-width); `; -Styled.TabsTrigger = styled(TabsTrigger)` +const $TabsTrigger = styled(TabsTrigger)` ${layoutMixins.withOuterBorder} ${layoutMixins.row} @@ -164,11 +158,11 @@ Styled.TabsTrigger = styled(TabsTrigger)` } `; -Styled.Toolbar = styled(Toolbar)` +const $Toolbar = styled(Toolbar)` ${layoutMixins.inlineRow} `; -Styled.TabsContent = styled(TabsContent)` +const $TabsContent = styled(TabsContent)` ${layoutMixins.flexColumn} outline: none; @@ -203,9 +197,9 @@ Styled.TabsContent = styled(TabsContent)` } `; -Styled.CollapsibleRoot = styled(CollapsibleRoot)``; +const $CollapsibleRoot = styled(CollapsibleRoot)``; -Styled.Header = styled.header` +const $Header = styled.header` ${layoutMixins.sticky} height: var(--stickyArea-topHeight); @@ -215,20 +209,20 @@ Styled.Header = styled.header` ${layoutMixins.row} justify-content: space-between; - ${Styled.CollapsibleRoot}[data-state='closed'] & { + ${$CollapsibleRoot}[data-state='closed'] & { box-shadow: none; } `; -Styled.CollapsibleContent = styled(CollapsibleContent)` +const $CollapsibleContent = styled(CollapsibleContent)` ${layoutMixins.stack} box-shadow: none; `; -Styled.IconButton = styled(IconButton)` +const $IconButton = styled(IconButton)` --button-icon-size: 1em; - ${Styled.CollapsibleRoot}[data-state='closed'] & { + ${$CollapsibleRoot}[data-state='closed'] & { rotate: -0.5turn; } `; diff --git a/src/components/ComboboxDialogMenu.tsx b/src/components/ComboboxDialogMenu.tsx index cba1a4e3f..3f97efe7a 100644 --- a/src/components/ComboboxDialogMenu.tsx +++ b/src/components/ComboboxDialogMenu.tsx @@ -1,10 +1,11 @@ import React from 'react'; -import styled, { AnyStyledComponent } from 'styled-components'; + +import styled from 'styled-components'; import { type MenuConfig } from '@/constants/menus'; -import { Dialog, DialogPlacement, type DialogProps } from '@/components/Dialog'; import { ComboboxMenu, type ComboboxMenuProps } from '@/components/ComboboxMenu'; +import { Dialog, DialogPlacement, type DialogProps } from '@/components/Dialog'; type ElementProps<MenuItemValue extends string | number, MenuGroupValue extends string | number> = { title?: React.ReactNode; @@ -71,7 +72,7 @@ export const ComboboxDialogMenu = < PickDialogProps & StyleProps) => ( // TODO: sub-menu state management - <Styled.Dialog + <$Dialog isOpen={isOpen} setIsOpen={setIsOpen} title={title} @@ -83,7 +84,7 @@ export const ComboboxDialogMenu = < preventClose={preventClose} className={className} > - <Styled.ComboboxMenu + <$ComboboxMenu items={items} onItemSelected={onItemSelected} title={title} @@ -94,12 +95,9 @@ export const ComboboxDialogMenu = < withStickyLayout={withStickyLayout} /> {children} - </Styled.Dialog> + </$Dialog> ); - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.Dialog = styled(Dialog)` +const $Dialog = styled(Dialog)` /* Params */ --comboboxDialogMenu-backgroundColor: var(--color-layer-2); --comboboxDialogMenu-item-gap: 0.5rem; @@ -126,8 +124,8 @@ Styled.Dialog = styled(Dialog)` } `; -Styled.ComboboxMenu = styled(ComboboxMenu)` +const $ComboboxMenu = styled(ComboboxMenu)` --comboboxMenu-backgroundColor: var(--comboboxDialogMenu-backgroundColor); --comboboxMenu-item-gap: var(--comboboxDialogMenu-item-gap); --comboboxMenu-item-padding: var(--comboboxDialogMenu-item-padding); -`; +` as typeof ComboboxMenu; diff --git a/src/components/ComboboxMenu.tsx b/src/components/ComboboxMenu.tsx index 92be2db31..16ea87548 100644 --- a/src/components/ComboboxMenu.tsx +++ b/src/components/ComboboxMenu.tsx @@ -1,10 +1,12 @@ -import { Fragment, type ReactNode, useState } from 'react'; -import styled, { type AnyStyledComponent, css } from 'styled-components'; +import { Fragment, useState, type ReactNode } from 'react'; + import { Command } from 'cmdk'; +import styled, { css } from 'styled-components'; + +import { type MenuConfig } from '@/constants/menus'; -import { MenuItem, type MenuConfig } from '@/constants/menus'; -import { popoverMixins } from '@/styles/popoverMixins'; import { layoutMixins } from '@/styles/layoutMixins'; +import { popoverMixins } from '@/styles/popoverMixins'; import { Tag } from '@/components/Tag'; @@ -12,7 +14,7 @@ type ElementProps<MenuItemValue extends string | number, MenuGroupValue extends items: MenuConfig<MenuItemValue, MenuGroupValue>; onItemSelected?: () => void; - title?: string; + title?: ReactNode; inputPlaceholder?: string; slotEmpty?: ReactNode; withSearch?: boolean; @@ -29,7 +31,10 @@ export type ComboboxMenuProps< MenuGroupValue extends string | number > = ElementProps<MenuItemValue, MenuGroupValue> & StyleProps; -export const ComboboxMenu = <MenuItemValue extends string, MenuGroupValue extends string>({ +export const ComboboxMenu = < + MenuItemValue extends string | number, + MenuGroupValue extends string | number +>({ items, onItemSelected, @@ -46,8 +51,8 @@ export const ComboboxMenu = <MenuItemValue extends string, MenuGroupValue extend const [searchValue, setSearchValue] = useState(''); return ( - <Styled.Command - label={title} + <$Command + label={typeof title === 'string' ? title : undefined} // value={highlightedCommand} // onValueChange={setHighlightedCommand} filter={(value: string, search: string) => @@ -59,24 +64,23 @@ export const ComboboxMenu = <MenuItemValue extends string, MenuGroupValue extend $withStickyLayout={withStickyLayout} > {withSearch && ( - <Styled.Header $withStickyLayout={withStickyLayout}> - <Styled.Input + <$Header $withStickyLayout={withStickyLayout}> + <$Input /** * Mobile Issue: Search Input will always trigger mobile keyboard drawer. There is no fix. * https://github.com/pacocoursey/cmdk/issues/127 */ autoFocus - type="search" value={searchValue} onValueChange={setSearchValue} placeholder={inputPlaceholder} /> - </Styled.Header> + </$Header> )} - <Styled.List $withStickyLayout={withStickyLayout}> + <$List $withStickyLayout={withStickyLayout}> {items.map((group) => ( - <Styled.Group + <$Group key={group.group} heading={group.groupLabel} $withItemBorders={withItemBorders} @@ -84,7 +88,7 @@ export const ComboboxMenu = <MenuItemValue extends string, MenuGroupValue extend > {group.items.map((item) => ( <Fragment key={item.value}> - <Styled.Item + <$Item // value={item.value} // search by both value and textContent // value={[group.groupLabel, item.label, item.tag].filter(Boolean).join('|')} // exclude item.value from searchable terms (not guaranteed to be unique) value={[group.groupLabel, item.value, item.description, item.label, item.tag] @@ -101,35 +105,33 @@ export const ComboboxMenu = <MenuItemValue extends string, MenuGroupValue extend disabled={item.disabled} $withItemBorders={withItemBorders} > - { - <> - {item.slotBefore} - {item.slotCustomContent ?? ( - <Styled.ItemLabel> - <span> - {typeof item.label === 'string' - ? `${item.label}${item.subitems?.length ? '…' : ''}` - : item.label} - {item.tag && ( - <> - {' '} - <Tag>{item.tag}</Tag> - </> - )} - </span> - {item.description && <span>{item.description}</span>} - </Styled.ItemLabel> - )} - {item.slotAfter} - {item.subitems && '→'} - </> - } - </Styled.Item> + <> + {item.slotBefore} + {item.slotCustomContent ?? ( + <$ItemLabel> + <span> + {typeof item.label === 'string' + ? `${item.label}${item.subitems?.length ? '…' : ''}` + : item.label} + {item.tag && ( + <> + {' '} + <Tag>{item.tag}</Tag> + </> + )} + </span> + {item.description && <span>{item.description}</span>} + </$ItemLabel> + )} + {item.slotAfter} + {item.subitems && '→'} + </> + </$Item> {searchValue && item.subitems?.map((subitem) => ( <Fragment key={subitem.value}> - <Styled.Item + <$Item // value={subitem.value} // search by both value and textContent // value={[group.groupLabel, item.label, subitem.label, subitem.tag].filter(Boolean).join('|')} value={[ @@ -149,7 +151,7 @@ export const ComboboxMenu = <MenuItemValue extends string, MenuGroupValue extend $withItemBorders={withItemBorders} > {subitem.slotBefore} - <Styled.ItemLabel> + <$ItemLabel> <span> {subitem.label} {subitem.tag && ( @@ -160,24 +162,21 @@ export const ComboboxMenu = <MenuItemValue extends string, MenuGroupValue extend )} </span> {item.description && <span>{item.description}</span>} - </Styled.ItemLabel> + </$ItemLabel> {subitem.slotAfter} - </Styled.Item> + </$Item> </Fragment> ))} </Fragment> ))} - </Styled.Group> + </$Group> ))} - {slotEmpty && searchValue.trim() !== '' && <Styled.Empty>{slotEmpty}</Styled.Empty>} - </Styled.List> - </Styled.Command> + {slotEmpty && searchValue.trim() !== '' && <$Empty>{slotEmpty}</$Empty>} + </$List> + </$Command> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.Command = styled(Command)<{ $withStickyLayout?: boolean }>` +const $Command = styled(Command)<{ $withStickyLayout?: boolean }>` --comboboxMenu-backgroundColor: var(--color-layer-2); --comboboxMenu-input-backgroundColor: var(--color-layer-3); @@ -209,13 +208,13 @@ Styled.Command = styled(Command)<{ $withStickyLayout?: boolean }>` --stickyArea1-topHeight: 4rem; ` : css` - ${() => Styled.List} { + ${() => $List} { overflow-y: auto; } `} `; -Styled.Header = styled.header<{ $withStickyLayout?: boolean }>` +const $Header = styled.header<{ $withStickyLayout?: boolean }>` display: grid; align-items: center; padding-left: 0.75rem; @@ -230,7 +229,7 @@ Styled.Header = styled.header<{ $withStickyLayout?: boolean }>` `} `; -Styled.Input = styled(Command.Input)` +const $Input = styled(Command.Input)` height: var(--comboboxMenu-input-height); padding: 0.5rem; background-color: var(--comboboxMenu-input-backgroundColor); @@ -238,7 +237,7 @@ Styled.Input = styled(Command.Input)` gap: 0.5rem; `; -Styled.Group = styled(Command.Group)<{ $withItemBorders?: boolean; $withStickyLayout?: boolean }>` +const $Group = styled(Command.Group)<{ $withItemBorders?: boolean; $withStickyLayout?: boolean }>` color: var(--color-text-0); > [cmdk-group-heading] { @@ -272,7 +271,7 @@ Styled.Group = styled(Command.Group)<{ $withItemBorders?: boolean; $withStickyLa `} `; -Styled.List = styled(Command.List)<{ $withStickyLayout?: boolean }>` +const $List = styled(Command.List)<{ $withStickyLayout?: boolean }>` isolation: isolate; background-color: var(--comboboxMenu-backgroundColor, inherit); @@ -296,7 +295,7 @@ Styled.List = styled(Command.List)<{ $withStickyLayout?: boolean }>` `} `; -Styled.Item = styled(Command.Item)<{ $withItemBorders?: boolean }>` +const $Item = styled(Command.Item)<{ $withItemBorders?: boolean }>` ${layoutMixins.scrollSnapItem} ${popoverMixins.item} --item-checked-backgroundColor: var(--comboboxMenu-item-checked-backgroundColor); @@ -322,7 +321,7 @@ Styled.Item = styled(Command.Item)<{ $withItemBorders?: boolean }>` `} `; -Styled.ItemLabel = styled.div` +const $ItemLabel = styled.div` flex: 1; ${layoutMixins.rowColumn} @@ -342,7 +341,7 @@ Styled.ItemLabel = styled.div` min-width: 0; `; -Styled.Empty = styled(Command.Empty)` +const $Empty = styled(Command.Empty)` color: var(--color-text-0); padding: 1rem; height: 100%; diff --git a/src/components/ComingSoon.tsx b/src/components/ComingSoon.tsx index 0d620dd49..af3b5524f 100644 --- a/src/components/ComingSoon.tsx +++ b/src/components/ComingSoon.tsx @@ -1,7 +1,9 @@ -import styled, { type AnyStyledComponent } from 'styled-components'; +import styled from 'styled-components'; import { STRING_KEYS } from '@/constants/localization'; -import { useStringGetter } from '@/hooks'; + +import { useStringGetter } from '@/hooks/useStringGetter'; + import { layoutMixins } from '@/styles/layoutMixins'; export const ComingSoon = () => { @@ -10,14 +12,11 @@ export const ComingSoon = () => { }; export const ComingSoonSpace = () => ( - <Styled.FullPageContainer> + <$FullPageContainer> <ComingSoon /> - </Styled.FullPageContainer> + </$FullPageContainer> ); - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.FullPageContainer = styled.div` +const $FullPageContainer = styled.div` ${layoutMixins.centered} h1 { diff --git a/src/components/ContentSection.tsx b/src/components/ContentSection.tsx index 7aa265faa..b22f39059 100644 --- a/src/components/ContentSection.tsx +++ b/src/components/ContentSection.tsx @@ -1,4 +1,5 @@ import styled from 'styled-components'; + import { layoutMixins } from '@/styles/layoutMixins'; export const DetachedSection = styled.section` diff --git a/src/components/ContentSectionHeader.tsx b/src/components/ContentSectionHeader.tsx index 5f1e2dbe9..ff771d0d8 100644 --- a/src/components/ContentSectionHeader.tsx +++ b/src/components/ContentSectionHeader.tsx @@ -1,4 +1,4 @@ -import styled, { AnyStyledComponent } from 'styled-components'; +import styled from 'styled-components'; import { breakpoints } from '@/styles'; import { layoutMixins } from '@/styles/layoutMixins'; @@ -21,19 +21,16 @@ export const ContentSectionHeader = ({ slotRight, className, }: ElementProps & StyleProps) => ( - <Styled.ContentSectionHeader className={className}> + <$ContentSectionHeader className={className}> {slotLeft} - <Styled.Header> + <$Header> {title && <h3>{title}</h3>} {subtitle && <p>{subtitle}</p>} - </Styled.Header> + </$Header> {slotRight} - </Styled.ContentSectionHeader> + </$ContentSectionHeader> ); - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.ContentSectionHeader = styled.header<StyleProps>` +const $ContentSectionHeader = styled.header<StyleProps>` ${layoutMixins.contentSectionDetached} ${layoutMixins.row} @@ -49,7 +46,7 @@ Styled.ContentSectionHeader = styled.header<StyleProps>` } `; -Styled.Header = styled.div` +const $Header = styled.div` ${layoutMixins.column} flex: 1; diff --git a/src/components/CopyButton.stories.tsx b/src/components/CopyButton.stories.tsx index f3d09344e..0ef633a8c 100644 --- a/src/components/CopyButton.stories.tsx +++ b/src/components/CopyButton.stories.tsx @@ -16,13 +16,13 @@ CopyButtonStory.args = { CopyButtonStory.argTypes = { buttonType: { - options: ["text", "icon", "default"], + options: ['text', 'icon', 'default'], control: { type: 'select' }, - defaultValue: "default", + defaultValue: 'default', }, children: { options: ['some text to copy'], control: { type: 'select' }, defaultValue: undefined, - } + }, }; diff --git a/src/components/CopyButton.tsx b/src/components/CopyButton.tsx index f5babf19b..8f76ec7c2 100644 --- a/src/components/CopyButton.tsx +++ b/src/components/CopyButton.tsx @@ -1,10 +1,12 @@ import { useState } from 'react'; -import styled, { css, type AnyStyledComponent } from 'styled-components'; + +import styled, { css } from 'styled-components'; import { ButtonAction } from '@/constants/buttons'; import { STRING_KEYS } from '@/constants/localization'; -import { useStringGetter } from '@/hooks'; +import { useStringGetter } from '@/hooks/useStringGetter'; + import { layoutMixins } from '@/styles/layoutMixins'; import { Button, ButtonProps } from './Button'; @@ -36,15 +38,15 @@ export const CopyButton = ({ }; return buttonType === 'text' ? ( - <Styled.InlineRow onClick={onCopy} copied={copied}> + <$InlineRow onClick={onCopy} copied={copied}> {children} - <Styled.Icon copied={copied} iconName={copied ? IconName.Check : IconName.Copy} /> - </Styled.InlineRow> + <$Icon copied={copied} iconName={copied ? IconName.Check : IconName.Copy} /> + </$InlineRow> ) : buttonType === 'icon' ? ( <WithTooltip tooltipString={stringGetter({ key: copied ? STRING_KEYS.COPIED : STRING_KEYS.COPY })} > - <Styled.IconButton + <$IconButton {...buttonProps} copied={copied} action={ButtonAction.Base} @@ -63,10 +65,7 @@ export const CopyButton = ({ </Button> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.InlineRow = styled.div<{ copied: boolean }>` +const $InlineRow = styled.div<{ copied: boolean }>` ${layoutMixins.inlineRow} cursor: pointer; @@ -83,7 +82,7 @@ Styled.InlineRow = styled.div<{ copied: boolean }>` `} `; -Styled.Icon = styled(Icon)<{ copied: boolean }>` +const $Icon = styled(Icon)<{ copied: boolean }>` ${({ copied }) => copied && css` @@ -91,7 +90,7 @@ Styled.Icon = styled(Icon)<{ copied: boolean }>` `} `; -Styled.IconButton = styled(IconButton)<{ copied: boolean }>` +const $IconButton = styled(IconButton)<{ copied: boolean }>` ${({ copied }) => copied && css` diff --git a/src/components/Details.stories.tsx b/src/components/Details.stories.tsx index ed086fb98..45a326921 100644 --- a/src/components/Details.stories.tsx +++ b/src/components/Details.stories.tsx @@ -1,17 +1,17 @@ import type { Story } from '@ladle/react'; +import styled from 'styled-components'; + +import { layoutMixins } from '@/styles/layoutMixins'; import { Details } from '@/components/Details'; import { StoryWrapper } from '.ladle/components'; -import styled, { type AnyStyledComponent } from 'styled-components'; -import { layoutMixins } from '@/styles/layoutMixins'; - export const DetailsStory: Story<Parameters<typeof Details>[0]> = (args) => ( <StoryWrapper> - <Styled.Resizable> + <$Resizable> <Details {...args} /> - </Styled.Resizable> + </$Resizable> </StoryWrapper> ); @@ -50,10 +50,7 @@ DetailsStory.argTypes = { defaultValue: 'column', }, }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.Resizable = styled.section` +const $Resizable = styled.section` ${layoutMixins.container} resize: horizontal; overflow: hidden; diff --git a/src/components/Details.tsx b/src/components/Details.tsx index 3a5729394..ddc3e2b03 100644 --- a/src/components/Details.tsx +++ b/src/components/Details.tsx @@ -1,27 +1,25 @@ import { Fragment } from 'react'; -import styled, { - type AnyStyledComponent, - css, - type FlattenInterpolation, - ThemeProps, -} from 'styled-components'; +import styled, { ThemeProps, css, type FlattenInterpolation } from 'styled-components'; + +import { Nullable } from '@/constants/abacus'; + +import { LoadingContext } from '@/contexts/LoadingContext'; import { layoutMixins } from '@/styles/layoutMixins'; import { WithSeparators } from '@/components/Separator'; import { WithTooltip } from '@/components/WithTooltip'; -import { LoadingContext } from '@/contexts/LoadingContext'; - export type DetailsItem = { key: string; tooltip?: string; tooltipParams?: Record<string, string>; label: string | JSX.Element; - value?: string | JSX.Element | undefined; + value?: Nullable<string> | JSX.Element | undefined; subitems?: DetailsItem[]; withTooltipIcon?: boolean; + allowUserSelection?: boolean; }; const DETAIL_LAYOUTS = { @@ -63,8 +61,9 @@ const DetailItem = ({ justifyItems, layout = 'column', withOverflow, + allowUserSelection, }: DetailsItem & StyleProps) => ( - <Styled.Item justifyItems={justifyItems} layout={layout} withOverflow={withOverflow}> + <$Item justifyItems={justifyItems} layout={layout} withOverflow={withOverflow}> <dt> <WithTooltip tooltip={tooltip} @@ -75,8 +74,8 @@ const DetailItem = ({ {label} </WithTooltip> </dt> - <dd>{value ?? ''}</dd> - </Styled.Item> + <$DetailsItemValue allowUserSelection={allowUserSelection}>{value ?? ''}</$DetailsItemValue> + </$Item> ); export const Details = ({ @@ -90,34 +89,46 @@ export const Details = ({ withSeparators = false, }: ElementProps & StyleProps) => ( <LoadingContext.Provider value={isLoading}> - <Styled.Details layout={layout} withSeparators={withSeparators} className={className}> + <$Details layout={layout} withSeparators={withSeparators} className={className}> <WithSeparators withSeparators={withSeparators} layout={DETAIL_LAYOUTS[layout]}> - {items.map(({ key, tooltip, tooltipParams, label, subitems, value, withTooltipIcon }) => ( - <Fragment key={key}> - <DetailItem - {...{ - key, - tooltip, - tooltipParams, - label, - value, - withTooltipIcon, - justifyItems, - layout, - withOverflow, - }} - /> - {subitems && showSubitems && layout === 'column' && ( - <Styled.SubDetails - items={subitems} - layout={DETAIL_LAYOUTS[layout]} - withSeparators={withSeparators} + {items.map( + ({ + key, + tooltip, + tooltipParams, + label, + subitems, + value, + withTooltipIcon, + allowUserSelection, + }) => ( + <Fragment key={key}> + <DetailItem + {...{ + key, + tooltip, + tooltipParams, + label, + value, + withTooltipIcon, + justifyItems, + layout, + withOverflow, + allowUserSelection, + }} /> - )} - </Fragment> - ))} + {subitems && showSubitems && layout === 'column' && ( + <$SubDetails + items={subitems} + layout={DETAIL_LAYOUTS[layout]} + withSeparators={withSeparators} + /> + )} + </Fragment> + ) + )} </WithSeparators> - </Styled.Details> + </$Details> </LoadingContext.Provider> ); @@ -209,10 +220,7 @@ const itemLayoutVariants: Record<string, FlattenInterpolation<ThemeProps<any>>> gap: 0.375rem; `, }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.Details = styled.dl<{ +const $Details = styled.dl<{ layout: 'column' | 'row' | 'rowColumns' | 'grid' | 'stackColumn'; withSeparators: boolean; }>` @@ -224,10 +232,10 @@ Styled.Details = styled.dl<{ ${({ layout }) => layout && detailsLayoutVariants[layout]} `; -Styled.Item = styled.div<{ +const $Item = styled.div<{ layout: 'column' | 'row' | 'rowColumns' | 'grid' | 'stackColumn'; justifyItems?: 'start' | 'end'; - withOverflow: boolean; + withOverflow?: boolean; }>` ${({ layout }) => layout && itemLayoutVariants[layout]} @@ -290,7 +298,7 @@ Styled.Item = styled.div<{ } `; -Styled.SubDetails = styled(Details)` +const $SubDetails = styled(Details)` padding-left: 1rem; position: relative; @@ -305,3 +313,13 @@ Styled.SubDetails = styled(Details)` border-radius: 0.25rem; } `; + +const $DetailsItemValue = styled.dd<{ + allowUserSelection?: boolean; +}>` + ${({ allowUserSelection }) => + allowUserSelection && + css` + user-select: all; + `} +`; diff --git a/src/components/DetailsDialog.tsx b/src/components/DetailsDialog.tsx index 87c186d32..115e0e3e6 100644 --- a/src/components/DetailsDialog.tsx +++ b/src/components/DetailsDialog.tsx @@ -1,8 +1,9 @@ -import styled, { AnyStyledComponent } from 'styled-components'; +import styled from 'styled-components'; + +import { useBreakpoints } from '@/hooks/useBreakpoints'; import { layoutMixins } from '@/styles/layoutMixins'; -import { useBreakpoints } from '@/hooks'; import { Details, type DetailsItem } from '@/components/Details'; import { Dialog, DialogPlacement } from '@/components/Dialog'; @@ -25,29 +26,26 @@ export const DetailsDialog = ({ slotIcon, title, items, slotFooter, setIsOpen }: title={title} placement={isTablet ? DialogPlacement.Default : DialogPlacement.Sidebar} > - <Styled.Content> - <Styled.Details withSeparators justifyItems="end" items={items} /> + <$Content> + <$Details withSeparators justifyItems="end" items={items} /> - <Styled.Footer>{slotFooter}</Styled.Footer> - </Styled.Content> + <$Footer>{slotFooter}</$Footer> + </$Content> </Dialog> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.Content = styled.div` +const $Content = styled.div` ${layoutMixins.expandingColumnWithStickyFooter} --stickyFooterBackdrop-outsetX: var(--dialog-paddingX); --stickyFooterBackdrop-outsetY: var(--dialog-content-paddingBottom); gap: 1rem; `; -Styled.Details = styled(Details)` +const $Details = styled(Details)` font: var(--font-small-book); `; -Styled.Footer = styled.footer` +const $Footer = styled.footer` ${layoutMixins.gridEqualColumns} gap: 0.66rem; `; diff --git a/src/components/Dialog.tsx b/src/components/Dialog.tsx index aead81003..c2aa756b1 100644 --- a/src/components/Dialog.tsx +++ b/src/components/Dialog.tsx @@ -1,24 +1,25 @@ import { useRef } from 'react'; -import styled, { type AnyStyledComponent, keyframes, css } from 'styled-components'; import { - Root, - Trigger, - Overlay, + Close, Content, - Title, Description, - Close, + DialogCloseProps, + Overlay, Portal, + Root, + Title, + Trigger, } from '@radix-ui/react-dialog'; +import styled, { css, keyframes } from 'styled-components'; + +import { useDialogArea } from '@/hooks/useDialogArea'; import { breakpoints } from '@/styles'; import { layoutMixins } from '@/styles/layoutMixins'; -import { Icon, IconName } from '@/components/Icon'; import { BackButton } from '@/components/BackButton'; - -import { useDialogArea } from '@/hooks/useDialogArea'; +import { Icon, IconName } from '@/components/Icon'; export enum DialogPlacement { Default = 'Default', @@ -47,6 +48,7 @@ type StyleProps = { hasHeaderBorder?: boolean; children?: React.ReactNode; className?: string; + stacked?: boolean; withAnimation?: boolean; }; @@ -61,10 +63,11 @@ const DialogPortal = ({ container?: HTMLElement; children: React.ReactNode; }) => { - const { dialogArea } = useDialogArea(); - + const { + dialogAreaRef: { current }, + } = useDialogArea() ?? { dialogAreaRef: {} }; return withPortal ? ( - <Portal container={container ?? dialogArea}>{children}</Portal> + <Portal container={container ?? current}>{children}</Portal> ) : ( <>{children}</> ); @@ -81,6 +84,7 @@ export const Dialog = ({ slotTrigger, slotHeaderInner, slotFooter, + stacked, withClose = true, placement = DialogPlacement.Default, portalContainer, @@ -89,7 +93,7 @@ export const Dialog = ({ children, className, }: DialogProps) => { - const closeButtonRef = useRef<HTMLButtonElement>(); + const closeButtonRef = useRef<HTMLButtonElement>(null); const showOverlay = ![DialogPlacement.Inline, DialogPlacement.FullScreen].includes(placement); @@ -97,8 +101,8 @@ export const Dialog = ({ <Root modal={showOverlay} open={isOpen} onOpenChange={setIsOpen}> {slotTrigger && <Trigger asChild>{slotTrigger}</Trigger>} <DialogPortal withPortal={placement !== DialogPlacement.Inline} container={portalContainer}> - {showOverlay && <Styled.Overlay />} - <Styled.Container + {showOverlay && <$Overlay />} + <$Container placement={placement} className={className} onEscapeKeyDown={() => { @@ -109,40 +113,58 @@ export const Dialog = ({ e.preventDefault(); } }} + $stacked={stacked} $withAnimation={withAnimation} > - <Styled.Header $withBorder={hasHeaderBorder}> - <Styled.HeaderTopRow> - {onBack && <BackButton onClick={onBack} />} - - {slotIcon && <Styled.Icon>{slotIcon}</Styled.Icon>} + {stacked ? ( + <$StackedHeaderTopRow $withBorder={hasHeaderBorder}> + {onBack && <$BackButton onClick={onBack} />} - {title && <Styled.Title>{title}</Styled.Title>} + {slotIcon} {!preventClose && withClose && ( - <Styled.Close ref={closeButtonRef}> + <$Close ref={closeButtonRef} $absolute={stacked}> <Icon iconName={IconName.Close} /> - </Styled.Close> + </$Close> )} - </Styled.HeaderTopRow> - {description && <Styled.Description>{description}</Styled.Description>} + {title && <$Title>{title}</$Title>} + + {description && <$Description>{description}</$Description>} + + {slotHeaderInner} + </$StackedHeaderTopRow> + ) : ( + <$Header $withBorder={hasHeaderBorder}> + <$HeaderTopRow> + {onBack && <BackButton onClick={onBack} />} + + {slotIcon && <$Icon>{slotIcon}</$Icon>} + + {title && <$Title>{title}</$Title>} + + {!preventClose && withClose && ( + <$Close ref={closeButtonRef}> + <Icon iconName={IconName.Close} /> + </$Close> + )} + </$HeaderTopRow> + + {description && <$Description>{description}</$Description>} - {slotHeaderInner} - </Styled.Header> + {slotHeaderInner} + </$Header> + )} - <Styled.Content>{children}</Styled.Content> + <$Content>{children}</$Content> - {slotFooter && <Styled.Footer>{slotFooter}</Styled.Footer>} - </Styled.Container> + {slotFooter && <$Footer>{slotFooter}</$Footer>} + </$Container> </DialogPortal> </Root> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.Overlay = styled(Overlay)` +const $Overlay = styled(Overlay)` z-index: 1; position: fixed; @@ -173,7 +195,11 @@ Styled.Overlay = styled(Overlay)` } `; -Styled.Container = styled(Content)<{ placement: DialogPlacement; $withAnimation?: boolean }>` +const $Container = styled(Content)<{ + placement: DialogPlacement; + $stacked?: boolean; + $withAnimation?: boolean; +}>` /* Params */ --dialog-inset: 1rem; --dialog-width: 30rem; @@ -353,9 +379,16 @@ Styled.Container = styled(Content)<{ placement: DialogPlacement; $withAnimation? bottom: 0; `, }[placement])} + + ${({ $stacked }) => + $stacked && + css` + justify-content: center; + text-align: center; + `} `; -Styled.Header = styled.header<{ $withBorder: boolean }>` +const $Header = styled.header<{ $withBorder: boolean }>` ${layoutMixins.stickyHeader} z-index: var(--dialog-header-z); @@ -374,17 +407,29 @@ Styled.Header = styled.header<{ $withBorder: boolean }>` `}; `; -Styled.HeaderTopRow = styled.div` +const $HeaderTopRow = styled.div` ${layoutMixins.row} gap: var(--dialog-title-gap); `; -Styled.HeaderTopRow = styled.div` - ${layoutMixins.row} - gap: var(--dialog-title-gap); +const $StackedHeaderTopRow = styled.div<{ $withBorder: boolean }>` + ${layoutMixins.flexColumn} + align-items: center; + justify-content: center; + padding: var(--dialog-header-paddingTop) var(--dialog-header-paddingLeft) + var(--dialog-header-paddingBottom) var(--dialog-header-paddingRight); + border-top-left-radius: inherit; + border-top-right-radius: inherit; + + ${({ $withBorder }) => + $withBorder && + css` + ${layoutMixins.withOuterBorder}; + background: var(--dialog-backgroundColor); + `}; `; -Styled.Content = styled.div` +const $Content = styled.div` flex: 1; ${layoutMixins.column} @@ -402,7 +447,7 @@ Styled.Content = styled.div` isolation: isolate; `; -Styled.Icon = styled.div` +const $Icon = styled.div` ${layoutMixins.row} width: 1em; @@ -412,7 +457,7 @@ Styled.Icon = styled.div` line-height: 1; `; -Styled.Close = styled(Close)` +const $Close = styled(Close)<{ $absolute?: boolean }>` width: 0.7813rem; height: 0.7813rem; @@ -438,14 +483,30 @@ Styled.Close = styled(Close)` color: var(--color-text-2); } + ${({ $absolute }) => + $absolute && + css` + position: absolute; + right: var(--dialog-header-paddingRight); + top: var(--dialog-header-paddingTop); + `} + @media ${breakpoints.tablet} { width: 1rem; height: 1rem; outline: none; } +` as React.ForwardRefExoticComponent< + { $absolute?: boolean } & DialogCloseProps & React.RefAttributes<HTMLButtonElement> +>; + +const $BackButton = styled(BackButton)` + position: absolute; + left: var(--dialog-header-paddingLeft); + top: var(--dialog-header-paddingTop); `; -Styled.Title = styled(Title)` +const $Title = styled(Title)` flex: 1; font: var(--font-large-medium); @@ -455,13 +516,13 @@ Styled.Title = styled(Title)` text-overflow: ellipsis; `; -Styled.Description = styled(Description)` +const $Description = styled(Description)` margin-top: 0.5rem; color: var(--color-text-0); font: var(--font-base-book); `; -Styled.Footer = styled.footer` +const $Footer = styled.footer` display: grid; ${layoutMixins.stickyFooter} ${layoutMixins.withStickyFooterBackdrop} diff --git a/src/components/DiffArrow.tsx b/src/components/DiffArrow.tsx index 6007683fb..330ad12f8 100644 --- a/src/components/DiffArrow.tsx +++ b/src/components/DiffArrow.tsx @@ -16,14 +16,11 @@ type StyleProps = { export type DiffArrowProps = ElementProps & StyleProps; export const DiffArrow = ({ className, direction = 'right', sign }: DiffArrowProps) => ( - <Styled.DiffArrowContainer className={className} direction={direction} sign={sign}> + <$DiffArrowContainer className={className} direction={direction} sign={sign}> <Icon iconName={IconName.Arrow} /> - </Styled.DiffArrowContainer> + </$DiffArrowContainer> ); - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.DiffArrowContainer = styled.span<DiffArrowProps>` +const $DiffArrowContainer = styled.span<DiffArrowProps>` --diffArrow-color: inherit; --diffArrow-color-positive: var(--color-positive); --diffArrow-color-negative: var(--color-negative); @@ -33,8 +30,8 @@ Styled.DiffArrowContainer = styled.span<DiffArrowProps>` color: var(--diffArrow-color); svg { - width: 0.5em; - height: 0.5em; + width: 0.75em; + height: 0.75em; } ${({ sign }) => diff --git a/src/components/DiffOutput.tsx b/src/components/DiffOutput.tsx index 665aacff0..0e511e934 100644 --- a/src/components/DiffOutput.tsx +++ b/src/components/DiffOutput.tsx @@ -1,9 +1,9 @@ -import styled, { type AnyStyledComponent, css } from 'styled-components'; +import styled, { css } from 'styled-components'; import { layoutMixins } from '@/styles/layoutMixins'; import { DiffArrow, type DiffArrowProps } from '@/components/DiffArrow'; -import { Output, type OutputProps, OutputType } from '@/components/Output'; +import { Output, OutputType, type OutputProps } from '@/components/Output'; import { BigNumberish } from '@/lib/numbers'; @@ -38,7 +38,7 @@ export const DiffOutput = ({ value, newValue, }: DiffOutputProps) => ( - <Styled.DiffOutput className={className} layout={layout} withDiff={withDiff}> + <$DiffOutput className={className} layout={layout} withDiff={withDiff}> <Output fractionDigits={fractionDigits} tag={tag} @@ -49,7 +49,7 @@ export const DiffOutput = ({ withBaseFont={withBaseFont} /> {withDiff && ( - <Styled.DiffValue hasInvalidNewValue={hasInvalidNewValue}> + <$DiffValue hasInvalidNewValue={hasInvalidNewValue}> <DiffArrow direction={direction} sign={sign} /> <Output fractionDigits={fractionDigits} @@ -60,14 +60,11 @@ export const DiffOutput = ({ showSign={showSign} withBaseFont={withBaseFont} /> - </Styled.DiffValue> + </$DiffValue> )} - </Styled.DiffOutput> + </$DiffOutput> ); - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.DiffValue = styled.div<{ hasInvalidNewValue?: boolean }>` +const $DiffValue = styled.div<{ hasInvalidNewValue?: boolean }>` ${layoutMixins.row} gap: 0.25rem; color: var(--color-text-2); @@ -79,7 +76,7 @@ Styled.DiffValue = styled.div<{ hasInvalidNewValue?: boolean }>` `} `; -Styled.DiffOutput = styled.div<{ layout: 'row' | 'column'; withDiff?: boolean }>` +const $DiffOutput = styled.div<{ layout: 'row' | 'column'; withDiff?: boolean }>` --diffOutput-gap: 0.25rem; --diffOutput-value-color: var(--color-text-1); --diffOutput-newValue-color: var(--color-text-2); @@ -94,10 +91,10 @@ Styled.DiffOutput = styled.div<{ layout: 'row' | 'column'; withDiff?: boolean }> ${({ layout }) => ({ - ['row']: ` + row: ` ${layoutMixins.row} `, - ['column']: ` + column: ` ${layoutMixins.column} `, }[layout])} diff --git a/src/components/DropdownHeaderMenu.stories.tsx b/src/components/DropdownHeaderMenu.stories.tsx index 25340103c..cd3664289 100644 --- a/src/components/DropdownHeaderMenu.stories.tsx +++ b/src/components/DropdownHeaderMenu.stories.tsx @@ -1,11 +1,13 @@ import { useState } from 'react'; -import styled, { AnyStyledComponent } from 'styled-components'; + import type { Story } from '@ladle/react'; +import styled from 'styled-components'; + +import { layoutMixins } from '@/styles/layoutMixins'; import { DropdownHeaderMenu } from '@/components/DropdownHeaderMenu'; import { StoryWrapper } from '.ladle/components'; -import { layoutMixins } from '@/styles/layoutMixins'; export const DropdownHeaderMenuStory: Story<Parameters<typeof DropdownHeaderMenu>> = (args) => { const [view, setView] = useState<string | undefined>(); @@ -45,15 +47,12 @@ export const DropdownHeaderMenuStory: Story<Parameters<typeof DropdownHeaderMenu return ( <StoryWrapper> - <Styled.Container> + <$Container> <DropdownHeaderMenu items={exampleItems}>{view ?? 'Overview'}</DropdownHeaderMenu> - </Styled.Container> + </$Container> </StoryWrapper> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.Container = styled.section` +const $Container = styled.section` ${layoutMixins.container} `; diff --git a/src/components/DropdownHeaderMenu.tsx b/src/components/DropdownHeaderMenu.tsx index cbc8b1d73..209639c20 100644 --- a/src/components/DropdownHeaderMenu.tsx +++ b/src/components/DropdownHeaderMenu.tsx @@ -1,15 +1,16 @@ -import styled, { type AnyStyledComponent } from 'styled-components'; -import { Root, Trigger, Content, Portal, Item } from '@radix-ui/react-dropdown-menu'; +import { Content, Item, Portal, Root, Trigger } from '@radix-ui/react-dropdown-menu'; +import styled from 'styled-components'; import { type MenuItem } from '@/constants/menus'; -import { popoverMixins } from '@/styles/popoverMixins'; -import { layoutMixins } from '@/styles/layoutMixins'; +import { useBreakpoints } from '@/hooks/useBreakpoints'; + import { breakpoints } from '@/styles'; -import { useBreakpoints } from '@/hooks'; +import { layoutMixins } from '@/styles/layoutMixins'; +import { popoverMixins } from '@/styles/popoverMixins'; -import { IconButton } from '@/components/IconButton'; import { IconName } from '@/components/Icon'; +import { IconButton } from '@/components/IconButton'; type ElementProps<MenuItemValue extends string> = { items: MenuItem<MenuItemValue>[]; @@ -33,39 +34,36 @@ export const DropdownHeaderMenu = <MenuItemValue extends string>({ return ( <Root> - <Styled.Trigger className={className} asChild> + <$Trigger className={className} asChild> <div> {children} - <Styled.DropdownIconButton iconName={IconName.Caret} isToggle /> + <$DropdownIconButton iconName={IconName.Caret} isToggle /> </div> - </Styled.Trigger> + </$Trigger> <Portal> - <Styled.Content + <$Content align={isMobile ? 'center' : 'start'} sideOffset={sideOffset} loop className={className} > {items.map(({ value, label, description, onSelect, disabled }) => ( - <Styled.Item + <$Item key={value} - value={value} + textValue={value} onSelect={() => (onSelect ?? onValueChange)?.(value)} disabled={disabled} > - <Styled.ItemLabel>{label}</Styled.ItemLabel> - <Styled.Description>{description}</Styled.Description> - </Styled.Item> + <$ItemLabel>{label}</$ItemLabel> + <$Description>{description}</$Description> + </$Item> ))} - </Styled.Content> + </$Content> </Portal> </Root> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.Trigger = styled(Trigger)` +const $Trigger = styled(Trigger)` ${popoverMixins.trigger} ${popoverMixins.backdropOverlay} @@ -91,15 +89,15 @@ Styled.Trigger = styled(Trigger)` } `; -Styled.DropdownIconButton = styled(IconButton)` +const $DropdownIconButton = styled(IconButton)` --button-textColor: var(--color-text-2); - ${Styled.Trigger}[data-state='open'] & { + ${$Trigger}[data-state='open'] & { rotate: -0.5turn; } `; -Styled.Content = styled(Content)` +const $Content = styled(Content)` ${layoutMixins.withOuterAndInnerBorders} ${popoverMixins.popover} ${popoverMixins.popoverAnimation} @@ -116,7 +114,7 @@ Styled.Content = styled(Content)` } `; -Styled.Item = styled(Item)` +const $Item = styled(Item)` ${popoverMixins.item} --item-padding: 0.75rem 1rem; @@ -125,12 +123,12 @@ Styled.Item = styled(Item)` gap: 0.5rem; `; -Styled.ItemLabel = styled.span` +const $ItemLabel = styled.span` color: var(--color-text-2); font: var(--font-medium-book); `; -Styled.Description = styled.span` +const $Description = styled.span` color: var(--color-text-0); font: var(--font-small-book); `; diff --git a/src/components/DropdownMenu.tsx b/src/components/DropdownMenu.tsx index 5d19be814..972c7d663 100644 --- a/src/components/DropdownMenu.tsx +++ b/src/components/DropdownMenu.tsx @@ -1,17 +1,27 @@ -import { type Ref, forwardRef } from 'react'; -import styled, { type AnyStyledComponent } from 'styled-components'; -import { Root, Trigger, Content, Portal, Item, Separator } from '@radix-ui/react-dropdown-menu'; +import { Fragment, type Ref } from 'react'; + +import { + Content, + Item, + Portal, + Root, + Separator, + Trigger, + type DropdownMenuProps as RadixDropdownMenuProps, +} from '@radix-ui/react-dropdown-menu'; +import styled from 'styled-components'; import { popoverMixins } from '@/styles/popoverMixins'; import { Icon, IconName } from '@/components/Icon'; -import { Fragment } from 'react'; + +import { forwardRefFn } from '@/lib/genericFunctionalComponentUtils'; export type DropdownMenuItem<T> = { value: T; icon?: React.ReactNode; label: React.ReactNode; - onSelect?: () => void; + onSelect?: (e: Event) => void; separator?: boolean; highlightColor?: 'accent' | 'create' | 'destroy'; }; @@ -29,9 +39,9 @@ type ElementProps<T> = { slotTopContent?: React.ReactNode; }; -type DropdownMenuProps<T> = StyleProps & ElementProps<T>; +export type DropdownMenuProps<T> = StyleProps & ElementProps<T> & RadixDropdownMenuProps; -export const DropdownMenu = forwardRef( +export const DropdownMenu = forwardRefFn( <T extends string>( { align = 'center', @@ -41,62 +51,62 @@ export const DropdownMenu = forwardRef( slotTopContent, side = 'bottom', sideOffset = 8, + ...rest }: DropdownMenuProps<T>, - ref: Ref<T> + ref: Ref<HTMLButtonElement> ) => { return ( - <Root> - <Styled.Trigger ref={ref} className={className}> + <Root {...rest}> + <$Trigger ref={ref} className={className}> {children} - <Styled.DropdownIcon aria-hidden="true"> + <$DropdownIcon aria-hidden="true"> <Icon iconName={IconName.Triangle} aria-hidden="true" /> - </Styled.DropdownIcon> - </Styled.Trigger> + </$DropdownIcon> + </$Trigger> <Portal> - <Styled.Content className={className} align={align} side={side} sideOffset={sideOffset}> + <$Content className={className} align={align} side={side} sideOffset={sideOffset}> {slotTopContent} {items.map((item: DropdownMenuItem<T>) => ( <Fragment key={item.value}> - <Styled.Item + <$Item disabled={!item.onSelect} $highlightColor={item.highlightColor} onSelect={item?.onSelect} > {item.icon} {item.label} - </Styled.Item> - {item.separator && <Styled.Separator />} + </$Item> + {item.separator && <$Separator />} </Fragment> ))} - </Styled.Content> + </$Content> </Portal> </Root> ); } ); - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.Separator = styled(Separator)` +const $Separator = styled(Separator)` border-bottom: solid var(--border-width) var(--color-border); margin: 0.25rem 1rem; `; -Styled.Item = styled(Item)<{ $highlightColor: 'accent' | 'create' | 'destroy' }>` +const $Item = styled(Item)<{ $highlightColor?: 'accent' | 'create' | 'destroy' }>` ${popoverMixins.item} --item-font-size: var(--dropdownMenu-item-font-size); ${({ $highlightColor }) => - ({ - ['accent']: ` + $highlightColor != null + ? { + accent: ` --item-highlighted-textColor: var(--color-accent); `, - ['create']: ` + create: ` --item-highlighted-textColor: var(--color-green); `, - ['destroy']: ` + destroy: ` --item-highlighted-textColor: var(--color-red); `, - }[$highlightColor])} + }[$highlightColor] + : undefined} justify-content: start; color: var(--color-text-0); @@ -106,23 +116,23 @@ Styled.Item = styled(Item)<{ $highlightColor: 'accent' | 'create' | 'destroy' }> } `; -Styled.Trigger = styled(Trigger)` +const $Trigger = styled(Trigger)` ${popoverMixins.trigger} ${popoverMixins.backdropOverlay} `; -Styled.DropdownIcon = styled.span` +const $DropdownIcon = styled.span` display: inline-flex; font-size: 0.375em; transition: transform 0.3s var(--ease-out-expo); align-items: center; - ${Styled.Trigger}[data-state='open'] & { + ${$Trigger}[data-state='open'] & { transform: scaleY(-1); } `; -Styled.Content = styled(Content)` +const $Content = styled(Content)` --dropdownMenu-item-font-size: inherit; ${popoverMixins.popover} diff --git a/src/components/DropdownSelectMenu.stories.tsx b/src/components/DropdownSelectMenu.stories.tsx index 2262d10d2..b9dba78ec 100644 --- a/src/components/DropdownSelectMenu.stories.tsx +++ b/src/components/DropdownSelectMenu.stories.tsx @@ -1,4 +1,5 @@ import { useState } from 'react'; + import type { Story } from '@ladle/react'; import { DropdownSelectMenu } from '@/components/DropdownSelectMenu'; diff --git a/src/components/DropdownSelectMenu.tsx b/src/components/DropdownSelectMenu.tsx index 6fe513ebb..d98813952 100644 --- a/src/components/DropdownSelectMenu.tsx +++ b/src/components/DropdownSelectMenu.tsx @@ -1,29 +1,30 @@ import { cloneElement } from 'react'; -import styled, { type AnyStyledComponent } from 'styled-components'; + import { - Root, - Trigger, Content, ItemIndicator, + Portal, RadioGroup, RadioItem, - Portal, + Root, + Trigger, } from '@radix-ui/react-dropdown-menu'; import { CheckIcon } from '@radix-ui/react-icons'; +import styled from 'styled-components'; import { type MenuItem } from '@/constants/menus'; +import { layoutMixins } from '@/styles/layoutMixins'; +import { popoverMixins } from '@/styles/popoverMixins'; + import { Icon, IconName } from '@/components/Icon'; import { Tag } from '@/components/Tag'; -import { popoverMixins } from '@/styles/popoverMixins'; -import { layoutMixins } from '@/styles/layoutMixins'; - type ElementProps<MenuItemValue extends string> = { disabled?: boolean; items: MenuItem<MenuItemValue>[]; - value: MenuItemValue; - onValueChange: (value: MenuItemValue) => void; + value?: MenuItemValue; + onValueChange?: (value: MenuItemValue) => void; children?: React.ReactNode; slotTrigger?: JSX.Element; }; @@ -45,7 +46,7 @@ export const DropdownSelectMenu = <MenuItemValue extends string>({ return ( <> {currentItem?.slotBefore} - <Styled.ItemLabel>{currentItem?.label ?? value}</Styled.ItemLabel> + <$ItemLabel>{currentItem?.label ?? value}</$ItemLabel> </> ); })(), @@ -58,28 +59,30 @@ export const DropdownSelectMenu = <MenuItemValue extends string>({ const triggerContent = ( <> {children} - <Styled.DropdownIcon aria-hidden="true"> + <$DropdownIcon aria-hidden="true"> <Icon iconName={IconName.Triangle} aria-hidden="true" /> - </Styled.DropdownIcon> + </$DropdownIcon> </> ); return ( <Root> - <Styled.Trigger disabled={disabled} className={className} asChild={slotTrigger}> + <$Trigger disabled={disabled} className={className} asChild={!!slotTrigger}> {slotTrigger ? cloneElement(slotTrigger, { children: triggerContent }) : triggerContent} - </Styled.Trigger> + </$Trigger> <Portal> - <Styled.Content align={align} sideOffset={sideOffset} className={className}> + <$Content align={align} sideOffset={sideOffset} className={className}> <RadioGroup value={value} - onValueChange={(value) => onValueChange(value as MenuItemValue)} + onValueChange={ + onValueChange != null ? (value) => onValueChange(value as MenuItemValue) : undefined + } > {items.map(({ value, label, slotBefore, slotAfter, tag, disabled }) => ( - <Styled.RadioItem key={value} value={value} disabled={disabled}> + <$RadioItem key={value} value={value} disabled={disabled}> {slotBefore} - <Styled.ItemLabel> + <$ItemLabel> {label} {tag && ( <> @@ -87,25 +90,22 @@ export const DropdownSelectMenu = <MenuItemValue extends string>({ <Tag>{tag}</Tag> </> )} - </Styled.ItemLabel> + </$ItemLabel> {slotAfter} - <Styled.ItemIndicator> + <$ItemIndicator> <CheckIcon /> - </Styled.ItemIndicator> - </Styled.RadioItem> + </$ItemIndicator> + </$RadioItem> ))} </RadioGroup> - </Styled.Content> + </$Content> </Portal> </Root> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.Trigger = styled(Trigger)` +const $Trigger = styled(Trigger)` ${layoutMixins.row} gap: 1rem; @@ -113,33 +113,36 @@ Styled.Trigger = styled(Trigger)` ${popoverMixins.backdropOverlay} `; -Styled.DropdownIcon = styled.span` +const $DropdownIcon = styled.span` display: inline-flex; transition: transform 0.3s var(--ease-out-expo); font-size: 0.375em; - ${Styled.Trigger}[data-state='open'] & { + ${$Trigger}[data-state='open'] & { transform: scaleY(-1); } `; -Styled.Content = styled(Content)` +const $Content = styled(Content)` + --dropdownSelectMenu-item-font-size: inherit; + ${popoverMixins.popover} ${popoverMixins.popoverAnimation} `; -Styled.RadioItem = styled(RadioItem)` +const $RadioItem = styled(RadioItem)` ${popoverMixins.item} + --item-font-size: var(--dropdownSelectMenu-item-font-size); `; -Styled.ItemLabel = styled.span` +const $ItemLabel = styled.span` flex: 1; ${layoutMixins.inlineRow} `; -Styled.ItemIndicator = styled(ItemIndicator)` +const $ItemIndicator = styled(ItemIndicator)` margin-left: auto; display: inline-flex; diff --git a/src/components/FormInput.stories.tsx b/src/components/FormInput.stories.tsx index 0f7baf796..4d2ea2b7d 100644 --- a/src/components/FormInput.stories.tsx +++ b/src/components/FormInput.stories.tsx @@ -1,4 +1,3 @@ -import { useState } from 'react'; import type { Story } from '@ladle/react'; import { AlertType } from '@/constants/alerts'; @@ -10,24 +9,18 @@ import { InputType } from '@/components/Input'; import { StoryWrapper } from '.ladle/components'; export const FormInputWithValidationStory: Story<FormInputProps> = (args) => { - const [value, setValue] = useState(''); - return ( <StoryWrapper> - <FormInput - {...args} - onChange={(e: React.ChangeEvent<HTMLInputElement>) => setValue(e.target.value)} - value={value} - /> + <FormInput {...args} /> </StoryWrapper> ); }; FormInputWithValidationStory.args = { decimals: 2, - max: '', - min: '', + max: 100, placeholder: '', + label: 'label', validationConfig: { attached: false, type: AlertType.Error, @@ -43,25 +36,19 @@ FormInputWithValidationStory.argTypes = { }, }; -export const FormInputStoryWithSlotOuterRight: Story<FormInputProps> = (args) => { - const [value, setValue] = useState(''); +export const FormInputStoryWithSlotRight: Story<FormInputProps> = (args) => { return ( <StoryWrapper> - <FormInput - {...args} - onChange={(e: React.ChangeEvent<HTMLInputElement>) => setValue(e.target.value)} - slotOuterRight={<Button>Submit</Button>} - value={value} - /> + <FormInput slotRight={<Button>Submit</Button>} {...args} /> </StoryWrapper> ); }; -FormInputStoryWithSlotOuterRight.args = { +FormInputStoryWithSlotRight.args = { decimals: 2, - max: '', - min: '', + max: 100, placeholder: '', + label: 'label', validationConfig: { attached: false, type: AlertType.Error, @@ -69,7 +56,7 @@ FormInputStoryWithSlotOuterRight.args = { }, }; -FormInputStoryWithSlotOuterRight.argTypes = { +FormInputStoryWithSlotRight.argTypes = { type: { options: Object.values(InputType), control: { type: 'select' }, diff --git a/src/components/FormInput.tsx b/src/components/FormInput.tsx index 588c5df80..b7671ddf1 100644 --- a/src/components/FormInput.tsx +++ b/src/components/FormInput.tsx @@ -1,9 +1,11 @@ -import { forwardRef } from 'react'; +import React, { forwardRef } from 'react'; + import styled, { AnyStyledComponent, css } from 'styled-components'; import { AlertType } from '@/constants/alerts'; -import { layoutMixins } from '@/styles/layoutMixins'; + import { formMixins } from '@/styles/formMixins'; +import { layoutMixins } from '@/styles/layoutMixins'; import { AlertMessage } from '@/components/AlertMessage'; import { Input, InputProps } from '@/components/Input'; @@ -14,7 +16,7 @@ type StyleProps = { }; type ElementProps = { - label: React.ReactNode; + label?: React.ReactNode; slotRight?: React.ReactNode; validationConfig?: { attached?: boolean; @@ -27,30 +29,26 @@ export type FormInputProps = ElementProps & StyleProps & InputProps; export const FormInput = forwardRef<HTMLInputElement, FormInputProps>( ({ id, label, slotRight, className, validationConfig, ...otherProps }, ref) => ( - <Styled.FormInputContainer - className={className} - isValidationAttached={validationConfig?.attached} - > - <Styled.InputContainer hasSlotRight={!!slotRight}> - <Styled.WithLabel label={label} inputID={id} disabled={otherProps?.disabled}> + <$FormInputContainer className={className} isValidationAttached={validationConfig?.attached}> + <$InputContainer hasLabel={!!label} hasSlotRight={!!slotRight}> + {label ? ( + <$WithLabel label={label} inputID={id} disabled={otherProps?.disabled}> + <Input ref={ref} id={id} {...otherProps} /> + </$WithLabel> + ) : ( <Input ref={ref} id={id} {...otherProps} /> - </Styled.WithLabel> + )} {slotRight} - </Styled.InputContainer> + </$InputContainer> {validationConfig && ( - <Styled.AlertMessage type={validationConfig.type}> - {validationConfig.message} - </Styled.AlertMessage> + <$AlertMessage type={validationConfig.type}>{validationConfig.message}</$AlertMessage> )} - </Styled.FormInputContainer> + </$FormInputContainer> ) ); +const $AlertMessage = styled(AlertMessage)``; -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.AlertMessage = styled(AlertMessage)``; - -Styled.FormInputContainer = styled.div<{ isValidationAttached?: boolean }>` +const $FormInputContainer = styled.div<{ isValidationAttached?: boolean }>` ${layoutMixins.flexColumn} gap: 0.5rem; @@ -59,7 +57,7 @@ Styled.FormInputContainer = styled.div<{ isValidationAttached?: boolean }>` css` --input-radius: 0.5em 0.5em 0 0; - ${Styled.AlertMessage} { + ${$AlertMessage} { border-left: none; margin: 0; border-radius: 0 0 0.5em 0.5em; @@ -67,10 +65,16 @@ Styled.FormInputContainer = styled.div<{ isValidationAttached?: boolean }>` `} `; -Styled.InputContainer = styled.div<{ hasSlotRight?: boolean }>` +const $InputContainer = styled.div<{ hasLabel?: boolean; hasSlotRight?: boolean }>` ${formMixins.inputContainer} input { + ${({ hasLabel }) => + !hasLabel && + css` + --form-input-paddingY: 0; + `} + padding: var(--form-input-paddingY) var(--form-input-paddingX); padding-top: 0; } @@ -85,7 +89,7 @@ Styled.InputContainer = styled.div<{ hasSlotRight?: boolean }>` `} `; -Styled.WithLabel = styled(WithLabel)<{ disabled?: boolean }>` +const $WithLabel = styled(WithLabel)<{ disabled?: boolean }>` ${formMixins.inputLabel} label { diff --git a/src/components/GradientCard.tsx b/src/components/GradientCard.tsx new file mode 100644 index 000000000..e00204c6f --- /dev/null +++ b/src/components/GradientCard.tsx @@ -0,0 +1,49 @@ +import styled, { css } from 'styled-components'; + +type GradientCardProps = React.PropsWithChildren<{ + className?: string; + fromColor?: 'positive' | 'negative' | 'neutral'; + toColor?: 'positive' | 'negative' | 'neutral'; +}>; + +export const GradientCard = ({ children, className, fromColor, toColor }: GradientCardProps) => { + return ( + <$GradientCard className={className} fromColor={fromColor} toColor={toColor}> + {children} + </$GradientCard> + ); +}; +const $GradientCard = styled.div<{ + fromColor?: GradientCardProps['fromColor']; + toColor?: GradientCardProps['toColor']; +}>` + // Props/defaults + --from-color: transparent; + --to-color: transparent; + + // Constants + --default-gradient: linear-gradient( + 342.62deg, + var(--color-gradient-base-0) -9.23%, + var(--color-gradient-base-1) 110.36% + ); + + ${({ fromColor, toColor }) => + css` + --from-color: ${{ + positive: css`var(--color-gradient-positive)`, + neutral: css`transparent`, + negative: css`var(--color-gradient-negative)`, + }[fromColor ?? 'neutral']}; + + --to-color: ${{ + positive: css`var(--color-gradient-positive)`, + neutral: css`transparent`, + negative: css`var(--color-gradient-negative)`, + }[toColor ?? 'neutral']}; + `} + + background: linear-gradient(130.25deg, var(--from-color) 0.9%, transparent 64.47%), + linear-gradient(227.14deg, var(--to-color) 1.6%, transparent 63.87%), + var(--default-gradient); +`; diff --git a/src/components/GreenCheckCircle.tsx b/src/components/GreenCheckCircle.tsx index f5b451f54..9830ff226 100644 --- a/src/components/GreenCheckCircle.tsx +++ b/src/components/GreenCheckCircle.tsx @@ -1,14 +1,11 @@ -import styled, { AnyStyledComponent } from 'styled-components'; +import styled from 'styled-components'; import { Icon, IconName } from '@/components/Icon'; export const GreenCheckCircle = ({ className }: { className?: string }) => ( - <Styled.Icon className={className} iconName={IconName.CheckCircle} /> + <$Icon className={className} iconName={IconName.CheckCircle} /> ); - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.Icon = styled(Icon)` +const $Icon = styled(Icon)` --icon-size: 1.25rem; width: var(--icon-size); diff --git a/src/components/GuardedMobileRoute.tsx b/src/components/GuardedMobileRoute.tsx index dec5d758c..cd4c83eac 100644 --- a/src/components/GuardedMobileRoute.tsx +++ b/src/components/GuardedMobileRoute.tsx @@ -1,17 +1,16 @@ import { useEffect, useRef } from 'react'; -import { Outlet, useNavigate } from 'react-router-dom'; + import { shallowEqual, useDispatch, useSelector } from 'react-redux'; +import { Outlet, useNavigate } from 'react-router-dom'; import { DialogTypes } from '@/constants/dialogs'; -import { useBreakpoints } from '@/hooks'; +import { useBreakpoints } from '@/hooks/useBreakpoints'; +import { calculateCanAccountTrade } from '@/state/accountCalculators'; import { openDialog } from '@/state/dialogs'; - import { getActiveDialog } from '@/state/dialogsSelectors'; -import { calculateCanAccountTrade } from '@/state/accountCalculators'; - export const GuardedMobileRoute = () => { const { isTablet } = useBreakpoints(); const navigate = useNavigate(); diff --git a/src/components/Icon.tsx b/src/components/Icon.tsx index 81427adde..6588eb2be 100644 --- a/src/components/Icon.tsx +++ b/src/components/Icon.tsx @@ -11,12 +11,12 @@ import { BoxCloseIcon, CalculatorIcon, CaretIcon, - CautionCircleStrokeIcon, CautionCircleIcon, + CautionCircleStrokeIcon, ChaosLabsIcon, ChatIcon, - CheckIcon, CheckCircleIcon, + CheckIcon, ChevronLeftIcon, ChevronRightIcon, ClockIcon, @@ -48,17 +48,18 @@ import { MigrateIcon, MintscanIcon, MoonIcon, - OrderbookIcon, OrderCanceledIcon, OrderFilledIcon, OrderOpenIcon, OrderPartiallyFilledIcon, OrderPendingIcon, OrderUntriggeredIcon, + OrderbookIcon, OverviewIcon, PencilIcon, PlayIcon, PlusIcon, + PositionPartialIcon, PositionsIcon, PriceChartIcon, PrivacyIcon, @@ -68,10 +69,10 @@ import { SendIcon, ShareIcon, ShowIcon, - TogglesMenuIcon, StarIcon, SunIcon, TerminalIcon, + TogglesMenuIcon, TokenIcon, TradeIcon, TransferIcon, @@ -81,6 +82,7 @@ import { WebsiteIcon, WhitepaperIcon, WithdrawIcon, + DownloadIcon, } from '@/icons'; export enum IconName { @@ -141,6 +143,7 @@ export enum IconName { Pencil = 'Pencil', Play = 'Play', Plus = 'Plus', + PositionPartial = 'PositionPartial', Positions = 'Positions', PriceChart = 'PriceChart', Privacy = 'Privacy', @@ -163,6 +166,7 @@ export enum IconName { Website = 'Website', Whitepaper = 'Whitepaper', Withdraw = 'Withdraw', + Download = 'Download', } const icons = { @@ -222,6 +226,7 @@ const icons = { [IconName.Pencil]: PencilIcon, [IconName.Play]: PlayIcon, [IconName.Plus]: PlusIcon, + [IconName.PositionPartial]: PositionPartialIcon, [IconName.Positions]: PositionsIcon, [IconName.PriceChart]: PriceChartIcon, [IconName.Privacy]: PrivacyIcon, @@ -244,6 +249,7 @@ const icons = { [IconName.Website]: WebsiteIcon, [IconName.Whitepaper]: WhitepaperIcon, [IconName.Withdraw]: WithdrawIcon, + [IconName.Download]: DownloadIcon, } as Record<IconName, ElementType>; type ElementProps = { diff --git a/src/components/IconButton.stories.tsx b/src/components/IconButton.stories.tsx index 9f2280799..dcc68f979 100644 --- a/src/components/IconButton.stories.tsx +++ b/src/components/IconButton.stories.tsx @@ -1,6 +1,12 @@ import type { Story } from '@ladle/react'; -import { ButtonAction, ButtonShape, ButtonSize, ButtonState, ButtonType } from '@/constants/buttons'; +import { + ButtonAction, + ButtonShape, + ButtonSize, + ButtonState, + ButtonType, +} from '@/constants/buttons'; import { IconName } from '@/components/Icon'; import { IconButton, type IconButtonProps } from '@/components/IconButton'; @@ -54,5 +60,5 @@ IconButtonStory.argTypes = { options: [true, false], control: { type: 'select' }, defaultValue: false, - } + }, }; diff --git a/src/components/IconButton.tsx b/src/components/IconButton.tsx index 9802ee645..95b5e6f1b 100644 --- a/src/components/IconButton.tsx +++ b/src/components/IconButton.tsx @@ -1,9 +1,10 @@ import { forwardRef, type ElementType } from 'react'; -import styled, { AnyStyledComponent, css } from 'styled-components'; -import { ButtonShape, ButtonSize } from '@/constants/buttons'; +import styled, { css } from 'styled-components'; -import { Button, type ButtonProps } from '@/components/Button'; +import { ButtonAction, ButtonShape, ButtonSize, ButtonState } from '@/constants/buttons'; + +import { Button, ButtonStateConfig } from '@/components/Button'; import { Icon, IconName } from '@/components/Icon'; import { ToggleButton, type ToggleButtonProps } from '@/components/ToggleButton'; @@ -11,9 +12,11 @@ type ElementProps = { isToggle?: boolean; iconName?: IconName; iconComponent?: ElementType; + action?: ButtonAction; + state?: ButtonState | ButtonStateConfig; }; -export type IconButtonProps = ElementProps & ButtonProps & ToggleButtonProps; +export type IconButtonProps = ElementProps & ToggleButtonProps; export const IconButton = forwardRef<HTMLButtonElement | HTMLAnchorElement, IconButtonProps>( ( @@ -35,19 +38,19 @@ export const IconButton = forwardRef<HTMLButtonElement | HTMLAnchorElement, Icon ref ) => { return isToggle ? ( - <Styled.IconToggleButton + <$IconToggleButton ref={ref} className={className} size={size} shape={shape} href={href} - onPressedChange={onPressedChange ?? onClick} + onPressedChange={onPressedChange ?? (onClick as any)} // TODO fix types {...otherProps} > <Icon iconName={iconName} iconComponent={iconComponent} /> - </Styled.IconToggleButton> + </$IconToggleButton> ) : ( - <Styled.IconButton + <$IconButton ref={ref} className={className} size={size} @@ -57,13 +60,10 @@ export const IconButton = forwardRef<HTMLButtonElement | HTMLAnchorElement, Icon {...otherProps} > <Icon iconName={iconName} iconComponent={iconComponent} /> - </Styled.IconButton> + </$IconButton> ); } ); - -const Styled: Record<string, AnyStyledComponent> = {}; - const buttonMixin = css` // Params --button-icon-size: 1.125em; @@ -75,10 +75,10 @@ const buttonMixin = css` } `; -Styled.IconButton = styled(Button)` +const $IconButton = styled(Button)` ${buttonMixin} `; -Styled.IconToggleButton = styled(ToggleButton)` +const $IconToggleButton = styled(ToggleButton)` ${buttonMixin} `; diff --git a/src/components/Input.stories.tsx b/src/components/Input.stories.tsx index f6c61f635..6794d9b8c 100644 --- a/src/components/Input.stories.tsx +++ b/src/components/Input.stories.tsx @@ -1,27 +1,20 @@ -import { useState } from 'react'; import type { Story } from '@ladle/react'; -import { Input, InputType, InputProps } from '@/components/Input'; +import { Input, InputProps, InputType } from '@/components/Input'; import { StoryWrapper } from '.ladle/components'; export const InputStory: Story<InputProps> = (args) => { - const [value, setValue] = useState(''); return ( <StoryWrapper> - <Input - {...args} - onChange={(e: React.ChangeEvent<HTMLInputElement>) => setValue(e.target.value)} - value={value} - /> + <Input {...args} /> </StoryWrapper> ); }; InputStory.args = { decimals: 2, - max: '', - min: '', + max: 100, placeholder: '', }; diff --git a/src/components/Input.tsx b/src/components/Input.tsx index e8d3d7578..0be56bddc 100644 --- a/src/components/Input.tsx +++ b/src/components/Input.tsx @@ -1,7 +1,8 @@ import { Dispatch, forwardRef, SetStateAction } from 'react'; -import styled, { type AnyStyledComponent, css } from 'styled-components'; + import { NumericFormat, type NumberFormatValues, type SourceInfo } from 'react-number-format'; import type { SyntheticInputEvent } from 'react-number-format/types/types'; +import styled, { css } from 'styled-components'; import { LEVERAGE_DECIMALS, @@ -10,8 +11,9 @@ import { USD_DECIMALS, } from '@/constants/numbers'; +import { useLocaleSeparators } from '@/hooks/useLocaleSeparators'; + import { BIG_NUMBERS } from '@/lib/numbers'; -import { useLocaleSeparators } from '@/hooks'; export enum InputType { Currency = 'Currency', @@ -30,6 +32,7 @@ type ElementProps = { type?: InputType; value?: string | number | null; disabled?: boolean; + autoFocus?: boolean; id?: string; onBlur?: () => void; onFocus?: () => void; @@ -120,29 +123,29 @@ export const Input = forwardRef<HTMLInputElement, InputProps>( : ''; return ( - <Styled.InputContainer className={className}> + <$InputContainer className={className}> {type === InputType.Text || type === InputType.Search ? ( - <Styled.Input + <$Input // React - ref={ref as React.Ref<HTMLInputElement>} + ref={ref} id={id} // Events onBlur={onBlur} - onChange={onChange} + onChange={onChange as any} // TODO fix types onFocus={onFocus} - onInput={onInput} + onInput={onInput as any} // TODO fix type // Native disabled={disabled} placeholder={placeholder} - value={value} + value={value ?? undefined} // Other data-1p-ignore // prevent 1Password fill {...otherProps} /> ) : ( - <Styled.NumericFormat + <$NumericFormat // React - ref={ref as React.Ref<typeof NumericFormat<unknown>>} + getInputRef={ref} id={id} // NumericFormat valueIsNumericString @@ -156,7 +159,7 @@ export const Input = forwardRef<HTMLInputElement, InputProps>( suffix={numberFormatConfig?.suffix} // Events onBlur={onBlur} - onValueChange={onChange} + onValueChange={onChange as any} // TODO fix types onFocus={onFocus} onInput={(e: SyntheticInputEvent) => { if (!onInput) return; @@ -181,14 +184,11 @@ export const Input = forwardRef<HTMLInputElement, InputProps>( {...otherProps} /> )} - </Styled.InputContainer> + </$InputContainer> ); } ); - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.InputContainer = styled.div` +const $InputContainer = styled.div` width: 100%; min-height: 100%; height: 100%; @@ -228,11 +228,11 @@ const InputStyle = css` } `; -Styled.NumericFormat = styled(NumericFormat)` +const $NumericFormat = styled(NumericFormat)` ${InputStyle} font-feature-settings: var(--fontFeature-monoNumbers); `; -Styled.Input = styled.input` +const $Input = styled.input` ${InputStyle} `; diff --git a/src/components/Link.stories.tsx b/src/components/Link.stories.tsx index 2042b515a..9a0d06ac1 100644 --- a/src/components/Link.stories.tsx +++ b/src/components/Link.stories.tsx @@ -1,17 +1,18 @@ -import styled, { AnyStyledComponent } from 'styled-components'; import type { Story } from '@ladle/react'; +import styled from 'styled-components'; + +import { layoutMixins } from '@/styles/layoutMixins'; import { Link } from '@/components/Link'; import { StoryWrapper } from '.ladle/components'; -import { layoutMixins } from '@/styles/layoutMixins'; export const LinkStory: Story<Parameters<typeof Link>[0]> = (args) => { return ( <StoryWrapper> - <Styled.Container> + <$Container> <Link {...args}>Trade Now</Link> - </Styled.Container> + </$Container> </StoryWrapper> ); }; @@ -19,10 +20,7 @@ export const LinkStory: Story<Parameters<typeof Link>[0]> = (args) => { LinkStory.args = { href: 'https://trade.dydx.exchange', }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.Container = styled.section` +const $Container = styled.section` background: var(--color-layer-3); ${layoutMixins.container} diff --git a/src/components/Link.tsx b/src/components/Link.tsx index bbf89a0a8..e66253039 100644 --- a/src/components/Link.tsx +++ b/src/components/Link.tsx @@ -1,10 +1,11 @@ import { forwardRef } from 'react'; -import styled, { type AnyStyledComponent } from 'styled-components'; -import { Icon, IconName } from '@/components/Icon'; +import styled from 'styled-components'; import { layoutMixins } from '@/styles/layoutMixins'; +import { Icon, IconName } from '@/components/Icon'; + type ElementProps = { analyticsConfig?: { event: string; @@ -12,7 +13,7 @@ type ElementProps = { }; children: React.ReactNode; href?: string; - onClick?: (e: MouseEvent) => void; + onClick?: (e: React.MouseEvent) => void; withIcon?: boolean; }; @@ -33,11 +34,11 @@ export const Link = forwardRef<HTMLAnchorElement, ElementProps & StyleProps>( }: ElementProps & StyleProps, ref ) => ( - <Styled.A + <$A ref={ref} className={className} href={href} - onClick={(e: MouseEvent) => { + onClick={(e: React.MouseEvent) => { if (analyticsConfig) { console.log(analyticsConfig); } @@ -50,13 +51,10 @@ export const Link = forwardRef<HTMLAnchorElement, ElementProps & StyleProps>( > {children} {withIcon && <Icon iconName={IconName.LinkOut} />} - </Styled.A> + </$A> ) ); - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.A = styled.a<StyleProps>` +const $A = styled.a<StyleProps>` --link-color: inherit; color: var(--link-color); diff --git a/src/components/Loading/Loading.stories.tsx b/src/components/Loading/Loading.stories.tsx index c0e5942af..6d4f01b5b 100644 --- a/src/components/Loading/Loading.stories.tsx +++ b/src/components/Loading/Loading.stories.tsx @@ -1,8 +1,9 @@ import type { Story } from '@ladle/react'; import { LoadingDots, LoadingDotsProps } from '@/components/Loading/LoadingDots'; -import { LoadingSpinner } from '@/components/Loading/LoadingSpinner'; import { LoadingOutput } from '@/components/Loading/LoadingOutput'; +import { LoadingSpinner } from '@/components/Loading/LoadingSpinner'; + import { StoryWrapper } from '.ladle/components'; export const Dots: Story<LoadingDotsProps> = (args) => { diff --git a/src/components/Loading/LoadingSpinner.tsx b/src/components/Loading/LoadingSpinner.tsx index 400438e7e..d462ad3ed 100644 --- a/src/components/Loading/LoadingSpinner.tsx +++ b/src/components/Loading/LoadingSpinner.tsx @@ -1,5 +1,6 @@ +import styled, { keyframes } from 'styled-components'; + import { layoutMixins } from '@/styles/layoutMixins'; -import styled, { type AnyStyledComponent, keyframes } from 'styled-components'; // In some strange cases, hiding a spinner on one part of the page causes the linearGradient to // be hidden on all other instances of the page. An id can be passed in to prevent this. @@ -9,8 +10,8 @@ export const LoadingSpinner: React.FC<{ disabled?: boolean; }> = ({ id, className, disabled = false }) => { return ( - <Styled.Spinner className={className}> - <Styled.LoadingSpinnerSvg + <$Spinner className={className}> + <$LoadingSpinnerSvg id={id} width="38" height="38" @@ -34,32 +35,30 @@ export const LoadingSpinner: React.FC<{ strokeLinecap="round" /> )} - </Styled.LoadingSpinnerSvg> - </Styled.Spinner> + </$LoadingSpinnerSvg> + </$Spinner> ); }; export const LoadingSpace: React.FC<{ className?: string; id: string }> = ({ className, id }) => ( - <Styled.LoadingSpaceContainer className={className}> + <$LoadingSpaceContainer className={className}> <LoadingSpinner id={id} /> - </Styled.LoadingSpaceContainer> + </$LoadingSpaceContainer> ); - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.LoadingSpaceContainer = styled.div` +const $LoadingSpaceContainer = styled.div` ${layoutMixins.centered} `; -Styled.Spinner = styled.div` +const $Spinner = styled.div` --spinner-width: auto; line-height: 0; color: var(--color-text-0); `; -Styled.LoadingSpinnerSvg = styled.svg` +const $LoadingSpinnerSvg = styled.svg` width: var(--spinner-width); + height: auto; animation: ${keyframes` to { diff --git a/src/components/MarginUsageRing.stories.tsx b/src/components/MarginUsageRing.stories.tsx index ae13f99d5..3b2aaa94d 100644 --- a/src/components/MarginUsageRing.stories.tsx +++ b/src/components/MarginUsageRing.stories.tsx @@ -1,5 +1,5 @@ -import styled, { AnyStyledComponent } from 'styled-components'; import type { Story } from '@ladle/react'; +import styled from 'styled-components'; import { layoutMixins } from '@/styles/layoutMixins'; @@ -10,9 +10,9 @@ import { StoryWrapper } from '.ladle/components'; export const MarginUsageRingStory: Story<{ value: number }> = (args) => { return ( <StoryWrapper> - <Styled.Container> + <$Container> <MarginUsageRing value={args.value / 100} /> - </Styled.Container> + </$Container> </StoryWrapper> ); }; @@ -24,9 +24,9 @@ MarginUsageRingStory.args = { export const MarginUsageRingStyled: Story<{ value: number }> = (args) => { return ( <StoryWrapper> - <Styled.Container> - <Styled.MarginUsageRing value={args.value / 100} /> - </Styled.Container> + <$Container> + <$MarginUsageRing value={args.value / 100} /> + </$Container> </StoryWrapper> ); }; @@ -34,14 +34,11 @@ export const MarginUsageRingStyled: Story<{ value: number }> = (args) => { MarginUsageRingStyled.args = { value: 0, }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.MarginUsageRing = styled(MarginUsageRing)` +const $MarginUsageRing = styled(MarginUsageRing)` color: var(--color-accent); `; -Styled.Container = styled.section` +const $Container = styled.section` background: var(--color-layer-3); ${layoutMixins.container} diff --git a/src/components/MarginUsageRing.tsx b/src/components/MarginUsageRing.tsx index 60c1e6b12..419172be3 100644 --- a/src/components/MarginUsageRing.tsx +++ b/src/components/MarginUsageRing.tsx @@ -1,4 +1,4 @@ -import styled, { type AnyStyledComponent } from 'styled-components'; +import styled from 'styled-components'; import { RiskLevels } from '@/constants/abacus'; @@ -16,16 +16,13 @@ type StyleProps = { }; export const MarginUsageRing = ({ className, value }: ElementProps & StyleProps) => ( - <Styled.MarginUsageRing + <$MarginUsageRing className={className} value={value} riskLevel={abacusHelper.marginRiskLevel(value)} /> ); - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.MarginUsageRing = styled(Ring)<{ riskLevel: RiskLevels }>` +const $MarginUsageRing = styled(Ring)<{ riskLevel: RiskLevels }>` ${({ riskLevel }) => UsageColorFromRiskLevel(riskLevel)} width: 1rem; height: 1rem; diff --git a/src/components/NavigationMenu.stories.tsx b/src/components/NavigationMenu.stories.tsx index 10929f85d..b3738b0d4 100644 --- a/src/components/NavigationMenu.stories.tsx +++ b/src/components/NavigationMenu.stories.tsx @@ -1,7 +1,7 @@ import type { Story } from '@ladle/react'; +import { HashRouter } from 'react-router-dom'; import { NavigationMenu } from '@/components/NavigationMenu'; -import { HashRouter } from 'react-router-dom'; import { StoryWrapper } from '.ladle/components'; diff --git a/src/components/NavigationMenu.tsx b/src/components/NavigationMenu.tsx index df278e31c..753d4c0ea 100644 --- a/src/components/NavigationMenu.tsx +++ b/src/components/NavigationMenu.tsx @@ -1,33 +1,41 @@ -import { forwardRef, Ref } from 'react'; -import styled, { type AnyStyledComponent, css, keyframes } from 'styled-components'; -import { NavLink, matchPath, useLocation } from 'react-router-dom'; - -import { MenuConfig, MenuItem } from '@/constants/menus'; - -import { isExternalLink } from '@/lib/isExternalLink'; - -import { popoverMixins } from '@/styles/popoverMixins'; +import { Ref } from 'react'; import { - Root, - List, - Trigger, Content, Item, Link, + List, + Root, Sub, + Trigger, Viewport, } from '@radix-ui/react-navigation-menu'; +import { NavLink, matchPath, useLocation } from 'react-router-dom'; +import styled, { css, keyframes } from 'styled-components'; + +import { MenuConfig, MenuItem } from '@/constants/menus'; import { layoutMixins } from '@/styles/layoutMixins'; +import { popoverMixins } from '@/styles/popoverMixins'; + +import { forwardRefFn, getSimpleStyledOutputType } from '@/lib/genericFunctionalComponentUtils'; +import { isExternalLink } from '@/lib/isExternalLink'; -import { Tag } from './Tag'; import { Icon, IconName } from './Icon'; +import { Tag } from './Tag'; type ElementProps<MenuItemValue extends string, MenuGroupValue extends string> = { items: MenuConfig<MenuItemValue, MenuGroupValue>; onSelectItem?: (value: MenuItemValue) => void; onSelectGroup?: (value: MenuGroupValue) => void; + /** + * Optional slot to add content before the menu item rendering area + */ + slotBefore?: React.ReactNode; + /** + * Optional slot to add content after the menu item rendering area + */ + slotAfter?: React.ReactNode; }; type StyleProps = { @@ -38,73 +46,75 @@ type StyleProps = { className?: string; }; -const NavItem = forwardRef( - <MenuItemValue extends string>( - { - value, - slotBefore, - label, - tag, - href, - slotAfter = isExternalLink(href) ? <Icon iconName={IconName.LinkOut} /> : undefined, - onSelect, - subitems, - ...props - }: MenuItem<MenuItemValue>, - ref: Ref<HTMLAnchorElement> | Ref<HTMLDivElement> | Ref<HTMLButtonElement> - ) => { - const location = useLocation(); - - const children = ( - <> - {slotBefore} - <span> - {label} - {tag && ( - <> - {' '} - <Tag>{tag}</Tag> - </> - )} - </span> - {slotAfter} - {subitems?.length && <Styled.Icon iconName={IconName.Triangle} />} - </> - ); - - return href ? ( - <Link - active={!!matchPath(href, location.pathname)} - onSelect={() => onSelect?.(value)} - asChild - target={isExternalLink(href) ? '_blank' : undefined} - > - <NavLink to={href} ref={ref as Ref<HTMLAnchorElement>} {...props}> - {children} - </NavLink> - </Link> - ) : props.onClick ? ( - <Link asChild onSelect={() => onSelect?.(value)}> - <button ref={ref as Ref<HTMLButtonElement>} {...props} type="button"> - {children} - </button> - </Link> - ) : ( - <div ref={ref as Ref<HTMLDivElement>} {...props}> +const NavItemWithRef = <MenuItemValue extends string>( + { + value, + slotBefore, + label, + tag, + href, + slotAfter = isExternalLink(href) ? <Icon iconName={IconName.LinkOut} /> : undefined, + onSelect, + subitems, + type, + ...props + }: MenuItem<MenuItemValue, string | number>, + ref: Ref<HTMLAnchorElement | HTMLButtonElement | HTMLDivElement> +) => { + const location = useLocation(); + + const children = ( + <> + {slotBefore} + <span> + {label} + {tag && ( + <> + {' '} + <Tag>{tag}</Tag> + </> + )} + </span> + {slotAfter} + {subitems?.length && <$Icon iconName={IconName.Triangle} />} + </> + ); + + return href ? ( + <Link + active={!!matchPath(href, location.pathname)} + onSelect={() => onSelect?.(value)} + asChild + target={isExternalLink(href) ? '_blank' : undefined} + > + <NavLink to={href} ref={ref as Ref<HTMLAnchorElement>} type={`${type}`} {...props}> {children} - </div> - ); - } -); + </NavLink> + </Link> + ) : props.onClick ? ( + <Link asChild onSelect={() => onSelect?.(value)}> + <button ref={ref as Ref<HTMLButtonElement>} {...props} type="button"> + {children} + </button> + </Link> + ) : ( + <div ref={ref as Ref<HTMLDivElement>} {...props}> + {children} + </div> + ); +}; + +const NavItem = forwardRefFn(NavItemWithRef); export const NavigationMenu = <MenuItemValue extends string, MenuGroupValue extends string>({ onSelectItem, - onSelectGroup, items, orientation = 'vertical', itemOrientation = 'horizontal', submenuPlacement = 'inline', // orientation === 'horizontal' ? 'viewport' : 'inline', dir = 'ltr', + slotAfter, + slotBefore, className, }: ElementProps<MenuItemValue, MenuGroupValue> & StyleProps) => { const renderSubitems = ({ @@ -115,74 +125,71 @@ export const NavigationMenu = <MenuItemValue extends string, MenuGroupValue exte depth: number; }) => ( <> - <Styled.SubMenuTrigger + <$SubMenuTrigger asChild - onPointerMove={(e: MouseEvent) => e.preventDefault()} - onPointerLeave={(e: MouseEvent) => e.preventDefault()} + onPointerMove={(e: React.MouseEvent) => e.preventDefault()} + onPointerLeave={(e: React.MouseEvent) => e.preventDefault()} > - <Styled.NavItem onSelect={onSelectGroup} orientation={itemOrientation} {...item} /> - </Styled.SubMenuTrigger> + <$NavItem onSelect={onSelectItem} orientation={itemOrientation} {...item} /> + </$SubMenuTrigger> - <Styled.Content - onPointerEnter={(e: MouseEvent) => e.preventDefault()} - onPointerLeave={(e: MouseEvent) => e.preventDefault()} + <$Content + onPointerEnter={(e: React.MouseEvent) => e.preventDefault()} + onPointerLeave={(e: React.MouseEvent) => e.preventDefault()} data-placement={submenuPlacement} > - <Styled.Sub data-placement={submenuPlacement}> - <Styled.List + <$Sub data-placement={submenuPlacement}> + <$List data-orientation={depth > 0 ? 'menu' : orientation === 'vertical' ? 'vertical' : 'menu'} > {item?.subitems?.map((subitem) => ( - <Styled.ListItem key={subitem.value} value={subitem.value} data-item={subitem.value}> + <$ListItem key={subitem.value} value={subitem.value} data-item={subitem.value}> {subitem?.subitems ? ( renderSubitems({ item: subitem, depth: depth + 1 }) ) : ( - <Styled.NavItem - onSelect={onSelectItem} - orientation={itemOrientation} - {...subitem} - /> + <$NavItem onSelect={onSelectItem} orientation={itemOrientation} {...subitem} /> )} - </Styled.ListItem> + </$ListItem> ))} - </Styled.List> - </Styled.Sub> - </Styled.Content> + </$List> + </$Sub> + </$Content> </> ); return ( - <Styled.Root orientation={orientation} dir={dir} className={className}> + <$Root orientation={orientation} dir={dir} className={className}> + {slotBefore} + {items.map((group) => ( - <Styled.Group key={group.group}> + <$Group key={group.group}> {group.groupLabel && ( - <Styled.GroupHeader> + <$GroupHeader> <h3>{group.groupLabel}</h3> - </Styled.GroupHeader> + </$GroupHeader> )} - <Styled.List data-orientation={orientation}> + <$List data-orientation={orientation}> {group.items.map((item) => ( - <Styled.ListItem key={item.value} value={item.value} data-item={item.value}> + <$ListItem key={item.value} value={item.value} data-item={item.value}> {item.subitems ? ( renderSubitems({ item, depth: 0 }) ) : ( - <Styled.NavItem onSelect={onSelectItem} orientation={itemOrientation} {...item} /> + <$NavItem onSelect={onSelectItem} orientation={itemOrientation} {...item} /> )} - </Styled.ListItem> + </$ListItem> ))} - </Styled.List> - </Styled.Group> + </$List> + </$Group> ))} - {submenuPlacement === 'viewport' && <Styled.Viewport data-orientation={orientation} />} - </Styled.Root> + {submenuPlacement === 'viewport' && <$Viewport data-orientation={orientation} />} + + {slotAfter} + </$Root> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.Root = styled(Root)` +const $Root = styled(Root)` /* Params */ --navigationMenu-height: auto; @@ -219,7 +226,7 @@ Styled.Root = styled(Root)` } `; -Styled.Viewport = styled(Viewport)` +const $Viewport = styled(Viewport)` ${popoverMixins.popover} ${popoverMixins.popoverAnimation} --popover-origin: center top; @@ -253,14 +260,29 @@ Styled.Viewport = styled(Viewport)` } `; -Styled.Content = styled(Content)` +const $List = styled(List)` + align-self: center; + + &[data-orientation='horizontal'] { + ${layoutMixins.row} + gap: 0.5rem; + align-items: start; + } + + &[data-orientation='vertical'] { + ${layoutMixins.flexColumn} + gap: 0.25rem; + } +`; + +const $Content = styled(Content)` ${popoverMixins.popoverAnimation} transform-origin: center top; &[data-placement='inline'] { max-height: 100vh; - ${Styled.List}[data-orientation="horizontal"] & { + ${$List}[data-orientation="horizontal"] & { /* position: absolute; top: calc(100% + var(--submenu-side-offset)); left: 50%; @@ -277,7 +299,7 @@ Styled.Content = styled(Content)` z-index: 2; } - ${Styled.List}[data-orientation="menu"] & { + ${$List}[data-orientation="menu"] & { position: absolute; left: 100%; top: 0; @@ -325,26 +347,26 @@ Styled.Content = styled(Content)` } `; -Styled.Sub = styled(Sub)` +const $Sub = styled(Sub)` &[data-placement='inline'] { ${popoverMixins.popover} --popover-width: max-content; overflow: visible; - ${Styled.List}[data-orientation="vertical"] > & { + ${$List}[data-orientation="vertical"] > & { margin-top: var(--gap, 0.25rem); padding: 0.5rem; } - ${Styled.List}[data-orientation="menu"] & { + ${$List}[data-orientation="menu"] & { border-top-left-radius: 0 !important; } } `; -Styled.Group = styled.section` - ${Styled.Root}[data-orientation="vertical"] & { +const $Group = styled.section` + ${$Root}[data-orientation="vertical"] & { ${layoutMixins.stickyArea0} --stickyArea0-topHeight: 3rem; } @@ -354,7 +376,7 @@ Styled.Group = styled.section` color: var(--color-text-0); `; -Styled.GroupHeader = styled.header` +const $GroupHeader = styled.header` ${layoutMixins.stickyHeader} ${layoutMixins.row} @@ -362,31 +384,16 @@ Styled.GroupHeader = styled.header` font: var(--font-small-medium); `; -Styled.List = styled(List)` - align-self: center; - - &[data-orientation='horizontal'] { - ${layoutMixins.row} - gap: 0.5rem; - align-items: start; - } - - &[data-orientation='vertical'] { - ${layoutMixins.flexColumn} - gap: 0.25rem; - } -`; - -Styled.ListItem = styled(Item)` +const $ListItem = styled(Item)` display: grid; position: relative; - ${Styled.List}[data-orientation="horizontal"] > & { + ${$List}[data-orientation="horizontal"] > & { gap: var(--submenu-side-offset); } `; -Styled.SubMenuTrigger = styled(Trigger)` +const $SubMenuTrigger = styled(Trigger)` border-radius: var(--navigationMenu-item-radius); outline-offset: -2px; @@ -397,7 +404,10 @@ Styled.SubMenuTrigger = styled(Trigger)` } `; -Styled.NavItem = styled(NavItem)<{ orientation: 'horizontal' | 'vertical' }>` +type navItemStyleProps = { orientation: 'horizontal' | 'vertical' }; +const NavItemTypeTemp = getSimpleStyledOutputType(NavItem, {} as navItemStyleProps); + +const $NavItem = styled(NavItem)<navItemStyleProps>` ${({ subitems }) => subitems?.length ? css` @@ -446,11 +456,11 @@ Styled.NavItem = styled(NavItem)<{ orientation: 'horizontal' | 'vertical' }>` /* Border-radius! */ - ${Styled.List}[data-orientation="menu"] & { + ${$List}[data-orientation="menu"] & { --item-radius: 0; } - ${Styled.List}[data-orientation="menu"] > ${Styled.ListItem}:first-child > & { + ${$List}[data-orientation="menu"] > ${$ListItem}:first-child > & { border-top-left-radius: var(--popover-radius); &:not([data-state='open']) { @@ -458,7 +468,7 @@ Styled.NavItem = styled(NavItem)<{ orientation: 'horizontal' | 'vertical' }>` } } - ${Styled.List}[data-orientation="menu"] > ${Styled.ListItem}:last-child > & { + ${$List}[data-orientation="menu"] > ${$ListItem}:last-child > & { border-bottom-left-radius: var(--popover-radius); &:not([data-state='open']) { @@ -466,16 +476,16 @@ Styled.NavItem = styled(NavItem)<{ orientation: 'horizontal' | 'vertical' }>` } } - ${Styled.List}[data-orientation="menu"] ${Styled.List}[data-orientation="menu"] > ${Styled.ListItem}:first-child > & { + ${$List}[data-orientation="menu"] ${$List}[data-orientation="menu"] > ${$ListItem}:first-child > & { border-top-left-radius: 0; } -`; +` as typeof NavItemTypeTemp; -Styled.Icon = styled(Icon)` +const $Icon = styled(Icon)` font-size: 0.375em; transition: rotate 0.3s var(--ease-out-expo); - ${Styled.List}[data-orientation="menu"] & { + ${$List}[data-orientation="menu"] & { rotate: -0.25turn; } `; diff --git a/src/components/Notification.tsx b/src/components/Notification.tsx index bca9dd697..7daac8319 100644 --- a/src/components/Notification.tsx +++ b/src/components/Notification.tsx @@ -1,8 +1,8 @@ import React, { type MouseEvent } from 'react'; + import styled, { css } from 'styled-components'; import { ButtonShape, ButtonSize } from '@/constants/buttons'; - import { NotificationStatus, type Notification as NotificationDataType, @@ -10,11 +10,11 @@ import { import { useNotifications } from '@/hooks/useNotifications'; -import { popoverMixins } from '@/styles/popoverMixins'; import { layoutMixins } from '@/styles/layoutMixins'; +import { popoverMixins } from '@/styles/popoverMixins'; -import { IconButton } from '@/components/IconButton'; import { IconName } from '@/components/Icon'; +import { IconButton } from '@/components/IconButton'; import { Output, OutputType } from '@/components/Output'; type ElementProps = { @@ -52,6 +52,7 @@ export const Notification = ({ withClose = !isToast, }: NotificationProps) => { const { markCleared, markSeen } = useNotifications(); + const slotContentOrDescription = slotCustomContent ?? slotDescription; return ( <$Container className={className} isToast={isToast} onClick={onClick}> @@ -73,7 +74,7 @@ export const Notification = ({ iconName={IconName.Close} shape={ButtonShape.Square} size={ButtonSize.XSmall} - onClick={(e: MouseEvent) => { + onClick={(e: React.MouseEvent) => { e.stopPropagation(); if (notification.status < NotificationStatus.Seen) { @@ -87,7 +88,7 @@ export const Notification = ({ </$ActionItems> )} </$Header> - <$Description>{slotCustomContent ?? slotDescription}</$Description> + {slotContentOrDescription && <$Description>{slotContentOrDescription}</$Description>} {slotAction && <$Action>{slotAction}</$Action>} </$Container> ); @@ -121,14 +122,13 @@ const $Container = styled.div<{ isToast?: boolean }>` const $Header = styled.header` ${layoutMixins.row} position: relative; + gap: 0.5rem; `; const $Icon = styled.div` ${layoutMixins.row} float: left; - margin-right: 0.5rem; - line-height: 1; > svg, @@ -152,6 +152,7 @@ const $Description = styled.div` margin-top: 0.5rem; color: var(--color-text-0); font: var(--font-small-book); + white-space: break-spaces; `; const $Action = styled.div` diff --git a/src/components/NumberValue.tsx b/src/components/NumberValue.tsx new file mode 100644 index 000000000..498f96c6c --- /dev/null +++ b/src/components/NumberValue.tsx @@ -0,0 +1,33 @@ +import styled from 'styled-components'; + +import { formatZeroNumbers } from '@/lib/formatZeroNumbers'; + +export type NumberValueProps = { + value: string; + withSubscript?: boolean; + className?: string; +}; + +export const NumberValue = ({ className, value, withSubscript }: NumberValueProps) => { + const { significantDigits, decimalDigits, zeros, punctuationSymbol } = formatZeroNumbers(value); + + if (withSubscript) { + return ( + <span className={className}> + {significantDigits} + {punctuationSymbol} + {Boolean(zeros) && ( + <> + 0<$Sub title={value}>{zeros}</$Sub> + </> + )} + {decimalDigits} + </span> + ); + } + + return value; +}; +const $Sub = styled.sub` + font-size: 0.85em; +`; diff --git a/src/components/OrderSideTag.stories.tsx b/src/components/OrderSideTag.stories.tsx index 088d456fc..f9f2715b3 100644 --- a/src/components/OrderSideTag.stories.tsx +++ b/src/components/OrderSideTag.stories.tsx @@ -1,5 +1,5 @@ -import type { Story } from '@ladle/react'; import { OrderSide } from '@dydxprotocol/v4-client-js'; +import type { Story } from '@ladle/react'; import { OrderSideTag } from '@/components/OrderSideTag'; diff --git a/src/components/OrderSideTag.tsx b/src/components/OrderSideTag.tsx index 430426b33..c1878e6c2 100644 --- a/src/components/OrderSideTag.tsx +++ b/src/components/OrderSideTag.tsx @@ -1,7 +1,8 @@ import { OrderSide } from '@dydxprotocol/v4-client-js'; import { STRING_KEYS } from '@/constants/localization'; -import { useStringGetter } from '@/hooks'; + +import { useStringGetter } from '@/hooks/useStringGetter'; import { Tag, TagSign, TagSize, TagType } from './Tag'; diff --git a/src/components/Output.tsx b/src/components/Output.tsx index ec55d8f71..0dc17ab31 100644 --- a/src/components/Output.tsx +++ b/src/components/Output.tsx @@ -1,8 +1,9 @@ import { useContext } from 'react'; -import styled, { type AnyStyledComponent, css } from 'styled-components'; + import BigNumber from 'bignumber.js'; -import { useSelector } from 'react-redux'; import { DateTime } from 'luxon'; +import { useSelector } from 'react-redux'; +import styled, { css } from 'styled-components'; import { LEVERAGE_DECIMALS, @@ -12,22 +13,25 @@ import { TOKEN_DECIMALS, USD_DECIMALS, } from '@/constants/numbers'; - import { UNICODE } from '@/constants/unicode'; -import { useLocaleSeparators, useStringGetter } from '@/hooks'; + +import { LoadingContext } from '@/contexts/LoadingContext'; +import { useLocaleSeparators } from '@/hooks/useLocaleSeparators'; +import { useStringGetter } from '@/hooks/useStringGetter'; + import { layoutMixins } from '@/styles/layoutMixins'; -import { LoadingOutput } from './Loading/LoadingOutput'; import { RelativeTime } from '@/components/RelativeTime'; import { Tag } from '@/components/Tag'; -import { LoadingContext } from '@/contexts/LoadingContext'; - import { getSelectedLocale } from '@/state/localizationSelectors'; -import { type BigNumberish, MustBigNumber, isNumber } from '@/lib/numbers'; +import { MustBigNumber, isNumber, type BigNumberish } from '@/lib/numbers'; import { getStringsForDateTimeDiff, getTimestamp } from '@/lib/timeUtils'; +import { LoadingOutput } from './Loading/LoadingOutput'; +import { NumberValue } from './NumberValue'; + export enum OutputType { Text = 'Text', CompactNumber = 'CompactNumber', @@ -51,15 +55,25 @@ export enum ShowSign { None = 'None', } -type ElementProps = { +type FormatParams = { type: OutputType; value?: BigNumberish | null; - isLoading?: boolean; + locale?: string; +}; + +type FormatNumberParams = { fractionDigits?: number | null; showSign?: ShowSign; + slotLeft?: React.ReactNode; slotRight?: React.ReactNode; useGrouping?: boolean; roundingMode?: BigNumber.RoundingMode; + localeDecimalSeparator?: string; + localeGroupSeparator?: string; +} & FormatParams; + +type FormatTimestampParams = { + withSubscript?: boolean; relativeTimeFormatOptions?: { format: 'long' | 'short' | 'narrow' | 'singleCharacter'; resolution?: number; @@ -68,9 +82,13 @@ type ElementProps = { timeOptions?: { useUTC?: boolean; }; +} & FormatParams; + +type ElementProps = { + isLoading?: boolean; + slotRight?: React.ReactNode; tag?: React.ReactNode; withParentheses?: boolean; - locale?: string; }; type StyleProps = { @@ -78,27 +96,226 @@ type StyleProps = { withBaseFont?: boolean; }; -export type OutputProps = ElementProps & StyleProps; - -export const Output = ({ - type, - value, - isLoading, - fractionDigits, - showSign = ShowSign.Negative, - slotRight, - useGrouping = true, - roundingMode = BigNumber.ROUND_HALF_UP, - relativeTimeFormatOptions = { - format: 'singleCharacter', - }, - timeOptions, - tag, - withParentheses, - locale = navigator.language || 'en-US', - className, - withBaseFont, -}: OutputProps) => { +export type OutputProps = ElementProps & + StyleProps & + Exclude<FormatNumberParams, 'localeDecimalSeparator' | 'localeGroupSeparator'> & + FormatTimestampParams; + +export const formatTimestamp = ( + params: FormatTimestampParams +): { + displayString?: string; + timestamp?: number; + unitStringKey?: string; +} => { + const { + value, + type, + relativeTimeFormatOptions = { + format: 'singleCharacter', + }, + timeOptions, + locale, + } = params; + + switch (type) { + case OutputType.RelativeTime: { + const timestamp = getTimestamp(value); + + if (!timestamp) { + return { + timestamp: undefined, + }; + } + + if (relativeTimeFormatOptions.format === 'singleCharacter') { + const { timeString, unitStringKey } = getStringsForDateTimeDiff( + DateTime.fromMillis(timestamp) + ); + + return { + timestamp, + displayString: timeString, + unitStringKey, + }; + } + + return { + timestamp, + }; + } + case OutputType.Date: + case OutputType.Time: + case OutputType.DateTime: { + if ((typeof value !== 'string' && typeof value !== 'number') || !value) break; + const date = new Date(value); + const dateString = { + [OutputType.Date]: date.toLocaleString(locale, { + dateStyle: 'medium', + timeZone: timeOptions?.useUTC ? 'UTC' : undefined, + }), + [OutputType.DateTime]: date.toLocaleString(locale, { + dateStyle: 'short', + timeStyle: 'short', + timeZone: timeOptions?.useUTC ? 'UTC' : undefined, + }), + [OutputType.Time]: date.toLocaleString(locale, { + hour12: false, + hour: '2-digit', + minute: '2-digit', + second: '2-digit', + timeZone: timeOptions?.useUTC ? 'UTC' : undefined, + }), + }[type]; + + return { + displayString: dateString, + }; + } + } + + return { + displayString: undefined, + timestamp: undefined, + unitStringKey: undefined, + }; +}; + +export const formatNumber = (params: FormatNumberParams) => { + const { + value, + showSign = ShowSign.Negative, + useGrouping = true, + type, + locale = navigator.language || 'en-US', + fractionDigits, + roundingMode = BigNumber.ROUND_HALF_UP, + localeDecimalSeparator, + localeGroupSeparator, + } = params; + + const format = { + decimalSeparator: localeDecimalSeparator, + ...(useGrouping + ? { + groupSeparator: localeGroupSeparator, + groupSize: 3, + secondaryGroupSize: 0, + fractionGroupSeparator: ' ', + fractionGroupSize: 0, + } + : {}), + }; + + const isNegative = MustBigNumber(value).isNegative(); + const isPositive = MustBigNumber(value).isPositive() && !MustBigNumber(value).isZero(); + + const sign = { + [ShowSign.Both]: isNegative ? UNICODE.MINUS : isPositive ? UNICODE.PLUS : undefined, + [ShowSign.Negative]: isNegative ? UNICODE.MINUS : undefined, + [ShowSign.None]: undefined, + }[showSign]; + + const valueBN = MustBigNumber(value).abs(); + let formattedString: string | undefined = undefined; + + switch (type) { + case OutputType.CompactNumber: + if (!isNumber(value)) { + throw new Error('value must be a number for compact number output'); + } + + formattedString = Intl.NumberFormat(locale, { + style: 'decimal', + notation: 'compact', + maximumSignificantDigits: 3, + }) + .format(Math.abs(value)) + .toLowerCase(); + break; + case OutputType.Number: + formattedString = valueBN.toFormat(fractionDigits ?? 0, roundingMode, { + ...format, + }); + break; + case OutputType.Fiat: + formattedString = valueBN.toFormat(fractionDigits ?? USD_DECIMALS, roundingMode, { + ...format, + prefix: '$', + }); + break; + case OutputType.SmallFiat: + formattedString = valueBN.toFormat(fractionDigits ?? SMALL_USD_DECIMALS, roundingMode, { + ...format, + prefix: '$', + }); + break; + case OutputType.CompactFiat: + if (!isNumber(value)) { + throw new Error('value must be a number for compact fiat output'); + } + formattedString = Intl.NumberFormat(locale, { + style: 'currency', + currency: 'USD', + notation: 'compact', + maximumSignificantDigits: 3, + }) + .format(Math.abs(value)) + .toLowerCase(); + break; + case OutputType.Asset: + formattedString = valueBN.toFormat(fractionDigits ?? TOKEN_DECIMALS, roundingMode, { + ...format, + }); + break; + case OutputType.Percent: + formattedString = valueBN + .times(100) + .toFormat(fractionDigits ?? PERCENT_DECIMALS, roundingMode, { + ...format, + suffix: '%', + }); + break; + case OutputType.SmallPercent: + formattedString = valueBN + .times(100) + .toFormat(fractionDigits ?? SMALL_PERCENT_DECIMALS, roundingMode, { + ...format, + suffix: '%', + }); + break; + case OutputType.Multiple: + formattedString = valueBN.toFormat(fractionDigits ?? LEVERAGE_DECIMALS, roundingMode, { + ...format, + suffix: '×', + }); + break; + } + + return { + sign, + format, + formattedString, + }; +}; + +export const Output = (props: OutputProps) => { + const { + type, + value, + isLoading, + slotLeft, + slotRight, + withSubscript, + relativeTimeFormatOptions = { + format: 'singleCharacter', + }, + tag, + withParentheses, + locale = navigator.language || 'en-US', + className, + withBaseFont, + } = props; const selectedLocale = useSelector(getSelectedLocale); const stringGetter = useStringGetter(); const isDetailsLoading = useContext(LoadingContext); @@ -112,29 +329,26 @@ export const Output = ({ switch (type) { case OutputType.Text: { return ( - <Styled.Text + <$Text key={value?.toString()} title={`${value ?? ''}${tag ? ` ${tag}` : ''}`} className={className} > + {slotLeft} {value?.toString() ?? null} {tag && <Tag>{tag}</Tag>} {slotRight} - </Styled.Text> + </$Text> ); } case OutputType.RelativeTime: { - const timestamp = getTimestamp(value); + const { timestamp, displayString, unitStringKey } = formatTimestamp(props); if (!timestamp) return null; - if (relativeTimeFormatOptions.format === 'singleCharacter') { - const { timeString, unitStringKey } = getStringsForDateTimeDiff( - DateTime.fromMillis(timestamp) - ); - + if (displayString && unitStringKey) { return ( - <Styled.Text + <$Text key={value?.toString()} title={`${value ?? ''}${tag ? ` ${tag}` : ''}`} className={className} @@ -143,17 +357,17 @@ export const Output = ({ dateTime={new Date(timestamp).toISOString()} title={new Date(timestamp).toLocaleString(locale)} > - {timeString} + {displayString} {stringGetter({ key: unitStringKey })} </time> {tag && <Tag>{tag}</Tag>} - </Styled.Text> + </$Text> ); } return ( - <Styled.Text + <$Text key={value?.toString()} title={`${value ?? ''}${tag ? ` ${tag}` : ''}`} className={className} @@ -161,41 +375,20 @@ export const Output = ({ <RelativeTime timestamp={timestamp} {...relativeTimeFormatOptions} /> {tag && <Tag>{tag}</Tag>} - </Styled.Text> + </$Text> ); } case OutputType.Date: case OutputType.Time: case OutputType.DateTime: { if ((typeof value !== 'string' && typeof value !== 'number') || !value) return null; - const date = new Date(value); - const dateString = { - [OutputType.Date]: date.toLocaleString(selectedLocale, { - dateStyle: 'medium', - timeZone: timeOptions?.useUTC ? 'UTC' : undefined, - }), - [OutputType.DateTime]: date.toLocaleString(selectedLocale, { - dateStyle: 'short', - timeStyle: 'short', - timeZone: timeOptions?.useUTC ? 'UTC' : undefined, - }), - [OutputType.Time]: date.toLocaleString(selectedLocale, { - hour12: false, - hour: '2-digit', - minute: '2-digit', - second: '2-digit', - timeZone: timeOptions?.useUTC ? 'UTC' : undefined, - }), - }[type]; + + const { displayString } = formatTimestamp(props); return ( - <Styled.Text - key={value} - title={`${value ?? ''}${tag ? ` ${tag}` : ''}`} - className={className} - > - {dateString} - </Styled.Text> + <$Text key={value} title={`${value ?? ''}${tag ? ` ${tag}` : ''}`} className={className}> + {displayString} + </$Text> ); } case OutputType.CompactNumber: @@ -208,31 +401,14 @@ export const Output = ({ case OutputType.SmallPercent: case OutputType.Multiple: { const hasValue = value !== null && value !== undefined; - const valueBN = MustBigNumber(value).abs(); - const isNegative = MustBigNumber(value).isNegative(); - const isPositive = MustBigNumber(value).isPositive() && !MustBigNumber(value).isZero(); - - const sign: string | undefined = { - [ShowSign.Both]: isNegative ? UNICODE.MINUS : isPositive ? UNICODE.PLUS : undefined, - [ShowSign.Negative]: isNegative ? UNICODE.MINUS : undefined, - [ShowSign.None]: undefined, - }[showSign]; - - const format = { - decimalSeparator: LOCALE_DECIMAL_SEPARATOR, - ...(useGrouping - ? { - groupSeparator: LOCALE_GROUP_SEPARATOR, - groupSize: 3, - secondaryGroupSize: 0, - fractionGroupSeparator: ' ', - fractionGroupSize: 0, - } - : {}), - }; + const { sign, formattedString } = formatNumber({ + ...props, + localeDecimalSeparator: LOCALE_DECIMAL_SEPARATOR, + localeGroupSeparator: LOCALE_GROUP_SEPARATOR, + }); return ( - <Styled.Number + <$Number key={value?.toString()} title={`${value ?? ''}${ ( @@ -246,7 +422,8 @@ export const Output = ({ withParentheses={withParentheses} withBaseFont={withBaseFont} > - {sign && <Styled.Sign>{sign}</Styled.Sign>} + {slotLeft} + {sign && <$Sign>{sign}</$Sign>} {hasValue && { [OutputType.CompactNumber]: () => { @@ -254,66 +431,40 @@ export const Output = ({ throw new Error('value must be a number for compact number output'); } - return Intl.NumberFormat(locale, { - style: 'decimal', - notation: 'compact', - maximumSignificantDigits: 3, - }) - .format(Math.abs(value)) - .toLowerCase(); + return <NumberValue value={formattedString} withSubscript={withSubscript} />; }, - [OutputType.Number]: () => - valueBN.toFormat(fractionDigits ?? 0, roundingMode, { - ...format, - }), - [OutputType.Fiat]: () => - valueBN.toFormat(fractionDigits ?? USD_DECIMALS, roundingMode, { - ...format, - prefix: '$', - }), - [OutputType.SmallFiat]: () => - valueBN.toFormat(fractionDigits ?? SMALL_USD_DECIMALS, roundingMode, { - ...format, - prefix: '$', - }), + [OutputType.Number]: () => ( + <NumberValue value={formattedString} withSubscript={withSubscript} /> + ), + [OutputType.Fiat]: () => ( + <NumberValue value={formattedString} withSubscript={withSubscript} /> + ), + [OutputType.SmallFiat]: () => ( + <NumberValue value={formattedString} withSubscript={withSubscript} /> + ), [OutputType.CompactFiat]: () => { if (!isNumber(value)) { throw new Error('value must be a number for compact fiat output'); } - return Intl.NumberFormat(locale, { - style: 'currency', - currency: 'USD', - notation: 'compact', - maximumSignificantDigits: 3, - }) - .format(Math.abs(value)) - .toLowerCase(); + + return <NumberValue value={formattedString} withSubscript={withSubscript} />; }, - [OutputType.Asset]: () => - valueBN.toFormat(fractionDigits ?? TOKEN_DECIMALS, roundingMode, { - ...format, - }), - [OutputType.Percent]: () => - valueBN.times(100).toFormat(fractionDigits ?? PERCENT_DECIMALS, roundingMode, { - ...format, - suffix: '%', - }), - [OutputType.SmallPercent]: () => - valueBN - .times(100) - .toFormat(fractionDigits ?? SMALL_PERCENT_DECIMALS, roundingMode, { - ...format, - suffix: '%', - }), - [OutputType.Multiple]: () => - valueBN.toFormat(fractionDigits ?? LEVERAGE_DECIMALS, roundingMode, { - ...format, - suffix: '×', - }), + [OutputType.Asset]: () => ( + <NumberValue value={formattedString} withSubscript={withSubscript} /> + ), + [OutputType.Percent]: () => ( + <NumberValue value={formattedString} withSubscript={withSubscript} /> + ), + [OutputType.SmallPercent]: () => ( + <NumberValue value={formattedString} withSubscript={withSubscript} /> + ), + [OutputType.Multiple]: () => ( + <NumberValue value={formattedString} withSubscript={withSubscript} /> + ), }[type]()} {slotRight} - {tag && <Styled.Tag>{tag}</Styled.Tag>} - </Styled.Number> + {tag && <$Tag>{tag}</$Tag>} + </$Number> ); } default: @@ -321,9 +472,7 @@ export const Output = ({ } }; -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.Output = styled.output<{ withParentheses?: boolean }>` +const _OUTPUT_STYLES = styled.output<{ withParentheses?: boolean }>` --output-beforeString: ''; --output-afterString: ''; --output-sign-color: currentColor; @@ -356,17 +505,19 @@ Styled.Output = styled.output<{ withParentheses?: boolean }>` `} `; -Styled.Tag = styled(Tag)` +const $Output = _OUTPUT_STYLES; + +const $Tag = styled(Tag)` margin-left: 0.5ch; `; -Styled.Sign = styled.span` +const $Sign = styled.span` color: var(--output-sign-color); `; -Styled.Text = styled(Styled.Output)``; +const $Text = styled(_OUTPUT_STYLES)``; -Styled.Number = styled(Styled.Output)<{ withBaseFont?: boolean }>` +const $Number = styled(_OUTPUT_STYLES)<{ withBaseFont?: boolean }>` ${({ withBaseFont }) => !withBaseFont && css` diff --git a/src/components/PageMenu.stories.tsx b/src/components/PageMenu.stories.tsx index 00222d22e..6358d06cb 100644 --- a/src/components/PageMenu.stories.tsx +++ b/src/components/PageMenu.stories.tsx @@ -1,11 +1,11 @@ -import { MemoryRouter } from 'react-router-dom'; import type { Story } from '@ladle/react'; +import { MemoryRouter } from 'react-router-dom'; import type { MenuGroup } from '@/constants/menus'; import { PageMenu } from '@/components/PageMenu'; -import { PageMenuItemType } from './PageMenu/PageMenuItem'; +import { PageMenuItemType } from './PageMenu/PageMenuItem'; import { StoryWrapper } from '.ladle/components'; export const PageMenuStory: Story<MenuGroup<string, string, PageMenuItemType>> = (args) => { diff --git a/src/components/PageMenu.tsx b/src/components/PageMenu.tsx index d505bea0d..af0b0aa8c 100644 --- a/src/components/PageMenu.tsx +++ b/src/components/PageMenu.tsx @@ -1,4 +1,4 @@ -import styled, { AnyStyledComponent } from 'styled-components'; +import styled from 'styled-components'; import type { MenuGroup } from '@/constants/menus'; @@ -9,16 +9,13 @@ import { PageMenuItem, type PageMenuItemType } from './PageMenu/PageMenuItem'; export const PageMenu = <MenuItemValue extends string, MenuGroupValue extends string>({ items, }: MenuGroup<MenuItemValue, MenuGroupValue, PageMenuItemType>) => ( - <Styled.PageMenu> + <$PageMenu> {items.map((item) => ( <PageMenuItem key={item.value} {...item} /> ))} - </Styled.PageMenu> + </$PageMenu> ); - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.PageMenu = styled.menu` +const $PageMenu = styled.menu` ${layoutMixins.flexColumn} ${layoutMixins.withInnerHorizontalBorders} diff --git a/src/components/PageMenu/PageMenuItem.tsx b/src/components/PageMenu/PageMenuItem.tsx index 5cafbc6f2..7b58dce2e 100644 --- a/src/components/PageMenu/PageMenuItem.tsx +++ b/src/components/PageMenu/PageMenuItem.tsx @@ -20,7 +20,7 @@ export const PageMenuItem = <MenuItemValue extends string>({ // TODO: implement toggle item component when needed for notifications settings return null; case PageMenuItemType.RadioGroup: - return <PageMenuRadioGroupItem {...(props)} />; + return <PageMenuRadioGroupItem {...props} />; default: return null; } diff --git a/src/components/PageMenu/PageMenuNavigationItem.tsx b/src/components/PageMenu/PageMenuNavigationItem.tsx index 0ea452502..63ec896e1 100644 --- a/src/components/PageMenu/PageMenuNavigationItem.tsx +++ b/src/components/PageMenu/PageMenuNavigationItem.tsx @@ -1,13 +1,13 @@ -import styled, { AnyStyledComponent } from 'styled-components'; import { Link } from 'react-router-dom'; +import styled from 'styled-components'; import type { MenuItem } from '@/constants/menus'; -import { Icon, IconName } from '@/components/Icon'; - import { layoutMixins } from '@/styles/layoutMixins'; import { popoverMixins } from '@/styles/popoverMixins'; +import { Icon, IconName } from '@/components/Icon'; + export const PageMenuNavigationItem = < MenuItemValue extends string, PageMenuItemType extends string @@ -17,19 +17,16 @@ export const PageMenuNavigationItem = < labelRight, }: MenuItem<MenuItemValue, PageMenuItemType>) => ( <Link to={href || ''}> - <Styled.MenuItem> + <$MenuItem> <div>{label}</div> - <Styled.RightRow> + <$RightRow> {labelRight && <span>{labelRight}</span>} - <Styled.Icon iconName={IconName.ChevronRight} /> - </Styled.RightRow> - </Styled.MenuItem> + <$Icon iconName={IconName.ChevronRight} /> + </$RightRow> + </$MenuItem> </Link> ); - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.MenuItem = styled.ul` +const $MenuItem = styled.ul` ${popoverMixins.item} --item-padding: 1.25rem 1.625rem; @@ -38,7 +35,7 @@ Styled.MenuItem = styled.ul` ${layoutMixins.spacedRow} `; -Styled.RightRow = styled.div` +const $RightRow = styled.div` ${layoutMixins.row} gap: 1rem; @@ -46,6 +43,6 @@ Styled.RightRow = styled.div` color: var(--color-text-0); `; -Styled.Icon = styled(Icon)` +const $Icon = styled(Icon)` color: var(--color-text-0); `; diff --git a/src/components/PageMenu/PageMenuRadioGroup.tsx b/src/components/PageMenu/PageMenuRadioGroup.tsx index 5df5dea23..9c1575178 100644 --- a/src/components/PageMenu/PageMenuRadioGroup.tsx +++ b/src/components/PageMenu/PageMenuRadioGroup.tsx @@ -1,13 +1,13 @@ -import styled, { AnyStyledComponent } from 'styled-components'; -import { Root, Item } from '@radix-ui/react-radio-group'; +import { Item, Root } from '@radix-ui/react-radio-group'; +import styled from 'styled-components'; import type { MenuItem } from '@/constants/menus'; -import { Icon, IconName } from '@/components/Icon'; - import { layoutMixins } from '@/styles/layoutMixins'; import { popoverMixins } from '@/styles/popoverMixins'; +import { Icon, IconName } from '@/components/Icon'; + export const PageMenuRadioGroupItem = < MenuItemValue extends string, PageMenuItemType extends string @@ -17,33 +17,26 @@ export const PageMenuRadioGroupItem = < subitems, }: MenuItem<MenuItemValue, PageMenuItemType>) => subitems?.length ? ( - <Styled.Root value={curentValue} onValueChange={onSelect}> + <$Root value={curentValue} onValueChange={onSelect}> {subitems.map(({ disabled, value, label, slotBefore }) => ( - <Styled.MenuItem key={value} value={value} disabled={disabled}> + <$MenuItem key={value} value={value} disabled={disabled}> <div> - <>{slotBefore}</> + {slotBefore} <span>{label}</span> </div> - {value === curentValue ? ( - <Styled.CheckIcon iconName={IconName.Check} /> - ) : ( - <Styled.EmptyIcon /> - )} - </Styled.MenuItem> + {value === curentValue ? <$CheckIcon iconName={IconName.Check} /> : <$EmptyIcon />} + </$MenuItem> ))} - </Styled.Root> + </$Root> ) : null; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.Root = styled(Root)` +const $Root = styled(Root)` ${layoutMixins.flexColumn} ${layoutMixins.withInnerHorizontalBorders} gap: var(--border-width); `; -Styled.MenuItem = styled(Item)<{ $selected: boolean }>` +const $MenuItem = styled(Item)` ${layoutMixins.spacedRow} ${popoverMixins.item} @@ -51,7 +44,7 @@ Styled.MenuItem = styled(Item)<{ $selected: boolean }>` --item-checked-backgroundColor: var(--color-layer-0); `; -Styled.CheckIcon = styled(Icon)` +const $CheckIcon = styled(Icon)` padding: 4px; border-radius: 50%; @@ -60,7 +53,7 @@ Styled.CheckIcon = styled(Icon)` background-color: var(--color-accent); `; -Styled.EmptyIcon = styled.div` +const $EmptyIcon = styled.div` width: 0.9em; height: 0.9em; @@ -69,4 +62,3 @@ Styled.EmptyIcon = styled.div` background-color: var(--color-layer-0); `; - diff --git a/src/components/Panel.tsx b/src/components/Panel.tsx index 1ea335f16..9d9a0ca54 100644 --- a/src/components/Panel.tsx +++ b/src/components/Panel.tsx @@ -1,10 +1,10 @@ -import styled, { AnyStyledComponent, css } from 'styled-components'; import { Link } from 'react-router-dom'; +import styled, { css } from 'styled-components'; -import { Icon, IconName } from '@/components/Icon'; - -import { layoutMixins } from '@/styles/layoutMixins'; import { breakpoints } from '@/styles'; +import { layoutMixins } from '@/styles/layoutMixins'; + +import { Icon, IconName } from '@/components/Icon'; type ElementProps = { slotHeaderContent?: React.ReactNode; @@ -34,37 +34,31 @@ export const Panel = ({ hasSeparator, className, }: PanelProps) => ( - <Styled.Panel onClick={onClick} className={className}> - <Styled.Left> + <$Panel onClick={onClick} className={className}> + <$Left> {href ? ( <Link to={href}> - {slotHeader ? ( - slotHeader - ) : ( - <Styled.Header role="button" onClick={onHeaderClick} hasSeparator={hasSeparator}> + {slotHeader ?? ( + <$Header role="button" onClick={onHeaderClick} hasSeparator={hasSeparator}> {slotHeaderContent} - <Styled.Icon iconName={IconName.ChevronRight} /> - </Styled.Header> + <$Icon iconName={IconName.ChevronRight} /> + </$Header> )} </Link> - ) : slotHeader ? ( - slotHeader ) : ( - slotHeaderContent && ( - <Styled.Header role="button" onClick={onHeaderClick} hasSeparator={hasSeparator}> + slotHeader ?? + (slotHeaderContent && ( + <$Header role="button" onClick={onHeaderClick} hasSeparator={hasSeparator}> {slotHeaderContent} - </Styled.Header> - ) + </$Header> + )) )} - <Styled.Content>{children}</Styled.Content> - </Styled.Left> + <$Content>{children}</$Content> + </$Left> {slotRight} - </Styled.Panel> + </$Panel> ); - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.Panel = styled.section<{ onClick?: () => void }>` +const $Panel = styled.section<{ onClick?: () => void }>` --panel-paddingY: 1rem; --panel-paddingX: 1rem; --panel-content-paddingY: var(--panel-paddingY); @@ -95,12 +89,12 @@ Styled.Panel = styled.section<{ onClick?: () => void }>` `} `; -Styled.Left = styled.div` +const $Left = styled.div` ${layoutMixins.flexColumn} width: 100%; `; -Styled.Header = styled.header<{ hasSeparator?: boolean }>` +const $Header = styled.header<{ hasSeparator?: boolean }>` ${layoutMixins.spacedRow} padding: var(--panel-paddingY) var(--panel-paddingX); @@ -112,12 +106,12 @@ Styled.Header = styled.header<{ hasSeparator?: boolean }>` `} `; -Styled.Icon = styled(Icon)` +const $Icon = styled(Icon)` color: var(--color-text-0); font-size: 0.625rem; `; -Styled.Content = styled.div` +const $Content = styled.div` ${layoutMixins.scrollArea} ${layoutMixins.stickyArea0} --stickyArea0-background: transparent; diff --git a/src/components/Popover.tsx b/src/components/Popover.tsx index 3f07b7dda..51d6401b5 100644 --- a/src/components/Popover.tsx +++ b/src/components/Popover.tsx @@ -1,7 +1,8 @@ import { useMemo, useState } from 'react'; -import styled, { type AnyStyledComponent, css, keyframes } from 'styled-components'; -import { Root, Trigger, Content, Portal } from '@radix-ui/react-popover'; + +import { Content, Portal, Root, Trigger } from '@radix-ui/react-popover'; import { useRect } from '@radix-ui/react-use-rect'; +import styled, { css, keyframes } from 'styled-components'; import { popoverMixins } from '@/styles/popoverMixins'; @@ -45,38 +46,35 @@ export const Popover = ({ className, children, }: PopoverProps) => { - const [trigger, setTrigger] = useState(null); + const [trigger, setTrigger] = useState<HTMLButtonElement | null>(null); const rect = useRect(trigger); const width = useMemo(() => fullWidth && rect?.width, undefined); const content = ( - <Styled.Content + <$Content onOpenAutoFocus={(e: Event) => { e.preventDefault(); }} - style={{ width }} + style={{ width: width != null && !!width ? width : undefined }} $noBlur={noBlur} className={className} sideOffset={sideOffset} > {children} - </Styled.Content> + </$Content> ); return ( <Root modal={modal} open={open} onOpenChange={onOpenChange}> - <Styled.Trigger ref={setTrigger} $noBlur={noBlur} $triggerType={triggerType}> + <$Trigger ref={setTrigger} $noBlur={noBlur} $triggerType={triggerType}> {slotTrigger} - </Styled.Trigger> + </$Trigger> {slotAnchor} {withPortal ? <Portal>{content}</Portal> : content} </Root> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.Trigger = styled(Trigger)<{ $noBlur?: boolean; $triggerType: TriggerType }>` +const $Trigger = styled(Trigger)<{ $noBlur?: boolean; $triggerType: TriggerType }>` ${popoverMixins.backdropOverlay} ${popoverMixins.trigger} @@ -100,7 +98,7 @@ Styled.Trigger = styled(Trigger)<{ $noBlur?: boolean; $triggerType: TriggerType --trigger-padding: 0; `; -Styled.Content = styled(Content)<{ $noBlur?: boolean }>` +const $Content = styled(Content)<{ $noBlur?: boolean }>` ${({ $noBlur }) => !$noBlur && css` diff --git a/src/components/PositionSideTag.tsx b/src/components/PositionSideTag.tsx index 710672f70..5a2322196 100644 --- a/src/components/PositionSideTag.tsx +++ b/src/components/PositionSideTag.tsx @@ -1,5 +1,6 @@ import { POSITION_SIDE_STRINGS, PositionSide } from '@/constants/trade'; -import { useStringGetter } from '@/hooks'; + +import { useStringGetter } from '@/hooks/useStringGetter'; import { Tag, TagSign, TagSize, TagType } from '@/components/Tag'; @@ -21,7 +22,11 @@ export const PositionSideTag = ({ positionSide, size }: ElementProps & StyleProp const stringGetter = useStringGetter(); return ( - <Tag size={size} type={TagType.Side} sign={positionSideTagSign[positionSide || PositionSide.None]}> + <Tag + size={size} + type={TagType.Side} + sign={positionSideTagSign[positionSide || PositionSide.None]} + > {stringGetter({ key: POSITION_SIDE_STRINGS[positionSide || PositionSide.None] })} </Tag> ); diff --git a/src/components/PotentialPositionCard.tsx b/src/components/PotentialPositionCard.tsx new file mode 100644 index 000000000..c477f23cc --- /dev/null +++ b/src/components/PotentialPositionCard.tsx @@ -0,0 +1,81 @@ +import styled from 'styled-components'; + +import { STRING_KEYS } from '@/constants/localization'; + +import { useStringGetter } from '@/hooks/useStringGetter'; + +import { layoutMixins } from '@/styles/layoutMixins'; + +import { AssetIcon } from './AssetIcon'; +import { Icon, IconName } from './Icon'; +import { Link } from './Link'; +import { Output, OutputType } from './Output'; + +type PotentialPositionCardProps = { + onViewOrders: (marketId: string) => void; +}; + +export const PotentialPositionCard = ({ onViewOrders }: PotentialPositionCardProps) => { + const stringGetter = useStringGetter(); + + return ( + <$PotentialPositionCard> + <$MarketRow> + <AssetIcon symbol="ETH" /> Market Name + </$MarketRow> + <$MarginRow> + <$MarginLabel>{stringGetter({ key: STRING_KEYS.MARGIN })}</$MarginLabel>{' '} + <$Output type={OutputType.Fiat} value={1_000} /> + </$MarginRow> + <$ActionRow> + <$Link onClick={() => onViewOrders('UNI-USD')}> + {stringGetter({ key: STRING_KEYS.VIEW_ORDERS })} <Icon iconName={IconName.Arrow} /> + </$Link> + </$ActionRow> + </$PotentialPositionCard> + ); +}; + +const $PotentialPositionCard = styled.div` + ${layoutMixins.flexColumn} + width: 14rem; + min-width: 14rem; + height: 6.5rem; + background-color: var(--color-layer-3); + overflow: hidden; + padding: 0.75rem 0; + border-radius: 0.625rem; +`; +const $MarketRow = styled.div` + ${layoutMixins.row} + gap: 0.5rem; + padding: 0 0.625rem; + font: var(--font-small-book); + + img { + font-size: 1.25rem; // 20px x 20px + } +`; +const $MarginRow = styled.div` + ${layoutMixins.spacedRow} + padding: 0 0.625rem; + margin-top: 0.625rem; +`; +const $MarginLabel = styled.span` + color: var(--color-text-0); + font: var(--font-mini-book); +`; +const $Output = styled(Output)` + font: var(--font-small-book); +`; +const $ActionRow = styled.div` + ${layoutMixins.spacedRow} + border-top: var(--border); + margin-top: 0.5rem; + padding: 0 0.625rem; + padding-top: 0.5rem; +`; +const $Link = styled(Link)` + --link-color: var(--color-accent); + font: var(--font-small-book); +`; diff --git a/src/components/QrCode.tsx b/src/components/QrCode.tsx index fb7938353..c00225b26 100644 --- a/src/components/QrCode.tsx +++ b/src/components/QrCode.tsx @@ -1,10 +1,11 @@ import { useEffect, useRef } from 'react'; -import { useSelector } from 'react-redux'; -import styled, { AnyStyledComponent } from 'styled-components'; + import QRCodeStyling from 'qr-code-styling'; +import { useSelector } from 'react-redux'; +import styled from 'styled-components'; -import { getAppTheme } from '@/state/configsSelectors'; import { AppTheme } from '@/state/configs'; +import { getAppTheme } from '@/state/configsSelectors'; type ElementProps = { value: string; @@ -75,12 +76,9 @@ export const QrCode = ({ className, value, hasLogo, size = 300 }: ElementProps & } }, [appTheme, hasLogo]); - return <Styled.QrCode className={className} ref={ref} />; + return <$QrCode className={className} ref={ref} />; }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.QrCode = styled.div` +const $QrCode = styled.div` width: 100%; cursor: none; border-radius: 0.75em; diff --git a/src/components/RadioButtonCards.stories.tsx b/src/components/RadioButtonCards.stories.tsx new file mode 100644 index 000000000..7ba1a3f53 --- /dev/null +++ b/src/components/RadioButtonCards.stories.tsx @@ -0,0 +1,79 @@ +import { useState } from 'react'; + +import type { Story } from '@ladle/react'; +import styled from 'styled-components'; + +import { RadioButtonCards } from '@/components/RadioButtonCards'; + +import { StoryWrapper } from '.ladle/components'; + +const exampleItems = [ + { + value: '1', + label: 'Item 1', + body: ( + <div> + <div>Card with body element</div> + </div> + ), + }, + { + value: '2', + label: 'Item 2', + }, + { + value: '3', + label: 'Item 3', + }, + { + value: '4', + label: 'Item 4', + }, +]; + +export const RadioButtonCardsStory: Story<{ + bgColor?: string; + withSlotTop?: boolean; + withSlotBottom?: boolean; +}> = ({ bgColor, withSlotTop, withSlotBottom }) => { + const [item, setItem] = useState(exampleItems[0].value); + return ( + <StoryWrapper> + <StyledRadioButtonCards + bgColor={bgColor} + value={item} + onValueChange={(value) => setItem(value)} + radioItems={exampleItems} + slotTop={withSlotTop && <h3>Radio Button Cards Header</h3>} + slotBottom={withSlotBottom && <h3>Radio Button Cards Footer</h3>} + /> + </StoryWrapper> + ); +}; + +const StyledRadioButtonCards = styled(RadioButtonCards)<{ bgColor?: string }>` + ${({ bgColor }) => bgColor && `background-color: var(${bgColor});`} +`; + +RadioButtonCardsStory.args = { + withSlotTop: true, + withSlotBottom: true, +}; + +RadioButtonCardsStory.argTypes = { + bgColor: { + options: [ + undefined, + '--color-layer-0', + '--color-layer-1', + '--color-layer-2', + '--color-layer-3', + '--color-layer-4', + '--color-layer-5', + '--color-layer-6', + '--color-layer-7', + ], + control: { type: 'select' }, + defaultValue: undefined, + }, +}; diff --git a/src/components/RadioButtonCards.tsx b/src/components/RadioButtonCards.tsx new file mode 100644 index 000000000..3c3ef08db --- /dev/null +++ b/src/components/RadioButtonCards.tsx @@ -0,0 +1,110 @@ +import { Item, Root } from '@radix-ui/react-radio-group'; +import styled from 'styled-components'; + +import { MenuItem } from '@/constants/menus'; + +import { Icon, IconName } from './Icon'; + +type RadioItem<MenuItemValue extends string> = Pick< + MenuItem<MenuItemValue>, + 'value' | 'label' | 'disabled' +> & { + body?: React.ReactNode; +}; + +type RadioButtonCardsProps<MenuItemValue extends string> = { + className?: string; + slotTop?: React.ReactNode; + slotBottom?: React.ReactNode; + radioItems: RadioItem<MenuItemValue>[]; +} & Parameters<typeof Root>[0]; + +export const RadioButtonCards = <MenuItemValue extends string>({ + className, + value, + onValueChange, + radioItems, + slotTop, + slotBottom, +}: RadioButtonCardsProps<MenuItemValue>) => { + return ( + <$Root value={value} onValueChange={onValueChange} className={className}> + {slotTop} + {radioItems.map((item) => ( + <$RadioButtonCard key={item.value} value={item.value} disabled={item.disabled}> + <$CardHeader> + {item.label} + {value === item.value ? <$CheckIcon iconName={IconName.Check} /> : <$EmptyIcon />} + </$CardHeader> + {item.body} + </$RadioButtonCard> + ))} + {slotBottom} + </$Root> + ); +}; +const $Root = styled(Root)` + display: flex; + flex-direction: column; + gap: 1rem; + padding: 1rem; + + --radio-button-cards-item-padding: ; + --radio-button-cards-item-gap: ; + --radio-button-cards-item-checked-backgroundColor: ; + --radio-button-cards-item-disabled-backgroundColor: ; + --radio-button-cards-item-backgroundColor: ; +`; + +const $RadioButtonCard = styled(Item)` + display: flex; + flex-direction: column; + border-radius: 0.625rem; + background-color: var(--radio-button-cards-item-backgroundColor, transparent); + border: 1px solid var(--color-layer-6); + padding: var(--radio-button-cards-item-padding, 1rem); + font: var(--font-mini-book); + text-align: left; + gap: var(--radio-button-cards-item-gap, 0.5rem); + + &:disabled { + cursor: default; + background-color: var(--radio-button-cards-item-disabled-backgroundColor, transparent); + } + + &[data-state='checked'] { + background-color: var(--radio-button-cards-item-checked-backgroundColor, var(--color-layer-2)); + } +`; + +const $CardHeader = styled.div` + display: flex; + flex: 1; + align-self: stretch; + align-items: center; + color: var(--color-text-2); + font: var(--font-base-medium); + justify-content: space-between; + gap: 1rem; +`; + +const $CheckIcon = styled(Icon)` + width: 1rem; + height: 1rem; + padding: 0.25rem; + + border-radius: 50%; + + color: var(--color-text-1); + background-color: var(--color-accent); +`; + +const $EmptyIcon = styled.div` + width: 1rem; + height: 1rem; + + box-shadow: 0 0 0 0.1rem var(--color-layer-5); + border-radius: 50%; + + background-color: var(--color-layer-0); +`; diff --git a/src/components/RelativeTime.tsx b/src/components/RelativeTime.tsx index 0939a74fc..e9571a1a8 100644 --- a/src/components/RelativeTime.tsx +++ b/src/components/RelativeTime.tsx @@ -1,4 +1,5 @@ import { useEffect, useState } from 'react'; + import { useSelector } from 'react-redux'; import { getSelectedLocale } from '@/state/localizationSelectors'; diff --git a/src/components/Ring.tsx b/src/components/Ring.tsx index ddfe610df..a88acde63 100644 --- a/src/components/Ring.tsx +++ b/src/components/Ring.tsx @@ -1,4 +1,4 @@ -import styled, { css, keyframes, type AnyStyledComponent } from 'styled-components'; +import styled, { css, keyframes } from 'styled-components'; type ElementProps = { value: number; @@ -15,7 +15,7 @@ export const Ring = ({ className, value, withAnimation }: ElementProps & StylePr const offset = Math.max(circumference - circumference * value, 0); return ( - <Styled.Ring + <$Ring className={className} viewBox="0 0 32 32" fill="none" @@ -40,13 +40,10 @@ export const Ring = ({ className, value, withAnimation }: ElementProps & StylePr strokeDasharray={circumference} strokeDashoffset={offset} /> - </Styled.Ring> + </$Ring> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.Ring = styled.svg<{ withAnimation?: boolean }>` +const $Ring = styled.svg<{ withAnimation?: boolean }>` --ring-color: currentColor; transform: rotate(-90deg); diff --git a/src/components/ScrollAreas.stories.tsx b/src/components/ScrollAreas.stories.tsx index a13d87fc6..f90515a16 100644 --- a/src/components/ScrollAreas.stories.tsx +++ b/src/components/ScrollAreas.stories.tsx @@ -1,164 +1,162 @@ -import styled, { AnyStyledComponent } from 'styled-components'; import type { Story } from '@ladle/react'; +import styled from 'styled-components'; -import { StoryWrapper } from '.ladle/components'; import { layoutMixins } from '@/styles/layoutMixins'; +import { StoryWrapper } from '.ladle/components'; + export const ScrollAreasStory: Story<{}> = (args) => ( <StoryWrapper> - <Styled.ScrollArea width="500px" height="700px"> + <$ScrollArea width="500px" height="700px"> <p> Scroll area. (<code>layoutMixins.scrollArea</code>) </p> - <Styled.PlaceholderContent /> + <$PlaceholderContent /> <hr /> <h2>Basic sticky area:</h2> - <Styled.StickyArea0 topHeight="4rem" bottomHeight="3rem"> - <Styled.StickyHeader>Sticky header.</Styled.StickyHeader> + <$StickyArea0 topHeight="4rem" bottomHeight="3rem"> + <$StickyHeader>Sticky header.</$StickyHeader> <p> Sticky area. (<code>layoutMixins.stickyArea0</code>) </p> - <Styled.PlaceholderContent /> + <$PlaceholderContent /> - <Styled.StickyFooter>Sticky footer.</Styled.StickyFooter> - </Styled.StickyArea0> + <$StickyFooter>Sticky footer.</$StickyFooter> + </$StickyArea0> - <Styled.PlaceholderContent /> + <$PlaceholderContent /> <hr /> <h2>Nested sticky area:</h2> - <Styled.StickyArea0 topHeight="4rem" bottomHeight="3rem"> - <Styled.StickyHeader>Sticky header.</Styled.StickyHeader> + <$StickyArea0 topHeight="4rem" bottomHeight="3rem"> + <$StickyHeader>Sticky header.</$StickyHeader> <p> Sticky area. (<code>layoutMixins.stickyArea0</code>) </p> - <Styled.PlaceholderContent /> + <$PlaceholderContent /> - <Styled.StickyArea1 topHeight="3rem" bottomHeight="2rem"> - <Styled.StickyHeader>Nested sticky header.</Styled.StickyHeader> + <$StickyArea1 topHeight="3rem" bottomHeight="2rem"> + <$StickyHeader>Nested sticky header.</$StickyHeader> <p> Nested sticky area. (<code>layoutMixins.stickyArea1</code>) </p> - <Styled.PlaceholderContent /> + <$PlaceholderContent /> - <Styled.StickyFooter>Nested sticky footer.</Styled.StickyFooter> - </Styled.StickyArea1> + <$StickyFooter>Nested sticky footer.</$StickyFooter> + </$StickyArea1> <p> Sticky area. (<code>layoutMixins.stickyArea1</code>) </p> - <Styled.StickyFooter>Sticky footer.</Styled.StickyFooter> - </Styled.StickyArea0> + <$StickyFooter>Sticky footer.</$StickyFooter> + </$StickyArea0> - <Styled.PlaceholderContent /> + <$PlaceholderContent /> <hr /> <h2>Super-nested sticky area:</h2> - <Styled.StickyArea0 topHeight="4rem" bottomHeight="3rem"> - <Styled.StickyHeader>Sticky header.</Styled.StickyHeader> + <$StickyArea0 topHeight="4rem" bottomHeight="3rem"> + <$StickyHeader>Sticky header.</$StickyHeader> <p> Sticky area. (<code>layoutMixins.stickyArea0</code>) </p> - <Styled.StickyArea1 topHeight="3rem" bottomHeight="2rem"> - <Styled.StickyHeader>Nested sticky header.</Styled.StickyHeader> + <$StickyArea1 topHeight="3rem" bottomHeight="2rem"> + <$StickyHeader>Nested sticky header.</$StickyHeader> - <Styled.StickyArea2 topHeight="3rem" bottomHeight="2rem"> - <Styled.StickyHeader>Super-nested sticky header.</Styled.StickyHeader> + <$StickyArea2 topHeight="3rem" bottomHeight="2rem"> + <$StickyHeader>Super-nested sticky header.</$StickyHeader> <p> Super-nested sticky area. (<code>layoutMixins.stickyArea2</code>) </p> - <Styled.PlaceholderContent /> + <$PlaceholderContent /> - <Styled.StickyFooter>Super-nested sticky footer.</Styled.StickyFooter> - </Styled.StickyArea2> + <$StickyFooter>Super-nested sticky footer.</$StickyFooter> + </$StickyArea2> - <Styled.StickyFooter>Nested sticky footer.</Styled.StickyFooter> - </Styled.StickyArea1> + <$StickyFooter>Nested sticky footer.</$StickyFooter> + </$StickyArea1> <p> Sticky area. (<code>layoutMixins.stickyArea1</code>) </p> - <Styled.StickyFooter>Sticky footer.</Styled.StickyFooter> - </Styled.StickyArea0> + <$StickyFooter>Sticky footer.</$StickyFooter> + </$StickyArea0> <hr /> <h2>Nested scroll area:</h2> - <Styled.StickyArea0 topHeight="4rem" bottomHeight="3rem"> - <Styled.StickyHeader>Sticky header.</Styled.StickyHeader> + <$StickyArea0 topHeight="4rem" bottomHeight="3rem"> + <$StickyHeader>Sticky header.</$StickyHeader> <p> Sticky area. (<code>layoutMixins.stickyArea0</code>) </p> - <Styled.StickyArea1 topHeight="3rem" bottomHeight="2rem"> - <Styled.StickyHeader>Nested sticky header.</Styled.StickyHeader> + <$StickyArea1 topHeight="3rem" bottomHeight="2rem"> + <$StickyHeader>Nested sticky header.</$StickyHeader> - <Styled.StickyArea2 topHeight="3rem" bottomHeight="2rem"> - <Styled.StickyHeader>Super-nested sticky header.</Styled.StickyHeader> + <$StickyArea2 topHeight="3rem" bottomHeight="2rem"> + <$StickyHeader>Super-nested sticky header.</$StickyHeader> <p> Super-nested sticky area. (<code>layoutMixins.stickyArea2</code>) </p> - <Styled.ScrollArea height="300px"> + <$ScrollArea height="300px"> <p> Nested scroll area. (<code>layoutMixins.scrollArea</code>) </p> - <Styled.StickyArea0 topHeight="4rem" bottomHeight="3rem"> - <Styled.StickyHeader>Sticky header.</Styled.StickyHeader> + <$StickyArea0 topHeight="4rem" bottomHeight="3rem"> + <$StickyHeader>Sticky header.</$StickyHeader> <p> Sticky area. (<code>layoutMixins.stickyArea0</code>) </p> - <Styled.PlaceholderContent /> + <$PlaceholderContent /> - <Styled.StickyFooter>Sticky footer.</Styled.StickyFooter> - </Styled.StickyArea0> - </Styled.ScrollArea> + <$StickyFooter>Sticky footer.</$StickyFooter> + </$StickyArea0> + </$ScrollArea> - <Styled.StickyFooter>Super-nested sticky footer.</Styled.StickyFooter> - </Styled.StickyArea2> + <$StickyFooter>Super-nested sticky footer.</$StickyFooter> + </$StickyArea2> - <Styled.StickyFooter>Nested sticky footer.</Styled.StickyFooter> - </Styled.StickyArea1> + <$StickyFooter>Nested sticky footer.</$StickyFooter> + </$StickyArea1> <p> Sticky area. (<code>layoutMixins.stickyArea1</code>) </p> - <Styled.StickyFooter>Sticky footer.</Styled.StickyFooter> - </Styled.StickyArea0> - </Styled.ScrollArea> + <$StickyFooter>Sticky footer.</$StickyFooter> + </$StickyArea0> + </$ScrollArea> </StoryWrapper> ); - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.ScrollArea = styled.section<{ width: string, height: string, }>` +const $ScrollArea = styled.section<{ width?: string; height: string }>` ${layoutMixins.container} ${layoutMixins.scrollArea} @@ -179,7 +177,7 @@ Styled.ScrollArea = styled.section<{ width: string, height: string, }>` } `; -Styled.StickyHeader = styled.header<{}>` +const $StickyHeader = styled.header<{}>` ${layoutMixins.stickyHeader} ${layoutMixins.row} @@ -193,7 +191,7 @@ Styled.StickyHeader = styled.header<{}>` border-radius: 0.5rem; `; -Styled.StickyFooter = styled.footer<{}>` +const $StickyFooter = styled.footer<{}>` ${layoutMixins.stickyFooter} ${layoutMixins.row} @@ -205,7 +203,7 @@ Styled.StickyFooter = styled.footer<{}>` border-radius: 0.5rem; `; -Styled.StickyArea0 = styled.section<{ topHeight: string; bottomHeight: string }>` +const $StickyArea0 = styled.section<{ topHeight: string; bottomHeight: string }>` ${layoutMixins.stickyArea0} --stickyArea0-topHeight: ${({ topHeight }) => topHeight}; --stickyArea0-bottomHeight: ${({ bottomHeight }) => bottomHeight}; @@ -220,7 +218,7 @@ Styled.StickyArea0 = styled.section<{ topHeight: string; bottomHeight: string }> border-radius: 1rem; `; -Styled.StickyArea1 = styled.section<{ topHeight: string; bottomHeight: string }>` +const $StickyArea1 = styled.section<{ topHeight: string; bottomHeight: string }>` ${layoutMixins.stickyArea1} --stickyArea1-topHeight: ${({ topHeight }) => topHeight}; --stickyArea1-bottomHeight: ${({ bottomHeight }) => bottomHeight}; @@ -235,7 +233,7 @@ Styled.StickyArea1 = styled.section<{ topHeight: string; bottomHeight: string }> border-radius: 0.5rem; `; -Styled.StickyArea2 = styled.section<{ topHeight: string; bottomHeight: string }>` +const $StickyArea2 = styled.section<{ topHeight: string; bottomHeight: string }>` ${layoutMixins.stickyArea2} --stickyArea2-topHeight: ${({ topHeight }) => topHeight}; --stickyArea2-bottomHeight: ${({ bottomHeight }) => bottomHeight}; @@ -250,7 +248,7 @@ Styled.StickyArea2 = styled.section<{ topHeight: string; bottomHeight: string }> border-radius: 0.5rem; `; -Styled.PlaceholderContent = styled.p` +const $PlaceholderContent = styled.p` opacity: 0.3; &:before { diff --git a/src/components/SearchInput.stories.tsx b/src/components/SearchInput.stories.tsx index 67f06e75e..a2af01362 100644 --- a/src/components/SearchInput.stories.tsx +++ b/src/components/SearchInput.stories.tsx @@ -1,23 +1,21 @@ -import styled, { AnyStyledComponent } from 'styled-components'; import type { Story } from '@ladle/react'; +import styled from 'styled-components'; + +import { layoutMixins } from '@/styles/layoutMixins'; import { SearchInput } from '@/components/SearchInput'; -import { StoryWrapper } from '.ladle/components'; -import { layoutMixins } from '@/styles/layoutMixins'; import { InputType } from './Input'; +import { StoryWrapper } from '.ladle/components'; export const SearchInputStory: Story<Parameters<typeof SearchInput>[0]> = (args) => ( <StoryWrapper> - <Styled.Container> + <$Container> <SearchInput placeholder="Search something..." type={InputType.Search} /> - </Styled.Container> + </$Container> </StoryWrapper> ); - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.Container = styled.section` +const $Container = styled.section` background: var(--color-layer-3); ${layoutMixins.container} diff --git a/src/components/SearchInput.tsx b/src/components/SearchInput.tsx index d9526b952..00f3214a9 100644 --- a/src/components/SearchInput.tsx +++ b/src/components/SearchInput.tsx @@ -1,100 +1,75 @@ -import { useEffect, useRef, useState } from 'react'; -import styled, { type AnyStyledComponent, css } from 'styled-components'; +import { useRef, useState } from 'react'; + +import styled from 'styled-components'; import { layoutMixins } from '@/styles/layoutMixins'; -import { IconName } from '@/components/Icon'; +import { Icon, IconName } from '@/components/Icon'; import { IconButton } from '@/components/IconButton'; -import { Input, type InputProps } from '@/components/Input'; +import { Input, InputType, type InputProps } from '@/components/Input'; type ElementProps = { - onOpenChange?: (isOpen: boolean) => void; onTextChange?: (value: string) => void; }; export type SearchInputProps = ElementProps & InputProps; -export const SearchInput = ({ - type, - placeholder, - onOpenChange, - onTextChange, -}: SearchInputProps) => { - const [isOpen, setIsOpen] = useState(false); +export const SearchInput = ({ placeholder, onTextChange }: SearchInputProps) => { const [value, setValue] = useState(''); const inputRef = useRef<HTMLInputElement | null>(null); - useEffect(() => { - if (isOpen) inputRef?.current?.focus(); - }, [inputRef, isOpen]); - return ( - <Styled.Search> - <Styled.IconButton - iconName={isOpen ? IconName.Close : IconName.Search} - isToggle - isPressed={isOpen} - onPressedChange={(isPressed: boolean) => { - setIsOpen(isPressed); - onOpenChange?.(isPressed); - - if (!isPressed) { - onTextChange?.(''); - setValue(''); - } - }} - /> - <Styled.Input + <$Search> + <$Icon iconName={IconName.Search} /> + <$Input autoFocus ref={inputRef} value={value} - isOpen={isOpen} - type={type} + type={InputType.Search} onChange={(e: React.ChangeEvent<HTMLInputElement>) => { setValue(e.target.value); onTextChange?.(e.target.value); }} - disabled={!isOpen} placeholder={placeholder} /> - </Styled.Search> + {value.length > 0 && ( + <$IconButton + iconName={IconName.Close} + onClick={() => { + setValue(''); + }} + /> + )} + </$Search> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.Search = styled.div` +const $Search = styled.div` ${layoutMixins.row} - + width: auto; + height: 2rem; + background-color: var(--color-layer-3); + color: ${({ theme }) => theme.textTertiary}; + border-radius: 2.5rem; + border: solid var(--border-width) var(--color-layer-6); + padding: 0 1rem; + gap: 0.375rem; justify-content: end; - width: 100%; - height: 100%; `; -Styled.Input = styled(Input)<{ isOpen: boolean }>` - max-width: 0; - - @media (prefers-reduced-motion: no-preference) { - transition: max-width 0.45s var(--ease-out-expo); - } - - ${({ isOpen }) => - isOpen && - css` - padding-left: 0.5rem; - max-width: 100%; - `} +const $Input = styled(Input)` + max-width: 100%; + border-radius: 0; `; -Styled.IconButton = styled(IconButton)<{ iconName: IconName.Close | IconName.Search }>` - --button-toggle-on-backgroundColor: var(--color-layer-3); - --button-toggle-on-textColor: var(--color-text-0); +const $IconButton = styled(IconButton)` + --button-icon-size: 0.5rem; + --button-border: none; + --button-backgroundColor: transparent; + color: ${({ theme }) => theme.textSecondary}; + width: 1.5rem; + height: 1.5rem; +`; - ${({ iconName }) => - iconName === IconName.Close && - css` - svg { - height: 0.875em; - } - `} +const $Icon = styled(Icon)` + color: ${({ theme }) => theme.textSecondary}; `; diff --git a/src/components/SearchSelectMenu.stories.tsx b/src/components/SearchSelectMenu.stories.tsx index 97ab8c72a..e180f0b3b 100644 --- a/src/components/SearchSelectMenu.stories.tsx +++ b/src/components/SearchSelectMenu.stories.tsx @@ -1,4 +1,5 @@ import { useState } from 'react'; + import type { Story } from '@ladle/react'; import styled from 'styled-components'; diff --git a/src/components/SearchSelectMenu.tsx b/src/components/SearchSelectMenu.tsx index ac6f6201f..1fd5ef3d7 100644 --- a/src/components/SearchSelectMenu.tsx +++ b/src/components/SearchSelectMenu.tsx @@ -1,8 +1,14 @@ -import { type ReactNode, useState, useRef } from 'react'; -import styled, { type AnyStyledComponent, css } from 'styled-components'; +import { useRef, useState, type ReactNode } from 'react'; + +import styled, { css } from 'styled-components'; import { type MenuConfig } from '@/constants/menus'; -import { useOnClickOutside } from '@/hooks'; + +import { useOnClickOutside } from '@/hooks/useOnClickOutside'; + +import breakpoints from '@/styles/breakpoints'; +import { formMixins } from '@/styles/formMixins'; +import { layoutMixins } from '@/styles/layoutMixins'; import { ComboboxMenu } from '@/components/ComboboxMenu'; import { type DetailsItem } from '@/components/Details'; @@ -11,9 +17,7 @@ import { Popover, TriggerType } from '@/components/Popover'; import { WithDetailsReceipt } from '@/components/WithDetailsReceipt'; import { WithLabel } from '@/components/WithLabel'; -import { layoutMixins } from '@/styles/layoutMixins'; -import { formMixins } from '@/styles/formMixins'; -import breakpoints from '@/styles/breakpoints'; +import { getSimpleStyledOutputType } from '@/lib/genericFunctionalComponentUtils'; type ElementProps = { asChild?: boolean; @@ -36,7 +40,6 @@ export const SearchSelectMenu = ({ asChild, children, className, - disabled, label, items, withSearch = true, @@ -55,16 +58,16 @@ export const SearchSelectMenu = ({ const Trigger = asChild ? ( children ) : ( - <Styled.MenuTrigger> - {label ? <Styled.WithLabel label={label}>{children}</Styled.WithLabel> : children} - <Styled.TriggerIcon iconName={IconName.Triangle} open={open} /> - </Styled.MenuTrigger> + <$MenuTrigger> + {label ? <$WithLabel label={label}>{children}</$WithLabel> : children} + <$TriggerIcon iconName={IconName.Triangle} open={open} /> + </$MenuTrigger> ); return ( - <Styled.SearchSelectMenu className={className} ref={searchSelectMenuRef}> - <Styled.WithDetailsReceipt detailItems={withReceiptItems} side="bottom"> - <Styled.Popover + <$SearchSelectMenu className={className} ref={searchSelectMenuRef}> + <$WithDetailsReceipt detailItems={withReceiptItems} side="bottom"> + <$Popover open={open} onOpenChange={setOpen} slotTrigger={Trigger} @@ -72,26 +75,23 @@ export const SearchSelectMenu = ({ fullWidth noBlur > - <Styled.ComboboxMenu + <$ComboboxMenu items={items} withSearch={withSearch} onItemSelected={() => setOpen(false)} withStickyLayout $withSearch={withSearch} /> - </Styled.Popover> - </Styled.WithDetailsReceipt> - </Styled.SearchSelectMenu> + </$Popover> + </$WithDetailsReceipt> + </$SearchSelectMenu> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.SearchSelectMenu = styled.div` +const $SearchSelectMenu = styled.div` ${layoutMixins.column} `; -Styled.MenuTrigger = styled.div` +const $MenuTrigger = styled.div` height: var(--form-input-height); ${layoutMixins.spacedRow} @@ -103,7 +103,7 @@ Styled.MenuTrigger = styled.div` } `; -Styled.WithLabel = styled(WithLabel)` +const $WithLabel = styled(WithLabel)` ${formMixins.inputLabel} label { @@ -111,7 +111,7 @@ Styled.WithLabel = styled(WithLabel)` } `; -Styled.WithDetailsReceipt = styled(WithDetailsReceipt)` +const $WithDetailsReceipt = styled(WithDetailsReceipt)` --withReceipt-backgroundColor: var(--color-layer-2); abbr { @@ -119,7 +119,7 @@ Styled.WithDetailsReceipt = styled(WithDetailsReceipt)` } `; -Styled.Popover = styled(Popover)` +const $Popover = styled(Popover)` max-height: 30vh; margin-top: 1rem; border: var(--border-width) solid var(--color-layer-6); @@ -128,7 +128,10 @@ Styled.Popover = styled(Popover)` box-shadow: none; `; -Styled.ComboboxMenu = styled(ComboboxMenu)<{ $withSearch?: boolean }>` +type comboboxMenuStyleProps = { $withSearch?: boolean }; +const ComboboxMenuStyleType = getSimpleStyledOutputType(ComboboxMenu, {} as comboboxMenuStyleProps); + +const $ComboboxMenu = styled(ComboboxMenu)<comboboxMenuStyleProps>` ${layoutMixins.withInnerHorizontalBorders} --comboboxMenu-backgroundColor: var(--color-layer-4); @@ -151,9 +154,9 @@ Styled.ComboboxMenu = styled(ComboboxMenu)<{ $withSearch?: boolean }>` border-radius: 0.5rem; max-height: 30vh; overflow: auto; -`; +` as typeof ComboboxMenuStyleType; -Styled.TriggerIcon = styled(Icon)<{ open?: boolean }>` +const $TriggerIcon = styled(Icon)<{ open?: boolean }>` width: 0.625rem; height: 0.375rem; color: var(--color-text-0); diff --git a/src/components/SelectMenu.stories.tsx b/src/components/SelectMenu.stories.tsx index 168b9e8fa..70e6a9970 100644 --- a/src/components/SelectMenu.stories.tsx +++ b/src/components/SelectMenu.stories.tsx @@ -1,11 +1,13 @@ import { useState } from 'react'; -import styled, { AnyStyledComponent } from 'styled-components'; + import type { Story } from '@ladle/react'; +import styled from 'styled-components'; + +import { layoutMixins } from '@/styles/layoutMixins'; -import { SelectMenu, SelectItem } from '@/components/SelectMenu'; +import { SelectItem, SelectMenu } from '@/components/SelectMenu'; import { StoryWrapper } from '.ladle/components'; -import { layoutMixins } from '@/styles/layoutMixins'; const exampleItems: { value: string; label: string }[] = [ { @@ -32,7 +34,7 @@ export const SelectMenuStory: Story<Parameters<typeof SelectMenu>[0]> = (args) = return ( <StoryWrapper> - <Styled.Container> + <$Container> <SelectMenu value={value} onValueChange={setValue}> {exampleItems.map(({ value, label }) => ( <SelectItem key={value} value={value} label={label} /> @@ -44,14 +46,11 @@ export const SelectMenuStory: Story<Parameters<typeof SelectMenu>[0]> = (args) = <SelectItem key={value} value={value} label={label} /> ))} </SelectMenu> - </Styled.Container> + </$Container> </StoryWrapper> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.Container = styled.section` +const $Container = styled.section` background: var(--color-layer-3); ${layoutMixins.container} diff --git a/src/components/SelectMenu.tsx b/src/components/SelectMenu.tsx index 2ef14ae5b..9fe82c11b 100644 --- a/src/components/SelectMenu.tsx +++ b/src/components/SelectMenu.tsx @@ -1,24 +1,24 @@ import React from 'react'; -import styled, { css, type AnyStyledComponent } from 'styled-components'; +import { CheckIcon } from '@radix-ui/react-icons'; import { - Root, - Value, - Viewport, - Trigger, Content, Item, - ItemText, ItemIndicator, + ItemText, Portal, - Icon as SelectIcon, + Root, + Trigger, + Value, + Viewport, } from '@radix-ui/react-select'; -import { CheckIcon } from '@radix-ui/react-icons'; +import styled from 'styled-components'; -import { popoverMixins } from '@/styles/popoverMixins'; import { formMixins } from '@/styles/formMixins'; +import { popoverMixins } from '@/styles/popoverMixins'; import { WithLabel } from '@/components/WithLabel'; + import { Icon, IconName } from './Icon'; export const SelectMenu = <T extends string>({ @@ -38,24 +38,24 @@ export const SelectMenu = <T extends string>({ }) => { return ( <Root value={value} onValueChange={onValueChange}> - <Styled.Trigger className={className} $withBlur={withBlur}> + <$Trigger className={className} $withBlur={withBlur}> {label ? ( - <Styled.WithLabel label={label}> + <$WithLabel label={label}> <Value /> - </Styled.WithLabel> + </$WithLabel> ) : ( <Value /> )} {React.Children.toArray(children).length > 1 && ( - <Styled.TriggerIcon iconName={IconName.Triangle} /> + <$TriggerIcon iconName={IconName.Triangle} /> )} - </Styled.Trigger> + </$Trigger> <Portal> - <Styled.Content className={className}> + <$Content className={className}> {/* <ScrollUpButton /> */} <Viewport>{children}</Viewport> {/* <ScrollDownButton /> */} - </Styled.Content> + </$Content> </Portal> </Root> ); @@ -68,19 +68,16 @@ export const SelectItem = <T extends string>({ }: { className?: string; value: T; - label: string; + label: React.ReactNode; }) => ( - <Styled.Item className={className} value={value}> + <$Item className={className} value={value}> <ItemText>{label}</ItemText> - <Styled.ItemIndicator> + <$ItemIndicator> <CheckIcon /> - </Styled.ItemIndicator> - </Styled.Item> + </$ItemIndicator> + </$Item> ); - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.Trigger = styled(Trigger)<{ $withBlur?: boolean }>` +const $Trigger = styled(Trigger)<{ $withBlur?: boolean }>` --select-menu-trigger-maxWidth: ; max-width: var(--select-menu-trigger-maxWidth); ${popoverMixins.trigger} @@ -94,7 +91,7 @@ Styled.Trigger = styled(Trigger)<{ $withBlur?: boolean }>` } `; -Styled.Content = styled(Content)` +const $Content = styled(Content)` --select-menu-content-maxWidth: ; max-width: var(--select-menu-content-maxWidth); @@ -102,22 +99,22 @@ Styled.Content = styled(Content)` ${popoverMixins.popoverAnimation} `; -Styled.Item = styled(Item)` +const $Item = styled(Item)` ${popoverMixins.item} `; -Styled.ItemIndicator = styled(ItemIndicator)` +const $ItemIndicator = styled(ItemIndicator)` margin-left: auto; display: inline-flex; transition: transform 0.3s var(--ease-out-expo); `; -Styled.WithLabel = styled(WithLabel)` +const $WithLabel = styled(WithLabel)` ${formMixins.inputLabel} border-radius: 0; `; -Styled.TriggerIcon = styled(Icon)` +const $TriggerIcon = styled(Icon)` width: 0.625rem; height: 0.375rem; color: var(--color-text-0); diff --git a/src/components/Separator.tsx b/src/components/Separator.tsx index 64c6e6c37..a8f23e121 100644 --- a/src/components/Separator.tsx +++ b/src/components/Separator.tsx @@ -1,7 +1,7 @@ import { Fragment } from 'react'; -import styled, { css } from 'styled-components'; import { Separator } from '@radix-ui/react-separator'; +import styled, { css } from 'styled-components'; const StyledSeparator = styled(Separator)` flex: 0 !important; diff --git a/src/components/Slider.tsx b/src/components/Slider.tsx new file mode 100644 index 000000000..e77db2086 --- /dev/null +++ b/src/components/Slider.tsx @@ -0,0 +1,103 @@ +import { Root, Thumb, Track } from '@radix-ui/react-slider'; +import styled from 'styled-components'; + +type ElementProps = { + value: number; + label?: string; + onSliderDrag: ([value]: number[]) => void; + onValueCommit: ([value]: number[]) => void; + min?: number; + max?: number; + step?: number; +}; + +type StyleProps = { className?: string }; + +export const Slider = ({ + className, + label = 'slider', + value, + onSliderDrag, + onValueCommit, + min, + max, + step = 0.1, +}: ElementProps & StyleProps) => ( + <$Root + aria-label={label} + className={className} + min={min} + max={max} + step={step} + value={[value]} + onValueChange={onSliderDrag} + onValueCommit={onValueCommit} + > + <$Track /> + <$Thumb /> + </$Root> +); +const $Root = styled(Root)` + // make thumb covers the start of the track + --radix-slider-thumb-transform: translateX(-65%) !important; + --slider-track-background: ; + --slider-track-backgroundColor: var(--color-layer-4); + + position: relative; + + display: flex; + align-items: center; + + user-select: none; + + height: 100%; +`; + +const $Track = styled(Track)` + position: relative; + + display: flex; + flex-grow: 1; + align-items: center; + + height: 0.5rem; + margin-right: 0.25rem; // make thumb covers the end of the track + + cursor: pointer; + background: var(--slider-track-background); + + &:before { + content: ''; + width: 100%; + height: 100%; + + background: linear-gradient( + 90deg, + transparent, + transparent 15%, + var(--slider-track-backgroundColor) 15%, + var(--slider-track-backgroundColor) 50%, + transparent 50%, + transparent 65%, + var(--slider-track-backgroundColor) 65% + ) + 0 0 / 0.6rem; + } +`; + +const $Thumb = styled(Thumb)` + height: 1.375rem; + width: 1.375rem; + + display: flex; + justify-content: center; + align-items: center; + + background-color: var(--color-layer-6); + opacity: 0.8; + + border: 1.5px solid var(--color-layer-7); + border-radius: 50%; + + cursor: grab; +`; diff --git a/src/components/StepIndicator.stories.tsx b/src/components/StepIndicator.stories.tsx index bca960b05..13a159675 100644 --- a/src/components/StepIndicator.stories.tsx +++ b/src/components/StepIndicator.stories.tsx @@ -1,8 +1,7 @@ import type { Story } from '@ladle/react'; -import { StoryWrapper } from '.ladle/components'; - import { StepIndicator, type StepIndicatorProps } from './StepIndicator'; +import { StoryWrapper } from '.ladle/components'; export const StepIndicatorStory: Story<StepIndicatorProps> = (args) => ( <StoryWrapper> diff --git a/src/components/StepIndicator.tsx b/src/components/StepIndicator.tsx index c83618fa2..2d4ab2da6 100644 --- a/src/components/StepIndicator.tsx +++ b/src/components/StepIndicator.tsx @@ -1,4 +1,4 @@ -import styled, { css, type AnyStyledComponent } from 'styled-components'; +import styled, { css } from 'styled-components'; import { layoutMixins } from '@/styles/layoutMixins'; @@ -14,23 +14,16 @@ type StyleProps = { export type StepIndicatorProps = ElementProps & StyleProps; export const StepIndicator = ({ className, currentStepIndex, totalSteps }: StepIndicatorProps) => ( - <Styled.StepIndicator + <$StepIndicator className={className} - progress={(currentStepIndex - 1) / (totalSteps - 1) * 100} + progress={((currentStepIndex - 1) / (totalSteps - 1)) * 100} > {[...Array(totalSteps)].map((_, i) => ( - <Styled.Step - key={i} - isActive={i === currentStepIndex - 1} - isFilled={i <= currentStepIndex - 1} - /> + <$Step key={i} isActive={i === currentStepIndex - 1} isFilled={i <= currentStepIndex - 1} /> ))} - </Styled.StepIndicator> + </$StepIndicator> ); - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.StepIndicator = styled.div<{ progress: number }>` +const $StepIndicator = styled.div<{ progress: number }>` --stepIndicator-line-backgroundColor: var(--color-layer-4); --stepIndicator-step-backgroundColor: var(--color-layer-4); --stepIndicator-active-step-boxShadowColor: hsla(240, 32%, 21%, 1); @@ -65,7 +58,7 @@ Styled.StepIndicator = styled.div<{ progress: number }>` } `; -Styled.Step = styled.div<{ isActive?: boolean; isFilled?: boolean }>` +const $Step = styled.div<{ isActive?: boolean; isFilled?: boolean }>` width: 0.5em; height: 0.5em; border-radius: 50%; diff --git a/src/components/Switch.stories.tsx b/src/components/Switch.stories.tsx index a36602575..ea87e6e54 100644 --- a/src/components/Switch.stories.tsx +++ b/src/components/Switch.stories.tsx @@ -1,19 +1,18 @@ import { useState } from 'react'; + import type { Story } from '@ladle/react'; import styled from 'styled-components'; -import { StoryWrapper } from '.ladle/components'; - import { Switch } from '@/components/Switch'; -type SwitchProps = Parameters<typeof Switch>; +import { StoryWrapper } from '.ladle/components'; -export const SwitchStory: Story<SwitchProps> = (args: SwitchProps) => { +export const SwitchStory: Story<Parameters<typeof Switch>[0]> = (args) => { const [checked, setChecked] = useState(false); return ( <StoryWrapper> - <Switch checked={checked} onCheckedChange={setChecked} {...args} /> - <StyledSwitch checked={checked} onCheckedChange={setChecked} {...args} /> + <Switch {...args} checked={checked} onCheckedChange={setChecked} /> + <StyledSwitch {...args} checked={checked} onCheckedChange={setChecked} /> </StoryWrapper> ); }; diff --git a/src/components/Switch.tsx b/src/components/Switch.tsx index 103f93335..1f56c9afa 100644 --- a/src/components/Switch.tsx +++ b/src/components/Switch.tsx @@ -1,6 +1,5 @@ -import styled, { type AnyStyledComponent } from 'styled-components'; - import { Root, Thumb } from '@radix-ui/react-switch'; +import styled from 'styled-components'; type ElementProps = { checked: boolean; @@ -24,7 +23,7 @@ export const Switch = ({ required, value, }: ElementProps & StyleProps) => ( - <Styled.Root + <$Root checked={checked} className={className} disabled={disabled} @@ -34,13 +33,10 @@ export const Switch = ({ required={required} value={value} > - <Styled.Thumb /> - </Styled.Root> + <$Thumb /> + </$Root> ); - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.Root = styled(Root)` +const $Root = styled(Root)` --switch-width: 2.625em; --switch-height: 1.5em; --switch-backgroundColor: var(--color-layer-0); @@ -67,7 +63,7 @@ Styled.Root = styled(Root)` } `; -Styled.Thumb = styled(Thumb)` +const $Thumb = styled(Thumb)` width: calc(var(--switch-width) / 2); height: calc(var(--switch-height) - 0.1875em); diff --git a/src/components/Table.tsx b/src/components/Table.tsx index d9dc80a70..e2bd20dcc 100644 --- a/src/components/Table.tsx +++ b/src/components/Table.tsx @@ -1,62 +1,74 @@ -import React, { Fragment, Key, useCallback, useEffect, useMemo, useState } from 'react'; -import styled, { css, type AnyStyledComponent } from 'styled-components'; +import React, { Key, useCallback, useEffect, useState } from 'react'; import { - useTable, - useTableCell, - useTableColumnHeader, - useTableRow, - useTableHeaderRow, - useTableRowGroup, - useTableSelectAllCheckbox, - useTableSelectionCheckbox, - mergeProps, - useFocusRing, - useCollator, -} from 'react-aria'; - -import { type ColumnSize, type TableCollection } from '@react-types/table'; -import { type GridNode } from '@react-types/grid'; - -import type { Node, SortDescriptor, SortDirection, CollectionChildren } from '@react-types/shared'; - -import { - Cell, - // CollectionBuilderContext, + Cell, // CollectionBuilderContext, Column, Row, TableBody, TableHeader, - type TableState, useTableState, + type TableState, } from '@react-stately/table'; - +import { type GridNode } from '@react-types/grid'; +import type { CollectionChildren, Node, SortDescriptor, SortDirection } from '@react-types/shared'; +import { type ColumnSize, type TableCollection } from '@react-types/table'; +import { isFunction } from 'lodash'; +import { + mergeProps, + useCollator, + useFocusRing, + useTable, + useTableCell, + useTableColumnHeader, + useTableHeaderRow, + useTableRow, + useTableRowGroup, +} from 'react-aria'; import { useAsyncList } from 'react-stately'; +import styled, { css } from 'styled-components'; -import { useBreakpoints, useStringGetter } from '@/hooks'; -import { MediaQueryKeys } from '@/hooks/useBreakpoints'; +import { MediaQueryKeys, useBreakpoints } from '@/hooks/useBreakpoints'; +import { useTablePagination } from '@/hooks/useTablePagination'; import { breakpoints } from '@/styles'; import { layoutMixins } from '@/styles/layoutMixins'; -import { CaretIcon } from '@/icons'; - -import { STRING_KEYS } from '@/constants/localization'; import { MustBigNumber } from '@/lib/numbers'; import { Icon, IconName } from './Icon'; +import { PAGE_SIZES, PageSize, TablePaginationRow } from './Table/TablePaginationRow'; import { Tag } from './Tag'; -import { Button } from './Button'; +export { ActionsTableCell } from './Table/ActionsTableCell'; + +// TODO: fix circular dependencies +// eslint-disable-next-line import/no-cycle +export { AssetTableCell } from './Table/AssetTableCell'; + +// TODO: remove barrel files: https://www.npmjs.com/package/eslint-plugin-no-barrel-files +// Reasoning why: https://dev.to/tassiofront/barrel-files-and-why-you-should-stop-using-them-now-bc4 +// eslint-disable-next-line import/no-cycle +export { MarketTableCell } from './Table/MarketTableCell'; export { TableCell } from './Table/TableCell'; export { TableColumnHeader } from './Table/TableColumnHeader'; -export { MarketTableCell } from './Table/MarketTableCell'; export type CustomRowConfig = { key: string; slotCustomRow: (..._: Parameters<typeof TableRow>) => React.ReactNode; }; +function isCustomRow<TableRowData extends object>( + v: TableRowData | CustomRowConfig +): v is CustomRowConfig { + return (v as any).slotCustomRow != null && isFunction((v as any).slotCustomRow); +} + +function isTableRowData<TableRowData extends object>( + v: TableRowData | CustomRowConfig +): v is TableRowData { + return !isCustomRow(v); +} + export type TableItem<TableRowData> = { value: TableRowData; @@ -68,7 +80,9 @@ export type TableItem<TableRowData> = { onSelect?: (key: TableRowData) => void; }; -export type ColumnDef<TableRowData extends object> = { +export type BaseTableRowData = {}; + +export type ColumnDef<TableRowData extends BaseTableRowData | CustomRowConfig> = { columnKey: string; label: React.ReactNode; tag?: React.ReactNode; @@ -83,29 +97,24 @@ export type ColumnDef<TableRowData extends object> = { width?: ColumnSize; }; -export type ElementProps<TableRowData extends object | CustomRowConfig, TableRowKey extends Key> = { +export type TableElementProps<TableRowData extends BaseTableRowData | CustomRowConfig> = { label?: string; columns: ColumnDef<TableRowData>[]; - data: TableRowData[]; - getRowKey: (rowData: TableRowData, rowIndex?: number) => TableRowKey; + data: Array<TableRowData | CustomRowConfig>; + getRowKey: (rowData: TableRowData, rowIndex?: number) => Key; getRowAttributes?: (rowData: TableRowData, rowIndex?: number) => Record<string, any>; - // shouldRowRender?: (prevRowData: object, currentRowData: object) => boolean; defaultSortDescriptor?: SortDescriptor; selectionMode?: 'multiple' | 'single'; selectionBehavior?: 'replace' | 'toggle'; - onRowAction?: (key: TableRowKey, row: TableRowData) => void; + onRowAction?: (key: Key, row: TableRowData) => void; slotEmpty?: React.ReactNode; - viewMoreConfig?: { - initialNumRowsToShow: number; - numRowsPerPage?: number; - }; - // collection: TableCollection<string>; - // children: React.ReactNode; + initialPageSize?: PageSize; + paginationBehavior?: 'paginate' | 'showAll'; }; -type StyleProps = { +export type TableStyleProps = { hideHeader?: boolean; - withGradientCardRows?: boolean; + withGradientCardRows?: boolean; // TODO: CT-662 withFocusStickyRows?: boolean; withOuterBorder?: boolean; withInnerBorders?: boolean; @@ -117,7 +126,10 @@ type StyleProps = { export type TableConfig<TableRowData> = TableItem<TableRowData>[]; -export const Table = <TableRowData extends object, TableRowKey extends Key>({ +export type AllTableProps<TableRowData extends BaseTableRowData | CustomRowConfig> = + TableElementProps<TableRowData> & TableStyleProps & { style?: { [customProp: string]: number } }; + +export const Table = <TableRowData extends BaseTableRowData | CustomRowConfig>({ label = '', columns, data = [], @@ -128,11 +140,8 @@ export const Table = <TableRowData extends object, TableRowKey extends Key>({ selectionMode = 'single', selectionBehavior = 'toggle', slotEmpty, - viewMoreConfig, - // shouldRowRender, - - // collection, - // children, + initialPageSize = 10, + paginationBehavior = 'paginate', hideHeader = false, withGradientCardRows = false, withFocusStickyRows = false, @@ -142,20 +151,13 @@ export const Table = <TableRowData extends object, TableRowKey extends Key>({ withScrollSnapRows = false, className, style, -}: ElementProps<TableRowData, TableRowKey> & StyleProps) => { - const [selectedKeys, setSelectedKeys] = useState(new Set<TableRowKey>()); - const [numRowsToShow, setNumRowsToShow] = useState(viewMoreConfig?.initialNumRowsToShow); - const enableViewMore = viewMoreConfig !== undefined; - - const onViewMoreClick = () => { - if (!viewMoreConfig) return; - const { numRowsPerPage } = viewMoreConfig; - if (numRowsPerPage) { - setNumRowsToShow((prev) => (prev ?? 0) + numRowsPerPage); - } else { - setNumRowsToShow(data.length); - } - }; +}: AllTableProps<TableRowData>) => { + const [selectedKeys, setSelectedKeys] = useState(new Set<Key>()); + + const { currentPage, pageSize, pages, setCurrentPage, setPageSize } = useTablePagination({ + initialPageSize, + totalRows: data.length, + }); const currentBreakpoints = useBreakpoints(); const shownColumns = columns.filter( @@ -165,22 +167,22 @@ export const Table = <TableRowData extends object, TableRowKey extends Key>({ const collator = useCollator(); const sortFn = ( - a: TableRowData, - b: TableRowData, + a: TableRowData | CustomRowConfig, + b: TableRowData | CustomRowConfig, sortColumn?: Key, sortDirection?: SortDirection ) => { if (!sortColumn) return 0; - const column = columns.find((column) => column.columnKey === sortColumn); - const first = column?.getCellValue(a); - const second = column?.getCellValue(b); + const column = columns.find((c) => c.columnKey === sortColumn); + const first = isCustomRow(a) ? 0 : column?.getCellValue(a); + const second = isCustomRow(b) ? 0 : column?.getCellValue(b); return ( // Compare the items by the sorted column - (isNaN(first as number) + (Number.isNaN(Number(first)) ? // String - collator.compare(first as string, second as string) + collator.compare(String(first), String(second)) : // Number MustBigNumber(first).comparedTo(MustBigNumber(second))) * // Flip the direction if descending order is specified. @@ -188,8 +190,15 @@ export const Table = <TableRowData extends object, TableRowKey extends Key>({ ); }; - const list = useAsyncList<TableRowData>({ - getKey: getRowKey, + const internalGetRowKey = useCallback( + (row: TableRowData | CustomRowConfig) => { + return isCustomRow(row) ? row.key : getRowKey(row); + }, + [getRowKey] + ); + + const list = useAsyncList<TableRowData | CustomRowConfig>({ + getKey: internalGetRowKey, load: async ({ sortDescriptor }) => ({ items: sortDescriptor?.column ? data.sort((a, b) => sortFn(a, b, sortDescriptor?.column, sortDescriptor?.direction)) @@ -203,12 +212,15 @@ export const Table = <TableRowData extends object, TableRowKey extends Key>({ }), }); + // FIX: refactor table so we don't have to manually reload + // eslint-disable-next-line react-hooks/exhaustive-deps useEffect(() => list.reload(), [data]); const isEmpty = data.length === 0; + const shouldPaginate = paginationBehavior === 'paginate' && data.length > Math.min(...PAGE_SIZES); return ( - <Styled.TableWrapper + <$TableWrapper className={className} style={style} isEmpty={isEmpty} @@ -227,13 +239,12 @@ export const Table = <TableRowData extends object, TableRowKey extends Key>({ getRowAttributes={getRowAttributes} onRowAction={ onRowAction && - ((key: TableRowKey) => onRowAction(key, data.find((row) => getRowKey(row) === key)!)) + ((key: Key) => + onRowAction( + key, + data.filter(isTableRowData).find((row) => internalGetRowKey(row) === key)! + )) } - numColumns={shownColumns.length} - onViewMoreClick={ - enableViewMore && numRowsToShow! < data.length ? onViewMoreClick : undefined - } - // shouldRowRender={shouldRowRender} hideHeader={hideHeader} withGradientCardRows={withGradientCardRows} withFocusStickyRows={withFocusStickyRows} @@ -241,6 +252,19 @@ export const Table = <TableRowData extends object, TableRowKey extends Key>({ withInnerBorders={withInnerBorders} withScrollSnapColumns={withScrollSnapColumns} withScrollSnapRows={withScrollSnapRows} + numColumns={shownColumns.length} + paginationRow={ + shouldPaginate ? ( + <TablePaginationRow + currentPage={currentPage} + pageSize={pageSize} + pages={pages} + totalRows={data.length} + setCurrentPage={setCurrentPage} + setPageSize={setPageSize} + /> + ) : undefined + } > <TableHeader columns={shownColumns}> {(column) => ( @@ -257,12 +281,19 @@ export const Table = <TableRowData extends object, TableRowKey extends Key>({ )} </TableHeader> - <TableBody items={enableViewMore ? list.items.slice(0, numRowsToShow) : list.items}> + <TableBody + items={ + shouldPaginate && list.items.length > pageSize + ? list.items.slice(currentPage * pageSize, (currentPage + 1) * pageSize) + : list.items + } + > {(item) => ( - <Row key={getRowKey(item)}> + <Row key={internalGetRowKey(item)}> {(columnKey) => ( - <Cell key={`${getRowKey(item)}-${columnKey}`}> - {columns.find((column) => column.columnKey === columnKey)?.renderCell?.(item)} + <Cell key={`${internalGetRowKey(item)}-${columnKey}`}> + {isTableRowData(item) && + columns.find((column) => column.columnKey === columnKey)?.renderCell?.(item)} </Cell> )} </Row> @@ -270,29 +301,30 @@ export const Table = <TableRowData extends object, TableRowKey extends Key>({ </TableBody> </TableRoot> ) : ( - <Styled.Empty withOuterBorder={withOuterBorder}>{slotEmpty}</Styled.Empty> + <$Empty withOuterBorder={withOuterBorder}>{slotEmpty}</$Empty> )} - </Styled.TableWrapper> + </$TableWrapper> ); }; -const TableRoot = <TableRowData extends object | CustomRowConfig, TableRowKey extends Key>(props: { +// TODO: remove useless extends +const TableRoot = <TableRowData extends BaseTableRowData | CustomRowConfig>(props: { 'aria-label'?: string; sortDescriptor?: SortDescriptor; onSortChange?: (descriptor: SortDescriptor) => void; selectionMode: 'multiple' | 'single'; selectionBehavior: 'replace' | 'toggle'; - selectedKeys: Set<TableRowKey>; - setSelectedKeys: (selectedKeys: Set<TableRowKey>) => void; + selectedKeys: Set<Key>; + setSelectedKeys: (selectedKeys: Set<Key>) => void; getRowAttributes?: ( rowData: TableRowData, rowIndex?: number ) => Record<string, string | number | Record<string, string | number>>; - onRowAction?: (key: TableRowKey) => void; - // shouldRowRender?: (prevRowData: object, currentRowData: object) => boolean; + onRowAction?: (key: Key) => void; children: CollectionChildren<TableRowData>; + numColumns: number; - onViewMoreClick?: () => void; + paginationRow?: React.ReactNode; hideHeader?: boolean; withGradientCardRows?: boolean; @@ -302,7 +334,22 @@ const TableRoot = <TableRowData extends object | CustomRowConfig, TableRowKey ex withScrollSnapColumns?: boolean; withScrollSnapRows?: boolean; }) => { - const { selectionMode, selectionBehavior, numColumns, onViewMoreClick } = props; + const { + 'aria-label': ariaLabel, + selectionMode, + selectionBehavior, + getRowAttributes, + onRowAction, + numColumns, + paginationRow, + hideHeader, + withGradientCardRows, + withFocusStickyRows, + withOuterBorder, + withInnerBorders, + withScrollSnapColumns, + withScrollSnapRows, + } = props; const state = useTableState<TableRowData>({ ...props, @@ -311,47 +358,44 @@ const TableRoot = <TableRowData extends object | CustomRowConfig, TableRowKey ex const ref = React.useRef<HTMLTableElement>(null); const { collection } = state; + const { gridProps } = useTable( { - 'aria-label': props['aria-label'], - onRowAction: props.onRowAction as (key: Key) => void, + 'aria-label': ariaLabel, + onRowAction, }, state, ref ); return ( - <Styled.Table + <$Table ref={ref} {...gridProps} - hideHeader={props.hideHeader} - withGradientCardRows={props.withGradientCardRows} - withOuterBorder={props.withOuterBorder} - withInnerBorders={props.withInnerBorders} + hideHeader={hideHeader} + withGradientCardRows={withGradientCardRows} + withOuterBorder={withOuterBorder} + withInnerBorders={withInnerBorders} > <TableHeadRowGroup - hidden={props.hideHeader} - withGradientCardRows={props.withGradientCardRows} - withInnerBorders={props.withInnerBorders} + hidden={hideHeader} + withGradientCardRows={withGradientCardRows} + withInnerBorders={withInnerBorders} > {collection.headerRows.map((headerRow) => ( <TableHeaderRow key={headerRow.key} item={headerRow} state={state} - withScrollSnapRows={props.withScrollSnapRows} + withScrollSnapRows={withScrollSnapRows} > - {/* {Array.from(collection.getChildren!(headerRow.key), (column) => */} {[...headerRow.childNodes].map( (column) => ( - // column.props.isSelectionCell ? ( - // <TableSelectAllCell key={column.key} column={column} state={state} /> - // ) : ( <TableColumnHeader key={column.key} column={column} state={state} - withScrollSnapColumns={props.withScrollSnapColumns} + withScrollSnapColumns={withScrollSnapColumns} /> ) // ) @@ -361,20 +405,19 @@ const TableRoot = <TableRowData extends object | CustomRowConfig, TableRowKey ex </TableHeadRowGroup> <TableBodyRowGroup - withGradientCardRows={props.withGradientCardRows} - withInnerBorders={props.withInnerBorders} - withOuterBorder={props.withOuterBorder} + withGradientCardRows={withGradientCardRows} + withInnerBorders={withInnerBorders} + withOuterBorder={withOuterBorder} > - {/* {Array.from(collection.getChildren!(collection.body.key), (row) => */} {[...collection.body.childNodes].map((row) => (row.value as CustomRowConfig)?.slotCustomRow ? ( (row.value as CustomRowConfig).slotCustomRow({ item: row, state, - ...props.getRowAttributes?.(row.value!), - withGradientCardRows: props.withGradientCardRows, - withFocusStickyRows: props.withFocusStickyRows, - withScrollSnapRows: props.withScrollSnapRows, + ...getRowAttributes?.(row.value!), + withGradientCardRows, + withFocusStickyRows, + withScrollSnapRows, children: null, }) ) : ( @@ -382,18 +425,14 @@ const TableRoot = <TableRowData extends object | CustomRowConfig, TableRowKey ex key={row.key} item={row} state={state} - // shouldRowRender={props.shouldRowRender} - {...props.getRowAttributes?.(row.value)} - withGradientCardRows={props.withGradientCardRows} - withFocusStickyRows={props.withFocusStickyRows} - withScrollSnapRows={props.withScrollSnapRows} + hasRowAction={!!onRowAction} + {...getRowAttributes?.(row.value!)} + withGradientCardRows={withGradientCardRows} + withFocusStickyRows={withFocusStickyRows} + withScrollSnapRows={withScrollSnapRows} > - {/* {Array.from(collection.getChildren!(row.key), (cell) => */} {[...row.childNodes].map( (cell) => ( - // cell.props.isSelectionCell ? ( - // <TableCheckboxCell key={cell.key} cell={cell} state={state} /> - // ) : ( <TableCell key={cell.key} cell={cell} @@ -409,11 +448,21 @@ const TableRoot = <TableRowData extends object | CustomRowConfig, TableRowKey ex </TableRow> ) )} - {onViewMoreClick ? ( - <ViewMoreRow colSpan={numColumns} onClick={onViewMoreClick} /> - ) : undefined} </TableBodyRowGroup> - </Styled.Table> + {paginationRow && ( + <$Tfoot> + <$PaginationTr key="pagination"> + <td + colSpan={numColumns} + onMouseDown={(e) => e.preventDefault()} + onPointerDown={(e) => e.preventDefault()} + > + {paginationRow} + </td> + </$PaginationTr> + </$Tfoot> + )} + </$Table> ); }; @@ -430,14 +479,14 @@ const TableHeadRowGroup = ({ const { rowGroupProps } = useTableRowGroup(); return ( - <Styled.Thead + <$Thead {...rowGroupProps} hidden={hidden} withGradientCardRows={withGradientCardRows} withInnerBorders={withInnerBorders} > {children} - </Styled.Thead> + </$Thead> ); }; @@ -446,22 +495,22 @@ const TableBodyRowGroup = ({ withGradientCardRows, withInnerBorders, withOuterBorder, -}: { children: React.ReactNode } & StyleProps) => { +}: { children: React.ReactNode } & TableStyleProps) => { const { rowGroupProps } = useTableRowGroup(); return ( - <Styled.Tbody + <$Tbody {...rowGroupProps} withGradientCardRows={withGradientCardRows} withInnerBorders={withInnerBorders} withOuterBorder={withOuterBorder} > {children} - </Styled.Tbody> + </$Tbody> ); }; -const TableHeaderRow = <TableRowData extends object>({ +const TableHeaderRow = <TableRowData extends BaseTableRowData>({ item, state, children, @@ -476,13 +525,13 @@ const TableHeaderRow = <TableRowData extends object>({ const { rowProps } = useTableHeaderRow({ node: item }, state, ref); return ( - <Styled.Tr ref={ref} {...rowProps} withScrollSnapRows={withScrollSnapRows}> + <$Tr ref={ref} {...rowProps} withScrollSnapRows={withScrollSnapRows}> {children} - </Styled.Tr> + </$Tr> ); }; -const TableColumnHeader = <TableRowData extends object>({ +const TableColumnHeader = <TableRowData extends BaseTableRowData>({ column, state, withScrollSnapColumns, @@ -493,56 +542,40 @@ const TableColumnHeader = <TableRowData extends object>({ }) => { const ref = React.useRef<HTMLTableCellElement>(null); const { columnHeaderProps } = useTableColumnHeader({ node: column }, state, ref); - const { isFocusVisible, focusProps } = useFocusRing(); + const { focusProps } = useFocusRing(); return ( - <Styled.Th + <$Th {...mergeProps(columnHeaderProps, focusProps)} - colSpan={column.props.colspan} // data-focused={isFocusVisible || undefined} style={{ width: column.props?.width }} ref={ref} withScrollSnapColumns={withScrollSnapColumns} > - <Styled.Row> + <$Row> {column.rendered} {column.props.allowsSorting && ( - <Styled.SortArrow + <$SortArrow aria-hidden="true" sortDirection={ - state.sortDescriptor?.column === column.key && state.sortDescriptor?.direction + state.sortDescriptor?.column === column.key + ? state.sortDescriptor?.direction + : undefined } > <Icon iconName={IconName.Triangle} aria-hidden="true" /> - </Styled.SortArrow> + </$SortArrow> )} - </Styled.Row> - </Styled.Th> - ); -}; - -export const ViewMoreRow = ({ colSpan, onClick }: { colSpan: number; onClick: () => void }) => { - const stringGetter = useStringGetter(); - return ( - <Styled.ViewMoreTr key="viewmore"> - <Styled.Td - colSpan={colSpan} - onMouseDown={(e: MouseEvent) => e.preventDefault()} - onPointerDown={(e: MouseEvent) => e.preventDefault()} - > - <Styled.ViewMoreButton slotRight={<CaretIcon />} onClick={onClick}> - {stringGetter({ key: STRING_KEYS.VIEW_MORE })} - </Styled.ViewMoreButton> - </Styled.Td> - </Styled.ViewMoreTr> + </$Row> + </$Th> ); }; -export const TableRow = <TableRowData extends object>({ +export const TableRow = <TableRowData extends BaseTableRowData>({ item, children, state, - // shouldRowRender, + hasRowAction, withGradientCardRows, withFocusStickyRows, withScrollSnapRows, @@ -551,7 +584,7 @@ export const TableRow = <TableRowData extends object>({ item: TableCollection<TableRowData>['rows'][number]; children: React.ReactNode; state: TableState<TableRowData>; - // shouldRowRender?: (prevRowData: TableRowData, currentRowData: TableRowData) => boolean; + hasRowAction?: boolean; withGradientCardRows?: boolean; withFocusStickyRows?: boolean; withScrollSnapRows?: boolean; @@ -559,7 +592,7 @@ export const TableRow = <TableRowData extends object>({ const ref = React.useRef<HTMLTableRowElement>(null); const selectionManager = state.selectionManager; const isSelected = selectionManager.isSelected(item.key); - const isClickable = selectionManager.selectionBehavior === 'toggle'; + const isClickable = selectionManager.selectionBehavior === 'toggle' && hasRowAction; const { rowProps, isPressed } = useTableRow( { @@ -569,32 +602,25 @@ export const TableRow = <TableRowData extends object>({ ref ); - const { isFocusVisible, focusProps } = useFocusRing(); + const { focusProps } = useFocusRing(); return ( - <Styled.Tr + <$Tr ref={ref} data-selected={isSelected} - // data-focused={isFocusVisible || undefined} $data-isPressed={isPressed} {...mergeProps(rowProps, focusProps)} {...attrs} - withGradientCardRows={withGradientCardRows} withFocusStickyRows={withFocusStickyRows} withScrollSnapRows={withScrollSnapRows} isClickable={isClickable} > {children} - </Styled.Tr> + </$Tr> ); }; -// const TableRowMemo = React.memo( -// TableRow, -// (a, b) => !!b.shouldRowRender?.(a.item.value, b.item.value) -// ); - -const TableCell = <TableRowData extends object>({ +const TableCell = <TableRowData extends BaseTableRowData>({ cell, state, isActionable, @@ -605,10 +631,10 @@ const TableCell = <TableRowData extends object>({ }) => { const ref = React.useRef<HTMLTableCellElement>(null); const { gridCellProps } = useTableCell({ node: cell }, state, ref); - const { isFocusVisible, focusProps } = useFocusRing(); + const { focusProps } = useFocusRing(); return ( - <Styled.Td + <$Td {...mergeProps( isActionable ? { @@ -625,55 +651,18 @@ const TableCell = <TableRowData extends object>({ {/* <Styled.Row> */} {cell.rendered} {/* </Styled.Row> */} - </Styled.Td> + </$Td> ); }; -// const TableSelectAllCell = ({ column, state }) => { -// const ref = React.useRef<HTMLTableHeaderCellElement>(null); -// const isSingleSelectionMode = state.selectionManager.selectionMode === 'single'; -// const { columnHeaderProps } = useTableColumnHeader({ node: column }, state, ref); -// const { checkboxProps } = useTableSelectAllCheckbox(state); - -// return ( -// <Styled.Th -// {...columnHeaderProps} -// ref={ref} -// > -// {state.selectionManager.selectionMode === 'single' ? ( -// <VisuallyHidden>{inputProps['aria-label']}</VisuallyHidden> -// ) : ( -// <Checkbox {...checkboxProps} /> -// )} -// </Styled.Th> -// ); -// }; - -// const TableCheckboxCell = ({ cell, state }: { cell; state }) => { -// const ref = React.useRef<HTMLTableCellElement>(null); -// const { gridCellProps } = useTableCell({ node: cell }, state, ref); -// const { checkboxProps } = useTableSelectionCheckbox({ key: cell.parentKey }, state); - -// return ( -// <Styled.Td -// {...gridCellProps} -// ref={ref} -// > -// <Checkbox {...checkboxProps} /> -// </Styled.Td> -// ); -// }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.TableWrapper = styled.div<{ +const $TableWrapper = styled.div<{ isEmpty: boolean; withGradientCardRows?: boolean; withOuterBorder: boolean; }>` // Params - --tableHeader-textColor: var(--color-text-0, inherit); - --tableHeader-backgroundColor: inherit; + --tableStickyRow-textColor: var(--color-text-0, inherit); + --tableStickyRow-backgroundColor: inherit; --table-header-height: 2rem; --tableRow-hover-backgroundColor: var(--color-layer-3); @@ -684,8 +673,6 @@ Styled.TableWrapper = styled.div<{ --table-lastColumn-cell-align: end; // start | center | end | var(--table-cell-align) --tableCell-padding: 0 1rem; - --tableViewMore-borderColor: inherit; - // Rules flex: 1; @@ -705,7 +692,7 @@ Styled.TableWrapper = styled.div<{ `} `; -Styled.Empty = styled.div<{ withOuterBorder: boolean }>` +const $Empty = styled.div<{ withOuterBorder: boolean }>` ${layoutMixins.column} height: 100%; @@ -718,18 +705,22 @@ Styled.Empty = styled.div<{ withOuterBorder: boolean }>` font: var(--font-base-book); `; -Styled.Table = styled.table<{ +type StyledTableStyleProps = { hideHeader?: boolean; - withGradientCardRows: boolean; - withOuterBorder: boolean; - withInnerBorders: boolean; - withSolidHeader: boolean; -}>` + withGradientCardRows?: boolean; + withOuterBorder?: boolean; + withInnerBorders?: boolean; + withSolidHeader?: boolean; +}; + +const $Table = styled.table<StyledTableStyleProps>` align-self: start; ${layoutMixins.stickyArea1} --stickyArea1-background: var(--color-layer-2); --stickyArea1-topHeight: var(--table-header-height); + --stickyArea1-bottomHeight: var(--table-header-height); + ${({ hideHeader }) => hideHeader && css` @@ -775,10 +766,10 @@ Styled.Table = styled.table<{ } `; -Styled.Tr = styled.tr<{ +const $Tr = styled.tr<{ isClickable?: boolean; withFocusStickyRows?: boolean; - withScrollSnapRows: boolean; + withScrollSnapRows?: boolean; }>` /* Computed */ --tableRow-currentBackgroundColor: var(--tableRow-backgroundColor); @@ -816,7 +807,7 @@ Styled.Tr = styled.tr<{ `} `; -Styled.Th = styled.th<{ withScrollSnapColumns: boolean }>` +const $Th = styled.th<{ withScrollSnapColumns?: boolean }>` // Computed --table-cell-currentAlign: var(--table-cell-align); @@ -838,7 +829,7 @@ Styled.Th = styled.th<{ withScrollSnapColumns: boolean }>` text-align: var(--table-cell-currentAlign); `; -Styled.Td = styled.td` +const $Td = styled.td` // Computed --table-cell-currentAlign: var(--table-cell-align); @@ -859,7 +850,7 @@ Styled.Td = styled.td` } `; -Styled.SortArrow = styled.span<{ sortDirection: 'ascending' | 'descending' }>` +const $SortArrow = styled.span<{ sortDirection?: 'ascending' | 'descending' }>` float: right; margin-left: auto; @@ -868,16 +859,16 @@ Styled.SortArrow = styled.span<{ sortDirection: 'ascending' | 'descending' }>` font-size: 0.375em; - ${Styled.Th}[aria-sort="none"] & { + ${$Th}[aria-sort="none"] & { visibility: hidden; } - ${Styled.Th}[aria-sort="ascending"] & { + ${$Th}[aria-sort="ascending"] & { transform: scaleY(-1); } `; -Styled.Thead = styled.thead<StyleProps>` +const $Thead = styled.thead<TableStyleProps>` ${layoutMixins.stickyHeader} scroll-snap-align: none; font: var(--font-mini-book); @@ -886,8 +877,8 @@ Styled.Thead = styled.thead<StyleProps>` height: var(--stickyArea-topHeight); } - color: var(--tableHeader-textColor); - background-color: var(--tableHeader-backgroundColor); + color: var(--tableStickyRow-textColor); + background-color: var(--tableStickyRow-backgroundColor); ${({ withInnerBorders, withGradientCardRows }) => withInnerBorders && @@ -897,13 +888,25 @@ Styled.Thead = styled.thead<StyleProps>` `} `; -Styled.Tbody = styled.tbody<StyleProps>` +const $Tfoot = styled.tfoot` + ${layoutMixins.stickyFooter} + scroll-snap-align: none; + font: var(--font-mini-book); + + > * { + height: var(--stickyArea-bottomHeight); + } + + color: var(--tableStickyRow-textColor); + background-color: var(--tableStickyRow-backgroundColor); +`; + +const $Tbody = styled.tbody<TableStyleProps>` ${layoutMixins.stickyArea2} font: var(--font-small-book); // If <table> height is fixed with not enough rows to overflow, vertically center the rows - &:before, - &:after { + &:before { content: ''; display: table-row; } @@ -981,23 +984,11 @@ Styled.Tbody = styled.tbody<StyleProps>` `} `; -Styled.Row = styled.div` +const $Row = styled.div` ${layoutMixins.inlineRow} padding: var(--tableCell-padding); `; -Styled.ViewMoreButton = styled(Button)` - --button-backgroundColor: var(--color-layer-2); - --button-textColor: var(--color-text-1); - - width: 100%; - - svg { - width: 0.675rem; - margin-left: 0.5ch; - } -`; - -Styled.ViewMoreTr = styled(Styled.Tr)` - --border-color: var(--tableViewMore-borderColor); +const $PaginationTr = styled.tr` + box-shadow: 0 calc(-1 * var(--border-width)) 0 0 var(--border-color); `; diff --git a/src/components/Table/ActionsTableCell.tsx b/src/components/Table/ActionsTableCell.tsx new file mode 100644 index 000000000..69236d4a8 --- /dev/null +++ b/src/components/Table/ActionsTableCell.tsx @@ -0,0 +1,35 @@ +import React from 'react'; + +import styled, { css } from 'styled-components'; + +import { Toolbar } from '@/components/Toolbar'; + +type ElementProps = { + children: React.ReactNode; +}; + +export const ActionsTableCell = ({ children }: ElementProps) => ( + <$ActionsCell> + <$Toolbar $numChildren={React.Children.toArray(children).length}>{children}</$Toolbar> + </$ActionsCell> +); +const $ActionsCell = styled.div` + display: flex; + justify-content: flex-end; +`; + +const $Toolbar = styled(Toolbar)<{ $numChildren: number }>` + ${({ $numChildren }) => + $numChildren && + css` + width: calc(${$numChildren} * 2rem + (${$numChildren} - 1) * 0.5rem); + `} + + display: flex; + justify-content: flex-end; + padding: 0; + + > *:not(:last-child) { + margin-right: 0.5rem; + } +`; diff --git a/src/components/Table/AssetTableCell.tsx b/src/components/Table/AssetTableCell.tsx new file mode 100644 index 000000000..aab160df0 --- /dev/null +++ b/src/components/Table/AssetTableCell.tsx @@ -0,0 +1,52 @@ +import styled from 'styled-components'; + +import type { Asset } from '@/constants/abacus'; + +import { breakpoints } from '@/styles'; + +import { AssetIcon } from '@/components/AssetIcon'; +import { TableCell } from '@/components/Table'; +import { Tag } from '@/components/Tag'; + +interface AssetTableCellProps { + asset?: Asset; + className?: string; + stacked?: boolean; +} + +export const AssetTableCell = (props: AssetTableCellProps) => { + const { asset, stacked, className } = props; + + return ( + <TableCell className={className} slotLeft={<$AssetIcon stacked={stacked} symbol={asset?.id} />}> + <$TableCellContent stacked={stacked}> + <$Asset stacked={stacked}>{asset?.name}</$Asset> + {stacked ? <$AssetID>{asset?.id}</$AssetID> : <Tag>{asset?.id}</Tag>} + </$TableCellContent> + </TableCell> + ); +}; +const $TableCellContent = styled.div<{ stacked?: boolean }>` + gap: ${({ stacked }) => (stacked ? '0.125rem' : '0.75rem')}; + display: flex; + flex-direction: ${({ stacked }) => (stacked ? 'column' : 'row')}; + align-items: ${({ stacked }) => (stacked ? 'flex-start' : 'center')}; +`; + +const $AssetIcon = styled(AssetIcon)<{ stacked?: boolean }>` + font-size: ${({ stacked }) => (stacked ? '1.5rem' : '2rem')}; + + @media ${breakpoints.tablet} { + font-size: ${({ stacked }) => (stacked ? '1.5rem' : '2.25rem')}; + } +`; + +const $AssetID = styled.span` + color: var(--color-text-0); + font: var(--font-mini-medium); +`; + +const $Asset = styled.span<{ stacked?: boolean }>` + color: var(--color-text-1); + font: ${({ stacked }) => (stacked ? 'var(--font-small-medium)' : 'var(--font-medium-medium)')}; +`; diff --git a/src/components/Table/MarketTableCell.tsx b/src/components/Table/MarketTableCell.tsx index 4c6bd22ce..1354c5c60 100644 --- a/src/components/Table/MarketTableCell.tsx +++ b/src/components/Table/MarketTableCell.tsx @@ -1,41 +1,55 @@ -import styled, { type AnyStyledComponent, css } from 'styled-components'; +import styled from 'styled-components'; import type { Asset } from '@/constants/abacus'; + import { breakpoints } from '@/styles'; import { AssetIcon } from '@/components/AssetIcon'; import { Icon, IconName } from '@/components/Icon'; import { TableCell } from '@/components/Table'; +import { Output, OutputType, ShowSign } from '../Output'; + export const MarketTableCell = ({ asset, marketId, + leverage, showFavorite, + isHighlighted, className, }: { asset?: Asset; marketId: string; + leverage?: number; showFavorite?: boolean; + isHighlighted?: boolean; className?: string; }) => ( <TableCell className={className} + isHighlighted={isHighlighted} stacked slotLeft={ <> {showFavorite && <Icon iconName={IconName.Star} />} - <Styled.AssetIcon symbol={asset?.id} /> + <$AssetIcon symbol={asset?.id} /> </> } > - <Styled.Asset>{asset?.name}</Styled.Asset> - <span>{marketId}</span> + {leverage ? ( + <> + <span>{marketId}</span> + <Output type={OutputType.Multiple} value={leverage} showSign={ShowSign.None} /> + </> + ) : ( + <> + <$Asset>{asset?.name}</$Asset> + <span>{marketId}</span> + </> + )} </TableCell> ); - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.AssetIcon = styled(AssetIcon)` +const $AssetIcon = styled(AssetIcon)` font-size: 1.25rem; @media ${breakpoints.tablet} { @@ -43,7 +57,7 @@ Styled.AssetIcon = styled(AssetIcon)` } `; -Styled.Asset = styled.span` +const $Asset = styled.span` @media ${breakpoints.tablet} { color: var(--color-text-2); } diff --git a/src/components/Table/TableCell.tsx b/src/components/Table/TableCell.tsx index 7aa859676..f1b943148 100644 --- a/src/components/Table/TableCell.tsx +++ b/src/components/Table/TableCell.tsx @@ -1,6 +1,5 @@ -import styled, { type AnyStyledComponent } from 'styled-components'; +import styled, { css } from 'styled-components'; -import { layoutMixins } from '@/styles/layoutMixins'; import { tableMixins } from '@/styles/tableMixins'; export const TableCell = ({ @@ -9,26 +8,41 @@ export const TableCell = ({ slotLeft, slotRight, stacked, + stackedWithSecondaryStyling = stacked, + isHighlighted, }: { className?: string; children?: React.ReactNode; slotLeft?: React.ReactNode; slotRight?: React.ReactNode; stacked?: boolean; + isHighlighted?: boolean; + stackedWithSecondaryStyling?: boolean; }) => ( - <Styled.CellContent className={className}> + <$CellContent isHighlighted={isHighlighted} className={className}> {slotLeft} - {stacked ? <Styled.Column>{children}</Styled.Column> : children} + {stacked || stackedWithSecondaryStyling ? ( + <$Column stackedWithSecondaryStyling={stackedWithSecondaryStyling}>{children}</$Column> + ) : ( + children + )} {slotRight} - </Styled.CellContent> + </$CellContent> ); - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.CellContent = styled.div` +const $CellContent = styled.div<{ isHighlighted?: boolean }>` ${tableMixins.cellContent} + + ${({ isHighlighted }) => + isHighlighted && + css` + --primary-content-color: var(--color-text-2); + --secondary-content-color: var(--color-text-1); + `} `; -Styled.Column = styled.div` - ${tableMixins.cellContentColumn} +const $Column = styled.div<{ stackedWithSecondaryStyling?: boolean }>` + ${({ stackedWithSecondaryStyling }) => + stackedWithSecondaryStyling + ? tableMixins.cellContentColumnSecondary + : tableMixins.cellContentColumn} `; diff --git a/src/components/Table/TableColumnHeader.tsx b/src/components/Table/TableColumnHeader.tsx index 152cfa112..2bf0fefeb 100644 --- a/src/components/Table/TableColumnHeader.tsx +++ b/src/components/Table/TableColumnHeader.tsx @@ -1,4 +1,4 @@ -import styled, { type AnyStyledComponent } from 'styled-components'; +import styled from 'styled-components'; import { tableMixins } from '@/styles/tableMixins'; @@ -8,10 +8,7 @@ export const TableColumnHeader = ({ }: { className?: string; children?: React.ReactNode; -}) => <Styled.HeaderCellContent className={className}>{children}</Styled.HeaderCellContent>; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.HeaderCellContent = styled.div` +}) => <$HeaderCellContent className={className}>{children}</$HeaderCellContent>; +const $HeaderCellContent = styled.div` ${tableMixins.headerCellContent} `; diff --git a/src/components/Table/TablePaginationRow.tsx b/src/components/Table/TablePaginationRow.tsx new file mode 100644 index 000000000..fd023bdc4 --- /dev/null +++ b/src/components/Table/TablePaginationRow.tsx @@ -0,0 +1,128 @@ +import { Dispatch, SetStateAction } from 'react'; + +import styled from 'styled-components'; + +import { ButtonAction, ButtonShape, ButtonSize } from '@/constants/buttons'; +import { STRING_KEYS } from '@/constants/localization'; +import { type MenuItem } from '@/constants/menus'; + +import { useStringGetter } from '@/hooks/useStringGetter'; + +import { layoutMixins } from '@/styles/layoutMixins'; + +import { DropdownSelectMenu } from '@/components/DropdownSelectMenu'; +import { IconName } from '@/components/Icon'; +import { IconButton } from '@/components/IconButton'; +import { ToggleGroup } from '@/components/ToggleGroup'; + +export const PAGE_SIZES = [5, 10, 15, 20] as const; +export type PageSize = (typeof PAGE_SIZES)[number]; + +type ElementProps = { + currentPage: number; + pageSize: PageSize; + pages: MenuItem<string>[]; + totalRows: number; + setCurrentPage: Dispatch<SetStateAction<number>>; + setPageSize: Dispatch<SetStateAction<PageSize>>; +}; + +export const TablePaginationRow = ({ + currentPage, + pageSize, + pages, + totalRows, + setCurrentPage, + setPageSize, +}: ElementProps) => { + const stringGetter = useStringGetter(); + + const pageNumberToDisplay = (pageNumber: number) => String(pageNumber + 1); + const pageToggles = () => { + const buttonProps = { + action: ButtonAction.Navigation, + shape: ButtonShape.Square, + size: ButtonSize.XSmall, + }; + + return ( + <$InlineRow> + <IconButton + {...buttonProps} + iconName={IconName.ChevronLeft} + onClick={() => setCurrentPage(currentPage - 1)} + state={{ isDisabled: currentPage === 0 }} + /> + <$ToggleGroup + {...buttonProps} + value={pageNumberToDisplay(currentPage)} + items={pages} + onValueChange={(pageNumber: string) => setCurrentPage(Number(pageNumber) - 1)} + /> + <IconButton + {...buttonProps} + iconName={IconName.ChevronRight} + onClick={() => setCurrentPage(currentPage + 1)} + state={{ + isDisabled: pageNumberToDisplay(currentPage) === pages[pages.length - 1]?.value, + }} + /> + </$InlineRow> + ); + }; + + const pageSizeSelector = () => ( + <$InlineRow> + {stringGetter({ + key: STRING_KEYS.SHOW, + params: { + NUMBER: ( + <$DropdownSelectMenu + value={String(pageSize)} + items={PAGE_SIZES.map((size) => ({ + label: String(size), + value: String(size), + }))} + onValueChange={(value: String) => setPageSize(Number(value) as PageSize)} + /> + ), + }, + })} + </$InlineRow> + ); + + return ( + <$PaginationRow> + {stringGetter({ + key: STRING_KEYS.SHOWING_NUM_OUT_OF_TOTAL, + params: { + START: currentPage * pageSize + 1, + END: Math.min((currentPage + 1) * pageSize, totalRows), + TOTAL: totalRows, + }, + })} + {pageToggles()} + {pageSizeSelector()} + </$PaginationRow> + ); +}; + +const $InlineRow = styled.div` + ${layoutMixins.inlineRow} +`; + +const $PaginationRow = styled.div` + ${layoutMixins.spacedRow} + padding: var(--tableCell-padding) +`; + +const $ToggleGroup = styled(ToggleGroup)` + [data-disabled] { + border: none; + background-color: transparent; + } +`; + +const $DropdownSelectMenu = styled(DropdownSelectMenu)` + --dropdownSelectMenu-item-font-size: var(--fontSize-mini); +`; diff --git a/src/components/Tabs.stories.tsx b/src/components/Tabs.stories.tsx index 68fcf562a..5a8f85301 100644 --- a/src/components/Tabs.stories.tsx +++ b/src/components/Tabs.stories.tsx @@ -1,5 +1,5 @@ import type { Story } from '@ladle/react'; -import styled, { AnyStyledComponent } from 'styled-components'; +import styled from 'styled-components'; import { layoutMixins } from '@/styles/layoutMixins'; @@ -16,9 +16,9 @@ enum TabItem { export const TabsStory: Story<Parameters<typeof Tabs>[0]> = (args) => { return ( <StoryWrapper> - <Styled.Container> + <$Container> <Tabs {...args} /> - </Styled.Container> + </$Container> </StoryWrapper> ); }; @@ -51,10 +51,7 @@ TabsStory.argTypes = { defaultValue: TabItem.Item1, }, }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.Container = styled.section` +const $Container = styled.section` background: var(--color-layer-3); width: 400px; diff --git a/src/components/Tabs.tsx b/src/components/Tabs.tsx index 9012991d2..fe0ac7e25 100644 --- a/src/components/Tabs.tsx +++ b/src/components/Tabs.tsx @@ -1,12 +1,13 @@ import { type ReactNode } from 'react'; -import styled, { type AnyStyledComponent, css, keyframes } from 'styled-components'; + import { Content, List, Root, Trigger } from '@radix-ui/react-tabs'; +import styled, { css, keyframes } from 'styled-components'; + +import { type MenuItem } from '@/constants/menus'; import { breakpoints } from '@/styles'; import { layoutMixins } from '@/styles/layoutMixins'; -import { type MenuItem } from '@/constants/menus'; - import { DropdownSelectMenu } from '@/components/DropdownSelectMenu'; import { Tag } from '@/components/Tag'; import { Toolbar } from '@/components/Toolbar'; @@ -31,7 +32,7 @@ type ElementProps<TabItemsValue> = { slotToolbar?: ReactNode; sharedContent?: ReactNode; onValueChange?: (value: TabItemsValue) => void; - onWheel?: (event: WheelEvent) => void; + onWheel?: (event: React.WheelEvent) => void; }; type StyleProps = { @@ -62,74 +63,71 @@ export const Tabs = <TabItemsValue extends string>({ const triggers = ( <> - <Styled.List $fullWidthTabs={fullWidthTabs} $withBorders={withBorders}> + <$List $fullWidthTabs={fullWidthTabs} $withBorders={withBorders}> {items.map((item) => !item.subitems ? ( item.customTrigger ?? ( - <Styled.Trigger key={item.value} value={item.value} $withBorders={withBorders}> + <$Trigger key={item.value} value={item.value} $withBorders={withBorders}> {item.label} {item.tag && <Tag>{item.tag}</Tag>} {item.slotRight} - </Styled.Trigger> + </$Trigger> ) ) : ( - <Styled.DropdownSelectMenu + <$DropdownSelectMenu key={item.value ?? item.label} items={item.subitems as unknown as MenuItem<TabItemsValue>[]} value={value} onValueChange={onValueChange} align="end" $isActive={item.subitems.some((subitem) => subitem.value === value)} - slotTrigger={<Styled.DropdownTabTrigger />} + slotTrigger={<$DropdownTabTrigger value={value ?? ''} />} > {item.label} - </Styled.DropdownSelectMenu> + </$DropdownSelectMenu> ) )} - </Styled.List> + </$List> - {(currentItem?.slotToolbar || slotToolbar) && ( - <Toolbar>{currentItem?.slotToolbar || slotToolbar}</Toolbar> + {(currentItem?.slotToolbar ?? slotToolbar) && ( + <Toolbar>{currentItem?.slotToolbar ?? slotToolbar}</Toolbar> )} </> ); return ( - <Styled.Root + <$Root className={className} defaultValue={defaultValue} value={value} - onValueChange={onValueChange} + onValueChange={ + onValueChange != null ? (val) => onValueChange(val as TabItemsValue) : undefined + } onWheel={onWheel} $side={side} $withInnerBorder={withBorders} > - <Styled.Header $side={side}>{triggers}</Styled.Header> + <$Header $side={side}>{triggers}</$Header> - {sharedContent ? ( - sharedContent - ) : ( - <Styled.Stack> + {sharedContent ?? ( + <$Stack> {items.map(({ asChild, value, content, forceMount }) => ( - <Styled.Content + <$Content key={value} asChild={asChild} value={value} - forceMount={forceMount} + forceMount={!!forceMount ? true : undefined} $hide={forceMount && currentItem?.value !== value} $withTransitions={withTransitions} > {content} - </Styled.Content> + </$Content> ))} - </Styled.Stack> + </$Stack> )} - </Styled.Root> + </$Root> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - const tabTriggerStyle = css` ${layoutMixins.row} justify-content: center; @@ -148,7 +146,7 @@ const tabTriggerStyle = css` } `; -Styled.Root = styled(Root)<{ $side: 'top' | 'bottom'; $withInnerBorder?: boolean }>` +const $Root = styled(Root)<{ $side: 'top' | 'bottom'; $withInnerBorder?: boolean }>` /* Overrides */ --trigger-backgroundColor: var(--color-layer-2); --trigger-textColor: var(--color-text-0); @@ -196,7 +194,7 @@ Styled.Root = styled(Root)<{ $side: 'top' | 'bottom'; $withInnerBorder?: boolean } `; -Styled.Header = styled.header<{ $side: 'top' | 'bottom' }>` +const $Header = styled.header<{ $side: 'top' | 'bottom' }>` ${layoutMixins.contentSectionDetachedScrollable} ${({ $side }) => @@ -214,7 +212,7 @@ Styled.Header = styled.header<{ $side: 'top' | 'bottom' }>` justify-content: space-between; `; -Styled.List = styled(List)<{ $fullWidthTabs?: boolean; $withBorders?: boolean }>` +const $List = styled(List)<{ $fullWidthTabs?: boolean; $withBorders?: boolean }>` align-self: stretch; ${({ $withBorders }) => @@ -234,7 +232,7 @@ Styled.List = styled(List)<{ $fullWidthTabs?: boolean; $withBorders?: boolean }> `} `; -Styled.Trigger = styled(Trigger)<{ $withBorders?: boolean }>` +const $Trigger = styled(Trigger)<{ $withBorders?: boolean }>` ${({ $withBorders }) => $withBorders && css` @@ -244,13 +242,13 @@ Styled.Trigger = styled(Trigger)<{ $withBorders?: boolean }>` ${tabTriggerStyle} `; -Styled.Stack = styled.div` +const $Stack = styled.div` ${layoutMixins.stack} box-shadow: none; `; -Styled.Content = styled(Content)<{ $hide?: boolean; $withTransitions: boolean }>` +const $Content = styled(Content)<{ $hide?: boolean; $withTransitions: boolean }>` ${layoutMixins.flexColumn} outline: none; box-shadow: none; @@ -294,7 +292,7 @@ Styled.Content = styled(Content)<{ $hide?: boolean; $withTransitions: boolean }> } `; -Styled.DropdownTabTrigger = styled(Trigger)` +const $DropdownTabTrigger = styled(Trigger)` ${tabTriggerStyle} gap: 1ch; @@ -302,7 +300,7 @@ Styled.DropdownTabTrigger = styled(Trigger)` width: 100%; `; -Styled.DropdownSelectMenu = styled(DropdownSelectMenu)<{ $isActive?: boolean }>` +const $DropdownSelectMenu = styled(DropdownSelectMenu)<{ $isActive?: boolean }>` --trigger-radius: 0; ${({ $isActive }) => @@ -311,12 +309,14 @@ Styled.DropdownSelectMenu = styled(DropdownSelectMenu)<{ $isActive?: boolean }>` --trigger-textColor: var(--trigger-active-textColor); --trigger-backgroundColor: var(--trigger-active-backgroundColor); `} -`; +` as <MenuItemValue extends string>( + props: { $isActive?: boolean } & React.ComponentProps<typeof DropdownSelectMenu<MenuItemValue>> +) => ReactNode; export const MobileTabs = styled(Tabs)` --trigger-backgroundColor: transparent; --trigger-active-backgroundColor: transparent; - --tableHeader-backgroundColor: var(--color-layer-2); + --tableStickyRow-backgroundColor: var(--color-layer-2); --trigger-font: var(--font-extra-book); padding-bottom: 1rem; diff --git a/src/components/TimeoutButton.tsx b/src/components/TimeoutButton.tsx index 1f59548ed..8ffc0d270 100644 --- a/src/components/TimeoutButton.tsx +++ b/src/components/TimeoutButton.tsx @@ -1,10 +1,12 @@ -import { type ReactNode, useState, useEffect } from 'react'; +import { useEffect, useState, type ReactNode } from 'react'; import { ButtonAction, ButtonState } from '@/constants/buttons'; import { STRING_KEYS } from '@/constants/localization'; -import { useNow, useStringGetter } from '@/hooks'; -import { Button, type ButtonStateConfig, type ButtonProps } from '@/components/Button'; +import { useNow } from '@/hooks/useNow'; +import { useStringGetter } from '@/hooks/useStringGetter'; + +import { Button, type ButtonProps, type ButtonStateConfig } from '@/components/Button'; type ElementProps = { timeoutInSeconds: number; diff --git a/src/components/TimoutButton.stories.tsx b/src/components/TimoutButton.stories.tsx index a8dbbc889..1fd9b14a2 100644 --- a/src/components/TimoutButton.stories.tsx +++ b/src/components/TimoutButton.stories.tsx @@ -1,15 +1,12 @@ import type { Story } from '@ladle/react'; -import { StoryWrapper } from '.ladle/components'; import { TimeoutButton, type TimeoutButtonProps } from './TimeoutButton'; +import { StoryWrapper } from '.ladle/components'; export const TimeoutButtonStory: Story<TimeoutButtonProps> = (args) => { return ( <StoryWrapper> - <TimeoutButton - {...args} - onClick={() => alert('Timeout button clicked!')} - > + <TimeoutButton {...args} onClick={() => alert('Timeout button clicked!')}> Continue </TimeoutButton> </StoryWrapper> diff --git a/src/components/Toast.tsx b/src/components/Toast.tsx index 94dfe800e..39aa20abb 100644 --- a/src/components/Toast.tsx +++ b/src/components/Toast.tsx @@ -1,15 +1,17 @@ -import { type MouseEvent, useEffect, useRef, useState } from 'react'; +import { useEffect, useRef, useState, type MouseEvent } from 'react'; + +import { Action, Close, Root } from '@radix-ui/react-toast'; import styled, { keyframes } from 'styled-components'; -import { Root, Action, Close } from '@radix-ui/react-toast'; import { ButtonShape, ButtonSize } from '@/constants/buttons'; -import { popoverMixins } from '@/styles/popoverMixins'; + import { breakpoints } from '@/styles'; +import { popoverMixins } from '@/styles/popoverMixins'; import { Notification, type NotificationProps } from '@/components/Notification'; -import { IconButton } from './IconButton'; import { IconName } from './Icon'; +import { IconButton } from './IconButton'; type ElementProps = { isOpen?: boolean; @@ -79,7 +81,7 @@ export const Toast = ({ iconName={IconName.Close} shape={ButtonShape.Circle} size={ButtonSize.XSmall} - onClick={(e: MouseEvent) => e.stopPropagation()} + onClick={(e: React.MouseEvent) => e.stopPropagation()} /> </Close> @@ -93,10 +95,10 @@ export const Toast = ({ slotTitleRight={slotTitleRight} slotDescription={slotDescription} slotAction={ - actionDescription && ( - <$Action asChild altText={actionAltText}> + Boolean(slotAction && actionAltText) && ( + <Action asChild altText={actionAltText}> {slotAction} - </$Action> + </Action> ) } /> @@ -107,7 +109,7 @@ export const Toast = ({ const $Root = styled(Root)` // Params - --toast-transition-duration: 0.5s; + --toast-transition-duration: 0.3s; // Computed --x: var(--radix-toast-swipe-move-x, 0px); @@ -152,7 +154,7 @@ const $Root = styled(Root)` 33% { /* scale: 1.05; */ /* filter: brightness(120%); */ - filter: drop-shadow(0 0 var(--color-text-1)); + filter: drop-shadow(0 0 var(--color-text-0)); } `} calc(var(--toast-transition-duration) * 3) 0.1s; } @@ -261,7 +263,3 @@ const $CloseButton = styled(IconButton)` z-index: 2; } `; - -const $Action = styled(Action)` - margin-top: 0.5rem; -`; diff --git a/src/components/ToastArea.tsx b/src/components/ToastArea.tsx index 5aa9e980b..075d8fbf7 100644 --- a/src/components/ToastArea.tsx +++ b/src/components/ToastArea.tsx @@ -1,8 +1,5 @@ -import styled from 'styled-components'; - import { Provider, Viewport } from '@radix-ui/react-toast'; - -import { layoutMixins } from '@/styles/layoutMixins'; +import styled from 'styled-components'; type ElementProps = { swipeDirection: 'up' | 'down' | 'left' | 'right'; @@ -27,7 +24,7 @@ export const ToastArea = ({ swipeDirection, children, className }: ToastAreaProp const $ToastArea = styled.aside` // Params --toasts-gap: 0.5rem; - + // Rules z-index: 1; diff --git a/src/components/ToggleButton.stories.tsx b/src/components/ToggleButton.stories.tsx index 339b3d1c2..11b0c8b4e 100644 --- a/src/components/ToggleButton.stories.tsx +++ b/src/components/ToggleButton.stories.tsx @@ -2,8 +2,8 @@ import type { Story } from '@ladle/react'; import { ButtonShape, ButtonSize } from '@/constants/buttons'; -import { StoryWrapper } from '.ladle/components'; import { ToggleButton } from './ToggleButton'; +import { StoryWrapper } from '.ladle/components'; export const ToggleButtonStory: Story<Parameters<typeof ToggleButton>[0]> = (args) => ( <StoryWrapper> diff --git a/src/components/ToggleButton.tsx b/src/components/ToggleButton.tsx index c7f425408..98c994606 100644 --- a/src/components/ToggleButton.tsx +++ b/src/components/ToggleButton.tsx @@ -1,6 +1,7 @@ import { forwardRef } from 'react'; -import styled, { type AnyStyledComponent } from 'styled-components'; + import { Root } from '@radix-ui/react-toggle'; +import styled from 'styled-components'; import { BaseButton, type BaseButtonProps } from '@/components/BaseButton'; @@ -37,19 +38,16 @@ export const ToggleButton = forwardRef<HTMLButtonElement | HTMLAnchorElement, To ) => { return ( <Root pressed={isPressed} onPressedChange={onPressedChange} className={className} asChild> - <Styled.BaseButton ref={ref} disabled={disabled} {...buttonProps}> + <$BaseButton ref={ref} disabled={disabled} {...buttonProps}> {slotLeft} {children} {slotRight} - </Styled.BaseButton> + </$BaseButton> </Root> ); } ); - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.BaseButton = styled(BaseButton)` +const $BaseButton = styled(BaseButton)` --button-toggle-off-backgroundColor: var(--color-layer-3); --button-toggle-off-textColor: var(--color-text-0); --button-toggle-off-border: solid var(--border-width) var(--border-color); diff --git a/src/components/ToggleGroup.stories.tsx b/src/components/ToggleGroup.stories.tsx index 71ab558c5..7ca4e5e81 100644 --- a/src/components/ToggleGroup.stories.tsx +++ b/src/components/ToggleGroup.stories.tsx @@ -1,10 +1,11 @@ import { useState } from 'react'; + import type { Story } from '@ladle/react'; import { ButtonShape, ButtonSize } from '@/constants/buttons'; -import { StoryWrapper } from '.ladle/components'; import { ToggleGroup } from './ToggleGroup'; +import { StoryWrapper } from '.ladle/components'; const ToggleGroupItems = [ { diff --git a/src/components/ToggleGroup.tsx b/src/components/ToggleGroup.tsx index 246515e1b..175a2ba04 100644 --- a/src/components/ToggleGroup.tsx +++ b/src/components/ToggleGroup.tsx @@ -1,19 +1,24 @@ -import { forwardRef, type Ref } from 'react'; -import styled, { type AnyStyledComponent } from 'styled-components'; -import { Root, Item } from '@radix-ui/react-toggle-group'; +import { type Ref } from 'react'; + +import { Item, Root } from '@radix-ui/react-toggle-group'; +import styled from 'styled-components'; -import { type MenuItem } from '@/constants/menus'; import { ButtonShape, ButtonSize } from '@/constants/buttons'; -import { useBreakpoints } from '@/hooks'; +import { type MenuItem } from '@/constants/menus'; + +import { useBreakpoints } from '@/hooks/useBreakpoints'; + import { layoutMixins } from '@/styles/layoutMixins'; import { type BaseButtonProps } from '@/components/BaseButton'; import { ToggleButton } from '@/components/ToggleButton'; +import { forwardRefFn } from '@/lib/genericFunctionalComponentUtils'; + type ElementProps<MenuItemValue extends string> = { items: MenuItem<MenuItemValue>[]; value: MenuItemValue; - onValueChange: (value: any) => void; + onValueChange: (value: MenuItemValue) => void; onInteraction?: () => void; ensureSelected?: boolean; }; @@ -22,7 +27,7 @@ type StyleProps = { className?: string; }; -export const ToggleGroup = forwardRef( +export const ToggleGroup = forwardRefFn( <MenuItemValue extends string>( { items, @@ -42,7 +47,7 @@ export const ToggleGroup = forwardRef( const { isTablet } = useBreakpoints(); return ( - <Styled.Root + <$Root ref={ref} type="single" value={value} @@ -56,10 +61,11 @@ export const ToggleGroup = forwardRef( loop > {items.map((item) => ( - <Item key={item.value} value={item.value} asChild> + <Item key={item.value} value={item.value} disabled={item.disabled} asChild> <ToggleButton - size={size ? size : isTablet ? ButtonSize.Small : ButtonSize.XSmall} + size={size ?? (isTablet ? ButtonSize.Small : ButtonSize.XSmall)} shape={shape} + disabled={item.disabled} {...buttonProps} > {item.slotBefore} @@ -67,14 +73,11 @@ export const ToggleGroup = forwardRef( </ToggleButton> </Item> ))} - </Styled.Root> + </$Root> ); } ); - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.Root = styled(Root)` +const $Root = styled(Root)` ${layoutMixins.row} gap: 0.33em; `; diff --git a/src/components/Toolbar.tsx b/src/components/Toolbar.tsx index 1da0ec510..978296c9d 100644 --- a/src/components/Toolbar.tsx +++ b/src/components/Toolbar.tsx @@ -1,9 +1,10 @@ -import styled, { type AnyStyledComponent } from 'styled-components'; +import { Root } from '@radix-ui/react-toolbar'; +import styled from 'styled-components'; -import { Root, Button, Separator, Link, ToggleGroup, ToggleItem } from '@radix-ui/react-toolbar'; -import { WithSeparators } from './Separator'; import { layoutMixins } from '@/styles/layoutMixins'; +import { WithSeparators } from './Separator'; + type ElementProps = { children: React.ReactNode; }; @@ -20,7 +21,7 @@ export const Toolbar = ({ withSeparators = false, className, }: ElementProps & StyleProps) => ( - <Styled.Root className={className} layout={layout}> + <$Root className={className} layout={layout}> <WithSeparators layout={layout} withSeparators={withSeparators}> {children} @@ -34,12 +35,9 @@ export const Toolbar = ({ </Button> ))} */} </WithSeparators> - </Styled.Root> + </$Root> ); - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.Root = styled(Root)<{ layout?: 'column' | 'row' }>` +const $Root = styled(Root)<{ layout?: 'column' | 'row' }>` ${({ layout }) => layout && { diff --git a/src/components/TriangleIndicator.stories.tsx b/src/components/TriangleIndicator.stories.tsx index 9e1f44f7e..2c77567ff 100644 --- a/src/components/TriangleIndicator.stories.tsx +++ b/src/components/TriangleIndicator.stories.tsx @@ -1,22 +1,24 @@ -import { useEffect, useState } from 'react'; -import styled, { AnyStyledComponent } from 'styled-components'; +import { useState } from 'react'; + import type { Story } from '@ladle/react'; +import styled from 'styled-components'; import { layoutMixins } from '@/styles/layoutMixins'; -import { TriangleIndicator, TriangleIndicatorProps } from '@/components/TriangleIndicator'; +import { TriangleIndicator } from '@/components/TriangleIndicator'; -import { StoryWrapper } from '.ladle/components'; import { MustBigNumber } from '@/lib/numbers'; +import { StoryWrapper } from '.ladle/components'; + export const TriangleIndicatorStory: Story<{ value: number }> = (args) => { const [valueBN] = useState(MustBigNumber(args.value)); return ( <StoryWrapper> - <Styled.Container> + <$Container> <TriangleIndicator value={valueBN} /> - </Styled.Container> + </$Container> </StoryWrapper> ); }; @@ -24,10 +26,7 @@ export const TriangleIndicatorStory: Story<{ value: number }> = (args) => { TriangleIndicatorStory.args = { value: 0, }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.Container = styled.section` +const $Container = styled.section` background: var(--color-layer-3); ${layoutMixins.container} diff --git a/src/components/TriangleIndicator.tsx b/src/components/TriangleIndicator.tsx index d3fd1221d..49560644b 100644 --- a/src/components/TriangleIndicator.tsx +++ b/src/components/TriangleIndicator.tsx @@ -1,5 +1,5 @@ -import styled, { AnyStyledComponent, css } from 'styled-components'; import BigNumber from 'bignumber.js'; +import styled, { AnyStyledComponent, css } from 'styled-components'; import { NumberSign } from '@/constants/numbers'; @@ -20,15 +20,12 @@ const getSign = (num: BigNumber) => export const TriangleIndicator = ({ className, value }: TriangleIndicatorProps) => { return ( - <Styled.TriangleIndicator className={className} sign={getSign(value)}> + <$TriangleIndicator className={className} sign={getSign(value)}> <Icon iconName={IconName.Triangle} /> - </Styled.TriangleIndicator> + </$TriangleIndicator> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.TriangleIndicator = styled.div<{ sign: NumberSign }>` +const $TriangleIndicator = styled.div<{ sign: NumberSign }>` display: flex; align-items: center; height: 100%; diff --git a/src/components/UsageBars.stories.tsx b/src/components/UsageBars.stories.tsx index 0b2e32417..fe399bf1c 100644 --- a/src/components/UsageBars.stories.tsx +++ b/src/components/UsageBars.stories.tsx @@ -1,5 +1,5 @@ -import styled, { AnyStyledComponent } from 'styled-components'; import type { Story } from '@ladle/react'; +import styled from 'styled-components'; import { layoutMixins } from '@/styles/layoutMixins'; @@ -9,19 +9,16 @@ import { StoryWrapper } from '.ladle/components'; export const UsageBarsStory: Story<{ value: number }> = (args) => ( <StoryWrapper> - <Styled.Container> + <$Container> <UsageBars {...args} /> - </Styled.Container> + </$Container> </StoryWrapper> ); UsageBarsStory.args = { value: 0, }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.Container = styled.section` +const $Container = styled.section` ${layoutMixins.container} background: var(--color-layer-3); diff --git a/src/components/UsageBars.tsx b/src/components/UsageBars.tsx index 3b77a1700..a645b846a 100644 --- a/src/components/UsageBars.tsx +++ b/src/components/UsageBars.tsx @@ -1,4 +1,4 @@ -import styled, { type AnyStyledComponent } from 'styled-components'; +import styled from 'styled-components'; import { type RiskLevels } from '@/constants/abacus'; @@ -14,9 +14,9 @@ type StyleProps = { }; export const UsageBars = ({ value, className }: ElementProps & StyleProps) => ( - <Styled.UsageBars className={className} riskLevel={abacusHelper.leverageRiskLevel(value ?? 0)}> + <$UsageBars className={className} riskLevel={abacusHelper.leverageRiskLevel(value ?? 0)}> {Array.from({ length: 3 }, (_, i) => ( - <Styled.Bar + <$Bar key={i} style={{ '--i': i, @@ -25,12 +25,9 @@ export const UsageBars = ({ value, className }: ElementProps & StyleProps) => ( active={i <= abacusHelper.leverageRiskLevel(value ?? 0).ordinal} /> ))} - </Styled.UsageBars> + </$UsageBars> ); - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.UsageBars = styled.div<{ riskLevel: RiskLevels }>` +const $UsageBars = styled.div<{ riskLevel: RiskLevels }>` ${({ riskLevel }) => UsageColorFromRiskLevel(riskLevel)} width: 0.875rem; @@ -40,7 +37,7 @@ Styled.UsageBars = styled.div<{ riskLevel: RiskLevels }>` justify-content: space-between; `; -Styled.Bar = styled.div<{ active: boolean }>` +const $Bar = styled.div<{ active: boolean; style?: { [custom: string]: string | number } }>` --active-delay: calc(0.2s * calc(var(--i) + 1)); max-width: 3px; diff --git a/src/components/WithConfirmationPopover.stories.tsx b/src/components/WithConfirmationPopover.stories.tsx index 2032932ab..c43814b9c 100644 --- a/src/components/WithConfirmationPopover.stories.tsx +++ b/src/components/WithConfirmationPopover.stories.tsx @@ -1,4 +1,5 @@ -import { type ChangeEvent, useState } from 'react'; +import { useState, type ChangeEvent } from 'react'; + import type { Story } from '@ladle/react'; import { @@ -6,8 +7,8 @@ import { WithConfirmationPopoverProps, } from '@/components/WithConfirmationPopover'; -import { StoryWrapper } from '.ladle/components'; import { Input, InputType } from './Input'; +import { StoryWrapper } from '.ladle/components'; export const WithConfirmationPopoverStory: Story<WithConfirmationPopoverProps> = (args) => { const [textValue, setTextValue] = useState(''); diff --git a/src/components/WithConfirmationPopover.tsx b/src/components/WithConfirmationPopover.tsx index eaae6108b..d20c351b1 100644 --- a/src/components/WithConfirmationPopover.tsx +++ b/src/components/WithConfirmationPopover.tsx @@ -2,15 +2,15 @@ import { forwardRef, type FormEvent, type FormEventHandler, - type MouseEventHandler, type ReactElement, type Ref, } from 'react'; -import styled, { AnyStyledComponent } from 'styled-components'; import { Anchor, Content, Portal, Root, Trigger } from '@radix-ui/react-popover'; +import styled from 'styled-components'; import { ButtonType } from '@/constants/buttons'; + import { layoutMixins } from '@/styles/layoutMixins'; import { IconName } from '@/components/Icon'; @@ -19,7 +19,7 @@ import { IconButton } from '@/components/IconButton'; type ElementProps = { children?: ReactElement; asChild?: boolean; - onCancel?: MouseEventHandler<HTMLAnchorElement> | MouseEventHandler<HTMLButtonElement>; + onCancel?: () => void; onConfirm?: FormEventHandler; open?: boolean; onOpenChange?: (open: boolean) => void; @@ -57,14 +57,14 @@ export const WithConfirmationPopover = forwardRef( </Trigger> <Portal> - <Styled.Content + <$Content ref={ref} className={className} sideOffset={sideOffset} align={align} - onOpenAutoFocus={(e: FocusEvent) => e.preventDefault()} + onOpenAutoFocus={(e: Event) => e.preventDefault()} > - <Styled.Form + <$Form onSubmit={(e: FormEvent) => { e.preventDefault(); e.stopPropagation(); @@ -73,22 +73,17 @@ export const WithConfirmationPopover = forwardRef( }} > {children} - <Styled.ConfirmationButtons> - {onCancel && <Styled.CancelButton iconName={IconName.Close} onClick={onCancel} />} - {onConfirm && ( - <Styled.ConfirmButton iconName={IconName.Check} type={ButtonType.Submit} /> - )} - </Styled.ConfirmationButtons> - </Styled.Form> - </Styled.Content> + <$ConfirmationButtons> + {onCancel && <$CancelButton iconName={IconName.Close} onClick={onCancel} />} + {onConfirm && <$ConfirmButton iconName={IconName.Check} type={ButtonType.Submit} />} + </$ConfirmationButtons> + </$Form> + </$Content> </Portal> </Root> ) ); - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.Content = styled(Content)` +const $Content = styled(Content)` z-index: 1; &:focus-visible { @@ -96,24 +91,24 @@ Styled.Content = styled(Content)` } `; -Styled.Form = styled.form` +const $Form = styled.form` ${layoutMixins.column} gap: 0.25rem; `; -Styled.ConfirmationButtons = styled.div` +const $ConfirmationButtons = styled.div` ${layoutMixins.row}; justify-content: flex-end; gap: 0.25rem; `; -Styled.IconButton = styled(IconButton)` +const $IconButton = styled(IconButton)` --button-height: 1.25rem; --button-font: var(--font-tiny-book); `; -Styled.ConfirmButton = styled(Styled.IconButton)` +const $ConfirmButton = styled($IconButton)` --button-backgroundColor: hsla(203, 25%, 19%, 1); svg { @@ -121,7 +116,7 @@ Styled.ConfirmButton = styled(Styled.IconButton)` } `; -Styled.CancelButton = styled(Styled.IconButton)` +const $CancelButton = styled($IconButton)` --button-backgroundColor: hsla(296, 16%, 18%, 1); svg { diff --git a/src/components/WithDetailsReceipt.stories.tsx b/src/components/WithDetailsReceipt.stories.tsx index 730a78a81..43780c985 100644 --- a/src/components/WithDetailsReceipt.stories.tsx +++ b/src/components/WithDetailsReceipt.stories.tsx @@ -1,10 +1,9 @@ import type { Story } from '@ladle/react'; import { Button } from '@/components/Button'; - import { WithDetailsReceipt, WithDetailsReceiptProps } from '@/components/WithDetailsReceipt'; -import { type DetailsItem } from './Details'; +import { type DetailsItem } from './Details'; import { StoryWrapper } from '.ladle/components'; const detailItems: DetailsItem[] = [ diff --git a/src/components/WithDetailsReceipt.tsx b/src/components/WithDetailsReceipt.tsx index 44fb64eeb..ca5b1ad78 100644 --- a/src/components/WithDetailsReceipt.tsx +++ b/src/components/WithDetailsReceipt.tsx @@ -1,4 +1,4 @@ -import styled, { type AnyStyledComponent } from 'styled-components'; +import styled from 'styled-components'; import { Details, type DetailsItem } from '@/components/Details'; import { WithReceipt } from '@/components/WithReceipt'; @@ -27,15 +27,12 @@ export const WithDetailsReceipt = ({ className={className} hideReceipt={hideReceipt} side={side} - slotReceipt={detailItems && <Styled.Details items={detailItems} />} + slotReceipt={detailItems && <$Details items={detailItems} />} > {children} </WithReceipt> ); - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.Details = styled(Details)` +const $Details = styled(Details)` --details-item-backgroundColor: var(--withReceipt-backgroundColor); padding: 0.375rem 0.75rem 0.25rem; diff --git a/src/components/WithHovercard.stories.tsx b/src/components/WithHovercard.stories.tsx new file mode 100644 index 000000000..5e2d506c0 --- /dev/null +++ b/src/components/WithHovercard.stories.tsx @@ -0,0 +1,40 @@ +import type { Story } from '@ladle/react'; + +import { tooltipStrings } from '@/constants/tooltips'; + +import { Button } from '@/components/Button'; +import { WithHovercard } from '@/components/WithHovercard'; + +import { StoryWrapper } from '.ladle/components'; + +export const Hovercard: Story<Parameters<typeof WithHovercard>[0]> = (args) => { + return ( + <StoryWrapper> + <WithHovercard + {...args} + slotTrigger={<div>Trigger</div>} + slotButton={<Button>Button</Button>} + /> + </StoryWrapper> + ); +}; + +Hovercard.args = {}; + +Hovercard.argTypes = { + align: { + options: ['start', 'center', 'end'], + control: { type: 'select' }, + defaultValue: 'start', + }, + side: { + options: ['top', 'bottom', 'left', 'right'], + control: { type: 'select' }, + defaultValue: 'top', + }, + hovercard: { + options: Object.keys(tooltipStrings), + control: { type: 'select' }, + defaultValue: Object.keys(tooltipStrings)[0], + }, +}; diff --git a/src/components/WithHovercard.tsx b/src/components/WithHovercard.tsx new file mode 100644 index 000000000..978fd3c06 --- /dev/null +++ b/src/components/WithHovercard.tsx @@ -0,0 +1,82 @@ +import type { ReactNode } from 'react'; + +import { Content, Portal, Root, Trigger } from '@radix-ui/react-hover-card'; +import styled from 'styled-components'; + +import { tooltipStrings } from '@/constants/tooltips'; + +import { useStringGetter } from '@/hooks/useStringGetter'; + +import { popoverMixins } from '@/styles/popoverMixins'; + +type ElementProps = { + hovercard?: keyof typeof tooltipStrings; + stringParams?: Record<string, string | undefined>; + slotTrigger?: ReactNode; + slotButton?: ReactNode; +}; + +type StyleProps = { + className?: string; + align?: 'start' | 'center' | 'end'; + side?: 'top' | 'right' | 'bottom' | 'left'; +}; + +export const WithHovercard = ({ + hovercard, + stringParams, + slotTrigger, + slotButton, + className, + align, + side, +}: ElementProps & StyleProps) => { + const stringGetter = useStringGetter(); + + const getHovercardStrings = hovercard && tooltipStrings[hovercard]; + + let hovercardTitle; + let hovercardBody; + + if (getHovercardStrings) { + const { title, body } = getHovercardStrings({ + stringGetter, + stringParams, + }); + hovercardTitle = title; + hovercardBody = body; + } + + return ( + <Root openDelay={300}> + {slotTrigger && <Trigger asChild>{slotTrigger}</Trigger>} + <Portal> + <$Content className={className} align={align} alignOffset={-16} side={side} sideOffset={8}> + {hovercardTitle && <$Title>{hovercardTitle}</$Title>} + {hovercardBody && <p>{hovercardBody}</p>} + {slotButton} + </$Content> + </Portal> + </Root> + ); +}; +const $Content = styled(Content)` + ${popoverMixins.popover} + --popover-backgroundColor: var(--color-layer-6); + + ${popoverMixins.popoverAnimation} + --popover-closed-height: auto; + + display: grid; + max-width: 30ch; + gap: 0.5rem; + padding: 0.75em; + + font-size: 0.8125em; + border-radius: 0.33rem; +`; + +const $Title = styled.h3` + font: var(--font-small-bold); + color: var(--color-text-2); +`; diff --git a/src/components/WithLabel.stories.tsx b/src/components/WithLabel.stories.tsx index 9e819bf0e..16db7ff02 100644 --- a/src/components/WithLabel.stories.tsx +++ b/src/components/WithLabel.stories.tsx @@ -1,21 +1,22 @@ import { useState } from 'react'; + import type { Story } from '@ladle/react'; +import styled from 'styled-components'; + +import { layoutMixins } from '@/styles/layoutMixins'; import { Input, InputType } from '@/components/Input'; import { WithLabel } from '@/components/WithLabel'; import { StoryWrapper } from '.ladle/components'; -import styled, { type AnyStyledComponent } from 'styled-components'; -import { layoutMixins } from '@/styles/layoutMixins'; - export const WithLabelStory: Story<Parameters<typeof WithLabel>[0]> = (args) => { const [firstName, setFirstName] = useState(''); const [lastName, setLastName] = useState(''); return ( <StoryWrapper> - <Styled.Column> + <$Column> <WithLabel {...args}> <Input onChange={(e: React.ChangeEvent<HTMLInputElement>) => setFirstName(e.target.value)} @@ -32,7 +33,7 @@ export const WithLabelStory: Story<Parameters<typeof WithLabel>[0]> = (args) => value={lastName} /> </WithLabel> - </Styled.Column> + </$Column> </StoryWrapper> ); }; @@ -40,10 +41,7 @@ export const WithLabelStory: Story<Parameters<typeof WithLabel>[0]> = (args) => WithLabelStory.args = { label: 'First Name', }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.Column = styled.div` +const $Column = styled.div` ${layoutMixins.column} gap: 1rem; `; diff --git a/src/components/WithLabel.tsx b/src/components/WithLabel.tsx index 83e5f4bd1..96d0ef012 100644 --- a/src/components/WithLabel.tsx +++ b/src/components/WithLabel.tsx @@ -1,4 +1,4 @@ -import styled, { type AnyStyledComponent } from 'styled-components'; +import styled from 'styled-components'; import { layoutMixins } from '@/styles/layoutMixins'; @@ -13,22 +13,19 @@ type StyleProps = { }; export const WithLabel = ({ label, inputID, children, className }: ElementProps & StyleProps) => ( - <Styled.WithLabel className={className}> - <Styled.Label htmlFor={inputID}>{label}</Styled.Label> + <$WithLabel className={className}> + <$Label htmlFor={inputID}>{label}</$Label> {children} - </Styled.WithLabel> + </$WithLabel> ); - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.WithLabel = styled.div` +const $WithLabel = styled.div` --label-textColor: var(--color-text-1); display: grid; gap: 0.5rem; `; -Styled.Label = styled.label` +const $Label = styled.label` ${layoutMixins.inlineRow} font: var(--font-mini-book); color: var(--label-textColor); diff --git a/src/components/WithReceipt.stories.tsx b/src/components/WithReceipt.stories.tsx index e38f7c898..600f23724 100644 --- a/src/components/WithReceipt.stories.tsx +++ b/src/components/WithReceipt.stories.tsx @@ -1,7 +1,6 @@ import type { Story } from '@ladle/react'; import { Button } from '@/components/Button'; - import { WithReceipt } from '@/components/WithReceipt'; import { StoryWrapper } from '.ladle/components'; diff --git a/src/components/WithReceipt.tsx b/src/components/WithReceipt.tsx index 8b3c405b5..1794d3ae9 100644 --- a/src/components/WithReceipt.tsx +++ b/src/components/WithReceipt.tsx @@ -1,5 +1,6 @@ import { type ReactNode } from 'react'; -import styled, { type AnyStyledComponent, css } from 'styled-components'; + +import styled, { css } from 'styled-components'; type ElementProps = { slotReceipt?: ReactNode; @@ -23,23 +24,17 @@ export const WithReceipt = ({ return <>{children}</>; } - const receipt = <Styled.SlotReceipt>{slotReceipt}</Styled.SlotReceipt>; + const receipt = <$SlotReceipt>{slotReceipt}</$SlotReceipt>; return ( - <Styled.WithReceipt - className={className} - hideReceipt={hideReceipt} - > + <$WithReceipt className={className} hideReceipt={hideReceipt}> {side === 'top' && receipt} {children} {side === 'bottom' && receipt} - </Styled.WithReceipt> + </$WithReceipt> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.WithReceipt = styled.div<{ hideReceipt?: boolean }>` +const $WithReceipt = styled.div<{ hideReceipt?: boolean }>` --withReceipt-backgroundColor: var(--color-layer-1); display: grid; @@ -51,11 +46,11 @@ Styled.WithReceipt = styled.div<{ hideReceipt?: boolean }>` css` background-color: transparent; - ${Styled.SlotReceipt} { + ${$SlotReceipt} { height: 0; opacity: 0; } `} `; -Styled.SlotReceipt = styled.div``; +const $SlotReceipt = styled.div``; diff --git a/src/components/WithSidebar.tsx b/src/components/WithSidebar.tsx index 676c63444..56dd24c63 100644 --- a/src/components/WithSidebar.tsx +++ b/src/components/WithSidebar.tsx @@ -1,16 +1,18 @@ import React from 'react'; + import { useDispatch, useSelector } from 'react-redux'; -import styled, { type AnyStyledComponent, keyframes } from 'styled-components'; +import styled, { keyframes } from 'styled-components'; import { ButtonShape, ButtonSize } from '@/constants/buttons'; import { STRING_KEYS } from '@/constants/localization'; -import { useStringGetter } from '@/hooks'; + +import { useStringGetter } from '@/hooks/useStringGetter'; import { breakpoints } from '@/styles'; import { layoutMixins } from '@/styles/layoutMixins'; -import { ToggleButton } from '@/components/ToggleButton'; import { Icon, IconName } from '@/components/Icon'; +import { ToggleButton } from '@/components/ToggleButton'; import { setIsSidebarOpen } from '@/state/layout'; import { getIsSidebarOpen } from '@/state/layoutSelectors'; @@ -28,10 +30,10 @@ export const WithSidebar: React.FC<WithSidebarProps> = ({ children, sidebar }) = const stringGetter = useStringGetter(); return ( - <Styled.Container data-state={!sidebar ? 'none' : isSidebarOpen ? 'open' : 'closed'}> + <$Container data-state={!sidebar ? 'none' : isSidebarOpen ? 'open' : 'closed'}> {sidebar && ( - <Styled.Side> - <Styled.TriggerButton + <$Side> + <$TriggerButton shape={ButtonShape.Pill} size={isSidebarOpen ? ButtonSize.XSmall : ButtonSize.Base} isPressed={!isSidebarOpen} @@ -42,20 +44,17 @@ export const WithSidebar: React.FC<WithSidebarProps> = ({ children, sidebar }) = ) : ( <Icon iconName={IconName.Menu} /> )} - </Styled.TriggerButton> + </$TriggerButton> - <Styled.Sidebar data-state={isSidebarOpen ? 'open' : 'closed'}>{sidebar}</Styled.Sidebar> - </Styled.Side> + <$Sidebar data-state={isSidebarOpen ? 'open' : 'closed'}>{sidebar}</$Sidebar> + </$Side> )} - <Styled.Content>{children}</Styled.Content> - </Styled.Container> + <$Content>{children}</$Content> + </$Container> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.Container = styled.div` +const $Container = styled.div` /* Params */ --withSidebar-containerWidth: 100vw; --withSidebar-open-sidebarWidth: var(--sidebar-width); @@ -110,7 +109,7 @@ Styled.Container = styled.div` grid-template: var(--withSidebar-gridTemplate); `; -Styled.Side = styled.aside` +const $Side = styled.aside` grid-area: Side; ${layoutMixins.container} @@ -123,7 +122,7 @@ Styled.Side = styled.aside` ${layoutMixins.stack} `; -Styled.Sidebar = styled.div` +const $Sidebar = styled.div` --current-sidebar-width: var(--sidebar-width); ${layoutMixins.scrollArea} @@ -147,7 +146,7 @@ Styled.Sidebar = styled.div` } `; -Styled.TriggerButton = styled(ToggleButton)` +const $TriggerButton = styled(ToggleButton)` --button-toggle-on-backgroundColor: transparent; place-self: start end; @@ -191,7 +190,7 @@ Styled.TriggerButton = styled(ToggleButton)` } `; -Styled.Content = styled.article` +const $Content = styled.article` grid-area: Content; ${layoutMixins.contentContainerPage} diff --git a/src/components/WithTooltip.stories.tsx b/src/components/WithTooltip.stories.tsx index 5058d2c6b..38f6bacbd 100644 --- a/src/components/WithTooltip.stories.tsx +++ b/src/components/WithTooltip.stories.tsx @@ -1,9 +1,9 @@ import type { Story } from '@ladle/react'; -import { WithTooltip } from '@/components/WithTooltip'; - import { tooltipStrings } from '@/constants/tooltips'; +import { WithTooltip } from '@/components/WithTooltip'; + import { StoryWrapper } from '.ladle/components'; export const Tooltip: Story<Parameters<typeof WithTooltip>[0]> = (args) => { diff --git a/src/components/WithTooltip.tsx b/src/components/WithTooltip.tsx index a817f3a5b..d7a6c7038 100644 --- a/src/components/WithTooltip.tsx +++ b/src/components/WithTooltip.tsx @@ -1,22 +1,24 @@ import type { ReactNode } from 'react'; -import styled, { AnyStyledComponent } from 'styled-components'; -import { Content, Portal, Provider, Root, Trigger, Arrow } from '@radix-ui/react-tooltip'; + +import { Arrow, Content, Portal, Provider, Root, Trigger } from '@radix-ui/react-tooltip'; +import styled from 'styled-components'; import { STRING_KEYS } from '@/constants/localization'; import { tooltipStrings } from '@/constants/tooltips'; -import { useStringGetter, useURLConfigs } from '@/hooks'; - -import { Icon, IconName } from '@/components/Icon'; -import { Link } from '@/components/Link'; +import { useStringGetter } from '@/hooks/useStringGetter'; +import { useURLConfigs } from '@/hooks/useURLConfigs'; import { layoutMixins } from '@/styles/layoutMixins'; import { popoverMixins } from '@/styles/popoverMixins'; +import { Icon, IconName } from '@/components/Icon'; +import { Link } from '@/components/Link'; + type ElementProps = { tooltip?: keyof typeof tooltipStrings; tooltipString?: string; - stringParams?: Record<string, string>; + stringParams?: Record<string, string | undefined>; withIcon?: boolean; children?: ReactNode; slotTooltip?: ReactNode; @@ -66,38 +68,35 @@ export const WithTooltip = ({ <Provider> <Root delayDuration={300}> <Trigger asChild> - <Styled.Abbr> + <$Abbr> {children} - {withIcon && <Styled.Icon iconName={IconName.HelpCircle} />} - </Styled.Abbr> + {withIcon && <$Icon iconName={IconName.HelpCircle} />} + </$Abbr> </Trigger> <Portal> - <Styled.Content sideOffset={8} side={side} align={align} className={className} asChild> + <$Content sideOffset={8} side={side} align={align} className={className} asChild> {slotTooltip ?? ( <dl> {tooltipTitle && <dt>{tooltipTitle}</dt>} {tooltipBody && <dd>{tooltipBody}</dd>} {tooltipLearnMore && ( <dd> - <Styled.LearnMore href={tooltipLearnMore}> + <$LearnMore href={tooltipLearnMore}> {stringGetter({ key: STRING_KEYS.LEARN_MORE })} → - </Styled.LearnMore> + </$LearnMore> </dd> )} - <Styled.Arrow /> + <$Arrow /> </dl> )} - </Styled.Content> + </$Content> </Portal> </Root> </Provider> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.Abbr = styled.abbr` +const $Abbr = styled.abbr` ${layoutMixins.inlineRow} text-decoration: underline dashed 0px; @@ -108,7 +107,7 @@ Styled.Abbr = styled.abbr` cursor: help; `; -Styled.Content = styled(Content)` +const $Content = styled(Content)` --tooltip-backgroundColor: var(--color-layer-4); --tooltip-backgroundColor: ${({ theme }) => theme.tooltipBackground}; @@ -138,7 +137,7 @@ Styled.Content = styled(Content)` } `; -Styled.Arrow = styled(Arrow)` +const $Arrow = styled(Arrow)` width: 0.75rem; height: 0.375rem; @@ -147,10 +146,10 @@ Styled.Arrow = styled(Arrow)` } `; -Styled.Icon = styled(Icon)` +const $Icon = styled(Icon)` color: var(--color-text-0); `; -Styled.LearnMore = styled(Link)` +const $LearnMore = styled(Link)` --link-color: var(--color-accent); `; diff --git a/src/components/visx/AxisLabelOutput.tsx b/src/components/visx/AxisLabelOutput.tsx index fe0bd6cf7..654dd5764 100644 --- a/src/components/visx/AxisLabelOutput.tsx +++ b/src/components/visx/AxisLabelOutput.tsx @@ -1,24 +1,17 @@ -import styled, { css, type AnyStyledComponent } from 'styled-components'; +import styled, { css } from 'styled-components'; import { Output } from '../Output'; -type ElementProps = { - children: React.ReactNode; -} & Parameters<typeof Output>[0]; +type ElementProps = Parameters<typeof Output>[0]; type StyleProps = { accentColor?: string; }; -export const AxisLabelOutput = ({ children, accentColor, ...props }: ElementProps & StyleProps) => ( - <Styled.AxisLabelOutput accentColor={accentColor} {...props}> - {children} - </Styled.AxisLabelOutput> +export const AxisLabelOutput = ({ accentColor, ...props }: ElementProps & StyleProps) => ( + <$AxisLabelOutput accentColor={accentColor} {...props} /> ); - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.AxisLabelOutput = styled(Output)<{ accentColor?: string }>` +const $AxisLabelOutput = styled(Output)<{ accentColor?: string }>` --accent-color: var(--color-layer-6); ${({ accentColor }) => diff --git a/src/components/visx/SparklineChart.tsx b/src/components/visx/SparklineChart.tsx new file mode 100644 index 000000000..2fa8b7c7c --- /dev/null +++ b/src/components/visx/SparklineChart.tsx @@ -0,0 +1,79 @@ +import { curveNatural } from '@visx/curve'; +import { LinearGradient } from '@visx/gradient'; +import { ParentSize } from '@visx/responsive'; +import { Axis, LineSeries, XYChart, buildChartTheme, darkTheme } from '@visx/xychart'; +import styled from 'styled-components'; + +interface SparklineChartProps<Datum extends {}> { + data: Datum[]; + positive: boolean; + xAccessor: (_: Datum) => number; + yAccessor: (_: Datum) => number; +} + +const theme = buildChartTheme({ + ...darkTheme, + colors: ['var(--color-positive)', 'var(--color-negative)'], + tickLength: 0, + gridColor: 'transparent', + gridColorDark: 'transparent', +}); + +export const SparklineChart = <Datum extends {}>(props: SparklineChartProps<Datum>) => { + const { data, positive, xAccessor, yAccessor } = props; + + return ( + <$ParentSize> + {({ height, width }: { width: number; height: number }) => ( + <XYChart + width={width} + height={height} + margin={{ top: 0, right: 0, bottom: 0, left: 0 }} + xScale={{ + type: 'linear', + clamp: false, + nice: false, + zero: false, + }} + yScale={{ + type: 'linear', + clamp: true, + nice: true, + zero: false, + }} + theme={theme} + > + <Axis orientation="bottom" hideAxisLine numTicks={0} hideTicks hideZero /> + <Axis orientation="left" hideAxisLine numTicks={0} hideTicks hideZero /> + <LinearGradient + id="sparkline-gradient-positive" + from="var(--color-positive)" + to="var(--color-positive)" + toOpacity={0.4} + /> + <LinearGradient + id="sparkline-gradient-negative" + from="var(--color-negative)" + to="var(--color-negative)" + toOpacity={0.4} + /> + <LineSeries + dataKey="Sparkline" + data={data} + xAccessor={xAccessor} + yAccessor={yAccessor} + curve={curveNatural} + stroke={ + positive ? 'url(#sparkline-gradient-positive)' : 'url(#sparkline-gradient-negative)' + } + /> + </XYChart> + )} + </$ParentSize> + ); +}; +const $ParentSize = styled(ParentSize)` + & > svg { + overflow: visible; + } +`; diff --git a/src/components/visx/TimeSeriesChart.tsx b/src/components/visx/TimeSeriesChart.tsx index 43adba270..d03d2c121 100644 --- a/src/components/visx/TimeSeriesChart.tsx +++ b/src/components/visx/TimeSeriesChart.tsx @@ -1,31 +1,34 @@ import React, { useEffect, useMemo, useState } from 'react'; -import styled, { AnyStyledComponent, keyframes } from 'styled-components'; - -import { allTimeUnits } from '@/constants/time'; -import { useBreakpoints } from '@/hooks'; -import { useAnimationFrame } from '@/hooks/useAnimationFrame'; -import { layoutMixins } from '@/styles/layoutMixins'; +import { LinearGradient } from '@visx/gradient'; import { ParentSize } from '@visx/responsive'; +import type { ScaleConfig } from '@visx/scale'; import { - XYChart, Axis, - Grid, DataProvider, EventEmitterProvider, - LineSeries, GlyphSeries, - type Margin, + Grid, + LineSeries, + XYChart, type AxisScale, + type Margin, type TooltipContextType, } from '@visx/xychart'; -import type { ScaleConfig } from '@visx/scale'; -import { LinearGradient } from '@visx/gradient'; -import Tooltip from '@/components/visx/XYChartTooltipWithBounds'; import { RenderTooltipParams } from '@visx/xychart/lib/components/Tooltip'; +import styled, { keyframes } from 'styled-components'; + +import { allTimeUnits } from '@/constants/time'; + +import { useAnimationFrame } from '@/hooks/useAnimationFrame'; +import { useBreakpoints } from '@/hooks/useBreakpoints'; + +import { layoutMixins } from '@/styles/layoutMixins'; + +import Tooltip from '@/components/visx/XYChartTooltipWithBounds'; -import { clamp, lerp, map } from '@/lib/math'; import { formatAbsoluteTime } from '@/lib/dateTime'; +import { clamp, lerp, map } from '@/lib/math'; import { objectEntries } from '@/lib/objectEntries'; import { XYChartThreshold, type Threshold } from './XYChartThreshold'; @@ -155,11 +158,17 @@ export const TimeSeriesChart = <Datum extends {}>({ useAnimationFrame( (elapsedMilliseconds) => { if (zoomDomainAnimateTo) { - setZoomDomain( - (zoomDomain) => - zoomDomain && - zoomDomain * (zoomDomainAnimateTo / zoomDomain) ** (elapsedMilliseconds * 0.0166) - ); + setZoomDomain((zoomDomain) => { + if (!zoomDomain) return zoomDomain; + + const newZoomDomain = + zoomDomain * (zoomDomainAnimateTo / zoomDomain) ** (elapsedMilliseconds * 0.01); + + // clamp according to direction + return zoomDomainAnimateTo > zoomDomain + ? Math.min(newZoomDomain, zoomDomainAnimateTo) + : Math.max(newZoomDomain, zoomDomainAnimateTo); + }); } }, [zoomDomainAnimateTo] @@ -167,7 +176,13 @@ export const TimeSeriesChart = <Datum extends {}>({ // Computations const { zoom, domain, range, visibleData } = useMemo(() => { - if (!zoomDomain) return {}; + if (!zoomDomain) + return { + zoom: 1, + domain: [0, 1] as [number, number], + range: [0, 1] as [number, number], + visibleData: data, + }; const zoom = zoomDomain / minZoomDomain; @@ -181,7 +196,6 @@ export const TimeSeriesChart = <Datum extends {}>({ ); const range = visibleData - .filter((datum) => xAccessor(datum) >= domain[0] && xAccessor(datum) <= domain[1]) .map((datum) => yAccessor(datum)) .reduce((range, y) => [Math.min(range[0], y), Math.max(range[1], y)] as const, [ Infinity, @@ -198,7 +212,9 @@ export const TimeSeriesChart = <Datum extends {}>({ }, [visibleData]); // Events - const onWheel = ({ deltaX, deltaY }: WheelEvent) => { + const onWheel = ({ deltaX, deltaY }: React.WheelEvent) => { + if (!zoomDomain) return; + setZoomDomain( clamp( Math.max(1e-320, Math.min(Number.MAX_SAFE_INTEGER, zoomDomain * Math.exp(deltaY / 1000))), @@ -213,7 +229,7 @@ export const TimeSeriesChart = <Datum extends {}>({ }; return ( - <Styled.Container onWheel={onWheel} className={className}> + <$Container onWheel={onWheel} className={className}> {data.length && zoomDomain ? ( <DataProvider xScale={{ @@ -238,7 +254,7 @@ export const TimeSeriesChart = <Datum extends {}>({ }} > <EventEmitterProvider> - <Styled.ParentSize> + <$ParentSize> {({ width, height }: { width: number; height: number }) => { const numTicksX = (width - (margin?.left ?? 0) - (margin?.right ?? 0)) / tickSpacingX; @@ -334,7 +350,7 @@ export const TimeSeriesChart = <Datum extends {}>({ {!isMobile && ( <> {margin?.left && margin.left > 0 && ( - <Styled.YAxisBackground x="0" y="0" width={margin.left} height="100%" /> + <$YAxisBackground x="0" y="0" width={margin.left} height="100%" /> )} <Axis @@ -396,7 +412,7 @@ export const TimeSeriesChart = <Datum extends {}>({ </XYChart> ); }} - </Styled.ParentSize> + </$ParentSize> </EventEmitterProvider> </DataProvider> ) : ( @@ -404,13 +420,11 @@ export const TimeSeriesChart = <Datum extends {}>({ )} {children} - </Styled.Container> + </$Container> ); }; -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.Container = styled.div` +const $Container = styled.div` ${layoutMixins.stack} width: 0; min-width: 100%; @@ -449,7 +463,7 @@ Styled.Container = styled.div` } `; -Styled.ParentSize = styled(ParentSize)` +const $ParentSize = styled(ParentSize)` min-height: 0; display: grid; @@ -457,7 +471,7 @@ Styled.ParentSize = styled(ParentSize)` overscroll-behavior: contain; `; -Styled.YAxisBackground = styled.foreignObject` +const $YAxisBackground = styled.foreignObject` background: var(--stickyArea-background); /* Safari */ diff --git a/src/components/visx/TooltipContent.tsx b/src/components/visx/TooltipContent.tsx index 7b594f14d..d65728b10 100644 --- a/src/components/visx/TooltipContent.tsx +++ b/src/components/visx/TooltipContent.tsx @@ -1,4 +1,4 @@ -import styled, { css, type AnyStyledComponent } from 'styled-components'; +import styled, { css } from 'styled-components'; import { popoverMixins } from '@/styles/popoverMixins'; @@ -11,12 +11,9 @@ type StyleProps = { }; export const TooltipContent = ({ children, accentColor }: ElementProps & StyleProps) => ( - <Styled.TooltipContent accentColor={accentColor}>{children}</Styled.TooltipContent> + <$TooltipContent accentColor={accentColor}>{children}</$TooltipContent> ); - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.TooltipContent = styled.aside<{ accentColor?: string }>` +const $TooltipContent = styled.aside<{ accentColor?: string }>` --accent-color: currentColor; ${({ accentColor }) => diff --git a/src/components/visx/XYChartThreshold.tsx b/src/components/visx/XYChartThreshold.tsx index c360b6ecc..e45050d1a 100644 --- a/src/components/visx/XYChartThreshold.tsx +++ b/src/components/visx/XYChartThreshold.tsx @@ -1,6 +1,7 @@ +import { useContext } from 'react'; + import { Threshold } from '@visx/threshold'; import { DataContext } from '@visx/xychart'; -import { useContext } from 'react'; /** A visx <Threshold> that scales based on the nearest <DataProvider>. Use inside <XYChart>. */ export const XYChartThreshold = <Datum extends {}>({ @@ -12,14 +13,18 @@ export const XYChartThreshold = <Datum extends {}>({ const { xScale, yScale } = useContext(DataContext); return xScale && yScale ? ( - <> - <Threshold<Datum> - x={(datum, index, data) => xScale(typeof x === 'function' ? x(datum, index, data) : x) as number} - y0={(datum, index, data) => yScale(typeof y0 === 'function' ? y0(datum, index, data) : y0) as number} - y1={(datum, index, data) => yScale(typeof y1 === 'function' ? y1(datum, index, data) : y1) as number} - {...props} - /> - </> + <Threshold<Datum> + x={(datum, index, data) => + xScale(typeof x === 'function' ? x(datum, index, data) : x) as number + } + y0={(datum, index, data) => + yScale(typeof y0 === 'function' ? y0(datum, index, data) : y0) as number + } + y1={(datum, index, data) => + yScale(typeof y1 === 'function' ? y1(datum, index, data) : y1) as number + } + {...props} + /> ) : null; }; diff --git a/src/components/visx/XYChartTooltipWithBounds.tsx b/src/components/visx/XYChartTooltipWithBounds.tsx index c9633b25f..952be1633 100644 --- a/src/components/visx/XYChartTooltipWithBounds.tsx +++ b/src/components/visx/XYChartTooltipWithBounds.tsx @@ -1,16 +1,14 @@ // Forked from original XYChart Tooltip to use TooltipWithBounds instead of TooltipInPortal: // https://github.com/airbnb/visx/blob/master/packages/visx-xychart/src/components/Tooltip.tsx - import React, { Fragment, useCallback, useContext, useEffect } from 'react'; +import { Group } from '@visx/group'; +import { PickD3Scale } from '@visx/scale'; import { TooltipWithBounds } from '@visx/tooltip'; import type { TooltipProps as BaseTooltipProps } from '@visx/tooltip/lib/tooltips/Tooltip'; -import { PickD3Scale } from '@visx/scale'; -import { Group } from '@visx/group'; - import { - TooltipContext, DataContext, + TooltipContext, type GlyphProps as RenderGlyphProps, type TooltipContextType, } from '@visx/xychart'; @@ -66,7 +64,7 @@ export type TooltipProps<Datum extends object> = { onTooltipContext?: (tooltipContext: TooltipContextType<Datum>) => void; }; -function DefaultGlyph<Datum extends object>(props: RenderTooltipGlyphProps<Datum>) { +const DefaultGlyph = <Datum extends object>(props: RenderTooltipGlyphProps<Datum>) => { const { theme } = useContext(DataContext) || {}; return ( @@ -81,13 +79,13 @@ function DefaultGlyph<Datum extends object>(props: RenderTooltipGlyphProps<Datum {...props.glyphStyle} /> ); -} +}; function defaultRenderGlyph<Datum extends object>(props: RenderTooltipGlyphProps<Datum>) { return <DefaultGlyph {...props} />; } -function TooltipInner<Datum extends object>({ +const TooltipInner = <Datum extends object>({ horizontalCrosshairStyle, glyphStyle, onTooltipContext, @@ -105,7 +103,7 @@ function TooltipInner<Datum extends object>({ snapCrosshairToDatumY = true, verticalCrosshairStyle, ...tooltipProps -}: TooltipProps<Datum>) { +}: TooltipProps<Datum>) => { const { colorScale, theme, @@ -293,7 +291,7 @@ function TooltipInner<Datum extends object>({ </foreignObject> </g> ) : null; -} +}; /** * This is a wrapper component which bails early if tooltip is not visible. diff --git a/src/components/visx/XYChartWithPointerEvents.tsx b/src/components/visx/XYChartWithPointerEvents.tsx index a35d2a3e5..14fcd5a6e 100644 --- a/src/components/visx/XYChartWithPointerEvents.tsx +++ b/src/components/visx/XYChartWithPointerEvents.tsx @@ -1,8 +1,9 @@ import React, { PropsWithChildren, useContext, useState } from 'react'; -import { Point } from '@visx/point'; import { localPoint } from '@visx/event'; -import { XYChart, DataContext, type EventHandlerParams } from '@visx/xychart'; +import { Point } from '@visx/point'; +import { DataContext, XYChart, type EventHandlerParams } from '@visx/xychart'; + import { getScaleBandwidth } from '@/components/visx/getScaleBandwidth'; export const XYChartWithPointerEvents = ({ diff --git a/src/components/visx/getScaleBandwidth.ts b/src/components/visx/getScaleBandwidth.ts index 700e234d2..1e95aee61 100644 --- a/src/components/visx/getScaleBandwidth.ts +++ b/src/components/visx/getScaleBandwidth.ts @@ -1,5 +1,4 @@ // https://github.com/airbnb/visx/blob/master/packages/visx-xychart/src/typeguards/isValidNumber.ts - import { AxisScale } from '@visx/axis'; export function getScaleBandwidth<Scale extends AxisScale>(scale?: Scale) { diff --git a/src/constants/abacus.ts b/src/constants/abacus.ts index ac44cf3fc..46154ddff 100644 --- a/src/constants/abacus.ts +++ b/src/constants/abacus.ts @@ -1,7 +1,8 @@ import Abacus, { kollections } from '@dydxprotocol/v4-abacus'; import { OrderSide } from '@dydxprotocol/v4-client-js'; -import { PositionSide, TradeTypes } from './trade'; + import { STRING_KEYS } from './localization'; +import { PositionSide, TradeTypes } from './trade'; export type Nullable<T> = T | null | undefined; @@ -45,6 +46,10 @@ export type AbacusTrackingProtocol = Omit< Abacus.exchange.dydx.abacus.protocols.TrackingProtocol, '__doNotUseOrImplementIt' >; +export type AbacusLoggingProtocol = Omit< + Abacus.exchange.dydx.abacus.protocols.LoggingProtocol, + '__doNotUseOrImplementIt' +>; export type FileLocation = Abacus.exchange.dydx.abacus.protocols.FileLocation; export type ThreadingType = Abacus.exchange.dydx.abacus.protocols.ThreadingType; @@ -107,6 +112,7 @@ export type TradeInputs = Abacus.exchange.dydx.abacus.output.input.TradeInput; export type ClosePositionInputs = Abacus.exchange.dydx.abacus.output.input.ClosePositionInput; export type TradeInputSummary = Abacus.exchange.dydx.abacus.output.input.TradeInputSummary; export type TransferInputs = Abacus.exchange.dydx.abacus.output.input.TransferInput; +export type TriggerOrdersInputs = Abacus.exchange.dydx.abacus.output.input.TriggerOrdersInput; export type InputError = Abacus.exchange.dydx.abacus.output.input.ValidationError; export type TransferInputTokenResource = Abacus.exchange.dydx.abacus.output.input.TransferInputTokenResource; @@ -144,7 +150,7 @@ export type SubaccountTransfers = Abacus.exchange.dydx.abacus.output.SubaccountT // ------ Historical PnL ------ // export type SubAccountHistoricalPNL = Abacus.exchange.dydx.abacus.output.SubaccountHistoricalPNL; export type SubAccountHistoricalPNLs = Abacus.exchange.dydx.abacus.output.SubaccountHistoricalPNL[]; -export const HistoricalPnlPeriod = Abacus.exchange.dydx.abacus.protocols.HistoricalPnlPeriod; +export const HistoricalPnlPeriod = Abacus.exchange.dydx.abacus.state.manager.HistoricalPnlPeriod; const historicalPnlPeriod = [...HistoricalPnlPeriod.values()] as const; export type HistoricalPnlPeriods = (typeof historicalPnlPeriod)[number]; @@ -174,20 +180,34 @@ export const ClosePositionInputField = const closePositionInputFields = [...ClosePositionInputField.values()] as const; export type ClosePositionInputFields = (typeof closePositionInputFields)[number]; +// ------ Trigger Order Items ------ // +export const TriggerOrdersInputField = + Abacus.exchange.dydx.abacus.state.model.TriggerOrdersInputField; +const triggerOrdersInputFields = [...TriggerOrdersInputField.values()] as const; +export type TriggerOrdersInputFields = (typeof triggerOrdersInputFields)[number]; +export type TriggerOrdersInputPrice = Abacus.exchange.dydx.abacus.output.input.TriggerPrice; +export type TriggerOrdersTriggerOrder = Abacus.exchange.dydx.abacus.output.input.TriggerOrder; + export type ValidationError = Abacus.exchange.dydx.abacus.output.input.ValidationError; export const TradeInputErrorAction = Abacus.exchange.dydx.abacus.output.input.ErrorAction; export type AbacusOrderTypes = Abacus.exchange.dydx.abacus.output.input.OrderType; export type AbacusOrderSides = Abacus.exchange.dydx.abacus.output.input.OrderSide; +export type AbacusOrderTimeInForces = Abacus.exchange.dydx.abacus.output.input.OrderTimeInForce; export const AbacusOrderType = Abacus.exchange.dydx.abacus.output.input.OrderType; export const AbacusOrderSide = Abacus.exchange.dydx.abacus.output.input.OrderSide; +export const AbacusOrderTimeInForce = Abacus.exchange.dydx.abacus.output.input.OrderTimeInForce; export const AbacusPositionSide = Abacus.exchange.dydx.abacus.output.PositionSide; export type AbacusPositionSides = Abacus.exchange.dydx.abacus.output.PositionSide; +export const AbacusMarginMode = Abacus.exchange.dydx.abacus.output.input.MarginMode; + export type HumanReadablePlaceOrderPayload = Abacus.exchange.dydx.abacus.state.manager.HumanReadablePlaceOrderPayload; export type HumanReadableCancelOrderPayload = Abacus.exchange.dydx.abacus.state.manager.HumanReadableCancelOrderPayload; +export type HumanReadableTriggerOrdersPayload = + Abacus.exchange.dydx.abacus.state.manager.HumanReadableTriggerOrdersPayload; export type HumanReadableWithdrawPayload = Abacus.exchange.dydx.abacus.state.manager.HumanReadableWithdrawPayload; export type HumanReadableTransferPayload = @@ -209,6 +229,11 @@ export const RestrictionType = Abacus.exchange.dydx.abacus.output.Restriction; const restrictionTypes = [...RestrictionType.values()] as const; export type RestrictionTypes = (typeof restrictionTypes)[number]; +// ------ Compliance ------ // +export const ComplianceStatus = Abacus.exchange.dydx.abacus.output.ComplianceStatus; +export const ComplianceAction = Abacus.exchange.dydx.abacus.output.ComplianceAction; +export type Compliance = Abacus.exchange.dydx.abacus.output.Compliance; + // ------ Api data ------ // export const ApiData = Abacus.exchange.dydx.abacus.state.manager.ApiData; @@ -274,8 +299,8 @@ export const ORDER_STATUS_STRINGS: Record<KotlinIrEnumValues<typeof AbacusOrderS [AbacusOrderStatus.pending.name]: STRING_KEYS.PENDING, [AbacusOrderStatus.pending.rawValue]: STRING_KEYS.PENDING, - [AbacusOrderStatus.untriggered.name]: STRING_KEYS.UNTRIGGERED, - [AbacusOrderStatus.untriggered.rawValue]: STRING_KEYS.UNTRIGGERED, + [AbacusOrderStatus.untriggered.name]: STRING_KEYS.CREATED, + [AbacusOrderStatus.untriggered.rawValue]: STRING_KEYS.CREATED, }; export const TRADE_TYPES: Record< @@ -319,6 +344,13 @@ export const TRADE_TYPES: Record< [AbacusOrderType.finalSettlement.rawValue]: null, }; +export const MARGIN_MODE_STRINGS: Record<string, string> = { + [AbacusMarginMode.cross.name]: STRING_KEYS.CROSS, + [AbacusMarginMode.cross.rawValue]: STRING_KEYS.CROSS, + [AbacusMarginMode.isolated.name]: STRING_KEYS.ISOLATED, + [AbacusMarginMode.isolated.rawValue]: STRING_KEYS.ISOLATED, +}; + // Custom types involving Abacus export type NetworkConfig = Partial<{ diff --git a/src/constants/account.ts b/src/constants/account.ts index c353fe9c0..3ec81060f 100644 --- a/src/constants/account.ts +++ b/src/constants/account.ts @@ -44,4 +44,10 @@ export type EvmDerivedAddresses = { }; }; +export type Hdkey = { + mnemonic: string; + privateKey: Uint8Array | null; + publicKey: Uint8Array | null; +}; + export const AMOUNT_RESERVED_FOR_GAS_USDC = 0.1; diff --git a/src/constants/analytics.ts b/src/constants/analytics.ts index 1392cfdbb..8e47dc0cf 100644 --- a/src/constants/analytics.ts +++ b/src/constants/analytics.ts @@ -1,16 +1,18 @@ -import type { SupportedLocales } from './localization'; -import type { DydxNetwork } from './networks'; +import type { AbacusApiStatus, HumanReadablePlaceOrderPayload } from './abacus'; import type { OnboardingState, OnboardingSteps } from './account'; -import type { DydxAddress, WalletType, WalletConnectionType, EvmAddress } from './wallets'; import type { DialogTypes } from './dialogs'; +import type { SupportedLocales } from './localization'; +import type { DydxNetwork } from './networks'; +import { TransferNotificationTypes } from './notifications'; import type { TradeTypes } from './trade'; -import type { AbacusApiStatus, HumanReadablePlaceOrderPayload } from './abacus'; +import type { DydxAddress, EvmAddress, WalletConnectionType, WalletType } from './wallets'; // User properties export enum AnalyticsUserProperty { // Environment Locale = 'selectedLocale', Breakpoint = 'breakpoint', + Version = 'version', // Network Network = 'network', @@ -30,23 +32,25 @@ export type AnalyticsUserPropertyValue<T extends AnalyticsUserProperty> = T extends AnalyticsUserProperty.Breakpoint ? 'MOBILE' | 'TABLET' | 'DESKTOP_SMALL' | 'DESKTOP_MEDIUM' | 'DESKTOP_LARGE' | 'UNSUPPORTED' : T extends AnalyticsUserProperty.Locale - ? SupportedLocales - : // Network - T extends AnalyticsUserProperty.Network - ? DydxNetwork - : // Wallet - T extends AnalyticsUserProperty.WalletType - ? WalletType | undefined - : T extends AnalyticsUserProperty.WalletConnectionType - ? WalletConnectionType | undefined - : T extends AnalyticsUserProperty.WalletAddress - ? EvmAddress | DydxAddress | undefined - : // Account - T extends AnalyticsUserProperty.DydxAddress - ? DydxAddress | undefined - : T extends AnalyticsUserProperty.SubaccountNumber - ? number | undefined - : undefined; + ? SupportedLocales + : T extends AnalyticsUserProperty.Version + ? string | undefined + : // Network + T extends AnalyticsUserProperty.Network + ? DydxNetwork + : // Wallet + T extends AnalyticsUserProperty.WalletType + ? WalletType | undefined + : T extends AnalyticsUserProperty.WalletConnectionType + ? WalletConnectionType | undefined + : T extends AnalyticsUserProperty.WalletAddress + ? EvmAddress | DydxAddress | undefined + : // Account + T extends AnalyticsUserProperty.DydxAddress + ? DydxAddress | undefined + : T extends AnalyticsUserProperty.SubaccountNumber + ? number | undefined + : undefined; // Events export enum AnalyticsEvent { @@ -74,6 +78,7 @@ export enum AnalyticsEvent { TransferFaucetConfirmed = 'TransferFaucetConfirmed', TransferDeposit = 'TransferDeposit', TransferWithdraw = 'TransferWithdraw', + TransferNotification = 'TransferNotification', // Trading TradeOrderTypeSelected = 'TradeOrderTypeSelected', @@ -82,6 +87,12 @@ export enum AnalyticsEvent { TradeCancelOrder = 'TradeCancelOrder', TradeCancelOrderConfirmed = 'TradeCancelOrderConfirmed', + // Export CSV + ExportButtonClick = 'ExportCSVClick', + ExportTradesCheckboxClick = 'ExportTradesCheckboxClick', + ExportTransfersCheckboxClick = 'ExportTransfersCheckboxClick', + ExportDownloadClick = 'ExportDownloadClick', + // Notification NotificationAction = 'NotificationAction', } @@ -91,104 +102,145 @@ export type AnalyticsEventData<T extends AnalyticsEvent> = T extends AnalyticsEvent.AppStart ? {} : T extends AnalyticsEvent.NetworkStatus - ? { - status: (typeof AbacusApiStatus)['name']; - /** Last time indexer node was queried successfully */ - lastSuccessfulIndexerRpcQuery?: number; - /** Time elapsed since indexer node was queried successfully */ - elapsedTime?: number; - blockHeight?: number; - indexerBlockHeight?: number; - trailingBlocks?: number; - } - : // Navigation - T extends AnalyticsEvent.NavigatePage - ? { - path: string; - } - : T extends AnalyticsEvent.NavigateDialog - ? { - type: DialogTypes; - } - : T extends AnalyticsEvent.NavigateDialogClose - ? { - type: DialogTypes; - } - : T extends AnalyticsEvent.NavigateExternal - ? { - link: string; - } - : // Wallet - T extends AnalyticsEvent.ConnectWallet - ? { - walletType: WalletType; - walletConnectionType: WalletConnectionType; - } - : T extends AnalyticsEvent.DisconnectWallet - ? {} - : // Onboarding - T extends AnalyticsEvent.OnboardingStepChanged - ? { - state: OnboardingState; - step?: OnboardingSteps; - } - : T extends AnalyticsEvent.OnboardingAccountDerived - ? { - hasPreviousTransactions: boolean; - } - : // Transfers - T extends AnalyticsEvent.TransferFaucet - ? {} - : T extends AnalyticsEvent.TransferFaucetConfirmed - ? { - /** roundtrip time between user placing an order and confirmation from indexer (client → validator → indexer → client) */ - roundtripMs: number; - /** URL/IP of node the order was sent to */ - validatorUrl: string; - } - : T extends AnalyticsEvent.TransferDeposit - ? { - chainId?: string; - tokenAddress?: string; - tokenSymbol?: string; - } - : T extends AnalyticsEvent.TransferWithdraw - ? { - chainId?: string; - tokenAddress?: string; - tokenSymbol?: string; - } - : // Trading - T extends AnalyticsEvent.TradeOrderTypeSelected - ? { - type: TradeTypes; - } - : T extends AnalyticsEvent.TradePlaceOrder - ? HumanReadablePlaceOrderPayload & { - isClosePosition: boolean; - } - : T extends AnalyticsEvent.TradePlaceOrderConfirmed - ? { - /** roundtrip time between user placing an order and confirmation from indexer (client → validator → indexer → client) */ - roundtripMs: number; - /** URL/IP of node the order was sent to */ - validatorUrl: string; - } - : T extends AnalyticsEvent.TradeCancelOrder - ? {} - : T extends AnalyticsEvent.TradeCancelOrderConfirmed - ? { - /** roundtrip time between user canceling an order and confirmation from indexer (client → validator → indexer → client) */ - roundtripMs: number; - /** URL/IP of node the order was sent to */ - validatorUrl: string; - } - : // Notifcation - T extends AnalyticsEvent.NotificationAction - ? { - type: string; - id: string; - } - : never; + ? { + status: (typeof AbacusApiStatus)['name']; + /** Last time indexer node was queried successfully */ + lastSuccessfulIndexerRpcQuery?: number; + /** Time elapsed since indexer node was queried successfully */ + elapsedTime?: number; + blockHeight?: number; + indexerBlockHeight?: number; + trailingBlocks?: number; + } + : // Navigation + T extends AnalyticsEvent.NavigatePage + ? { + path: string; + } + : T extends AnalyticsEvent.NavigateDialog + ? { + type: DialogTypes; + } + : T extends AnalyticsEvent.NavigateDialogClose + ? { + type: DialogTypes; + } + : T extends AnalyticsEvent.NavigateExternal + ? { + link: string; + } + : // Wallet + T extends AnalyticsEvent.ConnectWallet + ? { + walletType: WalletType; + walletConnectionType: WalletConnectionType; + } + : T extends AnalyticsEvent.DisconnectWallet + ? {} + : // Onboarding + T extends AnalyticsEvent.OnboardingStepChanged + ? { + state: OnboardingState; + step?: OnboardingSteps; + } + : T extends AnalyticsEvent.OnboardingAccountDerived + ? { + hasPreviousTransactions: boolean; + } + : // Transfers + T extends AnalyticsEvent.TransferFaucet + ? {} + : T extends AnalyticsEvent.TransferFaucetConfirmed + ? { + /** roundtrip time between user placing an order and confirmation from indexer (client → validator → indexer → client) */ + roundtripMs: number; + /** URL/IP of node the order was sent to */ + validatorUrl: string; + } + : T extends AnalyticsEvent.TransferDeposit + ? { + chainId?: string; + tokenAddress?: string; + tokenSymbol?: string; + slippage?: number; + gasFee?: number; + bridgeFee?: number; + exchangeRate?: number; + estimatedRouteDuration?: number; + toAmount?: number; + toAmountMin?: number; + } + : T extends AnalyticsEvent.TransferWithdraw + ? { + chainId?: string; + tokenAddress?: string; + tokenSymbol?: string; + slippage?: number; + gasFee?: number; + bridgeFee?: number; + exchangeRate?: number; + estimatedRouteDuration?: number; + toAmount?: number; + toAmountMin?: number; + } + : // Trading + T extends AnalyticsEvent.TradeOrderTypeSelected + ? { + type: TradeTypes; + } + : T extends AnalyticsEvent.TradePlaceOrder + ? HumanReadablePlaceOrderPayload & { + isClosePosition: boolean; + } + : T extends AnalyticsEvent.TradePlaceOrderConfirmed + ? { + /** roundtrip time between user placing an order and confirmation from indexer (client → validator → indexer → client) */ + roundtripMs: number; + /** URL/IP of node the order was sent to */ + validatorUrl: string; + } + : T extends AnalyticsEvent.TradeCancelOrder + ? {} + : T extends AnalyticsEvent.TradeCancelOrderConfirmed + ? { + /** roundtrip time between user canceling an order and confirmation from indexer (client → validator → indexer → client) */ + roundtripMs: number; + /** URL/IP of node the order was sent to */ + validatorUrl: string; + } + : // Notifcation + T extends AnalyticsEvent.NotificationAction + ? { + type: string; + id: string; + } + : T extends AnalyticsEvent.TransferNotification + ? { + type: TransferNotificationTypes | undefined; + toAmount: number | undefined; + timeSpent: + | Record<string, number> + | number + | undefined; + txHash: string; + status: 'new' | 'success' | 'error'; + triggeredAt: number | undefined; + } + : T extends AnalyticsEvent.ExportDownloadClick + ? { + trades: boolean; + transfers: boolean; + } + : T extends AnalyticsEvent.ExportTradesCheckboxClick + ? { + value: boolean; + } + : T extends AnalyticsEvent.ExportTransfersCheckboxClick + ? { + value: boolean; + } + : never; export const DEFAULT_TRANSACTION_MEMO = 'dYdX Frontend (web)'; +export const lastSuccessfulRestRequestByOrigin: Record<URL['origin'], number> = {}; +export const lastSuccessfulWebsocketRequestByOrigin: Record<URL['origin'], number> = {}; diff --git a/src/constants/candles.ts b/src/constants/candles.ts index 58447541e..5ab626376 100644 --- a/src/constants/candles.ts +++ b/src/constants/candles.ts @@ -1,4 +1,5 @@ import { ResolutionString } from 'public/tradingview/charting_library'; + import { timeUnits } from './time'; export interface Candle { diff --git a/src/constants/cctp.ts b/src/constants/cctp.ts new file mode 100644 index 000000000..84401061a --- /dev/null +++ b/src/constants/cctp.ts @@ -0,0 +1,11 @@ +import cctpTokens from '../../public/configs/cctp.json'; + +const CCTP_MAINNET_CHAINS = cctpTokens.filter((token) => !token.isTestnet); +const CCTP_MAINNET_CHAINS_NAMES_LOWER_CASE = CCTP_MAINNET_CHAINS.map((token) => + token.name.toLowerCase() +); + +// TODO: make a general capitalize util fn +export const CCTP_MAINNET_CHAIN_NAMES_CAPITALIZED = CCTP_MAINNET_CHAINS_NAMES_LOWER_CASE.map( + (tokenName) => tokenName[0].toUpperCase() + tokenName.slice(1) +); diff --git a/src/constants/charts.ts b/src/constants/charts.ts index 0f1c1a1a6..1ead9ddf3 100644 --- a/src/constants/charts.ts +++ b/src/constants/charts.ts @@ -1,4 +1,5 @@ import { OrderSide } from '@dydxprotocol/v4-client-js'; + import { FundingDirection } from './markets'; // ------ Depth Chart ------ // diff --git a/src/constants/compliance.ts b/src/constants/compliance.ts new file mode 100644 index 000000000..d7b3c1182 --- /dev/null +++ b/src/constants/compliance.ts @@ -0,0 +1,15 @@ +export enum ComplianceReason { + MANUAL = 'MANUAL', + US_GEO = 'US_GEO', + CA_GEO = 'CA_GEO', + SANCTIONED_GEO = 'SANCTIONED_GEO', + COMPLIANCE_PROVIDER = 'COMPLIANCE_PROVIDER', +} + +export enum ComplianceStates { + FULL_ACCESS = 'FUll_ACCESS', + READ_ONLY = 'READ_ONLY', + CLOSE_ONLY = 'CLOSE_ONLY', +} + +export const CLOSE_ONLY_GRACE_PERIOD = 7; diff --git a/src/constants/dialogs.ts b/src/constants/dialogs.ts index c624182cd..b43cde20e 100644 --- a/src/constants/dialogs.ts +++ b/src/constants/dialogs.ts @@ -1,5 +1,8 @@ export enum DialogTypes { + AdjustIsolatedMargin = 'AdjustIsolatedMargin', + AdjustTargetLeverage = 'AdjustTargetLeverage', ClosePosition = 'ClosePosition', + ComplianceConfig = 'ComplianceConfig', Deposit = 'Deposit', DisconnectWallet = 'DisconnectWallet', DisplaySettings = 'DisplaySettings', @@ -7,25 +10,30 @@ export enum DialogTypes { ExternalLink = 'ExternalLink', ExternalNavStride = 'ExternalNavStride', FillDetails = 'FillDetails', + GeoCompliance = 'GeoCompliance', Help = 'Help', ExternalNavKeplr = 'ExternalNavKeplr', + ManageFunds = 'ManageFunds', MnemonicExport = 'MnemonicExport', - MobileSignIn = 'MobileSignIn', MobileDownload = 'MobileDownload', + MobileSignIn = 'MobileSignIn', + NewMarketAgreement = 'NewMarketAgreement', + NewMarketMessageDetails = 'NewMarketMessageDetails', Onboarding = 'Onboarding', OrderDetails = 'OrderDetails', Preferences = 'Preferences', RateLimit = 'RateLimit', RestrictedGeo = 'RestrictedGeo', RestrictedWallet = 'RestrictedWallet', + SelectMarginMode = 'SelectMarginMode', Trade = 'Trade', + Triggers = 'Triggers', Transfer = 'Transfer', Withdraw = 'Withdraw', - ManageFunds = 'ManageFunds', - NewMarketMessageDetails = 'NewMarketMessageDetails', - NewMarketAgreement = 'NewMarketAgreement', + WithdrawalGated = 'WithdrawalGated', } export enum TradeBoxDialogTypes { ClosePosition = 'ClosePosition', + SelectMarginMode = 'SelectMarginMode', } diff --git a/src/constants/geo.ts b/src/constants/geo.ts new file mode 100644 index 000000000..6e7c951c0 --- /dev/null +++ b/src/constants/geo.ts @@ -0,0 +1,561 @@ +export enum CountryCodes { + AD = 'AD', + AE = 'AE', + AF = 'AF', + AG = 'AG', + AI = 'AI', + AL = 'AL', + AM = 'AM', + AO = 'AO', + AQ = 'AQ', + AR = 'AR', + AS = 'AS', + AT = 'AT', + AU = 'AU', + AW = 'AW', + AZ = 'AZ', + BA = 'BA', + BB = 'BB', + BD = 'BD', + BE = 'BE', + BF = 'BF', + BG = 'BG', + BH = 'BH', + BI = 'BI', + BJ = 'BJ', + BL = 'BL', + BM = 'BM', + BN = 'BN', + BO = 'BO', + BR = 'BR', + BS = 'BS', + BT = 'BT', + BV = 'BV', + BW = 'BW', + BY = 'BY', + BZ = 'BZ', + CA = 'CA', + CC = 'CC', + CD = 'CD', + CF = 'CF', + CG = 'CG', + CH = 'CH', + CI = 'CI', + CK = 'CK', + CL = 'CL', + CM = 'CM', + CN = 'CN', + CO = 'CO', + CR = 'CR', + CU = 'CU', + CV = 'CV', + CW = 'CW', + CX = 'CX', + CY = 'CY', + CZ = 'CZ', + DE = 'DE', + DJ = 'DJ', + DK = 'DK', + DM = 'DM', + DO = 'DO', + DZ = 'DZ', + EC = 'EC', + EE = 'EE', + EG = 'EG', + EH = 'EH', + ER = 'ER', + ES = 'ES', + ET = 'ET', + FI = 'FI', + FJ = 'FJ', + FK = 'FK', + FM = 'FM', + FO = 'FO', + FR = 'FR', + GA = 'GA', + GB = 'GB', + GD = 'GD', + GE = 'GE', + GG = 'GG', + GH = 'GH', + GI = 'GI', + GL = 'GL', + GM = 'GM', + GN = 'GN', + GQ = 'GQ', + GR = 'GR', + GS = 'GS', + GT = 'GT', + GU = 'GU', + GW = 'GW', + GY = 'GY', + HK = 'HK', + HM = 'HM', + HN = 'HN', + HR = 'HR', + HT = 'HT', + HU = 'HU', + ID = 'ID', + IE = 'IE', + IL = 'IL', + IM = 'IM', + IN = 'IN', + IO = 'IO', + IQ = 'IQ', + IR = 'IR', + IS = 'IS', + IT = 'IT', + JE = 'JE', + JM = 'JM', + JO = 'JO', + JP = 'JP', + KE = 'KE', + KG = 'KG', + KH = 'KH', + KI = 'KI', + KM = 'KM', + KN = 'KN', + KP = 'KP', + KR = 'KR', + KW = 'KW', + KY = 'KY', + KZ = 'KZ', + LA = 'LA', + LB = 'LB', + LC = 'LC', + LI = 'LI', + LK = 'LK', + LR = 'LR', + LS = 'LS', + LT = 'LT', + LU = 'LU', + LV = 'LV', + LY = 'LY', + MA = 'MA', + MC = 'MC', + MD = 'MD', + ME = 'ME', + MF = 'MF', + MG = 'MG', + MH = 'MH', + MK = 'MK', + ML = 'ML', + MM = 'MM', + MN = 'MN', + MO = 'MO', + MP = 'MP', + MR = 'MR', + MS = 'MS', + MT = 'MT', + MU = 'MU', + MV = 'MV', + MW = 'MW', + MX = 'MX', + MY = 'MY', + MZ = 'MZ', + NA = 'NA', + NC = 'NC', + NE = 'NE', + NF = 'NF', + NG = 'NG', + NI = 'NI', + NL = 'NL', + NO = 'NO', + NP = 'NP', + NR = 'NR', + NU = 'NU', + NZ = 'NZ', + OM = 'OM', + PA = 'PA', + PE = 'PE', + PF = 'PF', + PG = 'PG', + PH = 'PH', + PK = 'PK', + PL = 'PL', + PM = 'PM', + PN = 'PN', + PR = 'PR', + PT = 'PT', + PW = 'PW', + PY = 'PY', + QA = 'QA', + RO = 'RO', + RS = 'RS', + RU = 'RU', + RW = 'RW', + SA = 'SA', + SB = 'SB', + SC = 'SC', + SD = 'SD', + SE = 'SE', + SG = 'SG', + SH = 'SH', + SI = 'SI', + SJ = 'SJ', + SK = 'SK', + SL = 'SL', + SM = 'SM', + SN = 'SN', + SO = 'SO', + SR = 'SR', + SS = 'SS', + ST = 'ST', + SV = 'SV', + SX = 'SX', + SY = 'SY', + SZ = 'SZ', + TC = 'TC', + TD = 'TD', + TF = 'TF', + TG = 'TG', + TH = 'TH', + TJ = 'TJ', + TK = 'TK', + TL = 'TL', + TM = 'TM', + TN = 'TN', + TO = 'TO', + TR = 'TR', + TT = 'TT', + TV = 'TV', + TW = 'TW', + TZ = 'TZ', + UA = 'UA', + UG = 'UG', + UM = 'UM', + US = 'US', + UY = 'UY', + UZ = 'UZ', + VA = 'VA', + VC = 'VC', + VE = 'VE', + VG = 'VG', + VI = 'VI', + VN = 'VN', + VU = 'VU', + WF = 'WF', + WS = 'WS', + XK = 'XK', + YE = 'YE', + ZA = 'ZA', + ZM = 'ZM', + ZW = 'ZW', +} + +export const RESTRICTED_COUNTRIES = { + USA: CountryCodes.US, + CANADA: CountryCodes.CA, + + // OFAC Sanctioned + AFGHANISTAN: CountryCodes.AF, + BELARUS: CountryCodes.BY, + CENTRAL_AFRICAN_REPUBLIC: CountryCodes.CF, + CUBA: CountryCodes.CU, + DEM_REPUBLIC_CONGO: CountryCodes.CD, // Democratic Republic of Congo + ERITREA: CountryCodes.ER, // Eritrea + IRAN: CountryCodes.IR, + IRAQ: CountryCodes.IQ, + IVORY_COAST: CountryCodes.CI, // Cote D'Ivoire + LEBANON: CountryCodes.LB, + LIBERIA: CountryCodes.LR, + LIBYA: CountryCodes.LY, + MALI: CountryCodes.ML, + MYANMAR: CountryCodes.MM, // Burma + NICARAGUA: CountryCodes.NI, + NORTH_KOREA: CountryCodes.KP, // Democratic People's Republic of Korea + SOMALIA: CountryCodes.SO, + SOUTH_SUDAN: CountryCodes.SS, + SUDAN: CountryCodes.SD, // The Republic of the Sudan + SYRIA: CountryCodes.SY, // The Syrian Arab Republic + VENEZUELA: CountryCodes.VE, + ZIMBABWE: CountryCodes.ZW, +}; + +export const SOFT_BLOCKED_COUNTRIES = []; + +export const BLOCKED_COUNTRIES = [RESTRICTED_COUNTRIES.USA, RESTRICTED_COUNTRIES.CANADA]; + +export const OFAC_SANCTIONED_COUNTRIES = [ + RESTRICTED_COUNTRIES.AFGHANISTAN, + RESTRICTED_COUNTRIES.BELARUS, + RESTRICTED_COUNTRIES.CENTRAL_AFRICAN_REPUBLIC, + RESTRICTED_COUNTRIES.CUBA, + RESTRICTED_COUNTRIES.DEM_REPUBLIC_CONGO, + RESTRICTED_COUNTRIES.ERITREA, + RESTRICTED_COUNTRIES.IRAN, + RESTRICTED_COUNTRIES.IRAQ, + RESTRICTED_COUNTRIES.IVORY_COAST, + RESTRICTED_COUNTRIES.LEBANON, + RESTRICTED_COUNTRIES.LIBERIA, + RESTRICTED_COUNTRIES.LIBYA, + RESTRICTED_COUNTRIES.MALI, + RESTRICTED_COUNTRIES.MYANMAR, + RESTRICTED_COUNTRIES.NICARAGUA, + RESTRICTED_COUNTRIES.NORTH_KOREA, + RESTRICTED_COUNTRIES.SOMALIA, + RESTRICTED_COUNTRIES.SOUTH_SUDAN, + RESTRICTED_COUNTRIES.SUDAN, + RESTRICTED_COUNTRIES.SYRIA, + RESTRICTED_COUNTRIES.VENEZUELA, + RESTRICTED_COUNTRIES.ZIMBABWE, +]; + +export const COUNTRIES_MAP: { [country: string]: string } = { + 'Afghanistan (افغانستان)': CountryCodes.AF, + Akrotiri: CountryCodes.GB, + 'Albania (Shqipëri)': CountryCodes.AL, + 'Algeria (الجزائر)': CountryCodes.DZ, + 'American Samoa': CountryCodes.AS, + Andorra: CountryCodes.AD, + Angola: CountryCodes.AO, + Anguilla: CountryCodes.AI, + Antarctica: CountryCodes.AQ, + 'Antigua & Barbuda': CountryCodes.AG, + Argentina: CountryCodes.AR, + 'Armenia (Հայաստան)': CountryCodes.AM, + Aruba: CountryCodes.AW, + 'Ashmore and Cartier Islands': CountryCodes.AU, + Australia: CountryCodes.AU, + 'Austria (Österreich)': CountryCodes.AT, + 'Azerbaijan (Azərbaycan)': CountryCodes.AZ, + Bahamas: CountryCodes.BS, + 'Bahrain (البحرين)': CountryCodes.BH, + 'Baker Island': CountryCodes.UM, + 'Bangladesh (বাংলাদেশ)': CountryCodes.BD, + Barbados: CountryCodes.BB, + Belarus: CountryCodes.BY, + 'Belgium (België)': CountryCodes.BE, + Belize: CountryCodes.BZ, + 'Benin (Bénin)': CountryCodes.BJ, + Bermuda: CountryCodes.BM, + 'Bhutan (འབྲུག)': CountryCodes.BT, + Bolivia: CountryCodes.BO, + 'Bosnia-Herzegovina (Босна и Херцеговина)': CountryCodes.BA, + Botswana: CountryCodes.BW, + 'Bouvet Island': CountryCodes.BV, + 'Brazil (Brasil)': CountryCodes.BR, + 'British Indian Ocean Territory': CountryCodes.IO, + 'British Virgin Islands': CountryCodes.VG, + Brunei: CountryCodes.BN, + 'Bulgaria (България)': CountryCodes.BG, + 'Burkina Faso': CountryCodes.BF, + Burma: CountryCodes.MM, + 'Burundi (Uburundi)': CountryCodes.BI, + 'Cambodia (កម្ពុជា)': CountryCodes.KH, + 'Cameroon (Cameroun)': CountryCodes.CM, + Canada: CountryCodes.CA, + 'Cape Verde (Kabu Verdi)': CountryCodes.CV, + 'Cayman Islands': CountryCodes.KY, + 'Central African Republic (République centrafricaine)': CountryCodes.CF, + 'Chad (Tchad)': CountryCodes.TD, + Chile: CountryCodes.CL, + 'China (中国)': CountryCodes.CN, + 'Christmas Island': CountryCodes.CX, + 'Clipperton Island': CountryCodes.FR, + 'Cocos (Keeling) Islands': CountryCodes.CC, + Colombia: CountryCodes.CO, + 'Comoros (جزر القمر)': CountryCodes.KM, + 'Congo (Brazzaville)': CountryCodes.CG, + 'Congo (Kinshasa)': CountryCodes.CD, + 'Cook Islands': CountryCodes.CK, + 'Coral Sea Islands': CountryCodes.AU, + 'Costa Rica': CountryCodes.CR, + "Cote D'Ivoire (Ivory Coast)": CountryCodes.CI, + 'Croatia (Hrvatska)': CountryCodes.HR, + Cuba: CountryCodes.CU, + Curacao: CountryCodes.CW, + 'Cyprus (Κύπρος)': CountryCodes.CY, + 'Czech Republic (Česká republika)': CountryCodes.CZ, + 'Denmark (Danmark)': CountryCodes.DK, + Dhekelia: CountryCodes.GB, + Djibouti: CountryCodes.DJ, + Dominica: CountryCodes.DM, + 'Dominican Republic (República Dominicana)': CountryCodes.DO, + 'East Timor': CountryCodes.TL, + Ecuador: CountryCodes.EC, + 'Egypt (مصر)': CountryCodes.EG, + 'El Salvador': CountryCodes.SV, + 'Equatorial Guinea (Guinea Ecuatorial)': CountryCodes.GQ, + Eritrea: CountryCodes.ER, + 'Estonia (Eesti)': CountryCodes.EE, + Ethiopia: CountryCodes.ET, + 'Falkland Islands (Islas Malvinas)': CountryCodes.FK, + 'Faroe Islands (Føroyar)': CountryCodes.FO, + 'Federated States of Micronesia': CountryCodes.FM, + Fiji: CountryCodes.FJ, + 'Finland (Suomi)': CountryCodes.FI, + France: CountryCodes.FR, + 'French Polynesia (Polynésie française)': CountryCodes.PF, + 'French Southern and Antarctic Lands': CountryCodes.TF, + Gabon: CountryCodes.GA, + 'The Gambia': CountryCodes.GM, + 'Georgia (საქართველო)': CountryCodes.GE, + 'Germany (Deutschland)': CountryCodes.DE, + 'Ghana (Gaana)': CountryCodes.GH, + Gibraltar: CountryCodes.GI, + 'Greece (Ελλάδα)': CountryCodes.GR, + 'Greenland (Kalaallit Nunaat)': CountryCodes.GL, + Grenada: CountryCodes.GD, + Guam: CountryCodes.GU, + Guatemala: CountryCodes.GT, + Guernsey: CountryCodes.GG, + 'Guinea (Guinée)': CountryCodes.GN, + 'Guinea-Bissau (Guiné Bissau)': CountryCodes.GW, + Guyana: CountryCodes.GY, + Haiti: CountryCodes.HT, + 'Heard Island and McDonald Islands': CountryCodes.HM, + 'Holy See': CountryCodes.VA, + Honduras: CountryCodes.HN, + 'Hong Kong (香港)': CountryCodes.HK, + 'Howland Island': CountryCodes.UM, + 'Hungary (Magyarország)': CountryCodes.HU, + 'Iceland (Ísland)': CountryCodes.IS, + 'India (भारत)': CountryCodes.IN, + Indonesia: CountryCodes.ID, + Iran: CountryCodes.IR, + Iraq: CountryCodes.IQ, + Ireland: CountryCodes.IE, + 'Israel (ישראל)': CountryCodes.IL, + 'Italy (Italia)': CountryCodes.IT, + Jamaica: CountryCodes.JM, + 'Jan Mayen': CountryCodes.SJ, + 'Japan (日本)': CountryCodes.JP, + 'Jarvis Island': CountryCodes.UM, + Jersey: CountryCodes.JE, + 'Johnston Atoll': CountryCodes.UM, + 'Jordan (الأردن)': CountryCodes.JO, + 'Kazakhstan (Казахстан)': CountryCodes.KZ, + Kenya: CountryCodes.KE, + 'Kingman Reef': CountryCodes.UM, + Kiribati: CountryCodes.KI, + "Korea, Democratic People's Republic of (North)": CountryCodes.KP, + 'Korea, Republic of (South) (대한민국)': CountryCodes.KR, + Kosovo: CountryCodes.XK, + 'Kuwait (الكويت)': CountryCodes.KW, + 'Kyrgyzstan (Кыргызстан)': CountryCodes.KG, + 'Laos (ລາວ)': CountryCodes.LA, + 'Latvia (Latvija)': CountryCodes.LV, + 'Lebanon (لبنان)': CountryCodes.LB, + Lesotho: CountryCodes.LS, + Liberia: CountryCodes.LR, + 'Libya (ليبيا)': CountryCodes.LY, + Liechtenstein: CountryCodes.LI, + 'Lithuania (Lietuva)': CountryCodes.LT, + Luxembourg: CountryCodes.LU, + 'Macau (澳門)': CountryCodes.MO, + 'Macedonia (FYROM) (Македонија)': CountryCodes.MK, + 'Madagascar (Madagasikara)': CountryCodes.MG, + Malawi: CountryCodes.MW, + Malaysia: CountryCodes.MY, + Maldives: CountryCodes.MV, + Mali: CountryCodes.ML, + Malta: CountryCodes.MT, + 'Man, Isle of': CountryCodes.IM, + 'Marshall Islands': CountryCodes.MH, + 'Mauritania (موريتانيا)': CountryCodes.MR, + 'Mauritius (Moris)': CountryCodes.MU, + 'Mexico (México)': CountryCodes.MX, + 'Midway Islands': CountryCodes.UM, + 'Moldova (Republica Moldova)': CountryCodes.MD, + Monaco: CountryCodes.MC, + 'Mongolia (Монгол)': CountryCodes.MN, + 'Montenegro (Crna Gora)': CountryCodes.ME, + Montserrat: CountryCodes.MS, + 'Morocco (المغرب)': CountryCodes.MA, + 'Mozambique (Moçambique)': CountryCodes.MZ, + 'Namibia (Namibië)': CountryCodes.NA, + Nauru: CountryCodes.NR, + 'Navassa Island': CountryCodes.UM, + 'Nepal (नेपाल)': CountryCodes.NP, + 'Netherlands (Nederland)': CountryCodes.NL, + 'New Caledonia (Nouvelle-Calédonie)': CountryCodes.NC, + 'New Zealand': CountryCodes.NZ, + Nicaragua: CountryCodes.NI, + 'Niger (Nijar)': CountryCodes.NE, + Nigeria: CountryCodes.NG, + Niue: CountryCodes.NU, + 'Norfolk Island': CountryCodes.NF, + 'Northern Mariana Islands': CountryCodes.MP, + 'Norway (Norge)': CountryCodes.NO, + 'Oman (عُمان)': CountryCodes.OM, + 'Pakistan (پاکستان)': CountryCodes.PK, + Palau: CountryCodes.PW, + 'Palmyra Atoll': CountryCodes.UM, + 'Panama (Panamá)': CountryCodes.PA, + 'Papua-New Guinea': CountryCodes.PG, + Paraguay: CountryCodes.PY, + 'Peru (Perú)': CountryCodes.PE, + Philippines: CountryCodes.PH, + 'Pitcairn Islands': CountryCodes.PN, + 'Poland (Polska)': CountryCodes.PL, + Portugal: CountryCodes.PT, + 'Puerto Rico': CountryCodes.PR, + 'Qatar (قطر)': CountryCodes.QA, + 'Romania (România)': CountryCodes.RO, + 'Russia (Россия)': CountryCodes.RU, + Rwanda: CountryCodes.RW, + 'Saint Barthelemy': CountryCodes.BL, + 'Saint Martin (Saint-Martin (partie française))': CountryCodes.MF, + Samoa: CountryCodes.WS, + 'San Marino': CountryCodes.SM, + 'Sao Tome and Principe (São Tomé e Príncipe)': CountryCodes.ST, + 'Saudi Arabia (المملكة العربية السعودية)': CountryCodes.SA, + 'Senegal (Sénégal)': CountryCodes.SN, + 'Serbia (Србија)': CountryCodes.RS, + Seychelles: CountryCodes.SC, + 'Sierra Leone': CountryCodes.SL, + Singapore: CountryCodes.SG, + 'Sint Maarten': CountryCodes.SX, + 'Slovakia (Slovensko)': CountryCodes.SK, + 'Slovenia (Slovenija)': CountryCodes.SI, + 'Solomon Islands': CountryCodes.SB, + 'Somalia (Soomaaliya)': CountryCodes.SO, + 'South Africa': CountryCodes.ZA, + 'South Georgia and the South Sandwich Islands': CountryCodes.GS, + 'South Sudan': CountryCodes.SS, + 'Spain (España)': CountryCodes.ES, + 'Sri Lanka (ශ්රී ලංකාව)': CountryCodes.LK, + 'St. Helena': CountryCodes.SH, + 'St. Kitts and Nevis': CountryCodes.KN, + 'St. Lucia Island': CountryCodes.LC, + 'St. Pierre and Miquelon (Saint-Pierre-et-Miquelon)': CountryCodes.PM, + 'St. Vincent and the Grenadines': CountryCodes.VC, + Sudan: CountryCodes.SD, + Suriname: CountryCodes.SR, + Svalbard: CountryCodes.SJ, + Swaziland: CountryCodes.SZ, + 'Sweden (Sverige)': CountryCodes.SE, + 'Switzerland (Schweiz)': CountryCodes.CH, + Syria: CountryCodes.SY, + 'Taiwan (台灣)': CountryCodes.TW, + Tajikistan: CountryCodes.TJ, + Tanzania: CountryCodes.TZ, + 'Thailand (ไทย)': CountryCodes.TH, + Togo: CountryCodes.TG, + Tokelau: CountryCodes.TK, + Tonga: CountryCodes.TO, + 'Trinidad and Tobago': CountryCodes.TT, + 'Tunisia (تونس)': CountryCodes.TN, + 'Turkey (Türkiye)': CountryCodes.TR, + Turkmenistan: CountryCodes.TM, + 'Turks and Caicos Islands': CountryCodes.TC, + Tuvalu: CountryCodes.TV, + Uganda: CountryCodes.UG, + 'Ukraine (Україна)': CountryCodes.UA, + 'United Arab Emirates (الإمارات العربية المتحدة)': CountryCodes.AE, + 'United Kingdom (England, Northern Ireland, Scotland, and Wales)': CountryCodes.GB, + 'United States of America': CountryCodes.US, + Uruguay: CountryCodes.UY, + 'Uzbekistan (Oʻzbekiston)': CountryCodes.UZ, + Vanuatu: CountryCodes.VU, + Venezuela: CountryCodes.VE, + 'Vietnam (Việt Nam)': CountryCodes.VN, + 'Virgin Islands': CountryCodes.VI, + 'Wake Island': CountryCodes.UM, + 'Wallis and Futuna (Wallis-et-Futuna)': CountryCodes.WF, + 'Western Sahara (الصحراء الغربية)': CountryCodes.EH, + 'Yemen (Aden) (اليمن)': CountryCodes.YE, + Zambia: CountryCodes.ZM, + Zimbabwe: CountryCodes.ZW, +}; diff --git a/src/constants/indexer.ts b/src/constants/indexer.ts index 12c2f029b..5191381d8 100644 --- a/src/constants/indexer.ts +++ b/src/constants/indexer.ts @@ -21,3 +21,7 @@ export type PerpetualMarketResponse = { stepBaseQuantums: number; subticksPerTick: number; }; + +export type PerpetualMarketSparklineResponse = { + [key: string]: number[]; +}; diff --git a/src/constants/localStorage.ts b/src/constants/localStorage.ts index 5ac32cb15..311bec9a3 100644 --- a/src/constants/localStorage.ts +++ b/src/constants/localStorage.ts @@ -7,6 +7,9 @@ export enum LocalStorageKey { OnboardingHasAcknowledgedTerms = 'dydx.OnboardingHasAcknowledgedTerms', EvmDerivedAddresses = 'dydx.EvmDerivedAddresses', + // Gas + SelectedGasDenom = 'dydx.SelectedGasDenom', + // Notifications Notifications = 'dydx.Notifications', NotificationsLastUpdated = 'dydx.NotificationsLastUpdated', @@ -24,11 +27,12 @@ export enum LocalStorageKey { SelectedTradeLayout = 'dydx.SelectedTradeLayout', TradingViewChartConfig = 'dydx.TradingViewChartConfig', HasSeenLaunchIncentives = 'dydx.HasSeenLaunchIncentives', + DefaultToAllMarketsInPositionsOrdersFills = 'dydx.DefaultToAllMarketsInPositionsOrdersFills', } export const LOCAL_STORAGE_VERSIONS = { [LocalStorageKey.EvmDerivedAddresses]: 'v2', - [LocalStorageKey.NotificationPreferences]: 'v1', + [LocalStorageKey.NotificationPreferences]: 'v2', [LocalStorageKey.TransferNotifications]: 'v1', [LocalStorageKey.Notifications]: 'v1', // TODO: version all localStorage keys diff --git a/src/constants/localization.ts b/src/constants/localization.ts index 3c77561fb..a8ae8f533 100644 --- a/src/constants/localization.ts +++ b/src/constants/localization.ts @@ -1,17 +1,17 @@ -import { ReactNode } from 'react'; - import { APP_STRING_KEYS, ERRORS_STRING_KEYS, LOCALE_DATA, + NOTIFICATIONS, + NOTIFICATIONS_STRING_KEYS, TOOLTIPS, WARNINGS_STRING_KEYS, - NOTIFICATIONS_STRING_KEYS, - NOTIFICATIONS, } from '@dydxprotocol/v4-localization'; import { type LinksConfigs } from '@/hooks/useURLConfigs'; +import formatString from '@/lib/formatString'; + export { TOOLTIP_STRING_KEYS } from '@dydxprotocol/v4-localization'; export enum SupportedLocales { @@ -48,12 +48,19 @@ export type StringKey = keyof typeof STRING_KEYS; export type LocaleData = typeof EN_LOCALE_DATA; -export type StringGetterFunction = (a: { +export type StringGetterParams = Record<string, any>; + +export type StringGetterFunction = <T extends StringGetterParams>({ + key, + params, +}: { key: string; - params?: { - [key: string]: ReactNode; - }; -}) => string; + params?: T; +}) => T extends { + [K in keyof T]: T[K] extends string | number ? any : T[K] extends JSX.Element ? any : never; +} + ? string + : ReturnType<typeof formatString>; export const SUPPORTED_LOCALE_STRING_LABELS: { [key in SupportedLocales]: string } = { [SupportedLocales.EN]: 'English', @@ -95,8 +102,8 @@ export type TooltipStrings = { stringParams?: any; urlConfigs?: LinksConfigs; }) => { - title?: string; - body: string; + title?: React.ReactNode; + body: React.ReactNode; learnMoreLink?: string; }; }; diff --git a/src/constants/markets.ts b/src/constants/markets.ts index 0ddc47ded..4e519ae9b 100644 --- a/src/constants/markets.ts +++ b/src/constants/markets.ts @@ -4,20 +4,40 @@ import { STRING_KEYS } from '@/constants/localization'; export type MarketData = { asset: Asset; tickSizeDecimals: number; + oneDaySparkline?: number[]; + isNew?: boolean; + listingDate?: Date; } & PerpetualMarket & PerpetualMarket['perpetual'] & PerpetualMarket['configs']; +export enum MarketSorting { + GAINERS = 'gainers', + LOSERS = 'losers', +} + export enum MarketFilters { ALL = 'all', + NEW = 'new', LAYER_1 = 'Layer 1', + LAYER_2 = 'Layer 2', DEFI = 'Defi', + AI = 'AI', + NFT = 'NFT', + GAMING = 'Gaming', + MEME = 'Meme', } export const MARKET_FILTER_LABELS = { [MarketFilters.ALL]: STRING_KEYS.ALL, + [MarketFilters.NEW]: STRING_KEYS.NEW, [MarketFilters.LAYER_1]: STRING_KEYS.LAYER_1, + [MarketFilters.LAYER_2]: STRING_KEYS.LAYER_2, [MarketFilters.DEFI]: STRING_KEYS.DEFI, + [MarketFilters.AI]: STRING_KEYS.AI, + [MarketFilters.NFT]: STRING_KEYS.NFT, + [MarketFilters.GAMING]: STRING_KEYS.GAMING, + [MarketFilters.MEME]: STRING_KEYS.MEME, }; export const DEFAULT_MARKETID = 'ETH-USD'; diff --git a/src/constants/mockData.ts b/src/constants/mockData.ts index 2e07d40a6..23a169087 100644 --- a/src/constants/mockData.ts +++ b/src/constants/mockData.ts @@ -1,5 +1,4 @@ // Mock data for offline testing - import type { MarketHistoricalFunding } from './abacus'; import { timeUnits } from './time'; diff --git a/src/constants/notifications.ts b/src/constants/notifications.ts index 6736199f6..79d5562d0 100644 --- a/src/constants/notifications.ts +++ b/src/constants/notifications.ts @@ -4,9 +4,39 @@ import { StatusResponse } from '@0xsquid/sdk'; export enum NotificationType { AbacusGenerated = 'AbacusGenerated', SquidTransfer = 'SquidTransfer', + TriggerOrder = 'TriggerOrder', ReleaseUpdates = 'ReleaseUpdates', + ApiError = 'ApiError', + ComplianceAlert = 'ComplianceAlert', + OrderStatus = 'OrderStatus', } +export enum NotificationCategoryPreferences { + General = 'General', // release updates + Transfers = 'Transfers', // transfers + Trading = 'Trading', // order status, positions / liquidations, trading rewards + MustSee = 'MustSee', // cannot be hidden: compliance, api errors +} + +export const NotificationTypeCategory: { + [key in NotificationType]: NotificationCategoryPreferences; +} = { + [NotificationType.ReleaseUpdates]: NotificationCategoryPreferences.General, + [NotificationType.SquidTransfer]: NotificationCategoryPreferences.Transfers, + [NotificationType.AbacusGenerated]: NotificationCategoryPreferences.Trading, + [NotificationType.TriggerOrder]: NotificationCategoryPreferences.Trading, + [NotificationType.OrderStatus]: NotificationCategoryPreferences.Trading, + [NotificationType.ApiError]: NotificationCategoryPreferences.MustSee, + [NotificationType.ComplianceAlert]: NotificationCategoryPreferences.MustSee, +}; + +export const SingleSessionNotificationTypes = [ + NotificationType.AbacusGenerated, + NotificationType.ApiError, + NotificationType.ComplianceAlert, + NotificationType.OrderStatus, +]; + export enum NotificationComponentType {} export type NotificationId = string | number; @@ -100,6 +130,14 @@ export type NotificationDisplayData = { actionDescription?: string; + renderActionSlot?: ({ + isToast, + notification, + }: { + isToast?: boolean; + notification: Notification; + }) => React.ReactNode; // Custom Notification + /** Screen reader: instructions for performing toast action after its timer expires */ actionAltText?: string; @@ -122,6 +160,8 @@ export type NotificationDisplayData = { Push notification: requires interaction. */ toastDuration?: number; + + withClose?: boolean; // Show close button for Notification }; export enum TransferNotificationTypes { @@ -129,7 +169,6 @@ export enum TransferNotificationTypes { Deposit = 'deposit', } -// Notification types export type TransferNotifcation = { txHash: string; type?: TransferNotificationTypes; @@ -141,18 +180,20 @@ export type TransferNotifcation = { errorCount?: number; status?: StatusResponse; isExchange?: boolean; + requestId?: string; }; export enum ReleaseUpdateNotificationIds { - RewardsAndFullTradingLive = 'rewards-and-full-trading-live', - IncentivesS3 = 'incentives-s3', + RevampedConditionalOrders = 'revamped-conditional-orders', + IncentivesS4 = 'incentives-s4', + IncentivesDistributedS3 = 'incentives-distributed-s3', } /** - * @description Struct to store whether a NotificationType should be triggered + * @description Struct to store whether a NotificationType belonging to each NotificationCategoryType should be triggered */ export type NotificationPreferences = { - [key in NotificationType]: boolean; + [key in NotificationCategoryPreferences]: boolean; } & { version: string }; export const DEFAULT_TOAST_AUTO_CLOSE_MS = 5000; diff --git a/src/constants/numbers.ts b/src/constants/numbers.ts index dc6914dab..b040661d3 100644 --- a/src/constants/numbers.ts +++ b/src/constants/numbers.ts @@ -10,7 +10,7 @@ export const LEVERAGE_DECIMALS = 2; export const TOKEN_DECIMALS = 4; export const LARGE_TOKEN_DECIMALS = 2; export const FEE_DECIMALS = 3; -export const FUNDING_DECIMALS = 6; +export const FUNDING_DECIMALS = 4; export const QUANTUM_MULTIPLIER = 1_000_000; diff --git a/src/constants/objects.ts b/src/constants/objects.ts new file mode 100644 index 000000000..019d63405 --- /dev/null +++ b/src/constants/objects.ts @@ -0,0 +1,2 @@ +export const EMPTY_OBJ = Object.freeze({}) as {}; +export const EMPTY_ARR = Object.freeze([]) as []; diff --git a/src/constants/orderbook.ts b/src/constants/orderbook.ts index 3e8b490ef..169843ee1 100644 --- a/src/constants/orderbook.ts +++ b/src/constants/orderbook.ts @@ -2,7 +2,7 @@ * @description Orderbook display constants */ export const ORDERBOOK_MAX_ROWS_PER_SIDE = 30; -export const ORDERBOOK_ANIMATION_DURATION = 400; +export const ORDERBOOK_ANIMATION_DURATION = 100; /** * @description Orderbook pixel constants diff --git a/src/constants/potentialMarkets.ts b/src/constants/potentialMarkets.ts index e2292c3e4..e10d03866 100644 --- a/src/constants/potentialMarkets.ts +++ b/src/constants/potentialMarkets.ts @@ -4,22 +4,36 @@ export type ExchangeConfigItem = { adjustByMarket?: string; }; -export type PotentialMarketItem = { - baseAsset: string; - referencePrice: string; - numOracles: number; +export type NewMarketParams = { + id: number; + ticker: string; + marketType?: 'PERPETUAL_MARKET_TYPE_ISOLATED' | 'PERPETUAL_MARKET_TYPE_CROSS'; + priceExponent: number; + minExchanges: number; + minPriceChange: number; + exchangeConfigJson: ExchangeConfigItem[]; liquidityTier: number; - assetName: string; - p: number; atomicResolution: number; - minExchanges: number; - minPriceChangePpm: number; - priceExponent: number; - stepBaseQuantum: number; - ticksizeExponent: number; - subticksPerTick: number; - minOrderSize: number; quantumConversionExponent: number; + defaultFundingPpm: number; + stepBaseQuantums: number; + subticksPerTick: number; + delayBlocks: number; +}; + +export type NewMarketProposal = { + title: string; + summary: string; + params: NewMarketParams; + meta: { + assetName: string; + referencePrice: number; + }; + initial_deposit: { + denom: string; + amount: string; + }; + baseAsset: string; }; -export const NUM_ORACLES_TO_QUALIFY_AS_SAFE = 6; +export const NUM_ORACLES_TO_QUALIFY_AS_SAFE = 5; diff --git a/src/constants/styles/colors.ts b/src/constants/styles/colors.ts index 7075c1748..54bddf84d 100644 --- a/src/constants/styles/colors.ts +++ b/src/constants/styles/colors.ts @@ -27,9 +27,12 @@ export type ThemeColorBase = BaseColors & Filters; type BaseColors = { + black: string; white: string; green: string; red: string; + + whiteFaded: string; }; type LayerColors = { diff --git a/src/constants/tooltips/deposit.ts b/src/constants/tooltips/deposit.ts index de30ab297..bdb5db7f1 100644 --- a/src/constants/tooltips/deposit.ts +++ b/src/constants/tooltips/deposit.ts @@ -1,4 +1,6 @@ -import { type TooltipStrings, TOOLTIP_STRING_KEYS } from '@/constants/localization'; +import { TOOLTIP_STRING_KEYS, type TooltipStrings } from '@/constants/localization'; + +import { CCTP_MAINNET_CHAIN_NAMES_CAPITALIZED } from '../cctp'; export const depositTooltips: TooltipStrings = { 'minimum-deposit-amount': ({ stringGetter }) => ({ @@ -9,4 +11,21 @@ export const depositTooltips: TooltipStrings = { title: stringGetter({ key: TOOLTIP_STRING_KEYS.SWAP_TITLE }), body: stringGetter({ key: TOOLTIP_STRING_KEYS.SWAP_BODY }), }), + 'lowest-fees-deposit': ({ stringGetter }) => ({ + title: stringGetter({ key: TOOLTIP_STRING_KEYS.LOWEST_FEE_DEPOSITS_TITLE }), + body: stringGetter({ + key: TOOLTIP_STRING_KEYS.LOWEST_FEE_DEPOSITS_BODY, + params: { + LOWEST_FEE_TOKEN_NAMES: CCTP_MAINNET_CHAIN_NAMES_CAPITALIZED.join(', '), + }, + }), + }), + 'gas-fees-deposit': ({ stringGetter, stringParams }) => ({ + title: stringGetter({ key: TOOLTIP_STRING_KEYS.GAS_FEES_DEPOSIT_TITLE }), + body: stringGetter({ key: TOOLTIP_STRING_KEYS.GAS_FEES_DEPOSIT_BODY, params: stringParams }), + }), + 'bridge-fees-deposit': ({ stringGetter }) => ({ + title: stringGetter({ key: TOOLTIP_STRING_KEYS.BRIDGE_FEES_DEPOSIT_TITLE }), + body: stringGetter({ key: TOOLTIP_STRING_KEYS.BRIDGE_FEES_DEPOSIT_BODY }), + }), } as const; diff --git a/src/constants/tooltips/general.ts b/src/constants/tooltips/general.ts index 9da6b4558..84068127b 100644 --- a/src/constants/tooltips/general.ts +++ b/src/constants/tooltips/general.ts @@ -1,4 +1,4 @@ -import { type TooltipStrings, TOOLTIP_STRING_KEYS } from '@/constants/localization'; +import { TOOLTIP_STRING_KEYS, type TooltipStrings } from '@/constants/localization'; export const generalTooltips: TooltipStrings = { 'legacy-signing': ({ stringGetter }) => ({ diff --git a/src/constants/tooltips/index.ts b/src/constants/tooltips/index.ts index d36075c7e..5b228cefd 100644 --- a/src/constants/tooltips/index.ts +++ b/src/constants/tooltips/index.ts @@ -4,6 +4,7 @@ import { depositTooltips } from './deposit'; import { generalTooltips } from './general'; import { portfolioTooltips } from './portfolio'; import { tradeTooltips } from './trade'; +import { triggersTooltips } from './triggers'; import { withdrawTooltips } from './withdraw'; export const tooltipStrings: TooltipStrings = { @@ -11,5 +12,6 @@ export const tooltipStrings: TooltipStrings = { ...generalTooltips, ...portfolioTooltips, ...tradeTooltips, + ...triggersTooltips, ...withdrawTooltips, } as const; diff --git a/src/constants/tooltips/portfolio.ts b/src/constants/tooltips/portfolio.ts index b995f40ae..827a54285 100644 --- a/src/constants/tooltips/portfolio.ts +++ b/src/constants/tooltips/portfolio.ts @@ -1,4 +1,4 @@ -import { type TooltipStrings, TOOLTIP_STRING_KEYS } from '@/constants/localization'; +import { TOOLTIP_STRING_KEYS, type TooltipStrings } from '@/constants/localization'; export const portfolioTooltips: TooltipStrings = { 'holding-hedgies': ({ stringGetter, stringParams }) => ({ diff --git a/src/constants/tooltips/trade.ts b/src/constants/tooltips/trade.ts index 4382ce87a..5a76d1eaf 100644 --- a/src/constants/tooltips/trade.ts +++ b/src/constants/tooltips/trade.ts @@ -1,4 +1,4 @@ -import { type TooltipStrings, TOOLTIP_STRING_KEYS } from '@/constants/localization'; +import { TOOLTIP_STRING_KEYS, type TooltipStrings } from '@/constants/localization'; export const tradeTooltips: TooltipStrings = { 'account-leverage': ({ stringGetter }) => ({ @@ -57,9 +57,10 @@ export const tradeTooltips: TooltipStrings = { title: stringGetter({ key: TOOLTIP_STRING_KEYS.INDEX_PRICE_TITLE }), body: stringGetter({ key: TOOLTIP_STRING_KEYS.INDEX_PRICE_BODY }), }), - 'initial-margin-fraction': ({ stringGetter }) => ({ + 'initial-margin-fraction': ({ stringGetter, urlConfigs }) => ({ title: stringGetter({ key: TOOLTIP_STRING_KEYS.INITIAL_MARGIN_FRACTION_TITLE }), body: stringGetter({ key: TOOLTIP_STRING_KEYS.INITIAL_MARGIN_FRACTION_BODY }), + learnMoreLink: urlConfigs?.initialMarginFractionLearnMore, }), 'initial-stop': ({ stringGetter }) => ({ title: stringGetter({ key: TOOLTIP_STRING_KEYS.INITIAL_STOP_TITLE }), @@ -85,6 +86,14 @@ export const tradeTooltips: TooltipStrings = { title: stringGetter({ key: TOOLTIP_STRING_KEYS.LIQUIDATION_PRICE_GENERAL_TITLE }), body: stringGetter({ key: TOOLTIP_STRING_KEYS.LIQUIDATION_PRICE_GENERAL_BODY }), }), + 'liquidation-warning-long': ({ stringGetter }) => ({ + title: stringGetter({ key: TOOLTIP_STRING_KEYS.STOP_LOSS_BELOW_LIQUIDATION_PRICE_TITLE }), + body: stringGetter({ key: TOOLTIP_STRING_KEYS.STOP_LOSS_BELOW_LIQUIDATION_PRICE_BODY }), + }), + 'liquidation-warning-short': ({ stringGetter }) => ({ + title: stringGetter({ key: TOOLTIP_STRING_KEYS.STOP_LOSS_ABOVE_LIQUIDATION_PRICE_TITLE }), + body: stringGetter({ key: TOOLTIP_STRING_KEYS.STOP_LOSS_ABOVE_LIQUIDATION_PRICE_BODY }), + }), liquidity: ({ stringGetter }) => ({ title: stringGetter({ key: TOOLTIP_STRING_KEYS.LIQUIDITY_TITLE }), body: stringGetter({ key: TOOLTIP_STRING_KEYS.LIQUIDITY_BODY }), @@ -133,6 +142,14 @@ export const tradeTooltips: TooltipStrings = { title: stringGetter({ key: TOOLTIP_STRING_KEYS.ORDER_AMOUNT_USD_TITLE }), body: stringGetter({ key: TOOLTIP_STRING_KEYS.ORDER_AMOUNT_USD_BODY, params: stringParams }), }), + 'partial-close-stop-loss': ({ stringGetter }) => ({ + title: stringGetter({ key: TOOLTIP_STRING_KEYS.PARTIAL_CLOSE_STOP_LOSS_TITLE }), + body: stringGetter({ key: TOOLTIP_STRING_KEYS.PARTIAL_CLOSE_STOP_LOSS_BODY }), + }), + 'partial-close-take-profit': ({ stringGetter }) => ({ + title: stringGetter({ key: TOOLTIP_STRING_KEYS.PARTIAL_CLOSE_TAKE_PROFIT_TITLE }), + body: stringGetter({ key: TOOLTIP_STRING_KEYS.PARTIAL_CLOSE_TAKE_PROFIT_BODY }), + }), 'post-only': ({ stringGetter }) => ({ title: stringGetter({ key: TOOLTIP_STRING_KEYS.POST_ONLY_TITLE }), body: stringGetter({ key: TOOLTIP_STRING_KEYS.POST_ONLY_BODY }), diff --git a/src/constants/tooltips/triggers.ts b/src/constants/tooltips/triggers.ts new file mode 100644 index 000000000..8039bbc4d --- /dev/null +++ b/src/constants/tooltips/triggers.ts @@ -0,0 +1,24 @@ +import { TOOLTIP_STRING_KEYS, type TooltipStrings } from '@/constants/localization'; + +export const triggersTooltips: TooltipStrings = { + 'custom-amount': ({ stringGetter }) => ({ + title: stringGetter({ key: TOOLTIP_STRING_KEYS.CUSTOM_AMOUNT_TITLE }), + body: stringGetter({ key: TOOLTIP_STRING_KEYS.CUSTOM_AMOUNT_BODY }), + }), + 'limit-price': ({ stringGetter }) => ({ + title: stringGetter({ key: TOOLTIP_STRING_KEYS.LIMIT_PRICE_TITLE }), + body: stringGetter({ key: TOOLTIP_STRING_KEYS.LIMIT_PRICE_BODY }), + }), + 'stop-loss': ({ stringGetter }) => ({ + title: stringGetter({ key: TOOLTIP_STRING_KEYS.STOP_LOSS_TITLE }), + body: stringGetter({ key: TOOLTIP_STRING_KEYS.STOP_LOSS_BODY }), + }), + 'take-profit': ({ stringGetter }) => ({ + title: stringGetter({ key: TOOLTIP_STRING_KEYS.TAKE_PROFIT_TITLE }), + body: stringGetter({ key: TOOLTIP_STRING_KEYS.TAKE_PROFIT_BODY }), + }), + 'unequal-order-sizes': ({ stringGetter }) => ({ + title: stringGetter({ key: TOOLTIP_STRING_KEYS.UNEQUAL_ORDER_SIZES_TITLE }), + body: stringGetter({ key: TOOLTIP_STRING_KEYS.UNEQUAL_ORDER_SIZES_BODY }), + }), +} as const; diff --git a/src/constants/tooltips/withdraw.ts b/src/constants/tooltips/withdraw.ts index e5c0f418d..db077d078 100644 --- a/src/constants/tooltips/withdraw.ts +++ b/src/constants/tooltips/withdraw.ts @@ -1,4 +1,6 @@ -import { type TooltipStrings, TOOLTIP_STRING_KEYS } from '@/constants/localization'; +import { TOOLTIP_STRING_KEYS, type TooltipStrings } from '@/constants/localization'; + +import { CCTP_MAINNET_CHAIN_NAMES_CAPITALIZED } from '../cctp'; export const withdrawTooltips: TooltipStrings = { 'fast-withdraw-fee': ({ stringGetter }) => ({ @@ -13,4 +15,21 @@ export const withdrawTooltips: TooltipStrings = { title: stringGetter({ key: TOOLTIP_STRING_KEYS.WITHDRAW_TYPES_TITLE }), body: stringGetter({ key: TOOLTIP_STRING_KEYS.WITHDRAW_TYPES_BODY }), }), + 'gas-fees': ({ stringGetter }) => ({ + title: stringGetter({ key: TOOLTIP_STRING_KEYS.GAS_FEES_TITLE }), + body: stringGetter({ key: TOOLTIP_STRING_KEYS.GAS_FEES_BODY }), + }), + 'bridge-fees': ({ stringGetter }) => ({ + title: stringGetter({ key: TOOLTIP_STRING_KEYS.BRIDGE_FEES_TITLE }), + body: stringGetter({ key: TOOLTIP_STRING_KEYS.BRIDGE_FEES_BODY }), + }), + 'lowest-fees': ({ stringGetter }) => ({ + title: stringGetter({ key: TOOLTIP_STRING_KEYS.LOWEST_FEE_WITHDRAWALS_TITLE }), + body: stringGetter({ + key: TOOLTIP_STRING_KEYS.LOWEST_FEE_WITHDRAWALS_BODY, + params: { + LOWEST_FEE_TOKEN_NAMES: CCTP_MAINNET_CHAIN_NAMES_CAPITALIZED.join(', '), + }, + }), + }), } as const; diff --git a/src/constants/trade.ts b/src/constants/trade.ts index 658134deb..ac9a3b0db 100644 --- a/src/constants/trade.ts +++ b/src/constants/trade.ts @@ -78,12 +78,12 @@ export const ORDER_TYPE_STRINGS: Record< descriptionKey: STRING_KEYS.STOP_MARKET_DESCRIPTION, }, [TradeTypes.TAKE_PROFIT]: { - orderTypeKeyShort: STRING_KEYS.TAKE_PROFIT_LIMIT, + orderTypeKeyShort: STRING_KEYS.TAKE_PROFIT_LIMIT_SHORT, orderTypeKey: STRING_KEYS.TAKE_PROFIT_LIMIT, descriptionKey: STRING_KEYS.TAKE_PROFIT_LIMIT_DESCRIPTION, }, [TradeTypes.TAKE_PROFIT_MARKET]: { - orderTypeKeyShort: STRING_KEYS.TAKE_PROFIT_MARKET, + orderTypeKeyShort: STRING_KEYS.TAKE_PROFIT_MARKET_SHORT, orderTypeKey: STRING_KEYS.TAKE_PROFIT_MARKET, descriptionKey: STRING_KEYS.TAKE_PROFIT_MARKET_DESCRIPTION, }, @@ -149,6 +149,7 @@ export enum MobilePlaceOrderSteps { PreviewOrder = 'PreviewOrder', PlacingOrder = 'PlacingOrder', Confirmation = 'Confirmation', + PlaceOrderFailed = 'PlaceOrderFailed', } export const CLEARED_TRADE_INPUTS = { @@ -162,3 +163,29 @@ export const CLEARED_SIZE_INPUTS = { usdAmountInput: '', leverageInput: '', }; + +export enum PlaceOrderStatuses { + Submitted, + Placed, + Filled, +} + +export enum CancelOrderStatuses { + Submitted, + Canceled, +} + +export type LocalPlaceOrderData = { + marketId: string; + clientId: number; + orderId?: string; + orderType: TradeTypes; + submissionStatus: PlaceOrderStatuses; + errorStringKey?: string; +}; + +export type LocalCancelOrderData = { + orderId: string; + submissionStatus: CancelOrderStatuses; + errorStringKey?: string; +}; diff --git a/src/constants/tvchart.ts b/src/constants/tvchart.ts index 62503accc..05671c9e6 100644 --- a/src/constants/tvchart.ts +++ b/src/constants/tvchart.ts @@ -1,5 +1,4 @@ import { OrderSide } from '@dydxprotocol/v4-client-js'; - import type { IChartingLibraryWidget, IOrderLineAdapter, @@ -8,7 +7,8 @@ import type { export type TvWidget = IChartingLibraryWidget & { _id?: string; _ready?: boolean }; -export type ChartLineType = OrderSide | 'position'; +export type PositionLineType = 'entry' | 'liquidation'; +export type ChartLineType = OrderSide | PositionLineType; export type ChartLine = { line: IOrderLineAdapter | IPositionLineAdapter; diff --git a/src/constants/wallets.ts b/src/constants/wallets.ts index 83411cc15..a092057c2 100644 --- a/src/constants/wallets.ts +++ b/src/constants/wallets.ts @@ -1,5 +1,5 @@ -import type { ExternalProvider } from '@ethersproject/providers'; import { type onboarding } from '@dydxprotocol/v4-client-js'; +import type { ExternalProvider } from '@ethersproject/providers'; import type { suggestChain } from 'graz'; import { STRING_KEYS } from '@/constants/localization'; @@ -8,8 +8,9 @@ import { BitkeepIcon, BitpieIcon, CloverWalletIcon, - CoinbaseIcon, Coin98Icon, + CoinbaseIcon, + EmailIcon, GenericWalletIcon, HuobiIcon, ImTokenIcon, @@ -32,6 +33,7 @@ import { DydxChainId, WALLETS_CONFIG_MAP } from './networks'; export enum WalletConnectionType { CoinbaseWalletSdk = 'coinbaseWalletSdk', CosmosSigner = 'CosmosSigner', + Privy = 'Privy', InjectedEip1193 = 'injectedEip1193', WalletConnect2 = 'walletConnect2', TestWallet = 'TestWallet', @@ -74,6 +76,9 @@ export const walletConnectionTypes: Record<WalletConnectionType, WalletConnectio [WalletConnectionType.TestWallet]: { name: 'TestWallet', }, + [WalletConnectionType.Privy]: { + name: 'Privy', + }, }; // Wallets @@ -97,6 +102,7 @@ export enum WalletType { WalletConnect2 = 'WALLETCONNECT_2', TestWallet = 'TEST_WALLET', OtherWallet = 'OTHER_WALLET', + Privy = 'PRIVY', } const WALLET_CONNECT_EXPLORER_RECOMMENDED_WALLETS = { @@ -265,6 +271,12 @@ export const wallets: Record<WalletType, WalletConfig> = { icon: GenericWalletIcon, connectionTypes: [WalletConnectionType.TestWallet], }, + [WalletType.Privy]: { + type: WalletType.Privy, + stringKey: STRING_KEYS.EMAIL_OR_SOCIAL, + icon: EmailIcon, + connectionTypes: [WalletConnectionType.Privy], + }, }; // Injected EIP-1193 Providers diff --git a/src/constants/websocket.ts b/src/constants/websocket.ts deleted file mode 100644 index e6c9c4c57..000000000 --- a/src/constants/websocket.ts +++ /dev/null @@ -1,6 +0,0 @@ -export const PING_INTERVAL_MS = 2000; -export const PONG_TIMEOUT_MS = 5000; - -export const PONG_MESSAGE_TYPE = 'pong'; - -export const OUTGOING_PING_MESSAGE = JSON.stringify({ type: 'ping' }); diff --git a/src/hooks/Orderbook/useDrawOrderbook.ts b/src/hooks/Orderbook/useDrawOrderbook.ts index 757779639..958b06a70 100644 --- a/src/hooks/Orderbook/useDrawOrderbook.ts +++ b/src/hooks/Orderbook/useDrawOrderbook.ts @@ -1,9 +1,9 @@ import { useEffect, useMemo, useRef } from 'react'; + import { shallowEqual, useSelector } from 'react-redux'; import type { PerpetualMarketOrderbookLevel } from '@/constants/abacus'; import { SMALL_USD_DECIMALS, TOKEN_DECIMALS } from '@/constants/numbers'; - import { ORDERBOOK_ANIMATION_DURATION, ORDERBOOK_HEIGHT, @@ -17,7 +17,6 @@ import { useAppThemeAndColorModeContext } from '@/hooks/useAppThemeAndColorMode' import { getCurrentMarketConfig, getCurrentMarketOrderbookMap } from '@/state/perpetualsSelectors'; import { MustBigNumber } from '@/lib/numbers'; - import { getHistogramXValues, getRektFromIdx, @@ -41,6 +40,8 @@ enum OrderbookRowAnimationType { NONE, } +export type Rekt = { x1: number; x2: number; y1: number; y2: number }; + export const useDrawOrderbook = ({ data, histogramRange, @@ -51,7 +52,7 @@ export const useDrawOrderbook = ({ const canvas = canvasRef.current; const currentOrderbookMap = useSelector(getCurrentMarketOrderbookMap, shallowEqual); const { stepSizeDecimals = TOKEN_DECIMALS, tickSizeDecimals = SMALL_USD_DECIMALS } = - useSelector(getCurrentMarketConfig, shallowEqual) || {}; + useSelector(getCurrentMarketConfig, shallowEqual) ?? {}; const prevData = useRef<typeof data>(data); const theme = useAppThemeAndColorModeContext(); @@ -59,7 +60,7 @@ export const useDrawOrderbook = ({ * Scale canvas using device pixel ratio to unblur drawn text * @url https://stackoverflow.com/questions/15661339/how-do-i-fix-blurry-text-in-my-html5-canvas/65124939#65124939 * @returns adjusted canvas width/height/rowHeight used in coordinates for drawing - **/ + * */ const { canvasWidth, canvasHeight, rowHeight } = useMemo(() => { const ratio = window.devicePixelRatio || 1; @@ -96,8 +97,8 @@ export const useDrawOrderbook = ({ depthOrSizeValue, gradientMultiplier, histogramAccentColor, - histogramSide, - idx, + histogramSide: inHistogramSide, + rekt, }: { barType: 'depth' | 'size'; ctx: CanvasRenderingContext2D; @@ -105,15 +106,9 @@ export const useDrawOrderbook = ({ gradientMultiplier: number; histogramAccentColor: string; histogramSide: 'left' | 'right'; - idx: number; + rekt: Rekt; }) => { - const { x1, x2, y1, y2 } = getRektFromIdx({ - idx, - rowHeight, - canvasWidth, - canvasHeight, - side, - }); + const { x1, x2, y1, y2 } = rekt; // X values const maxHistogramBarWidth = x2 - x1 - (barType === 'size' ? 8 : 2); @@ -125,7 +120,7 @@ export const useDrawOrderbook = ({ barWidth, canvasWidth, gradientMultiplier, - histogramSide, + histogramSide: inHistogramSide, }); // Gradient @@ -151,7 +146,7 @@ export const useDrawOrderbook = ({ y, bar.x2, rowHeight - 2, - histogramSide === 'right' ? [2, 0, 0, 2] : [0, 2, 2, 0] + inHistogramSide === 'right' ? [2, 0, 0, 2] : [0, 2, 2, 0] ); } else { ctx.rect(bar.x1, y, bar.x2, rowHeight - 2); @@ -163,25 +158,19 @@ export const useDrawOrderbook = ({ const drawText = ({ animationType = OrderbookRowAnimationType.NONE, ctx, - idx, mine, price, size, + rekt, }: { animationType?: OrderbookRowAnimationType; ctx: CanvasRenderingContext2D; - idx: number; mine?: number; price?: number; size?: number; + rekt: Rekt; }) => { - const { y1 } = getRektFromIdx({ - idx, - rowHeight, - canvasWidth, - canvasHeight, - side, - }); + const { y1 } = rekt; const { text: y } = getYForElements({ y: y1, rowHeight }); @@ -190,7 +179,7 @@ export const useDrawOrderbook = ({ switch (animationType) { case OrderbookRowAnimationType.REMOVE: { - textColor = theme.textSecondary; + textColor = theme.textTertiary; break; } @@ -251,6 +240,13 @@ export const useDrawOrderbook = ({ if (!rowToRender) return; const { depth, mine, price, size } = rowToRender; const histogramAccentColor = side === 'bid' ? theme.positiveFaded : theme.negativeFaded; + const rekt = getRektFromIdx({ + idx, + rowHeight, + canvasWidth, + canvasHeight, + side, + }); // Depth Bar if (depth) { @@ -261,7 +257,7 @@ export const useDrawOrderbook = ({ gradientMultiplier: 1.3, histogramAccentColor, histogramSide, - idx, + rekt, }); } @@ -273,17 +269,17 @@ export const useDrawOrderbook = ({ gradientMultiplier: 5, histogramAccentColor, histogramSide, - idx, + rekt, }); // Size, Price, Mine drawText({ animationType, ctx, - idx, mine, price, size, + rekt, }); }; @@ -299,59 +295,24 @@ export const useDrawOrderbook = ({ // Animate row removal and update const mapOfOrderbookPriceLevels = side && currentOrderbookMap?.[side === 'ask' ? 'asks' : 'bids']; - const empty: number[] = []; - const removed: number[] = []; - const updated: number[] = []; prevData.current.forEach((row, idx) => { - if (!row) { - empty.push(idx); - return; - } + if (!row) return; + + let animationType = OrderbookRowAnimationType.NEW; if (mapOfOrderbookPriceLevels?.[row.price] === 0) { - removed.push(idx); - drawOrderbookRow({ - ctx, - idx, - rowToRender: row, - animationType: OrderbookRowAnimationType.REMOVE, - }); - } else if (mapOfOrderbookPriceLevels?.[row.price] === row?.size) { - drawOrderbookRow({ - ctx, - idx, - rowToRender: data[idx], - animationType: OrderbookRowAnimationType.NONE, - }); - } else { - updated.push(idx); - drawOrderbookRow({ - ctx, - idx, - rowToRender: row, - animationType: OrderbookRowAnimationType.NEW, - }); + animationType = OrderbookRowAnimationType.REMOVE; + } else if (mapOfOrderbookPriceLevels?.[row.price] === row.size) { + animationType = OrderbookRowAnimationType.NONE; } + + drawOrderbookRow({ ctx, idx, rowToRender: row, animationType }); }); setTimeout(() => { - [...empty, ...removed, ...updated].forEach((idx) => { - const { x1, y1, x2, y2 } = getRektFromIdx({ - idx, - rowHeight, - canvasWidth, - canvasHeight, - side, - }); - - ctx.clearRect(x1, y1, x2 - x1, y2 - y1); - drawOrderbookRow({ - ctx, - idx, - rowToRender: data[idx], - }); - }); + ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height); + data.forEach((row, idx) => drawOrderbookRow({ ctx, idx, rowToRender: row })); }, ORDERBOOK_ANIMATION_DURATION); prevData.current = data; diff --git a/src/hooks/Orderbook/useOrderbookValues.ts b/src/hooks/Orderbook/useOrderbookValues.ts index d4418ed80..97d09cd91 100644 --- a/src/hooks/Orderbook/useOrderbookValues.ts +++ b/src/hooks/Orderbook/useOrderbookValues.ts @@ -1,31 +1,32 @@ import { useMemo } from 'react'; -import { shallowEqual, useSelector } from 'react-redux'; + import { OrderSide } from '@dydxprotocol/v4-client-js'; +import { shallowEqual, useSelector } from 'react-redux'; -import { type PerpetualMarketOrderbookLevel } from '@/constants/abacus'; -import { DepthChartSeries, DepthChartDatum } from '@/constants/charts'; +import { OrderbookLine, type PerpetualMarketOrderbookLevel } from '@/constants/abacus'; +import { DepthChartDatum, DepthChartSeries } from '@/constants/charts'; +import { getSubaccountOrderSizeBySideAndPrice } from '@/state/accountSelectors'; import { getCurrentMarketOrderbook } from '@/state/perpetualsSelectors'; -import { getSubaccountOpenOrdersBySideAndPrice } from '@/state/accountSelectors'; import { MustBigNumber } from '@/lib/numbers'; export const useCalculateOrderbookData = ({ maxRowsPerSide }: { maxRowsPerSide: number }) => { const orderbook = useSelector(getCurrentMarketOrderbook, shallowEqual); - const openOrdersBySideAndPrice = - useSelector(getSubaccountOpenOrdersBySideAndPrice, shallowEqual) || {}; + const subaccountOrderSizeBySideAndPrice = + useSelector(getSubaccountOrderSizeBySideAndPrice, shallowEqual) || {}; return useMemo(() => { const asks: Array<PerpetualMarketOrderbookLevel | undefined> = ( orderbook?.asks?.toArray() ?? [] ) .map( - (row, idx: number) => + (row: OrderbookLine, idx: number) => ({ key: `ask-${idx}`, side: 'ask', - mine: openOrdersBySideAndPrice[OrderSide.SELL]?.[row.price]?.size, + mine: subaccountOrderSizeBySideAndPrice[OrderSide.SELL]?.[row.price], ...row, } as PerpetualMarketOrderbookLevel) ) @@ -35,11 +36,11 @@ export const useCalculateOrderbookData = ({ maxRowsPerSide }: { maxRowsPerSide: orderbook?.bids?.toArray() ?? [] ) .map( - (row, idx: number) => + (row: OrderbookLine, idx: number) => ({ key: `bid-${idx}`, side: 'bid', - mine: openOrdersBySideAndPrice[OrderSide.BUY]?.[row.price]?.size, + mine: subaccountOrderSizeBySideAndPrice[OrderSide.BUY]?.[row.price], ...row, } as PerpetualMarketOrderbookLevel) ) @@ -74,8 +75,8 @@ export const useCalculateOrderbookData = ({ maxRowsPerSide }: { maxRowsPerSide: const spreadPercent = orderbook?.spreadPercent; const histogramRange = Math.max( - isNaN(Number(bids[bids.length - 1]?.depth)) ? 0 : Number(bids[bids.length - 1]?.depth), - isNaN(Number(asks[asks.length - 1]?.depth)) ? 0 : Number(asks[asks.length - 1]?.depth) + Number.isNaN(Number(bids[bids.length - 1]?.depth)) ? 0 : Number(bids[bids.length - 1]?.depth), + Number.isNaN(Number(asks[asks.length - 1]?.depth)) ? 0 : Number(asks[asks.length - 1]?.depth) ); return { @@ -86,7 +87,7 @@ export const useCalculateOrderbookData = ({ maxRowsPerSide }: { maxRowsPerSide: histogramRange, hasOrderbook: !!orderbook, }; - }, [orderbook, openOrdersBySideAndPrice]); + }, [orderbook, subaccountOrderSizeBySideAndPrice]); }; export const useOrderbookValuesForDepthChart = () => { diff --git a/src/hooks/Orderbook/useSpreadRowScrollListener.ts b/src/hooks/Orderbook/useSpreadRowScrollListener.ts index e82c0b709..cdbfd8aff 100644 --- a/src/hooks/Orderbook/useSpreadRowScrollListener.ts +++ b/src/hooks/Orderbook/useSpreadRowScrollListener.ts @@ -1,4 +1,4 @@ -import { type RefObject, useEffect, useState } from 'react'; +import { useEffect, useState, type RefObject } from 'react'; export const useSpreadRowScrollListener = ({ orderbookRef, diff --git a/src/hooks/index.ts b/src/hooks/index.ts deleted file mode 100644 index fc985a8e8..000000000 --- a/src/hooks/index.ts +++ /dev/null @@ -1,59 +0,0 @@ -import { useApiState } from './useApiState'; -import { useBreakpoints } from './useBreakpoints'; -import { useTokenConfigs } from './useTokenConfigs'; -import { useCommandMenu } from './useCommandMenu'; -import { useCurrentMarketId } from './useCurrentMarketId'; -import { useDebounce } from './useDebounce'; -import { useInterval } from './useInterval'; -import { useDocumentTitle } from './useDocumentTitle'; -import { useDydxClient } from './useDydxClient'; -import { useGovernanceVariables } from './useGovernanceVariables'; -import { useAccountBalance } from './useAccountBalance'; -import { useAccounts } from './useAccounts'; -import { useAnalytics } from './useAnalytics'; -import { useInitializePage } from './useInitializePage'; -import { useIsFirstRender } from './useIsFirstRender'; -import { useLocaleSeparators } from './useLocaleSeparators'; -import { useLocalStorage } from './useLocalStorage'; -import { useNextClobPairId } from './useNextClobPairId'; -import { useNow } from './useNow'; -import { useOnClickOutside } from './useOnClickOutside'; -import { usePageTitlePriceUpdates } from './usePageTitlePriceUpdates'; -import { useRestrictions } from './useRestrictions'; -import { useShouldShowFooter } from './useShouldShowFooter'; -import { useSelectedNetwork } from './useSelectedNetwork'; -import { useStringGetter } from './useStringGetter'; -import { useSubaccount } from './useSubaccount'; -import { useTradeFormInputs } from './useTradeFormInputs'; -import { useURLConfigs } from './useURLConfigs'; - -export { - useApiState, - useBreakpoints, - useTokenConfigs, - useCommandMenu, - useCurrentMarketId, - useDebounce, - useDocumentTitle, - useDydxClient, - useGovernanceVariables, - useAccountBalance, - useAccounts, - useAnalytics, - useInitializePage, - useInterval, - useIsFirstRender, - useLocaleSeparators, - useLocalStorage, - useNextClobPairId, - useNow, - useOnClickOutside, - usePageTitlePriceUpdates, - useRestrictions, - useShouldShowFooter, - useSelectedNetwork, - useStringGetter, - useSubaccount, - useTradeFormInputs, - useURLConfigs, -}; diff --git a/src/hooks/tradingView/useChartLines.ts b/src/hooks/tradingView/useChartLines.ts index e4f6bd0eb..987770642 100644 --- a/src/hooks/tradingView/useChartLines.ts +++ b/src/hooks/tradingView/useChartLines.ts @@ -4,21 +4,22 @@ import { shallowEqual, useSelector } from 'react-redux'; import { AbacusOrderStatus, ORDER_SIDES, SubaccountOrder } from '@/constants/abacus'; import { STRING_KEYS } from '@/constants/localization'; -import { type OrderType, ORDER_TYPE_STRINGS } from '@/constants/trade'; -import type { ChartLine, TvWidget } from '@/constants/tvchart'; - -import { useStringGetter } from '@/hooks'; +import { ORDER_TYPE_STRINGS, type OrderType } from '@/constants/trade'; +import type { ChartLine, PositionLineType, TvWidget } from '@/constants/tvchart'; import { getCurrentMarketOrders, getCurrentMarketPositionData, getIsAccountConnected, } from '@/state/accountSelectors'; -import { getAppTheme, getAppColorMode } from '@/state/configsSelectors'; +import { getAppColorMode, getAppTheme } from '@/state/configsSelectors'; +import { getCurrentMarketId } from '@/state/perpetualsSelectors'; import { MustBigNumber } from '@/lib/numbers'; import { getChartLineColors } from '@/lib/tradingView/utils'; +import { useStringGetter } from '../useStringGetter'; + /** * @description Hook to handle drawing chart lines */ @@ -43,9 +44,14 @@ export const useChartLines = ({ const isAccountConnected = useSelector(getIsAccountConnected); + const currentMarketId = useSelector(getCurrentMarketId); const currentMarketPositionData = useSelector(getCurrentMarketPositionData, shallowEqual); const currentMarketOrders: SubaccountOrder[] = useSelector(getCurrentMarketOrders, shallowEqual); + useEffect(() => { + return () => deleteChartLines(); + }, [currentMarketId]); + useEffect(() => { if (isChartReady && displayButton) { displayButton.onclick = () => setShowOrderLines(!showOrderLines); @@ -66,7 +72,7 @@ export const useChartLines = ({ if (showOrderLines) { displayButton?.classList?.add('order-lines-active'); drawOrderLines(); - drawPositionLine(); + drawPositionLines(); } else { displayButton?.classList?.remove('order-lines-active'); deleteChartLines(); @@ -77,47 +83,79 @@ export const useChartLines = ({ } }, [isChartReady, showOrderLines, currentMarketPositionData, currentMarketOrders]); - const drawPositionLine = () => { + const drawPositionLines = () => { if (!currentMarketPositionData) return; const entryPrice = currentMarketPositionData.entryPrice?.current; + const liquidationPrice = currentMarketPositionData.liquidationPrice?.current; const size = currentMarketPositionData.size?.current; - const key = currentMarketPositionData.id; - const price = MustBigNumber(entryPrice).toNumber(); + const entryLineKey = `entry-${currentMarketPositionData.id}`; + const liquidationLineKey = `liquidation-${currentMarketPositionData.id}`; + + maybeDrawPositionLine({ + key: entryLineKey, + label: stringGetter({ key: STRING_KEYS.ENTRY_PRICE_SHORT }), + chartLineType: 'entry', + price: entryPrice, + size, + }); + maybeDrawPositionLine({ + key: liquidationLineKey, + label: stringGetter({ key: STRING_KEYS.LIQUIDATION }), + chartLineType: 'liquidation', + price: liquidationPrice, + size, + }); + }; + + const maybeDrawPositionLine = ({ + key, + label, + chartLineType, + price, + size, + }: { + key: string; + label: string; + chartLineType: PositionLineType; + price?: number | null; + size?: number | null; + }) => { + const shouldShow = !!(size && price); const maybePositionLine = chartLinesRef.current[key]?.line; - const shouldShow = size && size !== 0; if (!shouldShow) { if (maybePositionLine) { maybePositionLine.remove(); delete chartLinesRef.current[key]; - return; } - } else { - const quantity = size.toString(); + return; + } - if (maybePositionLine) { - if (maybePositionLine.getQuantity() !== quantity) { - maybePositionLine.setQuantity(quantity); - } - if (maybePositionLine.getPrice() !== price) { - maybePositionLine.setPrice(price); - } - } else { - const positionLine = tvWidget - ?.chart() - .createPositionLine({ disableUndo: false }) - .setText(stringGetter({ key: STRING_KEYS.ENTRY_PRICE_SHORT })) - .setPrice(price) - .setQuantity(quantity); - - if (positionLine) { - const chartLine: ChartLine = { line: positionLine, chartLineType: 'position' }; - setLineColors({ chartLine: chartLine }); - chartLinesRef.current[key] = chartLine; - } + const formattedPrice = MustBigNumber(price).toNumber(); + const quantity = Math.abs(size).toString(); + + if (maybePositionLine) { + if (maybePositionLine.getPrice() !== formattedPrice) { + maybePositionLine.setPrice(formattedPrice); + } + if (maybePositionLine.getQuantity() !== quantity) { + maybePositionLine.setQuantity(quantity); + } + } else { + const positionLine = tvWidget + ?.chart() + .createPositionLine({ disableUndo: false }) + .setPrice(formattedPrice) + .setQuantity(quantity) + .setText(label); + + if (positionLine) { + const chartLine: ChartLine = { line: positionLine, chartLineType }; + setLineColors({ chartLine }); + chartLinesRef.current[key] = chartLine; } } }; @@ -152,15 +190,18 @@ export const useChartLines = ({ (status === AbacusOrderStatus.open || status === AbacusOrderStatus.untriggered); const maybeOrderLine = chartLinesRef.current[key]?.line; + const formattedPrice = MustBigNumber(triggerPrice ?? price).toNumber(); if (!shouldShow) { if (maybeOrderLine) { maybeOrderLine.remove(); delete chartLinesRef.current[key]; - return; } } else { if (maybeOrderLine) { + if (maybeOrderLine.getPrice() !== formattedPrice) { + maybeOrderLine.setPrice(formattedPrice); + } if (maybeOrderLine.getQuantity() !== quantity) { maybeOrderLine.setQuantity(quantity); } @@ -168,7 +209,7 @@ export const useChartLines = ({ const orderLine = tvWidget ?.chart() .createOrderLine({ disableUndo: false }) - .setPrice(MustBigNumber(triggerPrice ?? price).toNumber()) + .setPrice(formattedPrice) .setQuantity(quantity) .setText(orderString); @@ -177,7 +218,7 @@ export const useChartLines = ({ line: orderLine, chartLineType: ORDER_SIDES[side.name], }; - setLineColors({ chartLine: chartLine }); + setLineColors({ chartLine }); chartLinesRef.current[key] = chartLine; } } @@ -209,8 +250,9 @@ export const useChartLines = ({ .setBodyTextColor(textColor) .setQuantityTextColor(textButtonColor); - maybeQuantityColor && + if (maybeQuantityColor != null) { line.setLineColor(maybeQuantityColor).setQuantityBackgroundColor(maybeQuantityColor); + } }; return { chartLines: chartLinesRef.current }; diff --git a/src/hooks/tradingView/useChartMarketAndResolution.ts b/src/hooks/tradingView/useChartMarketAndResolution.ts index 9b4f71d21..6f1831911 100644 --- a/src/hooks/tradingView/useChartMarketAndResolution.ts +++ b/src/hooks/tradingView/useChartMarketAndResolution.ts @@ -1,8 +1,7 @@ import { useEffect } from 'react'; -import { useDispatch, useSelector } from 'react-redux'; - import type { ResolutionString } from 'public/tradingview/charting_library'; +import { useDispatch, useSelector } from 'react-redux'; import { DEFAULT_RESOLUTION, RESOLUTION_CHART_CONFIGS } from '@/constants/candles'; import { DEFAULT_MARKETID } from '@/constants/markets'; @@ -26,10 +25,10 @@ export const useChartMarketAndResolution = ({ }) => { const dispatch = useDispatch(); - const currentMarketId: string = useSelector(getCurrentMarketId) || DEFAULT_MARKETID; + const currentMarketId: string = useSelector(getCurrentMarketId) ?? DEFAULT_MARKETID; const selectedResolution: string = - useSelector(getSelectedResolutionForMarket(currentMarketId)) || DEFAULT_RESOLUTION; + useSelector(getSelectedResolutionForMarket(currentMarketId)) ?? DEFAULT_RESOLUTION; const chart = isWidgetReady ? tvWidget?.chart() : undefined; const chartResolution = chart?.resolution?.(); @@ -39,7 +38,7 @@ export const useChartMarketAndResolution = ({ */ useEffect(() => { if (isWidgetReady && currentMarketId !== tvWidget?.activeChart().symbol()) { - const resolution = savedResolution || selectedResolution; + const resolution = savedResolution ?? selectedResolution; tvWidget?.setSymbol(currentMarketId, resolution as ResolutionString, () => {}); } }, [currentMarketId, isWidgetReady]); diff --git a/src/hooks/tradingView/useTradingView.ts b/src/hooks/tradingView/useTradingView.ts index 0de4d1893..734ded617 100644 --- a/src/hooks/tradingView/useTradingView.ts +++ b/src/hooks/tradingView/useTradingView.ts @@ -1,27 +1,32 @@ -import React, { useEffect } from 'react'; - -import { shallowEqual, useSelector } from 'react-redux'; +import React, { useEffect, useState } from 'react'; +import BigNumber from 'bignumber.js'; import isEmpty from 'lodash/isEmpty'; - -import { LanguageCode, ResolutionString, widget } from 'public/tradingview/charting_library'; +import { + LanguageCode, + ResolutionString, + widget as Widget, +} from 'public/tradingview/charting_library'; +import { shallowEqual, useSelector } from 'react-redux'; import { DEFAULT_RESOLUTION } from '@/constants/candles'; -import { SUPPORTED_LOCALE_BASE_TAGS, STRING_KEYS } from '@/constants/localization'; import { LocalStorageKey } from '@/constants/localStorage'; +import { STRING_KEYS, SUPPORTED_LOCALE_BASE_TAGS } from '@/constants/localization'; import type { TvWidget } from '@/constants/tvchart'; -import { useDydxClient, useLocalStorage, useStringGetter } from '@/hooks'; - import { store } from '@/state/_store'; import { getSelectedNetwork } from '@/state/appSelectors'; -import { getAppTheme, getAppColorMode } from '@/state/configsSelectors'; +import { getAppColorMode, getAppTheme } from '@/state/configsSelectors'; import { getSelectedLocale } from '@/state/localizationSelectors'; import { getCurrentMarketId, getMarketIds } from '@/state/perpetualsSelectors'; import { getDydxDatafeed } from '@/lib/tradingView/dydxfeed'; import { getSavedResolution, getWidgetOptions, getWidgetOverrides } from '@/lib/tradingView/utils'; +import { useDydxClient } from '../useDydxClient'; +import { useLocalStorage } from '../useLocalStorage'; +import { useStringGetter } from '../useStringGetter'; + /** * @description Hook to initialize TradingView Chart */ @@ -43,7 +48,8 @@ export const useTradingView = ({ const marketIds = useSelector(getMarketIds, shallowEqual); const selectedLocale = useSelector(getSelectedLocale); const selectedNetwork = useSelector(getSelectedNetwork); - const { getCandlesForDatafeed, isConnected: isClientConnected } = useDydxClient(); + + const { getCandlesForDatafeed, getMarketTickSize } = useDydxClient(); const [savedTvChartConfig, setTvChartConfig] = useLocalStorage<object | undefined>({ key: LocalStorageKey.TradingViewChartConfig, @@ -51,23 +57,41 @@ export const useTradingView = ({ }); const savedResolution = getSavedResolution({ savedConfig: savedTvChartConfig }); + + const [initialPriceScale, setInitialPriceScale] = useState<number | null>(null); + const hasMarkets = marketIds.length > 0; + const hasPriceScaleInfo = initialPriceScale !== null || hasMarkets; + + useEffect(() => { + // we only need tick size from current market for the price scale settings + // if markets haven't been loaded via abacus, get the current market info from indexer + (async () => { + if (marketId && !hasPriceScaleInfo) { + const marketTickSize = await getMarketTickSize(marketId); + const priceScale = BigNumber(10).exponentiatedBy( + BigNumber(marketTickSize).decimalPlaces() ?? 2 + ); + setInitialPriceScale(priceScale.toNumber()); + } + })(); + }, [marketId, hasPriceScaleInfo]); useEffect(() => { - if (hasMarkets && isClientConnected && marketId) { + if (marketId && hasPriceScaleInfo) { const widgetOptions = getWidgetOptions(); const widgetOverrides = getWidgetOverrides({ appTheme, appColorMode }); const options = { ...widgetOptions, ...widgetOverrides, - datafeed: getDydxDatafeed(store, getCandlesForDatafeed), - interval: (savedResolution || DEFAULT_RESOLUTION) as ResolutionString, + datafeed: getDydxDatafeed(store, getCandlesForDatafeed, initialPriceScale), + interval: (savedResolution ?? DEFAULT_RESOLUTION) as ResolutionString, locale: SUPPORTED_LOCALE_BASE_TAGS[selectedLocale] as LanguageCode, symbol: marketId, saved_data: !isEmpty(savedTvChartConfig) ? savedTvChartConfig : undefined, }; - const tvChartWidget = new widget(options); + const tvChartWidget = new Widget(options); tvWidgetRef.current = tvChartWidget; tvWidgetRef.current.onChartReady(() => { @@ -99,14 +123,7 @@ export const useTradingView = ({ tvWidgetRef.current = null; setIsChartReady(false); }; - }, [ - getCandlesForDatafeed, - isClientConnected, - hasMarkets, - selectedLocale, - selectedNetwork, - !!marketId, - ]); + }, [selectedLocale, selectedNetwork, !!marketId, hasPriceScaleInfo]); return { savedResolution }; }; diff --git a/src/hooks/tradingView/useTradingViewTheme.ts b/src/hooks/tradingView/useTradingViewTheme.ts index 8930cbf64..448fd1746 100644 --- a/src/hooks/tradingView/useTradingViewTheme.ts +++ b/src/hooks/tradingView/useTradingViewTheme.ts @@ -6,9 +6,10 @@ import { THEME_NAMES } from '@/constants/styles/colors'; import type { ChartLine, TvWidget } from '@/constants/tvchart'; import { AppColorMode, AppTheme } from '@/state/configs'; -import { getAppTheme, getAppColorMode } from '@/state/configsSelectors'; +import { getAppColorMode, getAppTheme } from '@/state/configsSelectors'; -import { getWidgetOverrides, getChartLineColors } from '@/lib/tradingView/utils'; +import { assertNever } from '@/lib/assertNever'; +import { getChartLineColors, getWidgetOverrides } from '@/lib/tradingView/utils'; /** * @description Method to define a type guard and check that an element is an IFRAME @@ -56,10 +57,15 @@ export const useTradingViewTheme = ({ case AppTheme.Light: innerHtml?.classList.remove('theme-dark'); innerHtml?.classList.add('theme-light'); + break; + default: + assertNever(appTheme); + break; } } } + // eslint-disable-next-line @typescript-eslint/naming-convention const { overrides, studies_overrides } = getWidgetOverrides({ appTheme, appColorMode }); tvWidget?.applyOverrides(overrides); tvWidget?.applyStudiesOverrides(studies_overrides); @@ -81,7 +87,7 @@ export const useTradingViewTheme = ({ // Necessary to update existing chart lines Object.values(chartLines).forEach(({ chartLineType, line }) => { const { maybeQuantityColor, borderColor, backgroundColor, textColor, textButtonColor } = - getChartLineColors({ chartLineType: chartLineType, appTheme, appColorMode }); + getChartLineColors({ chartLineType, appTheme, appColorMode }); if (maybeQuantityColor) { line.setLineColor(maybeQuantityColor).setQuantityBackgroundColor(maybeQuantityColor); diff --git a/src/hooks/useAccountBalance.ts b/src/hooks/useAccountBalance.ts index 89cdf557c..b31671798 100644 --- a/src/hooks/useAccountBalance.ts +++ b/src/hooks/useAccountBalance.ts @@ -1,19 +1,20 @@ import { useCallback } from 'react'; -import { shallowEqual, useSelector } from 'react-redux'; -import { useBalance } from 'wagmi'; + import { StargateClient } from '@cosmjs/stargate'; import { useQuery } from 'react-query'; +import { shallowEqual, useSelector } from 'react-redux'; import { formatUnits } from 'viem'; +import { useBalance } from 'wagmi'; import { ENVIRONMENT_CONFIG_MAP } from '@/constants/networks'; import { EvmAddress } from '@/constants/wallets'; -import { convertBech32Address } from '@/lib/addressUtils'; -import { MustBigNumber } from '@/lib/numbers'; - import { getBalances, getStakingBalances } from '@/state/accountSelectors'; import { getSelectedNetwork } from '@/state/appSelectors'; +import { convertBech32Address } from '@/lib/addressUtils'; +import { MustBigNumber } from '@/lib/numbers'; + import { useAccounts } from './useAccounts'; import { useTokenConfigs } from './useTokenConfigs'; @@ -74,6 +75,7 @@ export const useAccountBalance = ({ return formatUnits(BigInt(balanceAsCoin.amount), decimals); } + return undefined; }, [addressOrDenom, chainId, rpc]); const cosmosQuery = useQuery({ @@ -87,7 +89,7 @@ export const useAccountBalance = ({ staleTime: 10_000, }); - const { formatted: evmBalance } = evmQuery.data || {}; + const { formatted: evmBalance } = evmQuery.data ?? {}; const balance = isCosmosChain ? cosmosQuery.data : evmBalance; const nativeTokenCoinBalance = balances?.[chainTokenDenom]; diff --git a/src/hooks/useAccounts.tsx b/src/hooks/useAccounts.tsx index 66a966e66..88cb0a77b 100644 --- a/src/hooks/useAccounts.tsx +++ b/src/hooks/useAccounts.tsx @@ -1,23 +1,23 @@ -import { useCallback, useContext, createContext, useEffect, useState, useMemo } from 'react'; +import { createContext, useCallback, useContext, useEffect, useMemo, useState } from 'react'; -import { useDispatch } from 'react-redux'; +import { OfflineSigner } from '@cosmjs/proto-signing'; +import { LocalWallet, NOBLE_BECH32_PREFIX, type Subaccount } from '@dydxprotocol/v4-client-js'; +import { usePrivy } from '@privy-io/react-auth'; import { AES, enc } from 'crypto-js'; -import { NOBLE_BECH32_PREFIX, LocalWallet, type Subaccount } from '@dydxprotocol/v4-client-js'; +import { useDispatch } from 'react-redux'; import { OnboardingGuard, OnboardingState, type EvmDerivedAddresses } from '@/constants/account'; -import { DialogTypes } from '@/constants/dialogs'; -import { STRING_KEYS } from '@/constants/localization'; -import { LocalStorageKey, LOCAL_STORAGE_VERSIONS } from '@/constants/localStorage'; +import { LOCAL_STORAGE_VERSIONS, LocalStorageKey } from '@/constants/localStorage'; import { DydxAddress, EvmAddress, PrivateInformation, TEST_WALLET_EVM_ADDRESS, + WalletConnectionType, WalletType, } from '@/constants/wallets'; -import { setOnboardingState, setOnboardingGuard } from '@/state/account'; -import { forceOpenDialog } from '@/state/dialogs'; +import { setOnboardingGuard, setOnboardingState } from '@/state/account'; import abacusStateManager from '@/lib/abacus'; import { log } from '@/lib/telemetry'; @@ -25,7 +25,7 @@ import { testFlags } from '@/lib/testFlags'; import { useDydxClient } from './useDydxClient'; import { useLocalStorage } from './useLocalStorage'; -import { useRestrictions } from './useRestrictions'; +import useSignForWalletDerivation from './useSignForWalletDerivation'; import { useWalletConnection } from './useWalletConnection'; const AccountsContext = createContext<ReturnType<typeof useAccountsContext> | undefined>(undefined); @@ -75,6 +75,8 @@ const useAccountsContext = () => { setPreviousEvmAddress(evmAddress); }, [evmAddress]); + const { ready, authenticated } = usePrivy(); + // EVM → dYdX account derivation const [evmDerivedAddresses, saveEvmDerivedAddresses] = useLocalStorage({ @@ -89,17 +91,17 @@ const useAccountsContext = () => { }, []); const saveEvmDerivedAccount = ({ - evmAddress, + evmAddressInner, dydxAddress, }: { - evmAddress: EvmAddress; + evmAddressInner: EvmAddress; dydxAddress?: DydxAddress; }) => { saveEvmDerivedAddresses({ ...evmDerivedAddresses, version: LOCAL_STORAGE_VERSIONS[LocalStorageKey.EvmDerivedAddresses], - [evmAddress]: { - ...evmDerivedAddresses[evmAddress], + [evmAddressInner]: { + ...evmDerivedAddresses[evmAddressInner], dydxAddress, }, }); @@ -135,29 +137,24 @@ const useAccountsContext = () => { }; // dYdXClient Onboarding & Account Helpers - const { compositeClient, getWalletFromEvmSignature } = useDydxClient(); + const { indexerClient, getWalletFromEvmSignature } = useDydxClient(); // dYdX subaccounts const [dydxSubaccounts, setDydxSubaccounts] = useState<Subaccount[] | undefined>(); - const { getSubaccounts } = useMemo( - () => ({ - getSubaccounts: async ({ dydxAddress }: { dydxAddress: DydxAddress }) => { - try { - const response = await compositeClient?.indexerClient.account.getSubaccounts(dydxAddress); - setDydxSubaccounts(response?.subaccounts); - return response?.subaccounts ?? []; - } catch (error) { - // 404 is expected if the user has no subaccounts - if (error.status === 404) { - return []; - } else { - throw error; - } - } - }, - }), - [compositeClient] - ); + const getSubaccounts = async ({ dydxAddress }: { dydxAddress: DydxAddress }) => { + try { + const response = await indexerClient.account.getSubaccounts(dydxAddress); + setDydxSubaccounts(response?.subaccounts); + return response?.subaccounts ?? []; + } catch (error) { + // 404 is expected if the user has no subaccounts + // 403 is expected if the user account is blocked + if (error.status === 404 || error.status === 403) { + return []; + } + throw error; + } + }; // dYdX wallet / onboarding state const [localDydxWallet, setLocalDydxWallet] = useState<LocalWallet>(); @@ -171,10 +168,7 @@ const useAccountsContext = () => { [localDydxWallet] ); - const nobleAddress = useMemo( - () => localNobleWallet?.address, - [localNobleWallet] - ); + const nobleAddress = useMemo(() => localNobleWallet?.address, [localNobleWallet]); const setWalletFromEvmSignature = async (signature: string) => { const { wallet, mnemonic, privateKey, publicKey } = await getWalletFromEvmSignature({ @@ -186,24 +180,27 @@ const useAccountsContext = () => { useEffect(() => { if (evmAddress) { - saveEvmDerivedAccount({ evmAddress, dydxAddress }); + saveEvmDerivedAccount({ evmAddressInner: evmAddress, dydxAddress }); } }, [evmAddress, dydxAddress]); + const signTypedDataAsync = useSignForWalletDerivation(); + useEffect(() => { (async () => { if (walletType === WalletType.TestWallet) { // Get override values. Use the testFlags value if it exists, otherwise use the previously // saved value where possible. If neither exist, use a default garbage value. - const addressOverride: DydxAddress = testFlags.addressOverride as DydxAddress || - evmDerivedAddresses?.[TEST_WALLET_EVM_ADDRESS]?.dydxAddress as DydxAddress || + const addressOverride: DydxAddress = + (testFlags.addressOverride as DydxAddress) || + (evmDerivedAddresses?.[TEST_WALLET_EVM_ADDRESS]?.dydxAddress as DydxAddress) || 'dydx1'; dispatch(setOnboardingState(OnboardingState.WalletConnected)); // Set variables. saveEvmDerivedAccount({ - evmAddress: TEST_WALLET_EVM_ADDRESS, + evmAddressInner: TEST_WALLET_EVM_ADDRESS, dydxAddress: addressOverride, }); const wallet = new LocalWallet(); @@ -214,7 +211,7 @@ const useAccountsContext = () => { } else if (connectedDydxAddress && signerGraz) { dispatch(setOnboardingState(OnboardingState.WalletConnected)); try { - setLocalDydxWallet(await LocalWallet.fromOfflineSigner(signerGraz)); + setLocalDydxWallet(await LocalWallet.fromOfflineSigner(signerGraz as OfflineSigner)); dispatch(setOnboardingState(OnboardingState.AccountConnected)); } catch (error) { log('useAccounts/setLocalDydxWallet', error); @@ -225,7 +222,17 @@ const useAccountsContext = () => { const evmDerivedAccount = evmDerivedAddresses[evmAddress]; - if (evmDerivedAccount?.encryptedSignature) { + if (walletConnectionType === WalletConnectionType.Privy && authenticated && ready) { + try { + const signature = await signTypedDataAsync(); + + await setWalletFromEvmSignature(signature); + dispatch(setOnboardingState(OnboardingState.AccountConnected)); + } catch (error) { + log('useAccounts/decryptSignature', error); + forgetEvmSignature(); + } + } else if (evmDerivedAccount?.encryptedSignature) { try { const signature = decryptSignature(evmDerivedAccount.encryptedSignature); @@ -248,9 +255,9 @@ const useAccountsContext = () => { // abacus useEffect(() => { - if (dydxAddress) abacusStateManager.setAccount(localDydxWallet); + if (dydxAddress) abacusStateManager.setAccount(localDydxWallet, hdKey); else abacusStateManager.attemptDisconnectAccount(); - }, [localDydxWallet]); + }, [localDydxWallet, hdKey]); useEffect(() => { const setNobleWallet = async () => { @@ -285,7 +292,7 @@ const useAccountsContext = () => { value: hasAcknowledgedTerms, }) ); - }, [hasAcknowledgedTerms]); + }, [dispatch, hasAcknowledgedTerms]); useEffect(() => { const hasPreviousTransactions = Boolean(dydxSubaccounts?.length); @@ -296,22 +303,7 @@ const useAccountsContext = () => { value: hasPreviousTransactions, }) ); - }, [dydxSubaccounts]); - - // Restrictions - const { isBadActor, sanctionedAddresses } = useRestrictions(); - - useEffect(() => { - if ( - dydxAddress && - (isBadActor || - sanctionedAddresses.has(dydxAddress) || - (evmAddress && sanctionedAddresses.has(evmAddress))) - ) { - dispatch(forceOpenDialog({ type: DialogTypes.RestrictedWallet })); - disconnect(); - } - }, [isBadActor, evmAddress, dydxAddress, sanctionedAddresses]); + }, [dispatch, dydxSubaccounts]); // Disconnect wallet / accounts const disconnectLocalDydxWallet = () => { diff --git a/src/hooks/useAnalytics.ts b/src/hooks/useAnalytics.ts index 3415ba958..8a7af8dfd 100644 --- a/src/hooks/useAnalytics.ts +++ b/src/hooks/useAnalytics.ts @@ -1,48 +1,52 @@ import { useEffect, useState } from 'react'; -import { useSelector, shallowEqual } from 'react-redux'; -import { useLocation } from 'react-router-dom'; - -import { AnalyticsEvent, AnalyticsUserProperty } from '@/constants/analytics'; -import { track, identify } from '@/lib/analytics'; +import { shallowEqual, useSelector } from 'react-redux'; +import { useLocation } from 'react-router-dom'; -import { useApiState } from './useApiState'; -import { useBreakpoints } from './useBreakpoints'; -import { useSelectedNetwork } from './useSelectedNetwork'; -import { useAccounts } from './useAccounts'; -import { useDydxClient } from './useDydxClient'; +import { + AnalyticsEvent, + AnalyticsUserProperty, + lastSuccessfulWebsocketRequestByOrigin, +} from '@/constants/analytics'; +import type { DialogTypes } from '@/constants/dialogs'; -import { getSelectedLocale } from '@/state/localizationSelectors'; -import { getOnboardingState, getSubaccountId } from '@/state/accountSelectors'; import { calculateOnboardingStep } from '@/state/accountCalculators'; +import { getOnboardingState, getSubaccountId } from '@/state/accountSelectors'; import { getActiveDialog } from '@/state/dialogsSelectors'; -import type { DialogTypes } from '@/constants/dialogs'; +import { getInputTradeData } from '@/state/inputsSelectors'; +import { getSelectedLocale } from '@/state/localizationSelectors'; +import { identify, track } from '@/lib/analytics'; import { getSelectedTradeType } from '@/lib/tradeData'; -import { getInputTradeData } from '@/state/inputsSelectors'; + +import { useAccounts } from './useAccounts'; +import { useApiState } from './useApiState'; +import { useBreakpoints } from './useBreakpoints'; +import { useDydxClient } from './useDydxClient'; +import { useSelectedNetwork } from './useSelectedNetwork'; export const useAnalytics = () => { - const { walletType, walletConnectionType, evmAddress, dydxAddress, selectedWalletType } = useAccounts(); - const { compositeClient } = useDydxClient(); + const latestTag = import.meta.env.VITE_LAST_TAG; + const { walletType, walletConnectionType, evmAddress, dydxAddress, selectedWalletType } = + useAccounts(); + const { indexerClient } = useDydxClient(); /** User properties */ // AnalyticsUserProperty.Breakpoint const breakpointMatches = useBreakpoints(); - const breakpoint = - breakpointMatches.isMobile ? - 'MOBILE' - : breakpointMatches.isTablet ? - 'TABLET' - : breakpointMatches.isDesktopSmall ? - 'DESKTOP_SMALL' - : breakpointMatches.isDesktopMedium ? - 'DESKTOP_MEDIUM' - : breakpointMatches.isDesktopLarge ? - 'DESKTOP_LARGE' - : - 'UNSUPPORTED'; + const breakpoint = breakpointMatches.isMobile + ? 'MOBILE' + : breakpointMatches.isTablet + ? 'TABLET' + : breakpointMatches.isDesktopSmall + ? 'DESKTOP_SMALL' + : breakpointMatches.isDesktopMedium + ? 'DESKTOP_MEDIUM' + : breakpointMatches.isDesktopLarge + ? 'DESKTOP_LARGE' + : 'UNSUPPORTED'; useEffect(() => { identify(AnalyticsUserProperty.Breakpoint, breakpoint); @@ -55,6 +59,13 @@ export const useAnalytics = () => { identify(AnalyticsUserProperty.Locale, selectedLocale); }, [selectedLocale]); + // AnalyticsUserProperty.Version + useEffect(() => { + if (latestTag !== undefined) { + identify(AnalyticsUserProperty.Version, latestTag.split(`release/v`).at(-1)); + } + }, [latestTag]); + // AnalyticsUserProperty.Network const { selectedNetwork } = useSelectedNetwork(); @@ -74,7 +85,7 @@ export const useAnalytics = () => { // AnalyticsUserProperty.WalletAddress useEffect(() => { - identify(AnalyticsUserProperty.WalletAddress, evmAddress || dydxAddress); + identify(AnalyticsUserProperty.WalletAddress, evmAddress ?? dydxAddress); }, [evmAddress, dydxAddress]); // AnalyticsUserProperty.DydxAddress @@ -88,7 +99,6 @@ export const useAnalytics = () => { identify(AnalyticsUserProperty.SubaccountNumber, subaccountNumber); }, [subaccountNumber]); - /** Events */ // AnalyticsEvent.AppStart @@ -97,11 +107,11 @@ export const useAnalytics = () => { }, []); // AnalyticsEvent.NetworkStatus - const { height, indexerHeight, status, trailingBlocks} = useApiState(); + const { height, indexerHeight, status, trailingBlocks } = useApiState(); useEffect(() => { if (status) { - const websocketEndpoint = compositeClient?.indexerClient?.config.websocketEndpoint; + const websocketEndpoint = indexerClient.config.websocketEndpoint; const lastSuccessfulIndexerRpcQuery = (websocketEndpoint && @@ -114,7 +124,7 @@ export const useAnalytics = () => { elapsedTime: lastSuccessfulIndexerRpcQuery && Date.now() - lastSuccessfulIndexerRpcQuery, blockHeight: height ?? undefined, indexerBlockHeight: indexerHeight ?? undefined, - trailingBlocks: trailingBlocks ?? undefined + trailingBlocks: trailingBlocks ?? undefined, }); } }, [status]); @@ -152,7 +162,11 @@ export const useAnalytics = () => { const onClick = (e: MouseEvent) => { const anchorElement = (e.target as Element).closest('a'); - if (anchorElement instanceof HTMLAnchorElement && anchorElement.href && anchorElement.hostname !== globalThis.location.hostname) + if ( + anchorElement instanceof HTMLAnchorElement && + anchorElement.href && + anchorElement.hostname !== globalThis.location.hostname + ) track(AnalyticsEvent.NavigateExternal, { link: anchorElement.href }); }; globalThis.addEventListener('click', onClick); @@ -176,8 +190,8 @@ export const useAnalytics = () => { } }, [onboardingState, currentOnboardingStep]); - // AnalyticsEvent.OnboardingConnectWallet - // AnalyticsEvent.OnboardingDisconnectWallet + // AnalyticsEvent.ConnectWallet + // AnalyticsEvent.DisconnectWallet const [previousSelectedWalletType, setPreviousSelectedWalletType] = useState<typeof selectedWalletType>(); @@ -209,6 +223,3 @@ export const useAnalytics = () => { } }, [selectedOrderType]); }; - -export const lastSuccessfulRestRequestByOrigin: Record<URL['origin'], number> = {}; -export const lastSuccessfulWebsocketRequestByOrigin: Record<URL['origin'], number> = {}; diff --git a/src/hooks/useAnimationFrame.ts b/src/hooks/useAnimationFrame.ts index 324e2b41c..50d3b6796 100644 --- a/src/hooks/useAnimationFrame.ts +++ b/src/hooks/useAnimationFrame.ts @@ -1,20 +1,18 @@ import { useCallback, useEffect, useRef } from 'react'; -export const useAnimationFrame = ( - callback: (_: number) => void, - deps: React.DependencyList -) => { +export const useAnimationFrame = (callback: (_: number) => void, deps: React.DependencyList) => { const requestRef = useRef<number | undefined>(); const previousTimeRef = useRef<number | undefined>(); const animate = useCallback(async (time: number) => { - if (previousTimeRef.current != undefined) { + if (previousTimeRef.current != null) { const deltaTime = time - previousTimeRef.current; callback(deltaTime); } previousTimeRef.current = time; requestRef.current = requestAnimationFrame(animate); + // eslint-disable-next-line react-hooks/exhaustive-deps }, deps); useEffect(() => { @@ -23,5 +21,6 @@ export const useAnimationFrame = ( return () => { if (requestRef.current) cancelAnimationFrame(requestRef.current); }; + // eslint-disable-next-line react-hooks/exhaustive-deps }, deps); }; diff --git a/src/hooks/useApiState.ts b/src/hooks/useApiState.ts index a35893d4f..212f08180 100644 --- a/src/hooks/useApiState.ts +++ b/src/hooks/useApiState.ts @@ -4,56 +4,75 @@ import type { AbacusApiState, Nullable } from '@/constants/abacus'; import { AbacusApiStatus } from '@/constants/abacus'; import { STRING_KEYS, type StringGetterFunction } from '@/constants/localization'; -import { getApiState } from '@/state/appSelectors'; +import { getApiState, getInitializationError } from '@/state/appSelectors'; import { useStringGetter } from './useStringGetter'; -const getStatusErrorMessage = ({ +export enum ConnectionErrorType { + CHAIN_DISRUPTION = 'CHAIN_DISRUPTION', + INDEXER_TRAILING = 'INDEXER_TRAILING', +} + +const ErrorMessageMap = { + [ConnectionErrorType.CHAIN_DISRUPTION]: { + title: STRING_KEYS.CHAIN_DISRUPTION_DETECTED, + body: STRING_KEYS.CHAIN_DISRUPTION_DETECTED_BODY, + }, + [ConnectionErrorType.INDEXER_TRAILING]: { + title: STRING_KEYS.ORDERBOOK_LAGGING, + body: STRING_KEYS.ORDERBOOK_LAGGING_BODY, + }, +}; + +const getConnectionError = ({ apiState, - stringGetter, + initializationError, }: { apiState: Nullable<AbacusApiState>; - stringGetter: StringGetterFunction; + initializationError?: string; }) => { - const { haltedBlock, trailingBlocks, status } = apiState || {}; + const { status } = apiState ?? {}; + + if (initializationError) { + return ConnectionErrorType.CHAIN_DISRUPTION; + } switch (status) { - case AbacusApiStatus.INDEXER_DOWN: { - return stringGetter({ key: STRING_KEYS.INDEXER_DOWN }); - } - case AbacusApiStatus.INDEXER_HALTED: { - return stringGetter({ - key: STRING_KEYS.INDEXER_HALTED, - params: { HALTED_BLOCK: haltedBlock }, - }); - } case AbacusApiStatus.INDEXER_TRAILING: { - return stringGetter({ - key: STRING_KEYS.INDEXER_TRAILING, - params: { TRAILING_BLOCKS: trailingBlocks }, - }); - } - case AbacusApiStatus.VALIDATOR_DOWN: { - return stringGetter({ key: STRING_KEYS.VALIDATOR_DOWN }); - } - case AbacusApiStatus.VALIDATOR_HALTED: { - return stringGetter({ - key: STRING_KEYS.VALIDATOR_HALTED, - params: { HALTED_BLOCK: haltedBlock }, - }); + return ConnectionErrorType.INDEXER_TRAILING; } + case AbacusApiStatus.INDEXER_DOWN: + case AbacusApiStatus.INDEXER_HALTED: + case AbacusApiStatus.VALIDATOR_DOWN: + case AbacusApiStatus.VALIDATOR_HALTED: case AbacusApiStatus.UNKNOWN: { - return stringGetter({ key: STRING_KEYS.UNKNOWN_API_ERROR }); + return ConnectionErrorType.CHAIN_DISRUPTION; } case AbacusApiStatus.NORMAL: default: { - return null; + return undefined; } } }; +const getStatusErrorMessage = ({ + connectionError, + stringGetter, +}: { + connectionError?: ConnectionErrorType; + stringGetter: StringGetterFunction; +}) => { + if (connectionError && ErrorMessageMap[connectionError]) { + return { + title: stringGetter({ key: ErrorMessageMap[connectionError].title }), + body: stringGetter({ key: ErrorMessageMap[connectionError].body }), + }; + } + return null; +}; + export const getIndexerHeight = (apiState: Nullable<AbacusApiState>) => { - const { haltedBlock, trailingBlocks, status, height } = apiState || {}; + const { haltedBlock, trailingBlocks, status, height } = apiState ?? {}; switch (status) { case AbacusApiStatus.INDEXER_HALTED: { @@ -71,8 +90,13 @@ export const getIndexerHeight = (apiState: Nullable<AbacusApiState>) => { export const useApiState = () => { const stringGetter = useStringGetter(); const apiState = useSelector(getApiState, shallowEqual); - const { haltedBlock, height, status, trailingBlocks} = apiState ?? {}; - const statusErrorMessage = getStatusErrorMessage({ apiState, stringGetter }); + const initializationError = useSelector(getInitializationError); + const { haltedBlock, height, status, trailingBlocks } = apiState ?? {}; + const connectionError = getConnectionError({ + apiState, + initializationError, + }); + const statusErrorMessage = getStatusErrorMessage({ connectionError, stringGetter }); const indexerHeight = getIndexerHeight(apiState); return { @@ -80,6 +104,7 @@ export const useApiState = () => { height, indexerHeight, status, + connectionError, statusErrorMessage, trailingBlocks, }; diff --git a/src/hooks/useAppThemeAndColorMode.tsx b/src/hooks/useAppThemeAndColorMode.tsx index 1cbc3decf..88f301e87 100644 --- a/src/hooks/useAppThemeAndColorMode.tsx +++ b/src/hooks/useAppThemeAndColorMode.tsx @@ -1,12 +1,15 @@ import { useEffect, useState } from 'react'; + import { useSelector } from 'react-redux'; import { ThemeProvider } from 'styled-components'; -import { AppTheme, AppThemeSetting, AppColorMode, AppThemeSystemSetting } from '@/state/configs'; -import { getAppThemeSetting, getAppColorMode } from '@/state/configsSelectors'; - import { Themes } from '@/styles/themes'; +import { AppColorMode, AppTheme, AppThemeSetting, AppThemeSystemSetting } from '@/state/configs'; +import { getAppColorMode, getAppThemeSetting } from '@/state/configsSelectors'; + +import { assertNever } from '@/lib/assertNever'; + export const AppThemeAndColorModeProvider = ({ ...props }) => { return <ThemeProvider theme={useAppThemeAndColorModeContext()} {...props} />; }; @@ -22,7 +25,7 @@ export const useAppThemeAndColorModeContext = () => { ); useEffect(() => { - const handler = (e) => { + const handler = (e: MediaQueryListEvent) => { if (e.matches) { setSystemPreference(AppTheme.Dark); } else { @@ -41,6 +44,9 @@ export const useAppThemeAndColorModeContext = () => { case AppTheme.Dark: case AppTheme.Light: return themeSetting; + default: + assertNever(themeSetting, true); + return systemPreference; } }; diff --git a/src/hooks/useBreakpoints.ts b/src/hooks/useBreakpoints.ts index c9d3b3b7b..b81849a5d 100644 --- a/src/hooks/useBreakpoints.ts +++ b/src/hooks/useBreakpoints.ts @@ -20,7 +20,7 @@ export const mediaQueryLists = { [MediaQueryKeys.isDesktopSmall]: globalThis.matchMedia(breakpoints.desktopSmall), [MediaQueryKeys.isDesktopMedium]: globalThis.matchMedia(breakpoints.desktopMedium), [MediaQueryKeys.isDesktopLarge]: globalThis.matchMedia(breakpoints.desktopLarge), -}; +} as const; export const uniqueMediaQueryLists = { ...mediaQueryLists }; @@ -29,6 +29,8 @@ export const useBreakpoints = () => { const state = Object.fromEntries( Object.entries(mediaQueryLists).map(([key, mediaQueryList]) => [ key, + // this is technically okay since the loop is fully deterministic and the object won't change + // eslint-disable-next-line react-hooks/rules-of-hooks useState(mediaQueryList.matches), ]) ); diff --git a/src/hooks/useCommandMenu.ts b/src/hooks/useCommandMenu.ts index 0918f2ad1..50daf62ad 100644 --- a/src/hooks/useCommandMenu.ts +++ b/src/hooks/useCommandMenu.ts @@ -5,9 +5,9 @@ export const useCommandMenu = () => { useEffect(() => { document.addEventListener('keydown', (event: KeyboardEvent) => { - if(event.key === 'k' && (event.ctrlKey || event.metaKey)) - setIsCommandMenuOpen(!isCommandMenuOpen) - }) + if (event.key === 'k' && (event.ctrlKey || event.metaKey)) + setIsCommandMenuOpen(!isCommandMenuOpen); + }); }, []); return { diff --git a/src/hooks/useComplianceState.tsx b/src/hooks/useComplianceState.tsx new file mode 100644 index 000000000..2bb70e627 --- /dev/null +++ b/src/hooks/useComplianceState.tsx @@ -0,0 +1,86 @@ +import { shallowEqual, useSelector } from 'react-redux'; +import { Link } from 'react-router-dom'; + +import { ComplianceStatus } from '@/constants/abacus'; +import { CLOSE_ONLY_GRACE_PERIOD, ComplianceStates } from '@/constants/compliance'; +import { STRING_KEYS } from '@/constants/localization'; +import { isMainnet } from '@/constants/networks'; + +import { LinkOutIcon } from '@/icons'; + +import { getComplianceStatus, getComplianceUpdatedAt, getGeo } from '@/state/accountSelectors'; +import { getSelectedLocale } from '@/state/localizationSelectors'; + +import { isBlockedGeo } from '@/lib/compliance'; + +import { useStringGetter } from './useStringGetter'; +import { useURLConfigs } from './useURLConfigs'; + +export const useComplianceState = () => { + const stringGetter = useStringGetter(); + const complianceStatus = useSelector(getComplianceStatus, shallowEqual); + const complianceUpdatedAt = useSelector(getComplianceUpdatedAt); + const geo = useSelector(getGeo); + const selectedLocale = useSelector(getSelectedLocale); + + const updatedAtDate = complianceUpdatedAt ? new Date(complianceUpdatedAt) : undefined; + updatedAtDate?.setDate(updatedAtDate.getDate() + CLOSE_ONLY_GRACE_PERIOD); + + const { complianceSupportEmail } = useURLConfigs(); + + let complianceState = ComplianceStates.FULL_ACCESS; + + let complianceMessage; + + if ( + complianceStatus === ComplianceStatus.FIRST_STRIKE_CLOSE_ONLY || + complianceStatus === ComplianceStatus.CLOSE_ONLY + ) { + complianceState = ComplianceStates.CLOSE_ONLY; + } else if ( + complianceStatus === ComplianceStatus.BLOCKED || + (geo && isBlockedGeo(geo) && isMainnet) + ) { + complianceState = ComplianceStates.READ_ONLY; + } + + if (complianceStatus === ComplianceStatus.FIRST_STRIKE_CLOSE_ONLY) { + complianceMessage = `${stringGetter({ key: STRING_KEYS.CLICK_TO_VIEW })} →`; + } else if (complianceStatus === ComplianceStatus.CLOSE_ONLY) { + complianceMessage = stringGetter({ + key: STRING_KEYS.CLOSE_ONLY_MESSAGE, + params: { + DATE: updatedAtDate + ? updatedAtDate.toLocaleString(selectedLocale, { + dateStyle: 'medium', + timeStyle: 'short', + }) + : undefined, + EMAIL: complianceSupportEmail, + }, + }) as string; + } else if (complianceStatus === ComplianceStatus.BLOCKED) { + complianceMessage = stringGetter({ + key: STRING_KEYS.PERMANENTLY_BLOCKED_MESSAGE, + params: { EMAIL: complianceSupportEmail }, + }) as string; + } else if (geo && isBlockedGeo(geo)) { + complianceMessage = stringGetter({ + key: STRING_KEYS.BLOCKED_MESSAGE, + params: { + LINK: ( + <Link to="/terms"> + <LinkOutIcon /> + </Link> + ), + }, + }) as string; + } + + return { + geo, + complianceStatus, + complianceState, + complianceMessage, + }; +}; diff --git a/src/hooks/useCurrentMarketId.ts b/src/hooks/useCurrentMarketId.ts index c9a916620..d4dad9bde 100644 --- a/src/hooks/useCurrentMarketId.ts +++ b/src/hooks/useCurrentMarketId.ts @@ -1,14 +1,20 @@ import { useEffect, useMemo } from 'react'; + import { shallowEqual, useDispatch, useSelector } from 'react-redux'; import { useMatch, useNavigate } from 'react-router-dom'; +import { SubaccountPosition } from '@/constants/abacus'; +import { TradeBoxDialogTypes } from '@/constants/dialogs'; import { LocalStorageKey } from '@/constants/localStorage'; import { DEFAULT_MARKETID } from '@/constants/markets'; import { AppRoute } from '@/constants/routes'; + import { useLocalStorage } from '@/hooks/useLocalStorage'; +import { getOpenPositions } from '@/state/accountSelectors'; import { getSelectedNetwork } from '@/state/appSelectors'; import { closeDialogInTradeBox } from '@/state/dialogs'; +import { getActiveTradeBoxDialog } from '@/state/dialogsSelectors'; import { setCurrentMarketId } from '@/state/perpetuals'; import { getMarketIds } from '@/state/perpetualsSelectors'; @@ -20,8 +26,10 @@ export const useCurrentMarketId = () => { const { marketId } = match?.params ?? {}; const dispatch = useDispatch(); const selectedNetwork = useSelector(getSelectedNetwork); + const openPositions = useSelector(getOpenPositions, shallowEqual); const marketIds = useSelector(getMarketIds, shallowEqual); const hasMarketIds = marketIds.length > 0; + const activeTradeBoxDialog = useSelector(getActiveTradeBoxDialog); const [lastViewedMarket, setLastViewedMarket] = useLocalStorage({ key: LocalStorageKey.LastViewedMarket, @@ -57,6 +65,15 @@ export const useCurrentMarketId = () => { // If marketId is valid, set currentMarketId setLastViewedMarket(marketId); dispatch(setCurrentMarketId(marketId)); + + if ( + activeTradeBoxDialog?.type === TradeBoxDialogTypes.ClosePosition && + openPositions?.find((position: SubaccountPosition) => position.id === marketId) + ) { + // Keep the close positions dialog open between market changes as long as there exists an open position + return; + } + dispatch(closeDialogInTradeBox()); } } diff --git a/src/hooks/useDebounce.ts b/src/hooks/useDebounce.ts index 5b38cc4bb..398975caa 100644 --- a/src/hooks/useDebounce.ts +++ b/src/hooks/useDebounce.ts @@ -10,7 +10,7 @@ export function useDebounce<T>(value: T, delay?: number): T { const [debouncedValue, setDebouncedValue] = useState<T>(value); useEffect(() => { - const timer = setTimeout(() => setDebouncedValue(value), delay || 500); + const timer = setTimeout(() => setDebouncedValue(value), delay ?? 500); return () => { clearTimeout(timer); diff --git a/src/hooks/useDialogArea.tsx b/src/hooks/useDialogArea.tsx index 05231654c..c78d06df2 100644 --- a/src/hooks/useDialogArea.tsx +++ b/src/hooks/useDialogArea.tsx @@ -1,6 +1,8 @@ -import { useContext, createContext, useState } from 'react'; +import { createContext, useContext, useRef } from 'react'; -const DialogAreaContext = createContext<ReturnType<typeof useDialogAreaContext> | undefined>(undefined); +const DialogAreaContext = createContext<ReturnType<typeof useDialogAreaContext> | undefined>( + undefined +); DialogAreaContext.displayName = 'DialogArea'; @@ -8,13 +10,11 @@ export const DialogAreaProvider = ({ ...props }) => ( <DialogAreaContext.Provider value={useDialogAreaContext()} {...props} /> ); -export const useDialogArea = () => useContext(DialogAreaContext)!; +export const useDialogArea = () => useContext(DialogAreaContext); const useDialogAreaContext = () => { - const [dialogArea, setDialogArea] = useState<HTMLElement>(); - + const dialogAreaRef = useRef<HTMLElement>(null); return { - dialogArea, - setDialogArea + dialogAreaRef, }; }; diff --git a/src/hooks/useDisplayedWallets.ts b/src/hooks/useDisplayedWallets.ts index 876b5d7c3..4c9a41d76 100644 --- a/src/hooks/useDisplayedWallets.ts +++ b/src/hooks/useDisplayedWallets.ts @@ -4,7 +4,7 @@ import { WalletType } from '@/constants/wallets'; import { isTruthy } from '@/lib/isTruthy'; export const useDisplayedWallets = () => { - return [ + const displayedWallets = [ WalletType.MetaMask, isDev && WalletType.Keplr, @@ -22,6 +22,10 @@ export const useDisplayedWallets = () => { // WalletType.BitKeep, // WalletType.Coin98, + Boolean(import.meta.env.VITE_PRIVY_APP_ID) && WalletType.Privy, + WalletType.OtherWallet, ].filter(isTruthy); + + return displayedWallets; }; diff --git a/src/hooks/useDydxClient.tsx b/src/hooks/useDydxClient.tsx index 494f3156d..d0a2057ae 100644 --- a/src/hooks/useDydxClient.tsx +++ b/src/hooks/useDydxClient.tsx @@ -1,28 +1,33 @@ -import { createContext, useCallback, useContext, useEffect, useState } from 'react'; -import { useSelector } from 'react-redux'; +import { createContext, useCallback, useContext, useEffect, useMemo, useState } from 'react'; import { BECH32_PREFIX, CompositeClient, FaucetClient, + IndexerClient, IndexerConfig, LocalWallet, - onboarding, Network, + SelectedGasDenom, ValidatorConfig, + onboarding, type ProposalStatus, } from '@dydxprotocol/v4-client-js'; - import type { ResolutionString } from 'public/tradingview/charting_library'; +import { useSelector } from 'react-redux'; import type { ConnectNetworkEvent, NetworkConfig } from '@/constants/abacus'; import { DEFAULT_TRANSACTION_MEMO } from '@/constants/analytics'; -import { type Candle, RESOLUTION_MAP } from '@/constants/candles'; +import { RESOLUTION_MAP, type Candle } from '@/constants/candles'; +import { LocalStorageKey } from '@/constants/localStorage'; import { getSelectedNetwork } from '@/state/appSelectors'; +import abacusStateManager from '@/lib/abacus'; import { log } from '@/lib/telemetry'; +import { useEndpointsConfig } from './useEndpointsConfig'; +import { useLocalStorage } from './useLocalStorage'; import { useRestrictions } from './useRestrictions'; import { useTokenConfigs } from './useTokenConfigs'; @@ -58,6 +63,12 @@ const useDydxClientContext = () => { const [compositeClient, setCompositeClient] = useState<CompositeClient>(); const [faucetClient, setFaucetClient] = useState<FaucetClient>(); + const { indexer: indexerEndpoints } = useEndpointsConfig(); + const indexerClient = useMemo(() => { + const config = new IndexerConfig(indexerEndpoints.api, indexerEndpoints.socket); + return new IndexerClient(config); + }, [indexerEndpoints]); + useEffect(() => { (async () => { if ( @@ -105,6 +116,31 @@ const useDydxClientContext = () => { })(); }, [networkConfig]); + // ------ Gas Denom ------ // + + const [gasDenom, setGasDenom] = useLocalStorage<SelectedGasDenom>({ + key: LocalStorageKey.SelectedGasDenom, + defaultValue: SelectedGasDenom.USDC, + }); + + const setSelectedGasDenom = useCallback( + (selectedGasDenom: SelectedGasDenom) => { + if (compositeClient) { + compositeClient.validatorClient.setSelectedGasDenom(selectedGasDenom); + abacusStateManager.setSelectedGasDenom(selectedGasDenom); + setGasDenom(selectedGasDenom); + } + }, + [compositeClient, setGasDenom] + ); + + useEffect(() => { + if (compositeClient) { + setSelectedGasDenom(gasDenom); + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [compositeClient, setSelectedGasDenom]); + // ------ Wallet Methods ------ // const getWalletFromEvmSignature = async ({ signature }: { signature: string }) => { const { mnemonic, privateKey, publicKey } = @@ -119,16 +155,25 @@ const useDydxClientContext = () => { }; // ------ Public Methods ------ // - const requestAllPerpetualMarkets = useCallback(async () => { + const requestAllPerpetualMarkets = async () => { try { - const { markets } = - (await compositeClient?.indexerClient.markets.getPerpetualMarkets()) || {}; + const { markets } = (await indexerClient.markets.getPerpetualMarkets()) ?? {}; return markets || []; } catch (error) { log('useDydxClient/getPerpetualMarkets', error); return []; } - }, [compositeClient]); + }; + + const getMarketTickSize = async (marketId: string) => { + try { + const { markets } = (await indexerClient.markets.getPerpetualMarkets(marketId)) ?? {}; + return markets?.[marketId]?.tickSize; + } catch (error) { + log('useDydxClient/getMarketTickSize', error); + return undefined; + } + }; /** * @param proposalStatus - Optional filter for proposal status. If not provided, all proposals in ProposalStatus.VotingPeriod will be returned. @@ -149,104 +194,110 @@ const useDydxClientContext = () => { [compositeClient] ); - const requestCandles = useCallback( - async ({ - marketId, - marketType = 'perpetualMarkets', - resolution, - fromIso, - toIso, - }: { - marketId: string; - marketType?: string; - resolution: ResolutionString; - fromIso?: string; - toIso?: string; - }): Promise<Candle[]> => { - try { - const { candles } = - (await compositeClient?.indexerClient.markets.getPerpetualMarketCandles( - marketId, - RESOLUTION_MAP[resolution], - fromIso, - toIso - )) || {}; - return candles || []; - } catch (error) { - log('useDydxClient/getPerpetualMarketCandles', error); - return []; - } - }, - [compositeClient] - ); - - const getCandlesForDatafeed = useCallback( - async ({ - marketId, - resolution, - fromMs, - toMs, - }: { - marketId: string; - resolution: ResolutionString; - fromMs: number; - toMs: number; - }) => { - const fromIso = new Date(fromMs).toISOString(); - let toIso = new Date(toMs).toISOString(); - const candlesInRange: Candle[] = []; - - while (true) { - const candles = await requestCandles({ + const requestCandles = async ({ + marketId, + resolution, + fromIso, + toIso, + limit, + }: { + marketId: string; + resolution: ResolutionString; + fromIso?: string; + toIso?: string; + limit?: number; + }): Promise<Candle[]> => { + try { + const { candles } = + (await indexerClient.markets.getPerpetualMarketCandles( marketId, - resolution, + RESOLUTION_MAP[resolution], fromIso, toIso, - }); + limit + )) || {}; + return candles || []; + } catch (error) { + log('useDydxClient/getPerpetualMarketCandles', error); + return []; + } + }; - if (!candles || candles.length === 0) { - break; - } + const getCandlesForDatafeed = async ({ + marketId, + resolution, + fromMs, + toMs, + }: { + marketId: string; + resolution: ResolutionString; + fromMs: number; + toMs: number; + }) => { + const fromIso = new Date(fromMs).toISOString(); + let toIso = new Date(toMs).toISOString(); + const candlesInRange: Candle[] = []; + + while (true) { + // eslint-disable-next-line no-await-in-loop + const candles = await requestCandles({ + marketId, + resolution, + fromIso, + toIso, + }); + + if (!candles || candles.length === 0) { + break; + } - candlesInRange.push(...candles); - const length = candlesInRange.length; + candlesInRange.push(...candles); + const length = candlesInRange.length; - if (length) { - const oldestTime = new Date(candlesInRange[length - 1].startedAt).getTime(); + if (length) { + const oldestTime = new Date(candlesInRange[length - 1].startedAt).getTime(); - if (oldestTime > fromMs) { - toIso = candlesInRange[length - 1].startedAt; - } else { - break; - } + if (oldestTime > fromMs) { + toIso = candlesInRange[length - 1].startedAt; } else { break; } + } else { + break; } + } - return candlesInRange; - }, - [requestCandles] - ); + return candlesInRange; + }; const { updateSanctionedAddresses } = useRestrictions(); - const screenAddresses = useCallback( - async ({ addresses }: { addresses: string[] }) => { - if (compositeClient) { - const promises = addresses.map((address) => - compositeClient.indexerClient.utility.screen(address) - ); + const screenAddresses = async ({ addresses }: { addresses: string[] }) => { + const promises = addresses.map((address) => indexerClient.utility.screen(address)); - const results = await Promise.all(promises); + const results = await Promise.all(promises); - const screenedAddresses = Object.fromEntries( - addresses.map((address, index) => [address, results[index]?.restricted]) - ); + const screenedAddresses = Object.fromEntries( + addresses.map((address, index) => [address, results[index]?.restricted]) + ); - updateSanctionedAddresses(screenedAddresses); - return screenedAddresses; - } + updateSanctionedAddresses(screenedAddresses); + return screenedAddresses; + }; + + const getPerpetualMarketSparklines = async ({ + period = 'SEVEN_DAYS', + }: { + period?: 'ONE_DAY' | 'SEVEN_DAYS'; + }) => indexerClient.markets.getPerpetualMarketSparklines(period); + + const getWithdrawalAndTransferGatingStatus = useCallback(async () => { + return compositeClient?.validatorClient.get.getWithdrawalAndTransferGatingStatus(); + }, [compositeClient]); + + const getWithdrawalCapacityByDenom = useCallback( + async ({ denom }: { denom: string }) => { + return compositeClient?.validatorClient.get.getWithdrawalCapacityByDenom(denom); }, [compositeClient] ); @@ -257,7 +308,12 @@ const useDydxClientContext = () => { networkConfig, compositeClient, faucetClient, - isConnected: !!compositeClient, + indexerClient, + isCompositeClientConnected: !!compositeClient, + + // Gas Denom + setSelectedGasDenom, + selectedGasDenom: gasDenom, // Wallet Methods getWalletFromEvmSignature, @@ -266,6 +322,11 @@ const useDydxClientContext = () => { requestAllPerpetualMarkets, requestAllGovernanceProposals, getCandlesForDatafeed, + getCandles: requestCandles, + getMarketTickSize, + getPerpetualMarketSparklines, screenAddresses, + getWithdrawalAndTransferGatingStatus, + getWithdrawalCapacityByDenom, }; }; diff --git a/src/hooks/useEndpointsConfig.ts b/src/hooks/useEndpointsConfig.ts new file mode 100644 index 000000000..09fecdc84 --- /dev/null +++ b/src/hooks/useEndpointsConfig.ts @@ -0,0 +1,29 @@ +import { useSelector } from 'react-redux'; + +import { ENVIRONMENT_CONFIG_MAP } from '@/constants/networks'; + +import { getSelectedNetwork } from '@/state/appSelectors'; + +interface EndpointsConfig { + indexers: { + api: string; + socket: string; + }[]; + validators: string[]; + '0xsquid': string; + nobleValidator: string; + faucet?: string; +} + +export const useEndpointsConfig = () => { + const selectedNetwork = useSelector(getSelectedNetwork); + const endpointsConfig = ENVIRONMENT_CONFIG_MAP[selectedNetwork].endpoints as EndpointsConfig; + + return { + indexer: endpointsConfig.indexers[0], // assume there's only one option for indexer endpoints + validators: endpointsConfig.validators, + '0xsquid': endpointsConfig['0xsquid'], + nobleValidator: endpointsConfig.nobleValidator, + faucet: endpointsConfig.faucet, + }; +}; diff --git a/src/hooks/useEnvFeatures.ts b/src/hooks/useEnvFeatures.ts new file mode 100644 index 000000000..0d308e266 --- /dev/null +++ b/src/hooks/useEnvFeatures.ts @@ -0,0 +1,19 @@ +import { useSelector } from 'react-redux'; + +import { ENVIRONMENT_CONFIG_MAP } from '@/constants/networks'; + +import { getSelectedNetwork } from '@/state/appSelectors'; + +export interface EnvironmentFeatures { + reduceOnlySupported: boolean; + withdrawalSafetyEnabled: boolean; + CCTPWithdrawalOnly: boolean; + CCTPDepositOnly: boolean; + isSlTpEnabled: boolean; + isSlTpLimitOrdersEnabled: boolean; +} + +export const useEnvFeatures = (): EnvironmentFeatures => { + const selectedNetwork = useSelector(getSelectedNetwork); + return ENVIRONMENT_CONFIG_MAP[selectedNetwork].featureFlags; +}; diff --git a/src/hooks/useInitializePage.ts b/src/hooks/useInitializePage.ts index 9a61b9703..a225dd2f7 100644 --- a/src/hooks/useInitializePage.ts +++ b/src/hooks/useInitializePage.ts @@ -1,17 +1,17 @@ import { useEffect } from 'react'; + import { useDispatch } from 'react-redux'; import { LocalStorageKey } from '@/constants/localStorage'; - import { DEFAULT_APP_ENVIRONMENT, type DydxNetwork } from '@/constants/networks'; -import { useLocalStorage } from '@/hooks'; - import { initializeLocalization } from '@/state/app'; import abacusStateManager from '@/lib/abacus'; import { validateAgainstAvailableEnvironments } from '@/lib/network'; +import { useLocalStorage } from './useLocalStorage'; + export const useInitializePage = () => { const dispatch = useDispatch(); diff --git a/src/hooks/useInterval.tsx b/src/hooks/useInterval.tsx index e6fb01bba..b37758d94 100644 --- a/src/hooks/useInterval.tsx +++ b/src/hooks/useInterval.tsx @@ -8,7 +8,7 @@ type ElementProps = { export const useInterval = ({ callback, periodInMs = 1000 }: ElementProps) => { useEffect(() => { callback?.(); - + const interval = setInterval(() => { callback?.(); }, periodInMs); diff --git a/src/hooks/useIsFirstRender.ts b/src/hooks/useIsFirstRender.ts index 15e7e35fa..1a90cb51b 100644 --- a/src/hooks/useIsFirstRender.ts +++ b/src/hooks/useIsFirstRender.ts @@ -1,4 +1,4 @@ -import { useRef, useEffect } from 'react'; +import { useEffect, useRef } from 'react'; /** * indicate whether the current render is the first render (when the component was mounted) diff --git a/src/hooks/useLocalNotifications.tsx b/src/hooks/useLocalNotifications.tsx index 450e6d5f0..27eca44d8 100644 --- a/src/hooks/useLocalNotifications.tsx +++ b/src/hooks/useLocalNotifications.tsx @@ -1,10 +1,14 @@ -import { createContext, useContext, useCallback, useEffect, useMemo } from 'react'; +import { createContext, useCallback, useContext, useEffect } from 'react'; + import { useQuery } from 'react-query'; +import { AnalyticsEvent } from '@/constants/analytics'; import { LOCAL_STORAGE_VERSIONS, LocalStorageKey } from '@/constants/localStorage'; -import { type TransferNotifcation } from '@/constants/notifications'; +import type { TransferNotifcation } from '@/constants/notifications'; + import { useAccounts } from '@/hooks/useAccounts'; +import { track } from '@/lib/analytics'; import { fetchSquidStatus, STATUS_ERROR_GRACE_PERIOD } from '@/lib/squid'; import { useLocalStorage } from './useLocalStorage'; @@ -25,7 +29,6 @@ const TRANSFER_STATUS_FETCH_INTERVAL = 10_000; const ERROR_COUNT_THRESHOLD = 3; const useLocalNotificationsContext = () => { - // transfer notifications const [allTransferNotifications, setAllTransferNotifications] = useLocalStorage<{ [key: `dydx${string}`]: TransferNotifcation[]; version: string; @@ -55,25 +58,45 @@ const useLocalNotificationsContext = () => { const setTransferNotifications = useCallback( (notifications: TransferNotifcation[]) => { if (!dydxAddress) return; - const updatedNotifications = { ...allTransferNotifications }; - updatedNotifications[dydxAddress] = notifications; - setAllTransferNotifications(updatedNotifications); + setAllTransferNotifications((currentAllNotifications) => { + const updatedNotifications = { ...currentAllNotifications }; + + updatedNotifications[dydxAddress] = [ + ...notifications, + ...(updatedNotifications[dydxAddress] || []).slice(notifications.length), + ]; + + return updatedNotifications; + }); }, - [setAllTransferNotifications, dydxAddress] + [setAllTransferNotifications, dydxAddress, allTransferNotifications] ); const addTransferNotification = useCallback( - (notification: TransferNotifcation) => - setTransferNotifications([...transferNotifications, notification]), + (notification: TransferNotifcation) => { + const { txHash, triggeredAt, toAmount, type } = notification; + setTransferNotifications([...transferNotifications, notification]); + // track initialized new transfer notification + track(AnalyticsEvent.TransferNotification, { + triggeredAt, + timeSpent: triggeredAt ? Date.now() - triggeredAt : undefined, + txHash, + toAmount, + type, + status: 'new', + }); + }, [transferNotifications] ); useQuery({ queryKey: 'getTransactionStatus', queryFn: async () => { - const processTransferNotifications = async (transferNotifications: TransferNotifcation[]) => { + const processTransferNotifications = async ( + transferNotificationsInner: TransferNotifcation[] + ) => { const newTransferNotifications = await Promise.all( - transferNotifications.map(async (transferNotification) => { + transferNotificationsInner.map(async (transferNotification) => { const { txHash, toChainId, @@ -83,6 +106,7 @@ const useLocalNotificationsContext = () => { errorCount, status: currentStatus, isExchange, + requestId, } = transferNotification; const hasErrors = @@ -104,16 +128,35 @@ const useLocalNotificationsContext = () => { toChainId, fromChainId, }, - isCctp + isCctp, + undefined, + requestId ); - if (status) { transferNotification.status = status; + if (status.squidTransactionStatus === 'success') { + track(AnalyticsEvent.TransferNotification, { + triggeredAt, + timeSpent: triggeredAt ? Date.now() - triggeredAt : undefined, + toAmount: transferNotification.toAmount, + status: 'success', + type: transferNotification.type, + txHash, + }); + } } } catch (error) { if (!triggeredAt || Date.now() - triggeredAt > STATUS_ERROR_GRACE_PERIOD) { if (errorCount && errorCount > ERROR_COUNT_THRESHOLD) { transferNotification.status = error; + track(AnalyticsEvent.TransferNotification, { + triggeredAt, + timeSpent: triggeredAt ? Date.now() - triggeredAt : undefined, + toAmount: transferNotification.toAmount, + status: 'error', + type: transferNotification.type, + txHash, + }); } else { transferNotification.errorCount = errorCount ? errorCount + 1 : 1; } @@ -132,8 +175,8 @@ const useLocalNotificationsContext = () => { }, refetchInterval: TRANSFER_STATUS_FETCH_INTERVAL, }); - return { + // Transfer notifications transferNotifications, addTransferNotification, }; diff --git a/src/hooks/useLocalStorage.ts b/src/hooks/useLocalStorage.ts index fe2b40065..1075fe49a 100644 --- a/src/hooks/useLocalStorage.ts +++ b/src/hooks/useLocalStorage.ts @@ -28,6 +28,7 @@ export const useLocalStorage = <Value>({ return false; } } + return undefined; }; globalThis.window.addEventListener('storage', onStorage); diff --git a/src/hooks/useLocaleSeparators.tsx b/src/hooks/useLocaleSeparators.tsx index 870f7478d..dc27647a9 100644 --- a/src/hooks/useLocaleSeparators.tsx +++ b/src/hooks/useLocaleSeparators.tsx @@ -1,4 +1,5 @@ import { createContext, useContext, useEffect, useMemo, useState } from 'react'; + import { useSelector } from 'react-redux'; import { SUPPORTED_BASE_TAGS_LOCALE_MAPPING } from '@/constants/localization'; diff --git a/src/hooks/useMarketsData.ts b/src/hooks/useMarketsData.ts index b5c60114f..65abe0dd8 100644 --- a/src/hooks/useMarketsData.ts +++ b/src/hooks/useMarketsData.ts @@ -1,12 +1,19 @@ import { useMemo } from 'react'; -import { useSelector, shallowEqual } from 'react-redux'; -import { MarketFilters, MARKET_FILTER_LABELS, type MarketData } from '@/constants/markets'; +import { shallowEqual, useSelector } from 'react-redux'; + +import { MARKET_FILTER_LABELS, MarketFilters, type MarketData } from '@/constants/markets'; + +import { + SEVEN_DAY_SPARKLINE_ENTRIES, + usePerpetualMarketSparklines, +} from '@/hooks/usePerpetualMarketSparklines'; import { getAssets } from '@/state/assetsSelectors'; import { getPerpetualMarkets } from '@/state/perpetualsSelectors'; import { isTruthy } from '@/lib/isTruthy'; +import { orEmptyObj } from '@/lib/typeUtils'; const filterFunctions = { [MarketFilters.ALL]: () => true, @@ -16,6 +23,24 @@ const filterFunctions = { [MarketFilters.DEFI]: (market: MarketData) => { return market.asset.tags?.toArray().includes('Defi'); }, + [MarketFilters.LAYER_2]: (market: MarketData) => { + return market.asset.tags?.toArray().includes('Layer 2'); + }, + [MarketFilters.NFT]: (market: MarketData) => { + return market.asset.tags?.toArray().includes('NFT'); + }, + [MarketFilters.GAMING]: (market: MarketData) => { + return market.asset.tags?.toArray().includes('Gaming'); + }, + [MarketFilters.AI]: (market: MarketData) => { + return market.asset.tags?.toArray().includes('AI'); + }, + [MarketFilters.MEME]: (market: MarketData) => { + return market.asset.tags?.toArray().includes('Meme'); + }, + [MarketFilters.NEW]: (market: MarketData) => { + return market.isNew; + }, }; export const useMarketsData = ( @@ -26,20 +51,44 @@ export const useMarketsData = ( filteredMarkets: MarketData[]; marketFilters: string[]; } => { - const allPerpetualMarkets = useSelector(getPerpetualMarkets, shallowEqual) || {}; - const allAssets = useSelector(getAssets, shallowEqual) || {}; + const allPerpetualMarkets = orEmptyObj(useSelector(getPerpetualMarkets, shallowEqual)); + const allAssets = orEmptyObj(useSelector(getAssets, shallowEqual)); + const sevenDaysSparklineData = usePerpetualMarketSparklines(); const markets = useMemo(() => { return Object.values(allPerpetualMarkets) .filter(isTruthy) - .map((marketData) => ({ - asset: allAssets[marketData.assetId] ?? {}, - tickSizeDecimals: marketData.configs?.tickSizeDecimals, - ...marketData, - ...marketData.perpetual, - ...marketData.configs, - })) as MarketData[]; - }, [allPerpetualMarkets, allAssets]); + .map((marketData) => { + const sevenDaySparklineEntries = sevenDaysSparklineData?.[marketData.id]?.length ?? 0; + const isNew = Boolean( + sevenDaysSparklineData && sevenDaySparklineEntries < SEVEN_DAY_SPARKLINE_ENTRIES + ); + + /** + * There is no date in the services to determine when it was listed, but we can calculate it approximately. + * Keeping in mind that the `/sparklines` service using the period `SEVEN_DAYS` as a parameter, + * returns a maximum of 6 entries for each day with a timeframe of 4 hours. + * For this it is possible to estimate the listing date as follows: + * `Hours elapsed since listing = (Total sparklines entries * 6)` + */ + let listingDate: Date | undefined; + + if (isNew) { + listingDate = new Date(); + listingDate.setHours(listingDate.getHours() - sevenDaySparklineEntries * 4); + } + + return { + asset: allAssets[marketData.assetId] ?? {}, + tickSizeDecimals: marketData.configs?.tickSizeDecimals, + isNew, + listingDate, + ...marketData, + ...marketData.perpetual, + ...marketData.configs, + }; + }) as MarketData[]; + }, [allPerpetualMarkets, allAssets, sevenDaysSparklineData]); const filteredMarkets = useMemo(() => { const filtered = markets.filter(filterFunctions[filter]); @@ -47,9 +96,9 @@ export const useMarketsData = ( if (searchFilter) { return filtered.filter( ({ asset, id }) => - asset?.name?.toLocaleLowerCase().includes(searchFilter.toLowerCase()) || - asset?.id?.toLocaleLowerCase().includes(searchFilter.toLowerCase()) || - id?.toLocaleLowerCase().includes(searchFilter.toLowerCase()) + !!asset?.name?.toLocaleLowerCase().includes(searchFilter.toLowerCase()) || + !!asset?.id?.toLocaleLowerCase().includes(searchFilter.toLowerCase()) || + !!id?.toLocaleLowerCase().includes(searchFilter.toLowerCase()) ); } return filtered; @@ -58,6 +107,7 @@ export const useMarketsData = ( const marketFilters = useMemo( () => [ MarketFilters.ALL, + MarketFilters.NEW, ...Object.keys(MARKET_FILTER_LABELS).filter((marketFilter) => markets.some((market) => market.asset?.tags?.toArray().some((tag) => tag === marketFilter)) ), diff --git a/src/hooks/useMatchingEvmNetwork.ts b/src/hooks/useMatchingEvmNetwork.ts index b793837f3..99150e92a 100644 --- a/src/hooks/useMatchingEvmNetwork.ts +++ b/src/hooks/useMatchingEvmNetwork.ts @@ -1,6 +1,12 @@ import { useCallback, useEffect, useMemo } from 'react'; + +import { useSwitchNetwork as useSwitchNetworkPrivy } from '@privy-io/wagmi-connector'; import { useNetwork, useSwitchNetwork } from 'wagmi'; +import { WalletConnectionType } from '@/constants/wallets'; + +import { useWalletConnection } from './useWalletConnection'; + export const useMatchingEvmNetwork = ({ chainId, switchAutomatically = false, @@ -11,7 +17,10 @@ export const useMatchingEvmNetwork = ({ onError?: (error: Error) => void; }) => { const { chain } = useNetwork(); + const { walletConnectionType } = useWalletConnection(); const { isLoading, switchNetworkAsync } = useSwitchNetwork({ onError }); + const { isLoading: isLoadingPrivy, switchNetworkAsync: switchNetworkAsyncPrivy } = + useSwitchNetworkPrivy({ onError }); // If chainId is not a number, we can assume it is a non EVM compatible chain const isMatchingNetwork = useMemo( @@ -21,7 +30,11 @@ export const useMatchingEvmNetwork = ({ const matchNetwork = useCallback(async () => { if (!isMatchingNetwork) { - await switchNetworkAsync?.(Number(chainId)); + if (walletConnectionType === WalletConnectionType.Privy) { + await switchNetworkAsyncPrivy?.(Number(chainId)); + } else { + await switchNetworkAsync?.(Number(chainId)); + } } }, [chainId, chain]); @@ -34,6 +47,6 @@ export const useMatchingEvmNetwork = ({ return { isMatchingNetwork, matchNetwork, - isSwitchingNetwork: isLoading, + isSwitchingNetwork: isLoading || isLoadingPrivy, }; }; diff --git a/src/hooks/useNextClobPairId.ts b/src/hooks/useNextClobPairId.ts index f2c74e6ae..fcee63efc 100644 --- a/src/hooks/useNextClobPairId.ts +++ b/src/hooks/useNextClobPairId.ts @@ -1,5 +1,4 @@ import { useMemo } from 'react'; -import { useQuery } from 'react-query'; import { MsgCreateClobPair, @@ -13,16 +12,65 @@ import { TYPE_URL_MSG_DELAY_MESSAGE, TYPE_URL_MSG_UPDATE_CLOB_PAIR, } from '@dydxprotocol/v4-client-js'; +import { useQuery } from 'react-query'; import type { PerpetualMarketResponse } from '@/constants/indexer'; + import { useDydxClient } from '@/hooks/useDydxClient'; +/** + * + * @param message from proposal. Each message is wrapped in a type any (on purpose). + * @param callback method used to compile all clobPairIds, perpetualIds, marketIds, etc. + */ +const decodeMsgForClobPairId = ( + message: any, + addIdFromProposal: (id?: number) => void, + addTickerFromProposal: (ticker?: string) => void +): any => { + const { typeUrl, value } = message; + + switch (typeUrl) { + case TYPE_URL_MSG_CREATE_ORACLE_MARKET: { + const decodedValue = MsgCreateOracleMarket.decode(value); + addIdFromProposal(decodedValue.params?.id); + addTickerFromProposal(decodedValue.params?.pair); + break; + } + case TYPE_URL_MSG_CREATE_PERPETUAL: { + const decodedValue = MsgCreatePerpetual.decode(value); + addIdFromProposal(decodedValue.params?.id); + addIdFromProposal(decodedValue.params?.marketId); + break; + } + case TYPE_URL_MSG_CREATE_CLOB_PAIR: { + const decodedValue = MsgCreateClobPair.decode(value); + addIdFromProposal(decodedValue.clobPair?.id); + addIdFromProposal(decodedValue.clobPair?.perpetualClobMetadata?.perpetualId); + break; + } + case TYPE_URL_MSG_UPDATE_CLOB_PAIR: { + const decodedValue = MsgUpdateClobPair.decode(value); + addIdFromProposal(decodedValue.clobPair?.id); + addIdFromProposal(decodedValue.clobPair?.perpetualClobMetadata?.perpetualId); + break; + } + case TYPE_URL_MSG_DELAY_MESSAGE: { + const decodedValue = MsgDelayMessage.decode(value); + decodeMsgForClobPairId(decodedValue.msg, addIdFromProposal, addTickerFromProposal); + break; + } + default: { + break; + } + } +}; + export const useNextClobPairId = () => { - const { isConnected, requestAllPerpetualMarkets, requestAllGovernanceProposals } = + const { isCompositeClientConnected, requestAllPerpetualMarkets, requestAllGovernanceProposals } = useDydxClient(); const { data: perpetualMarkets, status: perpetualMarketsStatus } = useQuery({ - enabled: isConnected, queryKey: 'requestAllPerpetualMarkets', queryFn: requestAllPerpetualMarkets, refetchInterval: 60_000, @@ -30,69 +78,35 @@ export const useNextClobPairId = () => { }); const { data: allGovProposals, status: allGovProposalsStatus } = useQuery({ - enabled: isConnected, + enabled: isCompositeClientConnected, queryKey: 'requestAllActiveGovernanceProposals', queryFn: () => requestAllGovernanceProposals(), refetchInterval: 10_000, staleTime: 10_000, }); - /** - * - * @param message from proposal. Each message is wrapped in a type any (on purpose). - * @param callback method used to compile all clobPairIds, perpetualIds, marketIds, etc. - */ - const decodeMsgForClobPairId = (message: any, callback: (id?: number) => void): any => { - const { typeUrl, value } = message; - - switch (typeUrl) { - case TYPE_URL_MSG_CREATE_ORACLE_MARKET: { - const decodedValue = MsgCreateOracleMarket.decode(value); - callback(decodedValue.params?.id); - break; - } - case TYPE_URL_MSG_CREATE_PERPETUAL: { - const decodedValue = MsgCreatePerpetual.decode(value); - callback(decodedValue.params?.id); - callback(decodedValue.params?.marketId); - break; - } - case TYPE_URL_MSG_CREATE_CLOB_PAIR: { - const decodedValue = MsgCreateClobPair.decode(value); - callback(decodedValue.clobPair?.id); - callback(decodedValue.clobPair?.perpetualClobMetadata?.perpetualId); - break; - } - case TYPE_URL_MSG_UPDATE_CLOB_PAIR: { - const decodedValue = MsgUpdateClobPair.decode(value); - callback(decodedValue.clobPair?.id); - callback(decodedValue.clobPair?.perpetualClobMetadata?.perpetualId); - break; - } - case TYPE_URL_MSG_DELAY_MESSAGE: { - const decodedValue = MsgDelayMessage.decode(value); - decodeMsgForClobPairId(decodedValue.msg, callback); - break; - } - default: { - break; + const { nextAvailableClobPairId, tickersFromProposals } = useMemo(() => { + const idsFromProposals: number[] = []; + const newTickersFromProposals: Set<string> = new Set(); + + const addIdFromProposal = (id?: number) => { + if (id) { + idsFromProposals.push(id); } - } - }; + }; - const nextAvailableClobPairId = useMemo(() => { - const idsFromProposals: number[] = []; + const addTickerFromProposal = (ticker?: string) => { + if (ticker) { + newTickersFromProposals.add(ticker); + } + }; if (allGovProposals && Object.values(allGovProposals.proposals).length > 0) { const proposals = allGovProposals.proposals; proposals.forEach((proposal) => { if (proposal.messages) { - proposal.messages.map((message) => { - decodeMsgForClobPairId(message, (id?: number) => { - if (id) { - idsFromProposals.push(id); - } - }); + proposal.messages.forEach((message) => { + decodeMsgForClobPairId(message, addIdFromProposal, addTickerFromProposal); }); } }); @@ -103,16 +117,23 @@ export const useNextClobPairId = () => { Number((perpetualMarket as PerpetualMarketResponse).clobPairId) ); - const nextAvailableClobPairId = Math.max(...[...clobPairIds, ...idsFromProposals]) + 1; - return nextAvailableClobPairId; + const newNextAvailableClobPairId = Math.max(...[...clobPairIds, ...idsFromProposals]) + 1; + return { + nextAvailableClobPairId: newNextAvailableClobPairId, + tickersFromProposals: newTickersFromProposals, + }; } - return undefined; + return { + nextAvailableClobPairId: undefined, + tickersFromProposals: newTickersFromProposals, + }; }, [perpetualMarkets, allGovProposals]); return { allGovProposalsStatus, perpetualMarketsStatus, nextAvailableClobPairId, + tickersFromProposals, }; }; diff --git a/src/hooks/useNotificationTypes.tsx b/src/hooks/useNotificationTypes.tsx index a6c0bb412..fce60f6d2 100644 --- a/src/hooks/useNotificationTypes.tsx +++ b/src/hooks/useNotificationTypes.tsx @@ -1,57 +1,76 @@ -import { type ReactNode, useEffect } from 'react'; -import styled from 'styled-components'; +import { useEffect } from 'react'; + +import { groupBy, isEqual } from 'lodash'; import { shallowEqual, useDispatch, useSelector } from 'react-redux'; -import { isEqual, groupBy } from 'lodash'; import { useNavigate } from 'react-router-dom'; +import styled from 'styled-components'; +import { ComplianceStatus } from '@/constants/abacus'; +import { ComplianceStates } from '@/constants/compliance'; import { DialogTypes } from '@/constants/dialogs'; -import { AppRoute, TokenRoute } from '@/constants/routes'; -import { DydxChainAsset } from '@/constants/wallets'; - import { STRING_KEYS, STRING_KEY_VALUES, type StringGetterFunction, type StringKey, } from '@/constants/localization'; - import { - type NotificationTypeConfig, - NotificationType, DEFAULT_TOAST_AUTO_CLOSE_MS, - TransferNotificationTypes, + NotificationDisplayData, + NotificationType, ReleaseUpdateNotificationIds, + TransferNotificationTypes, + type NotificationTypeConfig, } from '@/constants/notifications'; +import { AppRoute, TokenRoute } from '@/constants/routes'; +import { DydxChainAsset } from '@/constants/wallets'; -import { useStringGetter, useTokenConfigs } from '@/hooks'; import { useLocalNotifications } from '@/hooks/useLocalNotifications'; import { AssetIcon } from '@/components/AssetIcon'; import { Icon, IconName } from '@/components/Icon'; +import { Link } from '@/components/Link'; +// eslint-disable-next-line import/no-cycle import { BlockRewardNotification } from '@/views/notifications/BlockRewardNotification'; +import { IncentiveSeasonDistributionNotification } from '@/views/notifications/IncentiveSeasonDistributionNotification'; +import { OrderCancelNotification } from '@/views/notifications/OrderCancelNotification'; +import { OrderStatusNotification } from '@/views/notifications/OrderStatusNotification'; import { TradeNotification } from '@/views/notifications/TradeNotification'; import { TransferStatusNotification } from '@/views/notifications/TransferStatusNotification'; -import { getSubaccountFills, getSubaccountOrders } from '@/state/accountSelectors'; +import { + getLocalCancelOrders, + getLocalPlaceOrders, + getSubaccountFills, + getSubaccountOrders, +} from '@/state/accountSelectors'; +import { getSelectedDydxChainId } from '@/state/appSelectors'; import { openDialog } from '@/state/dialogs'; import { getAbacusNotifications } from '@/state/notificationsSelectors'; import { getMarketIds } from '@/state/perpetualsSelectors'; -import { getSelectedDydxChainId } from '@/state/appSelectors'; import { formatSeconds } from '@/lib/timeUtils'; +import { useAccounts } from './useAccounts'; +import { useApiState } from './useApiState'; +import { useComplianceState } from './useComplianceState'; +import { useQueryChaosLabsIncentives } from './useQueryChaosLabsIncentives'; +import { useStringGetter } from './useStringGetter'; +import { useTokenConfigs } from './useTokenConfigs'; +import { useURLConfigs } from './useURLConfigs'; + const parseStringParamsForNotification = ({ stringGetter, value, }: { stringGetter: StringGetterFunction; value: unknown; -}): ReactNode => { +}) => { if (STRING_KEY_VALUES[value as StringKey]) { - return stringGetter({ key: value as StringKey }); + return stringGetter({ key: value as string }); } - return value as ReactNode; + return value as string; }; export const notificationTypes: NotificationTypeConfig[] = [ @@ -60,8 +79,12 @@ export const notificationTypes: NotificationTypeConfig[] = [ useTrigger: ({ trigger }) => { const stringGetter = useStringGetter(); const abacusNotifications = useSelector(getAbacusNotifications, isEqual); + const orders = useSelector(getSubaccountOrders, shallowEqual) ?? []; + const ordersById = groupBy(orders, 'id'); + const localPlaceOrders = useSelector(getLocalPlaceOrders, shallowEqual); useEffect(() => { + // eslint-disable-next-line no-restricted-syntax for (const abacusNotif of abacusNotifications) { const [abacusNotificationType = '', id = ''] = abacusNotif.id.split(':'); const parsedData = abacusNotif.data ? JSON.parse(abacusNotif.data) : {}; @@ -74,6 +97,13 @@ export const notificationTypes: NotificationTypeConfig[] = [ switch (abacusNotificationType) { case 'order': { + const order = ordersById[id]?.[0]; + const clientId: number | undefined = order?.clientId ?? undefined; + const localOrderExists = + clientId && localPlaceOrders.some((ordr) => ordr.clientId === clientId); + + if (localOrderExists) return; // already handled by OrderStatusNotification + trigger( abacusNotif.id, { @@ -139,15 +169,16 @@ export const notificationTypes: NotificationTypeConfig[] = [ }, useNotificationAction: () => { const dispatch = useDispatch(); - const orders = useSelector(getSubaccountOrders, shallowEqual) || []; + const orders = useSelector(getSubaccountOrders, shallowEqual) ?? []; const ordersById = groupBy(orders, 'id'); - const fills = useSelector(getSubaccountFills, shallowEqual) || []; + const fills = useSelector(getSubaccountFills, shallowEqual) ?? []; const fillsById = groupBy(fills, 'id'); const marketIds = useSelector(getMarketIds, shallowEqual); const navigate = useNavigate(); return (notificationId: string) => { - const [abacusNotificationType = '', id = ''] = notificationId.split(':'); + // eslint-disable-next-line @typescript-eslint/no-unused-vars + const [abacusNotificationType, id = ''] = notificationId.split(':'); if (ordersById[id]) { dispatch( @@ -179,6 +210,7 @@ export const notificationTypes: NotificationTypeConfig[] = [ const selectedDydxChainId = useSelector(getSelectedDydxChainId); useEffect(() => { + // eslint-disable-next-line no-restricted-syntax for (const transfer of transferNotifications) { const { fromChainId, status, txHash, toAmount, type, isExchange } = transfer; const isFinished = @@ -186,9 +218,10 @@ export const notificationTypes: NotificationTypeConfig[] = [ const icon = <Icon iconName={isFinished ? IconName.Transfer : IconName.Clock} />; const transferType = - type ?? fromChainId === selectedDydxChainId + type ?? + (fromChainId === selectedDydxChainId ? TransferNotificationTypes.Withdrawal - : TransferNotificationTypes.Deposit; + : TransferNotificationTypes.Deposit); const title = stringGetter({ key: { @@ -197,7 +230,7 @@ export const notificationTypes: NotificationTypeConfig[] = [ }[transferType], }); - const toChainEta = status?.toChain?.chainData?.estimatedRouteDuration || 0; + const toChainEta = status?.toChain?.chainData?.estimatedRouteDuration ?? 0; const estimatedDuration = formatSeconds(Math.max(toChainEta, 0)); const body = stringGetter({ key: STRING_KEYS.DEPOSIT_STATUS, @@ -241,72 +274,259 @@ export const notificationTypes: NotificationTypeConfig[] = [ useTrigger: ({ trigger }) => { const { chainTokenLabel } = useTokenConfigs(); const stringGetter = useStringGetter(); - const expirationDate = new Date('2024-03-08T23:59:59'); + + const incentivesExpirationDate = new Date('2024-05-09T23:59:59'); + const conditionalOrdersExpirationDate = new Date('2024-06-01T23:59:59'); + const currentDate = new Date(); useEffect(() => { - trigger( - ReleaseUpdateNotificationIds.RewardsAndFullTradingLive, - { - icon: <AssetIcon symbol={chainTokenLabel} />, - title: stringGetter({ key: 'NOTIFICATIONS.RELEASE_REWARDS_AND_FULL_TRADING.TITLE' }), - body: stringGetter({ - key: 'NOTIFICATIONS.RELEASE_REWARDS_AND_FULL_TRADING.BODY', - params: { - DOS_BLOGPOST: ( - <$Link - href="https://www.dydxopsdao.com/blog/deep-dive-full-trading" - target="_blank" - rel="noopener noreferrer" - > - {stringGetter({ key: STRING_KEYS.HERE })} - </$Link> - ), - TRADING_BLOGPOST: ( - <$Link - href="https://dydx.exchange/blog/v4-full-trading" - target="_blank" - rel="noopener noreferrer" - > - {stringGetter({ key: STRING_KEYS.HERE })} - </$Link> - ), - }, - }), - toastSensitivity: 'foreground', - groupKey: ReleaseUpdateNotificationIds.RewardsAndFullTradingLive, - }, - [] - ); - if (currentDate <= expirationDate) { + if (currentDate <= incentivesExpirationDate) { trigger( - ReleaseUpdateNotificationIds.IncentivesS3, + ReleaseUpdateNotificationIds.IncentivesS4, { icon: <AssetIcon symbol={chainTokenLabel} />, - title: stringGetter({ key: 'NOTIFICATIONS.INCENTIVES_SEASON_BEGUN.TITLE' }), + title: stringGetter({ + key: 'NOTIFICATIONS.INCENTIVES_SEASON_BEGUN.TITLE', + params: { SEASON_NUMBER: '4' }, + }), body: stringGetter({ key: 'NOTIFICATIONS.INCENTIVES_SEASON_BEGUN.BODY', params: { - SEASON_NUMBER: '3', - PREV_SEASON_NUMBER: '1', - DYDX_AMOUNT: '34', - USDC_AMOUNT: '100', + PREV_SEASON_NUMBER: '2', + DYDX_AMOUNT: '16', + USDC_AMOUNT: '50', }, }), toastSensitivity: 'foreground', - groupKey: ReleaseUpdateNotificationIds.IncentivesS3, + groupKey: ReleaseUpdateNotificationIds.IncentivesS4, + }, + [] + ); + } + + if (currentDate <= conditionalOrdersExpirationDate) { + trigger( + ReleaseUpdateNotificationIds.RevampedConditionalOrders, + { + icon: <AssetIcon symbol={chainTokenLabel} />, + title: stringGetter({ + key: 'NOTIFICATIONS.CONDITIONAL_ORDERS_REVAMP.TITLE', + }), + body: stringGetter({ + key: 'NOTIFICATIONS.CONDITIONAL_ORDERS_REVAMP.BODY', + params: { + TWITTER_LINK: ( + <$Link href="https://twitter.com/dYdX/status/1785339109268935042"> + {stringGetter({ key: STRING_KEYS.HERE })} + </$Link> + ), + }, + }), + toastSensitivity: 'foreground', + groupKey: ReleaseUpdateNotificationIds.RevampedConditionalOrders, }, [] ); } }, [stringGetter]); + + const { dydxAddress } = useAccounts(); + const { data, status } = useQueryChaosLabsIncentives({ + dydxAddress, + season: 3, + }); + + const { dydxRewards } = data ?? {}; + + useEffect(() => { + if (dydxAddress && status === 'success') { + trigger( + ReleaseUpdateNotificationIds.IncentivesDistributedS3, + { + icon: <AssetIcon symbol={chainTokenLabel} />, + title: 'Season 3 launch rewards have been distributed!', + body: `Season 3 rewards: +${dydxRewards ?? 0} ${chainTokenLabel}`, + renderCustomBody({ isToast, notification }) { + return ( + <IncentiveSeasonDistributionNotification + isToast={isToast} + notification={notification} + data={{ + points: dydxRewards ?? 0, + chainTokenLabel, + }} + /> + ); + }, + toastSensitivity: 'foreground', + groupKey: ReleaseUpdateNotificationIds.IncentivesDistributedS3, + }, + [] + ); + } + }, [dydxAddress, status, dydxRewards]); }, useNotificationAction: () => { const { chainTokenLabel } = useTokenConfigs(); const navigate = useNavigate(); + return (notificationId: string) => { - if (notificationId === ReleaseUpdateNotificationIds.IncentivesS3) { + if (notificationId === ReleaseUpdateNotificationIds.IncentivesS4) { navigate(`${chainTokenLabel}/${TokenRoute.TradingRewards}`); + } else if (notificationId === ReleaseUpdateNotificationIds.IncentivesDistributedS3) { + navigate(`${chainTokenLabel}/${TokenRoute.StakingRewards}`); + } + }; + }, + }, + { + type: NotificationType.ApiError, + useTrigger: ({ trigger }) => { + const stringGetter = useStringGetter(); + const { statusErrorMessage } = useApiState(); + const { statusPage } = useURLConfigs(); + + useEffect(() => { + if (statusErrorMessage) { + trigger( + NotificationType.ApiError, + { + icon: <$WarningIcon iconName={IconName.Warning} />, + title: statusErrorMessage.title, + body: statusErrorMessage.body, + toastSensitivity: 'foreground', + groupKey: NotificationType.ApiError, + withClose: false, + actionAltText: stringGetter({ key: STRING_KEYS.STATUS_PAGE }), + renderActionSlot: () => ( + <Link href={statusPage}>{stringGetter({ key: STRING_KEYS.STATUS_PAGE })} →</Link> + ), + }, + [] + ); + } + }, [stringGetter, statusErrorMessage?.body, statusErrorMessage?.title]); + }, + useNotificationAction: () => { + return () => {}; + }, + }, + { + type: NotificationType.ComplianceAlert, + useTrigger: ({ trigger }) => { + const stringGetter = useStringGetter(); + const { complianceMessage, complianceState, complianceStatus } = useComplianceState(); + + useEffect(() => { + if (complianceState !== ComplianceStates.FULL_ACCESS) { + const displayData: NotificationDisplayData = { + icon: <$WarningIcon iconName={IconName.Warning} />, + title: stringGetter({ key: STRING_KEYS.COMPLIANCE_WARNING }), + body: complianceMessage, + toastSensitivity: 'foreground', + groupKey: NotificationType.ComplianceAlert, + withClose: false, + }; + + trigger(`${NotificationType.ComplianceAlert}-${complianceStatus}`, displayData, []); + } + }, [stringGetter, complianceMessage, complianceState, complianceStatus]); + }, + useNotificationAction: () => { + const dispatch = useDispatch(); + const { complianceStatus } = useComplianceState(); + + return () => { + if (complianceStatus === ComplianceStatus.FIRST_STRIKE_CLOSE_ONLY) { + dispatch( + openDialog({ + type: DialogTypes.GeoCompliance, + }) + ); + } + }; + }, + }, + { + type: NotificationType.OrderStatus, + useTrigger: ({ trigger }) => { + const localPlaceOrders = useSelector(getLocalPlaceOrders, shallowEqual); + const localCancelOrders = useSelector(getLocalCancelOrders, shallowEqual); + const allOrders = useSelector(getSubaccountOrders, shallowEqual); + const stringGetter = useStringGetter(); + + useEffect(() => { + // eslint-disable-next-line no-restricted-syntax + for (const localPlace of localPlaceOrders) { + const key = localPlace.clientId.toString(); + trigger( + key, + { + icon: null, + title: stringGetter({ key: STRING_KEYS.ORDER_STATUS }), + toastSensitivity: 'background', + groupKey: key, // do not collapse + toastDuration: DEFAULT_TOAST_AUTO_CLOSE_MS, + renderCustomBody: ({ isToast, notification }) => ( + <OrderStatusNotification + isToast={isToast} + localOrder={localPlace} + notification={notification} + /> + ), + }, + [localPlace.submissionStatus], + true + ); + } + }, [localPlaceOrders]); + + useEffect(() => { + // eslint-disable-next-line no-restricted-syntax + for (const localCancel of localCancelOrders) { + // ensure order exists + const existingOrder = allOrders?.find((order) => order.id === localCancel.orderId); + if (!existingOrder) return; + + // share same notification with existing local order if exists + const key = (existingOrder.clientId ?? localCancel.orderId).toString(); + + trigger( + key, + { + icon: null, + title: stringGetter({ key: STRING_KEYS.ORDER_STATUS }), + toastSensitivity: 'background', + groupKey: key, + toastDuration: DEFAULT_TOAST_AUTO_CLOSE_MS, + renderCustomBody: ({ isToast, notification }) => ( + <OrderCancelNotification + isToast={isToast} + localCancel={localCancel} + notification={notification} + /> + ), + }, + [localCancel.submissionStatus], + true + ); + } + }, [localCancelOrders]); + }, + useNotificationAction: () => { + const dispatch = useDispatch(); + const orders = useSelector(getSubaccountOrders, shallowEqual) ?? []; + + return (orderClientId: string) => { + const order = orders.find((o) => o.clientId?.toString() === orderClientId); + if (order) { + dispatch( + openDialog({ + type: DialogTypes.OrderDetails, + dialogProps: { orderId: order.id }, + }) + ); } }; }, @@ -318,6 +538,11 @@ const $Icon = styled.img` width: 1.5rem; `; -const $Link = styled.a` - --link-color: var(--color-text-2); +const $WarningIcon = styled(Icon)` + color: var(--color-warning); +`; + +const $Link = styled(Link)` + --link-color: var(--color-accent); + display: inline-block; `; diff --git a/src/hooks/useNotifications.tsx b/src/hooks/useNotifications.tsx index ba44b52e4..3de4004e1 100644 --- a/src/hooks/useNotifications.tsx +++ b/src/hooks/useNotifications.tsx @@ -1,22 +1,34 @@ -import { createContext, useCallback, useContext, useEffect, useMemo, useState } from 'react'; +import { + ReactElement, + createContext, + useCallback, + useContext, + useEffect, + useMemo, + useState, +} from 'react'; import { AnalyticsEvent } from '@/constants/analytics'; import { LOCAL_STORAGE_VERSIONS, LocalStorageKey } from '@/constants/localStorage'; import { + NotificationCategoryPreferences, + NotificationStatus, + NotificationType, + NotificationTypeCategory, + SingleSessionNotificationTypes, type Notification, type NotificationDisplayData, type NotificationPreferences, type Notifications, - NotificationStatus, - NotificationType, } from '@/constants/notifications'; -import { useLocalStorage } from './useLocalStorage'; -import { notificationTypes } from './useNotificationTypes'; - import { track } from '@/lib/analytics'; import { renderSvgToDataUrl } from '@/lib/renderSvgToDataUrl'; +import { useLocalStorage } from './useLocalStorage'; +// eslint-disable-next-line import/no-cycle +import { notificationTypes } from './useNotificationTypes'; + type NotificationsContextType = ReturnType<typeof useNotificationsContext>; const NotificationsContext = createContext<NotificationsContextType>( @@ -33,11 +45,11 @@ export const useNotifications = () => useContext(NotificationsContext)!; const useNotificationsContext = () => { // Local storage - // const [notifications, setNotifications] = useState<Notifications>({}); - const [notifications, setNotifications] = useLocalStorage<Notifications>({ + const [localStorageNotifications, setLocalStorageNotifications] = useLocalStorage<Notifications>({ key: LocalStorageKey.Notifications, defaultValue: {}, }); + const [notifications, setNotifications] = useState<Notifications>(localStorageNotifications); const [notificationsLastUpdated, setNotificationsLastUpdated] = useLocalStorage<number>({ key: LocalStorageKey.NotificationsLastUpdated, @@ -48,16 +60,28 @@ const useNotificationsContext = () => { useLocalStorage<NotificationPreferences>({ key: LocalStorageKey.NotificationPreferences, defaultValue: { - [NotificationType.AbacusGenerated]: true, - [NotificationType.SquidTransfer]: true, - [NotificationType.ReleaseUpdates]: true, + [NotificationCategoryPreferences.General]: true, + [NotificationCategoryPreferences.Transfers]: true, + [NotificationCategoryPreferences.Trading]: true, + [NotificationCategoryPreferences.MustSee]: true, version: LOCAL_STORAGE_VERSIONS[LocalStorageKey.NotificationPreferences], }, }); useEffect(() => { setNotificationsLastUpdated(Date.now()); - }, [notifications]); + }, [notifications, setNotificationsLastUpdated]); + + useEffect(() => { + // save notifications to localstorage, but filter out single session notifications + const originalEntries = Object.entries(notifications); + const filteredEntries = originalEntries.filter( + ([, value]) => !SingleSessionNotificationTypes.includes(value.type) + ); + + const newNotifications = Object.fromEntries(filteredEntries); + setLocalStorageNotifications(newNotifications); + }, [notifications, setLocalStorageNotifications]); const getKey = useCallback( <T extends string | number>(notification: Pick<Notification<T>, 'type' | 'id'>) => @@ -72,7 +96,7 @@ const useNotificationsContext = () => { const getDisplayData = useCallback( (notification: Notification) => notificationsDisplayData[getKey(notification)], - [notificationsDisplayData] + [getKey, notificationsDisplayData] ); // Check for version changes @@ -82,9 +106,10 @@ const useNotificationsContext = () => { LOCAL_STORAGE_VERSIONS[LocalStorageKey.NotificationPreferences] ) { setNotificationPreferences({ - [NotificationType.AbacusGenerated]: true, - [NotificationType.SquidTransfer]: true, - [NotificationType.ReleaseUpdates]: true, + [NotificationCategoryPreferences.General]: true, + [NotificationCategoryPreferences.Transfers]: true, + [NotificationCategoryPreferences.Trading]: true, + [NotificationCategoryPreferences.MustSee]: true, version: LOCAL_STORAGE_VERSIONS[LocalStorageKey.NotificationPreferences], }); } @@ -95,9 +120,12 @@ const useNotificationsContext = () => { (notification: Notification, status: NotificationStatus) => { notification.status = status; notification.timestamps[notification.status] = Date.now(); - setNotifications({ ...notifications, [getKey(notification)]: notification }); + setNotifications((ns) => ({ + ...ns, + [getKey(notification)]: notification, + })); }, - [notifications, getKey] + [getKey] ); const { markUnseen, markSeen, markCleared } = useMemo( @@ -122,14 +150,16 @@ const useNotificationsContext = () => { ); const markAllCleared = useCallback(() => { - for (const notification of Object.values(notifications)) { - markCleared(notification); - } + Object.values(notifications).forEach((n) => markCleared(n)); }, [notifications, markCleared]); // Trigger - for (const { type, useTrigger } of notificationTypes) + // eslint-disable-next-line no-restricted-syntax + for (const { type, useTrigger } of notificationTypes) { + const notificationCategory = NotificationTypeCategory[type]; + // eslint-disable-next-line react-hooks/rules-of-hooks useTrigger({ + // eslint-disable-next-line react-hooks/rules-of-hooks trigger: useCallback( (id, displayData, updateKey, isNew = true) => { const key = getKey({ type, id }); @@ -137,26 +167,26 @@ const useNotificationsContext = () => { const notification = notifications[key]; // Filter out notifications that are not enabled - if (notificationPreferences[type] !== false) { + if (notificationPreferences[notificationCategory] !== false) { // New unique key - create new notification if (!notification) { - const notification = (notifications[key] = { + const thisNotification = (notifications[key] = { id, type, timestamps: {}, updateKey, } as Notification); updateStatus( - notification, + thisNotification, isNew ? NotificationStatus.Triggered : NotificationStatus.Cleared ); } else if (JSON.stringify(updateKey) !== JSON.stringify(notification.updateKey)) { // updateKey changed - update existing notification - const notification = notifications[key]; + const thisNotification = notifications[key]; - notification.updateKey = updateKey; - updateStatus(notification, NotificationStatus.Updated); + thisNotification.updateKey = updateKey; + updateStatus(thisNotification, NotificationStatus.Updated); } } else { // Notification is disabled - remove it @@ -166,22 +196,24 @@ const useNotificationsContext = () => { notificationsDisplayData[key] = displayData; setNotificationsDisplayData({ ...notificationsDisplayData }); }, - [notifications, updateStatus, notificationPreferences[type]] + [notifications, updateStatus, notificationPreferences[notificationCategory]] ), lastUpdated: notificationsLastUpdated, }); + } // Actions const actions = Object.fromEntries( notificationTypes.map( + // eslint-disable-next-line react-hooks/rules-of-hooks ({ type, useNotificationAction }) => [type, useNotificationAction?.()] as const ) ); - const onNotificationAction = async (notification: Notification) => { + const onNotificationAction = (notification: Notification) => { track(AnalyticsEvent.NotificationAction, { type: notification.type, id: notification.id }); - return await actions[notification.type]?.(notification.id); + return actions[notification.type]?.(notification.id); }; // Push notifications @@ -214,6 +246,7 @@ const useNotificationsContext = () => { (async () => { if (!hasEnabledPush) return; + // eslint-disable-next-line no-restricted-syntax for (const notification of Object.values(notifications)) if ( notification.status < NotificationStatus.Seen && @@ -223,25 +256,23 @@ const useNotificationsContext = () => { const displayData = getDisplayData(notification); const iconUrl = - displayData.icon && (await renderSvgToDataUrl(displayData.icon).catch(() => undefined)); + displayData.icon && + // eslint-disable-next-line no-await-in-loop + (await renderSvgToDataUrl(displayData.icon as ReactElement<any, 'svg'>).catch( + () => undefined + )); const pushNotification = new globalThis.Notification(displayData.title, { renotify: true, tag: getKey(notification), data: notification, - description: displayData.body, - icon: iconUrl ?? '/favicon.svg', - badge: iconUrl ?? '/favicon.svg', - image: iconUrl ?? '/favicon.svg', - vibrate: displayData.toastSensitivity === 'foreground', + body: displayData.body, + icon: iconUrl?.toString() ?? '/favicon.svg', + badge: iconUrl?.toString() ?? '/favicon.svg', + image: iconUrl?.toString() ?? '/favicon.svg', + vibrate: displayData.toastSensitivity === 'foreground' ? 200 : undefined, requireInteraction: displayData.toastDuration === Infinity, - // actions: [ - // { - // action: displayData.actionDescription, - // title: displayData.actionDescription, - // } - // ].slice(0, globalThis.Notification.maxActions), - }); + } as any); pushNotification.addEventListener('click', () => { onNotificationAction(notification); @@ -287,7 +318,7 @@ const useNotificationsContext = () => { notificationPreferences, setNotificationPreferences, getNotificationPreferenceForType: useCallback( - (type: NotificationType) => notificationPreferences[type], + (type: NotificationType) => notificationPreferences[NotificationTypeCategory[type]], [notificationPreferences] ), }; diff --git a/src/hooks/useOnClickOutside.ts b/src/hooks/useOnClickOutside.ts index 2467f60ea..8bd48b57c 100644 --- a/src/hooks/useOnClickOutside.ts +++ b/src/hooks/useOnClickOutside.ts @@ -1,4 +1,5 @@ import React, { useEffect } from 'react'; + import useLatest from 'use-latest'; export type Handler = (event: MouseEvent) => void; @@ -13,7 +14,7 @@ export const useOnClickOutside = ({ const onClickOutsideRef = useLatest(onClickOutside); useEffect(() => { - if (!onClickOutside) return; + if (!onClickOutside) return undefined; const handleClickOutside: (e: MouseEvent) => void = (e) => { if (ref.current && onClickOutsideRef.current && !ref.current.contains(e.target as Node)) { @@ -29,5 +30,5 @@ export const useOnClickOutside = ({ clearTimeout(timeoutId); globalThis.removeEventListener('click', handleClickOutside); }; - }, [!onClickOutside]); + }, [onClickOutside]); }; diff --git a/src/hooks/useOnLastOrderIndexed.ts b/src/hooks/useOnLastOrderIndexed.ts index bdaece8ba..d6e362b97 100644 --- a/src/hooks/useOnLastOrderIndexed.ts +++ b/src/hooks/useOnLastOrderIndexed.ts @@ -1,4 +1,5 @@ import { useEffect, useState } from 'react'; + import { useSelector } from 'react-redux'; import { getLatestOrderClientId } from '@/state/accountSelectors'; diff --git a/src/hooks/usePageTitlePriceUpdates.ts b/src/hooks/usePageTitlePriceUpdates.ts index 98013d85a..4040b06a7 100644 --- a/src/hooks/usePageTitlePriceUpdates.ts +++ b/src/hooks/usePageTitlePriceUpdates.ts @@ -1,4 +1,5 @@ import { useEffect } from 'react'; + import { useSelector } from 'react-redux'; import { DEFAULT_DOCUMENT_TITLE } from '@/constants/routes'; diff --git a/src/hooks/usePerpetualMarketSparklines.ts b/src/hooks/usePerpetualMarketSparklines.ts new file mode 100644 index 000000000..6f3cd880e --- /dev/null +++ b/src/hooks/usePerpetualMarketSparklines.ts @@ -0,0 +1,41 @@ +import { useQuery } from 'react-query'; + +import type { PerpetualMarketSparklineResponse } from '@/constants/indexer'; +import { timeUnits } from '@/constants/time'; + +import { log } from '@/lib/telemetry'; + +import { useDydxClient } from './useDydxClient'; + +const POLLING_MS = timeUnits.hour; +export const SEVEN_DAY_SPARKLINE_ENTRIES = 42; +export const ONE_DAY_SPARKLINE_ENTRIES = 24; + +type UsePerpetualMarketSparklinesProps = { + period?: 'ONE_DAY' | 'SEVEN_DAYS'; + refetchInterval?: number; +}; + +export const usePerpetualMarketSparklines = (props: UsePerpetualMarketSparklinesProps = {}) => { + const { period = 'SEVEN_DAYS', refetchInterval = POLLING_MS } = props; + const { getPerpetualMarketSparklines, compositeClient } = useDydxClient(); + + const { data } = useQuery<PerpetualMarketSparklineResponse | undefined>({ + enabled: Boolean(compositeClient), + queryKey: ['perpetualMarketSparklines', period], + queryFn: () => { + try { + return getPerpetualMarketSparklines({ period }); + } catch (error) { + log('usePerpetualMarketSparklines', error); + return undefined; + } + }, + refetchInterval, + refetchOnWindowFocus: false, + cacheTime: 1_000 * 60 * 5, // 5 minutes + staleTime: 1_000 * 60 * 10, // 10 minutes + }); + + return data; +}; diff --git a/src/hooks/usePerpetualMarketsStats.ts b/src/hooks/usePerpetualMarketsStats.ts new file mode 100644 index 000000000..4efeabec1 --- /dev/null +++ b/src/hooks/usePerpetualMarketsStats.ts @@ -0,0 +1,79 @@ +import { useMemo } from 'react'; + +import { getChainRevenue } from '@/services'; +import { useQuery } from 'react-query'; +import { shallowEqual, useSelector } from 'react-redux'; + +import { getPerpetualMarkets } from '@/state/perpetualsSelectors'; + +import { log } from '@/lib/telemetry'; +import { isPresent, orEmptyObj } from '@/lib/typeUtils'; + +const endDate = new Date(); +const startDate = new Date(); +startDate.setDate(startDate.getDate() - 1); + +export const usePerpetualMarketsStats = () => { + const perpetualMarkets = orEmptyObj(useSelector(getPerpetualMarkets, shallowEqual)); + + const markets = useMemo( + () => Object.values(perpetualMarkets).filter(isPresent), + [perpetualMarkets] + ); + + const { data } = useQuery({ + queryKey: ['chain-revenue', startDate.toISOString(), endDate.toISOString()], + queryFn: () => { + try { + return getChainRevenue({ + startDate, + endDate, + }); + } catch (error) { + log('usePerpetualMarketsStats getChainRevenue', error); + return undefined; + } + }, + refetchOnWindowFocus: false, + cacheTime: 1_000 * 60 * 5, // 5 minutes + staleTime: 1_000 * 60 * 10, // 10 minutes + }); + + const feesEarned = useMemo(() => { + if (!data) return null; + + return data.reduce((acc, { total }) => acc + total, 0); + }, [data]); + + const stats = useMemo(() => { + let volume24HUSDC = 0; + let openInterestUSDC = 0; + + // eslint-disable-next-line no-restricted-syntax + for (const { oraclePrice, perpetual } of markets) { + const { volume24H, openInterest = 0 } = perpetual ?? {}; + volume24HUSDC += volume24H ?? 0; + if (oraclePrice) openInterestUSDC += openInterest * oraclePrice; + } + + return { + volume24HUSDC, + openInterestUSDC, + feesEarned, + }; + }, [markets, feesEarned]); + + const feesEarnedChart = useMemo( + () => + data?.map((point, x) => ({ + x: x + 1, + y: point.total, + })) ?? [], + [data] + ); + + return { + stats, + feesEarnedChart, + }; +}; diff --git a/src/hooks/usePotentialMarkets.tsx b/src/hooks/usePotentialMarkets.tsx index 2cad7efa5..a7e3c6226 100644 --- a/src/hooks/usePotentialMarkets.tsx +++ b/src/hooks/usePotentialMarkets.tsx @@ -1,7 +1,7 @@ import { createContext, useContext, useEffect, useMemo, useState } from 'react'; import { STRING_KEYS } from '@/constants/localization'; -import type { ExchangeConfigItem, PotentialMarketItem } from '@/constants/potentialMarkets'; +import type { NewMarketProposal } from '@/constants/potentialMarkets'; import { log } from '@/lib/telemetry'; @@ -9,7 +9,6 @@ import { useStringGetter } from './useStringGetter'; const PotentialMarketsContext = createContext<ReturnType<typeof usePotentialMarketsContext>>({ potentialMarkets: undefined, - exchangeConfigs: undefined, hasPotentialMarketsData: false, liquidityTiers: { 0: { @@ -47,37 +46,27 @@ export const PotentialMarketsProvider = ({ ...props }) => ( export const usePotentialMarkets = () => useContext(PotentialMarketsContext); - -const EXCHANGE_CONFIG_FILE_PATH = '/configs/otherMarketExchangeConfig.json'; -const POTENTIAL_MARKETS_FILE_PATH = '/configs/otherMarketParameters.json'; +const POTENTIAL_MARKETS_FILE_PATH = '/configs/otherMarketData.json'; export const usePotentialMarketsContext = () => { const stringGetter = useStringGetter(); - const [potentialMarkets, setPotentialMarkets] = useState<PotentialMarketItem[]>(); - const [exchangeConfigs, setExchangeConfigs] = useState<Record<string, ExchangeConfigItem[]>>(); + const [potentialMarkets, setPotentialMarkets] = useState<NewMarketProposal[]>(); useEffect(() => { try { fetch(POTENTIAL_MARKETS_FILE_PATH) .then((response) => response.json()) - .then((data) => { - setPotentialMarkets(data as PotentialMarketItem[]); + .then((data: Record<string, Omit<NewMarketProposal, 'baseAsset'>>) => { + const newPotentialMarkets = Object.entries(data).map(([key, value]) => ({ + ...value, + baseAsset: key, + })); + setPotentialMarkets(newPotentialMarkets); }); } catch (error) { log('usePotentialMarkets/potentialMarkets', error); setPotentialMarkets(undefined); } - - try { - fetch(EXCHANGE_CONFIG_FILE_PATH) - .then((response) => response.json()) - .then((data) => { - setExchangeConfigs(data as Record<string, ExchangeConfigItem[]>); - }); - } catch (error) { - log('usePotentialMarkets/exchangeConfigs', error); - setExchangeConfigs(undefined); - } }, []); const liquidityTiers = useMemo( @@ -112,8 +101,7 @@ export const usePotentialMarketsContext = () => { return { potentialMarkets, - exchangeConfigs, - hasPotentialMarketsData: Boolean(potentialMarkets && exchangeConfigs), + hasPotentialMarketsData: Boolean(potentialMarkets), liquidityTiers, }; }; diff --git a/src/hooks/useQueryChaosLabsIncentives.ts b/src/hooks/useQueryChaosLabsIncentives.ts new file mode 100644 index 000000000..22d066150 --- /dev/null +++ b/src/hooks/useQueryChaosLabsIncentives.ts @@ -0,0 +1,32 @@ +import { useQuery } from 'react-query'; + +import type { DydxAddress } from '@/constants/wallets'; + +import { log } from '@/lib/telemetry'; + +type ChaosLabsIncentivesResponse = { + dydxRewards: number; + incentivePoints: number; + marketMakingIncentivePoints: number; +}; + +export const useQueryChaosLabsIncentives = ({ + dydxAddress, + season, +}: { + dydxAddress?: DydxAddress; + season?: number; +}) => { + return useQuery<ChaosLabsIncentivesResponse | undefined, Error>({ + enabled: !!dydxAddress, + queryKey: ['launch_incentives_rewards', dydxAddress, season], + queryFn: async () => { + if (!dydxAddress) return undefined; + const resp = await fetch( + `https://cloud.chaoslabs.co/query/api/dydx/points/${dydxAddress}?n=${season}` + ); + return resp.json(); + }, + onError: (error: Error) => log('LaunchIncentives/fetchPoints', error), + }); +}; diff --git a/src/hooks/useRestrictions.tsx b/src/hooks/useRestrictions.tsx index 184a523f4..9694b89ce 100644 --- a/src/hooks/useRestrictions.tsx +++ b/src/hooks/useRestrictions.tsx @@ -1,26 +1,15 @@ -import { createContext, useCallback, useContext, useEffect, useMemo, useState } from 'react'; -import { shallowEqual, useDispatch, useSelector } from 'react-redux'; +import { createContext, useCallback, useContext, useMemo, useState } from 'react'; + +import { shallowEqual, useSelector } from 'react-redux'; import { RestrictionType } from '@/constants/abacus'; -import { DialogTypes } from '@/constants/dialogs'; import { getRestrictionType } from '@/state/accountSelectors'; -import { forceOpenDialog } from '@/state/dialogs'; -import { isTruthy } from '@/lib/isTruthy'; const useRestrictionContext = () => { - const dispatch = useDispatch(); const restrictionType = useSelector(getRestrictionType, shallowEqual); const [sanctionedAddresses, setSanctionedAddresses] = useState<string[]>([]); - useEffect(() => { - if (restrictionType === RestrictionType.GEO_RESTRICTED) { - dispatch( - forceOpenDialog({ type: DialogTypes.RestrictedGeo, dialogProps: { preventClose: true } }) - ); - } - }, [restrictionType, dispatch]); - const updateSanctionedAddresses = useCallback( (screenedAddresses: { [address: string]: boolean }) => { const toAdd = Object.entries(screenedAddresses) diff --git a/src/hooks/useSelectedNetwork.ts b/src/hooks/useSelectedNetwork.ts index b7086b786..cc76b40a6 100644 --- a/src/hooks/useSelectedNetwork.ts +++ b/src/hooks/useSelectedNetwork.ts @@ -1,16 +1,19 @@ import { useCallback } from 'react'; + +import { useWallets } from '@privy-io/react-auth'; import { useDispatch, useSelector } from 'react-redux'; import { LocalStorageKey } from '@/constants/localStorage'; -import { DEFAULT_APP_ENVIRONMENT, DydxNetwork } from '@/constants/networks'; - -import { useAccounts, useLocalStorage } from '@/hooks'; +import { DEFAULT_APP_ENVIRONMENT, DydxNetwork, ENVIRONMENT_CONFIG_MAP } from '@/constants/networks'; import { setSelectedNetwork } from '@/state/app'; import { getSelectedNetwork } from '@/state/appSelectors'; import { validateAgainstAvailableEnvironments } from '@/lib/network'; +import { useAccounts } from './useAccounts'; +import { useLocalStorage } from './useLocalStorage'; + export const useSelectedNetwork = (): { switchNetwork: (network: DydxNetwork) => void; selectedNetwork: DydxNetwork; @@ -19,6 +22,9 @@ export const useSelectedNetwork = (): { const { disconnect } = useAccounts(); const selectedNetwork = useSelector(getSelectedNetwork); + const { wallets } = useWallets(); + const privyWallet = wallets.find((wallet) => wallet.walletClientType === 'privy'); + const [, setLocalStorageNetwork] = useLocalStorage<DydxNetwork>({ key: LocalStorageKey.SelectedNetwork, defaultValue: DEFAULT_APP_ENVIRONMENT, @@ -31,6 +37,8 @@ export const useSelectedNetwork = (): { setLocalStorageNetwork(network); dispatch(setSelectedNetwork(network)); + const chainId = Number(ENVIRONMENT_CONFIG_MAP[selectedNetwork].ethereumChainId); + privyWallet?.switchChain(chainId); }, [dispatch, disconnect, setLocalStorageNetwork] ); diff --git a/src/hooks/useShouldShowFooter.ts b/src/hooks/useShouldShowFooter.ts index 07d037347..bc2aeeca0 100644 --- a/src/hooks/useShouldShowFooter.ts +++ b/src/hooks/useShouldShowFooter.ts @@ -1,5 +1,5 @@ -import { matchPath, useLocation } from 'react-router-dom'; import { useSelector } from 'react-redux'; +import { matchPath, useLocation } from 'react-router-dom'; import { TRADE_ROUTE } from '@/constants/routes'; diff --git a/src/hooks/useSignForWalletDerivation.tsx b/src/hooks/useSignForWalletDerivation.tsx new file mode 100644 index 000000000..b69fe0b2c --- /dev/null +++ b/src/hooks/useSignForWalletDerivation.tsx @@ -0,0 +1,23 @@ +import { useSelector } from 'react-redux'; +import { useSignTypedData } from 'wagmi'; + +import { ENVIRONMENT_CONFIG_MAP } from '@/constants/networks'; +import { getSignTypedData } from '@/constants/wallets'; + +import { getSelectedDydxChainId, getSelectedNetwork } from '@/state/appSelectors'; + +export default function useSignForWalletDerivation() { + const selectedDydxChainId = useSelector(getSelectedDydxChainId); + const selectedNetwork = useSelector(getSelectedNetwork); + const chainId = Number(ENVIRONMENT_CONFIG_MAP[selectedNetwork].ethereumChainId); + + const signTypedData = getSignTypedData(selectedDydxChainId); + const { signTypedDataAsync } = useSignTypedData({ + ...signTypedData, + domain: { + ...signTypedData.domain, + chainId, + }, + }); + return signTypedDataAsync; +} diff --git a/src/hooks/useStringGetter.ts b/src/hooks/useStringGetter.ts index 43ebae8fa..de8cbc93d 100644 --- a/src/hooks/useStringGetter.ts +++ b/src/hooks/useStringGetter.ts @@ -1,11 +1,10 @@ -import { useSelector, shallowEqual } from 'react-redux'; +import { shallowEqual, useSelector } from 'react-redux'; import type { StringGetterFunction } from '@/constants/localization'; -import { getIsLocaleLoaded, getLocaleStringGetter } from '@/state/localizationSelectors'; +import { getLocaleStringGetter } from '@/state/localizationSelectors'; export const useStringGetter = (): StringGetterFunction => { - const isLocaleLoaded = useSelector(getIsLocaleLoaded); const stringGetterFunction = useSelector(getLocaleStringGetter, shallowEqual); - return isLocaleLoaded ? stringGetterFunction : () => ''; + return stringGetterFunction; }; diff --git a/src/hooks/useSubaccount.tsx b/src/hooks/useSubaccount.tsx index c975f76cf..9b5f0aecd 100644 --- a/src/hooks/useSubaccount.tsx +++ b/src/hooks/useSubaccount.tsx @@ -1,40 +1,51 @@ import { createContext, useCallback, useContext, useEffect, useMemo, useState } from 'react'; -import { shallowEqual, useSelector, useDispatch } from 'react-redux'; -import type { Nullable } from '@dydxprotocol/v4-abacus'; -import Long from 'long'; -import { type IndexedTx } from '@cosmjs/stargate'; + import type { EncodeObject } from '@cosmjs/proto-signing'; +import { type IndexedTx } from '@cosmjs/stargate'; import { Method } from '@cosmjs/tendermint-rpc'; - +import type { Nullable } from '@dydxprotocol/v4-abacus'; import { - type LocalWallet, SubaccountClient, - type GovAddNewMarketParams, utils, + type GovAddNewMarketParams, + type LocalWallet, } from '@dydxprotocol/v4-client-js'; +import Long from 'long'; +import { shallowEqual, useDispatch, useSelector } from 'react-redux'; import type { AccountBalance, + HumanReadableCancelOrderPayload, HumanReadablePlaceOrderPayload, + HumanReadableTriggerOrdersPayload, ParsingError, SubAccountHistoricalPNLs, } from '@/constants/abacus'; - import { AMOUNT_RESERVED_FOR_GAS_USDC } from '@/constants/account'; +import { STRING_KEYS } from '@/constants/localization'; import { QUANTUM_MULTIPLIER } from '@/constants/numbers'; +import { TradeTypes } from '@/constants/trade'; import { DydxAddress } from '@/constants/wallets'; -import { setSubaccount, setHistoricalPnl, removeUncommittedOrderClientId } from '@/state/account'; +import { + cancelOrderConfirmed, + cancelOrderFailed, + cancelOrderSubmitted, + placeOrderFailed, + placeOrderSubmitted, + setHistoricalPnl, + setSubaccount, +} from '@/state/account'; import { getBalances } from '@/state/accountSelectors'; import abacusStateManager from '@/lib/abacus'; -import { hashFromTx } from '@/lib/txUtils'; import { log } from '@/lib/telemetry'; +import { hashFromTx } from '@/lib/txUtils'; import { useAccounts } from './useAccounts'; -import { useTokenConfigs } from './useTokenConfigs'; import { useDydxClient } from './useDydxClient'; import { useGovernanceVariables } from './useGovernanceVariables'; +import { useTokenConfigs } from './useTokenConfigs'; type SubaccountContextType = ReturnType<typeof useSubaccountContext>; const SubaccountContext = createContext<SubaccountContextType>({} as SubaccountContextType); @@ -55,7 +66,7 @@ export const useSubaccountContext = ({ localDydxWallet }: { localDydxWallet?: Lo const { usdcDenom, usdcDecimals } = useTokenConfigs(); const { compositeClient, faucetClient } = useDydxClient(); - const { getFaucetFunds } = useMemo( + const { getFaucetFunds, getNativeTokens } = useMemo( () => ({ getFaucetFunds: async ({ dydxAddress, @@ -63,7 +74,10 @@ export const useSubaccountContext = ({ localDydxWallet }: { localDydxWallet?: Lo }: { dydxAddress: DydxAddress; subaccountNumber: number; - }) => await faucetClient?.fill(dydxAddress, subaccountNumber, 100), + }) => faucetClient?.fill(dydxAddress, subaccountNumber, 100), + + getNativeTokens: async ({ dydxAddress }: { dydxAddress: DydxAddress }) => + faucetClient?.fillNative(dydxAddress), }), [faucetClient] ); @@ -224,7 +238,7 @@ export const useSubaccountContext = ({ localDydxWallet }: { localDydxWallet?: Lo [compositeClient] ); - const [subaccountNumber, setSubaccountNumber] = useState(0); + const [subaccountNumber] = useState(0); useEffect(() => { abacusStateManager.setSubaccountNumber(subaccountNumber); @@ -250,8 +264,8 @@ export const useSubaccountContext = ({ localDydxWallet }: { localDydxWallet?: Lo const amount = parseFloat(balance.amount) - AMOUNT_RESERVED_FOR_GAS_USDC; if (amount > 0) { - const subaccountClient = new SubaccountClient(localDydxWallet, 0); - await depositToSubaccount({ amount, subaccountClient }); + const newSubaccountClient = new SubaccountClient(localDydxWallet, 0); + await depositToSubaccount({ amount, subaccountClient: newSubaccountClient }); } }, [localDydxWallet, depositToSubaccount] @@ -269,10 +283,10 @@ export const useSubaccountContext = ({ localDydxWallet }: { localDydxWallet?: Lo const deposit = useCallback( async (amount: number) => { if (!subaccountClient) { - return; + return undefined; } - return await depositToSubaccount({ subaccountClient, amount }); + return depositToSubaccount({ subaccountClient, amount }); }, [subaccountClient, depositToSubaccount] ); @@ -280,10 +294,10 @@ export const useSubaccountContext = ({ localDydxWallet }: { localDydxWallet?: Lo const withdraw = useCallback( async (amount: number) => { if (!subaccountClient) { - return; + return undefined; } - return await withdrawFromSubaccount({ subaccountClient, amount }); + return withdrawFromSubaccount({ subaccountClient, amount }); }, [subaccountClient, withdrawFromSubaccount] ); @@ -293,7 +307,7 @@ export const useSubaccountContext = ({ localDydxWallet }: { localDydxWallet?: Lo const transfer = useCallback( async (amount: number, recipient: string, coinDenom: string) => { if (!subaccountClient) { - return; + return undefined; } return (await (coinDenom === usdcDenom ? transferFromSubaccountToAddress @@ -305,23 +319,24 @@ export const useSubaccountContext = ({ localDydxWallet }: { localDydxWallet?: Lo const sendSquidWithdraw = useCallback( async (amount: number, payload: string, isCctp?: boolean) => { const cctpWithdraw = () => { - return new Promise<string>((resolve, reject) => + return new Promise<string>((resolve, reject) => { abacusStateManager.cctpWithdraw((success, error, data) => { const parsedData = JSON.parse(data); + // eslint-disable-next-line eqeqeq if (success && parsedData?.code == 0) { resolve(parsedData?.transactionHash); } else { reject(error); } - }) - ); + }); + }); }; if (isCctp) { - return await cctpWithdraw(); + return cctpWithdraw(); } if (!subaccountClient) { - return; + return undefined; } const tx = await sendSquidWithdrawFromSubaccount({ subaccountClient, amount, payload }); return hashFromTx(tx?.hash); @@ -331,19 +346,22 @@ export const useSubaccountContext = ({ localDydxWallet }: { localDydxWallet?: Lo // ------ Faucet Methods ------ // const requestFaucetFunds = useCallback(async () => { - if (!dydxAddress) return; - try { - await getFaucetFunds({ dydxAddress, subaccountNumber }); + if (!dydxAddress) throw new Error('dydxAddress is not connected'); + + await Promise.all([ + getFaucetFunds({ dydxAddress, subaccountNumber }), + getNativeTokens({ dydxAddress }), + ]); } catch (error) { log('useSubaccount/getFaucetFunds', error); throw error; } - }, [dydxAddress, getFaucetFunds, subaccountNumber]); + }, [dydxAddress, getFaucetFunds, getNativeTokens, subaccountNumber]); // ------ Trading Methods ------ // const placeOrder = useCallback( - async ({ + ({ isClosePosition = false, onError, onSuccess, @@ -363,7 +381,12 @@ export const useSubaccountContext = ({ localDydxWallet }: { localDydxWallet?: Lo onError?.({ errorStringKey: parsingError?.stringKey }); if (data?.clientId !== undefined) { - dispatch(removeUncommittedOrderClientId(data.clientId)); + dispatch( + placeOrderFailed({ + clientId: data.clientId, + errorStringKey: parsingError?.stringKey ?? STRING_KEYS.SOMETHING_WENT_WRONG, + }) + ); } } }; @@ -376,24 +399,34 @@ export const useSubaccountContext = ({ localDydxWallet }: { localDydxWallet?: Lo placeOrderParams = abacusStateManager.placeOrder(callback); } + if (placeOrderParams?.clientId) { + dispatch( + placeOrderSubmitted({ + marketId: placeOrderParams.marketId, + clientId: placeOrderParams.clientId, + orderType: placeOrderParams.type as TradeTypes, + }) + ); + } + return placeOrderParams; }, [subaccountClient] ); const closePosition = useCallback( - async ({ + ({ onError, onSuccess, }: { onError: (onErrorParams?: { errorStringKey?: Nullable<string> }) => void; onSuccess?: (placeOrderPayload: Nullable<HumanReadablePlaceOrderPayload>) => void; - }) => await placeOrder({ isClosePosition: true, onError, onSuccess }), + }) => placeOrder({ isClosePosition: true, onError, onSuccess }), [placeOrder] ); const cancelOrder = useCallback( - async ({ + ({ orderId, onError, onSuccess, @@ -404,17 +437,96 @@ export const useSubaccountContext = ({ localDydxWallet }: { localDydxWallet?: Lo }) => { const callback = (success: boolean, parsingError?: Nullable<ParsingError>) => { if (success) { + dispatch(cancelOrderConfirmed(orderId)); onSuccess?.(); } else { + dispatch( + cancelOrderFailed({ + orderId, + errorStringKey: parsingError?.stringKey ?? STRING_KEYS.SOMETHING_WENT_WRONG, + }) + ); onError?.({ errorStringKey: parsingError?.stringKey }); } }; + dispatch(cancelOrderSubmitted(orderId)); abacusStateManager.cancelOrder(orderId, callback); }, [subaccountClient] ); + // ------ Trigger Orders Methods ------ // + const placeTriggerOrders = useCallback( + async ({ + onError, + onSuccess, + }: { + onError?: (onErrorParams?: { errorStringKey?: Nullable<string> }) => void; + onSuccess?: () => void; + } = {}) => { + const callback = ( + success: boolean, + parsingError?: Nullable<ParsingError>, + data?: Nullable<HumanReadableTriggerOrdersPayload> + ) => { + const placeOrderPayloads = data?.placeOrderPayloads.toArray() ?? []; + const cancelOrderPayloads = data?.cancelOrderPayloads.toArray() ?? []; + + if (success) { + onSuccess?.(); + + cancelOrderPayloads.forEach((payload: HumanReadableCancelOrderPayload) => { + dispatch(cancelOrderConfirmed(payload.orderId)); + }); + } else { + onError?.({ errorStringKey: parsingError?.stringKey }); + + placeOrderPayloads.forEach((payload: HumanReadablePlaceOrderPayload) => { + dispatch( + placeOrderFailed({ + clientId: payload.clientId, + errorStringKey: parsingError?.stringKey ?? STRING_KEYS.SOMETHING_WENT_WRONG, + }) + ); + }); + + cancelOrderPayloads.forEach((payload: HumanReadableCancelOrderPayload) => { + dispatch( + cancelOrderFailed({ + orderId: payload.orderId, + errorStringKey: parsingError?.stringKey ?? STRING_KEYS.SOMETHING_WENT_WRONG, + }) + ); + }); + } + }; + + const triggerOrderParams = abacusStateManager.triggerOrders(callback); + + triggerOrderParams?.placeOrderPayloads + .toArray() + .forEach((payload: HumanReadablePlaceOrderPayload) => { + dispatch( + placeOrderSubmitted({ + marketId: payload.marketId, + clientId: payload.clientId, + orderType: payload.type as TradeTypes, + }) + ); + }); + + triggerOrderParams?.cancelOrderPayloads + .toArray() + .forEach((payload: HumanReadableCancelOrderPayload) => { + dispatch(cancelOrderSubmitted(payload.orderId)); + }); + + return triggerOrderParams; + }, + [subaccountClient] + ); + const { newMarketProposal } = useGovernanceVariables(); // ------ Governance Methods ------ // @@ -455,6 +567,7 @@ export const useSubaccountContext = ({ localDydxWallet }: { localDydxWallet?: Lo placeOrder, closePosition, cancelOrder, + placeTriggerOrders, // Governance Methods submitNewMarketProposal, diff --git a/src/hooks/useTablePagination.ts b/src/hooks/useTablePagination.ts new file mode 100644 index 000000000..eaf253af5 --- /dev/null +++ b/src/hooks/useTablePagination.ts @@ -0,0 +1,78 @@ +/** + * @description Hook to handle pagination on table views + */ +import { useEffect, useState } from 'react'; + +import { MenuItem } from '@/constants/menus'; + +import { PageSize } from '@/components/Table/TablePaginationRow'; + +const MAX_NUM_PAGE_BUTTONS = 7; +const PAGE_TOGGLE_PLACEHOLDER = '...'; + +export const useTablePagination = ({ + initialPageSize, + totalRows, +}: { + initialPageSize: PageSize; + totalRows: number; +}) => { + const [pageSize, setPageSize] = useState(initialPageSize); + const [currentPage, setCurrentPage] = useState(0); + const [pages, setPages] = useState<MenuItem<string>[]>([]); + + const pageNumberToDisplay = (pageNumber: number) => String(pageNumber + 1); + const pageNumberToMenuItem = (pageNumber: number) => ({ + value: pageNumberToDisplay(pageNumber), + label: pageNumberToDisplay(pageNumber), + }); + const placeholderPageItem = (key: string) => { + return { + value: key, + label: PAGE_TOGGLE_PLACEHOLDER, + disabled: true, + }; + }; + + useEffect(() => { + const lastPage = Math.max(1, Math.ceil(totalRows / pageSize)) - 1; + if (currentPage > lastPage) { + setCurrentPage(lastPage); + } + }, [pageSize]); + + useEffect(() => { + const totalPages = Math.max(1, Math.ceil(totalRows / pageSize)); + const lastPage = totalPages - 1; + + if (totalPages <= MAX_NUM_PAGE_BUTTONS) { + setPages( + [...Array(Math.min(MAX_NUM_PAGE_BUTTONS, totalPages)).keys()].map((i) => + pageNumberToMenuItem(i) + ) + ); + } else if (currentPage < 2 || lastPage - currentPage < 2) { + setPages([ + pageNumberToMenuItem(0), + pageNumberToMenuItem(1), + pageNumberToMenuItem(2), + placeholderPageItem('placeholder'), + pageNumberToMenuItem(lastPage - 2), + pageNumberToMenuItem(lastPage - 1), + pageNumberToMenuItem(lastPage), + ]); + } else { + setPages([ + pageNumberToMenuItem(0), + placeholderPageItem('placeholder1'), + pageNumberToMenuItem(currentPage - 1), + pageNumberToMenuItem(currentPage), + pageNumberToMenuItem(currentPage + 1), + placeholderPageItem('placeholder2'), + pageNumberToMenuItem(lastPage), + ]); + } + }, [pageSize, currentPage, totalRows]); + + return { currentPage, pageSize, pages, setPageSize, setCurrentPage }; +}; diff --git a/src/hooks/useTradeFormInputs.ts b/src/hooks/useTradeFormInputs.ts index fa36827c8..dd9ff6d0d 100644 --- a/src/hooks/useTradeFormInputs.ts +++ b/src/hooks/useTradeFormInputs.ts @@ -1,9 +1,11 @@ -import { getTradeFormInputs } from '@/state/inputsSelectors'; import { useEffect } from 'react'; + import { shallowEqual, useSelector } from 'react-redux'; import { TradeInputField } from '@/constants/abacus'; +import { getTradeFormInputs } from '@/state/inputsSelectors'; + import abacusStateManager from '@/lib/abacus'; export const useTradeFormInputs = () => { diff --git a/src/hooks/useTriggerOrdersFormInputs.ts b/src/hooks/useTriggerOrdersFormInputs.ts new file mode 100644 index 000000000..a0442a5be --- /dev/null +++ b/src/hooks/useTriggerOrdersFormInputs.ts @@ -0,0 +1,147 @@ +import { useEffect, useState } from 'react'; + +import { shallowEqual, useSelector } from 'react-redux'; + +import { AbacusOrderType, SubaccountOrder, TriggerOrdersInputField } from '@/constants/abacus'; + +import { getTriggerOrdersInputErrors } from '@/state/inputsSelectors'; + +import abacusStateManager from '@/lib/abacus'; +import { isTruthy } from '@/lib/isTruthy'; +import { MustBigNumber } from '@/lib/numbers'; +import { isLimitOrderType } from '@/lib/orders'; + +export const useTriggerOrdersFormInputs = ({ + marketId, + positionSize, + stopLossOrder, + takeProfitOrder, +}: { + marketId: string; + positionSize: number | null; + stopLossOrder?: SubaccountOrder; + takeProfitOrder?: SubaccountOrder; +}) => { + const inputErrors = useSelector(getTriggerOrdersInputErrors, shallowEqual); + + const [differingOrderSizes, setDifferingOrderSizes] = useState(false); + const [inputSize, setInputSize] = useState<number | null>(null); + + const setSize = (size: number | null) => { + const absSize = size ? Math.abs(size) : null; + abacusStateManager.setTriggerOrdersValue({ + field: TriggerOrdersInputField.size, + value: absSize != null ? MustBigNumber(absSize).toString() : null, + }); + setInputSize(absSize); + }; + + useEffect(() => { + // Initialize trigger order data on mount + if (stopLossOrder) { + [ + { + field: TriggerOrdersInputField.stopLossOrderId, + value: stopLossOrder.id, + }, + { + field: TriggerOrdersInputField.stopLossOrderSize, + value: stopLossOrder.size, + }, + { + field: TriggerOrdersInputField.stopLossPrice, + value: MustBigNumber(stopLossOrder.triggerPrice).toString(), + }, + isLimitOrderType(stopLossOrder.type) && { + field: TriggerOrdersInputField.stopLossLimitPrice, + value: MustBigNumber(stopLossOrder.price).toString(), + }, + { + field: TriggerOrdersInputField.stopLossOrderType, + value: stopLossOrder.type.rawValue, + }, + ] + .filter(isTruthy) + .map(({ field, value }) => abacusStateManager.setTriggerOrdersValue({ field, value })); + } else { + abacusStateManager.setTriggerOrdersValue({ + field: TriggerOrdersInputField.stopLossOrderType, + value: AbacusOrderType.stopMarket.rawValue, + }); + } + + if (takeProfitOrder) { + [ + { + field: TriggerOrdersInputField.takeProfitOrderId, + value: takeProfitOrder.id, + }, + { + field: TriggerOrdersInputField.takeProfitOrderSize, + value: takeProfitOrder.size, + }, + { + field: TriggerOrdersInputField.takeProfitPrice, + value: MustBigNumber(takeProfitOrder.triggerPrice).toString(), + }, + isLimitOrderType(takeProfitOrder.type) && { + field: TriggerOrdersInputField.takeProfitLimitPrice, + value: MustBigNumber(takeProfitOrder.price).toString(), + }, + { + field: TriggerOrdersInputField.takeProfitOrderType, + value: takeProfitOrder.type.rawValue, + }, + ] + .filter(isTruthy) + .map(({ field, value }) => abacusStateManager.setTriggerOrdersValue({ field, value })); + } else { + abacusStateManager.setTriggerOrdersValue({ + field: TriggerOrdersInputField.takeProfitOrderType, + value: AbacusOrderType.takeProfitMarket.rawValue, + }); + } + + if (stopLossOrder?.size && takeProfitOrder?.size) { + if (stopLossOrder?.size === takeProfitOrder?.size) { + setSize(stopLossOrder?.size); + } else { + setSize(null); + setDifferingOrderSizes(true); + } + } else if (stopLossOrder?.size) { + setSize(stopLossOrder?.size); + } else if (takeProfitOrder?.size) { + setSize(takeProfitOrder?.size); + } else { + // Default to full position size for initial order creation + setSize(positionSize); + } + + return () => { + abacusStateManager.resetInputState(); + }; + }, []); + + useEffect(() => { + abacusStateManager.setTriggerOrdersValue({ + field: TriggerOrdersInputField.marketId, + value: marketId, + }); + }, [marketId]); + + return { + inputErrors, + existingStopLossOrder: stopLossOrder, + existingTakeProfitOrder: takeProfitOrder, + // True if an SL + TP order exist, and if they are set on different order sizes + differingOrderSizes, + // Default input size to be shown on custom amount slider, null if different order sizes + inputSize, + // Boolean to signify whether the limit box should be checked on initial render of the triggers order form + existsLimitOrder: !!( + (stopLossOrder && isLimitOrderType(stopLossOrder.type)) || + (takeProfitOrder && isLimitOrderType(takeProfitOrder.type)) + ), + }; +}; diff --git a/src/hooks/useURLConfigs.ts b/src/hooks/useURLConfigs.ts index 882097322..112162df8 100644 --- a/src/hooks/useURLConfigs.ts +++ b/src/hooks/useURLConfigs.ts @@ -7,26 +7,31 @@ import { getSelectedDydxChainId } from '@/state/appSelectors'; const FALLBACK_URL = 'https://help.dydx.exchange/'; export interface LinksConfigs { - tos: string; - privacy: string; - statusPage: string; - mintscan: string; - mintscanBase: string; - feedback?: string; - help?: string; + accountExportLearnMore?: string; blogs?: string; - foundation?: string; - initialMarginFractionLearnMore?: string; - reduceOnlyLearnMore?: string; - documentation?: string; community?: string; + documentation?: string; + feedback?: string; + foundation?: string; governanceLearnMore?: string; + help?: string; + initialMarginFractionLearnMore?: string; + keplrDashboard?: string; + launchIncentive?: string; + mintscan: string; + mintscanBase: string; newMarketProposalLearnMore: string; + privacy: string; + reduceOnlyLearnMore?: string; + statusPage: string; stakingLearnMore?: string; - keplrDashboard?: string; strideZoneApp?: string; - accountExportLearnMore?: string; + tos: string; + tradingRewardsLearnMore?: string; walletLearnMore?: string; + withdrawalGateLearnMore?: string; + exchangeStats?: string; + complianceSupportEmail?: string; } export const useURLConfigs = (): LinksConfigs => { @@ -34,25 +39,30 @@ export const useURLConfigs = (): LinksConfigs => { const linksConfigs = LINKS_CONFIG_MAP[selectedDydxChainId] as LinksConfigs; return { - tos: linksConfigs.tos, - privacy: linksConfigs.privacy, - statusPage: linksConfigs.statusPage, + accountExportLearnMore: linksConfigs.accountExportLearnMore ?? FALLBACK_URL, + blogs: linksConfigs.blogs ?? FALLBACK_URL, + community: linksConfigs.community ?? FALLBACK_URL, + documentation: linksConfigs.documentation ?? FALLBACK_URL, + feedback: linksConfigs.feedback ?? FALLBACK_URL, + foundation: linksConfigs.foundation ?? FALLBACK_URL, + governanceLearnMore: linksConfigs.governanceLearnMore ?? FALLBACK_URL, + help: linksConfigs.help ?? FALLBACK_URL, + initialMarginFractionLearnMore: linksConfigs.initialMarginFractionLearnMore ?? FALLBACK_URL, + keplrDashboard: linksConfigs.keplrDashboard ?? FALLBACK_URL, + launchIncentive: linksConfigs.launchIncentive ?? FALLBACK_URL, mintscan: linksConfigs.mintscan, mintscanBase: linksConfigs.mintscanBase, - feedback: linksConfigs.feedback || FALLBACK_URL, - help: linksConfigs.help || FALLBACK_URL, - blogs: linksConfigs.blogs || FALLBACK_URL, - foundation: linksConfigs.foundation || FALLBACK_URL, - initialMarginFractionLearnMore: linksConfigs.initialMarginFractionLearnMore || FALLBACK_URL, - reduceOnlyLearnMore: linksConfigs.reduceOnlyLearnMore || FALLBACK_URL, - documentation: linksConfigs.documentation || FALLBACK_URL, - community: linksConfigs.community || FALLBACK_URL, - governanceLearnMore: linksConfigs.governanceLearnMore || FALLBACK_URL, - newMarketProposalLearnMore: linksConfigs.newMarketProposalLearnMore || FALLBACK_URL, - stakingLearnMore: linksConfigs.stakingLearnMore || FALLBACK_URL, - keplrDashboard: linksConfigs.keplrDashboard || FALLBACK_URL, - strideZoneApp: linksConfigs.strideZoneApp || FALLBACK_URL, - accountExportLearnMore: linksConfigs.accountExportLearnMore || FALLBACK_URL, - walletLearnMore: linksConfigs.walletLearnMore || FALLBACK_URL, + newMarketProposalLearnMore: linksConfigs.newMarketProposalLearnMore ?? FALLBACK_URL, + privacy: linksConfigs.privacy, + reduceOnlyLearnMore: linksConfigs.reduceOnlyLearnMore ?? FALLBACK_URL, + statusPage: linksConfigs.statusPage, + stakingLearnMore: linksConfigs.stakingLearnMore ?? FALLBACK_URL, + strideZoneApp: linksConfigs.strideZoneApp ?? FALLBACK_URL, + tos: linksConfigs.tos, + tradingRewardsLearnMore: linksConfigs.tradingRewardsLearnMore ?? FALLBACK_URL, + walletLearnMore: linksConfigs.walletLearnMore ?? FALLBACK_URL, + withdrawalGateLearnMore: linksConfigs.withdrawalGateLearnMore ?? FALLBACK_URL, + exchangeStats: linksConfigs.exchangeStats ?? FALLBACK_URL, + complianceSupportEmail: linksConfigs.complianceSupportEmail ?? FALLBACK_URL, }; }; diff --git a/src/hooks/useWalletConnection.ts b/src/hooks/useWalletConnection.ts index 39b88879e..5c7d989f0 100644 --- a/src/hooks/useWalletConnection.ts +++ b/src/hooks/useWalletConnection.ts @@ -1,45 +1,45 @@ -import { useCallback, useEffect, useState, useMemo } from 'react'; +import { useCallback, useEffect, useMemo, useState } from 'react'; + +import { useLogin, useLogout, usePrivy } from '@privy-io/react-auth'; +import { + WalletType as CosmosWalletType, + useAccount as useAccountGraz, + useSuggestChainAndConnect as useConnectGraz, + useDisconnect as useDisconnectGraz, + useOfflineSigners as useOfflineSignersGraz, +} from 'graz'; import { useSelector } from 'react-redux'; +import { + useAccount as useAccountWagmi, + useConnect as useConnectWagmi, + useDisconnect as useDisconnectWagmi, + usePublicClient as usePublicClientWagmi, + useWalletClient as useWalletClientWagmi, +} from 'wagmi'; import { EvmDerivedAddresses } from '@/constants/account'; -import { STRING_KEYS } from '@/constants/localization'; import { LocalStorageKey } from '@/constants/localStorage'; -import { ENVIRONMENT_CONFIG_MAP, WALLETS_CONFIG_MAP } from '@/constants/networks'; - +import { STRING_KEYS } from '@/constants/localization'; +import { WALLETS_CONFIG_MAP } from '@/constants/networks'; import { - type DydxAddress, - type EvmAddress, + DYDX_CHAIN_INFO, WalletConnectionType, WalletType, wallets, - DYDX_CHAIN_INFO, + type DydxAddress, + type EvmAddress, } from '@/constants/wallets'; import { useLocalStorage } from '@/hooks/useLocalStorage'; -import { - useConnect as useConnectWagmi, - useAccount as useAccountWagmi, - useDisconnect as useDisconnectWagmi, - usePublicClient as usePublicClientWagmi, - useWalletClient as useWalletClientWagmi, -} from 'wagmi'; -import { - useSuggestChainAndConnect as useConnectGraz, - useAccount as useAccountGraz, - useDisconnect as useDisconnectGraz, - useOfflineSigners as useOfflineSignersGraz, - WalletType as CosmosWalletType, -} from 'graz'; - import { getSelectedDydxChainId } from '@/state/appSelectors'; +import { log } from '@/lib/telemetry'; +import { testFlags } from '@/lib/testFlags'; import { resolveWagmiConnector } from '@/lib/wagmi'; import { getWalletConnection, parseWalletError } from '@/lib/wallet'; -import { log } from '@/lib/telemetry'; import { useStringGetter } from './useStringGetter'; -import { testFlags } from '@/lib/testFlags'; export const useWalletConnection = () => { const stringGetter = useStringGetter(); @@ -113,10 +113,20 @@ export const useWalletConnection = () => { key: LocalStorageKey.EvmDerivedAddresses, defaultValue: {} as EvmDerivedAddresses, }); + const { ready, authenticated } = usePrivy(); + const { login } = useLogin({ + onError: (error) => { + if (error !== 'exited_auth_flow') { + log('useWalletConnection/privy/useLogin', new Error(`Privy: ${error}`)); + setSelectedWalletError('Privy login failed'); + } + }, + }); + const { logout } = useLogout(); const connectWallet = useCallback( async ({ - walletType, + walletType: wType, forceConnect, isAccountConnected, }: { @@ -124,22 +134,24 @@ export const useWalletConnection = () => { forceConnect?: boolean; isAccountConnected?: boolean; }) => { - if (!walletType) return { walletType, walletConnectionType }; + if (!wType) return { walletType: wType, walletConnectionType }; - const walletConnection = getWalletConnection({ walletType }); + const walletConnection = getWalletConnection({ walletType: wType }); try { if (!walletConnection) { throw new Error('Onboarding: No wallet connection found.'); + } else if (walletConnection.type === WalletConnectionType.Privy) { + if (!isConnectedWagmi && ready && !authenticated) { + login(); + } } else if (walletConnection.type === WalletConnectionType.CosmosSigner) { const cosmosWalletType = { [WalletType.Keplr as string]: CosmosWalletType.KEPLR, - }[walletType]; + }[wType]; if (!cosmosWalletType) { - throw new Error( - `${stringGetter({ key: wallets[walletType].stringKey })} was not found.` - ); + throw new Error(`${stringGetter({ key: wallets[wType].stringKey })} was not found.`); } if (!isConnectedGraz) { @@ -155,7 +167,7 @@ export const useWalletConnection = () => { if (!isConnectedWagmi && (forceConnect || !isAccountConnected)) { await connectWagmi({ connector: resolveWagmiConnector({ - walletType, + walletType: wType, walletConnection, walletConnectConfig, }), @@ -175,11 +187,11 @@ export const useWalletConnection = () => { } return { - walletType, + walletType: wType, walletConnectionType: walletConnection?.type, }; }, - [isConnectedGraz, signerGraz, isConnectedWagmi, signerWagmi] + [isConnectedGraz, signerGraz, isConnectedWagmi, signerWagmi, ready, authenticated, login] ); const disconnectWallet = useCallback(async () => { @@ -188,28 +200,37 @@ export const useWalletConnection = () => { if (isConnectedWagmi) await disconnectWagmi(); if (isConnectedGraz) await disconnectGraz(); - }, [isConnectedGraz, isConnectedWagmi]); + if (authenticated) await logout(); + }, [isConnectedGraz, isConnectedWagmi, authenticated, logout]); // Wallet selection const [selectedWalletType, setSelectedWalletType] = useState<WalletType | undefined>(walletType); const [selectedWalletError, setSelectedWalletError] = useState<string>(); + async function disconnectSelectedWallet() { + setSelectedWalletType(undefined); + setWalletType(undefined); + setWalletConnectionType(undefined); + + await disconnectWallet(); + } + useEffect(() => { (async () => { setSelectedWalletError(undefined); if (selectedWalletType) { try { - const { walletType, walletConnectionType } = await connectWallet({ + const { walletType: wType, walletConnectionType: wConnectionType } = await connectWallet({ walletType: selectedWalletType, isAccountConnected: Boolean( evmAddress && evmDerivedAddresses[evmAddress]?.encryptedSignature ), }); - setWalletType(walletType); - setWalletConnectionType(walletConnectionType); + setWalletType(wType); + setWalletConnectionType(wConnectionType); } catch (error) { const { walletErrorType, message } = parseWalletError({ error, @@ -222,21 +243,18 @@ export const useWalletConnection = () => { } } } else { - setWalletType(undefined); - setWalletConnectionType(undefined); - - await disconnectWallet(); + await disconnectSelectedWallet(); } })(); }, [selectedWalletType, signerWagmi, signerGraz, evmDerivedAddresses, evmAddress]); - const selectWalletType = async (walletType: WalletType | undefined) => { + const selectWalletType = async (wType: WalletType | undefined) => { if (selectedWalletType) { setSelectedWalletType(undefined); await new Promise(requestAnimationFrame); } - setSelectedWalletType(walletType); + setSelectedWalletType(wType); }; // On page load, if testFlag.address is set, connect to the test wallet. diff --git a/src/hooks/useWithdrawalInfo.ts b/src/hooks/useWithdrawalInfo.ts new file mode 100644 index 000000000..b09f95828 --- /dev/null +++ b/src/hooks/useWithdrawalInfo.ts @@ -0,0 +1,134 @@ +import { useEffect, useMemo } from 'react'; + +import { encodeJson } from '@dydxprotocol/v4-client-js'; +import { ByteArrayEncoding } from '@dydxprotocol/v4-client-js/build/src/lib/helpers'; +import BigNumber from 'bignumber.js'; +import { useQuery } from 'react-query'; +import { shallowEqual, useDispatch, useSelector } from 'react-redux'; + +import { DialogTypes } from '@/constants/dialogs'; +import { isMainnet } from '@/constants/networks'; + +import { getApiState } from '@/state/appSelectors'; +import { closeDialog, openDialog } from '@/state/dialogs'; +import { getSelectedLocale } from '@/state/localizationSelectors'; + +import { formatRelativeTime } from '@/lib/dateTime'; +import { BIG_NUMBERS, MustBigNumber } from '@/lib/numbers'; +import { log } from '@/lib/telemetry'; + +import { useDydxClient } from './useDydxClient'; +import { useEnvFeatures } from './useEnvFeatures'; +import { useTokenConfigs } from './useTokenConfigs'; + +const BLOCK_TIME = isMainnet ? 1_000 : 1_500; + +export const useWithdrawalInfo = ({ + transferType, +}: { + transferType: 'withdrawal' | 'transfer'; +}) => { + const { getWithdrawalAndTransferGatingStatus, getWithdrawalCapacityByDenom } = useDydxClient(); + const { usdcDenom, usdcDecimals } = useTokenConfigs(); + const apiState = useSelector(getApiState, shallowEqual); + const { height } = apiState ?? {}; + const selectedLocale = useSelector(getSelectedLocale); + const dispatch = useDispatch(); + const { withdrawalSafetyEnabled } = useEnvFeatures(); + + const { data: usdcWithdrawalCapacity } = useQuery({ + enabled: withdrawalSafetyEnabled, + queryKey: 'usdcWithdrawalCapacity', + queryFn: async () => { + try { + const response = await getWithdrawalCapacityByDenom({ denom: usdcDenom }); + return JSON.parse(encodeJson(response, ByteArrayEncoding.BIGINT)); + } catch (error) { + log('useWithdrawalInfo/getWithdrawalCapacityByDenom', error); + return undefined; + } + }, + refetchInterval: 60_000, + staleTime: 60_000, + }); + + const { data: withdrawalAndTransferGatingStatus } = useQuery({ + enabled: withdrawalSafetyEnabled, + queryKey: 'withdrawalTransferGateStatus', + queryFn: async () => { + try { + return await getWithdrawalAndTransferGatingStatus(); + } catch (error) { + log('useWithdrawalInfo/getWithdrawalAndTransferGatingStatus', error); + return undefined; + } + }, + refetchInterval: 60_000, + staleTime: 60_000, + }); + + const capacity = useMemo(() => { + const capacityList = usdcWithdrawalCapacity?.limiterCapacityList; + if (!capacityList || capacityList.length < 2) { + if (!withdrawalSafetyEnabled) { + return BigNumber(Infinity); + } + + return BIG_NUMBERS.ZERO; + } + + const [{ capacity: daily }, { capacity: weekly }] = capacityList; + const dailyBN = MustBigNumber(daily); + const weeklyBN = MustBigNumber(weekly); + return BigNumber.minimum(dailyBN, weeklyBN).div(10 ** usdcDecimals); + }, [usdcDecimals, usdcWithdrawalCapacity]); + + const withdrawalAndTransferGatingStatusValue = useMemo(() => { + const { withdrawalsAndTransfersUnblockedAtBlock } = withdrawalAndTransferGatingStatus ?? {}; + if ( + height && + withdrawalsAndTransfersUnblockedAtBlock && + height < withdrawalsAndTransfersUnblockedAtBlock && + withdrawalSafetyEnabled + ) { + return { + estimatedUnblockTime: formatRelativeTime( + Date.now() + (withdrawalsAndTransfersUnblockedAtBlock - height) * BLOCK_TIME, + { + locale: selectedLocale, + largestUnit: 'day', + } + ), + isGated: true, + }; + } + return { + estimatedUnblockTime: null, + isGated: false, + }; + }, [height, withdrawalAndTransferGatingStatus, withdrawalSafetyEnabled]); + + useEffect(() => { + if ( + withdrawalAndTransferGatingStatusValue.isGated && + withdrawalAndTransferGatingStatusValue.estimatedUnblockTime && + withdrawalSafetyEnabled + ) { + dispatch(closeDialog()); + dispatch( + openDialog({ + type: DialogTypes.WithdrawalGated, + dialogProps: { + transferType, + estimatedUnblockTime: withdrawalAndTransferGatingStatusValue.estimatedUnblockTime, + }, + }) + ); + } + }, [transferType, withdrawalAndTransferGatingStatusValue.isGated, withdrawalSafetyEnabled]); + + return { + usdcWithdrawalCapacity: capacity, + withdrawalAndTransferGatingStatus, + }; +}; diff --git a/src/icons/arrow.svg b/src/icons/arrow.svg index 2400364a7..34393884c 100644 --- a/src/icons/arrow.svg +++ b/src/icons/arrow.svg @@ -1,3 +1,3 @@ -<svg width="7" height="6" viewBox="0 0 7 6" fill="none" xmlns="http://www.w3.org/2000/svg"> -<path fill-rule="evenodd" clip-rule="evenodd" d="M0 3C0 2.85139 0.0553149 2.70887 0.153776 2.60379C0.252238 2.49871 0.38578 2.43967 0.525025 2.43967H5.17185L3.66118 0.97535C3.60913 0.924968 3.56709 0.86395 3.53755 0.79591C3.50801 0.727871 3.49156 0.654195 3.48919 0.579249C3.48682 0.504302 3.49857 0.42961 3.52374 0.359597C3.54891 0.289585 3.58699 0.225677 3.63573 0.171661C3.68447 0.117645 3.74287 0.0746188 3.80748 0.045133C3.87208 0.0156471 3.94158 0.00030107 4.01184 4.38578e-06C4.08211 -0.000292298 4.15171 0.0144662 4.21653 0.0434055C4.28135 0.0723449 4.34007 0.114876 4.38921 0.168479L6.83933 2.59656C6.89014 2.64883 6.93056 2.7115 6.95817 2.78082C6.98577 2.85013 7 2.92468 7 3C7 3.07532 6.98577 3.14986 6.95817 3.21918C6.93056 3.2885 6.89014 3.35117 6.83933 3.40343L4.38921 5.83152C4.34007 5.88512 4.28135 5.92765 4.21653 5.95659C4.15171 5.98553 4.08211 6.00029 4.01184 6C3.94158 5.9997 3.87208 5.98435 3.80748 5.95487C3.74287 5.92538 3.68447 5.88235 3.63573 5.82834C3.58699 5.77432 3.54891 5.71041 3.52374 5.6404C3.49857 5.57039 3.48682 5.4957 3.48919 5.42075C3.49156 5.3458 3.50801 5.27213 3.53755 5.20409C3.56709 5.13605 3.60913 5.07503 3.66118 5.02465L5.17185 3.56033H0.525025C0.38578 3.56033 0.252238 3.50129 0.153776 3.39621C0.0553149 3.29113 0 3.14861 0 3Z" fill="currentColor"/> -</svg> \ No newline at end of file +<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="3" stroke="currentColor" class="w-6 h-6"> + <path stroke-linecap="round" stroke-linejoin="round" d="M13.5 4.5 21 12m0 0-7.5 7.5M21 12H3" /> +</svg> diff --git a/src/icons/download.svg b/src/icons/download.svg new file mode 100644 index 000000000..94c1363be --- /dev/null +++ b/src/icons/download.svg @@ -0,0 +1,5 @@ +<svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M15 13V16H3V13" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> +<path d="M5.25 7.5L9 11.25L12.75 7.5" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> +<path d="M9 11.25V2.25" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> +</svg> diff --git a/src/icons/index.ts b/src/icons/index.ts index af109cb9d..5cbe5862d 100644 --- a/src/icons/index.ts +++ b/src/icons/index.ts @@ -68,6 +68,7 @@ export { default as TriangleIcon } from './triangle.svg'; export { default as TryAgainIcon } from './try-again.svg'; export { default as WarningIcon } from './warning.svg'; export { default as WithdrawIcon } from './withdraw.svg'; +export { default as DownloadIcon } from './download.svg'; // Wallets export { default as BitkeepIcon } from './wallets/bitkeep.svg'; @@ -91,6 +92,11 @@ export { default as TrustWalletIcon } from './wallets/trust-wallet.svg'; export { default as WalletConnectIcon } from './wallets/walletconnect.svg'; export { default as WebsiteIcon } from './website.svg'; export { default as WhitepaperIcon } from './whitepaper.svg'; +export { default as Discord2Icon } from './wallets/discord.svg'; +export { default as TwitterIcon } from './wallets/twitter.svg'; +export { default as GoogleIcon } from './wallets/google.svg'; +export { default as AppleIcon } from './wallets/apple.svg'; +export { default as EmailIcon } from './wallets/email.svg'; // Logos export { default as ChaosLabsIcon } from './chaos-labs'; @@ -104,3 +110,5 @@ export { default as OrderOpenIcon } from './trade/order-open.svg'; export { default as OrderPartiallyFilledIcon } from './trade/order-partially-filled.svg'; export { default as OrderPendingIcon } from './trade/order-pending.svg'; export { default as OrderUntriggeredIcon } from './trade/order-untriggered.svg'; + +export { default as PositionPartialIcon } from './trade/position-partial.svg'; diff --git a/src/icons/trade/position-partial.svg b/src/icons/trade/position-partial.svg new file mode 100644 index 000000000..48e64e115 --- /dev/null +++ b/src/icons/trade/position-partial.svg @@ -0,0 +1,4 @@ +<svg width="13" height="12" viewBox="0 0 13 12" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M12.5004 6C12.5004 9.31371 9.81411 12 6.5004 12C6.5004 12 6.50024 9.31371 6.50024 6C6.50024 2.68629 6.5004 0 6.5004 0C9.81411 0 12.5004 2.68629 12.5004 6Z" fill="currentColor"/> +<path d="M6.5001 11.5C3.46253 11.5 1.0001 9.03757 1.0001 6C1.0001 2.96243 3.46253 0.5 6.5001 0.5" stroke="currentColor"/> +</svg> diff --git a/src/icons/wallets/apple.svg b/src/icons/wallets/apple.svg new file mode 100644 index 000000000..14e474dfd --- /dev/null +++ b/src/icons/wallets/apple.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="2036" height="2500" viewBox="0 0 456.008 560.035"><path d="M380.844 297.529c.787 84.752 74.349 112.955 75.164 113.314-.622 1.988-11.754 40.191-38.756 79.652-23.343 34.117-47.568 68.107-85.731 68.811-37.499.691-49.557-22.236-92.429-22.236-42.859 0-56.256 21.533-91.753 22.928-36.837 1.395-64.889-36.891-88.424-70.883-48.093-69.53-84.846-196.475-35.496-282.165 24.516-42.554 68.328-69.501 115.882-70.192 36.173-.69 70.315 24.336 92.429 24.336 22.1 0 63.59-30.096 107.208-25.676 18.26.76 69.517 7.376 102.429 55.552-2.652 1.644-61.159 35.704-60.523 106.559M310.369 89.418C329.926 65.745 343.089 32.79 339.498 0 311.308 1.133 277.22 18.785 257 42.445c-18.121 20.952-33.991 54.487-29.709 86.628 31.421 2.431 63.52-15.967 83.078-39.655"/></svg> diff --git a/src/icons/wallets/discord.svg b/src/icons/wallets/discord.svg new file mode 100644 index 000000000..c03e8e127 --- /dev/null +++ b/src/icons/wallets/discord.svg @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools --> +<svg width="800px" height="800px" viewBox="0 -28.5 256 256" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" preserveAspectRatio="xMidYMid"> + <g> + <path d="M216.856339,16.5966031 C200.285002,8.84328665 182.566144,3.2084988 164.041564,0 C161.766523,4.11318106 159.108624,9.64549908 157.276099,14.0464379 C137.583995,11.0849896 118.072967,11.0849896 98.7430163,14.0464379 C96.9108417,9.64549908 94.1925838,4.11318106 91.8971895,0 C73.3526068,3.2084988 55.6133949,8.86399117 39.0420583,16.6376612 C5.61752293,67.146514 -3.4433191,116.400813 1.08711069,164.955721 C23.2560196,181.510915 44.7403634,191.567697 65.8621325,198.148576 C71.0772151,190.971126 75.7283628,183.341335 79.7352139,175.300261 C72.104019,172.400575 64.7949724,168.822202 57.8887866,164.667963 C59.7209612,163.310589 61.5131304,161.891452 63.2445898,160.431257 C105.36741,180.133187 151.134928,180.133187 192.754523,160.431257 C194.506336,161.891452 196.298154,163.310589 198.110326,164.667963 C191.183787,168.842556 183.854737,172.420929 176.223542,175.320965 C180.230393,183.341335 184.861538,190.991831 190.096624,198.16893 C211.238746,191.588051 232.743023,181.531619 254.911949,164.955721 C260.227747,108.668201 245.831087,59.8662432 216.856339,16.5966031 Z M85.4738752,135.09489 C72.8290281,135.09489 62.4592217,123.290155 62.4592217,108.914901 C62.4592217,94.5396472 72.607595,82.7145587 85.4738752,82.7145587 C98.3405064,82.7145587 108.709962,94.5189427 108.488529,108.914901 C108.508531,123.290155 98.3405064,135.09489 85.4738752,135.09489 Z M170.525237,135.09489 C157.88039,135.09489 147.510584,123.290155 147.510584,108.914901 C147.510584,94.5396472 157.658606,82.7145587 170.525237,82.7145587 C183.391518,82.7145587 193.761324,94.5189427 193.539891,108.914901 C193.539891,123.290155 183.391518,135.09489 170.525237,135.09489 Z" fill="#5865F2" fill-rule="nonzero"> + </path> + </g> +</svg> \ No newline at end of file diff --git a/src/icons/wallets/email.svg b/src/icons/wallets/email.svg new file mode 100644 index 000000000..f47945d4a --- /dev/null +++ b/src/icons/wallets/email.svg @@ -0,0 +1,4 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" class="w-6 h-6"> + <path d="M1.5 8.67v8.58a3 3 0 0 0 3 3h15a3 3 0 0 0 3-3V8.67l-8.928 5.493a3 3 0 0 1-3.144 0L1.5 8.67Z" /> + <path d="M22.5 6.908V6.75a3 3 0 0 0-3-3h-15a3 3 0 0 0-3 3v.158l9.714 5.978a1.5 1.5 0 0 0 1.572 0L22.5 6.908Z" /> +</svg> diff --git a/src/icons/wallets/google.svg b/src/icons/wallets/google.svg new file mode 100644 index 000000000..088288fa3 --- /dev/null +++ b/src/icons/wallets/google.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 0 24 24" width="24"><path d="M22.56 12.25c0-.78-.07-1.53-.2-2.25H12v4.26h5.92c-.26 1.37-1.04 2.53-2.21 3.31v2.77h3.57c2.08-1.92 3.28-4.74 3.28-8.09z" fill="#4285F4"/><path d="M12 23c2.97 0 5.46-.98 7.28-2.66l-3.57-2.77c-.98.66-2.23 1.06-3.71 1.06-2.86 0-5.29-1.93-6.16-4.53H2.18v2.84C3.99 20.53 7.7 23 12 23z" fill="#34A853"/><path d="M5.84 14.09c-.22-.66-.35-1.36-.35-2.09s.13-1.43.35-2.09V7.07H2.18C1.43 8.55 1 10.22 1 12s.43 3.45 1.18 4.93l2.85-2.22.81-.62z" fill="#FBBC05"/><path d="M12 5.38c1.62 0 3.06.56 4.21 1.64l3.15-3.15C17.45 2.09 14.97 1 12 1 7.7 1 3.99 3.47 2.18 7.07l3.66 2.84c.87-2.6 3.3-4.53 6.16-4.53z" fill="#EA4335"/><path d="M1 1h22v22H1z" fill="none"/></svg> \ No newline at end of file diff --git a/src/icons/wallets/twitter.svg b/src/icons/wallets/twitter.svg new file mode 100644 index 000000000..1aa490261 --- /dev/null +++ b/src/icons/wallets/twitter.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="1483" height="1483" viewBox="0 0 1483 1483" version="1.1"><path d="M 304.292 302.750 C 307.279 307.012, 376.455 407.700, 458.017 526.500 C 539.579 645.300, 615.016 755.165, 625.656 770.645 C 636.295 786.125, 645 799.101, 645 799.481 C 645 799.861, 641.038 804.746, 636.196 810.336 C 631.354 815.926, 617.715 831.750, 605.889 845.500 C 594.062 859.250, 574.125 882.425, 561.584 897 C 549.044 911.575, 526.982 937.225, 512.557 954 C 498.133 970.775, 472.194 1000.934, 454.915 1021.020 C 401.474 1083.146, 393.762 1092.119, 353.081 1139.500 C 331.359 1164.800, 310.529 1188.990, 306.793 1193.256 C 303.057 1197.522, 300 1201.460, 300 1202.006 C 300 1202.647, 313.644 1203, 338.441 1203 L 376.881 1203 419.142 1153.750 C 442.386 1126.662, 465.315 1100, 470.095 1094.500 C 480.432 1082.608, 559.262 990.885, 565.888 983.040 C 568.425 980.037, 572.110 975.762, 574.077 973.540 C 576.045 971.318, 591.554 953.300, 608.542 933.500 C 625.529 913.700, 639.895 897.015, 640.464 896.422 C 641.034 895.830, 650.027 885.367, 660.449 873.172 C 670.871 860.978, 679.720 851, 680.113 851 C 680.507 851, 734.043 928.513, 799.084 1023.250 C 864.124 1117.987, 918.500 1197.178, 919.920 1199.229 L 922.500 1202.957 1054.357 1202.979 C 1162.791 1202.996, 1186.125 1202.767, 1185.710 1201.687 C 1185.270 1200.539, 1122.096 1108.393, 960.025 872.500 C 843.352 702.684, 827.838 679.864, 828.283 678.706 C 828.715 677.580, 844.607 658.993, 949.085 537.417 C 967.007 516.563, 991.712 487.800, 1003.985 473.500 C 1016.258 459.200, 1028.650 444.800, 1031.522 441.500 C 1034.394 438.200, 1049.496 420.650, 1065.082 402.500 C 1080.667 384.350, 1107.162 353.510, 1123.960 333.967 C 1140.757 314.424, 1155.118 297.662, 1155.872 296.717 C 1157.165 295.100, 1154.969 295, 1118.199 295 L 1079.154 295 1061.788 315.250 C 1038.675 342.200, 996.894 390.799, 985.030 404.532 C 979.789 410.600, 973.250 418.226, 970.500 421.478 C 967.750 424.730, 962.324 431.015, 958.443 435.445 C 954.562 439.875, 935.003 462.625, 914.978 486 C 894.954 509.375, 878.296 528.725, 877.960 529 C 877.625 529.275, 873.334 534.252, 868.425 540.061 C 859.839 550.221, 851.101 560.391, 811.027 606.865 C 793.437 627.265, 792.535 628.141, 791.052 626.266 C 790.199 625.186, 738.650 550.213, 676.500 459.661 L 563.500 295.021 431.181 295.010 L 298.862 295 304.292 302.750 M 407.565 356.742 C 408.559 358.259, 433.281 393.700, 462.504 435.500 C 517.927 514.776, 735.717 826.486, 875.781 1027 C 920.539 1091.075, 957.705 1144.066, 958.373 1144.758 C 959.327 1145.747, 972.359 1145.961, 1019.267 1145.758 L 1078.947 1145.500 922.776 922 C 836.881 799.075, 712.520 621.100, 646.418 526.500 L 526.232 354.500 465.996 354.242 L 405.760 353.984 407.565 356.742" stroke="none" fill="#fafafa" fill-rule="evenodd"/><path d="M 0 741.501 L 0 1483.001 741.750 1482.751 L 1483.500 1482.500 1483.751 741.250 L 1484.001 0 742.001 0 L 0 0 0 741.501 M 0.497 742 C 0.497 1149.825, 0.611 1316.662, 0.750 1112.750 C 0.889 908.837, 0.889 575.162, 0.750 371.250 C 0.611 167.337, 0.497 334.175, 0.497 742 M 304.292 302.750 C 307.279 307.012, 376.455 407.700, 458.017 526.500 C 539.579 645.300, 615.016 755.165, 625.656 770.645 C 636.295 786.125, 645 799.101, 645 799.481 C 645 799.861, 641.038 804.746, 636.196 810.336 C 631.354 815.926, 617.715 831.750, 605.889 845.500 C 594.062 859.250, 574.125 882.425, 561.584 897 C 549.044 911.575, 526.982 937.225, 512.557 954 C 498.133 970.775, 472.194 1000.934, 454.915 1021.020 C 401.474 1083.146, 393.762 1092.119, 353.081 1139.500 C 331.359 1164.800, 310.529 1188.990, 306.793 1193.256 C 303.057 1197.522, 300 1201.460, 300 1202.006 C 300 1202.647, 313.644 1203, 338.441 1203 L 376.881 1203 419.142 1153.750 C 442.386 1126.662, 465.315 1100, 470.095 1094.500 C 480.432 1082.608, 559.262 990.885, 565.888 983.040 C 568.425 980.037, 572.110 975.762, 574.077 973.540 C 576.045 971.318, 591.554 953.300, 608.542 933.500 C 625.529 913.700, 639.895 897.015, 640.464 896.422 C 641.034 895.830, 650.027 885.367, 660.449 873.172 C 670.871 860.978, 679.720 851, 680.113 851 C 680.507 851, 734.043 928.513, 799.084 1023.250 C 864.124 1117.987, 918.500 1197.178, 919.920 1199.229 L 922.500 1202.957 1054.357 1202.979 C 1162.791 1202.996, 1186.125 1202.767, 1185.710 1201.687 C 1185.270 1200.539, 1122.096 1108.393, 960.025 872.500 C 843.352 702.684, 827.838 679.864, 828.283 678.706 C 828.715 677.580, 844.607 658.993, 949.085 537.417 C 967.007 516.563, 991.712 487.800, 1003.985 473.500 C 1016.258 459.200, 1028.650 444.800, 1031.522 441.500 C 1034.394 438.200, 1049.496 420.650, 1065.082 402.500 C 1080.667 384.350, 1107.162 353.510, 1123.960 333.967 C 1140.757 314.424, 1155.118 297.662, 1155.872 296.717 C 1157.165 295.100, 1154.969 295, 1118.199 295 L 1079.154 295 1061.788 315.250 C 1038.675 342.200, 996.894 390.799, 985.030 404.532 C 979.789 410.600, 973.250 418.226, 970.500 421.478 C 967.750 424.730, 962.324 431.015, 958.443 435.445 C 954.562 439.875, 935.003 462.625, 914.978 486 C 894.954 509.375, 878.296 528.725, 877.960 529 C 877.625 529.275, 873.334 534.252, 868.425 540.061 C 859.839 550.221, 851.101 560.391, 811.027 606.865 C 793.437 627.265, 792.535 628.141, 791.052 626.266 C 790.199 625.186, 738.650 550.213, 676.500 459.661 L 563.500 295.021 431.181 295.010 L 298.862 295 304.292 302.750 M 407.565 356.742 C 408.559 358.259, 433.281 393.700, 462.504 435.500 C 517.927 514.776, 735.717 826.486, 875.781 1027 C 920.539 1091.075, 957.705 1144.066, 958.373 1144.758 C 959.327 1145.747, 972.359 1145.961, 1019.267 1145.758 L 1078.947 1145.500 922.776 922 C 836.881 799.075, 712.520 621.100, 646.418 526.500 L 526.232 354.500 465.996 354.242 L 405.760 353.984 407.565 356.742" stroke="none" fill="#040404" fill-rule="evenodd"/></svg> \ No newline at end of file diff --git a/src/layout/DialogManager.tsx b/src/layout/DialogManager.tsx index cef213ec2..c856a14a6 100644 --- a/src/layout/DialogManager.tsx +++ b/src/layout/DialogManager.tsx @@ -2,36 +2,41 @@ import { useDispatch, useSelector } from 'react-redux'; import { DialogTypes } from '@/constants/dialogs'; -import { closeDialog, openDialog } from '@/state/dialogs'; - -import { getActiveDialog } from '@/state/dialogsSelectors'; - +import { AdjustIsolatedMarginDialog } from '@/views/dialogs/AdjustIsolatedMarginDialog'; +import { AdjustTargetLeverageDialog } from '@/views/dialogs/AdjustTargetLeverageDialog'; import { ClosePositionDialog } from '@/views/dialogs/ClosePositionDialog'; +import { ComplianceConfigDialog } from '@/views/dialogs/ComplianceConfigDialog'; import { DepositDialog } from '@/views/dialogs/DepositDialog'; +import { FillDetailsDialog } from '@/views/dialogs/DetailsDialog/FillDetailsDialog'; +import { OrderDetailsDialog } from '@/views/dialogs/DetailsDialog/OrderDetailsDialog'; import { DisconnectDialog } from '@/views/dialogs/DisconnectDialog'; import { DisplaySettingsDialog } from '@/views/dialogs/DisplaySettingsDialog'; import { ExchangeOfflineDialog } from '@/views/dialogs/ExchangeOfflineDialog'; -import { HelpDialog } from '@/views/dialogs/HelpDialog'; import { ExternalLinkDialog } from '@/views/dialogs/ExternalLinkDialog'; import { ExternalNavKeplrDialog } from '@/views/dialogs/ExternalNavKeplrDialog'; +import { ExternalNavStrideDialog } from '@/views/dialogs/ExternalNavStrideDialog'; +import { GeoComplianceDialog } from '@/views/dialogs/GeoComplianceDialog'; +import { HelpDialog } from '@/views/dialogs/HelpDialog'; +import { ManageFundsDialog } from '@/views/dialogs/ManageFundsDialog'; import { MnemonicExportDialog } from '@/views/dialogs/MnemonicExportDialog'; +import { MobileDownloadDialog } from '@/views/dialogs/MobileDownloadDialog'; import { MobileSignInDialog } from '@/views/dialogs/MobileSignInDialog'; +import { NewMarketAgreementDialog } from '@/views/dialogs/NewMarketAgreementDialog'; +import { NewMarketMessageDetailsDialog } from '@/views/dialogs/NewMarketMessageDetailsDialog'; import { OnboardingDialog } from '@/views/dialogs/OnboardingDialog'; import { PreferencesDialog } from '@/views/dialogs/PreferencesDialog'; import { RateLimitDialog } from '@/views/dialogs/RateLimitDialog'; import { RestrictedGeoDialog } from '@/views/dialogs/RestrictedGeoDialog'; +import { RestrictedWalletDialog } from '@/views/dialogs/RestrictedWalletDialog'; +import { SelectMarginModeDialog } from '@/views/dialogs/SelectMarginModeDialog'; import { TradeDialog } from '@/views/dialogs/TradeDialog'; import { TransferDialog } from '@/views/dialogs/TransferDialog'; -import { RestrictedWalletDialog } from '@/views/dialogs/RestrictedWalletDialog'; +import { TriggersDialog } from '@/views/dialogs/TriggersDialog'; import { WithdrawDialog } from '@/views/dialogs/WithdrawDialog'; -import { ManageFundsDialog } from '@/views/dialogs/ManageFundsDialog'; +import { WithdrawalGateDialog } from '@/views/dialogs/WithdrawalGateDialog'; -import { OrderDetailsDialog } from '@/views/dialogs/DetailsDialog/OrderDetailsDialog'; -import { FillDetailsDialog } from '@/views/dialogs/DetailsDialog/FillDetailsDialog'; -import { NewMarketMessageDetailsDialog } from '@/views/dialogs/NewMarketMessageDetailsDialog'; -import { NewMarketAgreementDialog } from '@/views/dialogs/NewMarketAgreementDialog'; -import { ExternalNavStrideDialog } from '@/views/dialogs/ExternalNavStrideDialog'; -import { MobileDownloadDialog } from '@/views/dialogs/MobileDownloadDialog'; +import { closeDialog, openDialog } from '@/state/dialogs'; +import { getActiveDialog } from '@/state/dialogsSelectors'; export const DialogManager = () => { const dispatch = useDispatch(); @@ -52,30 +57,37 @@ export const DialogManager = () => { }; return { + [DialogTypes.AdjustIsolatedMargin]: <AdjustIsolatedMarginDialog {...modalProps} />, + [DialogTypes.AdjustTargetLeverage]: <AdjustTargetLeverageDialog {...modalProps} />, [DialogTypes.ClosePosition]: <ClosePositionDialog {...modalProps} />, + [DialogTypes.ComplianceConfig]: <ComplianceConfigDialog {...modalProps} />, [DialogTypes.Deposit]: <DepositDialog {...modalProps} />, [DialogTypes.DisplaySettings]: <DisplaySettingsDialog {...modalProps} />, [DialogTypes.DisconnectWallet]: <DisconnectDialog {...modalProps} />, [DialogTypes.ExchangeOffline]: <ExchangeOfflineDialog {...modalProps} />, - [DialogTypes.FillDetails]: <FillDetailsDialog {...modalProps} />, - [DialogTypes.Help]: <HelpDialog {...modalProps} />, - [DialogTypes.ExternalNavKeplr]: <ExternalNavKeplrDialog {...modalProps} />, [DialogTypes.ExternalLink]: <ExternalLinkDialog {...modalProps} />, + [DialogTypes.ExternalNavKeplr]: <ExternalNavKeplrDialog {...modalProps} />, [DialogTypes.ExternalNavStride]: <ExternalNavStrideDialog {...modalProps} />, + [DialogTypes.FillDetails]: <FillDetailsDialog {...modalProps} />, + [DialogTypes.GeoCompliance]: <GeoComplianceDialog {...modalProps} />, + [DialogTypes.Help]: <HelpDialog {...modalProps} />, + [DialogTypes.ManageFunds]: <ManageFundsDialog {...modalProps} />, [DialogTypes.MnemonicExport]: <MnemonicExportDialog {...modalProps} />, - [DialogTypes.MobileSignIn]: <MobileSignInDialog {...modalProps} />, [DialogTypes.MobileDownload]: <MobileDownloadDialog {...modalProps} />, + [DialogTypes.MobileSignIn]: <MobileSignInDialog {...modalProps} />, + [DialogTypes.NewMarketAgreement]: <NewMarketAgreementDialog {...modalProps} />, + [DialogTypes.NewMarketMessageDetails]: <NewMarketMessageDetailsDialog {...modalProps} />, [DialogTypes.Onboarding]: <OnboardingDialog {...modalProps} />, [DialogTypes.OrderDetails]: <OrderDetailsDialog {...modalProps} />, [DialogTypes.Preferences]: <PreferencesDialog {...modalProps} />, [DialogTypes.RateLimit]: <RateLimitDialog {...modalProps} />, [DialogTypes.RestrictedGeo]: <RestrictedGeoDialog {...modalProps} />, [DialogTypes.RestrictedWallet]: <RestrictedWalletDialog {...modalProps} />, + [DialogTypes.SelectMarginMode]: <SelectMarginModeDialog {...modalProps} />, [DialogTypes.Trade]: <TradeDialog {...modalProps} />, [DialogTypes.Transfer]: <TransferDialog {...modalProps} />, + [DialogTypes.Triggers]: <TriggersDialog {...modalProps} />, [DialogTypes.Withdraw]: <WithdrawDialog {...modalProps} />, - [DialogTypes.ManageFunds]: <ManageFundsDialog {...modalProps} />, - [DialogTypes.NewMarketMessageDetails]: <NewMarketMessageDetailsDialog {...modalProps} />, - [DialogTypes.NewMarketAgreement]: <NewMarketAgreementDialog {...modalProps} />, + [DialogTypes.WithdrawalGated]: <WithdrawalGateDialog {...modalProps} />, }[type]; }; diff --git a/src/layout/Footer/FooterDesktop.tsx b/src/layout/Footer/FooterDesktop.tsx index 9a6c5249e..8da2dc7c0 100644 --- a/src/layout/Footer/FooterDesktop.tsx +++ b/src/layout/Footer/FooterDesktop.tsx @@ -1,13 +1,15 @@ -import styled, { type AnyStyledComponent, css } from 'styled-components'; +import styled, { css } from 'styled-components'; import { AbacusApiStatus } from '@/constants/abacus'; import { ButtonSize, ButtonType } from '@/constants/buttons'; import { STRING_KEYS } from '@/constants/localization'; import { isDev } from '@/constants/networks'; -import { useApiState, useStringGetter, useURLConfigs } from '@/hooks'; -import { ChatIcon, LinkOutIcon } from '@/icons'; +import { useApiState } from '@/hooks/useApiState'; +import { useStringGetter } from '@/hooks/useStringGetter'; +import { useURLConfigs } from '@/hooks/useURLConfigs'; +import { ChatIcon, LinkOutIcon } from '@/icons'; import { layoutMixins } from '@/styles/layoutMixins'; import { Button } from '@/components/Button'; @@ -15,6 +17,8 @@ import { Details } from '@/components/Details'; import { Output, OutputType } from '@/components/Output'; import { WithTooltip } from '@/components/WithTooltip'; +import { isPresent } from '@/lib/typeUtils'; + enum FooterItems { ChainHeight, IndexerHeight, @@ -30,85 +34,90 @@ export const FooterDesktop = () => { const { height, indexerHeight, status, statusErrorMessage } = useApiState(); const { statusPage } = useURLConfigs(); - const { exchangeStatus, label } = - !status || status === AbacusApiStatus.NORMAL - ? { - exchangeStatus: ExchangeStatus.Operational, - label: stringGetter({ key: STRING_KEYS.OPERATIONAL }), - } - : { - exchangeStatus: ExchangeStatus.Degraded, - label: stringGetter({ key: STRING_KEYS.DEGRADED }), - }; + const isStatusLoading = !status && !statusErrorMessage; + + const { exchangeStatus, label } = isStatusLoading + ? { + exchangeStatus: undefined, + label: stringGetter({ key: STRING_KEYS.CONNECTING }), + } + : status === AbacusApiStatus.NORMAL + ? { + exchangeStatus: ExchangeStatus.Operational, + label: stringGetter({ key: STRING_KEYS.OPERATIONAL }), + } + : { + exchangeStatus: ExchangeStatus.Degraded, + label: stringGetter({ key: STRING_KEYS.DEGRADED }), + }; return ( - <Styled.Footer> - <Styled.Row> + <$Footer> + <$Row> <WithTooltip slotTooltip={ statusErrorMessage && ( <dl> - <dd>{statusErrorMessage}</dd> + <dd>{statusErrorMessage.body}</dd> </dl> ) } > - <Styled.FooterButton + <$FooterButton type={statusPage ? ButtonType.Link : ButtonType.Button} - slotLeft={<Styled.StatusDot exchangeStatus={exchangeStatus} />} + slotLeft={<$StatusDot exchangeStatus={exchangeStatus} />} slotRight={statusPage && <LinkOutIcon />} size={ButtonSize.XSmall} state={{ isDisabled: !statusPage }} href={statusPage} > {label} - </Styled.FooterButton> + </$FooterButton> </WithTooltip> {globalThis?.Intercom && ( - <Styled.FooterButton + <$FooterButton slotLeft={<ChatIcon />} size={ButtonSize.XSmall} onClick={() => globalThis.Intercom('show')} > {stringGetter({ key: STRING_KEYS.HELP_AND_SUPPORT })} - </Styled.FooterButton> + </$FooterButton> )} - </Styled.Row> + </$Row> {isDev && ( - <Styled.Details + <$Details withSeparators items={[ { - key: FooterItems.ChainHeight, + key: FooterItems.ChainHeight.toString(), label: 'Block Height', value: <Output useGrouping type={OutputType.Number} value={height} />, }, - height !== indexerHeight && { - key: FooterItems.IndexerHeight, - label: 'Indexer Block Height', - value: ( - <Styled.WarningOutput useGrouping type={OutputType.Number} value={indexerHeight} /> - ), - }, - ].filter(Boolean)} + height !== indexerHeight + ? { + key: FooterItems.IndexerHeight.toString(), + label: 'Indexer Block Height', + value: ( + <$WarningOutput useGrouping type={OutputType.Number} value={indexerHeight} /> + ), + } + : undefined, + ].filter(isPresent)} layout="row" /> )} - </Styled.Footer> + </$Footer> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.Footer = styled.footer` +const $Footer = styled.footer` ${layoutMixins.stickyFooter} ${layoutMixins.spacedRow} grid-area: Footer; `; -Styled.Row = styled.div` +const $Row = styled.div` ${layoutMixins.row} ${layoutMixins.spacedRow} width: var(--sidebar-width); @@ -117,20 +126,22 @@ Styled.Row = styled.div` border-right: 1px solid var(--color-border); `; -Styled.StatusDot = styled.div<{ exchangeStatus: ExchangeStatus }>` +const $StatusDot = styled.div<{ exchangeStatus?: ExchangeStatus }>` width: 0.5rem; height: 0.5rem; border-radius: 50%; margin-right: 0.25rem; + background-color: var(--color-text-0); background-color: ${({ exchangeStatus }) => - ({ + exchangeStatus && + { [ExchangeStatus.Degraded]: css`var(--color-warning)`, [ExchangeStatus.Operational]: css`var(--color-success)`, - }[exchangeStatus])}; + }[exchangeStatus]}; `; -Styled.FooterButton = styled(Button)` +const $FooterButton = styled(Button)` --button-height: 1.5rem; --button-radius: 0.25rem; --button-backgroundColor: transparent; @@ -147,11 +158,11 @@ Styled.FooterButton = styled(Button)` } `; -Styled.WarningOutput = styled(Output)` +const $WarningOutput = styled(Output)` color: var(--color-warning); `; -Styled.Details = styled(Details)` +const $Details = styled(Details)` ${layoutMixins.scrollArea} font: var(--font-tiny-book); `; diff --git a/src/layout/Footer/FooterMobile.tsx b/src/layout/Footer/FooterMobile.tsx index 9ce2a24a9..3fc807541 100644 --- a/src/layout/Footer/FooterMobile.tsx +++ b/src/layout/Footer/FooterMobile.tsx @@ -1,18 +1,19 @@ -import styled, { type AnyStyledComponent } from 'styled-components'; import { useDispatch, useSelector } from 'react-redux'; +import styled from 'styled-components'; import { DialogTypes } from '@/constants/dialogs'; import { STRING_KEYS } from '@/constants/localization'; import { DEFAULT_MARKETID } from '@/constants/markets'; import { AppRoute } from '@/constants/routes'; -import { useShouldShowFooter, useStringGetter } from '@/hooks'; +import { useShouldShowFooter } from '@/hooks/useShouldShowFooter'; +import { useStringGetter } from '@/hooks/useStringGetter'; + +import { BellIcon, MarketsIcon, PortfolioIcon, ProfileIcon } from '@/icons'; import { layoutMixins } from '@/styles/layoutMixins'; -import { NavigationMenu } from '@/components/NavigationMenu'; import { Icon, IconName } from '@/components/Icon'; -import { BellIcon, MarketsIcon, PortfolioIcon, ProfileIcon } from '@/icons'; -import { IconButton } from '@/components/IconButton'; +import { NavigationMenu } from '@/components/NavigationMenu'; import { calculateCanAccountTrade } from '@/state/accountCalculators'; import { openDialog } from '@/state/dialogs'; @@ -30,8 +31,8 @@ export const FooterMobile = () => { if (!useShouldShowFooter()) return null; return ( - <Styled.MobileNav> - <Styled.NavigationMenu + <$MobileNav> + <$NavigationMenu items={[ { group: 'navigation', @@ -41,9 +42,9 @@ export const FooterMobile = () => { value: 'trade', label: stringGetter({ key: STRING_KEYS.TRADE }), slotBefore: ( - <Styled.StartIcon> + <$StartIcon> <Icon iconName={IconName.Trade} /> - </Styled.StartIcon> + </$StartIcon> ), href: `${AppRoute.Trade}/${marketId ?? DEFAULT_MARKETID}`, } @@ -51,34 +52,34 @@ export const FooterMobile = () => { value: 'onboarding', label: stringGetter({ key: STRING_KEYS.ONBOARDING }), slotBefore: ( - <Styled.StartIcon> + <$StartIcon> <Icon iconName={IconName.Play} /> - </Styled.StartIcon> + </$StartIcon> ), onClick: () => dispatch(openDialog({ type: DialogTypes.Onboarding })), }, { value: 'portfolio', label: stringGetter({ key: STRING_KEYS.PORTFOLIO }), - slotBefore: <Styled.Icon iconComponent={PortfolioIcon} />, + slotBefore: <$Icon iconComponent={PortfolioIcon as any} />, href: AppRoute.Portfolio, }, { value: 'markets', label: stringGetter({ key: STRING_KEYS.MARKETS }), - slotBefore: <Styled.Icon iconComponent={MarketsIcon} />, + slotBefore: <$Icon iconComponent={MarketsIcon as any} />, href: AppRoute.Markets, }, { value: 'alerts', label: stringGetter({ key: STRING_KEYS.ALERTS }), - slotBefore: <Styled.Icon iconComponent={BellIcon} />, + slotBefore: <$Icon iconComponent={BellIcon as any} />, href: AppRoute.Alerts, }, { value: 'profile', label: stringGetter({ key: STRING_KEYS.PROFILE }), - slotBefore: <Styled.Icon iconComponent={ProfileIcon} />, + slotBefore: <$Icon iconComponent={ProfileIcon as any} />, href: AppRoute.Profile, }, ], @@ -87,19 +88,16 @@ export const FooterMobile = () => { orientation="horizontal" itemOrientation="vertical" /> - </Styled.MobileNav> + </$MobileNav> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.MobileNav = styled.footer` +const $MobileNav = styled.footer` grid-area: Footer; ${layoutMixins.stickyFooter} `; -Styled.NavigationMenu = styled(NavigationMenu)` +const $NavigationMenu = styled(NavigationMenu)` --navigationMenu-height: var(--page-currentFooterHeight); --navigationMenu-item-height: var(--page-currentFooterHeight); --navigationMenu-item-radius: 0; @@ -156,15 +154,11 @@ Styled.NavigationMenu = styled(NavigationMenu)` } `; -Styled.IconButton = styled(IconButton)` - margin-top: -0.25rem; -`; - -Styled.Icon = styled(Icon)` +const $Icon = styled(Icon)` font-size: 1.5rem; `; -Styled.StartIcon = styled.div` +const $StartIcon = styled.div` display: inline-flex; flex-direction: row; justify-content: center; diff --git a/src/layout/Header/HeaderDesktop.tsx b/src/layout/Header/HeaderDesktop.tsx index 97e5fd707..2c9da899a 100644 --- a/src/layout/Header/HeaderDesktop.tsx +++ b/src/layout/Header/HeaderDesktop.tsx @@ -1,37 +1,42 @@ -import styled, { type AnyStyledComponent } from 'styled-components'; -import { Link } from 'react-router-dom'; +import { isTruthy } from '@dydxprotocol/v4-client-js/build/src/network_optimizer'; import { useDispatch, useSelector } from 'react-redux'; +import { Link } from 'react-router-dom'; +import styled from 'styled-components'; import { ButtonShape } from '@/constants/buttons'; +import { ComplianceStates } from '@/constants/compliance'; import { DialogTypes } from '@/constants/dialogs'; import { STRING_KEYS } from '@/constants/localization'; import { AppRoute } from '@/constants/routes'; -import { LogoShortIcon, BellStrokeIcon } from '@/icons'; +import { useComplianceState } from '@/hooks/useComplianceState'; +import { useStringGetter } from '@/hooks/useStringGetter'; +import { useTokenConfigs } from '@/hooks/useTokenConfigs'; +import { useURLConfigs } from '@/hooks/useURLConfigs'; + +import { BellStrokeIcon, LogoShortIcon } from '@/icons'; +import breakpoints from '@/styles/breakpoints'; import { headerMixins } from '@/styles/headerMixins'; import { layoutMixins } from '@/styles/layoutMixins'; -import breakpoints from '@/styles/breakpoints'; - -import { useTokenConfigs, useStringGetter, useURLConfigs } from '@/hooks'; import { Icon, IconName } from '@/components/Icon'; import { IconButton } from '@/components/IconButton'; import { NavigationMenu } from '@/components/NavigationMenu'; import { VerticalSeparator } from '@/components/Separator'; - import { AccountMenu } from '@/views/menus/AccountMenu'; +import { LanguageSelector } from '@/views/menus/LanguageSelector'; import { NetworkSelectMenu } from '@/views/menus/NetworkSelectMenu'; import { NotificationsMenu } from '@/views/menus/NotificationsMenu'; -import { LanguageSelector } from '@/views/menus/LanguageSelector'; -import { openDialog } from '@/state/dialogs'; import { getHasSeenLaunchIncentives } from '@/state/configsSelectors'; +import { openDialog } from '@/state/dialogs'; export const HeaderDesktop = () => { const stringGetter = useStringGetter(); - const { documentation, community, mintscanBase } = useURLConfigs(); + const { documentation, community, mintscanBase, exchangeStats } = useURLConfigs(); const dispatch = useDispatch(); const { chainTokenLabel } = useTokenConfigs(); + const { complianceState } = useComplianceState(); const hasSeenLaunchIncentives = useSelector(getHasSeenLaunchIncentives); @@ -54,11 +59,11 @@ export const HeaderDesktop = () => { label: stringGetter({ key: STRING_KEYS.MARKETS }), href: AppRoute.Markets, }, - { + complianceState === ComplianceStates.FULL_ACCESS && { value: chainTokenLabel, label: chainTokenLabel, href: `/${chainTokenLabel}`, - slotAfter: !hasSeenLaunchIncentives && <Styled.UnreadIndicator />, + slotAfter: !hasSeenLaunchIncentives && <$UnreadIndicator />, }, { value: 'MORE', @@ -98,39 +103,44 @@ export const HeaderDesktop = () => { value: 'HELP', slotBefore: <Icon iconName={IconName.HelpCircle} />, label: stringGetter({ key: STRING_KEYS.HELP }), - onClick: (e: MouseEvent) => { - e.preventDefault(); + onClick: () => { dispatch(openDialog({ type: DialogTypes.Help })); }, }, + { + value: 'STATS', + slotBefore: <Icon iconName={IconName.FundingChart} />, + label: stringGetter({ key: STRING_KEYS.STATISTICS }), + href: exchangeStats, + }, ], }, - ], + ].filter(isTruthy), }, ]; return ( - <Styled.Header> - <Styled.LogoLink to="/"> + <$Header> + <$LogoLink to="/"> <LogoShortIcon /> - </Styled.LogoLink> + </$LogoLink> <VerticalSeparator /> - <Styled.NavBefore> + <$NavBefore> <NetworkSelectMenu sideOffset={16} /> <VerticalSeparator /> <LanguageSelector sideOffset={16} /> - </Styled.NavBefore> + </$NavBefore> <VerticalSeparator /> - <Styled.NavigationMenu items={navItems} orientation="horizontal" /> + <$NavigationMenu items={navItems} orientation="horizontal" /> <div role="separator" /> - <Styled.NavAfter> - <Styled.IconButton + <$NavAfter> + <$IconButton shape={ButtonShape.Rectangle} iconName={IconName.HelpCircle} onClick={() => dispatch(openDialog({ type: DialogTypes.Help }))} @@ -140,21 +150,21 @@ export const HeaderDesktop = () => { <NotificationsMenu slotTrigger={ - <Styled.IconButton shape={ButtonShape.Rectangle} iconComponent={BellStrokeIcon} /> + <$IconButton + shape={ButtonShape.Rectangle} + iconComponent={BellStrokeIcon as React.ElementType} + /> } /> <VerticalSeparator /> <AccountMenu /> - </Styled.NavAfter> - </Styled.Header> + </$NavAfter> + </$Header> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.Header = styled.header` +const $Header = styled.header` --header-horizontal-padding-mobile: 0.5rem; --trigger-height: 2.25rem; --logo-width: 3.5rem; @@ -193,7 +203,7 @@ Styled.Header = styled.header` } `; -Styled.NavigationMenu = styled(NavigationMenu)` +const $NavigationMenu = styled(NavigationMenu)` & { --navigationMenu-height: var(--stickyArea-topHeight); --navigationMenu-item-height: var(--trigger-height); @@ -202,9 +212,9 @@ Styled.NavigationMenu = styled(NavigationMenu)` ${layoutMixins.scrollArea} padding: 0 0.5rem; scroll-padding: 0 0.5rem; -`; +` as typeof NavigationMenu; -Styled.NavBefore = styled.div` +const $NavBefore = styled.div` ${layoutMixins.flexEqualColumns} > * { @@ -213,7 +223,7 @@ Styled.NavBefore = styled.div` } `; -Styled.LogoLink = styled(Link)` +const $LogoLink = styled(Link)` display: flex; align-self: stretch; @@ -224,7 +234,7 @@ Styled.LogoLink = styled(Link)` } `; -Styled.NavAfter = styled.div` +const $NavAfter = styled.div` ${layoutMixins.row} justify-self: end; padding-right: 0.75rem; @@ -236,14 +246,14 @@ Styled.NavAfter = styled.div` } `; -Styled.IconButton = styled(IconButton)<{ size?: string }>` +const $IconButton = styled(IconButton)<{ size?: string }>` ${headerMixins.button} --button-border: none; --button-icon-size: 1rem; --button-padding: 0 0.5em; `; -Styled.UnreadIndicator = styled.div` +const $UnreadIndicator = styled.div` width: 0.4375rem; height: 0.4375rem; border-radius: 50%; diff --git a/src/layout/NotificationsToastArea/NotifcationStack.tsx b/src/layout/NotificationsToastArea/NotifcationStack.tsx index a2f16ddbb..f65c71c35 100644 --- a/src/layout/NotificationsToastArea/NotifcationStack.tsx +++ b/src/layout/NotificationsToastArea/NotifcationStack.tsx @@ -1,14 +1,17 @@ import { useState } from 'react'; + import styled, { css } from 'styled-components'; +import { ButtonShape, ButtonSize } from '@/constants/buttons'; import { + NotificationStatus, type Notification, type NotificationDisplayData, - NotificationStatus, } from '@/constants/notifications'; -import { ButtonShape, ButtonSize } from '@/constants/buttons'; -import { useNotifications } from '@/hooks/useNotifications'; + import { useBreakpoints } from '@/hooks/useBreakpoints'; +import { useNotifications } from '@/hooks/useNotifications'; + import { ChevronLeftIcon } from '@/icons'; import { breakpoints } from '@/styles'; @@ -68,9 +71,13 @@ export const NotificationStack = ({ notifications, className }: ElementProps & S slotCustomContent={displayData.renderCustomBody?.({ isToast: true, notification })} onClick={() => onNotificationAction(notification)} slotAction={ - <Button size={ButtonSize.Small} onClick={() => onNotificationAction(notification)}> - {displayData.actionDescription} - </Button> + displayData.renderActionSlot ? ( + displayData.renderActionSlot({ isToast: true, notification }) + ) : displayData.actionDescription ? ( + <Button size={ButtonSize.Small} onClick={() => onNotificationAction(notification)}> + {displayData.actionDescription} + </Button> + ) : undefined } actionDescription={displayData.actionDescription} actionAltText={displayData.actionAltText} diff --git a/src/layout/NotificationsToastArea/index.tsx b/src/layout/NotificationsToastArea/index.tsx index fea600490..ee61f2150 100644 --- a/src/layout/NotificationsToastArea/index.tsx +++ b/src/layout/NotificationsToastArea/index.tsx @@ -1,13 +1,15 @@ import { useMemo } from 'react'; + import { groupBy } from 'lodash'; import styled from 'styled-components'; -import { breakpoints } from '@/styles'; -import { layoutMixins } from '@/styles/layoutMixins'; - import { NotificationStatus } from '@/constants/notifications'; + import { useNotifications } from '@/hooks/useNotifications'; +import { breakpoints } from '@/styles'; +import { layoutMixins } from '@/styles/layoutMixins'; + import { NotificationStack } from './NotifcationStack'; type StyleProps = { diff --git a/src/lib/__test__/formatZeroNumbers.spec.ts b/src/lib/__test__/formatZeroNumbers.spec.ts new file mode 100644 index 000000000..efd84803a --- /dev/null +++ b/src/lib/__test__/formatZeroNumbers.spec.ts @@ -0,0 +1,166 @@ +import { describe, expect, it } from 'vitest'; + +import { formatZeroNumbers } from '../formatZeroNumbers'; + +describe('formatZeroNumbers function', () => { + it('should not compress zeros with and handle the absence of currency symbol', () => { + expect(formatZeroNumbers('123.00')).toEqual({ + currencySign: undefined, + significantDigits: '123', + punctuationSymbol: '.', + zeros: 0, + decimalDigits: '00', + }); + expect(formatZeroNumbers('123,00')).toEqual({ + currencySign: undefined, + significantDigits: '123', + punctuationSymbol: ',', + zeros: 0, + decimalDigits: '00', + }); + }); + + it('should not compress zeros even if there is a currency symbol', () => { + expect(formatZeroNumbers('$0.00')).toEqual({ + currencySign: '$', + significantDigits: '0', + punctuationSymbol: '.', + zeros: 0, + decimalDigits: '00', + }); + expect(formatZeroNumbers('$0,00')).toEqual({ + currencySign: '$', + significantDigits: '0', + punctuationSymbol: ',', + zeros: 0, + decimalDigits: '00', + }); + }); + + it('should correctly handle significant digits with leading zeros', () => { + expect(formatZeroNumbers('$001.2300')).toEqual({ + currencySign: '$', + significantDigits: '001', + punctuationSymbol: '.', + zeros: 0, + decimalDigits: '2300', + }); + expect(formatZeroNumbers('$001,2300')).toEqual({ + currencySign: '$', + significantDigits: '001', + punctuationSymbol: ',', + zeros: 0, + decimalDigits: '2300', + }); + }); + + it('should return original value if there are no zeros to compress', () => { + expect(formatZeroNumbers('$123.45')).toEqual({ + currencySign: '$', + significantDigits: '123', + punctuationSymbol: '.', + zeros: 0, + decimalDigits: '45', + }); + expect(formatZeroNumbers('$123,45')).toEqual({ + currencySign: '$', + significantDigits: '123', + punctuationSymbol: ',', + zeros: 0, + decimalDigits: '45', + }); + }); + + it('should correctly handle cases with only leading zeros less than the default threshold', () => { + expect(formatZeroNumbers('$00.005')).toEqual({ + currencySign: '$', + significantDigits: '00', + punctuationSymbol: '.', + zeros: 0, + decimalDigits: '005', + }); + expect(formatZeroNumbers('$00,005')).toEqual({ + currencySign: '$', + significantDigits: '00', + punctuationSymbol: ',', + zeros: 0, + decimalDigits: '005', + }); + }); + + it('should handle cases with no decimal part', () => { + expect(formatZeroNumbers('$123')).toEqual({ + currencySign: '$', + significantDigits: '123', + }); + expect(formatZeroNumbers('$123')).toEqual({ + currencySign: '$', + significantDigits: '123', + }); + }); + + it('should handle cases with no significant digits', () => { + expect(formatZeroNumbers('$0.00')).toEqual({ + currencySign: '$', + significantDigits: '0', + punctuationSymbol: '.', + zeros: 0, + decimalDigits: '00', + }); + expect(formatZeroNumbers('$0,00')).toEqual({ + currencySign: '$', + significantDigits: '0', + punctuationSymbol: ',', + zeros: 0, + decimalDigits: '00', + }); + }); + it('should compress zeros with the default threshold', () => { + expect(formatZeroNumbers('$0.00000029183')).toEqual({ + currencySign: '$', + significantDigits: '0', + punctuationSymbol: '.', + zeros: 6, + decimalDigits: '29183', + }); + expect(formatZeroNumbers('$0,00000029183')).toEqual({ + currencySign: '$', + significantDigits: '0', + punctuationSymbol: ',', + zeros: 6, + decimalDigits: '29183', + }); + }); + it('should not compress zeros with a different threshold', () => { + expect(formatZeroNumbers('$1.000000323', 8)).toEqual({ + currencySign: '$', + significantDigits: '1', + punctuationSymbol: '.', + zeros: 0, + decimalDigits: '000000323', + }); + expect(formatZeroNumbers('$1,000000323', 8)).toEqual({ + currencySign: '$', + significantDigits: '1', + punctuationSymbol: ',', + zeros: 0, + decimalDigits: '000000323', + }); + }); + it('should compress zeros with a different threshold', () => { + expect(formatZeroNumbers('$1.00000000323', 5)).toEqual({ + currencySign: '$', + significantDigits: '1', + punctuationSymbol: '.', + zeros: 8, + decimalDigits: '323', + }); + expect(formatZeroNumbers('$1,00000000323', 5)).toEqual({ + currencySign: '$', + significantDigits: '1', + punctuationSymbol: ',', + zeros: 8, + decimalDigits: '323', + }); + }); +}); diff --git a/src/lib/__test__/numbers.spec.ts b/src/lib/__test__/numbers.spec.ts index 633cb2d2a..9ba7a6ddf 100644 --- a/src/lib/__test__/numbers.spec.ts +++ b/src/lib/__test__/numbers.spec.ts @@ -1,5 +1,5 @@ -import { describe, expect, it } from 'vitest'; import BigNumber from 'bignumber.js'; +import { describe, expect, it } from 'vitest'; import { getFractionDigits, isNumber, roundToNearestFactor } from '../numbers'; diff --git a/src/lib/__test__/timeUtils.ts b/src/lib/__test__/timeUtils.ts index 7e61de7a1..a9f0421ab 100644 --- a/src/lib/__test__/timeUtils.ts +++ b/src/lib/__test__/timeUtils.ts @@ -1,14 +1,13 @@ -import { describe, expect, it } from 'vitest'; import { DateTime, Duration } from 'luxon'; +import { describe, expect, it } from 'vitest'; import { MustBigNumber } from '@/lib/numbers'; - import { - getTimestamp, getStringsForDateTimeDiff, getStringsForTimeInterval, - getTimeTillNextUnit, getTimeString, + getTimeTillNextUnit, + getTimestamp, } from '@/lib/timeUtils'; describe('getTimestamp', () => { diff --git a/src/lib/__test__/tradeData.spec.ts b/src/lib/__test__/tradeData.spec.ts index a66650536..c76e4b245 100644 --- a/src/lib/__test__/tradeData.spec.ts +++ b/src/lib/__test__/tradeData.spec.ts @@ -1,7 +1,9 @@ import { describe, expect, it } from 'vitest'; import { PositionSide } from '@/constants/trade'; -import { hasPositionSideChanged } from '../tradeData'; + +import { BIG_NUMBERS, MustBigNumber } from '../numbers'; +import { calculatePositionMargin, hasPositionSideChanged } from '../tradeData'; describe('hasPositionSideChanged', () => { describe('Should return false when the position side has not changed', () => { @@ -76,3 +78,39 @@ describe('hasPositionSideChanged', () => { }); }); }); + +describe('calculatePositionMargin', () => { + it('should calculate the position margin', () => { + expect(calculatePositionMargin({ notionalTotal: 100, adjustedMmf: 0.1 })).toEqual( + MustBigNumber(10) + ); + }); + + it('should calculate the position margin with a notionalTotal of 0', () => { + expect(calculatePositionMargin({ notionalTotal: 0, adjustedMmf: 0.1 })).toEqual( + BIG_NUMBERS.ZERO + ); + }); + + it('should calculate the position margin with a adjustedMmf of 0', () => { + expect(calculatePositionMargin({ notionalTotal: 100, adjustedMmf: 0 })).toEqual( + BIG_NUMBERS.ZERO + ); + }); + + it('should calculate the position margin with a notionalTotal of 0 and a adjustedMmf of 0', () => { + expect(calculatePositionMargin({ notionalTotal: 0, adjustedMmf: 0 })).toEqual(BIG_NUMBERS.ZERO); + }); + + it('should calculate the position margin with a negative notionalTotal', () => { + expect(calculatePositionMargin({ notionalTotal: -100, adjustedMmf: 0.1 })).toEqual( + MustBigNumber(-10) + ); + }); + + it('should handle undefined notionalTotal', () => { + expect(calculatePositionMargin({ notionalTotal: undefined, adjustedMmf: 0.1 })).toEqual( + BIG_NUMBERS.ZERO + ); + }); +}); diff --git a/src/lib/abacus/conversions.ts b/src/lib/abacus/conversions.ts index ee6822239..9a79f6d86 100644 --- a/src/lib/abacus/conversions.ts +++ b/src/lib/abacus/conversions.ts @@ -2,12 +2,11 @@ import { OrderSide } from '@dydxprotocol/v4-client-js'; import { AbacusOrderSide, - type Nullable, - type AbacusOrderSides, AbacusPositionSide, AbacusPositionSides, + type AbacusOrderSides, + type Nullable, } from '@/constants/abacus'; - import { PositionSide } from '@/constants/trade'; /** @deprecated use ORDER_SIDES from constants/abacus */ diff --git a/src/lib/abacus/dydxChainTransactions.ts b/src/lib/abacus/dydxChainTransactions.ts index 79bc0d028..8d83ef301 100644 --- a/src/lib/abacus/dydxChainTransactions.ts +++ b/src/lib/abacus/dydxChainTransactions.ts @@ -1,59 +1,68 @@ -import Abacus, { type Nullable } from '@dydxprotocol/v4-abacus'; -import Long from 'long'; -import type { IndexedTx } from '@cosmjs/stargate'; -import { GAS_MULTIPLIER, encodeJson } from '@dydxprotocol/v4-client-js'; import { EncodeObject } from '@cosmjs/proto-signing'; - +import type { IndexedTx } from '@cosmjs/stargate'; +import Abacus, { type Nullable } from '@dydxprotocol/v4-abacus'; import { CompositeClient, + GAS_MULTIPLIER, IndexerConfig, - type LocalWallet, Network, NetworkOptimizer, NobleClient, - SubaccountClient, - ValidatorConfig, - OrderType, + OrderExecution, OrderSide, OrderTimeInForce, - OrderExecution, + OrderType, + SubaccountClient, + ValidatorConfig, + encodeJson, + type LocalWallet, + type SelectedGasDenom, } from '@dydxprotocol/v4-client-js'; +import Long from 'long'; import { - type AbacusDYDXChainTransactionsProtocol, QueryType, - type QueryTypes, TransactionType, - type TransactionTypes, - type HumanReadablePlaceOrderPayload, + type AbacusDYDXChainTransactionsProtocol, type HumanReadableCancelOrderPayload, - type HumanReadableWithdrawPayload, + type HumanReadablePlaceOrderPayload, type HumanReadableTransferPayload, + type HumanReadableWithdrawPayload, + type QueryTypes, + type TransactionTypes, } from '@/constants/abacus'; - +import { Hdkey } from '@/constants/account'; import { DEFAULT_TRANSACTION_MEMO } from '@/constants/analytics'; -import { DialogTypes } from '@/constants/dialogs'; -import { UNCOMMITTED_ORDER_TIMEOUT_MS } from '@/constants/trade'; import { DydxChainId, isTestnet } from '@/constants/networks'; +import { UNCOMMITTED_ORDER_TIMEOUT_MS } from '@/constants/trade'; +// TODO Fix cycle +// eslint-disable-next-line import/no-cycle import { RootStore } from '@/state/_store'; -import { addUncommittedOrderClientId, removeUncommittedOrderClientId } from '@/state/account'; -import { openDialog } from '@/state/dialogs'; +import { placeOrderTimeout } from '@/state/account'; +import { setInitializationError } from '@/state/app'; +import { signComplianceSignature } from '../compliance'; import { StatefulOrderError } from '../errors'; import { bytesToBigInt } from '../numbers'; import { log } from '../telemetry'; -import { hashFromTx, getMintscanTxLink } from '../txUtils'; +import { getMintscanTxLink, hashFromTx } from '../txUtils'; -(BigInt.prototype as any).toJSON = function () { +(BigInt.prototype as any).toJSON = function toJSON() { return this.toString(); }; class DydxChainTransactions implements AbacusDYDXChainTransactionsProtocol { private compositeClient: CompositeClient | undefined; + private nobleClient: NobleClient | undefined; + private store: RootStore | undefined; + + private hdkey: Hdkey | undefined; + private localWallet: LocalWallet | undefined; + private nobleWallet: LocalWallet | undefined; constructor() { @@ -69,6 +78,10 @@ class DydxChainTransactions implements AbacusDYDXChainTransactionsProtocol { this.store = store; } + setHdkey(hdkey: Hdkey) { + this.hdkey = hdkey; + } + setLocalWallet(localWallet: LocalWallet) { this.localWallet = localWallet; } @@ -145,13 +158,15 @@ class DydxChainTransactions implements AbacusDYDXChainTransactionsProtocol { globalThis.dispatchEvent(customEvent); callback(JSON.stringify({ success: true })); } catch (error) { - this.store?.dispatch( - openDialog({ type: DialogTypes.ExchangeOffline, dialogProps: { preventClose: true } }) - ); + this.store?.dispatch(setInitializationError(error?.message ?? 'Unknown error')); log('DydxChainTransactions/connectNetwork', error); } } + setSelectedGasDenom(denom: SelectedGasDenom) { + this.compositeClient?.setSelectedGasDenom(denom); + } + parseToPrimitives<T>(x: T): T { if (typeof x === 'number' || typeof x === 'string' || typeof x === 'boolean' || x === null) { return x; @@ -171,6 +186,7 @@ class DydxChainTransactions implements AbacusDYDXChainTransactionsProtocol { if (typeof x === 'object') { const parsedObj: { [key: string]: any } = {}; + // eslint-disable-next-line no-restricted-syntax for (const key in x) { if (Object.prototype.hasOwnProperty.call(x, key)) { parsedObj[key] = this.parseToPrimitives((x as any)[key]); @@ -201,17 +217,15 @@ class DydxChainTransactions implements AbacusDYDXChainTransactionsProtocol { clientId, timeInForce, goodTilTimeInSeconds, + goodTilBlock, execution, postOnly, reduceOnly, triggerPrice, } = params || {}; - // Observe uncommitted order - this.store?.dispatch(addUncommittedOrderClientId(clientId)); - setTimeout(() => { - this.store?.dispatch(removeUncommittedOrderClientId(clientId)); + this.store?.dispatch(placeOrderTimeout(clientId)); }, UNCOMMITTED_ORDER_TIMEOUT_MS); // Place order @@ -228,7 +242,10 @@ class DydxChainTransactions implements AbacusDYDXChainTransactionsProtocol { execution as OrderExecution, postOnly ?? undefined, reduceOnly ?? undefined, - triggerPrice ?? undefined + triggerPrice ?? undefined, + undefined, + undefined, + goodTilBlock ?? undefined ); // Handle stateful orders @@ -241,9 +258,11 @@ class DydxChainTransactions implements AbacusDYDXChainTransactionsProtocol { const hash = parsedTx.hash.toUpperCase(); if (isTestnet) { + // eslint-disable-next-line no-console console.log( getMintscanTxLink(this.compositeClient.network.getString() as DydxChainId, hash) ); + // eslint-disable-next-line no-console } else console.log(`txHash: ${hash}`); return encodedTx; @@ -272,14 +291,15 @@ class DydxChainTransactions implements AbacusDYDXChainTransactionsProtocol { clientId, orderFlags, clobPairId, - goodTilBlock || undefined, - goodTilBlockTime || undefined + goodTilBlock === 0 ? undefined : goodTilBlock ?? undefined, + goodTilBlockTime === 0 ? undefined : goodTilBlockTime ?? undefined ); const encodedTx = encodeJson(tx); if (import.meta.env.MODE === 'development') { const parsedTx = JSON.parse(encodedTx); + // eslint-disable-next-line no-console console.log(parsedTx, parsedTx.hash.toUpperCase()); } @@ -332,9 +352,8 @@ class DydxChainTransactions implements AbacusDYDXChainTransactionsProtocol { throw new Error('Missing compositeClient or localWallet'); } - const { subaccountNumber, amount, recipient } = params ?? {}; + const { amount, recipient } = params ?? {}; const compositeClient = this.compositeClient; - const subaccountClient = new SubaccountClient(this.localWallet, subaccountNumber); try { const tx = await compositeClient.simulate( @@ -495,6 +514,37 @@ class DydxChainTransactions implements AbacusDYDXChainTransactionsProtocol { } } + async signCompliancePayload(params: { + message: string; + action: string; + status: string; + }): Promise<string> { + if (!this.hdkey?.privateKey || !this.hdkey?.publicKey) { + throw new Error('Missing hdkey'); + } + + try { + const { signedMessage, timestamp } = await signComplianceSignature( + params.message, + params.action, + params.status, + this.hdkey + ); + + return JSON.stringify({ + signedMessage, + publicKey: Buffer.from(this.hdkey.publicKey).toString('base64'), + timestamp, + }); + } catch (error) { + log('DydxChainTransactions/signComplianceMessage', error); + + return JSON.stringify({ + error, + }); + } + } + async transaction( type: TransactionTypes, paramsInJson: Abacus.Nullable<string>, @@ -539,6 +589,11 @@ class DydxChainTransactions implements AbacusDYDXChainTransactionsProtocol { callback(result); break; } + case TransactionType.SignCompliancePayload: { + const result = await this.signCompliancePayload(params); + callback(result); + break; + } default: { break; } @@ -564,11 +619,12 @@ class DydxChainTransactions implements AbacusDYDXChainTransactionsProtocol { const params = paramsInJson ? JSON.parse(paramsInJson) : undefined; switch (type) { - case QueryType.Height: + case QueryType.Height: { const block = await this.compositeClient?.validatorClient.get.latestBlock(); callback(JSON.stringify(block)); break; - case QueryType.OptimalNode: + } + case QueryType.OptimalNode: { const networkOptimizer = new NetworkOptimizer(); const optimalNode = await networkOptimizer.findOptimalNode( params.endpointUrls, @@ -576,32 +632,37 @@ class DydxChainTransactions implements AbacusDYDXChainTransactionsProtocol { ); callback(JSON.stringify({ url: optimalNode })); break; - case QueryType.EquityTiers: + } + case QueryType.EquityTiers: { const equityTiers = await this.compositeClient?.validatorClient.get.getEquityTierLimitConfiguration(); const parsedEquityTiers = this.parseToPrimitives(equityTiers); callback(JSON.stringify(parsedEquityTiers)); break; - case QueryType.FeeTiers: + } + case QueryType.FeeTiers: { const feeTiers = await this.compositeClient?.validatorClient.get.getFeeTiers(); const parsedFeeTiers = this.parseToPrimitives(feeTiers); callback(JSON.stringify(parsedFeeTiers)); break; - case QueryType.UserFeeTier: + } + case QueryType.UserFeeTier: { const userFeeTier = await this.compositeClient?.validatorClient.get.getUserFeeTier( params.address ); const parsedUserFeeTier = this.parseToPrimitives(userFeeTier); callback(JSON.stringify(parsedUserFeeTier)); break; - case QueryType.UserStats: + } + case QueryType.UserStats: { const userStats = await this.compositeClient?.validatorClient.get.getUserStats( params.address ); const parsedUserStats = this.parseToPrimitives(userStats); callback(JSON.stringify(parsedUserStats)); break; - case QueryType.GetAccountBalances: + } + case QueryType.GetAccountBalances: { if (!this.localWallet?.address) throw new Error('Missing localWallet'); const accountBalances = await this.compositeClient?.validatorClient.get.getAccountBalances( @@ -610,31 +671,37 @@ class DydxChainTransactions implements AbacusDYDXChainTransactionsProtocol { const parsedAccountBalances = this.parseToPrimitives(accountBalances); callback(JSON.stringify(parsedAccountBalances)); break; - case QueryType.RewardsParams: + } + case QueryType.RewardsParams: { const rewardsParams = await this.compositeClient?.validatorClient.get.getRewardsParams(); const parsedRewardsParams = this.parseToPrimitives(rewardsParams); callback(JSON.stringify(parsedRewardsParams)); break; - case QueryType.GetMarketPrice: + } + case QueryType.GetMarketPrice: { const price = await this.compositeClient?.validatorClient.get.getPrice(params.marketId); const parsedPrice = this.parseToPrimitives(price); callback(JSON.stringify(parsedPrice)); break; - case QueryType.GetDelegations: + } + case QueryType.GetDelegations: { const delegations = await this.compositeClient?.validatorClient.get.getDelegatorDelegations(params.address); const parseDelegations = this.parseToPrimitives(delegations); callback(JSON.stringify(parseDelegations)); break; - case QueryType.GetNobleBalance: + } + case QueryType.GetNobleBalance: { if (this.nobleClient?.isConnected) { const nobleBalance = await this.nobleClient.getAccountBalance('uusdc'); const parsedNobleBalance = this.parseToPrimitives(nobleBalance); callback(JSON.stringify(parsedNobleBalance)); } break; - default: + } + default: { break; + } } } catch (error) { log('DydxChainTransactions/get', error); diff --git a/src/lib/abacus/filesystem.ts b/src/lib/abacus/filesystem.ts index db7408669..d02b13721 100644 --- a/src/lib/abacus/filesystem.ts +++ b/src/lib/abacus/filesystem.ts @@ -1,11 +1,11 @@ -import type { AbacusFileSystemProtocol, FileLocation, Nullable } from '@/constants/abacus'; +import type { AbacusFileSystemProtocol, Nullable } from '@/constants/abacus'; class AbacusFileSystem implements AbacusFileSystemProtocol { - readTextFile(location: FileLocation, path: string): Nullable<string> { + readTextFile(): Nullable<string> { return null; } - writeTextFile(path: string, text: string): boolean { + writeTextFile(): boolean { return true; } } diff --git a/src/lib/abacus/formatter.ts b/src/lib/abacus/formatter.ts index bebfe0d24..725c9b208 100644 --- a/src/lib/abacus/formatter.ts +++ b/src/lib/abacus/formatter.ts @@ -1,6 +1,6 @@ import type { AbacusFormatterProtocol } from '@/constants/abacus'; -import { type LocaleSeparators, MustBigNumber, getFractionDigits } from '../numbers'; +import { MustBigNumber, getFractionDigits, type LocaleSeparators } from '../numbers'; class AbacusFormatter implements AbacusFormatterProtocol { localeSeparators: LocaleSeparators; diff --git a/src/lib/abacus/index.ts b/src/lib/abacus/index.ts index c3be440a0..bf9267685 100644 --- a/src/lib/abacus/index.ts +++ b/src/lib/abacus/index.ts @@ -1,61 +1,72 @@ -import type { LocalWallet } from '@dydxprotocol/v4-client-js'; +import type { LocalWallet, SelectedGasDenom } from '@dydxprotocol/v4-client-js'; import type { ClosePositionInputFields, - Nullable, + HistoricalPnlPeriods, HistoricalTradingRewardsPeriod, HistoricalTradingRewardsPeriods, - HumanReadablePlaceOrderPayload, HumanReadableCancelOrderPayload, + HumanReadablePlaceOrderPayload, + HumanReadableTriggerOrdersPayload, + Nullable, + ParsingError, TradeInputFields, TransferInputFields, - HistoricalPnlPeriods, - ParsingError, + TriggerOrdersInputFields, } from '@/constants/abacus'; - import { - AsyncAbacusStateManager, + AbacusAppConfig, AbacusHelper, + ApiData, + AsyncAbacusStateManager, ClosePositionInputField, + ComplianceAction, + CoroutineTimer, HistoricalPnlPeriod, + IOImplementations, TradeInputField, TransferInputField, - IOImplementations, - UIImplementations, - CoroutineTimer, TransferType, - AbacusAppConfig, - ApiData, + TriggerOrdersInputField, + UIImplementations, } from '@/constants/abacus'; - +import { Hdkey } from '@/constants/account'; import { DEFAULT_MARKETID } from '@/constants/markets'; -import { CURRENT_ABACUS_DEPLOYMENT, type DydxNetwork, isMainnet } from '@/constants/networks'; +import { CURRENT_ABACUS_DEPLOYMENT, type DydxNetwork } from '@/constants/networks'; import { CLEARED_SIZE_INPUTS, CLEARED_TRADE_INPUTS } from '@/constants/trade'; import type { RootStore } from '@/state/_store'; import { setTradeFormInputs } from '@/state/inputs'; import { getInputTradeOptions, getTransferInputs } from '@/state/inputsSelectors'; -import AbacusRest from './rest'; +import { LocaleSeparators } from '../numbers'; import AbacusAnalytics from './analytics'; -import AbacusWebsocket from './websocket'; +// eslint-disable-next-line import/no-cycle import AbacusChainTransaction from './dydxChainTransactions'; -import AbacusStateNotifier from './stateNotification'; -import AbacusLocalizer from './localizer'; +import AbacusFileSystem from './filesystem'; import AbacusFormatter from './formatter'; +import AbacusLocalizer from './localizer'; +import AbacusLogger from './logger'; +import AbacusRest from './rest'; +import AbacusStateNotifier from './stateNotification'; import AbacusThreading from './threading'; -import AbacusFileSystem from './filesystem'; -import { LocaleSeparators } from '../numbers'; +import AbacusWebsocket from './websocket'; class AbacusStateManager { private store: RootStore | undefined; + private currentMarket: string | undefined; stateManager: InstanceType<typeof AsyncAbacusStateManager>; + websocket: AbacusWebsocket; + stateNotifier: AbacusStateNotifier; + analytics: AbacusAnalytics; + abacusFormatter: AbacusFormatter; + chainTransactions: AbacusChainTransaction; constructor() { @@ -75,7 +86,8 @@ class AbacusStateManager { this.analytics, new AbacusThreading(), new CoroutineTimer(), - new AbacusFileSystem() + new AbacusFileSystem(), + new AbacusLogger() ); const uiImplementations = new UIImplementations( @@ -84,7 +96,11 @@ class AbacusStateManager { this.abacusFormatter ); - const appConfigs = AbacusAppConfig.Companion.forWeb; + const appConfigs = new AbacusAppConfig( + false, // subscribeToCandles + true, // loadRemote + import.meta.env.MODE === 'development' && import.meta.env.VITE_ENABLE_ABACUS_LOGGING // enableLogger + ); appConfigs.squidVersion = AbacusAppConfig.SquidVersion.V2; this.stateManager = new AsyncAbacusStateManager( @@ -172,13 +188,38 @@ class AbacusStateManager { this.setTransferValue({ value: null, field: TransferInputField.usdcSize }); }; + clearTriggerOrdersInputValues = () => { + this.setTriggerOrdersValue({ value: null, field: TriggerOrdersInputField.size }); + + this.setTriggerOrdersValue({ value: null, field: TriggerOrdersInputField.stopLossOrderId }); + this.setTriggerOrdersValue({ value: null, field: TriggerOrdersInputField.stopLossPrice }); + this.setTriggerOrdersValue({ value: null, field: TriggerOrdersInputField.stopLossLimitPrice }); + this.setTriggerOrdersValue({ value: null, field: TriggerOrdersInputField.stopLossPercentDiff }); + this.setTriggerOrdersValue({ value: null, field: TriggerOrdersInputField.stopLossUsdcDiff }); + this.setTriggerOrdersValue({ value: null, field: TriggerOrdersInputField.stopLossOrderType }); + + this.setTriggerOrdersValue({ value: null, field: TriggerOrdersInputField.takeProfitOrderId }); + this.setTriggerOrdersValue({ value: null, field: TriggerOrdersInputField.takeProfitPrice }); + this.setTriggerOrdersValue({ + value: null, + field: TriggerOrdersInputField.takeProfitLimitPrice, + }); + this.setTriggerOrdersValue({ + value: null, + field: TriggerOrdersInputField.takeProfitPercentDiff, + }); + this.setTriggerOrdersValue({ value: null, field: TriggerOrdersInputField.takeProfitUsdcDiff }); + this.setTriggerOrdersValue({ value: null, field: TriggerOrdersInputField.takeProfitOrderType }); + }; + resetInputState = () => { this.clearTransferInputValues(); this.setTransferValue({ field: TransferInputField.type, value: null, }); - this.clearTradeInputValues(); + this.clearTriggerOrdersInputValues(); + this.clearTradeInputValues({ shouldResetSize: true }); }; // ------ Set Data ------ // @@ -188,10 +229,11 @@ class AbacusStateManager { this.chainTransactions.setStore(store); }; - setAccount = (localWallet?: LocalWallet) => { + setAccount = (localWallet?: LocalWallet, hdkey?: Hdkey) => { if (localWallet) { this.stateManager.accountAddress = localWallet.address; this.chainTransactions.setLocalWallet(localWallet); + if (hdkey) this.chainTransactions.setHdkey(hdkey); } }; @@ -214,6 +256,10 @@ class AbacusStateManager { this.stateManager.market = marketId; }; + setSelectedGasDenom = (denom: SelectedGasDenom) => { + this.chainTransactions.setSelectedGasDenom(denom); + }; + setTradeValue = ({ value, field }: { value: any; field: TradeInputFields }) => { this.stateManager.trade(value, field); }; @@ -222,6 +268,10 @@ class AbacusStateManager { this.stateManager.transfer(value, field); }; + setTriggerOrdersValue = ({ value, field }: { value: any; field: TriggerOrdersInputFields }) => { + this.stateManager.triggerOrders(value, field); + }; + setHistoricalPnlPeriod = ( period: (typeof HistoricalPnlPeriod)[keyof typeof HistoricalPnlPeriod] ) => { @@ -280,10 +330,23 @@ class AbacusStateManager { ) => void ) => this.stateManager.cancelOrder(orderId, callback); + triggerOrders = ( + callback: ( + success: boolean, + parsingError: Nullable<ParsingError>, + data: Nullable<HumanReadableTriggerOrdersPayload> + ) => void + ): Nullable<HumanReadableTriggerOrdersPayload> => this.stateManager.commitTriggerOrders(callback); + cctpWithdraw = ( callback: (success: boolean, parsingError: Nullable<ParsingError>, data: string) => void ): void => this.stateManager.commitCCTPWithdraw(callback); + triggerCompliance = ( + action: typeof ComplianceAction.VALID_SURVEY | typeof ComplianceAction.INVALID_SURVEY, + callback: (success: boolean, parsingError: Nullable<ParsingError>, data: string) => void + ): void => this.stateManager.triggerCompliance(action, callback); + // ------ Utils ------ // getHistoricalPnlPeriod = (): Nullable<HistoricalPnlPeriods> => this.stateManager.historicalPnlPeriod; diff --git a/src/lib/abacus/localizer.ts b/src/lib/abacus/localizer.ts index 3c5c03bfb..a51bdc0f1 100644 --- a/src/lib/abacus/localizer.ts +++ b/src/lib/abacus/localizer.ts @@ -1,7 +1,7 @@ import type { AbacusLocalizerProtocol } from '@/constants/abacus'; class AbacusLocalizer implements Omit<AbacusLocalizerProtocol, '__doNotUseOrImplementIt'> { - localize(path: string, paramsAsJson: string): string { + localize(path: string): string { return path; } } diff --git a/src/lib/abacus/logger.ts b/src/lib/abacus/logger.ts new file mode 100644 index 000000000..ee4053c75 --- /dev/null +++ b/src/lib/abacus/logger.ts @@ -0,0 +1,18 @@ +/* eslint-disable no-console */ +import type { AbacusLoggingProtocol } from '@/constants/abacus'; + +class AbacusLogger implements Omit<AbacusLoggingProtocol, '__doNotUseOrImplementIt'> { + d(tag: string, message: string) { + if (import.meta.env.VITE_ENABLE_ABACUS_LOGGING) { + console.log(`${tag}: ${message}`); + } + } + + e(tag: string, message: string) { + if (import.meta.env.VITE_ENABLE_ABACUS_LOGGING) { + console.error(`${tag}: ${message}`); + } + } +} + +export default AbacusLogger; diff --git a/src/lib/abacus/rest.ts b/src/lib/abacus/rest.ts index 12245f578..443c9bb06 100644 --- a/src/lib/abacus/rest.ts +++ b/src/lib/abacus/rest.ts @@ -1,11 +1,10 @@ import type { Nullable, kollections } from '@dydxprotocol/v4-abacus'; import type { AbacusRestProtocol } from '@/constants/abacus'; - -import { lastSuccessfulRestRequestByOrigin } from '@/hooks/useAnalytics'; +import { lastSuccessfulRestRequestByOrigin } from '@/constants/analytics'; type Headers = Nullable<kollections.Map<string, string>>; -type FetchResponseCallback = (p0: Nullable<string>, p1: number) => void; +type FetchResponseCallback = (p0: Nullable<string>, p1: number, p2: Nullable<string>) => void; class AbacusRest implements AbacusRestProtocol { get(url: string, headers: Headers, callback: FetchResponseCallback): void { @@ -48,21 +47,29 @@ class AbacusRest implements AbacusRestProtocol { }; if (!url) { - callback(null, 0); + callback(null, 0, null); return; } fetch(url, options) .then(async (response) => { const data = await response.text(); + const headersObj: Record<string, string> = {}; + response.headers.forEach((value, key) => { + headersObj[key] = value; + }); + // Stringify the headers object + const headersJson = JSON.stringify(headersObj); + + callback(data, response.status, headersJson); - callback(data, response.status); - try { lastSuccessfulRestRequestByOrigin[new URL(url).origin] = Date.now(); - } catch {} + } catch (error) { + // expected error when bad url + } }) - .catch(() => callback(null, 0)); // Network error or request couldn't be made + .catch(() => callback(null, 0, null)); // Network error or request couldn't be made } private mapToHeaders(map: Headers): HeadersInit { diff --git a/src/lib/abacus/stateNotification.ts b/src/lib/abacus/stateNotification.ts index b8b328cc0..2bf3230c7 100644 --- a/src/lib/abacus/stateNotification.ts +++ b/src/lib/abacus/stateNotification.ts @@ -1,10 +1,11 @@ import { kollections } from '@dydxprotocol/v4-abacus'; +import { fromPairs } from 'lodash'; import type { - AccountBalance, AbacusApiState, AbacusNotification, AbacusStateNotificationProtocol, + AccountBalance, Asset, Nullable, ParsingErrors, @@ -13,32 +14,32 @@ import type { PerpetualStateChanges, SubaccountOrder, } from '@/constants/abacus'; - import { Changes } from '@/constants/abacus'; import type { RootStore } from '@/state/_store'; - import { setBalances, - setStakingBalances, + setCompliance, setFills, setFundingPayments, setHistoricalPnl, setLatestOrder, setRestrictionType, + setStakingBalances, setSubaccount, + setTradingRewards, setTransfers, setWallet, - setTradingRewards, } from '@/state/account'; - import { setApiState } from '@/state/app'; import { setAssets } from '@/state/assets'; import { setConfigs } from '@/state/configs'; import { setInputs } from '@/state/inputs'; import { updateNotifications } from '@/state/notifications'; import { setHistoricalFundings, setLiveTrades, setMarkets, setOrderbook } from '@/state/perpetuals'; + import { isTruthy } from '../isTruthy'; +import { testFlags } from '../testFlags'; class AbacusStateNotifier implements AbacusStateNotificationProtocol { private store: RootStore | undefined; @@ -47,13 +48,10 @@ class AbacusStateNotifier implements AbacusStateNotificationProtocol { this.store = undefined; } - environmentsChanged(): void { - return; - } + environmentsChanged(): void {} notificationsChanged(notifications: kollections.List<AbacusNotification>): void { this.store?.dispatch(updateNotifications(notifications.toArray())); - return; } stateChanged( @@ -62,7 +60,7 @@ class AbacusStateNotifier implements AbacusStateNotificationProtocol { ): void { if (!this.store) return; const { dispatch } = this.store; - const changes = new Set(incomingChanges?.changes.toArray() || []); + const changes = new Set(incomingChanges?.changes.toArray() ?? []); const marketIds = incomingChanges?.markets?.toArray(); const subaccountNumbers = incomingChanges?.subaccountNumbers?.toArray(); @@ -71,7 +69,7 @@ class AbacusStateNotifier implements AbacusStateNotificationProtocol { dispatch( setAssets( Object.fromEntries( - (updatedState?.assetIds()?.toArray() || []).map((assetId: string) => { + (updatedState?.assetIds()?.toArray() ?? []).map((assetId: string) => { const assetData = updatedState?.asset(assetId); return [assetId, assetData]; }) @@ -82,17 +80,15 @@ class AbacusStateNotifier implements AbacusStateNotificationProtocol { if (changes.has(Changes.accountBalances)) { if (updatedState.account?.balances) { - const balances: Record<string, AccountBalance> = {}; - for (const { k, v } of updatedState.account.balances.toArray()) { - balances[k] = v; - } + const balances: Record<string, AccountBalance> = fromPairs( + updatedState.account.balances.toArray().map(({ k, v }) => [k, v]) + ); dispatch(setBalances(balances)); } if (updatedState.account?.stakingBalances) { - const stakingBalances: Record<string, AccountBalance> = {}; - for (const { k, v } of updatedState.account.stakingBalances.toArray()) { - stakingBalances[k] = v; - } + const stakingBalances: Record<string, AccountBalance> = fromPairs( + updatedState.account.stakingBalances.toArray().map(({ k, v }) => [k, v]) + ); dispatch(setStakingBalances(stakingBalances)); } } @@ -119,7 +115,7 @@ class AbacusStateNotifier implements AbacusStateNotificationProtocol { dispatch( setMarkets({ markets: Object.fromEntries( - (marketIds || updatedState.marketIds()?.toArray() || []) + (marketIds ?? updatedState.marketIds()?.toArray() ?? []) .map((marketId: string) => { const marketData = updatedState.market(marketId); return [marketId, marketData]; @@ -135,6 +131,14 @@ class AbacusStateNotifier implements AbacusStateNotificationProtocol { dispatch(setRestrictionType(updatedState.restriction)); } + if ( + changes.has(Changes.compliance) && + updatedState.compliance && + testFlags.enableComplianceApi + ) { + dispatch(setCompliance(updatedState.compliance)); + } + subaccountNumbers?.forEach((subaccountId: number) => { if (subaccountId !== null) { if (changes.has(Changes.subaccount)) { @@ -142,24 +146,24 @@ class AbacusStateNotifier implements AbacusStateNotificationProtocol { } if (changes.has(Changes.fills)) { - const fills = updatedState.subaccountFills(subaccountId)?.toArray() || []; + const fills = updatedState.subaccountFills(subaccountId)?.toArray() ?? []; dispatch(setFills(fills)); } if (changes.has(Changes.fundingPayments)) { const fundingPayments = - updatedState.subaccountFundingPayments(subaccountId)?.toArray() || []; + updatedState.subaccountFundingPayments(subaccountId)?.toArray() ?? []; dispatch(setFundingPayments(fundingPayments)); } if (changes.has(Changes.transfers)) { - const transfers = updatedState.subaccountTransfers(subaccountId)?.toArray() || []; + const transfers = updatedState.subaccountTransfers(subaccountId)?.toArray() ?? []; dispatch(setTransfers(transfers)); } if (changes.has(Changes.historicalPnl)) { const historicalPnl = - updatedState.subaccountHistoricalPnl(subaccountId)?.toArray() || []; + updatedState.subaccountHistoricalPnl(subaccountId)?.toArray() ?? []; dispatch(setHistoricalPnl(historicalPnl)); } } @@ -175,12 +179,12 @@ class AbacusStateNotifier implements AbacusStateNotificationProtocol { } if (changes.has(Changes.trades)) { - const trades = updatedState.marketTrades(market)?.toArray() || []; + const trades = updatedState.marketTrades(market)?.toArray() ?? []; dispatch(setLiveTrades({ trades, marketId: market })); } if (changes.has(Changes.historicalFundings)) { - const historicalFundings = updatedState.historicalFunding(market)?.toArray() || []; + const historicalFundings = updatedState.historicalFunding(market)?.toArray() ?? []; dispatch( setHistoricalFundings({ @@ -198,6 +202,7 @@ class AbacusStateNotifier implements AbacusStateNotificationProtocol { } errorsEmitted(errors: ParsingErrors) { + // eslint-disable-next-line no-console console.error('parse errors', errors.toArray()); } diff --git a/src/lib/abacus/websocket.ts b/src/lib/abacus/websocket.ts index 3712f14bb..f646b52b9 100644 --- a/src/lib/abacus/websocket.ts +++ b/src/lib/abacus/websocket.ts @@ -1,17 +1,9 @@ import type { AbacusWebsocketProtocol } from '@/constants/abacus'; +import { lastSuccessfulWebsocketRequestByOrigin } from '@/constants/analytics'; import type { TradingViewBar } from '@/constants/candles'; import { isDev } from '@/constants/networks'; -import { - PING_INTERVAL_MS, - PONG_TIMEOUT_MS, - OUTGOING_PING_MESSAGE, - PONG_MESSAGE_TYPE, -} from '@/constants/websocket'; - -import { lastSuccessfulWebsocketRequestByOrigin } from '@/hooks/useAnalytics'; import { testFlags } from '@/lib/testFlags'; - import { subscriptionsByChannelId } from '@/lib/tradingView/dydxfeed/cache'; import { mapCandle } from '@/lib/tradingView/utils'; @@ -21,14 +13,21 @@ const RECONNECT_INTERVAL_MS = 10_000; class AbacusWebsocket implements Omit<AbacusWebsocketProtocol, '__doNotUseOrImplementIt'> { private socket: WebSocket | null = null; + private url: string | null = null; + private connectedCallback: ((p0: boolean) => void) | null = null; + private receivedCallback: ((p0: string) => void) | null = null; - private pingPongTimer?: NodeJS.Timer; private disconnectTimer?: NodeJS.Timer; + + private reconnectTimer?: NodeJS.Timer; + private currentCandleId: string | undefined; + private isConnecting: boolean = false; + connect(url: string, connected: (p0: boolean) => void, received: (p0: string) => void): void { this.url = url; this.connectedCallback = connected; @@ -85,17 +84,17 @@ class AbacusWebsocket implements Omit<AbacusWebsocketProtocol, '__doNotUseOrImpl private _initializeSocket = (): void => { if (!this.url || !this.connectedCallback || !this.receivedCallback) return; + if ((this.socket && this.socket.readyState === WebSocket.OPEN) || this.isConnecting) { + return; + } + + this.isConnecting = true; + this.socket = new WebSocket(this.url); this.socket.onopen = () => { + this.isConnecting = false; if (this.socket?.readyState === WebSocket.OPEN) { - this.pingPongTimer = setInterval(() => { - if (this.socket && this.socket.readyState === WebSocket.OPEN) { - this.socket.send(OUTGOING_PING_MESSAGE); - } - }, PING_INTERVAL_MS); - this._setDisconnectTimeout(); - this._setReconnectInterval(); if (this.currentCandleId) { @@ -113,65 +112,60 @@ class AbacusWebsocket implements Omit<AbacusWebsocketProtocol, '__doNotUseOrImpl try { const parsedMessage = JSON.parse(m.data); - if (parsedMessage?.type === PONG_MESSAGE_TYPE) { - clearTimeout(this.disconnectTimer); - this._setDisconnectTimeout(); - } else { - let shouldProcess = true; + let shouldProcess = true; - switch (parsedMessage?.channel) { - case 'v4_orderbook': { - shouldProcess = import.meta.env.VITE_ABACUS_PROCESS_ORDERBOOK !== '0'; - break; + switch (parsedMessage?.channel) { + case 'v4_orderbook': { + shouldProcess = import.meta.env.VITE_ABACUS_PROCESS_ORDERBOOK !== '0'; + break; + } + case 'v4_candles': { + shouldProcess = false; + const { id, contents } = parsedMessage; + + if (id && contents) { + const subscriptionItem = subscriptionsByChannelId.get(id); + const updatedCandle = contents[0]; + + if (updatedCandle && subscriptionItem) { + const bar: TradingViewBar = mapCandle(updatedCandle); + subscriptionItem.lastBar = bar; + + // send data to every subscriber of that symbol + Object.values(subscriptionItem.handlers).forEach((handler: any) => + handler.callback(bar) + ); + } } - case 'v4_candles': { - shouldProcess = false; - const { id, contents } = parsedMessage; - - if (id && contents) { - const subscriptionItem = subscriptionsByChannelId.get(id); - const updatedCandle = contents[0]; - if (updatedCandle && subscriptionItem) { - const bar: TradingViewBar = mapCandle(updatedCandle); - subscriptionItem.lastBar = bar; + break; + } + case 'v4_markets': { + if (testFlags.displayInitializingMarkets) { + shouldProcess = false; + const { contents } = parsedMessage; - // send data to every subscriber of that symbol - Object.values(subscriptionItem.handlers).forEach((handler: any) => - handler.callback(bar) - ); + Object.keys(contents.markets ?? {}).forEach((market: any) => { + const status = contents.markets[market].status; + if (status === 'INITIALIZING') { + contents.markets[market].status = 'ONLINE'; } - } + }); - break; + this.receivedCallback?.(JSON.stringify(parsedMessage)); } - case 'v4_markets': { - if (testFlags.displayInitializingMarkets) { - shouldProcess = false; - const { contents } = parsedMessage; - - Object.keys(contents.markets ?? {}).forEach((market: any) => { - const status = contents.markets[market].status; - if (status === 'INITIALIZING') { - contents.markets[market].status = 'ONLINE'; - } - }); - - this.receivedCallback?.(JSON.stringify(parsedMessage)); - } - break; - } - default: { - break; - } + break; } - - if (shouldProcess && this.receivedCallback) { - this.receivedCallback(m.data); + default: { + break; } } + if (shouldProcess && this.receivedCallback) { + this.receivedCallback(m.data); + } + lastSuccessfulWebsocketRequestByOrigin[new URL(this.url!).origin] = Date.now(); } catch (error) { log('AbacusWebsocketProtocol/onmessage', error); @@ -179,14 +173,18 @@ class AbacusWebsocket implements Omit<AbacusWebsocketProtocol, '__doNotUseOrImpl }; this.socket.onclose = (e) => { + this.isConnecting = false; this.connectedCallback?.(false); if (!isDev) return; + // eslint-disable-next-line no-console console.warn('AbacusStateManager > WS > close > ', e); }; this.socket.onerror = (e) => { + this.isConnecting = false; this.connectedCallback?.(false); if (!isDev) return; + // eslint-disable-next-line no-console console.error('AbacusStateManager > WS > error > ', e); }; }; @@ -196,9 +194,6 @@ class AbacusWebsocket implements Omit<AbacusWebsocketProtocol, '__doNotUseOrImpl this.socket?.close(); this.socket = null; - clearInterval(this.pingPongTimer); - delete this.pingPongTimer; - clearInterval(this.disconnectTimer); delete this.disconnectTimer; @@ -206,7 +201,9 @@ class AbacusWebsocket implements Omit<AbacusWebsocketProtocol, '__doNotUseOrImpl }; private _setReconnectInterval = () => { - setInterval(() => { + if (this.reconnectTimer !== null) clearInterval(this.reconnectTimer); + + this.reconnectTimer = setInterval(() => { if ( !this.socket || this.socket.readyState === WebSocket.CLOSED || @@ -217,12 +214,6 @@ class AbacusWebsocket implements Omit<AbacusWebsocketProtocol, '__doNotUseOrImpl } }, RECONNECT_INTERVAL_MS); }; - - private _setDisconnectTimeout = () => { - this.disconnectTimer = setTimeout(() => { - this._clearSocket(); - }, PONG_TIMEOUT_MS); - }; } export default AbacusWebsocket; diff --git a/src/lib/addressUtils.ts b/src/lib/addressUtils.ts index 1e2f954bc..e6c366c0b 100644 --- a/src/lib/addressUtils.ts +++ b/src/lib/addressUtils.ts @@ -1,4 +1,4 @@ -import { fromBech32, toBech32, fromHex, toHex } from '@cosmjs/encoding'; +import { fromBech32, fromHex, toBech32, toHex } from '@cosmjs/encoding'; // ============ Byte Helpers ============ export const stripHexPrefix = (input: string): string => { diff --git a/src/lib/analytics.ts b/src/lib/analytics.ts index 7904c786a..0bc39fecf 100644 --- a/src/lib/analytics.ts +++ b/src/lib/analytics.ts @@ -1,10 +1,12 @@ import type { - AnalyticsUserProperty, - AnalyticsUserPropertyValue, AnalyticsEvent, AnalyticsEventData, + AnalyticsUserProperty, + AnalyticsUserPropertyValue, } from '@/constants/analytics'; +import { testFlags } from './testFlags'; + const DEBUG_ANALYTICS = false; export const identify = <T extends AnalyticsUserProperty>( @@ -12,6 +14,7 @@ export const identify = <T extends AnalyticsUserProperty>( propertyValue: AnalyticsUserPropertyValue<T> ) => { if (DEBUG_ANALYTICS) { + // eslint-disable-next-line no-console console.log(`[Analytics:Identify] ${property}`, propertyValue); } const customEvent = new CustomEvent('dydx:identify', { @@ -25,11 +28,13 @@ export const track = <T extends AnalyticsEvent>( eventType: T, eventData?: AnalyticsEventData<T> ) => { + const eventDataWithReferrer = { ...(eventData ?? {}), referrer: testFlags.referrer }; if (DEBUG_ANALYTICS) { - console.log(`[Analytics] ${eventType}`, eventData); + // eslint-disable-next-line no-console + console.log(`[Analytics] ${eventType}`, eventDataWithReferrer); } const customEvent = new CustomEvent('dydx:track', { - detail: { eventType, eventData }, + detail: { eventType, eventData: eventDataWithReferrer }, }); globalThis.dispatchEvent(customEvent); diff --git a/src/lib/assertNever.ts b/src/lib/assertNever.ts new file mode 100644 index 000000000..552bd3b0d --- /dev/null +++ b/src/lib/assertNever.ts @@ -0,0 +1,7 @@ +export function assertNever(value: never, noThrow?: boolean): never { + if (noThrow) { + return value; + } + + throw new Error(`Unhandled discriminated union member: ${JSON.stringify(value)}`); +} diff --git a/src/lib/compliance.ts b/src/lib/compliance.ts new file mode 100644 index 000000000..618ce0e4f --- /dev/null +++ b/src/lib/compliance.ts @@ -0,0 +1,30 @@ +import { Secp256k1, sha256 } from '@cosmjs/crypto'; + +import { Hdkey } from '@/constants/account'; +import { BLOCKED_COUNTRIES, CountryCodes, OFAC_SANCTIONED_COUNTRIES } from '@/constants/geo'; + +export const signComplianceSignature = async ( + message: string, + action: string, + status: string, + hdkey: Hdkey +): Promise<{ signedMessage: string; timestamp: number }> => { + if (!hdkey?.privateKey || !hdkey?.publicKey) { + throw new Error('Missing hdkey'); + } + + const timestampInSeconds = Math.floor(Date.now() / 1000); + const messageToSign: string = `${message}:${action}"${status || ''}:${timestampInSeconds}`; + const messageHash = sha256(Buffer.from(messageToSign)); + + const signed = await Secp256k1.createSignature(messageHash, hdkey.privateKey); + const signedMessage = signed.toFixedLength(); + return { + signedMessage: Buffer.from(signedMessage).toString('base64'), + timestamp: timestampInSeconds, + }; +}; + +export const isBlockedGeo = (geo: string): boolean => { + return [...BLOCKED_COUNTRIES, ...OFAC_SANCTIONED_COUNTRIES].includes(geo as CountryCodes); +}; diff --git a/src/lib/csv.ts b/src/lib/csv.ts new file mode 100644 index 000000000..d7f88d53c --- /dev/null +++ b/src/lib/csv.ts @@ -0,0 +1,15 @@ +import { ConfigOptions, download, generateCsv, mkConfig } from 'export-to-csv'; + +export const exportCSV = <T extends object>(data: T[], options: ConfigOptions = {}) => { + const { filename = 'generated', showColumnHeaders = true, ...rest } = options; + const config = mkConfig({ showColumnHeaders, filename, ...rest }); + + const csv = generateCsv(config)( + data as { + [k: string]: unknown; + [k: number]: unknown; + }[] + ); + + download(config)(csv); +}; diff --git a/src/lib/dateTime.ts b/src/lib/dateTime.ts index 063aa1288..5c8005b09 100644 --- a/src/lib/dateTime.ts +++ b/src/lib/dateTime.ts @@ -1,4 +1,4 @@ -import { timeUnits, allTimeUnits } from '@/constants/time'; +import { allTimeUnits, timeUnits } from '@/constants/time'; // Given a literal from Intl.RelativeTimeFormat formatToParts, // strip out words/symbols unrelated to time unit @@ -44,7 +44,7 @@ export const formatRelativeTime = ( locale: string; relativeToTimestamp?: number; format?: 'long' | 'short' | 'narrow' | 'singleCharacter'; - largestUnit: keyof typeof timeUnits; + largestUnit?: keyof typeof timeUnits; resolution?: number; stripRelativeWords?: boolean; } @@ -54,8 +54,9 @@ export const formatRelativeTime = ( const unitParts = []; + // eslint-disable-next-line no-restricted-syntax for (const [unit, amount] of Object.entries(timeUnits).slice( - Object.keys(timeUnits).findIndex((unit) => unit === largestUnit) + Object.keys(timeUnits).findIndex((u) => u === largestUnit) )) if (Math.abs(elapsed) >= amount) { unitParts.push( @@ -72,6 +73,7 @@ export const formatRelativeTime = ( }).formatToParts(sign * Math.floor(elapsed / amount), unit as keyof typeof timeUnits) ); + // eslint-disable-next-line no-plusplus, no-param-reassign if (--resolution === 0) break; elapsed %= amount; @@ -112,17 +114,43 @@ export const formatAbsoluteTime = ( ) => new Intl.DateTimeFormat( locale, - ({ - millisecond: { hour: 'numeric', minute: 'numeric', second: 'numeric', fractionalSecondDigits: 3, hour12: false }, - centisecond: { hour: 'numeric', minute: 'numeric', second: 'numeric', fractionalSecondDigits: 3, hour12: false }, - decisecond: { hour: 'numeric', minute: 'numeric', second: 'numeric', fractionalSecondDigits: 2, hour12: false }, - second: { hour: 'numeric', minute: 'numeric', second: 'numeric', fractionalSecondDigits: 1, hour12: false }, - minute: { hour: 'numeric', minute: 'numeric', second: 'numeric', hour12: false }, - hour: { hour: 'numeric', minute: 'numeric', second: 'numeric', hour12: false }, - day: { hour: 'numeric', minute: 'numeric' }, - threeDays: { weekday: 'short', hour: 'numeric' }, - week: { weekday: 'short', hour: 'numeric' }, - month: { month: 'numeric', day: 'numeric', hour: 'numeric' }, - year: { year: 'numeric', month: 'numeric', day: 'numeric' }, - } as const)[resolutionUnit] + ( + { + millisecond: { + hour: 'numeric', + minute: 'numeric', + second: 'numeric', + fractionalSecondDigits: 3, + hour12: false, + }, + centisecond: { + hour: 'numeric', + minute: 'numeric', + second: 'numeric', + fractionalSecondDigits: 3, + hour12: false, + }, + decisecond: { + hour: 'numeric', + minute: 'numeric', + second: 'numeric', + fractionalSecondDigits: 2, + hour12: false, + }, + second: { + hour: 'numeric', + minute: 'numeric', + second: 'numeric', + fractionalSecondDigits: 1, + hour12: false, + }, + minute: { hour: 'numeric', minute: 'numeric', second: 'numeric', hour12: false }, + hour: { hour: 'numeric', minute: 'numeric', second: 'numeric', hour12: false }, + day: { hour: 'numeric', minute: 'numeric' }, + threeDays: { weekday: 'short', hour: 'numeric' }, + week: { weekday: 'short', hour: 'numeric' }, + month: { month: 'numeric', day: 'numeric', hour: 'numeric' }, + year: { year: 'numeric', month: 'numeric', day: 'numeric' }, + } as const + )[resolutionUnit] ).format(timestamp); diff --git a/src/lib/errors.ts b/src/lib/errors.ts index 72bd68e5d..d991d8c28 100644 --- a/src/lib/errors.ts +++ b/src/lib/errors.ts @@ -3,6 +3,7 @@ */ export class StatefulOrderError extends Error { response: any; + code: number; constructor(message: any, response: any) { diff --git a/src/lib/formatString.ts b/src/lib/formatString.ts index a2ea72b8a..8eb86a04a 100644 --- a/src/lib/formatString.ts +++ b/src/lib/formatString.ts @@ -1,21 +1,27 @@ // implemntation based on https://github.com/stefalda/react-localization/blob/master/src/LocalizedStrings.js import React from 'react'; -const placeholderRegex = /(\{[\d|\w]+\})/; -const formatString = (str: string, params: { [key: string]: string | React.ReactNode } = {}): string | Array<string | React.ReactNode> => { +const PLACEHOLDER_REGEX = /(\{[\d|\w]+\})/; + +export type StringGetterParams = Record<string, any>; + +const formatString = <T extends StringGetterParams>( + str: string, + params?: T +): string | Array<string | React.ReactNode> => { let hasObject = false; const res = (str || '') - .split(placeholderRegex) + .split(PLACEHOLDER_REGEX) .filter((textPart) => !!textPart) .map((textPart, index) => { - if (textPart.match(placeholderRegex)) { + if (textPart.match(PLACEHOLDER_REGEX)) { const matchedKey = textPart.slice(1, -1); - let valueForPlaceholder = params[matchedKey]; + const valueForPlaceholder = params?.[matchedKey]; if (React.isValidElement(valueForPlaceholder)) { hasObject = true; return React.Children.toArray(valueForPlaceholder).map((component) => ({ - ...component, + ...(component as React.ReactElement), key: index.toString(), })); } diff --git a/src/lib/formatZeroNumbers.ts b/src/lib/formatZeroNumbers.ts new file mode 100644 index 000000000..a3df03247 --- /dev/null +++ b/src/lib/formatZeroNumbers.ts @@ -0,0 +1,60 @@ +const ZERO = '0'; + +const countZeros = (decimalDigits: string): number => { + let zeroCount = 0; + // eslint-disable-next-line no-plusplus + for (let i = 0; i < decimalDigits.length && decimalDigits[i] === ZERO; i++) { + // eslint-disable-next-line no-plusplus + zeroCount++; + } + return zeroCount; +}; + +export const formatZeroNumbers = (formattedValue: string, zerosThreshold: number = 4) => { + const punctuationSymbol = formattedValue.match(/[.,]/g)?.pop(); + const hasCurrencySymbol = formattedValue.match(/^[^\d]/)?.pop() !== undefined; + const significantDigitsSubStart = hasCurrencySymbol ? 1 : 0; + const currencySign = hasCurrencySymbol ? formattedValue[0] : undefined; + + if (!punctuationSymbol) { + return { + currencySign, + significantDigits: formattedValue.substring(significantDigitsSubStart), + }; + } + + const punctIdx = formattedValue.lastIndexOf(punctuationSymbol); + if (!formattedValue.includes(ZERO, punctIdx + 1) || punctIdx === formattedValue.length - 1) { + return { + currencySign, + significantDigits: formattedValue.substring(significantDigitsSubStart, punctIdx), + punctuationSymbol, + zeros: 0, + decimalDigits: formattedValue.substring(punctIdx + 1), + }; + } + + const charsAfterPunct = formattedValue.slice(punctIdx + 1); + const zerosCount = countZeros(charsAfterPunct); + + if (zerosCount < zerosThreshold) { + return { + currencySign, + significantDigits: formattedValue.substring(significantDigitsSubStart, punctIdx), + punctuationSymbol, + zeros: 0, + decimalDigits: charsAfterPunct, + }; + } + + const otherDigits = charsAfterPunct.substring(zerosCount); + const canDisplayZeros = zerosCount !== 0 || otherDigits.length !== 0; + + return { + currencySign, + significantDigits: formattedValue.substring(significantDigitsSubStart, punctIdx), + zeros: canDisplayZeros ? zerosCount : 0, + decimalDigits: otherDigits, + punctuationSymbol, + }; +}; diff --git a/src/lib/genericFunctionalComponentUtils.ts b/src/lib/genericFunctionalComponentUtils.ts new file mode 100644 index 000000000..184ca0daf --- /dev/null +++ b/src/lib/genericFunctionalComponentUtils.ts @@ -0,0 +1,27 @@ +import { ForwardedRef, PropsWithoutRef, ReactNode, RefAttributes, forwardRef } from 'react'; + +// a functional-only version of forwardRef. This only accepts and returns a functional component essentially and thus +// Typescript can fully apply higher order function type inference +// this is only necessary when render function props has generic type arguments +export const forwardRefFn: <T, P = {}>( + render: (props: P, ref: ForwardedRef<T>) => ReactNode +) => (props: PropsWithoutRef<P> & RefAttributes<T>) => ReactNode = forwardRef; + +// if your input and output components are fully functional, use this to type the styled result +// only necessary when render function props has generic type arguments +/* +Usage: + +type NavItemStyleProps = { orientation: 'horizontal' | 'vertical' }; +const navItemTypeTemp = getSimpleStyledOutputType(NavItem, {} as NavItemStyleProps); + +const $NavItem = styled(NavItem)<NavItemStyleProps>` + ...styles here +` as typeof navItemTypeTemp; +*/ + +// Note the output is a total lie, never use it at runtime, just for type inference +export const getSimpleStyledOutputType: <C = {}, P = {}>( + render: (props: P) => React.ReactNode, + style?: C +) => (props: P & C) => React.ReactNode = () => undefined as any; diff --git a/src/lib/isExternalLink.tsx b/src/lib/isExternalLink.tsx index 152cef90a..060006281 100644 --- a/src/lib/isExternalLink.tsx +++ b/src/lib/isExternalLink.tsx @@ -1,7 +1,10 @@ export const isExternalLink = (href: string | undefined) => { - if (href) + if (href) { try { return new URL(href).hostname !== globalThis.location.hostname; - } catch { } + } catch (error) { + return false; + } + } return false; }; diff --git a/src/lib/isTruthy.ts b/src/lib/isTruthy.ts index 3c622de6d..7eb742ffe 100644 --- a/src/lib/isTruthy.ts +++ b/src/lib/isTruthy.ts @@ -1,3 +1,2 @@ /** Boolean() with type narrowing */ -export const isTruthy = <T extends any>(n?: T | false | null | undefined | 0): n is T => - Boolean(n); +export const isTruthy = <T extends any>(n?: T | false | null | undefined | 0): n is T => Boolean(n); diff --git a/src/lib/localStorage.ts b/src/lib/localStorage.ts index e430d9022..e1aeebd35 100644 --- a/src/lib/localStorage.ts +++ b/src/lib/localStorage.ts @@ -3,7 +3,10 @@ import { LocalStorageKey } from '@/constants/localStorage'; import { log } from './telemetry'; export const setLocalStorage = <Value>({ key, value }: { key: LocalStorageKey; value: Value }) => { - if (value === undefined) return removeLocalStorage({ key }); + if (value === undefined) { + removeLocalStorage({ key }); + return; + } const serializedValue = JSON.stringify(value); diff --git a/src/lib/math.ts b/src/lib/math.ts index 6a0a111b8..f94653041 100644 --- a/src/lib/math.ts +++ b/src/lib/math.ts @@ -2,4 +2,5 @@ export const clamp = (n: number, min: number, max: number) => Math.max(min, Math export const lerp = (percent: number, from: number, to: number) => from + percent * (to - from); -export const map = (n: number, start1: number, stop1: number, start2: number, stop2: number) => lerp((n - start1) / (stop1 - start1), start2, stop2); +export const map = (n: number, start1: number, stop1: number, start2: number, stop2: number) => + lerp((n - start1) / (stop1 - start1), start2, stop2); diff --git a/src/lib/network.ts b/src/lib/network.ts index 75585ea9a..91a10c698 100644 --- a/src/lib/network.ts +++ b/src/lib/network.ts @@ -1,4 +1,4 @@ -import { type DydxNetwork, ENVIRONMENT_CONFIG_MAP, type DydxChainId } from '@/constants/networks'; +import { ENVIRONMENT_CONFIG_MAP, type DydxNetwork } from '@/constants/networks'; export const validateAgainstAvailableEnvironments = (value: DydxNetwork) => - Object.keys(ENVIRONMENT_CONFIG_MAP).includes(value); \ No newline at end of file + Object.keys(ENVIRONMENT_CONFIG_MAP).includes(value); diff --git a/src/lib/numbers.ts b/src/lib/numbers.ts index 986a4c1f1..ec5cb8503 100644 --- a/src/lib/numbers.ts +++ b/src/lib/numbers.ts @@ -1,5 +1,7 @@ import { BigNumber } from 'bignumber.js'; +import { NumberSign } from '@/constants/numbers'; + export type BigNumberish = BigNumber | string | number; export type LocaleSeparators = { group?: string; decimal?: string }; @@ -8,7 +10,9 @@ export const BIG_NUMBERS = { ONE: new BigNumber(1), }; -export const MustBigNumber = (amount?: BigNumberish | null) => new BigNumber(amount || 0); +export const MustBigNumber = (amount?: BigNumberish | null): BigNumber => + // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing + new BigNumber(amount || 0); /** * @description Rounds the input to the nearest multiple of `factor`, which must be non-zero. @@ -75,8 +79,16 @@ export function bytesToBigInt(u: Uint8Array): bigint { if (u.length <= 1) { return BigInt(0); } + // eslint-disable-next-line no-bitwise const negated: boolean = (u[0] & 1) === 1; const hex: string = Buffer.from(u.slice(1)).toString('hex'); const abs: bigint = BigInt(`0x${hex}`); return negated ? -abs : abs; } + +export const getNumberSign = (n: any): NumberSign => + MustBigNumber(n).gt(0) + ? NumberSign.Positive + : MustBigNumber(n).lt(0) + ? NumberSign.Negative + : NumberSign.Neutral; diff --git a/src/lib/objectEntries.ts b/src/lib/objectEntries.ts index 3fd4d4387..b0e862fb1 100644 --- a/src/lib/objectEntries.ts +++ b/src/lib/objectEntries.ts @@ -1,2 +1,3 @@ /** Object.entries() with key types preserved */ -export const objectEntries = <T extends object>(t: T) => Object.entries(t) as { [K in keyof T]: [K, T[K]] }[keyof T][]; +export const objectEntries = <T extends object>(t: T) => + Object.entries(t) as { [K in keyof T]: [K, T[K]] }[keyof T][]; diff --git a/src/lib/orderbookHelpers.ts b/src/lib/orderbookHelpers.ts index 45b49de5c..a590b76f5 100644 --- a/src/lib/orderbookHelpers.ts +++ b/src/lib/orderbookHelpers.ts @@ -1,5 +1,4 @@ // ------ Canvas helper methods ------ // - import type { MarketOrderbook, Nullable, PerpetualMarketOrderbookLevel } from '@/constants/abacus'; /** diff --git a/src/lib/orders.ts b/src/lib/orders.ts index 55c0e467c..3ef6c5f03 100644 --- a/src/lib/orders.ts +++ b/src/lib/orders.ts @@ -1,70 +1,61 @@ import { DateTime } from 'luxon'; -import { STRING_KEYS } from '@/constants/localization'; - import { AbacusOrderStatus, AbacusOrderType, AbacusOrderTypes, + KotlinIrEnumValues, + TRADE_TYPES, type Asset, + type OrderStatus, + type PerpetualMarket, type SubaccountFill, type SubaccountFundingPayment, type SubaccountOrder, - type Nullable, - type OrderStatus, - type PerpetualMarket, } from '@/constants/abacus'; import { IconName } from '@/components/Icon'; import { convertAbacusOrderSide } from '@/lib/abacus/conversions'; -import { MustBigNumber } from '@/lib/numbers'; -export const getStatusIconInfo = ({ - status, - totalFilled, -}: { - status: OrderStatus; - totalFilled: Nullable<number>; -}) => { +export const getOrderStatusInfo = ({ status }: { status: string }) => { switch (status) { - case AbacusOrderStatus.open: { - return MustBigNumber(totalFilled).gt(0) - ? { - statusIcon: IconName.OrderPartiallyFilled, - statusIconColor: `var(--color-warning)`, - statusStringKey: STRING_KEYS.PARTIALLY_FILLED, - } - : { - statusIcon: IconName.OrderOpen, - statusIconColor: `var(--color-text-2)`, - }; + case AbacusOrderStatus.open.rawValue: { + return { + statusIcon: IconName.OrderOpen, + statusIconColor: `var(--color-text-2)`, + }; } - case AbacusOrderStatus.filled: { + case AbacusOrderStatus.partiallyFilled.rawValue: + return { + statusIcon: IconName.OrderPartiallyFilled, + statusIconColor: `var(--color-warning)`, + }; + case AbacusOrderStatus.filled.rawValue: { return { statusIcon: IconName.OrderFilled, statusIconColor: `var(--color-success)`, }; } - case AbacusOrderStatus.cancelled: { + case AbacusOrderStatus.cancelled.rawValue: { return { statusIcon: IconName.OrderCanceled, statusIconColor: `var(--color-error)`, }; } - case AbacusOrderStatus.canceling: { + case AbacusOrderStatus.canceling.rawValue: { return { statusIcon: IconName.OrderPending, statusIconColor: `var(--color-error)`, }; } - case AbacusOrderStatus.untriggered: { + case AbacusOrderStatus.untriggered.rawValue: { return { statusIcon: IconName.OrderUntriggered, statusIconColor: `var(--color-text-2)`, }; } - case AbacusOrderStatus.pending: + case AbacusOrderStatus.pending.rawValue: default: { return { statusIcon: IconName.OrderPending, @@ -88,6 +79,26 @@ export const isMarketOrderType = (type?: AbacusOrderTypes) => AbacusOrderType.trailingStop, ].some(({ ordinal }) => ordinal === type.ordinal); +export const isLimitOrderType = (type?: AbacusOrderTypes) => + type && + [AbacusOrderType.limit, AbacusOrderType.stopLimit, AbacusOrderType.takeProfitLimit].some( + ({ ordinal }) => ordinal === type.ordinal + ); + +export const isStopLossOrder = (order: SubaccountOrder, isSlTpLimitOrdersEnabled: boolean) => { + const validOrderTypes = isSlTpLimitOrdersEnabled + ? [AbacusOrderType.stopLimit, AbacusOrderType.stopMarket] + : [AbacusOrderType.stopMarket]; + return validOrderTypes.some(({ ordinal }) => ordinal === order.type.ordinal) && order.reduceOnly; +}; + +export const isTakeProfitOrder = (order: SubaccountOrder, isSlTpLimitOrdersEnabled: boolean) => { + const validOrderTypes = isSlTpLimitOrdersEnabled + ? [AbacusOrderType.takeProfitLimit, AbacusOrderType.takeProfitMarket] + : [AbacusOrderType.takeProfitMarket]; + return validOrderTypes.some(({ ordinal }) => ordinal === order.type.ordinal) && order.reduceOnly; +}; + export const relativeTimeString = ({ timeInMs, selectedLocale, @@ -112,3 +123,6 @@ export const getHydratedTradingData = ({ tickSizeDecimals: perpetualMarkets?.[data.marketId]?.configs?.tickSizeDecimals, ...('side' in data && { orderSide: convertAbacusOrderSide(data.side) }), }); + +export const getTradeType = (orderType: string) => + TRADE_TYPES[orderType as KotlinIrEnumValues<typeof AbacusOrderType>]; diff --git a/src/lib/positions.ts b/src/lib/positions.ts new file mode 100644 index 000000000..c877ea8ef --- /dev/null +++ b/src/lib/positions.ts @@ -0,0 +1,27 @@ +import { Nullable, SubaccountPosition, type Asset, type PerpetualMarket } from '@/constants/abacus'; +import { TOKEN_DECIMALS, USD_DECIMALS } from '@/constants/numbers'; + +type HydratedPositionData = SubaccountPosition & { + asset?: Asset; + stepSizeDecimals: number; + tickSizeDecimals: number; + oraclePrice: Nullable<number>; +}; + +export const getHydratedPositionData = ({ + data, + assets, + perpetualMarkets, +}: { + data: SubaccountPosition; + assets?: Record<string, Asset>; + perpetualMarkets?: Record<string, PerpetualMarket>; +}) => { + return { + ...data, + asset: assets?.[data.assetId], + stepSizeDecimals: perpetualMarkets?.[data.id]?.configs?.stepSizeDecimals ?? TOKEN_DECIMALS, + tickSizeDecimals: perpetualMarkets?.[data.id]?.configs?.tickSizeDecimals ?? USD_DECIMALS, + oraclePrice: perpetualMarkets?.[data.id]?.oraclePrice, + } as HydratedPositionData; +}; diff --git a/src/lib/renderSvgToDataUrl.ts b/src/lib/renderSvgToDataUrl.ts index 13ee32908..548d17267 100644 --- a/src/lib/renderSvgToDataUrl.ts +++ b/src/lib/renderSvgToDataUrl.ts @@ -12,21 +12,22 @@ const applyComputedStyles = (html: string) => { computedStyle.getPropertyPriority(key) ) ); - const html = node.outerHTML; + const newHtml = node.outerHTML; document.body.removeChild(node); - return html; + return newHtml; } + return undefined; }; const toDataUrl = (bytes: string, type = 'image/svg+xml') => new Promise<string | ArrayBuffer | null>((resolve, reject) => { Object.assign(new FileReader(), { - onload: (e) => resolve(e.target.result), - onerror: (e) => reject(e.target.error), + onload: (e: ProgressEvent<FileReader>) => resolve(e.target?.result ?? null), + onerror: (e: ProgressEvent<FileReader>) => reject(e.target?.error), }).readAsDataURL(new File([bytes], '', { type })); }); export const renderSvgToDataUrl = async (node: React.ReactElement<any, 'svg'>) => { const { renderToString } = await import('react-dom/server'); - return await toDataUrl(applyComputedStyles(renderToString(node))!); + return toDataUrl(applyComputedStyles(renderToString(node))!); }; diff --git a/src/lib/squid.ts b/src/lib/squid.ts index 362d92254..87123b9f9 100644 --- a/src/lib/squid.ts +++ b/src/lib/squid.ts @@ -1,6 +1,7 @@ -import { isMainnet } from '@/constants/networks'; import { GetStatus, StatusResponse } from '@0xsquid/sdk'; +import { isMainnet } from '@/constants/networks'; + export const NATIVE_TOKEN_ADDRESS = '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE'; export const STATUS_ERROR_GRACE_PERIOD = 300_000; @@ -19,7 +20,8 @@ const getSquidStatusUrl = (isV2: boolean) => { export const fetchSquidStatus = async ( params: GetStatus, isV2?: boolean, - integratorId?: string + integratorId?: string, + requestId?: string ): Promise<StatusResponse> => { const parsedParams: { [key: string]: string } = { transactionId: params.transactionId, @@ -31,7 +33,8 @@ export const fetchSquidStatus = async ( const response = await fetch(url, { headers: { - 'x-integrator-id': integratorId || 'dYdX-api', + 'x-integrator-id': integratorId ?? 'dYdX-api', + 'x-request-id': requestId ?? '', }, }); diff --git a/src/lib/telemetry.ts b/src/lib/telemetry.ts index 339834b41..a7f810768 100644 --- a/src/lib/telemetry.ts +++ b/src/lib/telemetry.ts @@ -1,7 +1,8 @@ -import { isDev } from "@/constants/networks"; +import { isDev } from '@/constants/networks'; export const log = (location: string, error: Error, metadata?: any) => { if (isDev) { + // eslint-disable-next-line no-console console.warn('telemetry/log:', { location, error, metadata }); } diff --git a/src/lib/testFlags.ts b/src/lib/testFlags.ts index c9cd939f6..cc70e14fb 100644 --- a/src/lib/testFlags.ts +++ b/src/lib/testFlags.ts @@ -3,15 +3,24 @@ class TestFlags { constructor() { this.queryParams = {}; - const hash = window.location.hash; - const queryIndex = hash.indexOf('?'); - if (queryIndex === -1) return; - const queryParamsString = hash.substring(queryIndex + 1); - const params = new URLSearchParams(queryParamsString); + if (import.meta.env.VITE_ROUTER_TYPE === 'hash') { + const hash = window.location.hash; + const queryIndex = hash.indexOf('?'); + if (queryIndex === -1) return; - for (const [key, value] of params) { - this.queryParams[key.toLowerCase()] = value; + const queryParamsString = hash.substring(queryIndex + 1); + const params = new URLSearchParams(queryParamsString); + + params.forEach((value, key) => { + this.queryParams[key.toLowerCase()] = value; + }); + } else { + const params = new URLSearchParams(window.location.search); + + params.forEach((value, key) => { + this.queryParams[key.toLowerCase()] = value; + }); } } @@ -23,8 +32,20 @@ class TestFlags { return this.queryParams.address; } - get showTradingRewards() { - return !!this.queryParams.tradingrewards; + get isolatedMargin() { + return !!this.queryParams.isolatedmargin; + } + + get withNewMarketType() { + return !!this.queryParams.withnewmarkettype; + } + + get enableComplianceApi() { + return !!this.queryParams.complianceapi; + } + + get referrer() { + return this.queryParams.utm_source; } } diff --git a/src/lib/timeUtils.ts b/src/lib/timeUtils.ts index f676ed1bc..08088262f 100644 --- a/src/lib/timeUtils.ts +++ b/src/lib/timeUtils.ts @@ -60,14 +60,20 @@ export const getStringsForTimeInterval = (timeInterval: Duration) => { export const getTimeTillNextUnit = (unit: 'minute' | 'hour' | 'day') => { const now = new Date(); switch (unit) { - case 'minute': + case 'minute': { return 60 - now.getSeconds(); - case 'hour': + } + case 'hour': { return 3600 - (now.getMinutes() * 60 + now.getSeconds()); - case 'day': + } + case 'day': { const secondsTillNextHour = 3600 - (now.getMinutes() * 60 + now.getSeconds()); const hoursTillNextDay = 24 - (now.getHours() + 1); return secondsTillNextHour + hoursTillNextDay * 3600; + } + default: { + return undefined; + } } }; @@ -77,4 +83,4 @@ export const formatSeconds = (seconds: number) => { const minutes = Math.floor(seconds / 60); const remainingSeconds = seconds % 60; return `${getTimeString(minutes)}:${getTimeString(remainingSeconds)}`; -} +}; diff --git a/src/lib/tradeData.ts b/src/lib/tradeData.ts index f8ba9704b..a733a5c1e 100644 --- a/src/lib/tradeData.ts +++ b/src/lib/tradeData.ts @@ -1,18 +1,16 @@ -import { type Location, matchPath } from 'react-router-dom'; import { OrderSide } from '@dydxprotocol/v4-client-js'; - -import { StringGetterFunction } from '@/constants/localization'; +import { matchPath, type Location } from 'react-router-dom'; import { - type Nullable, AbacusOrderSide, - type AbacusOrderSides, AbacusOrderTypes, - ValidationError, ErrorType, + ValidationError, + type AbacusOrderSides, + type Nullable, } from '@/constants/abacus'; - import { AlertType } from '@/constants/alerts'; +import type { StringGetterFunction } from '@/constants/localization'; import { PERCENT_DECIMALS, USD_DECIMALS } from '@/constants/numbers'; import { TRADE_ROUTE } from '@/constants/routes'; import { PositionSide, TradeTypes } from '@/constants/trade'; @@ -87,7 +85,7 @@ const formatErrorParam = ({ return `$${dollarBN.toFixed(tickSizeDecimals ?? USD_DECIMALS)}`; } default: { - return value || ''; + return value ?? ''; } } }; @@ -106,10 +104,10 @@ export const getTradeInputAlert = ({ stepSizeDecimals: Nullable<number>; tickSizeDecimals: Nullable<number>; }) => { - const inputAlerts = abacusInputErrors.map(({ action: errorAction, resources, type }) => { + const inputAlerts = abacusInputErrors.map(({ action: errorAction, resources, type, code }) => { const { action, text } = resources || {}; - const { stringKey: actionStringKey } = action || {}; - const { stringKey: alertStringKey, params: stringParams } = text || {}; + const { stringKey: actionStringKey } = action ?? {}; + const { stringKey: alertStringKey, params: stringParams } = text ?? {}; const params = stringParams?.toArray() && @@ -128,8 +126,21 @@ export const getTradeInputAlert = ({ alertStringKey, alertString: alertStringKey && stringGetter({ key: alertStringKey, params }), type: type === ErrorType.warning ? AlertType.Warning : AlertType.Error, + code, }; }); return inputAlerts?.[0]; }; + +export const calculatePositionMargin = ({ + notionalTotal, + adjustedMmf, +}: { + notionalTotal?: Nullable<number>; + adjustedMmf?: Nullable<number>; +}) => { + const notionalTotalBN = MustBigNumber(notionalTotal); + const adjustedMmfBN = MustBigNumber(adjustedMmf); + return notionalTotalBN.times(adjustedMmfBN); +}; diff --git a/src/lib/tradingView/dydxfeed/index.ts b/src/lib/tradingView/dydxfeed/index.ts index 9e529a67d..d4a4cb981 100644 --- a/src/lib/tradingView/dydxfeed/index.ts +++ b/src/lib/tradingView/dydxfeed/index.ts @@ -1,5 +1,4 @@ import { DateTime } from 'luxon'; - import type { DatafeedConfiguration, ErrorCallback, @@ -13,21 +12,18 @@ import type { } from 'public/tradingview/charting_library'; import { Candle, RESOLUTION_MAP } from '@/constants/candles'; -import { useDydxClient } from '@/hooks'; +import { DEFAULT_MARKETID } from '@/constants/markets'; + +import { useDydxClient } from '@/hooks/useDydxClient'; import { RootStore } from '@/state/_store'; import { setCandles } from '@/state/perpetuals'; +import { getMarketConfig, getPerpetualBarsForPriceChart } from '@/state/perpetualsSelectors'; -import { - getMarketConfig, - getMarketIds, - getPerpetualBarsForPriceChart, -} from '@/state/perpetualsSelectors'; - +import { log } from '../../telemetry'; +import { getHistorySlice, getSymbol, mapCandle } from '../utils'; import { lastBarsCache } from './cache'; import { subscribeOnStream, unsubscribeFromStream } from './streaming'; -import { getAllSymbols, getHistorySlice, mapCandle } from '../utils'; -import { log } from '../../telemetry'; const timezone = DateTime.local().get('zoneName') as unknown as Timezone; @@ -50,10 +46,11 @@ const configurationData: DatafeedConfiguration = { export const getDydxDatafeed = ( store: RootStore, - getCandlesForDatafeed: ReturnType<typeof useDydxClient>['getCandlesForDatafeed'] + getCandlesForDatafeed: ReturnType<typeof useDydxClient>['getCandlesForDatafeed'], + initialPriceScale: number | null ) => ({ onReady: (callback: OnReadyCallback) => { - setTimeout(() => callback(configurationData)); + setTimeout(() => callback(configurationData), 0); }, searchSymbols: ( @@ -65,23 +62,11 @@ export const getDydxDatafeed = ( onResultReadyCallback([]); }, - resolveSymbol: async ( - symbolName: string, - onSymbolResolvedCallback: ResolveCallback, - onResolveErrorCallback: ErrorCallback - ) => { - const marketIds = getMarketIds(store.getState()); - const symbols = getAllSymbols(marketIds); - const symbolItem = symbols.find(({ symbol }: any) => symbol === symbolName); - - if (!symbolItem) { - onResolveErrorCallback('cannot resolve symbol'); - return; - } - - const { tickSizeDecimals } = getMarketConfig(symbolItem.symbol)(store.getState()) || {}; + resolveSymbol: async (symbolName: string, onSymbolResolvedCallback: ResolveCallback) => { + const symbolItem = getSymbol(symbolName || DEFAULT_MARKETID); + const { tickSizeDecimals } = getMarketConfig(symbolItem.symbol)(store.getState()) ?? {}; - const pricescale = tickSizeDecimals ? 10 ** tickSizeDecimals : 100; + const pricescale = tickSizeDecimals ? 10 ** tickSizeDecimals : initialPriceScale ?? 100; const symbolInfo: LibrarySymbolInfo = { ticker: symbolItem.full_name, @@ -163,7 +148,7 @@ export const getDydxDatafeed = ( ); } - const bars = [...cachedBars, ...(fetchedCandles?.map(mapCandle) || [])].reverse(); + const bars = [...cachedBars, ...(fetchedCandles?.map(mapCandle) ?? [])].reverse(); if (bars.length === 0) { onHistoryCallback([], { diff --git a/src/lib/tradingView/dydxfeed/streaming.ts b/src/lib/tradingView/dydxfeed/streaming.ts index e4a54d60c..45d08d935 100644 --- a/src/lib/tradingView/dydxfeed/streaming.ts +++ b/src/lib/tradingView/dydxfeed/streaming.ts @@ -6,6 +6,7 @@ import type { } from 'public/tradingview/charting_library'; import { RESOLUTION_MAP } from '@/constants/candles'; + import abacusStateManager from '@/lib/abacus'; import { subscriptionsByChannelId } from './cache'; @@ -15,7 +16,6 @@ export const subscribeOnStream = ({ resolution, onRealtimeCallback, subscribeUID, - onResetCacheNeededCallback, lastBar, }: { symbolInfo: LibrarySymbolInfo; @@ -57,14 +57,14 @@ export const subscribeOnStream = ({ export const unsubscribeFromStream = (subscriberUID: string) => { // find a subscription with id === subscriberUID + // eslint-disable-next-line no-restricted-syntax for (const channelId of subscriptionsByChannelId.keys()) { const subscriptionItem = subscriptionsByChannelId.get(channelId); - const { handlers } = subscriptionItem || {}; + const { handlers } = subscriptionItem ?? {}; if (subscriptionItem && handlers?.[subscriberUID]) { // remove from handlers delete subscriptionItem.handlers[subscriberUID]; - const id = channelId; if (Object.keys(subscriptionItem.handlers).length === 0) { // unsubscribe from the channel, if it was the last handler diff --git a/src/lib/tradingView/utils.ts b/src/lib/tradingView/utils.ts index 4359731c7..be34c3e4c 100644 --- a/src/lib/tradingView/utils.ts +++ b/src/lib/tradingView/utils.ts @@ -4,10 +4,10 @@ import { Candle, TradingViewBar, TradingViewSymbol } from '@/constants/candles'; import { THEME_NAMES } from '@/constants/styles/colors'; import type { ChartLineType } from '@/constants/tvchart'; -import { type AppColorMode, AppTheme } from '@/state/configs'; - import { Themes } from '@/styles/themes'; +import { AppTheme, type AppColorMode } from '@/state/configs'; + export const mapCandle = ({ startedAt, open, @@ -24,14 +24,13 @@ export const mapCandle = ({ volume: Math.ceil(Number(baseTokenVolume)), }); -export const getAllSymbols = (marketIds: string[]): TradingViewSymbol[] => - marketIds.map((marketId) => ({ - description: marketId, - exchange: 'dYdX', - full_name: marketId, - symbol: marketId, - type: 'crypto', - })); +export const getSymbol = (marketId: string): TradingViewSymbol => ({ + description: marketId, + exchange: 'dYdX', + full_name: marketId, + symbol: marketId, + type: 'crypto', +}); export const getHistorySlice = ({ bars, @@ -64,7 +63,8 @@ export const getChartLineColors = ({ const orderColors = { [OrderSide.BUY]: theme.positive, [OrderSide.SELL]: theme.negative, - ['position']: null, + entry: null, + liquidation: theme.warning, }; return { diff --git a/src/lib/typeUtils.ts b/src/lib/typeUtils.ts new file mode 100644 index 000000000..79ae49647 --- /dev/null +++ b/src/lib/typeUtils.ts @@ -0,0 +1,12 @@ +import { EMPTY_OBJ } from '@/constants/objects'; + +// preserves reference and empty object never churns +export function orEmptyObj<T extends object>( + obj: T | null | undefined +): T extends Record<string, infer S> ? Record<string, S> : Partial<T> { + return obj ?? (EMPTY_OBJ as any); +} + +export function isPresent<T>(value: T | undefined | null): value is T { + return value != null; +} diff --git a/src/lib/wagmi.ts b/src/lib/wagmi.ts index 70ad3b1ed..e8139c098 100644 --- a/src/lib/wagmi.ts +++ b/src/lib/wagmi.ts @@ -1,55 +1,59 @@ -import { createConfig, configureChains, mainnet, Chain } from 'wagmi'; -import { goerli } from 'wagmi/chains'; - +// Custom connectors +import type { ExternalProvider } from '@ethersproject/providers'; +import type { PrivyClientConfig } from '@privy-io/react-auth'; import { arbitrum, arbitrumGoerli, avalanche, avalancheFuji, - bsc, - bscTestnet, - optimism, - optimismGoerli, base, baseGoerli, - polygon, - polygonMumbai, + bsc, + bscTestnet, + celo, + celoAlfajores, + fantom, + fantomTestnet, + filecoin, + filecoinHyperspace, + kava, linea, lineaTestnet, mantle, mantleTestnet, - moonbeam, moonbaseAlpha, - filecoin, - filecoinHyperspace, - fantom, - fantomTestnet, - celo, - celoAlfajores, + moonbeam, + optimism, + optimismGoerli, + polygon, + polygonMumbai, scroll, - kava, sepolia, } from 'viem/chains'; - -import { alchemyProvider } from 'wagmi/providers/alchemy'; -import { jsonRpcProvider } from 'wagmi/providers/jsonRpc'; -import { publicProvider } from 'wagmi/providers/public'; - +import { Chain, configureChains, createConfig, mainnet } from 'wagmi'; +import { goerli } from 'wagmi/chains'; import { CoinbaseWalletConnector } from 'wagmi/connectors/coinbaseWallet'; import { InjectedConnector } from 'wagmi/connectors/injected'; import { MetaMaskConnector } from 'wagmi/connectors/metaMask'; import { WalletConnectConnector } from 'wagmi/connectors/walletConnect'; +import { alchemyProvider } from 'wagmi/providers/alchemy'; +import { jsonRpcProvider } from 'wagmi/providers/jsonRpc'; +import { publicProvider } from 'wagmi/providers/public'; +import { LocalStorageKey } from '@/constants/localStorage'; +import { DEFAULT_APP_ENVIRONMENT, ENVIRONMENT_CONFIG_MAP } from '@/constants/networks'; import { - type WalletConnection, + WALLET_CONNECT_EXPLORER_RECOMMENDED_IDS, WalletConnectionType, - type WalletType, walletConnectionTypes, wallets, - WALLET_CONNECT_EXPLORER_RECOMMENDED_IDS, + type WalletConnection, + type WalletType, } from '@/constants/wallets'; import { isTruthy } from './isTruthy'; +import { getLocalStorage } from './localStorage'; +import { validateAgainstAvailableEnvironments } from './network'; // Config @@ -85,7 +89,26 @@ export const WAGMI_SUPPORTED_CHAINS: Chain[] = [ kava, ]; -const { chains, publicClient, webSocketPublicClient } = configureChains( +const defaultSelectedNetwork = getLocalStorage({ + key: LocalStorageKey.SelectedNetwork, + defaultValue: DEFAULT_APP_ENVIRONMENT, + validateFn: validateAgainstAvailableEnvironments, +}); +const defaultChainId = Number(ENVIRONMENT_CONFIG_MAP[defaultSelectedNetwork].ethereumChainId); + +export const privyConfig: PrivyClientConfig = { + embeddedWallets: { + createOnLogin: 'users-without-wallets', + requireUserPasswordOnCreate: false, + noPromptOnSignature: true, + }, + appearance: { + theme: '#28283c', + }, + defaultChain: defaultChainId === mainnet.id ? mainnet : sepolia, +}; + +export const configureChainsConfig = configureChains( WAGMI_SUPPORTED_CHAINS, [ import.meta.env.VITE_ALCHEMY_API_KEY && @@ -96,6 +119,7 @@ const { chains, publicClient, webSocketPublicClient } = configureChains( publicProvider(), ].filter(isTruthy) ); +const { chains, publicClient, webSocketPublicClient } = configureChainsConfig; const injectedConnectorOptions = { chains, @@ -133,6 +157,8 @@ const getWalletconnect2ConnectorOptions = ( qrModalOptions: { themeMode: 'dark' as const, themeVariables: { + // TODO: figure out why --wcm-accent-color isn't considered a known property + // @ts-ignore '--wcm-accent-color': '#5973fe', '--wcm-font-family': 'var(--fontFamily-base)', }, @@ -166,10 +192,6 @@ export const config = createConfig({ webSocketPublicClient, }); -// Custom connectors - -import type { ExternalProvider } from '@ethersproject/providers'; - // Create a custom wagmi InjectedConnector using a specific injected EIP-1193 provider (instead of wagmi's default detection logic) const createInjectedConnectorWithProvider = (provider: ExternalProvider) => new (class extends InjectedConnector { diff --git a/src/lib/wallet/index.ts b/src/lib/wallet/index.ts index 7ce29c9ac..100ae2126 100644 --- a/src/lib/wallet/index.ts +++ b/src/lib/wallet/index.ts @@ -1,11 +1,10 @@ import { STRING_KEYS, StringGetterFunction } from '@/constants/localization'; - import { - type WalletConnection, - wallets, WalletConnectionType, WalletErrorType, WalletType, + wallets, + type WalletConnection, } from '@/constants/wallets'; import { detectInjectedEip1193Providers } from './providers'; @@ -27,9 +26,11 @@ export const getWalletConnection = ({ }): WalletConnection | undefined => { const walletConfig = wallets[walletType]; + // eslint-disable-next-line no-restricted-syntax for (const connectionType of walletConfig.connectionTypes) { switch (connectionType) { case WalletConnectionType.InjectedEip1193: { + // eslint-disable-next-line no-restricted-syntax for (const provider of detectInjectedEip1193Providers()) { if (walletConfig.matchesInjectedEip1193?.(provider)) { /* @ts-ignore */ @@ -41,35 +42,39 @@ export const getWalletConnection = ({ }; } } - break; } - case WalletConnectionType.WalletConnect2: { return { type: WalletConnectionType.WalletConnect2, }; } - case WalletConnectionType.CoinbaseWalletSdk: { return { type: WalletConnectionType.CoinbaseWalletSdk, }; } - case WalletConnectionType.CosmosSigner: { return { type: WalletConnectionType.CosmosSigner, }; } - case WalletConnectionType.TestWallet: { return { type: WalletConnectionType.TestWallet, }; } + case WalletConnectionType.Privy: { + return { + type: WalletConnectionType.Privy, + }; + } + default: { + continue; + } } } + return undefined; }; export const getWalletErrorType = ({ error }: { error: Error }) => { diff --git a/src/lib/wallet/providers.ts b/src/lib/wallet/providers.ts index df9748f82..d059e3912 100644 --- a/src/lib/wallet/providers.ts +++ b/src/lib/wallet/providers.ts @@ -1,11 +1,11 @@ import type { ExternalProvider } from '@ethersproject/providers'; import { - type InjectedEthereumProvider, type InjectedCoinbaseWalletExtensionProvider, + type InjectedEthereumProvider, type WithInjectedEthereumProvider, - type WithInjectedWeb3Provider, type WithInjectedOkxWalletProvider, + type WithInjectedWeb3Provider, } from '@/constants/wallets'; import { isTruthy } from '../isTruthy'; diff --git a/src/main.tsx b/src/main.tsx index c73a8ac16..96238f214 100644 --- a/src/main.tsx +++ b/src/main.tsx @@ -1,24 +1,26 @@ import './polyfills'; + import { StrictMode } from 'react'; + import ReactDOM from 'react-dom/client'; -import { BrowserRouter, HashRouter } from 'react-router-dom'; import { Provider } from 'react-redux'; +import { BrowserRouter, HashRouter } from 'react-router-dom'; import { store } from '@/state/_store'; +import App from './App'; import { ErrorBoundary } from './components/ErrorBoundary'; - import './index.css'; -import App from './App'; - const Router = import.meta.env.VITE_ROUTER_TYPE === 'hash' ? HashRouter : BrowserRouter; ReactDOM.createRoot(document.getElementById('root') as HTMLElement).render( <ErrorBoundary> <StrictMode> <Provider store={store}> - <Router children={<App />} /> + <Router> + <App /> + </Router> </Provider> </StrictMode> </ErrorBoundary> diff --git a/src/pages/PrivacyPolicyPage.tsx b/src/pages/PrivacyPolicyPage.tsx index 226ddb587..7816c4229 100644 --- a/src/pages/PrivacyPolicyPage.tsx +++ b/src/pages/PrivacyPolicyPage.tsx @@ -1,19 +1,16 @@ -import styled, { AnyStyledComponent } from 'styled-components'; +import styled from 'styled-components'; import { articleMixins } from '@/styles/articleMixins'; const PrivacyPolicyPage = () => ( - <Styled.Article> + <$Article> <header> <h1>Privacy Policy</h1> </header> - </Styled.Article> + </$Article> ); export default PrivacyPolicyPage; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.Article = styled.article` +const $Article = styled.article` ${articleMixins.article} `; diff --git a/src/pages/Profile.tsx b/src/pages/Profile.tsx index 0d5253ce2..9896f2ccc 100644 --- a/src/pages/Profile.tsx +++ b/src/pages/Profile.tsx @@ -1,26 +1,31 @@ -import styled, { AnyStyledComponent, css } from 'styled-components'; -import { Link } from 'react-router-dom'; import { useDispatch, useSelector } from 'react-redux'; +import { Link, useNavigate } from 'react-router-dom'; +import styled, { css } from 'styled-components'; import { useEnsName } from 'wagmi'; -import { useNavigate } from 'react-router-dom'; import { TransferType } from '@/constants/abacus'; import { OnboardingState } from '@/constants/account'; import { ButtonSize } from '@/constants/buttons'; import { DialogTypes } from '@/constants/dialogs'; import { STRING_KEYS } from '@/constants/localization'; -import { AppRoute, PortfolioRoute, HistoryRoute } from '@/constants/routes'; +import { AppRoute, HistoryRoute, PortfolioRoute } from '@/constants/routes'; import { wallets } from '@/constants/wallets'; -import { useAccounts, useStringGetter, useTokenConfigs } from '@/hooks'; + +import { useAccounts } from '@/hooks/useAccounts'; +import { useStringGetter } from '@/hooks/useStringGetter'; +import { useTokenConfigs } from '@/hooks/useTokenConfigs'; + import { breakpoints } from '@/styles'; import { layoutMixins } from '@/styles/layoutMixins'; +import { AssetIcon } from '@/components/AssetIcon'; import { Details } from '@/components/Details'; -import { FillsTable, FillsTableColumnKey } from '@/views/tables/FillsTable'; import { Icon, IconName } from '@/components/Icon'; import { IconButton, type IconButtonProps } from '@/components/IconButton'; +import { Output, OutputType } from '@/components/Output'; import { Panel } from '@/components/Panel'; import { Toolbar } from '@/components/Toolbar'; +import { FillsTable, FillsTableColumnKey } from '@/views/tables/FillsTable'; import { getHistoricalTradingRewardsForCurrentWeek, @@ -32,14 +37,22 @@ import { isTruthy } from '@/lib/isTruthy'; import { truncateAddress } from '@/lib/wallet'; import { DYDXBalancePanel } from './token/rewards/DYDXBalancePanel'; -import { MigratePanel } from './token/rewards/MigratePanel'; import { GovernancePanel } from './token/rewards/GovernancePanel'; +import { MigratePanel } from './token/rewards/MigratePanel'; +import { NewMarketsPanel } from './token/rewards/NewMarketsPanel'; import { StakingPanel } from './token/staking/StakingPanel'; import { StrideStakingPanel } from './token/staking/StrideStakingPanel'; -import { NewMarketsPanel } from './token/rewards/NewMarketsPanel'; const ENS_CHAIN_ID = 1; // Ethereum +type Action = { + key: string; + label: string; + icon: IconButtonProps; + href?: string; + onClick?: () => void; +}; + const Profile = () => { const stringGetter = useStringGetter(); const dispatch = useDispatch(); @@ -58,7 +71,7 @@ const Profile = () => { const currentWeekTradingReward = useSelector(getHistoricalTradingRewardsForCurrentWeek); - const actions = [ + const actions: Action[] = [ { key: 'deposit', label: stringGetter({ key: STRING_KEYS.DEPOSIT }), @@ -121,38 +134,30 @@ const Profile = () => { dispatch(openDialog({ type: DialogTypes.Onboarding })); }, }, - ].filter(isTruthy) as { - key: string; - label: string; - icon: IconButtonProps; - href?: string; - onClick?: () => void; - }[]; + ].filter(isTruthy); return ( - <Styled.MobileProfileLayout> - <Styled.Header> - <Styled.ProfileIcon /> + <$MobileProfileLayout> + <$Header> + <$ProfileIcon /> <div> - <Styled.Address> - {isConnected ? ensName || truncateAddress(dydxAddress) : '-'} - </Styled.Address> + <$Address>{isConnected ? ensName ?? truncateAddress(dydxAddress) : '-'}</$Address> {isConnected && walletType ? ( - <Styled.SubHeader> - <Styled.ConnectedIcon /> + <$SubHeader> + <$ConnectedIcon /> <span>{stringGetter({ key: STRING_KEYS.CONNECTED_TO })}</span> <span>{stringGetter({ key: wallets[walletType].stringKey })}</span> - </Styled.SubHeader> + </$SubHeader> ) : ( <span>-</span> )} </div> - </Styled.Header> - <Styled.Actions withSeparators={false}> + </$Header> + <$Actions withSeparators={false}> {actions.map(({ key, label, href, icon, onClick }) => { const action = ( <> - <Styled.ActionButton {...icon} size={ButtonSize.Large} onClick={onClick} /> + <$ActionButton {...icon} size={ButtonSize.Large} onClick={onClick} /> <span>{label}</span> </> ); @@ -161,56 +166,63 @@ const Profile = () => { {action} </Link> ) : ( + // eslint-disable-next-line jsx-a11y/label-has-associated-control <label key={key}>{action}</label> ); })} - </Styled.Actions> + </$Actions> - <Styled.SettingsButton + <$SettingsButton slotHeader={ - <Styled.InlineRow> + <$InlineRow> <Icon iconName={IconName.Gear} /> {stringGetter({ key: STRING_KEYS.SETTINGS })} - </Styled.InlineRow> + </$InlineRow> } onClick={() => navigate(AppRoute.Settings)} /> - <Styled.HelpButton + <$HelpButton slotHeader={ - <Styled.InlineRow> + <$InlineRow> <Icon iconName={IconName.HelpCircle} /> {stringGetter({ key: STRING_KEYS.HELP })} - </Styled.InlineRow> + </$InlineRow> } onClick={() => dispatch(openDialog({ type: DialogTypes.Help }))} /> - <Styled.MigratePanel /> + <$MigratePanel /> - <Styled.DYDXBalancePanel /> + <$DYDXBalancePanel /> - <Styled.RewardsPanel + <$RewardsPanel slotHeaderContent={stringGetter({ key: STRING_KEYS.TRADING_REWARDS })} href={`/${chainTokenLabel}`} hasSeparator > - <Styled.Details + <$Details items={[ { key: 'week-rewards', label: stringGetter({ key: STRING_KEYS.THIS_WEEK }), - value: currentWeekTradingReward?.amount ?? '-', + value: ( + <Output + slotRight={<$AssetIcon symbol={chainTokenLabel} />} + type={OutputType.Asset} + value={currentWeekTradingReward?.amount} + /> + ), }, ]} layout="grid" /> - </Styled.RewardsPanel> - <Styled.FeesPanel + </$RewardsPanel> + <$FeesPanel slotHeaderContent={stringGetter({ key: STRING_KEYS.FEES })} href={`${AppRoute.Portfolio}/${PortfolioRoute.Fees}`} hasSeparator > - <Styled.Details + <$Details items={[ { key: 'maker', label: stringGetter({ key: STRING_KEYS.MAKER }), value: '-' }, { key: 'taker', label: stringGetter({ key: STRING_KEYS.TAKER }), value: '-' }, @@ -218,9 +230,9 @@ const Profile = () => { ]} layout="grid" /> - </Styled.FeesPanel> + </$FeesPanel> - <Styled.HistoryPanel + <$HistoryPanel slotHeaderContent={stringGetter({ key: STRING_KEYS.HISTORY })} href={`${AppRoute.Portfolio}/${PortfolioRoute.History}/${HistoryRoute.Trades}`} hasSeparator @@ -234,21 +246,18 @@ const Profile = () => { ]} withInnerBorders={false} /> - </Styled.HistoryPanel> + </$HistoryPanel> - <Styled.GovernancePanel /> - <Styled.NewMarketsPanel /> - <Styled.StakingPanel /> - <Styled.StrideStakingPanel /> - </Styled.MobileProfileLayout> + <$GovernancePanel /> + <$NewMarketsPanel /> + <$StakingPanel /> + <$StrideStakingPanel /> + </$MobileProfileLayout> ); }; export default Profile; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.MobileProfileLayout = styled.div` +const $MobileProfileLayout = styled.div` ${layoutMixins.contentContainerPage} display: grid; @@ -285,13 +294,13 @@ Styled.MobileProfileLayout = styled.div` } `; -Styled.Header = styled.header` +const $Header = styled.header` grid-area: header; ${layoutMixins.row} padding: 0 1rem; `; -Styled.ProfileIcon = styled.div` +const $ProfileIcon = styled.div` width: 4rem; height: 4rem; margin-right: 1rem; @@ -304,7 +313,7 @@ Styled.ProfileIcon = styled.div` ); `; -Styled.SubHeader = styled.div` +const $SubHeader = styled.div` ${layoutMixins.row} gap: 0.25rem; @@ -317,7 +326,7 @@ Styled.SubHeader = styled.div` } `; -Styled.ConnectedIcon = styled.div` +const $ConnectedIcon = styled.div` height: 0.5rem; width: 0.5rem; margin-right: 0.25rem; @@ -327,11 +336,11 @@ Styled.ConnectedIcon = styled.div` box-shadow: 0 0 0 0.2rem var(--color-gradient-success); `; -Styled.Address = styled.h1` +const $Address = styled.h1` font: var(--font-extra-medium); `; -Styled.Actions = styled(Toolbar)` +const $Actions = styled(Toolbar)` ${layoutMixins.spacedRow} --stickyArea-topHeight: 5rem; grid-area: actions; @@ -348,7 +357,7 @@ Styled.Actions = styled(Toolbar)` } `; -Styled.ActionButton = styled(IconButton)<{ iconName?: IconName }>` +const $ActionButton = styled(IconButton)<{ iconName?: IconName }>` margin-bottom: 0.5rem; ${({ iconName }) => @@ -365,12 +374,12 @@ Styled.ActionButton = styled(IconButton)<{ iconName?: IconName }>` `} `; -Styled.Details = styled(Details)` +const $Details = styled(Details)` font: var(--font-small-book); --details-value-font: var(--font-medium-book); `; -Styled.RewardsPanel = styled(Panel)` +const $RewardsPanel = styled(Panel)` grid-area: rewards; align-self: flex-start; height: 100%; @@ -383,11 +392,11 @@ Styled.RewardsPanel = styled(Panel)` } `; -Styled.FeesPanel = styled(Panel)` +const $FeesPanel = styled(Panel)` grid-area: fees; `; -Styled.HistoryPanel = styled(Panel)` +const $HistoryPanel = styled(Panel)` grid-area: history; --panel-content-paddingY: 0; --panel-content-paddingX: 0; @@ -418,45 +427,49 @@ Styled.HistoryPanel = styled(Panel)` } `; -Styled.InlineRow = styled.div` +const $InlineRow = styled.div` ${layoutMixins.inlineRow} padding: 1rem; gap: 0.5rem; `; -Styled.PanelButton = styled(Panel)` +const $PanelButton = styled(Panel)` --panel-paddingY: 0 --panel-paddingX:0; `; -Styled.SettingsButton = styled(Styled.PanelButton)` +const $SettingsButton = styled($PanelButton)` grid-area: settings; `; -Styled.HelpButton = styled(Styled.PanelButton)` +const $HelpButton = styled($PanelButton)` grid-area: help; `; -Styled.MigratePanel = styled(MigratePanel)` +const $MigratePanel = styled(MigratePanel)` grid-area: migrate; `; -Styled.DYDXBalancePanel = styled(DYDXBalancePanel)` +const $DYDXBalancePanel = styled(DYDXBalancePanel)` grid-area: balance; `; -Styled.GovernancePanel = styled(GovernancePanel)` +const $GovernancePanel = styled(GovernancePanel)` grid-area: governance; `; -Styled.StakingPanel = styled(StakingPanel)` +const $StakingPanel = styled(StakingPanel)` grid-area: keplr; `; -Styled.NewMarketsPanel = styled(NewMarketsPanel)` +const $NewMarketsPanel = styled(NewMarketsPanel)` grid-area: newMarkets; `; -Styled.StrideStakingPanel = styled(StrideStakingPanel)` +const $StrideStakingPanel = styled(StrideStakingPanel)` grid-area: stride; `; + +const $AssetIcon = styled(AssetIcon)` + margin-left: 0.5ch; +`; diff --git a/src/pages/TermsOfUsePage.tsx b/src/pages/TermsOfUsePage.tsx index 63f431cb9..d3c0f92b9 100644 --- a/src/pages/TermsOfUsePage.tsx +++ b/src/pages/TermsOfUsePage.tsx @@ -1,12 +1,13 @@ -import styled, { AnyStyledComponent } from 'styled-components'; +/* eslint-disable no-irregular-whitespace */ +import styled from 'styled-components'; import { articleMixins } from '@/styles/articleMixins'; const TermsOfUsePage = () => ( - <Styled.Article> + <$Article> <header> <h1>Sample Terms of Use</h1> - <span></span> + <span /> </header> <div> <p> @@ -1073,13 +1074,10 @@ const TermsOfUsePage = () => ( <strong>19. CONTACT INFORMATION</strong> </p> </div> - </Styled.Article> + </$Article> ); export default TermsOfUsePage; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.Article = styled.article` +const $Article = styled.article` ${articleMixins.article} `; diff --git a/src/pages/markets/Markets.tsx b/src/pages/markets/Markets.tsx index 7644f8b12..386205569 100644 --- a/src/pages/markets/Markets.tsx +++ b/src/pages/markets/Markets.tsx @@ -1,88 +1,120 @@ -import styled, { AnyStyledComponent } from 'styled-components'; -import { useNavigate } from 'react-router-dom'; +import { useState } from 'react'; -import { breakpoints } from '@/styles'; +import { useNavigate } from 'react-router-dom'; +import styled from 'styled-components'; +import { ButtonAction } from '@/constants/buttons'; import { STRING_KEYS } from '@/constants/localization'; import { AppRoute, MarketsRoute } from '@/constants/routes'; -import { useBreakpoints, useDocumentTitle, useStringGetter } from '@/hooks'; + +import { useDocumentTitle } from '@/hooks/useDocumentTitle'; import { usePotentialMarkets } from '@/hooks/usePotentialMarkets'; +import { useStringGetter } from '@/hooks/useStringGetter'; +import { breakpoints } from '@/styles'; import { layoutMixins } from '@/styles/layoutMixins'; import { Button } from '@/components/Button'; import { ContentSectionHeader } from '@/components/ContentSectionHeader'; -import { ExchangeBillboards } from '@/views/ExchangeBillboards'; +import { Switch } from '@/components/Switch'; +import { MarketsStats } from '@/views/MarketsStats'; import { MarketsTable } from '@/views/tables/MarketsTable'; const Markets = () => { const stringGetter = useStringGetter(); - const { isNotTablet } = useBreakpoints(); const navigate = useNavigate(); + const [showHighlights, setShowHighlights] = useState(true); const { hasPotentialMarketsData } = usePotentialMarkets(); useDocumentTitle(stringGetter({ key: STRING_KEYS.MARKETS })); return ( - <Styled.Page> - <Styled.HeaderSection> - <Styled.ContentSectionHeader + <$Page> + <$HeaderSection> + <$ContentSectionHeader title={stringGetter({ key: STRING_KEYS.MARKETS })} - subtitle={isNotTablet && stringGetter({ key: STRING_KEYS.DISCOVER_NEW_ASSETS })} slotRight={ hasPotentialMarketsData && ( - <Button onClick={() => navigate(`${AppRoute.Markets}/${MarketsRoute.New}`)}> + <Button + action={ButtonAction.Primary} + onClick={() => navigate(`${AppRoute.Markets}/${MarketsRoute.New}`)} + > {stringGetter({ key: STRING_KEYS.ADD_A_MARKET })} </Button> ) } /> - <Styled.ExchangeBillboards isSearching={false} searchQuery="" /> - </Styled.HeaderSection> + <$Highlights htmlFor="highlights"> + {stringGetter({ key: STRING_KEYS.HIDE })} + + <Switch name="highlights" checked={showHighlights} onCheckedChange={setShowHighlights} /> + </$Highlights> - <Styled.MarketsTable /> - </Styled.Page> + <$MarketsStats showHighlights={showHighlights} /> + </$HeaderSection> + + <$MarketsTable /> + </$Page> ); }; -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.Page = styled.div` +const $Page = styled.div` ${layoutMixins.contentContainerPage} - gap: 1.5rem; +`; +const $ContentSectionHeader = styled(ContentSectionHeader)` + margin-top: 1rem; + margin-bottom: 0.25rem; - @media ${breakpoints.tablet} { - gap: 0.75rem; + h3 { + font: var(--font-extra-medium); } -`; -Styled.ContentSectionHeader = styled(ContentSectionHeader)` @media ${breakpoints.tablet} { - padding: 1.25rem 1.875rem 0; + margin-top: 0; + padding: 1.25rem 1.5rem 0; h3 { font: var(--font-extra-medium); } } `; - -Styled.HeaderSection = styled.section` +const $HeaderSection = styled.section` ${layoutMixins.contentSectionDetached} + margin-bottom: 2rem; + @media ${breakpoints.tablet} { ${layoutMixins.flexColumn} gap: 1rem; - margin-bottom: 0.5rem; + margin-bottom: 1rem; } `; - -Styled.ExchangeBillboards = styled(ExchangeBillboards)` - ${layoutMixins.contentSectionDetachedScrollable} -`; - -Styled.MarketsTable = styled(MarketsTable)` +const $MarketsTable = styled(MarketsTable)` ${layoutMixins.contentSectionAttached} `; +const $MarketsStats = styled(MarketsStats)<{ + showHighlights?: boolean; +}>` + ${({ showHighlights }) => !showHighlights && 'display: none;'} +`; +const $Highlights = styled.label` + align-items: center; + gap: 1rem; + margin-bottom: 1.25rem; + display: none; + cursor: pointer; + + @media ${breakpoints.desktopSmall} { + padding-left: 1rem; + padding-right: 1rem; + } + @media ${breakpoints.tablet} { + padding-left: 1.5rem; + padding-right: 1.5rem; + margin-bottom: 0; + display: flex; + } +`; export default Markets; diff --git a/src/pages/markets/NewMarket.tsx b/src/pages/markets/NewMarket.tsx index 0d722c96a..45ca76ddb 100644 --- a/src/pages/markets/NewMarket.tsx +++ b/src/pages/markets/NewMarket.tsx @@ -1,39 +1,46 @@ import { useMemo, useState } from 'react'; -import styled, { AnyStyledComponent } from 'styled-components'; + import { useNavigate } from 'react-router-dom'; +import styled from 'styled-components'; import { STRING_KEYS } from '@/constants/localization'; import { isMainnet } from '@/constants/networks'; import { AppRoute } from '@/constants/routes'; -import { - useBreakpoints, - useDocumentTitle, - useGovernanceVariables, - useStringGetter, - useTokenConfigs, -} from '@/hooks'; +import { useBreakpoints } from '@/hooks/useBreakpoints'; +import { useDocumentTitle } from '@/hooks/useDocumentTitle'; +import { useGovernanceVariables } from '@/hooks/useGovernanceVariables'; +import { useStringGetter } from '@/hooks/useStringGetter'; +import { useTokenConfigs } from '@/hooks/useTokenConfigs'; import { breakpoints } from '@/styles'; import { layoutMixins } from '@/styles/layoutMixins'; import { Button } from '@/components/Button'; import { ContentSectionHeader } from '@/components/ContentSectionHeader'; -import { IconButton } from '@/components/IconButton'; import { Icon, IconName } from '@/components/Icon'; +import { IconButton } from '@/components/IconButton'; import { Link } from '@/components/Link'; import { NewMarketForm } from '@/views/forms/NewMarketForm'; import { MustBigNumber } from '@/lib/numbers'; -const StepItem = ({ step, subtitle, title }: { step: number; subtitle: string; title: string }) => ( - <Styled.StepItem> - <Styled.StepNumber>{step}</Styled.StepNumber> - <Styled.Column> - <Styled.Title>{title}</Styled.Title> - <Styled.Subtitle>{subtitle}</Styled.Subtitle> - </Styled.Column> - </Styled.StepItem> +const StepItem = ({ + step, + subtitle, + title, +}: { + step: number; + subtitle: React.ReactNode; + title: string; +}) => ( + <$StepItem> + <$StepNumber>{step}</$StepNumber> + <$Column> + <$Title>{title}</$Title> + <$Subtitle>{subtitle}</$Subtitle> + </$Column> + </$StepItem> ); const NewMarket = () => { @@ -55,9 +62,9 @@ const NewMarket = () => { key: STRING_KEYS.ADD_MARKET_STEP_1_DESCRIPTION, params: { HERE: ( - <Styled.Link href={newMarketProposal.newMarketsMethodology}> + <$Link href={newMarketProposal.newMarketsMethodology}> {stringGetter({ key: STRING_KEYS.HERE })} - </Styled.Link> + </$Link> ), }, }), @@ -81,23 +88,23 @@ const NewMarket = () => { }), }, ]; - }, [stringGetter, newMarketProposal, chainTokenLabel]); + }, [stringGetter, newMarketProposal, chainTokenLabel, chainTokenDecimals]); return ( - <Styled.Page> - <Styled.HeaderSection> - <Styled.ContentSectionHeader + <$Page> + <$HeaderSection> + <$ContentSectionHeader title={stringGetter({ key: STRING_KEYS.SUGGEST_NEW_MARKET })} slotRight={ <IconButton iconName={IconName.Close} onClick={() => navigate(AppRoute.Markets)} /> } subtitle={isNotTablet && stringGetter({ key: STRING_KEYS.ADD_DETAILS_TO_LAUNCH_MARKET })} /> - </Styled.HeaderSection> - <Styled.Content> + </$HeaderSection> + <$Content> <div> <Button - slotLeft={<Styled.Icon iconName={displaySteps ? IconName.Hide : IconName.HelpCircle} />} + slotLeft={<$Icon iconName={displaySteps ? IconName.Hide : IconName.HelpCircle} />} onClick={() => setDisplaySteps(!displaySteps)} > {displaySteps @@ -106,9 +113,7 @@ const NewMarket = () => { </Button> {displaySteps && ( <> - <Styled.StepsTitle> - {stringGetter({ key: STRING_KEYS.STEPS_TO_CREATE })} - </Styled.StepsTitle> + <$StepsTitle>{stringGetter({ key: STRING_KEYS.STEPS_TO_CREATE })}</$StepsTitle> {steps.map((item) => ( <StepItem key={item.step} @@ -120,17 +125,14 @@ const NewMarket = () => { </> )} </div> - <Styled.FormContainer> + <$FormContainer> <NewMarketForm /> - </Styled.FormContainer> - </Styled.Content> - </Styled.Page> + </$FormContainer> + </$Content> + </$Page> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.Page = styled.div` +const $Page = styled.div` ${layoutMixins.contentContainerPage} gap: 1.5rem; @@ -150,9 +152,9 @@ Styled.Page = styled.div` } `; -Styled.ContentSectionHeader = styled(ContentSectionHeader)` +const $ContentSectionHeader = styled(ContentSectionHeader)` @media ${breakpoints.notTablet} { - padding: 1rem 0; + padding: 1rem; } @media ${breakpoints.tablet} { @@ -164,7 +166,7 @@ Styled.ContentSectionHeader = styled(ContentSectionHeader)` } `; -Styled.HeaderSection = styled.section` +const $HeaderSection = styled.section` ${layoutMixins.contentSectionDetached} @media ${breakpoints.tablet} { @@ -175,7 +177,7 @@ Styled.HeaderSection = styled.section` } `; -Styled.Content = styled.div` +const $Content = styled.div` display: flex; flex-direction: row; gap: 2rem; @@ -189,7 +191,7 @@ Styled.Content = styled.div` } `; -Styled.StepsTitle = styled.h2` +const $StepsTitle = styled.h2` font: var(--font-large-medium); color: var(--color-text-2); margin: 1rem; @@ -199,11 +201,11 @@ Styled.StepsTitle = styled.h2` } `; -Styled.Icon = styled(Icon)` +const $Icon = styled(Icon)` margin-right: 0.5ch; `; -Styled.StepItem = styled.div` +const $StepItem = styled.div` display: flex; flex-direction: row; gap: 1rem; @@ -211,7 +213,7 @@ Styled.StepItem = styled.div` margin-bottom: 1rem; `; -Styled.StepNumber = styled.div` +const $StepNumber = styled.div` width: 2.5rem; height: 2.5rem; min-width: 2.5rem; @@ -224,26 +226,26 @@ Styled.StepNumber = styled.div` color: var(--color-text-2); `; -Styled.Column = styled.div` +const $Column = styled.div` display: flex; flex-direction: column; `; -Styled.Title = styled.span` +const $Title = styled.span` color: var(--color-text-2); font: var(--font-medium-book); `; -Styled.Subtitle = styled.span` +const $Subtitle = styled.span` color: var(--color-text-0); `; -Styled.Link = styled(Link)` +const $Link = styled(Link)` --link-color: var(--color-accent); display: inline-block; `; -Styled.FormContainer = styled.div` +const $FormContainer = styled.div` min-width: 31.25rem; height: fit-content; border-radius: 1rem; diff --git a/src/pages/portfolio/AccountDetailsAndHistory.tsx b/src/pages/portfolio/AccountDetailsAndHistory.tsx index ca304e31f..5dab64ac0 100644 --- a/src/pages/portfolio/AccountDetailsAndHistory.tsx +++ b/src/pages/portfolio/AccountDetailsAndHistory.tsx @@ -1,28 +1,32 @@ import { useMemo, useState } from 'react'; -import styled, { AnyStyledComponent, css } from 'styled-components'; -import { shallowEqual, useSelector } from 'react-redux'; + import { TooltipContextType } from '@visx/xychart'; import BigNumber from 'bignumber.js'; +import { shallowEqual, useSelector } from 'react-redux'; +import styled, { css } from 'styled-components'; import type { Nullable } from '@/constants/abacus'; import { OnboardingState } from '@/constants/account'; +import { ComplianceStates } from '@/constants/compliance'; import { STRING_KEYS } from '@/constants/localization'; import { NumberSign } from '@/constants/numbers'; -import { useBreakpoints, useStringGetter } from '@/hooks'; + +import { useBreakpoints } from '@/hooks/useBreakpoints'; +import { useComplianceState } from '@/hooks/useComplianceState'; +import { useStringGetter } from '@/hooks/useStringGetter'; import { breakpoints } from '@/styles'; import { layoutMixins } from '@/styles/layoutMixins'; -import { getOnboardingState, getSubaccount } from '@/state/accountSelectors'; -import { getSelectedLocale } from '@/state/localizationSelectors'; - import { Output, OutputType, ShowSign } from '@/components/Output'; import { TriangleIndicator } from '@/components/TriangleIndicator'; import { WithLabel } from '@/components/WithLabel'; - import { PnlChart, type PnlDatum } from '@/views/charts/PnlChart'; import { OnboardingTriggerButton } from '@/views/dialogs/OnboardingTriggerButton'; +import { getOnboardingState, getSubaccount } from '@/state/accountSelectors'; +import { getSelectedLocale } from '@/state/localizationSelectors'; + import { isTruthy } from '@/lib/isTruthy'; import { MustBigNumber } from '@/lib/numbers'; @@ -46,7 +50,7 @@ export const usePortfolioValues = ({ timeStyle: 'short', }) : stringGetter({ key: STRING_KEYS.PORTFOLIO_VALUE }), - [activeDatum, stringGetter] + [activeDatum, selectedLocale, stringGetter] ); const accountEquity = useMemo( @@ -55,7 +59,7 @@ export const usePortfolioValues = ({ ); const earliestVisibleDatum = visibleData?.[0]; - const latestVisibleDatum = visibleData?.[visibleData?.length - 1]; + const latestVisibleDatum = visibleData?.[(visibleData?.length ?? 1) - 1]; const pnl = useMemo(() => { let pnlDiff; @@ -77,6 +81,7 @@ export const usePortfolioValues = ({ sign: fullTimeframeDiff.gte(0) ? NumberSign.Positive : NumberSign.Negative, }; } + return undefined; }, [activeDatum, earliestVisibleDatum, latestVisibleDatum]); return { @@ -84,18 +89,19 @@ export const usePortfolioValues = ({ accountEquity, pnlDiff: pnl?.pnlDiff, pnlDiffPercent: pnl?.pnlDiffPercent, - pnlDiffSign: pnl?.sign || NumberSign.Neutral, + pnlDiffSign: pnl?.sign ?? NumberSign.Neutral, }; }; export const AccountDetailsAndHistory = () => { const stringGetter = useStringGetter(); const { isTablet } = useBreakpoints(); + const { complianceState } = useComplianceState(); const selectedLocale = useSelector(getSelectedLocale); const onboardingState = useSelector(getOnboardingState); const { buyingPower, equity, freeCollateral, leverage, marginUsage } = - useSelector(getSubaccount, shallowEqual) || {}; + useSelector(getSubaccount, shallowEqual) ?? {}; const [tooltipContext, setTooltipContext] = useState<TooltipContextType<PnlDatum>>(); @@ -136,44 +142,46 @@ export const AccountDetailsAndHistory = () => { ].filter(isTruthy); return ( - <Styled.AccountDetailsAndHistory> - <Styled.AccountValue> - <Styled.WithLabel label={accountValueLabel}> - <Styled.AccountEquity> + <$AccountDetailsAndHistory> + <$AccountValue> + <$WithLabel label={accountValueLabel}> + <$AccountEquity> <Output type={OutputType.Fiat} value={accountEquity} roundingMode={BigNumber.ROUND_FLOOR} withBaseFont /> - </Styled.AccountEquity> - <Styled.PnlDiff isPositive={MustBigNumber(pnlDiff).gte(0)}> + </$AccountEquity> + <$PnlDiff isPositive={MustBigNumber(pnlDiff).gte(0)}> {pnlDiff && <TriangleIndicator value={MustBigNumber(pnlDiff)} />} <Output type={OutputType.Fiat} showSign={ShowSign.None} value={pnlDiff} /> {pnlDiffPercent && MustBigNumber(pnlDiffPercent).isFinite() && ( - <Styled.OutputInParentheses type={OutputType.Percent} value={pnlDiffPercent} /> + <$OutputInParentheses type={OutputType.Percent} value={pnlDiffPercent} /> )} - </Styled.PnlDiff> - </Styled.WithLabel> - </Styled.AccountValue> + </$PnlDiff> + </$WithLabel> + </$AccountValue> {accountDetailsConfig.map(({ key, labelKey, type, value }) => ( - <Styled.AccountDetail key={key} gridArea={key}> - <Styled.WithLabel label={stringGetter({ key: labelKey })}> + <$AccountDetail key={key} gridArea={key}> + <$WithLabel label={stringGetter({ key: labelKey })}> <Output type={type} value={value} /> - </Styled.WithLabel> - </Styled.AccountDetail> + </$WithLabel> + </$AccountDetail> ))} - <Styled.PnlChart + <$PnlChart pnlDiffSign={pnlDiffSign} onTooltipContext={setTooltipContext} onVisibleDataChange={setVisibleData} selectedLocale={selectedLocale} slotEmpty={ - <Styled.EmptyChart> - {onboardingState !== OnboardingState.AccountConnected && ( - <Styled.OnboardingCard> + <$EmptyChart> + {complianceState === ComplianceStates.READ_ONLY ? ( + <$EmptyCard>{stringGetter({ key: STRING_KEYS.BLOCKED_MESSAGE })}</$EmptyCard> + ) : onboardingState !== OnboardingState.AccountConnected ? ( + <$EmptyCard> <p> {stringGetter({ key: { @@ -183,18 +191,15 @@ export const AccountDetailsAndHistory = () => { })} </p> <OnboardingTriggerButton /> - </Styled.OnboardingCard> - )} - </Styled.EmptyChart> + </$EmptyCard> + ) : null} + </$EmptyChart> } /> - </Styled.AccountDetailsAndHistory> + </$AccountDetailsAndHistory> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.AccountDetailsAndHistory = styled.div<{ isSidebarOpen: boolean }>` +const $AccountDetailsAndHistory = styled.div<{ isSidebarOpen?: boolean }>` height: 100%; display: grid; @@ -216,7 +221,7 @@ Styled.AccountDetailsAndHistory = styled.div<{ isSidebarOpen: boolean }>` } `; -Styled.WithLabel = styled(WithLabel)` +const $WithLabel = styled(WithLabel)` --label-textColor: var(--color-text-0); label { @@ -224,7 +229,7 @@ Styled.WithLabel = styled(WithLabel)` } `; -Styled.AccountValue = styled.div` +const $AccountValue = styled.div` grid-area: PortfolioValue; padding: 1.25rem; @@ -234,12 +239,12 @@ Styled.AccountValue = styled.div` } `; -Styled.AccountEquity = styled.div` +const $AccountEquity = styled.div` font: var(--font-extra-book); color: var(--color-text-2); `; -Styled.PnlDiff = styled.div<{ isPositive: boolean }>` +const $PnlDiff = styled.div<{ isPositive: boolean }>` color: var(--color-negative); display: flex; flex-direction: row; @@ -253,7 +258,7 @@ Styled.PnlDiff = styled.div<{ isPositive: boolean }>` `} `; -Styled.OutputInParentheses = styled(Output)` +const $OutputInParentheses = styled(Output)` &:before { content: '('; } @@ -262,7 +267,7 @@ Styled.OutputInParentheses = styled(Output)` } `; -Styled.AccountDetail = styled.div<{ gridArea: string }>` +const $AccountDetail = styled.div<{ gridArea: string }>` grid-area: ${({ gridArea }) => gridArea}; padding: 1.25rem; @@ -270,7 +275,7 @@ Styled.AccountDetail = styled.div<{ gridArea: string }>` align-items: center; `; -Styled.PnlChart = styled(PnlChart)<{ pnlDiffSign: NumberSign }>` +const $PnlChart = styled(PnlChart)<{ pnlDiffSign: NumberSign }>` grid-area: Chart; background-color: var(--color-layer-2); @@ -282,12 +287,12 @@ Styled.PnlChart = styled(PnlChart)<{ pnlDiffSign: NumberSign }>` }[pnlDiffSign])}; `; -Styled.EmptyChart = styled.div` +const $EmptyChart = styled.div` display: grid; cursor: default; `; -Styled.OnboardingCard = styled.div` +const $EmptyCard = styled.div` width: 16.75rem; ${layoutMixins.column}; diff --git a/src/pages/portfolio/Fees.tsx b/src/pages/portfolio/Fees.tsx index bf1393fb2..0fc4c989d 100644 --- a/src/pages/portfolio/Fees.tsx +++ b/src/pages/portfolio/Fees.tsx @@ -1,12 +1,16 @@ import { useCallback, useMemo } from 'react'; + import { Nullable } from '@dydxprotocol/v4-abacus'; -import styled, { AnyStyledComponent } from 'styled-components'; import { shallowEqual, useSelector } from 'react-redux'; +import styled from 'styled-components'; import { FeeTier } from '@/constants/abacus'; -import { FEE_DECIMALS } from '@/constants/numbers'; import { STRING_KEYS } from '@/constants/localization'; -import { useBreakpoints, useStringGetter } from '@/hooks'; +import { FEE_DECIMALS } from '@/constants/numbers'; + +import { useBreakpoints } from '@/hooks/useBreakpoints'; +import { useStringGetter } from '@/hooks/useStringGetter'; + import { breakpoints } from '@/styles'; import { layoutMixins } from '@/styles/layoutMixins'; import { tableMixins } from '@/styles/tableMixins'; @@ -43,69 +47,60 @@ export const Fees = () => { }, [userStats]); const AdditionalConditions = useCallback( - ({ - totalShare, - makerShare, - isAdditional, - }: { + (conditions: { totalShare: Nullable<number>; makerShare: Nullable<number>; isAdditional?: boolean; - }) => ( - <Styled.AdditionalConditions> - {!isAdditional && !totalShare && !makerShare && <Output type={OutputType.Text} />} - {!!totalShare && ( - <Styled.AdditionalConditionsText> - {isAdditional && stringGetter({ key: STRING_KEYS.AND })}{' '} - {stringGetter({ key: STRING_KEYS.EXCHANGE_MARKET_SHARE })}{' '} - <Styled.Highlighted>{'>'}</Styled.Highlighted>{' '} - <Styled.HighlightOutput - type={OutputType.Percent} - value={totalShare} - fractionDigits={0} - /> - </Styled.AdditionalConditionsText> - )} - {!!makerShare && ( - <Styled.AdditionalConditionsText> - {isAdditional && stringGetter({ key: STRING_KEYS.AND })}{' '} - {stringGetter({ key: STRING_KEYS.MAKER_MARKET_SHARE })}{' '} - <Styled.Highlighted>{'>'}</Styled.Highlighted>{' '} - <Styled.HighlightOutput - type={OutputType.Percent} - value={makerShare} - fractionDigits={0} - /> - </Styled.AdditionalConditionsText> - )} - </Styled.AdditionalConditions> - ), + }) => { + const { totalShare, makerShare, isAdditional } = conditions; + return ( + <$AdditionalConditions> + {!isAdditional && !totalShare && !makerShare && <Output type={OutputType.Text} />} + {!!totalShare && ( + <$AdditionalConditionsText> + {isAdditional && stringGetter({ key: STRING_KEYS.AND })}{' '} + {stringGetter({ key: STRING_KEYS.EXCHANGE_MARKET_SHARE })}{' '} + <$Highlighted>{'>'}</$Highlighted>{' '} + <$HighlightOutput type={OutputType.Percent} value={totalShare} fractionDigits={0} /> + </$AdditionalConditionsText> + )} + {!!makerShare && ( + <$AdditionalConditionsText> + {isAdditional && stringGetter({ key: STRING_KEYS.AND })}{' '} + {stringGetter({ key: STRING_KEYS.MAKER_MARKET_SHARE })}{' '} + <$Highlighted>{'>'}</$Highlighted>{' '} + <$HighlightOutput type={OutputType.Percent} value={makerShare} fractionDigits={0} /> + </$AdditionalConditionsText> + )} + </$AdditionalConditions> + ); + }, [stringGetter] ); return ( <AttachedExpandingSection> {isNotTablet && <ContentSectionHeader title={stringGetter({ key: STRING_KEYS.FEES })} />} - <Styled.ContentWrapper> - <Styled.FeesDetails + <$ContentWrapper> + <$FeesDetails layout="grid" items={[ { key: 'volume', label: ( - <Styled.CardLabel> + <$CardLabel> <span>{stringGetter({ key: STRING_KEYS.TRAILING_VOLUME })}</span> <span>{stringGetter({ key: STRING_KEYS._30D })}</span> - </Styled.CardLabel> + </$CardLabel> ), value: <Output type={OutputType.Fiat} value={volume} />, }, ]} /> - <Styled.FeeTable + <$FeeTable label="Fee Tiers" - data={feeTiers || []} + data={feeTiers ?? []} getRowKey={(row: FeeTier) => row.tier} getRowAttributes={(row: FeeTier) => ({ 'data-yours': row.tier === userFeeTier, @@ -118,14 +113,14 @@ export const Fees = () => { label: stringGetter({ key: STRING_KEYS.TIER }), allowsSorting: false, renderCell: ({ tier }) => ( - <Styled.Tier> - <Styled.Output type={OutputType.Text} value={tier} /> + <$Tier> + <$Output type={OutputType.Text} value={tier} /> {tier === userFeeTier && ( - <Styled.YouTag size={TagSize.Medium}> + <$YouTag size={TagSize.Medium}> {stringGetter({ key: STRING_KEYS.YOU })} - </Styled.YouTag> + </$YouTag> )} - </Styled.Tier> + </$Tier> ), }, { @@ -133,14 +128,14 @@ export const Fees = () => { getCellValue: (row) => row.volume, label: stringGetter({ key: STRING_KEYS.VOLUME_30D }), allowsSorting: false, - renderCell: ({ symbol, volume, makerShare, totalShare }) => ( + renderCell: ({ symbol, volume: vol, makerShare, totalShare }) => ( <> <span>{`${ symbol in EQUALITY_SYMBOL_MAP ? EQUALITY_SYMBOL_MAP[symbol as keyof typeof EQUALITY_SYMBOL_MAP] : symbol } `}</span> - <Styled.HighlightOutput type={OutputType.CompactFiat} value={volume} /> + <$HighlightOutput type={OutputType.CompactFiat} value={vol} /> {isTablet && AdditionalConditions({ totalShare, makerShare, isAdditional: true })} </> @@ -160,7 +155,7 @@ export const Fees = () => { label: stringGetter({ key: STRING_KEYS.MAKER }), allowsSorting: false, renderCell: ({ maker }) => ( - <Styled.HighlightOutput + <$HighlightOutput type={OutputType.SmallPercent} value={maker} fractionDigits={FEE_DECIMALS} @@ -173,7 +168,7 @@ export const Fees = () => { label: stringGetter({ key: STRING_KEYS.TAKER }), allowsSorting: false, renderCell: ({ taker }) => ( - <Styled.HighlightOutput + <$HighlightOutput type={OutputType.SmallPercent} value={taker} fractionDigits={FEE_DECIMALS} @@ -183,24 +178,22 @@ export const Fees = () => { ] as ColumnDef<FeeTier>[] ).filter(isTruthy)} selectionBehavior="replace" + paginationBehavior="showAll" withOuterBorder={isNotTablet} withInnerBorders /> - </Styled.ContentWrapper> + </$ContentWrapper> </AttachedExpandingSection> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.ContentWrapper = styled.div` +const $ContentWrapper = styled.div` ${layoutMixins.flexColumn} gap: 1.5rem; max-width: 100vw; `; -Styled.AdditionalConditions = styled.div` - ${tableMixins.cellContentColumn} +const $AdditionalConditions = styled.div` + ${tableMixins.stackedWithSecondaryStyling} justify-content: end; color: var(--color-text-0); @@ -211,7 +204,7 @@ Styled.AdditionalConditions = styled.div` } `; -Styled.AdditionalConditionsText = styled.span` +const $AdditionalConditionsText = styled.span` display: flex; gap: 0.5ch; @@ -226,7 +219,7 @@ Styled.AdditionalConditionsText = styled.span` } `; -Styled.FeesDetails = styled(Details)` +const $FeesDetails = styled(Details)` gap: 1rem; @media ${breakpoints.notTablet} { @@ -261,12 +254,12 @@ Styled.FeesDetails = styled(Details)` } `; -Styled.TextRow = styled.div` +const $TextRow = styled.div` ${layoutMixins.inlineRow} gap: 0.25rem; `; -Styled.CardLabel = styled(Styled.TextRow)` +const $CardLabel = styled($TextRow)` font: var(--font-small-book); color: var(--color-text-1); @@ -280,7 +273,7 @@ Styled.CardLabel = styled(Styled.TextRow)` } `; -Styled.FeeTable = styled(Table)` +const $FeeTable = styled(Table)` --tableCell-padding: 0.5rem 1.5rem; --bordered-content-border-radius: 0.625rem; --table-cell-align: end; @@ -303,26 +296,26 @@ Styled.FeeTable = styled(Table)` } @media ${breakpoints.notTablet} { - --tableHeader-backgroundColor: var(--color-layer-1); + --tableStickyRow-backgroundColor: var(--color-layer-1); } -`; +` as typeof Table; -Styled.Output = styled(Output)` +const $Output = styled(Output)` color: var(--color-text-0); `; -Styled.Highlighted = styled.strong` +const $Highlighted = styled.strong` color: var(--color-text-1); `; -Styled.HighlightOutput = styled(Output)` +const $HighlightOutput = styled(Output)` color: var(--color-text-1); `; -Styled.Tier = styled(Styled.TextRow)` +const $Tier = styled($TextRow)` gap: 0.5rem; `; -Styled.YouTag = styled(Tag)` +const $YouTag = styled(Tag)` color: var(--color-text-1); `; diff --git a/src/pages/portfolio/History.tsx b/src/pages/portfolio/History.tsx index 78f85aa1d..e7c116c4d 100644 --- a/src/pages/portfolio/History.tsx +++ b/src/pages/portfolio/History.tsx @@ -1,14 +1,17 @@ import { Outlet } from 'react-router-dom'; +import styled from 'styled-components'; import { STRING_KEYS } from '@/constants/localization'; import { HistoryRoute } from '@/constants/routes'; -import { useBreakpoints, useStringGetter } from '@/hooks'; -import styled, { AnyStyledComponent } from 'styled-components'; +import { useBreakpoints } from '@/hooks/useBreakpoints'; +import { useStringGetter } from '@/hooks/useStringGetter'; + import { layoutMixins } from '@/styles/layoutMixins'; import { AttachedExpandingSection } from '@/components/ContentSection'; import { NavigationMenu } from '@/components/NavigationMenu'; +import { ExportHistoryDropdown } from '@/views/ExportHistoryDropdown'; export const History = () => { const stringGetter = useStringGetter(); @@ -17,8 +20,9 @@ export const History = () => { return ( <AttachedExpandingSection> {isNotTablet && ( - <Styled.NavigationMenu + <$NavigationMenu orientation="horizontal" + slotAfter={<Styled.ExportButton />} items={[ { group: 'navigation', @@ -50,10 +54,13 @@ export const History = () => { </AttachedExpandingSection> ); }; - const Styled: Record<string, AnyStyledComponent> = {}; -Styled.NavigationMenu = styled(NavigationMenu)` +Styled.ExportButton = styled(ExportHistoryDropdown)` + margin-left: auto; +`; + +const $NavigationMenu = styled(NavigationMenu)` --header-horizontal-padding: 1rem; ${layoutMixins.contentSectionDetached} diff --git a/src/pages/portfolio/Orders.tsx b/src/pages/portfolio/Orders.tsx index ef4d2a25d..8e1d399c5 100644 --- a/src/pages/portfolio/Orders.tsx +++ b/src/pages/portfolio/Orders.tsx @@ -1,12 +1,13 @@ import { useSelector } from 'react-redux'; import { STRING_KEYS } from '@/constants/localization'; -import { useBreakpoints, useStringGetter } from '@/hooks'; -import { OrdersTable, OrdersTableColumnKey } from '@/views/tables/OrdersTable'; +import { useBreakpoints } from '@/hooks/useBreakpoints'; +import { useStringGetter } from '@/hooks/useStringGetter'; -import { ContentSectionHeader } from '@/components/ContentSectionHeader'; import { AttachedExpandingSection } from '@/components/ContentSection'; +import { ContentSectionHeader } from '@/components/ContentSectionHeader'; +import { OrdersTable, OrdersTableColumnKey } from '@/views/tables/OrdersTable'; import { calculateIsAccountViewOnly } from '@/state/accountCalculators'; diff --git a/src/pages/portfolio/Overview.tsx b/src/pages/portfolio/Overview.tsx index 5e385d4c6..ac3a714af 100644 --- a/src/pages/portfolio/Overview.tsx +++ b/src/pages/portfolio/Overview.tsx @@ -1,20 +1,38 @@ import { useSelector } from 'react-redux'; -import styled, { AnyStyledComponent } from 'styled-components'; +import { useNavigate } from 'react-router-dom'; +import styled from 'styled-components'; import { STRING_KEYS } from '@/constants/localization'; -import { AppRoute } from '@/constants/routes'; -import { useBreakpoints, useStringGetter } from '@/hooks'; +import { AppRoute, PortfolioRoute } from '@/constants/routes'; + +import { useBreakpoints } from '@/hooks/useBreakpoints'; +import { useStringGetter } from '@/hooks/useStringGetter'; import { AttachedExpandingSection, DetachedSection } from '@/components/ContentSection'; import { ContentSectionHeader } from '@/components/ContentSectionHeader'; - import { PositionsTable, PositionsTableColumnKey } from '@/views/tables/PositionsTable'; +import { + calculateShouldRenderActionsInPositionsTable, + calculateShouldRenderTriggersInPositionsTable, +} from '@/state/accountCalculators'; + +import { isTruthy } from '@/lib/isTruthy'; +import { testFlags } from '@/lib/testFlags'; + import { AccountDetailsAndHistory } from './AccountDetailsAndHistory'; export const Overview = () => { const stringGetter = useStringGetter(); const { isTablet } = useBreakpoints(); + const navigate = useNavigate(); + + const showClosePositionAction = false; + + const shouldRenderTriggers = useSelector(calculateShouldRenderTriggersInPositionsTable); + const shouldRenderActions = useSelector( + calculateShouldRenderActionsInPositionsTable(showClosePositionAction) + ); return ( <div> @@ -22,7 +40,7 @@ export const Overview = () => { <AccountDetailsAndHistory /> </DetachedSection> - <Styled.AttachedExpandingSection> + <$AttachedExpandingSection> <ContentSectionHeader title={stringGetter({ key: STRING_KEYS.OPEN_POSITIONS })} /> <PositionsTable @@ -35,26 +53,28 @@ export const Overview = () => { ] : [ PositionsTableColumnKey.Market, - PositionsTableColumnKey.Side, PositionsTableColumnKey.Size, - PositionsTableColumnKey.Leverage, - PositionsTableColumnKey.LiquidationAndOraclePrice, PositionsTableColumnKey.UnrealizedPnl, - PositionsTableColumnKey.RealizedPnl, + !testFlags.isolatedMargin && PositionsTableColumnKey.RealizedPnl, PositionsTableColumnKey.AverageOpenAndClose, - ] + PositionsTableColumnKey.LiquidationAndOraclePrice, + shouldRenderTriggers && PositionsTableColumnKey.Triggers, + shouldRenderActions && PositionsTableColumnKey.Actions, + ].filter(isTruthy) } currentRoute={AppRoute.Portfolio} - withGradientCardRows + navigateToOrders={() => + navigate(`${AppRoute.Portfolio}/${PortfolioRoute.Orders}`, { + state: { from: AppRoute.Portfolio }, + }) + } + showClosePositionAction={showClosePositionAction} withOuterBorder /> - </Styled.AttachedExpandingSection> + </$AttachedExpandingSection> </div> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.AttachedExpandingSection = styled(AttachedExpandingSection)` +const $AttachedExpandingSection = styled(AttachedExpandingSection)` margin-top: 1rem; `; diff --git a/src/pages/portfolio/Portfolio.tsx b/src/pages/portfolio/Portfolio.tsx index 58aaeffe1..73047ad1b 100644 --- a/src/pages/portfolio/Portfolio.tsx +++ b/src/pages/portfolio/Portfolio.tsx @@ -1,24 +1,33 @@ import { lazy, Suspense } from 'react'; + import { shallowEqual, useDispatch, useSelector } from 'react-redux'; -import styled, { type AnyStyledComponent } from 'styled-components'; import { Navigate, Route, Routes } from 'react-router-dom'; +import styled from 'styled-components'; import { OnboardingState } from '@/constants/account'; import { ButtonAction } from '@/constants/buttons'; +import { ComplianceStates } from '@/constants/compliance'; import { DialogTypes } from '@/constants/dialogs'; import { STRING_KEYS } from '@/constants/localization'; import { HistoryRoute, PortfolioRoute } from '@/constants/routes'; -import { useAccountBalance, useBreakpoints, useDocumentTitle, useStringGetter } from '@/hooks'; + +import { useAccountBalance } from '@/hooks/useAccountBalance'; +import { useBreakpoints } from '@/hooks/useBreakpoints'; +import { useComplianceState } from '@/hooks/useComplianceState'; +import { useDocumentTitle } from '@/hooks/useDocumentTitle'; +import { useStringGetter } from '@/hooks/useStringGetter'; + import { layoutMixins } from '@/styles/layoutMixins'; -import { FillsTable, FillsTableColumnKey } from '@/views/tables/FillsTable'; -import { FundingPaymentsTable } from '@/views/tables/FundingPaymentsTable'; -import { TransferHistoryTable } from '@/views/tables/TransferHistoryTable'; import { Button } from '@/components/Button'; import { Icon, IconName } from '@/components/Icon'; +import { LoadingSpace } from '@/components/Loading/LoadingSpinner'; import { NavigationMenu } from '@/components/NavigationMenu'; import { Tag, TagType } from '@/components/Tag'; import { WithSidebar } from '@/components/WithSidebar'; +import { FillsTable, FillsTableColumnKey } from '@/views/tables/FillsTable'; +import { FundingPaymentsTable } from '@/views/tables/FundingPaymentsTable'; +import { TransferHistoryTable } from '@/views/tables/TransferHistoryTable'; import { getOnboardingState, getSubaccount, getTradeInfoNumbers } from '@/state/accountSelectors'; import { openDialog } from '@/state/dialogs'; @@ -26,7 +35,6 @@ import { openDialog } from '@/state/dialogs'; import { shortenNumberForDisplay } from '@/lib/numbers'; import { PortfolioNavMobile } from './PortfolioNavMobile'; -import { LoadingSpace } from '@/components/Loading/LoadingSpinner'; const Overview = lazy(() => import('./Overview').then((module) => ({ default: module.Overview }))); const Positions = lazy(() => @@ -36,21 +44,24 @@ const Orders = lazy(() => import('./Orders').then((module) => ({ default: module const Fees = lazy(() => import('./Fees').then((module) => ({ default: module.Fees }))); const History = lazy(() => import('./History').then((module) => ({ default: module.History }))); -export default () => { +const PortfolioPage = () => { const dispatch = useDispatch(); const stringGetter = useStringGetter(); const { isTablet, isNotTablet } = useBreakpoints(); + const { complianceState } = useComplianceState(); + + const initialPageSize = 20; const onboardingState = useSelector(getOnboardingState); - const { freeCollateral } = useSelector(getSubaccount, shallowEqual) || {}; + const { freeCollateral } = useSelector(getSubaccount, shallowEqual) ?? {}; const { nativeTokenBalance } = useAccountBalance(); const { numTotalPositions, numTotalOpenOrders } = - useSelector(getTradeInfoNumbers, shallowEqual) || {}; + useSelector(getTradeInfoNumbers, shallowEqual) ?? {}; const numPositions = shortenNumberForDisplay(numTotalPositions); const numOrders = shortenNumberForDisplay(numTotalOpenOrders); - const usdcBalance = freeCollateral?.current || 0; + const usdcBalance = freeCollateral?.current ?? 0; useDocumentTitle(stringGetter({ key: STRING_KEYS.PORTFOLIO })); @@ -67,6 +78,7 @@ export default () => { path={HistoryRoute.Trades} element={ <FillsTable + initialPageSize={initialPageSize} columnKeys={ isTablet ? [ @@ -90,11 +102,21 @@ export default () => { /> <Route path={HistoryRoute.Transfers} - element={<TransferHistoryTable withOuterBorder={isNotTablet} />} + element={ + <TransferHistoryTable + initialPageSize={initialPageSize} + withOuterBorder={isNotTablet} + /> + } /> <Route path={HistoryRoute.Payments} - element={<FundingPaymentsTable withOuterBorder={isNotTablet} />} + element={ + <FundingPaymentsTable + initialPageSize={initialPageSize} + withOuterBorder={isNotTablet} + /> + } /> </Route> <Route path="*" element={<Navigate to={PortfolioRoute.Overview} replace />} /> @@ -103,16 +125,16 @@ export default () => { ); return isTablet ? ( - <Styled.PortfolioMobile> + <$PortfolioMobile> <PortfolioNavMobile /> {routesComponent} - </Styled.PortfolioMobile> + </$PortfolioMobile> ) : ( <WithSidebar sidebar={ isTablet ? null : ( - <Styled.SideBar> - <Styled.NavigationMenu + <$SideBar> + <$NavigationMenu items={[ { group: 'views', @@ -121,9 +143,9 @@ export default () => { { value: PortfolioRoute.Overview, slotBefore: ( - <Styled.IconContainer> + <$IconContainer> <Icon iconName={IconName.Overview} /> - </Styled.IconContainer> + </$IconContainer> ), label: stringGetter({ key: STRING_KEYS.OVERVIEW }), href: PortfolioRoute.Overview, @@ -131,9 +153,9 @@ export default () => { { value: PortfolioRoute.Positions, slotBefore: ( - <Styled.IconContainer> + <$IconContainer> <Icon iconName={IconName.Positions} /> - </Styled.IconContainer> + </$IconContainer> ), label: ( <> @@ -149,9 +171,9 @@ export default () => { { value: PortfolioRoute.Orders, slotBefore: ( - <Styled.IconContainer> + <$IconContainer> <Icon iconName={IconName.OrderPending} /> - </Styled.IconContainer> + </$IconContainer> ), label: ( <> @@ -166,9 +188,9 @@ export default () => { { value: PortfolioRoute.Fees, slotBefore: ( - <Styled.IconContainer> + <$IconContainer> <Icon iconName={IconName.Calculator} /> - </Styled.IconContainer> + </$IconContainer> ), label: stringGetter({ key: STRING_KEYS.FEES }), href: PortfolioRoute.Fees, @@ -176,9 +198,9 @@ export default () => { { value: PortfolioRoute.History, slotBefore: ( - <Styled.IconContainer> + <$IconContainer> <Icon iconName={IconName.History} /> - </Styled.IconContainer> + </$IconContainer> ), label: stringGetter({ key: STRING_KEYS.HISTORY }), href: PortfolioRoute.History, @@ -188,32 +210,35 @@ export default () => { ]} /> {onboardingState === OnboardingState.AccountConnected && ( - <Styled.Footer> - <Button - action={ButtonAction.Primary} - onClick={() => dispatch(openDialog({ type: DialogTypes.Deposit }))} - > - {stringGetter({ key: STRING_KEYS.DEPOSIT })} - </Button> - {usdcBalance > 0 && ( + <$Footer> + {complianceState === ComplianceStates.FULL_ACCESS && ( <Button - action={ButtonAction.Base} - onClick={() => dispatch(openDialog({ type: DialogTypes.Withdraw }))} + action={ButtonAction.Primary} + onClick={() => dispatch(openDialog({ type: DialogTypes.Deposit }))} > - {stringGetter({ key: STRING_KEYS.WITHDRAW })} + {stringGetter({ key: STRING_KEYS.DEPOSIT })} </Button> )} - {(usdcBalance > 0 || nativeTokenBalance.gt(0)) && ( + {usdcBalance > 0 && ( <Button action={ButtonAction.Base} - onClick={() => dispatch(openDialog({ type: DialogTypes.Transfer }))} + onClick={() => dispatch(openDialog({ type: DialogTypes.Withdraw }))} > - {stringGetter({ key: STRING_KEYS.TRANSFER })} + {stringGetter({ key: STRING_KEYS.WITHDRAW })} </Button> )} - </Styled.Footer> + {complianceState === ComplianceStates.FULL_ACCESS && + (usdcBalance > 0 || nativeTokenBalance.gt(0)) && ( + <Button + action={ButtonAction.Base} + onClick={() => dispatch(openDialog({ type: DialogTypes.Transfer }))} + > + {stringGetter({ key: STRING_KEYS.TRANSFER })} + </Button> + )} + </$Footer> )} - </Styled.SideBar> + </$SideBar> ) } > @@ -222,21 +247,21 @@ export default () => { ); }; -const Styled: Record<string, AnyStyledComponent> = {}; +export default PortfolioPage; -Styled.PortfolioMobile = styled.div` +const $PortfolioMobile = styled.div` min-height: 100%; ${layoutMixins.expandingColumnWithHeader} `; -Styled.SideBar = styled.div` +const $SideBar = styled.div` ${layoutMixins.flexColumn} justify-content: space-between; height: 100%; `; -Styled.Footer = styled.div` +const $Footer = styled.div` ${layoutMixins.row} flex-wrap: wrap; @@ -249,12 +274,12 @@ Styled.Footer = styled.div` } `; -Styled.NavigationMenu = styled(NavigationMenu)` +const $NavigationMenu = styled(NavigationMenu)` padding: 0.5rem; padding-top: 0; `; -Styled.IconContainer = styled.div` +const $IconContainer = styled.div` width: 1.5rem; height: 1.5rem; font-size: 0.75rem; diff --git a/src/pages/portfolio/PortfolioNavMobile.tsx b/src/pages/portfolio/PortfolioNavMobile.tsx index 0ce1a6583..855e9f224 100644 --- a/src/pages/portfolio/PortfolioNavMobile.tsx +++ b/src/pages/portfolio/PortfolioNavMobile.tsx @@ -1,12 +1,13 @@ import { useLocation, useNavigate } from 'react-router-dom'; -import styled, { type AnyStyledComponent } from 'styled-components'; +import styled from 'styled-components'; -import { AppRoute, HistoryRoute, PortfolioRoute } from '@/constants/routes'; import { STRING_KEYS } from '@/constants/localization'; -import { useStringGetter } from '@/hooks'; +import { AppRoute, HistoryRoute, PortfolioRoute } from '@/constants/routes'; + +import { useStringGetter } from '@/hooks/useStringGetter'; + import { layoutMixins } from '@/styles/layoutMixins'; -import { BackButton } from '@/components/BackButton'; import { DropdownHeaderMenu } from '@/components/DropdownHeaderMenu'; export const PortfolioNavMobile = () => { @@ -60,7 +61,7 @@ export const PortfolioNavMobile = () => { const currentRoute = routeMap[pathname]; return ( - <Styled.MobilePortfolioHeader> + <$MobilePortfolioHeader> <DropdownHeaderMenu key="portfolioRoute" items={portfolioRouteItems.filter(({ value }) => value !== currentRoute?.value)} @@ -68,13 +69,10 @@ export const PortfolioNavMobile = () => { > {currentRoute?.label} </DropdownHeaderMenu> - </Styled.MobilePortfolioHeader> + </$MobilePortfolioHeader> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.MobilePortfolioHeader = styled.div` +const $MobilePortfolioHeader = styled.div` ${layoutMixins.stickyHeader} ${layoutMixins.withOuterBorder} ${layoutMixins.row} diff --git a/src/pages/portfolio/Positions.tsx b/src/pages/portfolio/Positions.tsx index 59184703d..9265e641b 100644 --- a/src/pages/portfolio/Positions.tsx +++ b/src/pages/portfolio/Positions.tsx @@ -1,14 +1,35 @@ +import { useSelector } from 'react-redux'; +import { useNavigate } from 'react-router-dom'; + import { STRING_KEYS } from '@/constants/localization'; import { AppRoute, PortfolioRoute } from '@/constants/routes'; -import { useBreakpoints, useStringGetter } from '@/hooks'; + +import { useBreakpoints } from '@/hooks/useBreakpoints'; +import { useStringGetter } from '@/hooks/useStringGetter'; import { AttachedExpandingSection } from '@/components/ContentSection'; import { ContentSectionHeader } from '@/components/ContentSectionHeader'; import { PositionsTable, PositionsTableColumnKey } from '@/views/tables/PositionsTable'; +import { + calculateShouldRenderActionsInPositionsTable, + calculateShouldRenderTriggersInPositionsTable, +} from '@/state/accountCalculators'; + +import { isTruthy } from '@/lib/isTruthy'; +import { testFlags } from '@/lib/testFlags'; + export const Positions = () => { const stringGetter = useStringGetter(); const { isTablet, isNotTablet } = useBreakpoints(); + const navigate = useNavigate(); + + const showClosePositionAction = false; + + const shouldRenderTriggers = useSelector(calculateShouldRenderTriggersInPositionsTable); + const shouldRenderActions = useSelector( + calculateShouldRenderActionsInPositionsTable(showClosePositionAction) + ); return ( <AttachedExpandingSection> @@ -24,17 +45,25 @@ export const Positions = () => { ] : [ PositionsTableColumnKey.Market, - PositionsTableColumnKey.Side, PositionsTableColumnKey.Size, - PositionsTableColumnKey.Leverage, - PositionsTableColumnKey.LiquidationAndOraclePrice, + testFlags.isolatedMargin && PositionsTableColumnKey.Margin, PositionsTableColumnKey.UnrealizedPnl, - PositionsTableColumnKey.RealizedPnl, + !testFlags.isolatedMargin && PositionsTableColumnKey.RealizedPnl, + PositionsTableColumnKey.NetFunding, PositionsTableColumnKey.AverageOpenAndClose, - ] + PositionsTableColumnKey.LiquidationAndOraclePrice, + shouldRenderTriggers && PositionsTableColumnKey.Triggers, + shouldRenderActions && PositionsTableColumnKey.Actions, + ].filter(isTruthy) } currentRoute={`${AppRoute.Portfolio}/${PortfolioRoute.Positions}`} withOuterBorder={isNotTablet} + showClosePositionAction={showClosePositionAction} + navigateToOrders={() => + navigate(`${AppRoute.Portfolio}/${PortfolioRoute.Orders}`, { + state: { from: AppRoute.Portfolio }, + }) + } /> </AttachedExpandingSection> ); diff --git a/src/pages/settings/Settings.tsx b/src/pages/settings/Settings.tsx index e8dde6d00..d8b98d028 100644 --- a/src/pages/settings/Settings.tsx +++ b/src/pages/settings/Settings.tsx @@ -1,29 +1,27 @@ -import { Navigate, Route, Routes, useLocation } from 'react-router-dom'; import { useDispatch, useSelector } from 'react-redux'; +import { Navigate, Route, Routes, useLocation } from 'react-router-dom'; import { STRING_KEYS, - SupportedLocales, SUPPORTED_LOCALE_STRING_LABELS, + SupportedLocales, } from '@/constants/localization'; - import type { MenuItem } from '@/constants/menus'; import { DydxNetwork } from '@/constants/networks'; import { AppRoute, MobileSettingsRoute } from '@/constants/routes'; -import { useStringGetter, useSelectedNetwork } from '@/hooks'; +import { useSelectedNetwork } from '@/hooks/useSelectedNetwork'; +import { useStringGetter } from '@/hooks/useStringGetter'; +import { ComingSoonSpace } from '@/components/ComingSoon'; import { PageMenu } from '@/components/PageMenu'; import { PageMenuItemType } from '@/components/PageMenu/PageMenuItem'; +import { useNetworks } from '@/views/menus/useNetworks'; import { setSelectedLocale } from '@/state/localization'; - import { getSelectedLocale } from '@/state/localizationSelectors'; -import { useNetworks } from '@/views/menus/useNetworks'; - import { SettingsHeader } from './SettingsHeader'; -import { ComingSoonSpace } from '@/components/ComingSoon'; const SettingsPage = () => { const stringGetter = useStringGetter(); diff --git a/src/pages/settings/SettingsHeader.tsx b/src/pages/settings/SettingsHeader.tsx index 0faeffc6a..294feafd7 100644 --- a/src/pages/settings/SettingsHeader.tsx +++ b/src/pages/settings/SettingsHeader.tsx @@ -1,7 +1,8 @@ -import styled, { type AnyStyledComponent } from 'styled-components'; +import styled from 'styled-components'; -import { StringGetterFunction, STRING_KEYS } from '@/constants/localization'; +import { STRING_KEYS, type StringGetterFunction } from '@/constants/localization'; import { AppRoute, MobileSettingsRoute } from '@/constants/routes'; + import { layoutMixins } from '@/styles/layoutMixins'; import { BackButton } from '@/components/BackButton'; @@ -39,16 +40,13 @@ export const SettingsHeader = ({ const currentRoute = routeMap[pathname]; return ( - <Styled.SettingsHeader> + <$SettingsHeader> <BackButton /> - <Styled.Label>{currentRoute?.label}</Styled.Label> - </Styled.SettingsHeader> + <$Label>{currentRoute?.label}</$Label> + </$SettingsHeader> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.SettingsHeader = styled.header` +const $SettingsHeader = styled.header` --stickyArea-topHeight: var(--page-header-height-mobile); ${layoutMixins.stickyHeader} @@ -59,7 +57,7 @@ Styled.SettingsHeader = styled.header` background-color: var(--color-layer-2); `; -Styled.Label = styled.h1` +const $Label = styled.h1` padding: 0.5rem; font: var(--font-extra-medium); `; diff --git a/src/pages/token/Governance.tsx b/src/pages/token/Governance.tsx index 723f0ec4c..d22895a99 100644 --- a/src/pages/token/Governance.tsx +++ b/src/pages/token/Governance.tsx @@ -1,7 +1,9 @@ -import styled, { AnyStyledComponent } from 'styled-components'; +import styled from 'styled-components'; import { STRING_KEYS } from '@/constants/localization'; -import { useStringGetter } from '@/hooks'; + +import { useStringGetter } from '@/hooks/useStringGetter'; + import { breakpoints } from '@/styles'; import { layoutMixins } from '@/styles/layoutMixins'; @@ -11,31 +13,30 @@ import { ContentSectionHeader } from '@/components/ContentSectionHeader'; import { GovernancePanel } from './rewards/GovernancePanel'; import { NewMarketsPanel } from './rewards/NewMarketsPanel'; -export default () => { +const Governance = () => { const stringGetter = useStringGetter(); return ( <DetachedSection> - <Styled.HeaderSection> + <$HeaderSection> <ContentSectionHeader title={stringGetter({ key: STRING_KEYS.GOVERNANCE })} subtitle={stringGetter({ key: STRING_KEYS.GOVERNANCE_PAGE_SUBTITLE })} /> - </Styled.HeaderSection> + </$HeaderSection> - <Styled.ContentWrapper> - <Styled.Row> + <$ContentWrapper> + <$Row> <GovernancePanel /> <NewMarketsPanel /> - </Styled.Row> - </Styled.ContentWrapper> + </$Row> + </$ContentWrapper> </DetachedSection> ); }; +export default Governance; -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.HeaderSection = styled.section` +const $HeaderSection = styled.section` ${layoutMixins.contentSectionDetached} @media ${breakpoints.tablet} { @@ -46,14 +47,14 @@ Styled.HeaderSection = styled.section` } `; -Styled.ContentWrapper = styled.div` +const $ContentWrapper = styled.div` ${layoutMixins.flexColumn} gap: 1.5rem; max-width: 80rem; padding: 0 1rem; `; -Styled.Row = styled.div` +const $Row = styled.div` gap: 1rem; display: grid; grid-template-columns: repeat(3, 1fr); diff --git a/src/pages/token/Token.tsx b/src/pages/token/Token.tsx index 6471f21c7..14d595bb0 100644 --- a/src/pages/token/Token.tsx +++ b/src/pages/token/Token.tsx @@ -1,10 +1,14 @@ import { Suspense, lazy } from 'react'; + import { Navigate, Route, Routes } from 'react-router-dom'; -import styled, { AnyStyledComponent } from 'styled-components'; +import styled from 'styled-components'; import { STRING_KEYS } from '@/constants/localization'; import { TokenRoute } from '@/constants/routes'; -import { useBreakpoints, useStringGetter } from '@/hooks'; + +import { useBreakpoints } from '@/hooks/useBreakpoints'; +import { useStringGetter } from '@/hooks/useStringGetter'; + import { layoutMixins } from '@/styles/layoutMixins'; import { Icon, IconName } from '@/components/Icon'; @@ -16,7 +20,7 @@ const RewardsPage = lazy(() => import('./rewards/RewardsPage')); const StakingPage = lazy(() => import('./staking/StakingPage')); const GovernancePage = lazy(() => import('./Governance')); -export default () => { +const Token = () => { const { isTablet } = useBreakpoints(); const stringGetter = useStringGetter(); @@ -35,8 +39,8 @@ export default () => { <WithSidebar sidebar={ isTablet ? null : ( - <Styled.SideBar> - <Styled.NavigationMenu + <$SideBar> + <$NavigationMenu items={[ { group: 'views', @@ -45,9 +49,9 @@ export default () => { { value: TokenRoute.TradingRewards, slotBefore: ( - <Styled.IconContainer> + <$IconContainer> <Icon iconName={IconName.Token} /> - </Styled.IconContainer> + </$IconContainer> ), label: stringGetter({ key: STRING_KEYS.TRADING_REWARDS }), href: TokenRoute.TradingRewards, @@ -55,9 +59,9 @@ export default () => { { value: TokenRoute.StakingRewards, slotBefore: ( - <Styled.IconContainer> + <$IconContainer> <Icon iconName={IconName.CurrencySign} /> - </Styled.IconContainer> + </$IconContainer> ), label: stringGetter({ key: STRING_KEYS.STAKING_REWARDS }), href: TokenRoute.StakingRewards, @@ -66,9 +70,9 @@ export default () => { { value: TokenRoute.Governance, slotBefore: ( - <Styled.IconContainer> + <$IconContainer> <Icon iconName={IconName.Governance} /> - </Styled.IconContainer> + </$IconContainer> ), label: stringGetter({ key: STRING_KEYS.GOVERNANCE }), href: TokenRoute.Governance, @@ -77,7 +81,7 @@ export default () => { }, ]} /> - </Styled.SideBar> + </$SideBar> ) } > @@ -85,35 +89,21 @@ export default () => { </WithSidebar> ); }; +export default Token; -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.SideBar = styled.div` +const $SideBar = styled.div` ${layoutMixins.flexColumn} justify-content: space-between; height: 100%; `; -Styled.Footer = styled.div` - ${layoutMixins.row} - flex-wrap: wrap; - - padding: 1rem; - - gap: 0.5rem; - - > button { - flex-grow: 1; - } -`; - -Styled.NavigationMenu = styled(NavigationMenu)` +const $NavigationMenu = styled(NavigationMenu)` padding: 0.5rem; padding-top: 0; `; -Styled.IconContainer = styled.div` +const $IconContainer = styled.div` width: 1.5rem; height: 1.5rem; font-size: 0.75rem; diff --git a/src/pages/token/rewards/DYDXBalancePanel.tsx b/src/pages/token/rewards/DYDXBalancePanel.tsx index b601783fd..3b4454ecf 100644 --- a/src/pages/token/rewards/DYDXBalancePanel.tsx +++ b/src/pages/token/rewards/DYDXBalancePanel.tsx @@ -1,14 +1,19 @@ import type { ElementType } from 'react'; -import styled, { AnyStyledComponent } from 'styled-components'; -import { shallowEqual, useDispatch, useSelector } from 'react-redux'; -import { layoutMixins } from '@/styles/layoutMixins'; -import { useAccountBalance, useAccounts, useTokenConfigs, useStringGetter } from '@/hooks'; +import { shallowEqual, useDispatch, useSelector } from 'react-redux'; +import styled from 'styled-components'; import { ButtonAction, ButtonSize } from '@/constants/buttons'; import { DialogTypes } from '@/constants/dialogs'; import { STRING_KEYS } from '@/constants/localization'; -import { wallets, WalletType } from '@/constants/wallets'; +import { WalletType, wallets } from '@/constants/wallets'; + +import { useAccountBalance } from '@/hooks/useAccountBalance'; +import { useAccounts } from '@/hooks/useAccounts'; +import { useStringGetter } from '@/hooks/useStringGetter'; +import { useTokenConfigs } from '@/hooks/useTokenConfigs'; + +import { layoutMixins } from '@/styles/layoutMixins'; import { AssetIcon } from '@/components/AssetIcon'; import { Button } from '@/components/Button'; @@ -19,8 +24,8 @@ import { Panel } from '@/components/Panel'; import { Toolbar } from '@/components/Toolbar'; import { OnboardingTriggerButton } from '@/views/dialogs/OnboardingTriggerButton'; -import { openDialog } from '@/state/dialogs'; import { calculateCanAccountTrade } from '@/state/accountCalculators'; +import { openDialog } from '@/state/dialogs'; export const DYDXBalancePanel = ({ className }: { className?: string }) => { const dispatch = useDispatch(); @@ -35,12 +40,12 @@ export const DYDXBalancePanel = ({ className }: { className?: string }) => { <Panel className={className} slotHeader={ - <Styled.Header> - <Styled.Title> + <$Header> + <$Title> <AssetIcon symbol={chainTokenLabel} /> {chainTokenLabel} - </Styled.Title> - <Styled.ActionButtons> + </$Title> + <$ActionButtons> {!canAccountTrade ? ( <OnboardingTriggerButton size={ButtonSize.Small} /> ) : ( @@ -53,27 +58,27 @@ export const DYDXBalancePanel = ({ className }: { className?: string }) => { {stringGetter({ key: STRING_KEYS.TRANSFER })} </Button> )} - </Styled.ActionButtons> - </Styled.Header> + </$ActionButtons> + </$Header> } > - <Styled.Content> - <Styled.WalletAndStakedBalance + <$Content> + <$WalletAndStakedBalance layout="grid" items={[ { key: 'wallet', label: ( - <Styled.Label> + <$Label> <h4>{stringGetter({ key: STRING_KEYS.WALLET })}</h4> - <Styled.IconContainer> + <$IconContainer> <Icon iconComponent={ - wallets[walletType || WalletType.OtherWallet].icon as ElementType + wallets[walletType ?? WalletType.OtherWallet].icon as ElementType } /> - </Styled.IconContainer> - </Styled.Label> + </$IconContainer> + </$Label> ), value: <Output type={OutputType.Asset} value={nativeTokenBalance} />, @@ -81,19 +86,19 @@ export const DYDXBalancePanel = ({ className }: { className?: string }) => { { key: 'staked', label: ( - <Styled.Label> + <$Label> <h4>{stringGetter({ key: STRING_KEYS.STAKED })}</h4> - <Styled.IconContainer> + <$IconContainer> <Icon iconName={IconName.Lock} /> - </Styled.IconContainer> - </Styled.Label> + </$IconContainer> + </$Label> ), value: <Output type={OutputType.Asset} value={nativeStakingBalance} />, }, ]} /> - <Styled.TotalBalance + <$TotalBalance items={[ { key: 'totalBalance', @@ -108,20 +113,17 @@ export const DYDXBalancePanel = ({ className }: { className?: string }) => { }, ]} /> - </Styled.Content> + </$Content> </Panel> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.Header = styled.div` +const $Header = styled.div` ${layoutMixins.spacedRow} gap: 1rem; padding: var(--panel-paddingY) var(--panel-paddingX) 0; `; -Styled.Title = styled.h3` +const $Title = styled.h3` ${layoutMixins.inlineRow} font: var(--font-medium-book); color: var(--color-text-2); @@ -131,25 +133,19 @@ Styled.Title = styled.h3` } `; -Styled.ActionButtons = styled(Toolbar)` +const $ActionButtons = styled(Toolbar)` ${layoutMixins.inlineRow} --stickyArea-topHeight: max-content; gap: 0.5rem; padding: 0; `; -Styled.ReceiveButton = styled(Button)` - --button-textColor: var(--color-text-2); - --button-backgroundColor: var(--color-layer-5); - --button-border: solid var(--border-width) var(--color-layer-6); -`; - -Styled.Content = styled.div` +const $Content = styled.div` ${layoutMixins.flexColumn} gap: 0.75rem; `; -Styled.IconContainer = styled.div` +const $IconContainer = styled.div` ${layoutMixins.stack} height: 1.5rem; @@ -166,7 +162,7 @@ Styled.IconContainer = styled.div` } `; -Styled.WalletAndStakedBalance = styled(Details)` +const $WalletAndStakedBalance = styled(Details)` --details-item-backgroundColor: var(--color-layer-6); grid-template-columns: 1fr 1fr; @@ -191,14 +187,14 @@ Styled.WalletAndStakedBalance = styled(Details)` } `; -Styled.Label = styled.div` +const $Label = styled.div` ${layoutMixins.spacedRow} font: var(--font-base-book); color: var(--color-text-1); `; -Styled.TotalBalance = styled(Details)` +const $TotalBalance = styled(Details)` div { --scrollArea-height: auto; } diff --git a/src/pages/token/rewards/GovernancePanel.tsx b/src/pages/token/rewards/GovernancePanel.tsx index 6796a6a16..e277ee152 100644 --- a/src/pages/token/rewards/GovernancePanel.tsx +++ b/src/pages/token/rewards/GovernancePanel.tsx @@ -1,16 +1,17 @@ -import styled, { AnyStyledComponent } from 'styled-components'; import { useDispatch } from 'react-redux'; +import styled from 'styled-components'; import { ButtonAction, ButtonSize } from '@/constants/buttons'; -import { STRING_KEYS } from '@/constants/localization'; import { DialogTypes } from '@/constants/dialogs'; +import { STRING_KEYS } from '@/constants/localization'; -import { useStringGetter, useURLConfigs } from '@/hooks'; +import { useStringGetter } from '@/hooks/useStringGetter'; +import { useURLConfigs } from '@/hooks/useURLConfigs'; -import { Panel } from '@/components/Panel'; import { IconName } from '@/components/Icon'; import { IconButton } from '@/components/IconButton'; import { Link } from '@/components/Link'; +import { Panel } from '@/components/Panel'; import { openDialog } from '@/state/dialogs'; @@ -22,33 +23,28 @@ export const GovernancePanel = ({ className }: { className?: string }) => { return ( <Panel className={className} - slotHeaderContent={ - <Styled.Title>{stringGetter({ key: STRING_KEYS.GOVERNANCE })}</Styled.Title> - } + slotHeaderContent={<$Title>{stringGetter({ key: STRING_KEYS.GOVERNANCE })}</$Title>} slotRight={ - <Styled.Arrow> - <Styled.IconButton + <$Arrow> + <$IconButton action={ButtonAction.Base} iconName={IconName.Arrow} size={ButtonSize.Small} /> - </Styled.Arrow> + </$Arrow> } onClick={() => dispatch(openDialog({ type: DialogTypes.ExternalNavKeplr }))} > - <Styled.Description> + <$Description> {stringGetter({ key: STRING_KEYS.GOVERNANCE_DESCRIPTION })} <Link href={governanceLearnMore} onClick={(e) => e.stopPropagation()}> {stringGetter({ key: STRING_KEYS.LEARN_MORE })} → </Link> - </Styled.Description> + </$Description> </Panel> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.Description = styled.div` +const $Description = styled.div` color: var(--color-text-0); --link-color: var(--color-text-1); @@ -60,16 +56,16 @@ Styled.Description = styled.div` } `; -Styled.IconButton = styled(IconButton)` +const $IconButton = styled(IconButton)` color: var(--color-text-0); --color-border: var(--color-layer-6); `; -Styled.Arrow = styled.div` +const $Arrow = styled.div` padding-right: 1.5rem; `; -Styled.Title = styled.h3` +const $Title = styled.h3` font: var(--font-medium-book); color: var(--color-text-2); margin-bottom: -1rem; diff --git a/src/pages/token/rewards/LaunchIncentivesPanel.tsx b/src/pages/token/rewards/LaunchIncentivesPanel.tsx index d679a3640..e2cd9caf4 100644 --- a/src/pages/token/rewards/LaunchIncentivesPanel.tsx +++ b/src/pages/token/rewards/LaunchIncentivesPanel.tsx @@ -1,24 +1,27 @@ import { useEffect } from 'react'; -import { useDispatch } from 'react-redux'; + import { useQuery } from 'react-query'; -import styled, { AnyStyledComponent } from 'styled-components'; +import { useDispatch } from 'react-redux'; +import styled from 'styled-components'; -import { STRING_KEYS } from '@/constants/localization'; import { ButtonAction } from '@/constants/buttons'; import { DialogTypes } from '@/constants/dialogs'; +import { STRING_KEYS } from '@/constants/localization'; +import { TOKEN_DECIMALS } from '@/constants/numbers'; -import { ChaosLabsIcon } from '@/icons'; +import { useAccounts } from '@/hooks/useAccounts'; +import { useBreakpoints } from '@/hooks/useBreakpoints'; +import { useQueryChaosLabsIncentives } from '@/hooks/useQueryChaosLabsIncentives'; +import { useStringGetter } from '@/hooks/useStringGetter'; +import { ChaosLabsIcon } from '@/icons'; import breakpoints from '@/styles/breakpoints'; -import { useAccounts, useBreakpoints, useStringGetter } from '@/hooks'; - import { layoutMixins } from '@/styles/layoutMixins'; -import { Panel } from '@/components/Panel'; import { Button } from '@/components/Button'; - -import { Output, OutputType } from '@/components/Output'; import { Icon, IconName } from '@/components/Icon'; +import { Output, OutputType } from '@/components/Output'; +import { Panel } from '@/components/Panel'; import { Tag, TagSize } from '@/components/Tag'; import { markLaunchIncentivesSeen } from '@/state/configs'; @@ -32,39 +35,39 @@ export const LaunchIncentivesPanel = ({ className }: { className?: string }) => useEffect(() => { dispatch(markLaunchIncentivesSeen()); - }, []); + }, [dispatch]); return isNotTablet ? ( - <Styled.Panel + <$Panel className={className} slotHeader={<LaunchIncentivesTitle />} slotRight={<EstimatedRewards />} > <LaunchIncentivesContent /> - </Styled.Panel> + </$Panel> ) : ( - <Styled.Panel className={className}> - <Styled.Column> + <$Panel className={className}> + <$Column> <EstimatedRewards /> <LaunchIncentivesTitle /> <LaunchIncentivesContent /> - </Styled.Column> - </Styled.Panel> + </$Column> + </$Panel> ); }; const LaunchIncentivesTitle = () => { const stringGetter = useStringGetter(); return ( - <Styled.Title> + <$Title> {stringGetter({ key: STRING_KEYS.LAUNCH_INCENTIVES_TITLE, params: { - FOR_V4: <Styled.ForV4>{stringGetter({ key: STRING_KEYS.FOR_V4 })}</Styled.ForV4>, + FOR_V4: <$ForV4>{stringGetter({ key: STRING_KEYS.FOR_V4 })}</$ForV4>, }, })} - <Styled.NewTag size={TagSize.Medium}>{stringGetter({ key: STRING_KEYS.NEW })}</Styled.NewTag> - </Styled.Title> + <$NewTag size={TagSize.Medium}>{stringGetter({ key: STRING_KEYS.NEW })}</$NewTag> + </$Title> ); }; @@ -98,40 +101,37 @@ const EstimatedRewards = () => { onError: (error: Error) => log('LaunchIncentives/fetchSeasonNumber', error), }); - const { data, isLoading } = useQuery({ - enabled: !!dydxAddress, - queryKey: `launch_incentives_rewards_${dydxAddress ?? ''}`, - queryFn: async () => { - if (!dydxAddress) return undefined; - const resp = await fetch(`https://cloud.chaoslabs.co/query/api/dydx/points/${dydxAddress}`); - return (await resp.json())?.incentivePoints; - }, - onError: (error: Error) => log('LaunchIncentives/fetchPoints', error), - }); + const { data, isLoading } = useQueryChaosLabsIncentives({ dydxAddress, season: seasonNumber }); + const { incentivePoints } = data ?? {}; return ( - <Styled.EstimatedRewardsCard> - <Styled.EstimatedRewardsCardContent> + <$EstimatedRewardsCard> + <$EstimatedRewardsCardContent> <div> <span>{stringGetter({ key: STRING_KEYS.ESTIMATED_REWARDS })}</span> {seasonNumber !== undefined && ( - <Styled.Season> + <$Season> {stringGetter({ key: STRING_KEYS.LAUNCH_INCENTIVES_SEASON_NUM, params: { SEASON_NUMBER: seasonNumber }, })} - </Styled.Season> + </$Season> )} </div> - <Styled.Points> - <Output type={OutputType.Number} value={data} isLoading={isLoading} fractionDigits={2} /> - {data !== undefined && stringGetter({ key: STRING_KEYS.POINTS })} - </Styled.Points> - </Styled.EstimatedRewardsCardContent> - - <Styled.Image src="/rewards-stars.svg" /> - </Styled.EstimatedRewardsCard> + <$Points> + <Output + type={OutputType.Number} + value={incentivePoints} + isLoading={isLoading} + fractionDigits={TOKEN_DECIMALS} + /> + {incentivePoints !== undefined && stringGetter({ key: STRING_KEYS.POINTS })} + </$Points> + </$EstimatedRewardsCardContent> + + <$Image src="/rewards-stars.svg" /> + </$EstimatedRewardsCard> ); }; @@ -140,15 +140,15 @@ const LaunchIncentivesContent = () => { const dispatch = useDispatch(); return ( - <Styled.Column> - <Styled.Description> + <$Column> + <$Description> {stringGetter({ key: STRING_KEYS.LAUNCH_INCENTIVES_DESCRIPTION })}{' '} - </Styled.Description> - <Styled.ChaosLabsLogo> + </$Description> + <$ChaosLabsLogo> {stringGetter({ key: STRING_KEYS.POWERED_BY_ALL_CAPS })} <ChaosLabsIcon /> - </Styled.ChaosLabsLogo> - <Styled.ButtonRow> - <Styled.AboutButton + </$ChaosLabsLogo> + <$ButtonRow> + <$AboutButton action={ButtonAction.Base} onClick={() => { dispatch( @@ -161,8 +161,8 @@ const LaunchIncentivesContent = () => { slotRight={<Icon iconName={IconName.LinkOut} />} > {stringGetter({ key: STRING_KEYS.ABOUT })} - </Styled.AboutButton> - <Styled.Button + </$AboutButton> + <$Button action={ButtonAction.Primary} onClick={() => { dispatch( @@ -176,24 +176,21 @@ const LaunchIncentivesContent = () => { slotLeft={<Icon iconName={IconName.Leaderboard} />} > {stringGetter({ key: STRING_KEYS.LEADERBOARD })} - </Styled.Button> - </Styled.ButtonRow> - </Styled.Column> + </$Button> + </$ButtonRow> + </$Column> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.Panel = styled(Panel)` +const $Panel = styled(Panel)` background-color: var(--color-layer-3); width: 100%; `; -Styled.ForV4 = styled.span` +const $ForV4 = styled.span` color: var(--color-text-0); `; -Styled.Title = styled.h3` +const $Title = styled.h3` ${layoutMixins.inlineRow} font: var(--font-medium-book); color: var(--color-text-2); @@ -203,7 +200,7 @@ Styled.Title = styled.h3` } `; -Styled.Description = styled.div` +const $Description = styled.div` color: var(--color-text-0); --link-color: var(--color-text-1); @@ -218,7 +215,7 @@ Styled.Description = styled.div` } `; -Styled.ButtonRow = styled.div` +const $ButtonRow = styled.div` ${layoutMixins.inlineRow} gap: 0.75rem; margin-top: 0.5rem; @@ -228,22 +225,22 @@ Styled.ButtonRow = styled.div` } `; -Styled.Button = styled(Button)` +const $Button = styled(Button)` --button-padding: 0 1rem; `; -Styled.AboutButton = styled(Styled.Button)` +const $AboutButton = styled($Button)` --button-textColor: var(--color-text-2); --button-backgroundColor: var(--color-layer-6); --button-border: solid var(--border-width) var(--color-layer-7); `; -Styled.Column = styled.div` +const $Column = styled.div` ${layoutMixins.flexColumn} gap: 0.5rem; `; -Styled.EstimatedRewardsCard = styled.div` +const $EstimatedRewardsCard = styled.div` ${layoutMixins.spacedRow} padding: 1rem 1.25rem; min-width: 19rem; @@ -263,7 +260,7 @@ Styled.EstimatedRewardsCard = styled.div` } `; -Styled.EstimatedRewardsCardContent = styled.div` +const $EstimatedRewardsCardContent = styled.div` ${layoutMixins.flexColumn} gap: 1rem; height: 100%; @@ -280,16 +277,12 @@ Styled.EstimatedRewardsCardContent = styled.div` } `; -Styled.BackgroundDots = styled.img` - position: absolute; -`; - -Styled.Season = styled.span` +const $Season = styled.span` font: var(--font-small-book); color: var(--color-text-1); `; -Styled.Points = styled.span` +const $Points = styled.span` ${layoutMixins.inlineRow} gap: 0.25rem; font: var(--font-large-book); @@ -300,7 +293,7 @@ Styled.Points = styled.span` } `; -Styled.Image = styled.img` +const $Image = styled.img` position: relative; float: right; @@ -308,14 +301,14 @@ Styled.Image = styled.img` height: auto; `; -Styled.ChaosLabsLogo = styled.span` +const $ChaosLabsLogo = styled.span` display: flex; align-items: center; gap: 0.5em; font: var(--font-tiny-medium); `; -Styled.NewTag = styled(Tag)` +const $NewTag = styled(Tag)` color: var(--color-accent); background-color: var(--color-accent-faded); `; diff --git a/src/pages/token/rewards/MigratePanel.tsx b/src/pages/token/rewards/MigratePanel.tsx index 4593c8f40..ca0ac8286 100644 --- a/src/pages/token/rewards/MigratePanel.tsx +++ b/src/pages/token/rewards/MigratePanel.tsx @@ -1,20 +1,22 @@ -import styled, { AnyStyledComponent } from 'styled-components'; import { useSelector } from 'react-redux'; +import styled from 'styled-components'; -import { ENVIRONMENT_CONFIG_MAP } from '@/constants/networks'; -import { STRING_KEYS } from '@/constants/localization'; import { ButtonAction, ButtonSize, ButtonType } from '@/constants/buttons'; +import { STRING_KEYS } from '@/constants/localization'; +import { ENVIRONMENT_CONFIG_MAP } from '@/constants/networks'; -import { useAccountBalance, useBreakpoints, useStringGetter } from '@/hooks'; +import { useAccountBalance } from '@/hooks/useAccountBalance'; +import { useBreakpoints } from '@/hooks/useBreakpoints'; +import { useStringGetter } from '@/hooks/useStringGetter'; import { layoutMixins } from '@/styles/layoutMixins'; -import { Details } from '@/components/Details'; -import { Panel } from '@/components/Panel'; import { Button } from '@/components/Button'; +import { Details } from '@/components/Details'; +import { Icon, IconName } from '@/components/Icon'; import { Link } from '@/components/Link'; -import { IconName, Icon } from '@/components/Icon'; import { Output, OutputType } from '@/components/Output'; +import { Panel } from '@/components/Panel'; import { VerticalSeparator } from '@/components/Separator'; import { Tag } from '@/components/Tag'; import { WithReceipt } from '@/components/WithReceipt'; @@ -42,14 +44,14 @@ export const MigratePanel = ({ className }: { className?: string }) => { }); return isNotTablet ? ( - <Styled.MigratePanel + <$MigratePanel className={className} - slotHeader={<Styled.Title>{stringGetter({ key: STRING_KEYS.MIGRATE })}</Styled.Title>} + slotHeader={<$Title>{stringGetter({ key: STRING_KEYS.MIGRATE })}</$Title>} slotRight={ - <Styled.MigrateAction> + <$MigrateAction> <div> <div>{stringGetter({ key: STRING_KEYS.AVAILABLE_TO_MIGRATE })}</div> - <Styled.Token type={OutputType.Asset} value={tokenBalance} /> + <$Token type={OutputType.Asset} value={tokenBalance} /> </div> {import.meta.env.VITE_TOKEN_MIGRATION_URI && ( <Button @@ -61,47 +63,47 @@ export const MigratePanel = ({ className }: { className?: string }) => { {stringGetter({ key: STRING_KEYS.MIGRATE_NOW })} </Button> )} - </Styled.MigrateAction> + </$MigrateAction> } > - <Styled.Description> + <$Description> {stringGetter({ key: STRING_KEYS.MIGRATE_DESCRIPTION })} <Link href={TOKEN_MIGRATION_LEARN_MORE_LINK}> {stringGetter({ key: STRING_KEYS.LEARN_MORE })} → </Link> - </Styled.Description> - </Styled.MigratePanel> + </$Description> + </$MigratePanel> ) : ( - <Styled.MigratePanel + <$MigratePanel className={className} slotHeader={ - <Styled.MobileMigrateHeader> + <$MobileMigrateHeader> <h3> <Icon iconName={IconName.Migrate} /> {stringGetter({ key: STRING_KEYS.MIGRATE })} </h3> - <Styled.VerticalSeparator /> + <$VerticalSeparator /> <span> {stringGetter({ key: STRING_KEYS.FROM_TO, params: { FROM: <b>Ethereum</b>, TO: <b>dYdX Chain</b> }, })} </span> - </Styled.MobileMigrateHeader> + </$MobileMigrateHeader> } > - <Styled.Column> - <Styled.WithReceipt + <$Column> + <$WithReceipt slotReceipt={ - <Styled.Details + <$Details items={[ { key: 'available-to-migrate', label: ( - <Styled.InlineRow> + <$InlineRow> {stringGetter({ key: STRING_KEYS.AVAILABLE_TO_MIGRATE })} <Tag>DYDX</Tag> - </Styled.InlineRow> + </$InlineRow> ), value: <Output type={OutputType.Asset} value={tokenBalance} />, }, @@ -119,21 +121,18 @@ export const MigratePanel = ({ className }: { className?: string }) => { {stringGetter({ key: STRING_KEYS.MIGRATE_NOW })} </Button> )} - </Styled.WithReceipt> - <Styled.InlineRow> + </$WithReceipt> + <$InlineRow> {stringGetter({ key: STRING_KEYS.WANT_TO_LEARN })} <Link href={TOKEN_MIGRATION_LEARN_MORE_LINK} withIcon> {stringGetter({ key: STRING_KEYS.CLICK_HERE })} </Link> - </Styled.InlineRow> - </Styled.Column> - </Styled.MigratePanel> + </$InlineRow> + </$Column> + </$MigratePanel> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.MigratePanel = styled(Panel)` +const $MigratePanel = styled(Panel)` width: 100%; background-image: url('/dots-background.svg'); @@ -141,7 +140,7 @@ Styled.MigratePanel = styled(Panel)` background-repeat: no-repeat; `; -Styled.Title = styled.h3` +const $Title = styled.h3` font: var(--font-medium-book); color: var(--color-text-2); @@ -149,7 +148,7 @@ Styled.Title = styled.h3` margin-bottom: -0.5rem; `; -Styled.MigrateAction = styled.div` +const $MigrateAction = styled.div` ${layoutMixins.flexEqualColumns} align-items: center; gap: 1rem; @@ -162,12 +161,12 @@ Styled.MigrateAction = styled.div` border-radius: 0.75rem; `; -Styled.Token = styled(Output)` +const $Token = styled(Output)` font: var(--font-large-book); color: var(--color-text-2); `; -Styled.Description = styled.div` +const $Description = styled.div` color: var(--color-text-0); --link-color: var(--color-text-1); @@ -179,13 +178,13 @@ Styled.Description = styled.div` } `; -Styled.Column = styled.div` +const $Column = styled.div` ${layoutMixins.flexColumn} gap: 1rem; align-items: center; `; -Styled.MobileMigrateHeader = styled.div` +const $MobileMigrateHeader = styled.div` ${layoutMixins.inlineRow} gap: 1ch; @@ -214,7 +213,7 @@ Styled.MobileMigrateHeader = styled.div` } `; -Styled.VerticalSeparator = styled(VerticalSeparator)` +const $VerticalSeparator = styled(VerticalSeparator)` z-index: 1; && { @@ -222,16 +221,16 @@ Styled.VerticalSeparator = styled(VerticalSeparator)` } `; -Styled.Details = styled(Details)` +const $Details = styled(Details)` padding: 0.5rem 1rem; `; -Styled.WithReceipt = styled(WithReceipt)` +const $WithReceipt = styled(WithReceipt)` width: 100%; `; -Styled.InlineRow = styled.div` +const $InlineRow = styled.div` ${layoutMixins.inlineRow} color: var(--color-text-0); --link-color: var(--color-text-1); -`; \ No newline at end of file +`; diff --git a/src/pages/token/rewards/NewMarketsPanel.tsx b/src/pages/token/rewards/NewMarketsPanel.tsx index 26f0c2f65..11d287dd9 100644 --- a/src/pages/token/rewards/NewMarketsPanel.tsx +++ b/src/pages/token/rewards/NewMarketsPanel.tsx @@ -1,23 +1,25 @@ -import styled, { AnyStyledComponent } from 'styled-components'; import { useNavigate } from 'react-router-dom'; +import styled from 'styled-components'; import { ButtonAction, ButtonSize } from '@/constants/buttons'; import { STRING_KEYS } from '@/constants/localization'; import { isMainnet } from '@/constants/networks'; import { AppRoute, MarketsRoute } from '@/constants/routes'; -import { useStringGetter, useTokenConfigs } from '@/hooks'; -import { usePotentialMarkets } from '@/hooks/usePotentialMarkets'; import { useGovernanceVariables } from '@/hooks/useGovernanceVariables'; +import { usePotentialMarkets } from '@/hooks/usePotentialMarkets'; +import { useStringGetter } from '@/hooks/useStringGetter'; +import { useTokenConfigs } from '@/hooks/useTokenConfigs'; + +import { layoutMixins } from '@/styles/layoutMixins'; -import { Panel } from '@/components/Panel'; import { IconName } from '@/components/Icon'; import { IconButton } from '@/components/IconButton'; import { Output, OutputType } from '@/components/Output'; +import { Panel } from '@/components/Panel'; import { Tag } from '@/components/Tag'; import { MustBigNumber } from '@/lib/numbers'; -import { layoutMixins } from '@/styles/layoutMixins'; export const NewMarketsPanel = ({ className }: { className?: string }) => { const stringGetter = useStringGetter(); @@ -36,28 +38,28 @@ export const NewMarketsPanel = ({ className }: { className?: string }) => { <Panel className={className} slotHeaderContent={ - <Styled.Title> + <$Title> {stringGetter({ key: STRING_KEYS.ADD_A_MARKET })} - <Styled.NewTag>{stringGetter({ key: STRING_KEYS.NEW })}</Styled.NewTag> - </Styled.Title> + <$NewTag>{stringGetter({ key: STRING_KEYS.NEW })}</$NewTag> + </$Title> } slotRight={ - <Styled.Arrow> - <Styled.IconButton + <$Arrow> + <$IconButton action={ButtonAction.Base} iconName={IconName.Arrow} size={ButtonSize.Small} /> - </Styled.Arrow> + </$Arrow> } onClick={() => navigate(`${AppRoute.Markets}/${MarketsRoute.New}`)} > - <Styled.Description> + <$Description> {stringGetter({ key: STRING_KEYS.NEW_MARKET_REWARDS_ENTRY_DESCRIPTION, params: { REQUIRED_NUM_TOKENS: ( - <Styled.Output + <$Output useGrouping type={OutputType.Number} value={initialDepositAmountBN} @@ -67,38 +69,35 @@ export const NewMarketsPanel = ({ className }: { className?: string }) => { NATIVE_TOKEN_DENOM: chainTokenLabel, }, })} - </Styled.Description> + </$Description> </Panel> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.Description = styled.div` +const $Description = styled.div` color: var(--color-text-0); `; -Styled.IconButton = styled(IconButton)` +const $IconButton = styled(IconButton)` color: var(--color-text-0); --color-border: var(--color-layer-6); `; -Styled.Arrow = styled.div` +const $Arrow = styled.div` padding-right: 1.5rem; `; -Styled.Title = styled.h3` +const $Title = styled.h3` font: var(--font-medium-book); color: var(--color-text-2); margin-bottom: -1rem; ${layoutMixins.inlineRow} `; -Styled.Output = styled(Output)` +const $Output = styled(Output)` display: inline-block; `; -Styled.NewTag = styled(Tag)` +const $NewTag = styled(Tag)` color: var(--color-accent); background-color: var(--color-accent-faded); `; diff --git a/src/pages/token/rewards/RewardHistoryPanel.tsx b/src/pages/token/rewards/RewardHistoryPanel.tsx index d98f51539..9112af815 100644 --- a/src/pages/token/rewards/RewardHistoryPanel.tsx +++ b/src/pages/token/rewards/RewardHistoryPanel.tsx @@ -1,16 +1,16 @@ import { useCallback, useState } from 'react'; -import styled, { AnyStyledComponent } from 'styled-components'; -import { useStringGetter } from '@/hooks'; +import styled from 'styled-components'; import { HISTORICAL_TRADING_REWARDS_PERIODS, HistoricalTradingRewardsPeriod, HistoricalTradingRewardsPeriods, } from '@/constants/abacus'; - -import { isMainnet } from '@/constants/networks'; import { STRING_KEYS } from '@/constants/localization'; +import { isMainnet } from '@/constants/networks'; + +import { useStringGetter } from '@/hooks/useStringGetter'; import breakpoints from '@/styles/breakpoints'; import { layoutMixins } from '@/styles/layoutMixins'; @@ -33,23 +33,20 @@ export const RewardHistoryPanel = () => { abacusStateManager.getHistoricalTradingRewardPeriod() || HistoricalTradingRewardsPeriod.WEEKLY ); - const onSelectPeriod = useCallback( - (periodName: string) => { - const selectedPeriod = - HISTORICAL_TRADING_REWARDS_PERIODS[ - periodName as keyof typeof HISTORICAL_TRADING_REWARDS_PERIODS - ]; - setSelectedPeriod(selectedPeriod); - abacusStateManager.setHistoricalTradingRewardPeriod(selectedPeriod); - }, - [setSelectedPeriod, selectedPeriod] - ); + const onSelectPeriod = useCallback((periodName: string) => { + const thisSelectedPeriod = + HISTORICAL_TRADING_REWARDS_PERIODS[ + periodName as keyof typeof HISTORICAL_TRADING_REWARDS_PERIODS + ]; + setSelectedPeriod(thisSelectedPeriod); + abacusStateManager.setHistoricalTradingRewardPeriod(thisSelectedPeriod); + }, []); return ( <Panel slotHeader={ - <Styled.Header> - <Styled.Title> + <$Header> + <$Title> <WithTooltip tooltip="reward-history"> <h3>{stringGetter({ key: STRING_KEYS.REWARD_HISTORY })}</h3> </WithTooltip> @@ -58,7 +55,7 @@ export const RewardHistoryPanel = () => { key: STRING_KEYS.REWARD_HISTORY_DESCRIPTION, params: { REWARDS_HISTORY_START_DATE: ( - <Styled.Output + <$Output type={OutputType.Date} value={REWARDS_HISTORY_START_DATE_MS} timeOptions={{ useUTC: true }} @@ -67,7 +64,7 @@ export const RewardHistoryPanel = () => { }, })} </span> - </Styled.Title> + </$Title> <ToggleGroup items={[ { @@ -86,17 +83,14 @@ export const RewardHistoryPanel = () => { value={selectedPeriod.name} onValueChange={onSelectPeriod} /> - </Styled.Header> + </$Header> } > <TradingRewardHistoryTable period={selectedPeriod} /> </Panel> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.Header = styled.div` +const $Header = styled.div` ${layoutMixins.spacedRow} padding: 1rem 1rem 0; @@ -107,7 +101,7 @@ Styled.Header = styled.div` } `; -Styled.Title = styled.div` +const $Title = styled.div` ${layoutMixins.column} color: var(--color-text-0); font: var(--font-small-book); @@ -118,11 +112,6 @@ Styled.Title = styled.div` } `; -Styled.Content = styled.div` - ${layoutMixins.flexColumn} - gap: 0.75rem; -`; - -Styled.Output = styled(Output)` +const $Output = styled(Output)` display: inline; `; diff --git a/src/pages/token/rewards/RewardsHelpPanel.tsx b/src/pages/token/rewards/RewardsHelpPanel.tsx index 6696e375d..478b6eaa1 100644 --- a/src/pages/token/rewards/RewardsHelpPanel.tsx +++ b/src/pages/token/rewards/RewardsHelpPanel.tsx @@ -1,55 +1,54 @@ -import styled, { AnyStyledComponent } from 'styled-components'; +import styled from 'styled-components'; -import { breakpoints } from '@/styles'; import { STRING_KEYS } from '@/constants/localization'; + +import { useStringGetter } from '@/hooks/useStringGetter'; +import { useURLConfigs } from '@/hooks/useURLConfigs'; + +import { breakpoints } from '@/styles'; import { layoutMixins } from '@/styles/layoutMixins'; -import { useStringGetter } from '@/hooks'; import { Accordion } from '@/components/Accordion'; import { Link } from '@/components/Link'; import { Panel } from '@/components/Panel'; -const REWARDS_LEARN_MORE_LINK = ''; // to be configured - export const RewardsHelpPanel = () => { const stringGetter = useStringGetter(); + const { tradingRewardsLearnMore } = useURLConfigs(); return ( - <Styled.HelpCard + <$HelpCard slotHeader={ - <Styled.Header> + <$Header> <h3>{stringGetter({ key: STRING_KEYS.HELP })}</h3> - {REWARDS_LEARN_MORE_LINK && ( - <Link withIcon href={REWARDS_LEARN_MORE_LINK}> + {tradingRewardsLearnMore && ( + <Link withIcon href={tradingRewardsLearnMore}> {stringGetter({ key: STRING_KEYS.LEARN_MORE })} </Link> )} - </Styled.Header> + </$Header> } > <Accordion items={[ - { - header: stringGetter({ key: STRING_KEYS.FAQ_WHO_IS_ELIGIBLE_QUESTION }), - content: stringGetter({ key: STRING_KEYS.FAQ_WHO_IS_ELIGIBLE_ANSWER }), - }, - { - header: stringGetter({ key: STRING_KEYS.FAQ_HOW_DO_TRADING_REWARDS_WORK_QUESTION }), - content: stringGetter({ key: STRING_KEYS.FAQ_HOW_DO_TRADING_REWARDS_WORK_ANSWER }), - }, - { - header: stringGetter({ key: STRING_KEYS.FAQ_HOW_DO_I_CLAIM_MY_REWARDS_QUESTION }), - content: stringGetter({ key: STRING_KEYS.FAQ_HOW_DO_I_CLAIM_MY_REWARDS_ANSWER }), - }, + { + header: stringGetter({ key: STRING_KEYS.FAQ_WHO_IS_ELIGIBLE_QUESTION }), + content: stringGetter({ key: STRING_KEYS.FAQ_WHO_IS_ELIGIBLE_ANSWER }), + }, + { + header: stringGetter({ key: STRING_KEYS.FAQ_HOW_DO_TRADING_REWARDS_WORK_QUESTION }), + content: stringGetter({ key: STRING_KEYS.FAQ_HOW_DO_TRADING_REWARDS_WORK_ANSWER }), + }, + { + header: stringGetter({ key: STRING_KEYS.FAQ_HOW_DO_I_CLAIM_MY_REWARDS_QUESTION }), + content: stringGetter({ key: STRING_KEYS.FAQ_HOW_DO_I_CLAIM_MY_REWARDS_ANSWER }), + }, ]} /> - </Styled.HelpCard> + </$HelpCard> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.HelpCard = styled(Panel)` +const $HelpCard = styled(Panel)` --panel-content-paddingX: 0; --panel-content-paddingY: 0; width: 100%; @@ -60,7 +59,7 @@ Styled.HelpCard = styled(Panel)` text-align: start; `; -Styled.Header = styled.div` +const $Header = styled.div` ${layoutMixins.spacedRow} gap: 1ch; @@ -78,7 +77,3 @@ Styled.Header = styled.div` color: var(--color-text-2); } `; - -Styled.Link = styled(Link)` - display: inline-flex; -`; diff --git a/src/pages/token/rewards/RewardsPage.tsx b/src/pages/token/rewards/RewardsPage.tsx index 2935d767b..dbf241db2 100644 --- a/src/pages/token/rewards/RewardsPage.tsx +++ b/src/pages/token/rewards/RewardsPage.tsx @@ -1,11 +1,11 @@ -import styled, { AnyStyledComponent, css } from 'styled-components'; import { useNavigate } from 'react-router-dom'; +import styled, { css } from 'styled-components'; -import { isMainnet } from '@/constants/networks'; import { STRING_KEYS } from '@/constants/localization'; import { AppRoute } from '@/constants/routes'; -import { useBreakpoints, useStringGetter } from '@/hooks'; +import { useBreakpoints } from '@/hooks/useBreakpoints'; +import { useStringGetter } from '@/hooks/useStringGetter'; import { breakpoints } from '@/styles'; import { layoutMixins } from '@/styles/layoutMixins'; @@ -14,22 +14,18 @@ import { BackButton } from '@/components/BackButton'; import { DetachedSection } from '@/components/ContentSection'; import { ContentSectionHeader } from '@/components/ContentSectionHeader'; -import { testFlags } from '@/lib/testFlags'; - import { DYDXBalancePanel } from './DYDXBalancePanel'; import { LaunchIncentivesPanel } from './LaunchIncentivesPanel'; import { MigratePanel } from './MigratePanel'; +import { RewardHistoryPanel } from './RewardHistoryPanel'; import { RewardsHelpPanel } from './RewardsHelpPanel'; import { TradingRewardsSummaryPanel } from './TradingRewardsSummaryPanel'; -import { RewardHistoryPanel } from './RewardHistoryPanel'; const RewardsPage = () => { const stringGetter = useStringGetter(); const { isTablet, isNotTablet } = useBreakpoints(); const navigate = useNavigate(); - const showTradingRewards = testFlags.showTradingRewards || !isMainnet; - return ( <div> {isTablet && ( @@ -39,35 +35,30 @@ const RewardsPage = () => { /> )} <DetachedSection> - <Styled.GridLayout - showTradingRewards={showTradingRewards} - showMigratePanel={import.meta.env.VITE_V3_TOKEN_ADDRESS && isNotTablet} - > - {import.meta.env.VITE_V3_TOKEN_ADDRESS && isNotTablet && <Styled.MigratePanel />} + <$GridLayout showMigratePanel={import.meta.env.VITE_V3_TOKEN_ADDRESS && isNotTablet}> + {import.meta.env.VITE_V3_TOKEN_ADDRESS && isNotTablet && <$MigratePanel />} {isTablet ? ( - <Styled.LaunchIncentivesPanel /> + <$LaunchIncentivesPanel /> ) : ( <> - <Styled.LaunchIncentivesPanel /> - <Styled.DYDXBalancePanel /> + <$LaunchIncentivesPanel /> + <$DYDXBalancePanel /> </> )} - {showTradingRewards && ( - <Styled.TradingRewardsColumn> - <TradingRewardsSummaryPanel /> - {isTablet && <RewardsHelpPanel />} - <RewardHistoryPanel /> - </Styled.TradingRewardsColumn> - )} + <$TradingRewardsColumn> + <TradingRewardsSummaryPanel /> + {isTablet && <RewardsHelpPanel />} + <RewardHistoryPanel /> + </$TradingRewardsColumn> {isNotTablet && ( - <Styled.OtherColumn showTradingRewards={showTradingRewards}> + <$OtherColumn> <RewardsHelpPanel /> - </Styled.OtherColumn> + </$OtherColumn> )} - </Styled.GridLayout> + </$GridLayout> </DetachedSection> </div> ); @@ -75,20 +66,7 @@ const RewardsPage = () => { export default RewardsPage; -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.MobileHeader = styled.header` - ${layoutMixins.contentSectionDetachedScrollable} - ${layoutMixins.stickyHeader} - z-index: 2; - padding: 1.25rem 0; - - font: var(--font-large-medium); - color: var(--color-text-2); - background-color: var(--color-layer-2); -`; - -Styled.GridLayout = styled.div<{ showTradingRewards?: boolean; showMigratePanel?: boolean }>` +const $GridLayout = styled.div<{ showMigratePanel?: boolean }>` --gap: 1.5rem; display: grid; grid-template-columns: 2fr 1fr; @@ -99,8 +77,8 @@ Styled.GridLayout = styled.div<{ showTradingRewards?: boolean; showMigratePanel? gap: var(--gap); } - ${({ showTradingRewards, showMigratePanel }) => - showTradingRewards && showMigratePanel + ${({ showMigratePanel }) => + showMigratePanel ? css` grid-template-areas: 'migrate migrate' @@ -108,25 +86,11 @@ Styled.GridLayout = styled.div<{ showTradingRewards?: boolean; showMigratePanel? 'balance balance' 'rewards other'; ` - : showTradingRewards - ? css` - grid-template-areas: - 'incentives balance' - 'rewards other'; - ` - : showMigratePanel - ? css` - grid-template-areas: - 'migrate migrate' - 'incentives incentives' - 'balance balance' - 'other other'; - ` : css` grid-template-areas: 'incentives balance' - 'other other'; - `}; + 'rewards other'; + `} @media ${breakpoints.notTablet} { padding: 1rem; @@ -138,48 +102,30 @@ Styled.GridLayout = styled.div<{ showTradingRewards?: boolean; showMigratePanel? width: calc(100vw - 2rem); margin: 0 auto; - ${({ showTradingRewards }) => - showTradingRewards - ? css` - grid-template-areas: - 'incentives' - 'rewards'; - ` - : css` - grid-template-areas: 'incentives'; - `} + grid-template-areas: + 'incentives' + 'rewards'; } `; -Styled.MigratePanel = styled(MigratePanel)` +const $MigratePanel = styled(MigratePanel)` grid-area: migrate; `; -Styled.LaunchIncentivesPanel = styled(LaunchIncentivesPanel)` +const $LaunchIncentivesPanel = styled(LaunchIncentivesPanel)` grid-area: incentives; `; -Styled.DYDXBalancePanel = styled(DYDXBalancePanel)` +const $DYDXBalancePanel = styled(DYDXBalancePanel)` grid-area: balance; `; -Styled.TradingRewardsColumn = styled.div` +const $TradingRewardsColumn = styled.div` grid-area: rewards; ${layoutMixins.flexColumn} `; -Styled.OtherColumn = styled.div<{ showTradingRewards?: boolean }>` +const $OtherColumn = styled.div` grid-area: other; ${layoutMixins.flexColumn} - - ${({ showTradingRewards }) => - !showTradingRewards && - css` - display: grid; - grid-template-columns: repeat(3, 1fr); - - > section:last-of-type { - grid-column: 1 / -1; - } - `} `; diff --git a/src/pages/token/rewards/TradingRewardsSummaryPanel.tsx b/src/pages/token/rewards/TradingRewardsSummaryPanel.tsx index c76940a29..662a18613 100644 --- a/src/pages/token/rewards/TradingRewardsSummaryPanel.tsx +++ b/src/pages/token/rewards/TradingRewardsSummaryPanel.tsx @@ -1,9 +1,13 @@ import { useEffect } from 'react'; -import styled, { AnyStyledComponent } from 'styled-components'; + import { shallowEqual, useSelector } from 'react-redux'; +import styled from 'styled-components'; import { STRING_KEYS } from '@/constants/localization'; -import { useStringGetter, useTokenConfigs } from '@/hooks'; + +import { useStringGetter } from '@/hooks/useStringGetter'; +import { useTokenConfigs } from '@/hooks/useTokenConfigs'; + import { layoutMixins } from '@/styles/layoutMixins'; import { AssetIcon } from '@/components/AssetIcon'; @@ -29,29 +33,27 @@ export const TradingRewardsSummaryPanel = () => { return !currentWeekTradingReward ? null : ( <Panel - slotHeader={ - <Styled.Header>{stringGetter({ key: STRING_KEYS.TRADING_REWARDS_SUMMARY })}</Styled.Header> - } + slotHeader={<$Header>{stringGetter({ key: STRING_KEYS.TRADING_REWARDS_SUMMARY })}</$Header>} > - <Styled.Content> - <Styled.TradingRewardsDetails + <$Content> + <$TradingRewardsDetails layout="grid" items={[ { key: 'week', label: ( - <Styled.Label> + <$Label> <h4>{stringGetter({ key: STRING_KEYS.THIS_WEEK })}</h4> - </Styled.Label> + </$Label> ), value: ( - <Styled.Column> + <$Column> <Output - slotRight={<Styled.AssetIcon symbol={chainTokenLabel} />} + slotRight={<$AssetIcon symbol={chainTokenLabel} />} type={OutputType.Asset} value={currentWeekTradingReward.amount} /> - <Styled.TimePeriod> + <$TimePeriod> <Output type={OutputType.Date} value={currentWeekTradingReward.startedAtInMilliseconds} @@ -63,32 +65,29 @@ export const TradingRewardsSummaryPanel = () => { value={currentWeekTradingReward.endedAtInMilliseconds} timeOptions={{ useUTC: true }} /> - </Styled.TimePeriod> - </Styled.Column> + </$TimePeriod> + </$Column> ), }, // TODO(@aforaleka): add all-time when supported ]} /> - </Styled.Content> + </$Content> </Panel> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.Header = styled.div` +const $Header = styled.div` padding: var(--panel-paddingY) var(--panel-paddingX) 0; font: var(--font-medium-book); color: var(--color-text-2); `; -Styled.Content = styled.div` +const $Content = styled.div` ${layoutMixins.flexColumn} gap: 0.75rem; `; -Styled.TradingRewardsDetails = styled(Details)` +const $TradingRewardsDetails = styled(Details)` --details-item-backgroundColor: var(--color-layer-6); grid-template-columns: 1fr; // TODO(@aforaleka): change to 1fr 1fr when all-time is supported @@ -111,14 +110,14 @@ Styled.TradingRewardsDetails = styled(Details)` } `; -Styled.Label = styled.div` +const $Label = styled.div` ${layoutMixins.spacedRow} font: var(--font-base-book); color: var(--color-text-1); `; -Styled.TimePeriod = styled.div` +const $TimePeriod = styled.div` ${layoutMixins.inlineRow} &, output { @@ -127,11 +126,11 @@ Styled.TimePeriod = styled.div` } `; -Styled.Column = styled.div` +const $Column = styled.div` ${layoutMixins.flexColumn} gap: 0.33rem; `; -Styled.AssetIcon = styled(AssetIcon)` +const $AssetIcon = styled(AssetIcon)` margin-left: 0.5ch; `; diff --git a/src/pages/token/staking/StakingPage.tsx b/src/pages/token/staking/StakingPage.tsx index 91b909687..a2906946c 100644 --- a/src/pages/token/staking/StakingPage.tsx +++ b/src/pages/token/staking/StakingPage.tsx @@ -1,44 +1,45 @@ -import styled, { AnyStyledComponent } from 'styled-components'; +import styled from 'styled-components'; + +import { STRING_KEYS } from '@/constants/localization'; + +import { useStringGetter } from '@/hooks/useStringGetter'; import { breakpoints } from '@/styles'; import { layoutMixins } from '@/styles/layoutMixins'; import { DetachedSection } from '@/components/ContentSection'; import { ContentSectionHeader } from '@/components/ContentSectionHeader'; -import { useStringGetter } from '@/hooks'; +import { DYDXBalancePanel } from '../rewards/DYDXBalancePanel'; import { StakingPanel } from './StakingPanel'; import { StrideStakingPanel } from './StrideStakingPanel'; -import { DYDXBalancePanel } from '../rewards/DYDXBalancePanel'; -import { STRING_KEYS } from '@/constants/localization'; -export default () => { +const StakingPage = () => { const stringGetter = useStringGetter(); return ( <DetachedSection> - <Styled.HeaderSection> + <$HeaderSection> <ContentSectionHeader title={stringGetter({ key: STRING_KEYS.STAKING_REWARDS })} subtitle={stringGetter({ key: STRING_KEYS.STAKING_PAGE_SUBTITLE })} /> - </Styled.HeaderSection> + </$HeaderSection> - <Styled.ContentWrapper> - <Styled.Row> - <Styled.InnerRow> + <$ContentWrapper> + <$Row> + <$InnerRow> <StrideStakingPanel /> <StakingPanel /> - </Styled.InnerRow> + </$InnerRow> <DYDXBalancePanel /> - </Styled.Row> - </Styled.ContentWrapper> + </$Row> + </$ContentWrapper> </DetachedSection> ); }; +export default StakingPage; -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.HeaderSection = styled.section` +const $HeaderSection = styled.section` ${layoutMixins.contentSectionDetached} @media ${breakpoints.tablet} { @@ -49,20 +50,20 @@ Styled.HeaderSection = styled.section` } `; -Styled.ContentWrapper = styled.div` +const $ContentWrapper = styled.div` ${layoutMixins.flexColumn} gap: 1.5rem; max-width: 80rem; padding: 0 1rem; `; -Styled.Row = styled.div` +const $Row = styled.div` gap: 1rem; display: grid; grid-template-columns: 2fr 1fr; `; -Styled.InnerRow = styled.div` +const $InnerRow = styled.div` gap: 1rem; display: grid; grid-template-columns: 1fr 1fr; diff --git a/src/pages/token/staking/StakingPanel.tsx b/src/pages/token/staking/StakingPanel.tsx index 1b934c7f5..4df9abebc 100644 --- a/src/pages/token/staking/StakingPanel.tsx +++ b/src/pages/token/staking/StakingPanel.tsx @@ -1,15 +1,14 @@ -import styled, { AnyStyledComponent } from 'styled-components'; import { useDispatch } from 'react-redux'; +import styled from 'styled-components'; -import { STRING_KEYS } from '@/constants/localization'; import { DialogTypes } from '@/constants/dialogs'; +import { STRING_KEYS } from '@/constants/localization'; -import { useStringGetter, useURLConfigs } from '@/hooks'; +import { useStringGetter } from '@/hooks/useStringGetter'; +import { useURLConfigs } from '@/hooks/useURLConfigs'; -import { Panel } from '@/components/Panel'; -import { IconName } from '@/components/Icon'; -import { IconButton } from '@/components/IconButton'; import { Link } from '@/components/Link'; +import { Panel } from '@/components/Panel'; import { openDialog } from '@/state/dialogs'; @@ -19,29 +18,26 @@ export const StakingPanel = ({ className }: { className?: string }) => { const { stakingLearnMore } = useURLConfigs(); return ( - <Styled.Panel + <$Panel className={className} slotHeaderContent={ - <Styled.Header> - <Styled.Title>{stringGetter({ key: STRING_KEYS.STAKE_WITH_KEPLR })}</Styled.Title> - <Styled.Img src="/third-party/keplr.png" alt={stringGetter({ key: STRING_KEYS.KEPLR })} /> - </Styled.Header> + <$Header> + <$Title>{stringGetter({ key: STRING_KEYS.STAKE_WITH_KEPLR })}</$Title> + <$Img src="/third-party/keplr.png" alt={stringGetter({ key: STRING_KEYS.KEPLR })} /> + </$Header> } onClick={() => dispatch(openDialog({ type: DialogTypes.ExternalNavKeplr }))} > - <Styled.Description> + <$Description> {stringGetter({ key: STRING_KEYS.STAKING_DESCRIPTION })} <Link href={stakingLearnMore} onClick={(e) => e.stopPropagation()}> {stringGetter({ key: STRING_KEYS.LEARN_MORE })} → </Link> - </Styled.Description> - </Styled.Panel> + </$Description> + </$Panel> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.Panel = styled(Panel)` +const $Panel = styled(Panel)` align-items: start; header { @@ -50,7 +46,7 @@ Styled.Panel = styled(Panel)` } `; -Styled.Header = styled.div` +const $Header = styled.div` display: flex; flex-direction: row; justify-content: space-between; @@ -58,18 +54,18 @@ Styled.Header = styled.div` width: 100%; `; -Styled.Title = styled.h3` +const $Title = styled.h3` font: var(--font-medium-book); color: var(--color-text-2); `; -Styled.Img = styled.img` +const $Img = styled.img` width: 2rem; height: 2rem; margin-left: 0.5rem; `; -Styled.Description = styled.div` +const $Description = styled.div` color: var(--color-text-0); --link-color: var(--color-text-1); @@ -80,8 +76,3 @@ Styled.Description = styled.div` } } `; - -Styled.IconButton = styled(IconButton)` - color: var(--color-text-0); - --color-border: var(--color-layer-6); -`; diff --git a/src/pages/token/staking/StrideStakingPanel.tsx b/src/pages/token/staking/StrideStakingPanel.tsx index e100523c8..042bdbce7 100644 --- a/src/pages/token/staking/StrideStakingPanel.tsx +++ b/src/pages/token/staking/StrideStakingPanel.tsx @@ -1,11 +1,13 @@ -import styled, { AnyStyledComponent } from 'styled-components'; import { useDispatch } from 'react-redux'; +import styled from 'styled-components'; -import { STRING_KEYS } from '@/constants/localization'; import { DialogTypes } from '@/constants/dialogs'; -import { useStringGetter, useTokenConfigs, useURLConfigs } from '@/hooks'; +import { STRING_KEYS } from '@/constants/localization'; + +import { useStringGetter } from '@/hooks/useStringGetter'; +import { useTokenConfigs } from '@/hooks/useTokenConfigs'; +import { useURLConfigs } from '@/hooks/useURLConfigs'; -import { IconButton } from '@/components/IconButton'; import { Link } from '@/components/Link'; import { Panel } from '@/components/Panel'; import { Tag } from '@/components/Tag'; @@ -19,20 +21,20 @@ export const StrideStakingPanel = ({ className }: { className?: string }) => { const { chainTokenLabel } = useTokenConfigs(); return ( - <Styled.Panel + <$Panel className={className} slotHeaderContent={ - <Styled.Header> - <Styled.Title> + <$Header> + <$Title> {stringGetter({ key: STRING_KEYS.LIQUID_STAKE_W_STRIDE })} <Tag isHighlighted>{stringGetter({ key: STRING_KEYS.NEW })}</Tag> - </Styled.Title> - <Styled.Img src="/third-party/stride.png" alt="Stride" /> - </Styled.Header> + </$Title> + <$Img src="/third-party/stride.png" alt="Stride" /> + </$Header> } onClick={() => dispatch(openDialog({ type: DialogTypes.ExternalNavStride }))} > - <Styled.Description> + <$Description> {stringGetter({ key: STRING_KEYS.LIQUID_STAKE_STRIDE_DESCRIPTION, params: { TOKEN_DENOM: chainTokenLabel }, @@ -40,14 +42,11 @@ export const StrideStakingPanel = ({ className }: { className?: string }) => { <Link href={stakingLearnMore} onClick={(e) => e.stopPropagation()}> {stringGetter({ key: STRING_KEYS.LEARN_MORE })} → </Link> - </Styled.Description> - </Styled.Panel> + </$Description> + </$Panel> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.Panel = styled(Panel)` +const $Panel = styled(Panel)` align-items: start; header { @@ -56,7 +55,7 @@ Styled.Panel = styled(Panel)` } `; -Styled.Header = styled.div` +const $Header = styled.div` display: flex; flex-direction: row; justify-content: space-between; @@ -64,7 +63,7 @@ Styled.Header = styled.div` width: 100%; `; -Styled.Title = styled.h3` +const $Title = styled.h3` font: var(--font-medium-book); color: var(--color-text-2); @@ -73,13 +72,13 @@ Styled.Title = styled.h3` gap: 0.5ch; `; -Styled.Img = styled.img` +const $Img = styled.img` width: 2rem; height: 2rem; margin-left: 0.5rem; `; -Styled.Description = styled.div` +const $Description = styled.div` color: var(--color-text-0); --link-color: var(--color-text-1); @@ -90,8 +89,3 @@ Styled.Description = styled.div` } } `; - -Styled.IconButton = styled(IconButton)` - color: var(--color-text-0); - --color-border: var(--color-layer-6); -`; diff --git a/src/pages/trade/HorizontalPanel.tsx b/src/pages/trade/HorizontalPanel.tsx index 602467928..50f8a3e4a 100644 --- a/src/pages/trade/HorizontalPanel.tsx +++ b/src/pages/trade/HorizontalPanel.tsx @@ -1,10 +1,14 @@ -import { useMemo, useState } from 'react'; +import { useCallback, useMemo, useState } from 'react'; + import { shallowEqual, useSelector } from 'react-redux'; -import styled, { type AnyStyledComponent } from 'styled-components'; +import { useNavigate } from 'react-router-dom'; +import styled from 'styled-components'; import { STRING_KEYS } from '@/constants/localization'; +import { AppRoute } from '@/constants/routes'; -import { useBreakpoints, useStringGetter } from '@/hooks'; +import { useBreakpoints } from '@/hooks/useBreakpoints'; +import { useStringGetter } from '@/hooks/useStringGetter'; import { AssetIcon } from '@/components/AssetIcon'; import { CollapsibleTabs } from '@/components/CollapsibleTabs'; @@ -12,30 +16,32 @@ import { LoadingSpinner } from '@/components/Loading/LoadingSpinner'; import { MobileTabs } from '@/components/Tabs'; import { Tag, TagType } from '@/components/Tag'; import { ToggleGroup } from '@/components/ToggleGroup'; - +import { PositionInfo } from '@/views/PositionInfo'; import { FillsTable, FillsTableColumnKey } from '@/views/tables/FillsTable'; -// import { FundingPaymentsTable } from '@/views/tables/FundingPaymentsTable'; import { OrdersTable, OrdersTableColumnKey } from '@/views/tables/OrdersTable'; import { PositionsTable, PositionsTableColumnKey } from '@/views/tables/PositionsTable'; import { calculateHasUncommittedOrders, calculateIsAccountViewOnly, + calculateShouldRenderActionsInPositionsTable, + calculateShouldRenderTriggersInPositionsTable, } from '@/state/accountCalculators'; - import { getCurrentMarketTradeInfoNumbers, getHasUnseenFillUpdates, getHasUnseenOrderUpdates, getTradeInfoNumbers, } from '@/state/accountSelectors'; - +import { getDefaultToAllMarketsInPositionsOrdersFills } from '@/state/configsSelectors'; import { getCurrentMarketAssetId, getCurrentMarketId } from '@/state/perpetualsSelectors'; +import { getSimpleStyledOutputType } from '@/lib/genericFunctionalComponentUtils'; import { isTruthy } from '@/lib/isTruthy'; import { shortenNumberForDisplay } from '@/lib/numbers'; +import { testFlags } from '@/lib/testFlags'; -import { PositionInfo } from '@/views/PositionInfo'; +import { UnopenedIsolatedPositions } from './UnopenedIsolatedPositions'; enum InfoSection { Position = 'Position', @@ -56,30 +62,56 @@ type ElementProps = { export const HorizontalPanel = ({ isOpen = true, setIsOpen }: ElementProps) => { const stringGetter = useStringGetter(); + const navigate = useNavigate(); const { isTablet } = useBreakpoints(); - const [view, setView] = useState<PanelView>(PanelView.CurrentMarket); + const allMarkets = useSelector(getDefaultToAllMarketsInPositionsOrdersFills); + const [view, setView] = useState<PanelView>( + allMarkets ? PanelView.AllMarkets : PanelView.CurrentMarket + ); + const [tab, setTab] = useState<InfoSection>(InfoSection.Position); + const currentMarketId = useSelector(getCurrentMarketId); const currentMarketAssetId = useSelector(getCurrentMarketAssetId); - const { numTotalPositions, numTotalOpenOrders, numTotalFills, numTotalFundingPayments } = + const { numTotalPositions, numTotalOpenOrders, numTotalFills } = useSelector(getTradeInfoNumbers, shallowEqual) || {}; - const { numOpenOrders, numFills, numFundingPayments } = + const { numOpenOrders, numFills } = useSelector(getCurrentMarketTradeInfoNumbers, shallowEqual) || {}; + const showClosePositionAction = true; + const hasUnseenOrderUpdates = useSelector(getHasUnseenOrderUpdates); const hasUnseenFillUpdates = useSelector(getHasUnseenFillUpdates); const isAccountViewOnly = useSelector(calculateIsAccountViewOnly); + const shouldRenderTriggers = useSelector(calculateShouldRenderTriggersInPositionsTable); + const shouldRenderActions = useSelector( + calculateShouldRenderActionsInPositionsTable(showClosePositionAction) + ); const isWaitingForOrderToIndex = useSelector(calculateHasUncommittedOrders); const showCurrentMarket = isTablet || view === PanelView.CurrentMarket; const fillsTagNumber = shortenNumberForDisplay(showCurrentMarket ? numFills : numTotalFills); - const ordersTagNumber = shortenNumberForDisplay( showCurrentMarket ? numOpenOrders : numTotalOpenOrders ); + const initialPageSize = 10; + + const onViewOrders = useCallback( + (market: string) => { + navigate(`${AppRoute.Trade}/${market}`, { + state: { + from: AppRoute.Trade, + }, + }); + setView(PanelView.CurrentMarket); + setTab(InfoSection.Orders); + }, + [navigate] + ); + const tabItems = useMemo( () => [ { @@ -90,10 +122,11 @@ export const HorizontalPanel = ({ isOpen = true, setIsOpen }: ElementProps) => { tag: showCurrentMarket ? null : shortenNumberForDisplay(numTotalPositions), - content: showCurrentMarket ? ( + content: isTablet ? ( <PositionInfo showNarrowVariation={isTablet} /> ) : ( <PositionsTable + currentMarket={showCurrentMarket ? currentMarketId : undefined} columnKeys={ isTablet ? [ @@ -103,16 +136,21 @@ export const HorizontalPanel = ({ isOpen = true, setIsOpen }: ElementProps) => { ] : [ PositionsTableColumnKey.Market, - PositionsTableColumnKey.Side, PositionsTableColumnKey.Size, - PositionsTableColumnKey.Leverage, - PositionsTableColumnKey.LiquidationAndOraclePrice, + testFlags.isolatedMargin && PositionsTableColumnKey.Margin, PositionsTableColumnKey.UnrealizedPnl, - PositionsTableColumnKey.RealizedPnl, + !testFlags.isolatedMargin && PositionsTableColumnKey.RealizedPnl, + PositionsTableColumnKey.NetFunding, PositionsTableColumnKey.AverageOpenAndClose, - ] + PositionsTableColumnKey.LiquidationAndOraclePrice, + shouldRenderTriggers && PositionsTableColumnKey.Triggers, + shouldRenderActions && PositionsTableColumnKey.Actions, + ].filter(isTruthy) } + showClosePositionAction={showClosePositionAction} + initialPageSize={initialPageSize} onNavigate={() => setView(PanelView.CurrentMarket)} + navigateToOrders={onViewOrders} /> ), }, @@ -122,7 +160,7 @@ export const HorizontalPanel = ({ isOpen = true, setIsOpen }: ElementProps) => { label: stringGetter({ key: STRING_KEYS.ORDERS }), slotRight: isWaitingForOrderToIndex ? ( - <Styled.LoadingSpinner /> + <$LoadingSpinner /> ) : ( ordersTagNumber && ( <Tag type={TagType.Number} isHighlighted={hasUnseenOrderUpdates}> @@ -148,6 +186,7 @@ export const HorizontalPanel = ({ isOpen = true, setIsOpen }: ElementProps) => { !isAccountViewOnly && OrdersTableColumnKey.Actions, ].filter(isTruthy) } + initialPageSize={initialPageSize} /> ), }, @@ -186,6 +225,7 @@ export const HorizontalPanel = ({ isOpen = true, setIsOpen }: ElementProps) => { columnWidths={{ [FillsTableColumnKey.TypeAmount]: '100%', }} + initialPageSize={initialPageSize} /> ), }, @@ -202,6 +242,8 @@ export const HorizontalPanel = ({ isOpen = true, setIsOpen }: ElementProps) => { // ), // }, ], + // TODO - not sure if it's necessary but lots of the actual deps are missing from the deps list + // eslint-disable-next-line react-hooks/exhaustive-deps [ stringGetter, currentMarketId, @@ -216,56 +258,72 @@ export const HorizontalPanel = ({ isOpen = true, setIsOpen }: ElementProps) => { ] ); + const slotBottom = { + [InfoSection.Position]: testFlags.isolatedMargin && ( + <$UnopenedIsolatedPositions onViewOrders={onViewOrders} /> + ), + [InfoSection.Orders]: null, + [InfoSection.Fills]: null, + [InfoSection.Payments]: null, + }[tab]; + return isTablet ? ( <MobileTabs defaultValue={InfoSection.Position} items={tabItems} withBorders={false} /> ) : ( - <Styled.CollapsibleTabs - defaultValue={InfoSection.Position} - defaultOpen={isOpen} - onOpenChange={setIsOpen} - slotToolbar={ - <ToggleGroup - items={[ - { - value: PanelView.AllMarkets, - label: stringGetter({ key: STRING_KEYS.ALL }), - }, - { - value: PanelView.CurrentMarket, - ...(currentMarketAssetId - ? { - slotBefore: <Styled.AssetIcon symbol={currentMarketAssetId} />, - label: currentMarketAssetId, - } - : { label: stringGetter({ key: STRING_KEYS.MARKET }) }), - }, - ]} - value={view} - onValueChange={setView} - onInteraction={() => { - setIsOpen?.(true); - }} - /> - } - items={tabItems} - /> + <> + <$CollapsibleTabs + defaultTab={InfoSection.Position} + tab={tab} + setTab={setTab} + defaultOpen={isOpen} + onOpenChange={setIsOpen} + slotToolbar={ + <ToggleGroup + items={[ + { + value: PanelView.AllMarkets, + label: stringGetter({ key: STRING_KEYS.ALL }), + }, + { + value: PanelView.CurrentMarket, + ...(currentMarketAssetId + ? { + slotBefore: <$AssetIcon symbol={currentMarketAssetId} />, + label: currentMarketAssetId, + } + : { label: stringGetter({ key: STRING_KEYS.MARKET }) }), + }, + ]} + value={view} + onValueChange={setView} + onInteraction={() => { + setIsOpen?.(true); + }} + /> + } + tabItems={tabItems} + /> + {isOpen && slotBottom} + </> ); }; -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.AssetIcon = styled(AssetIcon)` +const $AssetIcon = styled(AssetIcon)` font-size: 1.5em; `; +const collapsibleTabsType = getSimpleStyledOutputType(CollapsibleTabs); -Styled.CollapsibleTabs = styled(CollapsibleTabs)` +const $CollapsibleTabs = styled(CollapsibleTabs)` --tableHeader-backgroundColor: var(--color-layer-3); header { background-color: var(--color-layer-2); } -`; +` as typeof collapsibleTabsType; -Styled.LoadingSpinner = styled(LoadingSpinner)` +const $LoadingSpinner = styled(LoadingSpinner)` --spinner-width: 1rem; `; +const $UnopenedIsolatedPositions = styled(UnopenedIsolatedPositions)` + margin-top: auto; +`; diff --git a/src/pages/trade/InnerPanel.tsx b/src/pages/trade/InnerPanel.tsx index 3061abe37..11f5bd37f 100644 --- a/src/pages/trade/InnerPanel.tsx +++ b/src/pages/trade/InnerPanel.tsx @@ -1,21 +1,22 @@ import { useState } from 'react'; + import { useSelector } from 'react-redux'; import { TradeInputField } from '@/constants/abacus'; import { STRING_KEYS } from '@/constants/localization'; -import { useStringGetter } from '@/hooks'; - -import { getSelectedLocale } from '@/state/localizationSelectors'; -import abacusStateManager from '@/lib/abacus'; +import { useStringGetter } from '@/hooks/useStringGetter'; import { Tabs } from '@/components/Tabs'; - import { MarketDetails } from '@/views/MarketDetails'; import { MarketLinks } from '@/views/MarketLinks'; -import { TvChart } from '@/views/charts/TvChart'; import { DepthChart } from '@/views/charts/DepthChart'; import { FundingChart } from '@/views/charts/FundingChart'; +import { TvChart } from '@/views/charts/TvChart'; + +import { getSelectedLocale } from '@/state/localizationSelectors'; + +import abacusStateManager from '@/lib/abacus'; enum Tab { Price = 'Price', diff --git a/src/pages/trade/MarketSelectorAndStats.tsx b/src/pages/trade/MarketSelectorAndStats.tsx index 65a5e002c..920195606 100644 --- a/src/pages/trade/MarketSelectorAndStats.tsx +++ b/src/pages/trade/MarketSelectorAndStats.tsx @@ -1,12 +1,11 @@ -import styled, { type AnyStyledComponent } from 'styled-components'; import { shallowEqual, useSelector } from 'react-redux'; +import styled from 'styled-components'; import { layoutMixins } from '@/styles/layoutMixins'; import { VerticalSeparator } from '@/components/Separator'; - -import { MarketsDropdown } from '@/views/MarketsDropdown'; import { MarketStatsDetails } from '@/views/MarketStatsDetails'; +import { MarketsDropdown } from '@/views/MarketsDropdown'; import { getCurrentMarketAssetData } from '@/state/assetsSelectors'; import { getCurrentMarketId } from '@/state/perpetualsSelectors'; @@ -16,19 +15,16 @@ export const MarketSelectorAndStats = ({ className }: { className?: string }) => const currentMarketId = useSelector(getCurrentMarketId); return ( - <Styled.Container className={className}> + <$Container className={className}> <MarketsDropdown currentMarketId={currentMarketId} symbol={id} /> <VerticalSeparator /> <MarketStatsDetails /> - </Styled.Container> + </$Container> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.Container = styled.div` +const $Container = styled.div` ${layoutMixins.container} display: grid; diff --git a/src/pages/trade/MobileBottomPanel.tsx b/src/pages/trade/MobileBottomPanel.tsx index 0ae965b2e..7578c76f5 100644 --- a/src/pages/trade/MobileBottomPanel.tsx +++ b/src/pages/trade/MobileBottomPanel.tsx @@ -1,8 +1,8 @@ import { STRING_KEYS } from '@/constants/localization'; -import { useStringGetter } from '@/hooks'; -import { MobileTabs } from '@/components/Tabs'; +import { useStringGetter } from '@/hooks/useStringGetter'; +import { MobileTabs } from '@/components/Tabs'; import { MarketDetails } from '@/views/MarketDetails'; import { MarketStatsDetails } from '@/views/MarketStatsDetails'; diff --git a/src/pages/trade/MobileTopPanel.tsx b/src/pages/trade/MobileTopPanel.tsx index 0e72f30e1..49624ac38 100644 --- a/src/pages/trade/MobileTopPanel.tsx +++ b/src/pages/trade/MobileTopPanel.tsx @@ -1,25 +1,26 @@ import { useState } from 'react'; -import { useSelector } from 'react-redux'; -import styled, { type AnyStyledComponent } from 'styled-components'; + import { Trigger } from '@radix-ui/react-tabs'; +import { useSelector } from 'react-redux'; +import styled from 'styled-components'; import { STRING_KEYS } from '@/constants/localization'; -import { useStringGetter } from '@/hooks'; + +import { useStringGetter } from '@/hooks/useStringGetter'; import { layoutMixins } from '@/styles/layoutMixins'; import { Icon, IconName } from '@/components/Icon'; import { Tabs } from '@/components/Tabs'; import { ToggleButton } from '@/components/ToggleButton'; - -import { getSelectedLocale } from '@/state/localizationSelectors'; - import { AccountInfo } from '@/views/AccountInfo'; import { DepthChart } from '@/views/charts/DepthChart'; -import { Orderbook } from '@/views/tables/Orderbook'; -import { LiveTrades } from '@/views/tables/LiveTrades'; import { FundingChart } from '@/views/charts/FundingChart'; import { TvChart } from '@/views/charts/TvChart'; +import { LiveTrades } from '@/views/tables/LiveTrades'; +import { Orderbook } from '@/views/tables/Orderbook'; + +import { getSelectedLocale } from '@/state/localizationSelectors'; enum Tab { Account = 'Account', @@ -27,15 +28,16 @@ enum Tab { Depth = 'Depth', Funding = 'Funding', OrderBook = 'OrderBook', + // eslint-disable-next-line @typescript-eslint/no-shadow LiveTrades = 'LiveTrades', } const TabButton = ({ value, label, icon }: { value: Tab; label: string; icon: IconName }) => ( <Trigger asChild value={value}> - <Styled.TabButton> + <$TabButton> <Icon iconName={icon} /> <span>{label}</span> - </Styled.TabButton> + </$TabButton> </Trigger> ); @@ -47,7 +49,7 @@ export const MobileTopPanel = () => { const items = [ { - content: <Styled.AccountInfo />, + content: <$AccountInfo />, label: stringGetter({ key: STRING_KEYS.WALLET }), value: Tab.Account, icon: IconName.Coins, @@ -73,9 +75,9 @@ export const MobileTopPanel = () => { }, { content: ( - <Styled.ScrollableTableContainer> + <$ScrollableTableContainer> <Orderbook histogramSide="right" layout="horizontal" hideHeader /> - </Styled.ScrollableTableContainer> + </$ScrollableTableContainer> ), label: stringGetter({ key: STRING_KEYS.ORDERBOOK_SHORT }), value: Tab.OrderBook, @@ -83,9 +85,9 @@ export const MobileTopPanel = () => { }, { content: ( - <Styled.ScrollableTableContainer> + <$ScrollableTableContainer> <LiveTrades histogramSide="left" /> - </Styled.ScrollableTableContainer> + </$ScrollableTableContainer> ), label: stringGetter({ key: STRING_KEYS.RECENT }), value: Tab.LiveTrades, @@ -94,7 +96,7 @@ export const MobileTopPanel = () => { ]; return ( - <Styled.Tabs + <$Tabs value={value} onValueChange={setValue} items={items.map((item) => ({ @@ -108,10 +110,7 @@ export const MobileTopPanel = () => { /> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.Tabs = styled(Tabs)` +const $Tabs = styled(Tabs)` --scrollArea-height: 20rem; --stickyArea0-background: var(--color-layer-2); --tabContent-height: calc(20rem - 2rem - var(--tabs-currentHeight)); @@ -129,9 +128,9 @@ Styled.Tabs = styled(Tabs)` gap: 0.5rem; } } -`; +` as typeof Tabs; -Styled.TabButton = styled(ToggleButton)` +const $TabButton = styled(ToggleButton)` padding: 0 0.5rem; span { @@ -155,11 +154,11 @@ Styled.TabButton = styled(ToggleButton)` } `; -Styled.AccountInfo = styled(AccountInfo)` +const $AccountInfo = styled(AccountInfo)` --account-info-section-height: var(--tabContent-height); `; -Styled.ScrollableTableContainer = styled.div` +const $ScrollableTableContainer = styled.div` ${layoutMixins.scrollArea} --scrollArea-height: var(--tabContent-height); --stickyArea0-topGap: 0px; diff --git a/src/pages/trade/Trade.tsx b/src/pages/trade/Trade.tsx index 96ca26846..986a54db9 100644 --- a/src/pages/trade/Trade.tsx +++ b/src/pages/trade/Trade.tsx @@ -1,35 +1,33 @@ import { useRef, useState } from 'react'; -import styled, { AnyStyledComponent, css } from 'styled-components'; + import { useSelector } from 'react-redux'; +import styled, { css } from 'styled-components'; + +import { TradeLayouts } from '@/constants/layout'; + +import { useBreakpoints } from '@/hooks/useBreakpoints'; +import { useCurrentMarketId } from '@/hooks/useCurrentMarketId'; +import { usePageTitlePriceUpdates } from '@/hooks/usePageTitlePriceUpdates'; +import { useTradeFormInputs } from '@/hooks/useTradeFormInputs'; import { breakpoints } from '@/styles'; import { layoutMixins } from '@/styles/layoutMixins'; -import { TradeLayouts } from '@/constants/layout'; - -import { - useBreakpoints, - useCurrentMarketId, - usePageTitlePriceUpdates, - useTradeFormInputs, -} from '@/hooks'; +import { DetachedSection } from '@/components/ContentSection'; +import { AccountInfo } from '@/views/AccountInfo'; +import { TradeBox } from '@/views/TradeBox'; import { calculateCanAccountTrade } from '@/state/accountCalculators'; import { getSelectedTradeLayout } from '@/state/layoutSelectors'; -import { DetachedSection } from '@/components/ContentSection'; - -import { TradeHeaderMobile } from './TradeHeaderMobile'; +import { HorizontalPanel } from './HorizontalPanel'; import { InnerPanel } from './InnerPanel'; import { MarketSelectorAndStats } from './MarketSelectorAndStats'; -import { VerticalPanel } from './VerticalPanel'; -import { HorizontalPanel } from './HorizontalPanel'; import { MobileBottomPanel } from './MobileBottomPanel'; import { MobileTopPanel } from './MobileTopPanel'; import { TradeDialogTrigger } from './TradeDialogTrigger'; - -import { AccountInfo } from '@/views/AccountInfo'; -import { TradeBox } from '@/views/TradeBox'; +import { TradeHeaderMobile } from './TradeHeaderMobile'; +import { VerticalPanel } from './VerticalPanel'; const TradePage = () => { const tradePageRef = useRef<HTMLDivElement>(null); @@ -45,7 +43,7 @@ const TradePage = () => { useTradeFormInputs(); return isTablet ? ( - <Styled.TradeLayoutMobile> + <$TradeLayoutMobile> <TradeHeaderMobile /> <div> @@ -63,42 +61,39 @@ const TradePage = () => { </div> {canAccountTrade && <TradeDialogTrigger />} - </Styled.TradeLayoutMobile> + </$TradeLayoutMobile> ) : ( - <Styled.TradeLayout + <$TradeLayout ref={tradePageRef} tradeLayout={tradeLayout} isHorizontalPanelOpen={isHorizontalPanelOpen} > - <Styled.Top> + <$Top> <MarketSelectorAndStats /> - </Styled.Top> + </$Top> - <Styled.SideSection gridArea="Side"> + <$SideSection gridArea="Side"> <AccountInfo /> <TradeBox /> - </Styled.SideSection> + </$SideSection> - <Styled.GridSection gridArea="Vertical"> + <$GridSection gridArea="Vertical"> <VerticalPanel tradeLayout={tradeLayout} /> - </Styled.GridSection> + </$GridSection> - <Styled.GridSection gridArea="Inner"> + <$GridSection gridArea="Inner"> <InnerPanel /> - </Styled.GridSection> + </$GridSection> - <Styled.GridSection gridArea="Horizontal"> + <$GridSection gridArea="Horizontal"> <HorizontalPanel isOpen={isHorizontalPanelOpen} setIsOpen={setIsHorizontalPanelOpen} /> - </Styled.GridSection> - </Styled.TradeLayout> + </$GridSection> + </$TradeLayout> ); }; export default TradePage; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.TradeLayout = styled.article<{ +const $TradeLayout = styled.article<{ tradeLayout: TradeLayouts; isHorizontalPanelOpen: boolean; }>` @@ -214,7 +209,7 @@ Styled.TradeLayout = styled.article<{ } `; -Styled.TradeLayoutMobile = styled.article` +const $TradeLayoutMobile = styled.article` ${layoutMixins.contentContainerPage} min-height: 100%; @@ -232,14 +227,14 @@ Styled.TradeLayoutMobile = styled.article` } `; -Styled.Top = styled.header` +const $Top = styled.header` grid-area: Top; `; -Styled.GridSection = styled.section<{ gridArea: string }>` +const $GridSection = styled.section<{ gridArea: string }>` grid-area: ${({ gridArea }) => gridArea}; `; -Styled.SideSection = styled(Styled.GridSection)` +const $SideSection = styled($GridSection)` grid-template-rows: auto minmax(0, 1fr); `; diff --git a/src/pages/trade/TradeDialogTrigger.tsx b/src/pages/trade/TradeDialogTrigger.tsx index e746142b5..be98537e8 100644 --- a/src/pages/trade/TradeDialogTrigger.tsx +++ b/src/pages/trade/TradeDialogTrigger.tsx @@ -1,13 +1,14 @@ import { useState } from 'react'; -import { useSelector, shallowEqual } from 'react-redux'; -import styled, { AnyStyledComponent } from 'styled-components'; + +import { shallowEqual, useSelector } from 'react-redux'; +import styled from 'styled-components'; import { STRING_KEYS } from '@/constants/localization'; import { ORDER_TYPE_STRINGS } from '@/constants/trade'; -import { layoutMixins } from '@/styles/layoutMixins'; +import { useStringGetter } from '@/hooks/useStringGetter'; -import { useStringGetter } from '@/hooks'; +import { layoutMixins } from '@/styles/layoutMixins'; import { Icon, IconName } from '@/components/Icon'; import { OrderSideTag } from '@/components/OrderSideTag'; @@ -26,8 +27,8 @@ export const TradeDialogTrigger = () => { const currentTradeData = useSelector(getInputTradeData, shallowEqual); - const { side, type, summary } = currentTradeData || {}; - const { total } = summary || {}; + const { side, type, summary } = currentTradeData ?? {}; + const { total } = summary ?? {}; const selectedTradeType = getSelectedTradeType(type); const selectedOrderSide = getSelectedOrderSide(side); @@ -38,35 +39,27 @@ export const TradeDialogTrigger = () => { isOpen={isOpen} setIsOpen={setIsOpen} slotTrigger={ - <Styled.TradeDialogTrigger hasSummary={hasSummary}> + <$TradeDialogTrigger hasSummary={hasSummary}> {hasSummary ? ( - <Styled.TradeSummary> - <Styled.TradeType> + <$TradeSummary> + <$TradeType> <span> {stringGetter({ key: ORDER_TYPE_STRINGS[selectedTradeType].orderTypeKey })} </span> <OrderSideTag size={TagSize.Medium} orderSide={selectedOrderSide} /> - </Styled.TradeType> - <Styled.Output - type={OutputType.Fiat} - value={total} - showSign={ShowSign.None} - useGrouping - /> - </Styled.TradeSummary> + </$TradeType> + <$Output type={OutputType.Fiat} value={total} showSign={ShowSign.None} useGrouping /> + </$TradeSummary> ) : ( stringGetter({ key: STRING_KEYS.TAP_TO_TRADE }) )} - <Styled.Icon iconName={IconName.Caret} /> - </Styled.TradeDialogTrigger> + <$Icon iconName={IconName.Caret} /> + </$TradeDialogTrigger> } /> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.TradeDialogTrigger = styled.div<{ hasSummary?: boolean }>` +const $TradeDialogTrigger = styled.div<{ hasSummary?: boolean }>` ${layoutMixins.stickyFooter} ${layoutMixins.spacedRow} @@ -81,21 +74,21 @@ Styled.TradeDialogTrigger = styled.div<{ hasSummary?: boolean }>` cursor: pointer; `; -Styled.TradeSummary = styled.div` +const $TradeSummary = styled.div` ${layoutMixins.rowColumn} font: var(--font-medium-book); `; -Styled.TradeType = styled.div` +const $TradeType = styled.div` ${layoutMixins.inlineRow} `; -Styled.Output = styled(Output)` +const $Output = styled(Output)` color: var(--color-text-2); font: var(--font-large-book); `; -Styled.Icon = styled(Icon)` +const $Icon = styled(Icon)` rotate: 0.5turn; width: 1.5rem; height: 1.5rem; diff --git a/src/pages/trade/TradeHeaderMobile.tsx b/src/pages/trade/TradeHeaderMobile.tsx index 3b895ce7c..d955982e1 100644 --- a/src/pages/trade/TradeHeaderMobile.tsx +++ b/src/pages/trade/TradeHeaderMobile.tsx @@ -1,20 +1,20 @@ -import styled, { AnyStyledComponent } from 'styled-components'; import { shallowEqual, useSelector } from 'react-redux'; import { useNavigate } from 'react-router-dom'; +import styled from 'styled-components'; import { AppRoute } from '@/constants/routes'; -import { layoutMixins } from '@/styles/layoutMixins'; -import { getCurrentMarketAssetData } from '@/state/assetsSelectors'; -import { getCurrentMarketData } from '@/state/perpetualsSelectors'; +import { layoutMixins } from '@/styles/layoutMixins'; import { AssetIcon } from '@/components/AssetIcon'; import { BackButton } from '@/components/BackButton'; import { Output, OutputType } from '@/components/Output'; +import { MidMarketPrice } from '@/views/MidMarketPrice'; -import { MustBigNumber } from '@/lib/numbers'; +import { getCurrentMarketAssetData } from '@/state/assetsSelectors'; +import { getCurrentMarketData } from '@/state/perpetualsSelectors'; -import { MidMarketPrice } from '@/views/MidMarketPrice'; +import { MustBigNumber } from '@/lib/numbers'; export const TradeHeaderMobile = () => { const { name, id } = useSelector(getCurrentMarketAssetData, shallowEqual) ?? {}; @@ -24,31 +24,28 @@ export const TradeHeaderMobile = () => { useSelector(getCurrentMarketData, shallowEqual) ?? {}; return ( - <Styled.Header> + <$Header> <BackButton onClick={() => navigate(AppRoute.Markets)} /> - <Styled.MarketName> - <Styled.AssetIcon symbol={id} /> - <Styled.Name> + <$MarketName> + <$AssetIcon symbol={id} /> + <$Name> <h3>{name}</h3> <span>{market}</span> - </Styled.Name> - </Styled.MarketName> + </$Name> + </$MarketName> - <Styled.Right> + <$Right> <MidMarketPrice /> - <Styled.PriceChange + <$PriceChange type={OutputType.Percent} value={MustBigNumber(priceChange24HPercent).abs()} isNegative={MustBigNumber(priceChange24H).isNegative()} /> - </Styled.Right> - </Styled.Header> + </$Right> + </$Header> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.Header = styled.header` +const $Header = styled.header` ${layoutMixins.contentSectionDetachedScrollable} ${layoutMixins.stickyHeader} @@ -64,16 +61,16 @@ Styled.Header = styled.header` background-color: var(--color-layer-2); `; -Styled.MarketName = styled.div` +const $MarketName = styled.div` ${layoutMixins.inlineRow} gap: 1ch; `; -Styled.AssetIcon = styled(AssetIcon)` +const $AssetIcon = styled(AssetIcon)` font-size: 2.5rem; `; -Styled.Name = styled.div` +const $Name = styled.div` ${layoutMixins.rowColumn} h3 { @@ -86,14 +83,14 @@ Styled.Name = styled.div` } `; -Styled.Right = styled.div` +const $Right = styled.div` margin-left: auto; ${layoutMixins.rowColumn} justify-items: flex-end; `; -Styled.PriceChange = styled(Output)<{ isNegative?: boolean }>` +const $PriceChange = styled(Output)<{ isNegative?: boolean }>` font: var(--font-small-book); color: ${({ isNegative }) => (isNegative ? `var(--color-negative)` : `var(--color-positive)`)}; `; diff --git a/src/pages/trade/UnopenedIsolatedPositions.tsx b/src/pages/trade/UnopenedIsolatedPositions.tsx new file mode 100644 index 000000000..4f3de4809 --- /dev/null +++ b/src/pages/trade/UnopenedIsolatedPositions.tsx @@ -0,0 +1,72 @@ +import { useState } from 'react'; + +import styled from 'styled-components'; + +import { layoutMixins } from '@/styles/layoutMixins'; + +import { Button } from '@/components/Button'; +import { Icon, IconName } from '@/components/Icon'; +import { PotentialPositionCard } from '@/components/PotentialPositionCard'; + +type UnopenedIsolatedPositionsProps = { + className?: string; + onViewOrders: (marketId: string) => void; +}; + +export const UnopenedIsolatedPositions = ({ + className, + onViewOrders, +}: UnopenedIsolatedPositionsProps) => { + const [isOpen, setIsOpen] = useState(false); + return ( + <$UnopenedIsolatedPositions className={className} isOpen={isOpen}> + <$Button isOpen={isOpen} onClick={() => setIsOpen(!isOpen)}> + Unopened Isolated Positions + <Icon iconName={IconName.Caret} /> + </$Button> + + {isOpen && ( + <$Cards> + <PotentialPositionCard onViewOrders={onViewOrders} /> + <PotentialPositionCard onViewOrders={onViewOrders} /> + <PotentialPositionCard onViewOrders={onViewOrders} /> + <PotentialPositionCard onViewOrders={onViewOrders} /> + <PotentialPositionCard onViewOrders={onViewOrders} /> + <PotentialPositionCard onViewOrders={onViewOrders} /> + <PotentialPositionCard onViewOrders={onViewOrders} /> + <PotentialPositionCard onViewOrders={onViewOrders} /> + <PotentialPositionCard onViewOrders={onViewOrders} /> + </$Cards> + )} + </$UnopenedIsolatedPositions> + ); +}; + +const $UnopenedIsolatedPositions = styled.div<{ isOpen?: boolean }>` + overflow: auto; + border-top: var(--border); + ${({ isOpen }) => isOpen && 'height: 100%;'} +`; +const $Button = styled(Button)<{ isOpen?: boolean }>` + position: sticky; + top: 0; + gap: 1rem; + backdrop-filter: blur(4px) contrast(1.01); + background-color: transparent; + border: none; + margin: 0 1rem; + + ${({ isOpen }) => + isOpen && + ` + svg { + transform: rotate(180deg); + } + `} +`; +const $Cards = styled.div` + ${layoutMixins.flexWrap} + gap: 1rem; + scroll-snap-align: none; + padding: 0 1rem 1rem; +`; diff --git a/src/pages/trade/VerticalPanel.tsx b/src/pages/trade/VerticalPanel.tsx index 7a7af7dde..1b4a766de 100644 --- a/src/pages/trade/VerticalPanel.tsx +++ b/src/pages/trade/VerticalPanel.tsx @@ -3,10 +3,9 @@ import { useState } from 'react'; import { TradeLayouts } from '@/constants/layout'; import { STRING_KEYS } from '@/constants/localization'; -import { useStringGetter } from '@/hooks'; +import { useStringGetter } from '@/hooks/useStringGetter'; import { Tabs } from '@/components/Tabs'; - import { CanvasOrderbook } from '@/views/CanvasOrderbook'; import { LiveTrades } from '@/views/tables/LiveTrades'; @@ -29,8 +28,8 @@ export const VerticalPanel = ({ tradeLayout }: { tradeLayout: TradeLayouts }) => <Tabs fullWidthTabs value={value} - onValueChange={(value: Tab) => { - setValue(value); + onValueChange={(v: Tab) => { + setValue(v); }} items={[ { diff --git a/src/polyfills.ts b/src/polyfills.ts index 6784beadc..5d1d0df84 100644 --- a/src/polyfills.ts +++ b/src/polyfills.ts @@ -1,9 +1,8 @@ import { Buffer } from 'buffer'; -// @ts-ignore -globalThis.process ??= { env: {} }; // Minimal process polyfill -globalThis.global ??= globalThis; -globalThis.Buffer ??= Buffer; +globalThis.process = globalThis.process || { env: {} }; // Minimal process polyfill +globalThis.global = globalThis.global || globalThis; +globalThis.Buffer = globalThis.Buffer || Buffer; declare global { interface WindowEventMap { diff --git a/src/services/index.ts b/src/services/index.ts new file mode 100644 index 000000000..e7575c153 --- /dev/null +++ b/src/services/index.ts @@ -0,0 +1 @@ +export * from './numia'; diff --git a/src/services/numia.ts b/src/services/numia.ts new file mode 100644 index 000000000..267d97b52 --- /dev/null +++ b/src/services/numia.ts @@ -0,0 +1,23 @@ +type GetChainRevenueRequest = { + startDate: Date; + endDate: Date; +}; + +type ChainRevenue = { + labels: string; + tx_fees: number; + trading_fees: number; + total: number; +}; + +export const getChainRevenue = async ({ startDate, endDate }: GetChainRevenueRequest) => { + const url = new URL(`${import.meta.env.VITE_NUMIA_BASE_URL}/dydx/tokenomics/chain_revenue`); + + url.searchParams.set('start_date', startDate.toISOString().split('T')[0]); + url.searchParams.set('end_date', endDate.toISOString().split('T')[0]); + + const response = await fetch(url); + const data = await response.json(); + + return data as ChainRevenue[]; +}; diff --git a/src/state/_store.ts b/src/state/_store.ts index 2e2b93a58..36b7b1478 100644 --- a/src/state/_store.ts +++ b/src/state/_store.ts @@ -1,20 +1,21 @@ import { configureStore } from '@reduxjs/toolkit'; +// TODO - fix cycle +// eslint-disable-next-line import/no-cycle import abacusStateManager from '@/lib/abacus'; -import appMiddleware from './appMiddleware'; -import localizationMiddleware from './localizationMiddleware'; - import { accountSlice } from './account'; import { appSlice } from './app'; +import appMiddleware from './appMiddleware'; import { assetsSlice } from './assets'; import { configsSlice } from './configs'; import { dialogsSlice } from './dialogs'; import { inputsSlice } from './inputs'; import { layoutSlice } from './layout'; import { localizationSlice } from './localization'; -import { perpetualsSlice } from './perpetuals'; +import localizationMiddleware from './localizationMiddleware'; import { notificationsSlice } from './notifications'; +import { perpetualsSlice } from './perpetuals'; export const commandMenuSlices = [layoutSlice, localizationSlice]; diff --git a/src/state/account.ts b/src/state/account.ts index 57d7a54db..f93c4a4a4 100644 --- a/src/state/account.ts +++ b/src/state/account.ts @@ -2,22 +2,30 @@ import { createSlice, type PayloadAction } from '@reduxjs/toolkit'; import type { AccountBalance, - SubaccountFill, + Compliance, + HistoricalPnlPeriods, Nullable, + SubAccountHistoricalPNLs, Subaccount, + SubaccountFill, SubaccountFills, SubaccountFundingPayments, - Wallet, SubaccountOrder, SubaccountTransfers, - HistoricalPnlPeriods, - SubAccountHistoricalPNLs, - UsageRestriction, TradingRewards, + UsageRestriction, + Wallet, } from '@/constants/abacus'; - import { OnboardingGuard, OnboardingState } from '@/constants/account'; import { LocalStorageKey } from '@/constants/localStorage'; +import { STRING_KEYS } from '@/constants/localization'; +import { + CancelOrderStatuses, + PlaceOrderStatuses, + type LocalCancelOrderData, + type LocalPlaceOrderData, + type TradeTypes, +} from '@/constants/trade'; import { WalletType } from '@/constants/wallets'; import { getLocalStorage } from '@/lib/localStorage'; @@ -44,8 +52,11 @@ export type AccountState = { latestOrder?: Nullable<SubaccountOrder>; historicalPnlPeriod?: HistoricalPnlPeriods; uncommittedOrderClientIds: number[]; + localPlaceOrders: LocalPlaceOrderData[]; + localCancelOrders: LocalCancelOrderData[]; restriction?: Nullable<UsageRestriction>; + compliance?: Compliance; }; const initialState: AccountState = { @@ -82,9 +93,12 @@ const initialState: AccountState = { latestOrder: undefined, uncommittedOrderClientIds: [], historicalPnlPeriod: undefined, + localPlaceOrders: [], + localCancelOrders: [], // Restriction restriction: undefined, + compliance: undefined, }; export const accountSlice = createSlice({ @@ -99,10 +113,27 @@ export const accountSlice = createSlice({ state.fills != null && (action.payload ?? []).some((fill: SubaccountFill) => !existingFillIds.includes(fill.id)); + const filledOrderIds = (action.payload ?? []).map((fill: SubaccountFill) => fill.orderId); + return { ...state, fills: action.payload, hasUnseenFillUpdates: state.hasUnseenFillUpdates || hasNewFillUpdates, + localPlaceOrders: hasNewFillUpdates + ? state.localPlaceOrders.map((order) => + order.submissionStatus < PlaceOrderStatuses.Filled && + order.orderId && + filledOrderIds.includes(order.orderId) + ? { + ...order, + submissionStatus: PlaceOrderStatuses.Filled, + } + : order + ) + : state.localPlaceOrders, + submittedCanceledOrders: hasNewFillUpdates + ? state.localCancelOrders.filter((order) => !filledOrderIds.includes(order.orderId)) + : state.localCancelOrders, }; }, setFundingPayments: (state, action: PayloadAction<any>) => { @@ -112,18 +143,27 @@ export const accountSlice = createSlice({ state.transfers = action.payload; }, setLatestOrder: (state, action: PayloadAction<Nullable<SubaccountOrder>>) => { - const { clientId } = action.payload ?? {}; + const { clientId, id } = action.payload ?? {}; state.latestOrder = action.payload; if (clientId) { state.uncommittedOrderClientIds = state.uncommittedOrderClientIds.filter( - (id) => id !== clientId + (uncommittedClientId) => uncommittedClientId !== clientId + ); + state.localPlaceOrders = state.localPlaceOrders.map((order) => + order.clientId === clientId && order.submissionStatus < PlaceOrderStatuses.Placed + ? { + ...order, + orderId: id, + submissionStatus: PlaceOrderStatuses.Placed, + } + : order ); } }, clearOrder: (state, action: PayloadAction<string>) => ({ ...state, - clearedOrderIds: [...(state.clearedOrderIds || []), action.payload], + clearedOrderIds: [...(state.clearedOrderIds ?? []), action.payload], }), setOnboardingGuard: ( state, @@ -147,6 +187,9 @@ export const accountSlice = createSlice({ setRestrictionType: (state, action: PayloadAction<Nullable<UsageRestriction>>) => { state.restriction = action.payload; }, + setCompliance: (state, action: PayloadAction<Compliance>) => { + state.compliance = action.payload; + }, setSubaccount: (state, action: PayloadAction<Nullable<Subaccount>>) => { const existingOrderIds = state.subaccount?.orders ? state.subaccount.orders.toArray().map((order) => order.id) @@ -184,12 +227,61 @@ export const accountSlice = createSlice({ setTradingRewards: (state, action: PayloadAction<TradingRewards>) => { state.tradingRewards = action.payload; }, - addUncommittedOrderClientId: (state, action: PayloadAction<number>) => { - state.uncommittedOrderClientIds.push(action.payload); + placeOrderSubmitted: ( + state, + action: PayloadAction<{ marketId: string; clientId: number; orderType: TradeTypes }> + ) => { + state.localPlaceOrders.push({ + ...action.payload, + submissionStatus: PlaceOrderStatuses.Submitted, + }); + state.uncommittedOrderClientIds.push(action.payload.clientId); }, - removeUncommittedOrderClientId: (state, action: PayloadAction<number>) => { + placeOrderFailed: ( + state, + action: PayloadAction<{ clientId: number; errorStringKey: string }> + ) => { + state.localPlaceOrders = state.localPlaceOrders.map((order) => + order.clientId === action.payload.clientId + ? { + ...order, + errorStringKey: action.payload.errorStringKey, + } + : order + ); state.uncommittedOrderClientIds = state.uncommittedOrderClientIds.filter( - (id) => id !== action.payload + (id) => id !== action.payload.clientId + ); + }, + placeOrderTimeout: (state, action: PayloadAction<number>) => { + if (state.uncommittedOrderClientIds.includes(action.payload)) { + placeOrderFailed({ + clientId: action.payload, + errorStringKey: STRING_KEYS.SOMETHING_WENT_WRONG, + }); + } + }, + cancelOrderSubmitted: (state, action: PayloadAction<string>) => { + state.localCancelOrders.push({ + orderId: action.payload, + submissionStatus: CancelOrderStatuses.Submitted, + }); + }, + cancelOrderConfirmed: (state, action: PayloadAction<string>) => { + state.localCancelOrders = state.localCancelOrders.map((order) => + order.orderId === action.payload + ? { ...order, submissionStatus: CancelOrderStatuses.Canceled } + : order + ); + }, + cancelOrderFailed: ( + state, + action: PayloadAction<{ orderId: string; errorStringKey: string }> + ) => { + state.localCancelOrders.map((order) => + order.orderId === action.payload.orderId + ? { ...order, errorStringKey: action.payload.errorStringKey } + : order ); }, }, @@ -205,6 +297,7 @@ export const { setOnboardingState, setHistoricalPnl, setRestrictionType, + setCompliance, setSubaccount, setWallet, viewedFills, @@ -212,6 +305,10 @@ export const { setBalances, setStakingBalances, setTradingRewards, - addUncommittedOrderClientId, - removeUncommittedOrderClientId, + placeOrderSubmitted, + placeOrderFailed, + placeOrderTimeout, + cancelOrderSubmitted, + cancelOrderConfirmed, + cancelOrderFailed, } = accountSlice.actions; diff --git a/src/state/accountCalculators.ts b/src/state/accountCalculators.ts index e78b4a983..fbbcf7c6e 100644 --- a/src/state/accountCalculators.ts +++ b/src/state/accountCalculators.ts @@ -1,6 +1,7 @@ import { createSelector } from 'reselect'; import { OnboardingState, OnboardingSteps } from '@/constants/account'; +import { ENVIRONMENT_CONFIG_MAP, type DydxNetwork } from '@/constants/networks'; import { getOnboardingGuards, @@ -8,6 +9,9 @@ import { getSubaccountId, getUncommittedOrderClientIds, } from '@/state/accountSelectors'; +import { getSelectedNetwork } from '@/state/appSelectors'; + +import { testFlags } from '@/lib/testFlags'; export const calculateOnboardingStep = createSelector( [getOnboardingState, getOnboardingGuards], @@ -84,3 +88,26 @@ export const calculateIsAccountLoading = createSelector( ); } ); + +/** + * @description calculate whether positions table should render triggers column + */ +export const calculateShouldRenderTriggersInPositionsTable = createSelector( + [calculateIsAccountViewOnly, getSelectedNetwork], + (isAccountViewOnly: boolean, selectedNetwork: DydxNetwork) => + !isAccountViewOnly && ENVIRONMENT_CONFIG_MAP[selectedNetwork].featureFlags.isSlTpEnabled +); + +/** + * @description calculate whether positions table should render actions column + */ +export const calculateShouldRenderActionsInPositionsTable = (isCloseActionShown: boolean) => + createSelector( + [calculateIsAccountViewOnly, calculateShouldRenderTriggersInPositionsTable], + (isAccountViewOnly: boolean, areTriggersRendered: boolean) => { + const hasActionsInColumn = testFlags.isolatedMargin + ? isCloseActionShown + : areTriggersRendered || isCloseActionShown; + return !isAccountViewOnly && hasActionsInColumn; + } + ); diff --git a/src/state/accountSelectors.ts b/src/state/accountSelectors.ts index e7390eb0a..d7cee566e 100644 --- a/src/state/accountSelectors.ts +++ b/src/state/accountSelectors.ts @@ -3,24 +3,25 @@ import { OrderSide } from '@dydxprotocol/v4-client-js'; import { createSelector } from 'reselect'; import { - type AbacusOrderStatuses, - type SubaccountOrder, - type SubaccountFill, - type SubaccountFundingPayment, + AbacusOrderSide, AbacusOrderStatus, AbacusPositionSide, - ORDER_SIDES, HistoricalTradingReward, HistoricalTradingRewardsPeriod, + ORDER_SIDES, + type AbacusOrderStatuses, + type SubaccountFill, + type SubaccountFundingPayment, + type SubaccountOrder, } from '@/constants/abacus'; - import { OnboardingState } from '@/constants/account'; -import { getHydratedTradingData } from '@/lib/orders'; -import type { RootState } from './_store'; +import { getHydratedTradingData, isStopLossOrder, isTakeProfitOrder } from '@/lib/orders'; +import { getHydratedPositionData } from '@/lib/positions'; -import { getCurrentMarketId, getPerpetualMarkets } from './perpetualsSelectors'; +import type { RootState } from './_store'; import { getAssets } from './assetsSelectors'; +import { getCurrentMarketId, getPerpetualMarkets } from './perpetualsSelectors'; /** * @param state @@ -54,6 +55,22 @@ export const getSubaccountHistoricalPnl = (state: RootState) => state.account?.h export const getOpenPositions = (state: RootState) => state.account.subaccount?.openPositions?.toArray(); +/** + * @param marketId + * @returns user's position details with the given marketId + */ + +export const getPositionDetails = (marketId: string) => + createSelector( + [getExistingOpenPositions, getAssets, getPerpetualMarkets], + (positions, assets, perpetualMarkets) => { + const matchingPosition = positions?.find((position) => position.id === marketId); + return matchingPosition + ? getHydratedPositionData({ data: matchingPosition, assets, perpetualMarkets }) + : undefined; + } + ); + /** * @param state * @returns list of a subaccount's open positions, excluding the ones in draft, i.e. with NONE position side. @@ -62,6 +79,11 @@ export const getExistingOpenPositions = createSelector([getOpenPositions], (allO allOpenPositions?.filter((position) => position.side.current !== AbacusPositionSide.NONE) ); +export const getOpenPositionFromId = (marketId: string) => + createSelector([getOpenPositions], (allOpenPositions) => + allOpenPositions?.find(({ id }) => id === marketId) + ); + /** * @param state * @returns AccountPositions of the current market @@ -104,22 +126,140 @@ export const getSubaccountUnclearedOrders = createSelector( /** * @param state - * @returns list of orders that are in the open status + * @returns Record of SubaccountOrders indexed by marketId + */ +export const getMarketOrders = (state: RootState): { [marketId: string]: SubaccountOrder[] } => { + const orders = getSubaccountUnclearedOrders(state); + return (orders ?? []).reduce((marketOrders, order) => { + marketOrders[order.marketId] ??= []; + marketOrders[order.marketId].push(order); + return marketOrders; + }, {} as { [marketId: string]: SubaccountOrder[] }); +}; + +/** + * @param state + * @returns SubaccountOrders of the current market + */ +export const getCurrentMarketOrders = createSelector( + [getCurrentMarketId, getMarketOrders], + (currentMarketId, marketOrders): SubaccountOrder[] => + !currentMarketId ? [] : marketOrders[currentMarketId] +); + +/** + * @param state + * @returns list of orders that have not been filled or cancelled */ export const getSubaccountOpenOrders = createSelector([getSubaccountOrders], (orders) => + orders?.filter( + (order) => + order.status !== AbacusOrderStatus.filled && order.status !== AbacusOrderStatus.cancelled + ) +); + +/** + * @param state + * @returns order with the specified id + */ +export const getOrderById = (orderId: string) => + createSelector([getSubaccountOrders], (orders) => orders?.find((order) => order.id === orderId)); + +/** + * @param state + * @returns order with the specified client id + */ +export const getOrderByClientId = (orderClientId: number) => + createSelector([getSubaccountOrders], (orders) => + orders?.find((order) => order.clientId === orderClientId) + ); + +/** + * @param state + * @returns first matching fill with the specified order client id + */ +export const getFillByClientId = (orderClientId: number) => + createSelector([getSubaccountFills, getOrderByClientId(orderClientId)], (fills, order) => + fills?.find((fill) => fill.orderId === order?.id) + ); + +/** + * @param state + * @returns Record of SubaccountOrders that have not been filled or cancelled, indexed by marketId + */ +export const getMarketSubaccountOpenOrders = ( + state: RootState +): { + [marketId: string]: SubaccountOrder[]; +} => { + const orders = getSubaccountOpenOrders(state); + return (orders ?? []).reduce((marketOrders, order) => { + marketOrders[order.marketId] ??= []; + marketOrders[order.marketId].push(order); + return marketOrders; + }, {} as { [marketId: string]: SubaccountOrder[] }); +}; + +/** + * @param state + * @returns list of conditional orders that have not been filled or cancelled for all subaccount positions + */ +export const getSubaccountConditionalOrders = (isSlTpLimitOrdersEnabled: boolean) => + createSelector( + [getMarketSubaccountOpenOrders, getOpenPositions], + (openOrdersByMarketId, positions) => { + const stopLossOrders: SubaccountOrder[] = []; + const takeProfitOrders: SubaccountOrder[] = []; + + positions?.forEach((position) => { + const orderSideForConditionalOrder = + position?.side?.current === AbacusPositionSide.LONG + ? AbacusOrderSide.sell + : AbacusOrderSide.buy; + + const conditionalOrders = openOrdersByMarketId[position.id]; + + conditionalOrders?.forEach((order: SubaccountOrder) => { + if ( + order.side === orderSideForConditionalOrder && + isStopLossOrder(order, isSlTpLimitOrdersEnabled) + ) { + stopLossOrders.push(order); + } else if ( + order.side === orderSideForConditionalOrder && + isTakeProfitOrder(order, isSlTpLimitOrdersEnabled) + ) { + takeProfitOrders.push(order); + } + }); + }); + + return { stopLossOrders, takeProfitOrders }; + } + ); + +/** + * @param state + * @returns list of orders that are in the open status + */ +export const getSubaccountOpenStatusOrders = createSelector([getSubaccountOrders], (orders) => orders?.filter((order) => order.status === AbacusOrderStatus.open) ); -export const getSubaccountOpenOrdersBySideAndPrice = createSelector( - [getSubaccountOpenOrders], +export const getSubaccountOrderSizeBySideAndPrice = createSelector( + [getSubaccountOpenStatusOrders], (openOrders = []) => { - const ordersBySide: Partial<Record<OrderSide, Record<number, SubaccountOrder>>> = {}; - openOrders.forEach((order) => { + const orderSizeBySideAndPrice: Partial<Record<OrderSide, Record<number, number>>> = {}; + openOrders.forEach((order: SubaccountOrder) => { const side = ORDER_SIDES[order.side.name]; - const byPrice = (ordersBySide[side] ??= {}); - byPrice[order.price] = order; + const byPrice = (orderSizeBySideAndPrice[side] ??= {}); + if (byPrice[order.price]) { + byPrice[order.price] += order.size; + } else { + byPrice[order.price] = order.size; + } }); - return ordersBySide; + return orderSizeBySideAndPrice; } ); @@ -142,6 +282,16 @@ export const getLatestOrderStatus = createSelector( export const getUncommittedOrderClientIds = (state: RootState) => state.account.uncommittedOrderClientIds; +/** + * @returns a list of locally placed orders for the current FE session + */ +export const getLocalPlaceOrders = (state: RootState) => state.account.localPlaceOrders; + +/** + * @returns a list of locally canceled orders for the current FE session + */ +export const getLocalCancelOrders = (state: RootState) => state.account.localCancelOrders; + /** * @param orderId * @returns order details with the given orderId @@ -157,29 +307,6 @@ export const getOrderDetails = (orderId: string) => } ); -/** - * @param state - * @returns Record of SubaccountOrders indexed by marketId - */ -export const getMarketOrders = (state: RootState): { [marketId: string]: SubaccountOrder[] } => { - const orders = getSubaccountUnclearedOrders(state); - return (orders ?? []).reduce((marketOrders, order) => { - marketOrders[order.marketId] ??= []; - marketOrders[order.marketId].push(order); - return marketOrders; - }, {} as { [marketId: string]: SubaccountOrder[] }); -}; - -/** - * @param state - * @returns SubaccountOrders of the current market - */ -export const getCurrentMarketOrders = createSelector( - [getCurrentMarketId, getMarketOrders], - (currentMarketId, marketOrders): SubaccountOrder[] => - !currentMarketId ? [] : marketOrders[currentMarketId] -); - /** * @param state * @returns list of fills for the currently connected subaccount @@ -393,3 +520,18 @@ export const getUsageRestriction = (state: RootState) => state.account.restricti * @returns RestrictionType from the current session */ export const getRestrictionType = (state: RootState) => state.account.restriction?.restriction; + +/** + * @returns compliance status of the current session + */ +export const getComplianceStatus = (state: RootState) => state.account.compliance?.status; + +/** + * @returns compliance status of the current session + */ +export const getComplianceUpdatedAt = (state: RootState) => state.account.compliance?.updatedAt; + +/** + * @returns compliance geo of the current session + */ +export const getGeo = (state: RootState) => state.account.compliance?.geo; diff --git a/src/state/app.ts b/src/state/app.ts index d29bfc63f..ba7f9ca8b 100644 --- a/src/state/app.ts +++ b/src/state/app.ts @@ -10,10 +10,12 @@ import { validateAgainstAvailableEnvironments } from '@/lib/network'; export interface AppState { apiState: AbacusApiState | undefined; pageLoaded: boolean; + initializationError?: string; selectedNetwork: DydxNetwork; } const initialState: AppState = { + initializationError: undefined, apiState: undefined, pageLoaded: false, selectedNetwork: getLocalStorage({ @@ -40,8 +42,16 @@ export const appSlice = createSlice({ ...state, selectedNetwork: action.payload, }), + setInitializationError: (state: AppState, action: PayloadAction<string>) => { + state.initializationError = action.payload; + }, }, }); -export const { initializeLocalization, initializeWebsocket, setApiState, setSelectedNetwork } = - appSlice.actions; +export const { + initializeLocalization, + initializeWebsocket, + setApiState, + setSelectedNetwork, + setInitializationError, +} = appSlice.actions; diff --git a/src/state/appMiddleware.ts b/src/state/appMiddleware.ts index 61ff70b04..f71641aaf 100644 --- a/src/state/appMiddleware.ts +++ b/src/state/appMiddleware.ts @@ -1,17 +1,12 @@ import type { PayloadAction } from '@reduxjs/toolkit'; -import { AbacusApiStatus } from '@/constants/abacus'; -import { DialogTypes } from '@/constants/dialogs'; -import { isDev } from '@/constants/networks'; - -import { setApiState, setSelectedNetwork } from '@/state/app'; +import { setSelectedNetwork } from '@/state/app'; import { resetPerpetualsState } from '@/state/perpetuals'; +// TODO - fix cycle +// eslint-disable-next-line import/no-cycle import abacusStateManager from '@/lib/abacus'; -import { openDialog } from './dialogs'; -import { getActiveDialog } from './dialogsSelectors'; - export default (store: any) => (next: any) => async (action: PayloadAction<any>) => { next(action); @@ -23,21 +18,6 @@ export default (store: any) => (next: any) => async (action: PayloadAction<any>) abacusStateManager.switchNetwork(payload); break; } - case setApiState.type: { - const { status } = payload ?? {}; - const { type: activeDialogType } = getActiveDialog(store.getState()) ?? {}; - - if (status !== AbacusApiStatus.NORMAL && activeDialogType !== DialogTypes.ExchangeOffline) { - store.dispatch( - openDialog({ - type: DialogTypes.ExchangeOffline, - dialogProps: { preventClose: !isDev }, - }) - ); - } - - break; - } default: { break; } diff --git a/src/state/appSelectors.ts b/src/state/appSelectors.ts index 2351386c7..272c68fde 100644 --- a/src/state/appSelectors.ts +++ b/src/state/appSelectors.ts @@ -1,8 +1,10 @@ import { DydxChainId, ENVIRONMENT_CONFIG_MAP } from '@/constants/networks'; + import type { RootState } from './_store'; export const getApiState = (state: RootState) => state.app.apiState; export const getSelectedNetwork = (state: RootState) => state.app.selectedNetwork; +export const getInitializationError = (state: RootState) => state.app.initializationError; export const getSelectedDydxChainId = (state: RootState) => ENVIRONMENT_CONFIG_MAP[state.app.selectedNetwork].dydxChainId as DydxChainId; diff --git a/src/state/assetsSelectors.ts b/src/state/assetsSelectors.ts index 9d4b8e3fb..196b460cb 100644 --- a/src/state/assetsSelectors.ts +++ b/src/state/assetsSelectors.ts @@ -1,5 +1,4 @@ import type { RootState } from './_store'; - import { getCurrentMarketData } from './perpetualsSelectors'; /** diff --git a/src/state/configs.ts b/src/state/configs.ts index d4e797788..3117486a5 100644 --- a/src/state/configs.ts +++ b/src/state/configs.ts @@ -1,5 +1,5 @@ -import { createSlice, type PayloadAction } from '@reduxjs/toolkit'; import type { kollections } from '@dydxprotocol/v4-abacus'; +import { createSlice, type PayloadAction } from '@reduxjs/toolkit'; import type { Configs, FeeDiscount, FeeTier, NetworkConfigs, Nullable } from '@/constants/abacus'; import { LocalStorageKey } from '@/constants/localStorage'; @@ -23,6 +23,11 @@ export enum AppColorMode { RedUp = 'RedUp', } +export enum OtherPreference { + DisplayAllMarketsDefault = 'DisplayAllMarketsDefault', + GasToken = 'GasToken', +} + export interface ConfigsState { appThemeSetting: AppThemeSetting; appColorMode: AppColorMode; @@ -30,6 +35,7 @@ export interface ConfigsState { feeDiscounts?: FeeDiscount[]; network?: NetworkConfigs; hasSeenLaunchIncentives: boolean; + defaultToAllMarketsInPositionsOrdersFills: boolean; } const initialState: ConfigsState = { @@ -48,12 +54,26 @@ const initialState: ConfigsState = { key: LocalStorageKey.HasSeenLaunchIncentives, defaultValue: false, }), + defaultToAllMarketsInPositionsOrdersFills: getLocalStorage({ + key: LocalStorageKey.DefaultToAllMarketsInPositionsOrdersFills, + defaultValue: true, + }), }; export const configsSlice = createSlice({ name: 'Inputs', initialState, reducers: { + setDefaultToAllMarketsInPositionsOrdersFills: ( + state: ConfigsState, + { payload }: PayloadAction<boolean> + ) => { + setLocalStorage({ + key: LocalStorageKey.DefaultToAllMarketsInPositionsOrdersFills, + value: payload, + }); + state.defaultToAllMarketsInPositionsOrdersFills = payload; + }, setAppThemeSetting: (state: ConfigsState, { payload }: PayloadAction<AppThemeSetting>) => { setLocalStorage({ key: LocalStorageKey.SelectedTheme, value: payload }); state.appThemeSetting = payload; @@ -73,5 +93,10 @@ export const configsSlice = createSlice({ }, }); -export const { setAppThemeSetting, setAppColorMode, setConfigs, markLaunchIncentivesSeen } = - configsSlice.actions; +export const { + setDefaultToAllMarketsInPositionsOrdersFills, + setAppThemeSetting, + setAppColorMode, + setConfigs, + markLaunchIncentivesSeen, +} = configsSlice.actions; diff --git a/src/state/configsSelectors.ts b/src/state/configsSelectors.ts index 25cc4d158..3ac7b1bdb 100644 --- a/src/state/configsSelectors.ts +++ b/src/state/configsSelectors.ts @@ -1,5 +1,5 @@ import type { RootState } from './_store'; -import { AppTheme, AppThemeSystemSetting, AppThemeSetting } from './configs'; +import { AppTheme, AppThemeSetting, AppThemeSystemSetting } from './configs'; export const getAppThemeSetting = (state: RootState): AppThemeSetting => state.configs.appThemeSetting; @@ -23,3 +23,6 @@ export const getFeeDiscounts = (state: RootState) => state.configs.feeDiscounts; export const getHasSeenLaunchIncentives = (state: RootState) => state.configs.hasSeenLaunchIncentives; + +export const getDefaultToAllMarketsInPositionsOrdersFills = (state: RootState) => + state.configs.defaultToAllMarketsInPositionsOrdersFills; diff --git a/src/state/inputs.ts b/src/state/inputs.ts index c168c12af..13dd45bc2 100644 --- a/src/state/inputs.ts +++ b/src/state/inputs.ts @@ -2,14 +2,14 @@ import { createSlice, type PayloadAction } from '@reduxjs/toolkit'; import assign from 'lodash/assign'; import type { + ClosePositionInputs, InputError, Inputs, Nullable, TradeInputs, - ClosePositionInputs, TransferInputs, + TriggerOrdersInputs, } from '@/constants/abacus'; - import { CLEARED_SIZE_INPUTS, CLEARED_TRADE_INPUTS } from '@/constants/trade'; type TradeFormInputs = typeof CLEARED_TRADE_INPUTS & typeof CLEARED_SIZE_INPUTS; @@ -20,6 +20,7 @@ export interface InputsState { tradeFormInputs: TradeFormInputs; tradeInputs?: Nullable<TradeInputs>; closePositionInputs?: Nullable<ClosePositionInputs>; + triggerOrdersInputs?: Nullable<TriggerOrdersInputs>; transferInputs?: Nullable<TransferInputs>; } @@ -39,7 +40,8 @@ export const inputsSlice = createSlice({ initialState, reducers: { setInputs: (state, action: PayloadAction<Nullable<Inputs>>) => { - const { current, errors, trade, closePosition, transfer } = action.payload || {}; + const { current, errors, trade, closePosition, transfer, triggerOrders } = + action.payload ?? {}; return { ...state, @@ -51,6 +53,7 @@ export const inputsSlice = createSlice({ ...transfer, isCctp: !!transfer?.isCctp, } as Nullable<TransferInputs>, + triggerOrdersInputs: triggerOrders, }; }, diff --git a/src/state/inputsSelectors.ts b/src/state/inputsSelectors.ts index 5b88f64b9..ba3672335 100644 --- a/src/state/inputsSelectors.ts +++ b/src/state/inputsSelectors.ts @@ -27,6 +27,17 @@ export const getTradeSide = (state: RootState) => state.inputs.tradeInputs?.side */ export const getInputTradeOptions = (state: RootState) => state.inputs.tradeInputs?.options; +/** + * @returns The selected MarginMode in TradeInputs. 'CROSS' or 'ISOLATED' + */ +export const getInputTradeMarginMode = (state: RootState) => state.inputs.tradeInputs?.marginMode; + +/** + * @returns The specified targetLeverage for the next placed order + */ +export const getInputTradeTargetLeverage = (state: RootState) => + state.inputs.tradeInputs?.targetLeverage; + /** * @param state * @returns ValidationErrors of the current Input type (Trade or Transfer) @@ -35,7 +46,7 @@ export const getInputErrors = (state: RootState) => state.inputs.inputErrors; /** * @param state - * @returns trade or closePosition transfer, depending on which form was last edited. + * @returns trade, closePosition, transfer, or triggerOrders depending on which form was last edited. */ export const getCurrentInput = (state: RootState) => state.inputs.current; @@ -57,6 +68,12 @@ export const getClosePositionInputErrors = (state: RootState) => { return currentInput === 'closePosition' ? getInputErrors(state) : []; }; +/** + * @param state + * @returns ClosePositionInputs + */ +export const getInputClosePositionData = (state: RootState) => state.inputs.closePositionInputs; + /** * @param state * @returns input errors for Transfer @@ -74,9 +91,18 @@ export const getTransferInputs = (state: RootState) => state.inputs.transferInpu /** * @param state - * @returns ClosePositionInputs + * @returns input errors for TriggerOrders */ -export const getInputClosePositionData = (state: RootState) => state.inputs.closePositionInputs; +export const getTriggerOrdersInputErrors = (state: RootState) => { + const currentInput = state.inputs.current; + return currentInput === 'triggerOrders' ? getInputErrors(state) : []; +}; + +/** + * @param state + * @returns TriggerOrdersInputs + */ +export const getTriggerOrdersInputs = (state: RootState) => state.inputs.triggerOrdersInputs; /** * @returns Data needed for the TradeForm (price, size, summary, input render options, and errors/input validation) @@ -86,7 +112,7 @@ export const useTradeFormData = () => { createSelector( [getInputTradeData, getInputTradeOptions, getTradeInputErrors], (tradeData, tradeOptions, tradeErrors) => { - const { price, size, summary } = tradeData || {}; + const { price, size, summary } = tradeData ?? {}; const { needsLimitPrice, @@ -99,7 +125,7 @@ export const useTradeFormData = () => { postOnlyTooltip, reduceOnlyTooltip, timeInForceOptions, - } = tradeOptions || {}; + } = tradeOptions ?? {}; return { price, diff --git a/src/state/layoutSelectors.ts b/src/state/layoutSelectors.ts index a17002a21..e7841cf26 100644 --- a/src/state/layoutSelectors.ts +++ b/src/state/layoutSelectors.ts @@ -1,4 +1,5 @@ import { TradeLayouts } from '@/constants/layout'; + import type { RootState } from './_store'; /** diff --git a/src/state/localization.ts b/src/state/localization.ts index b7cbefbe4..1a525613d 100644 --- a/src/state/localization.ts +++ b/src/state/localization.ts @@ -1,5 +1,5 @@ -import { createSlice } from '@reduxjs/toolkit'; import type { PayloadAction } from '@reduxjs/toolkit'; +import { createSlice } from '@reduxjs/toolkit'; import { EN_LOCALE_DATA, LocaleData, SupportedLocales } from '@/constants/localization'; diff --git a/src/state/localizationMiddleware.ts b/src/state/localizationMiddleware.ts index db30e92a8..09f188000 100644 --- a/src/state/localizationMiddleware.ts +++ b/src/state/localizationMiddleware.ts @@ -1,17 +1,17 @@ -import type { PayloadAction } from '@reduxjs/toolkit'; import { LOCALE_DATA, NOTIFICATIONS, SupportedLocale, TOOLTIPS, } from '@dydxprotocol/v4-localization'; +import type { PayloadAction } from '@reduxjs/toolkit'; +import { LocalStorageKey } from '@/constants/localStorage'; import { - type LocaleData, SUPPORTED_BASE_TAGS_LOCALE_MAPPING, SupportedLocales, + type LocaleData, } from '@/constants/localization'; -import { LocalStorageKey } from '@/constants/localStorage'; import { initializeLocalization } from '@/state/app'; import { setLocaleData, setLocaleLoaded, setSelectedLocale } from '@/state/localization'; diff --git a/src/state/localizationSelectors.ts b/src/state/localizationSelectors.ts index 7981b204b..94977a76b 100644 --- a/src/state/localizationSelectors.ts +++ b/src/state/localizationSelectors.ts @@ -1,7 +1,12 @@ -import { createSelector } from 'reselect'; import _ from 'lodash'; +import { createSelector } from 'reselect'; -import { EN_LOCALE_DATA, LocaleData, SupportedLocales } from '@/constants/localization'; +import { + EN_LOCALE_DATA, + LocaleData, + StringGetterFunction, + SupportedLocales, +} from '@/constants/localization'; import formatString from '@/lib/formatString'; @@ -31,18 +36,23 @@ export const getSelectedLocale = (state: RootState): SupportedLocales => * @param state * @returns */ -export const getStringGetterForLocaleData = (localeData: LocaleData) => { - return ({ - key, - params = {}, - }: { - key: any; - params?: { [key: string]: string | React.ReactNode }; - }): string | Array<string | React.ReactNode> => { +export const getStringGetterForLocaleData = ( + localeData: LocaleData, + isLocaleLoaded: boolean +): StringGetterFunction => { + // @ts-expect-error TODO: formatString return doesn't match StringGetterFunction + return (props) => { // Fallback to english whenever a key doesn't exist for other languages - const formattedString: string = _.get(localeData, key) || _.get(EN_LOCALE_DATA, key) || ''; + if (isLocaleLoaded) { + const formattedString: string = + localeData || EN_LOCALE_DATA + ? _.get(localeData, props.key) || _.get(EN_LOCALE_DATA, props.key) + : ''; + + return formatString(formattedString, props?.params); + } - return formatString(formattedString, params); + return ''; }; }; @@ -51,6 +61,6 @@ export const getStringGetterForLocaleData = (localeData: LocaleData) => { * @returns */ export const getLocaleStringGetter = createSelector( - [getSelectedLocaleData], + [getSelectedLocaleData, getIsLocaleLoaded], getStringGetterForLocaleData ); diff --git a/src/state/notifications.ts b/src/state/notifications.ts index 3f2ba4c83..86b0b68e3 100644 --- a/src/state/notifications.ts +++ b/src/state/notifications.ts @@ -1,5 +1,5 @@ -import { createSlice } from '@reduxjs/toolkit'; import type { PayloadAction } from '@reduxjs/toolkit'; +import { createSlice } from '@reduxjs/toolkit'; import { AbacusNotification } from '@/constants/abacus'; diff --git a/src/state/perpetuals.ts b/src/state/perpetuals.ts index 4a9f675ae..d49f3d4e7 100644 --- a/src/state/perpetuals.ts +++ b/src/state/perpetuals.ts @@ -1,17 +1,16 @@ -import merge from 'lodash/merge'; import { createSlice, type PayloadAction } from '@reduxjs/toolkit'; +import merge from 'lodash/merge'; import type { + MarketHistoricalFunding, MarketOrderbook, MarketTrade, Nullable, PerpetualMarket, - MarketHistoricalFunding, } from '@/constants/abacus'; - import { Candle, RESOLUTION_MAP } from '@/constants/candles'; import { LocalStorageKey } from '@/constants/localStorage'; -import { DEFAULT_MARKETID } from '@/constants/markets'; +import { DEFAULT_MARKETID, MarketFilters } from '@/constants/markets'; import { getLocalStorage } from '@/lib/localStorage'; import { processOrderbookToCreateMap } from '@/lib/orderbookHelpers'; @@ -35,6 +34,7 @@ export interface PerpetualsState { } >; historicalFundings: Record<string, MarketHistoricalFunding[]>; + marketFilter: MarketFilters; } const initialState: PerpetualsState = { @@ -45,6 +45,7 @@ const initialState: PerpetualsState = { orderbooks: undefined, orderbooksMap: undefined, historicalFundings: {}, + marketFilter: MarketFilters.ALL, }; const MAX_NUM_LIVE_TRADES = 100; @@ -53,6 +54,9 @@ export const perpetualsSlice = createSlice({ name: 'Perpetuals', initialState, reducers: { + setMarketFilter: (state: PerpetualsState, action: PayloadAction<MarketFilters>) => { + state.marketFilter = action.payload; + }, setCurrentMarketId: (state: PerpetualsState, action: PayloadAction<string>) => { state.currentMarketId = action.payload; }, @@ -164,4 +168,5 @@ export const { setTvChartResolution, setHistoricalFundings, resetPerpetualsState, + setMarketFilter, } = perpetualsSlice.actions; diff --git a/src/state/perpetualsCalculators.ts b/src/state/perpetualsCalculators.ts index 09fa68cf8..be6756725 100644 --- a/src/state/perpetualsCalculators.ts +++ b/src/state/perpetualsCalculators.ts @@ -1,14 +1,13 @@ import { createSelector } from 'reselect'; +import type { MarketHistoricalFunding } from '@/constants/abacus'; import { FundingDirection } from '@/constants/markets'; import { - getCurrentMarketNextFundingRate, getCurrentMarketHistoricalFundings, + getCurrentMarketNextFundingRate, } from '@/state/perpetualsSelectors'; -import type { MarketHistoricalFunding } from '@/constants/abacus'; - export const calculateFundingRateHistory = createSelector( [getCurrentMarketHistoricalFundings, getCurrentMarketNextFundingRate], (historicalFundings, nextFundingRate) => { diff --git a/src/state/perpetualsSelectors.ts b/src/state/perpetualsSelectors.ts index f83fe78c8..e04e440c6 100644 --- a/src/state/perpetualsSelectors.ts +++ b/src/state/perpetualsSelectors.ts @@ -6,6 +6,11 @@ import { mapCandle } from '@/lib/tradingView/utils'; import type { RootState } from './_store'; +/** + * @returns current market filter applied inside the markets page + */ +export const getMarketFilter = (state: RootState) => state.perpetuals.marketFilter; + /** * @returns marketId of the market the user is currently viewing */ @@ -15,7 +20,7 @@ export const getCurrentMarketId = (state: RootState) => state.perpetuals.current * @returns assetId of the currentMarket */ export const getCurrentMarketAssetId = (state: RootState) => { - const currentMarketId = getCurrentMarketId(state) || ''; + const currentMarketId = getCurrentMarketId(state) ?? ''; return state.perpetuals?.markets?.[currentMarketId]?.assetId; }; @@ -81,7 +86,7 @@ export const getOrderbooks = (state: RootState) => state.perpetuals.orderbooks; export const getCurrentMarketOrderbook = (state: RootState) => { const orderbookData = getOrderbooks(state); const currentMarketId = getCurrentMarketId(state); - return orderbookData?.[currentMarketId || '']; + return orderbookData?.[currentMarketId ?? '']; }; /** @@ -90,7 +95,7 @@ export const getCurrentMarketOrderbook = (state: RootState) => { export const getCurrentMarketOrderbookMap = (state: RootState) => { const orderbookMap = state.perpetuals.orderbooksMap; const currentMarketId = getCurrentMarketId(state); - return orderbookMap?.[currentMarketId || '']; + return orderbookMap?.[currentMarketId ?? '']; }; /** @@ -159,3 +164,10 @@ export const getCurrentMarketNextFundingRate = createSelector( [getCurrentMarketData], (marketData) => marketData?.perpetual?.nextFundingRate ); + +/** + * @param marketId + * @returns sparkline data for specified marketId + */ +export const getPerpetualMarketSparklineData = (marketId: string) => (state: RootState) => + getPerpetualMarkets(state)?.[marketId]?.perpetual?.line?.toArray() ?? []; diff --git a/src/styles/formMixins.ts b/src/styles/formMixins.ts index 841b4f26b..cb955c816 100644 --- a/src/styles/formMixins.ts +++ b/src/styles/formMixins.ts @@ -5,8 +5,8 @@ import { type ThemeProps, } from 'styled-components'; -import { layoutMixins } from './layoutMixins'; import breakpoints from './breakpoints'; +import { layoutMixins } from './layoutMixins'; export const formMixins: Record< string, diff --git a/src/styles/globalStyle.ts b/src/styles/globalStyle.ts index 6038aa6d6..8395ba4d9 100644 --- a/src/styles/globalStyle.ts +++ b/src/styles/globalStyle.ts @@ -3,9 +3,12 @@ import { createGlobalStyle } from 'styled-components'; export const GlobalStyle = createGlobalStyle` :root { --color-white: ${({ theme }) => theme.white}; + --color-black: ${({ theme }) => theme.black}; --color-green: ${({ theme }) => theme.green}; --color-red: ${({ theme }) => theme.red}; + --color-white-faded: ${({ theme }) => theme.whiteFaded}; + --color-layer-0: ${({ theme }) => theme.layer0}; --color-layer-1: ${({ theme }) => theme.layer1}; --color-layer-2: ${({ theme }) => theme.layer2}; diff --git a/src/styles/layoutMixins.ts b/src/styles/layoutMixins.ts index fdc2be43e..943652c2b 100644 --- a/src/styles/layoutMixins.ts +++ b/src/styles/layoutMixins.ts @@ -6,10 +6,207 @@ import { type ThemeProps, } from 'styled-components'; -export const layoutMixins: Record< - string, - FlattenSimpleInterpolation | FlattenInterpolation<ThemeProps<any>> -> = { +const withOuterBorder = css` + box-shadow: 0 0 0 var(--border-width) var(--border-color); +`; + +// A standalone column (shrinks to fit container) +const flexColumn = css` + display: flex; + flex-direction: column; + min-width: 0; +`; + +// A content container column +const contentContainer = css` + /* Params */ + --content-container-width: 100%; + --content-max-width: 100%; + + /* Overrides */ + --bordered-content-outer-container-width: var(--content-container-width); + --bordered-content-max-width: var(--content-max-width); + + /* Rules */ + ${() => flexColumn} + isolation: isolate; + /* $ {() => layoutMixins.scrollArea} */ +`; + +// Use as a descendant of layoutMixins.scrollArea +const scrollSnapItem = css` + scroll-snap-align: start; + + scroll-margin-top: var(--stickyArea-totalInsetTop); + scroll-margin-bottom: var(--stickyArea-totalInsetBottom); + scroll-margin-left: var(--stickyArea-totalInsetLeft); + scroll-margin-right: var(--stickyArea-totalInsetRight); +`; + +// Creates a scrollable container that can contain sticky and/or scroll-snapped descendants. +const scrollArea = css` + /* Params */ + --scrollArea-height: 100%; + --scrollArea-width: 100%; + + /* Rules */ + + isolation: isolate; + + height: var(--scrollArea-height); + + position: relative; + overflow: auto; + + /* scroll-snap-type: both proximity; */ + + @media (prefers-reduced-motion: no-preference) { + scroll-behavior: smooth; + } +`; + +// Use within contentContainer or contentContainerPage +const contentSection = css` + ${() => scrollSnapItem} +`; + +// Section that defines its own horizontal scrollArea and does not scroll with the outer scrollArea +// Use within contentContainer or contentContainerPage +const contentSectionDetached = css` + ${() => contentSection} + ${() => stickyLeft} + + max-width: min(var(--content-container-width), var(--content-max-width)); + transition: max-width 0.3s var(--ease-out-expo); +`; + +// An item within a horizontally scrollable container that is unaffected by the horizontal scroll position. +// Use when a sibling is horizontally overflowing (e.g. a table with many columns). +const stickyLeft = css` + z-index: 1; + + position: sticky; + left: var(--stickyArea-totalInsetLeft, 0px); + + transition: left 0.3s var(--ease-out-expo); +`; + +const sticky = css` + /* Params */ + --stickyArea-totalInsetTop: ; + --stickyArea-totalInsetBottom: ; + --stickyArea-totalInsetLeft: ; + --stickyArea-totalInsetRight: ; + + z-index: 1; + + position: sticky; + inset: 0; + top: var(--stickyArea-totalInsetTop, 0px); + bottom: var(--stickyArea-totalInsetBottom, 0px); + left: var(--stickyArea-totalInsetLeft, 0px); + right: var(--stickyArea-totalInsetRight, 0px); + + backdrop-filter: blur(10px); +`; + +/** + * A container for positioning sticky items using simulated padding, width, height and gap properties. + * Use on layoutMixins.scrollArea or as a descendant of layoutMixins.scrollArea + */ +const stickyArea = css` + /* Params */ + --stickyArea-paddingTop: ; + --stickyArea-height: var(--scrollArea-height, 100%); + --stickyArea-topHeight: ; + --stickyArea-topGap: ; + --stickyArea-bottomGap: ; + --stickyArea-paddingBottom: ; + --stickyArea-bottomHeight: ; + --stickyArea-paddingLeft: ; + + --stickyArea-width: var(--scrollArea-width, 100%); + --stickyArea-leftWidth: ; + --stickyArea-leftGap: ; + --stickyArea-paddingRight: ; + --stickyArea-rightGap: ; + --stickyArea-rightWidth: ; + + --stickyArea-background: ; + + /* Computed */ + --stickyArea-totalInsetTop: var(--stickyArea-paddingTop); + --stickyArea-totalInsetBottom: var(--stickyArea-paddingBottom); + --stickyArea-innerHeight: calc( + var(--stickyArea-height, 100%) - + ( + var(--stickyArea-paddingTop, 0px) + var(--stickyArea-topHeight, 0px) + + var(--stickyArea-topGap, 0px) + ) - + ( + var(--stickyArea-paddingBottom, 0px) + var(--stickyArea-bottomHeight, 0px) + + var(--stickyArea-bottomGap, 0px) + ) + ); + + --stickyArea-totalInsetLeft: var(--stickyArea-paddingLeft); + --stickyArea-totalInsetRight: var(--stickyArea-paddingRight); + --stickyArea-innerWidth: calc( + var(--stickyArea-width, 100%) - + ( + var(--stickyArea-paddingLeft, 0px) + var(--stickyArea-leftWidth, 0px) + + var(--stickyArea-leftGap, 0px) + ) - + ( + var(--stickyArea-paddingRight, 0px) + var(--stickyArea-rightWidth, 0px) + + var(--stickyArea-rightGap, 0px) + ) + ); + + /* Rules */ + /* scroll-padding-top: var(--stickyArea-topHeight); +scroll-padding-bottom: var(--stickyArea-bottomHeight); */ + /* scroll-padding-top: var(--stickyArea-totalInsetTop); +scroll-padding-bottom: var(--stickyArea-totalInsetBottom); */ + /* scroll-padding-block-end: 4rem; */ + + /* Firefox: opaque background required for backdrop-filter to work */ + background: var(--stickyArea-background, var(--color-layer-2)); +`; + +// Use as a descendant of layoutMixins.stickyArea +const stickyFooter = css` + ${() => sticky} + min-height: var(--stickyArea-bottomHeight); + flex-shrink: 0; + + ${() => scrollSnapItem} +`; + +// Use with layoutMixins.stickyFooter +const withStickyFooterBackdrop = css` + /* Params */ + --stickyFooterBackdrop-outsetY: ; + --stickyFooterBackdrop-outsetX: ; + + /* Rules */ + backdrop-filter: none; + + &:before { + content: ''; + + z-index: -1; + position: absolute; + inset: calc(-1 * var(--stickyFooterBackdrop-outsetY, 0px)) + calc(-1 * var(--stickyFooterBackdrop-outsetX, 0px)); + + background: linear-gradient(transparent, var(--stickyArea-background)); + + pointer-events: none; + } +`; + +export const layoutMixins = { // A standalone row row: css` display: flex; @@ -39,12 +236,7 @@ export const layoutMixins: Record< grid-template-columns: minmax(0, 1fr); `, - // A standalone column (shrinks to fit container) - flexColumn: css` - display: flex; - flex-direction: column; - min-width: 0; - `, + flexColumn, // A column as a child of a row rowColumn: css` @@ -53,6 +245,11 @@ export const layoutMixins: Record< min-width: max-content; `, + flexWrap: css` + display: flex; + flex-wrap: wrap; + `, + // A column with a fixed header and expanding content expandingColumnWithHeader: css` // Expand if within a flexColumn @@ -168,7 +365,7 @@ export const layoutMixins: Record< inset: 0; background: inherit; - ${() => layoutMixins.withOuterBorder} + ${() => withOuterBorder} pointer-events: none; } @@ -209,26 +406,12 @@ export const layoutMixins: Record< } */ `, - // A content container column - contentContainer: css` - /* Params */ - --content-container-width: 100%; - --content-max-width: 100%; - - /* Overrides */ - --bordered-content-outer-container-width: var(--content-container-width); - --bordered-content-max-width: var(--content-max-width); - - /* Rules */ - ${() => layoutMixins.flexColumn} - isolation: isolate; - /* $ {() => layoutMixins.scrollArea} */ - `, + contentContainer, // A content container with dynamic padding and children with a max width of --content-max-width contentContainerPage: css` /* Overrides */ - ${() => layoutMixins.contentContainer} + ${() => contentContainer} --content-container-width: 100vw; --content-max-width: var(--default-page-content-max-width); @@ -241,8 +424,7 @@ export const layoutMixins: Record< ); /* Rules */ - ${() => layoutMixins.stickyHeaderArea} - ${() => layoutMixins.scrollSnapItem} + ${() => scrollSnapItem} min-height: 100%; /* height: max-content; */ @@ -258,65 +440,28 @@ export const layoutMixins: Record< `, // Section - // Use within contentContainer or contentContainerPage - contentSection: css` - ${() => layoutMixins.scrollSnapItem} - `, + contentSection, // Section containing horizontally-overflowing content that scrolls with the outer scrollArea // Use within contentContainer or contentContainerPage contentSectionAttached: css` - ${() => layoutMixins.contentSection} + ${() => contentSection} min-width: max-content; /* max-width: none; */ `, - // Section that defines its own horizontal scrollArea and does not scroll with the outer scrollArea - // Use within contentContainer or contentContainerPage - contentSectionDetached: css` - ${() => layoutMixins.contentSection} - ${() => layoutMixins.stickyLeft} - - max-width: min(var(--content-container-width), var(--content-max-width)); - transition: max-width 0.3s var(--ease-out-expo); - `, + contentSectionDetached, // Section that defines its own horizontal scrollArea and does not scroll with the outer scrollArea // Use within contentContainer or contentContainerPage contentSectionDetachedScrollable: css` - ${() => layoutMixins.contentSectionDetached} - ${() => layoutMixins.scrollArea} + ${() => contentSectionDetached} + ${() => scrollArea} `, - sticky: css` - /* Params */ - --stickyArea-totalInsetTop: ; - --stickyArea-totalInsetBottom: ; - --stickyArea-totalInsetLeft: ; - --stickyArea-totalInsetRight: ; + sticky, - z-index: 1; - - position: sticky; - inset: 0; - top: var(--stickyArea-totalInsetTop, 0px); - bottom: var(--stickyArea-totalInsetBottom, 0px); - left: var(--stickyArea-totalInsetLeft, 0px); - right: var(--stickyArea-totalInsetRight, 0px); - - backdrop-filter: blur(10px); - `, - - // An item within a horizontally scrollable container that is unaffected by the horizontal scroll position. - // Use when a sibling is horizontally overflowing (e.g. a table with many columns). - stickyLeft: css` - z-index: 1; - - position: sticky; - left: var(--stickyArea-totalInsetLeft, 0px); - - transition: left 0.3s var(--ease-out-expo); - `, + stickyLeft, stickyRight: css` z-index: 1; @@ -327,91 +472,9 @@ export const layoutMixins: Record< transition: right 0.3s var(--ease-out-expo); `, - // Creates a scrollable container that can contain sticky and/or scroll-snapped descendants. - scrollArea: css` - /* Params */ - --scrollArea-height: 100%; - --scrollArea-width: 100%; - - /* Rules */ - - isolation: isolate; - - height: var(--scrollArea-height); - - position: relative; - overflow: auto; - - /* scroll-snap-type: both proximity; */ - - @media (prefers-reduced-motion: no-preference) { - scroll-behavior: smooth; - } - `, - - /** - * A container for positioning sticky items using simulated padding, width, height and gap properties. - * Use on layoutMixins.scrollArea or as a descendant of layoutMixins.scrollArea - */ - stickyArea: css` - /* Params */ - --stickyArea-paddingTop: ; - --stickyArea-height: var(--scrollArea-height, 100%); - --stickyArea-topHeight: ; - --stickyArea-topGap: ; - --stickyArea-bottomGap: ; - --stickyArea-paddingBottom: ; - --stickyArea-bottomHeight: ; - --stickyArea-paddingLeft: ; - - --stickyArea-width: var(--scrollArea-width, 100%); - --stickyArea-leftWidth: ; - --stickyArea-leftGap: ; - --stickyArea-paddingRight: ; - --stickyArea-rightGap: ; - --stickyArea-rightWidth: ; - - --stickyArea-background: ; - - /* Computed */ - --stickyArea-totalInsetTop: var(--stickyArea-paddingTop); - --stickyArea-totalInsetBottom: var(--stickyArea-paddingBottom); - --stickyArea-innerHeight: calc( - var(--stickyArea-height, 100%) - - ( - var(--stickyArea-paddingTop, 0px) + var(--stickyArea-topHeight, 0px) + - var(--stickyArea-topGap, 0px) - ) - - ( - var(--stickyArea-paddingBottom, 0px) + var(--stickyArea-bottomHeight, 0px) + - var(--stickyArea-bottomGap, 0px) - ) - ); - - --stickyArea-totalInsetLeft: var(--stickyArea-paddingLeft); - --stickyArea-totalInsetRight: var(--stickyArea-paddingRight); - --stickyArea-innerWidth: calc( - var(--stickyArea-width, 100%) - - ( - var(--stickyArea-paddingLeft, 0px) + var(--stickyArea-leftWidth, 0px) + - var(--stickyArea-leftGap, 0px) - ) - - ( - var(--stickyArea-paddingRight, 0px) + var(--stickyArea-rightWidth, 0px) + - var(--stickyArea-rightGap, 0px) - ) - ); + scrollArea, - /* Rules */ - /* scroll-padding-top: var(--stickyArea-topHeight); - scroll-padding-bottom: var(--stickyArea-bottomHeight); */ - /* scroll-padding-top: var(--stickyArea-totalInsetTop); - scroll-padding-bottom: var(--stickyArea-totalInsetBottom); */ - /* scroll-padding-block-end: 4rem; */ - - /* Firefox: opaque background required for backdrop-filter to work */ - background: var(--stickyArea-background, var(--color-layer-2)); - `, + stickyArea, /** * A sticky area that may contain nested sticky areas. @@ -445,7 +508,7 @@ export const layoutMixins: Record< --stickyArea0-totalInsetRight: var(--stickyArea0-paddingRight); /* Rules */ - ${() => layoutMixins.stickyArea} + ${() => stickyArea} --stickyArea-height: var(--stickyArea0-height); --stickyArea-totalInsetTop: var(--stickyArea0-totalInsetTop); @@ -531,7 +594,7 @@ export const layoutMixins: Record< ); /* Rules */ - ${() => layoutMixins.stickyArea} + ${() => stickyArea} --stickyArea-height: var(--stickyArea1-height); --stickyArea-totalInsetTop: var(--stickyArea1-totalInsetTop); @@ -616,7 +679,7 @@ export const layoutMixins: Record< ); /* Rules */ - ${() => layoutMixins.stickyArea} + ${() => stickyArea} --stickyArea-height: var(--stickyArea2-height); --stickyArea-totalInsetTop: var(--stickyArea2-totalInsetTop); @@ -701,7 +764,7 @@ export const layoutMixins: Record< ); /* Rules */ - ${() => layoutMixins.stickyArea} + ${() => stickyArea} --stickyArea-height: var(--stickyArea3-height); --stickyArea-totalInsetTop: var(--stickyArea3-totalInsetTop); @@ -730,58 +793,20 @@ export const layoutMixins: Record< // Use as a descendant of layoutMixins.stickyArea stickyHeader: css` - ${() => layoutMixins.sticky} + ${() => sticky} min-height: var(--stickyArea-topHeight); flex-shrink: 0; - ${() => layoutMixins.scrollSnapItem} + ${() => scrollSnapItem} `, - // Use as a descendant of layoutMixins.stickyArea - stickyFooter: css` - ${() => layoutMixins.sticky} - min-height: var(--stickyArea-bottomHeight); - flex-shrink: 0; + stickyFooter, - ${() => layoutMixins.scrollSnapItem} - `, + scrollSnapItem, - // Use as a descendant of layoutMixins.scrollArea - scrollSnapItem: css` - scroll-snap-align: start; - - scroll-margin-top: var(--stickyArea-totalInsetTop); - scroll-margin-bottom: var(--stickyArea-totalInsetBottom); - scroll-margin-left: var(--stickyArea-totalInsetLeft); - scroll-margin-right: var(--stickyArea-totalInsetRight); - `, - - // Use with layoutMixins.stickyFooter - withStickyFooterBackdrop: css` - /* Params */ - --stickyFooterBackdrop-outsetY: ; - --stickyFooterBackdrop-outsetX: ; - - /* Rules */ - backdrop-filter: none; + withStickyFooterBackdrop, - &:before { - content: ''; - - z-index: -1; - position: absolute; - inset: calc(-1 * var(--stickyFooterBackdrop-outsetY, 0px)) - calc(-1 * var(--stickyFooterBackdrop-outsetX, 0px)); - - background: linear-gradient(transparent, var(--stickyArea-background)); - - pointer-events: none; - } - `, - - withOuterBorder: css` - box-shadow: 0 0 0 var(--border-width) var(--border-color); - `, + withOuterBorder, // Show "borders" between and around grid/flex items using gap + box-shadow // Apply to element with display: grid or display: flex @@ -792,7 +817,7 @@ export const layoutMixins: Record< gap: var(--border-width); > * { - ${() => layoutMixins.withOuterBorder} + ${() => withOuterBorder} } `, @@ -845,7 +870,7 @@ export const layoutMixins: Record< inset: 0; border-radius: var(--computed-radius); - ${() => layoutMixins.withOuterBorder} + ${() => withOuterBorder} pointer-events: none; } @@ -897,8 +922,8 @@ export const layoutMixins: Record< align-items: start; > :last-child { - ${() => layoutMixins.stickyFooter} - ${() => layoutMixins.withStickyFooterBackdrop} + ${() => stickyFooter} + ${() => withStickyFooterBackdrop} } `, @@ -916,4 +941,4 @@ export const layoutMixins: Record< min-height: 100%; place-items: center; `, -}; +} satisfies Record<string, FlattenSimpleInterpolation | FlattenInterpolation<ThemeProps<any>>>; diff --git a/src/styles/popoverMixins.ts b/src/styles/popoverMixins.ts index 4945d2ae2..b269d3ef1 100644 --- a/src/styles/popoverMixins.ts +++ b/src/styles/popoverMixins.ts @@ -1,4 +1,10 @@ -import { css, keyframes } from 'styled-components'; +import { + FlattenInterpolation, + FlattenSimpleInterpolation, + ThemeProps, + css, + keyframes, +} from 'styled-components'; import { layoutMixins } from './layoutMixins'; @@ -236,4 +242,4 @@ export const popoverMixins = { color: var(--item-checked-textColor, var(--trigger-textColor, inherit)); } `, -}; +} satisfies Record<string, FlattenSimpleInterpolation | FlattenInterpolation<ThemeProps<any>>>; diff --git a/src/styles/styled.d.ts b/src/styles/styled.d.ts new file mode 100644 index 000000000..d28135ee8 --- /dev/null +++ b/src/styles/styled.d.ts @@ -0,0 +1,5 @@ +import { ThemeColorBase } from '@/constants/styles/colors'; + +declare module 'styled-components' { + export interface DefaultTheme extends ThemeColorBase {} +} diff --git a/src/styles/tableMixins.ts b/src/styles/tableMixins.ts index 0b9e5b40c..9e84ceaee 100644 --- a/src/styles/tableMixins.ts +++ b/src/styles/tableMixins.ts @@ -16,7 +16,10 @@ export const tableMixins: Record< ${layoutMixins.row} gap: 0.5em; - color: var(--color-text-1); + --primary-content-color: var(--color-text-1); + --secondary-content-color: var(--color-text-0); + + color: var(--primary-content-color); text-align: var(--table-cell-currentAlign); justify-content: var(--table-cell-currentAlign); `, @@ -24,16 +27,22 @@ export const tableMixins: Record< /** Use as a direct child of tableMixins.cellContent */ cellContentColumn: css` ${layoutMixins.rowColumn} + gap: 0.125rem; - color: var(--color-text-1); + color: var(--primary-content-color); > * { justify-content: var(--table-cell-currentAlign); } + `, + + cellContentColumnSecondary: css` + ${() => tableMixins.cellContentColumn} + gap: 0; > :nth-child(2) { font: var(--font-mini-book); - color: var(--color-text-0); + color: var(--secondary-content-color); margin-top: 0.125rem; } `, @@ -41,12 +50,13 @@ export const tableMixins: Record< /** Use as a direct child of <th> */ headerCellContent: css` ${() => tableMixins.cellContent} + gap: 0.25em; - color: var(--tableHeader-textColor, var(--color-text-0)); + color: var(--tableStickyRow-textColor, var(--color-text-0)); span:nth-child(2) { :before { - content: ' / '; + content: '| '; } } `, diff --git a/src/styles/text.css b/src/styles/text.css index 0710da26f..6a061bc60 100644 --- a/src/styles/text.css +++ b/src/styles/text.css @@ -1,7 +1,7 @@ /* Constants */ :root { - --fontFamily-base: "Satoshi", system-ui, -apple-system, Helvetica, Arial, sans-serif; + --fontFamily-base: 'Satoshi', system-ui, -apple-system, Helvetica, Arial, sans-serif; --fontFamily-monospace: Courier, monospace, var(--fontFamily-base); --fontWeight-base-0: 450; @@ -22,18 +22,20 @@ --fontWeight-regular: 400; --fontWeight-book: 450; --fontWeight-medium: 500; + --fontWeight-bold: 700; --font-tiny-regular: var(--fontWeight-regular) var(--fontSize-tiny) var(--fontFamily-base); --font-tiny-book: var(--fontWeight-book) var(--fontSize-tiny) var(--fontFamily-base); --font-tiny-medium: var(--fontWeight-medium) var(--fontSize-tiny) var(--fontFamily-base); - + --font-mini-regular: var(--fontWeight-regular) var(--fontSize-mini) var(--fontFamily-base); --font-mini-book: var(--fontWeight-book) var(--fontSize-mini) var(--fontFamily-base); --font-mini-medium: var(--fontWeight-medium) var(--fontSize-mini) var(--fontFamily-base); - + --font-small-regular: var(--fontWeight-regular) var(--fontSize-small) var(--fontFamily-base); --font-small-book: var(--fontWeight-book) var(--fontSize-small) var(--fontFamily-base); --font-small-medium: var(--fontWeight-medium) var(--fontSize-small) var(--fontFamily-base); + --font-small-bold: var(--fontWeight-bold) var(--fontSize-small) var(--fontFamily-base); --font-base-regular: var(--fontWeight-regular) var(--fontSize-base) var(--fontFamily-base); --font-base-book: var(--fontWeight-book) var(--fontSize-base) var(--fontFamily-base); @@ -50,7 +52,7 @@ --font-extra-regular: var(--fontWeight-regular) var(--fontSize-extra) var(--fontFamily-base); --font-extra-book: var(--fontWeight-book) var(--fontSize-extra) var(--fontFamily-base); --font-extra-medium: var(--fontWeight-medium) var(--fontSize-extra) var(--fontFamily-base); - + --fontFeature-monoNumbers: 'tnum' on, 'lnum' on, 'zero' 1; } diff --git a/src/styles/text.stories.tsx b/src/styles/text.stories.tsx index f78211b7d..a8b5c6730 100644 --- a/src/styles/text.stories.tsx +++ b/src/styles/text.stories.tsx @@ -1,5 +1,5 @@ import type { Story } from '@ladle/react'; -import styled, { type AnyStyledComponent } from 'styled-components'; +import styled from 'styled-components'; import { layoutMixins } from '@/styles/layoutMixins'; @@ -9,7 +9,7 @@ const FONT_SIZES = ['tiny', 'mini', 'small', 'base', 'medium', 'large', 'extra'] export const TextStory: Story = () => ( <StoryWrapper> - <Styled.Table> + <$Table> <thead> <tr> <th>Regular(-)</th> @@ -49,13 +49,10 @@ export const TextStory: Story = () => ( </tr> ))} </tbody> - </Styled.Table> + </$Table> </StoryWrapper> ); - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.Table = styled.table` +const $Table = styled.table` width: 100%; text-align: left; border-collapse: separate; diff --git a/src/styles/themes.ts b/src/styles/themes.ts index cf5d54bdf..ba939ad7e 100644 --- a/src/styles/themes.ts +++ b/src/styles/themes.ts @@ -1,13 +1,18 @@ -import { AppTheme, AppColorMode } from '@/state/configs'; -import type { Theme, ThemeColorBase } from '@/constants/styles/colors'; import { BrightnessFilterToken, ColorToken, OpacityToken } from '@/constants/styles/base'; +import type { Theme, ThemeColorBase } from '@/constants/styles/colors'; + +import { AppColorMode, AppTheme } from '@/state/configs'; + import { generateFadedColorVariant } from '@/lib/styles'; const ClassicThemeBase: ThemeColorBase = { + black: ColorToken.Black, white: ColorToken.White, green: ColorToken.Green1, red: ColorToken.Red2, + whiteFaded: generateFadedColorVariant(ColorToken.White, OpacityToken.Opacity16), + layer0: ColorToken.GrayBlue7, layer1: ColorToken.GrayBlue6, layer2: ColorToken.GrayBlue5, @@ -64,10 +69,13 @@ const ClassicThemeBase: ThemeColorBase = { }; const DarkThemeBase: ThemeColorBase = { + black: ColorToken.Black, white: ColorToken.White, green: ColorToken.Green0, red: ColorToken.Red0, + whiteFaded: generateFadedColorVariant(ColorToken.White, OpacityToken.Opacity16), + layer0: ColorToken.Black, layer1: ColorToken.DarkGray11, layer2: ColorToken.DarkGray13, @@ -124,10 +132,13 @@ const DarkThemeBase: ThemeColorBase = { }; const LightThemeBase: ThemeColorBase = { + black: ColorToken.Black, white: ColorToken.White, green: ColorToken.Green2, red: ColorToken.Red1, + whiteFaded: generateFadedColorVariant(ColorToken.White, OpacityToken.Opacity16), + layer0: ColorToken.White, layer1: ColorToken.LightGray6, layer2: ColorToken.White, diff --git a/src/styles/tradeViewMixins.ts b/src/styles/tradeViewMixins.ts index fa6449810..537bb3eec 100644 --- a/src/styles/tradeViewMixins.ts +++ b/src/styles/tradeViewMixins.ts @@ -10,13 +10,31 @@ export const tradeViewMixins: Record< FlattenSimpleInterpolation | FlattenInterpolation<ThemeProps<any>> > = { horizontalTable: css` - --tableCell-padding: 0.5rem 1rem; - --tableHeader-backgroundColor: var(--color-layer-2); + --tableCell-padding: 0.5rem 0.25rem; + --tableStickyRow-backgroundColor: var(--color-layer-2); --tableRow-backgroundColor: var(--color-layer-2); font: var(--font-mini-book); + thead, + tbody { + tr { + td:first-of-type, + th:first-of-type { + --tableCell-padding: 0.5rem 0.25rem 0.5rem 1rem; + } + td:last-of-type, + th:last-of-type { + --tableCell-padding: 0.5rem 1rem 0.5rem 0.25rem; + } + } + } + tbody { font: var(--font-small-book); } + + tfoot { + --tableCell-padding: 0.5rem 1rem 0.5rem 1rem; + } `, }; diff --git a/src/views/AccountInfo.tsx b/src/views/AccountInfo.tsx index e9ee3246d..5de62e587 100644 --- a/src/views/AccountInfo.tsx +++ b/src/views/AccountInfo.tsx @@ -1,9 +1,11 @@ -import styled, { AnyStyledComponent, css } from 'styled-components'; import { useSelector } from 'react-redux'; +import styled, { css } from 'styled-components'; import { OnboardingState } from '@/constants/account'; import { STRING_KEYS } from '@/constants/localization'; -import { useStringGetter } from '@/hooks'; + +import { useStringGetter } from '@/hooks/useStringGetter'; + import { layoutMixins } from '@/styles/layoutMixins'; import { OnboardingTriggerButton } from '@/views/dialogs/OnboardingTriggerButton'; @@ -23,11 +25,11 @@ export const AccountInfo: React.FC = ({ className }: StyleProps) => { const canViewAccountInfo = useSelector(calculateCanViewAccount); return ( - <Styled.AccountInfoSectionContainer className={className} showAccountInfo={canViewAccountInfo}> + <$AccountInfoSectionContainer className={className} showAccountInfo={canViewAccountInfo}> {onboardingState === OnboardingState.AccountConnected || canViewAccountInfo ? ( <AccountInfoConnectedState /> ) : ( - <Styled.DisconnectedAccountInfoContainer> + <$DisconnectedAccountInfoContainer> <p> {stringGetter({ key: { @@ -37,15 +39,12 @@ export const AccountInfo: React.FC = ({ className }: StyleProps) => { })} </p> <OnboardingTriggerButton /> - </Styled.DisconnectedAccountInfoContainer> + </$DisconnectedAccountInfoContainer> )} - </Styled.AccountInfoSectionContainer> + </$AccountInfoSectionContainer> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.DisconnectedAccountInfoContainer = styled.div` +const $DisconnectedAccountInfoContainer = styled.div` margin: auto; ${layoutMixins.column} @@ -59,7 +58,7 @@ Styled.DisconnectedAccountInfoContainer = styled.div` } `; -Styled.AccountInfoSectionContainer = styled.div<{ showAccountInfo?: boolean }>` +const $AccountInfoSectionContainer = styled.div<{ showAccountInfo?: boolean }>` ${layoutMixins.column} height: var(--account-info-section-height); min-height: var(--account-info-section-height); diff --git a/src/views/AccountInfo/AccountInfoConnectedState.tsx b/src/views/AccountInfo/AccountInfoConnectedState.tsx index b6b7dbbf2..8c42ca932 100644 --- a/src/views/AccountInfo/AccountInfoConnectedState.tsx +++ b/src/views/AccountInfo/AccountInfoConnectedState.tsx @@ -1,12 +1,17 @@ -import styled, { type AnyStyledComponent, css } from 'styled-components'; import { shallowEqual, useDispatch, useSelector } from 'react-redux'; +import styled, { css } from 'styled-components'; import type { Nullable, TradeState } from '@/constants/abacus'; import { ButtonShape, ButtonSize } from '@/constants/buttons'; +import { ComplianceStates } from '@/constants/compliance'; import { DialogTypes } from '@/constants/dialogs'; import { STRING_KEYS } from '@/constants/localization'; +import { DydxChainAsset } from '@/constants/wallets'; -import { useAccounts, useBreakpoints, useStringGetter } from '@/hooks'; +import { useAccounts } from '@/hooks/useAccounts'; +import { useBreakpoints } from '@/hooks/useBreakpoints'; +import { useComplianceState } from '@/hooks/useComplianceState'; +import { useStringGetter } from '@/hooks/useStringGetter'; import { breakpoints } from '@/styles'; import { layoutMixins } from '@/styles/layoutMixins'; @@ -14,15 +19,15 @@ import { layoutMixins } from '@/styles/layoutMixins'; import { Button } from '@/components/Button'; import { Details } from '@/components/Details'; import { Icon, IconName } from '@/components/Icon'; +import { IconButton } from '@/components/IconButton'; import { MarginUsageRing } from '@/components/MarginUsageRing'; import { Output, OutputType } from '@/components/Output'; import { UsageBars } from '@/components/UsageBars'; import { WithTooltip } from '@/components/WithTooltip'; -import { openDialog } from '@/state/dialogs'; - import { calculateIsAccountLoading } from '@/state/accountCalculators'; import { getSubaccount } from '@/state/accountSelectors'; +import { openDialog } from '@/state/dialogs'; import { getInputErrors } from '@/state/inputsSelectors'; import { getCurrentMarketId } from '@/state/perpetualsSelectors'; @@ -49,6 +54,7 @@ export const AccountInfoConnectedState = () => { const dispatch = useDispatch(); const { isTablet } = useBreakpoints(); + const { complianceState } = useComplianceState(); const { dydxAccounts } = useAccounts(); @@ -59,7 +65,7 @@ export const AccountInfoConnectedState = () => { const listOfErrors = inputErrors?.map(({ code }: { code: string }) => code); - const { buyingPower, equity, marginUsage, leverage } = subAccount || {}; + const { buyingPower, equity, marginUsage, leverage } = subAccount ?? {}; const hasDiff = (marginUsage?.postOrder !== null && @@ -70,42 +76,60 @@ export const AccountInfoConnectedState = () => { const showHeader = !hasDiff && !isTablet; return ( - <Styled.ConnectedAccountInfoContainer $showHeader={showHeader}> + <$ConnectedAccountInfoContainer $showHeader={showHeader}> {!showHeader ? null : ( - <Styled.Header> + <$Header> <span>{stringGetter({ key: STRING_KEYS.ACCOUNT })}</span> - <Styled.TransferButtons> - <Styled.Button + <$TransferButtons> + <$Button state={{ isDisabled: !dydxAccounts }} onClick={() => dispatch(openDialog({ type: DialogTypes.Withdraw }))} - shape={ButtonShape.Pill} + shape={ButtonShape.Rectangle} size={ButtonSize.XSmall} > {stringGetter({ key: STRING_KEYS.WITHDRAW })} - </Styled.Button> - <Styled.Button - state={{ isDisabled: !dydxAccounts }} - onClick={() => dispatch(openDialog({ type: DialogTypes.Deposit }))} - shape={ButtonShape.Pill} - size={ButtonSize.XSmall} - > - {stringGetter({ key: STRING_KEYS.DEPOSIT })} - </Styled.Button> - </Styled.TransferButtons> - </Styled.Header> + </$Button> + {complianceState === ComplianceStates.FULL_ACCESS && ( + <> + <$Button + state={{ isDisabled: !dydxAccounts }} + onClick={() => dispatch(openDialog({ type: DialogTypes.Deposit }))} + shape={ButtonShape.Rectangle} + size={ButtonSize.XSmall} + > + {stringGetter({ key: STRING_KEYS.DEPOSIT })} + </$Button> + <WithTooltip tooltipString={stringGetter({ key: STRING_KEYS.TRANSFER })}> + <$IconButton + shape={ButtonShape.Square} + iconName={IconName.Send} + onClick={() => + dispatch( + openDialog({ + type: DialogTypes.Transfer, + dialogProps: { selectedAsset: DydxChainAsset.USDC }, + }) + ) + } + /> + </WithTooltip> + </> + )} + </$TransferButtons> + </$Header> )} - <Styled.Stack> - {!showHeader && !isTablet && ( - <Styled.CornerButton + <$Stack> + {!showHeader && !isTablet && complianceState === ComplianceStates.FULL_ACCESS && ( + <$CornerButton state={{ isDisabled: !dydxAccounts }} onClick={() => dispatch(openDialog({ type: DialogTypes.Deposit }))} > - <Styled.CircleContainer> + <$CircleContainer> <Icon iconName={IconName.Transfer} /> - </Styled.CircleContainer> - </Styled.CornerButton> + </$CircleContainer> + </$CornerButton> )} - <Styled.Details + <$Details items={[ { key: AccountInfoItem.Leverage, @@ -117,7 +141,7 @@ export const AccountInfoConnectedState = () => { label: stringGetter({ key: STRING_KEYS.LEVERAGE }), type: OutputType.Multiple, value: leverage, - slotRight: <Styled.UsageBars value={getUsageValue(leverage)} />, + slotRight: <$UsageBars value={getUsageValue(leverage)} />, }, { key: AccountInfoItem.Equity, @@ -171,14 +195,14 @@ export const AccountInfoConnectedState = () => { key, label: ( <WithTooltip tooltip={tooltip} stringParams={stringParams}> - <Styled.WithUsage> + <$WithUsage> {label} - {hasError ? <Styled.CautionIcon iconName={IconName.CautionCircle} /> : slotRight} - </Styled.WithUsage> + {hasError ? <$CautionIcon iconName={IconName.CautionCircle} /> : slotRight} + </$WithUsage> </WithTooltip> ), value: [AccountInfoItem.Leverage, AccountInfoItem.Equity].includes(key) ? ( - <Styled.Output type={type} value={value?.current} /> + <$Output type={type} value={value?.current} /> ) : ( <AccountInfoDiffOutput hasError={hasError} @@ -194,18 +218,15 @@ export const AccountInfoConnectedState = () => { showHeader={showHeader} isLoading={isLoading} /> - </Styled.Stack> - </Styled.ConnectedAccountInfoContainer> + </$Stack> + </$ConnectedAccountInfoContainer> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.Stack = styled.div` +const $Stack = styled.div` ${layoutMixins.stack} `; -Styled.CornerButton = styled(Button)` +const $CornerButton = styled(Button)` ${layoutMixins.withOuterBorder} z-index: 1; place-self: start end; @@ -221,7 +242,7 @@ Styled.CornerButton = styled(Button)` } `; -Styled.CircleContainer = styled.div` +const $CircleContainer = styled.div` display: inline-flex; align-items: center; @@ -230,11 +251,11 @@ Styled.CircleContainer = styled.div` border-radius: 50%; `; -Styled.CautionIcon = styled(Icon)` +const $CautionIcon = styled(Icon)` color: var(--color-error); `; -Styled.WithUsage = styled.div` +const $WithUsage = styled.div` ${layoutMixins.row} & > :last-child { @@ -246,7 +267,7 @@ Styled.WithUsage = styled.div` } `; -Styled.Details = styled(Details)<{ showHeader?: boolean }>` +const $Details = styled(Details)<{ showHeader?: boolean }>` ${layoutMixins.withOuterAndInnerBorders} clip-path: inset(0.5rem 1px); @@ -270,37 +291,33 @@ Styled.Details = styled(Details)<{ showHeader?: boolean }>` } `; -Styled.UsageBars = styled(UsageBars)` +const $UsageBars = styled(UsageBars)` margin-top: -0.125rem; `; -Styled.Output = styled(Output)<{ isNegative?: boolean }>` +const $Output = styled(Output)<{ isNegative?: boolean }>` color: var(--color-text-1); font: var(--font-base-book); `; -Styled.Header = styled.header` +const $Header = styled.header` ${layoutMixins.spacedRow} font: var(--font-small-book); padding: 0 1.25rem; `; -Styled.TransferButtons = styled.div` +const $TransferButtons = styled.div` ${layoutMixins.inlineRow} gap: 1rem; `; -Styled.ConnectedAccountInfoContainer = styled.div<{ $showHeader?: boolean }>` +const $ConnectedAccountInfoContainer = styled.div<{ $showHeader?: boolean }>` ${layoutMixins.column} @media ${breakpoints.notTablet} { ${layoutMixins.withOuterAndInnerBorders} } - @media ${breakpoints.tablet} { - ${layoutMixins.withInnerBorder} - } - ${({ $showHeader }) => $showHeader && css` @@ -308,7 +325,7 @@ Styled.ConnectedAccountInfoContainer = styled.div<{ $showHeader?: boolean }>` `} `; -Styled.Button = styled(Button)` +const $Button = styled(Button)` margin-right: -0.3rem; svg { @@ -316,3 +333,8 @@ Styled.Button = styled(Button)` height: 1.25em; } `; + +const $IconButton = styled(IconButton)` + --button-padding: 0 0.25rem; + --button-border: solid var(--border-width) var(--color-layer-6); +`; diff --git a/src/views/AccountInfo/AccountInfoDiffOutput.tsx b/src/views/AccountInfo/AccountInfoDiffOutput.tsx index 15f8921ac..7e00b6de4 100644 --- a/src/views/AccountInfo/AccountInfoDiffOutput.tsx +++ b/src/views/AccountInfo/AccountInfoDiffOutput.tsx @@ -1,4 +1,4 @@ -import styled, { type AnyStyledComponent } from 'styled-components'; +import styled from 'styled-components'; import type { Nullable, TradeState } from '@/constants/abacus'; import { NumberSign } from '@/constants/numbers'; @@ -21,7 +21,7 @@ export const AccountInfoDiffOutput = ({ hasError, isPositive, type, value }: Ele const hasDiffPostOrder = isNumber(postOrderValue) && currentValue !== postOrderValue; return ( - <Styled.DiffOutput + <$DiffOutput hasInvalidNewValue={!!hasError} sign={isPositive ? NumberSign.Positive : NumberSign.Negative} type={type} @@ -33,10 +33,7 @@ export const AccountInfoDiffOutput = ({ hasError, isPositive, type, value }: Ele /> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.DiffOutput = styled(DiffOutput)<{ withDiff?: boolean }>` +const $DiffOutput = styled(DiffOutput)<{ withDiff?: boolean }>` --diffOutput-valueWithDiff-font: var(--font-small-book); --diffOutput-gap: 0.125rem; font: var(--font-base-book); diff --git a/src/views/CanvasOrderbook/OrderbookRow.tsx b/src/views/CanvasOrderbook/OrderbookRow.tsx index 31a3b698c..5d4bd579a 100644 --- a/src/views/CanvasOrderbook/OrderbookRow.tsx +++ b/src/views/CanvasOrderbook/OrderbookRow.tsx @@ -1,11 +1,14 @@ import { forwardRef } from 'react'; -import styled, { AnyStyledComponent, css } from 'styled-components'; + +import { BigNumber } from 'bignumber.js'; +import styled, { css } from 'styled-components'; import type { Nullable } from '@/constants/abacus'; import { STRING_KEYS } from '@/constants/localization'; import { TOKEN_DECIMALS } from '@/constants/numbers'; import { ORDERBOOK_ROW_HEIGHT } from '@/constants/orderbook'; -import { useStringGetter } from '@/hooks'; + +import { useStringGetter } from '@/hooks/useStringGetter'; import { Output, OutputType } from '@/components/Output'; import { WithTooltip } from '@/components/WithTooltip'; @@ -15,7 +18,7 @@ type StyleProps = { }; type ElementProps = { - spread?: Nullable<number>; + spread?: Nullable<BigNumber | number>; spreadPercent?: Nullable<number>; tickSizeDecimals?: Nullable<number>; }; @@ -41,7 +44,7 @@ export const SpreadRow = forwardRef<HTMLDivElement, StyleProps & ElementProps>( const stringGetter = useStringGetter(); return ( - <Styled.SpreadRow ref={ref} side={side}> + <$SpreadRow ref={ref} side={side}> <span> <WithTooltip tooltip="spread"> {stringGetter({ key: STRING_KEYS.ORDERBOOK_SPREAD })} @@ -53,14 +56,11 @@ export const SpreadRow = forwardRef<HTMLDivElement, StyleProps & ElementProps>( <span> <Output type={OutputType.Percent} value={spreadPercent} /> </span> - </Styled.SpreadRow> + </$SpreadRow> ); } ); - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.SpreadRow = styled(OrderbookRow)<{ side?: 'top' | 'bottom' }>` +const $SpreadRow = styled(OrderbookRow)<{ side?: 'top' | 'bottom' }>` height: 2rem; border-top: var(--border); border-bottom: var(--border); diff --git a/src/views/CanvasOrderbook/index.tsx b/src/views/CanvasOrderbook/index.tsx index fa0442a20..9a7d224b1 100644 --- a/src/views/CanvasOrderbook/index.tsx +++ b/src/views/CanvasOrderbook/index.tsx @@ -1,11 +1,11 @@ import { forwardRef, useCallback, useMemo, useRef } from 'react'; -import styled, { AnyStyledComponent, css } from 'styled-components'; + import { shallowEqual, useDispatch, useSelector } from 'react-redux'; +import styled, { css } from 'styled-components'; import { Nullable, type PerpetualMarketOrderbookLevel } from '@/constants/abacus'; import { STRING_KEYS } from '@/constants/localization'; import { ORDERBOOK_HEIGHT, ORDERBOOK_MAX_ROWS_PER_SIDE } from '@/constants/orderbook'; -import { useStringGetter } from '@/hooks'; import { useCalculateOrderbookData, @@ -13,27 +13,25 @@ import { useDrawOrderbook, useSpreadRowScrollListener, } from '@/hooks/Orderbook'; +import { useStringGetter } from '@/hooks/useStringGetter'; import { Canvas } from '@/components/Canvas'; import { LoadingSpace } from '@/components/Loading/LoadingSpinner'; import { Tag } from '@/components/Tag'; import { getCurrentMarketAssetData } from '@/state/assetsSelectors'; -import { getCurrentMarketConfig, getCurrentMarketId } from '@/state/perpetualsSelectors'; import { setTradeFormInputs } from '@/state/inputs'; import { getCurrentInput } from '@/state/inputsSelectors'; +import { getCurrentMarketConfig, getCurrentMarketId } from '@/state/perpetualsSelectors'; import { OrderbookRow, SpreadRow } from './OrderbookRow'; type ElementProps = { maxRowsPerSide?: number; - layout?: 'vertical' | 'horizontal'; }; type StyleProps = { - hideHeader?: boolean; histogramSide?: 'left' | 'right'; - className?: string; }; export const CanvasOrderbook = forwardRef( @@ -42,7 +40,7 @@ export const CanvasOrderbook = forwardRef( histogramSide = 'right', maxRowsPerSide = ORDERBOOK_MAX_ROWS_PER_SIDE, }: ElementProps & StyleProps, - ref + ref: React.ForwardedRef<HTMLDivElement> ) => { const { asks, bids, hasOrderbook, histogramRange, spread, spreadPercent } = useCalculateOrderbookData({ @@ -60,23 +58,23 @@ export const CanvasOrderbook = forwardRef( * Slice asks and bids to maxRowsPerSide using empty rows */ const { asksSlice, bidsSlice } = useMemo(() => { - let asksSlice: Array<PerpetualMarketOrderbookLevel | undefined> = []; + let newAsksSlice: Array<PerpetualMarketOrderbookLevel | undefined> = []; const emptyAskRows = asks.length < maxRowsPerSide ? new Array<undefined>(maxRowsPerSide - asks.length).fill(undefined) : []; - asksSlice = [...emptyAskRows, ...asks.reverse()]; + newAsksSlice = [...emptyAskRows, ...asks.reverse()]; - let bidsSlice: Array<PerpetualMarketOrderbookLevel | undefined> = []; + let newBidsSlice: Array<PerpetualMarketOrderbookLevel | undefined> = []; const emptyBidRows = bids.length < maxRowsPerSide ? new Array<undefined>(maxRowsPerSide - bids.length).fill(undefined) : []; - bidsSlice = [...bids, ...emptyBidRows]; + newBidsSlice = [...bids, ...emptyBidRows]; return { - asksSlice, - bidsSlice, + asksSlice: newAsksSlice, + bidsSlice: newBidsSlice, }; }, [asks, bids]); @@ -122,9 +120,9 @@ export const CanvasOrderbook = forwardRef( }); return ( - <Styled.OrderbookContainer ref={ref}> - <Styled.OrderbookContent $isLoading={!hasOrderbook}> - <Styled.Header> + <$OrderbookContainer ref={ref}> + <$OrderbookContent $isLoading={!hasOrderbook}> + <$Header> <span> {stringGetter({ key: STRING_KEYS.SIZE })} {id && <Tag>{id}</Tag>} </span> @@ -132,10 +130,10 @@ export const CanvasOrderbook = forwardRef( {stringGetter({ key: STRING_KEYS.PRICE })} <Tag>USD</Tag> </span> <span>{stringGetter({ key: STRING_KEYS.MINE })}</span> - </Styled.Header> + </$Header> {displaySide === 'top' && ( - <Styled.SpreadRow + <$SpreadRow side="top" spread={spread} spreadPercent={spreadPercent} @@ -143,12 +141,13 @@ export const CanvasOrderbook = forwardRef( /> )} - <Styled.OrderbookWrapper ref={orderbookRef}> - <Styled.OrderbookSideContainer $side="asks"> - <Styled.HoverRows $bottom> + <$OrderbookWrapper ref={orderbookRef}> + <$OrderbookSideContainer $side="asks"> + <$HoverRows $bottom> {asksSlice.map((row: PerpetualMarketOrderbookLevel | undefined, idx) => row ? ( - <Styled.Row + <$Row + // eslint-disable-next-line react/no-array-index-key key={idx} title={`${row.price}`} onClick={() => { @@ -156,12 +155,13 @@ export const CanvasOrderbook = forwardRef( }} /> ) : ( - <Styled.Row key={idx} /> + // eslint-disable-next-line react/no-array-index-key + <$Row key={idx} /> ) )} - </Styled.HoverRows> - <Styled.OrderbookCanvas ref={asksCanvasRef} width="100%" height="100%" /> - </Styled.OrderbookSideContainer> + </$HoverRows> + <$OrderbookCanvas ref={asksCanvasRef} width="100%" height="100%" /> + </$OrderbookSideContainer> <SpreadRow ref={spreadRowRef} @@ -170,11 +170,12 @@ export const CanvasOrderbook = forwardRef( tickSizeDecimals={tickSizeDecimals} /> - <Styled.OrderbookSideContainer $side="bids"> - <Styled.HoverRows> + <$OrderbookSideContainer $side="bids"> + <$HoverRows> {bidsSlice.map((row: PerpetualMarketOrderbookLevel | undefined, idx) => row ? ( - <Styled.Row + <$Row + // eslint-disable-next-line react/no-array-index-key key={idx} title={`${row.price}`} onClick={ @@ -186,38 +187,36 @@ export const CanvasOrderbook = forwardRef( } /> ) : ( - <Styled.Row key={idx} /> + // eslint-disable-next-line react/no-array-index-key + <$Row key={idx} /> ) )} - </Styled.HoverRows> - <Styled.OrderbookCanvas ref={bidsCanvasRef} width="100%" height="100%" /> - </Styled.OrderbookSideContainer> - </Styled.OrderbookWrapper> + </$HoverRows> + <$OrderbookCanvas ref={bidsCanvasRef} width="100%" height="100%" /> + </$OrderbookSideContainer> + </$OrderbookWrapper> {displaySide === 'bottom' && ( - <Styled.SpreadRow + <$SpreadRow side="bottom" spread={spread} spreadPercent={spreadPercent} tickSizeDecimals={tickSizeDecimals} /> )} - </Styled.OrderbookContent> + </$OrderbookContent> {!hasOrderbook && <LoadingSpace id="canvas-orderbook" />} - </Styled.OrderbookContainer> + </$OrderbookContainer> ); } ); - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.OrderbookContainer = styled.div` +const $OrderbookContainer = styled.div` display: flex; flex: 1 1 0%; flex-direction: column; overflow: hidden; `; -Styled.OrderbookContent = styled.div<{ $isLoading?: boolean }>` +const $OrderbookContent = styled.div<{ $isLoading?: boolean }>` max-height: 100%; display: flex; flex-direction: column; @@ -225,20 +224,20 @@ Styled.OrderbookContent = styled.div<{ $isLoading?: boolean }>` ${({ $isLoading }) => $isLoading && 'flex: 1;'} `; -Styled.Header = styled(OrderbookRow)` +const $Header = styled(OrderbookRow)` height: 2rem; border-bottom: var(--border); color: var(--color-text-0); `; -Styled.OrderbookWrapper = styled.div` +const $OrderbookWrapper = styled.div` overflow-y: auto; display: flex; flex-direction: column; flex: 1 1 0%; `; -Styled.OrderbookSideContainer = styled.div<{ $side: 'bids' | 'asks' }>` +const $OrderbookSideContainer = styled.div<{ $side: 'bids' | 'asks' }>` min-height: ${ORDERBOOK_HEIGHT}px; ${({ $side }) => css` --accent-color: ${$side === 'bids' ? 'var(--color-positive)' : 'var(--color-negative)'}; @@ -246,7 +245,7 @@ Styled.OrderbookSideContainer = styled.div<{ $side: 'bids' | 'asks' }>` position: relative; `; -Styled.OrderbookCanvas = styled(Canvas)` +const $OrderbookCanvas = styled(Canvas)` width: 100%; height: 100%; position: absolute; @@ -256,14 +255,14 @@ Styled.OrderbookCanvas = styled(Canvas)` font-feature-settings: var(--fontFeature-monoNumbers); `; -Styled.HoverRows = styled.div<{ $bottom?: boolean }>` +const $HoverRows = styled.div<{ $bottom?: boolean }>` position: absolute; width: 100%; ${({ $bottom }) => $bottom && 'bottom: 0;'} `; -Styled.Row = styled(OrderbookRow)<{ onClick?: () => void }>` +const $Row = styled(OrderbookRow)<{ onClick?: () => void }>` ${({ onClick }) => onClick ? css` @@ -279,6 +278,6 @@ Styled.Row = styled(OrderbookRow)<{ onClick?: () => void }>` `} `; -Styled.SpreadRow = styled(SpreadRow)` +const $SpreadRow = styled(SpreadRow)` position: absolute; `; diff --git a/src/views/ExchangeBillboards.tsx b/src/views/ExchangeBillboards.tsx index d6ce3450a..9665d6502 100644 --- a/src/views/ExchangeBillboards.tsx +++ b/src/views/ExchangeBillboards.tsx @@ -1,145 +1,165 @@ -import styled, { type AnyStyledComponent } from 'styled-components'; -import { shallowEqual, useSelector } from 'react-redux'; +import styled from 'styled-components'; +import { ButtonAction, ButtonSize, ButtonType } from '@/constants/buttons'; import { STRING_KEYS } from '@/constants/localization'; -import { useBreakpoints, useStringGetter } from '@/hooks'; +import { TokenRoute } from '@/constants/routes'; + +import { usePerpetualMarketsStats } from '@/hooks/usePerpetualMarketsStats'; +import { useStringGetter } from '@/hooks/useStringGetter'; +import { useTokenConfigs } from '@/hooks/useTokenConfigs'; + import { breakpoints } from '@/styles'; import { layoutMixins } from '@/styles/layoutMixins'; +import { Button } from '@/components/Button'; import { Output, OutputType } from '@/components/Output'; - -import { getPerpetualMarkets } from '@/state/perpetualsSelectors'; +import { Tag } from '@/components/Tag'; +import { SparklineChart } from '@/components/visx/SparklineChart'; type ExchangeBillboardsProps = { - isSearching: boolean; - searchQuery: string; className?: string; }; -export const ExchangeBillboards: React.FC<ExchangeBillboardsProps> = ({ - isSearching, - searchQuery, - className, -}) => { +export const ExchangeBillboards: React.FC<ExchangeBillboardsProps> = () => { const stringGetter = useStringGetter(); - const { isTablet } = useBreakpoints(); - - let volume24HUSDC = 0; - let totalTrades24H = 0; - let openInterestUSDC = 0; - - const perpetualMarkets = useSelector(getPerpetualMarkets, shallowEqual) ?? {}; - - Object.values(perpetualMarkets) - .filter(Boolean) - .forEach(({ oraclePrice, perpetual }) => { - const { volume24H, trades24H, openInterest = 0 } = perpetual || {}; - volume24HUSDC += volume24H ?? 0; - totalTrades24H += trades24H ?? 0; - if (oraclePrice) openInterestUSDC += openInterest * oraclePrice; - }); + const { chainTokenLabel } = useTokenConfigs(); + const { + stats: { volume24HUSDC, openInterestUSDC, feesEarned }, + feesEarnedChart, + } = usePerpetualMarketsStats(); return ( - <Styled.MarketBillboardsWrapper className={className}> + <$MarketBillboardsWrapper> {[ { key: 'volume', - labelKey: isTablet ? STRING_KEYS.VOLUME_24H : STRING_KEYS.TRADING_VOLUME, + labelKey: STRING_KEYS.TRADING_VOLUME, + tagKey: STRING_KEYS._24H, value: volume24HUSDC || undefined, fractionDigits: 0, - type: isTablet ? OutputType.CompactFiat : OutputType.Fiat, - subLabelKey: !isTablet && STRING_KEYS.TRADING_VOLUME_LABEL, + type: OutputType.Fiat, }, { key: 'open-interest', labelKey: STRING_KEYS.OPEN_INTEREST, + tagKey: STRING_KEYS.CURRENT, value: openInterestUSDC || undefined, fractionDigits: 0, - type: isTablet ? OutputType.CompactFiat : OutputType.Fiat, - subLabelKey: !isTablet && STRING_KEYS.OPEN_INTEREST_LABEL, + type: OutputType.Fiat, }, { - key: 'trades', - labelKey: isTablet ? STRING_KEYS.TRADES_24H : STRING_KEYS.TRADES, - value: totalTrades24H || undefined, - type: isTablet ? OutputType.CompactNumber : OutputType.Number, - subLabelKey: !isTablet && STRING_KEYS.TRADES_LABEL, + key: 'fee-earned-stakers', + labelKey: STRING_KEYS.EARNED_BY_STAKERS, + tagKey: STRING_KEYS._24H, + value: feesEarned, + type: OutputType.Fiat, + chartData: feesEarnedChart, + linkLabelKey: STRING_KEYS.LEARN_MORE_ARROW, + link: `${chainTokenLabel}/${TokenRoute.StakingRewards}`, + slotLeft: '~', }, - ].map(({ key, labelKey, value, fractionDigits, type, subLabelKey }) => ( - <Styled.BillboardContainer key={key}> - <label>{stringGetter({ key: labelKey })}</label> - <Styled.Output - useGrouping - fractionDigits={fractionDigits} - type={type} - value={value} - withBaseFont - /> - {subLabelKey && <p>{stringGetter({ key: subLabelKey })}</p>} - </Styled.BillboardContainer> - ))} - </Styled.MarketBillboardsWrapper> + ].map( + ({ + key, + labelKey, + tagKey, + value, + fractionDigits, + type, + chartData, + link, + linkLabelKey, + slotLeft, + }) => ( + <$BillboardContainer key={key}> + <$BillboardStat> + <$BillboardTitle> + {/* eslint-disable-next-line jsx-a11y/label-has-associated-control */} + <label>{stringGetter({ key: labelKey })}</label> + <Tag>{stringGetter({ key: tagKey })}</Tag> + </$BillboardTitle> + <$Output + useGrouping + withBaseFont + fractionDigits={fractionDigits} + type={type} + value={value} + slotLeft={slotLeft} + /> + {link && linkLabelKey ? ( + <$BillboardLink + href={link} + size={ButtonSize.Small} + type={ButtonType.Link} + action={ButtonAction.Navigation} + > + {stringGetter({ key: linkLabelKey })} + </$BillboardLink> + ) : null} + </$BillboardStat> + {chartData ? ( + <$BillboardChart> + <SparklineChart + data={chartData} + xAccessor={(datum) => datum.x} + yAccessor={(datum) => datum.y} + positive + /> + </$BillboardChart> + ) : ( + false + )} + </$BillboardContainer> + ) + )} + </$MarketBillboardsWrapper> ); }; -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.MarketBillboardsWrapper = styled.div` +const $MarketBillboardsWrapper = styled.div` + ${layoutMixins.column} + gap: 1rem; +`; +const $BillboardContainer = styled.div` ${layoutMixins.row} + flex: 1; + justify-content: space-between; - gap: 1.75rem; - - padding: 1rem; - - @media ${breakpoints.tablet} { - gap: 0.625rem; + background-color: var(--color-layer-3); + padding: 1.5rem; + border-radius: 0.625rem; +`; +const $BillboardChart = styled.div` + width: 130px; + height: 40px; +`; +const $BillboardLink = styled(Button)` + --button-textColor: var(--color-accent); + --button-height: unset; + --button-padding: 0; + justify-content: flex-start; +`; +const $BillboardTitle = styled.div` + ${layoutMixins.row} - padding: 0 1rem; - } + gap: 0.375rem; `; +const $BillboardStat = styled.div` + ${layoutMixins.column} -Styled.BillboardContainer = styled.div` - ${layoutMixins.rowColumn} - width: 17.5rem; + gap: 0.5rem; label { - margin-bottom: 1rem; - } - - p { - margin-top: 0.25rem; - } - - label, - p { - font: var(--font-base-book); color: var(--color-text-0); + font: var(--font-base-medium); } - &:not(:last-child) { - border-right: solid var(--border-width) var(--color-border); - } - - @media ${breakpoints.tablet} { - padding: 0.625rem 0.75rem; - - background-color: var(--color-layer-3); - border-radius: 0.625rem; - - &:not(:last-child) { - border-right: none; - } - - label { - margin-bottom: 0.5rem; - color: var(--color-text-1); - - font: var(--font-mini-book); - } + output { + color: var(--color-text-1); + font: var(--font-large-medium); } `; - -Styled.Output = styled(Output)` +const $Output = styled(Output)` font: var(--font-extra-book); color: var(--color-text-2); diff --git a/src/views/ExportHistoryDropdown.tsx b/src/views/ExportHistoryDropdown.tsx new file mode 100644 index 000000000..2f0c67217 --- /dev/null +++ b/src/views/ExportHistoryDropdown.tsx @@ -0,0 +1,264 @@ +import { Button } from '@/components/Button'; +import { Icon, IconName } from '@/components/Icon'; +import { STRING_KEYS } from '@/constants/localization'; + +import { shallowEqual, useSelector } from 'react-redux'; +import { getSubaccountFills, getSubaccountTransfers } from '@/state/accountSelectors'; +import { useCallback, useMemo, useState } from 'react'; +import { OutputType, formatNumber, formatTimestamp } from '@/components/Output'; +import { MustBigNumber } from '@/lib/numbers'; +import { OrderSide } from '@dydxprotocol/v4-client-js'; +import { getSelectedLocale } from '@/state/localizationSelectors'; +import { exportCSV } from '@/lib/csv'; +import { useLocaleSeparators, useStringGetter } from '@/hooks'; +import { ButtonAction, ButtonSize } from '@/constants/buttons'; +import { DropdownMenu, DropdownMenuProps } from '@/components/DropdownMenu'; +import { Checkbox } from '@/components/Checkbox'; +import styled, { AnyStyledComponent } from 'styled-components'; +import { track } from '@/lib/analytics'; +import { AnalyticsEvent } from '@/constants/analytics'; + +export const ExportHistoryDropdown = (props: DropdownMenuProps<string>) => { + const { items = [], ...rest } = props; + const selectedLocale = useSelector(getSelectedLocale); + const stringGetter = useStringGetter(); + const allTransfers = useSelector(getSubaccountTransfers, shallowEqual) ?? []; + const allFills = useSelector(getSubaccountFills, shallowEqual) ?? []; + const { decimal: localeDecimalSeparator, group: localeGroupSeparator } = useLocaleSeparators(); + const [checkedTrades, setCheckedTrades] = useState(true); + const [checkedTransfers, setCheckedTransfers] = useState(true); + + const trades = useMemo( + () => + allFills.map((fill) => { + const { sign: feeSign, formattedString: feeString } = formatNumber({ + type: OutputType.Fiat, + value: fill.fee, + localeDecimalSeparator, + localeGroupSeparator, + }); + + const { sign: totalSign, formattedString: totalString } = formatNumber({ + type: OutputType.Fiat, + value: MustBigNumber(fill.price).times(fill.size), + localeDecimalSeparator, + localeGroupSeparator, + }); + + const { displayString } = formatTimestamp({ + type: OutputType.DateTime, + value: fill.createdAtMilliseconds, + locale: selectedLocale, + }); + + const sideKey = { + [OrderSide.BUY]: STRING_KEYS.BUY, + [OrderSide.SELL]: STRING_KEYS.SELL, + }[fill.side.rawValue]; + + return { + type: fill.resources.typeStringKey && stringGetter({ key: fill.resources.typeStringKey }), + liquidity: + fill.resources.liquidityStringKey && + stringGetter({ key: fill.resources.liquidityStringKey }), + time: displayString, + amount: fill.size, + fee: feeSign ? `${feeSign}${feeString}` : feeString, + total: totalSign ? `${totalSign}${totalString}` : totalString, + market: fill.marketId, + side: sideKey + ? stringGetter({ + key: sideKey, + }) + : '', + }; + }), + [allFills, stringGetter, localeDecimalSeparator, localeGroupSeparator] + ); + + const transfers = useMemo( + () => + allTransfers.map((transfer) => { + const { sign, formattedString } = formatNumber({ + type: OutputType.Fiat, + value: transfer.amount, + localeDecimalSeparator, + localeGroupSeparator, + }); + + const { displayString } = formatTimestamp({ + type: OutputType.DateTime, + value: transfer.updatedAtMilliseconds, + locale: selectedLocale, + }); + + return { + time: displayString, + action: + transfer.resources.typeStringKey && + stringGetter({ key: transfer.resources.typeStringKey }), + sender: transfer.fromAddress, + recipient: transfer.toAddress, + amount: sign ? `${sign}${formattedString}` : formattedString, + transaction: transfer.transactionHash, + }; + }), + [allTransfers, stringGetter, localeDecimalSeparator, localeGroupSeparator] + ); + + const exportTrades = useCallback(() => { + exportCSV(trades, { + filename: 'trades', + columnHeaders: [ + { + key: 'time', + displayLabel: stringGetter({ key: STRING_KEYS.TIME }), + }, + { + key: 'market', + displayLabel: stringGetter({ key: STRING_KEYS.MARKET }), + }, + { + key: 'side', + displayLabel: stringGetter({ key: STRING_KEYS.SIDE }), + }, + { + key: 'amount', + displayLabel: stringGetter({ key: STRING_KEYS.AMOUNT }), + }, + { + key: 'total', + displayLabel: stringGetter({ key: STRING_KEYS.TOTAL }), + }, + { + key: 'fee', + displayLabel: stringGetter({ key: STRING_KEYS.FEE }), + }, + { + key: 'type', + displayLabel: stringGetter({ key: STRING_KEYS.TYPE }), + }, + { + key: 'liquidity', + displayLabel: stringGetter({ key: STRING_KEYS.LIQUIDITY }), + }, + ], + }); + }, [trades, stringGetter]); + + const exportTransfers = useCallback(() => { + exportCSV(transfers, { + filename: 'transfers', + columnHeaders: [ + { + key: 'time', + displayLabel: stringGetter({ key: STRING_KEYS.TIME }), + }, + { + key: 'action', + displayLabel: stringGetter({ key: STRING_KEYS.ACTION }), + }, + { + key: 'sender', + displayLabel: stringGetter({ key: STRING_KEYS.TRANSFER_SENDER }), + }, + { + key: 'recipient', + displayLabel: stringGetter({ key: STRING_KEYS.TRANSFER_RECIPIENT }), + }, + { + key: 'amount', + displayLabel: stringGetter({ key: STRING_KEYS.AMOUNT }), + }, + { + key: 'transaction', + displayLabel: stringGetter({ key: STRING_KEYS.TRANSACTION }), + }, + ], + }); + }, [transfers, stringGetter]); + + const exportData = useCallback(() => { + if (checkedTrades) { + exportTrades(); + } + + if (checkedTransfers) { + exportTransfers(); + } + + track(AnalyticsEvent.ExportDownloadClick, { trades: checkedTrades, transfers: checkedTransfers }) + }, [checkedTrades, checkedTransfers, exportTrades, exportTransfers]); + + return ( + <DropdownMenu + {...rest} + onOpenChange={(open) => { + if (open) { + track(AnalyticsEvent.ExportButtonClick); + } + }} + items={[ + ...items, + { + label: ( + <Checkbox + disabled={trades.length === 0} + label={stringGetter({ key: STRING_KEYS.TRADES })} + checked={checkedTrades} + onCheckedChange={() => { + setCheckedTrades(!checkedTrades); + + track(AnalyticsEvent.ExportTradesCheckboxClick, { value: !checkedTrades }); + }} + /> + ), + value: 'trades', + onSelect: (e) => e.preventDefault(), + }, + { + label: ( + <Checkbox + disabled={transfers.length === 0} + label={stringGetter({ key: STRING_KEYS.TRANSFERS })} + checked={checkedTransfers} + onCheckedChange={() => { + setCheckedTransfers(!checkedTransfers); + + track(AnalyticsEvent.ExportTransfersCheckboxClick, { value: !checkedTrades }); + }} + /> + ), + value: 'transfers', + onSelect: (e) => e.preventDefault(), + }, + { + label: ( + <Styled.Button + state={{ + isDisabled: + (!checkedTrades && !checkedTransfers) || + (transfers.length === 0 && trades.length === 0), + }} + action={ButtonAction.Primary} + size={ButtonSize.XSmall} + > + {stringGetter({ key: STRING_KEYS.DOWNLOAD })} + </Styled.Button> + ), + value: 'download', + onSelect: exportData, + }, + ]} + > + <Icon iconName={IconName.Download} /> + {stringGetter({ key: STRING_KEYS.EXPORT })} + </DropdownMenu> + ); +}; + +const Styled: Record<string, AnyStyledComponent> = {}; + +Styled.Button = styled(Button)` + width: 100%; +`; diff --git a/src/views/MarketDetails.tsx b/src/views/MarketDetails.tsx index 46ccad4ca..706bca7bb 100644 --- a/src/views/MarketDetails.tsx +++ b/src/views/MarketDetails.tsx @@ -1,15 +1,20 @@ +import BigNumber from 'bignumber.js'; import { shallowEqual, useSelector } from 'react-redux'; -import styled, { type AnyStyledComponent } from 'styled-components'; +import styled from 'styled-components'; import { ButtonShape, ButtonSize, ButtonType } from '@/constants/buttons'; -import { STRING_KEYS, type StringKey } from '@/constants/localization'; -import { useBreakpoints, useStringGetter } from '@/hooks'; +import { STRING_KEYS } from '@/constants/localization'; + +import { useBreakpoints } from '@/hooks/useBreakpoints'; +import { useStringGetter } from '@/hooks/useStringGetter'; + import { breakpoints } from '@/styles'; import { layoutMixins } from '@/styles/layoutMixins'; import { AssetIcon } from '@/components/AssetIcon'; import { Button } from '@/components/Button'; import { Details } from '@/components/Details'; +import { DiffOutput } from '@/components/DiffOutput'; import { Icon, IconName } from '@/components/Icon'; import { Output, OutputType } from '@/components/Output'; @@ -23,8 +28,8 @@ import { MarketLinks } from './MarketLinks'; export const MarketDetails: React.FC = () => { const stringGetter = useStringGetter(); const { isTablet } = useBreakpoints(); - const { configs, market } = useSelector(getCurrentMarketData, shallowEqual) || {}; - const { id, name, resources } = useSelector(getCurrentMarketAssetData, shallowEqual) || {}; + const { configs, market } = useSelector(getCurrentMarketData, shallowEqual) ?? {}; + const { id, name, resources } = useSelector(getCurrentMarketAssetData, shallowEqual) ?? {}; if (!configs) return null; @@ -32,6 +37,7 @@ export const MarketDetails: React.FC = () => { tickSize, stepSize, initialMarginFraction, + effectiveInitialMarginFraction, maintenanceMarginFraction, minOrderSize, stepSizeDecimals, @@ -44,7 +50,11 @@ export const MarketDetails: React.FC = () => { secondaryDescriptionKey, websiteLink, whitepaperLink, - } = resources || {}; + } = resources ?? {}; + + const preferEIMF = Boolean( + effectiveInitialMarginFraction && initialMarginFraction !== effectiveInitialMarginFraction + ); const items = [ { @@ -97,9 +107,14 @@ export const MarketDetails: React.FC = () => { label: stringGetter({ key: STRING_KEYS.MAXIMUM_LEVERAGE }), tooltip: 'maximum-leverage', value: ( - <Output - useGrouping + <DiffOutput value={initialMarginFraction ? BIG_NUMBERS.ONE.div(initialMarginFraction) : null} + newValue={ + effectiveInitialMarginFraction + ? BIG_NUMBERS.ONE.div(effectiveInitialMarginFraction) + : null + } + withDiff={preferEIMF} type={OutputType.Multiple} /> ), @@ -116,30 +131,39 @@ export const MarketDetails: React.FC = () => { key: 'initial-margin-fraction', label: stringGetter({ key: STRING_KEYS.INITIAL_MARGIN_FRACTION }), tooltip: 'initial-margin-fraction', - value: <Output useGrouping value={initialMarginFraction} type={OutputType.SmallPercent} />, + value: ( + <DiffOutput + value={initialMarginFraction ? BigNumber(initialMarginFraction) : null} + newValue={ + effectiveInitialMarginFraction ? BigNumber(effectiveInitialMarginFraction) : null + } + withDiff={preferEIMF} + type={OutputType.SmallPercent} + /> + ), }, ]; return ( - <Styled.MarketDetails> - <Styled.Header> - <Styled.WrapRow> - <Styled.MarketTitle> + <$MarketDetails> + <$Header> + <$WrapRow> + <$MarketTitle> <AssetIcon symbol={id} /> {name} - </Styled.MarketTitle> - {isTablet && <Styled.MarketLinks />} - </Styled.WrapRow> + </$MarketTitle> + {isTablet && <$MarketLinks />} + </$WrapRow> - <Styled.MarketDescription> + <$MarketDescription> {primaryDescriptionKey && <p>{stringGetter({ key: `APP.${primaryDescriptionKey}` })}</p>} {secondaryDescriptionKey && ( <p>{stringGetter({ key: `APP.${secondaryDescriptionKey}` })}</p> )} - </Styled.MarketDescription> + </$MarketDescription> {!isTablet && ( - <Styled.Buttons> + <$Buttons> {whitepaperLink && ( <Button type={ButtonType.Link} @@ -173,18 +197,16 @@ export const MarketDetails: React.FC = () => { CoinmarketCap </Button> )} - </Styled.Buttons> + </$Buttons> )} - </Styled.Header> + </$Header> - <Styled.Details items={items} withSeparators /> - </Styled.MarketDetails> + <$Details items={items} withSeparators /> + </$MarketDetails> ); }; -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.MarketDetails = styled.div` +const $MarketDetails = styled.div` margin: auto; width: 100%; @@ -204,20 +226,17 @@ Styled.MarketDetails = styled.div` padding: 0 clamp(0.5rem, 7.5%, 2.5rem); } `; - -Styled.Header = styled.header` +const $Header = styled.header` ${layoutMixins.column} gap: 1.25rem; `; - -Styled.WrapRow = styled.div` +const $WrapRow = styled.div` ${layoutMixins.row} gap: 0.5rem; flex-wrap: wrap; `; - -Styled.MarketTitle = styled.h3` +const $MarketTitle = styled.h3` ${layoutMixins.row} font: var(--font-large-medium); gap: 0.5rem; @@ -227,12 +246,10 @@ Styled.MarketTitle = styled.h3` height: 2.25rem; } `; - -Styled.MarketLinks = styled(MarketLinks)` +const $MarketLinks = styled(MarketLinks)` place-self: start end; `; - -Styled.MarketDescription = styled.div` +const $MarketDescription = styled.div` ${layoutMixins.column} gap: 0.5em; @@ -244,15 +261,13 @@ Styled.MarketDescription = styled.div` } } `; - -Styled.Buttons = styled.div` +const $Buttons = styled.div` ${layoutMixins.row} flex-wrap: wrap; gap: 0.5rem; overflow-x: auto; `; - -Styled.Details = styled(Details)` +const $Details = styled(Details)` font: var(--font-mini-book); `; diff --git a/src/views/MarketFilter.tsx b/src/views/MarketFilter.tsx index 6768a4f6c..22ed19162 100644 --- a/src/views/MarketFilter.tsx +++ b/src/views/MarketFilter.tsx @@ -1,11 +1,18 @@ -import { useState } from 'react'; +import { useNavigate } from 'react-router-dom'; +import styled, { css } from 'styled-components'; +import { ButtonSize } from '@/constants/buttons'; import { STRING_KEYS } from '@/constants/localization'; -import { MarketFilters, MARKET_FILTER_LABELS } from '@/constants/markets'; +import { MARKET_FILTER_LABELS, MarketFilters } from '@/constants/markets'; +import { AppRoute, MarketsRoute } from '@/constants/routes'; -import { useStringGetter } from '@/hooks'; +import { usePotentialMarkets } from '@/hooks/usePotentialMarkets'; +import { useStringGetter } from '@/hooks/useStringGetter'; -import { InputType } from '@/components/Input'; +import { breakpoints } from '@/styles'; +import { layoutMixins } from '@/styles/layoutMixins'; + +import { Button } from '@/components/Button'; import { SearchInput } from '@/components/SearchInput'; import { ToggleGroup } from '@/components/ToggleGroup'; @@ -14,20 +21,29 @@ export const MarketFilter = ({ filters, onChangeFilter, onSearchTextChange, - withoutSearch, + hideNewMarketButton, + compactLayout = false, + searchPlaceholderKey = STRING_KEYS.MARKET_SEARCH_PLACEHOLDER, }: { selectedFilter: MarketFilters; filters: MarketFilters[]; onChangeFilter: (filter: MarketFilters) => void; onSearchTextChange?: (filter: string) => void; - withoutSearch?: boolean; + hideNewMarketButton?: boolean; + searchPlaceholderKey?: string; + compactLayout?: boolean; }) => { const stringGetter = useStringGetter(); - const [isSearch, setIsSearch] = useState(false); + const navigate = useNavigate(); + const { hasPotentialMarketsData } = usePotentialMarkets(); return ( - <> - {!isSearch && ( + <$MarketFilter $compactLayout={compactLayout}> + <SearchInput + placeholder={stringGetter({ key: searchPlaceholderKey })} + onTextChange={onSearchTextChange} + /> + <$ToggleGroupContainer $compactLayout={compactLayout}> <ToggleGroup items={Object.values(filters).map((value) => ({ label: stringGetter({ key: MARKET_FILTER_LABELS[value] }), @@ -36,16 +52,50 @@ export const MarketFilter = ({ value={selectedFilter} onValueChange={onChangeFilter} /> - )} - - {!withoutSearch && ( - <SearchInput - type={InputType.Search} - placeholder={stringGetter({ key: STRING_KEYS.MARKET_SEARCH_PLACEHOLDER })} - onOpenChange={setIsSearch} - onTextChange={onSearchTextChange} - /> - )} - </> + {hasPotentialMarketsData && !hideNewMarketButton && ( + <Button + onClick={() => navigate(`${AppRoute.Markets}/${MarketsRoute.New}`)} + size={ButtonSize.Small} + > + {stringGetter({ key: STRING_KEYS.PROPOSE_NEW_MARKET })} + </Button> + )} + </$ToggleGroupContainer> + </$MarketFilter> ); }; +const $MarketFilter = styled.div<{ $compactLayout: boolean }>` + display: flex; + flex-direction: ${({ $compactLayout }) => ($compactLayout ? 'row-reverse' : 'column')}; + justify-content: space-between; + gap: 0.75rem; + flex: 1; + overflow: hidden; + + ${({ $compactLayout }) => + $compactLayout && + css` + @media ${breakpoints.mobile} { + flex-direction: column; + } + `} +`; + +const $ToggleGroupContainer = styled.div<{ $compactLayout: boolean }>` + ${layoutMixins.row} + justify-content: space-between; + overflow-x: auto; + + ${({ $compactLayout }) => + $compactLayout && + css` + & button { + --button-toggle-off-backgroundColor: ${({ theme }) => theme.toggleBackground}; + --button-toggle-off-textColor: ${({ theme }) => theme.textSecondary}; + --border-color: ${({ theme }) => theme.layer6}; + --button-height: 2rem; + --button-padding: 0 0.625rem; + --button-font: var(--font-small-book); + } + `} +`; diff --git a/src/views/MarketLinks.tsx b/src/views/MarketLinks.tsx index be38805f6..03af602bc 100644 --- a/src/views/MarketLinks.tsx +++ b/src/views/MarketLinks.tsx @@ -1,7 +1,8 @@ import { shallowEqual, useSelector } from 'react-redux'; -import styled, { type AnyStyledComponent } from 'styled-components'; +import styled from 'styled-components'; import { ButtonType } from '@/constants/buttons'; + import { layoutMixins } from '@/styles/layoutMixins'; import { IconName } from '@/components/Icon'; @@ -10,8 +11,8 @@ import { IconButton } from '@/components/IconButton'; import { getCurrentMarketAssetData } from '@/state/assetsSelectors'; export const MarketLinks = () => { - const { resources } = useSelector(getCurrentMarketAssetData, shallowEqual) || {}; - const { coinMarketCapsLink, websiteLink, whitepaperLink } = resources || {}; + const { resources } = useSelector(getCurrentMarketAssetData, shallowEqual) ?? {}; + const { coinMarketCapsLink, websiteLink, whitepaperLink } = resources ?? {}; const linkItems = [ { @@ -32,18 +33,15 @@ export const MarketLinks = () => { ].filter(({ href }) => href); return ( - <Styled.MarketLinks> + <$MarketLinks> {linkItems.map( ({ key, href, icon }) => href && <IconButton key={key} href={href} iconName={icon} type={ButtonType.Link} /> )} - </Styled.MarketLinks> + </$MarketLinks> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.MarketLinks = styled.div` +const $MarketLinks = styled.div` ${layoutMixins.row} margin-left: auto; diff --git a/src/views/MarketStatsDetails.tsx b/src/views/MarketStatsDetails.tsx index 562debd95..6d7ffbf81 100644 --- a/src/views/MarketStatsDetails.tsx +++ b/src/views/MarketStatsDetails.tsx @@ -1,29 +1,34 @@ import { useEffect, useRef } from 'react'; -import styled, { type AnyStyledComponent, css } from 'styled-components'; + import { shallowEqual, useSelector } from 'react-redux'; +import styled, { css } from 'styled-components'; import { STRING_KEYS } from '@/constants/localization'; import { LARGE_TOKEN_DECIMALS, TINY_PERCENT_DECIMALS } from '@/constants/numbers'; -import { useBreakpoints, useStringGetter } from '@/hooks'; + +import { useBreakpoints } from '@/hooks/useBreakpoints'; +import { useStringGetter } from '@/hooks/useStringGetter'; + import { breakpoints } from '@/styles'; import { layoutMixins } from '@/styles/layoutMixins'; import { Details } from '@/components/Details'; +import { DiffOutput } from '@/components/DiffOutput'; import { Output, OutputType } from '@/components/Output'; import { VerticalSeparator } from '@/components/Separator'; import { TriangleIndicator } from '@/components/TriangleIndicator'; +import { WithTooltip } from '@/components/WithTooltip'; +import { NextFundingTimer } from '@/views/NextFundingTimer'; import { getCurrentMarketAssetData } from '@/state/assetsSelectors'; - import { getCurrentMarketConfig, getCurrentMarketData, getCurrentMarketMidMarketPrice, } from '@/state/perpetualsSelectors'; -import { MustBigNumber } from '@/lib/numbers'; +import { BIG_NUMBERS, MustBigNumber } from '@/lib/numbers'; -import { NextFundingTimer } from '@/views/NextFundingTimer'; import { MidMarketPrice } from './MidMarketPrice'; type ElementProps = { @@ -38,6 +43,7 @@ enum MarketStats { Volume24H = 'Volume24H', Trades24H = 'Trades24H', NextFunding = 'NextFunding', + MaxLeverage = 'MaxLeverage', } const defaultMarketStatistics = Object.values(MarketStats); @@ -46,7 +52,8 @@ export const MarketStatsDetails = ({ showMidMarketPrice = true }: ElementProps) const stringGetter = useStringGetter(); const { isTablet } = useBreakpoints(); const { id = '' } = useSelector(getCurrentMarketAssetData, shallowEqual) ?? {}; - const { tickSizeDecimals } = useSelector(getCurrentMarketConfig, shallowEqual) ?? {}; + const { tickSizeDecimals, initialMarginFraction, effectiveInitialMarginFraction } = + useSelector(getCurrentMarketConfig, shallowEqual) ?? {}; const midMarketPrice = useSelector(getCurrentMarketMidMarketPrice); const lastMidMarketPrice = useRef(midMarketPrice); const currentMarketData = useSelector(getCurrentMarketData, shallowEqual); @@ -68,6 +75,7 @@ export const MarketStatsDetails = ({ showMidMarketPrice = true }: ElementProps) [MarketStats.PriceChange24H]: priceChange24H, [MarketStats.Trades24H]: trades24H, [MarketStats.Volume24H]: volume24H, + [MarketStats.MaxLeverage]: undefined, // needs more complex logic }; const labelMap = { @@ -78,106 +86,48 @@ export const MarketStatsDetails = ({ showMidMarketPrice = true }: ElementProps) [MarketStats.PriceChange24H]: stringGetter({ key: STRING_KEYS.CHANGE_24H }), [MarketStats.Trades24H]: stringGetter({ key: STRING_KEYS.TRADES_24H }), [MarketStats.Volume24H]: stringGetter({ key: STRING_KEYS.VOLUME_24H }), + [MarketStats.MaxLeverage]: ( + <WithTooltip tooltip="maximum-leverage"> + {stringGetter({ key: STRING_KEYS.MAXIMUM_LEVERAGE })} + </WithTooltip> + ), }; return ( - <Styled.MarketDetailsItems> + <$MarketDetailsItems> {showMidMarketPrice && ( - <Styled.MidMarketPrice> + <$MidMarketPrice> <MidMarketPrice /> <VerticalSeparator /> - </Styled.MidMarketPrice> + </$MidMarketPrice> )} - <Styled.Details + <$Details items={defaultMarketStatistics.map((stat) => ({ key: stat, label: labelMap[stat], tooltip: stat, - // value: <output>{valueMap[stat]?.toString()}</output>, - value: (() => { - const value = valueMap[stat]; - const valueBN = MustBigNumber(value); - - const color = valueBN.isNegative() ? 'var(--color-negative)' : 'var(--color-positive)'; - - switch (stat) { - case MarketStats.OraclePrice: { - return ( - <Styled.Output - type={OutputType.Fiat} - value={value} - fractionDigits={tickSizeDecimals} - /> - ); - } - case MarketStats.OpenInterest: { - return ( - <Styled.Output - type={OutputType.Number} - value={value} - tag={id} - fractionDigits={LARGE_TOKEN_DECIMALS} - /> - ); - } - case MarketStats.Funding1H: { - return ( - <Styled.Output - type={OutputType.Percent} - value={value} - color={color} - fractionDigits={TINY_PERCENT_DECIMALS} - /> - ); - } - case MarketStats.NextFunding: { - return <NextFundingTimer />; - } - case MarketStats.PriceChange24H: { - return ( - <Styled.RowSpan color={!isLoading ? color : undefined}> - {!isLoading && <TriangleIndicator value={valueBN} />} - <Styled.Output - type={OutputType.Fiat} - value={valueBN.abs()} - fractionDigits={tickSizeDecimals} - /> - {!isLoading && ( - <Styled.Output - type={OutputType.Percent} - value={MustBigNumber(priceChange24HPercent).abs()} - withParentheses - /> - )} - </Styled.RowSpan> - ); - } - case MarketStats.Trades24H: { - return <Styled.Output type={OutputType.Number} value={value} fractionDigits={0} />; - } - case MarketStats.Volume24H: { - // $ with no decimals - return <Styled.Output type={OutputType.Fiat} value={value} fractionDigits={0} />; - } - default: { - // Default renderer - return <Styled.Output type={OutputType.Text} value={value} />; - } - } - })(), + value: ( + <DetailsItem + value={valueMap[stat]} + stat={stat} + tickSizeDecimals={tickSizeDecimals} + id={id} + isLoading={isLoading} + priceChange24HPercent={priceChange24HPercent} + initialMarginFraction={initialMarginFraction} + effectiveInitialMarginFraction={effectiveInitialMarginFraction} + /> + ), }))} isLoading={isLoading} layout={isTablet ? 'grid' : 'rowColumns'} withSeparators={!isTablet} /> - </Styled.MarketDetailsItems> + </$MarketDetailsItems> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.MarketDetailsItems = styled.div` +const $MarketDetailsItems = styled.div` @media ${breakpoints.notTablet} { ${layoutMixins.scrollArea} ${layoutMixins.row} @@ -192,7 +142,7 @@ Styled.MarketDetailsItems = styled.div` } `; -Styled.Details = styled(Details)` +const $Details = styled(Details)` font: var(--font-mini-book); @media ${breakpoints.tablet} { @@ -206,7 +156,7 @@ Styled.Details = styled(Details)` } `; -Styled.MidMarketPrice = styled.div` +const $MidMarketPrice = styled.div` ${layoutMixins.sticky} ${layoutMixins.row} font: var(--font-medium-medium); @@ -217,7 +167,7 @@ Styled.MidMarketPrice = styled.div` gap: 1rem; `; -Styled.Output = styled(Output)<{ color?: string }>` +const $Output = styled(Output)<{ color?: string }>` ${layoutMixins.row} ${({ color }) => @@ -227,7 +177,7 @@ Styled.Output = styled(Output)<{ color?: string }>` `} `; -Styled.RowSpan = styled.span<{ color?: string }>` +const $RowSpan = styled.span<{ color?: string }>` ${layoutMixins.row} ${({ color }) => @@ -242,3 +192,96 @@ Styled.RowSpan = styled.span<{ color?: string }>` gap: 0.25rem; `; + +const DetailsItem = ({ + value, + stat, + tickSizeDecimals, + id, + isLoading, + priceChange24HPercent, + initialMarginFraction, + effectiveInitialMarginFraction, +}: { + value: number | null | undefined; + stat: MarketStats; + tickSizeDecimals: number | null | undefined; + id: string; + isLoading: boolean; + priceChange24HPercent: number | null | undefined; + initialMarginFraction: number | null | undefined; + effectiveInitialMarginFraction: number | null | undefined; +}) => { + const valueBN = MustBigNumber(value); + + const color = valueBN.isNegative() ? 'var(--color-negative)' : 'var(--color-positive)'; + + switch (stat) { + case MarketStats.OraclePrice: { + return <$Output type={OutputType.Fiat} value={value} fractionDigits={tickSizeDecimals} />; + } + case MarketStats.OpenInterest: { + return ( + <$Output + type={OutputType.Number} + value={value} + tag={id} + fractionDigits={LARGE_TOKEN_DECIMALS} + /> + ); + } + case MarketStats.Funding1H: { + return ( + <$Output + type={OutputType.Percent} + value={value} + color={color} + fractionDigits={TINY_PERCENT_DECIMALS} + /> + ); + } + case MarketStats.NextFunding: { + return <NextFundingTimer />; + } + case MarketStats.PriceChange24H: { + return ( + <$RowSpan color={!isLoading ? color : undefined}> + {!isLoading && <TriangleIndicator value={valueBN} />} + <$Output type={OutputType.Fiat} value={valueBN.abs()} fractionDigits={tickSizeDecimals} /> + {!isLoading && ( + <$Output + type={OutputType.Percent} + value={MustBigNumber(priceChange24HPercent).abs()} + withParentheses + /> + )} + </$RowSpan> + ); + } + case MarketStats.Trades24H: { + return <$Output type={OutputType.Number} value={value} fractionDigits={0} />; + } + case MarketStats.Volume24H: { + // $ with no decimals + return <$Output type={OutputType.Fiat} value={value} fractionDigits={0} />; + } + case MarketStats.MaxLeverage: { + return ( + <DiffOutput + value={initialMarginFraction ? BIG_NUMBERS.ONE.div(initialMarginFraction) : null} + newValue={ + effectiveInitialMarginFraction + ? BIG_NUMBERS.ONE.div(effectiveInitialMarginFraction) + : null + } + withDiff={initialMarginFraction !== effectiveInitialMarginFraction} + type={OutputType.Multiple} + /> + ); + } + default: { + // Default renderer + return <$Output type={OutputType.Text} value={value} />; + } + } +}; diff --git a/src/views/MarketsDropdown.tsx b/src/views/MarketsDropdown.tsx index 899894467..654e5def2 100644 --- a/src/views/MarketsDropdown.tsx +++ b/src/views/MarketsDropdown.tsx @@ -1,18 +1,20 @@ -import { memo, useState } from 'react'; -import { useNavigate } from 'react-router-dom'; -import styled, { type AnyStyledComponent, css, keyframes } from 'styled-components'; +import { Key, memo, useMemo, useState } from 'react'; + import { useSelector } from 'react-redux'; +import { useNavigate } from 'react-router-dom'; +import styled, { css, keyframes } from 'styled-components'; import { ButtonSize } from '@/constants/buttons'; import { STRING_KEYS } from '@/constants/localization'; import { MarketFilters, type MarketData } from '@/constants/markets'; import { AppRoute, MarketsRoute } from '@/constants/routes'; -import { useStringGetter } from '@/hooks'; + import { useMarketsData } from '@/hooks/useMarketsData'; import { usePotentialMarkets } from '@/hooks/usePotentialMarkets'; +import { useStringGetter } from '@/hooks/useStringGetter'; -import { popoverMixins } from '@/styles/popoverMixins'; import { layoutMixins } from '@/styles/layoutMixins'; +import { popoverMixins } from '@/styles/popoverMixins'; import { AssetIcon } from '@/components/AssetIcon'; import { Button } from '@/components/Button'; @@ -29,7 +31,7 @@ import { MustBigNumber } from '@/lib/numbers'; import { MarketFilter } from './MarketFilter'; -const MarketsDropdownContent = ({ onRowAction }: { onRowAction?: (market: string) => void }) => { +const MarketsDropdownContent = ({ onRowAction }: { onRowAction?: (market: Key) => void }) => { const [filter, setFilter] = useState(MarketFilters.ALL); const stringGetter = useStringGetter(); const selectedLocale = useSelector(getSelectedLocale); @@ -38,18 +40,85 @@ const MarketsDropdownContent = ({ onRowAction }: { onRowAction?: (market: string const navigate = useNavigate(); const { hasPotentialMarketsData } = usePotentialMarkets(); + const columns = useMemo( + () => + [ + { + columnKey: 'market', + getCellValue: (row) => row.market, + label: stringGetter({ key: STRING_KEYS.MARKET }), + renderCell: ({ assetId, id, isNew }) => ( + <$MarketName isFavorited={false}> + {/* TRCL-1693 <Icon iconName={IconName.Star} /> */} + <AssetIcon symbol={assetId} /> + <h2>{id}</h2> + <Tag>{assetId}</Tag> + {isNew && <Tag isHighlighted>{stringGetter({ key: STRING_KEYS.NEW })}</Tag>} + </$MarketName> + ), + }, + { + columnKey: 'oraclePrice', + getCellValue: (row) => row.oraclePrice, + label: stringGetter({ key: STRING_KEYS.PRICE }), + renderCell: ({ oraclePrice, tickSizeDecimals }) => ( + <$Output type={OutputType.Fiat} value={oraclePrice} fractionDigits={tickSizeDecimals} /> + ), + }, + { + columnKey: 'priceChange24HPercent', + getCellValue: (row) => row.priceChange24HPercent, + label: stringGetter({ key: STRING_KEYS._24H }), + renderCell: ({ priceChange24HPercent }) => ( + <$InlineRow> + {!priceChange24HPercent ? ( + <$Output type={OutputType.Text} value={null} /> + ) : ( + <$PriceChangeOutput + type={OutputType.Percent} + value={priceChange24HPercent} + isNegative={MustBigNumber(priceChange24HPercent).isNegative()} + /> + )} + </$InlineRow> + ), + }, + { + columnKey: 'volume24H', + getCellValue: (row) => row.volume24H, + label: stringGetter({ key: STRING_KEYS.VOLUME }), + renderCell: ({ volume24H }) => ( + <$Output type={OutputType.CompactFiat} value={volume24H} locale={selectedLocale} /> + ), + }, + { + columnKey: 'openInterest', + getCellValue: (row) => row.openInterestUSDC, + label: stringGetter({ key: STRING_KEYS.OPEN_INTEREST }), + renderCell: (row) => ( + <$Output + type={OutputType.CompactFiat} + value={row.openInterestUSDC} + locale={selectedLocale} + /> + ), + }, + ] as ColumnDef<MarketData>[], + [stringGetter, selectedLocale] + ); + return ( <> - <Styled.Toolbar> + <$Toolbar> <MarketFilter selectedFilter={filter} filters={marketFilters as MarketFilters[]} onChangeFilter={setFilter} onSearchTextChange={setSearchFilter} /> - </Styled.Toolbar> - <Styled.ScrollArea> - <Styled.Table + </$Toolbar> + <$ScrollArea> + <$Table withInnerBorders data={filteredMarkets} getRowKey={(row: MarketData) => row.id} @@ -59,86 +128,34 @@ const MarketsDropdownContent = ({ onRowAction }: { onRowAction?: (market: string direction: 'descending', }} label={stringGetter({ key: STRING_KEYS.MARKETS })} - columns={ - [ - { - columnKey: 'market', - getCellValue: (row) => row.market, - label: stringGetter({ key: STRING_KEYS.MARKET }), - renderCell: ({ assetId, id }) => ( - <Styled.MarketName isFavorited={false}> - {/* TRCL-1693 <Icon iconName={IconName.Star} /> */} - <AssetIcon symbol={assetId} /> - <h2>{id}</h2> - <Tag>{assetId}</Tag> - </Styled.MarketName> - ), - }, - { - columnKey: 'oraclePrice', - getCellValue: (row) => row.oraclePrice, - label: stringGetter({ key: STRING_KEYS.PRICE }), - renderCell: ({ oraclePrice, tickSizeDecimals }) => ( - <Styled.Output - type={OutputType.Fiat} - value={oraclePrice} - fractionDigits={tickSizeDecimals} - /> - ), - }, - { - columnKey: 'priceChange24HPercent', - getCellValue: (row) => row.priceChange24HPercent, - label: stringGetter({ key: STRING_KEYS._24H }), - renderCell: ({ priceChange24HPercent }) => ( - <Styled.InlineRow> - {!priceChange24HPercent ? ( - <Styled.Output type={OutputType.Text} value={null} /> - ) : ( - <Styled.PriceChangeOutput - type={OutputType.Percent} - value={priceChange24HPercent} - isNegative={MustBigNumber(priceChange24HPercent).isNegative()} - /> - )} - </Styled.InlineRow> - ), - }, - { - columnKey: 'volume24H', - getCellValue: (row) => row.volume24H, - label: stringGetter({ key: STRING_KEYS.VOLUME }), - renderCell: ({ volume24H }) => ( - <Styled.Output - type={OutputType.CompactFiat} - value={volume24H} - locale={selectedLocale} - /> - ), - }, - { - columnKey: 'openInterest', - getCellValue: (row) => row.openInterestUSDC, - label: stringGetter({ key: STRING_KEYS.OPEN_INTEREST }), - renderCell: (row) => ( - <Styled.Output - type={OutputType.CompactFiat} - value={row.openInterestUSDC} - locale={selectedLocale} - /> - ), - }, - ] as ColumnDef<MarketData>[] - } + columns={columns} + initialPageSize={15} slotEmpty={ - <Styled.MarketNotFound> - <h2> - {stringGetter({ - key: STRING_KEYS.QUERY_NOT_FOUND, - params: { QUERY: searchFilter ?? '' }, - })} - </h2> - <p>{stringGetter({ key: STRING_KEYS.MARKET_SEARCH_DOES_NOT_EXIST_YET })}</p> + <$MarketNotFound> + {filter === MarketFilters.NEW && !searchFilter ? ( + <> + <h2> + {stringGetter({ + key: STRING_KEYS.QUERY_NOT_FOUND, + params: { QUERY: stringGetter({ key: STRING_KEYS.NEW }) }, + })} + </h2> + {hasPotentialMarketsData && ( + <p>{stringGetter({ key: STRING_KEYS.ADD_DETAILS_TO_LAUNCH_MARKET })}</p> + )} + </> + ) : ( + <> + <h2> + {stringGetter({ + key: STRING_KEYS.QUERY_NOT_FOUND, + params: { QUERY: searchFilter ?? '' }, + })} + </h2> + <p>{stringGetter({ key: STRING_KEYS.MARKET_SEARCH_DOES_NOT_EXIST_YET })}</p> + </> + )} + {hasPotentialMarketsData && ( <div> <Button @@ -149,27 +166,27 @@ const MarketsDropdownContent = ({ onRowAction }: { onRowAction?: (market: string </Button> </div> )} - </Styled.MarketNotFound> + </$MarketNotFound> } /> - </Styled.ScrollArea> + </$ScrollArea> </> ); }; -export const MarketsDropdown: React.FC<{ currentMarketId?: string; symbol: string | null }> = memo( - ({ currentMarketId, symbol = '' }) => { +export const MarketsDropdown = memo( + ({ currentMarketId, symbol = '' }: { currentMarketId?: string; symbol: string | null }) => { const [isOpen, setIsOpen] = useState(false); const stringGetter = useStringGetter(); const navigate = useNavigate(); return ( - <Styled.Popover + <$Popover open={isOpen} onOpenChange={setIsOpen} sideOffset={1} slotTrigger={ - <Styled.TriggerContainer $isOpen={isOpen}> + <$TriggerContainer $isOpen={isOpen}> {isOpen ? ( <h2>{stringGetter({ key: STRING_KEYS.SELECT_MARKET })}</h2> ) : ( @@ -180,28 +197,26 @@ export const MarketsDropdown: React.FC<{ currentMarketId?: string; symbol: strin )} <p> {stringGetter({ key: isOpen ? STRING_KEYS.TAP_TO_CLOSE : STRING_KEYS.ALL_MARKETS })} - <Styled.DropdownIcon aria-hidden="true"> + <$DropdownIcon aria-hidden="true"> <Icon iconName={IconName.Triangle} aria-hidden="true" /> - </Styled.DropdownIcon> + </$DropdownIcon> </p> - </Styled.TriggerContainer> + </$TriggerContainer> } triggerType={TriggerType.MarketDropdown} > <MarketsDropdownContent - onRowAction={(market: string) => { + onRowAction={(market: Key) => { navigate(`${AppRoute.Trade}/${market}`); setIsOpen(false); }} /> - </Styled.Popover> + </$Popover> ); } ); -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.MarketName = styled.div<{ isFavorited: boolean }>` +const $MarketName = styled.div<{ isFavorited: boolean }>` ${layoutMixins.row} gap: 0.5rem; @@ -222,7 +237,7 @@ Styled.MarketName = styled.div<{ isFavorited: boolean }>` `} `; -Styled.TriggerContainer = styled.div<{ $isOpen: boolean }>` +const $TriggerContainer = styled.div<{ $isOpen: boolean }>` --marketsDropdown-width: var(--sidebar-width); width: var(--sidebar-width); @@ -261,24 +276,22 @@ Styled.TriggerContainer = styled.div<{ $isOpen: boolean }>` } `; -Styled.DropdownIcon = styled.span` +const $DropdownIcon = styled.span` margin-left: auto; display: inline-flex; transition: transform 0.3s var(--ease-out-expo); font-size: 0.375rem; - - ${Styled.Trigger}[data-state='open'] & { - transform: scaleY(-1); - } `; -Styled.Popover = styled(Popover)` +const $Popover = styled(Popover)` ${popoverMixins.popover} --popover-item-height: 3.375rem; --popover-backgroundColor: var(--color-layer-2); - --stickyArea-topHeight: var(--popover-item-height); + --stickyArea-topHeight: 6.125rem; + + --toolbar-height: var(--stickyArea-topHeight); height: calc( 100vh - var(--page-header-height) - var(--market-info-row-height) - var(--page-footer-height) @@ -314,19 +327,21 @@ Styled.Popover = styled(Popover)` } `; -Styled.Toolbar = styled(Toolbar)` +const $Toolbar = styled(Toolbar)` ${layoutMixins.stickyHeader} - height: var(--stickyArea-topHeight); - + height: var(--toolbar-height); + gap: 0.5rem; border-bottom: solid var(--border-width) var(--color-border); `; -Styled.ScrollArea = styled.div` +const $ScrollArea = styled.div` ${layoutMixins.scrollArea} - height: calc(100% - var(--popover-item-height)); + height: calc(100% - var(--toolbar-height)); `; -Styled.Table = styled(Table)` +const $Table = styled(Table)` + --tableCell-padding: 0.5rem 1rem; + thead { --stickyArea-totalInsetTop: 0px; --stickyArea-totalInsetBottom: 0px; @@ -335,25 +350,34 @@ Styled.Table = styled(Table)` } } + tfoot { + --stickyArea-totalInsetTop: 0px; + --stickyArea-totalInsetBottom: 3px; + + tr { + height: var(--stickyArea-bottomHeight); + } + } + tr { height: var(--popover-item-height); } -`; +` as typeof Table; -Styled.InlineRow = styled.div` +const $InlineRow = styled.div` ${layoutMixins.inlineRow} `; -Styled.Output = styled(Output)<{ isNegative?: boolean }>` +const $Output = styled(Output)<{ isNegative?: boolean }>` color: ${({ isNegative }) => (isNegative ? `var(--color-negative)` : `var(--color-positive)`)}; color: var(--color-text-2); `; -Styled.PriceChangeOutput = styled(Output)<{ isNegative?: boolean }>` +const $PriceChangeOutput = styled(Output)<{ isNegative?: boolean }>` color: ${({ isNegative }) => (isNegative ? `var(--color-negative)` : `var(--color-positive)`)}; `; -Styled.MarketNotFound = styled.div` +const $MarketNotFound = styled.div` ${layoutMixins.column} justify-content: center; align-items: center; diff --git a/src/views/MarketsStats.tsx b/src/views/MarketsStats.tsx new file mode 100644 index 000000000..5538620cf --- /dev/null +++ b/src/views/MarketsStats.tsx @@ -0,0 +1,121 @@ +import { useState } from 'react'; + +import styled from 'styled-components'; + +import { STRING_KEYS } from '@/constants/localization'; +import { MarketFilters, MarketSorting } from '@/constants/markets'; + +import { useStringGetter } from '@/hooks/useStringGetter'; + +import { breakpoints } from '@/styles'; +import { layoutMixins } from '@/styles/layoutMixins'; + +import { Tag } from '@/components/Tag'; +import { ToggleGroup } from '@/components/ToggleGroup'; + +import { ExchangeBillboards } from './ExchangeBillboards'; +import { MarketsCompactTable } from './tables/MarketsCompactTable'; + +interface MarketsStatsProps { + className?: string; +} + +export const MarketsStats = (props: MarketsStatsProps) => { + const { className } = props; + const stringGetter = useStringGetter(); + const [sorting, setSorting] = useState(MarketSorting.GAINERS); + + return ( + <$MarketsStats className={className}> + <ExchangeBillboards /> + <$Section> + <$SectionHeader> + <$RecentlyListed> + {stringGetter({ key: STRING_KEYS.RECENTLY_LISTED })} + <$NewTag>{stringGetter({ key: STRING_KEYS.NEW })}</$NewTag> + </$RecentlyListed> + </$SectionHeader> + <MarketsCompactTable filters={MarketFilters.NEW} /> + </$Section> + <$Section> + <$SectionHeader> + <h4>{stringGetter({ key: STRING_KEYS.BIGGEST_MOVERS })}</h4> + <Tag>{stringGetter({ key: STRING_KEYS._24H })}</Tag> + + <$ToggleGroupContainer> + <ToggleGroup + items={[ + { + label: stringGetter({ key: STRING_KEYS.GAINERS }), + value: MarketSorting.GAINERS, + }, + { + label: stringGetter({ key: STRING_KEYS.LOSERS }), + value: MarketSorting.LOSERS, + }, + ]} + value={sorting} + onValueChange={setSorting} + /> + </$ToggleGroupContainer> + </$SectionHeader> + <MarketsCompactTable sorting={sorting} /> + </$Section> + </$MarketsStats> + ); +}; + +const $MarketsStats = styled.section` + display: grid; + grid-template-columns: repeat(3, minmax(0, 1fr)); + gap: 1rem; + + @media ${breakpoints.desktopSmall} { + padding-left: 1rem; + padding-right: 1rem; + } + + @media ${breakpoints.tablet} { + ${layoutMixins.column} + } +`; +const $Section = styled.div` + background: var(--color-layer-3); + border-radius: 0.625rem; +`; +const $RecentlyListed = styled.h4` + display: flex; + align-items: center; + gap: 0.375rem; +`; +const $NewTag = styled(Tag)` + background-color: var(--color-accent-faded); + color: var(--color-accent); + text-transform: uppercase; +`; +const $ToggleGroupContainer = styled.div` + ${layoutMixins.row} + margin-left: auto; + + & button { + --button-toggle-off-backgroundColor: var(--color-layer-3); + --button-toggle-off-textColor: var(--color-text-1); + --border-color: var(--color-layer-6); + --button-height: 1.75rem; + --button-padding: 0 0.75rem; + --button-font: var(--font-mini-book); + } +`; +const $SectionHeader = styled.div` + ${layoutMixins.row} + + justify-content: space-between; + padding: 1.125rem 1.5rem; + gap: 0.375rem; + height: 4rem; + + & h4 { + font: var(--font-base-medium); + color: var(--color-text-2); + } +`; diff --git a/src/views/MidMarketPrice.tsx b/src/views/MidMarketPrice.tsx index 6a7c43ba6..d4ffdeb60 100644 --- a/src/views/MidMarketPrice.tsx +++ b/src/views/MidMarketPrice.tsx @@ -1,6 +1,7 @@ import { useEffect, useRef } from 'react'; -import styled, { type AnyStyledComponent, css } from 'styled-components'; + import { shallowEqual, useSelector } from 'react-redux'; +import styled, { css } from 'styled-components'; import { Nullable } from '@/constants/abacus'; @@ -9,7 +10,10 @@ import { layoutMixins } from '@/styles/layoutMixins'; import { LoadingDots } from '@/components/Loading/LoadingDots'; import { Output, OutputType } from '@/components/Output'; -import { getCurrentMarketConfig, getCurrentMarketMidMarketPrice } from '@/state/perpetualsSelectors'; +import { + getCurrentMarketConfig, + getCurrentMarketMidMarketPrice, +} from '@/state/perpetualsSelectors'; import { MustBigNumber } from '@/lib/numbers'; @@ -22,7 +26,8 @@ const getMidMarketPriceColor = ({ }) => { if (MustBigNumber(midMarketPrice).lt(MustBigNumber(lastMidMarketPrice))) { return 'var(--color-negative)'; - } else if (MustBigNumber(midMarketPrice).gt(MustBigNumber(lastMidMarketPrice))) { + } + if (MustBigNumber(midMarketPrice).gt(MustBigNumber(lastMidMarketPrice))) { return 'var(--color-positive)'; } @@ -44,7 +49,7 @@ export const MidMarketPrice = () => { }, [midMarketPrice]); return midMarketPrice !== undefined ? ( - <Styled.Output + <$Output type={OutputType.Fiat} value={midMarketPrice} color={midMarketColor} @@ -54,10 +59,7 @@ export const MidMarketPrice = () => { <LoadingDots size={5} /> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.Output = styled(Output)<{ color?: string }>` +const $Output = styled(Output)<{ color?: string }>` ${layoutMixins.row} ${({ color }) => diff --git a/src/views/NextFundingTimer.tsx b/src/views/NextFundingTimer.tsx index 5781121a1..1d1a4eb50 100644 --- a/src/views/NextFundingTimer.tsx +++ b/src/views/NextFundingTimer.tsx @@ -1,9 +1,11 @@ -import { useState, useCallback } from 'react'; -import { useInterval } from '@/hooks'; +import { useCallback, useState } from 'react'; + +import { useInterval } from '@/hooks/useInterval'; -import { getTimeTillNextUnit, formatSeconds } from '@/lib/timeUtils'; import { Output, OutputType } from '@/components/Output'; +import { formatSeconds, getTimeTillNextUnit } from '@/lib/timeUtils'; + export const NextFundingTimer = () => { const [secondsLeft, setSecondsLeft] = useState<number | undefined>(); @@ -16,11 +18,7 @@ export const NextFundingTimer = () => { return ( <Output type={OutputType.Text} - value={ - secondsLeft !== undefined - ? formatSeconds(secondsLeft) - : undefined - } + value={secondsLeft !== undefined ? formatSeconds(secondsLeft) : undefined} /> ); }; diff --git a/src/views/OrderStatusIcon.tsx b/src/views/OrderStatusIcon.tsx index 2dbac7050..127c33312 100644 --- a/src/views/OrderStatusIcon.tsx +++ b/src/views/OrderStatusIcon.tsx @@ -1,65 +1,20 @@ import styled from 'styled-components'; -import { AbacusOrderStatus } from '@/constants/abacus'; - -import { - OrderCanceledIcon, - OrderFilledIcon, - OrderOpenIcon, - OrderPartiallyFilledIcon, - OrderPendingIcon, -} from '@/icons'; - import { Icon } from '@/components/Icon'; +import { getOrderStatusInfo } from '@/lib/orders'; + type ElementProps = { status: string; - totalFilled: number; }; type StyleProps = { className?: string; }; -export const OrderStatusIcon = ({ className, status, totalFilled }: ElementProps & StyleProps) => { - const { iconComponent, color } = { - [AbacusOrderStatus.open.rawValue]: - totalFilled > 0 - ? { - iconComponent: OrderPartiallyFilledIcon, - color: 'var(--color-warning)', - } - : { - iconComponent: OrderOpenIcon, - color: 'var(--color-text-2)', - }, - [AbacusOrderStatus.partiallyFilled.rawValue]: { - iconComponent: OrderPartiallyFilledIcon, - color: 'var(--color-warning)', - }, - [AbacusOrderStatus.filled.rawValue]: { - iconComponent: OrderFilledIcon, - color: 'var(--color-success)', - }, - [AbacusOrderStatus.cancelled.rawValue]: { - iconComponent: OrderCanceledIcon, - color: 'var(--color-error)', - }, - [AbacusOrderStatus.canceling.rawValue]: { - iconComponent: OrderPendingIcon, - color: 'var(--color-error)', - }, - [AbacusOrderStatus.pending.rawValue]: { - iconComponent: OrderPendingIcon, - color: 'var(--color-text-2)', - }, - [AbacusOrderStatus.untriggered.rawValue]: { - iconComponent: OrderPendingIcon, - color: 'var(--color-text-2)', - }, - }[status]; - - return <$Icon className={className} iconComponent={iconComponent} color={color} />; +export const OrderStatusIcon = ({ className, status }: ElementProps & StyleProps) => { + const { statusIcon, statusIconColor } = getOrderStatusInfo({ status }); + return <$Icon className={className} iconName={statusIcon} color={statusIconColor} />; }; const $Icon = styled(Icon)<{ color: string }>` diff --git a/src/views/PositionInfo.tsx b/src/views/PositionInfo.tsx index 1df8cb60f..e3b5390bd 100644 --- a/src/views/PositionInfo.tsx +++ b/src/views/PositionInfo.tsx @@ -1,18 +1,18 @@ -import styled, { type AnyStyledComponent, css } from 'styled-components'; import { shallowEqual, useDispatch, useSelector } from 'react-redux'; +import styled, { css } from 'styled-components'; import { type Nullable } from '@/constants/abacus'; import { DialogTypes, TradeBoxDialogTypes } from '@/constants/dialogs'; import { STRING_KEYS } from '@/constants/localization'; import { NumberSign, USD_DECIMALS } from '@/constants/numbers'; -import { breakpoints } from '@/styles'; -import { layoutMixins } from '@/styles/layoutMixins'; +import { useBreakpoints } from '@/hooks/useBreakpoints'; +import { useStringGetter } from '@/hooks/useStringGetter'; -import { useBreakpoints, useStringGetter } from '@/hooks'; +import { layoutMixins } from '@/styles/layoutMixins'; import { Button } from '@/components/Button'; -import { DetachedSection, DetachedScrollableSection } from '@/components/ContentSection'; +import { DetachedScrollableSection, DetachedSection } from '@/components/ContentSection'; import { Details } from '@/components/Details'; import { DiffOutput } from '@/components/DiffOutput'; import { Output, OutputType, ShowSign } from '@/components/Output'; @@ -21,9 +21,9 @@ import { ToggleButton } from '@/components/ToggleButton'; import { calculateIsAccountLoading } from '@/state/accountCalculators'; import { getCurrentMarketPositionData } from '@/state/accountSelectors'; import { getCurrentMarketAssetData } from '@/state/assetsSelectors'; -import { getActiveDialog, getActiveTradeBoxDialog } from '@/state/dialogsSelectors'; -import { getCurrentMarketConfig } from '@/state/perpetualsSelectors'; import { closeDialogInTradeBox, openDialog, openDialogInTradeBox } from '@/state/dialogs'; +import { getActiveTradeBoxDialog } from '@/state/dialogsSelectors'; +import { getCurrentMarketConfig } from '@/state/perpetualsSelectors'; import abacusStateManager from '@/lib/abacus'; import { BIG_NUMBERS, isNumber, MustBigNumber } from '@/lib/numbers'; @@ -62,15 +62,13 @@ export const PositionInfo = ({ showNarrowVariation }: { showNarrowVariation?: bo const currentMarketAssetData = useSelector(getCurrentMarketAssetData, shallowEqual); const currentMarketConfigs = useSelector(getCurrentMarketConfig, shallowEqual); - const activeDialog = useSelector(getActiveDialog, shallowEqual); - const activeTradeBoxDialog = useSelector(getActiveTradeBoxDialog, shallowEqual); + const activeTradeBoxDialog = useSelector(getActiveTradeBoxDialog); const currentMarketPosition = useSelector(getCurrentMarketPositionData, shallowEqual); const isLoading = useSelector(calculateIsAccountLoading); - const { stepSizeDecimals, tickSizeDecimals } = currentMarketConfigs || {}; - const { id } = currentMarketAssetData || {}; - const { type: dialogType } = activeDialog || {}; - const { type: tradeBoxDialogType } = activeTradeBoxDialog || {}; + const { stepSizeDecimals, tickSizeDecimals } = currentMarketConfigs ?? {}; + const { id } = currentMarketAssetData ?? {}; + const { type: tradeBoxDialogType } = activeTradeBoxDialog ?? {}; const { adjustedImf, @@ -117,7 +115,7 @@ export const PositionInfo = ({ showNarrowVariation }: { showNarrowVariation?: bo }, ]; - const { current: currentSize, postOrder: postOrderSize } = size || {}; + const { current: currentSize, postOrder: postOrderSize } = size ?? {}; const leverageBN = MustBigNumber(leverage?.current); const newLeverageBN = MustBigNumber(leverage?.postOrder); const maxLeverage = BIG_NUMBERS.ONE.div(MustBigNumber(adjustedImf?.postOrder)); @@ -188,7 +186,7 @@ export const PositionInfo = ({ showNarrowVariation }: { showNarrowVariation?: bo label: STRING_KEYS.LIQUIDATION_PRICE, tooltip: 'liquidation-price', tooltipParams: { - SYMBOL: id || '', + SYMBOL: id ?? '', }, fractionDigits: tickSizeDecimals, hasInvalidNewValue: Boolean(newLeverageIsInvalid), @@ -222,7 +220,7 @@ export const PositionInfo = ({ showNarrowVariation }: { showNarrowVariation?: bo : MustBigNumber(realizedPnl?.current).lt(0) ? NumberSign.Negative : NumberSign.Neutral, - value: realizedPnl?.current || undefined, + value: realizedPnl?.current ?? undefined, withBaseFont: true, }, ]; @@ -247,58 +245,54 @@ export const PositionInfo = ({ showNarrowVariation }: { showNarrowVariation?: bo label: stringGetter({ key: label }), tooltip, tooltipParams, - value: ( - <> - {useDiffOutput ? ( - <Styled.DiffOutput - type={type} - value={value} - newValue={newValue} - fractionDigits={fractionDigits} - hasInvalidNewValue={hasInvalidNewValue} - layout={isTablet ? 'row' : 'column'} - sign={sign} - showSign={showSign} - withBaseFont={withBaseFont} - withDiff={isNumber(newValue) && value !== newValue} - /> - ) : ( - <Styled.Output - type={type} - value={value} - fractionDigits={fractionDigits} - showSign={showSign} - sign={sign} - slotRight={ - percentValue && ( - <Styled.Output - type={OutputType.Percent} - value={percentValue} - sign={sign} - showSign={showSign} - withParentheses - withBaseFont={withBaseFont} - margin="0 0 0 0.5ch" - /> - ) - } - withBaseFont={withBaseFont} - /> - )} - </> + value: useDiffOutput ? ( + <$DiffOutput + type={type} + value={value} + newValue={newValue} + fractionDigits={fractionDigits} + hasInvalidNewValue={hasInvalidNewValue} + layout={isTablet ? 'row' : 'column'} + sign={sign} + showSign={showSign} + withBaseFont={withBaseFont} + withDiff={isNumber(newValue) && value !== newValue} + /> + ) : ( + <$Output + type={type} + value={value} + fractionDigits={fractionDigits} + showSign={showSign} + sign={sign} + slotRight={ + percentValue && ( + <$Output + type={OutputType.Percent} + value={percentValue} + sign={sign} + showSign={showSign} + withParentheses + withBaseFont={withBaseFont} + margin="0 0 0 0.5ch" + /> + ) + } + withBaseFont={withBaseFont} + /> ), }); const actions = ( - <Styled.Actions> + <$Actions> {isTablet ? ( - <Styled.ClosePositionButton + <$ClosePositionButton onClick={() => dispatch(openDialog({ type: DialogTypes.ClosePosition }))} > {stringGetter({ key: STRING_KEYS.CLOSE_POSITION })} - </Styled.ClosePositionButton> + </$ClosePositionButton> ) : ( - <Styled.ClosePositionToggleButton + <$ClosePositionToggleButton isPressed={tradeBoxDialogType === TradeBoxDialogTypes.ClosePosition} onPressedChange={(isPressed: boolean) => { dispatch( @@ -312,70 +306,70 @@ export const PositionInfo = ({ showNarrowVariation }: { showNarrowVariation?: bo }} > {stringGetter({ key: STRING_KEYS.CLOSE_POSITION })} - </Styled.ClosePositionToggleButton> + </$ClosePositionToggleButton> )} - </Styled.Actions> + </$Actions> ); if (showNarrowVariation) { return ( - <Styled.MobilePositionInfo> - <Styled.DetachedSection> + <$MobilePositionInfo> + <$DetachedSection> <PositionTile currentSize={size?.current} notionalTotal={notionalTotal?.current} postOrderSize={size?.postOrder} stepSizeDecimals={stepSizeDecimals} - symbol={id || undefined} + symbol={id ?? undefined} tickSizeDecimals={tickSizeDecimals} showNarrowVariation={showNarrowVariation} isLoading={isLoading} /> - <Styled.MobileDetails + <$MobileDetails items={[mainFieldsContent[0], mainFieldsContent[1]].map(createDetailItem)} layout="stackColumn" withSeparators isLoading={isLoading} /> - </Styled.DetachedSection> + </$DetachedSection> - <Styled.DetachedScrollableSection> - <Styled.MobileDetails + <$DetachedScrollableSection> + <$MobileDetails items={[mainFieldsContent[2], mainFieldsContent[3]].map(createDetailItem)} layout="rowColumns" withSeparators isLoading={isLoading} /> - </Styled.DetachedScrollableSection> + </$DetachedScrollableSection> - {!hasNoPositionInMarket && <Styled.DetachedSection>{actions}</Styled.DetachedSection>} + {!hasNoPositionInMarket && <$DetachedSection>{actions}</$DetachedSection>} - <Styled.DetachedSection> - <Styled.MobileDetails + <$DetachedSection> + <$MobileDetails items={detailFieldsContent.map(createDetailItem)} withSeparators isLoading={isLoading} /> - </Styled.DetachedSection> - </Styled.MobilePositionInfo> + </$DetachedSection> + </$MobilePositionInfo> ); } return ( - <Styled.PositionInfo> + <$PositionInfo> <div> <PositionTile currentSize={size?.current} notionalTotal={notionalTotal?.current} postOrderSize={size?.postOrder} stepSizeDecimals={stepSizeDecimals} - symbol={id || undefined} + symbol={id ?? undefined} tickSizeDecimals={tickSizeDecimals} isLoading={isLoading} /> - <Styled.PrimaryDetails + <$PrimaryDetails items={mainFieldsContent.map(createDetailItem)} justifyItems="end" layout="grid" @@ -385,7 +379,7 @@ export const PositionInfo = ({ showNarrowVariation }: { showNarrowVariation?: bo </div> <div> - <Styled.SecondaryDetails + <$SecondaryDetails items={detailFieldsContent.map(createDetailItem)} withOverflow={false} withSeparators @@ -394,13 +388,10 @@ export const PositionInfo = ({ showNarrowVariation }: { showNarrowVariation?: bo {!hasNoPositionInMarket && actions} </div> - </Styled.PositionInfo> + </$PositionInfo> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.DiffOutput = styled(DiffOutput)` +const $DiffOutput = styled(DiffOutput)` --diffOutput-gap: 0.125rem; --diffOutput-value-color: var(--color-text-2); --diffOutput-valueWithDiff-color: var(--color-text-0); @@ -409,7 +400,7 @@ Styled.DiffOutput = styled(DiffOutput)` justify-items: inherit; `; -Styled.PrimaryDetails = styled(Details)` +const $PrimaryDetails = styled(Details)` font: var(--font-mini-book); --details-value-font: var(--font-base-book); @@ -425,12 +416,12 @@ Styled.PrimaryDetails = styled(Details)` } `; -Styled.SecondaryDetails = styled(Details)` +const $SecondaryDetails = styled(Details)` font: var(--font-mini-book); --details-value-font: var(--font-small-book); `; -Styled.MobileDetails = styled(Details)` +const $MobileDetails = styled(Details)` font: var(--font-small-book); --details-value-font: var(--font-medium-medium); @@ -441,7 +432,7 @@ Styled.MobileDetails = styled(Details)` } `; -Styled.Actions = styled.footer` +const $Actions = styled.footer` display: flex; flex-wrap: wrap; gap: 0.5rem; @@ -455,13 +446,15 @@ Styled.Actions = styled.footer` } `; -Styled.Output = styled(Output)<{ sign: NumberSign; smallText?: boolean; margin?: string }>` +const $Output = styled(Output)<{ sign?: NumberSign; smallText?: boolean; margin?: string }>` color: ${({ sign }) => - ({ - [NumberSign.Positive]: `var(--color-positive)`, - [NumberSign.Negative]: `var(--color-negative)`, - [NumberSign.Neutral]: `var(--color-text-2)`, - }[sign])}; + sign == null + ? undefined + : { + [NumberSign.Positive]: `var(--color-positive)`, + [NumberSign.Negative]: `var(--color-negative)`, + [NumberSign.Neutral]: `var(--color-text-2)`, + }[sign]}; ${({ smallText }) => smallText && @@ -473,7 +466,7 @@ Styled.Output = styled(Output)<{ sign: NumberSign; smallText?: boolean; margin?: ${({ margin }) => margin && `margin: ${margin};`} `; -Styled.PositionInfo = styled.div` +const $PositionInfo = styled.div` margin: 0 auto; width: 100%; @@ -505,25 +498,25 @@ Styled.PositionInfo = styled.div` } `; -Styled.DetachedSection = styled(DetachedSection)` +const $DetachedSection = styled(DetachedSection)` padding: 0 1.5rem; position: relative; `; -Styled.DetachedScrollableSection = styled(DetachedScrollableSection)` +const $DetachedScrollableSection = styled(DetachedScrollableSection)` padding: 0 1.5rem; `; -Styled.MobilePositionInfo = styled.div` +const $MobilePositionInfo = styled.div` ${layoutMixins.column} gap: 1rem; - > ${Styled.DetachedSection}:nth-child(1) { + > ${$DetachedSection}:nth-child(1) { display: flex; gap: 1rem; flex-wrap: wrap; - > ${() => Styled.PositionTile} { + > ${() => $PositionTile} { flex: 2 9rem; // Icon + Tags @@ -532,35 +525,35 @@ Styled.MobilePositionInfo = styled.div` } } - > ${Styled.MobileDetails} { + > ${$MobileDetails} { flex: 1 9rem; } } - > ${Styled.DetachedScrollableSection}:nth-child(2) { + > ${$DetachedScrollableSection}:nth-child(2) { // Profit/Loss Section - > ${Styled.MobileDetails} { + > ${$MobileDetails} { margin: 0 -1rem; } } - > ${Styled.DetachedSection}:nth-last-child(1) { + > ${$DetachedSection}:nth-last-child(1) { // Other Details Section - > ${Styled.MobileDetails} { + > ${$MobileDetails} { margin: 0 -0.25rem; --details-value-font: var(--font-base-book); } } `; -Styled.PositionTile = styled(PositionTile)``; +const $PositionTile = styled(PositionTile)``; -Styled.ClosePositionButton = styled(Button)` +const $ClosePositionButton = styled(Button)` --button-border: solid var(--border-width) var(--color-border-red); --button-textColor: var(--color-red); `; -Styled.ClosePositionToggleButton = styled(ToggleButton)` +const $ClosePositionToggleButton = styled(ToggleButton)` --button-border: solid var(--border-width) var(--color-border-red); --button-toggle-off-textColor: var(--color-red); --button-toggle-on-textColor: var(--color-red); diff --git a/src/views/PositionTile.stories.tsx b/src/views/PositionTile.stories.tsx index 58834f595..b215cf648 100644 --- a/src/views/PositionTile.stories.tsx +++ b/src/views/PositionTile.stories.tsx @@ -1,22 +1,21 @@ import type { Story } from '@ladle/react'; -import { StoryWrapper } from '.ladle/components'; +import styled from 'styled-components'; -import styled, { AnyStyledComponent } from 'styled-components'; import { breakpoints } from '@/styles'; import { PositionTile } from './PositionTile'; +// eslint and prettier seem to conflict on ordering or something +// eslint-disable-next-line import/order +import { StoryWrapper } from '.ladle/components'; export const PositionTileStory: Story<Parameters<typeof PositionTile>[0]> = (args) => ( <StoryWrapper> - <Styled.PositionInfoContainer> + <$PositionInfoContainer> <PositionTile {...args} /> - </Styled.PositionInfoContainer> + </$PositionInfoContainer> </StoryWrapper> ); - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.PositionInfoContainer = styled.div` +const $PositionInfoContainer = styled.div` display: grid; height: 4.625rem; margin: auto; diff --git a/src/views/PositionTile.tsx b/src/views/PositionTile.tsx index 4642fd53f..8da7f8302 100644 --- a/src/views/PositionTile.tsx +++ b/src/views/PositionTile.tsx @@ -1,18 +1,19 @@ +import styled, { css } from 'styled-components'; + import { NumberSign, TOKEN_DECIMALS } from '@/constants/numbers'; import { PositionSide } from '@/constants/trade'; -import { isNumber, MustBigNumber } from '@/lib/numbers'; -import { hasPositionSideChanged } from '@/lib/tradeData'; +import { layoutMixins } from '@/styles/layoutMixins'; import { AssetIcon } from '@/components/AssetIcon'; -import { LoadingSpinner } from '@/components/Loading/LoadingSpinner'; import { DiffArrow } from '@/components/DiffArrow'; +import { LoadingSpinner } from '@/components/Loading/LoadingSpinner'; import { Output, OutputType, ShowSign } from '@/components/Output'; import { PositionSideTag } from '@/components/PositionSideTag'; import { TagSize } from '@/components/Tag'; -import styled, { AnyStyledComponent, css } from 'styled-components'; -import { layoutMixins } from '@/styles/layoutMixins'; +import { isNumber, MustBigNumber } from '@/lib/numbers'; +import { hasPositionSideChanged } from '@/lib/tradeData'; type ElementProps = { currentSize?: number | null; @@ -49,15 +50,15 @@ export const PositionTile = ({ currentPositionSide === PositionSide.None && newPositionSide === PositionSide.None; return ( - <Styled.PositionTile + <$PositionTile newPositionSide={newPositionSide} positionSide={currentPositionSide} positionSideHasChanged={positionSideHasChanged} showNarrowVariation={showNarrowVariation} > <div> - {showNarrowVariation && <Styled.AssetIcon symbol={symbol} />} - <Styled.PositionTags> + {showNarrowVariation && <$AssetIcon symbol={symbol} />} + <$PositionTags> <PositionSideTag positionSide={currentPositionSide} size={TagSize.Medium} /> {hasSizeDiff && newPositionSide && currentPositionSide !== newPositionSide && ( <> @@ -65,22 +66,22 @@ export const PositionTile = ({ <PositionSideTag positionSide={newPositionSide} size={TagSize.Medium} /> </> )} - </Styled.PositionTags> + </$PositionTags> </div> {!hasNoCurrentOrPostOrderPosition && ( - <Styled.PositionSizes showNarrowVariation={showNarrowVariation}> - <Styled.Output + <$PositionSizes showNarrowVariation={showNarrowVariation}> + <$Output type={OutputType.Number} tag={!hasSizeDiff && symbol} value={currentSize} - fractionDigits={stepSizeDecimals || TOKEN_DECIMALS} + fractionDigits={stepSizeDecimals ?? TOKEN_DECIMALS} showSign={ShowSign.None} smallText={hasSizeDiff} withBaseFont /> {hasSizeDiff ? ( - <Styled.PostOrderSizeRow> + <$PostOrderSizeRow> <DiffArrow sign={ MustBigNumber(postOrderSize).gt(currentSize ?? 0) @@ -88,17 +89,17 @@ export const PositionTile = ({ : NumberSign.Negative } /> - <Styled.Output + <$Output type={OutputType.Number} value={postOrderSize} - fractionDigits={stepSizeDecimals || TOKEN_DECIMALS} + fractionDigits={stepSizeDecimals ?? TOKEN_DECIMALS} showSign={ShowSign.None} tag={symbol} withBaseFont /> - </Styled.PostOrderSizeRow> + </$PostOrderSizeRow> ) : ( - <Styled.Output + <$Output type={OutputType.Fiat} value={notionalTotal} fractionDigits={tickSizeDecimals} @@ -106,20 +107,17 @@ export const PositionTile = ({ withBaseFont /> )} - </Styled.PositionSizes> + </$PositionSizes> )} - {isLoading && <Styled.LoadingSpinner />} - </Styled.PositionTile> + {isLoading && <$LoadingSpinner />} + </$PositionTile> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.PositionTags = styled.div` +const $PositionTags = styled.div` ${layoutMixins.inlineRow} `; -Styled.PositionSizes = styled.div<{ showNarrowVariation?: boolean }>` +const $PositionSizes = styled.div<{ showNarrowVariation?: boolean }>` display: flex; flex-direction: column; align-items: end; @@ -143,14 +141,7 @@ Styled.PositionSizes = styled.div<{ showNarrowVariation?: boolean }>` `} `; -Styled.Output = styled(Output)<{ sign: NumberSign; smallText?: boolean; margin?: string }>` - color: ${({ sign }) => - ({ - [NumberSign.Positive]: `var(--color-positive)`, - [NumberSign.Negative]: `var(--color-negative)`, - [NumberSign.Neutral]: `var(--color-text-2)`, - }[sign])}; - +const $Output = styled(Output)<{ smallText?: boolean; margin?: string }>` ${({ smallText }) => smallText && css` @@ -161,7 +152,7 @@ Styled.Output = styled(Output)<{ sign: NumberSign; smallText?: boolean; margin?: ${({ margin }) => margin && `margin: ${margin};`} `; -Styled.PositionTile = styled.div<{ +const $PositionTile = styled.div<{ newPositionSide?: PositionSide; positionSide?: PositionSide; positionSideHasChanged?: Boolean; @@ -235,14 +226,14 @@ Styled.PositionTile = styled.div<{ `}; `; -Styled.PostOrderSizeRow = styled.div` +const $PostOrderSizeRow = styled.div` ${layoutMixins.inlineRow} `; -Styled.AssetIcon = styled(AssetIcon)` +const $AssetIcon = styled(AssetIcon)` font-size: 2.25rem; `; -Styled.LoadingSpinner = styled(LoadingSpinner)` +const $LoadingSpinner = styled(LoadingSpinner)` color: var(--color-text-0); `; diff --git a/src/views/TradeBox.tsx b/src/views/TradeBox.tsx index 221dc8623..8d9c03b6d 100644 --- a/src/views/TradeBox.tsx +++ b/src/views/TradeBox.tsx @@ -1,18 +1,19 @@ -import styled, { type AnyStyledComponent } from 'styled-components'; import { useDispatch, useSelector } from 'react-redux'; +import styled from 'styled-components'; -import { STRING_KEYS } from '@/constants/localization'; import { TradeBoxDialogTypes } from '@/constants/dialogs'; +import { STRING_KEYS } from '@/constants/localization'; -import { layoutMixins } from '@/styles/layoutMixins'; +import { useStringGetter } from '@/hooks/useStringGetter'; -import { useStringGetter } from '@/hooks'; +import { layoutMixins } from '@/styles/layoutMixins'; import { Dialog, DialogPlacement } from '@/components/Dialog'; import { ClosePositionForm } from '@/views/forms/ClosePositionForm'; +import { SelectMarginModeForm } from '@/views/forms/SelectMarginModeForm'; +import { closeDialogInTradeBox, openDialogInTradeBox } from '@/state/dialogs'; import { getActiveTradeBoxDialog } from '@/state/dialogsSelectors'; -import { openDialogInTradeBox, closeDialogInTradeBox } from '@/state/dialogs'; import abacusStateManager from '@/lib/abacus'; @@ -36,13 +37,19 @@ export const TradeBox = () => { abacusStateManager.clearClosePositionInputValues({ shouldFocusOnTradeInput: true }); }, }, + [TradeBoxDialogTypes.SelectMarginMode]: { + title: stringGetter({ key: STRING_KEYS.MARGIN_MODE }), + content: ( + <SelectMarginModeForm onChangeMarginMode={() => dispatch(closeDialogInTradeBox())} /> + ), + }, }[activeDialog.type]; return ( - <Styled.TradeBox> + <$TradeBox> <TradeBoxOrderView /> - <Styled.Dialog + <$Dialog isOpen={!!activeDialog} title={activeDialogConfig?.title} setIsOpen={(isOpen: boolean) => { @@ -56,14 +63,11 @@ export const TradeBox = () => { {...activeDialog?.dialogProps} > {activeDialogConfig?.content} - </Styled.Dialog> - </Styled.TradeBox> + </$Dialog> + </$TradeBox> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.TradeBox = styled.section` +const $TradeBox = styled.section` --tradeBox-content-paddingTop: 1rem; --tradeBox-content-paddingRight: 1rem; --tradeBox-content-paddingBottom: 1rem; @@ -75,16 +79,16 @@ Styled.TradeBox = styled.section` ${layoutMixins.stack} `; -Styled.Dialog = styled(Dialog)` +const $Dialog = styled(Dialog)` --dialog-backgroundColor: var(--color-layer-2); - --dialog-paddingX: 1.5rem; + --dialog-paddingX: 1.25rem; --dialog-header-paddingTop: 1.25rem; --dialog-header-paddingBottom: 0.25rem; --dialog-content-paddingTop: 1rem; - --dialog-content-paddingRight: 1.5rem; - --dialog-content-paddingBottom: 1.25rem; - --dialog-content-paddingLeft: 1.5rem; + --dialog-content-paddingRight: 1rem; + --dialog-content-paddingBottom: 1rem; + --dialog-content-paddingLeft: 1rem; `; diff --git a/src/views/TradeBoxOrderView.tsx b/src/views/TradeBoxOrderView.tsx index be0deead8..f4bd6aeb4 100644 --- a/src/views/TradeBoxOrderView.tsx +++ b/src/views/TradeBoxOrderView.tsx @@ -1,15 +1,18 @@ import { useCallback } from 'react'; -import styled, { AnyStyledComponent } from 'styled-components'; + import { shallowEqual, useSelector } from 'react-redux'; import { createSelector } from 'reselect'; +import styled from 'styled-components'; import { TradeInputField } from '@/constants/abacus'; -import { TradeTypes } from '@/constants/trade'; import { STRING_KEYS, StringKey } from '@/constants/localization'; -import { useStringGetter } from '@/hooks'; +import { TradeTypes } from '@/constants/trade'; + +import { useStringGetter } from '@/hooks/useStringGetter'; + import { layoutMixins } from '@/styles/layoutMixins'; -import { Tabs } from '@/components/Tabs'; +import { TabItem, Tabs } from '@/components/Tabs'; import { getInputTradeData, getInputTradeOptions } from '@/state/inputsSelectors'; @@ -18,7 +21,10 @@ import { isTruthy } from '@/lib/isTruthy'; import { TradeForm } from './forms/TradeForm'; -const useTradeTypeOptions = () => { +const useTradeTypeOptions = (): { + tradeTypeItems: TabItem<string>[]; + selectedTradeType: TradeTypes; +} => { const stringGetter = useStringGetter(); const selectedTradeType = useSelector( createSelector( @@ -44,11 +50,12 @@ const useTradeTypeOptions = () => { // All conditional orders labeled under "Stop Order" allTradeTypeItems?.length && { label: stringGetter({ key: STRING_KEYS.STOP_ORDER_SHORT }), + value: '', subitems: allTradeTypeItems ?.map( ({ value, label }) => - value && { - value: value as TradeTypes, + value != null && { + value, label, } ) @@ -60,7 +67,7 @@ const useTradeTypeOptions = () => { }; export const TradeBoxOrderView = () => { - const onTradeTypeChange = useCallback((tradeType?: TradeTypes) => { + const onTradeTypeChange = useCallback((tradeType?: string) => { if (tradeType) { abacusStateManager.clearTradeInputValues(); abacusStateManager.setTradeValue({ value: tradeType, field: TradeInputField.type }); @@ -70,27 +77,25 @@ export const TradeBoxOrderView = () => { const { selectedTradeType, tradeTypeItems } = useTradeTypeOptions(); return ( - <Styled.Tabs + <$Tabs key={selectedTradeType} value={selectedTradeType} items={tradeTypeItems} onValueChange={onTradeTypeChange} sharedContent={ - <Styled.Container> + <$Container> <TradeForm /> - </Styled.Container> + </$Container> } fullWidthTabs /> ); }; -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.Container = styled.div` +const $Container = styled.div` ${layoutMixins.scrollArea} `; -Styled.Tabs = styled(Tabs)` +const $Tabs = styled(Tabs)` overflow: hidden; -`; +` as typeof Tabs; diff --git a/src/views/charts/DepthChart/Tooltip.tsx b/src/views/charts/DepthChart/Tooltip.tsx index 3d4b0a3e3..5ff95783a 100644 --- a/src/views/charts/DepthChart/Tooltip.tsx +++ b/src/views/charts/DepthChart/Tooltip.tsx @@ -1,4 +1,5 @@ import { useMemo } from 'react'; + import { OrderSide } from '@dydxprotocol/v4-client-js'; import type { RenderTooltipParams } from '@visx/xychart/lib/components/Tooltip'; import { shallowEqual, useSelector } from 'react-redux'; @@ -12,12 +13,12 @@ import { } from '@/constants/charts'; import { STRING_KEYS } from '@/constants/localization'; -import { useStringGetter } from '@/hooks'; import { useOrderbookValuesForDepthChart } from '@/hooks/Orderbook/useOrderbookValues'; +import { useStringGetter } from '@/hooks/useStringGetter'; -import { TooltipContent } from '@/components/visx/TooltipContent'; import { Details } from '@/components/Details'; import { Output, OutputType } from '@/components/Output'; +import { TooltipContent } from '@/components/visx/TooltipContent'; import { getCurrentMarketAssetData } from '@/state/assetsSelectors'; @@ -38,13 +39,13 @@ export const DepthChartTooltipContent = ({ tickSizeDecimals, tooltipData, }: DepthChartTooltipProps) => { - const { nearestDatum } = tooltipData || {}; + const { nearestDatum } = tooltipData ?? {}; const stringGetter = useStringGetter(); const { spread, spreadPercent, midMarketPrice } = useOrderbookValuesForDepthChart(); const { id = '' } = useSelector(getCurrentMarketAssetData, shallowEqual) ?? {}; const priceImpact = useMemo(() => { - if (nearestDatum) { + if (nearestDatum && midMarketPrice) { const depthChartSeries = nearestDatum.key as DepthChartSeries; return { @@ -57,6 +58,7 @@ export const DepthChartTooltipContent = ({ [DepthChartSeries.MidMarket]: undefined, }[depthChartSeries]; } + return undefined; }, [nearestDatum, chartPointAtPointer.price]); @@ -200,8 +202,8 @@ export const DepthChartTooltipContent = ({ useGrouping type={OutputType.Fiat} value={ - nearestDatum - ? nearestDatum?.datum.price * nearestDatum?.datum.depth + nearestDatum != null + ? nearestDatum.datum.price * nearestDatum.datum.depth : undefined } /> diff --git a/src/views/charts/DepthChart/index.tsx b/src/views/charts/DepthChart/index.tsx index b1d210174..8cde56213 100644 --- a/src/views/charts/DepthChart/index.tsx +++ b/src/views/charts/DepthChart/index.tsx @@ -1,7 +1,22 @@ import { useCallback, useEffect, useMemo, useState } from 'react'; -import styled, { AnyStyledComponent, css, keyframes } from 'styled-components'; -import { useSelector, shallowEqual } from 'react-redux'; + import { OrderSide } from '@dydxprotocol/v4-client-js'; +import { curveStepAfter } from '@visx/curve'; +import { LinearGradient } from '@visx/gradient'; +import { Point } from '@visx/point'; +import { + AreaSeries, + Axis, + DataProvider, + EventEmitterProvider, // AnimatedAxis, + Grid, // AnimatedGrid, + LineSeries, // AnimatedAreaSeries, + buildChartTheme, + darkTheme, + type EventHandlerParams, +} from '@visx/xychart'; +import { shallowEqual, useSelector } from 'react-redux'; +import styled, { keyframes } from 'styled-components'; import { DepthChartDatum, @@ -11,32 +26,17 @@ import { } from '@/constants/charts'; import { StringGetterFunction } from '@/constants/localization'; -import { useBreakpoints } from '@/hooks'; import { useOrderbookValuesForDepthChart } from '@/hooks/Orderbook/useOrderbookValues'; - -import { getCurrentMarketConfig } from '@/state/perpetualsSelectors'; -import { getCurrentMarketAssetData } from '@/state/assetsSelectors'; - -import { XYChartWithPointerEvents } from '@/components/visx/XYChartWithPointerEvents'; -import { - Axis, // AnimatedAxis, - Grid, // AnimatedGrid, - LineSeries, - AreaSeries, // AnimatedAreaSeries, - buildChartTheme, - darkTheme, - DataProvider, - EventEmitterProvider, - type EventHandlerParams, -} from '@visx/xychart'; -import { LinearGradient } from '@visx/gradient'; -import { curveStepAfter } from '@visx/curve'; -import { Point } from '@visx/point'; -import Tooltip from '@/components/visx/XYChartTooltipWithBounds'; -import { AxisLabelOutput } from '@/components/visx/AxisLabelOutput'; +import { useBreakpoints } from '@/hooks/useBreakpoints'; import { LoadingSpace } from '@/components/Loading/LoadingSpinner'; import { OutputType } from '@/components/Output'; +import { AxisLabelOutput } from '@/components/visx/AxisLabelOutput'; +import Tooltip from '@/components/visx/XYChartTooltipWithBounds'; +import { XYChartWithPointerEvents } from '@/components/visx/XYChartWithPointerEvents'; + +import { getCurrentMarketAssetData } from '@/state/assetsSelectors'; +import { getCurrentMarketConfig } from '@/state/perpetualsSelectors'; import { MustBigNumber } from '@/lib/numbers'; @@ -119,25 +119,26 @@ export const DepthChart = ({ if (!(zoomDomain && midMarketPrice && asks.length && bids.length)) return { domain: [0, 0] as const, range: [0, 0] as const }; - const domain = [ + const newDomain = [ clamp(midMarketPrice - zoomDomain, 0, highestBid.price), clamp(midMarketPrice + zoomDomain, lowestAsk.price, highestAsk.price), ] as const; - const range = [ + const newRange = [ 0, [...bids, ...asks] - .filter((datum) => datum.price >= domain[0] && datum.price <= domain[1]) + .filter((datum) => datum.price >= newDomain[0] && datum.price <= newDomain[1]) .map((datum) => datum.depth) .reduce((a, b) => Math.max(a, b), 0), ] as const; - return { domain, range }; + return { domain: newDomain, range: newRange }; }, [orderbook, zoomDomain]); const getChartPoint = useCallback( (point: Point | EventHandlerParams<object>) => { - let price, size; + let price; + let size; if (point instanceof Point) { const { x, y } = point as Point; price = x; @@ -167,7 +168,7 @@ export const DepthChart = ({ const onDepthChartZoom = ({ deltaY, wheelDelta = deltaY, - }: WheelEvent & { wheelDelta?: number }) => { + }: React.WheelEvent & { wheelDelta?: number }) => { setZoomDomain( clamp( Math.max( @@ -181,7 +182,7 @@ export const DepthChart = ({ }; return ( - <Styled.Container onWheel={onDepthChartZoom}> + <$Container onWheel={onDepthChartZoom}> <DataProvider theme={theme} xScale={{ @@ -211,7 +212,7 @@ export const DepthChart = ({ }} onPointerUp={(point) => point && onChartClick?.(getChartPoint(point))} onPointerMove={(point) => point && setChartPointAtPointer(getChartPoint(point))} - onPointerPressedChange={(isPointerPressed) => setIsPointerPressed(isPointerPressed)} + onPointerPressedChange={(pointerPressed) => setIsPointerPressed(pointerPressed)} > <Axis orientation="bottom" @@ -315,7 +316,7 @@ export const DepthChart = ({ verticalCrosshairStyle={{ strokeWidth: 1, strokeDasharray: '5 5', opacity: 0.7 }} snapCrosshairToDatumX={!isEditingOrder} renderXAxisLabel={({ tooltipData }) => ( - <Styled.XAxisLabelOutput + <$XAxisLabelOutput type={OutputType.Fiat} value={ isEditingOrder && chartPointAtPointer @@ -341,7 +342,7 @@ export const DepthChart = ({ snapCrosshairToDatumY={!isEditingOrder} renderYAxisLabel={({ tooltipData }) => (isEditingOrder || tooltipData!.nearestDatum?.datum.depth) && ( - <Styled.YAxisLabelOutput + <$YAxisLabelOutput type={OutputType.Asset} value={ isEditingOrder && chartPointAtPointer @@ -385,13 +386,10 @@ export const DepthChart = ({ </XYChartWithPointerEvents> </EventEmitterProvider> </DataProvider> - </Styled.Container> + </$Container> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.Container = styled.div` +const $Container = styled.div` width: 0; min-width: 100%; height: 0; @@ -430,11 +428,11 @@ Styled.Container = styled.div` } `; -Styled.XAxisLabelOutput = styled(AxisLabelOutput)` +const $XAxisLabelOutput = styled(AxisLabelOutput)` box-shadow: 0 0 0.5rem var(--color-layer-2); `; -Styled.YAxisLabelOutput = styled(AxisLabelOutput)` +const $YAxisLabelOutput = styled(AxisLabelOutput)` --axisLabel-offset: 0.5rem; [data-side='left'] & { diff --git a/src/views/charts/FundingChart/Tooltip.tsx b/src/views/charts/FundingChart/Tooltip.tsx index 5e5a87a8b..1efc83c00 100644 --- a/src/views/charts/FundingChart/Tooltip.tsx +++ b/src/views/charts/FundingChart/Tooltip.tsx @@ -1,13 +1,14 @@ import type { RenderTooltipParams } from '@visx/xychart/lib/components/Tooltip'; -import { TooltipContent } from '@/components/visx/TooltipContent'; import { FundingRateResolution, type FundingChartDatum } from '@/constants/charts'; import { STRING_KEYS } from '@/constants/localization'; import { FundingDirection } from '@/constants/markets'; -import { useStringGetter } from '@/hooks'; + +import { useStringGetter } from '@/hooks/useStringGetter'; import { Details, DetailsItem } from '@/components/Details'; import { Output, OutputType, ShowSign } from '@/components/Output'; +import { TooltipContent } from '@/components/visx/TooltipContent'; type FundingChartTooltipProps = { fundingRateView: FundingRateResolution; @@ -19,7 +20,7 @@ export const FundingChartTooltipContent = ({ latestDatum, tooltipData, }: FundingChartTooltipProps) => { - const { nearestDatum } = tooltipData || {}; + const { nearestDatum } = tooltipData ?? {}; const stringGetter = useStringGetter(); const tooltipDatum = nearestDatum?.datum ?? latestDatum; diff --git a/src/views/charts/FundingChart/index.tsx b/src/views/charts/FundingChart/index.tsx index 136a22cf9..185de7679 100644 --- a/src/views/charts/FundingChart/index.tsx +++ b/src/views/charts/FundingChart/index.tsx @@ -1,28 +1,31 @@ import { useState } from 'react'; -import { shallowEqual, useSelector } from 'react-redux'; -import styled, { type AnyStyledComponent, css } from 'styled-components'; + import { curveMonotoneX, curveStepAfter } from '@visx/curve'; +import type { TooltipContextType } from '@visx/xychart'; +import { shallowEqual, useSelector } from 'react-redux'; +import styled, { css } from 'styled-components'; import { ButtonSize } from '@/constants/buttons'; import { FundingRateResolution, type FundingChartDatum } from '@/constants/charts'; import { STRING_KEYS } from '@/constants/localization'; import { FundingDirection } from '@/constants/markets'; import { SMALL_PERCENT_DECIMALS, TINY_PERCENT_DECIMALS } from '@/constants/numbers'; -import { useBreakpoints, useStringGetter } from '@/hooks'; + +import { useBreakpoints } from '@/hooks/useBreakpoints'; +import { useStringGetter } from '@/hooks/useStringGetter'; import { breakpoints } from '@/styles'; -import { Output, OutputType } from '@/components/Output'; import { LoadingSpace } from '@/components/Loading/LoadingSpinner'; +import { Output, OutputType } from '@/components/Output'; import { ToggleGroup } from '@/components/ToggleGroup'; - -import { TimeSeriesChart } from '@/components/visx/TimeSeriesChart'; import { AxisLabelOutput } from '@/components/visx/AxisLabelOutput'; -import type { TooltipContextType } from '@visx/xychart'; +import { TimeSeriesChart } from '@/components/visx/TimeSeriesChart'; import { calculateFundingRateHistory } from '@/state/perpetualsCalculators'; import { MustBigNumber } from '@/lib/numbers'; + import { FundingChartTooltipContent } from './Tooltip'; const FUNDING_RATE_TIME_RESOLUTION = 60 * 60 * 1000; // 1 hour @@ -91,13 +94,13 @@ export const FundingChart = ({ selectedLocale }: ElementProps) => { renderXAxisLabel={({ tooltipData }) => { const tooltipDatum = tooltipData!.nearestDatum?.datum ?? latestDatum; - return <Styled.XAxisLabelOutput type={OutputType.DateTime} value={tooltipDatum.time} />; + return <$XAxisLabelOutput type={OutputType.DateTime} value={tooltipDatum.time} />; }} renderYAxisLabel={({ tooltipData }) => { const tooltipDatum = tooltipData!.nearestDatum?.datum ?? latestDatum; return ( - <Styled.YAxisLabelOutput + <$YAxisLabelOutput type={OutputType.SmallPercent} value={getAllFundingRates(tooltipDatum.fundingRate)[fundingRateView]} accentColor={ @@ -117,12 +120,12 @@ export const FundingChart = ({ selectedLocale }: ElementProps) => { latestDatum={latestDatum} /> )} - onTooltipContext={(tooltipContext) => setTooltipContext(tooltipContext)} + onTooltipContext={(ttContext) => setTooltipContext(ttContext)} minZoomDomain={FUNDING_RATE_TIME_RESOLUTION * 4} numGridLines={1} slotEmpty={<LoadingSpace id="funding-chart-loading" />} > - <Styled.FundingRateToggle> + <$FundingRateToggle> <ToggleGroup items={Object.keys(FundingRateResolution).map((rate: string) => ({ value: rate as FundingRateResolution, @@ -137,15 +140,15 @@ export const FundingChart = ({ selectedLocale }: ElementProps) => { [FundingRateResolution.Annualized]: stringGetter({ key: STRING_KEYS.ANNUALIZED, }), - }[rate] || '', + }[rate] ?? '', }))} value={fundingRateView} onValueChange={setFundingRateView} size={ButtonSize.XSmall} /> - </Styled.FundingRateToggle> + </$FundingRateToggle> - <Styled.CurrentFundingRate isShowing={!tooltipContext?.tooltipOpen}> + <$CurrentFundingRate isShowing={!tooltipContext?.tooltipOpen}> <h4> { { @@ -161,27 +164,24 @@ export const FundingChart = ({ selectedLocale }: ElementProps) => { }[fundingRateView] } </h4> - <Styled.Output + <$Output type={OutputType.SmallPercent} value={latestFundingRate} fractionDigits={TINY_PERCENT_DECIMALS} isNegative={latestFundingRate < 0} /> - </Styled.CurrentFundingRate> + </$CurrentFundingRate> </TimeSeriesChart> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.FundingRateToggle = styled.div` +const $FundingRateToggle = styled.div` place-self: start end; isolation: isolate; margin: 1rem; `; -Styled.CurrentFundingRate = styled.div<{ isShowing?: boolean }>` +const $CurrentFundingRate = styled.div<{ isShowing?: boolean }>` place-self: start center; padding: clamp(1.5rem, 9rem - 15%, 4rem); pointer-events: none; @@ -193,16 +193,6 @@ Styled.CurrentFundingRate = styled.div<{ isShowing?: boolean }>` text-align: center; - /* Hover-based */ - /* - transition: opacity var(--ease-out-expo) 0.25s 0.3s; - - ${Styled.TimeSeriesChart}:hover ${Styled.FundingRateToggle}:not(:hover) + & { - opacity: 0; - transition-delay: 0s; - } - */ - /* Tooltip state-based */ transition: opacity var(--ease-out-expo) 0.25s; ${({ isShowing }) => @@ -223,15 +213,15 @@ Styled.CurrentFundingRate = styled.div<{ isShowing?: boolean }>` } `; -Styled.Output = styled(Output)<{ isNegative?: boolean }>` +const $Output = styled(Output)<{ isNegative?: boolean }>` color: ${({ isNegative }) => (isNegative ? `var(--color-negative)` : `var(--color-positive)`)}; `; -Styled.XAxisLabelOutput = styled(AxisLabelOutput)` +const $XAxisLabelOutput = styled(AxisLabelOutput)` box-shadow: 0 0 0.5rem var(--color-layer-2); `; -Styled.YAxisLabelOutput = styled(AxisLabelOutput)` +const $YAxisLabelOutput = styled(AxisLabelOutput)` --axisLabel-offset: 0.5rem; [data-side='left'] & { diff --git a/src/views/charts/PnlChart.tsx b/src/views/charts/PnlChart.tsx index df65430b8..d011c7d06 100644 --- a/src/views/charts/PnlChart.tsx +++ b/src/views/charts/PnlChart.tsx @@ -1,25 +1,23 @@ -import { type ReactNode, useCallback, useEffect, useMemo, useState } from 'react'; -import { useSelector, shallowEqual } from 'react-redux'; -import styled, { AnyStyledComponent, css } from 'styled-components'; -import { curveLinear /*, curveMonotoneX*/ } from '@visx/curve'; -import debounce from 'lodash/debounce'; +import { useCallback, useEffect, useMemo, useState, type ReactNode } from 'react'; + +import { curveLinear } from '@visx/curve'; +import type { TooltipContextType } from '@visx/xychart'; +import _, { debounce } from 'lodash'; +import { shallowEqual, useSelector } from 'react-redux'; +import styled from 'styled-components'; import { + HISTORICAL_PNL_PERIODS, HistoricalPnlPeriod, HistoricalPnlPeriods, - HISTORICAL_PNL_PERIODS, } from '@/constants/abacus'; import { timeUnits } from '@/constants/time'; -import { breakpoints } from '@/styles'; -import { useBreakpoints, useNow } from '@/hooks'; +import { useBreakpoints } from '@/hooks/useBreakpoints'; +import { useNow } from '@/hooks/useNow'; -import { Output } from '@/components/Output'; import { ToggleGroup } from '@/components/ToggleGroup'; - -import type { TooltipContextType } from '@visx/xychart'; import { TimeSeriesChart } from '@/components/visx/TimeSeriesChart'; -import { AxisLabelOutput } from '@/components/visx/AxisLabelOutput'; import { getSubaccount, @@ -58,6 +56,10 @@ const MS_FOR_PERIOD = { [HistoricalPnlPeriod.Period90d.name]: 90 * timeUnits.day, }; +const zoomDomainDefaultValues = new Set(Object.values(MS_FOR_PERIOD)); +const getPeriodFromName = (periodName: string) => + HISTORICAL_PNL_PERIODS[periodName as keyof typeof HISTORICAL_PNL_PERIODS]; + const DARK_CHART_BACKGROUND_URL = '/chart-dots-background-dark.svg'; const LIGHT_CHART_BACKGROUND_URL = '/chart-dots-background-light.svg'; @@ -83,57 +85,42 @@ export const PnlChart = ({ }: PnlChartProps) => { const { isTablet } = useBreakpoints(); const appTheme = useSelector(getAppTheme); - const { equity } = useSelector(getSubaccount, shallowEqual) || {}; + const { equity } = useSelector(getSubaccount, shallowEqual) ?? {}; const now = useNow({ intervalMs: timeUnits.minute }); // Chart data const pnlData = useSelector(getSubaccountHistoricalPnl, shallowEqual); const subaccountId = useSelector(getSubaccountId, shallowEqual); - const [minimumRequestedZoomDomain, setMinimumRequestedZoomDomain] = useState(-Infinity); + const [periodOptions, setPeriodOptions] = useState<HistoricalPnlPeriods[]>([ + HistoricalPnlPeriod.Period1d, + ]); const [selectedPeriod, setSelectedPeriod] = useState<HistoricalPnlPeriods>( - abacusStateManager.getHistoricalPnlPeriod() || HistoricalPnlPeriod.Period1d + HistoricalPnlPeriod.Period1d ); - /** - * Default period in Abacus to 90d so that we can work with a larger dataset - */ + const [isZooming, setIsZooming] = useState(false); + + // Fetch 90d data once in Abacus for the chart useEffect(() => { abacusStateManager.setHistoricalPnlPeriod(HistoricalPnlPeriod.Period90d); - }, [pnlData]); - - const onSelectPeriod = useCallback( - (periodName: string) => { - setSelectedPeriod( - HISTORICAL_PNL_PERIODS[ - (periodName as keyof typeof HISTORICAL_PNL_PERIODS) || selectedPeriod.name - ] - ); - }, - [setSelectedPeriod, selectedPeriod] - ); + }, []); + + const onSelectPeriod = (periodName: string) => setSelectedPeriod(getPeriodFromName(periodName)); + // Unselect selected period in toggle if user zooms in/out const onZoomSnap = useCallback( - debounce( - ({ zoomDomain }: { zoomDomain?: number }) => - zoomDomain && setMinimumRequestedZoomDomain(zoomDomain), - 500 - ), - [setMinimumRequestedZoomDomain] + debounce(({ zoomDomain }: { zoomDomain?: number }) => { + if (zoomDomain) { + setIsZooming(!zoomDomainDefaultValues.has(zoomDomain)); + } + }, 200), + [] ); - useEffect(() => { - const smallestRequestedPeriod = Object.entries(MS_FOR_PERIOD).find( - ([, milliseconds]) => milliseconds >= minimumRequestedZoomDomain - )?.[0]; - - if (smallestRequestedPeriod && smallestRequestedPeriod !== selectedPeriod.name) { - setSelectedPeriod( - HISTORICAL_PNL_PERIODS[smallestRequestedPeriod as keyof typeof MS_FOR_PERIOD] - ); - } - }, [minimumRequestedZoomDomain]); + // Snap back to default zoom domain according to selected period + const onToggleInteract = () => setIsZooming(false); const lastPnlTick = pnlData?.[pnlData.length - 1]; @@ -154,27 +141,56 @@ export const PnlChart = ({ (datum) => ({ id: datum.createdAtMilliseconds, - subaccountId: subaccountId, + subaccountId, equity: Number(datum.equity), totalPnl: Number(datum.totalPnl), netTransfers: Number(datum.netTransfers), createdAt: new Date(datum.createdAtMilliseconds).valueOf(), side: { [-1]: PnlSide.Loss, - [0]: PnlSide.Flat, - [1]: PnlSide.Profit, + 0: PnlSide.Flat, + 1: PnlSide.Profit, }[Math.sign(datum.equity)], } as PnlDatum) ) : [], - [pnlData, equity, selectedPeriod, now] + [pnlData, equity?.current, now] ); + // Include period option if oldest pnl is older than the previous option + // e.g. oldest pnl is 31 days old -> show 90d option + const getPeriodOptions = (oldestPnlMs: number): HistoricalPnlPeriods[] => + Object.entries(MS_FOR_PERIOD).reduce( + (acc: HistoricalPnlPeriods[], [, ms], i, arr) => { + if (oldestPnlMs < now - ms) { + const nextPeriod = _.get(arr, [i + 1, 0]); + if (nextPeriod) { + acc.push(getPeriodFromName(nextPeriod)); + } + } + return acc; + }, + [HistoricalPnlPeriod.Period1d] + ); + + const oldestPnlCreatedAt = pnlData?.[0]?.createdAtMilliseconds; + + useEffect(() => { + if (oldestPnlCreatedAt) { + const options = getPeriodOptions(oldestPnlCreatedAt); + setPeriodOptions(options); + + // default to show 7d period if there's enough data + if (options[options.length - 1] === HistoricalPnlPeriod.Period7d) + setSelectedPeriod(HistoricalPnlPeriod.Period7d); + } + }, [oldestPnlCreatedAt]); + const chartBackground = appTheme === AppTheme.Light ? LIGHT_CHART_BACKGROUND_URL : DARK_CHART_BACKGROUND_URL; return ( - <Styled.Container className={className} chartBackground={chartBackground}> + <$Container className={className} chartBackground={chartBackground}> <TimeSeriesChart id="pnl-chart" selectedLocale={selectedLocale} @@ -215,81 +231,40 @@ export const PnlChart = ({ onVisibleDataChange={onVisibleDataChange} onZoom={onZoomSnap} slotEmpty={slotEmpty} - defaultZoomDomain={MS_FOR_PERIOD[selectedPeriod.name]} + defaultZoomDomain={isZooming ? undefined : MS_FOR_PERIOD[selectedPeriod.name]} minZoomDomain={PNL_TIME_RESOLUTION * 2} numGridLines={0} tickSpacingX={210} tickSpacingY={75} > - <Styled.PeriodToggle> + <$PeriodToggle> <ToggleGroup - items={[ - HistoricalPnlPeriod.Period1d.name, - HistoricalPnlPeriod.Period7d.name, - HistoricalPnlPeriod.Period30d.name, - HistoricalPnlPeriod.Period90d.name, - ].map((period) => ({ - value: period, - label: formatRelativeTime(MS_FOR_PERIOD[period], { + items={periodOptions.map((period) => ({ + value: period.name, + label: formatRelativeTime(MS_FOR_PERIOD[period.name], { locale: selectedLocale, relativeToTimestamp: 0, largestUnit: 'day', }), }))} - value={selectedPeriod.name} + value={isZooming ? '' : selectedPeriod.name} onValueChange={onSelectPeriod} + onInteraction={onToggleInteract} /> - </Styled.PeriodToggle> + </$PeriodToggle> </TimeSeriesChart> - </Styled.Container> + </$Container> ); }; -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.Container = styled.div<{ chartBackground: string }>` +const $Container = styled.div<{ chartBackground: string }>` position: relative; background: url(${({ chartBackground }) => chartBackground}) no-repeat center center; `; -Styled.PeriodToggle = styled.div` +const $PeriodToggle = styled.div` place-self: start end; isolation: isolate; margin: 1rem; `; - -Styled.SignedOutput = styled(Output)<{ side: PnlSide }>` - ${({ side }) => - ({ - [PnlSide.Loss]: css` - /* --output-sign-color: var(--color-negative); */ - color: var(--color-negative); - `, - [PnlSide.Profit]: css` - /* --output-sign-color: var(--color-positive); */ - color: var(--color-positive); - `, - [PnlSide.Flat]: css``, - }[side])}; -`; - -Styled.XAxisLabelOutput = styled(AxisLabelOutput)` - box-shadow: 0 0 0.5rem var(--color-layer-2); -`; - -Styled.YAxisLabelOutput = styled(AxisLabelOutput)` - --axisLabel-offset: 0.5rem; - - [data-side='left'] & { - translate: calc(-50% - var(--axisLabel-offset)) 0; - - @media ${breakpoints.mobile} { - translate: calc(50% + var(--axisLabel-offset)) 0; - } - } - - [data-side='right'] & { - translate: calc(-50% - var(--axisLabel-offset)) 0; - } -`; diff --git a/src/views/charts/TvChart.tsx b/src/views/charts/TvChart.tsx index 45b4455f8..7567ef3b2 100644 --- a/src/views/charts/TvChart.tsx +++ b/src/views/charts/TvChart.tsx @@ -1,8 +1,7 @@ import { useRef, useState } from 'react'; -import styled, { type AnyStyledComponent, css } from 'styled-components'; - import type { ResolutionString } from 'public/tradingview/charting_library'; +import styled, { css } from 'styled-components'; import type { TvWidget } from '@/constants/tvchart'; @@ -13,10 +12,10 @@ import { useTradingViewTheme, } from '@/hooks/tradingView'; -import { LoadingSpace } from '@/components/Loading/LoadingSpinner'; - import { layoutMixins } from '@/styles/layoutMixins'; +import { LoadingSpace } from '@/components/Loading/LoadingSpinner'; + export const TvChart = () => { const [isChartReady, setIsChartReady] = useState(false); @@ -37,17 +36,14 @@ export const TvChart = () => { useTradingViewTheme({ tvWidget, isWidgetReady, chartLines }); return ( - <Styled.PriceChart isChartReady={isChartReady}> + <$PriceChart isChartReady={isChartReady}> {!isChartReady && <LoadingSpace id="tv-chart-loading" />} <div id="tv-price-chart" /> - </Styled.PriceChart> + </$PriceChart> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.PriceChart = styled.div<{ isChartReady?: boolean }>` +const $PriceChart = styled.div<{ isChartReady?: boolean }>` ${layoutMixins.stack} height: 100%; diff --git a/src/views/dialogs/AdjustIsolatedMarginDialog.tsx b/src/views/dialogs/AdjustIsolatedMarginDialog.tsx new file mode 100644 index 000000000..489574db3 --- /dev/null +++ b/src/views/dialogs/AdjustIsolatedMarginDialog.tsx @@ -0,0 +1,43 @@ +import { shallowEqual, useSelector } from 'react-redux'; +import styled from 'styled-components'; + +import type { SubaccountPosition } from '@/constants/abacus'; +import { STRING_KEYS } from '@/constants/localization'; + +import { useStringGetter } from '@/hooks/useStringGetter'; + +import { layoutMixins } from '@/styles/layoutMixins'; + +import { AssetIcon } from '@/components/AssetIcon'; +import { Dialog } from '@/components/Dialog'; + +import { getOpenPositionFromId } from '@/state/accountSelectors'; + +import { AdjustIsolatedMarginForm } from '../forms/AdjustIsolatedMarginForm'; + +type ElementProps = { + positionId: SubaccountPosition['id']; + setIsOpen?: (open: boolean) => void; +}; + +export const AdjustIsolatedMarginDialog = ({ positionId, setIsOpen }: ElementProps) => { + const stringGetter = useStringGetter(); + const subaccountPosition = useSelector(getOpenPositionFromId(positionId), shallowEqual); + + return ( + <Dialog + isOpen + setIsOpen={setIsOpen} + slotIcon={subaccountPosition && <AssetIcon symbol={subaccountPosition.assetId} />} + title={stringGetter({ key: STRING_KEYS.ADJUST_ISOLATED_MARGIN })} + > + <$Content> + <AdjustIsolatedMarginForm marketId={positionId} /> + </$Content> + </Dialog> + ); +}; +const $Content = styled.div` + ${layoutMixins.column} + gap: 1rem; +`; diff --git a/src/views/dialogs/AdjustTargetLeverageDialog.tsx b/src/views/dialogs/AdjustTargetLeverageDialog.tsx new file mode 100644 index 000000000..259d79ae3 --- /dev/null +++ b/src/views/dialogs/AdjustTargetLeverageDialog.tsx @@ -0,0 +1,35 @@ +import styled from 'styled-components'; + +import { STRING_KEYS } from '@/constants/localization'; + +import { useStringGetter } from '@/hooks/useStringGetter'; + +import { layoutMixins } from '@/styles/layoutMixins'; + +import { Dialog } from '@/components/Dialog'; + +import { AdjustTargetLeverageForm } from '../forms/AdjustTargetLeverageForm'; + +type ElementProps = { + setIsOpen?: (open: boolean) => void; +}; + +export const AdjustTargetLeverageDialog = ({ setIsOpen }: ElementProps) => { + const stringGetter = useStringGetter(); + + return ( + <Dialog + isOpen + setIsOpen={setIsOpen} + title={stringGetter({ key: STRING_KEYS.ADJUST_TARGET_LEVERAGE })} + > + <$Content> + <AdjustTargetLeverageForm onSetTargetLeverage={() => setIsOpen?.(false)} /> + </$Content> + </Dialog> + ); +}; +const $Content = styled.div` + ${layoutMixins.column} + gap: 1rem; +`; diff --git a/src/views/dialogs/ClosePositionDialog.tsx b/src/views/dialogs/ClosePositionDialog.tsx index f75a2d937..86faae4ca 100644 --- a/src/views/dialogs/ClosePositionDialog.tsx +++ b/src/views/dialogs/ClosePositionDialog.tsx @@ -1,21 +1,25 @@ import { useState } from 'react'; + import { shallowEqual, useSelector } from 'react-redux'; -import styled, { AnyStyledComponent, css } from 'styled-components'; +import styled, { css } from 'styled-components'; import { STRING_KEYS } from '@/constants/localization'; import { MobilePlaceOrderSteps } from '@/constants/trade'; -import { useBreakpoints, useStringGetter } from '@/hooks'; +import { useBreakpoints } from '@/hooks/useBreakpoints'; +import { useStringGetter } from '@/hooks/useStringGetter'; + import { layoutMixins } from '@/styles/layoutMixins'; import { AssetIcon } from '@/components/AssetIcon'; -import { ClosePositionForm } from '@/views/forms/ClosePositionForm'; import { Dialog, DialogPlacement } from '@/components/Dialog'; import { GreenCheckCircle } from '@/components/GreenCheckCircle'; +import { Icon, IconName } from '@/components/Icon'; +import { Output, OutputType } from '@/components/Output'; import { Ring } from '@/components/Ring'; import { VerticalSeparator } from '@/components/Separator'; import { MidMarketPrice } from '@/views/MidMarketPrice'; -import { Output, OutputType } from '@/components/Output'; +import { ClosePositionForm } from '@/views/forms/ClosePositionForm'; import { getCurrentMarketAssetData } from '@/state/assetsSelectors'; import { getCurrentMarketData } from '@/state/perpetualsSelectors'; @@ -50,27 +54,29 @@ export const ClosePositionDialog = ({ setIsOpen }: ElementProps) => { }, [MobilePlaceOrderSteps.PreviewOrder]: { title: ( - <Styled.PreviewTitle> - {stringGetter({ key: STRING_KEYS.PREVIEW_ORDER_TITLE })} - </Styled.PreviewTitle> + <$PreviewTitle>{stringGetter({ key: STRING_KEYS.PREVIEW_ORDER_TITLE })}</$PreviewTitle> ), description: stringGetter({ key: STRING_KEYS.PREVIEW_ORDER_DESCRIPTION }), }, [MobilePlaceOrderSteps.PlacingOrder]: { title: stringGetter({ key: STRING_KEYS.PLACING_ORDER_TITLE }), description: stringGetter({ key: STRING_KEYS.PLACING_ORDER_DESCRIPTION }), - slotIcon: <Styled.Ring withAnimation value={0.25} />, + slotIcon: <$Ring withAnimation value={0.25} />, + }, + [MobilePlaceOrderSteps.PlaceOrderFailed]: { + title: stringGetter({ key: STRING_KEYS.PLACE_ORDER_FAILED }), + description: stringGetter({ key: STRING_KEYS.PLACE_ORDER_FAILED_DESCRIPTION }), + slotIcon: <$WarningIcon iconName={IconName.Warning} />, }, - // TODO(@aforaleka): add error state if trade didn't actually go through [MobilePlaceOrderSteps.Confirmation]: { title: stringGetter({ key: STRING_KEYS.CONFIRMED_TITLE }), description: stringGetter({ key: STRING_KEYS.CONFIRMED_DESCRIPTION }), - slotIcon: <Styled.GreenCheckCircle />, + slotIcon: <$GreenCheckCircle />, }, }; return ( - <Styled.Dialog + <$Dialog isOpen={isTablet} setIsOpen={(isOpen: boolean) => { setIsOpen?.(isOpen); @@ -85,7 +91,7 @@ export const ClosePositionDialog = ({ setIsOpen }: ElementProps) => { currentStep={currentStep} > <ClosePositionForm currentStep={currentStep} setCurrentStep={setCurrentStep} /> - </Styled.Dialog> + </$Dialog> ); }; @@ -95,26 +101,23 @@ const CloseOrderHeader = () => { useSelector(getCurrentMarketData, shallowEqual) ?? {}; return ( - <Styled.CloseOrderHeader> + <$CloseOrderHeader> <h2>{stringGetter({ key: STRING_KEYS.CLOSE })}</h2> - <Styled.Right> - <Styled.MarketDetails> + <$Right> + <$MarketDetails> <MidMarketPrice /> - <Styled.PriceChange + <$PriceChange type={OutputType.Percent} value={MustBigNumber(priceChange24HPercent).abs()} isNegative={MustBigNumber(priceChange24H).isNegative()} /> - </Styled.MarketDetails> - <Styled.VerticalSeparator /> - </Styled.Right> - </Styled.CloseOrderHeader> + </$MarketDetails> + <$VerticalSeparator /> + </$Right> + </$CloseOrderHeader> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.Dialog = styled(Dialog)<{ currentStep: MobilePlaceOrderSteps }>` +const $Dialog = styled(Dialog)<{ currentStep: MobilePlaceOrderSteps }>` --dialog-backgroundColor: var(--color-layer-2); --dialog-header-height: 1rem; --dialog-content-paddingTop: 1.5rem; @@ -130,42 +133,47 @@ Styled.Dialog = styled(Dialog)<{ currentStep: MobilePlaceOrderSteps }>` `} `; -Styled.Ring = styled(Ring)` +const $Ring = styled(Ring)` --ring-color: var(--color-accent); `; -Styled.GreenCheckCircle = styled(GreenCheckCircle)` +const $GreenCheckCircle = styled(GreenCheckCircle)` --icon-size: 2rem; `; -Styled.CloseOrderHeader = styled.div` +const $CloseOrderHeader = styled.div` ${layoutMixins.spacedRow} `; -Styled.Right = styled.div` +const $Right = styled.div` ${layoutMixins.inlineRow} gap: 1rem; margin-right: 0.5rem; `; -Styled.MarketDetails = styled.div` +const $MarketDetails = styled.div` ${layoutMixins.rowColumn} justify-items: flex-end; font: var(--font-medium-medium); `; -Styled.PriceChange = styled(Output)<{ isNegative?: boolean }>` +const $PriceChange = styled(Output)<{ isNegative?: boolean }>` font: var(--font-base-book); color: ${({ isNegative }) => (isNegative ? `var(--color-negative)` : `var(--color-positive)`)}; `; -Styled.VerticalSeparator = styled(VerticalSeparator)` +const $VerticalSeparator = styled(VerticalSeparator)` && { height: 3rem; } `; -Styled.PreviewTitle = styled.div` +const $PreviewTitle = styled.div` ${layoutMixins.inlineRow} height: var(--dialog-icon-size); `; + +const $WarningIcon = styled(Icon)` + color: var(--color-warning); + font-size: 1.5rem; +`; diff --git a/src/views/dialogs/ComplianceConfigDialog.tsx b/src/views/dialogs/ComplianceConfigDialog.tsx new file mode 100644 index 000000000..763d7d931 --- /dev/null +++ b/src/views/dialogs/ComplianceConfigDialog.tsx @@ -0,0 +1,125 @@ +import { useMemo } from 'react'; + +import { shallowEqual, useDispatch, useSelector } from 'react-redux'; +import styled from 'styled-components'; + +import type { Compliance } from '@/constants/abacus'; +import { ComplianceStatus } from '@/constants/abacus'; +import { ButtonAction } from '@/constants/buttons'; +import { BLOCKED_COUNTRIES, CountryCodes, OFAC_SANCTIONED_COUNTRIES } from '@/constants/geo'; +import { MenuGroup } from '@/constants/menus'; + +import { useAccounts } from '@/hooks/useAccounts'; +import { useDydxClient } from '@/hooks/useDydxClient'; + +import { Button } from '@/components/Button'; +import { ComboboxDialogMenu } from '@/components/ComboboxDialogMenu'; +import { Switch } from '@/components/Switch'; + +import { setCompliance } from '@/state/account'; +import { getComplianceStatus, getGeo } from '@/state/accountSelectors'; + +const complianceStatusOptions = [ + { status: ComplianceStatus.COMPLIANT, label: 'Compliant' }, + { status: ComplianceStatus.BLOCKED, label: 'Blocked' }, + { status: ComplianceStatus.CLOSE_ONLY, label: 'Close Only' }, + { status: ComplianceStatus.FIRST_STRIKE, label: 'First Strike' }, + { status: ComplianceStatus.FIRST_STRIKE_CLOSE_ONLY, label: 'First Strike Close Only' }, +]; + +export const usePreferenceMenu = () => { + const dispatch = useDispatch(); + + const complianceStatus = useSelector(getComplianceStatus, shallowEqual); + const geo = useSelector(getGeo, shallowEqual); + const geoRestricted = Boolean( + geo && [...BLOCKED_COUNTRIES, ...OFAC_SANCTIONED_COUNTRIES].includes(geo as CountryCodes) + ); + + const notificationSection = useMemo( + (): MenuGroup<string, string> => ({ + group: 'status', + groupLabel: 'Simulate Compliance Status', + items: complianceStatusOptions.map(({ status, label }) => ({ + value: status.name, + label, + onSelect: () => + dispatch(setCompliance({ geo, status, updatedAt: new Date().toString() } as Compliance)), + slotAfter: ( + <Switch + name="CompliaceStatus" + checked={complianceStatus === status} + onCheckedChange={() => null} // Assuming the onChange logic is to be defined or is unnecessary + /> + ), + })), + }), + [complianceStatus, setCompliance] + ); + + const otherSection = useMemo( + (): MenuGroup<string, string> => ({ + group: 'Geo', + items: [ + { + value: 'RestrictGeo', + label: 'Simulate Restricted Geo', + slotAfter: ( + <Switch name="RestrictGeo" checked={geoRestricted} onCheckedChange={() => null} /> + ), + onSelect: () => { + dispatch( + geoRestricted + ? setCompliance({ geo: '', status: complianceStatus } as Compliance) + : setCompliance({ geo: 'US', status: complianceStatus } as Compliance) + ); + }, + }, + ], + }), + [geoRestricted] + ); + + return [otherSection, notificationSection]; +}; + +type ElementProps = { + setIsOpen: (open: boolean) => void; +}; + +export const ComplianceConfigDialog = ({ setIsOpen }: ElementProps) => { + const preferenceItems = usePreferenceMenu(); + const complianceStatus = useSelector(getComplianceStatus, shallowEqual); + + const { dydxAddress } = useAccounts(); + const { compositeClient } = useDydxClient(); + + const submit = async () => { + const endpoint = `${compositeClient?.indexerClient.config.restEndpoint}/v4/compliance/setStatus`; + if (dydxAddress) { + await fetch(endpoint, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ address: dydxAddress, status: complianceStatus?.name }), + }); + } + }; + + return ( + <$ComboboxDialogMenu + isOpen + title="Compliance Settings (Dev Only)" + items={preferenceItems} + setIsOpen={setIsOpen} + > + <Button action={ButtonAction.Primary} onClick={() => submit()}> + Submit + </Button> + </$ComboboxDialogMenu> + ); +}; +const $ComboboxDialogMenu = styled(ComboboxDialogMenu)` + --dialog-content-paddingBottom: 0.5rem; +` as typeof ComboboxDialogMenu; diff --git a/src/views/dialogs/DepositDialog.tsx b/src/views/dialogs/DepositDialog.tsx index f46022d06..0863db0a4 100644 --- a/src/views/dialogs/DepositDialog.tsx +++ b/src/views/dialogs/DepositDialog.tsx @@ -1,5 +1,7 @@ import { STRING_KEYS } from '@/constants/localization'; -import { useBreakpoints, useStringGetter } from '@/hooks'; + +import { useBreakpoints } from '@/hooks/useBreakpoints'; +import { useStringGetter } from '@/hooks/useStringGetter'; import { Dialog, DialogPlacement } from '@/components/Dialog'; diff --git a/src/views/dialogs/DepositDialog/DepositDialogContent.tsx b/src/views/dialogs/DepositDialog/DepositDialogContent.tsx index bfd9046b2..2f8321a04 100644 --- a/src/views/dialogs/DepositDialog/DepositDialogContent.tsx +++ b/src/views/dialogs/DepositDialog/DepositDialogContent.tsx @@ -1,9 +1,11 @@ import { useEffect, useState } from 'react'; -import styled, { type AnyStyledComponent } from 'styled-components'; + +import styled from 'styled-components'; import { TransferInputField, TransferType } from '@/constants/abacus'; import { AnalyticsEvent } from '@/constants/analytics'; import { isMainnet } from '@/constants/networks'; + import { layoutMixins } from '@/styles/layoutMixins'; import { DepositForm } from '@/views/forms/AccountManagementForms/DepositForm'; @@ -34,7 +36,7 @@ export const DepositDialogContent = ({ onDeposit }: ElementProps) => { }, []); return ( - <Styled.Content> + <$Content> {isMainnet || !showFaucet ? ( <DepositForm onDeposit={(event) => { @@ -51,17 +53,14 @@ export const DepositDialogContent = ({ onDeposit }: ElementProps) => { /> )} {!isMainnet && ( - <Styled.TextToggle onClick={() => setShowFaucet(!showFaucet)}> + <$TextToggle onClick={() => setShowFaucet(!showFaucet)}> {showFaucet ? 'Show deposit form' : 'Show test faucet'} - </Styled.TextToggle> + </$TextToggle> )} - </Styled.Content> + </$Content> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.Content = styled.div` +const $Content = styled.div` ${layoutMixins.flexColumn} gap: 1rem; @@ -70,7 +69,7 @@ Styled.Content = styled.div` } `; -Styled.TextToggle = styled.div` +const $TextToggle = styled.div` ${layoutMixins.stickyFooter} --stickyArea-bottomHeight: 0; diff --git a/src/views/dialogs/DetailsDialog/FillDetailsDialog.tsx b/src/views/dialogs/DetailsDialog/FillDetailsDialog.tsx index 0ba26c987..62336bbb7 100644 --- a/src/views/dialogs/DetailsDialog/FillDetailsDialog.tsx +++ b/src/views/dialogs/DetailsDialog/FillDetailsDialog.tsx @@ -1,9 +1,10 @@ -import { useSelector } from 'react-redux'; -import styled, { AnyStyledComponent } from 'styled-components'; import { DateTime } from 'luxon'; +import { useSelector } from 'react-redux'; +import styled from 'styled-components'; import { STRING_KEYS } from '@/constants/localization'; -import { useStringGetter } from '@/hooks'; + +import { useStringGetter } from '@/hooks/useStringGetter'; import { AssetIcon } from '@/components/AssetIcon'; import { type DetailsItem } from '@/components/Details'; @@ -94,16 +95,13 @@ export const FillDetailsDialog = ({ fillId, setIsOpen }: ElementProps) => { return ( <DetailsDialog - slotIcon={<Styled.AssetIcon symbol={asset?.id} />} + slotIcon={<$AssetIcon symbol={asset?.id} />} title={resources.typeStringKey && stringGetter({ key: resources.typeStringKey })} items={detailItems} setIsOpen={setIsOpen} /> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.AssetIcon = styled(AssetIcon)` +const $AssetIcon = styled(AssetIcon)` font-size: 1em; `; diff --git a/src/views/dialogs/DetailsDialog/OrderDetailsDialog.tsx b/src/views/dialogs/DetailsDialog/OrderDetailsDialog.tsx index 904d15d54..dafa31f24 100644 --- a/src/views/dialogs/DetailsDialog/OrderDetailsDialog.tsx +++ b/src/views/dialogs/DetailsDialog/OrderDetailsDialog.tsx @@ -1,37 +1,32 @@ -import { useState } from 'react'; -import { useDispatch, useSelector } from 'react-redux'; -import styled, { AnyStyledComponent, css } from 'styled-components'; - -import { useStringGetter, useSubaccount } from '@/hooks'; -import { layoutMixins } from '@/styles/layoutMixins'; +import { shallowEqual, useDispatch, useSelector } from 'react-redux'; +import styled from 'styled-components'; import { AbacusOrderStatus, AbacusOrderTypes, type Nullable } from '@/constants/abacus'; import { ButtonAction } from '@/constants/buttons'; import { STRING_KEYS, type StringKey } from '@/constants/localization'; +import { CancelOrderStatuses } from '@/constants/trade'; + +import { useStringGetter } from '@/hooks/useStringGetter'; +import { useSubaccount } from '@/hooks/useSubaccount'; + +import { layoutMixins } from '@/styles/layoutMixins'; import { AssetIcon } from '@/components/AssetIcon'; import { Button } from '@/components/Button'; import { type DetailsItem } from '@/components/Details'; import { DetailsDialog } from '@/components/DetailsDialog'; -import { Icon } from '@/components/Icon'; import { OrderSideTag } from '@/components/OrderSideTag'; import { Output, OutputType } from '@/components/Output'; +import { OrderStatusIcon } from '@/views/OrderStatusIcon'; import { type OrderTableRow } from '@/views/tables/OrdersTable'; +import { clearOrder } from '@/state/account'; import { calculateIsAccountViewOnly } from '@/state/accountCalculators'; -import { getOrderDetails } from '@/state/accountSelectors'; +import { getLocalCancelOrders, getOrderDetails } from '@/state/accountSelectors'; import { getSelectedLocale } from '@/state/localizationSelectors'; -import { clearOrder } from '@/state/account'; - import { MustBigNumber } from '@/lib/numbers'; - -import { - isOrderStatusClearable, - isMarketOrderType, - relativeTimeString, - getStatusIconInfo, -} from '@/lib/orders'; +import { isMarketOrderType, isOrderStatusClearable, relativeTimeString } from '@/lib/orders'; type ElementProps = { orderId: string; @@ -43,9 +38,13 @@ export const OrderDetailsDialog = ({ orderId, setIsOpen }: ElementProps) => { const dispatch = useDispatch(); const selectedLocale = useSelector(getSelectedLocale); const isAccountViewOnly = useSelector(calculateIsAccountViewOnly); - + const localCancelOrders = useSelector(getLocalCancelOrders, shallowEqual); const { cancelOrder } = useSubaccount(); + const localCancelOrder = localCancelOrders.find((order) => order.orderId === orderId); + const isOrderCanceling = + localCancelOrder && localCancelOrder.submissionStatus < CancelOrderStatuses.Canceled; + const { asset, cancelReason, @@ -65,27 +64,21 @@ export const OrderDetailsDialog = ({ orderId, setIsOpen }: ElementProps) => { trailingPercent, triggerPrice, type, - } = (useSelector(getOrderDetails(orderId)) as OrderTableRow) || {}; - const [isPlacingCancel, setIsPlacingCancel] = useState(false); - - const { statusIcon, statusIconColor, statusStringKey } = getStatusIconInfo({ - status, - totalFilled, - }); + } = (useSelector(getOrderDetails(orderId)) as OrderTableRow) ?? {}; const renderOrderPrice = ({ - type, - price, - tickSizeDecimals, + type: innerType, + price: innerPrice, + tickSizeDecimals: innerTickSizeDecimals, }: { type?: AbacusOrderTypes; price?: Nullable<number>; tickSizeDecimals: number; }) => - isMarketOrderType(type) ? ( + isMarketOrderType(innerType) ? ( stringGetter({ key: STRING_KEYS.MARKET_PRICE_SHORT }) ) : ( - <Output type={OutputType.Fiat} value={price} fractionDigits={tickSizeDecimals} /> + <Output type={OutputType.Fiat} value={innerPrice} fractionDigits={innerTickSizeDecimals} /> ); const renderOrderTime = ({ timeInMs }: { timeInMs: Nullable<number> }) => @@ -106,16 +99,12 @@ export const OrderDetailsDialog = ({ orderId, setIsOpen }: ElementProps) => { key: 'status', label: stringGetter({ key: STRING_KEYS.STATUS }), value: ( - <Styled.Row> - <Styled.StatusIcon iconName={statusIcon} color={statusIconColor} /> - <Styled.Status> - {statusStringKey - ? stringGetter({ key: statusStringKey }) - : resources.statusStringKey - ? stringGetter({ key: resources.statusStringKey }) - : undefined} - </Styled.Status> - </Styled.Row> + <$Row> + <OrderStatusIcon status={status.rawValue} /> + <$Status> + {resources.statusStringKey && stringGetter({ key: resources.statusStringKey })} + </$Status> + </$Row> ), }, { @@ -182,9 +171,8 @@ export const OrderDetailsDialog = ({ orderId, setIsOpen }: ElementProps) => { }, ].filter((item) => Boolean(item.value)) as DetailsItem[]; - const onCancelClick = async () => { - setIsPlacingCancel(true); - await cancelOrder({ orderId, onError: () => setIsPlacingCancel(false) }); + const onCancelClick = () => { + cancelOrder({ orderId }); }; const onClearClick = () => { @@ -194,7 +182,7 @@ export const OrderDetailsDialog = ({ orderId, setIsOpen }: ElementProps) => { return ( <DetailsDialog - slotIcon={<Styled.AssetIcon symbol={asset?.id} />} + slotIcon={<$AssetIcon symbol={asset?.id} />} title={!resources.typeStringKey ? '' : stringGetter({ key: resources.typeStringKey })} slotFooter={ isAccountViewOnly ? null : isOrderStatusClearable(status) ? ( @@ -203,8 +191,8 @@ export const OrderDetailsDialog = ({ orderId, setIsOpen }: ElementProps) => { <Button action={ButtonAction.Destroy} state={{ - isDisabled: isPlacingCancel || status === AbacusOrderStatus.canceling, - isLoading: isPlacingCancel, + isDisabled: !!isOrderCanceling || status === AbacusOrderStatus.canceling, + isLoading: isOrderCanceling, }} onClick={onCancelClick} > @@ -217,21 +205,14 @@ export const OrderDetailsDialog = ({ orderId, setIsOpen }: ElementProps) => { /> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.Row = styled.div` +const $Row = styled.div` ${layoutMixins.inlineRow} `; -Styled.StatusIcon = styled(Icon)<{ color: string }>` - color: ${({ color }) => color}; -`; - -Styled.Status = styled.span` +const $Status = styled.span` font: var(--font-small-medium); `; -Styled.AssetIcon = styled(AssetIcon)` +const $AssetIcon = styled(AssetIcon)` font-size: 1em; `; diff --git a/src/views/dialogs/DisconnectDialog.tsx b/src/views/dialogs/DisconnectDialog.tsx index c645afc96..7ae42c6b3 100644 --- a/src/views/dialogs/DisconnectDialog.tsx +++ b/src/views/dialogs/DisconnectDialog.tsx @@ -1,10 +1,13 @@ -import styled, { AnyStyledComponent } from 'styled-components'; -import { useDispatch } from 'react-redux'; import { Close } from '@radix-ui/react-dialog'; +import { useDispatch } from 'react-redux'; +import styled from 'styled-components'; import { ButtonAction } from '@/constants/buttons'; import { STRING_KEYS } from '@/constants/localization'; -import { useAccounts, useStringGetter } from '@/hooks'; + +import { useAccounts } from '@/hooks/useAccounts'; +import { useStringGetter } from '@/hooks/useStringGetter'; + import { layoutMixins } from '@/styles/layoutMixins'; import { Button } from '@/components/Button'; @@ -28,9 +31,9 @@ export const DisconnectDialog = ({ setIsOpen }: ElementProps) => { return ( <Dialog isOpen setIsOpen={setIsOpen} title={stringGetter({ key: STRING_KEYS.DISCONNECT })}> - <Styled.Content> + <$Content> <p>{stringGetter({ key: STRING_KEYS.DISCONNECT_CONFIRMATION })}</p> - <Styled.ButtonRow> + <$ButtonRow> <Close asChild> <Button action={ButtonAction.Destroy} onClick={disconnect}> {stringGetter({ key: STRING_KEYS.DISCONNECT })} @@ -39,22 +42,19 @@ export const DisconnectDialog = ({ setIsOpen }: ElementProps) => { <Close asChild> <Button onClick={onCancel}>{stringGetter({ key: STRING_KEYS.CANCEL })}</Button> </Close> - </Styled.ButtonRow> - </Styled.Content> + </$ButtonRow> + </$Content> </Dialog> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.ButtonRow = styled.div` +const $ButtonRow = styled.div` ${layoutMixins.row} gap: 0.5rem; justify-content: end; `; -Styled.Content = styled.div` +const $Content = styled.div` ${layoutMixins.column} gap: 1rem; `; diff --git a/src/views/dialogs/DisplaySettingsDialog.tsx b/src/views/dialogs/DisplaySettingsDialog.tsx index 61f5e1261..aa2876f61 100644 --- a/src/views/dialogs/DisplaySettingsDialog.tsx +++ b/src/views/dialogs/DisplaySettingsDialog.tsx @@ -1,29 +1,28 @@ +import { Indicator, Item, Root } from '@radix-ui/react-radio-group'; import { useDispatch, useSelector } from 'react-redux'; -import styled, { AnyStyledComponent, css } from 'styled-components'; +import styled, { css } from 'styled-components'; -import { Root, Item, Indicator } from '@radix-ui/react-radio-group'; - -import { useStringGetter } from '@/hooks'; +import { STRING_KEYS } from '@/constants/localization'; -import { - AppTheme, - type AppThemeSetting, - AppThemeSystemSetting, - AppColorMode, - setAppThemeSetting, - setAppColorMode, -} from '@/state/configs'; -import { getAppTheme, getAppThemeSetting, getAppColorMode } from '@/state/configsSelectors'; +import { useStringGetter } from '@/hooks/useStringGetter'; import { layoutMixins } from '@/styles/layoutMixins'; import { Themes } from '@/styles/themes'; -import { STRING_KEYS } from '@/constants/localization'; - import { Dialog } from '@/components/Dialog'; import { Icon, IconName } from '@/components/Icon'; import { HorizontalSeparatorFiller } from '@/components/Separator'; +import { + AppColorMode, + AppTheme, + AppThemeSystemSetting, + setAppColorMode, + setAppThemeSetting, + type AppThemeSetting, +} from '@/state/configs'; +import { getAppColorMode, getAppThemeSetting } from '@/state/configsSelectors'; + type ElementProps = { setIsOpen: (open: boolean) => void; }; @@ -33,21 +32,20 @@ export const DisplaySettingsDialog = ({ setIsOpen }: ElementProps) => { const stringGetter = useStringGetter(); const currentThemeSetting: AppThemeSetting = useSelector(getAppThemeSetting); - const currentTheme: AppTheme = useSelector(getAppTheme); const currentColorMode: AppColorMode = useSelector(getAppColorMode); const sectionHeader = (heading: string) => { return ( - <Styled.Header> + <$Header> {heading} <HorizontalSeparatorFiller /> - </Styled.Header> + </$Header> ); }; const themePanels = () => { return ( - <Styled.AppThemeRoot value={currentThemeSetting}> + <$AppThemeRoot value={currentThemeSetting}> {[ { themeSetting: AppTheme.Classic, @@ -78,7 +76,7 @@ export const DisplaySettingsDialog = ({ setIsOpen }: ElementProps) => { const textColor = Themes[theme][currentColorMode].textPrimary; return ( - <Styled.AppThemeItem + <$AppThemeItem key={themeSetting} value={themeSetting} backgroundcolor={backgroundColor} @@ -87,23 +85,23 @@ export const DisplaySettingsDialog = ({ setIsOpen }: ElementProps) => { dispatch(setAppThemeSetting(themeSetting)); }} > - <Styled.AppThemeHeader textcolor={textColor}> + <$AppThemeHeader textcolor={textColor}> {stringGetter({ key: label })} - </Styled.AppThemeHeader> - <Styled.Image src="/chart-bars.svg" /> - <Styled.CheckIndicator> - <Styled.CheckIcon iconName={IconName.Check} /> - </Styled.CheckIndicator> - </Styled.AppThemeItem> + </$AppThemeHeader> + <$Image src="/chart-bars.svg" /> + <$CheckIndicator> + <$CheckIcon iconName={IconName.Check} /> + </$CheckIndicator> + </$AppThemeItem> ); })} - </Styled.AppThemeRoot> + </$AppThemeRoot> ); }; const colorModeOptions = () => { return ( - <Styled.ColorPreferenceRoot value={currentColorMode}> + <$ColorPreferenceRoot value={currentColorMode}> {[ { colorMode: AppColorMode.GreenUp, @@ -114,32 +112,32 @@ export const DisplaySettingsDialog = ({ setIsOpen }: ElementProps) => { label: STRING_KEYS.RED_IS_UP, }, ].map(({ colorMode, label }) => ( - <Styled.ColorPreferenceItem + <$ColorPreferenceItem key={colorMode} value={colorMode} onClick={() => { dispatch(setAppColorMode(colorMode)); }} > - <Styled.ColorPreferenceLabel> - <Styled.ArrowIconContainer> - <Styled.ArrowIcon + <$ColorPreferenceLabel> + <$ArrowIconContainer> + <$ArrowIcon iconName={IconName.Arrow} direction="up" color={colorMode === AppColorMode.GreenUp ? 'green' : 'red'} /> - <Styled.ArrowIcon + <$ArrowIcon iconName={IconName.Arrow} direction="down" color={colorMode === AppColorMode.GreenUp ? 'red' : 'green'} /> - </Styled.ArrowIconContainer> + </$ArrowIconContainer> {stringGetter({ key: label })} - </Styled.ColorPreferenceLabel> - <Styled.DotIndicator $selected={currentColorMode === colorMode} /> - </Styled.ColorPreferenceItem> + </$ColorPreferenceLabel> + <$DotIndicator $selected={currentColorMode === colorMode} /> + </$ColorPreferenceItem> ))} - </Styled.ColorPreferenceRoot> + </$ColorPreferenceRoot> ); }; @@ -149,45 +147,42 @@ export const DisplaySettingsDialog = ({ setIsOpen }: ElementProps) => { setIsOpen={setIsOpen} title={stringGetter({ key: STRING_KEYS.DISPLAY_SETTINGS })} > - <Styled.Section> + <$Section> {sectionHeader(stringGetter({ key: STRING_KEYS.THEME }))} {themePanels()} - </Styled.Section> - <Styled.Section> + </$Section> + <$Section> {sectionHeader(stringGetter({ key: STRING_KEYS.DIRECTION_COLOR_PREFERENCE }))} {colorModeOptions()} - </Styled.Section> + </$Section> </Dialog> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - const gridStyle = css` display: grid; gap: 1.5rem; `; -Styled.Section = styled.div` +const $Section = styled.div` ${gridStyle} padding: 1rem 0; `; -Styled.Header = styled.header` +const $Header = styled.header` ${layoutMixins.inlineRow} `; -Styled.AppThemeRoot = styled(Root)` +const $AppThemeRoot = styled(Root)` ${gridStyle} grid-template-columns: 1fr 1fr; `; -Styled.ColorPreferenceRoot = styled(Root)` +const $ColorPreferenceRoot = styled(Root)` ${gridStyle} grid-template-columns: 1fr; `; -Styled.Item = styled(Item)` +const $Item = styled(Item)` --border-color: var(--color-border); --item-padding: 0.75rem; @@ -201,7 +196,7 @@ Styled.Item = styled(Item)` padding: var(--item-padding); `; -Styled.ColorPreferenceItem = styled(Styled.Item)` +const $ColorPreferenceItem = styled($Item)` &[data-state='checked'] { background-color: var(--color-layer-4); } @@ -210,7 +205,7 @@ Styled.ColorPreferenceItem = styled(Styled.Item)` justify-content: space-between; `; -Styled.AppThemeItem = styled(Styled.Item)<{ backgroundcolor: string; gridcolor: string }>` +const $AppThemeItem = styled($Item)<{ backgroundcolor: string; gridcolor: string }>` ${({ backgroundcolor, gridcolor }) => css` --themePanel-backgroundColor: ${backgroundcolor}; --themePanel-gridColor: ${gridcolor}; @@ -244,51 +239,51 @@ Styled.AppThemeItem = styled(Styled.Item)<{ backgroundcolor: string; gridcolor: } `; -Styled.AppThemeHeader = styled.h3<{ textcolor: string }>` +const $AppThemeHeader = styled.h3<{ textcolor: string }>` ${({ textcolor }) => css` color: ${textcolor}; `} z-index: 1; `; -Styled.Image = styled.img` +const $Image = styled.img` width: 100%; height: auto; z-index: 1; `; -Styled.ColorPreferenceLabel = styled.div` +const $ColorPreferenceLabel = styled.div` ${layoutMixins.inlineRow}; gap: 1ch; `; -Styled.ArrowIconContainer = styled.div` +const $ArrowIconContainer = styled.div` ${layoutMixins.column} - gap: 0.5ch; + gap: 0.25rem; svg { - height: 0.75em; - width: 0.75em; + height: 0.875em; + width: 0.875em; } `; -Styled.ArrowIcon = styled(Icon)<{ direction: 'up' | 'down'; color: 'green' | 'red' }>` +const $ArrowIcon = styled(Icon)<{ direction: 'up' | 'down'; color: 'green' | 'red' }>` ${({ direction }) => ({ - ['up']: css` + up: css` transform: rotate(-90deg); `, - ['down']: css` + down: css` transform: rotate(90deg); `, }[direction])} ${({ color }) => ({ - ['green']: css` + green: css` color: var(--color-green); `, - ['red']: css` + red: css` color: var(--color-red); `, }[color])} @@ -307,7 +302,7 @@ const indicatorStyle = css` justify-content: center; `; -Styled.DotIndicator = styled.div<{ $selected: boolean }>` +const $DotIndicator = styled.div<{ $selected: boolean }>` ${indicatorStyle} --background-color: var(--color-layer-2); --border-color: var(--color-border); @@ -332,7 +327,7 @@ Styled.DotIndicator = styled.div<{ $selected: boolean }>` border: solid var(--border-width) var(--border-color); `; -Styled.CheckIndicator = styled(Indicator)` +const $CheckIndicator = styled(Indicator)` ${indicatorStyle} position: absolute; bottom: var(--item-padding); @@ -342,7 +337,7 @@ Styled.CheckIndicator = styled(Indicator)` color: var(--color-text-button); `; -Styled.CheckIcon = styled(Icon)` +const $CheckIcon = styled(Icon)` width: var(--icon-size); height: var(--icon-size); `; diff --git a/src/views/dialogs/ExchangeOfflineDialog.tsx b/src/views/dialogs/ExchangeOfflineDialog.tsx index d25a8f3cb..bc7f9ea29 100644 --- a/src/views/dialogs/ExchangeOfflineDialog.tsx +++ b/src/views/dialogs/ExchangeOfflineDialog.tsx @@ -1,22 +1,23 @@ import { useEffect } from 'react'; -import styled, { AnyStyledComponent } from 'styled-components'; + import { shallowEqual, useDispatch, useSelector } from 'react-redux'; +import styled from 'styled-components'; import { AbacusApiStatus } from '@/constants/abacus'; import { DialogTypes } from '@/constants/dialogs'; import { STRING_KEYS } from '@/constants/localization'; import { isDev } from '@/constants/networks'; -import { useApiState, useStringGetter } from '@/hooks'; +import { useApiState } from '@/hooks/useApiState'; +import { useStringGetter } from '@/hooks/useStringGetter'; + import { layoutMixins } from '@/styles/layoutMixins'; import { Dialog } from '@/components/Dialog'; -import { Link } from '@/components/Link'; import { NetworkSelectMenu } from '@/views/menus/NetworkSelectMenu'; -import { closeDialog } from '@/state/dialogs'; - import { getSelectedNetwork } from '@/state/appSelectors'; +import { closeDialog } from '@/state/dialogs'; import { getActiveDialog } from '@/state/dialogsSelectors'; type ElementProps = { @@ -44,22 +45,14 @@ export const ExchangeOfflineDialog = ({ preventClose, setIsOpen }: ElementProps) setIsOpen={setIsOpen} title={stringGetter({ key: STRING_KEYS.UNAVAILABLE })} > - <Styled.Content> - <p>{statusErrorMessage}</p> + <$Content> + <p>{statusErrorMessage?.body}</p> {isDev && <NetworkSelectMenu />} - </Styled.Content> + </$Content> </Dialog> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.Content = styled.div` +const $Content = styled.div` ${layoutMixins.column} gap: 1rem; `; - -Styled.Link = styled(Link)` - display: contents; - --link-color: var(--color-accent); -`; diff --git a/src/views/dialogs/ExternalLinkDialog.tsx b/src/views/dialogs/ExternalLinkDialog.tsx index 231cb24fd..fe2ee2ab6 100644 --- a/src/views/dialogs/ExternalLinkDialog.tsx +++ b/src/views/dialogs/ExternalLinkDialog.tsx @@ -1,15 +1,17 @@ import type { ReactNode } from 'react'; -import styled, { type AnyStyledComponent } from 'styled-components'; + +import styled from 'styled-components'; import { ButtonAction, ButtonType } from '@/constants/buttons'; import { STRING_KEYS } from '@/constants/localization'; -import { useStringGetter } from '@/hooks'; -import { Button } from '@/components/Button'; -import { Dialog } from '@/components/Dialog'; +import { useStringGetter } from '@/hooks/useStringGetter'; import { layoutMixins } from '@/styles/layoutMixins'; +import { Button } from '@/components/Button'; +import { Dialog } from '@/components/Dialog'; + type ElementProps = { buttonText?: ReactNode; link: string; @@ -37,20 +39,17 @@ export const ExternalLinkDialog = ({ linkDescription ?? stringGetter({ key: STRING_KEYS.LEAVING_WEBSITE_DESCRIPTION }) } > - <Styled.Content> + <$Content> {slotContent} <p>{stringGetter({ key: STRING_KEYS.LEAVING_WEBSITE_DISCLAIMER })}.</p> <Button type={ButtonType.Link} action={ButtonAction.Primary} href={link}> {buttonText ?? stringGetter({ key: STRING_KEYS.CONTINUE })} </Button> - </Styled.Content> + </$Content> </Dialog> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.Content = styled.div` +const $Content = styled.div` ${layoutMixins.flexColumn} gap: 1rem; diff --git a/src/views/dialogs/ExternalNavKeplrDialog.tsx b/src/views/dialogs/ExternalNavKeplrDialog.tsx index d1622c6e2..cbda6a5ef 100644 --- a/src/views/dialogs/ExternalNavKeplrDialog.tsx +++ b/src/views/dialogs/ExternalNavKeplrDialog.tsx @@ -1,11 +1,17 @@ import { useCallback } from 'react'; -import styled, { type AnyStyledComponent } from 'styled-components'; + import { useDispatch } from 'react-redux'; +import styled from 'styled-components'; import { ButtonAction, ButtonSize, ButtonType } from '@/constants/buttons'; import { DialogTypes } from '@/constants/dialogs'; import { STRING_KEYS } from '@/constants/localization'; -import { useBreakpoints, useStringGetter, useURLConfigs } from '@/hooks'; + +import { useBreakpoints } from '@/hooks/useBreakpoints'; +import { useStringGetter } from '@/hooks/useStringGetter'; +import { useURLConfigs } from '@/hooks/useURLConfigs'; + +import { layoutMixins } from '@/styles/layoutMixins'; import { Button } from '@/components/Button'; import { Dialog, DialogPlacement } from '@/components/Dialog'; @@ -14,8 +20,6 @@ import { IconButton } from '@/components/IconButton'; import { closeDialog, openDialog } from '@/state/dialogs'; -import { layoutMixins } from '@/styles/layoutMixins'; - type ElementProps = { setIsOpen: (open: boolean) => void; }; @@ -53,12 +57,8 @@ export const ExternalNavKeplrDialog = ({ setIsOpen }: ElementProps) => { title={stringGetter({ key: STRING_KEYS.HAVE_YOU_EXPORTED })} placement={isTablet ? DialogPlacement.FullScreen : DialogPlacement.Default} > - <Styled.Content> - <Styled.Button - type={ButtonType.Button} - size={ButtonSize.XLarge} - onClick={onExternalNavDialog} - > + <$Content> + <$Button type={ButtonType.Button} size={ButtonSize.XLarge} onClick={onExternalNavDialog}> <span> {stringGetter({ key: STRING_KEYS.NAVIGATE_TO_KEPLR, @@ -68,18 +68,14 @@ export const ExternalNavKeplrDialog = ({ setIsOpen }: ElementProps) => { })} </span> - <Styled.IconButton + <$IconButton action={ButtonAction.Base} iconName={IconName.Arrow} size={ButtonSize.XSmall} /> - </Styled.Button> + </$Button> - <Styled.Button - type={ButtonType.Link} - size={ButtonSize.XLarge} - href={accountExportLearnMore} - > + <$Button type={ButtonType.Link} size={ButtonSize.XLarge} href={accountExportLearnMore}> <span> {stringGetter({ key: STRING_KEYS.LEARN_TO_EXPORT, @@ -89,32 +85,18 @@ export const ExternalNavKeplrDialog = ({ setIsOpen }: ElementProps) => { })} </span> - <Styled.IconButton + <$IconButton action={ButtonAction.Base} iconName={IconName.Arrow} size={ButtonSize.XSmall} /> - </Styled.Button> - </Styled.Content> + </$Button> + </$Content> </Dialog> ); }; -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.TextToggle = styled.div` - ${layoutMixins.stickyFooter} - color: var(--color-accent); - cursor: pointer; - - margin-top: auto; - - &:hover { - text-decoration: underline; - } -`; - -Styled.Content = styled.div` +const $Content = styled.div` ${layoutMixins.stickyArea0} --stickyArea0-bottomHeight: 2rem; --stickyArea0-bottomGap: 1rem; @@ -124,7 +106,7 @@ Styled.Content = styled.div` gap: 1rem; `; -Styled.Button = styled(Button)` +const $Button = styled(Button)` --button-font: var(--font-base-book); --button-padding: 0 1.5rem; @@ -133,7 +115,7 @@ Styled.Button = styled(Button)` justify-content: space-between; `; -Styled.IconButton = styled(IconButton)` +const $IconButton = styled(IconButton)` color: var(--color-text-0); --color-border: var(--color-layer-6); `; diff --git a/src/views/dialogs/ExternalNavStrideDialog.tsx b/src/views/dialogs/ExternalNavStrideDialog.tsx index 2511f8b3a..96cea6573 100644 --- a/src/views/dialogs/ExternalNavStrideDialog.tsx +++ b/src/views/dialogs/ExternalNavStrideDialog.tsx @@ -1,11 +1,16 @@ import { useCallback } from 'react'; -import styled, { type AnyStyledComponent } from 'styled-components'; + import { useDispatch } from 'react-redux'; +import styled from 'styled-components'; import { ButtonAction, ButtonSize, ButtonType } from '@/constants/buttons'; import { DialogTypes } from '@/constants/dialogs'; import { STRING_KEYS } from '@/constants/localization'; -import { useBreakpoints, useStringGetter, useURLConfigs } from '@/hooks'; + +import { useBreakpoints } from '@/hooks/useBreakpoints'; +import { useStringGetter } from '@/hooks/useStringGetter'; +import { useURLConfigs } from '@/hooks/useURLConfigs'; + import { layoutMixins } from '@/styles/layoutMixins'; import { Button } from '@/components/Button'; @@ -32,10 +37,10 @@ export const ExternalNavStrideDialog = ({ setIsOpen }: ElementProps) => { type: DialogTypes.ExternalLink, dialogProps: { buttonText: ( - <Styled.Span> + <$Span> {stringGetter({ key: STRING_KEYS.LIQUID_STAKE_ON_STRIDE })} <Icon iconName={IconName.LinkOut} /> - </Styled.Span> + </$Span> ), link: strideZoneApp, title: stringGetter({ key: STRING_KEYS.LIQUID_STAKING_AND_LEAVING }), @@ -57,12 +62,8 @@ export const ExternalNavStrideDialog = ({ setIsOpen }: ElementProps) => { title={stringGetter({ key: STRING_KEYS.HAVE_YOU_EXPORTED })} placement={isTablet ? DialogPlacement.FullScreen : DialogPlacement.Default} > - <Styled.Content> - <Styled.Button - type={ButtonType.Button} - size={ButtonSize.XLarge} - onClick={openExternalNavDialog} - > + <$Content> + <$Button type={ButtonType.Button} size={ButtonSize.XLarge} onClick={openExternalNavDialog}> <span> {stringGetter({ key: STRING_KEYS.NAVIGATE_TO_STRIDE, @@ -72,18 +73,14 @@ export const ExternalNavStrideDialog = ({ setIsOpen }: ElementProps) => { })} </span> - <Styled.IconButton + <$IconButton action={ButtonAction.Base} iconName={IconName.Arrow} size={ButtonSize.XSmall} /> - </Styled.Button> + </$Button> - <Styled.Button - type={ButtonType.Link} - size={ButtonSize.XLarge} - href={accountExportLearnMore} - > + <$Button type={ButtonType.Link} size={ButtonSize.XLarge} href={accountExportLearnMore}> <span> {stringGetter({ key: STRING_KEYS.LEARN_TO_EXPORT, @@ -93,32 +90,18 @@ export const ExternalNavStrideDialog = ({ setIsOpen }: ElementProps) => { })} </span> - <Styled.IconButton + <$IconButton action={ButtonAction.Base} iconName={IconName.Arrow} size={ButtonSize.XSmall} /> - </Styled.Button> - </Styled.Content> + </$Button> + </$Content> </Dialog> ); }; -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.TextToggle = styled.div` - ${layoutMixins.stickyFooter} - color: var(--color-accent); - cursor: pointer; - - margin-top: auto; - - &:hover { - text-decoration: underline; - } -`; - -Styled.Content = styled.div` +const $Content = styled.div` ${layoutMixins.stickyArea0} --stickyArea0-bottomHeight: 2rem; --stickyArea0-bottomGap: 1rem; @@ -128,7 +111,7 @@ Styled.Content = styled.div` gap: 1rem; `; -Styled.Button = styled(Button)` +const $Button = styled(Button)` --button-font: var(--font-base-book); --button-padding: 0 1.5rem; @@ -137,12 +120,12 @@ Styled.Button = styled(Button)` justify-content: space-between; `; -Styled.IconButton = styled(IconButton)` +const $IconButton = styled(IconButton)` color: var(--color-text-0); --color-border: var(--color-layer-6); `; -Styled.Span = styled.span` +const $Span = styled.span` display: flex; align-items: center; gap: 0.5ch; diff --git a/src/views/dialogs/GeoComplianceDialog.tsx b/src/views/dialogs/GeoComplianceDialog.tsx new file mode 100644 index 000000000..f65f98c6e --- /dev/null +++ b/src/views/dialogs/GeoComplianceDialog.tsx @@ -0,0 +1,154 @@ +import { useState } from 'react'; + +import styled from 'styled-components'; + +import { ComplianceAction, Nullable, ParsingError } from '@/constants/abacus'; +import { ButtonAction } from '@/constants/buttons'; +import { COUNTRIES_MAP } from '@/constants/geo'; +import { STRING_KEYS } from '@/constants/localization'; + +import { useBreakpoints } from '@/hooks/useBreakpoints'; +import { useStringGetter } from '@/hooks/useStringGetter'; + +import { formMixins } from '@/styles/formMixins'; + +import { Button } from '@/components/Button'; +import { Checkbox } from '@/components/Checkbox'; +import { Dialog, DialogPlacement } from '@/components/Dialog'; +import { SearchSelectMenu } from '@/components/SearchSelectMenu'; +import { WithReceipt } from '@/components/WithReceipt'; + +import abacusStateManager from '@/lib/abacus'; +import { isBlockedGeo } from '@/lib/compliance'; +import { log } from '@/lib/telemetry'; + +type ElementProps = { + setIsOpen?: (open: boolean) => void; +}; + +const CountrySelector = ({ + label, + selectedCountry, + onSelect, +}: { + label: string; + selectedCountry: string; + onSelect: (country: string) => void; +}) => { + const stringGetter = useStringGetter(); + + const countriesList = Object.keys(COUNTRIES_MAP).map((country) => ({ + value: country, + label: country, + onSelect: () => onSelect(country), + })); + + return ( + <SearchSelectMenu + items={[ + { + group: 'countries', + groupLabel: stringGetter({ key: STRING_KEYS.COUNTRY }), + items: countriesList, + }, + ]} + label={label} + withSearch + > + <$SelectedCountry> + {selectedCountry || stringGetter({ key: STRING_KEYS.SELECT_A_COUNTRY })} + </$SelectedCountry> + </SearchSelectMenu> + ); +}; + +export const GeoComplianceDialog = ({ setIsOpen }: ElementProps) => { + const stringGetter = useStringGetter(); + + const [residence, setResidence] = useState(''); + const [hasAcknowledged, setHasAcknowledged] = useState(false); + + const [showForm, setShowForm] = useState(false); + const { isMobile } = useBreakpoints(); + + const submit = async () => { + const action = + residence && isBlockedGeo(COUNTRIES_MAP[residence]) + ? ComplianceAction.INVALID_SURVEY + : ComplianceAction.VALID_SURVEY; + + const callback = (success: boolean, parsingError?: Nullable<ParsingError>) => { + if (success) { + setIsOpen?.(false); + } else { + log('useWithdrawalInfo/getWithdrawalCapacityByDenom', new Error(parsingError?.message)); + } + }; + abacusStateManager.triggerCompliance(action, callback); + }; + + return ( + <Dialog + isOpen + setIsOpen={setIsOpen} + title={stringGetter({ key: STRING_KEYS.COMPLIANCE_REQUEST })} + placement={isMobile ? DialogPlacement.FullScreen : DialogPlacement.Default} + > + {showForm ? ( + <$Form> + <CountrySelector + label={stringGetter({ key: STRING_KEYS.COUNTRY_OF_RESIDENCE })} + selectedCountry={residence} + onSelect={setResidence} + /> + <$WithReceipt + slotReceipt={ + <$CheckboxContainer> + <Checkbox + checked={hasAcknowledged} + onCheckedChange={setHasAcknowledged} + id="acknowledge-secret-phase-risk" + label={stringGetter({ + key: STRING_KEYS.COMPLIANCE_ACKNOWLEDGEMENT, + })} + /> + </$CheckboxContainer> + } + > + <Button + action={ButtonAction.Primary} + onClick={() => submit()} + state={{ isDisabled: !hasAcknowledged }} + > + {stringGetter({ key: STRING_KEYS.SUBMIT })} + </Button> + </$WithReceipt> + </$Form> + ) : ( + <$Form> + <p>{stringGetter({ key: STRING_KEYS.COMPLIANCE_BODY_FIRST_OFFENSE_1 })}</p> + <p>{stringGetter({ key: STRING_KEYS.COMPLIANCE_BODY_FIRST_OFFENSE_2 })}</p> + <Button action={ButtonAction.Primary} onClick={() => setShowForm(true)}> + {stringGetter({ key: STRING_KEYS.CONTINUE })} + </Button> + </$Form> + )} + </Dialog> + ); +}; +const $Form = styled.form` + ${formMixins.transfersForm} +`; + +const $SelectedCountry = styled.div` + text-align: start; +`; + +const $CheckboxContainer = styled.div` + padding: 1rem; + color: var(--color-text-0); +`; + +const $WithReceipt = styled(WithReceipt)` + --withReceipt-backgroundColor: var(--color-layer-2); +`; diff --git a/src/views/dialogs/GlobalCommandDialog.tsx b/src/views/dialogs/GlobalCommandDialog.tsx index e984ec17d..62f6f2d2c 100644 --- a/src/views/dialogs/GlobalCommandDialog.tsx +++ b/src/views/dialogs/GlobalCommandDialog.tsx @@ -1,6 +1,7 @@ -import { useCommandMenu } from '@/hooks'; -import { useGlobalCommands } from '@/views/menus/useGlobalCommands'; +import { useCommandMenu } from '@/hooks/useCommandMenu'; + import { ComboboxDialogMenu } from '@/components/ComboboxDialogMenu'; +import { useGlobalCommands } from '@/views/menus/useGlobalCommands'; export const GlobalCommandDialog = () => { const { isCommandMenuOpen, setIsCommandMenuOpen, closeCommandMenu } = useCommandMenu(); diff --git a/src/views/dialogs/HelpDialog.tsx b/src/views/dialogs/HelpDialog.tsx index 156303228..52af4f46d 100644 --- a/src/views/dialogs/HelpDialog.tsx +++ b/src/views/dialogs/HelpDialog.tsx @@ -1,25 +1,33 @@ import { useMemo } from 'react'; -import styled, { AnyStyledComponent } from 'styled-components'; + +import styled from 'styled-components'; import { STRING_KEYS } from '@/constants/localization'; -import { useStringGetter, useURLConfigs } from '@/hooks'; +import { MenuConfig } from '@/constants/menus'; + +import { useStringGetter } from '@/hooks/useStringGetter'; +import { useURLConfigs } from '@/hooks/useURLConfigs'; + +import { breakpoints } from '@/styles'; import { ComboboxDialogMenu } from '@/components/ComboboxDialogMenu'; import { Icon, IconName } from '@/components/Icon'; import { isTruthy } from '@/lib/isTruthy'; -import { breakpoints } from '@/styles'; type ElementProps = { setIsOpen: (open: boolean) => void; }; +const latestCommit = import.meta.env.VITE_LAST_ORIGINAL_COMMIT; +const latestVersion = import.meta.env.VITE_LAST_TAG; + export const HelpDialog = ({ setIsOpen }: ElementProps) => { const stringGetter = useStringGetter(); const { help: helpCenter, community } = useURLConfigs(); const HELP_ITEMS = useMemo( - () => [ + (): MenuConfig<string | number, string | number> => [ { group: 'help-items', items: [ @@ -28,7 +36,9 @@ export const HelpDialog = ({ setIsOpen }: ElementProps) => { label: stringGetter({ key: STRING_KEYS.HELP_CENTER }), description: stringGetter({ key: STRING_KEYS.HELP_CENTER_DESCRIPTION }), onSelect: () => { - helpCenter && globalThis.open(helpCenter, '_blank'); + if (helpCenter) { + globalThis.open(helpCenter, '_blank'); + } setIsOpen(false); }, slotBefore: <Icon iconName={IconName.File} />, @@ -48,7 +58,9 @@ export const HelpDialog = ({ setIsOpen }: ElementProps) => { label: stringGetter({ key: STRING_KEYS.COMMUNITY }), description: stringGetter({ key: STRING_KEYS.COMMUNITY_DESCRIPTION }), onSelect: () => { - community && globalThis.open(community, '_blank'); + if (community) { + globalThis.open(community, '_blank'); + } setIsOpen(false); }, slotBefore: <Icon iconName={IconName.Discord} />, @@ -60,19 +72,33 @@ export const HelpDialog = ({ setIsOpen }: ElementProps) => { ); return ( - <Styled.ComboboxDialogMenu + <$ComboboxDialogMenu isOpen withSearch={false} setIsOpen={setIsOpen} title={stringGetter({ key: STRING_KEYS.HELP })} items={HELP_ITEMS} + slotFooter={ + latestCommit || latestVersion ? ( + <$Footer> + {latestCommit && ( + <span> + Release - <span title={latestCommit}> {`${latestCommit.substring(0, 7)}`}</span> + </span> + )} + {latestVersion && ( + <span> + Version -{' '} + <span title={latestVersion}>{`${latestVersion.split(`release/v`).at(-1)}`}</span> + </span> + )} + </$Footer> + ) : undefined + } /> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.ComboboxDialogMenu = styled(ComboboxDialogMenu)` +const $ComboboxDialogMenu = styled(ComboboxDialogMenu)` --dialog-content-paddingTop: 1rem; --dialog-content-paddingBottom: 1rem; --comboxDialogMenu-item-gap: 1rem; @@ -81,3 +107,12 @@ Styled.ComboboxDialogMenu = styled(ComboboxDialogMenu)` --dialog-width: var(--dialog-small-width); } `; + +const $Footer = styled.div` + display: flex; + flex-direction: column; + + color: var(--color-text-0); + cursor: default; + user-select: text; +`; diff --git a/src/views/dialogs/ManageFundsDialog.tsx b/src/views/dialogs/ManageFundsDialog.tsx index 3db65193c..cd58e45c9 100644 --- a/src/views/dialogs/ManageFundsDialog.tsx +++ b/src/views/dialogs/ManageFundsDialog.tsx @@ -1,15 +1,16 @@ import { shallowEqual, useSelector } from 'react-redux'; -import styled, { type AnyStyledComponent } from 'styled-components'; +import styled from 'styled-components'; import { TransferInputField, TransferType } from '@/constants/abacus'; -import { STRING_KEYS } from '@/constants/localization'; import { ButtonSize } from '@/constants/buttons'; -import { useStringGetter } from '@/hooks'; +import { STRING_KEYS } from '@/constants/localization'; + +import { useStringGetter } from '@/hooks/useStringGetter'; import { Dialog, DialogPlacement } from '@/components/Dialog'; import { ToggleGroup } from '@/components/ToggleGroup'; -import { TransferForm } from '@/views/forms/TransferForm'; import { WithdrawForm } from '@/views/forms/AccountManagementForms/WithdrawForm'; +import { TransferForm } from '@/views/forms/TransferForm'; import { getTransferInputs } from '@/state/inputsSelectors'; @@ -24,7 +25,7 @@ type ElementProps = { export const ManageFundsDialog = ({ setIsOpen, selectedTransferType }: ElementProps) => { const stringGetter = useStringGetter(); - const { type } = useSelector(getTransferInputs, shallowEqual) || {}; + const { type } = useSelector(getTransferInputs, shallowEqual) ?? {}; const currentType = type?.rawValue ?? selectedTransferType ?? TransferType.deposit.rawValue; const closeDialog = () => setIsOpen?.(false); @@ -48,12 +49,12 @@ export const ManageFundsDialog = ({ setIsOpen, selectedTransferType }: ElementPr }; return ( - <Styled.Dialog + <$Dialog isOpen setIsOpen={setIsOpen} placement={DialogPlacement.FullScreen} title={ - <Styled.ToggleGroup + <$ToggleGroup items={Object.values(transferTypeConfig)} value={currentType} size={ButtonSize.Medium} @@ -68,16 +69,14 @@ export const ManageFundsDialog = ({ setIsOpen, selectedTransferType }: ElementPr hasHeaderBorder > {transferTypeConfig[currentType].component} - </Styled.Dialog> + </$Dialog> ); }; -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.Dialog = styled(Dialog)` +const $Dialog = styled(Dialog)` --dialog-content-paddingTop: 1.5rem; `; -Styled.ToggleGroup = styled(ToggleGroup)` +const $ToggleGroup = styled(ToggleGroup)` overflow-x: auto; button { diff --git a/src/views/dialogs/MnemonicExportDialog.tsx b/src/views/dialogs/MnemonicExportDialog.tsx index 3b7c3462c..adf3f1547 100644 --- a/src/views/dialogs/MnemonicExportDialog.tsx +++ b/src/views/dialogs/MnemonicExportDialog.tsx @@ -1,17 +1,21 @@ import { useState } from 'react'; -import styled, { AnyStyledComponent, css } from 'styled-components'; + +import styled, { css } from 'styled-components'; import { AlertType } from '@/constants/alerts'; import { ButtonAction, ButtonSize } from '@/constants/buttons'; import { STRING_KEYS } from '@/constants/localization'; -import { useAccounts, useStringGetter } from '@/hooks'; + +import { useAccounts } from '@/hooks/useAccounts'; +import { useStringGetter } from '@/hooks/useStringGetter'; + import breakpoints from '@/styles/breakpoints'; import { layoutMixins } from '@/styles/layoutMixins'; import { AlertMessage } from '@/components/AlertMessage'; +import { Checkbox } from '@/components/Checkbox'; import { CopyButton } from '@/components/CopyButton'; import { Dialog } from '@/components/Dialog'; -import { Checkbox } from '@/components/Checkbox'; import { Icon, IconName } from '@/components/Icon'; import { TimeoutButton } from '@/components/TimeoutButton'; import { ToggleButton } from '@/components/ToggleButton'; @@ -44,16 +48,16 @@ export const MnemonicExportDialog = ({ setIsOpen }: ElementProps) => { const content = { [MnemonicExportStep.AcknowledgeRisk]: ( <> - <Styled.WaitingSpan> - <Styled.CautionIconContainer> + <$WaitingSpan> + <$CautionIconContainer> <Icon iconName={IconName.CautionCircleStroked} /> - </Styled.CautionIconContainer> + </$CautionIconContainer> <p>{stringGetter({ key: STRING_KEYS.SECRET_PHRASE_RISK })}</p> - </Styled.WaitingSpan> - <Styled.WithReceipt + </$WaitingSpan> + <$WithReceipt slotReceipt={ - <Styled.CheckboxContainer> + <$CheckboxContainer> <Checkbox checked={hasAcknowledged} onCheckedChange={setHasAcknowledged} @@ -62,7 +66,7 @@ export const MnemonicExportDialog = ({ setIsOpen }: ElementProps) => { key: STRING_KEYS.SECRET_PHRASE_RISK_ACK, })} /> - </Styled.CheckboxContainer> + </$CheckboxContainer> } > <TimeoutButton @@ -73,15 +77,15 @@ export const MnemonicExportDialog = ({ setIsOpen }: ElementProps) => { > {stringGetter({ key: STRING_KEYS.REVEAL_SECRET_PHRASE })} </TimeoutButton> - </Styled.WithReceipt> + </$WithReceipt> </> ), [MnemonicExportStep.DisplayMnemonic]: ( <> - <Styled.AlertMessage type={AlertType.Error}> + <$AlertMessage type={AlertType.Error}> {stringGetter({ key: STRING_KEYS.NEVER_SHARE_PHRASE })} - </Styled.AlertMessage> - <Styled.RevealControls> + </$AlertMessage> + <$RevealControls> <span> {stringGetter({ key: isShowing ? STRING_KEYS.NOT_READY : STRING_KEYS.READY })} </span> @@ -95,19 +99,20 @@ export const MnemonicExportDialog = ({ setIsOpen }: ElementProps) => { key: !isShowing ? STRING_KEYS.SHOW_PHRASE : STRING_KEYS.HIDE_PHRASE, })} </ToggleButton> - </Styled.RevealControls> + </$RevealControls> <WithReceipt slotReceipt={ - <Styled.WordList isShowing={isShowing} onClick={() => setIsShowing(!isShowing)}> - <Styled.List> + <$WordList isShowing={isShowing} onClick={() => setIsShowing(!isShowing)}> + <$List> {mnemonic?.split(' ').map((word: string, i: number) => ( - <Styled.Word key={i}> + // eslint-disable-next-line react/no-array-index-key + <$Word key={i}> <span>{isShowing ? word : '*****'}</span> - </Styled.Word> + </$Word> ))} - </Styled.List> + </$List> <span>{stringGetter({ key: STRING_KEYS.CLICK_TO_SHOW })}</span> - </Styled.WordList> + </$WordList> } > <CopyButton value={mnemonic} /> @@ -117,26 +122,23 @@ export const MnemonicExportDialog = ({ setIsOpen }: ElementProps) => { }[currentStep]; return ( - <Styled.Dialog + <$Dialog isOpen setIsOpen={setIsOpen} title={title} description={stringGetter({ key: STRING_KEYS.REVEAL_SECRET_PHRASE_DESCRIPTION })} > - <Styled.Content>{content}</Styled.Content> - </Styled.Dialog> + <$Content>{content}</$Content> + </$Dialog> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.WaitingSpan = styled.span` +const $WaitingSpan = styled.span` ${layoutMixins.row} gap: 1rem; color: var(--color-text-1); `; -Styled.CautionIconContainer = styled.div` +const $CautionIconContainer = styled.div` ${layoutMixins.stack} min-width: 2.5rem; height: 2.5rem; @@ -159,21 +161,21 @@ Styled.CautionIconContainer = styled.div` } `; -Styled.WithReceipt = styled(WithReceipt)` +const $WithReceipt = styled(WithReceipt)` --withReceipt-backgroundColor: var(--color-layer-2); `; -Styled.CheckboxContainer = styled.div` +const $CheckboxContainer = styled.div` padding: 1rem; color: var(--color-text-0); `; -Styled.AlertMessage = styled(AlertMessage)` +const $AlertMessage = styled(AlertMessage)` font: var(--font-base-book); margin: 0; `; -Styled.RevealControls = styled.div` +const $RevealControls = styled.div` ${layoutMixins.spacedRow} svg { @@ -181,7 +183,7 @@ Styled.RevealControls = styled.div` } `; -Styled.WordList = styled.div<{ isShowing?: boolean }>` +const $WordList = styled.div<{ isShowing?: boolean }>` ${layoutMixins.stack} transition: 0.2s; cursor: pointer; @@ -215,7 +217,7 @@ Styled.WordList = styled.div<{ isShowing?: boolean }>` } `; -Styled.List = styled.ol` +const $List = styled.ol` display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 0.25rem; @@ -223,7 +225,7 @@ Styled.List = styled.ol` counter-reset: word; `; -Styled.Word = styled.li` +const $Word = styled.li` font: var(--font-base-book); font-family: var(--fontFamily-monospace); @@ -241,13 +243,13 @@ Styled.Word = styled.li` } `; -Styled.Dialog = styled(Dialog)` +const $Dialog = styled(Dialog)` @media ${breakpoints.notMobile} { --dialog-width: 30rem; } `; -Styled.Content = styled.div` +const $Content = styled.div` ${layoutMixins.column} gap: 1rem; `; diff --git a/src/views/dialogs/MobileDownloadDialog.tsx b/src/views/dialogs/MobileDownloadDialog.tsx index 6a4aff121..0c1889d6d 100644 --- a/src/views/dialogs/MobileDownloadDialog.tsx +++ b/src/views/dialogs/MobileDownloadDialog.tsx @@ -1,11 +1,13 @@ -import styled, { AnyStyledComponent, css } from 'styled-components'; +import styled, { css } from 'styled-components'; + +import { STRING_KEYS } from '@/constants/localization'; + +import { useStringGetter } from '@/hooks/useStringGetter'; import { layoutMixins } from '@/styles/layoutMixins'; import { Dialog } from '@/components/Dialog'; import { QrCode } from '@/components/QrCode'; -import { useStringGetter } from '@/hooks'; -import { STRING_KEYS } from '@/constants/localization'; type ElementProps = { setIsOpen: (open: boolean) => void; @@ -24,28 +26,26 @@ type ElementProps = { // for testing only // export const mobileAppUrl = "http://example.com"; -let mobileAppUrl: string | undefined | null = undefined; +let mobileAppUrl: string | undefined | null; export const getMobileAppUrl = () => { if (!mobileAppUrl) { mobileAppUrl = - // for testing to verify <meta> is retrieved by name, QR code should show "@dYdX" as value - // document.querySelector('meta[name="twitter:creator"]')?.getAttribute('content') ?? - document.querySelector('meta[name="smartbanner:button-url-apple"]')?.getAttribute('content') ?? - document.querySelector('meta[name="smartbanner:button-url-google"]')?.getAttribute('content'); + // for testing to verify <meta> is retrieved by name, QR code should show "@dYdX" as value + // document.querySelector('meta[name="twitter:creator"]')?.getAttribute('content') ?? + document + .querySelector('meta[name="smartbanner:button-url-apple"]') + ?.getAttribute('content') ?? + document.querySelector('meta[name="smartbanner:button-url-google"]')?.getAttribute('content'); } return mobileAppUrl; -} - -const MobileQrCode = ({ - url, -}: { - url: string; -}) => { +}; + +const MobileQrCode = ({ url }: { url: string }) => { return ( - <Styled.QrCodeContainer isShowing={true}> + <$QrCodeContainer isShowing> <QrCode hasLogo size={432} value={url} /> - </Styled.QrCodeContainer> + </$QrCodeContainer> ); }; @@ -55,22 +55,19 @@ MobileDownloadDialog should only been shown on desktop when mobileAppUrl has val export const MobileDownloadDialog = ({ setIsOpen }: ElementProps) => { const stringGetter = useStringGetter(); - const content = ( - <MobileQrCode url={mobileAppUrl!} /> - ); + const content = <MobileQrCode url={mobileAppUrl!} />; return ( - <Dialog isOpen setIsOpen={setIsOpen} title={ - stringGetter({ key: STRING_KEYS.DOWNLOAD_MOBILE_APP }) - }> - <Styled.Content>{content}</Styled.Content> + <Dialog + isOpen + setIsOpen={setIsOpen} + title={stringGetter({ key: STRING_KEYS.DOWNLOAD_MOBILE_APP })} + > + <$Content>{content}</$Content> </Dialog> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.Content = styled.div` +const $Content = styled.div` ${layoutMixins.column} gap: 1rem; @@ -89,13 +86,7 @@ Styled.Content = styled.div` } `; -Styled.WaitingSpan = styled.span` - strong { - color: var(--color-warning); - } -`; - -Styled.QrCodeContainer = styled.figure<{ isShowing: boolean }>` +const $QrCodeContainer = styled.figure<{ isShowing: boolean }>` ${layoutMixins.stack} overflow: hidden; diff --git a/src/views/dialogs/MobileSignInDialog.tsx b/src/views/dialogs/MobileSignInDialog.tsx index 3b9b9786d..4dfa8f872 100644 --- a/src/views/dialogs/MobileSignInDialog.tsx +++ b/src/views/dialogs/MobileSignInDialog.tsx @@ -1,19 +1,24 @@ import { useMemo, useState } from 'react'; -import styled, { AnyStyledComponent, css } from 'styled-components'; + import { AES } from 'crypto-js'; +import styled, { css } from 'styled-components'; import { AlertType } from '@/constants/alerts'; import { ButtonSize } from '@/constants/buttons'; import { STRING_KEYS } from '@/constants/localization'; -import { useAccounts, useStringGetter } from '@/hooks'; + +import { useAccounts } from '@/hooks/useAccounts'; +import { useStringGetter } from '@/hooks/useStringGetter'; + import { layoutMixins } from '@/styles/layoutMixins'; import { AlertMessage } from '@/components/AlertMessage'; import { Dialog } from '@/components/Dialog'; import { Icon, IconName } from '@/components/Icon'; +import { QrCode } from '@/components/QrCode'; import { TimeoutButton } from '@/components/TimeoutButton'; import { ToggleButton } from '@/components/ToggleButton'; -import { QrCode } from '@/components/QrCode'; + import { log } from '@/lib/telemetry'; type ElementProps = { @@ -55,10 +60,10 @@ const MobileQrCode = ({ const encryptedData = AES.encrypt(JSON.stringify(data), encryptionKey).toString(); return ( - <Styled.QrCodeContainer isShowing={isShowing} onClick={onClick}> + <$QrCodeContainer isShowing={isShowing} onClick={onClick}> <QrCode hasLogo size={432} value={encryptedData} /> <span>{stringGetter({ key: STRING_KEYS.CLICK_TO_SHOW })}</span> - </Styled.QrCodeContainer> + </$QrCodeContainer> ); }; @@ -80,12 +85,12 @@ export const MobileSignInDialog = ({ setIsOpen }: ElementProps) => { const content = { [MobileSignInState.Waiting]: ( <> - <Styled.WaitingSpan> + <$WaitingSpan> <p>{stringGetter({ key: STRING_KEYS.DESCRIPTION_ABOUT_TO_TRANSFER })}</p> <p> <strong>{stringGetter({ key: STRING_KEYS.DESCRIPTION_NEVER_SHARE })} </strong> </p> - </Styled.WaitingSpan> + </$WaitingSpan> <TimeoutButton onClick={() => setCurrentState(MobileSignInState.Scanning)} timeoutInSeconds={8} @@ -140,14 +145,11 @@ export const MobileSignInDialog = ({ setIsOpen }: ElementProps) => { return ( <Dialog isOpen setIsOpen={setIsOpen} title={title}> - <Styled.Content>{content}</Styled.Content> + <$Content>{content}</$Content> </Dialog> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.Content = styled.div` +const $Content = styled.div` ${layoutMixins.column} gap: 1rem; @@ -166,13 +168,13 @@ Styled.Content = styled.div` } `; -Styled.WaitingSpan = styled.span` +const $WaitingSpan = styled.span` strong { color: var(--color-warning); } `; -Styled.QrCodeContainer = styled.figure<{ isShowing: boolean }>` +const $QrCodeContainer = styled.figure<{ isShowing: boolean }>` ${layoutMixins.stack} overflow: hidden; diff --git a/src/views/dialogs/NewMarketAgreementDialog.tsx b/src/views/dialogs/NewMarketAgreementDialog.tsx index 80e26bcf8..b0bf6048a 100644 --- a/src/views/dialogs/NewMarketAgreementDialog.tsx +++ b/src/views/dialogs/NewMarketAgreementDialog.tsx @@ -1,10 +1,13 @@ import { useState } from 'react'; -import styled, { AnyStyledComponent } from 'styled-components'; + +import styled from 'styled-components'; import { ButtonAction } from '@/constants/buttons'; -import { AppRoute, BASE_ROUTE } from '@/constants/routes'; import { STRING_KEYS } from '@/constants/localization'; -import { useStringGetter } from '@/hooks'; +import { AppRoute, BASE_ROUTE } from '@/constants/routes'; + +import { useStringGetter } from '@/hooks/useStringGetter'; + import breakpoints from '@/styles/breakpoints'; import { layoutMixins } from '@/styles/layoutMixins'; @@ -24,25 +27,25 @@ export const NewMarketAgreementDialog = ({ acceptTerms, setIsOpen }: ElementProp const stringGetter = useStringGetter(); return ( - <Styled.Dialog + <$Dialog isOpen setIsOpen={setIsOpen} title={stringGetter({ key: STRING_KEYS.ACKNOWLEDGEMENT })} > - <Styled.Content> + <$Content> <p> {stringGetter({ key: STRING_KEYS.NEW_MARKET_PROPOSAL_AGREEMENT, params: { DOCUMENTATION_LINK: ( - <Styled.Link href="https://docs.dydx.community/dydx-governance/voting-and-governance/governance-process"> + <$Link href="https://docs.dydx.community/dydx-governance/voting-and-governance/governance-process"> {stringGetter({ key: STRING_KEYS.WEBSITE }).toLowerCase()} - </Styled.Link> + </$Link> ), TERMS_OF_USE: ( - <Styled.Link href={`${BASE_ROUTE}${AppRoute.Terms}`}> + <$Link href={`${BASE_ROUTE}${AppRoute.Terms}`}> {stringGetter({ key: STRING_KEYS.TERMS_OF_USE })} - </Styled.Link> + </$Link> ), }, })} @@ -54,7 +57,7 @@ export const NewMarketAgreementDialog = ({ acceptTerms, setIsOpen }: ElementProp id="acknowledgement-checkbox" label={stringGetter({ key: STRING_KEYS.I_HAVE_READ_AND_AGREE })} /> - <Styled.ButtonRow> + <$ButtonRow> <Button action={ButtonAction.Base} onClick={() => setIsOpen(false)}> {stringGetter({ key: STRING_KEYS.CANCEL })} </Button> @@ -68,21 +71,18 @@ export const NewMarketAgreementDialog = ({ acceptTerms, setIsOpen }: ElementProp > {stringGetter({ key: STRING_KEYS.CONTINUE })} </Button> - </Styled.ButtonRow> - </Styled.Content> - </Styled.Dialog> + </$ButtonRow> + </$Content> + </$Dialog> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.Dialog = styled(Dialog)` +const $Dialog = styled(Dialog)` @media ${breakpoints.notMobile} { --dialog-width: 30rem; } `; -Styled.Content = styled.div` +const $Content = styled.div` ${layoutMixins.column} gap: 1rem; @@ -93,12 +93,12 @@ Styled.Content = styled.div` } `; -Styled.Link = styled(Link)` +const $Link = styled(Link)` --link-color: var(--color-accent); display: inline-block; `; -Styled.ButtonRow = styled.div` +const $ButtonRow = styled.div` display: grid; grid-template-columns: 1fr 2fr; gap: 1rem; diff --git a/src/views/dialogs/NewMarketMessageDetailsDialog.tsx b/src/views/dialogs/NewMarketMessageDetailsDialog.tsx index a899a768e..8490771d6 100644 --- a/src/views/dialogs/NewMarketMessageDetailsDialog.tsx +++ b/src/views/dialogs/NewMarketMessageDetailsDialog.tsx @@ -1,13 +1,16 @@ import { useMemo, useState } from 'react'; -import styled, { AnyStyledComponent } from 'styled-components'; + import { utils } from '@dydxprotocol/v4-client-js'; +import styled from 'styled-components'; import { STRING_KEYS } from '@/constants/localization'; +import { MenuItem } from '@/constants/menus'; import { isMainnet } from '@/constants/networks'; -import { PotentialMarketItem } from '@/constants/potentialMarkets'; -import { useGovernanceVariables, useStringGetter, useTokenConfigs } from '@/hooks'; -import { usePotentialMarkets } from '@/hooks/usePotentialMarkets'; -import { layoutMixins } from '@/styles/layoutMixins'; +import { NewMarketProposal } from '@/constants/potentialMarkets'; + +import { useGovernanceVariables } from '@/hooks/useGovernanceVariables'; +import { useStringGetter } from '@/hooks/useStringGetter'; +import { useTokenConfigs } from '@/hooks/useTokenConfigs'; import { Details } from '@/components/Details'; import { Dialog } from '@/components/Dialog'; @@ -20,7 +23,7 @@ import { MustBigNumber } from '@/lib/numbers'; type ElementProps = { preventClose?: boolean; setIsOpen?: (open: boolean) => void; - assetData?: PotentialMarketItem; + assetData: NewMarketProposal; clobPairId?: number; liquidityTier?: string; }; @@ -41,20 +44,28 @@ export const NewMarketMessageDetailsDialog = ({ setIsOpen, }: ElementProps) => { const [codeToggleGroup, setCodeToggleGroup] = useState(CodeToggleGroup.CREATE_ORACLE); - const { exchangeConfigs } = usePotentialMarkets(); - const { baseAsset } = assetData ?? {}; + const { baseAsset, params, title } = assetData ?? {}; + const { + ticker, + marketType, + exchangeConfigJson, + minExchanges, + minPriceChange, + atomicResolution, + quantumConversionExponent, + stepBaseQuantums, + subticksPerTick, + } = params ?? {}; const { newMarketProposal } = useGovernanceVariables(); const stringGetter = useStringGetter(); const { chainTokenDecimals, chainTokenLabel } = useTokenConfigs(); const initialDepositAmountDecimals = isMainnet ? 0 : chainTokenDecimals; const exchangeConfig = useMemo(() => { - return baseAsset ? exchangeConfigs?.[baseAsset] : undefined; + return baseAsset ? exchangeConfigJson : undefined; }, [baseAsset]); - const ticker = useMemo(() => `${baseAsset}-USD`, [baseAsset]); - - const toggleGroupItems: Parameters<typeof ToggleGroup>[0]['items'] = useMemo(() => { + const toggleGroupItems: MenuItem<CodeToggleGroup>[] = useMemo(() => { return [ { value: CodeToggleGroup.CREATE_ORACLE, @@ -86,8 +97,8 @@ export const NewMarketMessageDetailsDialog = ({ setIsOpen={setIsOpen} title={stringGetter({ key: STRING_KEYS.MESSAGE_DETAILS })} > - <Styled.ProposedMessageDetails> - <Styled.Tabs + <$ProposedMessageDetails> + <$Tabs items={toggleGroupItems} value={codeToggleGroup} onValueChange={setCodeToggleGroup} @@ -95,8 +106,8 @@ export const NewMarketMessageDetailsDialog = ({ { { [CodeToggleGroup.CREATE_ORACLE]: ( - <Styled.Code> - <Styled.Details + <$Code> + <$Details layout="column" items={[ { @@ -112,42 +123,44 @@ export const NewMarketMessageDetailsDialog = ({ { key: 'min-exchanges', label: 'min_exchanges', - value: `${assetData?.minExchanges}`, + value: `${minExchanges}`, }, { key: 'min-price-change-ppm', label: 'min_price_change_ppm', - value: `${assetData?.minPriceChangePpm}`, + value: `${minPriceChange}`, }, ]} /> - <Styled.Text0> - exchange_config_json{' '} - {exchangeConfig && <Tag type={TagType.Number}>{exchangeConfig.length}</Tag>} - </Styled.Text0> - {'['} - {exchangeConfig?.map((exchange) => { - return ( - <Styled.ExchangeObject - key={exchange.exchangeName} - style={{ padding: 0, margin: 0, paddingLeft: '0.5rem' }} - > - {'{'} - {Object.keys(exchange).map((key) => ( - <Styled.Line key={key}> - {key}: <span>{exchange[key as keyof typeof exchange]}</span> - </Styled.Line> - ))} - {'},'} - </Styled.ExchangeObject> - ); - })} - {']'} - </Styled.Code> + <$ExchangeConfigs> + <$Text0> + exchange_config_json + {exchangeConfig && <$Tag type={TagType.Number}>{exchangeConfig.length}</$Tag>} + </$Text0> + [ + {exchangeConfig?.map((exchange) => { + return ( + <$ExchangeObject + key={exchange.exchangeName} + style={{ padding: 0, margin: 0, paddingLeft: '0.5rem' }} + > + {'{'} + {Object.keys(exchange).map((key) => ( + <$Line key={key}> + {key}: <span>{exchange[key as keyof typeof exchange]}</span> + </$Line> + ))} + {'},'} + </$ExchangeObject> + ); + })} + ] + </$ExchangeConfigs> + </$Code> ), [CodeToggleGroup.MSG_CREATE_PERPETUAL]: ( - <Styled.Code> - <Styled.Details + <$Code> + <$Details layout="column" items={[ { @@ -168,7 +181,7 @@ export const NewMarketMessageDetailsDialog = ({ { key: 'atomic_resolution', label: 'atomic_resolution', - value: `${assetData?.atomicResolution}`, + value: `${atomicResolution}`, }, { key: 'default_funding_ppm', @@ -180,13 +193,18 @@ export const NewMarketMessageDetailsDialog = ({ label: 'liquidity_tier', value: liquidityTier, }, + { + key: 'market_type', + label: 'market_type', + value: marketType ?? 'PERPETUAL_MARKET_TYPE_CROSS', + }, ]} /> - </Styled.Code> + </$Code> ), [CodeToggleGroup.MSG_CREATE_CLOB_PAIR]: ( - <Styled.Code> - <Styled.Details + <$Code> + <$Details layout="column" items={[ { @@ -202,17 +220,17 @@ export const NewMarketMessageDetailsDialog = ({ { key: 'quantum_conversion_exponent', label: 'quantum_conversion_exponent', - value: `${assetData?.quantumConversionExponent}`, + value: `${quantumConversionExponent}`, }, { key: 'step_base_quantums', label: 'step_base_quantums', - value: `${assetData?.stepBaseQuantum}`, + value: `${stepBaseQuantums}`, }, { key: 'subticks_per_tick', label: 'subticks_per_tick', - value: `${assetData?.subticksPerTick}`, + value: `${subticksPerTick}`, }, { key: 'status', @@ -221,11 +239,11 @@ export const NewMarketMessageDetailsDialog = ({ }, ]} /> - </Styled.Code> + </$Code> ), [CodeToggleGroup.MSG_DELAY_MESSAGE]: ( - <Styled.Code> - <Styled.Details + <$Code> + <$Details layout="column" items={[ { @@ -241,8 +259,8 @@ export const NewMarketMessageDetailsDialog = ({ }, ]} /> - <div style={{ marginTop: '1rem' }}>MSG_UPDATE_CLOB_PAIR</div> - <Styled.Details + <div style={{ margin: '0.5rem 0' }}>MSG_UPDATE_CLOB_PAIR</div> + <$Details layout="column" items={[ { @@ -258,17 +276,17 @@ export const NewMarketMessageDetailsDialog = ({ { key: 'quantum_conversion_exponent', label: 'quantum_conversion_exponent', - value: `${assetData?.quantumConversionExponent}`, + value: `${quantumConversionExponent}`, }, { key: 'step_base_quantums', label: 'step_base_quantums', - value: `${assetData?.stepBaseQuantum}`, + value: `${stepBaseQuantums}`, }, { key: 'subticks_per_tick', label: 'subticks_per_tick', - value: `${assetData?.subticksPerTick}`, + value: `${subticksPerTick}`, }, { key: 'status', @@ -277,48 +295,52 @@ export const NewMarketMessageDetailsDialog = ({ }, ]} /> - </Styled.Code> + </$Code> ), [CodeToggleGroup.MSG_SUBMIT_PROPOSAL]: ( - <Styled.Code> - <Styled.Text0>title: </Styled.Text0> - <Styled.Description>{utils.getGovAddNewMarketTitle(ticker)}</Styled.Description> - - <Styled.Text0>initial_deposit_amount:</Styled.Text0> - <Styled.Description> - { - <Output - type={OutputType.Asset} - value={MustBigNumber(newMarketProposal.initialDepositAmount).div( - Number(`1e${chainTokenDecimals}`) - )} - fractionDigits={initialDepositAmountDecimals} - tag={chainTokenLabel} - /> - } - </Styled.Description> - - <Styled.Text0>summary: </Styled.Text0> - <Styled.Description> - {utils.getGovAddNewMarketSummary(ticker, newMarketProposal.delayBlocks)} - </Styled.Description> - </Styled.Code> + <$Code> + <$Details + items={[ + { + key: 'title', + label: 'title', + value: title, + }, + { + key: 'initial_deposit_amount', + label: 'initial_deposit_amount', + value: ( + <Output + type={OutputType.Asset} + value={MustBigNumber(newMarketProposal.initialDepositAmount).div( + Number(`1e${chainTokenDecimals}`) + )} + fractionDigits={initialDepositAmountDecimals} + tag={chainTokenLabel} + /> + ), + }, + { + key: 'summary', + label: 'summary', + value: ( + <$Summary> + {utils.getGovAddNewMarketSummary(ticker, newMarketProposal.delayBlocks)} + </$Summary> + ), + }, + ]} + /> + </$Code> ), }[codeToggleGroup] } - </Styled.ProposedMessageDetails> + </$ProposedMessageDetails> </Dialog> ); }; -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.Content = styled.div` - ${layoutMixins.column} - gap: 0; -`; - -Styled.ProposedMessageDetails = styled.div` +const $ProposedMessageDetails = styled.div` display: flex; flex-direction: column; gap: 1rem; @@ -328,15 +350,27 @@ Styled.ProposedMessageDetails = styled.div` border-radius: 10px; `; -Styled.Tabs = styled(ToggleGroup)` +const $Tabs = styled(ToggleGroup)` overflow-x: auto; +` as typeof ToggleGroup; + +const $Details = styled(Details)` + --details-item-height: 1.5rem; +`; + +const $ExchangeConfigs = styled.div` + margin-top: 0.5rem; `; -Styled.Text0 = styled.span` +const $Text0 = styled.span` color: var(--color-text-0); `; -Styled.Code = styled.div` +const $Tag = styled(Tag)` + margin: 0 0.5ch; +`; + +const $Code = styled.div` height: 16.25rem; overflow: auto; display: block; @@ -349,18 +383,15 @@ Styled.Code = styled.div` gap: 0rem; `; -Styled.ExchangeObject = styled.div` +const $ExchangeObject = styled.div` padding: 1rem; `; -Styled.Details = styled(Details)` - --details-item-height: 1.5rem; -`; - -Styled.Line = styled.pre` +const $Line = styled.pre` margin-left: 1rem; `; -Styled.Description = styled.p` - margin-bottom: 1rem; +const $Summary = styled.p` + text-align: justify; + margin-left: 0.5rem; `; diff --git a/src/views/dialogs/OnboardingDialog.tsx b/src/views/dialogs/OnboardingDialog.tsx index 54fb939c2..838d7ce2c 100644 --- a/src/views/dialogs/OnboardingDialog.tsx +++ b/src/views/dialogs/OnboardingDialog.tsx @@ -1,16 +1,17 @@ -import { type ElementType, useState, useEffect } from 'react'; -import styled, { AnyStyledComponent, css } from 'styled-components'; +import { useEffect, useState, type ElementType } from 'react'; +import { useSelector } from 'react-redux'; +import styled, { css } from 'styled-components'; + +import { EvmDerivedAccountStatus, OnboardingSteps } from '@/constants/account'; import { AnalyticsEvent } from '@/constants/analytics'; import { STRING_KEYS } from '@/constants/localization'; import { isMainnet } from '@/constants/networks'; -import { EvmDerivedAccountStatus, OnboardingSteps } from '@/constants/account'; -import { wallets } from '@/constants/wallets'; +import { WalletType, wallets } from '@/constants/wallets'; -import { calculateOnboardingStep } from '@/state/accountCalculators'; - -import { useSelector } from 'react-redux'; -import { useAccounts, useBreakpoints, useStringGetter } from '@/hooks'; +import { useAccounts } from '@/hooks/useAccounts'; +import { useBreakpoints } from '@/hooks/useBreakpoints'; +import { useStringGetter } from '@/hooks/useStringGetter'; import { breakpoints } from '@/styles'; import { layoutMixins } from '@/styles/layoutMixins'; @@ -19,15 +20,16 @@ import { Dialog, DialogPlacement } from '@/components/Dialog'; import { GreenCheckCircle } from '@/components/GreenCheckCircle'; import { Icon } from '@/components/Icon'; import { Ring } from '@/components/Ring'; - import { TestnetDepositForm } from '@/views/forms/AccountManagementForms/TestnetDepositForm'; +import { calculateOnboardingStep } from '@/state/accountCalculators'; + import { track } from '@/lib/analytics'; +import { DepositForm } from '../forms/AccountManagementForms/DepositForm'; import { AcknowledgeTerms } from './OnboardingDialog/AcknowledgeTerms'; import { ChooseWallet } from './OnboardingDialog/ChooseWallet'; import { GenerateKeys } from './OnboardingDialog/GenerateKeys'; -import { DepositForm } from '../forms/AccountManagementForms/DepositForm'; type ElementProps = { setIsOpen?: (open: boolean) => void; @@ -39,7 +41,7 @@ export const OnboardingDialog = ({ setIsOpen }: ElementProps) => { const stringGetter = useStringGetter(); const { isMobile } = useBreakpoints(); - const { disconnect, walletType } = useAccounts(); + const { selectWalletType, disconnect, walletType } = useAccounts(); const currentOnboardingStep = useSelector(calculateOnboardingStep); @@ -54,8 +56,15 @@ export const OnboardingDialog = ({ setIsOpen }: ElementProps) => { setIsOpen?.(open); }; + const onChooseWallet = (wType: WalletType) => { + if (wType === WalletType.Privy) { + setIsOpenFromDialog(false); + } + selectWalletType(wType); + }; + return ( - <Styled.Dialog + <$Dialog isOpen={Boolean(currentOnboardingStep)} setIsOpen={setIsOpenFromDialog} {...(currentOnboardingStep && @@ -64,9 +73,9 @@ export const OnboardingDialog = ({ setIsOpen }: ElementProps) => { title: stringGetter({ key: STRING_KEYS.CONNECT_YOUR_WALLET }), description: 'Select your wallet from these supported options.', children: ( - <Styled.Content> - <ChooseWallet /> - </Styled.Content> + <$Content> + <ChooseWallet onChooseWallet={onChooseWallet} /> + </$Content> ), }, [OnboardingSteps.KeyDerivation]: { @@ -74,27 +83,25 @@ export const OnboardingDialog = ({ setIsOpen }: ElementProps) => { [EvmDerivedAccountStatus.NotDerived]: walletType && ( <Icon iconComponent={wallets[walletType]?.icon as ElementType} /> ), - [EvmDerivedAccountStatus.Deriving]: <Styled.Ring withAnimation value={0.25} />, - [EvmDerivedAccountStatus.EnsuringDeterminism]: ( - <Styled.Ring withAnimation value={0.25} /> - ), + [EvmDerivedAccountStatus.Deriving]: <$Ring withAnimation value={0.25} />, + [EvmDerivedAccountStatus.EnsuringDeterminism]: <$Ring withAnimation value={0.25} />, [EvmDerivedAccountStatus.Derived]: <GreenCheckCircle />, }[derivationStatus], title: stringGetter({ key: STRING_KEYS.SIGN_MESSAGE }), description: stringGetter({ key: STRING_KEYS.SIGNATURE_CREATES_COSMOS_WALLET }), children: ( - <Styled.Content> + <$Content> <GenerateKeys status={derivationStatus} setStatus={setDerivationStatus} /> - </Styled.Content> + </$Content> ), width: '23rem', }, [OnboardingSteps.AcknowledgeTerms]: { title: stringGetter({ key: STRING_KEYS.ACKNOWLEDGE_TERMS }), children: ( - <Styled.Content> + <$Content> <AcknowledgeTerms onClose={() => setIsOpenFromDialog?.(false)} /> - </Styled.Content> + </$Content> ), width: '30rem', }, @@ -102,7 +109,7 @@ export const OnboardingDialog = ({ setIsOpen }: ElementProps) => { title: stringGetter({ key: STRING_KEYS.DEPOSIT }), description: !isMainnet && 'Test funds will be sent directly to your dYdX account.', children: ( - <Styled.Content> + <$Content> {isMainnet ? ( <DepositForm onDeposit={(event) => { @@ -116,7 +123,7 @@ export const OnboardingDialog = ({ setIsOpen }: ElementProps) => { }} /> )} - </Styled.Content> + </$Content> ), }, }[currentOnboardingStep])} @@ -124,15 +131,12 @@ export const OnboardingDialog = ({ setIsOpen }: ElementProps) => { /> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.Content = styled.div` +const $Content = styled.div` ${layoutMixins.flexColumn} gap: 1rem; `; -Styled.Dialog = styled(Dialog)<{ width?: string }>` +const $Dialog = styled(Dialog)<{ width?: string }>` @media ${breakpoints.notMobile} { ${({ width }) => width && @@ -144,7 +148,7 @@ Styled.Dialog = styled(Dialog)<{ width?: string }>` --dialog-icon-size: 1.25rem; `; -Styled.Ring = styled(Ring)` +const $Ring = styled(Ring)` width: 1.25rem; height: 1.25rem; --ring-color: var(--color-accent); diff --git a/src/views/dialogs/OnboardingDialog/AcknowledgeTerms.tsx b/src/views/dialogs/OnboardingDialog/AcknowledgeTerms.tsx index c1210b71c..b42469302 100644 --- a/src/views/dialogs/OnboardingDialog/AcknowledgeTerms.tsx +++ b/src/views/dialogs/OnboardingDialog/AcknowledgeTerms.tsx @@ -1,13 +1,14 @@ -import styled, { type AnyStyledComponent } from 'styled-components'; +import styled from 'styled-components'; -import { useAccounts, useStringGetter } from '@/hooks'; - -import { AppRoute, BASE_ROUTE } from '@/constants/routes'; -import { STRING_KEYS } from '@/constants/localization'; import { ButtonAction } from '@/constants/buttons'; +import { STRING_KEYS } from '@/constants/localization'; +import { AppRoute, BASE_ROUTE } from '@/constants/routes'; + +import { useAccounts } from '@/hooks/useAccounts'; +import { useStringGetter } from '@/hooks/useStringGetter'; -import { layoutMixins } from '@/styles/layoutMixins'; import { formMixins } from '@/styles/formMixins'; +import { layoutMixins } from '@/styles/layoutMixins'; import { Button } from '@/components/Button'; import { Link } from '@/components/Link'; @@ -34,19 +35,19 @@ export const AcknowledgeTerms = ({ onClose, onContinue }: ElementProps) => { key: STRING_KEYS.TOS_TITLE, params: { TERMS_LINK: ( - <Styled.Link href={`${BASE_ROUTE}${AppRoute.Terms}`}> + <$Link href={`${BASE_ROUTE}${AppRoute.Terms}`}> {stringGetter({ key: STRING_KEYS.TERMS_OF_USE })} - </Styled.Link> + </$Link> ), PRIVACY_POLICY_LINK: ( - <Styled.Link href={`${BASE_ROUTE}${AppRoute.Privacy}`}> + <$Link href={`${BASE_ROUTE}${AppRoute.Privacy}`}> {stringGetter({ key: STRING_KEYS.PRIVACY_POLICY })} - </Styled.Link> + </$Link> ), }, })} </p> - <Styled.TOS> + <$TOS> <ul> <li>{stringGetter({ key: STRING_KEYS.TOS_LINE1 })}</li> <li>{stringGetter({ key: STRING_KEYS.TOS_LINE2 })}</li> @@ -54,22 +55,19 @@ export const AcknowledgeTerms = ({ onClose, onContinue }: ElementProps) => { <li>{stringGetter({ key: STRING_KEYS.TOS_LINE4 })}</li> <li>{stringGetter({ key: STRING_KEYS.TOS_LINE5 })}</li> </ul> - </Styled.TOS> - <Styled.Footer> - <Styled.Button onClick={onClose} action={ButtonAction.Base}> + </$TOS> + <$Footer> + <$Button onClick={onClose} action={ButtonAction.Base}> {stringGetter({ key: STRING_KEYS.CLOSE })} - </Styled.Button> - <Styled.Button onClick={onAcknowledgement} action={ButtonAction.Primary}> + </$Button> + <$Button onClick={onAcknowledgement} action={ButtonAction.Primary}> {stringGetter({ key: STRING_KEYS.I_AGREE })} - </Styled.Button> - </Styled.Footer> + </$Button> + </$Footer> </> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.Link = styled(Link)` +const $Link = styled(Link)` display: inline-block; color: var(--color-accent); @@ -78,7 +76,7 @@ Styled.Link = styled(Link)` } `; -Styled.TOS = styled.section` +const $TOS = styled.section` background-color: var(--color-layer-4); padding: 1rem 1rem 1rem 2rem; border-radius: 0.875rem; @@ -88,13 +86,13 @@ Styled.TOS = styled.section` } `; -Styled.Footer = styled.div` +const $Footer = styled.div` ${formMixins.footer}; ${layoutMixins.row} gap: 1rem; `; -Styled.Button = styled(Button)` +const $Button = styled(Button)` flex-grow: 1; `; diff --git a/src/views/dialogs/OnboardingDialog/ChooseWallet.tsx b/src/views/dialogs/OnboardingDialog/ChooseWallet.tsx index 4ffb3ff69..0e6ce4964 100644 --- a/src/views/dialogs/OnboardingDialog/ChooseWallet.tsx +++ b/src/views/dialogs/OnboardingDialog/ChooseWallet.tsx @@ -1,84 +1,84 @@ -import { useState } from 'react'; -import styled, { AnyStyledComponent } from 'styled-components'; -import { useDispatch } from 'react-redux'; +import { ElementType } from 'react'; + +import styled from 'styled-components'; import { AlertType } from '@/constants/alerts'; +import { ButtonAction, ButtonSize } from '@/constants/buttons'; import { STRING_KEYS } from '@/constants/localization'; - import { WalletType, wallets } from '@/constants/wallets'; -import { ButtonAction, ButtonSize } from '@/constants/buttons'; - -import { AlertMessage } from '@/components/AlertMessage'; -import { Button } from '@/components/Button'; -import { Icon } from '@/components/Icon'; -import { Link } from '@/components/Link'; -import { useAccounts, useStringGetter, useURLConfigs } from '@/hooks'; +import { useAccounts } from '@/hooks/useAccounts'; import { useDisplayedWallets } from '@/hooks/useDisplayedWallets'; +import { useStringGetter } from '@/hooks/useStringGetter'; +import { useURLConfigs } from '@/hooks/useURLConfigs'; import { breakpoints } from '@/styles'; import { layoutMixins } from '@/styles/layoutMixins'; -export const ChooseWallet = () => { +import { AlertMessage } from '@/components/AlertMessage'; +import { Button } from '@/components/Button'; +import { Icon } from '@/components/Icon'; +import { Link } from '@/components/Link'; + +export const ChooseWallet = ({ + onChooseWallet, +}: { + onChooseWallet: (walletType: WalletType) => void; +}) => { const stringGetter = useStringGetter(); const { walletLearnMore } = useURLConfigs(); const displayedWallets = useDisplayedWallets(); - const { selectWalletType, selectedWalletType, selectedWalletError } = useAccounts(); + const { selectedWalletType, selectedWalletError } = useAccounts(); return ( <> {selectedWalletType && selectedWalletError && ( - <Styled.AlertMessage type={AlertType.Error}> - { - <h4> - {stringGetter({ - key: STRING_KEYS.COULD_NOT_CONNECT, - params: { - WALLET: stringGetter({ - key: wallets[selectedWalletType].stringKey, - }), - }, - })} - </h4> - } + <$AlertMessage type={AlertType.Error}> + <h4> + {stringGetter({ + key: STRING_KEYS.COULD_NOT_CONNECT, + params: { + WALLET: stringGetter({ + key: wallets[selectedWalletType].stringKey, + }), + }, + })} + </h4> {selectedWalletError} - </Styled.AlertMessage> + </$AlertMessage> )} - <Styled.Wallets> + <$Wallets> {displayedWallets.map((walletType) => ( - <Styled.WalletButton + <$WalletButton action={ButtonAction.Base} key={walletType} - onClick={() => selectWalletType(walletType)} - slotLeft={<Styled.Icon iconComponent={wallets[walletType].icon} />} + onClick={() => onChooseWallet(walletType)} + slotLeft={<$Icon iconComponent={wallets[walletType].icon as ElementType} />} size={ButtonSize.Small} > - <div>{stringGetter({ key: wallets[walletType].stringKey })}</div> - </Styled.WalletButton> + {stringGetter({ key: wallets[walletType].stringKey })} + </$WalletButton> ))} - </Styled.Wallets> + </$Wallets> - <Styled.Footer> + <$Footer> <Link href={walletLearnMore} withIcon> {stringGetter({ key: STRING_KEYS.ABOUT_WALLETS })} </Link> - </Styled.Footer> + </$Footer> </> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.AlertMessage = styled(AlertMessage)` +const $AlertMessage = styled(AlertMessage)` h4 { font: var(--font-small-medium); } `; -Styled.Wallets = styled.div` +const $Wallets = styled.div` gap: 0.5rem; display: grid; grid-template-columns: repeat(auto-fit, minmax(10rem, 1fr)); @@ -97,7 +97,7 @@ Styled.Wallets = styled.div` } */ `; -Styled.WalletButton = styled(Button)` +const $WalletButton = styled(Button)` justify-content: start; gap: 0.5rem; @@ -110,12 +110,12 @@ Styled.WalletButton = styled(Button)` } `; -Styled.Icon = styled(Icon)` +const $Icon = styled(Icon)` width: 1.5em; height: 1.5em; `; -Styled.Footer = styled.footer` +const $Footer = styled.footer` ${layoutMixins.spacedRow} justify-content: center; margin-top: auto; diff --git a/src/views/dialogs/OnboardingDialog/GenerateKeys.tsx b/src/views/dialogs/OnboardingDialog/GenerateKeys.tsx index 23c560e6c..a6be106d6 100644 --- a/src/views/dialogs/OnboardingDialog/GenerateKeys.tsx +++ b/src/views/dialogs/OnboardingDialog/GenerateKeys.tsx @@ -1,8 +1,8 @@ import { useState } from 'react'; -import { useSignTypedData } from 'wagmi'; -import styled, { type AnyStyledComponent, css } from 'styled-components'; -import { useSelector } from 'react-redux'; + import { AES } from 'crypto-js'; +import { useSelector } from 'react-redux'; +import styled, { css } from 'styled-components'; import { EvmDerivedAccountStatus } from '@/constants/account'; import { AlertType } from '@/constants/alerts'; @@ -10,10 +10,13 @@ import { AnalyticsEvent } from '@/constants/analytics'; import { ButtonAction } from '@/constants/buttons'; import { STRING_KEYS } from '@/constants/localization'; import { ENVIRONMENT_CONFIG_MAP } from '@/constants/networks'; -import { DydxAddress, getSignTypedData } from '@/constants/wallets'; +import { DydxAddress } from '@/constants/wallets'; -import { useAccounts, useBreakpoints, useDydxClient, useStringGetter } from '@/hooks'; +import { useAccounts } from '@/hooks/useAccounts'; +import { useDydxClient } from '@/hooks/useDydxClient'; import { useMatchingEvmNetwork } from '@/hooks/useMatchingEvmNetwork'; +import useSignForWalletDerivation from '@/hooks/useSignForWalletDerivation'; +import { useStringGetter } from '@/hooks/useStringGetter'; import { layoutMixins } from '@/styles/layoutMixins'; @@ -25,7 +28,7 @@ import { Switch } from '@/components/Switch'; import { WithReceipt } from '@/components/WithReceipt'; import { WithTooltip } from '@/components/WithTooltip'; -import { getSelectedNetwork, getSelectedDydxChainId } from '@/state/appSelectors'; +import { getSelectedNetwork } from '@/state/appSelectors'; import { track } from '@/lib/analytics'; import { isTruthy } from '@/lib/isTruthy'; @@ -38,11 +41,7 @@ type ElementProps = { onKeysDerived?: () => void; }; -export const GenerateKeys = ({ - status: status, - setStatus, - onKeysDerived = () => {}, -}: ElementProps) => { +export const GenerateKeys = ({ status, setStatus, onKeysDerived = () => {} }: ElementProps) => { const stringGetter = useStringGetter(); const [shouldRememberMe, setShouldRememberMe] = useState(false); @@ -66,14 +65,14 @@ export const GenerateKeys = ({ try { await matchNetwork?.(); return true; - } catch (error) { + } catch (err) { const { message, walletErrorType, isErrorExpected } = parseWalletError({ - error, + error: err, stringGetter, }); if (!isErrorExpected) { - log('GenerateKeys/switchNetwork', error, { walletErrorType }); + log('GenerateKeys/switchNetwork', err, { walletErrorType }); } if (message) { @@ -98,15 +97,7 @@ export const GenerateKeys = ({ EvmDerivedAccountStatus.Derived, ].includes(status); - const selectedDydxChainId = useSelector(getSelectedDydxChainId); - const signTypedData = getSignTypedData(selectedDydxChainId); - const { signTypedDataAsync } = useSignTypedData({ - ...signTypedData, - domain: { - ...signTypedData.domain, - chainId, - }, - }); + const signTypedDataAsync = useSignForWalletDerivation(); const staticEncryptionKey = import.meta.env.VITE_PK_ENCRYPTION_KEY; @@ -143,9 +134,9 @@ export const GenerateKeys = ({ ); } } - } catch (error) { + } catch (err) { setStatus(EvmDerivedAccountStatus.NotDerived); - const { message } = parseWalletError({ error, stringGetter }); + const { message } = parseWalletError({ error: err, stringGetter }); if (message) { track(AnalyticsEvent.OnboardingWalletIsNonDeterministic); @@ -165,17 +156,17 @@ export const GenerateKeys = ({ // 4. Done setStatus(EvmDerivedAccountStatus.Derived); - } catch (error) { + } catch (err) { setStatus(EvmDerivedAccountStatus.NotDerived); const { message, walletErrorType, isErrorExpected } = parseWalletError({ - error, + error: err, stringGetter, }); if (message) { setError(message); if (!isErrorExpected) { - log('GenerateKeys/deriveKeys', error, { walletErrorType }); + log('GenerateKeys/deriveKeys', err, { walletErrorType }); } } } @@ -183,7 +174,7 @@ export const GenerateKeys = ({ return ( <> - <Styled.StatusCardsContainer> + <$StatusCardsContainer> {[ { status: EvmDerivedAccountStatus.Deriving, @@ -198,24 +189,24 @@ export const GenerateKeys = ({ ] .filter(isTruthy) .map((step) => ( - <Styled.StatusCard key={step.status} active={status === step.status}> + <$StatusCard key={step.status} active={status === step.status}> {status < step.status ? ( <LoadingSpinner disabled /> ) : status === step.status ? ( <LoadingSpinner /> ) : ( - <Styled.GreenCheckCircle /> + <$GreenCheckCircle /> )} <div> <h3>{step.title}</h3> <p>{step.description}</p> </div> - </Styled.StatusCard> + </$StatusCard> ))} - </Styled.StatusCardsContainer> + </$StatusCardsContainer> - <Styled.Footer> - <Styled.RememberMe htmlFor="remember-me"> + <$Footer> + <$RememberMe htmlFor="remember-me"> <WithTooltip withIcon tooltip="remember-me"> {stringGetter({ key: STRING_KEYS.REMEMBER_ME })} </WithTooltip> @@ -226,24 +217,24 @@ export const GenerateKeys = ({ checked={shouldRememberMe} onCheckedChange={setShouldRememberMe} /> - </Styled.RememberMe> + </$RememberMe> {error && <AlertMessage type={AlertType.Error}>{error}</AlertMessage>} - <Styled.WithReceipt + <$WithReceipt slotReceipt={ - <Styled.ReceiptArea> + <$ReceiptArea> <span> {stringGetter({ key: STRING_KEYS.FREE_SIGNING, params: { FREE: ( - <Styled.Green> + <$Green> {stringGetter({ key: STRING_KEYS.FREE_TRADING_TITLE_ASTERISK_FREE })} - </Styled.Green> + </$Green> ), }, })} </span> - </Styled.ReceiptArea> + </$ReceiptArea> } > {!isMatchingNetwork ? ( @@ -272,23 +263,18 @@ export const GenerateKeys = ({ })} </Button> )} - </Styled.WithReceipt> - <Styled.Disclaimer> - {stringGetter({ key: STRING_KEYS.CHECK_WALLET_FOR_REQUEST })} - </Styled.Disclaimer> - </Styled.Footer> + </$WithReceipt> + <$Disclaimer>{stringGetter({ key: STRING_KEYS.CHECK_WALLET_FOR_REQUEST })}</$Disclaimer> + </$Footer> </> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.StatusCardsContainer = styled.div` +const $StatusCardsContainer = styled.div` display: grid; gap: 1rem; `; -Styled.StatusCard = styled.div<{ active?: boolean }>` +const $StatusCard = styled.div<{ active?: boolean }>` ${layoutMixins.row} gap: 1rem; background-color: var(--color-layer-4); @@ -317,7 +303,7 @@ Styled.StatusCard = styled.div<{ active?: boolean }>` } `; -Styled.Footer = styled.footer` +const $Footer = styled.footer` ${layoutMixins.stickyFooter} margin-top: auto; @@ -325,30 +311,30 @@ Styled.Footer = styled.footer` gap: 1rem; `; -Styled.RememberMe = styled.label` +const $RememberMe = styled.label` ${layoutMixins.spacedRow} font: var(--font-base-book); `; -Styled.WithReceipt = styled(WithReceipt)` +const $WithReceipt = styled(WithReceipt)` --withReceipt-backgroundColor: var(--color-layer-2); `; -Styled.ReceiptArea = styled.div` +const $ReceiptArea = styled.div` padding: 1rem; font: var(--font-small-book); color: var(--color-text-0); `; -Styled.Green = styled.span` +const $Green = styled.span` color: var(--color-green); `; -Styled.GreenCheckCircle = styled(GreenCheckCircle)` +const $GreenCheckCircle = styled(GreenCheckCircle)` --icon-size: 2.375rem; `; -Styled.Disclaimer = styled.span` +const $Disclaimer = styled.span` text-align: center; color: var(--color-text-0); font: var(--font-base-book); diff --git a/src/views/dialogs/OnboardingTriggerButton.tsx b/src/views/dialogs/OnboardingTriggerButton.tsx index 42e260b5e..9219054f2 100644 --- a/src/views/dialogs/OnboardingTriggerButton.tsx +++ b/src/views/dialogs/OnboardingTriggerButton.tsx @@ -1,16 +1,16 @@ import { useDispatch, useSelector } from 'react-redux'; -import { useStringGetter } from '@/hooks'; - +import { OnboardingState } from '@/constants/account'; import { ButtonAction, ButtonSize } from '@/constants/buttons'; import { DialogTypes } from '@/constants/dialogs'; import { STRING_KEYS } from '@/constants/localization'; +import { useStringGetter } from '@/hooks/useStringGetter'; + import { Button } from '@/components/Button'; -import { forceOpenDialog } from '@/state/dialogs'; import { getOnboardingState } from '@/state/accountSelectors'; -import { OnboardingState } from '@/constants/account'; +import { forceOpenDialog } from '@/state/dialogs'; type StyleProps = { size?: ButtonSize; diff --git a/src/views/dialogs/PreferencesDialog.tsx b/src/views/dialogs/PreferencesDialog.tsx index 8562eb966..4d568b590 100644 --- a/src/views/dialogs/PreferencesDialog.tsx +++ b/src/views/dialogs/PreferencesDialog.tsx @@ -1,76 +1,131 @@ import { useEffect, useMemo, useState } from 'react'; -import styled, { AnyStyledComponent } from 'styled-components'; + +import { SelectedGasDenom } from '@dydxprotocol/v4-client-js'; +import { useDispatch, useSelector } from 'react-redux'; +import styled from 'styled-components'; import { STRING_KEYS } from '@/constants/localization'; -import { NotificationType } from '@/constants/notifications'; +import { NotificationCategoryPreferences } from '@/constants/notifications'; -import { useStringGetter } from '@/hooks'; +import { useDydxClient } from '@/hooks/useDydxClient'; import { useNotifications } from '@/hooks/useNotifications'; +import { useStringGetter } from '@/hooks/useStringGetter'; import { ComboboxDialogMenu } from '@/components/ComboboxDialogMenu'; import { Switch } from '@/components/Switch'; +import { OtherPreference, setDefaultToAllMarketsInPositionsOrdersFills } from '@/state/configs'; +import { getDefaultToAllMarketsInPositionsOrdersFills } from '@/state/configsSelectors'; + +import { isTruthy } from '@/lib/isTruthy'; + export const usePreferenceMenu = () => { + const dispatch = useDispatch(); const stringGetter = useStringGetter(); // Notifications const { notificationPreferences, setNotificationPreferences } = useNotifications(); const [enabledNotifs, setEnabledNotifs] = useState(notificationPreferences); - const toggleNotifPreference = (type: NotificationType) => + const currentDisplayAllMarketDefault = useSelector(getDefaultToAllMarketsInPositionsOrdersFills); + const [defaultToAllMarkets, setDefaultToAllMarkets] = useState(currentDisplayAllMarketDefault); + + const toggleNotifPreference = (type: NotificationCategoryPreferences) => setEnabledNotifs((prev) => ({ ...prev, [type]: !prev[type] })); useEffect(() => { setNotificationPreferences(enabledNotifs); }, [enabledNotifs]); + useEffect(() => { + setDefaultToAllMarkets(currentDisplayAllMarketDefault); + }, [currentDisplayAllMarketDefault]); + + const getItem = ( + notificationCategory: NotificationCategoryPreferences, + labelStringKey: string + ) => ({ + value: notificationCategory, + label: stringGetter({ key: labelStringKey }), + slotAfter: ( + <Switch + name={notificationCategory} + checked={enabledNotifs[notificationCategory]} + onCheckedChange={() => null} + /> + ), + onSelect: () => toggleNotifPreference(notificationCategory), + }); + const notificationSection = useMemo( () => ({ group: 'Notifications', groupLabel: stringGetter({ key: STRING_KEYS.NOTIFICATIONS }), items: [ { - value: NotificationType.AbacusGenerated, - label: stringGetter({ key: STRING_KEYS.TRADING }), - slotAfter: ( - <Switch - name={NotificationType.AbacusGenerated} - checked={enabledNotifs[NotificationType.AbacusGenerated]} - onCheckedChange={(enabled: boolean) => null} - /> - ), - onSelect: () => toggleNotifPreference(NotificationType.AbacusGenerated), + value: NotificationCategoryPreferences.General, + labelStringKey: STRING_KEYS.GENERAL, + }, + { + value: NotificationCategoryPreferences.Transfers, + labelStringKey: STRING_KEYS.TRANSFERS, }, { - value: NotificationType.SquidTransfer, - label: stringGetter({ key: STRING_KEYS.TRANSFERS }), + value: NotificationCategoryPreferences.Trading, + labelStringKey: STRING_KEYS.TRADING, + }, + ] + .filter(isTruthy) + .map(({ value, labelStringKey }) => getItem(value, labelStringKey)), + }), + [stringGetter, enabledNotifs] + ); + + const { setSelectedGasDenom, selectedGasDenom } = useDydxClient(); + + const otherSection = useMemo( + () => ({ + group: 'Other', + groupLabel: stringGetter({ key: STRING_KEYS.OTHER }), + items: [ + { + value: OtherPreference.DisplayAllMarketsDefault, + label: stringGetter({ key: STRING_KEYS.DEFAULT_TO_ALL_MARKETS_IN_POSITIONS }), slotAfter: ( <Switch - name={NotificationType.SquidTransfer} - checked={enabledNotifs[NotificationType.SquidTransfer]} - onCheckedChange={(enabled: boolean) => null} + name={OtherPreference.DisplayAllMarketsDefault} + checked={defaultToAllMarkets} + onCheckedChange={() => null} /> ), - onSelect: () => toggleNotifPreference(NotificationType.SquidTransfer), + onSelect: () => { + dispatch(setDefaultToAllMarketsInPositionsOrdersFills(!defaultToAllMarkets)); + }, }, { - value: NotificationType.ReleaseUpdates, - label: "Release Updates", + value: OtherPreference.GasToken, + label: 'Pay gas with USDC', slotAfter: ( <Switch - name={NotificationType.ReleaseUpdates} - checked={enabledNotifs[NotificationType.ReleaseUpdates]} - onCheckedChange={(enabled: boolean) => null} + name={OtherPreference.GasToken} + checked={selectedGasDenom === SelectedGasDenom.USDC} + onCheckedChange={() => null} /> ), - onSelect: () => toggleNotifPreference(NotificationType.ReleaseUpdates), - } + onSelect: () => { + setSelectedGasDenom( + selectedGasDenom === SelectedGasDenom.USDC + ? SelectedGasDenom.NATIVE + : SelectedGasDenom.USDC + ); + }, + }, ], }), - [stringGetter, enabledNotifs] + [stringGetter, defaultToAllMarkets, selectedGasDenom, setSelectedGasDenom] ); - return [notificationSection]; + return [notificationSection, otherSection]; }; type ElementProps = { @@ -82,7 +137,7 @@ export const PreferencesDialog = ({ setIsOpen }: ElementProps) => { const preferenceItems = usePreferenceMenu(); return ( - <Styled.ComboboxDialogMenu + <$ComboboxDialogMenu isOpen title={stringGetter({ key: STRING_KEYS.PREFERENCES })} items={preferenceItems} @@ -90,9 +145,6 @@ export const PreferencesDialog = ({ setIsOpen }: ElementProps) => { /> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.ComboboxDialogMenu = styled(ComboboxDialogMenu)` +const $ComboboxDialogMenu = styled(ComboboxDialogMenu)` --dialog-content-paddingBottom: 0.5rem; `; diff --git a/src/views/dialogs/RateLimitDialog.tsx b/src/views/dialogs/RateLimitDialog.tsx index c7dca6bc3..3cfd64daf 100644 --- a/src/views/dialogs/RateLimitDialog.tsx +++ b/src/views/dialogs/RateLimitDialog.tsx @@ -1,7 +1,9 @@ -import styled, { AnyStyledComponent } from 'styled-components'; +import styled from 'styled-components'; import { STRING_KEYS } from '@/constants/localization'; -import { useStringGetter } from '@/hooks'; + +import { useStringGetter } from '@/hooks/useStringGetter'; + import { layoutMixins } from '@/styles/layoutMixins'; import { Dialog } from '@/components/Dialog'; @@ -21,22 +23,17 @@ export const RateLimitDialog = ({ preventClose, setIsOpen }: ElementProps) => { preventClose={preventClose} setIsOpen={setIsOpen} title={stringGetter({ key: STRING_KEYS.RATE_LIMIT_REACHED_ERROR_TITLE })} - slotIcon={<Styled.Icon iconName={IconName.Warning} />} + slotIcon={<$Icon iconName={IconName.Warning} />} > - <Styled.Content> - {stringGetter({ key: STRING_KEYS.RATE_LIMIT_REACHED_ERROR_MESSAGE })} - </Styled.Content> + <$Content>{stringGetter({ key: STRING_KEYS.RATE_LIMIT_REACHED_ERROR_MESSAGE })}</$Content> </Dialog> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.Icon = styled(Icon)` +const $Icon = styled(Icon)` color: var(--color-warning); `; -Styled.Content = styled.div` +const $Content = styled.div` ${layoutMixins.column} gap: 1rem; `; diff --git a/src/views/dialogs/RestrictedGeoDialog.tsx b/src/views/dialogs/RestrictedGeoDialog.tsx index 37cec5f78..5351bd971 100644 --- a/src/views/dialogs/RestrictedGeoDialog.tsx +++ b/src/views/dialogs/RestrictedGeoDialog.tsx @@ -1,8 +1,10 @@ -import styled, { AnyStyledComponent } from 'styled-components'; +import styled from 'styled-components'; import { STRING_KEYS } from '@/constants/localization'; import { isDev } from '@/constants/networks'; -import { useStringGetter } from '@/hooks'; + +import { useStringGetter } from '@/hooks/useStringGetter'; + import { layoutMixins } from '@/styles/layoutMixins'; import { Dialog } from '@/components/Dialog'; @@ -23,23 +25,20 @@ export const RestrictedGeoDialog = ({ preventClose, setIsOpen }: ElementProps) = preventClose={preventClose} setIsOpen={setIsOpen} title={stringGetter({ key: STRING_KEYS.REGION_NOT_PERMITTED_TITLE })} - slotIcon={<Styled.Icon iconName={IconName.Warning} />} + slotIcon={<$Icon iconName={IconName.Warning} />} > - <Styled.Content> + <$Content> {stringGetter({ key: STRING_KEYS.REGION_NOT_PERMITTED_SUBTITLE })} {isDev && <NetworkSelectMenu />} - </Styled.Content> + </$Content> </Dialog> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.Icon = styled(Icon)` +const $Icon = styled(Icon)` color: var(--color-warning); `; -Styled.Content = styled.div` +const $Content = styled.div` ${layoutMixins.column} gap: 1rem; `; diff --git a/src/views/dialogs/RestrictedWalletDialog.tsx b/src/views/dialogs/RestrictedWalletDialog.tsx index e8b6cb316..00fd2720c 100644 --- a/src/views/dialogs/RestrictedWalletDialog.tsx +++ b/src/views/dialogs/RestrictedWalletDialog.tsx @@ -1,8 +1,10 @@ -import styled, { AnyStyledComponent } from 'styled-components'; +import styled from 'styled-components'; import { STRING_KEYS } from '@/constants/localization'; import { isDev } from '@/constants/networks'; -import { useStringGetter } from '@/hooks'; + +import { useStringGetter } from '@/hooks/useStringGetter'; + import { layoutMixins } from '@/styles/layoutMixins'; import { Dialog } from '@/components/Dialog'; @@ -23,23 +25,20 @@ export const RestrictedWalletDialog = ({ preventClose, setIsOpen }: ElementProps preventClose={preventClose} setIsOpen={setIsOpen} title={stringGetter({ key: STRING_KEYS.WALLET_RESTRICTED_ERROR_TITLE })} - slotIcon={<Styled.Icon iconName={IconName.Warning} />} + slotIcon={<$Icon iconName={IconName.Warning} />} > - <Styled.Content> + <$Content> {stringGetter({ key: STRING_KEYS.REGION_NOT_PERMITTED_SUBTITLE })} {isDev && <NetworkSelectMenu />} - </Styled.Content> + </$Content> </Dialog> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.Icon = styled(Icon)` +const $Icon = styled(Icon)` color: var(--color-warning); `; -Styled.Content = styled.div` +const $Content = styled.div` ${layoutMixins.column} gap: 1rem; `; diff --git a/src/views/dialogs/SelectMarginModeDialog.tsx b/src/views/dialogs/SelectMarginModeDialog.tsx new file mode 100644 index 000000000..a0c831b36 --- /dev/null +++ b/src/views/dialogs/SelectMarginModeDialog.tsx @@ -0,0 +1,20 @@ +import { STRING_KEYS } from '@/constants/localization'; + +import { useStringGetter } from '@/hooks/useStringGetter'; + +import { Dialog } from '@/components/Dialog'; + +import { SelectMarginModeForm } from '../forms/SelectMarginModeForm'; + +type ElementProps = { + setIsOpen?: (open: boolean) => void; +}; + +export const SelectMarginModeDialog = ({ setIsOpen }: ElementProps) => { + const stringGetter = useStringGetter(); + return ( + <Dialog isOpen setIsOpen={setIsOpen} title={stringGetter({ key: STRING_KEYS.MARGIN_MODE })}> + <SelectMarginModeForm onChangeMarginMode={() => setIsOpen?.(false)} /> + </Dialog> + ); +}; diff --git a/src/views/dialogs/TradeDialog.tsx b/src/views/dialogs/TradeDialog.tsx index 2eff8c0ad..96f7a2f50 100644 --- a/src/views/dialogs/TradeDialog.tsx +++ b/src/views/dialogs/TradeDialog.tsx @@ -1,26 +1,29 @@ import { useState } from 'react'; -import { shallowEqual, useSelector } from 'react-redux'; -import styled, { AnyStyledComponent, css } from 'styled-components'; -import { TradeInputField } from '@/constants/abacus'; -import { STRING_KEYS, StringKey } from '@/constants/localization'; -import { TradeTypes, ORDER_TYPE_STRINGS, MobilePlaceOrderSteps } from '@/constants/trade'; +import { useDispatch } from 'react-redux'; +import styled, { css } from 'styled-components'; + +import { DialogTypes } from '@/constants/dialogs'; +import { STRING_KEYS } from '@/constants/localization'; +import { MobilePlaceOrderSteps } from '@/constants/trade'; + +import { useBreakpoints } from '@/hooks/useBreakpoints'; +import { useStringGetter } from '@/hooks/useStringGetter'; -import { useBreakpoints, useStringGetter } from '@/hooks'; import { layoutMixins } from '@/styles/layoutMixins'; -import { AssetIcon } from '@/components/AssetIcon'; +import { Button } from '@/components/Button'; import { Dialog, DialogPlacement } from '@/components/Dialog'; import { GreenCheckCircle } from '@/components/GreenCheckCircle'; -import { TradeForm } from '@/views/forms/TradeForm'; +import { Icon, IconName } from '@/components/Icon'; import { Ring } from '@/components/Ring'; -import { ToggleGroup } from '@/components/ToggleGroup'; +import { TradeForm } from '@/views/forms/TradeForm'; -import { getCurrentMarketAssetData } from '@/state/assetsSelectors'; -import { getInputTradeData, getInputTradeOptions } from '@/state/inputsSelectors'; +import { openDialog } from '@/state/dialogs'; -import abacusStateManager from '@/lib/abacus'; -import { getSelectedTradeType } from '@/lib/tradeData'; +import { testFlags } from '@/lib/testFlags'; + +import { TradeSideToggle } from '../forms/TradeForm/TradeSideToggle'; type ElementProps = { isOpen?: boolean; @@ -30,37 +33,20 @@ type ElementProps = { export const TradeDialog = ({ isOpen, setIsOpen, slotTrigger }: ElementProps) => { const { isMobile } = useBreakpoints(); + const dispatch = useDispatch(); const stringGetter = useStringGetter(); - const { id } = useSelector(getCurrentMarketAssetData, shallowEqual) ?? {}; - const currentTradeData = useSelector(getInputTradeData, shallowEqual); - const { type } = currentTradeData || {}; - const selectedTradeType = getSelectedTradeType(type); - const { typeOptions } = useSelector(getInputTradeOptions, shallowEqual) ?? {}; - - const allTradeTypeItems = (typeOptions?.toArray() ?? []).map(({ type, stringKey }) => ({ - value: type, - label: stringGetter({ - key: stringKey as StringKey, - }), - slotBefore: <AssetIcon symbol={id} />, - })); const [currentStep, setCurrentStep] = useState<MobilePlaceOrderSteps>( MobilePlaceOrderSteps.EditOrder ); - const onTradeTypeChange = (tradeType: TradeTypes) => { - abacusStateManager.clearTradeInputValues(); - abacusStateManager.setTradeValue({ value: tradeType, field: TradeInputField.type }); - }; - const onCloseDialog = () => { setCurrentStep(MobilePlaceOrderSteps.EditOrder); setIsOpen?.(false); }; return ( - <Styled.Dialog + <$Dialog isOpen={isOpen} setIsOpen={(open: boolean) => (open ? setIsOpen?.(true) : onCloseDialog())} placement={isMobile ? DialogPlacement.FullScreen : DialogPlacement.Default} @@ -69,47 +55,66 @@ export const TradeDialog = ({ isOpen, setIsOpen, slotTrigger }: ElementProps) => hasHeaderBorder {...{ [MobilePlaceOrderSteps.EditOrder]: { - title: ( - <Styled.ToggleGroup - items={allTradeTypeItems} - value={selectedTradeType} - onValueChange={onTradeTypeChange} - /> + title: testFlags.isolatedMargin ? ( + <$EditTradeHeader> + <Button + onClick={() => { + dispatch( + openDialog({ + type: DialogTypes.SelectMarginMode, + }) + ); + }} + > + {stringGetter({ key: STRING_KEYS.CROSS })} + </Button> + + <Button + onClick={() => { + dispatch(openDialog({ type: DialogTypes.AdjustTargetLeverage })); + }} + > + 1x + </Button> + + <TradeSideToggle /> + </$EditTradeHeader> + ) : ( + <TradeSideToggle /> ), }, [MobilePlaceOrderSteps.PreviewOrder]: { title: ( - <Styled.PreviewTitle> - {stringGetter({ key: STRING_KEYS.PREVIEW_ORDER_TITLE })} - </Styled.PreviewTitle> + <$PreviewTitle>{stringGetter({ key: STRING_KEYS.PREVIEW_ORDER_TITLE })}</$PreviewTitle> ), description: stringGetter({ key: STRING_KEYS.PREVIEW_ORDER_DESCRIPTION }), }, [MobilePlaceOrderSteps.PlacingOrder]: { title: stringGetter({ key: STRING_KEYS.PLACING_ORDER_TITLE }), description: stringGetter({ key: STRING_KEYS.PLACING_ORDER_DESCRIPTION }), - slotIcon: <Styled.Ring withAnimation value={0.25} />, + slotIcon: <$Ring withAnimation value={0.25} />, + }, + [MobilePlaceOrderSteps.PlaceOrderFailed]: { + title: stringGetter({ key: STRING_KEYS.PLACE_ORDER_FAILED }), + description: stringGetter({ key: STRING_KEYS.PLACE_ORDER_FAILED_DESCRIPTION }), + slotIcon: <$WarningIcon iconName={IconName.Warning} />, }, - // TODO(@aforaleka): add error state if trade didn't actually go through [MobilePlaceOrderSteps.Confirmation]: { title: stringGetter({ key: STRING_KEYS.CONFIRMED_TITLE }), description: stringGetter({ key: STRING_KEYS.CONFIRMED_DESCRIPTION }), - slotIcon: <Styled.GreenCheckCircle />, + slotIcon: <$GreenCheckCircle />, }, }[currentStep]} > - <Styled.TradeForm + <$TradeForm currentStep={currentStep} setCurrentStep={setCurrentStep} onConfirm={onCloseDialog} /> - </Styled.Dialog> + </$Dialog> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.Dialog = styled(Dialog)<{ currentStep: MobilePlaceOrderSteps }>` +const $Dialog = styled(Dialog)<{ currentStep: MobilePlaceOrderSteps }>` --dialog-backgroundColor: var(--color-layer-2); --dialog-header-height: 1rem; --dialog-content-paddingTop: 0; @@ -126,34 +131,33 @@ Styled.Dialog = styled(Dialog)<{ currentStep: MobilePlaceOrderSteps }>` `} `; -Styled.ToggleGroup = styled(ToggleGroup)` - overflow-x: auto; - - button[data-state='off'] { - gap: 0; - - img { - height: 0; - } - } +const $EditTradeHeader = styled.div` + display: grid; + grid-template-columns: auto auto 1fr; + gap: 0.5rem; `; -Styled.TradeForm = styled(TradeForm)` +const $TradeForm = styled(TradeForm)` --tradeBox-content-paddingTop: 1rem; --tradeBox-content-paddingRight: 1.5rem; --tradeBox-content-paddingBottom: 1.5rem; --tradeBox-content-paddingLeft: 1.5rem; `; -Styled.Ring = styled(Ring)` +const $Ring = styled(Ring)` --ring-color: var(--color-accent); `; -Styled.GreenCheckCircle = styled(GreenCheckCircle)` +const $GreenCheckCircle = styled(GreenCheckCircle)` --icon-size: 2rem; `; -Styled.PreviewTitle = styled.div` +const $WarningIcon = styled(Icon)` + color: var(--color-warning); + font-size: 1.5rem; +`; + +const $PreviewTitle = styled.div` ${layoutMixins.inlineRow} height: var(--dialog-icon-size); `; diff --git a/src/views/dialogs/TransferDialog.tsx b/src/views/dialogs/TransferDialog.tsx index fd0bb7082..e7a2f9c18 100644 --- a/src/views/dialogs/TransferDialog.tsx +++ b/src/views/dialogs/TransferDialog.tsx @@ -1,8 +1,9 @@ -import styled, { type AnyStyledComponent } from 'styled-components'; +import styled from 'styled-components'; import { STRING_KEYS } from '@/constants/localization'; import { DydxChainAsset } from '@/constants/wallets'; -import { useStringGetter } from '@/hooks'; + +import { useStringGetter } from '@/hooks/useStringGetter'; import { Dialog } from '@/components/Dialog'; import { TransferForm } from '@/views/forms/TransferForm'; @@ -16,13 +17,11 @@ export const TransferDialog = ({ selectedAsset, setIsOpen }: ElementProps) => { const stringGetter = useStringGetter(); return ( - <Styled.Dialog isOpen setIsOpen={setIsOpen} title={stringGetter({ key: STRING_KEYS.TRANSFER })}> + <$Dialog isOpen setIsOpen={setIsOpen} title={stringGetter({ key: STRING_KEYS.TRANSFER })}> <TransferForm selectedAsset={selectedAsset} onDone={() => setIsOpen?.(false)} /> - </Styled.Dialog> + </$Dialog> ); }; -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.Dialog = styled(Dialog)` +const $Dialog = styled(Dialog)` --dialog-content-paddingTop: var(--default-border-width); `; diff --git a/src/views/dialogs/TriggersDialog.tsx b/src/views/dialogs/TriggersDialog.tsx new file mode 100644 index 000000000..fd639db76 --- /dev/null +++ b/src/views/dialogs/TriggersDialog.tsx @@ -0,0 +1,52 @@ +import { useDispatch } from 'react-redux'; + +import { type SubaccountOrder } from '@/constants/abacus'; +import { STRING_KEYS } from '@/constants/localization'; + +import { useStringGetter } from '@/hooks/useStringGetter'; + +import { AssetIcon } from '@/components/AssetIcon'; +import { Dialog } from '@/components/Dialog'; +import { TriggersForm } from '@/views/forms/TriggersForm/TriggersForm'; + +import { closeDialog } from '@/state/dialogs'; + +type ElementProps = { + marketId: string; + assetId: string; + stopLossOrders: SubaccountOrder[]; + takeProfitOrders: SubaccountOrder[]; + navigateToMarketOrders: (market: string) => void; + setIsOpen: (open: boolean) => void; +}; + +export const TriggersDialog = ({ + marketId, + assetId, + stopLossOrders, + takeProfitOrders, + navigateToMarketOrders, + setIsOpen, +}: ElementProps) => { + const stringGetter = useStringGetter(); + const dispatch = useDispatch(); + + return ( + <Dialog + isOpen + setIsOpen={setIsOpen} + title={stringGetter({ key: STRING_KEYS.PRICE_TRIGGERS })} + slotIcon={<AssetIcon symbol={assetId} />} + > + <TriggersForm + marketId={marketId} + stopLossOrders={stopLossOrders} + takeProfitOrders={takeProfitOrders} + onViewOrdersClick={() => { + dispatch(closeDialog()); + navigateToMarketOrders(marketId); + }} + /> + </Dialog> + ); +}; diff --git a/src/views/dialogs/WithdrawDialog.tsx b/src/views/dialogs/WithdrawDialog.tsx index 13ab11091..b27772710 100644 --- a/src/views/dialogs/WithdrawDialog.tsx +++ b/src/views/dialogs/WithdrawDialog.tsx @@ -1,14 +1,15 @@ -import styled, { type AnyStyledComponent } from 'styled-components'; +import styled from 'styled-components'; import { STRING_KEYS } from '@/constants/localization'; -import { useBreakpoints, useStringGetter } from '@/hooks'; -import { Dialog, DialogPlacement } from '@/components/Dialog'; - -import { WithdrawForm } from '@/views/forms/AccountManagementForms/WithdrawForm'; +import { useBreakpoints } from '@/hooks/useBreakpoints'; +import { useStringGetter } from '@/hooks/useStringGetter'; import { layoutMixins } from '@/styles/layoutMixins'; +import { Dialog, DialogPlacement } from '@/components/Dialog'; +import { WithdrawForm } from '@/views/forms/AccountManagementForms/WithdrawForm'; + type ElementProps = { setIsOpen: (open: boolean) => void; }; @@ -24,28 +25,14 @@ export const WithdrawDialog = ({ setIsOpen }: ElementProps) => { title={stringGetter({ key: STRING_KEYS.WITHDRAW })} placement={isTablet ? DialogPlacement.FullScreen : DialogPlacement.Default} > - <Styled.Content> + <$Content> <WithdrawForm /> - </Styled.Content> + </$Content> </Dialog> ); }; -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.TextToggle = styled.div` - ${layoutMixins.stickyFooter} - color: var(--color-accent); - cursor: pointer; - - margin-top: auto; - - &:hover { - text-decoration: underline; - } -`; - -Styled.Content = styled.div` +const $Content = styled.div` ${layoutMixins.stickyArea0} --stickyArea0-bottomHeight: 2rem; --stickyArea0-bottomGap: 1rem; diff --git a/src/views/dialogs/WithdrawalGateDialog.tsx b/src/views/dialogs/WithdrawalGateDialog.tsx new file mode 100644 index 000000000..9ce6138ee --- /dev/null +++ b/src/views/dialogs/WithdrawalGateDialog.tsx @@ -0,0 +1,101 @@ +import styled from 'styled-components'; + +import { ButtonAction, ButtonType } from '@/constants/buttons'; +import { STRING_KEYS } from '@/constants/localization'; + +import { useStringGetter } from '@/hooks/useStringGetter'; +import { useURLConfigs } from '@/hooks/useURLConfigs'; + +import { LinkOutIcon } from '@/icons'; +import { layoutMixins } from '@/styles/layoutMixins'; + +import { Button } from '@/components/Button'; +import { Dialog } from '@/components/Dialog'; +import { Icon, IconName } from '@/components/Icon'; + +type ElementProps = { + setIsOpen: (open: boolean) => void; + transferType: 'withdrawal' | 'transfer'; + estimatedUnblockTime?: string | null; +}; + +export const WithdrawalGateDialog = ({ + setIsOpen, + estimatedUnblockTime, + transferType, +}: ElementProps) => { + const stringGetter = useStringGetter(); + const { withdrawalGateLearnMore } = useURLConfigs(); + + return ( + <Dialog + isOpen + stacked + setIsOpen={setIsOpen} + title={ + { + withdrawal: stringGetter({ key: STRING_KEYS.WITHDRAWALS_PAUSED }), + transfer: stringGetter({ key: STRING_KEYS.TRANSFERS_PAUSED }), + }[transferType] + } + slotIcon={ + <$IconContainer> + <$Icon iconName={IconName.Warning} /> + </$IconContainer> + } + slotFooter={ + <$ButtonRow> + <Button + type={ButtonType.Link} + action={ButtonAction.Secondary} + href={withdrawalGateLearnMore} + > + {stringGetter({ key: STRING_KEYS.LEARN_MORE })} + <LinkOutIcon /> + </Button> + <Button action={ButtonAction.Primary} onClick={() => setIsOpen(false)}> + {stringGetter({ key: STRING_KEYS.CLOSE })} + </Button> + </$ButtonRow> + } + > + <$Content> + {stringGetter({ + key: STRING_KEYS.WITHDRAWALS_PAUSED_DESC, + params: { + ESTIMATED_DURATION: estimatedUnblockTime, + }, + })} + </$Content> + </Dialog> + ); +}; +const $IconContainer = styled.div` + display: flex; + justify-content: center; + align-items: center; + + width: 4.5rem; + height: 4.5rem; + border-radius: 50%; + min-width: 4.5rem; + min-height: 4.5rem; + background-color: var(--color-gradient-warning); +`; + +const $Icon = styled(Icon)` + color: var(--color-warning); + font-size: 2.5rem; + margin-bottom: 0.125rem; +`; + +const $Content = styled.div` + ${layoutMixins.column} + gap: 1rem; +`; + +const $ButtonRow = styled.div` + display: grid; + grid-template-columns: 1fr 1fr; + gap: 1rem; +`; diff --git a/src/views/forms/AccountManagementForms/DepositForm.tsx b/src/views/forms/AccountManagementForms/DepositForm.tsx index 0599d6a7b..d1f2592da 100644 --- a/src/views/forms/AccountManagementForms/DepositForm.tsx +++ b/src/views/forms/AccountManagementForms/DepositForm.tsx @@ -1,26 +1,35 @@ -import { type FormEvent, useCallback, useEffect, useMemo, useState } from 'react'; -import styled, { type AnyStyledComponent } from 'styled-components'; +import { useCallback, useEffect, useMemo, useState, type FormEvent } from 'react'; + import { type NumberFormatValues } from 'react-number-format'; import { shallowEqual, useSelector } from 'react-redux'; +import styled from 'styled-components'; import { Abi, parseUnits } from 'viem'; import erc20 from '@/abi/erc20.json'; import erc20_usdt from '@/abi/erc20_usdt.json'; import { TransferInputField, TransferInputTokenResource, TransferType } from '@/constants/abacus'; -import { AnalyticsEvent, AnalyticsEventData } from '@/constants/analytics'; import { AlertType } from '@/constants/alerts'; +import { AnalyticsEvent, AnalyticsEventData } from '@/constants/analytics'; import { ButtonSize } from '@/constants/buttons'; import { STRING_KEYS } from '@/constants/localization'; import { isMainnet } from '@/constants/networks'; -import { MAX_CCTP_TRANSFER_AMOUNT, MAX_PRICE_IMPACT, NumberSign } from '@/constants/numbers'; -import type { EvmAddress } from '@/constants/wallets'; - -import { useAccounts, useDebounce, useStringGetter, useSelectedNetwork } from '@/hooks'; -import { useAccountBalance, CHAIN_DEFAULT_TOKEN_ADDRESS } from '@/hooks/useAccountBalance'; +import { TransferNotificationTypes } from '@/constants/notifications'; +import { + MAX_CCTP_TRANSFER_AMOUNT, + MAX_PRICE_IMPACT, + MIN_CCTP_TRANSFER_AMOUNT, + NumberSign, +} from '@/constants/numbers'; +import { WalletType, type EvmAddress } from '@/constants/wallets'; + +import { CHAIN_DEFAULT_TOKEN_ADDRESS, useAccountBalance } from '@/hooks/useAccountBalance'; +import { useAccounts } from '@/hooks/useAccounts'; +import { useDebounce } from '@/hooks/useDebounce'; import { useLocalNotifications } from '@/hooks/useLocalNotifications'; +import { useStringGetter } from '@/hooks/useStringGetter'; -import { layoutMixins } from '@/styles/layoutMixins'; import { formMixins } from '@/styles/formMixins'; +import { layoutMixins } from '@/styles/layoutMixins'; import { AlertMessage } from '@/components/AlertMessage'; import { Button } from '@/components/Button'; @@ -32,6 +41,7 @@ import { LoadingSpace } from '@/components/Loading/LoadingSpinner'; import { OutputType } from '@/components/Output'; import { Tag } from '@/components/Tag'; import { WithDetailsReceipt } from '@/components/WithDetailsReceipt'; +import { WithTooltip } from '@/components/WithTooltip'; import { getSelectedDydxChainId } from '@/state/appSelectors'; import { getTransferInputs } from '@/state/inputsSelectors'; @@ -42,12 +52,11 @@ import { getNobleChainId, NATIVE_TOKEN_ADDRESS } from '@/lib/squid'; import { log } from '@/lib/telemetry'; import { parseWalletError } from '@/lib/wallet'; +import { NobleDeposit } from '../NobleDeposit'; +import { DepositButtonAndReceipt } from './DepositForm/DepositButtonAndReceipt'; import { SourceSelectMenu } from './SourceSelectMenu'; import { TokenSelectMenu } from './TokenSelectMenu'; -import { DepositButtonAndReceipt } from './DepositForm/DepositButtonAndReceipt'; -import { NobleDeposit } from '../NobleDeposit'; - type DepositFormProps = { onDeposit?: (event?: AnalyticsEventData<AnalyticsEvent.TransferDeposit>) => void; onError?: () => void; @@ -133,6 +142,17 @@ export const DepositForm = ({ onDeposit, onError }: DepositFormProps) => { if (error) onError?.(); }, [error]); + const { walletType } = useAccounts(); + + useEffect(() => { + if (walletType === WalletType.Privy) { + abacusStateManager.setTransferValue({ + field: TransferInputField.exchange, + value: 'coinbase', + }); + } + }, [walletType]); + const onSelectNetwork = useCallback((name: string, type: 'chain' | 'exchange') => { if (name) { abacusStateManager.clearTransferInputValues(); @@ -267,6 +287,8 @@ export const DepositForm = ({ onDeposit, onError }: DepositFormProps) => { toAmount: summary?.usdcSize || undefined, triggeredAt: Date.now(), isCctp, + requestId: requestPayload.requestId ?? undefined, + type: TransferNotificationTypes.Deposit, }); abacusStateManager.clearTransferInputValues(); setFromAmount(''); @@ -275,6 +297,13 @@ export const DepositForm = ({ onDeposit, onError }: DepositFormProps) => { chainId: chainIdStr || undefined, tokenAddress: sourceToken?.address || undefined, tokenSymbol: sourceToken?.symbol || undefined, + slippage: slippage || undefined, + gasFee: summary?.gasFee || undefined, + bridgeFee: summary?.bridgeFee || undefined, + exchangeRate: summary?.exchangeRate || undefined, + estimatedRouteDuration: summary?.estimatedRouteDuration || undefined, + toAmount: summary?.toAmount || undefined, + toAmountMin: summary?.toAmountMin || undefined, }); } } catch (error) { @@ -313,7 +342,24 @@ export const DepositForm = ({ onDeposit, onError }: DepositFormProps) => { }, ]; + // TODO: abstract as much as possible to a util/hook and share between WithdrawForm const errorMessage = useMemo(() => { + if (isCctp) { + if ( + !debouncedAmountBN.isZero() && + MustBigNumber(debouncedAmountBN).lte(MIN_CCTP_TRANSFER_AMOUNT) + ) { + return 'Amount must be greater than 10 USDC'; + } + if (MustBigNumber(debouncedAmountBN).gte(MAX_CCTP_TRANSFER_AMOUNT)) { + return stringGetter({ + key: STRING_KEYS.MAX_CCTP_TRANSFER_LIMIT_EXCEEDED, + params: { + MAX_CCTP_TRANSFER_AMOUNT: MAX_CCTP_TRANSFER_AMOUNT, + }, + }); + } + } if (error) { return parseWalletError({ error, stringGetter }).message; } @@ -339,17 +385,6 @@ export const DepositForm = ({ onDeposit, onError }: DepositFormProps) => { return stringGetter({ key: STRING_KEYS.DEPOSIT_MORE_THAN_BALANCE }); } - if (isCctp) { - if (MustBigNumber(debouncedAmountBN).gte(MAX_CCTP_TRANSFER_AMOUNT)) { - return stringGetter({ - key: STRING_KEYS.MAX_CCTP_TRANSFER_LIMIT_EXCEEDED, - params: { - MAX_CCTP_TRANSFER_AMOUNT: MAX_CCTP_TRANSFER_AMOUNT, - }, - }); - } - } - if (isMainnet && MustBigNumber(summary?.aggregatePriceImpact).gte(MAX_PRICE_IMPACT)) { return stringGetter({ key: STRING_KEYS.PRICE_IMPACT_TOO_HIGH }); } @@ -365,6 +400,7 @@ export const DepositForm = ({ onDeposit, onError }: DepositFormProps) => { sourceToken, stringGetter, summary, + debouncedAmountBN, ]); const isDisabled = @@ -377,9 +413,22 @@ export const DepositForm = ({ onDeposit, onError }: DepositFormProps) => { if (!resources) { return <LoadingSpace id="DepositForm" />; } - return ( - <Styled.Form onSubmit={onSubmit}> + <$Form onSubmit={onSubmit}> + <$Subheader> + {stringGetter({ + key: STRING_KEYS.LOWEST_FEE_DEPOSITS, + params: { + LOWEST_FEE_TOKENS_TOOLTIP: ( + <WithTooltip tooltip="lowest-fees-deposit"> + {stringGetter({ + key: STRING_KEYS.SELECT_CHAINS, + })} + </WithTooltip> + ), + }, + })} + </$Subheader> <SourceSelectMenu selectedChain={chainIdStr || undefined} selectedExchange={exchange || undefined} @@ -390,26 +439,26 @@ export const DepositForm = ({ onDeposit, onError }: DepositFormProps) => { ) : ( <> <TokenSelectMenu selectedToken={sourceToken || undefined} onSelectToken={onSelectToken} /> - <Styled.WithDetailsReceipt side="bottom" detailItems={amountInputReceipt}> + <$WithDetailsReceipt side="bottom" detailItems={amountInputReceipt}> <FormInput type={InputType.Number} onChange={onChangeAmount} label={stringGetter({ key: STRING_KEYS.AMOUNT })} value={fromAmount} slotRight={ - <Styled.FormInputButton size={ButtonSize.XSmall} onClick={onClickMax}> + <$FormInputButton size={ButtonSize.XSmall} onClick={onClickMax}> {stringGetter({ key: STRING_KEYS.MAX })} - </Styled.FormInputButton> + </$FormInputButton> } /> - </Styled.WithDetailsReceipt> + </$WithDetailsReceipt> {errorMessage && <AlertMessage type={AlertType.Error}>{errorMessage}</AlertMessage>} {requireUserActionInWallet && ( <AlertMessage type={AlertType.Warning}> {stringGetter({ key: STRING_KEYS.CHECK_WALLET_FOR_REQUEST })} </AlertMessage> )} - <Styled.Footer> + <$Footer> <DepositButtonAndReceipt isDisabled={isDisabled} isLoading={isLoading} @@ -420,29 +469,30 @@ export const DepositForm = ({ onDeposit, onError }: DepositFormProps) => { setRequireUserActionInWallet={setRequireUserActionInWallet} setError={setError} /> - </Styled.Footer> + </$Footer> </> )} - </Styled.Form> + </$Form> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.Form = styled.form` +const $Form = styled.form` ${formMixins.transfersForm} `; -Styled.Footer = styled.footer` +const $Subheader = styled.div` + color: var(--color-text-0); +`; + +const $Footer = styled.footer` ${formMixins.footer} --stickyFooterBackdrop-outsetY: var(--dialog-content-paddingBottom); `; -Styled.WithDetailsReceipt = styled(WithDetailsReceipt)` +const $WithDetailsReceipt = styled(WithDetailsReceipt)` --withReceipt-backgroundColor: var(--color-layer-2); `; -Styled.Link = styled(Link)` +const $Link = styled(Link)` color: var(--color-accent); &:visited { @@ -450,10 +500,10 @@ Styled.Link = styled(Link)` } `; -Styled.TransactionInfo = styled.span` +const $TransactionInfo = styled.span` ${layoutMixins.row} `; -Styled.FormInputButton = styled(Button)` +const $FormInputButton = styled(Button)` ${formMixins.inputInnerButton} `; diff --git a/src/views/forms/AccountManagementForms/DepositForm/DepositButtonAndReceipt.tsx b/src/views/forms/AccountManagementForms/DepositForm/DepositButtonAndReceipt.tsx index c928a3a5b..f34b5137a 100644 --- a/src/views/forms/AccountManagementForms/DepositForm/DepositButtonAndReceipt.tsx +++ b/src/views/forms/AccountManagementForms/DepositForm/DepositButtonAndReceipt.tsx @@ -1,28 +1,29 @@ -import { type Dispatch, type SetStateAction, useState, type ReactNode, useEffect } from 'react'; -import styled, { type AnyStyledComponent } from 'styled-components'; -import { shallowEqual, useSelector } from 'react-redux'; -import type { RouteData } from '@0xsquid/sdk'; +import { useState, type Dispatch, type SetStateAction } from 'react'; -import { ButtonAction, ButtonShape, ButtonSize, ButtonType } from '@/constants/buttons'; +import type { RouteData } from '@0xsquid/sdk'; +import { shallowEqual, useSelector } from 'react-redux'; +import styled from 'styled-components'; import { TransferInputTokenResource } from '@/constants/abacus'; +import { ButtonAction, ButtonSize, ButtonType } from '@/constants/buttons'; import { STRING_KEYS } from '@/constants/localization'; import { NumberSign, TOKEN_DECIMALS } from '@/constants/numbers'; -import { useStringGetter, useTokenConfigs } from '@/hooks'; +import { ConnectionErrorType, useApiState } from '@/hooks/useApiState'; import { useMatchingEvmNetwork } from '@/hooks/useMatchingEvmNetwork'; +import { useStringGetter } from '@/hooks/useStringGetter'; +import { useTokenConfigs } from '@/hooks/useTokenConfigs'; import { useWalletConnection } from '@/hooks/useWalletConnection'; import { layoutMixins } from '@/styles/layoutMixins'; import { Button } from '@/components/Button'; -import { Details, DetailsItem } from '@/components/Details'; +import { Details } from '@/components/Details'; import { DiffOutput } from '@/components/DiffOutput'; -import { Icon, IconName } from '@/components/Icon'; import { Output, OutputType } from '@/components/Output'; import { Tag } from '@/components/Tag'; -import { ToggleButton } from '@/components/ToggleButton'; import { WithReceipt } from '@/components/WithReceipt'; +import { WithTooltip } from '@/components/WithTooltip'; import { OnboardingTriggerButton } from '@/views/dialogs/OnboardingTriggerButton'; import { calculateCanAccountTrade } from '@/state/accountCalculators'; @@ -37,12 +38,10 @@ import { SlippageEditor } from '../SlippageEditor'; type ElementProps = { isDisabled?: boolean; isLoading?: boolean; - chainId?: string | number; setError?: Dispatch<SetStateAction<Error | null>>; setRequireUserActionInWallet: (val: boolean) => void; slippage: number; - slotError?: ReactNode; setSlippage: (slippage: number) => void; sourceToken?: TransferInputTokenResource; squidRoute?: RouteData; @@ -54,19 +53,17 @@ export const DepositButtonAndReceipt = ({ slippage, setSlippage, sourceToken, - isDisabled, isLoading, - slotError, setRequireUserActionInWallet, }: ElementProps) => { - const [showFeeBreakdown, setShowFeeBreakdown] = useState(false); const [isEditingSlippage, setIsEditingSlipapge] = useState(false); const stringGetter = useStringGetter(); const canAccountTrade = useSelector(calculateCanAccountTrade, shallowEqual); const { connectWallet, isConnectedWagmi } = useWalletConnection(); + const { connectionError } = useApiState(); const connectWagmi = async () => { try { @@ -78,12 +75,6 @@ export const DepositButtonAndReceipt = ({ } }; - useEffect(() => { - if (!isConnectedWagmi && canAccountTrade) { - connectWagmi(); - } - }, [isConnectedWagmi, canAccountTrade]); - const { matchNetwork: switchNetwork, isSwitchingNetwork, @@ -99,34 +90,16 @@ export const DepositButtonAndReceipt = ({ const { current: buyingPower, postOrder: newBuyingPower } = useSelector(getSubaccountBuyingPower, shallowEqual) || {}; - const { isCctp, summary, requestPayload } = useSelector(getTransferInputs, shallowEqual) || {}; + const { + summary, + requestPayload, + depositOptions, + chain: chainIdStr, + } = useSelector(getTransferInputs, shallowEqual) || {}; const { usdcLabel } = useTokenConfigs(); - const feeSubitems: DetailsItem[] = []; - - if (typeof summary?.gasFee === 'number') { - feeSubitems.push({ - key: 'gas-fees', - label: <span>{stringGetter({ key: STRING_KEYS.GAS_FEE })}</span>, - value: <Output type={OutputType.Fiat} value={summary?.gasFee} />, - }); - } - - if (typeof summary?.bridgeFee === 'number') { - feeSubitems.push({ - key: 'bridge-fees', - label: <span>{stringGetter({ key: STRING_KEYS.BRIDGE_FEE })}</span>, - value: <Output type={OutputType.Fiat} value={summary?.bridgeFee} />, - }); - } - - const hasSubitems = feeSubitems.length > 0; - - const showSubitemsToggle = showFeeBreakdown - ? stringGetter({ key: STRING_KEYS.HIDE_ALL_DETAILS }) - : stringGetter({ key: STRING_KEYS.SHOW_ALL_DETAILS }); - - const totalFees = (summary?.bridgeFee || 0) + (summary?.gasFee || 0); + const sourceChainName = + depositOptions?.chains?.toArray().find((chain) => chain.type === chainIdStr)?.stringKey || ''; const submitButtonReceipt = [ { @@ -139,31 +112,29 @@ export const DepositButtonAndReceipt = ({ value: ( <Output type={OutputType.Fiat} fractionDigits={TOKEN_DECIMALS} value={summary?.toAmount} /> ), - subitems: [ - { - key: 'minimum-deposit-amount', - label: ( - <span> - {stringGetter({ key: STRING_KEYS.MINIMUM_DEPOSIT_AMOUNT })} <Tag>{usdcLabel}</Tag> - </span> - ), - value: ( - <Output - type={OutputType.Fiat} - fractionDigits={TOKEN_DECIMALS} - value={summary?.toAmountMin} - /> - ), - tooltip: 'minimum-deposit-amount', - }, - ], + }, + { + key: 'minimum-deposit-amount', + label: ( + <span> + {stringGetter({ key: STRING_KEYS.MINIMUM_DEPOSIT_AMOUNT })} <Tag>{usdcLabel}</Tag> + </span> + ), + value: ( + <Output + type={OutputType.Fiat} + fractionDigits={TOKEN_DECIMALS} + value={summary?.toAmountMin} + /> + ), + tooltip: 'minimum-deposit-amount', }, { key: 'exchange-rate', label: <span>{stringGetter({ key: STRING_KEYS.EXCHANGE_RATE })}</span>, value: typeof summary?.exchangeRate === 'number' ? ( - <Styled.ExchangeRate> + <$ExchangeRate> <Output type={OutputType.Asset} value={1} @@ -172,11 +143,29 @@ export const DepositButtonAndReceipt = ({ /> = <Output type={OutputType.Asset} value={summary?.exchangeRate} tag={usdcLabel} /> - </Styled.ExchangeRate> + </$ExchangeRate> ) : ( <Output type={OutputType.Asset} /> ), }, + typeof summary?.gasFee === 'number' && { + key: 'gas-fees', + label: ( + <WithTooltip tooltip="gas-fees-deposit" stringParams={{ SOURCE_CHAIN: sourceChainName }}> + {stringGetter({ key: STRING_KEYS.GAS_FEE })} + </WithTooltip> + ), + value: <Output type={OutputType.Fiat} value={summary?.gasFee} />, + }, + typeof summary?.bridgeFee === 'number' && { + key: 'bridge-fees', + label: ( + <WithTooltip tooltip="bridge-fees-deposit"> + {stringGetter({ key: STRING_KEYS.BRIDGE_FEE })} + </WithTooltip> + ), + value: <Output type={OutputType.Fiat} value={summary?.bridgeFee} />, + }, { key: 'equity', label: ( @@ -211,12 +200,6 @@ export const DepositButtonAndReceipt = ({ /> ), }, - !isCctp && { - key: 'total-fees', - label: <span>{stringGetter({ key: STRING_KEYS.TOTAL_FEES })}</span>, - value: <Output type={OutputType.Fiat} value={totalFees} />, - subitems: feeSubitems, - }, { key: 'slippage', label: <span>{stringGetter({ key: STRING_KEYS.MAX_SLIPPAGE })}</span>, @@ -253,34 +236,17 @@ export const DepositButtonAndReceipt = ({ }, ].filter(isTruthy); - const isFormValid = !isDisabled && !isEditingSlippage; + const isFormValid = + !isDisabled && !isEditingSlippage && connectionError !== ConnectionErrorType.CHAIN_DISRUPTION; return ( - <Styled.WithReceipt - slotReceipt={ - <Styled.CollapsibleDetails> - <Styled.Details showSubitems={showFeeBreakdown} items={submitButtonReceipt} /> - <Styled.DetailButtons> - {hasSubitems && ( - <Styled.ToggleButton - shape={ButtonShape.Pill} - size={ButtonSize.XSmall} - isPressed={showFeeBreakdown} - onPressedChange={setShowFeeBreakdown} - slotLeft={<Icon iconName={IconName.Caret} />} - > - {showSubitemsToggle} - </Styled.ToggleButton> - )} - </Styled.DetailButtons> - </Styled.CollapsibleDetails> - } - slotError={slotError} - > + <$WithReceipt slotReceipt={<$Details items={submitButtonReceipt} />}> {!canAccountTrade ? ( <OnboardingTriggerButton size={ButtonSize.Base} /> ) : !isConnectedWagmi ? ( - <Button action={ButtonAction.Primary} onClick={connectWallet} state={{ isLoading: true }} /> + <Button action={ButtonAction.Primary} onClick={connectWagmi}> + {stringGetter({ key: STRING_KEYS.RECONNECT_WALLET })} + </Button> ) : !isMatchingNetwork ? ( <Button action={ButtonAction.Primary} @@ -301,47 +267,19 @@ export const DepositButtonAndReceipt = ({ {stringGetter({ key: STRING_KEYS.DEPOSIT_FUNDS })} </Button> )} - </Styled.WithReceipt> + </$WithReceipt> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.ExchangeRate = styled.span` +const $ExchangeRate = styled.span` ${layoutMixins.row} gap: 0.5ch; `; -Styled.WithReceipt = styled(WithReceipt)` +const $WithReceipt = styled(WithReceipt)` --withReceipt-backgroundColor: var(--color-layer-2); `; -Styled.CollapsibleDetails = styled.div` - ${layoutMixins.column} +const $Details = styled(Details)` padding: var(--form-input-paddingY) var(--form-input-paddingX); -`; - -Styled.Details = styled(Details)` font-size: 0.8125em; `; - -Styled.DetailButtons = styled.div` - ${layoutMixins.spacedRow} -`; - -Styled.ToggleButton = styled(ToggleButton)` - --button-toggle-off-backgroundColor: transparent; - --button-toggle-on-backgroundColor: transparent; - --button-toggle-on-textColor: var(--color-text-0); - - svg { - width: 0.875em; - height: 0.875em; - } - - &[data-state='on'] { - svg { - transform: rotate(180deg); - } - } -`; diff --git a/src/views/forms/AccountManagementForms/SlippageEditor.tsx b/src/views/forms/AccountManagementForms/SlippageEditor.tsx index 59e1516e5..32b0f09d8 100644 --- a/src/views/forms/AccountManagementForms/SlippageEditor.tsx +++ b/src/views/forms/AccountManagementForms/SlippageEditor.tsx @@ -1,18 +1,21 @@ -import { type Dispatch, type SetStateAction, useEffect, useState, useRef } from 'react'; -import styled, { type AnyStyledComponent } from 'styled-components'; +import { useEffect, useRef, useState, type Dispatch, type SetStateAction } from 'react'; + import type { NumberFormatValues } from 'react-number-format'; +import styled from 'styled-components'; import { ButtonShape, ButtonSize } from '@/constants/buttons'; import { STRING_KEYS } from '@/constants/localization'; -import { useStringGetter } from '@/hooks'; + +import { useStringGetter } from '@/hooks/useStringGetter'; + import { layoutMixins } from '@/styles/layoutMixins'; -import { WithConfirmationPopover } from '@/components/WithConfirmationPopover'; +import { FormInput } from '@/components/FormInput'; import { Icon, IconName } from '@/components/Icon'; -import { Input, InputType } from '@/components/Input'; +import { InputType } from '@/components/Input'; import { Output, OutputType } from '@/components/Output'; import { ToggleGroup } from '@/components/ToggleGroup'; -import { FormInput } from '@/components/FormInput'; +import { WithConfirmationPopover } from '@/components/WithConfirmationPopover'; enum EditorState { Viewing = 'Viewing', @@ -91,26 +94,26 @@ export const SlippageEditor = ({ } return ( - <Styled.WithConfirmationPopover + <$WithConfirmationPopover open={editorState !== EditorState.Viewing} onOpenChange={onOpenChange} align="end" sideOffset={-22} asChild onCancel={onCancel} - onConfirm={editorState === EditorState.Editing && onConfirmSlippage} + onConfirm={editorState === EditorState.Editing ? onConfirmSlippage : undefined} slotTrigger={ - <Styled.SlippageOutput onClick={() => setEditorState(EditorState.Selecting)}> + <$SlippageOutput onClick={() => setEditorState(EditorState.Selecting)}> <Output type={OutputType.Percent} value={slippage} /> <Icon iconName={IconName.Pencil} /> - </Styled.SlippageOutput> + </$SlippageOutput> } > { { - [EditorState.Viewing]: null, + [EditorState.Viewing]: undefined, [EditorState.Selecting]: ( - <Styled.SlippageInput> + <$SlippageInput> <ToggleGroup ref={toggleGroupRef} items={[ @@ -123,38 +126,34 @@ export const SlippageEditor = ({ shape={ButtonShape.Rectangle} size={ButtonSize.XSmall} /> - </Styled.SlippageInput> + </$SlippageInput> ), [EditorState.Editing]: ( - <Styled.FormInput + <$FormInput type={InputType.Percent} value={slippageInputValue} - tabIndex={0} - getInputRef={inputRef} + ref={inputRef} onChange={onChangeSlippage} max={100} /> ), }[editorState] } - </Styled.WithConfirmationPopover> + </$WithConfirmationPopover> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.SlippageOutput = styled.button` +const $SlippageOutput = styled.button` ${layoutMixins.row} text-decoration: underline; gap: 0.5ch; `; -Styled.WithConfirmationPopover = styled(WithConfirmationPopover)` +const $WithConfirmationPopover = styled(WithConfirmationPopover)` font-size: 0.625rem; width: 10rem; `; -Styled.SlippageInput = styled.div` +const $SlippageInput = styled.div` ${layoutMixins.inlineRow} justify-content: center; @@ -162,7 +161,7 @@ Styled.SlippageInput = styled.div` border-radius: 0.5em; `; -Styled.FormInput = styled(FormInput)` +const $FormInput = styled(FormInput)` --form-input-height: 1.5rem; input { diff --git a/src/views/forms/AccountManagementForms/SourceSelectMenu.tsx b/src/views/forms/AccountManagementForms/SourceSelectMenu.tsx index 65b911a48..4272cf448 100644 --- a/src/views/forms/AccountManagementForms/SourceSelectMenu.tsx +++ b/src/views/forms/AccountManagementForms/SourceSelectMenu.tsx @@ -1,20 +1,24 @@ -import styled, { type AnyStyledComponent } from 'styled-components'; import { shallowEqual, useSelector } from 'react-redux'; +import styled from 'styled-components'; import { TransferType } from '@/constants/abacus'; import { STRING_KEYS } from '@/constants/localization'; +import { WalletType } from '@/constants/wallets'; -import { useStringGetter } from '@/hooks'; - -import { SearchSelectMenu } from '@/components/SearchSelectMenu'; +import { useAccounts } from '@/hooks/useAccounts'; +import { useEnvFeatures } from '@/hooks/useEnvFeatures'; +import { useStringGetter } from '@/hooks/useStringGetter'; import { layoutMixins } from '@/styles/layoutMixins'; import { popoverMixins } from '@/styles/popoverMixins'; +import { SearchSelectMenu } from '@/components/SearchSelectMenu'; + import { getTransferInputs } from '@/state/inputsSelectors'; import { isTruthy } from '@/lib/isTruthy'; -import { testFlags } from '@/lib/testFlags'; + +import cctpTokens from '../../../../public/configs/cctp.json'; type ElementProps = { label?: string; @@ -23,14 +27,31 @@ type ElementProps = { onSelect: (name: string, type: 'chain' | 'exchange') => void; }; +export type TokenInfo = { + chainId: string; + tokenAddress: string; + name: string; +}; + +const cctpTokensByChainId = cctpTokens.reduce((acc, token) => { + if (!acc[token.chainId]) { + acc[token.chainId] = []; + } + acc[token.chainId].push(token); + return acc; +}, {} as Record<string, TokenInfo[]>); + export const SourceSelectMenu = ({ label, selectedExchange, selectedChain, onSelect, }: ElementProps) => { + const { walletType } = useAccounts(); + const { CCTPWithdrawalOnly, CCTPDepositOnly } = useEnvFeatures(); + const stringGetter = useStringGetter(); - const { type, depositOptions, withdrawalOptions, resources } = + const { type, depositOptions, withdrawalOptions } = useSelector(getTransferInputs, shallowEqual) || {}; const chains = (type === TransferType.deposit ? depositOptions : withdrawalOptions)?.chains?.toArray() || []; @@ -39,14 +60,45 @@ export const SourceSelectMenu = ({ (type === TransferType.deposit ? depositOptions : withdrawalOptions)?.exchanges?.toArray() || []; - const chainItems = Object.values(chains).map((chain) => ({ - value: chain.type, - label: chain.stringKey, - onSelect: () => { - onSelect(chain.type, 'chain'); - }, - slotBefore: <Styled.Img src={chain.iconUrl} alt="" />, - })); + // withdrawals SourceSelectMenu is half width size so we must throw the decorator text + // in the description prop (renders below the item label) instead of in the slotAfter + const lowestFeesDecoratorProp = type === TransferType.deposit ? 'slotAfter' : 'description'; + + const chainItems = Object.values(chains) + .map((chain) => ({ + value: chain.type, + label: chain.stringKey, + onSelect: () => { + onSelect(chain.type, 'chain'); + }, + slotBefore: <$Img src={chain.iconUrl ?? undefined} alt="" />, + [lowestFeesDecoratorProp]: !!cctpTokensByChainId[chain.type] && ( + <$Text> + {stringGetter({ + key: STRING_KEYS.LOWEST_FEES_WITH_USDC, + params: { + LOWEST_FEES_HIGHLIGHT_TEXT: ( + <$GreenHighlight> + {stringGetter({ key: STRING_KEYS.LOWEST_FEES_HIGHLIGHT_TEXT })} + </$GreenHighlight> + ), + }, + })} + </$Text> + ), + })) + .filter((chain) => { + // if deposit and CCTPDepositOnly enabled, only return cctp tokens + if (type === TransferType.deposit && CCTPDepositOnly) { + return !!cctpTokensByChainId[chain.value]; + } + // if withdrawal and CCTPWithdrawalOnly enabled, only return cctp tokens + if (type === TransferType.withdrawal && CCTPWithdrawalOnly) { + return !!cctpTokensByChainId[chain.value]; + } + return true; + }) + .sort((chain) => (!!cctpTokensByChainId[chain.value] ? -1 : 1)); const exchangeItems = Object.values(exchanges).map((exchange) => ({ value: exchange.type, @@ -54,11 +106,12 @@ export const SourceSelectMenu = ({ onSelect: () => { onSelect(exchange.type, 'exchange'); }, - slotBefore: <Styled.Img src={exchange.iconUrl} alt="" />, + slotBefore: <$Img src={exchange.iconUrl ?? undefined} alt="" />, })); const selectedChainOption = chains.find((item) => item.type === selectedChain); const selectedExchangeOption = exchanges.find((item) => item.type === selectedExchange); + const isNotPrivyDeposit = type === TransferType.withdrawal || walletType !== WalletType.Privy; return ( <SearchSelectMenu @@ -68,47 +121,56 @@ export const SourceSelectMenu = ({ groupLabel: stringGetter({ key: STRING_KEYS.EXCHANGES }), items: exchangeItems, }, - chainItems.length > 0 && { - group: 'chains', - groupLabel: stringGetter({ key: STRING_KEYS.CHAINS }), - items: chainItems, - }, + // only block privy wallets for deposits + isNotPrivyDeposit && + chainItems.length > 0 && { + group: 'chains', + groupLabel: stringGetter({ key: STRING_KEYS.CHAINS }), + items: chainItems, + }, ].filter(isTruthy)} label={label || (type === TransferType.deposit ? 'Source' : 'Destination')} > - <Styled.ChainRow> + <$ChainRow> {selectedChainOption ? ( <> - <Styled.Img src={selectedChainOption.iconUrl} alt="" /> {selectedChainOption.stringKey} + <$Img src={selectedChainOption.iconUrl ?? undefined} alt="" />{' '} + {selectedChainOption.stringKey} </> ) : selectedExchangeOption ? ( <> - <Styled.Img src={selectedExchangeOption.iconUrl} alt="" />{' '} + <$Img src={selectedExchangeOption.iconUrl ?? undefined} alt="" />{' '} {selectedExchangeOption.string} </> ) : ( stringGetter({ key: STRING_KEYS.SELECT_CHAIN }) )} - </Styled.ChainRow> + </$ChainRow> </SearchSelectMenu> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.DropdownContainer = styled.div` +const $DropdownContainer = styled.div` ${popoverMixins.item} `; -Styled.Img = styled.img` +const $Img = styled.img` width: 1.25rem; height: 1.25rem; border-radius: 50%; `; -Styled.ChainRow = styled.div` +const $ChainRow = styled.div` ${layoutMixins.row} gap: 0.5rem; color: var(--color-text-2); font: var(--font-base-book); `; + +const $Text = styled.div` + font: var(--font-small-regular); + color: var(--color-text-0); +`; + +const $GreenHighlight = styled.span` + color: var(--color-green); +`; diff --git a/src/views/forms/AccountManagementForms/TestnetDepositForm.tsx b/src/views/forms/AccountManagementForms/TestnetDepositForm.tsx index 6e6a825d4..b1a093260 100644 --- a/src/views/forms/AccountManagementForms/TestnetDepositForm.tsx +++ b/src/views/forms/AccountManagementForms/TestnetDepositForm.tsx @@ -1,20 +1,26 @@ -import { useState, type FormEvent, useEffect } from 'react'; +import { useEffect, useState, type FormEvent } from 'react'; + import { shallowEqual, useSelector } from 'react-redux'; -import styled, { type AnyStyledComponent } from 'styled-components'; +import styled from 'styled-components'; import { ButtonAction, ButtonSize, ButtonType } from '@/constants/buttons'; import { STRING_KEYS } from '@/constants/localization'; import { ENVIRONMENT_CONFIG_MAP } from '@/constants/networks'; -import { useAccounts, useStringGetter, useSubaccount } from '@/hooks'; + +import { useAccounts } from '@/hooks/useAccounts'; +import { useStringGetter } from '@/hooks/useStringGetter'; +import { useSubaccount } from '@/hooks/useSubaccount'; + import { formMixins } from '@/styles/formMixins'; -import { OnboardingTriggerButton } from '@/views/dialogs/OnboardingTriggerButton'; import { Button } from '@/components/Button'; +import { OnboardingTriggerButton } from '@/views/dialogs/OnboardingTriggerButton'; import { calculateCanAccountTrade } from '@/state/accountCalculators'; import { getSubaccount } from '@/state/accountSelectors'; import { getSelectedNetwork } from '@/state/appSelectors'; +import abacusStateManager from '@/lib/abacus'; import { log } from '@/lib/telemetry'; type DepositFormProps = { @@ -40,8 +46,14 @@ export const TestnetDepositForm = ({ onDeposit, onError }: DepositFormProps) => } }, [subAccount]); + useEffect(() => { + return () => { + abacusStateManager.resetInputState(); + }; + }, []); + return ( - <Styled.Form + <$Form onSubmit={async (e: FormEvent) => { e.preventDefault(); @@ -74,7 +86,7 @@ export const TestnetDepositForm = ({ onDeposit, onError }: DepositFormProps) => }, })} </p> - <Styled.Footer> + <$Footer> {!canAccountTrade ? ( <OnboardingTriggerButton size={ButtonSize.Base} /> ) : ( @@ -82,18 +94,15 @@ export const TestnetDepositForm = ({ onDeposit, onError }: DepositFormProps) => {stringGetter({ key: STRING_KEYS.DEPOSIT_FUNDS })} </Button> )} - </Styled.Footer> - </Styled.Form> + </$Footer> + </$Form> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.Form = styled.form` +const $Form = styled.form` ${formMixins.transfersForm} `; -Styled.Footer = styled.footer` +const $Footer = styled.footer` ${formMixins.footer} --stickyFooterBackdrop-outsetY: var(--dialog-content-paddingBottom); diff --git a/src/views/forms/AccountManagementForms/TokenSelectMenu.tsx b/src/views/forms/AccountManagementForms/TokenSelectMenu.tsx index 96db78f65..f3ff34a08 100644 --- a/src/views/forms/AccountManagementForms/TokenSelectMenu.tsx +++ b/src/views/forms/AccountManagementForms/TokenSelectMenu.tsx @@ -1,42 +1,92 @@ -import styled, { type AnyStyledComponent } from 'styled-components'; import { shallowEqual, useSelector } from 'react-redux'; +import styled from 'styled-components'; -import { STRING_KEYS } from '@/constants/localization'; import { TransferInputTokenResource, TransferType } from '@/constants/abacus'; -import { useStringGetter } from '@/hooks'; +import { STRING_KEYS } from '@/constants/localization'; + +import { useEnvFeatures } from '@/hooks/useEnvFeatures'; +import { useStringGetter } from '@/hooks/useStringGetter'; + +import { layoutMixins } from '@/styles/layoutMixins'; import { DiffArrow } from '@/components/DiffArrow'; -import { Icon, IconName } from '@/components/Icon'; +import { Icon } from '@/components/Icon'; import { SearchSelectMenu } from '@/components/SearchSelectMenu'; import { Tag } from '@/components/Tag'; -import { layoutMixins } from '@/styles/layoutMixins'; - import { getTransferInputs } from '@/state/inputsSelectors'; +import cctpTokens from '../../../../public/configs/cctp.json'; +import { TokenInfo } from './SourceSelectMenu'; + type ElementProps = { selectedToken?: TransferInputTokenResource; onSelectToken: (token: TransferInputTokenResource) => void; isExchange?: boolean; }; +const CURVE_DAO_TOKEN_ADDRESS = '0xD533a949740bb3306d119CC777fa900bA034cd52'; + +const cctpTokensByAddress = cctpTokens.reduce((acc, token) => { + if (!acc[token.tokenAddress]) { + acc[token.tokenAddress] = []; + } + acc[token.tokenAddress].push(token); + return acc; +}, {} as Record<string, TokenInfo[]>); + export const TokenSelectMenu = ({ selectedToken, onSelectToken, isExchange }: ElementProps) => { const stringGetter = useStringGetter(); const { type, depositOptions, withdrawalOptions, resources } = useSelector(getTransferInputs, shallowEqual) || {}; + const { CCTPWithdrawalOnly, CCTPDepositOnly } = useEnvFeatures(); + const tokens = (type === TransferType.deposit ? depositOptions : withdrawalOptions)?.assets?.toArray() || []; - const tokenItems = Object.values(tokens).map((token) => ({ - value: token.type, - label: token.stringKey, - onSelect: () => { - const selectedToken = resources?.tokenResources?.get(token.type); - selectedToken && onSelectToken(selectedToken); - }, - slotBefore: <Styled.Img src={token.iconUrl} alt="" />, - tag: resources?.tokenResources?.get(token.type)?.symbol, - })); + const tokenItems = Object.values(tokens) + .map((token) => ({ + value: token.type, + label: token.stringKey, + onSelect: () => { + const selectedToken = resources?.tokenResources?.get(token.type); + selectedToken && onSelectToken(selectedToken); + }, + slotBefore: ( + // the curve dao token svg causes the web app to lag when rendered + <$Img + src={token.type !== CURVE_DAO_TOKEN_ADDRESS ? token.iconUrl ?? undefined : undefined} + alt="" + /> + ), + slotAfter: !!cctpTokensByAddress[token.type] && ( + <$Text> + {stringGetter({ + key: STRING_KEYS.LOWEST_FEES_WITH_USDC, + params: { + LOWEST_FEES_HIGHLIGHT_TEXT: ( + <$GreenHighlight> + {stringGetter({ key: STRING_KEYS.LOWEST_FEES_HIGHLIGHT_TEXT })} + </$GreenHighlight> + ), + }, + })} + </$Text> + ), + tag: resources?.tokenResources?.get(token.type)?.symbol, + })) + .filter((token) => { + // if deposit and CCTPDepositOnly enabled, only return cctp tokens + if (type === TransferType.deposit && CCTPDepositOnly) { + return !!cctpTokensByAddress[token.value]; + } + // if withdrawal and CCTPWithdrawalOnly enabled, only return cctp tokens + if (type === TransferType.withdrawal && CCTPWithdrawalOnly) { + return !!cctpTokensByAddress[token.value]; + } + return true; + }) + .sort((token) => (!!cctpTokensByAddress[token.value] ? -1 : 1)); return ( <SearchSelectMenu @@ -67,35 +117,41 @@ export const TokenSelectMenu = ({ selectedToken, onSelectToken, isExchange }: El : undefined } > - <Styled.AssetRow> + <$AssetRow> {selectedToken ? ( <> - <Styled.Img src={selectedToken?.iconUrl} alt="" /> {selectedToken?.name}{' '} + <$Img src={selectedToken?.iconUrl ?? undefined} alt="" /> {selectedToken?.name}{' '} <Tag>{selectedToken?.symbol}</Tag> </> ) : ( stringGetter({ key: STRING_KEYS.SELECT_ASSET }) )} - </Styled.AssetRow> + </$AssetRow> </SearchSelectMenu> ); }; +const $Text = styled.div` + font: var(--font-small-regular); + color: var(--color-text-0); +`; -const Styled: Record<string, AnyStyledComponent> = {}; +const $GreenHighlight = styled.span` + color: var(--color-green); +`; -Styled.AssetRow = styled.div` +const $AssetRow = styled.div` ${layoutMixins.row} gap: 0.5rem; color: var(--color-text-2); font: var(--font-base-book); `; -Styled.Img = styled.img` +const $Img = styled.img` width: 1.25rem; height: 1.25rem; border-radius: 50%; `; -Styled.Icon = styled(Icon)` +const $Icon = styled(Icon)` height: 0.5rem; `; diff --git a/src/views/forms/AccountManagementForms/WithdrawForm.tsx b/src/views/forms/AccountManagementForms/WithdrawForm.tsx index 1fa07fc0e..986e59c44 100644 --- a/src/views/forms/AccountManagementForms/WithdrawForm.tsx +++ b/src/views/forms/AccountManagementForms/WithdrawForm.tsx @@ -1,8 +1,9 @@ -import { useCallback, useEffect, useMemo, useState } from 'react'; import type { ChangeEvent, FormEvent } from 'react'; -import styled, { type AnyStyledComponent } from 'styled-components'; +import { useCallback, useEffect, useMemo, useState } from 'react'; + import type { NumberFormatValues } from 'react-number-format'; import { shallowEqual, useSelector } from 'react-redux'; +import styled from 'styled-components'; import { isAddress } from 'viem'; import { TransferInputField, TransferInputTokenResource, TransferType } from '@/constants/abacus'; @@ -17,47 +18,48 @@ import { MAX_PRICE_IMPACT, MIN_CCTP_TRANSFER_AMOUNT, NumberSign, + TOKEN_DECIMALS, } from '@/constants/numbers'; +import { WalletType } from '@/constants/wallets'; -import { - useAccounts, - useDebounce, - useDydxClient, - useRestrictions, - useSelectedNetwork, - useStringGetter, - useSubaccount, -} from '@/hooks'; +import { useAccounts } from '@/hooks/useAccounts'; +import { useDebounce } from '@/hooks/useDebounce'; +import { useDydxClient } from '@/hooks/useDydxClient'; import { useLocalNotifications } from '@/hooks/useLocalNotifications'; +import { useRestrictions } from '@/hooks/useRestrictions'; +import { useStringGetter } from '@/hooks/useStringGetter'; +import { useSubaccount } from '@/hooks/useSubaccount'; +import { useTokenConfigs } from '@/hooks/useTokenConfigs'; +import { useWithdrawalInfo } from '@/hooks/useWithdrawalInfo'; -import { layoutMixins } from '@/styles/layoutMixins'; import { formMixins } from '@/styles/formMixins'; +import { layoutMixins } from '@/styles/layoutMixins'; import { AlertMessage } from '@/components/AlertMessage'; import { Button } from '@/components/Button'; import { DiffOutput } from '@/components/DiffOutput'; import { FormInput } from '@/components/FormInput'; +import { Icon, IconName } from '@/components/Icon'; import { InputType } from '@/components/Input'; import { Link } from '@/components/Link'; import { OutputType } from '@/components/Output'; import { Tag } from '@/components/Tag'; import { WithDetailsReceipt } from '@/components/WithDetailsReceipt'; -import { Icon, IconName } from '@/components/Icon'; - +import { WithTooltip } from '@/components/WithTooltip'; import { SourceSelectMenu } from '@/views/forms/AccountManagementForms/SourceSelectMenu'; -import { getSelectedDydxChainId } from '@/state/appSelectors'; import { getSubaccount } from '@/state/accountSelectors'; +import { getSelectedDydxChainId } from '@/state/appSelectors'; import { getTransferInputs } from '@/state/inputsSelectors'; import abacusStateManager from '@/lib/abacus'; +import { validateCosmosAddress } from '@/lib/addressUtils'; +import { track } from '@/lib/analytics'; import { MustBigNumber } from '@/lib/numbers'; import { getNobleChainId } from '@/lib/squid'; import { TokenSelectMenu } from './TokenSelectMenu'; import { WithdrawButtonAndReceipt } from './WithdrawForm/WithdrawButtonAndReceipt'; -import { validateCosmosAddress } from '@/lib/addressUtils'; -import { track } from '@/lib/analytics'; export const WithdrawForm = () => { const stringGetter = useStringGetter(); @@ -85,6 +87,8 @@ export const WithdrawForm = () => { const [withdrawAmount, setWithdrawAmount] = useState(''); const [slippage, setSlippage] = useState(isCctp ? 0 : 0.01); // 0.1% slippage const debouncedAmount = useDebounce<string>(withdrawAmount, 500); + const { usdcLabel } = useTokenConfigs(); + const { usdcWithdrawalCapacity } = useWithdrawalInfo({ transferType: 'withdrawal' }); const isValidAddress = toAddress && isAddress(toAddress); @@ -195,6 +199,7 @@ export const WithdrawForm = () => { triggeredAt: Date.now(), isCctp, isExchange: Boolean(exchange), + requestId: requestPayload.requestId ?? undefined, }); abacusStateManager.clearTransferInputValues(); setWithdrawAmount(''); @@ -203,6 +208,13 @@ export const WithdrawForm = () => { chainId: toChainId, tokenAddress: toToken?.address || undefined, tokenSymbol: toToken?.symbol || undefined, + slippage: slippage || undefined, + gasFee: summary?.gasFee || undefined, + bridgeFee: summary?.bridgeFee || undefined, + exchangeRate: summary?.exchangeRate || undefined, + estimatedRouteDuration: summary?.estimatedRouteDuration || undefined, + toAmount: summary?.toAmount || undefined, + toAmountMin: summary?.toAmountMin || undefined, }); } } @@ -269,6 +281,17 @@ export const WithdrawForm = () => { setWithdrawAmount(freeCollateralBN.toString()); }, [freeCollateralBN, setWithdrawAmount]); + const { walletType } = useAccounts(); + + useEffect(() => { + if (walletType === WalletType.Privy) { + abacusStateManager.setTransferValue({ + field: TransferInputField.exchange, + value: 'coinbase', + }); + } + }, [walletType]); + const onSelectNetwork = useCallback((name: string, type: 'chain' | 'exchange') => { if (name) { setWithdrawAmount(''); @@ -305,7 +328,7 @@ export const WithdrawForm = () => { </span> ), value: ( - <Styled.DiffOutput + <$DiffOutput type={OutputType.Fiat} value={freeCollateral?.current} newValue={freeCollateral?.postOrder} @@ -321,61 +344,100 @@ export const WithdrawForm = () => { const { sanctionedAddresses } = useRestrictions(); - const errorMessage = useMemo(() => { + const { alertType, errorMessage } = useMemo(() => { + if (isCctp) { + if (debouncedAmountBN.gte(MAX_CCTP_TRANSFER_AMOUNT)) { + return { + errorMessage: stringGetter({ + key: STRING_KEYS.MAX_CCTP_TRANSFER_LIMIT_EXCEEDED, + params: { + MAX_CCTP_TRANSFER_AMOUNT: MAX_CCTP_TRANSFER_AMOUNT, + }, + }), + }; + } + if ( + !debouncedAmountBN.isZero() && + MustBigNumber(debouncedAmountBN).lte(MIN_CCTP_TRANSFER_AMOUNT) + ) { + return { + errorMessage: 'Amount must be greater than 10 USDC', + }; + } + } if (error) { - return error; + return { + errorMessage: error, + }; } if (routeErrors) { - return routeErrorMessage - ? stringGetter({ - key: STRING_KEYS.SOMETHING_WENT_WRONG_WITH_MESSAGE, - params: { ERROR_MESSAGE: routeErrorMessage }, - }) - : stringGetter({ key: STRING_KEYS.SOMETHING_WENT_WRONG }); + return { + errorMessage: routeErrorMessage + ? stringGetter({ + key: STRING_KEYS.SOMETHING_WENT_WRONG_WITH_MESSAGE, + params: { ERROR_MESSAGE: routeErrorMessage }, + }) + : stringGetter({ key: STRING_KEYS.SOMETHING_WENT_WRONG }), + }; } - if (!toAddress) return stringGetter({ key: STRING_KEYS.WITHDRAW_MUST_SPECIFY_ADDRESS }); + if (!toAddress) { + return { + alertType: AlertType.Warning, + errorMessage: stringGetter({ key: STRING_KEYS.WITHDRAW_MUST_SPECIFY_ADDRESS }), + }; + } if (sanctionedAddresses.has(toAddress)) - return stringGetter({ - key: STRING_KEYS.TRANSFER_INVALID_DYDX_ADDRESS, - }); + return { + errorMessage: stringGetter({ + key: STRING_KEYS.TRANSFER_INVALID_DYDX_ADDRESS, + }), + }; if (debouncedAmountBN) { if (!chainIdStr && !exchange) { - return stringGetter({ key: STRING_KEYS.WITHDRAW_MUST_SPECIFY_CHAIN }); + return { + errorMessage: stringGetter({ key: STRING_KEYS.WITHDRAW_MUST_SPECIFY_CHAIN }), + }; } else if (!toToken) { - return stringGetter({ key: STRING_KEYS.WITHDRAW_MUST_SPECIFY_ASSET }); + return { + errorMessage: stringGetter({ key: STRING_KEYS.WITHDRAW_MUST_SPECIFY_ASSET }), + }; } } - if (MustBigNumber(debouncedAmountBN).gt(MustBigNumber(freeCollateralBN))) { - return stringGetter({ key: STRING_KEYS.WITHDRAW_MORE_THAN_FREE }); - } - - if (isCctp) { - if (MustBigNumber(debouncedAmountBN).gte(MAX_CCTP_TRANSFER_AMOUNT)) { - return stringGetter({ - key: STRING_KEYS.MAX_CCTP_TRANSFER_LIMIT_EXCEEDED, - params: { - MAX_CCTP_TRANSFER_AMOUNT: MAX_CCTP_TRANSFER_AMOUNT, - }, - }); - } - if ( - !debouncedAmountBN.isZero() && - MustBigNumber(debouncedAmountBN).lte(MIN_CCTP_TRANSFER_AMOUNT) - ) { - return 'Amount must be greater than 10 USDC'; - } + if (debouncedAmountBN.gt(MustBigNumber(freeCollateralBN))) { + return { + errorMessage: stringGetter({ key: STRING_KEYS.WITHDRAW_MORE_THAN_FREE }), + }; } if (isMainnet && MustBigNumber(summary?.aggregatePriceImpact).gte(MAX_PRICE_IMPACT)) { - return stringGetter({ key: STRING_KEYS.PRICE_IMPACT_TOO_HIGH }); + return { errorMessage: stringGetter({ key: STRING_KEYS.PRICE_IMPACT_TOO_HIGH }) }; } - return undefined; + // Withdrawal Safety + if (usdcWithdrawalCapacity.gt(0) && debouncedAmountBN.gt(usdcWithdrawalCapacity)) { + return { + alertType: AlertType.Warning, + errorMessage: stringGetter({ + key: STRING_KEYS.WITHDRAWAL_LIMIT_OVER, + params: { + USDC_LIMIT: ( + <span> + {usdcWithdrawalCapacity.toFormat(TOKEN_DECIMALS)} + <$Tag>{usdcLabel}</$Tag> + </span> + ), + }, + }), + }; + } + return { + errorMessage: undefined, + }; }, [ error, routeErrors, @@ -388,6 +450,7 @@ export const WithdrawForm = () => { sanctionedAddresses, stringGetter, summary, + usdcWithdrawalCapacity, ]); const isInvalidNobleAddress = Boolean( @@ -405,8 +468,22 @@ export const WithdrawForm = () => { isInvalidNobleAddress; return ( - <Styled.Form onSubmit={onSubmit}> - <Styled.DestinationRow> + <$Form onSubmit={onSubmit}> + <$Subheader> + {stringGetter({ + key: STRING_KEYS.LOWEST_FEE_WITHDRAWALS, + params: { + LOWEST_FEE_TOKENS_TOOLTIP: ( + <WithTooltip tooltip="lowest-fees"> + {stringGetter({ + key: STRING_KEYS.SELECT_CHAINS, + })} + </WithTooltip> + ), + }, + })} + </$Subheader> + <$DestinationRow> <FormInput type={InputType.Text} placeholder={stringGetter({ key: STRING_KEYS.ADDRESS })} @@ -415,7 +492,7 @@ export const WithdrawForm = () => { label={ <span> {stringGetter({ key: STRING_KEYS.DESTINATION })}{' '} - {isValidAddress ? <Styled.CheckIcon iconName={IconName.Check} /> : null} + {isValidAddress ? <$CheckIcon iconName={IconName.Check} /> : null} </span> } /> @@ -424,7 +501,7 @@ export const WithdrawForm = () => { selectedChain={chainIdStr || undefined} onSelect={onSelectNetwork} /> - </Styled.DestinationRow> + </$DestinationRow> {isInvalidNobleAddress && ( <AlertMessage type={AlertType.Error}> {stringGetter({ key: STRING_KEYS.NOBLE_ADDRESS_VALIDATION })} @@ -435,21 +512,23 @@ export const WithdrawForm = () => { onSelectToken={onSelectToken} isExchange={Boolean(exchange)} /> - <Styled.WithDetailsReceipt side="bottom" detailItems={amountInputReceipt}> + <$WithDetailsReceipt side="bottom" detailItems={amountInputReceipt}> <FormInput type={InputType.Number} onChange={onChangeAmount} value={withdrawAmount} label={stringGetter({ key: STRING_KEYS.AMOUNT })} slotRight={ - <Styled.FormInputButton size={ButtonSize.XSmall} onClick={onClickMax}> + <$FormInputButton size={ButtonSize.XSmall} onClick={onClickMax}> {stringGetter({ key: STRING_KEYS.MAX })} - </Styled.FormInputButton> + </$FormInputButton> } /> - </Styled.WithDetailsReceipt> - {errorMessage && <AlertMessage type={AlertType.Error}>{errorMessage}</AlertMessage>} - <Styled.Footer> + </$WithDetailsReceipt> + {errorMessage && ( + <$AlertMessage type={alertType ?? AlertType.Error}>{errorMessage}</$AlertMessage> + )} + <$Footer> <WithdrawButtonAndReceipt isDisabled={isDisabled} isLoading={isLoading} @@ -458,37 +537,46 @@ export const WithdrawForm = () => { withdrawChain={chainIdStr || undefined} withdrawToken={toToken || undefined} /> - </Styled.Footer> - </Styled.Form> + </$Footer> + </$Form> ); }; +const $Subheader = styled.div` + color: var(--color-text-0); +`; -const Styled: Record<string, AnyStyledComponent> = {}; +const $Tag = styled(Tag)` + margin-left: 0.5ch; +`; -Styled.DiffOutput = styled(DiffOutput)` +const $DiffOutput = styled(DiffOutput)` --diffOutput-valueWithDiff-fontSize: 1em; `; -Styled.Form = styled.form` +const $Form = styled.form` ${formMixins.transfersForm} `; -Styled.Footer = styled.footer` +const $Footer = styled.footer` ${formMixins.footer} --stickyFooterBackdrop-outsetY: var(--dialog-content-paddingBottom); `; -Styled.DestinationRow = styled.div` +const $DestinationRow = styled.div` ${layoutMixins.spacedRow} grid-template-columns: 1fr 1fr; gap: 1rem; `; -Styled.WithDetailsReceipt = styled(WithDetailsReceipt)` +const $AlertMessage = styled(AlertMessage)` + display: inline; +`; + +const $WithDetailsReceipt = styled(WithDetailsReceipt)` --withReceipt-backgroundColor: var(--color-layer-2); `; -Styled.Link = styled(Link)` +const $Link = styled(Link)` color: var(--color-accent); &:visited { @@ -496,15 +584,15 @@ Styled.Link = styled(Link)` } `; -Styled.TransactionInfo = styled.span` +const $TransactionInfo = styled.span` ${layoutMixins.row} `; -Styled.FormInputButton = styled(Button)` +const $FormInputButton = styled(Button)` ${formMixins.inputInnerButton} `; -Styled.CheckIcon = styled(Icon)` +const $CheckIcon = styled(Icon)` margin: 0 1ch; color: var(--color-success); diff --git a/src/views/forms/AccountManagementForms/WithdrawForm/WithdrawButtonAndReceipt.tsx b/src/views/forms/AccountManagementForms/WithdrawForm/WithdrawButtonAndReceipt.tsx index eae0704f4..b7592f6ef 100644 --- a/src/views/forms/AccountManagementForms/WithdrawForm/WithdrawButtonAndReceipt.tsx +++ b/src/views/forms/AccountManagementForms/WithdrawForm/WithdrawButtonAndReceipt.tsx @@ -1,26 +1,27 @@ -import { useMemo, useState } from 'react'; +import { useState } from 'react'; + import { shallowEqual, useSelector } from 'react-redux'; -import styled, { type AnyStyledComponent } from 'styled-components'; -import { formatUnits } from 'viem'; +import styled from 'styled-components'; import { TransferInputTokenResource } from '@/constants/abacus'; -import { ButtonAction, ButtonShape, ButtonSize, ButtonType } from '@/constants/buttons'; +import { ButtonAction, ButtonSize, ButtonType } from '@/constants/buttons'; import { STRING_KEYS } from '@/constants/localization'; import { NumberSign, TOKEN_DECIMALS } from '@/constants/numbers'; -import { layoutMixins } from '@/styles/layoutMixins'; +import { ConnectionErrorType, useApiState } from '@/hooks/useApiState'; +import { useStringGetter } from '@/hooks/useStringGetter'; +import { useTokenConfigs } from '@/hooks/useTokenConfigs'; -import { useStringGetter, useTokenConfigs } from '@/hooks'; +import { layoutMixins } from '@/styles/layoutMixins'; import { Button } from '@/components/Button'; - import { Details, DetailsItem } from '@/components/Details'; import { DiffOutput } from '@/components/DiffOutput'; -import { Icon, IconName } from '@/components/Icon'; import { Output, OutputType } from '@/components/Output'; import { Tag } from '@/components/Tag'; import { ToggleButton } from '@/components/ToggleButton'; import { WithReceipt } from '@/components/WithReceipt'; +import { WithTooltip } from '@/components/WithTooltip'; import { OnboardingTriggerButton } from '@/views/dialogs/OnboardingTriggerButton'; import { calculateCanAccountTrade } from '@/state/accountCalculators'; @@ -46,13 +47,11 @@ export const WithdrawButtonAndReceipt = ({ setSlippage, slippage, - withdrawChain, withdrawToken, isDisabled, isLoading, }: ElementProps) => { - const [showFeeBreakdown, setShowFeeBreakdown] = useState(false); const [isEditingSlippage, setIsEditingSlipapge] = useState(false); const stringGetter = useStringGetter(); @@ -60,103 +59,70 @@ export const WithdrawButtonAndReceipt = ({ const { summary, requestPayload, exchange } = useSelector(getTransferInputs, shallowEqual) || {}; const canAccountTrade = useSelector(calculateCanAccountTrade, shallowEqual); const { usdcLabel } = useTokenConfigs(); + const { connectionError } = useApiState(); - const feeSubitems: DetailsItem[] = []; - - if (typeof summary?.gasFee === 'number') { - feeSubitems.push({ - key: 'gas-fees', - label: <span>{stringGetter({ key: STRING_KEYS.GAS_FEE })}</span>, - value: <Output type={OutputType.Fiat} value={summary?.gasFee} />, - }); - } - - if (typeof summary?.bridgeFee === 'number') { - feeSubitems.push({ - key: 'bridge-fees', - label: <span>{stringGetter({ key: STRING_KEYS.BRIDGE_FEE })}</span>, - value: <Output type={OutputType.Fiat} value={summary?.bridgeFee} />, - }); - } - - const hasSubitems = feeSubitems.length > 0; - - const showSubitemsToggle = showFeeBreakdown - ? stringGetter({ key: STRING_KEYS.HIDE_ALL_DETAILS }) - : stringGetter({ key: STRING_KEYS.SHOW_ALL_DETAILS }); - - const totalFees = (summary?.bridgeFee || 0) + (summary?.gasFee || 0); - - const submitButtonReceipt = [ + const submitButtonReceipt: DetailsItem[] = [ { - key: 'total-fees', - label: <span>{stringGetter({ key: STRING_KEYS.TOTAL_FEES })}</span>, - value: <Output type={OutputType.Fiat} value={totalFees} />, - subitems: feeSubitems, - }, - !exchange && { - key: 'exchange-rate', - label: <span>{stringGetter({ key: STRING_KEYS.EXCHANGE_RATE })}</span>, - value: withdrawToken && typeof summary?.exchangeRate === 'number' && ( - <Styled.ExchangeRate> - <Output type={OutputType.Asset} value={1} fractionDigits={0} tag={usdcLabel} /> - = - <Output - type={OutputType.Asset} - value={summary?.exchangeRate} - tag={withdrawToken?.symbol} - /> - </Styled.ExchangeRate> + key: 'expected-amount-received', + + label: ( + <$RowWithGap> + {stringGetter({ key: STRING_KEYS.EXPECTED_AMOUNT_RECEIVED })} + {withdrawToken && <Tag>{withdrawToken?.symbol}</Tag>} + </$RowWithGap> ), - }, - { - key: 'estimated-route-duration', - label: <span>{stringGetter({ key: STRING_KEYS.ESTIMATED_TIME })}</span>, - value: typeof summary?.estimatedRouteDuration === 'number' && ( - <Output - type={OutputType.Text} - value={stringGetter({ - key: STRING_KEYS.X_MINUTES_LOWERCASED, - params: { - X: - summary?.estimatedRouteDuration < 60 - ? '< 1' - : Math.round(summary?.estimatedRouteDuration / 60), - }, - })} - /> + value: ( + <Output type={OutputType.Asset} value={summary?.toAmount} fractionDigits={TOKEN_DECIMALS} /> ), }, { - key: 'expected-amount-received', + key: 'minimum-amount-received', label: ( - <span> - {stringGetter({ key: STRING_KEYS.EXPECTED_AMOUNT_RECEIVED })}{' '} + <$RowWithGap> + {stringGetter({ key: STRING_KEYS.MINIMUM_AMOUNT_RECEIVED })} {withdrawToken && <Tag>{withdrawToken?.symbol}</Tag>} - </span> + </$RowWithGap> ), value: ( - <Output type={OutputType.Asset} value={summary?.toAmount} fractionDigits={TOKEN_DECIMALS} /> + <Output + type={OutputType.Asset} + value={summary?.toAmountMin} + fractionDigits={TOKEN_DECIMALS} + /> ), - subitems: [ - { - key: 'minimum-amount-received', - label: ( - <span> - {stringGetter({ key: STRING_KEYS.MINIMUM_AMOUNT_RECEIVED })}{' '} - {withdrawToken && <Tag>{withdrawToken?.symbol}</Tag>} - </span> - ), - value: ( + tooltip: 'minimum-amount-received', + }, + !exchange && { + key: 'exchange-rate', + label: <span>{stringGetter({ key: STRING_KEYS.EXCHANGE_RATE })}</span>, + value: + withdrawToken && typeof summary?.exchangeRate === 'number' ? ( + <$RowWithGap> + <Output type={OutputType.Asset} value={1} fractionDigits={0} tag={usdcLabel} /> + = <Output type={OutputType.Asset} - value={summary?.toAmountMin} - fractionDigits={TOKEN_DECIMALS} + value={summary?.exchangeRate} + tag={withdrawToken?.symbol} /> - ), - tooltip: 'minimum-amount-received', - }, - ], + </$RowWithGap> + ) : undefined, + }, + typeof summary?.gasFee === 'number' && { + key: 'gas-fees', + label: ( + <WithTooltip tooltip="gas-fees">{stringGetter({ key: STRING_KEYS.GAS_FEE })}</WithTooltip> + ), + value: <Output type={OutputType.Fiat} value={summary?.gasFee} />, + }, + typeof summary?.bridgeFee === 'number' && { + key: 'bridge-fees', + label: ( + <WithTooltip tooltip="bridge-fees"> + {stringGetter({ key: STRING_KEYS.BRIDGE_FEE })} + </WithTooltip> + ), + value: <Output type={OutputType.Fiat} value={summary?.bridgeFee} />, }, !exchange && { key: 'slippage', @@ -170,11 +136,30 @@ export const WithdrawButtonAndReceipt = ({ /> ), }, + { + key: 'estimated-route-duration', + label: <span>{stringGetter({ key: STRING_KEYS.ESTIMATED_TIME })}</span>, + value: + typeof summary?.estimatedRouteDuration === 'number' ? ( + <Output + type={OutputType.Text} + value={stringGetter({ + key: STRING_KEYS.X_MINUTES_LOWERCASED, + params: { + X: + summary?.estimatedRouteDuration < 60 + ? '< 1' + : Math.round(summary?.estimatedRouteDuration / 60), + }, + })} + /> + ) : undefined, + }, { key: 'leverage', label: <span>{stringGetter({ key: STRING_KEYS.ACCOUNT_LEVERAGE })}</span>, value: ( - <Styled.DiffOutput + <$DiffOutput type={OutputType.Multiple} value={leverage?.current} newValue={leverage?.postOrder} @@ -185,29 +170,11 @@ export const WithdrawButtonAndReceipt = ({ }, ].filter(isTruthy); - const isFormValid = !isDisabled && !isEditingSlippage; + const isFormValid = + !isDisabled && !isEditingSlippage && connectionError !== ConnectionErrorType.CHAIN_DISRUPTION; return ( - <Styled.WithReceipt - slotReceipt={ - <Styled.CollapsibleDetails> - <Styled.Details showSubitems={showFeeBreakdown} items={submitButtonReceipt} /> - {hasSubitems && ( - <Styled.DetailButtons> - <Styled.ToggleButton - shape={ButtonShape.Pill} - size={ButtonSize.XSmall} - isPressed={showFeeBreakdown} - onPressedChange={setShowFeeBreakdown} - slotLeft={<Icon iconName={IconName.Caret} />} - > - {showSubitemsToggle} - </Styled.ToggleButton> - </Styled.DetailButtons> - )} - </Styled.CollapsibleDetails> - } - > + <$WithReceipt slotReceipt={<$Details items={submitButtonReceipt} />}> {!canAccountTrade ? ( <OnboardingTriggerButton size={ButtonSize.Base} /> ) : ( @@ -222,39 +189,32 @@ export const WithdrawButtonAndReceipt = ({ {stringGetter({ key: STRING_KEYS.WITHDRAW })} </Button> )} - </Styled.WithReceipt> + </$WithReceipt> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.DiffOutput = styled(DiffOutput)` +const $DiffOutput = styled(DiffOutput)` --diffOutput-valueWithDiff-fontSize: 1em; `; -Styled.ExchangeRate = styled.span` +const $RowWithGap = styled.span` ${layoutMixins.row} gap: 0.5ch; `; -Styled.WithReceipt = styled(WithReceipt)` +const $WithReceipt = styled(WithReceipt)` --withReceipt-backgroundColor: var(--color-layer-2); `; -Styled.CollapsibleDetails = styled.div` - ${layoutMixins.column} +const $Details = styled(Details)` padding: var(--form-input-paddingY) var(--form-input-paddingX); -`; - -Styled.Details = styled(Details)` font-size: 0.8125em; `; -Styled.DetailButtons = styled.div` +const $DetailButtons = styled.div` ${layoutMixins.spacedRow} `; -Styled.ToggleButton = styled(ToggleButton)` +const $ToggleButton = styled(ToggleButton)` --button-toggle-off-backgroundColor: transparent; --button-toggle-on-backgroundColor: transparent; --button-toggle-on-textColor: var(--color-text-0); diff --git a/src/views/forms/AdjustIsolatedMarginForm.tsx b/src/views/forms/AdjustIsolatedMarginForm.tsx new file mode 100644 index 000000000..014ebabee --- /dev/null +++ b/src/views/forms/AdjustIsolatedMarginForm.tsx @@ -0,0 +1,269 @@ +import { FormEvent, useMemo, useState } from 'react'; + +import { shallowEqual, useSelector } from 'react-redux'; +import styled from 'styled-components'; + +import type { SubaccountPosition } from '@/constants/abacus'; +import { AlertType } from '@/constants/alerts'; +import { ButtonAction, ButtonShape } from '@/constants/buttons'; +import { STRING_KEYS } from '@/constants/localization'; +import { NumberSign, USD_DECIMALS } from '@/constants/numbers'; + +import { useStringGetter } from '@/hooks/useStringGetter'; + +import { formMixins } from '@/styles/formMixins'; +import { layoutMixins } from '@/styles/layoutMixins'; + +import { AlertMessage } from '@/components/AlertMessage'; +import { Button } from '@/components/Button'; +import { DiffOutput } from '@/components/DiffOutput'; +import { FormInput } from '@/components/FormInput'; +import { GradientCard } from '@/components/GradientCard'; +import { InputType } from '@/components/Input'; +import { OutputType } from '@/components/Output'; +import { ToggleGroup } from '@/components/ToggleGroup'; +import { WithDetailsReceipt } from '@/components/WithDetailsReceipt'; + +import { getOpenPositionFromId, getSubaccount } from '@/state/accountSelectors'; +import { getMarketConfig } from '@/state/perpetualsSelectors'; + +import { calculatePositionMargin } from '@/lib/tradeData'; + +type ElementProps = { + marketId: SubaccountPosition['id']; +}; + +enum MarginAction { + ADD = 'ADD', + REMOVE = 'REMOVE', +} + +const SIZE_PERCENT_OPTIONS = { + '5%': '0.05', + '10%': '0.1', + '25%': '0.25', + '50%': '0.5', + '75%': '0.75', +}; + +export const AdjustIsolatedMarginForm = ({ marketId }: ElementProps) => { + const stringGetter = useStringGetter(); + const [marginAction, setMarginAction] = useState(MarginAction.ADD); + const subaccountPosition = useSelector(getOpenPositionFromId(marketId)); + const { adjustedMmf, leverage, liquidationPrice, notionalTotal } = subaccountPosition ?? {}; + const marketConfig = useSelector(getMarketConfig(marketId)); + const { tickSizeDecimals } = marketConfig ?? {}; + + /** + * @todo: Replace with Abacus functionality + */ + const [percent, setPercent] = useState(''); + const [amount, setAmount] = useState(''); + const onSubmit = () => {}; + + const positionMargin = { + current: calculatePositionMargin({ + adjustedMmf: adjustedMmf?.current, + notionalTotal: notionalTotal?.current, + }).toFixed(tickSizeDecimals ?? USD_DECIMALS), + postOrder: calculatePositionMargin({ + adjustedMmf: adjustedMmf?.postOrder, + notionalTotal: notionalTotal?.postOrder, + }).toFixed(tickSizeDecimals ?? USD_DECIMALS), + }; + + const { freeCollateral, marginUsage } = useSelector(getSubaccount, shallowEqual) ?? {}; + + const renderDiffOutput = ({ + type, + value, + newValue, + withDiff, + }: Pick<Parameters<typeof DiffOutput>[0], 'type' | 'value' | 'newValue' | 'withDiff'>) => ( + <DiffOutput type={type} value={value} newValue={newValue} withDiff={withDiff} /> + ); + + const { + freeCollateralDiffOutput, + marginUsageDiffOutput, + positionMarginDiffOutput, + leverageDiffOutput, + } = useMemo( + () => ({ + freeCollateralDiffOutput: renderDiffOutput({ + withDiff: + !!freeCollateral?.postOrder && freeCollateral?.current !== freeCollateral?.postOrder, + value: freeCollateral?.current, + newValue: freeCollateral?.postOrder, + type: OutputType.Number, + }), + marginUsageDiffOutput: renderDiffOutput({ + withDiff: !!marginUsage?.postOrder && marginUsage?.current !== marginUsage?.postOrder, + value: marginUsage?.current, + newValue: marginUsage?.postOrder, + type: OutputType.Percent, + }), + positionMarginDiffOutput: renderDiffOutput({ + withDiff: !!positionMargin.postOrder && positionMargin.current !== positionMargin.postOrder, + value: positionMargin.current, + newValue: positionMargin.postOrder, + type: OutputType.Fiat, + }), + leverageDiffOutput: renderDiffOutput({ + withDiff: !!leverage?.postOrder && leverage?.current !== leverage?.postOrder, + value: leverage?.current, + newValue: leverage?.postOrder, + type: OutputType.Multiple, + }), + }), + [freeCollateral, marginUsage, positionMargin, leverage] + ); + + const formConfig = + marginAction === MarginAction.ADD + ? { + formLabel: stringGetter({ key: STRING_KEYS.ADDING }), + buttonLabel: stringGetter({ key: STRING_KEYS.ADD_MARGIN }), + inputReceiptItems: [ + { + key: 'cross-free-collateral', + label: stringGetter({ key: STRING_KEYS.CROSS_FREE_COLLATERAL }), + value: freeCollateralDiffOutput, + }, + { + key: 'cross-margin-usage', + label: stringGetter({ key: STRING_KEYS.CROSS_MARGIN_USAGE }), + value: marginUsageDiffOutput, + }, + ], + receiptItems: [ + { + key: 'margin', + label: stringGetter({ key: STRING_KEYS.POSITION_MARGIN }), + value: positionMarginDiffOutput, + }, + { + key: 'leverage', + label: stringGetter({ key: STRING_KEYS.POSITION_LEVERAGE }), + value: leverageDiffOutput, + }, + ], + } + : { + formLabel: stringGetter({ key: STRING_KEYS.REMOVING }), + buttonLabel: stringGetter({ key: STRING_KEYS.REMOVE_MARGIN }), + inputReceiptItems: [ + { + key: 'margin', + label: stringGetter({ key: STRING_KEYS.POSITION_MARGIN }), + value: positionMarginDiffOutput, + }, + { + key: 'leverage', + label: stringGetter({ key: STRING_KEYS.POSITION_LEVERAGE }), + value: leverageDiffOutput, + }, + ], + receiptItems: [ + { + key: 'cross-free-collateral', + label: stringGetter({ key: STRING_KEYS.CROSS_FREE_COLLATERAL }), + value: freeCollateralDiffOutput, + }, + { + key: 'cross-margin-usage', + label: stringGetter({ key: STRING_KEYS.CROSS_MARGIN_USAGE }), + value: marginUsageDiffOutput, + }, + ], + }; + + const CenterElement = false ? ( + <AlertMessage type={AlertType.Error}>Placeholder Error</AlertMessage> + ) : ( + <$GradientCard fromColor="neutral" toColor="negative"> + <$Column> + <$TertiarySpan>{stringGetter({ key: STRING_KEYS.ESTIMATED })}</$TertiarySpan> + <span>{stringGetter({ key: STRING_KEYS.LIQUIDATION_PRICE })}</span> + </$Column> + <div> + <DiffOutput + withDiff={ + !!liquidationPrice?.postOrder && + liquidationPrice?.current !== liquidationPrice?.postOrder + } + sign={NumberSign.Negative} + layout="column" + value={liquidationPrice?.current} + newValue={liquidationPrice?.postOrder} + type={OutputType.Fiat} + fractionDigits={tickSizeDecimals} + /> + </div> + </$GradientCard> + ); + + return ( + <$Form + onSubmit={(e: FormEvent) => { + e.preventDefault(); + onSubmit(); + }} + > + <ToggleGroup + value={marginAction} + onValueChange={setMarginAction} + items={[ + { value: MarginAction.ADD, label: stringGetter({ key: STRING_KEYS.ADD_MARGIN }) }, + { value: MarginAction.REMOVE, label: stringGetter({ key: STRING_KEYS.REMOVE_MARGIN }) }, + ]} + /> + + <$ToggleGroup + items={Object.entries(SIZE_PERCENT_OPTIONS).map(([key, value]) => ({ + label: key, + value: value.toString(), + }))} + value={percent} + onValueChange={setPercent} + shape={ButtonShape.Rectangle} + /> + + <WithDetailsReceipt side="bottom" detailItems={formConfig.inputReceiptItems}> + <FormInput + type={InputType.Currency} + label={formConfig.formLabel} + value={amount} + onChange={setAmount} + /> + </WithDetailsReceipt> + + {CenterElement} + + <WithDetailsReceipt detailItems={formConfig.receiptItems}> + <Button action={ButtonAction.Primary}>{formConfig.buttonLabel}</Button> + </WithDetailsReceipt> + </$Form> + ); +}; + +const $Form = styled.form` + ${formMixins.transfersForm} +`; +const $ToggleGroup = styled(ToggleGroup)` + ${formMixins.inputToggleGroup} +`; +const $GradientCard = styled(GradientCard)` + ${layoutMixins.spacedRow} + height: 4rem; + border-radius: 0.5rem; + padding: 0.75rem 1rem; + align-items: center; +`; +const $Column = styled.div` + ${layoutMixins.column} + font: var(--font-small-medium); +`; +const $TertiarySpan = styled.span` + color: var(--color-text-0); +`; diff --git a/src/views/forms/AdjustTargetLeverageForm.tsx b/src/views/forms/AdjustTargetLeverageForm.tsx new file mode 100644 index 000000000..d42905843 --- /dev/null +++ b/src/views/forms/AdjustTargetLeverageForm.tsx @@ -0,0 +1,180 @@ +import { FormEvent, useState } from 'react'; + +import { NumberFormatValues } from 'react-number-format'; +import { shallowEqual, useSelector } from 'react-redux'; +import styled from 'styled-components'; + +import { TradeInputField } from '@/constants/abacus'; +import { ButtonAction, ButtonShape, ButtonType } from '@/constants/buttons'; +import { STRING_KEYS } from '@/constants/localization'; +import { LEVERAGE_DECIMALS, USD_DECIMALS } from '@/constants/numbers'; + +import { useStringGetter } from '@/hooks/useStringGetter'; + +import { breakpoints } from '@/styles'; +import { formMixins } from '@/styles/formMixins'; + +import { Button } from '@/components/Button'; +import { DiffOutput } from '@/components/DiffOutput'; +import { Input, InputType } from '@/components/Input'; +import { OutputType } from '@/components/Output'; +import { Slider } from '@/components/Slider'; +import { ToggleGroup } from '@/components/ToggleGroup'; +import { WithDetailsReceipt } from '@/components/WithDetailsReceipt'; +import { WithLabel } from '@/components/WithLabel'; + +import { getSubaccount } from '@/state/accountSelectors'; +import { getInputTradeTargetLeverage } from '@/state/inputsSelectors'; + +import abacusStateManager from '@/lib/abacus'; +import { MustBigNumber } from '@/lib/numbers'; + +export const AdjustTargetLeverageForm = ({ + onSetTargetLeverage, +}: { + onSetTargetLeverage: (value: string) => void; +}) => { + const stringGetter = useStringGetter(); + const { buyingPower } = useSelector(getSubaccount, shallowEqual) ?? {}; + + /** + * @todo: Replace with Abacus functionality + */ + const targetLeverage = useSelector(getInputTradeTargetLeverage); + const [leverage, setLeverage] = useState(targetLeverage?.toString() ?? ''); + const leverageBN = MustBigNumber(leverage); + + return ( + <$Form + onSubmit={(e: FormEvent) => { + e.preventDefault(); + + abacusStateManager.setTradeValue({ + value: leverage, + field: TradeInputField.targetLeverage, + }); + + onSetTargetLeverage?.(leverage); + }} + > + <$InputContainer> + <$WithLabel label={stringGetter({ key: STRING_KEYS.TARGET_LEVERAGE })}> + <$LeverageSlider + min={1} + max={10} + value={MustBigNumber(leverage).abs().toNumber()} + onSliderDrag={([value]: number[]) => setLeverage(value.toString())} + onValueCommit={([value]: number[]) => setLeverage(value.toString())} + /> + </$WithLabel> + <$InnerInputContainer> + <Input + placeholder={`${MustBigNumber(leverage).abs().toFixed(LEVERAGE_DECIMALS)}×`} + type={InputType.Leverage} + value={leverage} + onChange={({ floatValue }: NumberFormatValues) => + setLeverage(floatValue?.toString() ?? '') + } + /> + </$InnerInputContainer> + </$InputContainer> + + <$ToggleGroup + items={[1, 2, 3, 5, 10].map((leverageAmount: number) => ({ + label: `${leverageAmount}×`, + value: MustBigNumber(leverageAmount).toFixed(LEVERAGE_DECIMALS), + }))} + value={leverageBN.abs().toFixed(LEVERAGE_DECIMALS)} // sign agnostic + onValueChange={(value: string) => setLeverage(value)} + shape={ButtonShape.Rectangle} + /> + + <WithDetailsReceipt + detailItems={[ + { + key: 'target-leverage', + label: stringGetter({ key: STRING_KEYS.TARGET_LEVERAGE }), + value: ( + <DiffOutput + type={OutputType.Multiple} + withDiff={leverageBN.gt(0) && !leverageBN.eq(1)} + value={1} + newValue={leverageBN.toFixed(LEVERAGE_DECIMALS)} + fractionDigits={LEVERAGE_DECIMALS} + /> + ), + }, + { + key: 'buying-power', + label: stringGetter({ key: STRING_KEYS.BUYING_POWER }), + value: ( + <DiffOutput + type={OutputType.Fiat} + withDiff={ + !!buyingPower?.postOrder && buyingPower?.current !== buyingPower?.postOrder + } + value={buyingPower?.current} + newValue={buyingPower?.postOrder} + fractionDigits={USD_DECIMALS} + /> + ), + }, + ]} + > + <Button type={ButtonType.Submit} action={ButtonAction.Primary}> + {stringGetter({ key: STRING_KEYS.CONFIRM_LEVERAGE })} + </Button> + </WithDetailsReceipt> + </$Form> + ); +}; + +const $Form = styled.form` + ${formMixins.transfersForm} +`; +const $InputContainer = styled.div` + ${formMixins.inputContainer} + --input-height: 3.5rem; + + padding: var(--form-input-paddingY) var(--form-input-paddingX); + + @media ${breakpoints.tablet} { + --input-height: 4rem; + } +`; +const $WithLabel = styled(WithLabel)` + ${formMixins.inputLabel} +`; +const $LeverageSlider = styled(Slider)` + margin-top: 0.25rem; + + --slider-track-background: linear-gradient( + 90deg, + var(--color-layer-7) 0%, + var(--color-text-2) 100% + ); +`; +const $InnerInputContainer = styled.div` + ${formMixins.inputContainer} + --input-backgroundColor: var(--color-layer-5); + --input-borderColor: var(--color-layer-7); + --input-height: 2.25rem; + --input-width: 5rem; + + margin-left: 0.25rem; + + input { + text-align: end; + padding: 0 var(--form-input-paddingX); + } + + @media ${breakpoints.tablet} { + --input-height: 2.5rem; + } +`; +const $LeverageSide = styled.div` + cursor: pointer; +`; +const $ToggleGroup = styled(ToggleGroup)` + ${formMixins.inputToggleGroup} +`; diff --git a/src/views/forms/ClosePositionForm.tsx b/src/views/forms/ClosePositionForm.tsx index 82f95656f..4176f2769 100644 --- a/src/views/forms/ClosePositionForm.tsx +++ b/src/views/forms/ClosePositionForm.tsx @@ -1,26 +1,32 @@ -import { type FormEvent, useCallback, useEffect, useState } from 'react'; -import styled, { type AnyStyledComponent } from 'styled-components'; +import { useCallback, useEffect, useState, type FormEvent } from 'react'; + import { shallowEqual, useDispatch, useSelector } from 'react-redux'; +import styled from 'styled-components'; import { ClosePositionInputField, + ErrorType, ValidationError, type HumanReadablePlaceOrderPayload, type Nullable, - ErrorType, } from '@/constants/abacus'; import { AlertType } from '@/constants/alerts'; import { ButtonAction, ButtonShape, ButtonSize, ButtonType } from '@/constants/buttons'; -import { TOKEN_DECIMALS } from '@/constants/numbers'; import { STRING_KEYS } from '@/constants/localization'; +import { NotificationType } from '@/constants/notifications'; +import { TOKEN_DECIMALS } from '@/constants/numbers'; import { MobilePlaceOrderSteps } from '@/constants/trade'; -import { useBreakpoints, useIsFirstRender, useStringGetter, useSubaccount } from '@/hooks'; +import { useBreakpoints } from '@/hooks/useBreakpoints'; +import { useIsFirstRender } from '@/hooks/useIsFirstRender'; +import { useNotifications } from '@/hooks/useNotifications'; import { useOnLastOrderIndexed } from '@/hooks/useOnLastOrderIndexed'; +import { useStringGetter } from '@/hooks/useStringGetter'; +import { useSubaccount } from '@/hooks/useSubaccount'; import { breakpoints } from '@/styles'; -import { layoutMixins } from '@/styles/layoutMixins'; import { formMixins } from '@/styles/formMixins'; +import { layoutMixins } from '@/styles/layoutMixins'; import { AlertMessage } from '@/components/AlertMessage'; import { Button } from '@/components/Button'; @@ -28,24 +34,21 @@ import { FormInput } from '@/components/FormInput'; import { InputType } from '@/components/Input'; import { Tag } from '@/components/Tag'; import { ToggleGroup } from '@/components/ToggleGroup'; - -import { PlaceOrderButtonAndReceipt } from './TradeForm/PlaceOrderButtonAndReceipt'; - -import { Orderbook, orderbookMixins, type OrderbookScrollBehavior } from '@/views/tables/Orderbook'; - import { PositionPreview } from '@/views/forms/TradeForm/PositionPreview'; +import { Orderbook, orderbookMixins, type OrderbookScrollBehavior } from '@/views/tables/Orderbook'; import { getCurrentMarketPositionData } from '@/state/accountSelectors'; import { getCurrentMarketAssetData } from '@/state/assetsSelectors'; +import { closeDialog } from '@/state/dialogs'; import { getClosePositionInputErrors, getInputClosePositionData } from '@/state/inputsSelectors'; import { getCurrentMarketConfig, getCurrentMarketId } from '@/state/perpetualsSelectors'; -import { closeDialog } from '@/state/dialogs'; -import { getCurrentInput } from '@/state/inputsSelectors'; import abacusStateManager from '@/lib/abacus'; import { MustBigNumber } from '@/lib/numbers'; import { getTradeInputAlert } from '@/lib/tradeData'; +import { PlaceOrderButtonAndReceipt } from './TradeForm/PlaceOrderButtonAndReceipt'; + const MAX_KEY = 'MAX'; // Abacus only takes in these percent options @@ -78,7 +81,6 @@ export const ClosePositionForm = ({ const isFirstRender = useIsFirstRender(); const [closePositionError, setClosePositionError] = useState<string | undefined>(undefined); - const [isClosingPosition, setIsClosingPosition] = useState(false); const { closePosition } = useSubaccount(); @@ -88,7 +90,6 @@ export const ClosePositionForm = ({ useSelector(getCurrentMarketConfig, shallowEqual) || {}; const { size: sizeData, summary } = useSelector(getInputClosePositionData, shallowEqual) || {}; const { size, percent } = sizeData || {}; - const currentInput = useSelector(getCurrentInput); const closePositionInputErrors = useSelector(getClosePositionInputErrors, shallowEqual); const currentPositionData = useSelector(getCurrentMarketPositionData, shallowEqual); const { size: currentPositionSize } = currentPositionData || {}; @@ -106,31 +107,34 @@ export const ClosePositionForm = ({ tickSizeDecimals, }); + const { getNotificationPreferenceForType } = useNotifications(); + const isErrorShownInOrderStatusToast = getNotificationPreferenceForType( + NotificationType.OrderStatus + ); + let alertContent; let alertType = AlertType.Error; - if (closePositionError) { + if (closePositionError && !isErrorShownInOrderStatusToast) { alertContent = closePositionError; } else if (inputAlert) { - alertContent = inputAlert?.alertString; - alertType = inputAlert?.type; + alertContent = inputAlert.alertString; + alertType = inputAlert.type; } useEffect(() => { if (currentStep && currentStep !== MobilePlaceOrderSteps.EditOrder) return; - if (currentInput !== 'closePosition') { - abacusStateManager.setClosePositionValue({ - value: market, - field: ClosePositionInputField.market, - }); + abacusStateManager.setClosePositionValue({ + value: market, + field: ClosePositionInputField.market, + }); - abacusStateManager.setClosePositionValue({ - value: SIZE_PERCENT_OPTIONS[MAX_KEY], - field: ClosePositionInputField.percent, - }); - } - }, [currentInput, market, currentStep]); + abacusStateManager.setClosePositionValue({ + value: SIZE_PERCENT_OPTIONS[MAX_KEY], + field: ClosePositionInputField.percent, + }); + }, [market, currentStep]); const onLastOrderIndexed = useCallback(() => { if (!isFirstRender) { @@ -140,8 +144,6 @@ export const ClosePositionForm = ({ if (currentStep === MobilePlaceOrderSteps.PlacingOrder) { setCurrentStep?.(MobilePlaceOrderSteps.Confirmation); } - - setIsClosingPosition(false); } }, [currentStep, isFirstRender]); @@ -169,7 +171,7 @@ export const ClosePositionForm = ({ }); }; - const onSubmit = async (e: FormEvent) => { + const onSubmit = (e: FormEvent) => { e.preventDefault(); switch (currentStep) { @@ -178,6 +180,7 @@ export const ClosePositionForm = ({ break; } case MobilePlaceOrderSteps.PlacingOrder: + case MobilePlaceOrderSteps.PlaceOrderFailed: case MobilePlaceOrderSteps.Confirmation: { dispatch(closeDialog()); break; @@ -191,16 +194,15 @@ export const ClosePositionForm = ({ } }; - const onClosePosition = async () => { + const onClosePosition = () => { setClosePositionError(undefined); - setIsClosingPosition(true); - await closePosition({ + closePosition({ onError: (errorParams?: { errorStringKey?: Nullable<string> }) => { setClosePositionError( stringGetter({ key: errorParams?.errorStringKey || STRING_KEYS.SOMETHING_WENT_WRONG }) ); - setIsClosingPosition(false); + setCurrentStep?.(MobilePlaceOrderSteps.PlaceOrderFailed); }, onSuccess: (placeOrderPayload: Nullable<HumanReadablePlaceOrderPayload>) => { setUnIndexedClientId(placeOrderPayload?.clientId); @@ -211,8 +213,8 @@ export const ClosePositionForm = ({ const alertMessage = alertContent && <AlertMessage type={alertType}>{alertContent}</AlertMessage>; const inputs = ( - <Styled.InputsColumn> - <Styled.FormInput + <$InputsColumn> + <$FormInput id="close-position-amount" label={ <> @@ -227,7 +229,7 @@ export const ClosePositionForm = ({ max={currentSize !== null ? currentSizeBN.toNumber() : undefined} /> - <Styled.ToggleGroup + <$ToggleGroup items={Object.entries(SIZE_PERCENT_OPTIONS).map(([key, value]) => ({ label: key === MAX_KEY ? stringGetter({ key: STRING_KEYS.FULL_CLOSE }) : key, value: value.toString(), @@ -238,34 +240,34 @@ export const ClosePositionForm = ({ /> {alertMessage} - </Styled.InputsColumn> + </$InputsColumn> ); return ( - <Styled.ClosePositionForm onSubmit={onSubmit} className={className}> + <$ClosePositionForm onSubmit={onSubmit} className={className}> {!isTablet ? ( inputs ) : currentStep && currentStep !== MobilePlaceOrderSteps.EditOrder ? ( - <Styled.PreviewAndConfirmContent> + <$PreviewAndConfirmContent> <PositionPreview /> {alertMessage} - </Styled.PreviewAndConfirmContent> + </$PreviewAndConfirmContent> ) : ( - <Styled.MobileLayout> - <Styled.OrderbookScrollArea scrollBehavior="snapToCenterUnlessHovered"> - <Styled.Orderbook hideHeader /> - </Styled.OrderbookScrollArea> + <$MobileLayout> + <$OrderbookScrollArea scrollBehavior="snapToCenterUnlessHovered"> + <$Orderbook hideHeader /> + </$OrderbookScrollArea> - <Styled.Right> + <$Right> <PositionPreview showNarrowVariation /> {inputs} - </Styled.Right> - </Styled.MobileLayout> + </$Right> + </$MobileLayout> )} - <Styled.Footer> + <$Footer> {size != null && ( - <Styled.ButtonRow> + <$ButtonRow> <Button type={ButtonType.Reset} action={ButtonAction.Reset} @@ -284,11 +286,10 @@ export const ClosePositionForm = ({ > {stringGetter({ key: STRING_KEYS.CLEAR })} </Button> - </Styled.ButtonRow> + </$ButtonRow> )} <PlaceOrderButtonAndReceipt - isLoading={isClosingPosition} hasValidationErrors={hasInputErrors} actionStringKey={inputAlert?.actionStringKey} validationErrorString={alertContent} @@ -300,14 +301,11 @@ export const ClosePositionForm = ({ buttonAction: ButtonAction.Destroy, }} /> - </Styled.Footer> - </Styled.ClosePositionForm> + </$Footer> + </$ClosePositionForm> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.ClosePositionForm = styled.form` +const $ClosePositionForm = styled.form` --form-rowGap: 1.25rem; ${layoutMixins.expandingColumnWithFooter} @@ -330,12 +328,12 @@ Styled.ClosePositionForm = styled.form` } `; -Styled.PreviewAndConfirmContent = styled.div` +const $PreviewAndConfirmContent = styled.div` ${layoutMixins.flexColumn} gap: var(--form-input-gap); `; -Styled.MobileLayout = styled.div` +const $MobileLayout = styled.div` height: 0; // Apply dialog's top/left/right padding to inner scroll areas min-height: calc(100% + var(--dialog-content-paddingTop) + var(--dialog-content-paddingBottom)); @@ -347,7 +345,7 @@ Styled.MobileLayout = styled.div` gap: var(--form-input-gap); `; -Styled.OrderbookScrollArea = styled.div<{ +const $OrderbookScrollArea = styled.div<{ scrollBehavior: OrderbookScrollBehavior; }>` ${layoutMixins.stickyLeft} @@ -372,12 +370,12 @@ Styled.OrderbookScrollArea = styled.div<{ padding-bottom: var(--form-rowGap); `; -Styled.Orderbook = styled(Orderbook)` +const $Orderbook = styled(Orderbook)` min-height: 100%; --tableCell-padding: 0.5em 1em; `; -Styled.Right = styled.div` +const $Right = styled.div` height: 0; min-height: 100%; ${layoutMixins.scrollArea} @@ -390,11 +388,11 @@ Styled.Right = styled.div` gap: 1rem; `; -Styled.FormInput = styled(FormInput)` +const $FormInput = styled(FormInput)` width: 100%; `; -Styled.ToggleGroup = styled(ToggleGroup)` +const $ToggleGroup = styled(ToggleGroup)` ${formMixins.inputToggleGroup} @media ${breakpoints.mobile} { @@ -404,7 +402,7 @@ Styled.ToggleGroup = styled(ToggleGroup)` } `; -Styled.Footer = styled.footer` +const $Footer = styled.footer` ${layoutMixins.stickyFooter} backdrop-filter: none; @@ -413,12 +411,12 @@ Styled.Footer = styled.footer` margin-top: auto; `; -Styled.ButtonRow = styled.div` +const $ButtonRow = styled.div` ${layoutMixins.row} justify-self: end; padding: 0.5rem 0 0.5rem 0; `; -Styled.InputsColumn = styled.div` +const $InputsColumn = styled.div` ${formMixins.inputsColumn} `; diff --git a/src/views/forms/NewMarketForm/NewMarketPreviewStep.tsx b/src/views/forms/NewMarketForm/NewMarketPreviewStep.tsx index e57b31e6a..ead001ff5 100644 --- a/src/views/forms/NewMarketForm/NewMarketPreviewStep.tsx +++ b/src/views/forms/NewMarketForm/NewMarketPreviewStep.tsx @@ -1,9 +1,11 @@ -import { FormEvent, useCallback, useMemo, useState } from 'react'; -import styled, { AnyStyledComponent } from 'styled-components'; -import { useDispatch } from 'react-redux'; -import Long from 'long'; -import { encodeJson } from '@dydxprotocol/v4-client-js'; +import { FormEvent, useMemo, useState } from 'react'; + import type { IndexedTx } from '@cosmjs/stargate'; +import { encodeJson } from '@dydxprotocol/v4-client-js'; +import { PerpetualMarketType } from '@dydxprotocol/v4-client-js/build/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/perpetuals/perpetual'; +import Long from 'long'; +import { useDispatch } from 'react-redux'; +import styled from 'styled-components'; import { AlertType } from '@/constants/alerts'; import { ButtonAction, ButtonSize, ButtonType } from '@/constants/buttons'; @@ -11,17 +13,15 @@ import { DialogTypes } from '@/constants/dialogs'; import { STRING_KEYS } from '@/constants/localization'; import { isMainnet } from '@/constants/networks'; import { NumberSign, TOKEN_DECIMALS } from '@/constants/numbers'; -import type { PotentialMarketItem } from '@/constants/potentialMarkets'; - -import { - useAccountBalance, - useGovernanceVariables, - useStringGetter, - useSubaccount, - useTokenConfigs, - useURLConfigs, -} from '@/hooks'; +import type { NewMarketProposal } from '@/constants/potentialMarkets'; + +import { useAccountBalance } from '@/hooks/useAccountBalance'; +import { useGovernanceVariables } from '@/hooks/useGovernanceVariables'; import { usePotentialMarkets } from '@/hooks/usePotentialMarkets'; +import { useStringGetter } from '@/hooks/useStringGetter'; +import { useSubaccount } from '@/hooks/useSubaccount'; +import { useTokenConfigs } from '@/hooks/useTokenConfigs'; +import { useURLConfigs } from '@/hooks/useURLConfigs'; import { formMixins } from '@/styles/formMixins'; import { layoutMixins } from '@/styles/layoutMixins'; @@ -41,9 +41,10 @@ import { openDialog } from '@/state/dialogs'; import { MustBigNumber } from '@/lib/numbers'; import { log } from '@/lib/telemetry'; +import { testFlags } from '@/lib/testFlags'; type NewMarketPreviewStepProps = { - assetData: PotentialMarketItem; + assetData: NewMarketProposal; clobPairId: number; liquidityTier: number; onBack: () => void; @@ -64,7 +65,7 @@ export const NewMarketPreviewStep = ({ const stringGetter = useStringGetter(); const { chainTokenDecimals, chainTokenLabel } = useTokenConfigs(); const [errorMessage, setErrorMessage] = useState(); - const { exchangeConfigs, liquidityTiers } = usePotentialMarkets(); + const { liquidityTiers } = usePotentialMarkets(); const { submitNewMarketProposal } = useSubaccount(); const { newMarketProposal } = useGovernanceVariables(); const { newMarketProposalLearnMore } = useURLConfigs(); @@ -74,11 +75,24 @@ export const NewMarketPreviewStep = ({ const initialDepositAmountDecimals = isMainnet ? 0 : chainTokenDecimals; const initialDepositAmount = initialDepositAmountBN.toFixed(initialDepositAmountDecimals); const [hasAcceptedTerms, setHasAcceptedTerms] = useState(false); + const [isLoading, setIsLoading] = useState(false); const { label, initialMarginFraction, maintenanceMarginFraction, impactNotional } = liquidityTiers[liquidityTier as unknown as keyof typeof liquidityTiers]; - const ticker = `${assetData.baseAsset}-USD`; + const { params, meta } = assetData ?? {}; + const { + ticker, + priceExponent, + marketType, + minExchanges, + minPriceChange, + exchangeConfigJson, + atomicResolution, + quantumConversionExponent, + stepBaseQuantums, + subticksPerTick, + } = params ?? {}; const alertMessage = useMemo(() => { if (errorMessage) { @@ -106,7 +120,7 @@ export const NewMarketPreviewStep = ({ const isDisabled = alertMessage !== null; return ( - <Styled.Form + <$Form onSubmit={async (e: FormEvent<HTMLFormElement>) => { e.preventDefault(); @@ -120,23 +134,30 @@ export const NewMarketPreviewStep = ({ }) ); } else { + setIsLoading(true); setErrorMessage(undefined); try { const tx = await submitNewMarketProposal({ id: clobPairId, ticker, - priceExponent: assetData.priceExponent, - minPriceChange: assetData.minPriceChangePpm, - minExchanges: assetData.minExchanges, + priceExponent, + minPriceChange, + minExchanges, exchangeConfigJson: JSON.stringify({ - exchanges: exchangeConfigs?.[assetData.baseAsset], + exchanges: exchangeConfigJson, }), - atomicResolution: assetData.atomicResolution, - liquidityTier: liquidityTier, - quantumConversionExponent: assetData.quantumConversionExponent, - stepBaseQuantums: Long.fromNumber(assetData.stepBaseQuantum), - subticksPerTick: assetData.subticksPerTick, + atomicResolution, + liquidityTier, + quantumConversionExponent, + // @ts-ignore - marketType is not required until v5 + marketType: testFlags.withNewMarketType + ? marketType === 'PERPETUAL_MARKET_TYPE_ISOLATED' + ? PerpetualMarketType.PERPETUAL_MARKET_TYPE_ISOLATED + : PerpetualMarketType.PERPETUAL_MARKET_TYPE_CROSS + : undefined, + stepBaseQuantums: Long.fromNumber(stepBaseQuantums), + subticksPerTick, delayBlocks: newMarketProposal.delayBlocks, }); @@ -156,29 +177,31 @@ export const NewMarketPreviewStep = ({ } catch (error) { log('NewMarketPreviewForm/submitNewMarketProposal', error); setErrorMessage(error.message); + } finally { + setIsLoading(false); } } }} > <h2> {stringGetter({ key: STRING_KEYS.CONFIRM_NEW_MARKET_PROPOSAL })} - <Styled.Balance> + <$Balance> {stringGetter({ key: STRING_KEYS.BALANCE })}:{' '} <Output type={OutputType.Number} value={nativeTokenBalance} fractionDigits={TOKEN_DECIMALS} - slotRight={<Styled.Tag>{chainTokenLabel}</Styled.Tag>} + slotRight={<$Tag>{chainTokenLabel}</$Tag>} /> - </Styled.Balance> + </$Balance> </h2> - <Styled.FormInput + <$FormInput disabled label={stringGetter({ key: STRING_KEYS.MARKET })} type={InputType.Text} value={ticker} /> - <Styled.WithDetailsReceipt + <$WithDetailsReceipt side="bottom" detailItems={[ { @@ -208,15 +231,15 @@ export const NewMarketPreviewStep = ({ }, ]} > - <Styled.FormInput + <$FormInput disabled label={stringGetter({ key: STRING_KEYS.LIQUIDITY_TIER })} type={InputType.Text} value={label} /> - </Styled.WithDetailsReceipt> + </$WithDetailsReceipt> - <Styled.WithDetailsReceipt + <$WithDetailsReceipt detailItems={[ { key: 'reference-price', @@ -225,7 +248,7 @@ export const NewMarketPreviewStep = ({ value: ( <Output type={OutputType.Fiat} - value={assetData.referencePrice} + value={meta.referencePrice} fractionDigits={tickSizeDecimals} /> ), @@ -234,7 +257,7 @@ export const NewMarketPreviewStep = ({ key: 'message-details', label: stringGetter({ key: STRING_KEYS.MESSAGE_DETAILS }), value: ( - <Styled.Button + <$Button action={ButtonAction.Navigation} size={ButtonSize.Small} onClick={() => @@ -247,7 +270,7 @@ export const NewMarketPreviewStep = ({ } > {stringGetter({ key: STRING_KEYS.VIEW_DETAILS })} → - </Styled.Button> + </$Button> ), }, { @@ -265,7 +288,7 @@ export const NewMarketPreviewStep = ({ slotRight={ <> {'+ '} - <Styled.Icon + <$Icon $hasError={nativeTokenBalance?.lt(initialDepositAmountBN)} iconName={ nativeTokenBalance?.gt(initialDepositAmountBN) @@ -300,39 +323,42 @@ export const NewMarketPreviewStep = ({ ]} > <div /> - </Styled.WithDetailsReceipt> + </$WithDetailsReceipt> {alertMessage && ( <AlertMessage type={alertMessage.type}>{alertMessage.message} </AlertMessage> )} - <Styled.ButtonRow> + <$ButtonRow> <Button onClick={onBack}>{stringGetter({ key: STRING_KEYS.BACK })}</Button> - <Button type={ButtonType.Submit} action={ButtonAction.Primary} state={{ isDisabled }}> + <Button + type={ButtonType.Submit} + action={ButtonAction.Primary} + state={{ isDisabled, isLoading }} + > {hasAcceptedTerms ? stringGetter({ key: STRING_KEYS.PROPOSE_NEW_MARKET }) : stringGetter({ key: STRING_KEYS.ACKNOWLEDGE_TERMS })} </Button> - </Styled.ButtonRow> - <Styled.Disclaimer> - {stringGetter({ - key: STRING_KEYS.PROPOSAL_DISCLAIMER_1, - params: { - NUM_TOKENS_REQUIRED: initialDepositAmount, - NATIVE_TOKEN_DENOM: chainTokenLabel, - HERE: ( - <Styled.Link href={newMarketProposalLearnMore}> - {stringGetter({ key: STRING_KEYS.HERE })} - </Styled.Link> - ), - }, - })} - </Styled.Disclaimer> - </Styled.Form> + </$ButtonRow> + <$DisclaimerContainer> + <$Disclaimer> + {stringGetter({ + key: STRING_KEYS.PROPOSAL_DISCLAIMER_1, + params: { + NUM_TOKENS_REQUIRED: initialDepositAmount, + NATIVE_TOKEN_DENOM: chainTokenLabel, + HERE: ( + <$Link href={newMarketProposalLearnMore}> + {stringGetter({ key: STRING_KEYS.HERE })} + </$Link> + ), + }, + })} + </$Disclaimer> + </$DisclaimerContainer> + </$Form> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.Form = styled.form` +const $Form = styled.form` ${formMixins.transfersForm} ${layoutMixins.stickyArea0} --stickyArea0-background: transparent; @@ -346,7 +372,7 @@ Styled.Form = styled.form` } `; -Styled.Balance = styled.span` +const $Balance = styled.span` ${layoutMixins.inlineRow} font: var(--font-small-book); margin-top: 0.125rem; @@ -356,35 +382,40 @@ Styled.Balance = styled.span` } `; -Styled.Tag = styled(Tag)` +const $Tag = styled(Tag)` margin-left: 0.5ch; `; -Styled.FormInput = styled(FormInput)` +const $FormInput = styled(FormInput)` input { font-size: 1rem; } `; -Styled.Icon = styled(Icon)<{ $hasError?: boolean }>` +const $Icon = styled(Icon)<{ $hasError?: boolean }>` margin-left: 0.5ch; ${({ $hasError }) => ($hasError ? 'color: var(--color-error);' : 'color: var(--color-success);')} `; -Styled.WithDetailsReceipt = styled(WithDetailsReceipt)` +const $WithDetailsReceipt = styled(WithDetailsReceipt)` --details-item-fontSize: 1rem; `; -Styled.CheckboxContainer = styled.div` +const $CheckboxContainer = styled.div` display: flex; flex-direction: row; padding: 1rem; align-items: center; `; -Styled.Disclaimer = styled.div<{ textAlign?: string }>` - font: var(--font-small); +const $DisclaimerContainer = styled.div` + min-width: 100%; + width: min-content; +`; + +const $Disclaimer = styled.div<{ textAlign?: string }>` + font: var(--font-small-book); color: var(--color-text-0); text-align: center; margin-left: 0.5ch; @@ -392,18 +423,19 @@ Styled.Disclaimer = styled.div<{ textAlign?: string }>` ${({ textAlign }) => textAlign && `text-align: ${textAlign};`} `; -Styled.ButtonRow = styled.div` +const $ButtonRow = styled.div` display: grid; grid-template-columns: 1fr 2fr; gap: 1rem; width: 100%; `; -Styled.Button = styled(Button)` +const $Button = styled(Button)` --button-padding: 0; + --button-height: auto; `; -Styled.Link = styled(Link)` +const $Link = styled(Link)` --link-color: var(--color-accent); display: inline; `; diff --git a/src/views/forms/NewMarketForm/NewMarketSelectionStep.tsx b/src/views/forms/NewMarketForm/NewMarketSelectionStep.tsx index c3ffda654..95783743b 100644 --- a/src/views/forms/NewMarketForm/NewMarketSelectionStep.tsx +++ b/src/views/forms/NewMarketForm/NewMarketSelectionStep.tsx @@ -1,29 +1,27 @@ import { FormEvent, useEffect, useMemo, useState } from 'react'; -import styled, { AnyStyledComponent } from 'styled-components'; -import { Root, Item } from '@radix-ui/react-radio-group'; + +import { Item, Root } from '@radix-ui/react-radio-group'; import { shallowEqual, useDispatch, useSelector } from 'react-redux'; +import styled from 'styled-components'; import { OnboardingState } from '@/constants/account'; import { AlertType } from '@/constants/alerts'; -import { ButtonAction, ButtonShape, ButtonSize, ButtonType } from '@/constants/buttons'; +import { ButtonAction, ButtonSize, ButtonType } from '@/constants/buttons'; import { DialogTypes } from '@/constants/dialogs'; import { STRING_KEYS } from '@/constants/localization'; -import { isMainnet } from '@/constants/networks'; +import { isDev, isMainnet } from '@/constants/networks'; import { TOKEN_DECIMALS } from '@/constants/numbers'; - import { NUM_ORACLES_TO_QUALIFY_AS_SAFE, - type PotentialMarketItem, + type NewMarketProposal, } from '@/constants/potentialMarkets'; -import { - useAccountBalance, - useBreakpoints, - useGovernanceVariables, - useStringGetter, - useTokenConfigs, -} from '@/hooks'; +import { useAccountBalance } from '@/hooks/useAccountBalance'; +import { useBreakpoints } from '@/hooks/useBreakpoints'; +import { useGovernanceVariables } from '@/hooks/useGovernanceVariables'; import { usePotentialMarkets } from '@/hooks/usePotentialMarkets'; +import { useStringGetter } from '@/hooks/useStringGetter'; +import { useTokenConfigs } from '@/hooks/useTokenConfigs'; import { breakpoints } from '@/styles'; import { formMixins } from '@/styles/formMixins'; @@ -32,12 +30,10 @@ import { layoutMixins } from '@/styles/layoutMixins'; import { AlertMessage } from '@/components/AlertMessage'; import { Button } from '@/components/Button'; import { Details } from '@/components/Details'; -import { Icon, IconName } from '@/components/Icon'; import { Output, OutputType } from '@/components/Output'; -import { Tag } from '@/components/Tag'; import { SearchSelectMenu } from '@/components/SearchSelectMenu'; +import { Tag } from '@/components/Tag'; import { WithReceipt } from '@/components/WithReceipt'; - import { OnboardingTriggerButton } from '@/views/dialogs/OnboardingTriggerButton'; import { getOnboardingState } from '@/state/accountSelectors'; @@ -48,13 +44,14 @@ import { isTruthy } from '@/lib/isTruthy'; import { MustBigNumber } from '@/lib/numbers'; type NewMarketSelectionStepProps = { - assetToAdd?: PotentialMarketItem; + assetToAdd?: NewMarketProposal; clobPairId?: number; - setAssetToAdd: (assetToAdd?: PotentialMarketItem) => void; + setAssetToAdd: (assetToAdd?: NewMarketProposal) => void; onConfirmMarket: () => void; liquidityTier?: number; setLiquidityTier: (liquidityTier?: number) => void; tickSizeDecimals: number; + tickersFromProposals: Set<string>; }; export const NewMarketSelectionStep = ({ @@ -65,6 +62,7 @@ export const NewMarketSelectionStep = ({ liquidityTier, setLiquidityTier, tickSizeDecimals, + tickersFromProposals, }: NewMarketSelectionStepProps) => { const dispatch = useDispatch(); const { nativeTokenBalance } = useAccountBalance(); @@ -73,7 +71,7 @@ export const NewMarketSelectionStep = ({ const { isMobile } = useBreakpoints(); const marketIds = useSelector(getMarketIds, shallowEqual); const { chainTokenDecimals, chainTokenLabel } = useTokenConfigs(); - const { potentialMarkets, exchangeConfigs, liquidityTiers } = usePotentialMarkets(); + const { potentialMarkets, liquidityTiers } = usePotentialMarkets(); const stringGetter = useStringGetter(); const { newMarketProposal } = useGovernanceVariables(); const initialDepositAmountBN = MustBigNumber(newMarketProposal.initialDepositAmount).div( @@ -82,8 +80,7 @@ export const NewMarketSelectionStep = ({ const initialDepositAmountDecimals = isMainnet ? 0 : chainTokenDecimals; const initialDepositAmount = initialDepositAmountBN.toFixed(initialDepositAmountDecimals); - const [tempLiquidityTier, setTempLiquidityTier] = useState<number>(); - const [canModifyLiqTier, setCanModifyLiqTier] = useState(false); + const [tempLiquidityTier, setTempLiquidityTier] = useState<string>(); const alertMessage = useMemo(() => { if (nativeTokenBalance.lt(initialDepositAmountBN)) { @@ -104,43 +101,50 @@ export const NewMarketSelectionStep = ({ useEffect(() => { if (assetToAdd) { - setTempLiquidityTier(assetToAdd.liquidityTier); - setLiquidityTier(assetToAdd.liquidityTier); + setTempLiquidityTier('' + assetToAdd.params.liquidityTier); + setLiquidityTier(assetToAdd.params.liquidityTier); } }, [assetToAdd]); const filteredPotentialMarkets = useMemo(() => { return potentialMarkets?.filter( - ({ baseAsset, numOracles }) => - exchangeConfigs?.[baseAsset] !== undefined && - Number(numOracles) >= NUM_ORACLES_TO_QUALIFY_AS_SAFE && - !marketIds.includes(`${baseAsset}-USD`) + ({ params: { ticker, exchangeConfigJson, marketType }, meta }) => { + if (marketIds.includes(ticker)) { + return false; + } + + // Disable Isolated markets if the user is not on Staging or Local deployment + if (marketType === 'PERPETUAL_MARKET_TYPE_ISOLATED') { + return isDev && exchangeConfigJson.length > 0; + } + + if (exchangeConfigJson.length >= NUM_ORACLES_TO_QUALIFY_AS_SAFE) { + return true; + } + + return false; + } ); - }, [exchangeConfigs, potentialMarkets, marketIds]); + }, [potentialMarkets, marketIds]); return ( - <Styled.Form + <$Form onSubmit={(e: FormEvent<HTMLFormElement>) => { e.preventDefault(); - if (canModifyLiqTier) { - setLiquidityTier(tempLiquidityTier); - setCanModifyLiqTier(false); - } else { - onConfirmMarket(); - } + onConfirmMarket(); }} > <h2> {stringGetter({ key: STRING_KEYS.ADD_A_MARKET })} - <Styled.Balance> + <$Balance> {stringGetter({ key: STRING_KEYS.BALANCE })}:{' '} <Output type={OutputType.Number} value={nativeTokenBalance} fractionDigits={TOKEN_DECIMALS} - slotRight={<Styled.Tag>{chainTokenLabel}</Styled.Tag>} + slotRight={<$Tag>{chainTokenLabel}</$Tag>} /> - </Styled.Balance> + </$Balance> </h2> <SearchSelectMenu items={[ @@ -148,10 +152,13 @@ export const NewMarketSelectionStep = ({ group: 'markets', groupLabel: stringGetter({ key: STRING_KEYS.MARKETS }), items: - filteredPotentialMarkets?.map((potentialMarket: PotentialMarketItem) => ({ + filteredPotentialMarkets?.map((potentialMarket: NewMarketProposal) => ({ value: potentialMarket.baseAsset, - label: potentialMarket?.assetName ?? potentialMarket.baseAsset, - tag: `${potentialMarket.baseAsset}-USD`, + label: potentialMarket.meta.assetName, + tag: potentialMarket.params.ticker, + slotAfter: tickersFromProposals.has(potentialMarket.params.ticker) && ( + <Tag isHighlighted>{stringGetter({ key: STRING_KEYS.VOTING_LIVE })}</Tag> + ), onSelect: () => { setAssetToAdd(potentialMarket); }, @@ -161,9 +168,9 @@ export const NewMarketSelectionStep = ({ label={stringGetter({ key: STRING_KEYS.MARKETS })} > {assetToAdd ? ( - <Styled.SelectedAsset> - {assetToAdd?.assetName ?? assetToAdd.baseAsset} <Tag>{assetToAdd?.baseAsset}-USD</Tag> - </Styled.SelectedAsset> + <$SelectedAsset> + {assetToAdd.meta.assetName} <Tag>{assetToAdd.params.ticker}</Tag> + </$SelectedAsset> ) : ( `${stringGetter({ key: STRING_KEYS.EG })} "BTC-USD"` )} @@ -172,62 +179,28 @@ export const NewMarketSelectionStep = ({ <> <div>{stringGetter({ key: STRING_KEYS.POPULATED_DETAILS })}</div> <div> - <Styled.Root value={tempLiquidityTier} onValueChange={setTempLiquidityTier}> - <Styled.Header> - {stringGetter({ key: STRING_KEYS.LIQUIDITY_TIER })} - <Styled.ButtonRow> - <Button - shape={ButtonShape.Pill} - onClick={() => { - if (canModifyLiqTier) { - setTempLiquidityTier(liquidityTier); - } - setCanModifyLiqTier(!canModifyLiqTier); - }} - > - {canModifyLiqTier ? ( - stringGetter({ key: STRING_KEYS.CANCEL }) - ) : ( - <> - {stringGetter({ key: STRING_KEYS.MODIFY })}{' '} - <Icon iconName={IconName.Pencil} /> - </> - )} - </Button> - {canModifyLiqTier && ( - <Button - shape={ButtonShape.Pill} - action={ButtonAction.Primary} - onClick={() => { - setLiquidityTier(tempLiquidityTier); - setCanModifyLiqTier(false); - }} - > - {stringGetter({ key: STRING_KEYS.SAVE })} - </Button> - )} - </Styled.ButtonRow> - </Styled.Header> + <$Root value={tempLiquidityTier} onValueChange={setTempLiquidityTier}> + <$Header>{stringGetter({ key: STRING_KEYS.LIQUIDITY_TIER })}</$Header> {Object.keys(liquidityTiers).map((tier) => { const { maintenanceMarginFraction, impactNotional, label, initialMarginFraction } = liquidityTiers[tier as unknown as keyof typeof liquidityTiers]; return ( - <Styled.LiquidityTierRadioButton + <$LiquidityTierRadioButton + disabled key={tier} - value={Number(tier)} - selected={Number(tier) === tempLiquidityTier} - disabled={!canModifyLiqTier} + value={tier} + selected={Number(tier) === Number(tempLiquidityTier)} > - <Styled.Header style={{ marginLeft: '1rem' }}> + <$Header style={{ marginLeft: '1rem' }}> {label} - {Number(tier) === assetToAdd?.liquidityTier && ( + {Number(tier) === assetToAdd?.params.liquidityTier && ( <Tag style={{ marginLeft: '0.5ch' }}> ✨ {stringGetter({ key: STRING_KEYS.RECOMMENDED })} </Tag> )} - </Styled.Header> - <Styled.Details + </$Header> + <$Details layout={isMobile ? 'grid' : 'rowColumns'} withSeparators={!isMobile} items={[ @@ -264,10 +237,10 @@ export const NewMarketSelectionStep = ({ }, ]} /> - </Styled.LiquidityTierRadioButton> + </$LiquidityTierRadioButton> ); })} - </Styled.Root> + </$Root> </div> </> )} @@ -276,7 +249,7 @@ export const NewMarketSelectionStep = ({ )} <WithReceipt slotReceipt={ - <Styled.ReceiptDetails + <$ReceiptDetails items={[ assetToAdd && { key: 'reference-price', @@ -285,7 +258,7 @@ export const NewMarketSelectionStep = ({ value: ( <Output type={OutputType.Fiat} - value={assetToAdd.referencePrice} + value={assetToAdd.meta?.referencePrice} fractionDigits={tickSizeDecimals} /> ), @@ -294,7 +267,7 @@ export const NewMarketSelectionStep = ({ key: 'message-details', label: stringGetter({ key: STRING_KEYS.MESSAGE_DETAILS }), value: ( - <Styled.Button + <$Button action={ButtonAction.Navigation} size={ButtonSize.Small} onClick={() => @@ -307,7 +280,7 @@ export const NewMarketSelectionStep = ({ } > {stringGetter({ key: STRING_KEYS.VIEW_DETAILS })} → - </Styled.Button> + </$Button> ), }, { @@ -319,12 +292,12 @@ export const NewMarketSelectionStep = ({ </span> ), value: ( - <Styled.Disclaimer> + <$Disclaimer> {stringGetter({ key: STRING_KEYS.OR_MORE, params: { NUMBER: ( - <Styled.Output + <$Output useGrouping type={OutputType.Number} value={initialDepositAmountBN} @@ -333,7 +306,7 @@ export const NewMarketSelectionStep = ({ ), }, })} - </Styled.Disclaimer> + </$Disclaimer> ), }, ].filter(isTruthy)} @@ -348,19 +321,14 @@ export const NewMarketSelectionStep = ({ state={{ isDisabled: !assetToAdd || !liquidityTier === undefined || !clobPairId }} action={ButtonAction.Primary} > - {canModifyLiqTier - ? stringGetter({ key: STRING_KEYS.SAVE }) - : stringGetter({ key: STRING_KEYS.PREVIEW_MARKET_PROPOSAL })} + {stringGetter({ key: STRING_KEYS.PREVIEW_MARKET_PROPOSAL })} </Button> )} </WithReceipt> - </Styled.Form> + </$Form> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.Form = styled.form` +const $Form = styled.form` ${formMixins.transfersForm} ${layoutMixins.stickyArea0} --stickyArea0-background: transparent; @@ -374,7 +342,7 @@ Styled.Form = styled.form` } `; -Styled.Balance = styled.span` +const $Balance = styled.span` ${layoutMixins.inlineRow} font: var(--font-small-book); margin-top: 0.125rem; @@ -384,20 +352,20 @@ Styled.Balance = styled.span` } `; -Styled.Tag = styled(Tag)` +const $Tag = styled(Tag)` margin-left: 0.5ch; `; -Styled.SelectedAsset = styled.span` +const $SelectedAsset = styled.span` color: var(--color-text-2); `; -Styled.Disclaimer = styled.div` +const $Disclaimer = styled.div` color: var(--color-text-0); margin-left: 0.5ch; `; -Styled.Header = styled.div` +const $Header = styled.div` display: flex; flex: 1; align-items: center; @@ -406,17 +374,7 @@ Styled.Header = styled.div` justify-content: space-between; `; -Styled.ButtonRow = styled.div` - display: flex; - flex-direction: row; - gap: 0.5rem; - - button { - min-width: 80px; - } -`; - -Styled.Root = styled(Root)` +const $Root = styled(Root)` display: flex; flex-direction: column; gap: 1rem; @@ -424,9 +382,9 @@ Styled.Root = styled(Root)` border-radius: 10px; border: 1px solid var(--color-layer-6); background-color: var(--color-layer-4); -`; +` as typeof Root; -Styled.LiquidityTierRadioButton = styled(Item)<{ selected?: boolean }>` +const $LiquidityTierRadioButton = styled(Item)<{ selected?: boolean }>` display: flex; flex-direction: column; border-radius: 0.625rem; @@ -434,10 +392,14 @@ Styled.LiquidityTierRadioButton = styled(Item)<{ selected?: boolean }>` padding: 1rem 0; font: var(--font-mini-book); + &:disabled { + cursor: default; + } + ${({ selected }) => selected && 'background-color: var(--color-layer-2)'} `; -Styled.Details = styled(Details)` +const $Details = styled(Details)` margin-top: 0.5rem; padding: 0; @@ -454,14 +416,15 @@ Styled.Details = styled(Details)` } `; -Styled.ReceiptDetails = styled(Details)` +const $ReceiptDetails = styled(Details)` padding: 0.375rem 0.75rem 0.25rem; `; -Styled.Output = styled(Output)` +const $Output = styled(Output)` display: inline-block; `; -Styled.Button = styled(Button)` +const $Button = styled(Button)` --button-padding: 0; + --button-height: auto; `; diff --git a/src/views/forms/NewMarketForm/NewMarketSuccessStep.tsx b/src/views/forms/NewMarketForm/NewMarketSuccessStep.tsx index 32fda4384..83314f958 100644 --- a/src/views/forms/NewMarketForm/NewMarketSuccessStep.tsx +++ b/src/views/forms/NewMarketForm/NewMarketSuccessStep.tsx @@ -1,8 +1,10 @@ -import styled, { AnyStyledComponent } from 'styled-components'; +import styled from 'styled-components'; import { ButtonAction, ButtonType } from '@/constants/buttons'; import { STRING_KEYS } from '@/constants/localization'; -import { useStringGetter } from '@/hooks'; + +import { useStringGetter } from '@/hooks/useStringGetter'; + import { LinkOutIcon } from '@/icons'; import { Button } from '@/components/Button'; @@ -16,25 +18,22 @@ export const NewMarketSuccessStep = ({ href }: NewMarketSuccessStepProps) => { const stringGetter = useStringGetter(); return ( - <Styled.ProposalSent> - <Styled.OuterCircle> - <Styled.InnerCircle> + <$ProposalSent> + <$OuterCircle> + <$InnerCircle> <Icon iconName={IconName.Check} /> - </Styled.InnerCircle> - </Styled.OuterCircle> + </$InnerCircle> + </$OuterCircle> <h2>{stringGetter({ key: STRING_KEYS.SUBMITTED_PROPOSAL })}</h2> <span>{stringGetter({ key: STRING_KEYS.PROPOSAL_SUBMISSION_SUCCESSFUL })}</span> <Button type={ButtonType.Link} href={href} action={ButtonAction.Primary}> {stringGetter({ key: STRING_KEYS.VIEW_PROPOSAL })} <LinkOutIcon /> </Button> - </Styled.ProposalSent> + </$ProposalSent> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.ProposalSent = styled.div` +const $ProposalSent = styled.div` text-align: center; display: flex; flex-direction: column; @@ -50,7 +49,7 @@ Styled.ProposalSent = styled.div` } `; -Styled.OuterCircle = styled.div` +const $OuterCircle = styled.div` width: 5.25rem; height: 5.25rem; min-width: 5.25rem; @@ -63,7 +62,7 @@ Styled.OuterCircle = styled.div` justify-content: center; `; -Styled.InnerCircle = styled.div` +const $InnerCircle = styled.div` width: 2rem; height: 2rem; min-width: 2rem; diff --git a/src/views/forms/NewMarketForm/index.tsx b/src/views/forms/NewMarketForm/index.tsx index 85604ce2a..918e43e7f 100644 --- a/src/views/forms/NewMarketForm/index.tsx +++ b/src/views/forms/NewMarketForm/index.tsx @@ -1,15 +1,18 @@ import { useMemo, useState } from 'react'; -import styled, { AnyStyledComponent } from 'styled-components'; + +import styled from 'styled-components'; import { TOKEN_DECIMALS } from '@/constants/numbers'; -import { type PotentialMarketItem } from '@/constants/potentialMarkets'; -import { useNextClobPairId, useURLConfigs } from '@/hooks'; +import { type NewMarketProposal } from '@/constants/potentialMarkets'; + +import { useNextClobPairId } from '@/hooks/useNextClobPairId'; import { usePotentialMarkets } from '@/hooks/usePotentialMarkets'; +import { useURLConfigs } from '@/hooks/useURLConfigs'; import { LoadingSpace } from '@/components/Loading/LoadingSpinner'; -import { NewMarketSelectionStep } from './NewMarketSelectionStep'; import { NewMarketPreviewStep } from './NewMarketPreviewStep'; +import { NewMarketSelectionStep } from './NewMarketSelectionStep'; import { NewMarketSuccessStep } from './NewMarketSuccessStep'; enum NewMarketFormStep { @@ -20,22 +23,22 @@ enum NewMarketFormStep { export const NewMarketForm = () => { const [step, setStep] = useState(NewMarketFormStep.SELECTION); - const [assetToAdd, setAssetToAdd] = useState<PotentialMarketItem>(); + const [assetToAdd, setAssetToAdd] = useState<NewMarketProposal>(); const [liquidityTier, setLiquidityTier] = useState<number>(); const [proposalTxHash, setProposalTxHash] = useState<string>(); const { mintscan: mintscanTxUrl } = useURLConfigs(); - const { nextAvailableClobPairId } = useNextClobPairId(); + const { nextAvailableClobPairId, tickersFromProposals } = useNextClobPairId(); const { hasPotentialMarketsData } = usePotentialMarkets(); const tickSizeDecimals = useMemo(() => { if (!assetToAdd) return TOKEN_DECIMALS; - const p = Math.floor(Math.log(Number(assetToAdd.referencePrice))); + const p = Math.floor(Math.log(Number(assetToAdd.meta.referencePrice))); return Math.abs(p - 3); }, [assetToAdd]); if (!hasPotentialMarketsData || !nextAvailableClobPairId) { - return <Styled.LoadingSpace id="new-market-form" />; + return <$LoadingSpace id="new-market-form" />; } if (NewMarketFormStep.SUCCESS === step && proposalTxHash) { @@ -69,12 +72,10 @@ export const NewMarketForm = () => { liquidityTier={liquidityTier} setLiquidityTier={setLiquidityTier} tickSizeDecimals={tickSizeDecimals} + tickersFromProposals={tickersFromProposals} /> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.LoadingSpace = styled(LoadingSpace)` +const $LoadingSpace = styled(LoadingSpace)` min-height: 18.75rem; `; diff --git a/src/views/forms/NobleDeposit.tsx b/src/views/forms/NobleDeposit.tsx index f62e2f7d9..f1de9a3ac 100644 --- a/src/views/forms/NobleDeposit.tsx +++ b/src/views/forms/NobleDeposit.tsx @@ -1,15 +1,18 @@ import { useState } from 'react'; -import styled, { type AnyStyledComponent, css } from 'styled-components'; -import { OpacityToken } from '@/constants/styles/base'; +import styled, { css } from 'styled-components'; + import { STRING_KEYS } from '@/constants/localization'; -import { layoutMixins } from '@/styles/layoutMixins'; +import { OpacityToken } from '@/constants/styles/base'; + +import { useAccounts } from '@/hooks/useAccounts'; +import { useStringGetter } from '@/hooks/useStringGetter'; -import { useAccounts, useStringGetter } from '@/hooks'; +import { layoutMixins } from '@/styles/layoutMixins'; +import { Checkbox } from '@/components/Checkbox'; import { CopyButton } from '@/components/CopyButton'; import { QrCode } from '@/components/QrCode'; -import { Checkbox } from '@/components/Checkbox'; import { TimeoutButton } from '@/components/TimeoutButton'; import { WithDetailsReceipt } from '@/components/WithDetailsReceipt'; import { WithReceipt } from '@/components/WithReceipt'; @@ -34,10 +37,11 @@ export const NobleDeposit = () => { hasAcknowledged && hasTimedout ? nobleAddress : stringGetter({ key: STRING_KEYS.ACKNOWLEDGE_TO_REVEAL }), + allowUserSelection: true, }, ]} > - <Styled.QrCode + <$QrCode hasLogo size={432} value={nobleAddress || ''} @@ -45,9 +49,9 @@ export const NobleDeposit = () => { /> </WithDetailsReceipt> - <Styled.WithReceipt + <$WithReceipt slotReceipt={ - <Styled.CheckboxContainer> + <$CheckboxContainer> <Checkbox checked={hasAcknowledged} onCheckedChange={setHasAcknowledged} @@ -56,7 +60,7 @@ export const NobleDeposit = () => { key: STRING_KEYS.NOBLE_ACKNOWLEDGEMENT, })} /> - </Styled.CheckboxContainer> + </$CheckboxContainer> } > <TimeoutButton @@ -68,24 +72,21 @@ export const NobleDeposit = () => { </CopyButton> } /> - </Styled.WithReceipt> + </$WithReceipt> </> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.WaitingSpan = styled.span` +const $WaitingSpan = styled.span` ${layoutMixins.row} gap: 1rem; color: var(--color-text-1); `; -Styled.WithReceipt = styled(WithReceipt)` +const $WithReceipt = styled(WithReceipt)` --withReceipt-backgroundColor: var(--color-layer-2); `; -Styled.QrCode = styled(QrCode)<{ blurred: boolean }>` +const $QrCode = styled(QrCode)<{ blurred: boolean }>` border-radius: 0.5em; ${({ blurred }) => @@ -95,12 +96,12 @@ Styled.QrCode = styled(QrCode)<{ blurred: boolean }>` `} `; -Styled.CheckboxContainer = styled.div` +const $CheckboxContainer = styled.div` padding: 1rem; color: var(--color-text-0); `; -Styled.CautionIconContainer = styled.div` +const $CautionIconContainer = styled.div` ${layoutMixins.stack} min-width: 2.5rem; height: 2.5rem; diff --git a/src/views/forms/SelectMarginModeForm.tsx b/src/views/forms/SelectMarginModeForm.tsx new file mode 100644 index 000000000..8149fab5c --- /dev/null +++ b/src/views/forms/SelectMarginModeForm.tsx @@ -0,0 +1,79 @@ +import { shallowEqual, useSelector } from 'react-redux'; +import styled from 'styled-components'; + +import { AbacusMarginMode, MARGIN_MODE_STRINGS, TradeInputField } from '@/constants/abacus'; +import { STRING_KEYS } from '@/constants/localization'; + +import { useStringGetter } from '@/hooks/useStringGetter'; + +import { formMixins } from '@/styles/formMixins'; + +import { Button } from '@/components/Button'; +import { RadioButtonCards } from '@/components/RadioButtonCards'; + +import { getInputTradeMarginMode } from '@/state/inputsSelectors'; + +import abacusStateManager from '@/lib/abacus'; + +export const SelectMarginModeForm = ({ + onChangeMarginMode, +}: { + onChangeMarginMode?: () => void; +}) => { + const marginMode = useSelector(getInputTradeMarginMode, shallowEqual); + const marginModeValue = marginMode?.rawValue; + + const stringGetter = useStringGetter(); + + const setMarginMode = (value: string) => { + abacusStateManager.setTradeValue({ + value, + field: TradeInputField.marginMode, + }); + onChangeMarginMode?.(); + }; + + return ( + <$Form> + <$RadioButtonCards + value={marginModeValue} + onValueChange={setMarginMode} + radioItems={[ + { + value: AbacusMarginMode.cross.rawValue, + label: stringGetter({ key: MARGIN_MODE_STRINGS[AbacusMarginMode.cross.rawValue] }), + body: ( + <$TertiarySpan> + {stringGetter({ key: STRING_KEYS.CROSS_MARGIN_DESCRIPTION })} + </$TertiarySpan> + ), + }, + { + value: AbacusMarginMode.isolated.rawValue, + label: stringGetter({ key: MARGIN_MODE_STRINGS[AbacusMarginMode.isolated.rawValue] }), + body: ( + <$TertiarySpan> + {stringGetter({ key: STRING_KEYS.ISOLATED_MARGIN_DESCRIPTION })} + </$TertiarySpan> + ), + }, + ]} + /> + </$Form> + ); +}; + +const $Form = styled.form` + ${formMixins.transfersForm} +`; +const $RadioButtonCards = styled(RadioButtonCards)` + padding: 0; + + --radio-button-cards-item-checked-backgroundColor: var(--color-layer-1); +`; +const $TertiarySpan = styled.span` + color: var(--color-text-0); +`; +const $Button = styled(Button)` + width: 100%; +`; diff --git a/src/views/forms/TradeForm.tsx b/src/views/forms/TradeForm.tsx index 3855f89dd..75c58ef0d 100644 --- a/src/views/forms/TradeForm.tsx +++ b/src/views/forms/TradeForm.tsx @@ -1,65 +1,79 @@ -import { type FormEvent, useState, Ref, useCallback } from 'react'; -import styled, { AnyStyledComponent, css } from 'styled-components'; -import { shallowEqual, useDispatch, useSelector } from 'react-redux'; -import type { NumberFormatValues, SourceInfo } from 'react-number-format'; +import { Ref, useCallback, useState, type FormEvent } from 'react'; import { OrderSide } from '@dydxprotocol/v4-client-js'; - -import { AlertType } from '@/constants/alerts'; +import type { NumberFormatValues, SourceInfo } from 'react-number-format'; +import { shallowEqual, useDispatch, useSelector } from 'react-redux'; +import styled, { css } from 'styled-components'; import { + ComplianceStatus, ErrorType, - type HumanReadablePlaceOrderPayload, - type Nullable, + MARGIN_MODE_STRINGS, TradeInputErrorAction, + TradeInputField, ValidationError, + type HumanReadablePlaceOrderPayload, + type Nullable, } from '@/constants/abacus'; - +import { AlertType } from '@/constants/alerts'; import { ButtonAction, ButtonShape, ButtonSize, ButtonType } from '@/constants/buttons'; -import { STRING_KEYS } from '@/constants/localization'; +import { DialogTypes, TradeBoxDialogTypes } from '@/constants/dialogs'; +import { STRING_KEYS, StringKey } from '@/constants/localization'; +import { NotificationType } from '@/constants/notifications'; import { USD_DECIMALS } from '@/constants/numbers'; import { InputErrorData, - TradeBoxKeys, MobilePlaceOrderSteps, ORDER_TYPE_STRINGS, + TradeBoxKeys, + TradeTypes, } from '@/constants/trade'; -import { breakpoints } from '@/styles'; -import { useStringGetter, useSubaccount } from '@/hooks'; +import { useBreakpoints } from '@/hooks/useBreakpoints'; +import { useComplianceState } from '@/hooks/useComplianceState'; +import { useNotifications } from '@/hooks/useNotifications'; import { useOnLastOrderIndexed } from '@/hooks/useOnLastOrderIndexed'; +import { useStringGetter } from '@/hooks/useStringGetter'; +import { useSubaccount } from '@/hooks/useSubaccount'; -import { layoutMixins } from '@/styles/layoutMixins'; +import { breakpoints } from '@/styles'; import { formMixins } from '@/styles/formMixins'; +import { layoutMixins } from '@/styles/layoutMixins'; import { AlertMessage } from '@/components/AlertMessage'; +import { AssetIcon } from '@/components/AssetIcon'; import { Button } from '@/components/Button'; import { FormInput } from '@/components/FormInput'; import { Icon, IconName } from '@/components/Icon'; +import { IconButton } from '@/components/IconButton'; import { InputType } from '@/components/Input'; +import { Output, OutputType } from '@/components/Output'; import { Tag } from '@/components/Tag'; import { ToggleButton } from '@/components/ToggleButton'; +import { ToggleGroup } from '@/components/ToggleGroup'; import { WithTooltip } from '@/components/WithTooltip'; - import { Orderbook } from '@/views/tables/Orderbook'; +import { openDialog, openDialogInTradeBox } from '@/state/dialogs'; import { setTradeFormInputs } from '@/state/inputs'; import { getCurrentInput, getInputTradeData, + getInputTradeOptions, getTradeFormInputs, useTradeFormData, } from '@/state/inputsSelectors'; -import { getCurrentMarketConfig } from '@/state/perpetualsSelectors'; +import { getCurrentMarketAssetId, getCurrentMarketConfig } from '@/state/perpetualsSelectors'; import abacusStateManager from '@/lib/abacus'; +import { testFlags } from '@/lib/testFlags'; import { getSelectedOrderSide, getSelectedTradeType, getTradeInputAlert } from '@/lib/tradeData'; import { AdvancedTradeOptions } from './TradeForm/AdvancedTradeOptions'; -import { TradeSizeInputs } from './TradeForm/TradeSizeInputs'; -import { TradeSideToggle } from './TradeForm/TradeSideToggle'; import { PlaceOrderButtonAndReceipt } from './TradeForm/PlaceOrderButtonAndReceipt'; import { PositionPreview } from './TradeForm/PositionPreview'; +import { TradeSideToggle } from './TradeForm/TradeSideToggle'; +import { TradeSizeInputs } from './TradeForm/TradeSizeInputs'; type TradeBoxInputConfig = { key: TradeBoxKeys; @@ -88,13 +102,14 @@ export const TradeForm = ({ onConfirm, className, }: ElementProps & StyleProps) => { - const [isPlacingOrder, setIsPlacingOrder] = useState(false); const [placeOrderError, setPlaceOrderError] = useState<string>(); const [showOrderbook, setShowOrderbook] = useState(false); const dispatch = useDispatch(); const stringGetter = useStringGetter(); const { placeOrder } = useSubaccount(); + const { isTablet } = useBreakpoints(); + const { complianceMessage, complianceStatus } = useComplianceState(); const { price, @@ -114,6 +129,7 @@ export const TradeForm = ({ } = useTradeFormData(); const currentInput = useSelector(getCurrentInput); + const currentAssetId = useSelector(getCurrentMarketAssetId); const { tickSizeDecimals, stepSizeDecimals } = useSelector(getCurrentMarketConfig, shallowEqual) || {}; @@ -122,11 +138,26 @@ export const TradeForm = ({ const currentTradeData = useSelector(getInputTradeData, shallowEqual); - const { side, type } = currentTradeData || {}; + const { side, type, marginMode, targetLeverage } = currentTradeData || {}; const selectedTradeType = getSelectedTradeType(type); const selectedOrderSide = getSelectedOrderSide(side); + const { typeOptions } = useSelector(getInputTradeOptions, shallowEqual) ?? {}; + + const allTradeTypeItems = (typeOptions?.toArray() ?? []).map(({ type, stringKey }) => ({ + value: type as TradeTypes, + label: stringGetter({ + key: stringKey as StringKey, + }), + slotBefore: <AssetIcon symbol={currentAssetId} />, + })); + + const onTradeTypeChange = (tradeType: TradeTypes) => { + abacusStateManager.clearTradeInputValues(); + abacusStateManager.setTradeValue({ value: tradeType, field: TradeInputField.type }); + }; + const needsAdvancedOptions = needsGoodUntil || timeInForceOptions || @@ -157,13 +188,22 @@ export const TradeForm = ({ tickSizeDecimals, }); - if (placeOrderError) { + const { getNotificationPreferenceForType } = useNotifications(); + const isErrorShownInOrderStatusToast = getNotificationPreferenceForType( + NotificationType.OrderStatus + ); + + if (placeOrderError && !isErrorShownInOrderStatusToast) { alertContent = placeOrderError; } else if (inputAlert) { - alertContent = inputAlert?.alertString; - alertType = inputAlert?.type; + alertContent = inputAlert.alertString; + alertType = inputAlert.type; } + const shouldPromptUserToPlaceLimitOrder = ['MARKET_ORDER_ERROR_ORDERBOOK_SLIPPAGE'].some( + (errorCode) => inputAlert?.code === errorCode + ); + const orderSideAction = { [OrderSide.BUY]: ButtonAction.Create, [OrderSide.SELL]: ButtonAction.Destroy, @@ -178,6 +218,7 @@ export const TradeForm = ({ break; } case MobilePlaceOrderSteps.PlacingOrder: + case MobilePlaceOrderSteps.PlaceOrderFailed: case MobilePlaceOrderSteps.Confirmation: { onConfirm?.(); break; @@ -192,9 +233,7 @@ export const TradeForm = ({ }; const onLastOrderIndexed = useCallback(() => { - if (!currentStep || currentStep === MobilePlaceOrderSteps.PlacingOrder) { - setIsPlacingOrder(false); - abacusStateManager.clearTradeInputValues({ shouldResetSize: true }); + if (currentStep === MobilePlaceOrderSteps.PlacingOrder) { setCurrentStep?.(MobilePlaceOrderSteps.Confirmation); } }, [currentStep]); @@ -203,22 +242,22 @@ export const TradeForm = ({ callback: onLastOrderIndexed, }); - const onPlaceOrder = async () => { + const onPlaceOrder = () => { setPlaceOrderError(undefined); - setIsPlacingOrder(true); - await placeOrder({ + placeOrder({ onError: (errorParams?: { errorStringKey?: Nullable<string> }) => { setPlaceOrderError( stringGetter({ key: errorParams?.errorStringKey || STRING_KEYS.SOMETHING_WENT_WRONG }) ); - - setIsPlacingOrder(false); + setCurrentStep?.(MobilePlaceOrderSteps.PlaceOrderFailed); }, onSuccess: (placeOrderPayload?: Nullable<HumanReadablePlaceOrderPayload>) => { setUnIndexedClientId(placeOrderPayload?.clientId); }, }); + + abacusStateManager.clearTradeInputValues({ shouldResetSize: true }); }; if (needsTriggerPrice) { @@ -278,7 +317,7 @@ export const TradeForm = ({ } return ( - <Styled.TradeForm onSubmit={onSubmit} className={className}> + <$TradeForm onSubmit={onSubmit} className={className}> {currentStep && currentStep !== MobilePlaceOrderSteps.EditOrder ? ( <> <PositionPreview /> @@ -286,26 +325,67 @@ export const TradeForm = ({ </> ) : ( <> - <Styled.TopActionsRow> - <Styled.OrderbookButtons> - <Styled.OrderbookButton - slotRight={<Icon iconName={IconName.Caret} />} - onPressedChange={setShowOrderbook} - isPressed={showOrderbook} - hidePressedStyle - > - {!showOrderbook && stringGetter({ key: STRING_KEYS.ORDERBOOK })} - </Styled.OrderbookButton> - {/* TODO[TRCL-1411]: add orderbook scale functionality */} - </Styled.OrderbookButtons> - - <TradeSideToggle /> - </Styled.TopActionsRow> - - <Styled.OrderbookAndInputs showOrderbook={showOrderbook}> - {showOrderbook && <Styled.Orderbook maxRowsPerSide={5} selectionBehavior="replace" />} - - <Styled.InputsColumn> + <$TopActionsRow> + {isTablet && ( + <> + <$OrderbookButtons> + <$OrderbookButton + slotRight={<Icon iconName={IconName.Caret} />} + onPressedChange={setShowOrderbook} + isPressed={showOrderbook} + > + {!showOrderbook && stringGetter({ key: STRING_KEYS.ORDERBOOK })} + </$OrderbookButton> + {/* TODO[TRCL-1411]: add orderbook scale functionality */} + </$OrderbookButtons> + + <$ToggleGroup + items={allTradeTypeItems} + value={selectedTradeType} + onValueChange={onTradeTypeChange} + /> + </> + )} + + {!isTablet && ( + <> + {testFlags.isolatedMargin && ( + <$MarginAndLeverageButtons> + <Button + onClick={() => { + if (isTablet) { + dispatch(openDialog({ type: DialogTypes.SelectMarginMode })); + } else { + dispatch( + openDialogInTradeBox({ type: TradeBoxDialogTypes.SelectMarginMode }) + ); + } + }} + > + {marginMode && + stringGetter({ + key: MARGIN_MODE_STRINGS[marginMode.rawValue], + })} + </Button> + + <Button + onClick={() => { + dispatch(openDialog({ type: DialogTypes.AdjustTargetLeverage })); + }} + > + <Output type={OutputType.Multiple} value={targetLeverage} /> + </Button> + </$MarginAndLeverageButtons> + )} + <TradeSideToggle /> + </> + )} + </$TopActionsRow> + + <$OrderbookAndInputs showOrderbook={showOrderbook}> + {isTablet && showOrderbook && <$Orderbook maxRowsPerSide={5} />} + + <$InputsColumn> {tradeFormInputs.map( ({ key, inputType, label, onChange, validationConfig, value, decimals }) => ( <FormInput @@ -325,15 +405,36 @@ export const TradeForm = ({ {needsAdvancedOptions && <AdvancedTradeOptions />} - {alertContent && <AlertMessage type={alertType}>{alertContent}</AlertMessage>} - </Styled.InputsColumn> - </Styled.OrderbookAndInputs> + {complianceStatus === ComplianceStatus.CLOSE_ONLY && ( + <AlertMessage type={AlertType.Error}> + <$Message>{complianceMessage}</$Message> + </AlertMessage> + )} + + {alertContent && ( + <AlertMessage type={alertType}> + <$Message> + {alertContent} + {shouldPromptUserToPlaceLimitOrder && ( + <$IconButton + iconName={IconName.Arrow} + shape={ButtonShape.Circle} + action={ButtonAction.Navigation} + size={ButtonSize.XSmall} + onClick={() => onTradeTypeChange(TradeTypes.LIMIT)} + /> + )} + </$Message> + </AlertMessage> + )} + </$InputsColumn> + </$OrderbookAndInputs> </> )} - <Styled.Footer> + <$Footer> {isInputFilled && (!currentStep || currentStep === MobilePlaceOrderSteps.EditOrder) && ( - <Styled.ButtonRow> + <$ButtonRow> <Button type={ButtonType.Reset} action={ButtonAction.Reset} @@ -343,10 +444,9 @@ export const TradeForm = ({ > {stringGetter({ key: STRING_KEYS.CLEAR })} </Button> - </Styled.ButtonRow> + </$ButtonRow> )} <PlaceOrderButtonAndReceipt - isLoading={isPlacingOrder} hasValidationErrors={hasInputErrors} actionStringKey={inputAlert?.actionStringKey} validationErrorString={alertContent} @@ -359,14 +459,12 @@ export const TradeForm = ({ buttonAction: orderSideAction, }} /> - </Styled.Footer> - </Styled.TradeForm> + </$Footer> + </$TradeForm> ); }; -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.TradeForm = styled.form` +const $TradeForm = styled.form` /* Params */ --tradeBox-content-paddingTop: ; --tradeBox-content-paddingRight: ; @@ -401,8 +499,16 @@ Styled.TradeForm = styled.form` } } `; +const $MarginAndLeverageButtons = styled.div` + ${layoutMixins.inlineRow} + gap: 0.5rem; + margin-right: 0.5rem; -Styled.TopActionsRow = styled.div` + button { + width: 100%; + } +`; +const $TopActionsRow = styled.div` display: grid; grid-auto-flow: column; @@ -411,8 +517,7 @@ Styled.TopActionsRow = styled.div` gap: var(--form-input-gap); } `; - -Styled.OrderbookButtons = styled.div` +const $OrderbookButtons = styled.div` ${layoutMixins.inlineRow} justify-content: space-between; gap: 0.25rem; @@ -421,8 +526,7 @@ Styled.OrderbookButtons = styled.div` display: none; } `; - -Styled.OrderbookButton = styled(ToggleButton)` +const $OrderbookButton = styled(ToggleButton)` --button-toggle-off-textColor: var(--color-text-1); --button-toggle-off-backgroundColor: transparent; @@ -446,8 +550,7 @@ Styled.OrderbookButton = styled(ToggleButton)` } } `; - -Styled.OrderbookAndInputs = styled.div<{ showOrderbook: boolean }>` +const $OrderbookAndInputs = styled.div<{ showOrderbook: boolean }>` @media ${breakpoints.tablet} { display: grid; align-items: flex-start; @@ -466,8 +569,7 @@ Styled.OrderbookAndInputs = styled.div<{ showOrderbook: boolean }>` `} } `; - -Styled.Orderbook = styled(Orderbook)` +const $Orderbook = styled(Orderbook)` width: 100%; @media ${breakpoints.notTablet} { @@ -484,18 +586,39 @@ Styled.Orderbook = styled(Orderbook)` } } `; +const $ToggleGroup = styled(ToggleGroup)` + overflow-x: auto; -Styled.InputsColumn = styled.div` + button[data-state='off'] { + gap: 0; + + img { + height: 0; + } + } +` as typeof ToggleGroup; +const $InputsColumn = styled.div` ${formMixins.inputsColumn} `; +const $Message = styled.div` + ${layoutMixins.row} + gap: 0.75rem; +`; +const $IconButton = styled(IconButton)` + --button-backgroundColor: var(--color-white-faded); + flex-shrink: 0; -Styled.ButtonRow = styled.div` + svg { + width: 1.25em; + height: 1.25em; + } +`; +const $ButtonRow = styled.div` ${layoutMixins.row} justify-self: end; padding: 0.5rem 0 0.5rem 0; `; - -Styled.Footer = styled.footer` +const $Footer = styled.footer` ${formMixins.footer} --stickyFooterBackdrop-outsetY: var(--tradeBox-content-paddingBottom); backdrop-filter: none; diff --git a/src/views/forms/TradeForm/AdvancedTradeOptions.tsx b/src/views/forms/TradeForm/AdvancedTradeOptions.tsx index 507f20431..46a44d349 100644 --- a/src/views/forms/TradeForm/AdvancedTradeOptions.tsx +++ b/src/views/forms/TradeForm/AdvancedTradeOptions.tsx @@ -1,22 +1,28 @@ -import styled, { AnyStyledComponent } from 'styled-components'; +import { useEffect } from 'react'; + import { type NumberFormatValues } from 'react-number-format'; import { shallowEqual, useSelector } from 'react-redux'; - -import { layoutMixins } from '@/styles/layoutMixins'; -import { formMixins } from '@/styles/formMixins'; +import styled from 'styled-components'; import { TradeInputField } from '@/constants/abacus'; +import { ComplianceStates } from '@/constants/compliance'; import { STRING_KEYS, StringKey } from '@/constants/localization'; import { INTEGER_DECIMALS } from '@/constants/numbers'; import { TimeUnitShort } from '@/constants/time'; import { GOOD_TIL_TIME_TIMESCALE_STRINGS } from '@/constants/trade'; -import { useBreakpoints, useStringGetter } from '@/hooks'; -import { Collapsible } from '@/components/Collapsible'; +import { useBreakpoints } from '@/hooks/useBreakpoints'; +import { useComplianceState } from '@/hooks/useComplianceState'; +import { useStringGetter } from '@/hooks/useStringGetter'; + +import { formMixins } from '@/styles/formMixins'; +import { layoutMixins } from '@/styles/layoutMixins'; + import { Checkbox } from '@/components/Checkbox'; +import { Collapsible } from '@/components/Collapsible'; import { FormInput } from '@/components/FormInput'; import { InputType } from '@/components/Input'; -import { SelectMenu, SelectItem } from '@/components/SelectMenu'; +import { SelectItem, SelectMenu } from '@/components/SelectMenu'; import { WithTooltip } from '@/components/WithTooltip'; import { getInputTradeData, getInputTradeOptions } from '@/state/inputsSelectors'; @@ -26,94 +32,116 @@ import abacusStateManager from '@/lib/abacus'; export const AdvancedTradeOptions = () => { const stringGetter = useStringGetter(); const { isTablet } = useBreakpoints(); + const { complianceState } = useComplianceState(); + const currentTradeFormConfig = useSelector(getInputTradeOptions, shallowEqual); const inputTradeData = useSelector(getInputTradeData, shallowEqual); const { execution, goodTil, postOnly, reduceOnly, timeInForce, type } = inputTradeData || {}; - const { executionOptions, needsGoodUntil, needsPostOnly, needsReduceOnly, postOnlyTooltip, reduceOnlyTooltip, timeInForceOptions } = - currentTradeFormConfig || {}; + const { + executionOptions, + needsGoodUntil, + needsPostOnly, + needsReduceOnly, + postOnlyTooltip, + reduceOnlyTooltip, + timeInForceOptions, + } = currentTradeFormConfig || {}; const { duration, unit } = goodTil || {}; - const showPostOnly = (needsPostOnly || postOnlyTooltip); - const showReduceOnly = (needsReduceOnly || reduceOnlyTooltip); + const showPostOnly = needsPostOnly || postOnlyTooltip; + const showReduceOnly = needsReduceOnly || reduceOnlyTooltip; const needsExecution = executionOptions || showPostOnly || showReduceOnly; const hasTimeInForce = timeInForceOptions?.toArray()?.length; + useEffect(() => { + if (complianceState === ComplianceStates.CLOSE_ONLY) { + abacusStateManager.setTradeValue({ + value: true, + field: TradeInputField.reduceOnly, + }); + } + }, [complianceState]); + return ( - <Styled.Collapsible + <$Collapsible defaultOpen={!isTablet} label={stringGetter({ key: STRING_KEYS.ADVANCED })} triggerIconSide="right" fullWidth > - <Styled.AdvancedInputsContainer> - <Styled.AdvancedInputsRow needsGoodUntil={needsGoodUntil}> - {hasTimeInForce && ( - <Styled.SelectMenu - value={timeInForce} - onValueChange={(selectedTimeInForceOption: string) => - abacusStateManager.setTradeValue({ - value: selectedTimeInForceOption, - field: TradeInputField.timeInForceType, - }) - } - label={stringGetter({ key: STRING_KEYS.TIME_IN_FORCE })} - > - {timeInForceOptions.toArray().map(({ type, stringKey }) => ( - <Styled.SelectItem - key={type} - value={type} - label={stringGetter({ key: stringKey as StringKey })} - /> - ))} - </Styled.SelectMenu> - )} - {needsGoodUntil && ( - <Styled.FormInput - id="trade-good-til-time" - type={InputType.Number} - decimals={INTEGER_DECIMALS} - label={stringGetter({ - key: hasTimeInForce ? STRING_KEYS.TIME : STRING_KEYS.GOOD_TIL_TIME, - })} - onChange={({ value }: NumberFormatValues) => { - abacusStateManager.setTradeValue({ - value: Number(value), - field: TradeInputField.goodTilDuration, - }); - }} - value={duration ?? ''} - slotRight={ - <Styled.InnerSelectMenu - value={unit} - onValueChange={(goodTilTimeTimescale: string) => { - abacusStateManager.setTradeValue({ - value: goodTilTimeTimescale, - field: TradeInputField.goodTilUnit, - }); - }} - > - {Object.values(TimeUnitShort).map((goodTilTimeTimescale: TimeUnitShort) => ( - <Styled.InnerSelectItem - key={goodTilTimeTimescale} - value={goodTilTimeTimescale} - label={stringGetter({ - key: GOOD_TIL_TIME_TIMESCALE_STRINGS[goodTilTimeTimescale], - })} - /> - ))} - </Styled.InnerSelectMenu> - } - /> - )} - </Styled.AdvancedInputsRow> + <$AdvancedInputsContainer> + {(hasTimeInForce || needsGoodUntil) && ( + <$AdvancedInputsRow> + {hasTimeInForce && timeInForce != null && ( + <$SelectMenu + value={timeInForce} + onValueChange={(selectedTimeInForceOption: string) => + abacusStateManager.setTradeValue({ + value: selectedTimeInForceOption, + field: TradeInputField.timeInForceType, + }) + } + label={stringGetter({ key: STRING_KEYS.TIME_IN_FORCE })} + > + {timeInForceOptions.toArray().map(({ type, stringKey }) => ( + <$SelectItem + key={type} + value={type} + label={stringGetter({ key: stringKey as StringKey })} + /> + ))} + </$SelectMenu> + )} + {needsGoodUntil && ( + <$FormInput + id="trade-good-til-time" + type={InputType.Number} + decimals={INTEGER_DECIMALS} + label={stringGetter({ + key: hasTimeInForce ? STRING_KEYS.TIME : STRING_KEYS.GOOD_TIL_TIME, + })} + onChange={({ value }: NumberFormatValues) => { + abacusStateManager.setTradeValue({ + value: Number(value), + field: TradeInputField.goodTilDuration, + }); + }} + value={duration ?? ''} + slotRight={ + unit != null && ( + <$InnerSelectMenu + value={unit} + onValueChange={(goodTilTimeTimescale: string) => { + abacusStateManager.setTradeValue({ + value: goodTilTimeTimescale, + field: TradeInputField.goodTilUnit, + }); + }} + > + {Object.values(TimeUnitShort).map((goodTilTimeTimescale: TimeUnitShort) => ( + <$InnerSelectItem + key={goodTilTimeTimescale} + value={goodTilTimeTimescale} + label={stringGetter({ + key: GOOD_TIL_TIME_TIMESCALE_STRINGS[goodTilTimeTimescale], + })} + /> + ))} + </$InnerSelectMenu> + ) + } + /> + )} + </$AdvancedInputsRow> + )} {needsExecution && ( <> - {executionOptions && ( - <Styled.SelectMenu + {executionOptions && execution != null && ( + <$SelectMenu value={execution} label={stringGetter({ key: STRING_KEYS.EXECUTION })} onValueChange={(selectedTimeInForceOption: string) => @@ -124,17 +152,22 @@ export const AdvancedTradeOptions = () => { } > {executionOptions.toArray().map(({ type, stringKey }) => ( - <Styled.SelectItem + <$SelectItem key={type} value={type} label={stringGetter({ key: stringKey as StringKey })} /> ))} - </Styled.SelectMenu> + </$SelectMenu> )} - {showReduceOnly && <Checkbox - checked={(reduceOnly && !reduceOnlyTooltip) || false} - disabled={!!reduceOnlyTooltip} + {showReduceOnly && ( + <Checkbox + checked={ + (reduceOnly && !reduceOnlyTooltip) || + complianceState === ComplianceStates.CLOSE_ONLY || + false + } + disabled={!!reduceOnlyTooltip || complianceState === ComplianceStates.CLOSE_ONLY} onCheckedChange={(checked) => abacusStateManager.setTradeValue({ value: checked, @@ -143,12 +176,23 @@ export const AdvancedTradeOptions = () => { } id="reduce-only" label={ - <WithTooltip tooltip={needsReduceOnly ? "reduce-only" : reduceOnlyTooltip?.titleStringKey.includes("REDUCE_ONLY_EXECUTION_IOC_FOK") ? "reduce-only-execution-ioc-fok" : "reduce-only-timeinforce-ioc-fok"} side="right"> + <WithTooltip + tooltip={ + needsReduceOnly + ? 'reduce-only' + : reduceOnlyTooltip?.titleStringKey.includes( + 'REDUCE_ONLY_EXECUTION_IOC_FOK' + ) + ? 'reduce-only-execution-ioc-fok' + : 'reduce-only-timeinforce-ioc-fok' + } + side="right" + > {stringGetter({ key: STRING_KEYS.REDUCE_ONLY })} </WithTooltip> } /> - } + )} {showPostOnly && ( <Checkbox checked={(postOnly && !postOnlyTooltip) || false} @@ -161,7 +205,10 @@ export const AdvancedTradeOptions = () => { } id="post-only" label={ - <WithTooltip tooltip={needsPostOnly ? "post-only" : "post-only-timeinforce-gtt"} side="right"> + <WithTooltip + tooltip={needsPostOnly ? 'post-only' : 'post-only-timeinforce-gtt'} + side="right" + > {stringGetter({ key: STRING_KEYS.POST_ONLY })} </WithTooltip> } @@ -169,14 +216,11 @@ export const AdvancedTradeOptions = () => { )} </> )} - </Styled.AdvancedInputsContainer> - </Styled.Collapsible> + </$AdvancedInputsContainer> + </$Collapsible> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.Collapsible = styled(Collapsible)` +const $Collapsible = styled(Collapsible)` --trigger-backgroundColor: transparent; --trigger-open-backgroundColor: transparent; --trigger-textColor: var(--color-text-0); @@ -189,34 +233,34 @@ Styled.Collapsible = styled(Collapsible)` margin: -0.5rem 0; `; -Styled.AdvancedInputsContainer = styled.div` +const $AdvancedInputsContainer = styled.div` display: grid; gap: var(--form-input-gap); `; -Styled.SelectMenu = styled(SelectMenu)` +const $SelectMenu = styled(SelectMenu)` ${formMixins.inputSelectMenu} `; -Styled.InnerSelectMenu = styled(SelectMenu)` +const $InnerSelectMenu = styled(SelectMenu)` ${formMixins.inputInnerSelectMenu} --select-menu-trigger-maxWidth: 4rem; -`; +` as typeof SelectMenu; -Styled.SelectItem = styled(SelectItem)` +const $SelectItem = styled(SelectItem)` ${formMixins.inputSelectMenuItem} -`; +` as typeof SelectItem; -Styled.InnerSelectItem = styled(SelectItem)` +const $InnerSelectItem = styled(SelectItem)` ${formMixins.inputInnerSelectMenuItem} `; -Styled.AdvancedInputsRow = styled.div<{ needsGoodUntil: boolean }>` +const $AdvancedInputsRow = styled.div` ${layoutMixins.gridEqualColumns} gap: var(--form-input-gap); `; -Styled.FormInput = styled(FormInput)` +const $FormInput = styled(FormInput)` input { margin-right: 4rem; } diff --git a/src/views/forms/TradeForm/LeverageSlider.stories.tsx b/src/views/forms/TradeForm/LeverageSlider.stories.tsx index 8290697df..8342ef7fe 100644 --- a/src/views/forms/TradeForm/LeverageSlider.stories.tsx +++ b/src/views/forms/TradeForm/LeverageSlider.stories.tsx @@ -1,33 +1,32 @@ import { useState } from 'react'; -import type { Story } from '@ladle/react'; -import styled, { AnyStyledComponent } from 'styled-components'; + import { OrderSide } from '@dydxprotocol/v4-client-js'; +import type { Story } from '@ladle/react'; +import styled from 'styled-components'; import { PositionSide } from '@/constants/trade'; + import { breakpoints } from '@/styles'; -import { StoryWrapper } from '.ladle/components'; import { LeverageSlider } from './LeverageSlider'; +import { StoryWrapper } from '.ladle/components'; -export const LeverageSliderStory: Story<Parameters<typeof LeverageSlider>> = (args) => { +export const LeverageSliderStory: Story<Parameters<typeof LeverageSlider>[0]> = (args) => { const [leverage, setLeverage] = useState(''); return ( <StoryWrapper> - <Styled.PositionInfoContainer> + <$PositionInfoContainer> <LeverageSlider + {...args} leverageInputValue={leverage} setLeverageInputValue={setLeverage} - {...args} /> - </Styled.PositionInfoContainer> + </$PositionInfoContainer> </StoryWrapper> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.PositionInfoContainer = styled.div` +const $PositionInfoContainer = styled.div` height: 4.625rem; margin: auto; position: relative; diff --git a/src/views/forms/TradeForm/LeverageSlider.tsx b/src/views/forms/TradeForm/LeverageSlider.tsx index 57b027702..70ec40209 100644 --- a/src/views/forms/TradeForm/LeverageSlider.tsx +++ b/src/views/forms/TradeForm/LeverageSlider.tsx @@ -1,14 +1,16 @@ import { useCallback, useMemo } from 'react'; -import styled, { AnyStyledComponent, css } from 'styled-components'; -import { Root, Thumb, Track } from '@radix-ui/react-slider'; -import _ from 'lodash'; + import { OrderSide } from '@dydxprotocol/v4-client-js'; +import _ from 'lodash'; +import styled, { AnyStyledComponent, css } from 'styled-components'; import { TradeInputField } from '@/constants/abacus'; import { PositionSide } from '@/constants/trade'; -import { MustBigNumber, type BigNumberish } from '@/lib/numbers'; +import { Slider } from '@/components/Slider'; + import abacusStateManager from '@/lib/abacus'; +import { MustBigNumber, type BigNumberish } from '@/lib/numbers'; type ElementProps = { leverage?: BigNumberish | null; @@ -97,117 +99,41 @@ export const LeverageSlider = ({ }; return ( - <Styled.SliderContainer midpoint={midpoint} orderSide={orderSide} className={className}> - <Styled.Root - aria-label="MarketLeverage" + <$SliderContainer className={className}> + <$Slider + label="MarketLeverage" min={min} max={max} step={0.1} - value={[Math.min(Math.max(leverageInputNumber, min), max)]} - onValueChange={onSliderDrag} + value={Math.min(Math.max(leverageInputNumber, min), max)} + onSliderDrag={onSliderDrag} onValueCommit={onValueCommit} - > - <Styled.Track /> - <Styled.Thumb /> - </Styled.Root> - </Styled.SliderContainer> + midpoint={midpoint} + orderSide={orderSide} + /> + </$SliderContainer> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.Root = styled(Root)` - // make thumb covers the start of the track - --radix-slider-thumb-transform: translateX(-65%) !important; - - position: relative; - - display: flex; - align-items: center; - - user-select: none; - - height: 100%; +const $Slider = styled(Slider)<{ midpoint?: number; orderSide: OrderSide }>` + --slider-track-backgroundColor: var(--color-layer-4); + + ${({ midpoint, orderSide }) => css` + --slider-track-background: linear-gradient( + 90deg, + var(--color-negative) 0%, + var(--color-layer-7) + ${midpoint + ? midpoint + : orderSide === OrderSide.BUY + ? 0 + : orderSide === OrderSide.SELL + ? 100 + : 50}%, + var(--color-positive) 100% + ); + `} `; -Styled.Track = styled(Track)` - position: relative; - - display: flex; - flex-grow: 1; - align-items: center; - - height: 0.5rem; - margin-right: 0.25rem; // make thumb covers the end of the track - - cursor: pointer; - - &:before { - content: ''; - width: 100%; - height: 100%; - - background: linear-gradient( - 90deg, - transparent, - transparent 15%, - var(--slider-backgroundColor) 15%, - var(--slider-backgroundColor) 50%, - transparent 50%, - transparent 65%, - var(--slider-backgroundColor) 65% - ) - 0 0 / 0.6rem; - } -`; - -Styled.Thumb = styled(Thumb)` +const $SliderContainer = styled.div` height: 1.375rem; - width: 1.375rem; - - display: flex; - justify-content: center; - align-items: center; - - background-color: var(--color-layer-6); - opacity: 0.8; - - border: 1.5px solid var(--color-layer-7); - border-radius: 50%; - - cursor: grab; -`; - -Styled.SliderContainer = styled.div<{ midpoint?: number; orderSide: OrderSide }>` - --slider-backgroundColor: var(--color-layer-4); - --slider-track-gradient-positive: linear-gradient( - 90deg, - var(--color-layer-7), - var(--color-positive) - ); - --slider-track-gradient-negative: linear-gradient( - 90deg, - var(--color-negative), - var(--color-layer-7) - ); - - height: 1.375rem; - - ${Styled.Track} { - ${({ midpoint, orderSide }) => css` - background: linear-gradient( - 90deg, - var(--color-negative) 0%, - var(--color-layer-7) - ${midpoint - ? midpoint - : orderSide === OrderSide.BUY - ? 0 - : orderSide === OrderSide.SELL - ? 100 - : 50}%, - var(--color-positive) 100% - ); - `} - } `; diff --git a/src/views/forms/TradeForm/MarketLeverageInput.tsx b/src/views/forms/TradeForm/MarketLeverageInput.tsx index 4ca06ee69..bda806de8 100644 --- a/src/views/forms/TradeForm/MarketLeverageInput.tsx +++ b/src/views/forms/TradeForm/MarketLeverageInput.tsx @@ -1,6 +1,6 @@ -import { shallowEqual, useSelector } from 'react-redux'; -import styled, { AnyStyledComponent } from 'styled-components'; import { OrderSide } from '@dydxprotocol/v4-client-js'; +import { shallowEqual, useSelector } from 'react-redux'; +import styled from 'styled-components'; import { TradeInputField } from '@/constants/abacus'; import { ButtonShape } from '@/constants/buttons'; @@ -8,9 +8,10 @@ import { STRING_KEYS } from '@/constants/localization'; import { LEVERAGE_DECIMALS } from '@/constants/numbers'; import { PositionSide } from '@/constants/trade'; -import { useStringGetter } from '@/hooks'; -import { formMixins } from '@/styles/formMixins'; +import { useStringGetter } from '@/hooks/useStringGetter'; + import { breakpoints } from '@/styles'; +import { formMixins } from '@/styles/formMixins'; import { Input, InputType } from '@/components/Input'; import { PositionSideTag } from '@/components/PositionSideTag'; @@ -46,7 +47,7 @@ export const MarketLeverageInput = ({ const { leverage, size: currentPositionSize } = currentPositionData || {}; const { current: currentSize, postOrder: postOrderSize } = currentPositionSize || {}; const { current: currentLeverage, postOrder: postOrderLeverage } = leverage || {}; - const { initialMarginFraction } = currentMarketConfig || {}; + const { initialMarginFraction, effectiveInitialMarginFraction } = currentMarketConfig || {}; const { side } = inputTradeData || {}; const orderSide = getSelectedOrderSide(side); @@ -55,19 +56,24 @@ export const MarketLeverageInput = ({ postOrderSize, }); - const maxLeverage = initialMarginFraction - ? BIG_NUMBERS.ONE.div(initialMarginFraction) - : MustBigNumber(10); + const preferredIMF = effectiveInitialMarginFraction ?? initialMarginFraction; + + const maxLeverage = preferredIMF ? BIG_NUMBERS.ONE.div(preferredIMF) : MustBigNumber(10); + + const leverageOptions = maxLeverage.lt(10) ? [1, 2, 3, 4, 5] : [1, 2, 3, 5, 10]; const leveragePosition = postOrderLeverage ? newPositionSide : currentPositionSide; const getSignedLeverage = (newLeverage: string | number) => { const newLeverageBN = MustBigNumber(newLeverage); + const newLeverageBNCapped = newLeverageBN.isGreaterThan(maxLeverage) + ? maxLeverage + : newLeverageBN; const newLeverageSignedBN = leveragePosition === PositionSide.Short || (leveragePosition === PositionSide.None && orderSide === OrderSide.SELL) - ? newLeverageBN.abs().negated() - : newLeverageBN.abs(); + ? newLeverageBNCapped.abs().negated() + : newLeverageBNCapped.abs(); return newLeverageSignedBN.toFixed(LEVERAGE_DECIMALS); }; @@ -100,7 +106,7 @@ export const MarketLeverageInput = ({ }); }; - const onLeverageSideToggle = (e: Event) => { + const onLeverageSideToggle = (e: React.MouseEvent<HTMLDivElement>) => { e.preventDefault(); if (leveragePosition === PositionSide.None) return; @@ -121,8 +127,8 @@ export const MarketLeverageInput = ({ return ( <> - <Styled.InputContainer> - <Styled.WithLabel + <$InputContainer> + <$WithLabel key="leverage" label={ <> @@ -130,13 +136,13 @@ export const MarketLeverageInput = ({ {stringGetter({ key: STRING_KEYS.LEVERAGE })} </WithTooltip> - <Styled.LeverageSide onClick={onLeverageSideToggle}> + <$LeverageSide onClick={onLeverageSideToggle}> <PositionSideTag positionSide={leveragePosition} /> - </Styled.LeverageSide> + </$LeverageSide> </> } > - <Styled.LeverageSlider + <$LeverageSlider leverage={currentLeverage} leverageInputValue={getSignedLeverage(leverageInputValue)} maxLeverage={maxLeverage} @@ -144,21 +150,22 @@ export const MarketLeverageInput = ({ positionSide={currentPositionSide} setLeverageInputValue={setLeverageInputValue} /> - </Styled.WithLabel> - <Styled.InnerInputContainer> + </$WithLabel> + <$InnerInputContainer> <Input onInput={onLeverageInput} placeholder={`${MustBigNumber(currentLeverage).abs().toFixed(LEVERAGE_DECIMALS)}×`} type={InputType.Leverage} value={leverageInputValue ?? ''} /> - </Styled.InnerInputContainer> - </Styled.InputContainer> + </$InnerInputContainer> + </$InputContainer> - <Styled.ToggleGroup - items={[1, 2, 3, 5, 10].map((leverageAmount: number) => ({ + <$ToggleGroup + items={leverageOptions.map((leverageAmount: number) => ({ label: `${leverageAmount}×`, value: MustBigNumber(leverageAmount).toFixed(LEVERAGE_DECIMALS), + disabled: maxLeverage.lt(leverageAmount), }))} value={MustBigNumber(formattedLeverageValue).abs().toFixed(LEVERAGE_DECIMALS)} // sign agnostic onValueChange={updateLeverage} @@ -167,10 +174,7 @@ export const MarketLeverageInput = ({ </> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.InputContainer = styled.div` +const $InputContainer = styled.div` ${formMixins.inputContainer} --input-height: 3.5rem; @@ -181,15 +185,15 @@ Styled.InputContainer = styled.div` } `; -Styled.WithLabel = styled(WithLabel)` +const $WithLabel = styled(WithLabel)` ${formMixins.inputLabel} `; -Styled.LeverageSlider = styled(LeverageSlider)` +const $LeverageSlider = styled(LeverageSlider)` margin-top: 0.25rem; `; -Styled.InnerInputContainer = styled.div` +const $InnerInputContainer = styled.div` ${formMixins.inputContainer} --input-backgroundColor: var(--color-layer-5); --input-borderColor: var(--color-layer-7); @@ -208,10 +212,10 @@ Styled.InnerInputContainer = styled.div` } `; -Styled.LeverageSide = styled.div` +const $LeverageSide = styled.div` cursor: pointer; `; -Styled.ToggleGroup = styled(ToggleGroup)` +const $ToggleGroup = styled(ToggleGroup)` ${formMixins.inputToggleGroup} `; diff --git a/src/views/forms/TradeForm/PlaceOrderButtonAndReceipt.tsx b/src/views/forms/TradeForm/PlaceOrderButtonAndReceipt.tsx index d55c04680..885a7c618 100644 --- a/src/views/forms/TradeForm/PlaceOrderButtonAndReceipt.tsx +++ b/src/views/forms/TradeForm/PlaceOrderButtonAndReceipt.tsx @@ -1,13 +1,17 @@ import { useDispatch, useSelector } from 'react-redux'; -import styled, { type AnyStyledComponent, css } from 'styled-components'; +import styled from 'styled-components'; import type { TradeInputSummary } from '@/constants/abacus'; import { ButtonAction, ButtonSize, ButtonType } from '@/constants/buttons'; +import { ComplianceStates } from '@/constants/compliance'; import { DialogTypes } from '@/constants/dialogs'; import { STRING_KEYS } from '@/constants/localization'; import { MobilePlaceOrderSteps } from '@/constants/trade'; -import { useStringGetter, useTokenConfigs } from '@/hooks'; +import { ConnectionErrorType, useApiState } from '@/hooks/useApiState'; +import { useComplianceState } from '@/hooks/useComplianceState'; +import { useStringGetter } from '@/hooks/useStringGetter'; +import { useTokenConfigs } from '@/hooks/useTokenConfigs'; import { AssetIcon } from '@/components/AssetIcon'; import { Button } from '@/components/Button'; @@ -15,7 +19,6 @@ import { Icon, IconName } from '@/components/Icon'; import { Output, OutputType, ShowSign } from '@/components/Output'; import { WithDetailsReceipt } from '@/components/WithDetailsReceipt'; import { WithTooltip } from '@/components/WithTooltip'; - import { OnboardingTriggerButton } from '@/views/dialogs/OnboardingTriggerButton'; import { calculateCanAccountTrade } from '@/state/accountCalculators'; @@ -30,7 +33,6 @@ type ConfirmButtonConfig = { }; type ElementProps = { - isLoading: boolean; actionStringKey?: string; summary?: TradeInputSummary; hasValidationErrors?: boolean; @@ -41,7 +43,6 @@ type ElementProps = { }; export const PlaceOrderButtonAndReceipt = ({ - isLoading, actionStringKey, summary, hasValidationErrors, @@ -53,6 +54,8 @@ export const PlaceOrderButtonAndReceipt = ({ const stringGetter = useStringGetter(); const dispatch = useDispatch(); const { chainTokenLabel } = useTokenConfigs(); + const { connectionError } = useApiState(); + const { complianceState } = useComplianceState(); const canAccountTrade = useSelector(calculateCanAccountTrade); const subaccountNumber = useSelector(getSubaccountId); @@ -60,8 +63,16 @@ export const PlaceOrderButtonAndReceipt = ({ const hasMissingData = subaccountNumber === undefined; + const tradingUnavailable = + complianceState === ComplianceStates.READ_ONLY || + connectionError === ConnectionErrorType.CHAIN_DISRUPTION; + const shouldEnableTrade = - canAccountTrade && !hasMissingData && !hasValidationErrors && currentInput !== 'transfer'; + canAccountTrade && + !hasMissingData && + !hasValidationErrors && + currentInput !== 'transfer' && + !tradingUnavailable; const { fee, price: expectedPrice, total, reward } = summary || {}; @@ -109,6 +120,13 @@ export const PlaceOrderButtonAndReceipt = ({ }, ]; + const returnToMarketState = () => ({ + buttonTextStringKey: STRING_KEYS.RETURN_TO_MARKET, + buttonAction: ButtonAction.Secondary, + buttonState: {}, + showValidatorError: false, + }); + const buttonStatesPerStep = { [MobilePlaceOrderSteps.EditOrder]: { buttonTextStringKey: shouldEnableTrade @@ -118,23 +136,18 @@ export const PlaceOrderButtonAndReceipt = ({ : STRING_KEYS.UNAVAILABLE, buttonAction: ButtonAction.Primary, buttonState: { isDisabled: !shouldEnableTrade, isLoading: hasMissingData }, + showValidatorError: true, }, [MobilePlaceOrderSteps.PreviewOrder]: { buttonTextStringKey: STRING_KEYS.CONFIRM_ORDER, buttonAction: confirmButtonConfig.buttonAction, - buttonState: { isLoading }, - }, - [MobilePlaceOrderSteps.PlacingOrder]: { - buttonTextStringKey: STRING_KEYS.RETURN_TO_MARKET, - buttonAction: ButtonAction.Secondary, - buttonState: {}, - }, - [MobilePlaceOrderSteps.Confirmation]: { - buttonTextStringKey: STRING_KEYS.RETURN_TO_MARKET, - buttonAction: ButtonAction.Secondary, buttonState: {}, + showValidatorError: false, }, + [MobilePlaceOrderSteps.PlacingOrder]: returnToMarketState(), + [MobilePlaceOrderSteps.PlaceOrderFailed]: returnToMarketState(), + [MobilePlaceOrderSteps.Confirmation]: returnToMarketState(), }; const buttonAction = currentStep @@ -142,7 +155,9 @@ export const PlaceOrderButtonAndReceipt = ({ : confirmButtonConfig.buttonAction; let buttonTextStringKey = STRING_KEYS.UNAVAILABLE; - if (currentStep) { + if (tradingUnavailable) { + buttonTextStringKey = STRING_KEYS.UNAVAILABLE; + } else if (currentStep) { buttonTextStringKey = buttonStatesPerStep[currentStep].buttonTextStringKey; } else if (shouldEnableTrade) { buttonTextStringKey = confirmButtonConfig.buttonTextStringKey; @@ -153,8 +168,8 @@ export const PlaceOrderButtonAndReceipt = ({ const buttonState = currentStep ? buttonStatesPerStep[currentStep].buttonState : { - isDisabled: !shouldEnableTrade || isLoading, - isLoading: isLoading || hasMissingData, + isDisabled: !shouldEnableTrade, + isLoading: hasMissingData, }; const depositButton = ( @@ -166,14 +181,15 @@ export const PlaceOrderButtonAndReceipt = ({ </Button> ); + const showValidatorErrors = + hasValidationErrors && (!currentStep || buttonStatesPerStep[currentStep].showValidatorError); + const submitButton = ( - <Styled.Button + <$Button state={buttonState} type={ButtonType.Submit} action={buttonAction} - slotLeft={ - hasValidationErrors ? <Styled.WarningIcon iconName={IconName.Warning} /> : undefined - } + slotLeft={showValidatorErrors ? <$WarningIcon iconName={IconName.Warning} /> : undefined} > {stringGetter({ key: buttonTextStringKey, @@ -183,30 +199,27 @@ export const PlaceOrderButtonAndReceipt = ({ }), }, })} - </Styled.Button> + </$Button> ); return ( <WithDetailsReceipt detailItems={items}> {!canAccountTrade ? ( <OnboardingTriggerButton size={ButtonSize.Base} /> - ) : showDeposit ? ( + ) : showDeposit && complianceState === ComplianceStates.FULL_ACCESS ? ( depositButton ) : ( - <WithTooltip tooltipString={hasValidationErrors ? validationErrorString : undefined}> + <WithTooltip tooltipString={showValidatorErrors ? validationErrorString : undefined}> {submitButton} </WithTooltip> )} </WithDetailsReceipt> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.Button = styled(Button)` +const $Button = styled(Button)` width: 100%; `; -Styled.WarningIcon = styled(Icon)` +const $WarningIcon = styled(Icon)` color: var(--color-warning); `; diff --git a/src/views/forms/TradeForm/PositionPreview.tsx b/src/views/forms/TradeForm/PositionPreview.tsx index 489fd8da9..0e70c5a27 100644 --- a/src/views/forms/TradeForm/PositionPreview.tsx +++ b/src/views/forms/TradeForm/PositionPreview.tsx @@ -1,18 +1,18 @@ -import styled, { AnyStyledComponent } from 'styled-components'; import { shallowEqual, useSelector } from 'react-redux'; +import styled from 'styled-components'; import { STRING_KEYS } from '@/constants/localization'; +import { useStringGetter } from '@/hooks/useStringGetter'; + import { layoutMixins } from '@/styles/layoutMixins'; -import { useStringGetter } from '@/hooks'; import { AssetIcon } from '@/components/AssetIcon'; +import { PositionTile } from '@/views/PositionTile'; +import { getCurrentMarketPositionData } from '@/state/accountSelectors'; import { getCurrentMarketAssetData } from '@/state/assetsSelectors'; import { getCurrentMarketData } from '@/state/perpetualsSelectors'; -import { getCurrentMarketPositionData } from '@/state/accountSelectors'; - -import { PositionTile } from '@/views/PositionTile'; type ElementProps = { showNarrowVariation?: boolean; @@ -23,12 +23,13 @@ export const PositionPreview = ({ showNarrowVariation }: ElementProps) => { const { id } = useSelector(getCurrentMarketAssetData, shallowEqual) || {}; const { configs, oraclePrice } = useSelector(getCurrentMarketData, shallowEqual) || {}; - const { size: positionSize } = useSelector(getCurrentMarketPositionData, shallowEqual) || {}; + const { size: positionSize, notionalTotal } = + useSelector(getCurrentMarketPositionData, shallowEqual) || {}; const { stepSizeDecimals, tickSizeDecimals } = configs || {}; return ( - <Styled.PositionPreviewContainer> - <Styled.YourPosition> + <$PositionPreviewContainer> + <$YourPosition> {!showNarrowVariation && <AssetIcon symbol={id} />} <span> {stringGetter({ @@ -38,23 +39,20 @@ export const PositionPreview = ({ showNarrowVariation }: ElementProps) => { }, })} </span> - </Styled.YourPosition> + </$YourPosition> <PositionTile currentSize={positionSize?.current} - oraclePrice={oraclePrice} + notionalTotal={notionalTotal?.current} postOrderSize={positionSize?.postOrder} stepSizeDecimals={stepSizeDecimals} symbol={id || undefined} tickSizeDecimals={tickSizeDecimals} showNarrowVariation={showNarrowVariation} /> - </Styled.PositionPreviewContainer> + </$PositionPreviewContainer> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.PositionPreviewContainer = styled.div` +const $PositionPreviewContainer = styled.div` ${layoutMixins.column} align-items: flex-start; width: 100%; @@ -65,7 +63,7 @@ Styled.PositionPreviewContainer = styled.div` } `; -Styled.YourPosition = styled.div` +const $YourPosition = styled.div` ${layoutMixins.inlineRow} color: var(--color-text-0); diff --git a/src/views/forms/TradeForm/TradeSideToggle.tsx b/src/views/forms/TradeForm/TradeSideToggle.tsx index 8af0c6adf..61716e4e7 100644 --- a/src/views/forms/TradeForm/TradeSideToggle.tsx +++ b/src/views/forms/TradeForm/TradeSideToggle.tsx @@ -1,19 +1,21 @@ import { memo } from 'react'; -import styled, { css } from 'styled-components'; -import { shallowEqual, useSelector } from 'react-redux'; + import { OrderSide } from '@dydxprotocol/v4-client-js'; +import { shallowEqual, useSelector } from 'react-redux'; +import styled, { css } from 'styled-components'; -import { AbacusOrderSide } from '@/constants/abacus'; +import { AbacusOrderSide, TradeInputField } from '@/constants/abacus'; import { ButtonShape, ButtonSize } from '@/constants/buttons'; import { STRING_KEYS } from '@/constants/localization'; -import { TradeInputField } from '@/constants/abacus'; -import { useStringGetter } from '@/hooks'; + +import { useStringGetter } from '@/hooks/useStringGetter'; import { ToggleGroup } from '@/components/ToggleGroup'; import { getTradeSide } from '@/state/inputsSelectors'; import abacusStateManager from '@/lib/abacus'; +import { getSimpleStyledOutputType } from '@/lib/genericFunctionalComponentUtils'; import { getSelectedOrderSide } from '@/lib/tradeData'; export const TradeSideToggle = memo(() => { @@ -22,7 +24,7 @@ export const TradeSideToggle = memo(() => { const selectedOrderSide = getSelectedOrderSide(side); return ( - <ToggleContainer + <$ToggleContainer items={[ { value: OrderSide.BUY, label: stringGetter({ key: STRING_KEYS.BUY }) }, { value: OrderSide.SELL, label: stringGetter({ key: STRING_KEYS.SELL }) }, @@ -41,7 +43,9 @@ export const TradeSideToggle = memo(() => { ); }); -const ToggleContainer = styled(ToggleGroup)<{ value: OrderSide }>` +type ToggleContainerStyleProps = { value: OrderSide }; +const toggleContainerType = getSimpleStyledOutputType(ToggleGroup, {} as ToggleContainerStyleProps); +const $ToggleContainer = styled(ToggleGroup)<ToggleContainerStyleProps>` --toggle-radius: 0.5em; --toggle-color: var(--color-negative); --toggle-background: ${({ theme }) => theme.toggleBackground}; @@ -86,4 +90,4 @@ const ToggleContainer = styled(ToggleGroup)<{ value: OrderSide }>` transform: translateX(100%); `} } -`; +` as typeof toggleContainerType; diff --git a/src/views/forms/TradeForm/TradeSizeInputs.tsx b/src/views/forms/TradeForm/TradeSizeInputs.tsx index f53c4b063..d4bf22222 100644 --- a/src/views/forms/TradeForm/TradeSizeInputs.tsx +++ b/src/views/forms/TradeForm/TradeSizeInputs.tsx @@ -1,6 +1,7 @@ import { useEffect, useState } from 'react'; + import { shallowEqual, useDispatch, useSelector } from 'react-redux'; -import styled, { AnyStyledComponent } from 'styled-components'; +import styled from 'styled-components'; import { TradeInputField } from '@/constants/abacus'; import { ButtonShape, ButtonSize } from '@/constants/buttons'; @@ -8,26 +9,26 @@ import { STRING_KEYS } from '@/constants/localization'; import { TOKEN_DECIMALS, USD_DECIMALS } from '@/constants/numbers'; import { TradeSizeInput } from '@/constants/trade'; -import { useBreakpoints, useStringGetter } from '@/hooks'; -import { layoutMixins } from '@/styles/layoutMixins'; +import { useBreakpoints } from '@/hooks/useBreakpoints'; +import { useStringGetter } from '@/hooks/useStringGetter'; + import { formMixins } from '@/styles/formMixins'; +import { layoutMixins } from '@/styles/layoutMixins'; import { FormInput } from '@/components/FormInput'; +import { Icon, IconName } from '@/components/Icon'; import { InputType } from '@/components/Input'; import { Tag } from '@/components/Tag'; -import { WithTooltip } from '@/components/WithTooltip'; -import { Icon, IconName } from '@/components/Icon'; import { ToggleButton } from '@/components/ToggleButton'; +import { WithTooltip } from '@/components/WithTooltip'; import { getCurrentMarketAssetData } from '@/state/assetsSelectors'; import { setTradeFormInputs } from '@/state/inputs'; - import { - getInputTradeSizeData, getInputTradeOptions, + getInputTradeSizeData, getTradeFormInputs, } from '@/state/inputsSelectors'; - import { getCurrentMarketConfig } from '@/state/perpetualsSelectors'; import abacusStateManager from '@/lib/abacus'; @@ -103,7 +104,7 @@ export const TradeSizeInputs = () => { }; const inputToggleButton = ( - <Styled.ToggleButton + <$ToggleButton isPressed={showUSDCInputOnTablet} onPressedChange={setShowUSDCInputOnTablet} size={ButtonSize.XSmall} @@ -111,7 +112,7 @@ export const TradeSizeInputs = () => { > <Icon iconName={IconName.Trade} /> {showUSDCInputOnTablet ? 'USD' : id} - </Styled.ToggleButton> + </$ToggleButton> ); const sizeInput = ( @@ -139,7 +140,7 @@ export const TradeSizeInputs = () => { onInput={onUSDCInput} type={InputType.Currency} value={usdAmountInput || ''} - decimals={tickSizeDecimals || USD_DECIMALS} + decimals={tickSizeDecimals ?? USD_DECIMALS} label={ <> <WithTooltip tooltip="order-amount-usd" stringParams={{ SYMBOL: id ?? '' }} side="right"> @@ -153,7 +154,7 @@ export const TradeSizeInputs = () => { ); return ( - <Styled.Column> + <$Column> {isTablet ? ( showUSDCInputOnTablet ? ( usdcInput @@ -161,10 +162,10 @@ export const TradeSizeInputs = () => { sizeInput ) ) : ( - <Styled.Row> + <$Row> {sizeInput} {usdcInput} - </Styled.Row> + </$Row> )} {needsLeverage && ( @@ -175,23 +176,20 @@ export const TradeSizeInputs = () => { } /> )} - </Styled.Column> + </$Column> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.Column = styled.div` +const $Column = styled.div` ${layoutMixins.flexColumn} gap: var(--form-input-gap); `; -Styled.Row = styled.div` +const $Row = styled.div` ${layoutMixins.gridEqualColumns} gap: var(--form-input-gap); `; -Styled.ToggleButton = styled(ToggleButton)` +const $ToggleButton = styled(ToggleButton)` ${formMixins.inputInnerToggleButton} --button-font: var(--font-tiny-book); --button-height: 2.25rem; diff --git a/src/views/forms/TransferForm.tsx b/src/views/forms/TransferForm.tsx index fcd83afe4..b7ee0cbe8 100644 --- a/src/views/forms/TransferForm.tsx +++ b/src/views/forms/TransferForm.tsx @@ -1,9 +1,12 @@ -import { type FormEvent, useEffect, useMemo, useState } from 'react'; -import styled, { type AnyStyledComponent } from 'styled-components'; +import { useEffect, useMemo, useState, type FormEvent } from 'react'; + +import { validation } from '@dydxprotocol/v4-client-js'; +import { noop } from 'lodash'; import { type NumberFormatValues } from 'react-number-format'; -import { shallowEqual, useSelector } from 'react-redux'; import type { SyntheticInputEvent } from 'react-number-format/types/types'; -import { validation } from '@dydxprotocol/v4-client-js'; +import { shallowEqual, useSelector } from 'react-redux'; +import styled from 'styled-components'; +import { Nullable } from 'vitest'; import { TransferInputField, TransferType } from '@/constants/abacus'; import { AlertType } from '@/constants/alerts'; @@ -12,15 +15,14 @@ import { STRING_KEYS } from '@/constants/localization'; import { NumberSign } from '@/constants/numbers'; import { DydxChainAsset } from '@/constants/wallets'; -import { - useAccountBalance, - useAccounts, - useDydxClient, - useRestrictions, - useStringGetter, - useSubaccount, - useTokenConfigs, -} from '@/hooks'; +import { useAccountBalance } from '@/hooks/useAccountBalance'; +import { useAccounts } from '@/hooks/useAccounts'; +import { useDydxClient } from '@/hooks/useDydxClient'; +import { useRestrictions } from '@/hooks/useRestrictions'; +import { useStringGetter } from '@/hooks/useStringGetter'; +import { useSubaccount } from '@/hooks/useSubaccount'; +import { useTokenConfigs } from '@/hooks/useTokenConfigs'; +import { useWithdrawalInfo } from '@/hooks/useWithdrawalInfo'; import { formMixins } from '@/styles/formMixins'; import { layoutMixins } from '@/styles/layoutMixins'; @@ -35,8 +37,8 @@ import { OutputType } from '@/components/Output'; import { SelectItem, SelectMenu } from '@/components/SelectMenu'; import { Tag } from '@/components/Tag'; import { ToggleButton } from '@/components/ToggleButton'; -import { TransferButtonAndReceipt } from '@/views/forms/TransferForm/TransferButtonAndReceipt'; import { WithDetailsReceipt } from '@/components/WithDetailsReceipt'; +import { TransferButtonAndReceipt } from '@/views/forms/TransferForm/TransferButtonAndReceipt'; import { getSubaccount } from '@/state/accountSelectors'; import { getSelectedDydxChainId } from '@/state/appSelectors'; @@ -64,6 +66,7 @@ export const TransferForm = ({ const { nativeTokenBalance, usdcBalance } = useAccountBalance(); const selectedDydxChainId = useSelector(getSelectedDydxChainId); const { tokensConfigs, usdcLabel, chainTokenLabel } = useTokenConfigs(); + useWithdrawalInfo({ transferType: 'transfer' }); const { address: recipientAddress, @@ -96,7 +99,7 @@ export const TransferForm = ({ const amountBN = MustBigNumber(amount); const balanceBN = MustBigNumber(balance); - const onChangeAsset = (asset: DydxChainAsset) => { + const onChangeAsset = (asset: Nullable<string>) => { setError(undefined); setCurrentFee(undefined); @@ -220,18 +223,18 @@ export const TransferForm = ({ { value: DydxChainAsset.USDC, label: ( - <Styled.InlineRow> + <$InlineRow> <AssetIcon symbol="USDC" /> {usdcLabel} - </Styled.InlineRow> + </$InlineRow> ), }, { value: DydxChainAsset.CHAINTOKEN, label: ( - <Styled.InlineRow> + <$InlineRow> <AssetIcon symbol={chainTokenLabel} /> {chainTokenLabel} - </Styled.InlineRow> + </$InlineRow> ), }, ]; @@ -240,9 +243,9 @@ export const TransferForm = ({ { chainId: selectedDydxChainId, label: ( - <Styled.InlineRow> + <$InlineRow> <AssetIcon symbol="DYDX" /> {stringGetter({ key: STRING_KEYS.DYDX_CHAIN })} - </Styled.InlineRow> + </$InlineRow> ), }, ]; @@ -279,7 +282,7 @@ export const TransferForm = ({ onClear: () => void; onClick: () => void; }) => ( - <Styled.FormInputToggleButton + <$FormInputToggleButton size={ButtonSize.XSmall} isPressed={!isInputEmpty} onPressedChange={(isPressed: boolean) => (isPressed ? onClick : onClear)()} @@ -287,26 +290,26 @@ export const TransferForm = ({ shape={isInputEmpty ? ButtonShape.Rectangle : ButtonShape.Circle} > {isInputEmpty ? label : <Icon iconName={IconName.Close} />} - </Styled.FormInputToggleButton> + </$FormInputToggleButton> ); return ( - <Styled.Form + <$Form className={className} onSubmit={(e: FormEvent) => { e.preventDefault(); onTransfer(); }} > - <Styled.Row> + <$Row> <FormInput id="destination" onInput={(e: SyntheticInputEvent) => onChangeAddress(e.target?.value)} label={ - <Styled.DestinationInputLabel> + <$DestinationInputLabel> {stringGetter({ key: STRING_KEYS.DESTINATION })} - {isAddressValid && <Styled.CheckIcon iconName={IconName.Check} />} - </Styled.DestinationInputLabel> + {isAddressValid && <$CheckIcon iconName={IconName.Check} />} + </$DestinationInputLabel> } type={InputType.Text} value={recipientAddress ?? ''} @@ -319,40 +322,39 @@ export const TransferForm = ({ })} disabled={isLoading} /> - <Styled.NetworkSelectMenu + <$NetworkSelectMenu label={stringGetter({ key: STRING_KEYS.NETWORK })} value={selectedDydxChainId} - slotTriggerAfter={null} + onValueChange={noop} > {networkOptions.map(({ chainId, label }) => ( - <Styled.SelectItem key={chainId} value={chainId} label={label} /> + <$SelectItem key={chainId} value={chainId} label={label} /> ))} - </Styled.NetworkSelectMenu> - </Styled.Row> + </$NetworkSelectMenu> + </$Row> {recipientAddress && !isAddressValid && ( - <Styled.AddressValidationAlertMessage type={AlertType.Error}> + <$AddressValidationAlertMessage type={AlertType.Error}> {stringGetter({ key: dydxAddress === recipientAddress ? STRING_KEYS.TRANSFER_TO_YOURSELF : STRING_KEYS.TRANSFER_INVALID_DYDX_ADDRESS, })} - </Styled.AddressValidationAlertMessage> + </$AddressValidationAlertMessage> )} - <Styled.SelectMenu + <$SelectMenu label={stringGetter({ key: STRING_KEYS.ASSET })} - value={token} + value={token ?? ''} onValueChange={onChangeAsset} - disabled={isLoading} > {assetOptions.map(({ value, label }) => ( - <Styled.SelectItem key={value} value={value} label={label} /> + <$SelectItem key={value} value={value} label={label} /> ))} - </Styled.SelectMenu> + </$SelectMenu> - <Styled.WithDetailsReceipt side="bottom" detailItems={amountDetailItems}> + <$WithDetailsReceipt side="bottom" detailItems={amountDetailItems}> <FormInput label={stringGetter({ key: STRING_KEYS.AMOUNT })} type={InputType.Number} @@ -370,7 +372,7 @@ export const TransferForm = ({ } disabled={isLoading} /> - </Styled.WithDetailsReceipt> + </$WithDetailsReceipt> {showNotEnoughGasWarning && ( <AlertMessage type={AlertType.Warning}> @@ -383,51 +385,48 @@ export const TransferForm = ({ {error && <AlertMessage type={AlertType.Error}>{error}</AlertMessage>} - <Styled.Footer> + <$Footer> <TransferButtonAndReceipt selectedAsset={asset} fee={currentFee || undefined} isDisabled={!isAmountValid || !isAddressValid || !currentFee || isLoading} isLoading={isLoading || Boolean(isAmountValid && isAddressValid && !currentFee)} /> - </Styled.Footer> - </Styled.Form> + </$Footer> + </$Form> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.Form = styled.form` +const $Form = styled.form` ${formMixins.transfersForm} `; -Styled.Footer = styled.footer` +const $Footer = styled.footer` ${formMixins.footer} --stickyFooterBackdrop-outsetY: var(--dialog-content-paddingBottom); `; -Styled.Row = styled.div` +const $Row = styled.div` ${layoutMixins.gridEqualColumns} gap: var(--form-input-gap); `; -Styled.SelectMenu = styled(SelectMenu)` +const $SelectMenu = styled(SelectMenu)` ${formMixins.inputSelectMenu} -`; +` as typeof SelectMenu; -Styled.SelectItem = styled(SelectItem)` +const $SelectItem = styled(SelectItem)` ${formMixins.inputSelectMenuItem} -`; +` as typeof SelectItem; -Styled.NetworkSelectMenu = styled(Styled.SelectMenu)` +const $NetworkSelectMenu = styled($SelectMenu)` pointer-events: none; -`; +` as typeof SelectMenu; -Styled.WithDetailsReceipt = styled(WithDetailsReceipt)` +const $WithDetailsReceipt = styled(WithDetailsReceipt)` --withReceipt-backgroundColor: var(--color-layer-2); `; -Styled.InlineRow = styled.span` +const $InlineRow = styled.span` ${layoutMixins.inlineRow} height: 100%; @@ -436,19 +435,19 @@ Styled.InlineRow = styled.span` } `; -Styled.DestinationInputLabel = styled.span` +const $DestinationInputLabel = styled.span` ${layoutMixins.inlineRow} `; -Styled.CheckIcon = styled(Icon)` +const $CheckIcon = styled(Icon)` color: var(--color-success); `; -Styled.AddressValidationAlertMessage = styled(AlertMessage)` +const $AddressValidationAlertMessage = styled(AlertMessage)` margin-top: -0.75rem; `; -Styled.FormInputToggleButton = styled(ToggleButton)` +const $FormInputToggleButton = styled(ToggleButton)` ${formMixins.inputInnerToggleButton} svg { diff --git a/src/views/forms/TransferForm/TransferButtonAndReceipt.tsx b/src/views/forms/TransferForm/TransferButtonAndReceipt.tsx index ecf524d0c..30e468f48 100644 --- a/src/views/forms/TransferForm/TransferButtonAndReceipt.tsx +++ b/src/views/forms/TransferForm/TransferButtonAndReceipt.tsx @@ -1,12 +1,14 @@ import { shallowEqual, useSelector } from 'react-redux'; -import styled, { type AnyStyledComponent } from 'styled-components'; +import styled from 'styled-components'; import { ButtonAction, ButtonSize, ButtonType } from '@/constants/buttons'; import { STRING_KEYS } from '@/constants/localization'; import { NumberSign } from '@/constants/numbers'; import { DydxChainAsset } from '@/constants/wallets'; -import { useAccountBalance, useTokenConfigs, useStringGetter } from '@/hooks'; +import { useAccountBalance } from '@/hooks/useAccountBalance'; +import { useStringGetter } from '@/hooks/useStringGetter'; +import { useTokenConfigs } from '@/hooks/useTokenConfigs'; import { Button } from '@/components/Button'; import { DiffOutput } from '@/components/DiffOutput'; @@ -103,7 +105,7 @@ export const TransferButtonAndReceipt = ({ ].filter(isTruthy); return ( - <Styled.WithDetailsReceipt detailItems={transferDetailItems}> + <$WithDetailsReceipt detailItems={transferDetailItems}> {!canAccountTrade ? ( <OnboardingTriggerButton size={ButtonSize.Base} /> ) : ( @@ -115,13 +117,10 @@ export const TransferButtonAndReceipt = ({ {stringGetter({ key: STRING_KEYS.CONFIRM_TRANSFER })} </Button> )} - </Styled.WithDetailsReceipt> + </$WithDetailsReceipt> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.WithDetailsReceipt = styled(WithDetailsReceipt)` +const $WithDetailsReceipt = styled(WithDetailsReceipt)` --withReceipt-backgroundColor: var(--color-layer-2); dl { diff --git a/src/views/forms/TriggersForm/AdvancedTriggersOptions.tsx b/src/views/forms/TriggersForm/AdvancedTriggersOptions.tsx new file mode 100644 index 000000000..761fd5534 --- /dev/null +++ b/src/views/forms/TriggersForm/AdvancedTriggersOptions.tsx @@ -0,0 +1,89 @@ +import styled from 'styled-components'; + +import { STRING_KEYS } from '@/constants/localization'; + +import { useEnvFeatures } from '@/hooks/useEnvFeatures'; +import { useStringGetter } from '@/hooks/useStringGetter'; + +import { layoutMixins } from '@/styles/layoutMixins'; + +import { HorizontalSeparatorFiller } from '@/components/Separator'; + +import { LimitPriceInputs } from './LimitPriceInputs'; +import { OrderSizeInput } from './OrderSizeInput'; + +type ElementProps = { + symbol: string; + existsLimitOrder: boolean; + size: number | null; + positionSize: number | null; + differingOrderSizes: boolean; + multipleTakeProfitOrders: boolean; + multipleStopLossOrders: boolean; + stepSizeDecimals?: number; + tickSizeDecimals?: number; +}; + +type StyleProps = { + className?: string; +}; + +export const AdvancedTriggersOptions = ({ + symbol, + existsLimitOrder, + size, + positionSize, + differingOrderSizes, + multipleTakeProfitOrders, + multipleStopLossOrders, + stepSizeDecimals, + tickSizeDecimals, + className, +}: ElementProps & StyleProps) => { + const stringGetter = useStringGetter(); + const { isSlTpLimitOrdersEnabled } = useEnvFeatures(); + + return ( + <$Container> + <$Header> + {stringGetter({ key: STRING_KEYS.ADVANCED })} + <HorizontalSeparatorFiller /> + </$Header> + <$Content> + <OrderSizeInput + className={className} + differingOrderSizes={differingOrderSizes} + symbol={symbol} + size={size} + positionSize={positionSize} + stepSizeDecimals={stepSizeDecimals} + /> + {isSlTpLimitOrdersEnabled && ( + <LimitPriceInputs + className={className} + existsLimitOrder={existsLimitOrder} + multipleTakeProfitOrders={multipleTakeProfitOrders} + multipleStopLossOrders={multipleStopLossOrders} + tickSizeDecimals={tickSizeDecimals} + /> + )} + </$Content> + </$Container> + ); +}; +const $Container = styled.div` + ${layoutMixins.column} +`; + +const $Header = styled.h3` + ${layoutMixins.inlineRow} + font: var(--font-small-medium); + color: var(--color-text-0); + + margin-bottom: 0.5rem; +`; + +const $Content = styled.div` + display: grid; + gap: 0.5em; +`; diff --git a/src/views/forms/TriggersForm/LimitPriceInputs.tsx b/src/views/forms/TriggersForm/LimitPriceInputs.tsx new file mode 100644 index 000000000..8967c099e --- /dev/null +++ b/src/views/forms/TriggersForm/LimitPriceInputs.tsx @@ -0,0 +1,146 @@ +import { useState } from 'react'; + +import { shallowEqual, useSelector } from 'react-redux'; +import styled from 'styled-components'; + +import { + AbacusOrderType, + TriggerOrdersInputField, + TriggerOrdersInputFields, +} from '@/constants/abacus'; +import { STRING_KEYS } from '@/constants/localization'; +import { USD_DECIMALS } from '@/constants/numbers'; + +import { useStringGetter } from '@/hooks/useStringGetter'; + +import { layoutMixins } from '@/styles/layoutMixins'; + +import { Checkbox } from '@/components/Checkbox'; +import { Collapsible } from '@/components/Collapsible'; +import { FormInput } from '@/components/FormInput'; +import { Tag } from '@/components/Tag'; +import { WithTooltip } from '@/components/WithTooltip'; + +import { getTriggerOrdersInputs } from '@/state/inputsSelectors'; + +import abacusStateManager from '@/lib/abacus'; +import { MustBigNumber } from '@/lib/numbers'; + +type ElementProps = { + existsLimitOrder: boolean; + multipleTakeProfitOrders: boolean; + multipleStopLossOrders: boolean; + tickSizeDecimals?: number; +}; + +type StyleProps = { + className?: string; +}; + +export const LimitPriceInputs = ({ + existsLimitOrder, + multipleTakeProfitOrders, + multipleStopLossOrders, + tickSizeDecimals, + className, +}: ElementProps & StyleProps) => { + const stringGetter = useStringGetter(); + + const { stopLossOrder, takeProfitOrder } = + useSelector(getTriggerOrdersInputs, shallowEqual) || {}; + + const [shouldShowLimitPrice, setShouldShowLimitPrice] = useState(existsLimitOrder); + + const decimals = tickSizeDecimals ?? USD_DECIMALS; + + const onToggleLimit = (isLimitChecked: boolean) => { + if (!isLimitChecked) { + abacusStateManager.setTriggerOrdersValue({ + value: AbacusOrderType.takeProfitMarket.rawValue, + field: TriggerOrdersInputField.takeProfitOrderType, + }); + abacusStateManager.setTriggerOrdersValue({ + value: null, + field: TriggerOrdersInputField.takeProfitLimitPrice, + }); + abacusStateManager.setTriggerOrdersValue({ + value: AbacusOrderType.stopMarket.rawValue, + field: TriggerOrdersInputField.stopLossOrderType, + }); + abacusStateManager.setTriggerOrdersValue({ + value: null, + field: TriggerOrdersInputField.stopLossLimitPrice, + }); + } + setShouldShowLimitPrice(isLimitChecked); + }; + + const onLimitInput = + (field: TriggerOrdersInputFields) => + ({ floatValue, formattedValue }: { floatValue?: number; formattedValue: string }) => { + const newLimitPrice = MustBigNumber(floatValue).toFixed(decimals); + + abacusStateManager.setTriggerOrdersValue({ + value: formattedValue === '' || newLimitPrice === 'NaN' ? null : newLimitPrice, + field, + }); + }; + + return ( + <> + <Collapsible + className={className} + slotTrigger={ + <Checkbox + id="sltp-limit" + checked={shouldShowLimitPrice} + onCheckedChange={onToggleLimit} + /> + } + open={shouldShowLimitPrice} + label={ + <WithTooltip tooltip="limit-price"> + {stringGetter({ key: STRING_KEYS.LIMIT_PRICE })} + </WithTooltip> + } + > + { + <$InputsRow> + {!multipleTakeProfitOrders && ( + <FormInput + id="TP-limit" + decimals={decimals} + value={takeProfitOrder?.price?.limitPrice} + label={ + <> + {stringGetter({ key: STRING_KEYS.TP_LIMIT })} + <Tag>USD</Tag> + </> + } + onInput={onLimitInput(TriggerOrdersInputField.takeProfitLimitPrice)} + /> + )} + {!multipleStopLossOrders && ( + <FormInput + id="SL-limit" + decimals={decimals} + value={stopLossOrder?.price?.limitPrice} + label={ + <> + {stringGetter({ key: STRING_KEYS.SL_LIMIT })} + <Tag>USD</Tag> + </> + } + onInput={onLimitInput(TriggerOrdersInputField.stopLossLimitPrice)} + /> + )} + </$InputsRow> + } + </Collapsible> + </> + ); +}; +const $InputsRow = styled.span` + ${layoutMixins.flexEqualColumns} + gap: 1ch; +`; diff --git a/src/views/forms/TriggersForm/OrderSizeInput.tsx b/src/views/forms/TriggersForm/OrderSizeInput.tsx new file mode 100644 index 000000000..2004a4deb --- /dev/null +++ b/src/views/forms/TriggersForm/OrderSizeInput.tsx @@ -0,0 +1,131 @@ +import { useEffect, useState } from 'react'; + +import styled from 'styled-components'; + +import { TriggerOrdersInputField } from '@/constants/abacus'; +import { STRING_KEYS } from '@/constants/localization'; +import { TOKEN_DECIMALS } from '@/constants/numbers'; + +import { useStringGetter } from '@/hooks/useStringGetter'; + +import { Checkbox } from '@/components/Checkbox'; +import { Collapsible } from '@/components/Collapsible'; +import { FormInput } from '@/components/FormInput'; +import { InputType } from '@/components/Input'; +import { Tag } from '@/components/Tag'; +import { WithTooltip } from '@/components/WithTooltip'; + +import abacusStateManager from '@/lib/abacus'; +import { MustBigNumber } from '@/lib/numbers'; + +import { OrderSizeSlider } from './OrderSizeSlider'; + +type ElementProps = { + symbol: string; + differingOrderSizes: boolean; + size: number | null; + positionSize: number | null; + stepSizeDecimals?: number; +}; + +type StyleProps = { + className?: string; +}; + +export const OrderSizeInput = ({ + symbol, + differingOrderSizes, + size, + positionSize, + stepSizeDecimals, + className, +}: ElementProps & StyleProps) => { + const stringGetter = useStringGetter(); + + const [shouldShowCustomAmount, setShouldShowCustomAmount] = useState(false); + const [orderSize, setOrderSize] = useState(size); + + useEffect(() => { + setOrderSize(size); + setShouldShowCustomAmount(!!(size && size !== positionSize)); + }, [size]); + + const onCustomAmountToggle = (isToggled: boolean) => { + if (!isToggled) { + // Default to full position size + abacusStateManager.setTriggerOrdersValue({ + value: MustBigNumber(positionSize).toString(), + field: TriggerOrdersInputField.size, + }); + } + setShouldShowCustomAmount(isToggled); + }; + + const setAbacusSize = (newSize: number | null) => { + const newSizeString = MustBigNumber( + newSize && positionSize ? Math.min(positionSize, newSize) : newSize + ).toString(); + + abacusStateManager.setTriggerOrdersValue({ + value: newSize !== null ? newSizeString : null, + field: TriggerOrdersInputField.size, + }); + }; + + const onSizeInput = ({ floatValue }: { floatValue?: number }) => { + if (floatValue) { + setOrderSize(Math.min(floatValue, positionSize ?? 0)); + setAbacusSize(floatValue); + } else { + setOrderSize(null); + setAbacusSize(null); + } + }; + + return ( + <Collapsible + slotTrigger={ + <WithTooltip tooltip={differingOrderSizes ? 'unequal-order-sizes' : undefined}> + <Checkbox + id="order-size" + disabled={differingOrderSizes} + checked={shouldShowCustomAmount} + onCheckedChange={onCustomAmountToggle} + /> + </WithTooltip> + } + label={ + <WithTooltip tooltip="custom-amount"> + {stringGetter({ key: STRING_KEYS.CUSTOM_AMOUNT })} + </WithTooltip> + } + open={shouldShowCustomAmount} + > + <$SizeInputRow> + <$OrderSizeSlider + setAbacusSize={(sizeString: string) => setAbacusSize(parseFloat(sizeString))} + setOrderSizeInput={(sizeString: string) => setOrderSize(parseFloat(sizeString))} + size={orderSize} + positionSize={positionSize ?? undefined} + stepSizeDecimals={stepSizeDecimals ?? TOKEN_DECIMALS} + className={className} + /> + <FormInput + type={InputType.Number} + value={orderSize?.toString()} + slotRight={<Tag>{symbol}</Tag>} + onInput={onSizeInput} + /> + </$SizeInputRow> + </Collapsible> + ); +}; +const $OrderSizeSlider = styled(OrderSizeSlider)` + width: 100%; +`; + +const $SizeInputRow = styled.div` + display: flex; + align-items: center; + gap: 0.25rem; +`; diff --git a/src/views/forms/TriggersForm/OrderSizeSlider.stories.tsx b/src/views/forms/TriggersForm/OrderSizeSlider.stories.tsx new file mode 100644 index 000000000..01201c368 --- /dev/null +++ b/src/views/forms/TriggersForm/OrderSizeSlider.stories.tsx @@ -0,0 +1,43 @@ +import { useState } from 'react'; + +import type { Story } from '@ladle/react'; +import styled from 'styled-components'; + +import { TOKEN_DECIMALS } from '@/constants/numbers'; + +import { breakpoints } from '@/styles'; + +import { OrderSizeSlider } from './OrderSizeSlider'; +import { StoryWrapper } from '.ladle/components'; + +export const OrderSizeSliderStory: Story<Parameters<typeof OrderSizeSlider>[0]> = (args) => { + const [size, setSize] = useState(20); + + return ( + <StoryWrapper> + <$Container> + <OrderSizeSlider + setAbacusSize={() => null} + setOrderSizeInput={(sizeString: string) => setSize(parseFloat(sizeString))} + size={size} + stepSizeDecimals={TOKEN_DECIMALS} + positionSize={100} + /> + </$Container> + </StoryWrapper> + ); +}; +const $Container = styled.div` + height: 4.625rem; + margin: auto; + position: relative; + + display: grid; + grid-template-columns: minmax(0, 23.75rem); + justify-content: center; + padding: 2rem 2rem 0; + + @media ${breakpoints.desktopLarge} { + padding: 3rem 2rem 0; + } +`; diff --git a/src/views/forms/TriggersForm/OrderSizeSlider.tsx b/src/views/forms/TriggersForm/OrderSizeSlider.tsx new file mode 100644 index 000000000..b01e2adce --- /dev/null +++ b/src/views/forms/TriggersForm/OrderSizeSlider.tsx @@ -0,0 +1,80 @@ +import { useCallback } from 'react'; + +import _ from 'lodash'; +import styled from 'styled-components'; + +import { Slider } from '@/components/Slider'; + +import { MustBigNumber } from '@/lib/numbers'; + +type ElementProps = { + setAbacusSize: (value: string) => void; + setOrderSizeInput: (value: string) => void; + size: number | null; + positionSize?: number; + stepSizeDecimals: number; +}; + +type StyleProps = { + className?: string; +}; + +export const OrderSizeSlider = ({ + setOrderSizeInput, + setAbacusSize, + size, + positionSize, + stepSizeDecimals, + className, +}: ElementProps & StyleProps) => { + const step = positionSize ? Math.pow(10, Math.floor(Math.log10(positionSize) - 1)) : 0.1; + const maxSize = positionSize ?? 0; + const currSize = size ?? 0; + + // Debounced slightly to avoid excessive updates to Abacus while still providing a smooth slide + const debouncedSetAbacusSize = useCallback( + _.debounce((newSize: string) => { + setAbacusSize(newSize); + }, 50), + [] + ); + + const onSliderDrag = ([newSize]: number[]) => { + const roundedSize = MustBigNumber(newSize).toFixed(stepSizeDecimals); + setOrderSizeInput(roundedSize); + debouncedSetAbacusSize(roundedSize); + }; + + const onValueCommit = ([newSize]: number[]) => { + const roundedSize = MustBigNumber(newSize).toFixed(stepSizeDecimals); + setOrderSizeInput(roundedSize); + // Ensure Abacus is updated with the latest, committed value + debouncedSetAbacusSize.cancel(); + setAbacusSize(roundedSize); + }; + + return ( + <$SliderContainer className={className}> + <$Slider + label="PositionSize" + min={0} + max={maxSize} + step={step} + onSliderDrag={onSliderDrag} + onValueCommit={onValueCommit} + value={Math.min(currSize, maxSize)} + /> + </$SliderContainer> + ); +}; +const $SliderContainer = styled.div` + height: 1.375rem; +`; +const $Slider = styled(Slider)` + --slider-track-backgroundColor: var(--color-layer-4); + --slider-track-background: linear-gradient( + 90deg, + var(--color-layer-6) 0%, + var(--color-text-0) 100% + ); +`; diff --git a/src/views/forms/TriggersForm/TriggerOrderInputs.tsx b/src/views/forms/TriggersForm/TriggerOrderInputs.tsx new file mode 100644 index 000000000..a45738550 --- /dev/null +++ b/src/views/forms/TriggersForm/TriggerOrderInputs.tsx @@ -0,0 +1,324 @@ +import { useState } from 'react'; + +import styled from 'styled-components'; + +import { + Nullable, + TriggerOrdersInputPrice, + type TriggerOrdersInputFields, +} from '@/constants/abacus'; +import { ButtonAction, ButtonSize, ButtonType } from '@/constants/buttons'; +import { STRING_KEYS } from '@/constants/localization'; +import { NumberSign, PERCENT_DECIMALS, USD_DECIMALS } from '@/constants/numbers'; + +import { useStringGetter } from '@/hooks/useStringGetter'; + +import { layoutMixins } from '@/styles/layoutMixins'; + +import { Button } from '@/components/Button'; +import { DropdownSelectMenu } from '@/components/DropdownSelectMenu'; +import { FormInput } from '@/components/FormInput'; +import { Icon, IconName } from '@/components/Icon'; +import { InputType } from '@/components/Input'; +import { Output, OutputType, ShowSign } from '@/components/Output'; +import { VerticalSeparator } from '@/components/Separator'; +import { Tag } from '@/components/Tag'; +import { WithTooltip } from '@/components/WithTooltip'; + +import abacusStateManager from '@/lib/abacus'; +import { MustBigNumber, getNumberSign } from '@/lib/numbers'; + +type InputChangeType = InputType.Currency | InputType.Percent; + +type InputOrderFields = { + triggerPriceField: TriggerOrdersInputFields; + percentDiffField: TriggerOrdersInputFields; + usdcDiffField: TriggerOrdersInputFields; +}; + +type ElementProps = { + symbol: string; + tooltipId: string; + stringKeys: { + header: string; + headerDiff: string; + price: string; + output: string; + }; + inputOrderFields: InputOrderFields; + isMultiple: boolean; + isNegativeDiff: boolean; + price: Nullable<TriggerOrdersInputPrice>; + tickSizeDecimals?: number; + onViewOrdersClick: () => void; +}; + +export const TriggerOrderInputs = ({ + symbol, + tooltipId, + stringKeys, + inputOrderFields, + isMultiple, + isNegativeDiff, + price, + tickSizeDecimals, + onViewOrdersClick, +}: ElementProps) => { + const stringGetter = useStringGetter(); + + const [inputType, setInputType] = useState<InputChangeType>(InputType.Percent); + + const { triggerPrice, percentDiff, usdcDiff } = price ?? {}; + + const clearPriceInputFields = () => { + abacusStateManager.setTriggerOrdersValue({ + value: null, + field: inputOrderFields.triggerPriceField, + }); + abacusStateManager.setTriggerOrdersValue({ + value: null, + field: inputOrderFields.percentDiffField, + }); + abacusStateManager.setTriggerOrdersValue({ + value: null, + field: inputOrderFields.usdcDiffField, + }); + }; + + const onTriggerPriceInput = ({ + floatValue, + formattedValue, + }: { + floatValue?: number; + formattedValue: string; + }) => { + const newPrice = MustBigNumber(floatValue).toFixed(tickSizeDecimals ?? USD_DECIMALS); + abacusStateManager.setTriggerOrdersValue({ + value: formattedValue === '' || newPrice === 'NaN' ? null : newPrice, + field: inputOrderFields.triggerPriceField, + }); + }; + + const onPercentageDiffInput = ({ + floatValue, + formattedValue, + }: { + floatValue?: number; + formattedValue: string; + }) => { + const newPercentage = MustBigNumber(floatValue).toFixed(PERCENT_DECIMALS); + abacusStateManager.setTriggerOrdersValue({ + value: formattedValue === '' || newPercentage === 'NaN' ? null : newPercentage, + field: inputOrderFields.percentDiffField, + }); + }; + + const onUsdcDiffInput = ({ + floatValue, + formattedValue, + }: { + floatValue?: number; + formattedValue: string; + }) => { + const newAmount = MustBigNumber(floatValue).toFixed(tickSizeDecimals ?? USD_DECIMALS); + abacusStateManager.setTriggerOrdersValue({ + value: formattedValue === '' || newAmount === 'NaN' ? null : newAmount, + field: inputOrderFields.usdcDiffField, + }); + }; + + const getDecimalsForInputType = (inputType: InputChangeType) => { + switch (inputType) { + case InputType.Currency: + return USD_DECIMALS; + case InputType.Percent: + return PERCENT_DECIMALS; + } + }; + + const getOutputDiffData = () => { + const formattedPercentDiff = percentDiff + ? MustBigNumber(percentDiff).div(100).toNumber() + : null; + + const outputType = inputType === InputType.Percent ? OutputType.Fiat : OutputType.Percent; + const value = outputType === OutputType.Fiat ? usdcDiff : formattedPercentDiff; + + return { + outputType, + outputValue: value && isNegativeDiff ? value * -1 : value, + }; + }; + + const signedOutput = () => { + const { outputType, outputValue } = getOutputDiffData(); + return ( + <$SignedOutput + sign={getNumberSign(outputValue)} + showSign={ShowSign.Both} + type={outputType} + value={outputValue} + /> + ); + }; + + const priceDiffSelector = ({ + value, + onValueChange, + }: { + value: InputChangeType; + onValueChange: (value: InputChangeType) => void; + }) => ( + <DropdownSelectMenu + value={value} + items={[ + { + value: InputType.Percent, + label: '%', + }, + { + value: InputType.Currency, + label: '$', + }, + ]} + onValueChange={onValueChange} + /> + ); + + const multipleOrdersButton = () => ( + <$MultipleOrdersContainer> + {stringGetter({ key: STRING_KEYS.MULTIPLE_ORDERS_FOUND })} + <$ViewAllButton action={ButtonAction.Navigation} onClick={onViewOrdersClick}> + {stringGetter({ key: STRING_KEYS.VIEW_ORDERS })} + {<$ArrowIcon iconName={IconName.Arrow} />} + </$ViewAllButton> + </$MultipleOrdersContainer> + ); + + const headerTooltip = () => ( + <WithTooltip tooltip={tooltipId}>{stringGetter({ key: stringKeys.header })}</WithTooltip> + ); + + return isMultiple ? ( + <$TriggerRow key={tooltipId}> + <$Heading>{headerTooltip()}</$Heading> + <$InlineRow>{multipleOrdersButton()}</$InlineRow> + </$TriggerRow> + ) : ( + <$TriggerRow key={tooltipId}> + <$Heading> + {headerTooltip()} + <$HeadingInfo> + {stringGetter({ key: stringKeys.headerDiff })} + {signedOutput()} + <$VerticalSeparator /> + <$ClearButton + action={ButtonAction.Destroy} + size={ButtonSize.Base} + type={ButtonType.Button} + onClick={clearPriceInputFields} + > + {stringGetter({ key: STRING_KEYS.CLEAR })} + </$ClearButton> + </$HeadingInfo> + </$Heading> + <$InlineRow> + <FormInput + id={`${tooltipId}-price`} + label={ + <> + {stringGetter({ key: stringKeys.price })} <Tag>{symbol}</Tag> + </> + } + type={InputType.Currency} + decimals={tickSizeDecimals} + value={triggerPrice} + onInput={onTriggerPriceInput} + allowNegative={true} + /> + <FormInput + id={`${tooltipId}-priceDiff`} + label={stringGetter({ key: stringKeys.output })} + decimals={getDecimalsForInputType(inputType)} + type={inputType} + slotRight={priceDiffSelector({ + value: inputType, + onValueChange: (value: InputChangeType) => setInputType(value), + })} + value={ + inputType === InputType.Percent + ? percentDiff + ? MustBigNumber(percentDiff).toFixed(PERCENT_DECIMALS) + : null + : usdcDiff + } + onInput={inputType === InputType.Percent ? onPercentageDiffInput : onUsdcDiffInput} + allowNegative={true} + /> + </$InlineRow> + </$TriggerRow> + ); +}; +const $Heading = styled.div` + ${layoutMixins.spacedRow} +`; + +const $HeadingInfo = styled.div` + ${layoutMixins.row} + font: var(--font-base-book); + gap: 0.5em; + color: var(--color-text-0); +`; + +const $SignedOutput = styled(Output)<{ sign: NumberSign }>` + color: ${({ sign }) => + ({ + [NumberSign.Positive]: `var(--color-positive)`, + [NumberSign.Negative]: `var(--color-negative)`, + [NumberSign.Neutral]: `var(--color-text-2)`, + }[sign])}; +`; + +const $VerticalSeparator = styled(VerticalSeparator)` + && { + height: 1.5rem; + } +`; + +const $ClearButton = styled(Button)` + --button-backgroundColor: transparent; + --button-border: none; + --button-height: 1.5rem; + --button-textColor: var(--color-red); + --button-padding: 0; +`; + +const $TriggerRow = styled.div` + ${layoutMixins.column} + gap: 1ch; +`; + +const $InlineRow = styled.span` + ${layoutMixins.flexEqualColumns} + gap: 1ch; +`; + +const $MultipleOrdersContainer = styled.div` + display: flex; + align-items: center; + justify-content: space-between; + padding: 0.25em 0.625em; + + border: var(--default-border-width) solid var(--color-border); + border-radius: 0.5em; + + color: var(--color-text-2); +`; + +const $ViewAllButton = styled(Button)` + color: var(--color-accent); +`; + +const $ArrowIcon = styled(Icon)` + stroke-width: 2; +`; diff --git a/src/views/forms/TriggersForm/TriggerOrdersInputs.tsx b/src/views/forms/TriggersForm/TriggerOrdersInputs.tsx new file mode 100644 index 000000000..fa8012c5c --- /dev/null +++ b/src/views/forms/TriggersForm/TriggerOrdersInputs.tsx @@ -0,0 +1,72 @@ +import { shallowEqual, useSelector } from 'react-redux'; + +import { TriggerOrdersInputField } from '@/constants/abacus'; +import { STRING_KEYS } from '@/constants/localization'; + +import { getTriggerOrdersInputs } from '@/state/inputsSelectors'; + +import { TriggerOrderInputs } from './TriggerOrderInputs'; + +type ElementProps = { + symbol: string; + multipleTakeProfitOrders: boolean; + multipleStopLossOrders: boolean; + tickSizeDecimals?: number; + onViewOrdersClick: () => void; +}; + +export const TriggerOrdersInputs = ({ + symbol, + multipleTakeProfitOrders, + multipleStopLossOrders, + tickSizeDecimals, + onViewOrdersClick, +}: ElementProps) => { + const { stopLossOrder, takeProfitOrder } = + useSelector(getTriggerOrdersInputs, shallowEqual) || {}; + + return ( + <> + <TriggerOrderInputs + symbol={symbol} + tooltipId="take-profit" + stringKeys={{ + header: STRING_KEYS.TAKE_PROFIT, + headerDiff: STRING_KEYS.PROFIT_COLON, + price: STRING_KEYS.TP_PRICE, + output: STRING_KEYS.GAIN, + }} + inputOrderFields={{ + triggerPriceField: TriggerOrdersInputField.takeProfitPrice, + percentDiffField: TriggerOrdersInputField.takeProfitPercentDiff, + usdcDiffField: TriggerOrdersInputField.takeProfitUsdcDiff, + }} + isMultiple={multipleTakeProfitOrders} + isNegativeDiff={false} + price={takeProfitOrder?.price} + tickSizeDecimals={tickSizeDecimals} + onViewOrdersClick={onViewOrdersClick} + /> + <TriggerOrderInputs + symbol={symbol} + tooltipId="stop-loss" + stringKeys={{ + header: STRING_KEYS.STOP_LOSS, + headerDiff: STRING_KEYS.LOSS_COLON, + price: STRING_KEYS.SL_PRICE, + output: STRING_KEYS.LOSS, + }} + inputOrderFields={{ + triggerPriceField: TriggerOrdersInputField.stopLossPrice, + percentDiffField: TriggerOrdersInputField.stopLossPercentDiff, + usdcDiffField: TriggerOrdersInputField.stopLossUsdcDiff, + }} + isMultiple={multipleStopLossOrders} + isNegativeDiff={true} + price={stopLossOrder?.price} + tickSizeDecimals={tickSizeDecimals} + onViewOrdersClick={onViewOrdersClick} + /> + </> + ); +}; diff --git a/src/views/forms/TriggersForm/TriggersForm.tsx b/src/views/forms/TriggersForm/TriggersForm.tsx new file mode 100644 index 000000000..73bb24888 --- /dev/null +++ b/src/views/forms/TriggersForm/TriggersForm.tsx @@ -0,0 +1,188 @@ +import { FormEvent } from 'react'; + +import { useDispatch, useSelector } from 'react-redux'; +import styled from 'styled-components'; + +import { ErrorType, ValidationError, type SubaccountOrder } from '@/constants/abacus'; +import { ButtonAction, ButtonType } from '@/constants/buttons'; +import { STRING_KEYS } from '@/constants/localization'; + +import { useStringGetter } from '@/hooks/useStringGetter'; +import { useSubaccount } from '@/hooks/useSubaccount'; +import { useTriggerOrdersFormInputs } from '@/hooks/useTriggerOrdersFormInputs'; + +import { layoutMixins } from '@/styles/layoutMixins'; + +import { Button } from '@/components/Button'; +import { Icon, IconName } from '@/components/Icon'; +import { Output, OutputType } from '@/components/Output'; +import { WithTooltip } from '@/components/WithTooltip'; + +import { calculateIsAccountViewOnly } from '@/state/accountCalculators'; +import { getPositionDetails } from '@/state/accountSelectors'; +import { closeDialog } from '@/state/dialogs'; + +import { getTradeInputAlert } from '@/lib/tradeData'; + +import { AdvancedTriggersOptions } from './AdvancedTriggersOptions'; +import { TriggerOrdersInputs } from './TriggerOrdersInputs'; + +type ElementProps = { + marketId: string; + stopLossOrders: SubaccountOrder[]; + takeProfitOrders: SubaccountOrder[]; + onViewOrdersClick: () => void; +}; + +export const TriggersForm = ({ + marketId, + stopLossOrders, + takeProfitOrders, + onViewOrdersClick, +}: ElementProps) => { + const stringGetter = useStringGetter(); + const dispatch = useDispatch(); + + const { placeTriggerOrders } = useSubaccount(); + const isAccountViewOnly = useSelector(calculateIsAccountViewOnly); + + const { asset, entryPrice, size, stepSizeDecimals, tickSizeDecimals, oraclePrice } = + useSelector(getPositionDetails(marketId)) || {}; + + const { + differingOrderSizes, + inputErrors, + inputSize, + existingStopLossOrder, + existingTakeProfitOrder, + existsLimitOrder, + } = useTriggerOrdersFormInputs({ + marketId, + positionSize: size?.current ?? null, + stopLossOrder: stopLossOrders.length === 1 ? stopLossOrders[0] : undefined, + takeProfitOrder: takeProfitOrders.length === 1 ? takeProfitOrders[0] : undefined, + }); + + const symbol = asset?.id ?? ''; + const multipleTakeProfitOrders = takeProfitOrders.length > 1; + const multipleStopLossOrders = stopLossOrders.length > 1; + + const hasInputErrors = inputErrors?.some( + (error: ValidationError) => error.type !== ErrorType.warning + ); + const inputAlert = getTradeInputAlert({ + abacusInputErrors: inputErrors ?? [], + stringGetter, + stepSizeDecimals, + tickSizeDecimals, + }); + + // The triggers form does not support editing multiple stop loss or take profit orders - so if both have + // multiple, we hide the triggers button CTA + const existsEditableOrCreatableOrders = !(multipleTakeProfitOrders && multipleStopLossOrders); + + const priceInfo = ( + <$PriceBox> + <$PriceRow> + <$PriceLabel>{stringGetter({ key: STRING_KEYS.AVG_ENTRY_PRICE })}</$PriceLabel> + <$Price + type={OutputType.Fiat} + value={entryPrice?.current} + fractionDigits={tickSizeDecimals} + /> + </$PriceRow> + <$PriceRow> + <$PriceLabel>{stringGetter({ key: STRING_KEYS.ORACLE_PRICE })}</$PriceLabel> + <$Price type={OutputType.Fiat} value={oraclePrice} fractionDigits={tickSizeDecimals} /> + </$PriceRow> + </$PriceBox> + ); + + const onSubmitOrders = async () => { + placeTriggerOrders(); + dispatch(closeDialog()); + }; + + const onSubmit = async (e: FormEvent) => { + e.preventDefault(); + onSubmitOrders(); + }; + + return ( + <$Form onSubmit={onSubmit}> + {priceInfo} + <TriggerOrdersInputs + symbol={symbol} + multipleTakeProfitOrders={multipleTakeProfitOrders} + multipleStopLossOrders={multipleStopLossOrders} + tickSizeDecimals={tickSizeDecimals} + onViewOrdersClick={onViewOrdersClick} + /> + {existsEditableOrCreatableOrders && ( + <> + <AdvancedTriggersOptions + symbol={symbol} + existsLimitOrder={existsLimitOrder} + size={inputSize} + positionSize={size?.current ? Math.abs(size?.current) : null} + differingOrderSizes={differingOrderSizes} + multipleTakeProfitOrders={multipleTakeProfitOrders} + multipleStopLossOrders={multipleStopLossOrders} + stepSizeDecimals={stepSizeDecimals} + tickSizeDecimals={tickSizeDecimals} + /> + <WithTooltip tooltipString={hasInputErrors ? inputAlert?.alertString : undefined}> + <$Button + action={ButtonAction.Primary} + type={ButtonType.Submit} + state={{ isDisabled: hasInputErrors || isAccountViewOnly }} + slotLeft={hasInputErrors ? <$WarningIcon iconName={IconName.Warning} /> : undefined} + > + {hasInputErrors + ? stringGetter({ + key: inputAlert?.actionStringKey ?? STRING_KEYS.UNAVAILABLE, + }) + : !!(existingStopLossOrder || existingTakeProfitOrder) + ? stringGetter({ key: STRING_KEYS.ENTER_TRIGGERS }) + : stringGetter({ key: STRING_KEYS.ADD_TRIGGERS })} + </$Button> + </WithTooltip> + </> + )} + </$Form> + ); +}; +const $Form = styled.form` + ${layoutMixins.column} + gap: 1.25ch; +`; + +const $PriceBox = styled.div` + background-color: var(--color-layer-2); + border-radius: 0.5em; + font: var(--font-base-medium); + + display: grid; + gap: 0.625em; + padding: 0.625em 0.75em; +`; + +const $PriceRow = styled.div` + ${layoutMixins.spacedRow}; +`; + +const $PriceLabel = styled.h3` + color: var(--color-text-0); +`; + +const $Price = styled(Output)` + color: var(--color-text-2); +`; + +const $Button = styled(Button)` + width: 100%; +`; + +const $WarningIcon = styled(Icon)` + color: var(--color-warning); +`; diff --git a/src/views/menus/AccountMenu.tsx b/src/views/menus/AccountMenu.tsx index 5dd57324a..cfd9f9878 100644 --- a/src/views/menus/AccountMenu.tsx +++ b/src/views/menus/AccountMenu.tsx @@ -1,76 +1,109 @@ import { ElementType, memo } from 'react'; -import styled, { AnyStyledComponent, css } from 'styled-components'; -import { shallowEqual, useDispatch, useSelector } from 'react-redux'; + +import { usePrivy } from '@privy-io/react-auth'; import type { Dispatch } from '@reduxjs/toolkit'; +import { shallowEqual, useDispatch, useSelector } from 'react-redux'; +import styled, { css } from 'styled-components'; import { OnboardingState } from '@/constants/account'; import { ButtonAction, ButtonShape, ButtonSize, ButtonType } from '@/constants/buttons'; +import { ComplianceStates } from '@/constants/compliance'; import { DialogTypes } from '@/constants/dialogs'; -import { STRING_KEYS, StringGetterFunction, TOOLTIP_STRING_KEYS } from '@/constants/localization'; -import { DydxChainAsset, wallets } from '@/constants/wallets'; - -import { layoutMixins } from '@/styles/layoutMixins'; -import { headerMixins } from '@/styles/headerMixins'; - import { - useAccounts, - useBreakpoints, - useTokenConfigs, - useStringGetter, - useAccountBalance, - useURLConfigs, -} from '@/hooks'; - -import { OnboardingTriggerButton } from '@/views/dialogs/OnboardingTriggerButton'; + STRING_KEYS, + TOOLTIP_STRING_KEYS, + type StringGetterFunction, +} from '@/constants/localization'; +import { isDev } from '@/constants/networks'; +import { DydxChainAsset, WalletType, wallets } from '@/constants/wallets'; + +import { useAccountBalance } from '@/hooks/useAccountBalance'; +import { useAccounts } from '@/hooks/useAccounts'; +import { useBreakpoints } from '@/hooks/useBreakpoints'; +import { useComplianceState } from '@/hooks/useComplianceState'; +import { useStringGetter } from '@/hooks/useStringGetter'; +import { useTokenConfigs } from '@/hooks/useTokenConfigs'; +import { useURLConfigs } from '@/hooks/useURLConfigs'; + +import { DiscordIcon, GoogleIcon, TwitterIcon } from '@/icons'; +import { headerMixins } from '@/styles/headerMixins'; +import { layoutMixins } from '@/styles/layoutMixins'; import { AssetIcon } from '@/components/AssetIcon'; import { CopyButton } from '@/components/CopyButton'; import { DropdownMenu } from '@/components/DropdownMenu'; -import { Output, OutputType } from '@/components/Output'; import { Icon, IconName } from '@/components/Icon'; import { IconButton } from '@/components/IconButton'; +import { Output, OutputType } from '@/components/Output'; import { WithTooltip } from '@/components/WithTooltip'; - -import { AppTheme } from '@/state/configs'; -import { openDialog } from '@/state/dialogs'; +import { OnboardingTriggerButton } from '@/views/dialogs/OnboardingTriggerButton'; import { getOnboardingState, getSubaccount } from '@/state/accountSelectors'; +import { AppTheme } from '@/state/configs'; import { getAppTheme } from '@/state/configsSelectors'; +import { openDialog } from '@/state/dialogs'; import { isTruthy } from '@/lib/isTruthy'; -import { truncateAddress } from '@/lib/wallet'; import { MustBigNumber } from '@/lib/numbers'; +import { truncateAddress } from '@/lib/wallet'; + import { getMobileAppUrl } from '../dialogs/MobileDownloadDialog'; export const AccountMenu = () => { const stringGetter = useStringGetter(); const { mintscanBase } = useURLConfigs(); const { isTablet } = useBreakpoints(); + const { complianceState } = useComplianceState(); + const dispatch = useDispatch(); const onboardingState = useSelector(getOnboardingState); - const { freeCollateral } = useSelector(getSubaccount, shallowEqual) || {}; + const { freeCollateral } = useSelector(getSubaccount, shallowEqual) ?? {}; + const { nativeTokenBalance } = useAccountBalance(); const { usdcLabel, chainTokenLabel } = useTokenConfigs(); const theme = useSelector(getAppTheme); const { evmAddress, walletType, dydxAddress, hdKey } = useAccounts(); - const usdcBalance = freeCollateral?.current || 0; + const privy = usePrivy(); + const { google, discord, twitter } = privy?.user ?? {}; + + const usdcBalance = freeCollateral?.current ?? 0; const onRecoverKeys = () => { dispatch(openDialog({ type: DialogTypes.Onboarding })); }; + let walletIcon; + if (onboardingState === OnboardingState.WalletConnected) { + walletIcon = <$WarningIcon iconName={IconName.Warning} />; + } else if ( + onboardingState === OnboardingState.AccountConnected && + walletType === WalletType.Privy + ) { + if (google) { + walletIcon = <Icon iconComponent={GoogleIcon as ElementType} />; + } else if (discord) { + walletIcon = <Icon iconComponent={DiscordIcon as ElementType} />; + } else if (twitter) { + walletIcon = <Icon iconComponent={TwitterIcon as ElementType} />; + } else { + walletIcon = <Icon iconComponent={wallets[walletType].icon as ElementType} />; + } + } else if (walletType) { + walletIcon = <Icon iconComponent={wallets[walletType].icon as ElementType} />; + } + return onboardingState === OnboardingState.Disconnected ? ( <OnboardingTriggerButton size={ButtonSize.XSmall} /> ) : ( - <Styled.DropdownMenu + <$DropdownMenu slotTopContent={ onboardingState === OnboardingState.AccountConnected && ( - <Styled.AccountInfo> - <Styled.AddressRow> - <Styled.AssetIcon symbol="DYDX" /> - <Styled.Column> + <$AccountInfo> + <$AddressRow> + <$AssetIcon symbol="DYDX" /> + <$Column> <WithTooltip slotTooltip={ <dl> @@ -86,15 +119,13 @@ export const AccountMenu = () => { </dl> } > - <Styled.label> - {stringGetter({ key: STRING_KEYS.DYDX_CHAIN_ADDRESS })} - </Styled.label> + <$label>{stringGetter({ key: STRING_KEYS.DYDX_CHAIN_ADDRESS })}</$label> </WithTooltip> - <Styled.Address>{truncateAddress(dydxAddress)}</Styled.Address> - </Styled.Column> - <Styled.CopyButton buttonType="icon" value={dydxAddress} shape={ButtonShape.Square} /> + <$Address>{truncateAddress(dydxAddress)}</$Address> + </$Column> + <$CopyButton buttonType="icon" value={dydxAddress} shape={ButtonShape.Square} /> <WithTooltip tooltipString={stringGetter({ key: STRING_KEYS.MINTSCAN })}> - <Styled.IconButton + <$IconButton action={ButtonAction.Base} href={`${mintscanBase}/account/${dydxAddress}`} iconName={IconName.LinkOut} @@ -102,33 +133,34 @@ export const AccountMenu = () => { type={ButtonType.Link} /> </WithTooltip> - </Styled.AddressRow> - <Styled.AddressRow> - {walletType && ( - <Styled.SourceIcon> - <Styled.ConnectorIcon iconName={IconName.AddressConnector} /> + </$AddressRow> + {walletType && walletType !== WalletType.Privy && ( + <$AddressRow> + <$SourceIcon> + <$ConnectorIcon iconName={IconName.AddressConnector} /> <Icon iconComponent={wallets[walletType].icon as ElementType} /> - </Styled.SourceIcon> - )} - <Styled.Column> - <Styled.label>{stringGetter({ key: STRING_KEYS.SOURCE_ADDRESS })}</Styled.label> - <Styled.Address>{truncateAddress(evmAddress, '0x')}</Styled.Address> - </Styled.Column> - </Styled.AddressRow> - <Styled.Balances> + </$SourceIcon> + <$Column> + <$label>{stringGetter({ key: STRING_KEYS.SOURCE_ADDRESS })}</$label> + <$Address>{truncateAddress(evmAddress, '0x')}</$Address> + </$Column> + </$AddressRow> + )} + <$Balances> <div> <div> - <Styled.label> + <$label> {stringGetter({ key: STRING_KEYS.ASSET_BALANCE, params: { ASSET: chainTokenLabel }, })} <AssetIcon symbol={chainTokenLabel} /> - </Styled.label> - <Styled.BalanceOutput type={OutputType.Asset} value={nativeTokenBalance} /> + </$label> + <$BalanceOutput type={OutputType.Asset} value={nativeTokenBalance} /> </div> <AssetActions asset={DydxChainAsset.CHAINTOKEN} + complianceState={complianceState} dispatch={dispatch} hasBalance={nativeTokenBalance.gt(0)} stringGetter={stringGetter} @@ -136,39 +168,36 @@ export const AccountMenu = () => { </div> <div> <div> - <Styled.label> + <$label> {stringGetter({ key: STRING_KEYS.ASSET_BALANCE, params: { ASSET: usdcLabel }, })} <AssetIcon symbol="USDC" /> - </Styled.label> - <Styled.BalanceOutput - type={OutputType.Asset} - value={usdcBalance} - fractionDigits={2} - /> + </$label> + <$BalanceOutput type={OutputType.Asset} value={usdcBalance} fractionDigits={2} /> </div> <AssetActions asset={DydxChainAsset.USDC} + complianceState={complianceState} dispatch={dispatch} hasBalance={MustBigNumber(usdcBalance).gt(0)} stringGetter={stringGetter} withOnboarding /> </div> - </Styled.Balances> - </Styled.AccountInfo> + </$Balances> + </$AccountInfo> ) } items={[ onboardingState === OnboardingState.WalletConnected && { value: 'ConnectToChain', label: ( - <Styled.ConnectToChain> + <$ConnectToChain> <p>{stringGetter({ key: STRING_KEYS.MISSING_KEYS_DESCRIPTION })}</p> <OnboardingTriggerButton /> - </Styled.ConnectToChain> + </$ConnectToChain> ), onSelect: onRecoverKeys, separator: true, @@ -190,6 +219,18 @@ export const AccountMenu = () => { label: stringGetter({ key: STRING_KEYS.DISPLAY_SETTINGS }), onSelect: () => dispatch(openDialog({ type: DialogTypes.DisplaySettings })), }, + ...(isDev + ? [ + { + value: 'ComplianceConfig', + icon: <Icon iconName={IconName.Gear} />, + label: 'Compliance Config', + onSelect: () => { + dispatch(openDialog({ type: DialogTypes.ComplianceConfig })); + }, + }, + ] + : []), ...(getMobileAppUrl() ? [ { @@ -214,7 +255,7 @@ export const AccountMenu = () => { value: 'MnemonicExport', icon: <Icon iconName={IconName.ExportKeys} />, label: <span>{stringGetter({ key: STRING_KEYS.EXPORT_SECRET_PHRASE })}</span>, - highlightColor: 'destroy', + highlightColor: 'destroy' as const, onSelect: () => dispatch(openDialog({ type: DialogTypes.MnemonicExport })), }, ] @@ -223,20 +264,16 @@ export const AccountMenu = () => { value: 'Disconnect', icon: <Icon iconName={IconName.BoxClose} />, label: stringGetter({ key: STRING_KEYS.DISCONNECT }), - highlightColor: 'destroy', + highlightColor: 'destroy' as const, onSelect: () => dispatch(openDialog({ type: DialogTypes.DisconnectWallet })), }, ].filter(isTruthy)} align="end" sideOffset={16} > - {onboardingState === OnboardingState.WalletConnected ? ( - <Styled.WarningIcon iconName={IconName.Warning} /> - ) : onboardingState === OnboardingState.AccountConnected ? ( - walletType && <Icon iconComponent={wallets[walletType].icon as ElementType} /> - ) : null} - {!isTablet && <Styled.Address>{truncateAddress(dydxAddress)}</Styled.Address>} - </Styled.DropdownMenu> + {walletIcon} + {!isTablet && <$Address>{truncateAddress(dydxAddress)}</$Address>} + </$DropdownMenu> ); }; @@ -244,89 +281,90 @@ const AssetActions = memo( ({ asset, dispatch, + complianceState, withOnboarding, hasBalance, stringGetter, }: { asset: DydxChainAsset; dispatch: Dispatch; + complianceState: ComplianceStates; withOnboarding?: boolean; hasBalance?: boolean; stringGetter: StringGetterFunction; }) => ( - <Styled.InlineRow> + <$InlineRow> {[ - withOnboarding && { - dialogType: DialogTypes.Deposit, - iconName: IconName.Deposit, - tooltipStringKey: STRING_KEYS.DEPOSIT, - }, + withOnboarding && + complianceState === ComplianceStates.FULL_ACCESS && { + dialogType: DialogTypes.Deposit, + iconName: IconName.Deposit, + tooltipStringKey: STRING_KEYS.DEPOSIT, + }, withOnboarding && hasBalance && { dialogType: DialogTypes.Withdraw, iconName: IconName.Withdraw, tooltipStringKey: STRING_KEYS.WITHDRAW, }, - hasBalance && { - dialogType: DialogTypes.Transfer, - dialogProps: { selectedAsset: asset }, - iconName: IconName.Send, - tooltipStringKey: STRING_KEYS.TRANSFER, - }, + hasBalance && + complianceState === ComplianceStates.FULL_ACCESS && { + dialogType: DialogTypes.Transfer, + dialogProps: { selectedAsset: asset }, + iconName: IconName.Send, + tooltipStringKey: STRING_KEYS.TRANSFER, + }, ] .filter(isTruthy) .map(({ iconName, tooltipStringKey, dialogType, dialogProps }) => ( - <Styled.WithTooltip + <$WithTooltip key={tooltipStringKey} tooltipString={stringGetter({ key: tooltipStringKey })} > - <Styled.IconButton + <$IconButton key={dialogType} action={ButtonAction.Base} shape={ButtonShape.Square} iconName={iconName} onClick={() => dispatch(openDialog({ type: dialogType, dialogProps }))} /> - </Styled.WithTooltip> + </$WithTooltip> ))} - </Styled.InlineRow> + </$InlineRow> ) ); - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.AccountInfo = styled.div` +const $AccountInfo = styled.div` ${layoutMixins.flexColumn} gap: 1rem; padding: 1rem 1rem 0.5rem 1rem; `; -Styled.Column = styled.div` +const $Column = styled.div` ${layoutMixins.column} `; -Styled.InlineRow = styled.div` +const $InlineRow = styled.div` ${layoutMixins.inlineRow} `; -Styled.AddressRow = styled.div` +const $AddressRow = styled.div` ${layoutMixins.row} gap: 0.5rem; - ${Styled.Column} { + ${$Column} { margin-right: 0.5rem; } `; -Styled.AssetIcon = styled(AssetIcon)` +const $AssetIcon = styled(AssetIcon)` z-index: 2; font-size: 1.75rem; `; -Styled.SourceIcon = styled.div` +const $SourceIcon = styled.div` padding: 0.375rem; position: relative; z-index: 1; @@ -338,13 +376,13 @@ Styled.SourceIcon = styled.div` background-color: #303045; `; -Styled.ConnectorIcon = styled(Icon)` +const $ConnectorIcon = styled(Icon)` position: absolute; top: -1.625rem; height: 1.75rem; `; -Styled.label = styled.div` +const $label = styled.div` ${layoutMixins.row} gap: 0.25rem; @@ -356,7 +394,7 @@ Styled.label = styled.div` } `; -Styled.Balances = styled.div` +const $Balances = styled.div` ${layoutMixins.flexColumn} > div { @@ -377,28 +415,28 @@ Styled.Balances = styled.div` } `; -Styled.BalanceOutput = styled(Output)` +const $BalanceOutput = styled(Output)` font-size: var(--fontSize-medium); `; -Styled.DropdownMenu = styled(DropdownMenu)` +const $DropdownMenu = styled(DropdownMenu)` ${headerMixins.dropdownTrigger} --dropdownMenu-item-font-size: 0.875rem; --popover-padding: 0 0 0.5rem 0; -`; +` as typeof DropdownMenu; -Styled.WarningIcon = styled(Icon)` +const $WarningIcon = styled(Icon)` font-size: 1.25rem; color: var(--color-warning); `; -Styled.Address = styled.span` +const $Address = styled.span` font: var(--font-base-book); font-feature-settings: var(--fontFeature-monoNumbers); `; -Styled.ConnectToChain = styled(Styled.Column)` +const $ConnectToChain = styled($Column)` max-width: 12em; gap: 0.5rem; text-align: center; @@ -409,22 +447,23 @@ Styled.ConnectToChain = styled(Styled.Column)` } `; -Styled.IconButton = styled(IconButton)<{ iconName: IconName }>` +const $IconButton = styled(IconButton)` --button-padding: 0 0.25rem; --button-border: solid var(--border-width) var(--color-layer-6); ${({ iconName }) => + iconName != null && [IconName.Withdraw, IconName.Deposit].includes(iconName) && css` --button-icon-size: 1.375em; `} `; -Styled.CopyButton = styled(CopyButton)` +const $CopyButton = styled(CopyButton)` --button-padding: 0 0.25rem; --button-border: solid var(--border-width) var(--color-layer-6); `; -Styled.WithTooltip = styled(WithTooltip)` +const $WithTooltip = styled(WithTooltip)` --tooltip-backgroundColor: var(--color-layer-5); `; diff --git a/src/views/menus/LanguageSelector.tsx b/src/views/menus/LanguageSelector.tsx index a845d739d..d2561fe41 100644 --- a/src/views/menus/LanguageSelector.tsx +++ b/src/views/menus/LanguageSelector.tsx @@ -1,13 +1,13 @@ import { useDispatch, useSelector } from 'react-redux'; -import styled, { type AnyStyledComponent } from 'styled-components'; +import styled from 'styled-components'; + +import { SUPPORTED_LOCALE_STRING_LABELS, SupportedLocales } from '@/constants/localization'; -import { SupportedLocales, SUPPORTED_LOCALE_STRING_LABELS } from '@/constants/localization'; import { headerMixins } from '@/styles/headerMixins'; import { DropdownSelectMenu } from '@/components/DropdownSelectMenu'; import { setSelectedLocale } from '@/state/localization'; - import { getSelectedLocale } from '@/state/localizationSelectors'; type StyleProps = { @@ -25,7 +25,7 @@ export const LanguageSelector = ({ align, sideOffset }: StyleProps) => { const selectedLocale = useSelector(getSelectedLocale); return ( - <Styled.DropdownSelectMenu + <$DropdownSelectMenu items={localizationItems} value={selectedLocale} onValueChange={(locale: SupportedLocales) => dispatch(setSelectedLocale({ locale }))} @@ -34,9 +34,6 @@ export const LanguageSelector = ({ align, sideOffset }: StyleProps) => { /> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.DropdownSelectMenu = styled(DropdownSelectMenu)` +const $DropdownSelectMenu = styled(DropdownSelectMenu)` ${headerMixins.dropdownTrigger} -`; +` as typeof DropdownSelectMenu; diff --git a/src/views/menus/NetworkSelectMenu.tsx b/src/views/menus/NetworkSelectMenu.tsx index 7a23a1cc7..105b249cb 100644 --- a/src/views/menus/NetworkSelectMenu.tsx +++ b/src/views/menus/NetworkSelectMenu.tsx @@ -1,11 +1,11 @@ -import styled, { type AnyStyledComponent } from 'styled-components'; +import styled from 'styled-components'; + +import { useSelectedNetwork } from '@/hooks/useSelectedNetwork'; -import { useSelectedNetwork } from '@/hooks'; -import { layoutMixins } from '@/styles/layoutMixins'; import { headerMixins } from '@/styles/headerMixins'; +import { layoutMixins } from '@/styles/layoutMixins'; import { DropdownSelectMenu } from '@/components/DropdownSelectMenu'; - import { useNetworks } from '@/views/menus/useNetworks'; type StyleProps = { @@ -18,7 +18,7 @@ export const NetworkSelectMenu = ({ align, sideOffset }: StyleProps) => { const { switchNetwork, selectedNetwork } = useSelectedNetwork(); return ( - <Styled.DropdownSelectMenu + <$DropdownSelectMenu items={networks} value={selectedNetwork} onValueChange={switchNetwork} @@ -27,10 +27,7 @@ export const NetworkSelectMenu = ({ align, sideOffset }: StyleProps) => { /> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.DropdownSelectMenu = styled(DropdownSelectMenu)` +const $DropdownSelectMenu = styled(DropdownSelectMenu)` ${headerMixins.dropdownTrigger} width: max-content; @@ -41,4 +38,4 @@ Styled.DropdownSelectMenu = styled(DropdownSelectMenu)` min-width: 0; white-space: nowrap; } -`; +` as typeof DropdownSelectMenu; diff --git a/src/views/menus/NotificationsMenu.tsx b/src/views/menus/NotificationsMenu.tsx index e07a9c104..aa27420f0 100644 --- a/src/views/menus/NotificationsMenu.tsx +++ b/src/views/menus/NotificationsMenu.tsx @@ -1,14 +1,17 @@ import React, { useMemo } from 'react'; -import styled from 'styled-components'; -import { layoutMixins } from '@/styles/layoutMixins'; + import { groupBy } from 'lodash'; +import styled from 'styled-components'; import { ButtonAction, ButtonSize } from '@/constants/buttons'; import { STRING_KEYS } from '@/constants/localization'; -import { type Notification, NotificationStatus } from '@/constants/notifications'; +import { NotificationStatus, type Notification } from '@/constants/notifications'; -import { useBreakpoints, useStringGetter } from '@/hooks'; +import { useBreakpoints } from '@/hooks/useBreakpoints'; import { useNotifications } from '@/hooks/useNotifications'; +import { useStringGetter } from '@/hooks/useStringGetter'; + +import { layoutMixins } from '@/styles/layoutMixins'; import { Button } from '@/components/Button'; import { ComboboxDialogMenu } from '@/components/ComboboxDialogMenu'; @@ -66,14 +69,14 @@ export const NotificationsMenu = ({ () => (Object.entries(notificationsByStatus) as unknown as [NotificationStatus, Notification[]][]) .filter(([status]) => status < NotificationStatus.Cleared) - .map(([status, notifications]) => ({ + .map(([status, innerNotifications]) => ({ group: status, groupLabel: { [NotificationStatus.Triggered]: stringGetter({ key: STRING_KEYS.NEW }), [NotificationStatus.Seen]: 'Seen', }[status as number], - items: notifications + items: innerNotifications .sort( (n1, n2) => n2.timestamps[NotificationStatus.Triggered]! - @@ -95,6 +98,7 @@ export const NotificationsMenu = ({ slotTitle={displayData.title} slotDescription={displayData.body} notification={notification} + withClose={displayData.withClose} /> ), disabled: notification.status === NotificationStatus.Cleared, @@ -104,7 +108,7 @@ export const NotificationsMenu = ({ }, })), })) - .filter(({ items }) => items.length), + .filter(({ items: allItems }) => allItems.length), [notificationsByStatus, getDisplayData, onNotificationAction, markSeen, stringGetter] ); diff --git a/src/views/menus/useGlobalCommands.tsx b/src/views/menus/useGlobalCommands.tsx index 504c052d9..c04f281d6 100644 --- a/src/views/menus/useGlobalCommands.tsx +++ b/src/views/menus/useGlobalCommands.tsx @@ -1,23 +1,25 @@ -import { useDispatch, useSelector, shallowEqual } from 'react-redux'; +import { shallowEqual, useDispatch, useSelector } from 'react-redux'; import { useNavigate } from 'react-router-dom'; -import { type MenuConfig } from '@/constants/menus'; +import { Asset, PerpetualMarket } from '@/constants/abacus'; import { TradeLayouts } from '@/constants/layout'; +import { type MenuConfig } from '@/constants/menus'; +import { AppRoute } from '@/constants/routes'; import { AssetIcon } from '@/components/AssetIcon'; +import { getAssets } from '@/state/assetsSelectors'; import { + AppColorMode, AppTheme, AppThemeSystemSetting, - AppColorMode, - setAppThemeSetting, setAppColorMode, + setAppThemeSetting, } from '@/state/configs'; import { setSelectedTradeLayout } from '@/state/layout'; - -import { getAssets } from '@/state/assetsSelectors'; import { getPerpetualMarkets } from '@/state/perpetualsSelectors'; -import { Asset, PerpetualMarket } from '@/constants/abacus'; + +import { orEmptyObj } from '@/lib/typeUtils'; enum LayoutItems { setDefaultLayout = 'SetDefaultLayout', @@ -25,12 +27,6 @@ enum LayoutItems { setAlternativeLayout = 'SetAlternativeLayout', } -enum TradeItems { - PlaceMarketOrder = 'PlaceMarketOrder', - PlaceLimitOrder = 'PlaceLimitOrder', - PlaceStopLimitOrder = 'PlaceStopLimitOrder', -} - enum NavItems { NavigateToMarket = 'NavigateToMarket', } @@ -39,12 +35,12 @@ export const useGlobalCommands = (): MenuConfig<string, string> => { const dispatch = useDispatch(); const navigate = useNavigate(); - const allPerpetualMarkets = useSelector(getPerpetualMarkets, shallowEqual) || {}; - const allAssets = useSelector(getAssets, shallowEqual) || {}; + const allPerpetualMarkets = orEmptyObj(useSelector(getPerpetualMarkets, shallowEqual)); + const allAssets = orEmptyObj(useSelector(getAssets, shallowEqual)); const joinedPerpetualMarketsAndAssets = Object.values(allPerpetualMarkets).map((market) => ({ ...market, - ...allAssets[market?.assetId], + ...(market != null ? allAssets[market.assetId] : {}), })) as Array<PerpetualMarket & Asset>; return [ @@ -162,7 +158,7 @@ export const useGlobalCommands = (): MenuConfig<string, string> => { slotBefore: <AssetIcon symbol={id} />, label: name ?? '', tag: id, - onSelect: () => navigate(`/trade/${market}`), + onSelect: () => navigate(`${AppRoute.Trade}/${market}`), })), }, ], diff --git a/src/views/menus/useNetworks.tsx b/src/views/menus/useNetworks.tsx index a15a2497d..d52483921 100644 --- a/src/views/menus/useNetworks.tsx +++ b/src/views/menus/useNetworks.tsx @@ -1,8 +1,8 @@ import { type MenuItem } from '@/constants/menus'; import { AVAILABLE_ENVIRONMENTS, - type DydxNetwork, ENVIRONMENT_CONFIG_MAP, + type DydxNetwork, } from '@/constants/networks'; export const useNetworks = (): MenuItem<DydxNetwork>[] => diff --git a/src/views/notifications/BlockRewardNotification/index.tsx b/src/views/notifications/BlockRewardNotification/index.tsx index fce36eedd..f4acf5e11 100644 --- a/src/views/notifications/BlockRewardNotification/index.tsx +++ b/src/views/notifications/BlockRewardNotification/index.tsx @@ -1,12 +1,14 @@ -import styled, { type AnyStyledComponent } from 'styled-components'; +import styled from 'styled-components'; import { STRING_KEYS } from '@/constants/localization'; -import { useStringGetter } from '@/hooks'; + +import { useStringGetter } from '@/hooks/useStringGetter'; import { Details } from '@/components/Details'; +import { Icon, IconName } from '@/components/Icon'; +// eslint-disable-next-line import/no-cycle import { Notification, NotificationProps } from '@/components/Notification'; import { Output, OutputType } from '@/components/Output'; -import { Icon, IconName } from '@/components/Icon'; type ElementProps = { data: { @@ -28,23 +30,19 @@ export const BlockRewardNotification = ({ const { BLOCK_REWARD_AMOUNT, TOKEN_NAME } = data; return ( - <Styled.Notification + <$Notification isToast={isToast} notification={notification} slotIcon={<Icon iconName={IconName.RewardStar} />} slotTitle={stringGetter({ key: STRING_KEYS.TRADING_REWARD_RECEIVED })} slotCustomContent={ - <Styled.Details + <$Details items={[ { key: 'block_reward', label: stringGetter({ key: STRING_KEYS.BLOCK_REWARD }), value: ( - <Styled.Output - type={OutputType.Asset} - value={BLOCK_REWARD_AMOUNT} - tag={TOKEN_NAME} - /> + <$Output type={OutputType.Asset} value={BLOCK_REWARD_AMOUNT} tag={TOKEN_NAME} /> ), }, ]} @@ -53,10 +51,7 @@ export const BlockRewardNotification = ({ /> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.Details = styled(Details)` +const $Details = styled(Details)` --details-item-height: 1.5rem; dd { @@ -64,12 +59,12 @@ Styled.Details = styled(Details)` } `; -Styled.Notification = styled(Notification)` +const $Notification = styled(Notification)` background-image: url('/dots-background-2.svg'); background-size: cover; `; -Styled.Output = styled(Output)` +const $Output = styled(Output)` &:before { content: '+'; color: var(--color-success); diff --git a/src/views/notifications/IncentiveSeasonDistributionNotification.tsx b/src/views/notifications/IncentiveSeasonDistributionNotification.tsx new file mode 100644 index 000000000..aa759fcce --- /dev/null +++ b/src/views/notifications/IncentiveSeasonDistributionNotification.tsx @@ -0,0 +1,64 @@ +import styled from 'styled-components'; + +import { Details } from '@/components/Details'; +import { Icon, IconName } from '@/components/Icon'; +// eslint-disable-next-line import/no-cycle +import { Notification, NotificationProps } from '@/components/Notification'; +import { Output, OutputType } from '@/components/Output'; + +type ElementProps = { + data: { + points: number; + chainTokenLabel: string; + }; +}; + +export type IncentiveSeasonDistributionNotificationProps = NotificationProps & ElementProps; + +export const IncentiveSeasonDistributionNotification = ({ + isToast, + data, + notification, +}: IncentiveSeasonDistributionNotificationProps) => { + const { chainTokenLabel, points } = data; + + return ( + <$Notification + isToast={isToast} + notification={notification} + slotIcon={<Icon iconName={IconName.RewardStar} />} + slotTitle="Season 3 launch rewards have been distributed!" + slotCustomContent={ + <$Details + items={[ + { + key: 'season_distribution', + label: 'Season 3 rewards', + value: <$Output type={OutputType.Asset} value={points} tag={chainTokenLabel} />, + }, + ]} + /> + } + /> + ); +}; +const $Details = styled(Details)` + --details-item-height: 1.5rem; + + dd { + color: var(--color-text-2); + } +`; + +const $Notification = styled(Notification)` + background-image: url('/dots-background-2.svg'); + background-size: cover; +`; + +const $Output = styled(Output)` + &:before { + content: '+'; + color: var(--color-success); + margin-right: 0.5ch; + } +`; diff --git a/src/views/notifications/OrderCancelNotification.tsx b/src/views/notifications/OrderCancelNotification.tsx new file mode 100644 index 000000000..e6b4c1c40 --- /dev/null +++ b/src/views/notifications/OrderCancelNotification.tsx @@ -0,0 +1,98 @@ +import { shallowEqual, useSelector } from 'react-redux'; +import styled from 'styled-components'; + +import { AbacusOrderStatus } from '@/constants/abacus'; +import { STRING_KEYS } from '@/constants/localization'; +import { CancelOrderStatuses, LocalCancelOrderData, ORDER_TYPE_STRINGS } from '@/constants/trade'; + +import { useStringGetter } from '@/hooks/useStringGetter'; + +import { layoutMixins } from '@/styles/layoutMixins'; + +import { AssetIcon } from '@/components/AssetIcon'; +import { Icon, IconName } from '@/components/Icon'; +import { LoadingSpinner } from '@/components/Loading/LoadingSpinner'; +// eslint-disable-next-line import/no-cycle +import { Notification, NotificationProps } from '@/components/Notification'; + +import { getOrderById } from '@/state/accountSelectors'; +import { getMarketData } from '@/state/perpetualsSelectors'; + +import { getTradeType } from '@/lib/orders'; + +import { OrderStatusIcon } from '../OrderStatusIcon'; + +type ElementProps = { + localCancel: LocalCancelOrderData; +}; + +export const OrderCancelNotification = ({ + isToast, + localCancel, + notification, +}: NotificationProps & ElementProps) => { + const stringGetter = useStringGetter(); + const order = useSelector(getOrderById(localCancel.orderId), shallowEqual)!!; + const marketData = useSelector(getMarketData(order.marketId), shallowEqual); + const { assetId } = marketData ?? {}; + const tradeType = getTradeType(order.type.rawValue) ?? undefined; + const orderTypeKey = tradeType && ORDER_TYPE_STRINGS[tradeType]?.orderTypeKey; + const indexedOrderStatus = order.status.rawValue; + const cancelStatus = localCancel.submissionStatus; + + let orderStatusStringKey = STRING_KEYS.CANCELING; + let orderStatusIcon = <$LoadingSpinner />; + let customContent = null; + + // whichever canceled confirmation happens first (node / indexer) + const canceledStatusValue = AbacusOrderStatus.cancelled.rawValue; + if (cancelStatus === CancelOrderStatuses.Canceled || indexedOrderStatus === canceledStatusValue) { + orderStatusStringKey = STRING_KEYS.CANCELED; + orderStatusIcon = <$OrderStatusIcon status={canceledStatusValue} />; + } + + if (localCancel.errorStringKey) { + orderStatusStringKey = STRING_KEYS.ERROR; + orderStatusIcon = <$WarningIcon iconName={IconName.Warning} />; + customContent = <span>{stringGetter({ key: localCancel.errorStringKey })}</span>; + } + + return ( + <Notification + isToast={isToast} + notification={notification} + slotIcon={<AssetIcon symbol={assetId} />} + slotTitle={orderTypeKey && stringGetter({ key: orderTypeKey })} + slotTitleRight={ + <$OrderStatus> + {stringGetter({ key: orderStatusStringKey })} + {orderStatusIcon} + </$OrderStatus> + } + slotCustomContent={customContent} + /> + ); +}; +const $Label = styled.span` + ${layoutMixins.row} + gap: 0.5ch; +`; + +const $OrderStatus = styled($Label)` + color: var(--color-text-0); + font: var(--font-small-book); +`; + +const $LoadingSpinner = styled(LoadingSpinner)` + --spinner-width: 0.9375rem; + color: var(--color-accent); +`; + +const $WarningIcon = styled(Icon)` + color: var(--color-warning); +`; + +const $OrderStatusIcon = styled(OrderStatusIcon)` + width: 0.9375rem; + height: 0.9375rem; +`; diff --git a/src/views/notifications/OrderStatusNotification.tsx b/src/views/notifications/OrderStatusNotification.tsx new file mode 100644 index 000000000..d58955ed5 --- /dev/null +++ b/src/views/notifications/OrderStatusNotification.tsx @@ -0,0 +1,134 @@ +import { shallowEqual, useSelector } from 'react-redux'; +import styled from 'styled-components'; + +import { + AbacusOrderStatus, + KotlinIrEnumValues, + ORDER_SIDES, + ORDER_STATUS_STRINGS, +} from '@/constants/abacus'; +import { STRING_KEYS } from '@/constants/localization'; +import { USD_DECIMALS } from '@/constants/numbers'; +import { + ORDER_TYPE_STRINGS, + PlaceOrderStatuses, + type LocalPlaceOrderData, +} from '@/constants/trade'; + +import { useStringGetter } from '@/hooks/useStringGetter'; + +import { layoutMixins } from '@/styles/layoutMixins'; + +import { AssetIcon } from '@/components/AssetIcon'; +import { Icon, IconName } from '@/components/Icon'; +import { LoadingSpinner } from '@/components/Loading/LoadingSpinner'; +// eslint-disable-next-line import/no-cycle +import { Notification, NotificationProps } from '@/components/Notification'; + +import { getFillByClientId, getOrderByClientId } from '@/state/accountSelectors'; +import { getMarketData } from '@/state/perpetualsSelectors'; + +import { assertNever } from '@/lib/assertNever'; +import { getTradeType } from '@/lib/orders'; + +import { OrderStatusIcon } from '../OrderStatusIcon'; +import { FillDetails } from './TradeNotification/FillDetails'; + +type ElementProps = { + localOrder: LocalPlaceOrderData; +}; + +export const OrderStatusNotification = ({ + isToast, + localOrder, + notification, +}: NotificationProps & ElementProps) => { + const stringGetter = useStringGetter(); + const order = useSelector(getOrderByClientId(localOrder.clientId), shallowEqual); + const fill = useSelector(getFillByClientId(localOrder.clientId), shallowEqual); + const marketData = useSelector(getMarketData(localOrder.marketId), shallowEqual); + const { assetId } = marketData ?? {}; + const titleKey = ORDER_TYPE_STRINGS[localOrder.orderType]?.orderTypeKey; + const indexedOrderStatus = order?.status?.rawValue as KotlinIrEnumValues< + typeof AbacusOrderStatus + >; + const submissionStatus = localOrder.submissionStatus; + + let orderStatusStringKey = STRING_KEYS.SUBMITTING; + let orderStatusIcon = <$LoadingSpinner />; + let customContent = null; + + switch (submissionStatus) { + case PlaceOrderStatuses.Placed: + case PlaceOrderStatuses.Filled: + if (indexedOrderStatus) { + // skip pending / best effort open state -> still show as submitted (loading) + if (indexedOrderStatus === AbacusOrderStatus.pending.rawValue) break; + + orderStatusStringKey = ORDER_STATUS_STRINGS[indexedOrderStatus]; + orderStatusIcon = <$OrderStatusIcon status={indexedOrderStatus} />; + } + if (order && fill) { + customContent = ( + <FillDetails + orderSide={ORDER_SIDES[order.side.name]} + tradeType={getTradeType(order.type.rawValue) ?? undefined} + filledAmount={order.totalFilled} + assetId={assetId} + averagePrice={order.price} + tickSizeDecimals={marketData?.configs?.displayTickSizeDecimals ?? USD_DECIMALS} + /> + ); + } + break; + case PlaceOrderStatuses.Submitted: + if (localOrder.errorStringKey) { + orderStatusStringKey = STRING_KEYS.ERROR; + orderStatusIcon = <$WarningIcon iconName={IconName.Warning} />; + customContent = <span>{stringGetter({ key: localOrder.errorStringKey })}</span>; + } + break; + default: + assertNever(submissionStatus); + break; + } + + return ( + <Notification + isToast={isToast} + notification={notification} + slotIcon={<AssetIcon symbol={assetId} />} + slotTitle={titleKey && stringGetter({ key: titleKey })} + slotTitleRight={ + <$OrderStatus> + {stringGetter({ key: orderStatusStringKey })} + {orderStatusIcon} + </$OrderStatus> + } + slotCustomContent={customContent} + /> + ); +}; +const $Label = styled.span` + ${layoutMixins.row} + gap: 0.5ch; +`; + +const $OrderStatus = styled($Label)` + color: var(--color-text-0); + font: var(--font-small-book); +`; + +const $LoadingSpinner = styled(LoadingSpinner)` + --spinner-width: 0.9375rem; + color: var(--color-accent); +`; + +const $WarningIcon = styled(Icon)` + color: var(--color-warning); +`; + +const $OrderStatusIcon = styled(OrderStatusIcon)` + width: 0.9375rem; + height: 0.9375rem; +`; diff --git a/src/views/notifications/TradeNotification/FillDetails.tsx b/src/views/notifications/TradeNotification/FillDetails.tsx new file mode 100644 index 000000000..387425a11 --- /dev/null +++ b/src/views/notifications/TradeNotification/FillDetails.tsx @@ -0,0 +1,81 @@ +import { OrderSide } from '@dydxprotocol/v4-client-js'; +import styled from 'styled-components'; + +import { STRING_KEYS } from '@/constants/localization'; +import { TradeTypes } from '@/constants/trade'; + +import { useStringGetter } from '@/hooks/useStringGetter'; + +import { layoutMixins } from '@/styles/layoutMixins'; + +import { Details } from '@/components/Details'; +import { OrderSideTag } from '@/components/OrderSideTag'; +import { Output, OutputType } from '@/components/Output'; + +export const FillDetails = ({ + orderSide, + tradeType, + filledAmount, + assetId, + averagePrice, + tickSizeDecimals, +}: { + orderSide: OrderSide; + tradeType?: TradeTypes; + filledAmount: any; + assetId?: string; + averagePrice?: any; + tickSizeDecimals?: number; +}) => { + const stringGetter = useStringGetter(); + return ( + <$Details + items={[ + { + key: 'size', + label: ( + <$Label> + {stringGetter({ key: STRING_KEYS.SIZE })} + <OrderSideTag orderSide={orderSide} /> + </$Label> + ), + value: <Output type={OutputType.Asset} value={filledAmount} tag={assetId} />, + }, + { + key: 'price', + label: stringGetter({ key: STRING_KEYS.PRICE }), + value: + tradeType === TradeTypes.MARKET ? ( + <span>{stringGetter({ key: STRING_KEYS.MARKET_ORDER_SHORT })}</span> + ) : ( + <Output + type={OutputType.Fiat} + value={averagePrice} + fractionDigits={tickSizeDecimals} + /> + ), + }, + ]} + /> + ); +}; +const $Label = styled.span` + ${layoutMixins.row} + gap: 0.5ch; +`; + +const $Details = styled(Details)` + --details-item-height: 1rem; + + dd { + color: var(--color-text-2); + } + + div { + padding: 0.25rem 0; + } + + div:last-of-type { + padding-bottom: 0; + } +`; diff --git a/src/views/notifications/TradeNotification/index.tsx b/src/views/notifications/TradeNotification/index.tsx index b723f13e6..526e9faa3 100644 --- a/src/views/notifications/TradeNotification/index.tsx +++ b/src/views/notifications/TradeNotification/index.tsx @@ -1,6 +1,6 @@ -import styled, { type AnyStyledComponent } from 'styled-components'; import { OrderSide } from '@dydxprotocol/v4-client-js'; import { shallowEqual, useSelector } from 'react-redux'; +import styled from 'styled-components'; import { AbacusOrderStatus, @@ -9,21 +9,23 @@ import { ORDER_STATUS_STRINGS, TRADE_TYPES, } from '@/constants/abacus'; - import { STRING_KEYS } from '@/constants/localization'; -import { ORDER_TYPE_STRINGS, TradeTypes } from '@/constants/trade'; -import { useStringGetter } from '@/hooks'; +import { USD_DECIMALS } from '@/constants/numbers'; +import { ORDER_TYPE_STRINGS } from '@/constants/trade'; + +import { useStringGetter } from '@/hooks/useStringGetter'; + import { layoutMixins } from '@/styles/layoutMixins'; import { AssetIcon } from '@/components/AssetIcon'; -import { Details } from '@/components/Details'; +// eslint-disable-next-line import/no-cycle import { Notification, NotificationProps } from '@/components/Notification'; -import { OrderSideTag } from '@/components/OrderSideTag'; import { OrderStatusIcon } from '@/views/OrderStatusIcon'; -import { Output, OutputType } from '@/components/Output'; import { getMarketData } from '@/state/perpetualsSelectors'; +import { FillDetails } from './FillDetails'; + type ElementProps = { data: { AMOUNT: string; @@ -47,7 +49,7 @@ export const TradeNotification = ({ isToast, data, notification }: TradeNotifica const marketData = useSelector(getMarketData(MARKET), shallowEqual); const { assetId } = marketData ?? {}; const orderType = ORDER_TYPE as KotlinIrEnumValues<typeof AbacusOrderType>; - const tradeType = TRADE_TYPES[orderType]; + const tradeType = TRADE_TYPES[orderType] ?? undefined; const titleKey = tradeType && ORDER_TYPE_STRINGS[tradeType]?.orderTypeKey; const orderStatus = ORDER_STATUS as KotlinIrEnumValues<typeof AbacusOrderStatus>; @@ -58,70 +60,35 @@ export const TradeNotification = ({ isToast, data, notification }: TradeNotifica slotIcon={<AssetIcon symbol={assetId} />} slotTitle={titleKey && stringGetter({ key: titleKey })} slotTitleRight={ - <Styled.OrderStatus> + <$OrderStatus> {stringGetter({ key: ORDER_STATUS_STRINGS[orderStatus] })} - <Styled.OrderStatusIcon status={orderStatus} totalFilled={parseFloat(FILLED_AMOUNT)} /> - </Styled.OrderStatus> + <$OrderStatusIcon status={orderStatus} /> + </$OrderStatus> } slotCustomContent={ - <Styled.Details - items={[ - { - key: 'size', - label: ( - <Styled.Label> - {stringGetter({ key: STRING_KEYS.SIZE })} - <OrderSideTag - orderSide={SIDE === STRING_KEYS.BUY ? OrderSide.BUY : OrderSide.SELL} - /> - </Styled.Label> - ), - value: ( - <Output type={OutputType.Asset} value={FILLED_AMOUNT} tag={marketData?.assetId} /> - ), - }, - { - key: 'price', - label: stringGetter({ key: STRING_KEYS.PRICE }), - value: - ORDER_TYPE === TradeTypes.MARKET ? ( - <span>{stringGetter({ key: STRING_KEYS.MARKET_ORDER_SHORT })}</span> - ) : ( - <Output - type={OutputType.Fiat} - value={AVERAGE_PRICE} - fractionDigits={marketData?.configs?.displayTickSizeDecimals} - /> - ), - }, - ]} + <FillDetails + orderSide={SIDE === STRING_KEYS.BUY ? OrderSide.BUY : OrderSide.SELL} + tradeType={tradeType} + filledAmount={FILLED_AMOUNT} + assetId={marketData?.assetId} + averagePrice={AVERAGE_PRICE} + tickSizeDecimals={marketData?.configs?.displayTickSizeDecimals ?? USD_DECIMALS} /> } /> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.Label = styled.span` +const $Label = styled.span` ${layoutMixins.row} gap: 0.5ch; `; -Styled.OrderStatus = styled(Styled.Label)` +const $OrderStatus = styled($Label)` color: var(--color-text-0); font: var(--font-small-book); `; -Styled.OrderStatusIcon = styled(OrderStatusIcon)` +const $OrderStatusIcon = styled(OrderStatusIcon)` width: 0.9375rem; height: 0.9375rem; `; - -Styled.Details = styled(Details)` - --details-item-height: 1.5rem; - - dd { - color: var(--color-text-2); - } -`; diff --git a/src/views/notifications/TransferStatusNotification/TransferStatusSteps.tsx b/src/views/notifications/TransferStatusNotification/TransferStatusSteps.tsx index f522a062d..16775ab27 100644 --- a/src/views/notifications/TransferStatusNotification/TransferStatusSteps.tsx +++ b/src/views/notifications/TransferStatusNotification/TransferStatusSteps.tsx @@ -1,17 +1,19 @@ import { useMemo } from 'react'; -import { useSelector } from 'react-redux'; -import styled, { css, type AnyStyledComponent } from 'styled-components'; + import { StatusResponse } from '@0xsquid/sdk'; +import { useSelector } from 'react-redux'; +import styled, { css } from 'styled-components'; import { STRING_KEYS } from '@/constants/localization'; import { TransferNotificationTypes } from '@/constants/notifications'; -import { useStringGetter, useURLConfigs } from '@/hooks'; +import { useStringGetter } from '@/hooks/useStringGetter'; +import { useURLConfigs } from '@/hooks/useURLConfigs'; import { layoutMixins } from '@/styles/layoutMixins'; -import { Link } from '@/components/Link'; import { Icon, IconName } from '@/components/Icon'; +import { Link } from '@/components/Link'; import { LoadingDots } from '@/components/Loading/LoadingDots'; import { LoadingSpinner } from '@/components/Loading/LoadingSpinner'; @@ -43,9 +45,12 @@ export const TransferStatusSteps = ({ className, status, type }: ElementProps & const fromChain = status?.fromChain?.chainData?.chainId; const toChain = status?.toChain?.chainData?.chainId; - const currentStatus = routeStatus?.[routeStatus?.length - 1]; + const currentStatus = + routeStatus != null && routeStatus.length != null + ? routeStatus[routeStatus.length - 1] + : undefined; - const steps = [ + const newSteps = [ { label: stringGetter({ key: @@ -89,26 +94,26 @@ export const TransferStatusSteps = ({ className, status, type }: ElementProps & }, ]; - let currentStep = TransferStatusStep.Bridge; + let newCurrentStep = TransferStatusStep.Bridge; if (!routeStatus?.length) { - currentStep = TransferStatusStep.FromChain; + newCurrentStep = TransferStatusStep.FromChain; } else if (currentStatus.chainId === toChain) { - currentStep = + newCurrentStep = currentStatus.status !== 'success' ? TransferStatusStep.ToChain : TransferStatusStep.Complete; } else if (currentStatus.chainId === fromChain && currentStatus.status !== 'success') { - currentStep = TransferStatusStep.FromChain; + newCurrentStep = TransferStatusStep.FromChain; } if (status?.squidTransactionStatus === 'success') { - currentStep = TransferStatusStep.Complete; + newCurrentStep = TransferStatusStep.Complete; } return { - currentStep, - steps, + currentStep: newCurrentStep, + steps: newSteps, type, }; }, [status, stringGetter]); @@ -116,57 +121,54 @@ export const TransferStatusSteps = ({ className, status, type }: ElementProps & if (!status) return <LoadingDots size={3} />; return ( - <Styled.BridgingStatus className={className}> + <$BridgingStatus className={className}> {steps.map((step) => ( - <Styled.Step key={step.step}> - <Styled.row> + <$Step key={step.step}> + <$row> {step.step === currentStep ? ( - <Styled.Icon> - <Styled.Spinner /> - </Styled.Icon> + <$Icon> + <$Spinner /> + </$Icon> ) : step.step < currentStep ? ( - <Styled.Icon state="complete"> + <$Icon state="complete"> <Icon iconName={IconName.Check} /> - </Styled.Icon> + </$Icon> ) : ( - <Styled.Icon state="default">{step.step + 1}</Styled.Icon> + <$Icon state="default">{step.step + 1}</$Icon> )} {step.link && currentStep >= step.step ? ( <Link href={step.link}> - <Styled.Label highlighted={currentStep >= step.step}> + <$Label highlighted={currentStep >= step.step}> {step.label} <Icon iconName={IconName.LinkOut} /> - </Styled.Label> + </$Label> </Link> ) : ( - <Styled.Label highlighted={currentStep >= step.step}>{step.label}</Styled.Label> + <$Label highlighted={currentStep >= step.step}>{step.label}</$Label> )} - </Styled.row> - </Styled.Step> + </$row> + </$Step> ))} - </Styled.BridgingStatus> + </$BridgingStatus> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.BridgingStatus = styled.div` +const $BridgingStatus = styled.div` ${layoutMixins.flexColumn}; gap: 1rem; padding: 1rem 0; `; -Styled.Step = styled.div` +const $Step = styled.div` ${layoutMixins.spacedRow}; `; -Styled.row = styled.div` +const $row = styled.div` ${layoutMixins.inlineRow}; gap: 0.5rem; `; -Styled.Icon = styled.div<{ state: 'complete' | 'default' }>` +const $Icon = styled.div<{ state?: 'complete' | 'default' }>` display: flex; align-items: center; justify-content: center; @@ -179,23 +181,25 @@ Styled.Icon = styled.div<{ state: 'complete' | 'default' }>` background-color: var(--color-layer-3); ${({ state }) => - ({ - ['complete']: css` - color: var(--color-success); - `, - ['default']: css` - color: var(--color-text-0); - `, - }[state])} + state == null + ? undefined + : { + complete: css` + color: var(--color-success); + `, + default: css` + color: var(--color-text-0); + `, + }[state]} `; -Styled.Spinner = styled(LoadingSpinner)` +const $Spinner = styled(LoadingSpinner)` --spinner-width: 1.25rem; color: var(--color-accent); `; -Styled.Label = styled(Styled.row)<{ highlighted?: boolean }>` +const $Label = styled($row)<{ highlighted?: boolean }>` ${({ highlighted }) => highlighted ? css` diff --git a/src/views/notifications/TransferStatusNotification/index.tsx b/src/views/notifications/TransferStatusNotification/index.tsx index eb8c5abef..9bedeafbc 100644 --- a/src/views/notifications/TransferStatusNotification/index.tsx +++ b/src/views/notifications/TransferStatusNotification/index.tsx @@ -1,23 +1,26 @@ -import { useCallback, useState, useMemo, MouseEvent } from 'react'; -import styled, { css, type AnyStyledComponent } from 'styled-components'; +import { MouseEvent, useCallback, useState } from 'react'; -import { useInterval, useStringGetter } from '@/hooks'; +import styled, { css } from 'styled-components'; import { AlertType } from '@/constants/alerts'; import { STRING_KEYS } from '@/constants/localization'; import { TransferNotifcation, TransferNotificationTypes } from '@/constants/notifications'; -import { formatSeconds } from '@/lib/timeUtils'; +import { useInterval } from '@/hooks/useInterval'; +import { useStringGetter } from '@/hooks/useStringGetter'; + +import { layoutMixins } from '@/styles/layoutMixins'; import { AlertMessage } from '@/components/AlertMessage'; import { Collapsible } from '@/components/Collapsible'; import { Icon, IconName } from '@/components/Icon'; import { LoadingDots } from '@/components/Loading/LoadingDots'; +// eslint-disable-next-line import/no-cycle import { Notification, NotificationProps } from '@/components/Notification'; import { Output, OutputType } from '@/components/Output'; import { WithReceipt } from '@/components/WithReceipt'; -import { layoutMixins } from '@/styles/layoutMixins'; +import { formatSeconds } from '@/lib/timeUtils'; import { TransferStatusSteps } from './TransferStatusSteps'; @@ -32,7 +35,6 @@ export const TransferStatusNotification = ({ notification, slotIcon, slotTitle, - slotDescription, transfer, type, triggeredAt = Date.now(), @@ -40,15 +42,15 @@ export const TransferStatusNotification = ({ const stringGetter = useStringGetter(); const [open, setOpen] = useState<boolean>(false); const [secondsLeft, setSecondsLeft] = useState<number>(0); - const { fromChainId, status, txHash, toAmount, isExchange } = transfer; + const { status, toAmount, isExchange } = transfer; // @ts-ignore status.errors is not in the type definition but can be returned const error = status?.errors?.length ? status?.errors[0] : status?.error; const hasError = error && Object.keys(error).length !== 0; const updateSecondsLeft = useCallback(() => { - const fromChainEta = (status?.fromChain?.chainData?.estimatedRouteDuration || 0) * 1000; - const toChainEta = (status?.toChain?.chainData?.estimatedRouteDuration || 0) * 1000; + const fromChainEta = (status?.fromChain?.chainData?.estimatedRouteDuration ?? 0) * 1000; + const toChainEta = (status?.toChain?.chainData?.estimatedRouteDuration ?? 0) * 1000; setSecondsLeft(Math.floor((triggeredAt + fromChainEta + toChainEta - Date.now()) / 1000)); }, [status]); @@ -76,20 +78,20 @@ export const TransferStatusNotification = ({ const content = ( <> - <Styled.Status> + <$Status> {stringGetter({ key: statusString, params: { - AMOUNT_USD: <Styled.InlineOutput type={OutputType.Fiat} value={toAmount} />, + AMOUNT_USD: <$InlineOutput type={OutputType.Fiat} value={toAmount} />, ESTIMATED_DURATION: ( - <Styled.InlineOutput + <$InlineOutput type={OutputType.Text} value={formatSeconds(Math.max(secondsLeft || 0, 0))} /> ), }, })} - </Styled.Status> + </$Status> {hasError && ( <AlertMessage type={AlertType.Error}> {stringGetter({ @@ -113,18 +115,18 @@ export const TransferStatusNotification = ({ !status && !isExchange ? ( <LoadingDots size={3} /> ) : ( - <Styled.BridgingStatus> + <$BridgingStatus> {content} {!isToast && !isComplete && !hasError && ( - <Styled.TransferStatusSteps status={status} type={type} /> + <$TransferStatusSteps status={status} type={type} /> )} - </Styled.BridgingStatus> + </$BridgingStatus> ) } slotAction={ isToast && status && ( - <Styled.Trigger + <$Trigger isOpen={open} onClick={(e: MouseEvent) => { e.stopPropagation(); @@ -135,7 +137,7 @@ export const TransferStatusNotification = ({ {stringGetter({ key: open ? STRING_KEYS.HIDE_DETAILS : STRING_KEYS.VIEW_DETAILS, })} - </Styled.Trigger> + </$Trigger> ) } withClose={false} @@ -148,9 +150,9 @@ export const TransferStatusNotification = ({ side="bottom" slotReceipt={ <Collapsible open={open} onOpenChange={setOpen} label="" withTrigger={false}> - <Styled.Receipt> + <$Receipt> <TransferStatusSteps status={status} type={type} /> - </Styled.Receipt> + </$Receipt> </Collapsible> } > @@ -160,15 +162,12 @@ export const TransferStatusNotification = ({ transferNotif ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.BridgingStatus = styled.div` +const $BridgingStatus = styled.div` ${layoutMixins.flexColumn}; gap: 0.5rem; `; -Styled.Status = styled.div<{ withMarginBottom?: boolean }>` +const $Status = styled.div<{ withMarginBottom?: boolean }>` color: var(--color-text-0); font-size: 0.875rem; @@ -179,23 +178,17 @@ Styled.Status = styled.div<{ withMarginBottom?: boolean }>` `} `; -Styled.InlineOutput = styled(Output)` +const $InlineOutput = styled(Output)` display: inline-block; color: var(--color-text-1); `; -Styled.Step = styled.div` - ${layoutMixins.row}; - - gap: 0.5rem; -`; - -Styled.TransferStatusSteps = styled(TransferStatusSteps)` +const $TransferStatusSteps = styled(TransferStatusSteps)` padding: 0.5rem 0 0; `; -Styled.Trigger = styled.button<{ isOpen?: boolean }>` +const $Trigger = styled.button<{ isOpen?: boolean }>` display: flex; align-items: center; gap: 0.5em; @@ -222,6 +215,6 @@ Styled.Trigger = styled.button<{ isOpen?: boolean }>` `} `; -Styled.Receipt = styled.div` +const $Receipt = styled.div` padding: 0 1rem; `; diff --git a/src/views/tables/FillsTable.tsx b/src/views/tables/FillsTable.tsx index 4a32c1c16..927842839 100644 --- a/src/views/tables/FillsTable.tsx +++ b/src/views/tables/FillsTable.tsx @@ -1,41 +1,44 @@ -import { useEffect } from 'react'; -import styled, { type AnyStyledComponent, css } from 'styled-components'; -import { shallowEqual, useDispatch, useSelector } from 'react-redux'; +import { Key, useEffect, useMemo } from 'react'; + +import { Nullable } from '@dydxprotocol/v4-abacus'; import { OrderSide } from '@dydxprotocol/v4-client-js'; import type { ColumnSize } from '@react-types/table'; -import { Nullable } from '@dydxprotocol/v4-abacus'; +import { shallowEqual, useDispatch, useSelector } from 'react-redux'; +import styled, { css } from 'styled-components'; import { type Asset, type SubaccountFill } from '@/constants/abacus'; import { DialogTypes } from '@/constants/dialogs'; -import { STRING_KEYS, StringGetterFunction } from '@/constants/localization'; +import { STRING_KEYS, type StringGetterFunction } from '@/constants/localization'; +import { EMPTY_ARR } from '@/constants/objects'; -import { useBreakpoints, useStringGetter } from '@/hooks'; +import { useBreakpoints } from '@/hooks/useBreakpoints'; +import { useStringGetter } from '@/hooks/useStringGetter'; import { layoutMixins } from '@/styles/layoutMixins'; import { tradeViewMixins } from '@/styles/tradeViewMixins'; import { AssetIcon } from '@/components/AssetIcon'; import { Icon, IconName } from '@/components/Icon'; -import { MarketTableCell } from '@/components/Table/MarketTableCell'; import { OrderSideTag } from '@/components/OrderSideTag'; import { Output, OutputType } from '@/components/Output'; import { Table, TableCell, TableColumnHeader, type ColumnDef } from '@/components/Table'; +import { MarketTableCell } from '@/components/Table/MarketTableCell'; +import { PageSize } from '@/components/Table/TablePaginationRow'; import { TagSize } from '@/components/Tag'; +import { viewedFills } from '@/state/account'; import { getCurrentMarketFills, getHasUnseenFillUpdates, getSubaccountFills, } from '@/state/accountSelectors'; - import { getAssets } from '@/state/assetsSelectors'; -import { getPerpetualMarkets } from '@/state/perpetualsSelectors'; -import { viewedFills } from '@/state/account'; - import { openDialog } from '@/state/dialogs'; +import { getPerpetualMarkets } from '@/state/perpetualsSelectors'; import { MustBigNumber } from '@/lib/numbers'; import { getHydratedTradingData } from '@/lib/orders'; +import { orEmptyObj } from '@/lib/typeUtils'; const MOBILE_FILLS_PER_PAGE = 50; @@ -88,7 +91,7 @@ const getFillsTableColumnDef = ({ key: STRING_KEYS.AMOUNT, })}`, renderCell: ({ resources, size, stepSizeDecimals, asset: { id } }) => ( - <TableCell stacked slotLeft={<Styled.AssetIcon symbol={id} />}> + <TableCell stacked slotLeft={<$AssetIcon symbol={id} />}> <span> {resources.typeStringKey ? stringGetter({ key: resources.typeStringKey }) : null} </span> @@ -109,21 +112,21 @@ const getFillsTableColumnDef = ({ })}`, renderCell: ({ fee, orderSide, price, resources, tickSizeDecimals }) => ( <TableCell stacked> - <Styled.InlineRow> - <Styled.Side side={orderSide}> + <$InlineRow> + <$Side side={orderSide}> {resources.sideStringKey ? stringGetter({ key: resources.sideStringKey }) : null} - </Styled.Side> - <Styled.SecondaryColor>@</Styled.SecondaryColor> + </$Side> + <$SecondaryColor>@</$SecondaryColor> <Output type={OutputType.Fiat} value={price} fractionDigits={tickSizeDecimals} /> - </Styled.InlineRow> - <Styled.InlineRow> - <Styled.BaseColor> + </$InlineRow> + <$InlineRow> + <$BaseColor> {resources.liquidityStringKey ? stringGetter({ key: resources.liquidityStringKey }) : null} - </Styled.BaseColor> + </$BaseColor> <Output type={OutputType.Fiat} value={fee} /> - </Styled.InlineRow> + </$InlineRow> </TableCell> ), }, @@ -132,7 +135,7 @@ const getFillsTableColumnDef = ({ getCellValue: (row) => row.createdAtMilliseconds, label: stringGetter({ key: STRING_KEYS.TIME }), renderCell: ({ createdAtMilliseconds }) => ( - <Styled.TimeOutput + <$TimeOutput type={OutputType.RelativeTime} relativeTimeFormatOptions={{ format: 'singleCharacter' }} value={createdAtMilliseconds} @@ -150,17 +153,17 @@ const getFillsTableColumnDef = ({ getCellValue: (row) => row.marketId, label: stringGetter({ key: STRING_KEYS.ACTION }), renderCell: ({ asset, orderSide }) => ( - <Styled.TableCell> - <Styled.Side side={orderSide}> + <$TableCell> + <$Side side={orderSide}> {stringGetter({ key: { [OrderSide.BUY]: STRING_KEYS.BUY, [OrderSide.SELL]: STRING_KEYS.SELL, }[orderSide], })} - </Styled.Side> + </$Side> <Output type={OutputType.Text} value={asset?.id} /> - </Styled.TableCell> + </$TableCell> ), }, [FillsTableColumnKey.Liquidity]: { @@ -290,6 +293,7 @@ type ElementProps = { columnKeys: FillsTableColumnKey[]; columnWidths?: Partial<Record<FillsTableColumnKey, ColumnSize>>; currentMarket?: string; + initialPageSize?: PageSize; }; type StyleProps = { @@ -302,6 +306,7 @@ export const FillsTable = ({ columnKeys, columnWidths, currentMarket, + initialPageSize, withGradientCardRows, withOuterBorder, withInnerBorders = true, @@ -310,12 +315,12 @@ export const FillsTable = ({ const dispatch = useDispatch(); const { isMobile, isTablet } = useBreakpoints(); - const marketFills = useSelector(getCurrentMarketFills, shallowEqual) || []; - const allFills = useSelector(getSubaccountFills, shallowEqual) || []; + const marketFills = useSelector(getCurrentMarketFills, shallowEqual) ?? EMPTY_ARR; + const allFills = useSelector(getSubaccountFills, shallowEqual) ?? EMPTY_ARR; const fills = currentMarket ? marketFills : allFills; - const allPerpetualMarkets = useSelector(getPerpetualMarkets, shallowEqual) || {}; - const allAssets = useSelector(getAssets, shallowEqual) || {}; + const allPerpetualMarkets = orEmptyObj(useSelector(getPerpetualMarkets, shallowEqual)); + const allAssets = orEmptyObj(useSelector(getAssets, shallowEqual)); const hasUnseenFillUpdates = useSelector(getHasUnseenFillUpdates); @@ -325,23 +330,27 @@ export const FillsTable = ({ const symbol = currentMarket ? allAssets[allPerpetualMarkets[currentMarket]?.assetId]?.id : null; - const fillsData = fills.map((fill: SubaccountFill) => - getHydratedTradingData({ - data: fill, - assets: allAssets, - perpetualMarkets: allPerpetualMarkets, - }) - ) as FillTableRow[]; + const fillsData = useMemo( + () => + fills.map((fill: SubaccountFill) => + getHydratedTradingData({ + data: fill, + assets: allAssets, + perpetualMarkets: allPerpetualMarkets, + }) + ) as FillTableRow[], + [fills, allPerpetualMarkets, allAssets] + ); return ( - <Styled.Table + <$Table key={currentMarket ?? 'all-fills'} label="Fills" data={ isMobile && withGradientCardRows ? fillsData.slice(0, MOBILE_FILLS_PER_PAGE) : fillsData } getRowKey={(row: FillTableRow) => row.id} - onRowAction={(key: string) => + onRowAction={(key: Key) => dispatch( openDialog({ type: DialogTypes.FillDetails, @@ -349,7 +358,7 @@ export const FillsTable = ({ }) ) } - columns={columnKeys.map((key: FillsTableColumnKey, index: number) => + columns={columnKeys.map((key: FillsTableColumnKey) => getFillsTableColumnDef({ key, isTablet, @@ -360,10 +369,11 @@ export const FillsTable = ({ )} slotEmpty={ <> - <Styled.Icon iconName={IconName.History} /> + <$Icon iconName={IconName.History} /> <h4>{stringGetter({ key: STRING_KEYS.TRADES_EMPTY_STATE })}</h4> </> } + initialPageSize={initialPageSize} withOuterBorder={withOuterBorder} withInnerBorders={withInnerBorders} withScrollSnapColumns @@ -372,42 +382,39 @@ export const FillsTable = ({ /> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.Table = styled(Table)` +const $Table = styled(Table)` ${tradeViewMixins.horizontalTable} -`; +` as typeof Table; -Styled.TableCell = styled(TableCell)` +const $TableCell = styled(TableCell)` gap: 0.25rem; `; -Styled.InlineRow = styled.div` +const $InlineRow = styled.div` ${layoutMixins.inlineRow} `; -Styled.Icon = styled(Icon)` +const $Icon = styled(Icon)` font-size: 3em; `; -Styled.AssetIcon = styled(AssetIcon)` +const $AssetIcon = styled(AssetIcon)` font-size: 2.25rem; `; -Styled.SecondaryColor = styled.span` +const $SecondaryColor = styled.span` color: var(--color-text-0); `; -Styled.BaseColor = styled.span` +const $BaseColor = styled.span` color: var(--color-text-1); `; -Styled.TimeOutput = styled(Output)` +const $TimeOutput = styled(Output)` color: var(--color-text-0); `; -Styled.Side = styled.span<{ side: OrderSide }>` +const $Side = styled.span<{ side: OrderSide }>` ${({ side }) => ({ [OrderSide.BUY]: css` diff --git a/src/views/tables/FundingPaymentsTable.tsx b/src/views/tables/FundingPaymentsTable.tsx index 5b5c37c38..225238098 100644 --- a/src/views/tables/FundingPaymentsTable.tsx +++ b/src/views/tables/FundingPaymentsTable.tsx @@ -1,16 +1,19 @@ -import styled, { type AnyStyledComponent } from 'styled-components'; -import { shallowEqual, useSelector } from 'react-redux'; import { DateTime } from 'luxon'; +import { shallowEqual, useSelector } from 'react-redux'; +import styled from 'styled-components'; import type { Asset, SubaccountFundingPayment } from '@/constants/abacus'; import { STRING_KEYS } from '@/constants/localization'; -import { useStringGetter } from '@/hooks'; +import { EMPTY_ARR } from '@/constants/objects'; + +import { useStringGetter } from '@/hooks/useStringGetter'; import { tradeViewMixins } from '@/styles/tradeViewMixins'; -import { MarketTableCell } from '@/components/Table/MarketTableCell'; import { Output, OutputType } from '@/components/Output'; import { Table, TableCell, type ColumnDef } from '@/components/Table'; +import { MarketTableCell } from '@/components/Table/MarketTableCell'; +import { PageSize } from '@/components/Table/TablePaginationRow'; import { getCurrentMarketFundingPayments, @@ -22,9 +25,11 @@ import { getPerpetualMarkets } from '@/state/perpetualsSelectors'; import { MustBigNumber } from '@/lib/numbers'; import { getHydratedTradingData } from '@/lib/orders'; import { getStringsForDateTimeDiff } from '@/lib/timeUtils'; +import { orEmptyObj } from '@/lib/typeUtils'; type ElementProps = { currentMarket?: string; + initialPageSize?: PageSize; }; type StyleProps = { @@ -39,16 +44,18 @@ export type FundingPaymentTableRow = { export const FundingPaymentsTable = ({ currentMarket, + initialPageSize, withOuterBorder, }: ElementProps & StyleProps) => { const stringGetter = useStringGetter(); - const marketFundingPayments = useSelector(getCurrentMarketFundingPayments, shallowEqual) || []; - const allFundingPayments = useSelector(getSubaccountFundingPayments, shallowEqual) || []; + const marketFundingPayments = + useSelector(getCurrentMarketFundingPayments, shallowEqual) ?? EMPTY_ARR; + const allFundingPayments = useSelector(getSubaccountFundingPayments, shallowEqual) ?? EMPTY_ARR; const fundingPayments = currentMarket ? marketFundingPayments : allFundingPayments; - const allPerpetualMarkets = useSelector(getPerpetualMarkets, shallowEqual) || {}; - const allAssets = useSelector(getAssets, shallowEqual) || {}; + const allPerpetualMarkets = orEmptyObj(useSelector(getPerpetualMarkets, shallowEqual)); + const allAssets = orEmptyObj(useSelector(getAssets, shallowEqual)); const fundingPaymentsData = fundingPayments.map((fundingPayment: SubaccountFundingPayment) => getHydratedTradingData({ @@ -59,7 +66,7 @@ export const FundingPaymentsTable = ({ ) as FundingPaymentTableRow[]; return ( - <Styled.Table + <$Table key={currentMarket ?? 'all-fundingPayments'} label="FundingPayments" data={fundingPaymentsData} @@ -97,7 +104,7 @@ export const FundingPaymentsTable = ({ getCellValue: (row) => row.rate, label: stringGetter({ key: STRING_KEYS.FUNDING_RATE }), renderCell: (row) => ( - <Styled.Output + <$Output type={OutputType.SmallPercent} value={row.rate} isNegative={MustBigNumber(row.rate).isNegative()} @@ -116,7 +123,7 @@ export const FundingPaymentsTable = ({ fractionDigits={stepSizeDecimals} tag={asset.id} /> - <Styled.Output + <$Output type={OutputType.Text} value={ MustBigNumber(positionSize).isNegative() @@ -138,11 +145,8 @@ export const FundingPaymentsTable = ({ }, ] as ColumnDef<FundingPaymentTableRow>[] ).filter(Boolean)} - slotEmpty={ - <> - <h4>{stringGetter({ key: STRING_KEYS.FUNDING_PAYMENTS_EMPTY_STATE })}</h4> - </> - } + slotEmpty={<h4>{stringGetter({ key: STRING_KEYS.FUNDING_PAYMENTS_EMPTY_STATE })}</h4>} + initialPageSize={initialPageSize} withOuterBorder={withOuterBorder} withInnerBorders withScrollSnapColumns @@ -151,14 +155,11 @@ export const FundingPaymentsTable = ({ /> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.Table = styled(Table)` +const $Table = styled(Table)` ${tradeViewMixins.horizontalTable} -`; +` as typeof Table; -Styled.Output = styled(Output)<{ isNegative?: boolean }>` +const $Output = styled(Output)<{ isNegative?: boolean }>` color: ${({ isNegative }) => isNegative ? `var(--color-negative)` : `var(--color-positive)`} !important; `; diff --git a/src/views/tables/LiveTrades.tsx b/src/views/tables/LiveTrades.tsx index 7dd3022f6..3381f75de 100644 --- a/src/views/tables/LiveTrades.tsx +++ b/src/views/tables/LiveTrades.tsx @@ -1,11 +1,15 @@ import { useMemo } from 'react'; -import styled, { type AnyStyledComponent, css, keyframes } from 'styled-components'; -import { shallowEqual, useSelector } from 'react-redux'; + import { OrderSide } from '@dydxprotocol/v4-client-js'; +import { shallowEqual, useSelector } from 'react-redux'; +import styled, { css, keyframes } from 'styled-components'; import { MarketTrade } from '@/constants/abacus'; import { STRING_KEYS } from '@/constants/localization'; -import { useBreakpoints, useStringGetter } from '@/hooks'; +import { EMPTY_ARR } from '@/constants/objects'; + +import { useBreakpoints } from '@/hooks/useBreakpoints'; +import { useStringGetter } from '@/hooks/useStringGetter'; import { breakpoints } from '@/styles'; @@ -15,9 +19,11 @@ import { Output, OutputType } from '@/components/Output'; import { getCurrentMarketAssetData } from '@/state/assetsSelectors'; import { getCurrentMarketConfig, getCurrentMarketLiveTrades } from '@/state/perpetualsSelectors'; -import { OrderbookTradesOutput, OrderbookTradesTable } from './OrderbookTradesTable'; -import { getSelectedOrderSide } from '@/lib/tradeData'; +import { getSimpleStyledOutputType } from '@/lib/genericFunctionalComponentUtils'; import { isTruthy } from '@/lib/isTruthy'; +import { getSelectedOrderSide } from '@/lib/tradeData'; + +import { OrderbookTradesOutput, OrderbookTradesTable } from './OrderbookTradesTable'; const MAX_ORDERBOOK_BAR_SIZE = 0.4; const LARGE_TRADE_USD_VALUE = 10000; @@ -41,10 +47,11 @@ export const LiveTrades = ({ className, histogramSide = 'left' }: StyleProps) => const { isTablet } = useBreakpoints(); const currentMarketAssetData = useSelector(getCurrentMarketAssetData, shallowEqual); const currentMarketConfig = useSelector(getCurrentMarketConfig, shallowEqual); - const currentMarketLiveTrades = useSelector(getCurrentMarketLiveTrades, shallowEqual) || []; + const currentMarketLiveTrades = + useSelector(getCurrentMarketLiveTrades, shallowEqual) ?? EMPTY_ARR; const { id = '' } = currentMarketAssetData ?? {}; - const { stepSizeDecimals, tickSizeDecimals } = currentMarketConfig || {}; + const { stepSizeDecimals, tickSizeDecimals } = currentMarketConfig ?? {}; const rows = currentMarketLiveTrades.map( ({ createdAtMilliseconds, price, size, side }: MarketTrade, idx) => ({ @@ -62,7 +69,7 @@ export const LiveTrades = ({ className, histogramSide = 'left' }: StyleProps) => getCellValue: (row: RowData) => row.createdAtMilliseconds, label: stringGetter({ key: STRING_KEYS.TIME }), renderCell: (row: RowData) => ( - <Styled.TimeOutput type={OutputType.Time} value={row.createdAtMilliseconds} /> + <$TimeOutput type={OutputType.Time} value={row.createdAtMilliseconds} /> ), }; return [ @@ -72,7 +79,7 @@ export const LiveTrades = ({ className, histogramSide = 'left' }: StyleProps) => getCellValue: (row: RowData) => row.size, label: stringGetter({ key: STRING_KEYS.SIDE }), renderCell: (row: RowData) => ( - <Styled.SideOutput + <$SideOutput type={OutputType.Text} value={stringGetter({ key: row.side === OrderSide.BUY ? STRING_KEYS.BUY : STRING_KEYS.SELL, @@ -86,7 +93,7 @@ export const LiveTrades = ({ className, histogramSide = 'left' }: StyleProps) => label: stringGetter({ key: STRING_KEYS.SIZE }), tag: id, renderCell: (row: RowData) => ( - <Styled.SizeOutput + <$SizeOutput type={OutputType.Asset} value={row.size} fractionDigits={stepSizeDecimals} @@ -114,7 +121,7 @@ export const LiveTrades = ({ className, histogramSide = 'left' }: StyleProps) => }, [stepSizeDecimals, tickSizeDecimals, id, histogramSide, stringGetter]); return ( - <Styled.LiveTradesTable + <$LiveTradesTable className={className} key="live-trades" label="Recent Trades" @@ -140,19 +147,16 @@ export const LiveTrades = ({ className, histogramSide = 'left' }: StyleProps) => /> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.TimeOutput = styled(OrderbookTradesOutput)` +const $TimeOutput = styled(OrderbookTradesOutput)` color: var(--color-text-0); font-feature-settings: var(--fontFeature-monoNumbers); `; -Styled.SideOutput = styled(Output)` +const $SideOutput = styled(Output)` color: var(--accent-color); `; -Styled.SizeOutput = styled(Output)<StyleProps>` +const $SizeOutput = styled(Output)<StyleProps>` color: var(--accent-color); @media ${breakpoints.tablet} { @@ -160,7 +164,8 @@ Styled.SizeOutput = styled(Output)<StyleProps>` } `; -Styled.LiveTradesTable = styled(OrderbookTradesTable)<StyleProps>` +const liveTradesTableType = getSimpleStyledOutputType(OrderbookTradesTable, {} as StyleProps); +const $LiveTradesTable = styled(OrderbookTradesTable)<StyleProps>` tr { --histogram-bucket-size: 1; background-color: var(--color-layer-2); @@ -228,4 +233,4 @@ Styled.LiveTradesTable = styled(OrderbookTradesTable)<StyleProps>` font-size: 0.875em; } -`; +` as typeof liveTradesTableType; diff --git a/src/views/tables/MarketsCompactTable.tsx b/src/views/tables/MarketsCompactTable.tsx new file mode 100644 index 000000000..620db306a --- /dev/null +++ b/src/views/tables/MarketsCompactTable.tsx @@ -0,0 +1,329 @@ +import { Key, PropsWithChildren, useMemo } from 'react'; + +import { useNavigate } from 'react-router-dom'; +import styled from 'styled-components'; + +import { STRING_KEYS } from '@/constants/localization'; +import { MarketFilters, MarketSorting, type MarketData } from '@/constants/markets'; +import { AppRoute } from '@/constants/routes'; + +import { useBreakpoints } from '@/hooks/useBreakpoints'; +import { useMarketsData } from '@/hooks/useMarketsData'; +import { useStringGetter } from '@/hooks/useStringGetter'; + +import { breakpoints } from '@/styles'; +import { layoutMixins } from '@/styles/layoutMixins'; +import { tradeViewMixins } from '@/styles/tradeViewMixins'; + +import { Icon, IconName } from '@/components/Icon'; +import { LoadingSpace } from '@/components/Loading/LoadingSpinner'; +import { Output, OutputType } from '@/components/Output'; +import { AssetTableCell, Table, TableCell, type ColumnDef } from '@/components/Table'; +import { TriangleIndicator } from '@/components/TriangleIndicator'; + +import { MustBigNumber } from '@/lib/numbers'; + +interface MarketsCompactTableProps { + className?: string; + filters?: MarketFilters; + sorting?: MarketSorting; +} + +export const MarketsCompactTable = ({ + className, + filters, + sorting, +}: PropsWithChildren<MarketsCompactTableProps>) => { + const stringGetter = useStringGetter(); + const { isTablet } = useBreakpoints(); + const navigate = useNavigate(); + + const { filteredMarkets } = useMarketsData(filters); + + const columns = useMemo<ColumnDef<MarketData>[]>( + () => + [ + { + columnKey: 'market', + getCellValue: (row) => row.market, + allowsSorting: false, + label: stringGetter({ key: STRING_KEYS.MARKET }), + renderCell: ({ asset }) => <AssetTableCell stacked asset={asset} />, + }, + { + columnKey: 'oraclePrice', + getCellValue: (row) => row.oraclePrice, + allowsSorting: false, + label: stringGetter({ key: STRING_KEYS.ORACLE_PRICE }), + renderCell: ({ + oraclePrice, + priceChange24H, + priceChange24HPercent, + tickSizeDecimals, + }) => ( + <TableCell stacked> + <$TabletOutput + withBaseFont + withSubscript + type={OutputType.Fiat} + value={oraclePrice} + fractionDigits={tickSizeDecimals} + /> + <$TabletPriceChange> + {!priceChange24H ? ( + <Output type={OutputType.Fiat} value={null} /> + ) : ( + <> + {priceChange24H > 0 && ( + <TriangleIndicator value={MustBigNumber(priceChange24H)} /> + )} + <$Output + type={OutputType.Percent} + value={MustBigNumber(priceChange24HPercent).abs()} + isPositive={MustBigNumber(priceChange24HPercent).gt(0)} + isNegative={MustBigNumber(priceChange24HPercent).isNegative()} + /> + </> + )} + </$TabletPriceChange> + </TableCell> + ), + }, + filters === MarketFilters.NEW + ? { + columnKey: 'listing', + getCellValue: (row) => row.isNew, + allowsSorting: false, + renderCell: ({ listingDate }) => ( + <$DetailsCell> + <$RecentlyListed> + <span>Listed</span> + {listingDate && ( + <$RelativeTimeOutput + type={OutputType.RelativeTime} + relativeTimeFormatOptions={{ + format: 'singleCharacter', + }} + value={listingDate.getTime()} + /> + )} + </$RecentlyListed> + <Icon iconName={IconName.ChevronRight} /> + </$DetailsCell> + ), + } + : { + columnKey: 'openInterest', + allowsSorting: false, + getCellValue: (row) => row.openInterestUSDC, + label: stringGetter({ key: STRING_KEYS.OPEN_INTEREST }), + renderCell: ({ asset, openInterestUSDC, openInterest }) => ( + <$DetailsCell> + <$RecentlyListed> + <Output type={OutputType.CompactFiat} value={openInterestUSDC} /> + <$InterestOutput + type={OutputType.CompactNumber} + value={openInterest} + slotRight={` ${asset.id}`} + /> + </$RecentlyListed> + <Icon iconName={IconName.ChevronRight} /> + </$DetailsCell> + ), + }, + ] as ColumnDef<MarketData>[], + [stringGetter, isTablet] + ); + + const sortedMarkets = useMemo(() => { + const sortingFunction = (marketA: MarketData, marketB: MarketData) => { + if (marketA.priceChange24HPercent == null && marketB.priceChange24HPercent == null) { + return 0; + } + + if (marketA.priceChange24HPercent == null) { + return 1; + } + + if (marketB.priceChange24HPercent == null) { + return -1; + } + + return sorting === MarketSorting.GAINERS + ? marketB.priceChange24HPercent - marketA.priceChange24HPercent + : marketA.priceChange24HPercent - marketB.priceChange24HPercent; + }; + + if (sorting === MarketSorting.LOSERS) { + return filteredMarkets + .filter((market) => !!market.priceChange24HPercent && market.priceChange24HPercent < 0) + .sort(sortingFunction); + } + + return filteredMarkets.sort(sortingFunction); + }, [sorting, filteredMarkets]); + + return ( + <$Table + withInnerBorders + data={sortedMarkets.slice(0, 5)} + getRowKey={(row) => row.market ?? ''} + label="Markets" + onRowAction={(market: Key) => + navigate(`${AppRoute.Trade}/${market}`, { state: { from: AppRoute.Markets } }) + } + columns={columns} + className={className} + slotEmpty={ + <$MarketNotFound> + {filters === MarketFilters.NEW ? ( + <p>{stringGetter({ key: STRING_KEYS.NO_RECENTLY_LISTED_MARKETS })}</p> + ) : ( + <LoadingSpace id="compact-markets-table" /> + )} + </$MarketNotFound> + } + initialPageSize={5} + /> + ); +}; + +const $Table = styled(Table)` + ${tradeViewMixins.horizontalTable} + --tableCell-padding: 0.625rem 1.5rem; + --tableRow-backgroundColor: var(--color-layer-3); + --tableHeader-backgroundColor: var(--color-layer-3); + border-bottom-right-radius: 0.625rem; + border-bottom-left-radius: 0.625rem; + + & table { + --stickyArea1-background: var(--color-layer-5); + } + + & tr:last-child { + box-shadow: none; + } + + & tbody:after { + content: none; + } + + & > div { + padding: 1rem; + } + + @media ${breakpoints.desktopSmall} { + --tableCell-padding: 0.5rem 0.5rem; + + & tr > td:nth-child(1) { + --tableCell-padding: 0.5rem 0.5rem; + } + + & tr > td:nth-child(2) { + --tableCell-padding: 0.5rem 0; + } + + & tr > td:nth-child(3) { + --tableCell-padding: 0.5rem 0.5rem; + } + } + + @media ${breakpoints.tablet} { + table { + max-width: 100vw; + } + + & tr > td:nth-child(1) { + --tableCell-padding: 0.5rem 0.625rem 0.5rem 1rem; + } + + & tr > td:nth-child(2) { + --tableCell-padding: 0.5rem 0; + } + + & tr > td:nth-child(3) { + --tableCell-padding: 0.5rem 1rem 0.5rem 0.625rem; + } + } +` as typeof Table; + +const $TabletOutput = styled(Output)` + font: var(--font-small-medium); + color: var(--color-text-1); +`; + +const $TabletPriceChange = styled.div` + ${layoutMixins.inlineRow} + + & output { + font: var(--font-mini-medium); + } +`; + +const $Output = styled(Output)<{ isNegative?: boolean; isPositive?: boolean }>` + color: ${({ isNegative, isPositive }) => + isNegative + ? `var(--color-negative)` + : isPositive + ? `var(--color-positive)` + : `var(--color-text-1)`}; + font: var(--font-base-medium); +`; + +const $MarketNotFound = styled.div` + ${layoutMixins.column} + justify-content: center; + align-items: center; + text-align: center; + padding: 0; + + & p { + color: var(--color-text-0); + font: var(--font-base-medium); + } + + & button { + color: var(--color-accent); + } +`; + +const $DetailsCell = styled(TableCell)` + ${layoutMixins.row} + gap: 0.75rem; + + & > svg { + opacity: 0.4; + } +`; + +const $RecentlyListed = styled.div` + ${layoutMixins.column} + gap: 0.125rem; + + & > span, + & > output { + text-align: right; + justify-content: flex-end; + } + + & > span:first-child { + color: var(--color-text-0); + font: var(--font-mini-medium); + } + + & > span:last-child, + & > output:first-child { + color: var(--color-text-1); + font: var(--font-small-medium); + } +`; + +const $InterestOutput = styled(Output)` + color: var(--color-text-0); + font: var(--font-mini-medium); +`; + +const $RelativeTimeOutput = styled(Output)` + color: var(--color-text-1); + font: var(--font-small-medium); +`; diff --git a/src/views/tables/MarketsTable.tsx b/src/views/tables/MarketsTable.tsx index b66ed66e4..1e9b6d752 100644 --- a/src/views/tables/MarketsTable.tsx +++ b/src/views/tables/MarketsTable.tsx @@ -1,33 +1,47 @@ -import { useMemo, useState } from 'react'; -import styled, { type AnyStyledComponent } from 'styled-components'; +import { Key, useMemo, useState } from 'react'; + +import { useDispatch, useSelector } from 'react-redux'; import { useNavigate } from 'react-router-dom'; +import styled from 'styled-components'; +import { ButtonSize } from '@/constants/buttons'; import { STRING_KEYS } from '@/constants/localization'; import { MarketFilters, type MarketData } from '@/constants/markets'; -import { FUNDING_DECIMALS, LARGE_TOKEN_DECIMALS } from '@/constants/numbers'; -import { AppRoute } from '@/constants/routes'; +import { FUNDING_DECIMALS } from '@/constants/numbers'; +import { AppRoute, MarketsRoute } from '@/constants/routes'; -import { useBreakpoints, useStringGetter } from '@/hooks'; +import { useBreakpoints } from '@/hooks/useBreakpoints'; import { useMarketsData } from '@/hooks/useMarketsData'; +import { usePotentialMarkets } from '@/hooks/usePotentialMarkets'; +import { useStringGetter } from '@/hooks/useStringGetter'; import { breakpoints } from '@/styles'; import { layoutMixins } from '@/styles/layoutMixins'; import { tradeViewMixins } from '@/styles/tradeViewMixins'; +import { Button } from '@/components/Button'; import { Output, OutputType } from '@/components/Output'; -import { type ColumnDef, MarketTableCell, Table, TableCell } from '@/components/Table'; +import { AssetTableCell, Table, TableCell, type ColumnDef } from '@/components/Table'; +import { Toolbar } from '@/components/Toolbar'; import { TriangleIndicator } from '@/components/TriangleIndicator'; +import { SparklineChart } from '@/components/visx/SparklineChart'; import { MarketFilter } from '@/views/MarketFilter'; +import { setMarketFilter } from '@/state/perpetuals'; +import { getMarketFilter } from '@/state/perpetualsSelectors'; + import { MustBigNumber } from '@/lib/numbers'; export const MarketsTable = ({ className }: { className?: string }) => { const stringGetter = useStringGetter(); const { isTablet } = useBreakpoints(); - const [filter, setFilter] = useState(MarketFilters.ALL); + const dispatch = useDispatch(); + const filter: MarketFilters = useSelector(getMarketFilter); + const [searchFilter, setSearchFilter] = useState<string>(); const navigate = useNavigate(); - const { filteredMarkets, marketFilters } = useMarketsData(filter); + const { filteredMarkets, marketFilters } = useMarketsData(filter, searchFilter); + const { hasPotentialMarketsData } = usePotentialMarkets(); const columns = useMemo<ColumnDef<MarketData>[]>( () => @@ -37,7 +51,7 @@ export const MarketsTable = ({ className }: { className?: string }) => { columnKey: 'market', getCellValue: (row) => row.market, label: stringGetter({ key: STRING_KEYS.MARKET }), - renderCell: ({ asset, id }) => <Styled.MarketTableCell asset={asset} marketId={id} />, + renderCell: ({ asset }) => <AssetTableCell asset={asset} />, }, { columnKey: 'price', @@ -50,13 +64,13 @@ export const MarketsTable = ({ className }: { className?: string }) => { tickSizeDecimals, }) => ( <TableCell stacked> - <Styled.TabletOutput + <$TabletOutput type={OutputType.Fiat} value={oraclePrice} fractionDigits={tickSizeDecimals} withBaseFont /> - <Styled.TabletPriceChange> + <$TabletPriceChange> {!priceChange24H ? ( <Output type={OutputType.Fiat} value={null} /> ) : ( @@ -64,7 +78,7 @@ export const MarketsTable = ({ className }: { className?: string }) => { {priceChange24H > 0 && ( <TriangleIndicator value={MustBigNumber(priceChange24H)} /> )} - <Styled.Output + <$Output type={OutputType.Percent} value={MustBigNumber(priceChange24HPercent).abs()} isPositive={MustBigNumber(priceChange24HPercent).gt(0)} @@ -72,7 +86,7 @@ export const MarketsTable = ({ className }: { className?: string }) => { /> </> )} - </Styled.TabletPriceChange> + </$TabletPriceChange> </TableCell> ), }, @@ -82,58 +96,74 @@ export const MarketsTable = ({ className }: { className?: string }) => { columnKey: 'market', getCellValue: (row) => row.market, label: stringGetter({ key: STRING_KEYS.MARKET }), - renderCell: ({ asset, id }) => <Styled.MarketTableCell asset={asset} marketId={id} />, + renderCell: ({ asset }) => <AssetTableCell asset={asset} />, }, { columnKey: 'oraclePrice', getCellValue: (row) => row.oraclePrice, label: stringGetter({ key: STRING_KEYS.ORACLE_PRICE }), renderCell: ({ oraclePrice, tickSizeDecimals }) => ( - <Output + <$TabletOutput type={OutputType.Fiat} value={oraclePrice} fractionDigits={tickSizeDecimals} /> ), }, + { + columnKey: 'priceChange24HChart', + getCellValue: (row) => row.priceChange24HPercent, + label: stringGetter({ key: STRING_KEYS.LAST_24H }), + renderCell: ({ line, priceChange24HPercent }) => ( + <div style={{ width: 50, height: 50 }}> + <SparklineChart + data={(line?.toArray() ?? []).map((datum, index) => ({ + x: index + 1, + y: parseFloat(datum.toString()), + }))} + xAccessor={(datum) => datum.x} + yAccessor={(datum) => datum.y} + positive={MustBigNumber(priceChange24HPercent).gt(0)} + /> + </div> + ), + allowsSorting: false, + }, { columnKey: 'priceChange24HPercent', getCellValue: (row) => row.priceChange24HPercent, label: stringGetter({ key: STRING_KEYS.CHANGE_24H }), - renderCell: ({ priceChange24H, priceChange24HPercent, tickSizeDecimals }) => ( + renderCell: ({ priceChange24HPercent }) => ( <TableCell stacked> - <Styled.InlineRow> + <$InlineRow> {!priceChange24HPercent ? ( <Output type={OutputType.Text} value={null} /> ) : ( - <Styled.Output + <$Output type={OutputType.Percent} value={MustBigNumber(priceChange24HPercent).abs()} isPositive={MustBigNumber(priceChange24HPercent).gt(0)} isNegative={MustBigNumber(priceChange24HPercent).isNegative()} /> )} - </Styled.InlineRow> - <Output - type={OutputType.Fiat} - value={MustBigNumber(priceChange24H).abs()} - fractionDigits={tickSizeDecimals} - /> + </$InlineRow> </TableCell> ), }, { - columnKey: 'nextFundingRate', - getCellValue: (row) => row.nextFundingRate, - label: stringGetter({ key: STRING_KEYS.FUNDING_RATE_1H_SHORT }), + columnKey: 'volume24H', + getCellValue: (row) => row.volume24H, + label: stringGetter({ key: STRING_KEYS.VOLUME_24H }), renderCell: (row) => ( - <Styled.Output - type={OutputType.Percent} - fractionDigits={FUNDING_DECIMALS} - value={row.nextFundingRate} - isPositive={MustBigNumber(row.nextFundingRate).gt(0)} - isNegative={MustBigNumber(row.nextFundingRate).isNegative()} - /> + <$NumberOutput type={OutputType.CompactFiat} value={row.volume24H} /> + ), + }, + { + columnKey: 'trades24H', + getCellValue: (row) => row.trades24H, + label: stringGetter({ key: STRING_KEYS.TRADES }), + renderCell: (row) => ( + <$NumberOutput type={OutputType.CompactNumber} value={row.trades24H} /> ), }, { @@ -141,54 +171,52 @@ export const MarketsTable = ({ className }: { className?: string }) => { getCellValue: (row) => row.openInterestUSDC, label: stringGetter({ key: STRING_KEYS.OPEN_INTEREST }), renderCell: (row) => ( - <TableCell stacked> - <Output type={OutputType.Fiat} value={row.openInterestUSDC} /> - - <Output - fractionDigits={LARGE_TOKEN_DECIMALS} - type={OutputType.Number} - value={row.openInterest} - tag={row.asset?.id} - /> - </TableCell> + <$NumberOutput type={OutputType.CompactFiat} value={row.openInterestUSDC} /> ), }, { - columnKey: 'volume24H', - getCellValue: (row) => row.volume24H, - label: stringGetter({ key: STRING_KEYS.VOLUME_24H }), - renderCell: (row) => <Output type={OutputType.Fiat} value={row.volume24H} />, - }, - { - columnKey: 'trades24H', - getCellValue: (row) => row.trades24H, - label: stringGetter({ key: STRING_KEYS.TRADES_24H }), - renderCell: (row) => <Output type={OutputType.Number} value={row.trades24H} />, + columnKey: 'nextFundingRate', + getCellValue: (row) => row.nextFundingRate, + label: stringGetter({ key: STRING_KEYS.FUNDING_RATE_1H_SHORT }), + renderCell: (row) => ( + <$Output + type={OutputType.Percent} + fractionDigits={FUNDING_DECIMALS} + value={row.nextFundingRate} + isPositive={MustBigNumber(row.nextFundingRate).gt(0)} + isNegative={MustBigNumber(row.nextFundingRate).isNegative()} + /> + ), }, ] as ColumnDef<MarketData>[]), [stringGetter, isTablet] ); + const setFilter = (newFilter: MarketFilters) => { + dispatch(setMarketFilter(newFilter)); + }; + return ( <> - {isTablet && ( - <Styled.FilterWrapper> - <MarketFilter - selectedFilter={filter} - filters={marketFilters as MarketFilters[]} - onChangeFilter={setFilter} - withoutSearch - /> - </Styled.FilterWrapper> - )} - <Styled.Table + <$Toolbar> + <MarketFilter + hideNewMarketButton + compactLayout + searchPlaceholderKey={STRING_KEYS.SEARCH_MARKETS} + selectedFilter={filter} + filters={marketFilters as MarketFilters[]} + onChangeFilter={setFilter} + onSearchTextChange={setSearchFilter} + /> + </$Toolbar> + + <$Table withInnerBorders - withOuterBorder={!isTablet} data={filteredMarkets} - getRowKey={(row: MarketData) => row.market} + getRowKey={(row: MarketData) => row.market ?? ''} label="Markets" - onRowAction={(market: string) => - navigate(`/trade/${market}`, { state: { from: AppRoute.Markets } }) + onRowAction={(market: Key) => + navigate(`${AppRoute.Trade}/${market}`, { state: { from: AppRoute.Markets } }) } defaultSortDescriptor={{ column: 'volume24H', @@ -196,18 +224,66 @@ export const MarketsTable = ({ className }: { className?: string }) => { }} columns={columns} className={className} + slotEmpty={ + <$MarketNotFound> + {filter === MarketFilters.NEW && !searchFilter ? ( + <> + <h2> + {stringGetter({ + key: STRING_KEYS.QUERY_NOT_FOUND, + params: { QUERY: stringGetter({ key: STRING_KEYS.NEW }) }, + })} + </h2> + {hasPotentialMarketsData && ( + <p>{stringGetter({ key: STRING_KEYS.ADD_DETAILS_TO_LAUNCH_MARKET })}</p> + )} + </> + ) : ( + <> + <h2> + {stringGetter({ + key: STRING_KEYS.QUERY_NOT_FOUND, + params: { QUERY: searchFilter ?? '' }, + })} + </h2> + <p>{stringGetter({ key: STRING_KEYS.MARKET_SEARCH_DOES_NOT_EXIST_YET })}</p> + </> + )} + + {hasPotentialMarketsData && ( + <div> + <Button + onClick={() => navigate(`${AppRoute.Markets}/${MarketsRoute.New}`)} + size={ButtonSize.Small} + > + {stringGetter({ key: STRING_KEYS.PROPOSE_NEW_MARKET })} + </Button> + </div> + )} + </$MarketNotFound> + } /> </> ); }; +const $Toolbar = styled(Toolbar)` + max-width: 100vw; + overflow: hidden; + margin-bottom: 0.625rem; + padding-left: 0.375rem; + padding-right: 0; -const Styled: Record<string, AnyStyledComponent> = {}; + @media ${breakpoints.desktopSmall} { + padding-right: 0.375rem; + } -Styled.FilterWrapper = styled.div` - padding: 0 1rem; + @media ${breakpoints.tablet} { + padding-left: 1rem; + padding-right: 1rem; + } `; -Styled.Table = styled(Table)` +const $Table = styled(Table)` ${tradeViewMixins.horizontalTable} @media ${breakpoints.tablet} { @@ -215,39 +291,46 @@ Styled.Table = styled(Table)` max-width: 100vw; } } -`; +` as typeof Table; -Styled.MarketTableCell = styled(MarketTableCell)` - @media ${breakpoints.tablet} { - span:first-child { - font: var(--font-medium-book); - } - span:last-child { - font: var(--font-mini-regular); - } - } -`; - -Styled.TabletOutput = styled(Output)` - @media ${breakpoints.tablet} { - font: var(--font-medium-book); - color: var(--color-text-2); - } +const $TabletOutput = styled(Output)` + font: var(--font-medium-book); + color: var(--color-text-2); `; -Styled.InlineRow = styled.div` +const $InlineRow = styled.div` ${layoutMixins.inlineRow} `; -Styled.TabletPriceChange = styled(Styled.InlineRow)` +const $TabletPriceChange = styled($InlineRow)` font: var(--font-small-book); `; -Styled.Output = styled(Output)<{ isNegative?: boolean; isPositive?: boolean }>` +const $NumberOutput = styled(Output)` + font: var(--font-base-medium); + color: var(--color-text-2); +`; + +const $Output = styled(Output)<{ isNegative?: boolean; isPositive?: boolean }>` color: ${({ isNegative, isPositive }) => isNegative ? `var(--color-negative)` : isPositive ? `var(--color-positive)` : `var(--color-text-1)`}; + font: var(--font-base-medium); +`; + +const $MarketNotFound = styled.div` + ${layoutMixins.column} + justify-content: center; + align-items: center; + text-align: center; + gap: 1rem; + padding: 2rem 1.5rem; + + h2 { + font: var(--font-medium-book); + font-weight: 500; + } `; diff --git a/src/views/tables/Orderbook.tsx b/src/views/tables/Orderbook.tsx index 86f5829ea..ec0df8339 100644 --- a/src/views/tables/Orderbook.tsx +++ b/src/views/tables/Orderbook.tsx @@ -1,34 +1,36 @@ -import { useCallback, useMemo } from 'react'; -import { shallowEqual, useDispatch, useSelector } from 'react-redux'; -import styled, { type AnyStyledComponent, css, keyframes } from 'styled-components'; +import { Key, useCallback, useMemo } from 'react'; import { OrderSide } from '@dydxprotocol/v4-client-js'; +import { shallowEqual, useDispatch, useSelector } from 'react-redux'; +import styled, { css, keyframes } from 'styled-components'; + import { type OrderbookLine } from '@/constants/abacus'; import { STRING_KEYS } from '@/constants/localization'; import { ORDERBOOK_MAX_ROWS_PER_SIDE } from '@/constants/orderbook'; -import { useBreakpoints, useStringGetter } from '@/hooks'; - -import { calculateCanViewAccount } from '@/state/accountCalculators'; -import { setTradeFormInputs } from '@/state/inputs'; - -import { getSubaccountOpenOrdersBySideAndPrice } from '@/state/accountSelectors'; -import { getCurrentMarketAssetData } from '@/state/assetsSelectors'; -import { getCurrentMarketConfig, getCurrentMarketOrderbook } from '@/state/perpetualsSelectors'; -import { getCurrentInput } from '@/state/inputsSelectors'; +import { useBreakpoints } from '@/hooks/useBreakpoints'; +import { useStringGetter } from '@/hooks/useStringGetter'; -import { MustBigNumber } from '@/lib/numbers'; +import { breakpoints } from '@/styles'; +import { layoutMixins } from '@/styles/layoutMixins'; import { Details } from '@/components/Details'; import { LoadingSpace } from '@/components/Loading/LoadingSpinner'; import { Output, OutputType } from '@/components/Output'; -import { type CustomRowConfig, TableRow } from '@/components/Table'; +import { ColumnDef, TableRow, type CustomRowConfig } from '@/components/Table'; import { WithTooltip } from '@/components/WithTooltip'; -import { OrderbookTradesOutput, OrderbookTradesTable } from './OrderbookTradesTable'; +import { calculateCanViewAccount } from '@/state/accountCalculators'; +import { getSubaccountOrderSizeBySideAndPrice } from '@/state/accountSelectors'; +import { getCurrentMarketAssetData } from '@/state/assetsSelectors'; +import { setTradeFormInputs } from '@/state/inputs'; +import { getCurrentInput } from '@/state/inputsSelectors'; +import { getCurrentMarketConfig, getCurrentMarketOrderbook } from '@/state/perpetualsSelectors'; -import { breakpoints } from '@/styles'; -import { layoutMixins } from '@/styles/layoutMixins'; +import { getSimpleStyledOutputType } from '@/lib/genericFunctionalComponentUtils'; +import { MustBigNumber } from '@/lib/numbers'; + +import { OrderbookTradesOutput, OrderbookTradesTable } from './OrderbookTradesTable'; type ElementProps = { maxRowsPerSide?: number; @@ -50,8 +52,8 @@ type RowData = Pick<OrderbookLine, 'depth' | 'offset' | 'price' | 'size'> & { const useCalculateOrderbookData = ({ maxRowsPerSide }: { maxRowsPerSide: number }) => { const orderbook = useSelector(getCurrentMarketOrderbook, shallowEqual); - const openOrdersBySideAndPrice = - useSelector(getSubaccountOpenOrdersBySideAndPrice, shallowEqual) || {}; + const subaccountOrderSizeBySideAndPrice = + useSelector(getSubaccountOrderSizeBySideAndPrice, shallowEqual) || {}; return useMemo(() => { const asks = (orderbook?.asks?.toArray() ?? []) @@ -60,8 +62,7 @@ const useCalculateOrderbookData = ({ maxRowsPerSide }: { maxRowsPerSide: number ({ key: `ask-${idx}`, side: 'ask', - mine: openOrdersBySideAndPrice[OrderSide.SELL]?.[row.price]?.size, - ...row, + mine: subaccountOrderSizeBySideAndPrice[OrderSide.SELL]?.[row.price], } as RowData) ) .slice(0, maxRowsPerSide); @@ -72,7 +73,7 @@ const useCalculateOrderbookData = ({ maxRowsPerSide }: { maxRowsPerSide: number ({ key: `bid-${idx}`, side: 'bid', - mine: openOrdersBySideAndPrice[OrderSide.BUY]?.[row.price]?.size, + mine: subaccountOrderSizeBySideAndPrice[OrderSide.BUY]?.[row.price], ...row, } as RowData) ) @@ -107,8 +108,8 @@ const useCalculateOrderbookData = ({ maxRowsPerSide }: { maxRowsPerSide: number const spreadPercent = orderbook?.spreadPercent; const histogramRange = Math.max( - isNaN(Number(bids[bids.length - 1]?.depth)) ? 0 : Number(bids[bids.length - 1]?.depth), - isNaN(Number(asks[asks.length - 1]?.depth)) ? 0 : Number(asks[asks.length - 1]?.depth) + Number.isNaN(Number(bids[bids.length - 1]?.depth)) ? 0 : Number(bids[bids.length - 1]?.depth), + Number.isNaN(Number(asks[asks.length - 1]?.depth)) ? 0 : Number(asks[asks.length - 1]?.depth) ); // Ensure asks and bids are of length maxRowsPerSide by adding empty rows. @@ -141,7 +142,7 @@ const useCalculateOrderbookData = ({ maxRowsPerSide }: { maxRowsPerSide: number } return { asks, bids, spread, spreadPercent, histogramRange, hasOrderbook: !!orderbook }; - }, [orderbook, openOrdersBySideAndPrice]); + }, [orderbook, subaccountOrderSizeBySideAndPrice]); }; const OrderbookTable = ({ @@ -163,13 +164,13 @@ const OrderbookTable = ({ stepSizeDecimals: number | undefined | null; tickSizeDecimals: number | undefined | null; histogramRange: number; - onRowAction: (key: string, row: RowData) => void; + onRowAction: (key: Key, row: RowData) => void; className?: string; hideHeader?: boolean; }) => { const stringGetter = useStringGetter(); - const columns = useMemo(() => { + const columns = useMemo((): ColumnDef<RowData>[] => { return [ { columnKey: 'size', @@ -178,12 +179,12 @@ const OrderbookTable = ({ tag: symbol, renderCell: (row: RowData) => row.size > 0 && ( - <Styled.HistogramOutput + <$HistogramOutput highlightText type={OutputType.Asset} value={row.size} fractionDigits={stepSizeDecimals} - histogramSide={histogramSide === 'left' && 'left'} + histogramSide={histogramSide === 'left' ? 'left' : undefined} useGrouping={false} /> ), @@ -206,16 +207,16 @@ const OrderbookTable = ({ }, { columnKey: 'subaccount-orders', - getCellValue: (row: RowData) => row.mine, + getCellValue: (row: RowData) => row.mine ?? '', label: showMineColumn && stringGetter({ key: STRING_KEYS.ORDERBOOK_MY_ORDER_SIZE }), renderCell: (row: RowData) => ( <span> - <Styled.HistogramOutput + <$HistogramOutput highlightText type={row.mine ? OutputType.Asset : OutputType.Text} value={row.mine} fractionDigits={stepSizeDecimals} - histogramSide={histogramSide === 'right' && 'right'} + histogramSide={histogramSide === 'right' ? 'right' : undefined} useGrouping={false} /> </span> @@ -225,7 +226,7 @@ const OrderbookTable = ({ }, [showMineColumn, symbol, stepSizeDecimals, tickSizeDecimals, histogramSide, stringGetter]); return ( - <Styled.OrderbookTable + <$OrderbookTable key={`orderbook-${histogramSide}`} label="Orderbook" data={data} @@ -281,8 +282,10 @@ export const Orderbook = ({ ...bids.reverse(), { key: 'spread', + // TODO - should probably refactor this to not break the lint rule + // eslint-disable-next-line react/no-unstable-nested-components slotCustomRow: (props) => ( - <Styled.SpreadTableRow key="spread" {...props}> + <$SpreadTableRow key="spread" {...props}> <td> <WithTooltip tooltip="spread"> {stringGetter({ key: STRING_KEYS.ORDERBOOK_SPREAD })} @@ -292,7 +295,7 @@ export const Orderbook = ({ <Output type={OutputType.Number} value={spread} fractionDigits={tickSizeDecimals} /> </td> <td>{!isTablet && <Output type={OutputType.Percent} value={spreadPercent} />}</td> - </Styled.SpreadTableRow> + </$SpreadTableRow> ), } as CustomRowConfig, ...asks, @@ -301,7 +304,7 @@ export const Orderbook = ({ ); const onRowAction = useCallback( - (key: string, row: RowData) => { + (key: Key, row: RowData) => { if (currentInput === 'trade' && key !== 'spread' && row?.price) { dispatch(setTradeFormInputs({ limitPriceInput: row?.price?.toString() })); } @@ -327,9 +330,9 @@ export const Orderbook = ({ return layout === 'vertical' ? ( <OrderbookTable data={data} histogramSide={histogramSide} {...orderbookTableProps} /> ) : ( - <Styled.HorizontalLayout className={className}> - <Styled.Header> - <Styled.SpreadDetails + <$HorizontalLayout className={className}> + <$Header> + <$SpreadDetails items={[ { key: 'spread', @@ -350,12 +353,12 @@ export const Orderbook = ({ layout="row" /> {/* TODO: TRCL-1411 implement zoom here */} - </Styled.Header> - <Styled.SplitOrderbook> + </$Header> + <$SplitOrderbook> <OrderbookTable data={asks} histogramSide="right" {...orderbookTableProps} /> <OrderbookTable data={bids.reverse()} histogramSide="left" {...orderbookTableProps} /> - </Styled.SplitOrderbook> - </Styled.HorizontalLayout> + </$SplitOrderbook> + </$HorizontalLayout> ); }; @@ -420,16 +423,13 @@ export const orderbookMixins = { scroll-snap-stop: always; `, } as const; - -const Styled: Record<string, AnyStyledComponent> = {}; - const fadeAnimation = keyframes` 20% { opacity: 0.6; } `; -Styled.HorizontalLayout = styled.div` +const $HorizontalLayout = styled.div` ${layoutMixins.expandingColumnWithHeader} ${layoutMixins.withInnerHorizontalBorders} @@ -445,7 +445,7 @@ Styled.HorizontalLayout = styled.div` } `; -Styled.HistogramOutput = styled(OrderbookTradesOutput)<StyleProps>` +const $HistogramOutput = styled(OrderbookTradesOutput)<StyleProps>` ${({ histogramSide }) => histogramSide ? css` @@ -511,7 +511,8 @@ Styled.HistogramOutput = styled(OrderbookTradesOutput)<StyleProps>` : ''} `; -Styled.OrderbookTable = styled(OrderbookTradesTable)<StyleProps>` +const orderbookTableType = getSimpleStyledOutputType(OrderbookTradesTable, {} as StyleProps); +const $OrderbookTable = styled(OrderbookTradesTable)<StyleProps>` /* Params */ --orderbook-spreadRowHeight: 2rem; @@ -554,12 +555,12 @@ Styled.OrderbookTable = styled(OrderbookTradesTable)<StyleProps>` `} } - ${Styled.HorizontalLayout} & { + ${$HorizontalLayout} & { --tableCell-padding: 0.25rem 1rem; } -`; +` as typeof orderbookTableType; -Styled.SpreadTableRow = styled(TableRow)` +const $SpreadTableRow = styled(TableRow)` ${layoutMixins.sticky} position: sticky !important; @@ -575,7 +576,8 @@ Styled.SpreadTableRow = styled(TableRow)` bottom: 50%; } - ${Styled.OrderbookTable}:not(:focus-within) & { + // have to override since we destroyed the string typings with the inline cast above + ${$OrderbookTable as any}:not(:focus-within) & { ${orderbookMixins.scrollSnapItem} } @@ -594,7 +596,7 @@ Styled.SpreadTableRow = styled(TableRow)` } `; -Styled.SpreadDetails = styled(Details)<{ asTableCells?: boolean }>` +const $SpreadDetails = styled(Details)<{ asTableCells?: boolean }>` /* Overrides */ --details-item-backgroundColor: var(--color-layer-2); --details-value-font: var(--font-mini-book); @@ -606,12 +608,12 @@ Styled.SpreadDetails = styled(Details)<{ asTableCells?: boolean }>` } `; -Styled.SplitOrderbook = styled.div` +const $SplitOrderbook = styled.div` ${layoutMixins.gridEqualColumns} gap: var(--border-width); `; -Styled.Header = styled.header` +const $Header = styled.header` ${layoutMixins.stickyHeader} ${layoutMixins.spacedRow} `; diff --git a/src/views/tables/OrderbookTradesTable.tsx b/src/views/tables/OrderbookTradesTable.tsx index f02aae314..c81dea345 100644 --- a/src/views/tables/OrderbookTradesTable.tsx +++ b/src/views/tables/OrderbookTradesTable.tsx @@ -3,9 +3,21 @@ import styled, { css, keyframes } from 'styled-components'; import { breakpoints } from '@/styles'; import { Output } from '@/components/Output'; -import { Table } from '@/components/Table'; +import { AllTableProps, BaseTableRowData, Table } from '@/components/Table'; -export const OrderbookTradesTable = styled(Table)<{ histogramSide: 'left' | 'right' }>` +import { getSimpleStyledOutputType } from '@/lib/genericFunctionalComponentUtils'; + +type OrderbookTradesTableStyleProps = { histogramSide?: 'left' | 'right' }; +const orderbookTradesTableType = getSimpleStyledOutputType( + Table, + {} as OrderbookTradesTableStyleProps +); + +export const OrderbookTradesTable = <TableRowData extends BaseTableRowData>( + props: AllTableProps<TableRowData> +) => <$OrderbookTradesTable {...props} paginationBehavior="showAll" />; + +const $OrderbookTradesTable = styled(Table)<OrderbookTradesTableStyleProps>` // Params --histogram-width: 100%; @@ -91,7 +103,7 @@ export const OrderbookTradesTable = styled(Table)<{ histogramSide: 'left' | 'rig --histogram-width: calc(100% / var(--approximate-column-width)); } } -`; +` as typeof orderbookTradesTableType; const colorAnimation = keyframes` 20% { diff --git a/src/views/tables/OrdersTable.tsx b/src/views/tables/OrdersTable.tsx index 96299691a..e6d85b1a8 100644 --- a/src/views/tables/OrdersTable.tsx +++ b/src/views/tables/OrdersTable.tsx @@ -1,17 +1,21 @@ -import { useEffect } from 'react'; -import styled, { css, type AnyStyledComponent } from 'styled-components'; -import { shallowEqual, useDispatch, useSelector } from 'react-redux'; -import { DateTime } from 'luxon'; +import { Key, useEffect, useMemo } from 'react'; + import { OrderSide } from '@dydxprotocol/v4-client-js'; import { ColumnSize } from '@react-types/table'; import type { Dispatch } from '@reduxjs/toolkit'; +import { DateTime } from 'luxon'; +import { shallowEqual, useDispatch, useSelector } from 'react-redux'; +import styled, { css } from 'styled-components'; import { Asset, Nullable, SubaccountOrder } from '@/constants/abacus'; import { DialogTypes } from '@/constants/dialogs'; import { STRING_KEYS, type StringGetterFunction } from '@/constants/localization'; import { TOKEN_DECIMALS } from '@/constants/numbers'; +import { EMPTY_ARR } from '@/constants/objects'; + +import { useBreakpoints } from '@/hooks/useBreakpoints'; +import { useStringGetter } from '@/hooks/useStringGetter'; -import { useBreakpoints, useStringGetter } from '@/hooks'; import { breakpoints } from '@/styles'; import { layoutMixins } from '@/styles/layoutMixins'; import { tradeViewMixins } from '@/styles/tradeViewMixins'; @@ -20,42 +24,39 @@ import { AssetIcon } from '@/components/AssetIcon'; import { Icon, IconName } from '@/components/Icon'; import { OrderSideTag } from '@/components/OrderSideTag'; import { Output, OutputType } from '@/components/Output'; - import { + MarketTableCell, Table, TableCell, TableColumnHeader, - MarketTableCell, type ColumnDef, } from '@/components/Table'; - +import { PageSize } from '@/components/Table/TablePaginationRow'; import { TagSize } from '@/components/Tag'; import { WithTooltip } from '@/components/WithTooltip'; +import { viewedOrders } from '@/state/account'; import { calculateIsAccountViewOnly } from '@/state/accountCalculators'; - import { getCurrentMarketOrders, getHasUnseenOrderUpdates, getSubaccountUnclearedOrders, } from '@/state/accountSelectors'; - import { getAssets } from '@/state/assetsSelectors'; -import { getPerpetualMarkets } from '@/state/perpetualsSelectors'; - -import { viewedOrders } from '@/state/account'; import { openDialog } from '@/state/dialogs'; +import { getPerpetualMarkets } from '@/state/perpetualsSelectors'; import { MustBigNumber } from '@/lib/numbers'; -import { getStringsForDateTimeDiff } from '@/lib/timeUtils'; - import { getHydratedTradingData, - getStatusIconInfo, + getOrderStatusInfo, isMarketOrderType, isOrderStatusClearable, } from '@/lib/orders'; +import { getStringsForDateTimeDiff } from '@/lib/timeUtils'; +import { orEmptyObj } from '@/lib/typeUtils'; +import { OrderStatusIcon } from '../OrderStatusIcon'; import { OrderActionsCell } from './OrdersTable/OrderActionsCell'; export enum OrdersTableColumnKey { @@ -82,7 +83,6 @@ export type OrderTableRow = { const getOrdersTableColumnDef = ({ key, - dispatch, stringGetter, symbol = '', isAccountViewOnly, @@ -110,26 +110,19 @@ const getOrdersTableColumnDef = ({ columnKey: 'status', getCellValue: (row) => row.status.name, label: stringGetter({ key: STRING_KEYS.STATUS }), - renderCell: ({ status, totalFilled, resources }) => { - const { statusIcon, statusIconColor, statusStringKey } = getStatusIconInfo({ - status, - totalFilled, - }); - + renderCell: ({ status, resources }) => { return ( <TableCell> - <Styled.WithTooltip + <$WithTooltip tooltipString={ - statusStringKey - ? stringGetter({ key: statusStringKey }) - : resources.statusStringKey + resources.statusStringKey ? stringGetter({ key: resources.statusStringKey }) : undefined } side="right" > - <Styled.StatusIcon iconName={statusIcon} color={statusIconColor} /> - </Styled.WithTooltip> + <OrderStatusIcon status={status.rawValue} /> + </$WithTooltip> {resources.typeStringKey && stringGetter({ key: resources.typeStringKey })} </TableCell> ); @@ -181,7 +174,7 @@ const getOrdersTableColumnDef = ({ columnKey: 'triggerPrice', getCellValue: (row) => row.triggerPrice ?? -1, label: stringGetter({ key: STRING_KEYS.TRIGGER_PRICE_SHORT }), - renderCell: ({ type, triggerPrice, trailingPercent, tickSizeDecimals }) => ( + renderCell: ({ triggerPrice, trailingPercent, tickSizeDecimals }) => ( <TableCell stacked> <Output type={OutputType.Fiat} value={triggerPrice} fractionDigits={tickSizeDecimals} /> {trailingPercent && ( @@ -231,34 +224,29 @@ const getOrdersTableColumnDef = ({ key: STRING_KEYS.FILL, })}`, renderCell: ({ asset, createdAtMilliseconds, size, status, totalFilled, resources }) => { - const { statusIconColor, statusStringKey } = getStatusIconInfo({ - status, - totalFilled, - }); + const { statusIconColor } = getOrderStatusInfo({ status: status.rawValue }); return ( <TableCell stacked slotLeft={ <> - <Styled.TimeOutput + <$TimeOutput type={OutputType.RelativeTime} relativeTimeFormatOptions={{ format: 'singleCharacter' }} value={createdAtMilliseconds} /> - <Styled.AssetIconWithStatus> - <Styled.AssetIcon symbol={asset?.id} /> - <Styled.StatusDot color={statusIconColor} /> - </Styled.AssetIconWithStatus> + <$AssetIconWithStatus> + <$AssetIcon symbol={asset?.id} /> + <$StatusDot color={statusIconColor} /> + </$AssetIconWithStatus> </> } > <span> - {statusStringKey - ? stringGetter({ key: statusStringKey }) - : resources.statusStringKey && stringGetter({ key: resources.statusStringKey })} + {resources.statusStringKey && stringGetter({ key: resources.statusStringKey })} </span> - <Styled.InlineRow> + <$InlineRow> <Output type={OutputType.Asset} value={totalFilled} @@ -271,7 +259,7 @@ const getOrdersTableColumnDef = ({ fractionDigits={TOKEN_DECIMALS} tag={asset?.id} /> - </Styled.InlineRow> + </$InlineRow> </TableCell> ); }, @@ -287,13 +275,13 @@ const getOrdersTableColumnDef = ({ getCellValue: (row) => row.price, renderCell: ({ price, orderSide, tickSizeDecimals, resources }) => ( <TableCell stacked> - <Styled.InlineRow> - <Styled.Side side={orderSide}> + <$InlineRow> + <$Side side={orderSide}> {resources.sideStringKey ? stringGetter({ key: resources.sideStringKey }) : null} - </Styled.Side> - <Styled.SecondaryColor>@</Styled.SecondaryColor> + </$Side> + <$SecondaryColor>@</$SecondaryColor> <Output type={OutputType.Fiat} value={price} fractionDigits={tickSizeDecimals} /> - </Styled.InlineRow> + </$InlineRow> <span> {resources.typeStringKey ? stringGetter({ key: resources.typeStringKey }) : null} </span> @@ -308,6 +296,7 @@ type ElementProps = { columnKeys: OrdersTableColumnKey[]; columnWidths?: Partial<Record<OrdersTableColumnKey, ColumnSize>>; currentMarket?: string; + initialPageSize?: PageSize; }; type StyleProps = { @@ -318,6 +307,7 @@ export const OrdersTable = ({ columnKeys = [], columnWidths, currentMarket, + initialPageSize, withOuterBorder, }: ElementProps & StyleProps) => { const stringGetter = useStringGetter(); @@ -325,12 +315,12 @@ export const OrdersTable = ({ const { isTablet } = useBreakpoints(); const isAccountViewOnly = useSelector(calculateIsAccountViewOnly); - const marketOrders = useSelector(getCurrentMarketOrders, shallowEqual) || []; - const allOrders = useSelector(getSubaccountUnclearedOrders, shallowEqual) || []; + const marketOrders = useSelector(getCurrentMarketOrders, shallowEqual) ?? EMPTY_ARR; + const allOrders = useSelector(getSubaccountUnclearedOrders, shallowEqual) ?? EMPTY_ARR; const orders = currentMarket ? marketOrders : allOrders; - const allPerpetualMarkets = useSelector(getPerpetualMarkets, shallowEqual) || {}; - const allAssets = useSelector(getAssets, shallowEqual) || {}; + const allPerpetualMarkets = orEmptyObj(useSelector(getPerpetualMarkets, shallowEqual)); + const allAssets = orEmptyObj(useSelector(getAssets, shallowEqual)); const hasUnseenOrderUpdates = useSelector(getHasUnseenOrderUpdates); @@ -340,16 +330,20 @@ export const OrdersTable = ({ const symbol = currentMarket ? allAssets[allPerpetualMarkets[currentMarket]?.assetId]?.id : null; - const ordersData = orders.map((order: SubaccountOrder) => - getHydratedTradingData({ - data: order, - assets: allAssets, - perpetualMarkets: allPerpetualMarkets, - }) - ) as OrderTableRow[]; + const ordersData = useMemo( + () => + orders.map((order: SubaccountOrder) => + getHydratedTradingData({ + data: order, + assets: allAssets, + perpetualMarkets: allPerpetualMarkets, + }) + ) as OrderTableRow[], + [orders, allPerpetualMarkets, allAssets] + ); return ( - <Styled.Table + <$Table key={currentMarket ?? 'all-orders'} label="Orders" data={ordersData} @@ -357,7 +351,7 @@ export const OrdersTable = ({ getRowAttributes={(row: OrderTableRow) => ({ 'data-clearable': isOrderStatusClearable(row.status), })} - onRowAction={(key: string) => + onRowAction={(key: Key) => dispatch( openDialog({ type: DialogTypes.OrderDetails, @@ -365,7 +359,7 @@ export const OrdersTable = ({ }) ) } - columns={columnKeys.map((key: OrdersTableColumnKey, index: number) => + columns={columnKeys.map((key: OrdersTableColumnKey) => getOrdersTableColumnDef({ key, dispatch, @@ -378,10 +372,11 @@ export const OrdersTable = ({ )} slotEmpty={ <> - <Styled.EmptyIcon iconName={IconName.OrderPending} /> + <$EmptyIcon iconName={IconName.OrderPending} /> <h4>{stringGetter({ key: STRING_KEYS.ORDERS_EMPTY_STATE })}</h4> </> } + initialPageSize={initialPageSize} withOuterBorder={withOuterBorder} withInnerBorders withScrollSnapColumns @@ -390,10 +385,7 @@ export const OrdersTable = ({ /> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.Table = styled(Table)` +const $Table = styled(Table)` ${tradeViewMixins.horizontalTable} tbody tr { @@ -401,13 +393,13 @@ Styled.Table = styled(Table)` opacity: 0.5; } } -`; +` as typeof Table; -Styled.InlineRow = styled.div` +const $InlineRow = styled.div` ${layoutMixins.inlineRow} `; -Styled.AssetIcon = styled(AssetIcon)` +const $AssetIcon = styled(AssetIcon)` font-size: 2rem; @media ${breakpoints.tablet} { @@ -415,15 +407,15 @@ Styled.AssetIcon = styled(AssetIcon)` } `; -Styled.TimeOutput = styled(Output)` +const $TimeOutput = styled(Output)` color: var(--color-text-0); `; -Styled.SecondaryColor = styled.span` +const $SecondaryColor = styled.span` color: var(--color-text-0); `; -Styled.Side = styled.span<{ side: OrderSide }>` +const $Side = styled.span<{ side: OrderSide }>` ${({ side }) => ({ [OrderSide.BUY]: css` @@ -435,19 +427,19 @@ Styled.Side = styled.span<{ side: OrderSide }>` }[side])}; `; -Styled.EmptyIcon = styled(Icon)` +const $EmptyIcon = styled(Icon)` font-size: 3em; `; -Styled.AssetIconWithStatus = styled.div` +const $AssetIconWithStatus = styled.div` ${layoutMixins.stack} - ${Styled.AssetIcon} { + ${$AssetIcon} { margin: 0.125rem; } `; -Styled.StatusDot = styled.div<{ color: string }>` +const $StatusDot = styled.div<{ color: string }>` place-self: start end; width: 0.875rem; height: 0.875rem; @@ -457,10 +449,6 @@ Styled.StatusDot = styled.div<{ color: string }>` background-color: ${({ color }) => color}; `; -Styled.StatusIcon = styled(Icon)<{ color: string }>` - color: ${({ color }) => color}; -`; - -Styled.WithTooltip = styled(WithTooltip)` +const $WithTooltip = styled(WithTooltip)` --tooltip-backgroundColor: var(--color-layer-5); `; diff --git a/src/views/tables/OrdersTable/OrderActionsCell.tsx b/src/views/tables/OrdersTable/OrderActionsCell.tsx index e9743846f..060cbb087 100644 --- a/src/views/tables/OrdersTable/OrderActionsCell.tsx +++ b/src/views/tables/OrdersTable/OrderActionsCell.tsx @@ -1,15 +1,16 @@ -import { useCallback, useEffect, useState } from 'react'; -import { shallowEqual, useDispatch, useSelector } from 'react-redux'; -import styled, { AnyStyledComponent } from 'styled-components'; +import { useCallback, useState } from 'react'; + +import { useDispatch } from 'react-redux'; +import styled from 'styled-components'; import { AbacusOrderStatus, type OrderStatus } from '@/constants/abacus'; +import { ButtonShape } from '@/constants/buttons'; -import { useSubaccount } from '@/hooks'; -import { layoutMixins } from '@/styles/layoutMixins'; +import { useSubaccount } from '@/hooks/useSubaccount'; import { IconName } from '@/components/Icon'; import { IconButton } from '@/components/IconButton'; -import { Toolbar } from '@/components/Toolbar'; +import { ActionsTableCell } from '@/components/Table'; import { clearOrder } from '@/state/account'; @@ -29,59 +30,33 @@ export const OrderActionsCell = ({ orderId, status, isDisabled }: ElementProps) const onCancel = useCallback(async () => { setIsCanceling(true); - await cancelOrder({ orderId, onError: () => setIsCanceling(false) }); + cancelOrder({ orderId, onError: () => setIsCanceling(false) }); }, []); return ( - <Styled.OrderActions> - <Styled.Toolbar> - {isOrderStatusClearable(status) ? ( - <Styled.ActionButton - iconName={IconName.Close} - onClick={() => dispatch(clearOrder(orderId))} - /> - ) : ( - <Styled.CancelButton - iconName={IconName.Close} - state={{ - isLoading: isCanceling || status === AbacusOrderStatus.canceling, - isDisabled: isCanceling || isDisabled || status === AbacusOrderStatus.canceling, - }} - onClick={onCancel} - /> - )} - </Styled.Toolbar> - </Styled.OrderActions> + <ActionsTableCell> + <$CancelButton + key="cancelorder" + iconName={IconName.Close} + shape={ButtonShape.Square} + {...(isOrderStatusClearable(status) + ? { onClick: () => dispatch(clearOrder(orderId)) } + : { + onClick: onCancel, + state: { + isLoading: isCanceling || status === AbacusOrderStatus.canceling, + isDisabled: isCanceling || !!isDisabled || status === AbacusOrderStatus.canceling, + }, + })} + /> + </ActionsTableCell> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.OrderActions = styled.div` - ${layoutMixins.row}; - justify-content: var(--table-cell-currentAlign); -`; - -Styled.Toolbar = styled(Toolbar)` - width: 3rem; - - padding: 0; - display: flex; - justify-content: center; -`; - -Styled.ActionButton = styled(IconButton)` - --button-backgroundColor: transparent; - --button-border: none; +const $CancelButton = styled(IconButton)` + --button-hover-textColor: var(--color-red); svg { width: 0.875em; height: 0.875em; } `; - -Styled.CancelButton = styled(Styled.ActionButton)` - &:not(:disabled) { - --button-textColor: var(--color-red); - } -`; diff --git a/src/views/tables/PositionsTable.tsx b/src/views/tables/PositionsTable.tsx index 3e8f80f15..41536ae7d 100644 --- a/src/views/tables/PositionsTable.tsx +++ b/src/views/tables/PositionsTable.tsx @@ -1,38 +1,52 @@ -import { useSelector, shallowEqual } from 'react-redux'; -import styled, { type AnyStyledComponent } from 'styled-components'; -import { useNavigate } from 'react-router-dom'; +import { Key, useMemo } from 'react'; + import type { ColumnSize } from '@react-types/table'; +import { shallowEqual, useSelector } from 'react-redux'; +import { useNavigate } from 'react-router-dom'; +import styled from 'styled-components'; import { type Asset, type Nullable, + type SubaccountOrder, type SubaccountPosition, - POSITION_SIDES, } from '@/constants/abacus'; - -import { StringGetterFunction, STRING_KEYS } from '@/constants/localization'; -import { TOKEN_DECIMALS, USD_DECIMALS } from '@/constants/numbers'; +import { STRING_KEYS, StringGetterFunction } from '@/constants/localization'; +import { NumberSign, TOKEN_DECIMALS, USD_DECIMALS } from '@/constants/numbers'; +import { EMPTY_ARR } from '@/constants/objects'; +import { AppRoute } from '@/constants/routes'; import { PositionSide } from '@/constants/trade'; -import { useStringGetter } from '@/hooks'; + import { MediaQueryKeys } from '@/hooks/useBreakpoints'; +import { useEnvFeatures } from '@/hooks/useEnvFeatures'; +import { useStringGetter } from '@/hooks/useStringGetter'; import { layoutMixins } from '@/styles/layoutMixins'; import { tradeViewMixins } from '@/styles/tradeViewMixins'; -import { getExistingOpenPositions } from '@/state/accountSelectors'; -import { getAssets } from '@/state/assetsSelectors'; -import { getPerpetualMarkets } from '@/state/perpetualsSelectors'; - import { AssetIcon } from '@/components/AssetIcon'; import { Icon, IconName } from '@/components/Icon'; -import { MarketTableCell } from '@/components/Table/MarketTableCell'; import { Output, OutputType, ShowSign } from '@/components/Output'; -import { PositionSideTag } from '@/components/PositionSideTag'; -import { type ColumnDef, Table, TableColumnHeader } from '@/components/Table'; +import { Table, TableColumnHeader, type ColumnDef } from '@/components/Table'; +import { MarketTableCell } from '@/components/Table/MarketTableCell'; import { TableCell } from '@/components/Table/TableCell'; -import { TagSize } from '@/components/Tag'; +import { PageSize } from '@/components/Table/TablePaginationRow'; + +import { + calculateIsAccountViewOnly, + calculateShouldRenderTriggersInPositionsTable, +} from '@/state/accountCalculators'; +import { getExistingOpenPositions, getSubaccountConditionalOrders } from '@/state/accountSelectors'; +import { getAssets } from '@/state/assetsSelectors'; +import { getPerpetualMarkets } from '@/state/perpetualsSelectors'; -import { MustBigNumber } from '@/lib/numbers'; +import { MustBigNumber, getNumberSign } from '@/lib/numbers'; +import { testFlags } from '@/lib/testFlags'; +import { orEmptyObj } from '@/lib/typeUtils'; + +import { PositionsActionsCell } from './PositionsTable/PositionsActionsCell'; +import { PositionsMarginCell } from './PositionsTable/PositionsMarginCell'; +import { PositionsTriggersCell } from './PositionsTable/PositionsTriggersCell'; export enum PositionsTableColumnKey { Details = 'Details', @@ -40,29 +54,42 @@ export enum PositionsTableColumnKey { PnL = 'PnL', Market = 'Market', - Side = 'Side', Size = 'Size', - Leverage = 'Leverage', LiquidationAndOraclePrice = 'LiquidationAndOraclePrice', + Margin = 'Margin', UnrealizedPnl = 'UnrealizedPnl', RealizedPnl = 'RealizedPnl', AverageOpenAndClose = 'AverageOpenAndClose', + NetFunding = 'NetFunding', + Triggers = 'Triggers', + Actions = 'Actions', } type PositionTableRow = { asset: Asset; oraclePrice: Nullable<number>; tickSizeDecimals: number; + fundingRate: Nullable<number>; + stopLossOrders: SubaccountOrder[]; + takeProfitOrders: SubaccountOrder[]; } & SubaccountPosition; const getPositionsTableColumnDef = ({ key, stringGetter, width, + isAccountViewOnly, + showClosePositionAction, + shouldRenderTriggers, + navigateToOrders, }: { key: PositionsTableColumnKey; stringGetter: StringGetterFunction; width?: ColumnSize; + isAccountViewOnly: boolean; + showClosePositionAction: boolean; + shouldRenderTriggers: boolean; + navigateToOrders: (market: string) => void; }) => ({ width, ...( @@ -71,27 +98,27 @@ const getPositionsTableColumnDef = ({ columnKey: 'details', getCellValue: (row) => row.id, label: stringGetter({ key: STRING_KEYS.DETAILS }), - renderCell: ({ id, asset, leverage, resources, size }) => ( - <TableCell stacked slotLeft={<Styled.AssetIcon symbol={asset?.id} />}> - <Styled.HighlightOutput + renderCell: ({ asset, leverage, resources, size }) => ( + <TableCell stacked slotLeft={<$AssetIcon symbol={asset?.id} />}> + <$HighlightOutput type={OutputType.Asset} value={size?.current} fractionDigits={TOKEN_DECIMALS} showSign={ShowSign.None} tag={asset?.id} /> - <Styled.InlineRow> - <Styled.PositionSide> + <$InlineRow> + <$PositionSide> {resources.sideStringKey?.current && stringGetter({ key: resources.sideStringKey?.current })} - </Styled.PositionSide> - <Styled.SecondaryColor>@</Styled.SecondaryColor> - <Styled.HighlightOutput + </$PositionSide> + <$SecondaryColor>@</$SecondaryColor> + <$HighlightOutput type={OutputType.Multiple} value={leverage?.current} showSign={ShowSign.None} /> - </Styled.InlineRow> + </$InlineRow> </TableCell> ), }, @@ -120,13 +147,13 @@ const getPositionsTableColumnDef = ({ hideOnBreakpoint: MediaQueryKeys.isNotTablet, renderCell: ({ unrealizedPnl, unrealizedPnlPercent }) => ( <TableCell stacked> - <Styled.OutputSigned - isNegative={MustBigNumber(unrealizedPnlPercent?.current).isNegative()} + <$OutputSigned + sign={getNumberSign(unrealizedPnlPercent?.current)} type={OutputType.Percent} value={unrealizedPnlPercent?.current} showSign={ShowSign.None} /> - <Styled.HighlightOutput + <$HighlightOutput isNegative={MustBigNumber(unrealizedPnl?.current).isNegative()} type={OutputType.Fiat} value={unrealizedPnl?.current} @@ -140,19 +167,14 @@ const getPositionsTableColumnDef = ({ getCellValue: (row) => row.id, label: stringGetter({ key: STRING_KEYS.MARKET }), hideOnBreakpoint: MediaQueryKeys.isMobile, - renderCell: ({ id, asset }) => <MarketTableCell asset={asset} marketId={id} />, - }, - [PositionsTableColumnKey.Side]: { - columnKey: 'market-side', - getCellValue: (row) => row.side?.current && POSITION_SIDES[row.side.current.name], - label: stringGetter({ key: STRING_KEYS.SIDE }), - renderCell: ({ side }) => - side?.current && ( - <PositionSideTag - positionSide={POSITION_SIDES[side.current.name]} - size={TagSize.Medium} - /> - ), + renderCell: ({ id, asset, leverage }) => ( + <MarketTableCell + asset={asset} + marketId={id} + leverage={leverage?.current ?? undefined} + isHighlighted + /> + ), }, [PositionsTableColumnKey.Size]: { columnKey: 'size', @@ -161,11 +183,12 @@ const getPositionsTableColumnDef = ({ hideOnBreakpoint: MediaQueryKeys.isMobile, renderCell: ({ assetId, size, notionalTotal, tickSizeDecimals }) => ( <TableCell stacked> - <Output + <$OutputSigned type={OutputType.Asset} value={size?.current} tag={assetId} - showSign={ShowSign.None} + showSign={ShowSign.Negative} + sign={getNumberSign(size?.current)} /> <Output type={OutputType.Fiat} @@ -175,13 +198,35 @@ const getPositionsTableColumnDef = ({ </TableCell> ), }, - [PositionsTableColumnKey.Leverage]: { - columnKey: 'leverage', + [PositionsTableColumnKey.Margin]: { + columnKey: 'margin', getCellValue: (row) => row.leverage?.current, - label: stringGetter({ key: STRING_KEYS.LEVERAGE }), + label: stringGetter({ key: STRING_KEYS.MARGIN }), hideOnBreakpoint: MediaQueryKeys.isMobile, - renderCell: ({ leverage }) => ( - <Output type={OutputType.Multiple} value={leverage?.current} showSign={ShowSign.None} /> + isActionable: true, + renderCell: ({ id, adjustedMmf, notionalTotal }) => ( + <PositionsMarginCell id={id} notionalTotal={notionalTotal} adjustedMmf={adjustedMmf} /> + ), + }, + [PositionsTableColumnKey.NetFunding]: { + columnKey: 'netFunding', + getCellValue: (row) => row.netFunding, + label: ( + <TableColumnHeader> + <span>{stringGetter({ key: STRING_KEYS.FUNDING_PAYMENTS_SHORT })}</span> + <span>{stringGetter({ key: STRING_KEYS.RATE })}</span> + </TableColumnHeader> + ), + hideOnBreakpoint: MediaQueryKeys.isTablet, + renderCell: ({ netFunding, fundingRate }) => ( + <TableCell stacked> + <$OutputSigned + sign={getNumberSign(netFunding)} + type={OutputType.Fiat} + value={netFunding} + /> + <Output showSign={ShowSign.Negative} type={OutputType.Percent} value={fundingRate} /> + </TableCell> ), }, [PositionsTableColumnKey.LiquidationAndOraclePrice]: { @@ -211,8 +256,8 @@ const getPositionsTableColumnDef = ({ hideOnBreakpoint: MediaQueryKeys.isTablet, renderCell: ({ unrealizedPnl, unrealizedPnlPercent }) => ( <TableCell stacked> - <Styled.OutputSigned - isNegative={MustBigNumber(unrealizedPnl?.current).isNegative()} + <$OutputSigned + sign={getNumberSign(unrealizedPnl?.current)} type={OutputType.Fiat} value={unrealizedPnl?.current} /> @@ -227,8 +272,8 @@ const getPositionsTableColumnDef = ({ hideOnBreakpoint: MediaQueryKeys.isTablet, renderCell: ({ realizedPnl, realizedPnlPercent }) => ( <TableCell stacked> - <Styled.OutputSigned - isNegative={MustBigNumber(realizedPnl?.current).isNegative()} + <$OutputSigned + sign={getNumberSign(realizedPnl?.current)} type={OutputType.Fiat} value={realizedPnl?.current} showSign={ShowSign.Negative} @@ -240,8 +285,13 @@ const getPositionsTableColumnDef = ({ [PositionsTableColumnKey.AverageOpenAndClose]: { columnKey: 'entryExitPrice', getCellValue: (row) => row.entryPrice?.current, - label: stringGetter({ key: STRING_KEYS.AVERAGE_OPEN_CLOSE }), - hideOnBreakpoint: MediaQueryKeys.isDesktopSmall, + label: ( + <TableColumnHeader> + <span>{stringGetter({ key: STRING_KEYS.AVERAGE_OPEN_SHORT })}</span> + <span>{stringGetter({ key: STRING_KEYS.AVERAGE_CLOSE_SHORT })}</span> + </TableColumnHeader> + ), + hideOnBreakpoint: MediaQueryKeys.isTablet, renderCell: ({ entryPrice, exitPrice, tickSizeDecimals }) => ( <TableCell stacked> <Output @@ -253,6 +303,61 @@ const getPositionsTableColumnDef = ({ </TableCell> ), }, + [PositionsTableColumnKey.Triggers]: { + columnKey: 'triggers', + label: stringGetter({ key: STRING_KEYS.TRIGGERS }), + isActionable: true, + allowsSorting: false, + hideOnBreakpoint: MediaQueryKeys.isTablet, + renderCell: ({ + id, + assetId, + tickSizeDecimals, + liquidationPrice, + side, + size, + stopLossOrders, + takeProfitOrders, + }) => ( + <PositionsTriggersCell + marketId={id} + assetId={assetId} + tickSizeDecimals={tickSizeDecimals} + liquidationPrice={liquidationPrice?.current} + stopLossOrders={stopLossOrders} + takeProfitOrders={takeProfitOrders} + positionSide={side.current} + positionSize={size?.current} + isDisabled={isAccountViewOnly} + onViewOrdersClick={navigateToOrders} + /> + ), + }, + [PositionsTableColumnKey.Actions]: { + columnKey: 'actions', + label: stringGetter({ + key: + shouldRenderTriggers && showClosePositionAction && !testFlags.isolatedMargin + ? STRING_KEYS.ACTIONS + : showClosePositionAction + ? STRING_KEYS.CLOSE + : STRING_KEYS.ACTION, + }), + isActionable: true, + allowsSorting: false, + hideOnBreakpoint: MediaQueryKeys.isTablet, + renderCell: ({ id, assetId, stopLossOrders, takeProfitOrders }) => ( + <PositionsActionsCell + marketId={id} + assetId={assetId} + isDisabled={isAccountViewOnly} + showClosePositionAction={showClosePositionAction} + stopLossOrders={stopLossOrders} + takeProfitOrders={takeProfitOrders} + navigateToMarketOrders={navigateToOrders} + /> + ), + }, } as Record<PositionsTableColumnKey, ColumnDef<PositionTableRow>> )[key], }); @@ -261,7 +366,11 @@ type ElementProps = { columnKeys: PositionsTableColumnKey[]; columnWidths?: Partial<Record<PositionsTableColumnKey, ColumnSize>>; currentRoute?: string; + currentMarket?: string; + showClosePositionAction: boolean; + initialPageSize?: PageSize; onNavigate?: () => void; + navigateToOrders: (market: string) => void; }; type StyleProps = { @@ -273,27 +382,70 @@ export const PositionsTable = ({ columnKeys, columnWidths, currentRoute, + currentMarket, + showClosePositionAction, + initialPageSize, onNavigate, + navigateToOrders, withGradientCardRows, withOuterBorder, }: ElementProps & StyleProps) => { const stringGetter = useStringGetter(); const navigate = useNavigate(); + const { isSlTpLimitOrdersEnabled } = useEnvFeatures(); + + const isAccountViewOnly = useSelector(calculateIsAccountViewOnly); + const perpetualMarkets = orEmptyObj(useSelector(getPerpetualMarkets, shallowEqual)); + const assets = orEmptyObj(useSelector(getAssets, shallowEqual)); + const shouldRenderTriggers = useSelector(calculateShouldRenderTriggersInPositionsTable); + + const openPositions = useSelector(getExistingOpenPositions, shallowEqual) ?? EMPTY_ARR; + const positions = useMemo(() => { + const marketPosition = openPositions.find((position) => position.id === currentMarket); + return currentMarket ? (marketPosition ? [marketPosition] : []) : openPositions; + }, [currentMarket, openPositions]); - const perpetualMarkets = useSelector(getPerpetualMarkets, shallowEqual) || {}; - const assets = useSelector(getAssets, shallowEqual) || {}; - const openPositions = useSelector(getExistingOpenPositions, shallowEqual) || []; + const { stopLossOrders: allStopLossOrders, takeProfitOrders: allTakeProfitOrders } = useSelector( + getSubaccountConditionalOrders(isSlTpLimitOrdersEnabled), + { + equalityFn: (oldVal, newVal) => { + return ( + shallowEqual(oldVal.stopLossOrders, newVal.stopLossOrders) && + shallowEqual(oldVal.takeProfitOrders, newVal.takeProfitOrders) + ); + }, + } + ); - const positionsData = openPositions.map((position: SubaccountPosition) => ({ - tickSizeDecimals: perpetualMarkets?.[position.id]?.configs?.tickSizeDecimals || USD_DECIMALS, - asset: assets?.[position.assetId], - oraclePrice: perpetualMarkets?.[position.id]?.oraclePrice, - ...position, - })) as PositionTableRow[]; + const positionsData = useMemo( + () => + positions.map((position: SubaccountPosition): PositionTableRow => { + // object splat ... doesn't copy getter defined properties + // eslint-disable-next-line prefer-object-spread + return Object.assign( + {}, + { + tickSizeDecimals: + perpetualMarkets?.[position.id]?.configs?.tickSizeDecimals ?? USD_DECIMALS, + asset: assets?.[position.assetId], + oraclePrice: perpetualMarkets?.[position.id]?.oraclePrice, + fundingRate: perpetualMarkets?.[position.id]?.perpetual?.nextFundingRate, + stopLossOrders: allStopLossOrders.filter( + (order: SubaccountOrder) => order.marketId === position.id + ), + takeProfitOrders: allTakeProfitOrders.filter( + (order: SubaccountOrder) => order.marketId === position.id + ), + }, + position + ); + }), + [positions, perpetualMarkets, assets, allStopLossOrders, allTakeProfitOrders] + ); return ( - <Styled.Table - key="positions" + <$Table + key={currentMarket ?? 'positions'} label="Positions" defaultSortDescriptor={{ column: 'market', @@ -305,24 +457,33 @@ export const PositionsTable = ({ key, stringGetter, width: columnWidths?.[key], + isAccountViewOnly, + showClosePositionAction, + shouldRenderTriggers, + navigateToOrders, }) )} getRowKey={(row: PositionTableRow) => row.id} - onRowAction={(market: string) => { - navigate(`/trade/${market}`, { - state: { from: currentRoute }, - }); - onNavigate?.(); - }} + onRowAction={ + currentMarket + ? undefined + : (market: Key) => { + navigate(`${AppRoute.Trade}/${market}`, { + state: { from: currentRoute }, + }); + onNavigate?.(); + } + } getRowAttributes={(row: PositionTableRow) => ({ 'data-side': row.side.current, })} slotEmpty={ <> - <Styled.Icon iconName={IconName.Positions} /> + <$Icon iconName={IconName.Positions} /> <h4>{stringGetter({ key: STRING_KEYS.POSITIONS_EMPTY_STATE })}</h4> </> } + initialPageSize={initialPageSize} withGradientCardRows={withGradientCardRows} withOuterBorder={withOuterBorder} withInnerBorders @@ -332,10 +493,7 @@ export const PositionsTable = ({ /> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.Table = styled(Table)` +const $Table = styled(Table)` ${tradeViewMixins.horizontalTable} tr { @@ -358,27 +516,32 @@ Styled.Table = styled(Table)` --table-row-gradient-to-color: var(--color-gradient-negative); } } -`; +` as typeof Table; -Styled.InlineRow = styled.div` +const $InlineRow = styled.div` ${layoutMixins.inlineRow} `; -Styled.AssetIcon = styled(AssetIcon)` +const $AssetIcon = styled(AssetIcon)` ${layoutMixins.inlineRow} min-width: unset; font-size: 2.25rem; `; -Styled.SecondaryColor = styled.span` +const $SecondaryColor = styled.span` color: var(--color-text-0); `; -Styled.OutputSigned = styled(Output)<{ isNegative?: boolean }>` - color: ${({ isNegative }) => (isNegative ? `var(--color-negative)` : `var(--color-positive)`)}; +const $OutputSigned = styled(Output)<{ sign: NumberSign }>` + color: ${({ sign }) => + ({ + [NumberSign.Positive]: `var(--color-positive)`, + [NumberSign.Negative]: `var(--color-negative)`, + [NumberSign.Neutral]: `var(--color-text-2)`, + }[sign])}; `; -Styled.HighlightOutput = styled(Output)<{ isNegative?: boolean }>` +const $HighlightOutput = styled(Output)<{ isNegative?: boolean }>` color: var(--color-text-1); --secondary-item-color: currentColor; --output-sign-color: ${({ isNegative }) => @@ -389,12 +552,12 @@ Styled.HighlightOutput = styled(Output)<{ isNegative?: boolean }>` : `currentColor`}; `; -Styled.PositionSide = styled.span` +const $PositionSide = styled.span` && { color: var(--side-color); } `; -Styled.Icon = styled(Icon)` +const $Icon = styled(Icon)` font-size: 3em; `; diff --git a/src/views/tables/PositionsTable/PositionsActionsCell.tsx b/src/views/tables/PositionsTable/PositionsActionsCell.tsx new file mode 100644 index 000000000..631754a21 --- /dev/null +++ b/src/views/tables/PositionsTable/PositionsActionsCell.tsx @@ -0,0 +1,120 @@ +import { useDispatch, useSelector } from 'react-redux'; +import { useNavigate } from 'react-router-dom'; +import styled from 'styled-components'; + +import { type SubaccountOrder } from '@/constants/abacus'; +import { ButtonShape } from '@/constants/buttons'; +import { ComplianceStates } from '@/constants/compliance'; +import { DialogTypes, TradeBoxDialogTypes } from '@/constants/dialogs'; +import { AppRoute } from '@/constants/routes'; + +import { useComplianceState } from '@/hooks/useComplianceState'; +import { useEnvFeatures } from '@/hooks/useEnvFeatures'; + +import { IconName } from '@/components/Icon'; +import { IconButton } from '@/components/IconButton'; +import { ActionsTableCell } from '@/components/Table'; + +import { closeDialogInTradeBox, openDialog, openDialogInTradeBox } from '@/state/dialogs'; +import { getActiveTradeBoxDialog } from '@/state/dialogsSelectors'; +import { getCurrentMarketId } from '@/state/perpetualsSelectors'; + +import abacusStateManager from '@/lib/abacus'; +import { testFlags } from '@/lib/testFlags'; + +type ElementProps = { + marketId: string; + assetId: string; + stopLossOrders: SubaccountOrder[]; + takeProfitOrders: SubaccountOrder[]; + isDisabled?: boolean; + showClosePositionAction: boolean; + navigateToMarketOrders: (market: string) => void; +}; + +export const PositionsActionsCell = ({ + marketId, + assetId, + stopLossOrders, + takeProfitOrders, + isDisabled, + showClosePositionAction, + navigateToMarketOrders, +}: ElementProps) => { + const dispatch = useDispatch(); + const navigate = useNavigate(); + const { complianceState } = useComplianceState(); + const { isSlTpEnabled } = useEnvFeatures(); + + const currentMarketId = useSelector(getCurrentMarketId); + const activeTradeBoxDialog = useSelector(getActiveTradeBoxDialog); + const { type: tradeBoxDialogType } = activeTradeBoxDialog ?? {}; + + const onCloseButtonToggle = (isPressed: boolean) => { + navigate(`${AppRoute.Trade}/${marketId}`); + dispatch( + isPressed + ? openDialogInTradeBox({ + type: TradeBoxDialogTypes.ClosePosition, + }) + : closeDialogInTradeBox() + ); + + if (!isPressed) { + abacusStateManager.clearClosePositionInputValues({ shouldFocusOnTradeInput: true }); + } + }; + + return ( + <ActionsTableCell> + {isSlTpEnabled && + !testFlags.isolatedMargin && + complianceState === ComplianceStates.FULL_ACCESS && ( + <$TriggersButton + key="edittriggers" + onClick={() => + dispatch( + openDialog({ + type: DialogTypes.Triggers, + dialogProps: { + marketId, + assetId, + stopLossOrders, + takeProfitOrders, + navigateToMarketOrders, + }, + }) + ) + } + iconName={IconName.Pencil} + shape={ButtonShape.Square} + disabled={isDisabled} + /> + )} + {showClosePositionAction && ( + <$CloseButtonToggle + key="closepositions" + isToggle + isPressed={ + tradeBoxDialogType === TradeBoxDialogTypes.ClosePosition && currentMarketId === marketId + } + onPressedChange={onCloseButtonToggle} + iconName={IconName.Close} + shape={ButtonShape.Square} + disabled={isDisabled} + /> + )} + </ActionsTableCell> + ); +}; +const $TriggersButton = styled(IconButton)` + --button-icon-size: 1.33em; + --button-textColor: var(--color-text-0); + --button-hover-textColor: var(--color-text-1); +`; + +const $CloseButtonToggle = styled(IconButton)` + --button-icon-size: 1em; + --button-hover-textColor: var(--color-red); + --button-toggle-on-textColor: var(--color-red); +`; diff --git a/src/views/tables/PositionsTable/PositionsMarginCell.tsx b/src/views/tables/PositionsTable/PositionsMarginCell.tsx new file mode 100644 index 000000000..e3aeb9649 --- /dev/null +++ b/src/views/tables/PositionsTable/PositionsMarginCell.tsx @@ -0,0 +1,76 @@ +import { useDispatch } from 'react-redux'; +import styled from 'styled-components'; + +import { type SubaccountPosition } from '@/constants/abacus'; +import { ButtonShape } from '@/constants/buttons'; +import { DialogTypes } from '@/constants/dialogs'; +import { STRING_KEYS } from '@/constants/localization'; + +import { useStringGetter } from '@/hooks/useStringGetter'; + +import { IconName } from '@/components/Icon'; +import { IconButton } from '@/components/IconButton'; +import { Output, OutputType, ShowSign } from '@/components/Output'; +import { TableCell } from '@/components/Table/TableCell'; + +import { openDialog } from '@/state/dialogs'; + +import { calculatePositionMargin } from '@/lib/tradeData'; + +type PositionsMarginCellProps = { + id: SubaccountPosition['id']; + notionalTotal: SubaccountPosition['notionalTotal']; + adjustedMmf: SubaccountPosition['adjustedMmf']; +}; + +export const PositionsMarginCell = ({ + id, + adjustedMmf, + notionalTotal, +}: PositionsMarginCellProps) => { + const stringGetter = useStringGetter(); + const dispatch = useDispatch(); + const margin = calculatePositionMargin({ + notionalTotal: notionalTotal?.current, + adjustedMmf: adjustedMmf?.current, + }); + const perpetualMarketType = 'CROSS'; // Todo: Replace with perpetualMarketType when available + + const marginModeLabel = + perpetualMarketType === 'CROSS' + ? stringGetter({ key: STRING_KEYS.CROSS }) + : stringGetter({ key: STRING_KEYS.ISOLATED }); + + return ( + <TableCell + stacked + slotRight={ + // perpetualMarketType === 'CROSS' && + <$EditButton + key="edit-margin" + iconName={IconName.Pencil} + shape={ButtonShape.Square} + onClick={() => + dispatch( + openDialog({ + type: DialogTypes.AdjustIsolatedMargin, + dialogProps: { positionId: id }, + }) + ) + } + /> + } + > + <Output type={OutputType.Fiat} value={margin} showSign={ShowSign.None} /> + <span>{marginModeLabel}</span> + </TableCell> + ); +}; +const $EditButton = styled(IconButton)` + --button-icon-size: 1.5em; + --button-padding: 0; + --button-textColor: var(--color-text-0); + --button-hover-textColor: var(--color-text-1); + + margin-left: 0.5rem; +`; diff --git a/src/views/tables/PositionsTable/PositionsTriggersCell.tsx b/src/views/tables/PositionsTable/PositionsTriggersCell.tsx new file mode 100644 index 000000000..e4e1844b1 --- /dev/null +++ b/src/views/tables/PositionsTable/PositionsTriggersCell.tsx @@ -0,0 +1,300 @@ +import { useDispatch } from 'react-redux'; +import styled, { css } from 'styled-components'; + +import { + AbacusPositionSide, + Nullable, + type AbacusPositionSides, + type SubaccountOrder, +} from '@/constants/abacus'; +import { ButtonAction, ButtonShape, ButtonSize } from '@/constants/buttons'; +import { ComplianceStates } from '@/constants/compliance'; +import { DialogTypes } from '@/constants/dialogs'; +import { STRING_KEYS } from '@/constants/localization'; + +import { useComplianceState } from '@/hooks/useComplianceState'; +import { useEnvFeatures } from '@/hooks/useEnvFeatures'; +import { useStringGetter } from '@/hooks/useStringGetter'; + +import { layoutMixins } from '@/styles/layoutMixins'; + +import { Button } from '@/components/Button'; +import { Icon, IconName } from '@/components/Icon'; +import { IconButton } from '@/components/IconButton'; +import { Output, OutputType } from '@/components/Output'; +import { TableCell } from '@/components/Table'; +import { WithHovercard } from '@/components/WithHovercard'; + +import { openDialog } from '@/state/dialogs'; + +import { isStopLossOrder } from '@/lib/orders'; +import { testFlags } from '@/lib/testFlags'; + +type ElementProps = { + marketId: string; + assetId: string; + tickSizeDecimals: number; + liquidationPrice: Nullable<number>; + stopLossOrders: SubaccountOrder[]; + takeProfitOrders: SubaccountOrder[]; + onViewOrdersClick: (marketId: string) => void; + positionSide: Nullable<AbacusPositionSides>; + positionSize: Nullable<number>; + isDisabled?: boolean; +}; + +export const PositionsTriggersCell = ({ + marketId, + assetId, + tickSizeDecimals, + liquidationPrice, + stopLossOrders, + takeProfitOrders, + onViewOrdersClick, + positionSide, + positionSize, + isDisabled, +}: ElementProps) => { + const stringGetter = useStringGetter(); + const dispatch = useDispatch(); + const { isSlTpLimitOrdersEnabled } = useEnvFeatures(); + const { complianceState } = useComplianceState(); + + const onViewOrders = isDisabled ? null : () => onViewOrdersClick(marketId); + + const showLiquidationWarning = (order: SubaccountOrder) => { + if (!isStopLossOrder(order, isSlTpLimitOrdersEnabled) || !liquidationPrice) { + return false; + } + return ( + (positionSide === AbacusPositionSide.SHORT && + (order.triggerPrice ?? order.price) > liquidationPrice) || + (positionSide === AbacusPositionSide.LONG && + (order.triggerPrice ?? order.price) < liquidationPrice) + ); + }; + + const openTriggersDialog = () => { + dispatch( + openDialog({ + type: DialogTypes.Triggers, + dialogProps: { + marketId, + assetId, + stopLossOrders, + takeProfitOrders, + navigateToMarketOrders: onViewOrders, + }, + }) + ); + }; + + const viewOrdersButton = ( + <$Button + action={ButtonAction.Navigation} + size={ButtonSize.XSmall} + onClick={onViewOrders ?? undefined} + > + {stringGetter({ key: STRING_KEYS.VIEW_ORDERS })} + <$ArrowIcon iconName={IconName.Arrow} /> + </$Button> + ); + + const renderOutput = ({ label, orders }: { label: string; orders: SubaccountOrder[] }) => { + const triggerLabel = ({ + liquidationWarningSide, + }: { + liquidationWarningSide?: Nullable<AbacusPositionSides>; + } = {}) => { + const styledLabel = ( + <$Label warning={liquidationWarningSide != null} hasOrders={orders.length > 0}> + {label} + </$Label> + ); + return liquidationWarningSide ? ( + <WithHovercard + align="start" + side="left" + hovercard={ + liquidationWarningSide === AbacusPositionSide.LONG + ? 'liquidation-warning-long' + : 'liquidation-warning-short' + } + slotButton={ + <Button + action={ButtonAction.Primary} + size={ButtonSize.Small} + onClick={openTriggersDialog} + > + {stringGetter({ key: STRING_KEYS.EDIT_STOP_LOSS })} + </Button> + } + slotTrigger={styledLabel} + /> + ) : ( + styledLabel + ); + }; + + if (orders.length === 0) { + return ( + <> + {triggerLabel()} <$Output type={OutputType.Fiat} value={null} /> + </> + ); + } + + if (orders.length === 1) { + const order = orders[0]; + const { size, triggerPrice } = order; + + const isPartialPosition = !!(positionSize && Math.abs(size) < Math.abs(positionSize)); + const liquidationWarningSide = showLiquidationWarning(order) ? positionSide : undefined; + + return ( + <> + {triggerLabel({ liquidationWarningSide })} + <$Output + type={OutputType.Fiat} + value={triggerPrice ?? null} + fractionDigits={tickSizeDecimals} + /> + {isPartialPosition && ( + <WithHovercard + align="end" + side="top" + hovercard={ + isStopLossOrder(order, isSlTpLimitOrdersEnabled) + ? 'partial-close-stop-loss' + : 'partial-close-take-profit' + } + slotButton={ + <Button + action={ButtonAction.Primary} + size={ButtonSize.Small} + onClick={openTriggersDialog} + > + {stringGetter({ + key: isStopLossOrder(order, isSlTpLimitOrdersEnabled) + ? STRING_KEYS.EDIT_STOP_LOSS + : STRING_KEYS.EDIT_TAKE_PROFIT, + })} + </Button> + } + slotTrigger={ + <$PartialFillIcon> + <Icon iconName={IconName.PositionPartial} /> + </$PartialFillIcon> + } + /> + )} + </> + ); + } + + return ( + <> + {triggerLabel()} + {viewOrdersButton} + </> + ); + }; + + return ( + <$TableCell + stacked + stackedWithSecondaryStyling={false} + slotRight={ + !isDisabled && + testFlags.isolatedMargin && + complianceState === ComplianceStates.FULL_ACCESS && ( + <$EditButton + key="edit-margin" + iconName={IconName.Pencil} + shape={ButtonShape.Square} + onClick={openTriggersDialog} + /> + ) + } + > + <$Row>{renderOutput({ label: 'TP', orders: takeProfitOrders })}</$Row> + <$Row>{renderOutput({ label: 'SL', orders: stopLossOrders })}</$Row> + </$TableCell> + ); +}; +const $Row = styled.span` + ${layoutMixins.inlineRow} + + --item-height: 1.25rem; +`; + +const $Label = styled.div<{ warning?: boolean; hasOrders: boolean }>` + align-items: center; + border: solid var(--border-width) var(--color-border); + border-radius: 0.5em; + display: flex; + font: var(--font-tiny-book); + height: var(--item-height); + padding: 0 0.25rem; + + ${({ warning }) => + warning && + css` + background-color: var(--color-warning); + color: var(--color-black); + `} + + ${({ hasOrders }) => + hasOrders + ? css` + color: var(--color-text-1); + background-color: var(--color-layer-4); + ` + : css` + color: var(--color-text-0); + `} +`; + +const $Output = styled(Output)<{ value: number | null }>` + font: var(--font-mini-medium); + ${({ value }) => + value + ? css` + color: var(--color-text-1); + ` + : css` + color: var(--color-text-0); + `} +`; + +const $Button = styled(Button)` + --button-height: var(--item-height); + --button-padding: 0; + --button-textColor: var(--color-text-1); +`; + +const $ArrowIcon = styled(Icon)` + stroke-width: 2; +`; + +const $PartialFillIcon = styled.span` + svg { + display: block; + + width: 0.875em; + height: 0.875em; + } +`; + +const $EditButton = styled(IconButton)` + --button-icon-size: 1.5em; + --button-padding: 0; + --button-textColor: var(--color-text-0); + --button-hover-textColor: var(--color-text-1); + + margin-left: 0.5rem; +`; + +const $TableCell = styled(TableCell)` + justify-content: space-between; +`; diff --git a/src/views/tables/TradingRewardHistoryTable.tsx b/src/views/tables/TradingRewardHistoryTable.tsx index f856ed7da..a0cc46b61 100644 --- a/src/views/tables/TradingRewardHistoryTable.tsx +++ b/src/views/tables/TradingRewardHistoryTable.tsx @@ -1,19 +1,21 @@ -import styled, { type AnyStyledComponent } from 'styled-components'; +import { useMemo } from 'react'; + import { shallowEqual, useSelector } from 'react-redux'; +import styled from 'styled-components'; + +import { HistoricalTradingReward, HistoricalTradingRewardsPeriods } from '@/constants/abacus'; +import { STRING_KEYS, type StringGetterFunction } from '@/constants/localization'; + +import { useStringGetter } from '@/hooks/useStringGetter'; +import { useTokenConfigs } from '@/hooks/useTokenConfigs'; -import { HistoricalTradingRewardsPeriods, HistoricalTradingReward } from '@/constants/abacus'; -import { STRING_KEYS, StringGetterFunction } from '@/constants/localization'; -import { useStringGetter, useTokenConfigs } from '@/hooks'; import { layoutMixins } from '@/styles/layoutMixins'; import { AssetIcon } from '@/components/AssetIcon'; import { Output, OutputType } from '@/components/Output'; import { Table, TableCell, type ColumnDef } from '@/components/Table'; -import { - getHistoricalTradingRewards, - getHistoricalTradingRewardsForPeriod, -} from '@/state/accountSelectors'; +import { getHistoricalTradingRewardsForPeriod } from '@/state/accountSelectors'; export enum TradingRewardHistoryTableColumnKey { Event = 'Event', @@ -37,8 +39,8 @@ const getTradingRewardHistoryTableColumnDef = ({ label: stringGetter({ key: STRING_KEYS.EVENT }), renderCell: ({ startedAtInMilliseconds, endedAtInMilliseconds }) => ( <TableCell stacked> - <Styled.Rewarded>{stringGetter({ key: STRING_KEYS.REWARDED })}</Styled.Rewarded> - <Styled.TimePeriod> + <$Rewarded>{stringGetter({ key: STRING_KEYS.REWARDED })}</$Rewarded> + <$TimePeriod> {stringGetter({ key: STRING_KEYS.FOR_TRADING, params: { @@ -59,7 +61,7 @@ const getTradingRewardHistoryTableColumnDef = ({ ), }, })} - </Styled.TimePeriod> + </$TimePeriod> </TableCell> ), }, @@ -71,7 +73,7 @@ const getTradingRewardHistoryTableColumnDef = ({ <Output type={OutputType.Asset} value={amount} - slotRight={<Styled.AssetIcon symbol={chainTokenLabel} />} + slotRight={<$AssetIcon symbol={chainTokenLabel} />} /> ), }, @@ -103,10 +105,12 @@ export const TradingRewardHistoryTable = ({ shallowEqual ); + const rewardsData = useMemo(() => periodTradingRewards?.toArray() ?? [], [periodTradingRewards]); + return ( - <Styled.Table + <$Table label={stringGetter({ key: STRING_KEYS.REWARD_HISTORY })} - data={periodTradingRewards?.toArray() ?? []} + data={rewardsData} getRowKey={(row: any) => row.startedAtInMilliseconds} columns={columnKeys.map((key: TradingRewardHistoryTableColumnKey) => getTradingRewardHistoryTableColumnDef({ @@ -121,31 +125,28 @@ export const TradingRewardHistoryTable = ({ selectionBehavior="replace" withOuterBorder={withOuterBorder} withInnerBorders={withInnerBorders} - viewMoreConfig={{ initialNumRowsToShow: 5, numRowsPerPage: 10 }} + initialPageSize={15} withScrollSnapColumns withScrollSnapRows /> ); }; -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.Table = styled(Table)` +const $Table = styled(Table)` --tableCell-padding: 0.5rem 0; - --tableHeader-backgroundColor: var(--color-layer-3); + --tableStickyRow-backgroundColor: var(--color-layer-3); --tableRow-backgroundColor: var(--color-layer-3); - --tableViewMore-borderColor: var(--color-layer-3); tbody { font: var(--font-medium-book); } -`; +` as typeof Table; -Styled.Rewarded = styled.span` +const $Rewarded = styled.span` color: var(--color-text-2); `; -Styled.TimePeriod = styled.div` +const $TimePeriod = styled.div` ${layoutMixins.inlineRow} && { @@ -159,6 +160,6 @@ Styled.TimePeriod = styled.div` } `; -Styled.AssetIcon = styled(AssetIcon)` +const $AssetIcon = styled(AssetIcon)` margin-left: 0.5ch; `; diff --git a/src/views/tables/TransferHistoryTable.tsx b/src/views/tables/TransferHistoryTable.tsx index 8b495d856..31862ae48 100644 --- a/src/views/tables/TransferHistoryTable.tsx +++ b/src/views/tables/TransferHistoryTable.tsx @@ -1,33 +1,31 @@ -import styled, { type AnyStyledComponent, css } from 'styled-components'; -import { shallowEqual, useDispatch, useSelector } from 'react-redux'; import type { ColumnSize } from '@react-types/table'; +import { shallowEqual, useDispatch, useSelector } from 'react-redux'; +import styled from 'styled-components'; import { type SubaccountTransfer } from '@/constants/abacus'; import { ButtonAction } from '@/constants/buttons'; import { DialogTypes } from '@/constants/dialogs'; -import { STRING_KEYS, StringGetterFunction } from '@/constants/localization'; +import { STRING_KEYS, type StringGetterFunction } from '@/constants/localization'; -import { useBreakpoints, useStringGetter, useURLConfigs } from '@/hooks'; +import { useStringGetter } from '@/hooks/useStringGetter'; +import { useURLConfigs } from '@/hooks/useURLConfigs'; -import { layoutMixins } from '@/styles/layoutMixins'; import { tradeViewMixins } from '@/styles/tradeViewMixins'; import { Button } from '@/components/Button'; import { CopyButton } from '@/components/CopyButton'; -import { Icon } from '@/components/Icon'; import { Link } from '@/components/Link'; import { Output, OutputType } from '@/components/Output'; import { Table, TableCell, TableColumnHeader, type ColumnDef } from '@/components/Table'; +import { PageSize } from '@/components/Table/TablePaginationRow'; import { OnboardingTriggerButton } from '@/views/dialogs/OnboardingTriggerButton'; -import { getSubaccountTransfers } from '@/state/accountSelectors'; import { calculateCanAccountTrade } from '@/state/accountCalculators'; +import { getSubaccountTransfers } from '@/state/accountSelectors'; import { openDialog } from '@/state/dialogs'; import { truncateAddress } from '@/lib/wallet'; -const MOBILE_TRANSFERS_PER_PAGE = 50; - export enum TransferHistoryTableColumnKey { Time = 'Time', Action = 'Action', @@ -43,7 +41,6 @@ const getTransferHistoryTableColumnDef = ({ mintscanTxUrl, }: { key: TransferHistoryTableColumnKey; - isTablet?: boolean; stringGetter: StringGetterFunction; width?: ColumnSize; mintscanTxUrl?: string; @@ -56,7 +53,7 @@ const getTransferHistoryTableColumnDef = ({ getCellValue: (row) => row.updatedAtMilliseconds, label: stringGetter({ key: STRING_KEYS.TIME }), renderCell: ({ updatedAtMilliseconds }) => ( - <Styled.TimeOutput + <$TimeOutput type={OutputType.RelativeTime} relativeTimeFormatOptions={{ format: 'singleCharacter' }} value={updatedAtMilliseconds} @@ -102,12 +99,9 @@ const getTransferHistoryTableColumnDef = ({ label: stringGetter({ key: STRING_KEYS.TRANSACTION }), renderCell: ({ transactionHash }) => transactionHash ? ( - <Styled.TxHash - withIcon - href={`${mintscanTxUrl?.replace('{tx_hash}', transactionHash)}`} - > + <$TxHash withIcon href={`${mintscanTxUrl?.replace('{tx_hash}', transactionHash)}`}> {truncateAddress(transactionHash, '')} - </Styled.TxHash> + </$TxHash> ) : ( '-' ), @@ -119,6 +113,7 @@ const getTransferHistoryTableColumnDef = ({ type ElementProps = { columnKeys?: TransferHistoryTableColumnKey[]; columnWidths?: Partial<Record<TransferHistoryTableColumnKey, ColumnSize>>; + initialPageSize?: PageSize; }; type StyleProps = { @@ -129,12 +124,12 @@ type StyleProps = { export const TransferHistoryTable = ({ columnKeys = Object.values(TransferHistoryTableColumnKey), columnWidths, + initialPageSize, withOuterBorder, withInnerBorders = true, }: ElementProps & StyleProps) => { const stringGetter = useStringGetter(); const dispatch = useDispatch(); - const { isMobile, isTablet } = useBreakpoints(); const { mintscan: mintscanTxUrl } = useURLConfigs(); const canAccountTrade = useSelector(calculateCanAccountTrade, shallowEqual); @@ -142,14 +137,13 @@ export const TransferHistoryTable = ({ const transfers = useSelector(getSubaccountTransfers, shallowEqual) ?? []; return ( - <Styled.Table + <$Table label="Transfers" - data={isMobile ? transfers.slice(0, MOBILE_TRANSFERS_PER_PAGE) : transfers} + data={transfers} getRowKey={(row: SubaccountTransfer) => row.id} columns={columnKeys.map((key: TransferHistoryTableColumnKey) => getTransferHistoryTableColumnDef({ key, - isTablet, stringGetter, width: columnWidths?.[key], mintscanTxUrl, @@ -170,6 +164,7 @@ export const TransferHistoryTable = ({ )} </> } + initialPageSize={initialPageSize} selectionBehavior="replace" withOuterBorder={withOuterBorder} withInnerBorders={withInnerBorders} @@ -178,25 +173,14 @@ export const TransferHistoryTable = ({ /> ); }; - -const Styled: Record<string, AnyStyledComponent> = {}; - -Styled.Table = styled(Table)` +const $Table = styled(Table)` ${tradeViewMixins.horizontalTable} -`; - -Styled.InlineRow = styled.div` - ${layoutMixins.inlineRow} -`; - -Styled.Icon = styled(Icon)` - font-size: 3em; -`; +` as typeof Table; -Styled.TimeOutput = styled(Output)` +const $TimeOutput = styled(Output)` color: var(--color-text-0); `; -Styled.TxHash = styled(Link)` +const $TxHash = styled(Link)` justify-content: flex-end; `; diff --git a/index.html b/template.html similarity index 67% rename from index.html rename to template.html index bcb21eb9a..332b1673b 100644 --- a/index.html +++ b/template.html @@ -11,13 +11,26 @@ <meta name="twitter:creator" content="@dYdX" /> <meta property="og:url" content="%VITE_BASE_URL%" /> <meta property="og:type" content="website" /> - <meta property="og:image" content="%VITE_BASE_URL%/dydx-testnet.png" /> + <meta property="og:image" content="%VITE_BASE_URL%/og-image.png" /> <meta property="og:image:alt" content="dYdX" /> <meta property="og:image:type" content="image/png" /> <meta property="og:image:width" content="2400" /> <meta property="og:image:height" content="1260" /> <meta property="og:locale" content="en_US" /> <meta property="og:site_name" content="dYdX" /> + <script> + if (typeof globalThis === 'undefined') { + (function () { + if (typeof self !== 'undefined') { + self.globalThis = self; + } else if (typeof window !== 'undefined') { + window.globalThis = window; + } else if (typeof global !== 'undefined') { + global.globalThis = global; + } + })(); + } + </script> </head> <body> <div id="root"></div> diff --git a/tsconfig.json b/tsconfig.json index e8cf44e72..a1f0cfa6d 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -20,8 +20,9 @@ "useUnknownInCatchVariables": false, "paths": { "@/*": ["src/*"] - } + }, + "types": ["node", "@wdio/globals", "mocha"] }, - "include": ["src", "scripts"], + "include": ["src", "scripts", "styled.d.ts", "__tests__", "wdio.conf.ts"], "references": [{ "path": "./tsconfig.node.json" }] } diff --git a/vercel.json b/vercel.json index 0f32683a9..daa7ecd39 100644 --- a/vercel.json +++ b/vercel.json @@ -1,3 +1,8 @@ { - "rewrites": [{ "source": "/(.*)", "destination": "/index.html" }] -} + "rewrites": [ + { + "source": "/(.*)", + "destination": "/entry-points/index.html" + } + ] +} \ No newline at end of file diff --git a/vite.config.ts b/vite.config.ts index 1fd758dfb..47356feed 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -1,13 +1,28 @@ -import { defineConfig } from 'vite'; import react from '@vitejs/plugin-react'; +import fs from 'fs'; import path from 'path'; +import sourcemaps from 'rollup-plugin-sourcemaps'; +import { defineConfig } from 'vite'; +import ViteRestart from 'vite-plugin-restart'; import svgr from 'vite-plugin-svgr'; +const entryPointsDir = path.join(__dirname, 'entry-points'); +const entryPointsExist = fs.existsSync(entryPointsDir); + +const entryPoints = entryPointsExist + ? fs.readdirSync(entryPointsDir).map((file) => `/entry-points/${file}`) + : []; + // https://vitejs.dev/config/ export default defineConfig(({ mode }) => ({ define: { 'process.env': {}, }, + rollupOptions: { + // Needed for Abacus sourcemaps since Rollup doesn't load external sourcemaps by default. + // https://github.com/vitejs/vite/issues/11743 + plugins: mode === 'development' ? [sourcemaps()] : [], + }, resolve: { alias: [ { find: '@', replacement: path.resolve(__dirname, 'src') }, @@ -50,6 +65,27 @@ export default defineConfig(({ mode }) => ({ svgr({ exportAsDefault: true, }), + // Currently, the Vite file watcher is unable to watch folders within node_modules. + // Workaround is to use ViteRestart plugin + a generated file to trigger the restart. + // See https://github.com/vitejs/vite/issues/8619 + ViteRestart({ + restart: ['local-abacus-hash'], + }), ], publicDir: 'public', + test: { + exclude: [ + '**/node_modules/**', + '**/dist/**', + '**/cypress/**', + '**/.{idea,git,cache,output,temp}/**', + '**/{karma,rollup,webpack,vite,vitest,jest,ava,babel,nyc,cypress,tsup,build}.config.*', + '**/e2e/**', + ], + }, + build: { + rollupOptions: { + input: entryPoints, + }, + }, })); diff --git a/wdio.conf.ts b/wdio.conf.ts new file mode 100644 index 000000000..63e008fab --- /dev/null +++ b/wdio.conf.ts @@ -0,0 +1,372 @@ +import type { Options } from '@wdio/types'; + +export const config: Options.Testrunner = { + // + // ==================== + // Runner Configuration + // ==================== + // WebdriverIO supports running e2e tests as well as unit and component tests. + runner: 'local', + autoCompileOpts: { + autoCompile: true, + tsNodeOpts: { + project: './__tests__/tsconfig.json', + transpileOnly: true, + }, + }, + + // + // ================= + // Service Providers + // ================= + // WebdriverIO supports Sauce Labs, Browserstack, Testing Bot and LambdaTest (other cloud providers + // should work too though). These services define specific user and key (or access key) + // values you need to put in here in order to connect to these services. + // + user: process.env.BROWSERSTACK_USERNAME, + key: process.env.BROWSERSTACK_ACCESS_KEY, + // + // If you run your tests on Sauce Labs you can specify the region you want to run your tests + // in via the `region` property. Available short handles for regions are `us` (default), `eu` and `apac`. + // These regions are used for the Sauce Labs VM cloud and the Sauce Labs Real Device Cloud. + // If you don't provide the region it will default for the `us` + + // + // ================== + // Specify Test Files + // ================== + // Define which test specs should run. The pattern is relative to the directory + // of the configuration file being run. + // + // The specs are defined as an array of spec files (optionally using wildcards + // that will be expanded). The test for each spec file will be run in a separate + // worker process. In order to have a group of spec files run in the same worker + // process simply enclose them in an array within the specs array. + // + // The path of the spec files will be resolved relative from the directory of + // of the config file unless it's absolute. + // + specs: ['./__tests__/e2e/**/*.ts'], + // Patterns to exclude. + exclude: [ + // 'path/to/excluded/files' + ], + // + // ============ + // Capabilities + // ============ + // Define your capabilities here. WebdriverIO can run multiple capabilities at the same + // time. Depending on the number of capabilities, WebdriverIO launches several test + // sessions. Within your capabilities you can overwrite the spec and exclude options in + // order to group specific specs to a specific capability. + // + // First, you can define how many instances should be started at the same time. Let's + // say you have 3 different capabilities (Chrome, Firefox, and Safari) and you have + // set maxInstances to 1; wdio will spawn 3 processes. Therefore, if you have 10 spec + // files and you set maxInstances to 10, all spec files will get tested at the same time + // and 30 processes will get spawned. The property handles how many capabilities + // from the same test should run tests. + // + maxInstances: 10, + // + // If you have trouble getting all important capabilities together, check out the + // Sauce Labs platform configurator - a great tool to configure your capabilities: + // https://saucelabs.com/platform/platform-configurator + // + capabilities: [ + { + browserName: 'chrome', + 'bstack:options': { + os: 'Windows', + osVersion: '10', + }, + }, + { + browserName: 'firefox', + 'bstack:options': { + os: 'Windows', + osVersion: '10', + }, + }, + { + browserName: 'safari', + 'bstack:options': { + os: 'OS X', + osVersion: 'Monterey', + }, + }, + { + browserName: 'chrome', + 'bstack:options': { + os: 'OS X', + osVersion: 'Monterey', + }, + }, + { + browserName: 'edge', + 'bstack:options': { + os: 'Windows', + osVersion: '10', + }, + }, + { + browserName: 'safari', + 'bstack:options': { + deviceName: 'iPhone 14 Pro Max', + osVersion: '16', + }, + }, + { + browserName: 'chrome', + 'bstack:options': { + deviceName: 'Samsung Galaxy S23 Ultra', + osVersion: '13.0', + }, + }, + { + browserName: 'safari', + 'bstack:options': { + deviceName: 'iPad Pro 12.9 2022', + osVersion: '16', + }, + }, + ], + + // + // =================== + // Test Configurations + // =================== + // Define all options that are relevant for the WebdriverIO instance here + // + // Level of logging verbosity: trace | debug | info | warn | error | silent + logLevel: 'info', + // + // Set specific log levels per logger + // loggers: + // - webdriver, webdriverio + // - @wdio/browserstack-service, @wdio/devtools-service, @wdio/sauce-service + // - @wdio/mocha-framework, @wdio/jasmine-framework + // - @wdio/local-runner + // - @wdio/sumologic-reporter + // - @wdio/cli, @wdio/config, @wdio/utils + // Level of logging verbosity: trace | debug | info | warn | error | silent + // logLevels: { + // webdriver: 'info', + // '@wdio/appium-service': 'info' + // }, + // + // If you only want to run your tests until a specific amount of tests have failed use + // bail (default is 0 - don't bail, run all tests). + bail: 0, + // + // Set a base URL in order to shorten url command calls. If your `url` parameter starts + // with `/`, the base url gets prepended, not including the path portion of your baseUrl. + // If your `url` parameter starts without a scheme or `/` (like `some/path`), the base url + // gets prepended directly. + // baseUrl: 'http://localhost:8080', + // + // Default timeout for all waitFor* commands. + waitforTimeout: 10000, + // + // Default timeout in milliseconds for request + // if browser driver or grid doesn't send response + connectionRetryTimeout: 120000, + // + // Default request retries count + connectionRetryCount: 3, + // + // Test runner services + // Services take over a specific job you don't want to take care of. They enhance + // your test setup with almost no effort. Unlike plugins, they don't add new + // commands. Instead, they hook themselves up into the test process. + services: ['browserstack'], + + // Framework you want to run your specs with. + // The following are supported: Mocha, Jasmine, and Cucumber + // see also: https://webdriver.io/docs/frameworks + // + // Make sure you have the wdio adapter package for the specific framework installed + // before running any tests. + framework: 'mocha', + + // + // The number of times to retry the entire specfile when it fails as a whole + // specFileRetries: 1, + // + // Delay in seconds between the spec file retry attempts + // specFileRetriesDelay: 0, + // + // Whether or not retried spec files should be retried immediately or deferred to the end of the queue + // specFileRetriesDeferred: false, + // + // Test reporter for stdout. + // The only one supported by default is 'dot' + // see also: https://webdriver.io/docs/dot-reporter + reporters: ['spec'], + + // Options to be passed to Mocha. + // See the full list at http://mochajs.org/ + mochaOpts: { + ui: 'bdd', + timeout: 60000, + }, + + // + // ===== + // Hooks + // ===== + // WebdriverIO provides several hooks you can use to interfere with the test process in order to enhance + // it and to build services around it. You can either apply a single function or an array of + // methods to it. If one of them returns with a promise, WebdriverIO will wait until that promise got + // resolved to continue. + /** + * Gets executed once before all workers get launched. + * @param {object} config wdio configuration object + * @param {Array.<Object>} capabilities list of capabilities details + */ + // onPrepare: function (config, capabilities) { + // }, + /** + * Gets executed before a worker process is spawned and can be used to initialize specific service + * for that worker as well as modify runtime environments in an async fashion. + * @param {string} cid capability id (e.g 0-0) + * @param {object} caps object containing capabilities for session that will be spawn in the worker + * @param {object} specs specs to be run in the worker process + * @param {object} args object that will be merged with the main configuration once worker is initialized + * @param {object} execArgv list of string arguments passed to the worker process + */ + // onWorkerStart: function (cid, caps, specs, args, execArgv) { + // }, + /** + * Gets executed just after a worker process has exited. + * @param {string} cid capability id (e.g 0-0) + * @param {number} exitCode 0 - success, 1 - fail + * @param {object} specs specs to be run in the worker process + * @param {number} retries number of retries used + */ + // onWorkerEnd: function (cid, exitCode, specs, retries) { + // }, + /** + * Gets executed just before initialising the webdriver session and test framework. It allows you + * to manipulate configurations depending on the capability or spec. + * @param {object} config wdio configuration object + * @param {Array.<Object>} capabilities list of capabilities details + * @param {Array.<String>} specs List of spec file paths that are to be run + * @param {string} cid worker id (e.g. 0-0) + */ + // beforeSession: function (config, capabilities, specs, cid) { + // }, + /** + * Gets executed before test execution begins. At this point you can access to all global + * variables like `browser`. It is the perfect place to define custom commands. + * @param {Array.<Object>} capabilities list of capabilities details + * @param {Array.<String>} specs List of spec file paths that are to be run + * @param {object} browser instance of created browser/device session + */ + // before: function (capabilities, specs) { + // }, + /** + * Runs before a WebdriverIO command gets executed. + * @param {string} commandName hook command name + * @param {Array} args arguments that command would receive + */ + // beforeCommand: function (commandName, args) { + // }, + /** + * Hook that gets executed before the suite starts + * @param {object} suite suite details + */ + // beforeSuite: function (suite) { + // }, + /** + * Function to be executed before a test (in Mocha/Jasmine) starts. + */ + // beforeTest: function (test, context) { + // }, + /** + * Hook that gets executed _before_ a hook within the suite starts (e.g. runs before calling + * beforeEach in Mocha) + */ + // beforeHook: function (test, context, hookName) { + // }, + /** + * Hook that gets executed _after_ a hook within the suite starts (e.g. runs after calling + * afterEach in Mocha) + */ + // afterHook: function (test, context, { error, result, duration, passed, retries }, hookName) { + // }, + /** + * Function to be executed after a test (in Mocha/Jasmine only) + * @param {object} test test object + * @param {object} context scope object the test was executed with + * @param {Error} result.error error object in case the test fails, otherwise `undefined` + * @param {*} result.result return object of test function + * @param {number} result.duration duration of test + * @param {boolean} result.passed true if test has passed, otherwise false + * @param {object} result.retries information about spec related retries, e.g. `{ attempts: 0, limit: 0 }` + */ + // afterTest: function(test, context, { error, result, duration, passed, retries }) { + // }, + + /** + * Hook that gets executed after the suite has ended + * @param {object} suite suite details + */ + // afterSuite: function (suite) { + // }, + /** + * Runs after a WebdriverIO command gets executed + * @param {string} commandName hook command name + * @param {Array} args arguments that command would receive + * @param {number} result 0 - command success, 1 - command error + * @param {object} error error object if any + */ + // afterCommand: function (commandName, args, result, error) { + // }, + /** + * Gets executed after all tests are done. You still have access to all global variables from + * the test. + * @param {number} result 0 - test pass, 1 - test fail + * @param {Array.<Object>} capabilities list of capabilities details + * @param {Array.<String>} specs List of spec file paths that ran + */ + // after: function (result, capabilities, specs) { + // }, + /** + * Gets executed right after terminating the webdriver session. + * @param {object} config wdio configuration object + * @param {Array.<Object>} capabilities list of capabilities details + * @param {Array.<String>} specs List of spec file paths that ran + */ + // afterSession: function (config, capabilities, specs) { + // }, + /** + * Gets executed after all workers got shut down and the process is about to exit. An error + * thrown in the onComplete hook will result in the test run failing. + * @param {object} exitCode 0 - success, 1 - fail + * @param {object} config wdio configuration object + * @param {Array.<Object>} capabilities list of capabilities details + * @param {<Object>} results object containing test results + */ + // onComplete: function(exitCode, config, capabilities, results) { + // }, + /** + * Gets executed when a refresh happens. + * @param {string} oldSessionId session ID of the old session + * @param {string} newSessionId session ID of the new session + */ + // onReload: function(oldSessionId, newSessionId) { + // } + /** + * Hook that gets executed before a WebdriverIO assertion happens. + * @param {object} params information about the assertion to be executed + */ + // beforeAssertion: function(params) { + // } + /** + * Hook that gets executed after a WebdriverIO assertion happened. + * @param {object} params information about the assertion that was executed, including its results + */ + // afterAssertion: function(params) { + // } +};