From 3905d199dba297ed5618dbd4e31e00ca97f97fce Mon Sep 17 00:00:00 2001 From: yuche Date: Mon, 21 Feb 2022 16:07:35 +0800 Subject: [PATCH 01/37] feat: upgrade to unpass v3 --- craco.config.js | 5 +- package.json | 7 +- src/constants/env.ts | 20 ++ src/hooks/useAccount.ts | 102 ++++---- src/hooks/useProfile.ts | 16 +- src/hooks/useRedeem.ts | 33 +-- src/pw/UProvider.ts | 23 ++ src/pw/UnipassProvider.ts | 2 +- src/routes/AccountChange.tsx | 7 +- src/routes/path.ts | 1 - src/routes/routes.ts | 7 - src/views/Login/index.tsx | 4 +- .../hooks/useSendRedEnvelope.tsx | 21 +- src/views/Transfer/index.tsx | 46 +--- src/views/Unipass/index.tsx | 128 ---------- yarn.lock | 221 +++++++++++++++--- 16 files changed, 333 insertions(+), 310 deletions(-) create mode 100644 src/pw/UProvider.ts delete mode 100644 src/views/Unipass/index.tsx diff --git a/craco.config.js b/craco.config.js index 3a6c7856..72842f7d 100644 --- a/craco.config.js +++ b/craco.config.js @@ -3,7 +3,10 @@ const BundleAnalyzerPlugin = require('webpack-bundle-analyzer') module.exports = { babel: { - plugins: ['babel-plugin-styled-components'], + plugins: [ + 'babel-plugin-styled-components', + '@babel/plugin-proposal-class-properties', + ], }, webpack: { configure: (webpackConfig) => { diff --git a/package.json b/package.json index 4fc9d66a..c4c6815f 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,7 @@ "yarn": "1.22" }, "scripts": { - "dev": "HTTPS=true PORT=443 craco start", + "dev": "craco start", "build": "cross-env NODE_OPTIONS=--max_old_space_size=8192 craco build", "lint": "eslint src", "start": "serve -s build", @@ -26,7 +26,7 @@ "@emotion/react": "^11", "@emotion/styled": "^11", "@google/model-viewer": "^1.9.2", - "@lay2/pw-core": "0.4.0-alpha.8", + "@lay2/pw-core": "0.4.0-alpha.13", "@metamask/detect-provider": "^1.2.0", "@mibao-ui/components": "0.0.34", "@nervina-labs/flashsigner": "^0.2.1", @@ -71,6 +71,8 @@ "serve": "11.3.2", "styled-components": "^5.2.3", "swiper": "^7.2.0", + "up-ckb-alpha-test": "0.1.5", + "up-core-test": "^0.1.6", "web3": "^1.3.5", "web3modal": "^1.9.3", "workbox-core": "^6.1.5", @@ -80,6 +82,7 @@ "workbox-strategies": "^6.1.5" }, "devDependencies": { + "@babel/plugin-proposal-class-properties": "^7.16.7", "@craco/craco": "^6.1.1", "@types/react": "^17.0.0", "@types/react-dom": "^17.0.0", diff --git a/src/constants/env.ts b/src/constants/env.ts index a9adc8f2..73066073 100644 --- a/src/constants/env.ts +++ b/src/constants/env.ts @@ -1,5 +1,8 @@ import * as Bowser from 'bowser' import { Config } from '@nervina-labs/flashsigner' +import UP from 'up-core-test' +import UPCKB from 'up-ckb-alpha-test' + type ChainType = 'mainnet' | 'testnet' export const BOWSER_BROWSER = Bowser.getParser(window.navigator.userAgent) @@ -105,3 +108,20 @@ export const ISSUER_ID_REG = /^ISSUER-.{40}$/ export const TOKEN_CLASS_ID_REG = /^0x.{48}$/ export const IS_SUPPORT_AR = !IS_WEXIN && document.createElement('a').relList.supports('ar') + +export const UNIPASS_CODE_HASH = IS_MAINNET + ? '0xd01f5152c267b7f33b9795140c2467742e8424e49ebe2331caec197f7281b60a' + : '0x3e1eb7ed4809b2d60650be96a40abfbdafb3fb942b7b37ec7709e64e2cd0a783' + +UPCKB.config({ + upLockCodeHash: UNIPASS_CODE_HASH, +}) +if (IS_MAINNET) { + UP.config({ + domain: 'app.unipass.id', + }) +} else { + UP.config({ + domain: 't.app.unipass.id', + }) +} diff --git a/src/hooks/useAccount.ts b/src/hooks/useAccount.ts index cbbd7eec..e8958291 100644 --- a/src/hooks/useAccount.ts +++ b/src/hooks/useAccount.ts @@ -4,19 +4,19 @@ import { Address, DefaultSigner, Provider, Transaction } from '@lay2/pw-core' import { atomWithStorage, useAtomValue, useUpdateAtom } from 'jotai/utils' import { useCallback, useMemo } from 'react' import dayjs from 'dayjs' +import UP, { UPAuthMessage } from 'up-core-test' +import UPCKB, { + fetchAssetLockProof, + completeTxWithProof, +} from 'up-ckb-alpha-test' import { usePrevious } from './usePrevious' import type { History } from 'history' -import UnipassProvider from '../pw/UnipassProvider' -import { UNIPASS_URL } from '../constants' +import { UNIPASS_CODE_HASH } from '../constants' import { Web3Provider } from '../pw/Web3Provider' import { RoutePath } from '../routes' -import { - generateUnipassLoginUrl, - generateUnipassSignUrl, - buildFlashsignerOptions, -} from '../utils' -import UnipassSigner from '../pw/UnipassSigner' +import { buildFlashsignerOptions } from '../utils' import { ServerWalletAPI } from '../apis/ServerWalletAPI' +import { UPCoreSimpleProvier } from '../pw/UProvider' export enum WalletType { Unipass = 'Unipass', @@ -33,6 +33,7 @@ export interface UnipassAccount { pubkey?: string walletType: WalletType expireTime?: string + username?: string } export const providerAtom = atom(null) @@ -75,7 +76,7 @@ export function useAccount() { } export function useAccountStatus() { - const { account, walletType, pubkey, address } = useAccount() + const { account, address } = useAccount() const expireTime = useMemo(() => { return account?.expireTime ?? dayjs('1970').toISOString() }, [account?.expireTime]) @@ -86,11 +87,8 @@ export function useAccountStatus() { if (isExpired) { return false } - if (walletType === WalletType.Unipass && !pubkey) { - return false - } return address !== '' - }, [address, expireTime, pubkey, walletType]) + }, [address, expireTime]) const prevAddress = usePrevious(address) @@ -158,16 +156,17 @@ export function useLogin() { ) const loginUnipass = useCallback(async () => { - const p = await new UnipassProvider(UNIPASS_URL, setAccount).init() + // eslint-disable-next-line no-debugger + const account = await UP.connect({ email: true }) + const address = UPCKB.getCKBAddress(account.username) setAccount({ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - email: p.email!, - address: p.address.toCKBAddress(), + email: account.email!, + address: address.toCKBAddress(), walletType: WalletType.Unipass, + username: account.username, }) - setProvider(p) - return p - }, [setAccount, setProvider]) + }, [setAccount]) const loginMetamask = useCallback(async () => { const Web3Modal = (await import('web3modal')).default @@ -191,11 +190,8 @@ export function useLogin() { provider?.close() switch (walletType) { case WalletType.Unipass: - return await new Promise((resolve) => { - const url = `${location.origin}${RoutePath.Unipass}` - location.href = generateUnipassLoginUrl(url, url) - resolve(provider as Provider) - }) + await loginUnipass() + return provider as Provider case WalletType.Flashsigner: return await new Promise((resolve) => { const url = `${location.origin}${RoutePath.Flashsigner}` @@ -220,22 +216,24 @@ export function useLogin() { } export function useSignTransaction() { - const setAccount = useSetAccount() - const { account, walletType } = useAccount() + const { walletType } = useAccount() const [provider, setProvider] = useAtom(providerAtom) const { loginMetamask } = useLogin() - const signUnipass = useCallback( - async (tx: Transaction) => { - const p = await new UnipassProvider(UNIPASS_URL, setAccount).connect( - account - ) - const signer = new UnipassSigner(p) - const [signedTx] = signer.toMessages(tx) - setProvider(p) - return signedTx.message as any - }, - [account, setAccount, setProvider] - ) + const signUnipass = useCallback(async (tx: Transaction) => { + UP.initPop() + const acc = await UP.connect() + const provider = new UPCoreSimpleProvier(acc.username, UNIPASS_CODE_HASH) + const signer = new DefaultSigner(provider) + const { usernameHash } = provider + const signedTx = await signer.sign(tx) + const assetLockProof = await fetchAssetLockProof(usernameHash) + const completedSignedTx = completeTxWithProof( + signedTx, + assetLockProof, + usernameHash + ) + return completedSignedTx + }, []) const signMetamask = useCallback( async (tx: Transaction) => { @@ -279,21 +277,27 @@ export function toHex(str: string): string { } export function useSignMessage() { - const { walletType, pubkey } = useAccount() + const { walletType } = useAccount() const [provider, setProvider] = useAtom(providerAtom) const { loginMetamask } = useLogin() + const setAccount = useSetAccount() return useCallback( async (msg: string) => { if (walletType === WalletType.Unipass) { - const url = `${location.origin}${RoutePath.Unipass}` - const message = toHex(msg) - location.href = generateUnipassSignUrl( - url, - `${location.origin}${RoutePath.NFTs}`, - pubkey, - message - ) - return message + try { + const acc = await UP.connect({ email: true }) + const res = await UP.authorize( + new UPAuthMessage('PLAIN_MSG', acc.username, msg) + ) + setAccount({ + address: UPCKB.getCKBAddress(acc.username).toCKBAddress(), + pubkey: res.pubkey, + walletType: WalletType.Unipass, + }) + return res.sig + } catch (error) { + return 'N/A' + } } if (provider != null) { try { @@ -311,7 +315,7 @@ export function useSignMessage() { return 'N/A' } }, - [walletType, provider, loginMetamask, setProvider, pubkey] + [walletType, provider, loginMetamask, setProvider, setAccount] ) } diff --git a/src/hooks/useProfile.ts b/src/hooks/useProfile.ts index c6547928..f3d778c1 100644 --- a/src/hooks/useProfile.ts +++ b/src/hooks/useProfile.ts @@ -6,6 +6,7 @@ import i18n from '../i18n' import { Auth, User } from '../models/user' import { UnipassConfig } from '../utils' import { + accountAtom, useAccount, useAPI, useLogin, @@ -99,8 +100,7 @@ export function useGetAndSetAuth(): () => Promise { if (!signature) { UnipassConfig.setRedirectUri(location.pathname + location.search) signature = await signMessage(message) - // we don't need set unipass profile auth in here - if (signature.includes('N/A') || walletType === WalletType.Unipass) { + if (signature.includes('N/A')) { throw new Error('signing: user denied') } else { setProfile({ @@ -121,6 +121,18 @@ export function useGetAndSetAuth(): () => Promise { } } + if (walletType === WalletType.Unipass) { + const account = get(accountAtom) + return { + address: addr, + message, + signature, + pubkey: account?.pubkey, + key_type: 'RsaPubkey', + username: account?.username, + } + } + return { address: addr, message, diff --git a/src/hooks/useRedeem.ts b/src/hooks/useRedeem.ts index 6bf71b05..99439502 100644 --- a/src/hooks/useRedeem.ts +++ b/src/hooks/useRedeem.ts @@ -10,7 +10,7 @@ import { RedeemEventItem, } from '../models/redeem' import { RoutePath } from '../routes' -import { generateUnipassRedeemUrl, noop, UnipassConfig } from '../utils' +import { noop, UnipassConfig } from '../utils' import { useAccount, useAPI, @@ -49,7 +49,7 @@ export interface TransferState { export const useSignRedeem = () => { const history = useHistory() const api = useAPI() - const { walletType, pubkey } = useAccount() + const { walletType } = useAccount() const signTransaction = useSignTransaction() const reactLocation = useLocation() const confirmDialog = useConfirmDialog() @@ -87,30 +87,10 @@ export const useSignRedeem = () => { throw new Error(err) }) - if (walletType === WalletType.Unipass) { - const url = `${location.origin}${RoutePath.Unipass}` - UnipassConfig.setRedirectUri(`${RoutePath.RedeemResult}/${id}`) - const state: Record = { - prevPathname: reactLocation.pathname, - uuid: id, - } - if (customData) { - state.customData = encodeURIComponent(JSON.stringify(customData)) - } - location.href = generateUnipassRedeemUrl( - url, - url, - pubkey, - signTx, - state - ) - return - } else { - history.replace(`${RoutePath.RedeemResult}/${id}`, { - tx: signTx, - customData, - }) - } + history.replace(`${RoutePath.RedeemResult}/${id}`, { + tx: signTx, + customData, + }) } catch (error) { setIsRedeeming(false) toast(t('exchange.error')) @@ -120,7 +100,6 @@ export const useSignRedeem = () => { [ api, history, - pubkey, signTransaction, walletType, reactLocation.pathname, diff --git a/src/pw/UProvider.ts b/src/pw/UProvider.ts new file mode 100644 index 00000000..15f9b455 --- /dev/null +++ b/src/pw/UProvider.ts @@ -0,0 +1,23 @@ +import { Reader } from '@lay2/pw-core' +import UPCore, { UPAuthMessage, UPAuthResponse } from 'up-core-test' +import { UPCKBBaseProvider } from 'up-ckb-alpha-test' + +export class UPCoreSimpleProvier extends UPCKBBaseProvider { + async authorize(message: string): Promise { + const { keyType, pubkey, sig: sigHex } = await UPCore.authorize( + new UPAuthMessage('CKB_TX', this.username, message) + ) + + let sig: string = sigHex + if (keyType === 'Secp256k1Pubkey') { + let v = Number.parseInt(sigHex.slice(-2), 16) + if (v >= 27) v -= 27 + sig = new Reader( + sigHex.slice(0, -2) + v.toString(16).padStart(2, '0') + ).serializeJson() + } + + // convert to hex string + return { keyType, pubkey, sig } + } +} diff --git a/src/pw/UnipassProvider.ts b/src/pw/UnipassProvider.ts index f82c7d7d..6022119f 100644 --- a/src/pw/UnipassProvider.ts +++ b/src/pw/UnipassProvider.ts @@ -71,7 +71,7 @@ export function pubkeyToAddress(pubkey: string): string { const script = new Script(PW_CODE_HASH, hashHex, HashType.type) return script - .toAddress(IS_MAINNET ? AddressPrefix.ckb : AddressPrefix.ckt) + .toAddress(IS_MAINNET ? AddressPrefix.Mainnet : AddressPrefix.Testnet) .toCKBAddress() } diff --git a/src/routes/AccountChange.tsx b/src/routes/AccountChange.tsx index e308f5a6..d94c405d 100644 --- a/src/routes/AccountChange.tsx +++ b/src/routes/AccountChange.tsx @@ -3,7 +3,6 @@ import React, { useEffect, useRef } from 'react' import { useHistory, useLocation } from 'react-router-dom' import { useTranslation } from 'react-i18next' import { useGetAndSetAuth, useProfile } from '../hooks/useProfile' -import { UnipassConfig } from '../utils' import { useAccount, useAccountStatus, WalletType } from '../hooks/useAccount' import { RoutePath } from './path' import { @@ -14,7 +13,6 @@ import { useWechatShare } from '../hooks/useWechat' import { useToast } from '../hooks/useToast' const allowWithoutAuthList = new Set([ - RoutePath.Unipass, RoutePath.Explore, RoutePath.Apps, RoutePath.AddressCollector, @@ -79,7 +77,7 @@ export const AccountChange: React.FC = ({ children }) => { !isSigning.current ) { if ( - (WalletType.Unipass === walletType && pubkey) || + WalletType.Unipass === walletType || WalletType.Metamask === walletType ) { isSigning.current = true @@ -89,9 +87,6 @@ export const AccountChange: React.FC = ({ children }) => { content: t('auth.content'), okText: t('auth.ok'), onConfirm: async () => { - if (pathInForceAuthList && WalletType.Unipass === walletType) { - UnipassConfig.setRedirectUri(location.pathname + location.search) - } try { await getAuth() if (WalletType.Metamask === walletType) { diff --git a/src/routes/path.ts b/src/routes/path.ts index c7ff03f4..f17e687d 100644 --- a/src/routes/path.ts +++ b/src/routes/path.ts @@ -14,7 +14,6 @@ export enum RoutePath { Explore = '/explore', ExploreAll = '/explore/all', Help = '/help', - Unipass = '/unipass', Apps = '/apps', License = '/license', AddressCollector = '/addresses', diff --git a/src/routes/routes.ts b/src/routes/routes.ts index bb2fd921..19f1c0be 100644 --- a/src/routes/routes.ts +++ b/src/routes/routes.ts @@ -9,7 +9,6 @@ import { Profile } from '../views/Profile' import { ImagePreview } from '../views/Profile/ImagePreview' import { Explore } from '../views/Explore/index' import { Help } from '../views/Help' -import { Unipass } from '../views/Unipass' import { Apps } from '../views/Apps' import { AddressCollector } from '../views/AddressCollector' import { Collection } from '../views/Collection' @@ -140,12 +139,6 @@ export const routes: MibaoRouterProps[] = [ key: 'License', path: RoutePath.License, }, - { - component: Unipass, - exact: false, - key: 'Unipass', - path: RoutePath.Unipass, - }, { component: Apps, exact: true, diff --git a/src/views/Login/index.tsx b/src/views/Login/index.tsx index f21ca22e..18608498 100644 --- a/src/views/Login/index.tsx +++ b/src/views/Login/index.tsx @@ -386,7 +386,7 @@ export const Login: React.FC = () => { {IS_MOBILE_ETH_WALLET ? null : ( { )} { const signTransaction = useSignTransaction() const api = useAPI() const { isLogined, prevAddress } = useAccountStatus() - const { address, walletType, pubkey } = useAccount() - const provider = useProvider() + const { address, walletType } = useAccount() const prevState = routerLocation.state?.prevState const isRedirectFromSigner = !!routerLocation.state?.signature || !!routerLocation.state?.tx @@ -160,16 +156,10 @@ export const Transfer: React.FC = () => { ) useEffect(() => { - if ( - prevAddress && - address && - prevAddress !== address && - provider instanceof UnipassProvider - ) { - provider.terminate() + if (prevAddress && address && prevAddress !== address) { history.replace(RoutePath.NFT) } - }, [prevAddress, address, provider, history]) + }, [prevAddress, address, history]) const ckbAddressType = useMemo(() => { return verifyAddress(ckbAddress, address) @@ -329,30 +319,11 @@ export const Transfer: React.FC = () => { throw new Error(err) }) - if (walletType === WalletType.Unipass) { - const { signature } = routerLocation.state ?? {} - if (signature) { - await api.transfer(id, tx, sentAddress, signature).catch((err) => { - stopTranfer(false, FailedMessage.TranferFail) - console.log(err) - throw err - }) - } else { - const url = `${location.origin}${RoutePath.Unipass}` - location.href = generateUnipassSignTxUrl(url, url, pubkey, signTx, { - uuid: id, - ckbAddress: sentAddress, - }) - return - } - } else { - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - await api.transfer(id, signTx, sentAddress).catch((err) => { - stopTranfer(false, FailedMessage.TranferFail) - console.log(err) - throw err - }) - } + await api.transfer(id, signTx, sentAddress).catch((err) => { + stopTranfer(false, FailedMessage.TranferFail) + console.log(err) + throw err + }) } catch (error) { console.log(error) return @@ -366,7 +337,6 @@ export const Transfer: React.FC = () => { api, walletType, routerLocation.state, - pubkey, stopTranfer, address, nftDetail, diff --git a/src/views/Unipass/index.tsx b/src/views/Unipass/index.tsx deleted file mode 100644 index f60aaf17..00000000 --- a/src/views/Unipass/index.tsx +++ /dev/null @@ -1,128 +0,0 @@ -import React, { useEffect } from 'react' -import { useHistory } from 'react-router-dom' -import { useSetAccount, WalletType } from '../../hooks/useAccount' -import { useProfile } from '../../hooks/useProfile' -import { useRouteQuery } from '../../hooks/useRouteQuery' -import { - UnipassAction, - UnipassResponse, - UnipassLoginData, - UnipassSignData, -} from '../../models/unipass' -import { pubkeyToAddress } from '../../pw/UnipassProvider' -import { RoutePath } from '../../routes' -import { UnipassConfig } from '../../utils' - -export const Unipass: React.FC = () => { - const action = useRouteQuery('action', UnipassAction.Login) - const ret = useRouteQuery('unipass_ret', '{}') - const unipassInfo: UnipassResponse = JSON.parse(ret) - const history = useHistory() - const setUnipassAccount = useSetAccount() - const { setProfile, profile } = useProfile() - const ps = useRouteQuery('prev_state', '{}') - const prevState = JSON.parse(ps) - const redirectUri = useRouteQuery('redirect', '') - useEffect(() => { - const { code } = unipassInfo - switch (action) { - case UnipassAction.Login: { - UnipassConfig.clear() - if (code !== 200 && code !== 401) { - history.replace(redirectUri || RoutePath.Login) - break - } - const data = unipassInfo?.data as UnipassLoginData - const addr = pubkeyToAddress(data.pubkey) - const pubkey = data.pubkey - setUnipassAccount({ - email: data.email, - pubkey, - address: addr, - walletType: WalletType.Unipass, - }) - history.replace(redirectUri || RoutePath.NFTs) - break - } - case UnipassAction.Sign: { - UnipassConfig.clear() - if (code !== 200 && code !== 401) { - history.replace(redirectUri || RoutePath.NFTs) - break - } - const data = unipassInfo?.data as UnipassSignData - const addr = pubkeyToAddress(data.pubkey) - setUnipassAccount({ - pubkey: data.pubkey, - address: addr, - walletType: WalletType.Unipass, - }) - if (code === 200) { - setProfile({ - auth: `0x01${data.sig.replace('0x', '')}`, - }) - } - history.replace(redirectUri ?? RoutePath.NFTs) - break - } - case UnipassAction.SignTx: { - const id = prevState.uuid as string - if (code !== 200) { - history.replace(`/transfer/${id}`) - break - } - const data = unipassInfo?.data as UnipassSignData - history.replace(`/transfer/${id}`, { - signature: `0x01${data.sig.replace('0x', '')}`, - prevState, - }) - break - } - case UnipassAction.Redeem: { - const id = prevState.uuid as string - const prevPath = prevState.prevPathname as string - if (code !== 200) { - history.replace(prevPath) - break - } - const data = unipassInfo?.data as UnipassSignData - const state: Record = { - signature: `0x01${data.sig.replace('0x', '')}`, - } - if (prevState.customData) { - state.customData = JSON.parse( - decodeURIComponent(prevState.customData) || '{}' - ) - } - history.replace(`${RoutePath.RedeemResult}/${id}`, state) - break - } - case UnipassAction.RedEnvelope: { - const data = unipassInfo?.data as UnipassSignData - if (code === 200) { - history.replace(RoutePath.RedEnvelope, { - signature: `0x01${data.sig.replace('0x', '')}`, - prevState, - }) - break - } - history.replace(RoutePath.RedEnvelope, { - prevState, - }) - break - } - default: - break - } - }, [ - unipassInfo, - action, - history, - setProfile, - setUnipassAccount, - profile, - prevState, - redirectUri, - ]) - return null -} diff --git a/yarn.lock b/yarn.lock index fc68dbc7..6c863a4c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -20,6 +20,13 @@ dependencies: "@babel/highlight" "^7.12.13" +"@babel/code-frame@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.7.tgz#44416b6bd7624b998f5b1af5d470856c40138789" + integrity sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg== + dependencies: + "@babel/highlight" "^7.16.7" + "@babel/compat-data@^7.12.1", "@babel/compat-data@^7.13.11", "@babel/compat-data@^7.13.15", "@babel/compat-data@^7.13.8": version "7.13.15" resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.13.15.tgz" @@ -77,12 +84,28 @@ jsesc "^2.5.1" source-map "^0.5.0" +"@babel/generator@^7.17.3": + version "7.17.3" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.17.3.tgz#a2c30b0c4f89858cb87050c3ffdfd36bdf443200" + integrity sha512-+R6Dctil/MgUsZsZAkYgK+ADNSZzJRRy0TvY65T71z/CR854xHQ1EweBYXdfT+HNeN7w0cSJJEzgxZMv40pxsg== + dependencies: + "@babel/types" "^7.17.0" + jsesc "^2.5.1" + source-map "^0.5.0" + "@babel/helper-annotate-as-pure@^7.0.0", "@babel/helper-annotate-as-pure@^7.10.4", "@babel/helper-annotate-as-pure@^7.12.13": version "7.12.13" resolved "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz" dependencies: "@babel/types" "^7.12.13" +"@babel/helper-annotate-as-pure@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz#bb2339a7534a9c128e3102024c60760a3a7f3862" + integrity sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw== + dependencies: + "@babel/types" "^7.16.7" + "@babel/helper-builder-binary-assignment-operator-visitor@^7.12.13": version "7.12.13" resolved "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.12.13.tgz" @@ -109,6 +132,19 @@ "@babel/helper-replace-supers" "^7.13.0" "@babel/helper-split-export-declaration" "^7.12.13" +"@babel/helper-create-class-features-plugin@^7.16.7": + version "7.17.1" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.1.tgz#9699f14a88833a7e055ce57dcd3ffdcd25186b21" + integrity sha512-JBdSr/LtyYIno/pNnJ75lBcqc3Z1XXujzPanHqjvvrhOA+DTceTFuJi8XjmWTZh4r3fsdfqaCMN0iZemdkxZHQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.7" + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-function-name" "^7.16.7" + "@babel/helper-member-expression-to-functions" "^7.16.7" + "@babel/helper-optimise-call-expression" "^7.16.7" + "@babel/helper-replace-supers" "^7.16.7" + "@babel/helper-split-export-declaration" "^7.16.7" + "@babel/helper-create-regexp-features-plugin@^7.12.13": version "7.12.17" resolved "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.17.tgz" @@ -129,6 +165,13 @@ resolve "^1.14.2" semver "^6.1.2" +"@babel/helper-environment-visitor@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz#ff484094a839bde9d89cd63cba017d7aae80ecd7" + integrity sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag== + dependencies: + "@babel/types" "^7.16.7" + "@babel/helper-explode-assignable-expression@^7.12.13": version "7.13.0" resolved "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.13.0.tgz" @@ -143,12 +186,28 @@ "@babel/template" "^7.12.13" "@babel/types" "^7.12.13" +"@babel/helper-function-name@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz#f1ec51551fb1c8956bc8dd95f38523b6cf375f8f" + integrity sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA== + dependencies: + "@babel/helper-get-function-arity" "^7.16.7" + "@babel/template" "^7.16.7" + "@babel/types" "^7.16.7" + "@babel/helper-get-function-arity@^7.12.13": version "7.12.13" resolved "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz" dependencies: "@babel/types" "^7.12.13" +"@babel/helper-get-function-arity@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz#ea08ac753117a669f1508ba06ebcc49156387419" + integrity sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw== + dependencies: + "@babel/types" "^7.16.7" + "@babel/helper-hoist-variables@^7.13.0": version "7.13.0" resolved "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.13.0.tgz" @@ -156,12 +215,26 @@ "@babel/traverse" "^7.13.0" "@babel/types" "^7.13.0" +"@babel/helper-hoist-variables@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz#86bcb19a77a509c7b77d0e22323ef588fa58c246" + integrity sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg== + dependencies: + "@babel/types" "^7.16.7" + "@babel/helper-member-expression-to-functions@^7.13.0", "@babel/helper-member-expression-to-functions@^7.13.12": version "7.13.12" resolved "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz" dependencies: "@babel/types" "^7.13.12" +"@babel/helper-member-expression-to-functions@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.7.tgz#42b9ca4b2b200123c3b7e726b0ae5153924905b0" + integrity sha512-VtJ/65tYiU/6AbMTDwyoXGPKHgTsfRarivm+YbB5uAzKUyuPjgZSgAFeG87FCigc7KNHu2Pegh1XIT3lXjvz3Q== + dependencies: + "@babel/types" "^7.16.7" + "@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.12.1", "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.13.12": version "7.13.12" resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.13.12.tgz" @@ -187,10 +260,22 @@ dependencies: "@babel/types" "^7.12.13" +"@babel/helper-optimise-call-expression@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz#a34e3560605abbd31a18546bd2aad3e6d9a174f2" + integrity sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w== + dependencies: + "@babel/types" "^7.16.7" + "@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": version "7.13.0" resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz" +"@babel/helper-plugin-utils@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz#aa3a8ab4c3cceff8e65eb9e73d87dc4ff320b2f5" + integrity sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA== + "@babel/helper-remap-async-to-generator@^7.13.0": version "7.13.0" resolved "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.13.0.tgz" @@ -208,6 +293,17 @@ "@babel/traverse" "^7.13.0" "@babel/types" "^7.13.12" +"@babel/helper-replace-supers@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz#e9f5f5f32ac90429c1a4bdec0f231ef0c2838ab1" + integrity sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw== + dependencies: + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-member-expression-to-functions" "^7.16.7" + "@babel/helper-optimise-call-expression" "^7.16.7" + "@babel/traverse" "^7.16.7" + "@babel/types" "^7.16.7" + "@babel/helper-simple-access@^7.12.13", "@babel/helper-simple-access@^7.13.12": version "7.13.12" resolved "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.13.12.tgz" @@ -226,10 +322,22 @@ dependencies: "@babel/types" "^7.12.13" +"@babel/helper-split-export-declaration@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz#0b648c0c42da9d3920d85ad585f2778620b8726b" + integrity sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw== + dependencies: + "@babel/types" "^7.16.7" + "@babel/helper-validator-identifier@^7.12.11": version "7.12.11" resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz" +"@babel/helper-validator-identifier@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad" + integrity sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw== + "@babel/helper-validator-option@^7.12.1", "@babel/helper-validator-option@^7.12.17": version "7.12.17" resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz" @@ -259,6 +367,15 @@ chalk "^2.0.0" js-tokens "^4.0.0" +"@babel/highlight@^7.16.7": + version "7.16.10" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.16.10.tgz#744f2eb81579d6eea753c227b0f570ad785aba88" + integrity sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw== + dependencies: + "@babel/helper-validator-identifier" "^7.16.7" + chalk "^2.0.0" + js-tokens "^4.0.0" + "@babel/parser@^7.1.0", "@babel/parser@^7.12.3", "@babel/parser@^7.13.15", "@babel/parser@^7.7.0": version "7.13.15" resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.13.15.tgz" @@ -267,6 +384,11 @@ version "7.13.13" resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.13.13.tgz" +"@babel/parser@^7.16.7", "@babel/parser@^7.17.3": + version "7.17.3" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.17.3.tgz#b07702b982990bf6fdc1da5049a23fece4c5c3d0" + integrity sha512-7yJPvPV+ESz2IUTPbOL+YkIGyCqOyNIzdguKQuJGnH7bg1WTIifuM21YqokFt/THWh1AkCRn9IgoykTRCBVpzA== + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.13.12": version "7.13.12" resolved "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.13.12.tgz" @@ -297,6 +419,14 @@ "@babel/helper-create-class-features-plugin" "^7.13.0" "@babel/helper-plugin-utils" "^7.13.0" +"@babel/plugin-proposal-class-properties@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz#925cad7b3b1a2fcea7e59ecc8eb5954f961f91b0" + integrity sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-proposal-decorators@7.12.1": version "7.12.1" resolved "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.12.1.tgz" @@ -1040,6 +1170,15 @@ "@babel/parser" "^7.12.13" "@babel/types" "^7.12.13" +"@babel/template@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.7.tgz#8d126c8701fde4d66b264b3eba3d96f07666d155" + integrity sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w== + dependencies: + "@babel/code-frame" "^7.16.7" + "@babel/parser" "^7.16.7" + "@babel/types" "^7.16.7" + "@babel/traverse@^7.1.0", "@babel/traverse@^7.12.1", "@babel/traverse@^7.13.15", "@babel/traverse@^7.7.0": version "7.13.15" resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.13.15.tgz" @@ -1066,6 +1205,22 @@ debug "^4.1.0" globals "^11.1.0" +"@babel/traverse@^7.16.7": + version "7.17.3" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.17.3.tgz#0ae0f15b27d9a92ba1f2263358ea7c4e7db47b57" + integrity sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw== + dependencies: + "@babel/code-frame" "^7.16.7" + "@babel/generator" "^7.17.3" + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-function-name" "^7.16.7" + "@babel/helper-hoist-variables" "^7.16.7" + "@babel/helper-split-export-declaration" "^7.16.7" + "@babel/parser" "^7.17.3" + "@babel/types" "^7.17.0" + debug "^4.1.0" + globals "^11.1.0" + "@babel/types@^7.0.0", "@babel/types@^7.12.1", "@babel/types@^7.12.13", "@babel/types@^7.12.6", "@babel/types@^7.13.0", "@babel/types@^7.13.12", "@babel/types@^7.13.13", "@babel/types@^7.13.14", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.7.0": version "7.13.14" resolved "https://registry.npmjs.org/@babel/types/-/types-7.13.14.tgz" @@ -1074,6 +1229,14 @@ lodash "^4.17.19" to-fast-properties "^2.0.0" +"@babel/types@^7.16.7", "@babel/types@^7.17.0": + version "7.17.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.17.0.tgz#a826e368bccb6b3d84acd76acad5c0d87342390b" + integrity sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw== + dependencies: + "@babel/helper-validator-identifier" "^7.16.7" + to-fast-properties "^2.0.0" + "@bcoe/v8-coverage@^0.2.3": version "0.2.3" resolved "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz" @@ -2189,15 +2352,16 @@ "@types/yargs" "^15.0.0" chalk "^4.0.0" -"@lay2/pw-core@0.4.0-alpha.8": - version "0.4.0-alpha.8" - resolved "https://registry.npmjs.org/@lay2/pw-core/-/pw-core-0.4.0-alpha.8.tgz" +"@lay2/pw-core@0.4.0-alpha.13", "@lay2/pw-core@^0.4.0-alpha.13": + version "0.4.0-alpha.13" + resolved "https://registry.yarnpkg.com/@lay2/pw-core/-/pw-core-0.4.0-alpha.13.tgz#8e5978288aa0a5e5f063826956bb7963dfba274e" + integrity sha512-2dBH2lResdhmqb6rpnK4hkEYrwhGSqgTd1RmPpXWzcce5yFSfbtPHVzm3Vex3U956+vJZtPxvQmnMXegq6/aCw== dependencies: - "@nervosnetwork/ckb-sdk-utils" "^0.41.1" + "@nervosnetwork/ckb-sdk-utils" "0.101.0" "@scatterjs/core" "^2.7.53" "@scatterjs/eosjs2" "^1.5.35" axios "^0.19.2" - bech32 "^1.1.4" + bech32 "2.0.0" blake2b "^2.1.3" bs58 "^4.0.1" cross-fetch "^3.1.4" @@ -2254,24 +2418,11 @@ jsbi "3.1.3" tslib "2.3.1" -"@nervosnetwork/ckb-sdk-utils@^0.41.1": - version "0.41.1" - resolved "https://registry.npmjs.org/@nervosnetwork/ckb-sdk-utils/-/ckb-sdk-utils-0.41.1.tgz" - dependencies: - "@nervosnetwork/ckb-types" "0.41.1" - elliptic "6.5.4" - jsbi "3.1.3" - tslib "2.0.1" - "@nervosnetwork/ckb-types@0.101.0": version "0.101.0" resolved "https://registry.yarnpkg.com/@nervosnetwork/ckb-types/-/ckb-types-0.101.0.tgz#84c5f590bd8e2e06fdf56bab0c09995da0ada4ca" integrity sha512-J82ANP44TvdYY1fCEom9RodMIFJYCb2oteSCU1TD9bY3tZZFrhRi+Muz0qh6f9wrR5F3NzdXQD8wJoPZ3Exr9Q== -"@nervosnetwork/ckb-types@0.41.1": - version "0.41.1" - resolved "https://registry.npmjs.org/@nervosnetwork/ckb-types/-/ckb-types-0.41.1.tgz" - "@nodelib/fs.scandir@2.1.4": version "2.1.4" resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz" @@ -3583,6 +3734,13 @@ axios@^0.19.2: dependencies: follow-redirects "1.5.10" +axios@^0.24.0: + version "0.24.0" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.24.0.tgz#804e6fa1e4b9c5288501dd9dff56a7a0940d20d6" + integrity sha512-Q6cWsys88HoPgAaFAVUb0WpPk0O8iTeisR9IMqy9G8AbO4NlpVknrnQS03zzF9PGAWgO3cgletO3VjV/P7VztA== + dependencies: + follow-redirects "^1.14.4" + axobject-query@^2.2.0: version "2.2.0" resolved "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz" @@ -3814,10 +3972,6 @@ bech32@2.0.0: resolved "https://registry.yarnpkg.com/bech32/-/bech32-2.0.0.tgz#078d3686535075c8c79709f054b1b226a133b355" integrity sha512-LcknSilhIGatDAsY1ak2I8VtGaHNhgMSYVxFrGLXv+xLHytaKZKcaUJJUE7qmBr7h33o5YQwP55pMI0xmkpJwg== -bech32@^1.1.4: - version "1.1.4" - resolved "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz" - bfj@^7.0.2: version "7.0.2" resolved "https://registry.npmjs.org/bfj/-/bfj-7.0.2.tgz" @@ -6497,6 +6651,11 @@ follow-redirects@^1.0.0, follow-redirects@^1.14.0: resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.4.tgz" integrity sha512-zwGkiSXC1MUJG/qmeIFH2HBJx9u0V46QGUe3YR1fXG8bXQxq7fLj0RjLZQ5nubr9qNJUZrH+xUcwXEoXNpfS+g== +follow-redirects@^1.14.4: + version "1.14.9" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.9.tgz#dd4ea157de7bfaf9ea9b3fbd85aa16951f78d8d7" + integrity sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w== + for-in@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz" @@ -12447,10 +12606,6 @@ tsconfig-paths@^3.9.0: minimist "^1.2.0" strip-bom "^3.0.0" -tslib@2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/tslib/-/tslib-2.0.1.tgz" - tslib@2.3.1, tslib@^2.1.0: version "2.3.1" resolved "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz" @@ -12661,6 +12816,20 @@ unset-value@^1.0.0: has-value "^0.3.1" isobject "^3.0.0" +up-ckb-alpha-test@0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/up-ckb-alpha-test/-/up-ckb-alpha-test-0.1.5.tgz#1f5f6463cbb1bbb27d494fab780068515458737d" + integrity sha512-vadSbprDGlFIj5jJghyDji6Y0/vIKGpGj/DXUoTAiMQKjQ+u57ISSlriwsqUhBNuH1M4YB83gqRa+eKkCe9Mbw== + dependencies: + "@lay2/pw-core" "^0.4.0-alpha.13" + axios "^0.24.0" + up-core-test "^0.1.5" + +up-core-test@^0.1.5, up-core-test@^0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/up-core-test/-/up-core-test-0.1.6.tgz#46d79bdbac6cc0ad26c47f7856ee893c77560f6b" + integrity sha512-AhFnaYt/diMJoL2rwPYmVG9BPjq6ShpWC1PaR9fTCoIgUKbOUjSTxLXG19vXasjsyR3JihTHMjGrWUKB/TPZgQ== + upath@^1.1.1, upath@^1.1.2, upath@^1.2.0: version "1.2.0" resolved "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz" From 995c37a75a606c5679dd234082dd8e4dad07c5a7 Mon Sep 17 00:00:00 2001 From: yuche Date: Mon, 21 Feb 2022 16:12:35 +0800 Subject: [PATCH 02/37] feat: hide unipass login button if is not available --- src/constants/env.ts | 5 +++- src/views/AddressCollector/index.tsx | 24 ++++++++++------- src/views/Claim/index.tsx | 24 ++++++++++------- src/views/Login/index.tsx | 39 +++++++++++++++------------- 4 files changed, 55 insertions(+), 37 deletions(-) diff --git a/src/constants/env.ts b/src/constants/env.ts index 73066073..aaa09aeb 100644 --- a/src/constants/env.ts +++ b/src/constants/env.ts @@ -52,7 +52,7 @@ export const IS_MOBILE = /Android|iPhone|iPad|iPod|BlackBerry|Windows Phone/i ) !== null -const IS_STANDALONE = +export const IS_STANDALONE = window.matchMedia('(display-mode: standalone)').matches || (window.navigator as any).standalone || document.referrer.includes('android-app://') @@ -60,6 +60,9 @@ const IS_STANDALONE = export const IS_MOBILE_ETH_WALLET = (w.ethereum || w.web3) && IS_MOBILE && IS_STANDALONE +export const IS_UNIPASS_NOT_AVAILABLE = + IS_WEXIN || IS_MOBILE_ETH_WALLET || IS_MOBILE_ETH_WALLET + export const IS_TOKEN_POCKET = navigator.userAgent.includes('TokenPocket') export const IS_MAC_SAFARI = IS_SAFARI && !IS_IPHONE diff --git a/src/views/AddressCollector/index.tsx b/src/views/AddressCollector/index.tsx index 4d1866a7..8c406c5b 100644 --- a/src/views/AddressCollector/index.tsx +++ b/src/views/AddressCollector/index.tsx @@ -5,7 +5,11 @@ import { ReactComponent as AddressesSvg } from '../../assets/svg/address.svg' import { ReactComponent as AddrSuccess } from '../../assets/svg/addr-success.svg' import { ReactComponent as AddrDup } from '../../assets/svg/addr-dup.svg' import detectEthereumProvider from '@metamask/detect-provider' -import { IS_IMTOKEN, IS_MOBILE_ETH_WALLET } from '../../constants' +import { + IS_IMTOKEN, + IS_MOBILE_ETH_WALLET, + IS_UNIPASS_NOT_AVAILABLE, +} from '../../constants' import { useGetAndSetAuth, useProfile } from '../../hooks/useProfile' import { Redirect, useHistory, useParams } from 'react-router-dom' import { ReactComponent as ImtokenSvg } from '../../assets/svg/imtoken.svg' @@ -346,14 +350,16 @@ export const AddressCollector: React.FC = () => { )} - - {t('login.connect.unipass')} - + {IS_UNIPASS_NOT_AVAILABLE ? null : ( + + {t('login.connect.unipass')} + + )} { )} - - {t('login.connect.unipass')} - + {IS_UNIPASS_NOT_AVAILABLE ? null : ( + + {t('login.connect.unipass')} + + )} { )} - - - {t('login.connect.unipass')} - {t('login.connect.or-use-email')} - - + {IS_UNIPASS_NOT_AVAILABLE ? null : ( + + + {t('login.connect.unipass')} + {t('login.connect.or-use-email')} + + + )} Date: Tue, 22 Feb 2022 10:14:37 +0800 Subject: [PATCH 03/37] feat: unipass v3 --- src/components/Intro/index.tsx | 7 ++++-- src/constants/env.ts | 8 ++++++ src/hooks/useAccount.ts | 45 ++++++++++++++++++++++++++++------ src/hooks/useProfile.ts | 19 ++++++++------ 4 files changed, 61 insertions(+), 18 deletions(-) diff --git a/src/components/Intro/index.tsx b/src/components/Intro/index.tsx index 46312b99..00106165 100644 --- a/src/components/Intro/index.tsx +++ b/src/components/Intro/index.tsx @@ -5,6 +5,7 @@ import { useHistory } from 'react-router-dom' import { RoutePath } from '../../routes' import { getHelpCenterUrl } from '../../data/help' import { useAccount, useAPI } from '../../hooks/useAccount' +import { useGetAndSetAuth } from '../../hooks/useProfile' export interface IntroProps { show: boolean @@ -18,6 +19,7 @@ export const Intro: React.FC = ({ show }) => { const api = useAPI() const { address } = useAccount() const history = useHistory() + const getAuth = useGetAndSetAuth() const steps: IStep[] = useMemo(() => { return [ { @@ -90,7 +92,7 @@ export const Intro: React.FC = ({ show }) => { lang={i18n.language === 'en' ? 'en' : 'zh'} nextText={t('guide.next')} okText={t('guide.done')} - afterStepChange={(stepIndex) => { + afterStepChange={async (stepIndex) => { if (stepIndex === 1) { requestAnimationFrame(() => { // eslint-disable-next-line @typescript-eslint/no-non-null-assertion @@ -110,7 +112,8 @@ export const Intro: React.FC = ({ show }) => { modal.style.borderStyle = 'none' } }) - api.setProfile({ guide_finished: 'true' }).catch(Boolean) + const auth = await getAuth() + api.setProfile({ guide_finished: 'true' }, { auth }).catch(Boolean) } }} /> diff --git a/src/constants/env.ts b/src/constants/env.ts index aaa09aeb..12149e67 100644 --- a/src/constants/env.ts +++ b/src/constants/env.ts @@ -123,8 +123,16 @@ if (IS_MAINNET) { UP.config({ domain: 'app.unipass.id', }) + UPCKB.config({ + upLockCodeHash: UNIPASS_CODE_HASH, + upSnapshotUrl: 'https://aggregator.unipass.id/snapshot/', + }) } else { UP.config({ domain: 't.app.unipass.id', }) + UPCKB.config({ + upLockCodeHash: UNIPASS_CODE_HASH, + upSnapshotUrl: 'https://t.aggregator.unipass.id/dev/snapshot/', + }) } diff --git a/src/hooks/useAccount.ts b/src/hooks/useAccount.ts index e8958291..381f7539 100644 --- a/src/hooks/useAccount.ts +++ b/src/hooks/useAccount.ts @@ -1,6 +1,16 @@ import { atom, useAtom } from 'jotai' import { loginWithRedirect } from '@nervina-labs/flashsigner' -import { Address, DefaultSigner, Provider, Transaction } from '@lay2/pw-core' +import { + Address, + CellDep, + DefaultSigner, + Provider, + Transaction, + OutPoint, + Builder, + Amount, + AmountUnit, +} from '@lay2/pw-core' import { atomWithStorage, useAtomValue, useUpdateAtom } from 'jotai/utils' import { useCallback, useMemo } from 'react' import dayjs from 'dayjs' @@ -17,6 +27,7 @@ import { RoutePath } from '../routes' import { buildFlashsignerOptions } from '../utils' import { ServerWalletAPI } from '../apis/ServerWalletAPI' import { UPCoreSimpleProvier } from '../pw/UProvider' +import { useProfile } from './useProfile' export enum WalletType { Unipass = 'Unipass', @@ -25,7 +36,7 @@ export enum WalletType { Flashsigner = 'flashsigner', } -export const UNIPASS_ACCOUNT_KEY = 'unipass_account_key_v2' +export const UNIPASS_ACCOUNT_KEY = 'unipass_account_key_v3' export interface UnipassAccount { address: string @@ -120,15 +131,16 @@ export function useSetAccount() { export function useLogout() { const setAccount = useSetAccount() const [provider, setProvider] = useAtom(providerAtom) - + const { setProfile } = useProfile() return useCallback( (h?: History) => { + setProfile(null) setProvider(null) setAccount(null) // localStorage.clear() provider?.close() }, - [provider, setAccount, setProvider] + [provider, setAccount, setProvider, setProfile] ) } @@ -156,7 +168,6 @@ export function useLogin() { ) const loginUnipass = useCallback(async () => { - // eslint-disable-next-line no-debugger const account = await UP.connect({ email: true }) const address = UPCKB.getCKBAddress(account.username) setAccount({ @@ -221,11 +232,29 @@ export function useSignTransaction() { const { loginMetamask } = useLogin() const signUnipass = useCallback(async (tx: Transaction) => { UP.initPop() - const acc = await UP.connect() - const provider = new UPCoreSimpleProvier(acc.username, UNIPASS_CODE_HASH) - const signer = new DefaultSigner(provider) + tx = new Transaction(tx.raw, [Builder.WITNESS_ARGS.RawSecp256k1]) + const account = await UP.connect() + const oldCellDeps = tx.raw.cellDeps.map( + (cd) => + new CellDep( + cd.depType, + new OutPoint(cd.outPoint.txHash, cd.outPoint.index) + ) + ) + const { outputs } = tx.raw + const changeOutput = outputs[outputs.length - 1] + changeOutput.capacity = changeOutput.capacity.sub( + new Amount('1000', AmountUnit.shannon) + ) + tx.raw.cellDeps = [] + const provider = new UPCoreSimpleProvier( + account.username, + UNIPASS_CODE_HASH + ) const { usernameHash } = provider + const signer = new DefaultSigner(provider) const signedTx = await signer.sign(tx) + signedTx.raw.cellDeps = oldCellDeps const assetLockProof = await fetchAssetLockProof(usernameHash) const completedSignedTx = completeTxWithProof( signedTx, diff --git a/src/hooks/useProfile.ts b/src/hooks/useProfile.ts index f3d778c1..7a83033e 100644 --- a/src/hooks/useProfile.ts +++ b/src/hooks/useProfile.ts @@ -32,8 +32,8 @@ export interface Auths { [key: string]: Profile } -const profileAtom = atomWithStorage( - 'mibao_account_profile_v2', +export const profileAtom = atomWithStorage( + 'mibao_account_profile_v3', null ) @@ -42,16 +42,19 @@ export function useProfile() { const [profile, _setProfile] = useAtom(profileAtom) const setProfile = useCallback( - (p: Partial, addr = '') => { + (p: Partial | null, addr = '') => { return _setProfile((prevProfile) => { const auth = prevProfile?.[address || addr] return { ...prevProfile, ...{ - [address || addr]: { - ...auth, - ...p, - }, + [address || addr]: + p === null + ? null + : { + ...auth, + ...p, + }, }, } }) @@ -127,7 +130,7 @@ export function useGetAndSetAuth(): () => Promise { address: addr, message, signature, - pubkey: account?.pubkey, + pub_key: account?.pubkey, key_type: 'RsaPubkey', username: account?.username, } From 26aebc43d07a0977e73d17ef395ba3d189137d53 Mon Sep 17 00:00:00 2001 From: yuche Date: Tue, 22 Feb 2022 10:46:00 +0800 Subject: [PATCH 04/37] feat: support cota transfer --- src/hooks/useAccount.ts | 10 +++++++++- src/pw/toPwTransaction.ts | 20 ++++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/src/hooks/useAccount.ts b/src/hooks/useAccount.ts index 381f7539..ea955693 100644 --- a/src/hooks/useAccount.ts +++ b/src/hooks/useAccount.ts @@ -28,6 +28,7 @@ import { buildFlashsignerOptions } from '../utils' import { ServerWalletAPI } from '../apis/ServerWalletAPI' import { UPCoreSimpleProvier } from '../pw/UProvider' import { useProfile } from './useProfile' +import { addWitnessArgType } from '../pw/toPwTransaction' export enum WalletType { Unipass = 'Unipass', @@ -232,7 +233,14 @@ export function useSignTransaction() { const { loginMetamask } = useLogin() const signUnipass = useCallback(async (tx: Transaction) => { UP.initPop() - tx = new Transaction(tx.raw, [Builder.WITNESS_ARGS.RawSecp256k1]) + const witnessArg = addWitnessArgType( + { + ...Builder.WITNESS_ARGS.RawSecp256k1, + }, + tx.witnesses[0] + ) + + tx = new Transaction(tx.raw, [witnessArg]) const account = await UP.connect() const oldCellDeps = tx.raw.cellDeps.map( (cd) => diff --git a/src/pw/toPwTransaction.ts b/src/pw/toPwTransaction.ts index 115febcd..60a215be 100644 --- a/src/pw/toPwTransaction.ts +++ b/src/pw/toPwTransaction.ts @@ -35,6 +35,26 @@ const UnipassWitnessArgs = { output_type: '', } +export const addWitnessArgType = (wa: typeof Builder.WITNESS_ARGS.RawSecp256k1, witness: string) => { + const witnessArg = { + ...wa, + } + const oldWitnessArg = new core.WitnessArgs(new Reader(witness)) + const inputType = oldWitnessArg.getInputType() + const outputType = oldWitnessArg.getOutputType() + if (inputType.hasValue()) { + witnessArg.input_type = new Reader( + inputType.value().raw() + ).serializeJson() + } + if (outputType.hasValue()) { + witnessArg.output_type = new Reader( + outputType.value().raw() + ).serializeJson() + } + return witnessArg +} + export async function rawTransactionToPWTransaction( rawTx: RPC.RawTransaction, isUnipass = true From 009e7806cf7698e1c44fb54f31649429354b6cbf Mon Sep 17 00:00:00 2001 From: yuche Date: Tue, 22 Feb 2022 11:13:38 +0800 Subject: [PATCH 05/37] feat: disconnect unipass if logout --- src/hooks/useAccount.ts | 6 +++++- src/views/SendRedEnvelope/hooks/useSendRedEnvelope.tsx | 3 --- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/hooks/useAccount.ts b/src/hooks/useAccount.ts index ea955693..c829e20d 100644 --- a/src/hooks/useAccount.ts +++ b/src/hooks/useAccount.ts @@ -133,15 +133,19 @@ export function useLogout() { const setAccount = useSetAccount() const [provider, setProvider] = useAtom(providerAtom) const { setProfile } = useProfile() + const { walletType } = useAccount() return useCallback( (h?: History) => { setProfile(null) setProvider(null) setAccount(null) + if (walletType === WalletType.Unipass) { + UP.disconnect() + } // localStorage.clear() provider?.close() }, - [provider, setAccount, setProvider, setProfile] + [provider, setAccount, setProvider, setProfile, walletType] ) } diff --git a/src/views/SendRedEnvelope/hooks/useSendRedEnvelope.tsx b/src/views/SendRedEnvelope/hooks/useSendRedEnvelope.tsx index 8a069c35..a8f5bae8 100644 --- a/src/views/SendRedEnvelope/hooks/useSendRedEnvelope.tsx +++ b/src/views/SendRedEnvelope/hooks/useSendRedEnvelope.tsx @@ -44,9 +44,6 @@ export function useSendRedEnvelope() { signature! ) } - if (walletType === WalletType.Unipass) { - return signature ? data.tx : await signTransaction(data.tx) - } return await signTransaction(data.tx) }, [routeLocation.state, signTransaction, walletType] From 7455bb20da83054801e9910e2b1157cbb6d2afbd Mon Sep 17 00:00:00 2001 From: yuche Date: Tue, 22 Feb 2022 13:15:37 +0800 Subject: [PATCH 06/37] chore: temp set transation fee --- src/hooks/useAccount.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/hooks/useAccount.ts b/src/hooks/useAccount.ts index c829e20d..1c68359e 100644 --- a/src/hooks/useAccount.ts +++ b/src/hooks/useAccount.ts @@ -256,7 +256,7 @@ export function useSignTransaction() { const { outputs } = tx.raw const changeOutput = outputs[outputs.length - 1] changeOutput.capacity = changeOutput.capacity.sub( - new Amount('1000', AmountUnit.shannon) + new Amount('3500', AmountUnit.shannon) ) tx.raw.cellDeps = [] const provider = new UPCoreSimpleProvier( From 77c6e208087fdb0dcee233d59206524c394933f6 Mon Sep 17 00:00:00 2001 From: yuche Date: Tue, 22 Feb 2022 15:01:20 +0800 Subject: [PATCH 07/37] refactor: clear session storage when logout --- src/hooks/useAccount.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/hooks/useAccount.ts b/src/hooks/useAccount.ts index 1c68359e..876633e0 100644 --- a/src/hooks/useAccount.ts +++ b/src/hooks/useAccount.ts @@ -140,6 +140,7 @@ export function useLogout() { setProvider(null) setAccount(null) if (walletType === WalletType.Unipass) { + sessionStorage.clear() UP.disconnect() } // localStorage.clear() From 2685624182838cc161056885e98198c20fd5e20a Mon Sep 17 00:00:00 2001 From: yuche Date: Tue, 22 Feb 2022 17:12:07 +0800 Subject: [PATCH 08/37] fix: sign message --- src/hooks/useProfile.ts | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/hooks/useProfile.ts b/src/hooks/useProfile.ts index 7a83033e..87279a6a 100644 --- a/src/hooks/useProfile.ts +++ b/src/hooks/useProfile.ts @@ -66,7 +66,7 @@ export function useProfile() { if (profile == null) { return false } - return !!profile[address] + return !!profile[address]?.auth }, [address, profile]) return { @@ -84,13 +84,15 @@ export function createMessage() { } export function useGetAndSetAuth(): () => Promise { - const { profile, setProfile } = useProfile() + const { setProfile } = useProfile() const signMessage = useSignMessage() - const { address, walletType } = useAccount() + const { walletType } = useAccount() const { loginMetamask } = useLogin() return useAtomCallback( useCallback( - async (get) => { + async (get, set) => { + const address = get(accountAtom)?.address || '' + const profile = get(profileAtom) const auth = profile?.[address] let signature = auth?.auth let message = auth?.message @@ -142,7 +144,7 @@ export function useGetAndSetAuth(): () => Promise { signature, } }, - [signMessage, walletType, address, profile, setProfile, loginMetamask] + [signMessage, walletType, setProfile, loginMetamask] ) ) } From 315a2f841a3a1b76a7d371cc7160c6b4c4664e9b Mon Sep 17 00:00:00 2001 From: yuche Date: Wed, 23 Feb 2022 10:41:33 +0800 Subject: [PATCH 09/37] fix: not signing if logout --- src/routes/AccountChange.tsx | 49 ++++++++++++++++++------------------ 1 file changed, 25 insertions(+), 24 deletions(-) diff --git a/src/routes/AccountChange.tsx b/src/routes/AccountChange.tsx index d94c405d..5e27be74 100644 --- a/src/routes/AccountChange.tsx +++ b/src/routes/AccountChange.tsx @@ -1,5 +1,5 @@ /* eslint-disable @typescript-eslint/prefer-nullish-coalescing */ -import React, { useEffect, useRef } from 'react' +import React, { useCallback, useEffect, useRef } from 'react' import { useHistory, useLocation } from 'react-router-dom' import { useTranslation } from 'react-i18next' import { useGetAndSetAuth, useProfile } from '../hooks/useProfile' @@ -10,7 +10,6 @@ import { useConfirmDialog, } from '../hooks/useConfirmDialog' import { useWechatShare } from '../hooks/useWechat' -import { useToast } from '../hooks/useToast' const allowWithoutAuthList = new Set([ RoutePath.Explore, @@ -50,7 +49,6 @@ export const AccountChange: React.FC = ({ children }) => { const isSigning = useRef(false) const onOpenConfirm = useConfirmDialog() const onCloseConfirm = useCloseConfirmDialog() - const toast = useToast() const [t] = useTranslation('translations') const wechatShare = useWechatShare() useEffect(() => { @@ -63,6 +61,28 @@ export const AccountChange: React.FC = ({ children }) => { // eslint-disable-next-line react-hooks/exhaustive-deps }, []) + const signForVerify = useCallback(async () => { + isSigning.current = true + await onOpenConfirm({ + type: 'text', + title: t('auth.title'), + content: t('auth.content'), + okText: t('auth.ok'), + onConfirm: async () => { + try { + await getAuth() + if (WalletType.Flashsigner !== walletType) { + onCloseConfirm() + } + } catch (error) { + onCloseConfirm() + } finally { + isSigning.current = false + } + }, + }) + }, [getAuth, onCloseConfirm, onOpenConfirm, t, walletType]) + useEffect(() => { const pathInForceAuthList = forceAuthList.has( location.pathname + location.search @@ -80,23 +100,7 @@ export const AccountChange: React.FC = ({ children }) => { WalletType.Unipass === walletType || WalletType.Metamask === walletType ) { - isSigning.current = true - onOpenConfirm({ - type: 'text', - title: t('auth.title'), - content: t('auth.content'), - okText: t('auth.ok'), - onConfirm: async () => { - try { - await getAuth() - if (WalletType.Metamask === walletType) { - onCloseConfirm() - } - } catch (error) { - // - } - }, - }) + signForVerify() } } }, [ @@ -108,10 +112,7 @@ export const AccountChange: React.FC = ({ children }) => { isLogined, pubkey, t, - getAuth, - onOpenConfirm, - onCloseConfirm, - toast, + signForVerify, ]) return <>{children} From 86963e689d088823af0547533194dc4d7a75a877 Mon Sep 17 00:00:00 2001 From: yuche Date: Wed, 23 Feb 2022 14:46:36 +0800 Subject: [PATCH 10/37] fix: remove useless file --- src/constants/env.ts | 4 + src/pw/Sha256Hasher.ts | 33 ------ src/pw/UnipassProvider.ts | 226 -------------------------------------- src/pw/UnipassSigner.ts | 21 ---- 4 files changed, 4 insertions(+), 280 deletions(-) delete mode 100644 src/pw/Sha256Hasher.ts delete mode 100644 src/pw/UnipassProvider.ts delete mode 100644 src/pw/UnipassSigner.ts diff --git a/src/constants/env.ts b/src/constants/env.ts index 12149e67..fc65d860 100644 --- a/src/constants/env.ts +++ b/src/constants/env.ts @@ -2,6 +2,7 @@ import * as Bowser from 'bowser' import { Config } from '@nervina-labs/flashsigner' import UP from 'up-core-test' import UPCKB from 'up-ckb-alpha-test' +import PWCore, { ChainID, CHAIN_SPECS } from '@lay2/pw-core' type ChainType = 'mainnet' | 'testnet' @@ -136,3 +137,6 @@ if (IS_MAINNET) { upSnapshotUrl: 'https://t.aggregator.unipass.id/dev/snapshot/', }) } + +PWCore.chainId = IS_MAINNET ? ChainID.ckb : ChainID.ckb_testnet +PWCore.config = IS_MAINNET ? CHAIN_SPECS.Lina : CHAIN_SPECS.Aggron diff --git a/src/pw/Sha256Hasher.ts b/src/pw/Sha256Hasher.ts deleted file mode 100644 index edf11630..00000000 --- a/src/pw/Sha256Hasher.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { Hasher, Reader } from '@lay2/pw-core' -import { createHash } from 'crypto' - -export default class Sha256Hasher extends Hasher { - constructor() { - super(createHash('SHA256')) - } - - update(data: string | ArrayBuffer | Reader): Hasher { - let array: Buffer - if (data instanceof Reader) { - /** Reader type params not enter this branch, it's weired */ - array = Buffer.from(data.serializeJson().replace('0x', '')) - } else if (data instanceof ArrayBuffer) { - array = Buffer.from(new Uint8Array(data)) - } else if (typeof data === 'string') { - array = Buffer.from(data) - } else { - array = Buffer.from(new Uint8Array(new Reader(data).toArrayBuffer())) - } - this.h.update(array) - return this - } - - digest(): Reader { - const hex = '0x' + this.h.digest('hex').toString() - return new Reader(hex) - } - - reset(): void { - this.h = createHash('SHA256') - } -} diff --git a/src/pw/UnipassProvider.ts b/src/pw/UnipassProvider.ts deleted file mode 100644 index 6022119f..00000000 --- a/src/pw/UnipassProvider.ts +++ /dev/null @@ -1,226 +0,0 @@ -import PWCore, { - Address, - AddressType, - Platform, - Provider, - Script, - HashType, - AddressPrefix, - Blake2bHasher, - ChainID, - CHAIN_SPECS, -} from '@lay2/pw-core' -// import { unipassCache } from '../cache' -import { IS_MAINNET, PW_CODE_HASH } from '../constants' -import { UnipassAccount as Account, WalletType } from '../hooks/useAccount' - -type UP_ACT = 'UP-READY' | 'UP-LOGIN' | 'UP-SIGN' | 'UP-CLOSE' - -PWCore.chainId = IS_MAINNET ? ChainID.ckb : ChainID.ckb_testnet -PWCore.config = IS_MAINNET ? CHAIN_SPECS.Lina : CHAIN_SPECS.Aggron - -interface IFrame { - uniFrame: HTMLIFrameElement -} - -let uniFrame: HTMLIFrameElement - -function openIframe( - title: string, - url: string, - onload?: (this: GlobalEventHandlers, ev: Event) => unknown, - reject?: (r: any) => void -): IFrame { - if (uniFrame !== undefined) closeFrame(uniFrame) - document.body.style.margin = '0' - document.body.style.height = '100%' - document.body.style.overflow = 'hidden' - - const container = document.createElement('div') - container.style.visibility = 'hidden' - uniFrame = document.createElement('iframe') - uniFrame.src = url - uniFrame.style.visibility = 'hidden' - uniFrame.style.width = '100%' - uniFrame.style.height = '100vh' - uniFrame.style.zIndex = '2147483649' - uniFrame.style.position = 'absolute' - uniFrame.style.backgroundColor = 'rgba(0,0,0,.65)' - const { left, top } = document.documentElement.getBoundingClientRect() - uniFrame.style.left = `${left}px` - uniFrame.style.top = `${-top}px` - uniFrame.setAttribute('scrolling', 'no') - uniFrame.setAttribute('frameborder', 'no') - uniFrame.onload = function (this: GlobalEventHandlers, ev: Event) { - uniFrame.style.visibility = 'visible' - return onload?.call(this, ev) - } - - document.body.appendChild(uniFrame) - - return { uniFrame } -} - -export function pubkeyToAddress(pubkey: string): string { - const pubKeyBuffer = Buffer.from(pubkey.replace('0x', ''), 'hex') - const hashHex = new Blake2bHasher() - .update(pubKeyBuffer.buffer) - .digest() - .serializeJson() - .slice(0, 42) - - const script = new Script(PW_CODE_HASH, hashHex, HashType.type) - return script - .toAddress(IS_MAINNET ? AddressPrefix.Mainnet : AddressPrefix.Testnet) - .toCKBAddress() -} - -function closeFrame(frame: HTMLIFrameElement): void { - console.log('[UnipassProvider] close frame') - frame.remove() - document.body.style.removeProperty('overflow') -} - -export interface UnipassAccount { - pubkey: string - email: string -} -export interface UnipassMessage { - upact: UP_ACT - payload?: string | UnipassAccount -} - -export default class UnipassProvider extends Provider { - private _email: string | undefined - // eslint-disable-next-line prettier/prettier - private msgHandler: - // eslint-disable-next-line prettier/prettier - | ((this: Window, event: MessageEvent) => unknown) - | undefined - - private readonly setStorage: (account: Account) => void - - get email(): string | undefined { - return this._email - } - - constructor( - private readonly UNIPASS_BASE: string, - setStorage: (newValue: Account | null) => void - ) { - super(Platform.ckb) - this.setStorage = setStorage - } - - async connect(account: Account | null): Promise { - if (account !== null) { - const { address, email } = account - this.address = new Address(address, AddressType.ckb) - this._email = email - return await Promise.resolve(this) - } - - return await this.init() - } - - async init(): Promise { - return await new Promise((resolve, reject) => { - const { uniFrame } = openIframe( - 'login', - `${this.UNIPASS_BASE}/#/login`, - () => { - const msg: UnipassMessage = { - upact: 'UP-LOGIN', - } - uniFrame.contentWindow?.postMessage(msg, this.UNIPASS_BASE) - } - ) - - this.msgHandler = (event) => { - if (typeof event.data === 'object' && 'upact' in event.data) { - const msg = event.data as UnipassMessage - console.log(msg) - if (msg.upact === 'UP-LOGIN') { - const { pubkey, email } = msg.payload as UnipassAccount - const ckbAddress = pubkeyToAddress(pubkey) - this.address = new Address(ckbAddress, AddressType.ckb) - console.log('address', this.address) - this.setStorage({ - address: ckbAddress, - email: email, - walletType: WalletType.Unipass, - }) - this._email = email - this.msgHandler != null && - window.removeEventListener('message', this.msgHandler) - uniFrame !== undefined && closeFrame(uniFrame) - resolve(this) - } else if (msg.upact === 'UP-CLOSE') { - uniFrame !== undefined && closeFrame(uniFrame) - resolve(this) - } - } - } - window.addEventListener('message', this.msgHandler, false) - }) - } - - async sign(message: string): Promise { - console.log('[UnipassProvider] message to sign', message) - return await new Promise((resolve) => { - const { uniFrame } = openIframe('sign', `${this.UNIPASS_BASE}/#/sign`) - this.msgHandler = (event) => { - if (typeof event.data === 'object' && 'upact' in event.data) { - const msg = event.data as UnipassMessage - console.log('log', msg) - if (msg.upact === 'UP-SIGN') { - const signature = msg.payload as string - console.log('[Sign] signature: ', signature) - this.msgHandler != null && - window.removeEventListener('message', this.msgHandler) - uniFrame !== undefined && closeFrame(uniFrame) - resolve(`0x01${signature.replace('0x', '')}`) - } else if (msg.upact === 'UP-READY') { - console.log('[UnipassProvider] sign READY') - const msg: UnipassMessage = { - upact: 'UP-SIGN', - payload: message, - } - uniFrame.contentWindow?.postMessage(msg, this.UNIPASS_BASE) - console.log('[UnipassProvider] opend') - } else if (msg.upact === 'UP-LOGIN') { - const { pubkey, email } = msg.payload as UnipassAccount - const ckbAddress = pubkeyToAddress(pubkey) - this.address = new Address(ckbAddress, AddressType.ckb) - this.setStorage({ - address: ckbAddress, - email: email, - walletType: WalletType.Unipass, - }) - this._email = email - this.msgHandler != null && - window.removeEventListener('message', this.msgHandler) - uniFrame !== undefined && closeFrame(uniFrame) - // window.location.reload(); - resolve('0x') - } else if (msg.upact === 'UP-CLOSE') { - uniFrame !== undefined && closeFrame(uniFrame) - resolve('N/A') - } - } - } - - window.addEventListener('message', this.msgHandler, false) - }) - } - - close(): void { - this.msgHandler != null && - window.removeEventListener('message', this.msgHandler) - } - - terminate(): void { - this.close() - uniFrame !== undefined && closeFrame(uniFrame) - } -} diff --git a/src/pw/UnipassSigner.ts b/src/pw/UnipassSigner.ts deleted file mode 100644 index 20ac17ee..00000000 --- a/src/pw/UnipassSigner.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { Signer, Message, Provider, Blake2bHasher } from '@lay2/pw-core' -export default class UnipassSigner extends Signer { - constructor(public readonly provider: Provider) { - super(new Blake2bHasher()) - } - - async signMessages(messages: Message[]): Promise { - const sigs = [] - for (const message of messages) { - if ( - this.provider.address.toLockScript().toHash() === message.lock.toHash() - ) { - sigs.push(await this.provider.sign(message.message)) - } else { - sigs.push('0x') - } - } - - return sigs - } -} From 560aaf43f4feed453da14fc9cfed68014c1ecf11 Mon Sep 17 00:00:00 2001 From: yuche Date: Wed, 23 Feb 2022 16:06:00 +0800 Subject: [PATCH 11/37] fix: add init pop --- src/hooks/useAccount.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/hooks/useAccount.ts b/src/hooks/useAccount.ts index 876633e0..2e5b0e02 100644 --- a/src/hooks/useAccount.ts +++ b/src/hooks/useAccount.ts @@ -174,6 +174,7 @@ export function useLogin() { ) const loginUnipass = useCallback(async () => { + UP.initPop() const account = await UP.connect({ email: true }) const address = UPCKB.getCKBAddress(account.username) setAccount({ @@ -327,6 +328,7 @@ export function useSignMessage() { async (msg: string) => { if (walletType === WalletType.Unipass) { try { + UP.initPop() const acc = await UP.connect({ email: true }) const res = await UP.authorize( new UPAuthMessage('PLAIN_MSG', acc.username, msg) From 4d48fa988b51791950559fa69d2222aaa69b6277 Mon Sep 17 00:00:00 2001 From: yuche Date: Wed, 23 Feb 2022 18:03:42 +0800 Subject: [PATCH 12/37] fix: add UP.initpop() in right place --- src/hooks/useAccount.ts | 1 - src/hooks/useRedeem.ts | 6 ++++++ src/views/RedEnvelope/index.tsx | 3 +++ src/views/RedeemResult/index.tsx | 3 +++ src/views/SendRedEnvelope/hooks/useSendRedEnvelope.tsx | 4 ++++ src/views/Transfer/index.tsx | 4 ++++ 6 files changed, 20 insertions(+), 1 deletion(-) diff --git a/src/hooks/useAccount.ts b/src/hooks/useAccount.ts index 2e5b0e02..3bb07d71 100644 --- a/src/hooks/useAccount.ts +++ b/src/hooks/useAccount.ts @@ -238,7 +238,6 @@ export function useSignTransaction() { const [provider, setProvider] = useAtom(providerAtom) const { loginMetamask } = useLogin() const signUnipass = useCallback(async (tx: Transaction) => { - UP.initPop() const witnessArg = addWitnessArgType( { ...Builder.WITNESS_ARGS.RawSecp256k1, diff --git a/src/hooks/useRedeem.ts b/src/hooks/useRedeem.ts index 99439502..0bbdd17d 100644 --- a/src/hooks/useRedeem.ts +++ b/src/hooks/useRedeem.ts @@ -17,6 +17,7 @@ import { useSignTransaction, WalletType, } from './useAccount' +import UP from 'up-core-test' import { useConfirmDialog } from './useConfirmDialog' import { useToast } from './useToast' import { trackLabels, useTrackClick } from './useTrack' @@ -59,6 +60,9 @@ export const useSignRedeem = () => { const toast = useToast() const confirmRedeem = useCallback( async ({ customData, id, onConfirmError }: ConfirmRedeemProps) => { + if (walletType === WalletType.Unipass) { + UP.initPop() + } setIsRedeeming(true) try { const { tx } = await api @@ -168,6 +172,8 @@ export const useSendRedeem = () => { const { id } = useParams<{ id: string }>() const sendRedeemTransaction = useCallback(async () => { const { tx, customData, signature } = reactLocation.state + // eslint-disable-next-line no-debugger + debugger try { if (tx) { await api.redeem({ tx, uuid: id, customData }) diff --git a/src/views/RedEnvelope/index.tsx b/src/views/RedEnvelope/index.tsx index 7272fd24..8deb5b4e 100644 --- a/src/views/RedEnvelope/index.tsx +++ b/src/views/RedEnvelope/index.tsx @@ -101,6 +101,7 @@ export const RedEnvelope: React.FC = () => { }) return } + console.log('is fetching') setIsRefetching(true) const auth = await getAuth().catch((err) => { setIsRefetching(false) @@ -111,6 +112,8 @@ export const RedEnvelope: React.FC = () => { input: options?.input, }) .then(async () => { + // eslint-disable-next-line no-debugger + debugger if (isOpened) return let i = 0 for (; i < 3; i++) { diff --git a/src/views/RedeemResult/index.tsx b/src/views/RedeemResult/index.tsx index e5b917dd..434eb1ae 100644 --- a/src/views/RedeemResult/index.tsx +++ b/src/views/RedeemResult/index.tsx @@ -56,6 +56,8 @@ export const RedeemResult: React.FC = () => { const location = useLocation() const { t, i18n } = useTranslation('translations') const transfer = useCallback(async () => { + // eslint-disable-next-line no-debugger + debugger const { signature = '', tx, customData } = location?.state if (tx) { const { data } = await api.redeem({ @@ -85,6 +87,7 @@ export const RedeemResult: React.FC = () => { staleTime: Infinity, } ) + console.log(isError) const isSucceed = !isError && data const hasCustomData = !!location.state?.customData const resultProps = isSucceed diff --git a/src/views/SendRedEnvelope/hooks/useSendRedEnvelope.tsx b/src/views/SendRedEnvelope/hooks/useSendRedEnvelope.tsx index a8f5bae8..6ef6100b 100644 --- a/src/views/SendRedEnvelope/hooks/useSendRedEnvelope.tsx +++ b/src/views/SendRedEnvelope/hooks/useSendRedEnvelope.tsx @@ -7,6 +7,7 @@ import { import { useCallback, useEffect, useState } from 'react' import { useTranslation } from 'react-i18next' import { useHistory } from 'react-router-dom' +import UP from 'up-core-test' import { useAccount, useAPI, @@ -51,6 +52,9 @@ export function useSendRedEnvelope() { const onSend = useCallback( async (formInfo: FormInfoState) => { + if (walletType === WalletType.Unipass) { + UP.initPop() + } setSending(true) setError(undefined) try { diff --git a/src/views/Transfer/index.tsx b/src/views/Transfer/index.tsx index 6df9d561..629ec949 100644 --- a/src/views/Transfer/index.tsx +++ b/src/views/Transfer/index.tsx @@ -27,6 +27,7 @@ import { buildFlashsignerOptions, isUnipassV2Address, } from '../../utils' +import UP from 'up-core-test' import { useWidth } from '../../hooks/useWidth' import { useQuery } from 'react-query' import { CONTAINER_MAX_WIDTH, IS_IPHONE, IS_MAINNET } from '../../constants' @@ -267,6 +268,9 @@ export const Transfer: React.FC = () => { }, [confirmDialog, finalUsedAddress, t, nftDetail?.script_type]) const sendNFT = useCallback(async () => { + if (walletType === WalletType.Unipass) { + UP.initPop() + } setIsSendingNFT(true) try { const isFinalUsedAddressTypeEth = From e4f8d4e6b84be5608c35c0adf12dd74fb452c5a0 Mon Sep 17 00:00:00 2001 From: yuche Date: Wed, 23 Feb 2022 19:44:42 +0800 Subject: [PATCH 13/37] fix: ios unipass popup --- src/hooks/useAccount.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/hooks/useAccount.ts b/src/hooks/useAccount.ts index 3bb07d71..64f6dcce 100644 --- a/src/hooks/useAccount.ts +++ b/src/hooks/useAccount.ts @@ -174,7 +174,7 @@ export function useLogin() { ) const loginUnipass = useCallback(async () => { - UP.initPop() + // UP.initPop() const account = await UP.connect({ email: true }) const address = UPCKB.getCKBAddress(account.username) setAccount({ @@ -257,7 +257,7 @@ export function useSignTransaction() { const { outputs } = tx.raw const changeOutput = outputs[outputs.length - 1] changeOutput.capacity = changeOutput.capacity.sub( - new Amount('3500', AmountUnit.shannon) + new Amount('4500', AmountUnit.shannon) ) tx.raw.cellDeps = [] const provider = new UPCoreSimpleProvier( @@ -327,7 +327,7 @@ export function useSignMessage() { async (msg: string) => { if (walletType === WalletType.Unipass) { try { - UP.initPop() + // UP.initPop() const acc = await UP.connect({ email: true }) const res = await UP.authorize( new UPAuthMessage('PLAIN_MSG', acc.username, msg) From c3dd33dcab6c1aab553f443f426a4347ba42a333 Mon Sep 17 00:00:00 2001 From: yuche Date: Wed, 23 Feb 2022 20:14:38 +0800 Subject: [PATCH 14/37] fix: unipass v3 address collector --- src/routes/AccountChange.tsx | 2 +- src/views/AddressCollector/index.tsx | 33 +++++----------------------- 2 files changed, 6 insertions(+), 29 deletions(-) diff --git a/src/routes/AccountChange.tsx b/src/routes/AccountChange.tsx index 5e27be74..fa13acc7 100644 --- a/src/routes/AccountChange.tsx +++ b/src/routes/AccountChange.tsx @@ -14,7 +14,7 @@ import { useWechatShare } from '../hooks/useWechat' const allowWithoutAuthList = new Set([ RoutePath.Explore, RoutePath.Apps, - RoutePath.AddressCollector, + // RoutePath.AddressCollector, RoutePath.Claim, RoutePath.NotFound, RoutePath.Redeem, diff --git a/src/views/AddressCollector/index.tsx b/src/views/AddressCollector/index.tsx index 8c406c5b..6b401114 100644 --- a/src/views/AddressCollector/index.tsx +++ b/src/views/AddressCollector/index.tsx @@ -25,7 +25,6 @@ import { useAccountStatus, useAPI, useLogin, - useProvider, WalletType, } from '../../hooks/useAccount' import { useConfirmDialog } from '../../hooks/useConfirmDialog' @@ -153,7 +152,6 @@ export const AddressCollector: React.FC = () => { const api = useAPI() const { walletType, address } = useAccount() const { isLogined } = useAccountStatus() - const provider = useProvider() const { isAuthenticated } = useProfile() const getAuth = useGetAndSetAuth() const { id } = useParams<{ id: string }>() @@ -232,10 +230,6 @@ export const AddressCollector: React.FC = () => { const loginBtnOnClick = useCallback( async (targetType = WalletType.Unipass) => { setLoading(true, targetType) - if (walletType === targetType && isLogined) { - await submit(targetType) - return - } if (WalletType.Metamask !== targetType) { UnipassConfig.setRedirectUri( id @@ -288,28 +282,11 @@ export const AddressCollector: React.FC = () => { ) useLayoutEffect(() => { - if (isLogined && walletType && address && isAddressPackageExist) { - if ( - walletType === WalletType.Metamask && - provider?.address?.addressString - ) { - submit(walletType).catch(Boolean) - } - if ( - walletType === WalletType.Unipass || - walletType === WalletType.Flashsigner - ) { - submit(walletType).catch(Boolean) - } + if (isLogined && isAddressPackageExist && isAuthenticated && walletType) { + submit(walletType).catch(Boolean) } // eslint-disable-next-line react-hooks/exhaustive-deps - }, [ - walletType, - isLogined, - address, - provider?.address?.addressString, - isAddressPackageExist, - ]) + }, [walletType, isLogined, isAddressPackageExist, isAuthenticated, address]) const imgs = { [SubmitStatus.None]: , @@ -334,7 +311,7 @@ export const AddressCollector: React.FC = () => { {IS_MOBILE_ETH_WALLET ? null : ( { {IS_UNIPASS_NOT_AVAILABLE ? null : ( From 59561ebadd1eb426e548ed139cef22c659ba8bf4 Mon Sep 17 00:00:00 2001 From: "lison.yang" Date: Wed, 9 Mar 2022 11:45:56 +0800 Subject: [PATCH 15/37] fix: scale the skeleton --- src/views/NFT/components/renderer.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/views/NFT/components/renderer.tsx b/src/views/NFT/components/renderer.tsx index 3b03b836..c70ae84a 100644 --- a/src/views/NFT/components/renderer.tsx +++ b/src/views/NFT/components/renderer.tsx @@ -362,8 +362,8 @@ export const Renderer: React.FC<{ detail?: NFTDetail | TokenClass }> = ({ fallbackSrc={FALLBACK_SRC} zIndex={2} srcQueryParams={tidParams} - minW="100px" - minH="100px" + minW="200px" + minH="200px" cursor="pointer" /> {hasPlayIcon ? ( From f30bb8045971422a6543aef13d95fb0f14b0e86e Mon Sep 17 00:00:00 2001 From: "lison.yang" Date: Wed, 9 Mar 2022 17:29:43 +0800 Subject: [PATCH 16/37] fix: init hidden the card face --- src/views/NFT/components/renderer.tsx | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/src/views/NFT/components/renderer.tsx b/src/views/NFT/components/renderer.tsx index c70ae84a..e5f6ece5 100644 --- a/src/views/NFT/components/renderer.tsx +++ b/src/views/NFT/components/renderer.tsx @@ -247,16 +247,16 @@ export const Renderer: React.FC<{ detail?: NFTDetail | TokenClass }> = ({ detail, }) => { const { t, i18n } = useTranslation('translations') - const hasCardBack = + const hasCardBack = Boolean( detail?.card_back_content_exist || detail?.class_card_back_content_exist + ) const [showCardBackContent, setShowCardBackContent] = useState(false) + const [showCardBackInitd, setShowCardBackInitd] = useState(false) + const cardbackContent = detail?.class_card_back_content ?? detail?.card_back_content - const hasCardback = Boolean( - detail?.card_back_content_exist || detail?.class_card_back_content_exist - ) const { id } = useParams<{ id?: string }>() - const { tiltAngleYInitial, shouldReverseTilt } = useTilt(hasCardback) + const { tiltAngleYInitial, shouldReverseTilt } = useTilt(hasCardBack) const { isOpen: isOpenPreview, onOpen: onOpenPreview, @@ -388,7 +388,7 @@ export const Renderer: React.FC<{ detail?: NFTDetail | TokenClass }> = ({ ) : null} ) - }, [detail?.renderer, detail?.renderer_type, hasPlayIcon, imgUrl, tidParams]) + }, [detail, hasPlayIcon, imgUrl, tidParams]) return ( = ({ > {imageEl} - {hasCardback ? ( - - ) : null} + {hasCardBack && ( + + + + )} {detail ? ( @@ -523,6 +525,7 @@ export const Renderer: React.FC<{ detail?: NFTDetail | TokenClass }> = ({ if (!showCardBackContent) { trackCardBack(id) } + setShowCardBackInitd(true) setShowCardBackContent((bool) => !bool) }} > From e9173802caef682f5f5c2feb5fbb8804daf6a338 Mon Sep 17 00:00:00 2001 From: yuche Date: Thu, 10 Mar 2022 21:26:36 +0800 Subject: [PATCH 17/37] chore(release): release v2.1.0 From a55eca5e03bc377b65dea5b1af37d59e93f8f950 Mon Sep 17 00:00:00 2001 From: yuche Date: Thu, 10 Mar 2022 21:36:30 +0800 Subject: [PATCH 18/37] chore(release): v2.1.1 --- public/manifest.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/manifest.json b/public/manifest.json index 7c10959d..01d3d139 100644 --- a/public/manifest.json +++ b/public/manifest.json @@ -1,7 +1,7 @@ { "short_name": "秘宝账户", "name": "秘宝账户", - "version": "2.1.0", + "version": "2.1.1", "icons": [ { "src": "icons/16.png", From 31350b1ac1f7541e9ca9993f3cad409bbe0eb4bb Mon Sep 17 00:00:00 2001 From: yuche Date: Thu, 10 Mar 2022 21:37:21 +0800 Subject: [PATCH 19/37] fix: ci --- .github/workflows/prod.yml | 6 ------ 1 file changed, 6 deletions(-) diff --git a/.github/workflows/prod.yml b/.github/workflows/prod.yml index f99e7d0a..6e4aa7e5 100644 --- a/.github/workflows/prod.yml +++ b/.github/workflows/prod.yml @@ -22,12 +22,6 @@ jobs: - name: Show commit message run : echo "$commitmsg" - - name: Check commit message - if: startsWith( env.commitmsg , 'chore(release):' ) - run: | - echo "Publish by pushing must provide parameter named tag, just like: chore(release): publish 1.0 --tag=beta" - exit 1 - - name: Deploy to dokku id: deploy uses: idoberko2/dokku-deploy-github-action@v1 From 8d5648d53fc554e0cb64202d3ced42fe42658fce Mon Sep 17 00:00:00 2001 From: yuche Date: Mon, 14 Mar 2022 15:29:07 +0800 Subject: [PATCH 20/37] refactor: display new format address except pw-lock --- src/utils/unipass.ts | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/utils/unipass.ts b/src/utils/unipass.ts index 879f31ac..211f8a81 100644 --- a/src/utils/unipass.ts +++ b/src/utils/unipass.ts @@ -1,5 +1,5 @@ /* eslint-disable @typescript-eslint/no-extraneous-class */ -import { Transaction as PwTransaction } from '@lay2/pw-core' +import PWCore, { Transaction as PwTransaction } from '@lay2/pw-core' import { IS_MAINNET, PW_CODE_HASH, UNIPASS_URL } from '../constants' import { UnipassAction } from '../models/unipass' import i18n from '../i18n' @@ -10,7 +10,6 @@ import { AddressPrefix, } from '@nervosnetwork/ckb-sdk-utils' import { WalletType } from '../hooks/useAccount' -import { Config } from '@nervina-labs/flashsigner' export function isUnipassV2Address(address: string) { try { @@ -20,8 +19,6 @@ export function isUnipassV2Address(address: string) { } } -const flashsignerLockCodeHash = Config.getFlashsignerLock().codeHash - export function generateOldAddress( address: string, walletType?: WalletType | undefined @@ -31,7 +28,7 @@ export function generateOldAddress( } try { const script = addressToScript(address) - if (script.codeHash === flashsignerLockCodeHash) { + if (script.codeHash !== PWCore.config.pwLock.script.codeHash) { return address } return fullPayloadToAddress({ From b6f21bac73c99033c9f80924eac3ade88a0a7f7f Mon Sep 17 00:00:00 2001 From: yuche Date: Mon, 14 Mar 2022 16:52:23 +0800 Subject: [PATCH 21/37] fix: merge issues --- src/hooks/useAccount.ts | 2 +- src/views/Claim/index.tsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/hooks/useAccount.ts b/src/hooks/useAccount.ts index 4321eeae..001998fe 100644 --- a/src/hooks/useAccount.ts +++ b/src/hooks/useAccount.ts @@ -24,7 +24,7 @@ import type { History } from 'history' import { UNIPASS_CODE_HASH } from '../constants' import { Web3Provider } from '../pw/Web3Provider' import { RoutePath } from '../routes' -import { buildFlashsignerOptions } from '../utils' +import { buildFlashsignerOptions, generateOldAddress } from '../utils' import { ServerWalletAPI } from '../apis/ServerWalletAPI' import { UPCoreSimpleProvier } from '../pw/UProvider' import { useProfile } from './useProfile' diff --git a/src/views/Claim/index.tsx b/src/views/Claim/index.tsx index d0a7435a..c3beecd4 100644 --- a/src/views/Claim/index.tsx +++ b/src/views/Claim/index.tsx @@ -11,7 +11,7 @@ import { IS_MOBILE_ETH_WALLET, IS_UNIPASS_NOT_AVAILABLE, } from '../../constants' -import { Redirect, useHistory, useParams } from 'react-router-dom' +import { Link, Redirect, useHistory, useParams } from 'react-router-dom' import { ReactComponent as ImtokenSvg } from '../../assets/svg/imtoken.svg' import { RoutePath } from '../../routes' import { MainContainer } from '../../styles' From aff5cc709b080add0366016831b74751cb6f4f33 Mon Sep 17 00:00:00 2001 From: "lison.yang" Date: Mon, 14 Mar 2022 17:40:40 +0800 Subject: [PATCH 22/37] fix: try fixing ios 15.0 crash --- src/routes/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/routes/index.tsx b/src/routes/index.tsx index 4b0a7476..280ea3a3 100644 --- a/src/routes/index.tsx +++ b/src/routes/index.tsx @@ -66,7 +66,7 @@ export const RouteSwitch: React.FC = () => { export const Routers: React.FC = () => { const { t } = useTranslation('translations') const theme = useMemo(() => { - const font = `"PingFang SC", Poppins, -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", + const font = `"PingFang SC", Poppins, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif` From e20172aedc525a4f6f4161dd35d69443dabd253c Mon Sep 17 00:00:00 2001 From: "lison.yang" Date: Fri, 18 Mar 2022 17:25:43 +0800 Subject: [PATCH 23/37] fix: uninstall safari service worker --- src/index.tsx | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/index.tsx b/src/index.tsx index f91b3a38..f80f6720 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -8,6 +8,7 @@ import './gt' import * as sw from './serviceWorkerRegistration' import * as Sentry from '@sentry/react' import { Integrations } from '@sentry/tracing' +import { IS_SAFARI } from './constants' import './index.css' @@ -28,4 +29,8 @@ ReactDOM.render( document.getElementById('root') ) -sw.register() +if (IS_SAFARI) { + sw.unregister() +} else { + sw.register() +} From 42363cb80e380156f0c575bf7bc90818d3476185 Mon Sep 17 00:00:00 2001 From: "lison.yang" Date: Tue, 22 Mar 2022 16:36:29 +0800 Subject: [PATCH 24/37] feat: modify share --- src/assets/share/icons/loading-white.png | Bin 0 -> 3099 bytes src/components/Share/index.tsx | 190 ++++++++++++++--------- 2 files changed, 119 insertions(+), 71 deletions(-) create mode 100644 src/assets/share/icons/loading-white.png diff --git a/src/assets/share/icons/loading-white.png b/src/assets/share/icons/loading-white.png new file mode 100644 index 0000000000000000000000000000000000000000..e04e25dc2630dec8492bb9f4b2ce5c1fe193647b GIT binary patch literal 3099 zcmV+$4CM2PP);00DGTPE!Ct=GbNc01LxOL_t(|+U(p-&YUm|24GMYEOP{o!qMPp9EBrf znMD*=pH#{EYKWbAQ#6s{WgB=Hk8OTBbQ&>Y#E20iMvNFSVnoB(X?iCd(KWpio+wVQ z#7dN=S7Il6>5C#FI;Iz5{*lhXbK72onBh3SRxL@$;3N_1c59ZTDflqVS-OFPm1 zkmy(*1GhSkDBGot=t7>`9A*i5#8X-1^2Msm1x)kqnUf=yZw zX@6OYy2LF(eMreBt*=QNF6GxGvPpYa(qWRQE9taIa|`LRNUjsFFQIu!{X zu+t1k$cUAaOmhbkmsC;WBJDup)-OpsOkgP$Bxt~Ltbl}%Se9g#dyu%Mqy!9DKq6G) z-d81_CHRPyl3dn<#Azu>oa8PfE?+6t4_I9Cu*A)8k}@Lk=#-LN)rZ7+k&?`D9}?GZ zN#Y8{rK2Qqe*@tF2_3O4$whrgoERb14_I7UAW0UmE=?_@Sdh5Aq1XTk8?h|OHN8lj z86i~@Hx=XIp6{N)`zp zv7RUv7vPfo|08gzoSdD^k3H~Tvq)*`NZPnvN)4BLl2)6PdXl_Ninz4cq|lS(Y|_<} zG~1-}HR+h}cu(3*($qpyW_delvq-rwNxtHMziQy+PX=qonVSW4~>S zMd_EvCLp51(Vb6{(gne=I}Ufhg|kT4{SjWzXV<6KFSF7G=Y1u`LODN3N$G+cX@A~q zd-&#+%LHH8ENcmue;$<6f8E#n)EH~|lyhv1}h8OcCX{B~0;cQZbAf5_5l7$CLZT$#f}o&Cgh{(q!higtNKPz(`c}UR!%MG?xvsBhJ;fe7ne`+lfRNjP2FMM=N~L3(~ulfI>_FCn0B^#k@I!EixDLxQg+1rd}f z0`;!9lrUkvE9;65%c2$qk&zG1fqVrE;k_%%3NHymQ=Y~g;{{i0fQXqU0|MpB_Xp9v^Y=@&Cl=^$#+ok%@qYT>k@vP zGSe3%)l^SFPJ^jtaYWiFs0lzNd+L$aU8`DTYa`{V3}oOUA{y%lmx8g+ap|m@k{KAV z)&sLImy*4hJSf>)(V>!kWVVnF<9b{&b~-L4>kuNmunfL;O%WY7&lIS>~#PL$1qH{U*AE zZ#E-$HD}#i0qzMad+_u7++0~jpWnO3`i$p#X{-Ns=g*&f9QAn!pFQvW;ONeJ$$gNC z<LAL}WN`U^@#V9F zH60+`gm$n+2S_)e9jvRODd7zE&;io7Xa`$W(d2Um(*e>UX$PBB@icb?8y`mZQD1}2 zX-Z8MFI^*8w$h@CZxSDaeX~+m#W%i>!Kg$fTM3`)P*>@!uT(fAs8mns8{dSnN;SS4 zB`D>7hqX@txYC|?*2p_QrJV`$&bfJK_q_XvygQb>d!x*|u>AYI>osGU3s6D`A%qY@ z2qA&V=_w^=vSSnNw~Dj#4L<;5(eGgL+d;DewZQIXzmh<#Mzu7sZU@~^ zTJXBPMmmhop8_%al{Ud}E4>Be;Z-^Xq<>cGXhIB{S7{fJ$*UwVPNlcNJbX%rz%0Jp zdkW0#Q`!V(@+nCGt4HaS0J=x%B>^;#(k=nao;Tqp5tvGN-Tt(92R9DFP!K?aeDIMH zT#8F0rBMncaO8kskE85h^U)ZDCI92b@WRKQ&62Re+D%F>*;#*boJafX&tHYjxi6Wv ze}v3uqz)5;9$1ZE$IW}oNY}p%d^m0dBr2?1Zuyu`o+ULUzR3hhZ8PPU&YGGMnXH888mha8<++v)Y` ziPRlGH*b+<M<)F?$gmmRDvW`yR?^%a+W+vQoypr zIZ}s&^kj(#)ge)1NTL?20c(-w`=x;-C16?NAgMz_c(PPBV&l`&l9$k9Jz!1Je!t{N zk^+_`PLdiV%1)9>MXY;V`X(iAvL3K3@f58=!s5?Kh>{v4icXSfoEWf1X}eS6F6#ly z63@{ZB&_|cge-Z#M9E1K4O9cxDouAv+-5ysS>j3hehEuIFX<5*o|e{}#3S{9Wr_Rz zehD)wFJYFxU&6}IN_xb0k4s}#;-PxLvc!#kyF?R;B%Y>kmuTUW#Brhp?7Jk46{N)? z^^z2?OPeIk7Rgs4(Pw2y;yjV0@m*3^Li%PTR9(`?Bn>r5n@x(kwA!RlleE~Rz9wn5 zNnVlSb!k(i$tF2n8f{XiNa4D)D$+MAp%kgVE-i}mF-n6Vd7NW|6ouF2?z%Jy(rT50 zAa&@xLF$!DiRipR^2+7W0sY8I=(Tb+XS7NkPOA7l0xWT_7vVbWW|yM!rW&55LF$z& z^Kl>TQm4Fw(&3O;qU!N8saWD_QjhcK%%}hW002ovPDHLkV1h(c*gyaP literal 0 HcmV?d00001 diff --git a/src/components/Share/index.tsx b/src/components/Share/index.tsx index 77062433..abe2f52c 100644 --- a/src/components/Share/index.tsx +++ b/src/components/Share/index.tsx @@ -2,6 +2,7 @@ import { Button } from '@mibao-ui/components' import { Box, Center, + CloseButton, Drawer, DrawerContent, DrawerOverlay, @@ -12,6 +13,7 @@ import { import CopyLinkPath from '../../assets/share/icons/copy-link.svg' import CreatePosterPath from '../../assets/share/icons/create-poster.svg' import LoadingPath from '../../assets/share/icons/loading.svg' +import LoadingPathWhite from '../../assets/share/icons/loading-white.png' import DownloadPath from '../../assets/share/icons/download.svg' import MorePath from '../../assets/share/icons/more.svg' import { useCallback, useEffect, useMemo, useState } from 'react' @@ -198,15 +200,31 @@ export const Share: React.FC = ({ )} ) : null} - + {showPoster && !!imgSrc && ( + + { + setPosterState(PosterState.None) + reload() + onClose?.() + }} + /> + + )} {showPoster ? ( -
= ({ objectFit="contain" rounded="20px" /> -
+ {!imgSrc && ( + + )} + {!!imgSrc && ( + + 长按图片分享或存储到相册 + + )} + ) : null} - - - {items.map((item, i) => ( - -
- -
- + + {items.map((item, i) => ( + - {item.text} - -
- ))} -
+
+ +
+ + {item.text} + +
+ ))} +
- - + + + )} ) : null} From 207146eea34fcda31e24c0dc5e41683235fefbe1 Mon Sep 17 00:00:00 2001 From: Yu Che Date: Wed, 23 Mar 2022 10:11:53 +0800 Subject: [PATCH 25/37] Revert "feat: unipass v3" --- craco.config.js | 5 +- package.json | 3 - src/constants/env.ts | 35 --- src/hooks/useAccount.ts | 154 +++++------- src/hooks/useProfile.ts | 45 ++-- src/hooks/useRedeem.ts | 43 +++- src/pw/Sha256Hasher.ts | 33 +++ src/pw/UProvider.ts | 23 -- src/pw/UnipassProvider.ts | 226 ++++++++++++++++++ src/pw/UnipassSigner.ts | 21 ++ src/pw/toPwTransaction.ts | 20 -- src/routes/AccountChange.tsx | 60 ++--- src/routes/path.ts | 1 + src/routes/routes.ts | 7 + src/utils/unipass.ts | 7 +- src/views/AddressCollector/index.tsx | 55 +++-- src/views/Claim/index.tsx | 24 +- src/views/Login/index.tsx | 41 ++-- src/views/RedEnvelope/index.tsx | 1 - src/views/RedeemResult/index.tsx | 3 - .../hooks/useSendRedEnvelope.tsx | 28 ++- src/views/Transfer/index.tsx | 58 ++++- src/views/Unipass/index.tsx | 128 ++++++++++ yarn.lock | 191 +-------------- 24 files changed, 689 insertions(+), 523 deletions(-) create mode 100644 src/pw/Sha256Hasher.ts delete mode 100644 src/pw/UProvider.ts create mode 100644 src/pw/UnipassProvider.ts create mode 100644 src/pw/UnipassSigner.ts create mode 100644 src/views/Unipass/index.tsx diff --git a/craco.config.js b/craco.config.js index 3a7be6c4..060a4ded 100644 --- a/craco.config.js +++ b/craco.config.js @@ -3,10 +3,7 @@ const BundleAnalyzerPlugin = require('webpack-bundle-analyzer') module.exports = { babel: { - plugins: [ - 'babel-plugin-styled-components', - '@babel/plugin-proposal-class-properties', - ], + plugins: ['babel-plugin-styled-components'], }, webpack: { configure: (webpackConfig) => { diff --git a/package.json b/package.json index c4c6815f..b4a5c5c0 100644 --- a/package.json +++ b/package.json @@ -71,8 +71,6 @@ "serve": "11.3.2", "styled-components": "^5.2.3", "swiper": "^7.2.0", - "up-ckb-alpha-test": "0.1.5", - "up-core-test": "^0.1.6", "web3": "^1.3.5", "web3modal": "^1.9.3", "workbox-core": "^6.1.5", @@ -82,7 +80,6 @@ "workbox-strategies": "^6.1.5" }, "devDependencies": { - "@babel/plugin-proposal-class-properties": "^7.16.7", "@craco/craco": "^6.1.1", "@types/react": "^17.0.0", "@types/react-dom": "^17.0.0", diff --git a/src/constants/env.ts b/src/constants/env.ts index f5707ef7..6876eeb0 100644 --- a/src/constants/env.ts +++ b/src/constants/env.ts @@ -1,9 +1,5 @@ import * as Bowser from 'bowser' import { Config } from '@nervina-labs/flashsigner' -import UP from 'up-core-test' -import UPCKB from 'up-ckb-alpha-test' -import PWCore, { ChainID, CHAIN_SPECS } from '@lay2/pw-core' - type ChainType = 'mainnet' | 'testnet' export const BOWSER_BROWSER = Bowser.getParser(window.navigator.userAgent) @@ -61,9 +57,6 @@ export const IS_STANDALONE = export const IS_MOBILE_ETH_WALLET = (w.ethereum || w.web3) && IS_MOBILE && IS_STANDALONE -export const IS_UNIPASS_NOT_AVAILABLE = - IS_WEXIN || IS_MOBILE_ETH_WALLET || IS_MOBILE_ETH_WALLET - export const IS_TOKEN_POCKET = navigator.userAgent.includes('TokenPocket') export const IS_MAC_SAFARI = IS_SAFARI && !IS_IPHONE @@ -112,31 +105,3 @@ export const ISSUER_ID_REG = /^ISSUER-.{40}$/ export const TOKEN_CLASS_ID_REGS = [/^0x.{48}$/, /^0x.{40}/] export const IS_SUPPORT_AR = !IS_WEXIN && document.createElement('a').relList.supports('ar') - -export const UNIPASS_CODE_HASH = IS_MAINNET - ? '0xd01f5152c267b7f33b9795140c2467742e8424e49ebe2331caec197f7281b60a' - : '0x3e1eb7ed4809b2d60650be96a40abfbdafb3fb942b7b37ec7709e64e2cd0a783' - -UPCKB.config({ - upLockCodeHash: UNIPASS_CODE_HASH, -}) -if (IS_MAINNET) { - UP.config({ - domain: 'app.unipass.id', - }) - UPCKB.config({ - upLockCodeHash: UNIPASS_CODE_HASH, - upSnapshotUrl: 'https://aggregator.unipass.id/snapshot/', - }) -} else { - UP.config({ - domain: 't.app.unipass.id', - }) - UPCKB.config({ - upLockCodeHash: UNIPASS_CODE_HASH, - upSnapshotUrl: 'https://t.aggregator.unipass.id/dev/snapshot/', - }) -} - -PWCore.chainId = IS_MAINNET ? ChainID.ckb : ChainID.ckb_testnet -PWCore.config = IS_MAINNET ? CHAIN_SPECS.Lina : CHAIN_SPECS.Aggron diff --git a/src/hooks/useAccount.ts b/src/hooks/useAccount.ts index 001998fe..32e27c5b 100644 --- a/src/hooks/useAccount.ts +++ b/src/hooks/useAccount.ts @@ -1,34 +1,23 @@ import { atom, useAtom } from 'jotai' import { loginWithRedirect } from '@nervina-labs/flashsigner' -import { - Address, - CellDep, - DefaultSigner, - Provider, - Transaction, - OutPoint, - Builder, - Amount, - AmountUnit, -} from '@lay2/pw-core' +import { Address, DefaultSigner, Provider, Transaction } from '@lay2/pw-core' import { atomWithStorage, useAtomValue, useUpdateAtom } from 'jotai/utils' import { useCallback, useMemo } from 'react' import dayjs from 'dayjs' -import UP, { UPAuthMessage } from 'up-core-test' -import UPCKB, { - fetchAssetLockProof, - completeTxWithProof, -} from 'up-ckb-alpha-test' import { usePrevious } from './usePrevious' import type { History } from 'history' -import { UNIPASS_CODE_HASH } from '../constants' +import UnipassProvider from '../pw/UnipassProvider' +import { UNIPASS_URL } from '../constants' import { Web3Provider } from '../pw/Web3Provider' import { RoutePath } from '../routes' -import { buildFlashsignerOptions, generateOldAddress } from '../utils' +import { + generateUnipassLoginUrl, + generateUnipassSignUrl, + buildFlashsignerOptions, + generateOldAddress, +} from '../utils' +import UnipassSigner from '../pw/UnipassSigner' import { ServerWalletAPI } from '../apis/ServerWalletAPI' -import { UPCoreSimpleProvier } from '../pw/UProvider' -import { useProfile } from './useProfile' -import { addWitnessArgType } from '../pw/toPwTransaction' export enum WalletType { Unipass = 'Unipass', @@ -37,7 +26,7 @@ export enum WalletType { Flashsigner = 'flashsigner', } -export const UNIPASS_ACCOUNT_KEY = 'unipass_account_key_v3' +export const UNIPASS_ACCOUNT_KEY = 'unipass_account_key_v2' export interface UnipassAccount { address: string @@ -45,7 +34,6 @@ export interface UnipassAccount { pubkey?: string walletType: WalletType expireTime?: string - username?: string } export const providerAtom = atom(null) @@ -96,7 +84,7 @@ export function useAccount() { } export function useAccountStatus() { - const { account, address } = useAccount() + const { account, walletType, pubkey, address } = useAccount() const expireTime = useMemo(() => { return account?.expireTime ?? dayjs('1970').toISOString() }, [account?.expireTime]) @@ -107,8 +95,11 @@ export function useAccountStatus() { if (isExpired) { return false } + if (walletType === WalletType.Unipass && !pubkey) { + return false + } return address !== '' - }, [address, expireTime]) + }, [address, expireTime, pubkey, walletType]) const prevAddress = usePrevious(address) @@ -140,21 +131,15 @@ export function useSetAccount() { export function useLogout() { const setAccount = useSetAccount() const [provider, setProvider] = useAtom(providerAtom) - const { setProfile } = useProfile() - const { walletType } = useAccount() + return useCallback( (h?: History) => { - setProfile(null) setProvider(null) setAccount(null) - if (walletType === WalletType.Unipass) { - sessionStorage.clear() - UP.disconnect() - } // localStorage.clear() provider?.close() }, - [provider, setAccount, setProvider, setProfile, walletType] + [provider, setAccount, setProvider] ) } @@ -182,17 +167,16 @@ export function useLogin() { ) const loginUnipass = useCallback(async () => { - // UP.initPop() - const account = await UP.connect({ email: true }) - const address = UPCKB.getCKBAddress(account.username) + const p = await new UnipassProvider(UNIPASS_URL, setAccount).init() setAccount({ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - email: account.email!, - address: address.toCKBAddress(), + email: p.email!, + address: p.address.toCKBAddress(), walletType: WalletType.Unipass, - username: account.username, }) - }, [setAccount]) + setProvider(p) + return p + }, [setAccount, setProvider]) const loginMetamask = useCallback(async () => { const Web3Modal = (await import('web3modal')).default @@ -216,8 +200,11 @@ export function useLogin() { provider?.close() switch (walletType) { case WalletType.Unipass: - await loginUnipass() - return provider as Provider + return await new Promise((resolve) => { + const url = `${location.origin}${RoutePath.Unipass}` + location.href = generateUnipassLoginUrl(url, url) + resolve(provider as Provider) + }) case WalletType.Flashsigner: return await new Promise((resolve) => { const url = `${location.origin}${RoutePath.Flashsigner}` @@ -242,48 +229,22 @@ export function useLogin() { } export function useSignTransaction() { - const { walletType } = useAccount() + const setAccount = useSetAccount() + const { account, walletType } = useAccount() const [provider, setProvider] = useAtom(providerAtom) const { loginMetamask } = useLogin() - const signUnipass = useCallback(async (tx: Transaction) => { - const witnessArg = addWitnessArgType( - { - ...Builder.WITNESS_ARGS.RawSecp256k1, - }, - tx.witnesses[0] - ) - - tx = new Transaction(tx.raw, [witnessArg]) - const account = await UP.connect() - const oldCellDeps = tx.raw.cellDeps.map( - (cd) => - new CellDep( - cd.depType, - new OutPoint(cd.outPoint.txHash, cd.outPoint.index) - ) - ) - const { outputs } = tx.raw - const changeOutput = outputs[outputs.length - 1] - changeOutput.capacity = changeOutput.capacity.sub( - new Amount('4500', AmountUnit.shannon) - ) - tx.raw.cellDeps = [] - const provider = new UPCoreSimpleProvier( - account.username, - UNIPASS_CODE_HASH - ) - const { usernameHash } = provider - const signer = new DefaultSigner(provider) - const signedTx = await signer.sign(tx) - signedTx.raw.cellDeps = oldCellDeps - const assetLockProof = await fetchAssetLockProof(usernameHash) - const completedSignedTx = completeTxWithProof( - signedTx, - assetLockProof, - usernameHash - ) - return completedSignedTx - }, []) + const signUnipass = useCallback( + async (tx: Transaction) => { + const p = await new UnipassProvider(UNIPASS_URL, setAccount).connect( + account + ) + const signer = new UnipassSigner(p) + const [signedTx] = signer.toMessages(tx) + setProvider(p) + return signedTx.message as any + }, + [account, setAccount, setProvider] + ) const signMetamask = useCallback( async (tx: Transaction) => { @@ -327,28 +288,21 @@ export function toHex(str: string): string { } export function useSignMessage() { - const { walletType } = useAccount() + const { walletType, pubkey } = useAccount() const [provider, setProvider] = useAtom(providerAtom) const { loginMetamask } = useLogin() - const setAccount = useSetAccount() return useCallback( async (msg: string) => { if (walletType === WalletType.Unipass) { - try { - // UP.initPop() - const acc = await UP.connect({ email: true }) - const res = await UP.authorize( - new UPAuthMessage('PLAIN_MSG', acc.username, msg) - ) - setAccount({ - address: UPCKB.getCKBAddress(acc.username).toCKBAddress(), - pubkey: res.pubkey, - walletType: WalletType.Unipass, - }) - return res.sig - } catch (error) { - return 'N/A' - } + const url = `${location.origin}${RoutePath.Unipass}` + const message = toHex(msg) + location.href = generateUnipassSignUrl( + url, + `${location.origin}${RoutePath.NFTs}`, + pubkey, + message + ) + return message } if (provider != null) { try { @@ -366,7 +320,7 @@ export function useSignMessage() { return 'N/A' } }, - [walletType, provider, loginMetamask, setProvider, setAccount] + [walletType, provider, loginMetamask, setProvider, pubkey] ) } diff --git a/src/hooks/useProfile.ts b/src/hooks/useProfile.ts index 87279a6a..c6547928 100644 --- a/src/hooks/useProfile.ts +++ b/src/hooks/useProfile.ts @@ -6,7 +6,6 @@ import i18n from '../i18n' import { Auth, User } from '../models/user' import { UnipassConfig } from '../utils' import { - accountAtom, useAccount, useAPI, useLogin, @@ -32,8 +31,8 @@ export interface Auths { [key: string]: Profile } -export const profileAtom = atomWithStorage( - 'mibao_account_profile_v3', +const profileAtom = atomWithStorage( + 'mibao_account_profile_v2', null ) @@ -42,19 +41,16 @@ export function useProfile() { const [profile, _setProfile] = useAtom(profileAtom) const setProfile = useCallback( - (p: Partial | null, addr = '') => { + (p: Partial, addr = '') => { return _setProfile((prevProfile) => { const auth = prevProfile?.[address || addr] return { ...prevProfile, ...{ - [address || addr]: - p === null - ? null - : { - ...auth, - ...p, - }, + [address || addr]: { + ...auth, + ...p, + }, }, } }) @@ -66,7 +62,7 @@ export function useProfile() { if (profile == null) { return false } - return !!profile[address]?.auth + return !!profile[address] }, [address, profile]) return { @@ -84,15 +80,13 @@ export function createMessage() { } export function useGetAndSetAuth(): () => Promise { - const { setProfile } = useProfile() + const { profile, setProfile } = useProfile() const signMessage = useSignMessage() - const { walletType } = useAccount() + const { address, walletType } = useAccount() const { loginMetamask } = useLogin() return useAtomCallback( useCallback( - async (get, set) => { - const address = get(accountAtom)?.address || '' - const profile = get(profileAtom) + async (get) => { const auth = profile?.[address] let signature = auth?.auth let message = auth?.message @@ -105,7 +99,8 @@ export function useGetAndSetAuth(): () => Promise { if (!signature) { UnipassConfig.setRedirectUri(location.pathname + location.search) signature = await signMessage(message) - if (signature.includes('N/A')) { + // we don't need set unipass profile auth in here + if (signature.includes('N/A') || walletType === WalletType.Unipass) { throw new Error('signing: user denied') } else { setProfile({ @@ -126,25 +121,13 @@ export function useGetAndSetAuth(): () => Promise { } } - if (walletType === WalletType.Unipass) { - const account = get(accountAtom) - return { - address: addr, - message, - signature, - pub_key: account?.pubkey, - key_type: 'RsaPubkey', - username: account?.username, - } - } - return { address: addr, message, signature, } }, - [signMessage, walletType, setProfile, loginMetamask] + [signMessage, walletType, address, profile, setProfile, loginMetamask] ) ) } diff --git a/src/hooks/useRedeem.ts b/src/hooks/useRedeem.ts index f52e3e62..7981fe6f 100644 --- a/src/hooks/useRedeem.ts +++ b/src/hooks/useRedeem.ts @@ -13,14 +13,13 @@ import { RedeemEventItem, } from '../models/redeem' import { RoutePath } from '../routes' -import { noop, UnipassConfig } from '../utils' +import { generateUnipassRedeemUrl, noop, UnipassConfig } from '../utils' import { useAccount, useAPI, useSignTransaction, WalletType, } from './useAccount' -import UP from 'up-core-test' import { useConfirmDialog } from './useConfirmDialog' import { useToast } from './useToast' import { trackLabels, useTrackClick } from './useTrack' @@ -53,7 +52,7 @@ export interface TransferState { export const useSignRedeem = () => { const history = useHistory() const api = useAPI() - const { walletType } = useAccount() + const { walletType, pubkey } = useAccount() const signTransaction = useSignTransaction() const reactLocation = useLocation() const confirmDialog = useConfirmDialog() @@ -63,9 +62,6 @@ export const useSignRedeem = () => { const toast = useToast() const confirmRedeem = useCallback( async ({ customData, id, onConfirmError }: ConfirmRedeemProps) => { - if (walletType === WalletType.Unipass) { - UP.initPop() - } setIsRedeeming(true) try { const { tx } = await api.getRedeemTransaction(id, walletType) @@ -96,11 +92,35 @@ export const useSignRedeem = () => { throw new Error(err) }) - history.replace(`${RoutePath.RedeemResult}/${id}`, { - tx: signTx, - customData, - }) - } catch (error) { + if (walletType === WalletType.Unipass) { + const url = `${location.origin}${RoutePath.Unipass}` + UnipassConfig.setRedirectUri(`${RoutePath.RedeemResult}/${id}`) + const state: Record = { + prevPathname: reactLocation.pathname, + uuid: id, + } + if (customData) { + state.customData = encodeURIComponent(JSON.stringify(customData)) + } + location.href = generateUnipassRedeemUrl( + url, + url, + pubkey, + signTx, + state + ) + return + } else { + history.replace(`${RoutePath.RedeemResult}/${id}`, { + tx: signTx, + customData, + }) + } + } catch (error: any) { + if (error?.response?.data?.code === 1032) { + toast(t('exchange.not-on-chain')) + return + } setIsRedeeming(false) toast(t('exchange.error')) await onConfirmError?.() @@ -109,6 +129,7 @@ export const useSignRedeem = () => { [ api, history, + pubkey, signTransaction, walletType, reactLocation.pathname, diff --git a/src/pw/Sha256Hasher.ts b/src/pw/Sha256Hasher.ts new file mode 100644 index 00000000..edf11630 --- /dev/null +++ b/src/pw/Sha256Hasher.ts @@ -0,0 +1,33 @@ +import { Hasher, Reader } from '@lay2/pw-core' +import { createHash } from 'crypto' + +export default class Sha256Hasher extends Hasher { + constructor() { + super(createHash('SHA256')) + } + + update(data: string | ArrayBuffer | Reader): Hasher { + let array: Buffer + if (data instanceof Reader) { + /** Reader type params not enter this branch, it's weired */ + array = Buffer.from(data.serializeJson().replace('0x', '')) + } else if (data instanceof ArrayBuffer) { + array = Buffer.from(new Uint8Array(data)) + } else if (typeof data === 'string') { + array = Buffer.from(data) + } else { + array = Buffer.from(new Uint8Array(new Reader(data).toArrayBuffer())) + } + this.h.update(array) + return this + } + + digest(): Reader { + const hex = '0x' + this.h.digest('hex').toString() + return new Reader(hex) + } + + reset(): void { + this.h = createHash('SHA256') + } +} diff --git a/src/pw/UProvider.ts b/src/pw/UProvider.ts deleted file mode 100644 index 15f9b455..00000000 --- a/src/pw/UProvider.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { Reader } from '@lay2/pw-core' -import UPCore, { UPAuthMessage, UPAuthResponse } from 'up-core-test' -import { UPCKBBaseProvider } from 'up-ckb-alpha-test' - -export class UPCoreSimpleProvier extends UPCKBBaseProvider { - async authorize(message: string): Promise { - const { keyType, pubkey, sig: sigHex } = await UPCore.authorize( - new UPAuthMessage('CKB_TX', this.username, message) - ) - - let sig: string = sigHex - if (keyType === 'Secp256k1Pubkey') { - let v = Number.parseInt(sigHex.slice(-2), 16) - if (v >= 27) v -= 27 - sig = new Reader( - sigHex.slice(0, -2) + v.toString(16).padStart(2, '0') - ).serializeJson() - } - - // convert to hex string - return { keyType, pubkey, sig } - } -} diff --git a/src/pw/UnipassProvider.ts b/src/pw/UnipassProvider.ts new file mode 100644 index 00000000..6022119f --- /dev/null +++ b/src/pw/UnipassProvider.ts @@ -0,0 +1,226 @@ +import PWCore, { + Address, + AddressType, + Platform, + Provider, + Script, + HashType, + AddressPrefix, + Blake2bHasher, + ChainID, + CHAIN_SPECS, +} from '@lay2/pw-core' +// import { unipassCache } from '../cache' +import { IS_MAINNET, PW_CODE_HASH } from '../constants' +import { UnipassAccount as Account, WalletType } from '../hooks/useAccount' + +type UP_ACT = 'UP-READY' | 'UP-LOGIN' | 'UP-SIGN' | 'UP-CLOSE' + +PWCore.chainId = IS_MAINNET ? ChainID.ckb : ChainID.ckb_testnet +PWCore.config = IS_MAINNET ? CHAIN_SPECS.Lina : CHAIN_SPECS.Aggron + +interface IFrame { + uniFrame: HTMLIFrameElement +} + +let uniFrame: HTMLIFrameElement + +function openIframe( + title: string, + url: string, + onload?: (this: GlobalEventHandlers, ev: Event) => unknown, + reject?: (r: any) => void +): IFrame { + if (uniFrame !== undefined) closeFrame(uniFrame) + document.body.style.margin = '0' + document.body.style.height = '100%' + document.body.style.overflow = 'hidden' + + const container = document.createElement('div') + container.style.visibility = 'hidden' + uniFrame = document.createElement('iframe') + uniFrame.src = url + uniFrame.style.visibility = 'hidden' + uniFrame.style.width = '100%' + uniFrame.style.height = '100vh' + uniFrame.style.zIndex = '2147483649' + uniFrame.style.position = 'absolute' + uniFrame.style.backgroundColor = 'rgba(0,0,0,.65)' + const { left, top } = document.documentElement.getBoundingClientRect() + uniFrame.style.left = `${left}px` + uniFrame.style.top = `${-top}px` + uniFrame.setAttribute('scrolling', 'no') + uniFrame.setAttribute('frameborder', 'no') + uniFrame.onload = function (this: GlobalEventHandlers, ev: Event) { + uniFrame.style.visibility = 'visible' + return onload?.call(this, ev) + } + + document.body.appendChild(uniFrame) + + return { uniFrame } +} + +export function pubkeyToAddress(pubkey: string): string { + const pubKeyBuffer = Buffer.from(pubkey.replace('0x', ''), 'hex') + const hashHex = new Blake2bHasher() + .update(pubKeyBuffer.buffer) + .digest() + .serializeJson() + .slice(0, 42) + + const script = new Script(PW_CODE_HASH, hashHex, HashType.type) + return script + .toAddress(IS_MAINNET ? AddressPrefix.Mainnet : AddressPrefix.Testnet) + .toCKBAddress() +} + +function closeFrame(frame: HTMLIFrameElement): void { + console.log('[UnipassProvider] close frame') + frame.remove() + document.body.style.removeProperty('overflow') +} + +export interface UnipassAccount { + pubkey: string + email: string +} +export interface UnipassMessage { + upact: UP_ACT + payload?: string | UnipassAccount +} + +export default class UnipassProvider extends Provider { + private _email: string | undefined + // eslint-disable-next-line prettier/prettier + private msgHandler: + // eslint-disable-next-line prettier/prettier + | ((this: Window, event: MessageEvent) => unknown) + | undefined + + private readonly setStorage: (account: Account) => void + + get email(): string | undefined { + return this._email + } + + constructor( + private readonly UNIPASS_BASE: string, + setStorage: (newValue: Account | null) => void + ) { + super(Platform.ckb) + this.setStorage = setStorage + } + + async connect(account: Account | null): Promise { + if (account !== null) { + const { address, email } = account + this.address = new Address(address, AddressType.ckb) + this._email = email + return await Promise.resolve(this) + } + + return await this.init() + } + + async init(): Promise { + return await new Promise((resolve, reject) => { + const { uniFrame } = openIframe( + 'login', + `${this.UNIPASS_BASE}/#/login`, + () => { + const msg: UnipassMessage = { + upact: 'UP-LOGIN', + } + uniFrame.contentWindow?.postMessage(msg, this.UNIPASS_BASE) + } + ) + + this.msgHandler = (event) => { + if (typeof event.data === 'object' && 'upact' in event.data) { + const msg = event.data as UnipassMessage + console.log(msg) + if (msg.upact === 'UP-LOGIN') { + const { pubkey, email } = msg.payload as UnipassAccount + const ckbAddress = pubkeyToAddress(pubkey) + this.address = new Address(ckbAddress, AddressType.ckb) + console.log('address', this.address) + this.setStorage({ + address: ckbAddress, + email: email, + walletType: WalletType.Unipass, + }) + this._email = email + this.msgHandler != null && + window.removeEventListener('message', this.msgHandler) + uniFrame !== undefined && closeFrame(uniFrame) + resolve(this) + } else if (msg.upact === 'UP-CLOSE') { + uniFrame !== undefined && closeFrame(uniFrame) + resolve(this) + } + } + } + window.addEventListener('message', this.msgHandler, false) + }) + } + + async sign(message: string): Promise { + console.log('[UnipassProvider] message to sign', message) + return await new Promise((resolve) => { + const { uniFrame } = openIframe('sign', `${this.UNIPASS_BASE}/#/sign`) + this.msgHandler = (event) => { + if (typeof event.data === 'object' && 'upact' in event.data) { + const msg = event.data as UnipassMessage + console.log('log', msg) + if (msg.upact === 'UP-SIGN') { + const signature = msg.payload as string + console.log('[Sign] signature: ', signature) + this.msgHandler != null && + window.removeEventListener('message', this.msgHandler) + uniFrame !== undefined && closeFrame(uniFrame) + resolve(`0x01${signature.replace('0x', '')}`) + } else if (msg.upact === 'UP-READY') { + console.log('[UnipassProvider] sign READY') + const msg: UnipassMessage = { + upact: 'UP-SIGN', + payload: message, + } + uniFrame.contentWindow?.postMessage(msg, this.UNIPASS_BASE) + console.log('[UnipassProvider] opend') + } else if (msg.upact === 'UP-LOGIN') { + const { pubkey, email } = msg.payload as UnipassAccount + const ckbAddress = pubkeyToAddress(pubkey) + this.address = new Address(ckbAddress, AddressType.ckb) + this.setStorage({ + address: ckbAddress, + email: email, + walletType: WalletType.Unipass, + }) + this._email = email + this.msgHandler != null && + window.removeEventListener('message', this.msgHandler) + uniFrame !== undefined && closeFrame(uniFrame) + // window.location.reload(); + resolve('0x') + } else if (msg.upact === 'UP-CLOSE') { + uniFrame !== undefined && closeFrame(uniFrame) + resolve('N/A') + } + } + } + + window.addEventListener('message', this.msgHandler, false) + }) + } + + close(): void { + this.msgHandler != null && + window.removeEventListener('message', this.msgHandler) + } + + terminate(): void { + this.close() + uniFrame !== undefined && closeFrame(uniFrame) + } +} diff --git a/src/pw/UnipassSigner.ts b/src/pw/UnipassSigner.ts new file mode 100644 index 00000000..20ac17ee --- /dev/null +++ b/src/pw/UnipassSigner.ts @@ -0,0 +1,21 @@ +import { Signer, Message, Provider, Blake2bHasher } from '@lay2/pw-core' +export default class UnipassSigner extends Signer { + constructor(public readonly provider: Provider) { + super(new Blake2bHasher()) + } + + async signMessages(messages: Message[]): Promise { + const sigs = [] + for (const message of messages) { + if ( + this.provider.address.toLockScript().toHash() === message.lock.toHash() + ) { + sigs.push(await this.provider.sign(message.message)) + } else { + sigs.push('0x') + } + } + + return sigs + } +} diff --git a/src/pw/toPwTransaction.ts b/src/pw/toPwTransaction.ts index ff1e5df2..e65a7fc7 100644 --- a/src/pw/toPwTransaction.ts +++ b/src/pw/toPwTransaction.ts @@ -36,26 +36,6 @@ const UnipassWitnessArgs = { output_type: '', } -export const addWitnessArgType = (wa: typeof Builder.WITNESS_ARGS.RawSecp256k1, witness: string) => { - const witnessArg = { - ...wa, - } - const oldWitnessArg = new core.WitnessArgs(new Reader(witness)) - const inputType = oldWitnessArg.getInputType() - const outputType = oldWitnessArg.getOutputType() - if (inputType.hasValue()) { - witnessArg.input_type = new Reader( - inputType.value().raw() - ).serializeJson() - } - if (outputType.hasValue()) { - witnessArg.output_type = new Reader( - outputType.value().raw() - ).serializeJson() - } - return witnessArg -} - export async function rawTransactionToPWTransaction( rawTx: RPC.RawTransaction, walletType?: WalletType diff --git a/src/routes/AccountChange.tsx b/src/routes/AccountChange.tsx index fa13acc7..e8ceb817 100644 --- a/src/routes/AccountChange.tsx +++ b/src/routes/AccountChange.tsx @@ -1,8 +1,9 @@ /* eslint-disable @typescript-eslint/prefer-nullish-coalescing */ -import React, { useCallback, useEffect, useRef } from 'react' +import React, { useEffect, useRef } from 'react' import { useHistory, useLocation } from 'react-router-dom' import { useTranslation } from 'react-i18next' import { useGetAndSetAuth, useProfile } from '../hooks/useProfile' +import { UnipassConfig } from '../utils' import { useAccount, useAccountStatus, WalletType } from '../hooks/useAccount' import { RoutePath } from './path' import { @@ -10,11 +11,13 @@ import { useConfirmDialog, } from '../hooks/useConfirmDialog' import { useWechatShare } from '../hooks/useWechat' +import { useToast } from '../hooks/useToast' const allowWithoutAuthList = new Set([ + RoutePath.Unipass, RoutePath.Explore, RoutePath.Apps, - // RoutePath.AddressCollector, + RoutePath.AddressCollector, RoutePath.Claim, RoutePath.NotFound, RoutePath.Redeem, @@ -49,6 +52,7 @@ export const AccountChange: React.FC = ({ children }) => { const isSigning = useRef(false) const onOpenConfirm = useConfirmDialog() const onCloseConfirm = useCloseConfirmDialog() + const toast = useToast() const [t] = useTranslation('translations') const wechatShare = useWechatShare() useEffect(() => { @@ -61,28 +65,6 @@ export const AccountChange: React.FC = ({ children }) => { // eslint-disable-next-line react-hooks/exhaustive-deps }, []) - const signForVerify = useCallback(async () => { - isSigning.current = true - await onOpenConfirm({ - type: 'text', - title: t('auth.title'), - content: t('auth.content'), - okText: t('auth.ok'), - onConfirm: async () => { - try { - await getAuth() - if (WalletType.Flashsigner !== walletType) { - onCloseConfirm() - } - } catch (error) { - onCloseConfirm() - } finally { - isSigning.current = false - } - }, - }) - }, [getAuth, onCloseConfirm, onOpenConfirm, t, walletType]) - useEffect(() => { const pathInForceAuthList = forceAuthList.has( location.pathname + location.search @@ -97,10 +79,31 @@ export const AccountChange: React.FC = ({ children }) => { !isSigning.current ) { if ( - WalletType.Unipass === walletType || + (WalletType.Unipass === walletType && pubkey) || WalletType.Metamask === walletType ) { - signForVerify() + isSigning.current = true + onOpenConfirm({ + type: 'text', + title: t('auth.title'), + content: t('auth.content'), + okText: t('auth.ok'), + onConfirm: async () => { + if (pathInForceAuthList && WalletType.Unipass === walletType) { + UnipassConfig.setRedirectUri(location.pathname + location.search) + } + try { + await getAuth() + if (WalletType.Metamask === walletType) { + onCloseConfirm() + } + } catch (error) { + // + } finally { + isSigning.current = false + } + }, + }) } } }, [ @@ -112,7 +115,10 @@ export const AccountChange: React.FC = ({ children }) => { isLogined, pubkey, t, - signForVerify, + getAuth, + onOpenConfirm, + onCloseConfirm, + toast, ]) return <>{children} diff --git a/src/routes/path.ts b/src/routes/path.ts index f17e687d..c7ff03f4 100644 --- a/src/routes/path.ts +++ b/src/routes/path.ts @@ -14,6 +14,7 @@ export enum RoutePath { Explore = '/explore', ExploreAll = '/explore/all', Help = '/help', + Unipass = '/unipass', Apps = '/apps', License = '/license', AddressCollector = '/addresses', diff --git a/src/routes/routes.ts b/src/routes/routes.ts index 19f1c0be..bb2fd921 100644 --- a/src/routes/routes.ts +++ b/src/routes/routes.ts @@ -9,6 +9,7 @@ import { Profile } from '../views/Profile' import { ImagePreview } from '../views/Profile/ImagePreview' import { Explore } from '../views/Explore/index' import { Help } from '../views/Help' +import { Unipass } from '../views/Unipass' import { Apps } from '../views/Apps' import { AddressCollector } from '../views/AddressCollector' import { Collection } from '../views/Collection' @@ -139,6 +140,12 @@ export const routes: MibaoRouterProps[] = [ key: 'License', path: RoutePath.License, }, + { + component: Unipass, + exact: false, + key: 'Unipass', + path: RoutePath.Unipass, + }, { component: Apps, exact: true, diff --git a/src/utils/unipass.ts b/src/utils/unipass.ts index 211f8a81..879f31ac 100644 --- a/src/utils/unipass.ts +++ b/src/utils/unipass.ts @@ -1,5 +1,5 @@ /* eslint-disable @typescript-eslint/no-extraneous-class */ -import PWCore, { Transaction as PwTransaction } from '@lay2/pw-core' +import { Transaction as PwTransaction } from '@lay2/pw-core' import { IS_MAINNET, PW_CODE_HASH, UNIPASS_URL } from '../constants' import { UnipassAction } from '../models/unipass' import i18n from '../i18n' @@ -10,6 +10,7 @@ import { AddressPrefix, } from '@nervosnetwork/ckb-sdk-utils' import { WalletType } from '../hooks/useAccount' +import { Config } from '@nervina-labs/flashsigner' export function isUnipassV2Address(address: string) { try { @@ -19,6 +20,8 @@ export function isUnipassV2Address(address: string) { } } +const flashsignerLockCodeHash = Config.getFlashsignerLock().codeHash + export function generateOldAddress( address: string, walletType?: WalletType | undefined @@ -28,7 +31,7 @@ export function generateOldAddress( } try { const script = addressToScript(address) - if (script.codeHash !== PWCore.config.pwLock.script.codeHash) { + if (script.codeHash === flashsignerLockCodeHash) { return address } return fullPayloadToAddress({ diff --git a/src/views/AddressCollector/index.tsx b/src/views/AddressCollector/index.tsx index 5e72fd2f..419b8c77 100644 --- a/src/views/AddressCollector/index.tsx +++ b/src/views/AddressCollector/index.tsx @@ -5,11 +5,7 @@ import { ReactComponent as AddressesSvg } from '../../assets/svg/address.svg' import { ReactComponent as AddrSuccess } from '../../assets/svg/addr-success.svg' import { ReactComponent as AddrDup } from '../../assets/svg/addr-dup.svg' import detectEthereumProvider from '@metamask/detect-provider' -import { - IS_IMTOKEN, - IS_MOBILE_ETH_WALLET, - IS_UNIPASS_NOT_AVAILABLE, -} from '../../constants' +import { IS_IMTOKEN, IS_MOBILE_ETH_WALLET } from '../../constants' import { useGetAndSetAuth, useProfile } from '../../hooks/useProfile' import { Redirect, useHistory, useParams } from 'react-router-dom' import { ReactComponent as ImtokenSvg } from '../../assets/svg/imtoken.svg' @@ -25,6 +21,7 @@ import { useAccountStatus, useAPI, useLogin, + useProvider, WalletType, } from '../../hooks/useAccount' import { useConfirmDialog } from '../../hooks/useConfirmDialog' @@ -153,6 +150,7 @@ export const AddressCollector: React.FC = () => { const api = useAPI() const { walletType, address } = useAccount() const { isLogined } = useAccountStatus() + const provider = useProvider() const { isAuthenticated } = useProfile() const getAuth = useGetAndSetAuth() const { id } = useParams<{ id: string }>() @@ -233,6 +231,10 @@ export const AddressCollector: React.FC = () => { const loginBtnOnClick = useCallback( async (targetType = WalletType.Unipass) => { setLoading(true, targetType) + if (walletType === targetType && isLogined) { + await submit(targetType) + return + } if (WalletType.Metamask !== targetType) { UnipassConfig.setRedirectUri( id @@ -285,11 +287,28 @@ export const AddressCollector: React.FC = () => { ) useLayoutEffect(() => { - if (isLogined && isAddressPackageExist && isAuthenticated && walletType) { - submit(walletType).catch(Boolean) + if (isLogined && walletType && address && isAddressPackageExist) { + if ( + walletType === WalletType.Metamask && + provider?.address?.addressString + ) { + submit(walletType).catch(Boolean) + } + if ( + walletType === WalletType.Unipass || + walletType === WalletType.Flashsigner + ) { + submit(walletType).catch(Boolean) + } } // eslint-disable-next-line react-hooks/exhaustive-deps - }, [walletType, isLogined, isAddressPackageExist, isAuthenticated, address]) + }, [ + walletType, + isLogined, + address, + provider?.address?.addressString, + isAddressPackageExist, + ]) const imgs = { [SubmitStatus.None]: , @@ -314,7 +333,7 @@ export const AddressCollector: React.FC = () => { {IS_MOBILE_ETH_WALLET ? null : ( { )} - {IS_UNIPASS_NOT_AVAILABLE ? null : ( - - {t('login.connect.unipass')} - - )} + + {t('login.connect.unipass')} + { )} - {IS_UNIPASS_NOT_AVAILABLE ? null : ( - - {t('login.connect.unipass')} - - )} + + {t('login.connect.unipass')} + { {IS_MOBILE_ETH_WALLET ? null : ( { )} - {IS_UNIPASS_NOT_AVAILABLE ? null : ( - - - {t('login.connect.unipass')} - {t('login.connect.or-use-email')} - - - )} + + + {t('login.connect.unipass')} + {t('login.connect.or-use-email')} + + { }) return } - console.log('is fetching') setIsRefetching(true) const auth = await getAuth().catch((err) => { setIsRefetching(false) diff --git a/src/views/RedeemResult/index.tsx b/src/views/RedeemResult/index.tsx index 73a3a008..0ecda658 100644 --- a/src/views/RedeemResult/index.tsx +++ b/src/views/RedeemResult/index.tsx @@ -58,8 +58,6 @@ export const RedeemResult: React.FC = () => { const { walletType } = useAccount() const { t, i18n } = useTranslation('translations') const transfer = useCallback(async () => { - // eslint-disable-next-line no-debugger - debugger const { signature = '', tx, customData } = location?.state if (tx) { const { data } = await api.redeem({ @@ -99,7 +97,6 @@ export const RedeemResult: React.FC = () => { staleTime: Infinity, } ) - console.log(isError) const isSucceed = !isError && data const hasCustomData = !!location.state?.customData const resultProps = isSucceed diff --git a/src/views/SendRedEnvelope/hooks/useSendRedEnvelope.tsx b/src/views/SendRedEnvelope/hooks/useSendRedEnvelope.tsx index 2de7ed84..61eb6922 100644 --- a/src/views/SendRedEnvelope/hooks/useSendRedEnvelope.tsx +++ b/src/views/SendRedEnvelope/hooks/useSendRedEnvelope.tsx @@ -7,7 +7,6 @@ import { import { useCallback, useEffect, useState } from 'react' import { useTranslation } from 'react-i18next' import { useHistory } from 'react-router-dom' -import UP from 'up-core-test' import { useAccount, useAPI, @@ -19,7 +18,9 @@ import { useToast } from '../../../hooks/useToast' import { useUnipassV2Dialog } from '../../../hooks/useUnipassV2Dialog' import { RuleType, UnsignedTransactionSendRedEnvelope } from '../../../models' import { FlashsignerAction } from '../../../models/flashsigner' +import { UnipassAction } from '../../../models/unipass' import { RoutePath } from '../../../routes' +import { generateUnipassUrl } from '../../../utils' import { FormInfoState, useRouteLocation } from './useRouteLocation' const METAMASK_USER_DENIED_MESSAGE_SIGNATURE_CODE = 4001 @@ -28,7 +29,7 @@ export function useSendRedEnvelope() { const api = useAPI() const routeLocation = useRouteLocation() const getAuth = useGetAndSetAuth() - const { walletType } = useAccount() + const { walletType, pubkey } = useAccount() const signTransaction = useSignTransaction() const { replace, push } = useHistory() const [isSending, setSending] = useState(false) @@ -46,6 +47,9 @@ export function useSendRedEnvelope() { signature! ) } + if (walletType === WalletType.Unipass) { + return signature ? data.tx : await signTransaction(data.tx) + } return await signTransaction(data.tx) }, [routeLocation.state, signTransaction, walletType] @@ -54,9 +58,6 @@ export function useSendRedEnvelope() { const unipassDialog = useUnipassV2Dialog() const onSend = useCallback( async (formInfo: FormInfoState) => { - if (walletType === WalletType.Unipass) { - UP.initPop() - } setSending(true) setError(undefined) try { @@ -97,6 +98,22 @@ export function useSendRedEnvelope() { return } + if (!signature && walletType === WalletType.Unipass) { + const url = `${location.origin}${RoutePath.Unipass}` + location.href = generateUnipassUrl( + UnipassAction.RedEnvelope, + url, + url, + pubkey, + signTx, + { + ...formInfo, + tokenUuids: formInfo.tokenUuids.join(','), + } + ) + return + } + const rewardAmount = Number(formInfo.rewardAmount) ?? 1 const uuid = await api .createRedEnvelopeEvent( @@ -137,6 +154,7 @@ export function useSendRedEnvelope() { api, getAuth, getSignTx, + pubkey, push, replace, routeLocation.state, diff --git a/src/views/Transfer/index.tsx b/src/views/Transfer/index.tsx index bd53dc23..73368aa0 100644 --- a/src/views/Transfer/index.tsx +++ b/src/views/Transfer/index.tsx @@ -24,13 +24,14 @@ import { verifyCkbAddress, verifyEthAddress, verifyDasAddress, + generateUnipassSignTxUrl, buildFlashsignerOptions, isUnipassV2Address, } from '../../utils' -import UP from 'up-core-test' import { useWidth } from '../../hooks/useWidth' import { useQuery } from 'react-query' import { CONTAINER_MAX_WIDTH, IS_IPHONE, IS_MAINNET } from '../../constants' +import UnipassProvider from '../../pw/UnipassProvider' import { Address, AddressType } from '@lay2/pw-core' import { useTranslation } from 'react-i18next' import { AccountRecord } from 'das-sdk' @@ -43,6 +44,7 @@ import { useAccount, useAccountStatus, useAPI, + useProvider, useSignTransaction, WalletType, } from '../../hooks/useAccount' @@ -129,7 +131,8 @@ export const Transfer: React.FC = () => { const signTransaction = useSignTransaction() const api = useAPI() const { isLogined, prevAddress } = useAccountStatus() - const { address, walletType } = useAccount() + const { address, walletType, pubkey } = useAccount() + const provider = useProvider() const prevState = routerLocation.state?.prevState const isRedirectFromSigner = !!routerLocation.state?.signature || !!routerLocation.state?.tx @@ -159,10 +162,16 @@ export const Transfer: React.FC = () => { ) useEffect(() => { - if (prevAddress && address && prevAddress !== address) { + if ( + prevAddress && + address && + prevAddress !== address && + provider instanceof UnipassProvider + ) { + provider.terminate() history.replace(RoutePath.NFT) } - }, [prevAddress, address, history]) + }, [prevAddress, address, provider, history]) const ckbAddressType = useMemo(() => { return verifyAddress(ckbAddress, address) @@ -272,9 +281,6 @@ export const Transfer: React.FC = () => { }, [confirmDialog, finalUsedAddress, t, nftDetail?.script_type]) const sendNFT = useCallback(async () => { - if (walletType === WalletType.Unipass) { - UP.initPop() - } setIsSendingNFT(true) try { const isFinalUsedAddressTypeEth = @@ -344,11 +350,38 @@ export const Transfer: React.FC = () => { throw new Error(err) }) - await api.transfer(id, signTx, sentAddress).catch((err) => { - stopTranfer(false, FailedMessage.TranferFail) - console.log(err) - throw err - }) + if (walletType === WalletType.Unipass) { + const { signature } = routerLocation.state ?? {} + if (signature) { + await api.transfer(id, tx, sentAddress, signature).catch((err) => { + stopTranfer( + false, + FailedMessage.TranferFail, + err?.response?.data?.code + ) + console.log(err) + throw err + }) + } else { + const url = `${location.origin}${RoutePath.Unipass}` + location.href = generateUnipassSignTxUrl(url, url, pubkey, signTx, { + uuid: id, + ckbAddress: sentAddress, + }) + return + } + } else { + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + await api.transfer(id, signTx, sentAddress).catch((err) => { + stopTranfer( + false, + FailedMessage.TranferFail, + err?.response?.data?.code + ) + console.log(err) + throw err + }) + } } catch (error) { console.log(error) return @@ -362,6 +395,7 @@ export const Transfer: React.FC = () => { api, walletType, routerLocation.state, + pubkey, stopTranfer, address, nftDetail, diff --git a/src/views/Unipass/index.tsx b/src/views/Unipass/index.tsx new file mode 100644 index 00000000..f60aaf17 --- /dev/null +++ b/src/views/Unipass/index.tsx @@ -0,0 +1,128 @@ +import React, { useEffect } from 'react' +import { useHistory } from 'react-router-dom' +import { useSetAccount, WalletType } from '../../hooks/useAccount' +import { useProfile } from '../../hooks/useProfile' +import { useRouteQuery } from '../../hooks/useRouteQuery' +import { + UnipassAction, + UnipassResponse, + UnipassLoginData, + UnipassSignData, +} from '../../models/unipass' +import { pubkeyToAddress } from '../../pw/UnipassProvider' +import { RoutePath } from '../../routes' +import { UnipassConfig } from '../../utils' + +export const Unipass: React.FC = () => { + const action = useRouteQuery('action', UnipassAction.Login) + const ret = useRouteQuery('unipass_ret', '{}') + const unipassInfo: UnipassResponse = JSON.parse(ret) + const history = useHistory() + const setUnipassAccount = useSetAccount() + const { setProfile, profile } = useProfile() + const ps = useRouteQuery('prev_state', '{}') + const prevState = JSON.parse(ps) + const redirectUri = useRouteQuery('redirect', '') + useEffect(() => { + const { code } = unipassInfo + switch (action) { + case UnipassAction.Login: { + UnipassConfig.clear() + if (code !== 200 && code !== 401) { + history.replace(redirectUri || RoutePath.Login) + break + } + const data = unipassInfo?.data as UnipassLoginData + const addr = pubkeyToAddress(data.pubkey) + const pubkey = data.pubkey + setUnipassAccount({ + email: data.email, + pubkey, + address: addr, + walletType: WalletType.Unipass, + }) + history.replace(redirectUri || RoutePath.NFTs) + break + } + case UnipassAction.Sign: { + UnipassConfig.clear() + if (code !== 200 && code !== 401) { + history.replace(redirectUri || RoutePath.NFTs) + break + } + const data = unipassInfo?.data as UnipassSignData + const addr = pubkeyToAddress(data.pubkey) + setUnipassAccount({ + pubkey: data.pubkey, + address: addr, + walletType: WalletType.Unipass, + }) + if (code === 200) { + setProfile({ + auth: `0x01${data.sig.replace('0x', '')}`, + }) + } + history.replace(redirectUri ?? RoutePath.NFTs) + break + } + case UnipassAction.SignTx: { + const id = prevState.uuid as string + if (code !== 200) { + history.replace(`/transfer/${id}`) + break + } + const data = unipassInfo?.data as UnipassSignData + history.replace(`/transfer/${id}`, { + signature: `0x01${data.sig.replace('0x', '')}`, + prevState, + }) + break + } + case UnipassAction.Redeem: { + const id = prevState.uuid as string + const prevPath = prevState.prevPathname as string + if (code !== 200) { + history.replace(prevPath) + break + } + const data = unipassInfo?.data as UnipassSignData + const state: Record = { + signature: `0x01${data.sig.replace('0x', '')}`, + } + if (prevState.customData) { + state.customData = JSON.parse( + decodeURIComponent(prevState.customData) || '{}' + ) + } + history.replace(`${RoutePath.RedeemResult}/${id}`, state) + break + } + case UnipassAction.RedEnvelope: { + const data = unipassInfo?.data as UnipassSignData + if (code === 200) { + history.replace(RoutePath.RedEnvelope, { + signature: `0x01${data.sig.replace('0x', '')}`, + prevState, + }) + break + } + history.replace(RoutePath.RedEnvelope, { + prevState, + }) + break + } + default: + break + } + }, [ + unipassInfo, + action, + history, + setProfile, + setUnipassAccount, + profile, + prevState, + redirectUri, + ]) + return null +} diff --git a/yarn.lock b/yarn.lock index d631d7aa..be8eeb98 100644 --- a/yarn.lock +++ b/yarn.lock @@ -20,13 +20,6 @@ dependencies: "@babel/highlight" "^7.12.13" -"@babel/code-frame@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.7.tgz#44416b6bd7624b998f5b1af5d470856c40138789" - integrity sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg== - dependencies: - "@babel/highlight" "^7.16.7" - "@babel/compat-data@^7.12.1", "@babel/compat-data@^7.13.11", "@babel/compat-data@^7.13.15", "@babel/compat-data@^7.13.8": version "7.13.15" resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.13.15.tgz" @@ -84,28 +77,12 @@ jsesc "^2.5.1" source-map "^0.5.0" -"@babel/generator@^7.17.3": - version "7.17.3" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.17.3.tgz#a2c30b0c4f89858cb87050c3ffdfd36bdf443200" - integrity sha512-+R6Dctil/MgUsZsZAkYgK+ADNSZzJRRy0TvY65T71z/CR854xHQ1EweBYXdfT+HNeN7w0cSJJEzgxZMv40pxsg== - dependencies: - "@babel/types" "^7.17.0" - jsesc "^2.5.1" - source-map "^0.5.0" - "@babel/helper-annotate-as-pure@^7.0.0", "@babel/helper-annotate-as-pure@^7.10.4", "@babel/helper-annotate-as-pure@^7.12.13": version "7.12.13" resolved "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz" dependencies: "@babel/types" "^7.12.13" -"@babel/helper-annotate-as-pure@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz#bb2339a7534a9c128e3102024c60760a3a7f3862" - integrity sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw== - dependencies: - "@babel/types" "^7.16.7" - "@babel/helper-builder-binary-assignment-operator-visitor@^7.12.13": version "7.12.13" resolved "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.12.13.tgz" @@ -132,19 +109,6 @@ "@babel/helper-replace-supers" "^7.13.0" "@babel/helper-split-export-declaration" "^7.12.13" -"@babel/helper-create-class-features-plugin@^7.16.7": - version "7.17.1" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.1.tgz#9699f14a88833a7e055ce57dcd3ffdcd25186b21" - integrity sha512-JBdSr/LtyYIno/pNnJ75lBcqc3Z1XXujzPanHqjvvrhOA+DTceTFuJi8XjmWTZh4r3fsdfqaCMN0iZemdkxZHQ== - dependencies: - "@babel/helper-annotate-as-pure" "^7.16.7" - "@babel/helper-environment-visitor" "^7.16.7" - "@babel/helper-function-name" "^7.16.7" - "@babel/helper-member-expression-to-functions" "^7.16.7" - "@babel/helper-optimise-call-expression" "^7.16.7" - "@babel/helper-replace-supers" "^7.16.7" - "@babel/helper-split-export-declaration" "^7.16.7" - "@babel/helper-create-regexp-features-plugin@^7.12.13": version "7.12.17" resolved "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.17.tgz" @@ -165,13 +129,6 @@ resolve "^1.14.2" semver "^6.1.2" -"@babel/helper-environment-visitor@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz#ff484094a839bde9d89cd63cba017d7aae80ecd7" - integrity sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag== - dependencies: - "@babel/types" "^7.16.7" - "@babel/helper-explode-assignable-expression@^7.12.13": version "7.13.0" resolved "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.13.0.tgz" @@ -186,28 +143,12 @@ "@babel/template" "^7.12.13" "@babel/types" "^7.12.13" -"@babel/helper-function-name@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz#f1ec51551fb1c8956bc8dd95f38523b6cf375f8f" - integrity sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA== - dependencies: - "@babel/helper-get-function-arity" "^7.16.7" - "@babel/template" "^7.16.7" - "@babel/types" "^7.16.7" - "@babel/helper-get-function-arity@^7.12.13": version "7.12.13" resolved "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz" dependencies: "@babel/types" "^7.12.13" -"@babel/helper-get-function-arity@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz#ea08ac753117a669f1508ba06ebcc49156387419" - integrity sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw== - dependencies: - "@babel/types" "^7.16.7" - "@babel/helper-hoist-variables@^7.13.0": version "7.13.0" resolved "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.13.0.tgz" @@ -215,26 +156,12 @@ "@babel/traverse" "^7.13.0" "@babel/types" "^7.13.0" -"@babel/helper-hoist-variables@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz#86bcb19a77a509c7b77d0e22323ef588fa58c246" - integrity sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg== - dependencies: - "@babel/types" "^7.16.7" - "@babel/helper-member-expression-to-functions@^7.13.0", "@babel/helper-member-expression-to-functions@^7.13.12": version "7.13.12" resolved "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz" dependencies: "@babel/types" "^7.13.12" -"@babel/helper-member-expression-to-functions@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.7.tgz#42b9ca4b2b200123c3b7e726b0ae5153924905b0" - integrity sha512-VtJ/65tYiU/6AbMTDwyoXGPKHgTsfRarivm+YbB5uAzKUyuPjgZSgAFeG87FCigc7KNHu2Pegh1XIT3lXjvz3Q== - dependencies: - "@babel/types" "^7.16.7" - "@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.12.1", "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.13.12": version "7.13.12" resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.13.12.tgz" @@ -260,22 +187,10 @@ dependencies: "@babel/types" "^7.12.13" -"@babel/helper-optimise-call-expression@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz#a34e3560605abbd31a18546bd2aad3e6d9a174f2" - integrity sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w== - dependencies: - "@babel/types" "^7.16.7" - "@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": version "7.13.0" resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz" -"@babel/helper-plugin-utils@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz#aa3a8ab4c3cceff8e65eb9e73d87dc4ff320b2f5" - integrity sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA== - "@babel/helper-remap-async-to-generator@^7.13.0": version "7.13.0" resolved "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.13.0.tgz" @@ -293,17 +208,6 @@ "@babel/traverse" "^7.13.0" "@babel/types" "^7.13.12" -"@babel/helper-replace-supers@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz#e9f5f5f32ac90429c1a4bdec0f231ef0c2838ab1" - integrity sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw== - dependencies: - "@babel/helper-environment-visitor" "^7.16.7" - "@babel/helper-member-expression-to-functions" "^7.16.7" - "@babel/helper-optimise-call-expression" "^7.16.7" - "@babel/traverse" "^7.16.7" - "@babel/types" "^7.16.7" - "@babel/helper-simple-access@^7.12.13", "@babel/helper-simple-access@^7.13.12": version "7.13.12" resolved "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.13.12.tgz" @@ -322,22 +226,10 @@ dependencies: "@babel/types" "^7.12.13" -"@babel/helper-split-export-declaration@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz#0b648c0c42da9d3920d85ad585f2778620b8726b" - integrity sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw== - dependencies: - "@babel/types" "^7.16.7" - "@babel/helper-validator-identifier@^7.12.11": version "7.12.11" resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz" -"@babel/helper-validator-identifier@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad" - integrity sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw== - "@babel/helper-validator-option@^7.12.1", "@babel/helper-validator-option@^7.12.17": version "7.12.17" resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz" @@ -367,15 +259,6 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/highlight@^7.16.7": - version "7.16.10" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.16.10.tgz#744f2eb81579d6eea753c227b0f570ad785aba88" - integrity sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw== - dependencies: - "@babel/helper-validator-identifier" "^7.16.7" - chalk "^2.0.0" - js-tokens "^4.0.0" - "@babel/parser@^7.1.0", "@babel/parser@^7.12.3", "@babel/parser@^7.13.15", "@babel/parser@^7.7.0": version "7.13.15" resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.13.15.tgz" @@ -384,11 +267,6 @@ version "7.13.13" resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.13.13.tgz" -"@babel/parser@^7.16.7", "@babel/parser@^7.17.3": - version "7.17.3" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.17.3.tgz#b07702b982990bf6fdc1da5049a23fece4c5c3d0" - integrity sha512-7yJPvPV+ESz2IUTPbOL+YkIGyCqOyNIzdguKQuJGnH7bg1WTIifuM21YqokFt/THWh1AkCRn9IgoykTRCBVpzA== - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.13.12": version "7.13.12" resolved "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.13.12.tgz" @@ -419,14 +297,6 @@ "@babel/helper-create-class-features-plugin" "^7.13.0" "@babel/helper-plugin-utils" "^7.13.0" -"@babel/plugin-proposal-class-properties@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz#925cad7b3b1a2fcea7e59ecc8eb5954f961f91b0" - integrity sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/plugin-proposal-decorators@7.12.1": version "7.12.1" resolved "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.12.1.tgz" @@ -1170,15 +1040,6 @@ "@babel/parser" "^7.12.13" "@babel/types" "^7.12.13" -"@babel/template@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.7.tgz#8d126c8701fde4d66b264b3eba3d96f07666d155" - integrity sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w== - dependencies: - "@babel/code-frame" "^7.16.7" - "@babel/parser" "^7.16.7" - "@babel/types" "^7.16.7" - "@babel/traverse@^7.1.0", "@babel/traverse@^7.12.1", "@babel/traverse@^7.13.15", "@babel/traverse@^7.7.0": version "7.13.15" resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.13.15.tgz" @@ -1205,22 +1066,6 @@ debug "^4.1.0" globals "^11.1.0" -"@babel/traverse@^7.16.7": - version "7.17.3" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.17.3.tgz#0ae0f15b27d9a92ba1f2263358ea7c4e7db47b57" - integrity sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw== - dependencies: - "@babel/code-frame" "^7.16.7" - "@babel/generator" "^7.17.3" - "@babel/helper-environment-visitor" "^7.16.7" - "@babel/helper-function-name" "^7.16.7" - "@babel/helper-hoist-variables" "^7.16.7" - "@babel/helper-split-export-declaration" "^7.16.7" - "@babel/parser" "^7.17.3" - "@babel/types" "^7.17.0" - debug "^4.1.0" - globals "^11.1.0" - "@babel/types@^7.0.0", "@babel/types@^7.12.1", "@babel/types@^7.12.13", "@babel/types@^7.12.6", "@babel/types@^7.13.0", "@babel/types@^7.13.12", "@babel/types@^7.13.13", "@babel/types@^7.13.14", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.7.0": version "7.13.14" resolved "https://registry.npmjs.org/@babel/types/-/types-7.13.14.tgz" @@ -1229,14 +1074,6 @@ lodash "^4.17.19" to-fast-properties "^2.0.0" -"@babel/types@^7.16.7", "@babel/types@^7.17.0": - version "7.17.0" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.17.0.tgz#a826e368bccb6b3d84acd76acad5c0d87342390b" - integrity sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw== - dependencies: - "@babel/helper-validator-identifier" "^7.16.7" - to-fast-properties "^2.0.0" - "@bcoe/v8-coverage@^0.2.3": version "0.2.3" resolved "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz" @@ -2352,7 +2189,7 @@ "@types/yargs" "^15.0.0" chalk "^4.0.0" -"@lay2/pw-core@0.4.0-alpha.13", "@lay2/pw-core@^0.4.0-alpha.13": +"@lay2/pw-core@0.4.0-alpha.13": version "0.4.0-alpha.13" resolved "https://registry.yarnpkg.com/@lay2/pw-core/-/pw-core-0.4.0-alpha.13.tgz#8e5978288aa0a5e5f063826956bb7963dfba274e" integrity sha512-2dBH2lResdhmqb6rpnK4hkEYrwhGSqgTd1RmPpXWzcce5yFSfbtPHVzm3Vex3U956+vJZtPxvQmnMXegq6/aCw== @@ -3734,13 +3571,6 @@ axios@^0.19.2: dependencies: follow-redirects "1.5.10" -axios@^0.24.0: - version "0.24.0" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.24.0.tgz#804e6fa1e4b9c5288501dd9dff56a7a0940d20d6" - integrity sha512-Q6cWsys88HoPgAaFAVUb0WpPk0O8iTeisR9IMqy9G8AbO4NlpVknrnQS03zzF9PGAWgO3cgletO3VjV/P7VztA== - dependencies: - follow-redirects "^1.14.4" - axobject-query@^2.2.0: version "2.2.0" resolved "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz" @@ -6651,11 +6481,6 @@ follow-redirects@^1.0.0, follow-redirects@^1.14.0: resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.4.tgz" integrity sha512-zwGkiSXC1MUJG/qmeIFH2HBJx9u0V46QGUe3YR1fXG8bXQxq7fLj0RjLZQ5nubr9qNJUZrH+xUcwXEoXNpfS+g== -follow-redirects@^1.14.4: - version "1.14.9" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.9.tgz#dd4ea157de7bfaf9ea9b3fbd85aa16951f78d8d7" - integrity sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w== - for-in@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz" @@ -12818,20 +12643,6 @@ unset-value@^1.0.0: has-value "^0.3.1" isobject "^3.0.0" -up-ckb-alpha-test@0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/up-ckb-alpha-test/-/up-ckb-alpha-test-0.1.5.tgz#1f5f6463cbb1bbb27d494fab780068515458737d" - integrity sha512-vadSbprDGlFIj5jJghyDji6Y0/vIKGpGj/DXUoTAiMQKjQ+u57ISSlriwsqUhBNuH1M4YB83gqRa+eKkCe9Mbw== - dependencies: - "@lay2/pw-core" "^0.4.0-alpha.13" - axios "^0.24.0" - up-core-test "^0.1.5" - -up-core-test@^0.1.5, up-core-test@^0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/up-core-test/-/up-core-test-0.1.6.tgz#46d79bdbac6cc0ad26c47f7856ee893c77560f6b" - integrity sha512-AhFnaYt/diMJoL2rwPYmVG9BPjq6ShpWC1PaR9fTCoIgUKbOUjSTxLXG19vXasjsyR3JihTHMjGrWUKB/TPZgQ== - upath@^1.1.1, upath@^1.1.2, upath@^1.2.0: version "1.2.0" resolved "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz" From 48a8f29634aaafaf5db9b905482b7b90ccf89343 Mon Sep 17 00:00:00 2001 From: "lison.yang" Date: Wed, 23 Mar 2022 14:15:46 +0800 Subject: [PATCH 26/37] feat: modify style --- src/components/Share/index.tsx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/components/Share/index.tsx b/src/components/Share/index.tsx index abe2f52c..4d410344 100644 --- a/src/components/Share/index.tsx +++ b/src/components/Share/index.tsx @@ -254,12 +254,12 @@ export const Share: React.FC = ({ )} {!!imgSrc && ( Date: Wed, 23 Mar 2022 15:32:59 +0800 Subject: [PATCH 27/37] feat: add English text --- src/components/Share/index.tsx | 4 ++-- src/i18n/en.json | 1 + src/i18n/zh.json | 1 + 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/components/Share/index.tsx b/src/components/Share/index.tsx index 4d410344..229d414e 100644 --- a/src/components/Share/index.tsx +++ b/src/components/Share/index.tsx @@ -257,14 +257,14 @@ export const Share: React.FC = ({ bg="rgba(0,0,0,0.5)" mt="20px" h="40px" - fontSize="16px" + fontSize="14px" textAlign="center" lineHeight="40px" w="100%" color="white" borderRadius="76px" > - 长按图片分享或存储到相册 + {t('common.share.long-press-or-save')} )} diff --git a/src/i18n/en.json b/src/i18n/en.json index 85d61628..a1ade991 100644 --- a/src/i18n/en.json +++ b/src/i18n/en.json @@ -24,6 +24,7 @@ "close": "Close", "copied": "Copied", "cancel": "Cancel", + "long-press-or-save": "Long press the image to share or add to Photos", "icons": { "copy": "Copy Link", "download": "Downloads", diff --git a/src/i18n/zh.json b/src/i18n/zh.json index 6ff0eb5d..69ae587c 100644 --- a/src/i18n/zh.json +++ b/src/i18n/zh.json @@ -24,6 +24,7 @@ "close": "关闭", "copied": "复制成功", "cancel": "取消", + "long-press-or-save": "长按图片分享或存储到相册", "icons": { "copy": "复制链接", "download": "下载", From bf5c4fee9b23ae5562331cde550e5c0c86b92bca Mon Sep 17 00:00:00 2001 From: "lison.yang" Date: Wed, 23 Mar 2022 15:51:10 +0800 Subject: [PATCH 28/37] feat: Compatible English style --- src/components/Share/index.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/Share/index.tsx b/src/components/Share/index.tsx index 229d414e..ff06c7ec 100644 --- a/src/components/Share/index.tsx +++ b/src/components/Share/index.tsx @@ -56,7 +56,7 @@ export const Share: React.FC = ({ poster, reloadByRoute, }) => { - const { t } = useTranslation('translations') + const { t, i18n } = useTranslation('translations') const [posterState, setPosterState] = useState(PosterState.None) const toast = useToast() const onRenderError = useCallback( @@ -257,7 +257,7 @@ export const Share: React.FC = ({ bg="rgba(0,0,0,0.5)" mt="20px" h="40px" - fontSize="14px" + fontSize={i18n.language !== 'en' ? '14px' : '12px'} textAlign="center" lineHeight="40px" w="100%" From 4220cde26d7e40b5818a726c0da31ae3e0f6e373 Mon Sep 17 00:00:00 2001 From: INS Date: Thu, 24 Mar 2022 14:48:43 +0800 Subject: [PATCH 29/37] feat: modify share poster desc text (#497) * feat: modify share poster desc text * feat: add poppins font to share poster * feat: add poppins font to share poster --- src/assets/fonts/Poppins-Regular.ttf | Bin 0 -> 256920 bytes src/components/Share/index.tsx | 8 +++++++- src/i18n/en.json | 2 +- src/index.css | 5 +++++ 4 files changed, 13 insertions(+), 2 deletions(-) create mode 100644 src/assets/fonts/Poppins-Regular.ttf diff --git a/src/assets/fonts/Poppins-Regular.ttf b/src/assets/fonts/Poppins-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..868384ce5b05a17b99f5fb76f9027b82cc973603 GIT binary patch literal 256920 zcmd442Yi%O_CI{?eWs>QW+pvhl1U?tkPaj;q>@4l1QG(I(p%^t2-p=+EP#rNsH>}@ zIG|uz3-<21DmGNGu5H!DRdFRV|L=L8nGlNWZ-4Lq{k(6;$-VPD_qq49d+xdCo@XFI zMB(_OBS+fc`RdwytweOH}e>W}%)r=cE;pII$zbEB^9z2v)Goh(` z?}PDAlJeY*M9KdeJ7G}X;dzUXpzWP_zP)QfN6)PB??e$Aa3+y75ruA@zo@H2fBm%0xMjoV>lSpZ>d|)u zHKF~bXzy6qv0%n0@4jLo<=(e|-^`vxOP6^sraX*a%J+Mg%;?EEbU`EVjl<_H;0(GZ z+MStkv@NvsCkj-)#1;D6)goOhrKR^PPi;Vst^l7+XvW>Cqt6tH`8gV7*fxt%Dj4Sn8DW+4Ns8!KYoAI9w z#=a^lwG*qyiVYO}o78a7waQ=z(KXygrpWy$9Hf)qlbf%I(fk)BIIO}B+949ip^T#x zxtU7kJ(MGFq*S_=9C9#SC-Z2q_?Cvs&uJMwLTR#|rqd@>EMuuruBCD@k_u!6mB`VQ zFVCTDK&`xx#>retmuqMQV1me@CSjv#Xun8NXq{}O3*{2()Ln#r?x!r-P4$WyeLqC? z;#a`ezR!14J^d4$NT)nG3D@t%^%i`71Z4=?m!q_xoP%riz�l-9mNpPKr|AqA0l> z&y`ZBOaKqxr(JS4-H7r^xr$PiRLJ{#3XnVT{7yXItd?oAi_%0LMXJ}AspFT@KfOn# z&~Q;spe?SW5A8WTFM9Afgo;HM##~0#GK+$gbP5t5QIO0=`7C9~RJuxJ(;VrfxzOHJ zmG^hj4*4?G$o1e`H1G$mYMbGdEfOg}iJ)BZ6eWsRasLwlc&}btMgihRikDx~a#2oE z&<`tp1zJ`Ek4cn5U(gT{Kml}+Y~lg+`8t=%7W$L2gpK|HJ3~`k9}IH>LJGWm#mZW7qnw~S=Qi(sw2Ns zs?VXFzXY#d@WDS&0;n9oa;j&YVx4B%eB~%{0M{;3uj_DK<*`a9c-_BL^&d3*OWhDk z(+vWimQFWg5FEM9Sz4ezYE9TelmHzp}I?eN{Un%OmZ}#=?>yNIZ zXfY7_%D{R%7<#z@@HxPP&tm|ip}S8}GLZ+?%3DfzP@FP?Cg~b!lAPfEK!qyrVP&%S z1LZBiCR|(YeL`+S3D8ZZRuwLxP0EkBzZKVC0z3%d`a8H*02l@s0T|@FeiO=Sz#3d@ zMR^P07iy3bQT~-Wln|6x;NC|lccDz8RwWemw*f&KFfPh&)GtMuMYH7=lmqa&)B6GF z>69&0D6HNOe1P@W(+PMH@Fw6X0BH6&068Mq`#jnW7A9{6_%M$COilgiVf_2>1x^a^ z;PGM3Z)Ly|vsJuBTmQ#)`3u++@EOnI$NLrFJoyr?T@M?79YwM1*yf7?urUL)y3C}( zuxWYXaq0$b#mdi=BcfohqF`$qsZ!Soo1B2TKZmlEDX@ogDUS7B38e@?n*5ap$zdq( zBpYm6vUm~e1ne5GCv3MA8%4;QDMskM@3Ebf|HgWeinW6wgOcS|%A&Oth(012lyGWL z`F#Ss+3bB^K<45a)bB(2BKQNj%WS|vKo(#N`t2uoIU4P{0Uyz5mb>^9wFu~tSdF&d zquhxy0`}5?`ZK7r-2a05IVdw}wm2Up?y zH$2CyvUdy(R&`@gf7zZ@SEr)SIy}1-&<|%-S9f^7Jw;ccW2fk9I<@$9Rh=)apC%fn z>SwC=Z9l&KaZu+6>w14)UZssMp6|!YGF)R`o`#po%RhrR{dxHlKA(-3PoqERF7r|B zB!|k!fRlKEe;>$Akf$4^8St+61H(T6=+AJS_X9oVtYIih%u7QBY`{3wAq(RYl*>^< zCi?HZ|I*LE{Z#E5UpG7ic-Z?fgZ^<`hphES0H5OeB`EL2v*<_v3qVhk40~XQ9-tAr zjZ|TP9F4%&SOmBhu+95HKmeZ0_8!)|(7w?7njZS6e@un<^~+E$^S-YyL0N)wJIXsy z?gPGK0FwaU;TnM#KcGGhed+M|71Tk8p&sQB0AyguM7aSl1+Wfn;!rvOuvxmz0N|pV z2N>%;%6;lUkM0xihq`yYhjkcFUkRv2Kj5W)CIEcVM}P*#|5wzj046-M2QVG*EC6!T z+flxXG9D#lq5^oR2VQ#SJCAkL`>sm=LR=dTS+UOCjO#4BU4R{^AJ$6gLJ8o$CFqwM zP{({y%bln*ADG7T&=+)8rITs71NCX%&x}4gj6t}Dd9KG?VvxX5_c&k>fcZ8Tbj5(L z-)OuwFwMYOw+YvWqMQZZ0AJm&06hRW7_I=c0c`mEJ&o1v1N6{X*@gZAN+Zf_l(pz9 z3w7um1JkV98MpU+*@0(aLkwlqqT3C)6i`bo`nSCwm;!MRywIm(Y|y960f0{i^vyII zpgX!ZQQi)KJ<&A*#`s_lt}Q~H%UqOSqeNY|0I(2!?gsGl$8h~#0A!%+MfnuUHvpI6 zK4fp`0Upp@!#%iG2E08enSS8LIO^sDpcDG>D0w{CAXO%;2jDmK@IwYwHarh8-wk0X zfv<}9pHP1S^;IapMM-!LxT^R<=DL>wlL2@}hi7=+>0SXa-|(F7NdV77&}cZ0dINyz zgg)xSvCcmOc%54HYf#=ylXVy29`st(UErg;9ug^nU?#BvVRGRarA~(u`fOl%vR;D* z18`!wE5McUW7}Z>4|R=zNPr&KUsK^TBY2>n1t`RI<~8u*xujc)(undHN|q1z{{!G! z0Q%E|?<@!AhXK!EZoZ=jFLf&bN5J35Q2rC}F7R03eObPNYnTgclZCaHeUY(%_W*4S z@Bu%9Z&Y&sA1V@r1)sgEM>Zo+w>A1)7h~u$DYhqGjYGO{3Ofn>eCWR;2lVXw* zk}{Jvcm7kyfO?th+hcR-{E)gUmM1n{X86rm%i6LU7Xb|JXbTL;f6sv$y z6fk-Y7`+ROgjsJ6HCxRY=0bC+xyD=%jGE2uz$nmRbwoMh91azuAwG;AJ_92QFpBQO zsN08;07i=U7w_lZXS@f!k9!~WKH`1AyU)AFd#`u5_fGE}-amPFd3SnucrWovPp7BF z)9k71oqat0c-ryQ<0;3Jk2{Yi9(Noca6JBa#Buv^+sA7^UitB|kC%SDXJ95jBokzAG*>>cbBUc`|{K$DnW*ixFr2g>V4}THx zgW-NvmMW9}fAdF;J1J{@_#mRx_rp3E>;oN22Vfllu_)SwC=o}Sx>2GBVMYBFlo5bf z)Dc%h^oX!KAbKBV62OW22PiWDnW%q+67vx|Kcb^3ivY!_e}U@3rcTm@JM2nSs4gJ{et#3`}MAQ6M| zQ4JV(iTI;@9@jyG#J-FH(HD~M0zO0?G${u);5eXJ0KhZsXvqv7nZY}b=9ohP7Ssz- zf=_0&6(uOa2Xj8^V^H!vrnwnqDWD4VX(+KTG(#q07Rq`6XlMG&pq)W1K*`TA{h-y{ z4(LIBIm#s(h>IaQ*c1oja|ue|;IN^-5oHtrbc@X>;{c#rY(eP&u*|?GN2&&58_HY_ z#CDXx*D(}r5T|rhY9Ovhd8Y1Ru3}P2b zjLRTyK?yx!5VsN~Ne#qpC=D85cScFzGlRGtCHS4ha=rtlT?39yCq)C8-n&qORtB*f zWu^uK_$H0g0Ff6;0zVnV9+cgH8K~b!l=6}WVlT>9G!Xlsicf1G?kD<90DvnZZJ{Ip zsB?)(PN?!3st4SZ<#1C|b5)DOQSS~OU+*?dn9}Snh;^s8w9j;GY-)DPl#Yi@h$we; zIXhz$6W!F}rV3}}K6F&kUY_k1S#C%B%xt&Ja&$Y~2gkW}sZ;i)i-3x%uByh?=0s;= z?8at?d)&C@M7OIY*5NMUT1iWbW3SezquZU1OTJGIcP`)0<(3D>H9LUB#tw%&U|e%M zt~mH!0N0ARR@5Hb-qO+%>lT?UElxL$Yo5{4lI>Qq990gtE~Ntq=_|%HyYG*7)Z3aj_kZ zEzQmr+;vT8#;sT;$~SVhTc71NR%Gr2pH?KWmP z7|Fnju7`Bgi6%hP)!xEQ+ACEgOeSrZ=RdZsjGqEKj zG20!SwO7h2cXvl+wmT#X1UMY-po%)C3l(R1i#wPqrOI>F)!Hx1t>giy7?nnim_R!wYnhdRq0RqjA2Wq=d< zR_@2V* ztld!o`Lwe@=8TOwPKTp(Bl;S0^0p&K>%*->pJ?T9xAS~=jc>kR zIuu9j{W4XFX(?wLXo5Axco@-HjoAljo;sB}5rJx6`dubacZE$%>9x)Z1Gy zcTaz&11P~TJF7cNVx1VF8g!vhM?rsQ83c&1vDCo;fcJVR6ioYRn4rfFJe;B;fxlR3 z*vg$83mP$$dEmh4`cxkeoTXsRF!i$AgbD6&R6A>UFqT%S$}%Rv$5EQtoZ~3P+Q=CD zE~2xOEH|X!Q!Q@wt-hL|&Qz{;r%y7#G230{!=S=1ns#2EPbbkY%Hdf~M-FqX8iu*F zC1-Druwep@=(`MQp1kbpyR5eMKYB`=ky-ANO#huzIxWv~56RpJ9b#qKh-rDozz|E0 zI|t)esO(||^mCV$%ZXW$gGr*{SP7#68{Vg>etQ2{6>H9>82=mXW4^I{DRq{_Ciate zVv7&QDrSbCsntw>B6FTm^wH5rat%nfYm*bJJ?5b`$6bKAIO=z<*TUuso7G*2Hg#F< zVifhvwJPw{QH^EI&!>hgR!4U|*g8534q_!LV^9%X8Jo3Fs8`0JqFx!#ZK`mqk=t-( z0=MDHL~g^CCT=qll}X%&E0ehmSDLvES6aAD1u9dx4Od#Z4Ogae8?H>_Hr1$1=Qdnv z<2GDr=QdpF;5Ox`baET6ba5N5baNZ7%*b*N?PK#y{@@;t%d^zl2-Ie)`h?3ae3+Bv z9@f`-E`Ly4&r@sMdcIoYrVFy%rF~5o@&~o)BDKa%d(;{?U7Y1E>ub7%Kd4QYsx@x9 zOs#R#(VZ`S!e=Bx@Eu9WHHL1jE98xBDd~xtQnPi_1%>~=y!gas0sNO4LIrgLVhMc zqcG1g&h@~j?@oTAY4}%mNLU*)ed$NP)+xo?an)XoOj4^c1n zE!aolB$$*=WVc|Sg(x=Zt^<69(7+S`_D6c`$qnG7p#!ju$e0Xh1AL7=DfY-_><0r1 z0Usg%#|e0mC}=L=8H60t0NnuW7lScg$eTzF3I{AkJ`whNmWu$NArHv~*aBY8Hjyp2A+S5%2_2>IlF(0QybK2LQjczY(Q_XX%@W1||a5``~S&jFm*0pf&R#Q5O2h z+Ch{JIup6kMt_=y?7r{$ty%db`lK*y+bbmc!-AGK~##qOTQ#4L;K-N07r>Ni~|4un4mTQ#;w8rzUC&PQP_)*x)^XAIZV$I z)nV*~7foLk^HuZj@Y3BmK@9DDvUlX;>B5H@M+CL=fME{+)5Or-P z>UIFoeg@<^;|rv#X01X5;xejYMj0pPi1PZBK${mZui4iT*=1ptSY;O9!nYE?L(4S;s5 zrvu(6ItP4S1758;K(w|5fOhBB0&s8LQlj2k3^d;A==yuc#r7vn~AQ#cvpb7EfWAw zAyf^yTnRZ}l@5S>uLizX??NKlJftOL1MVQ&2AOQT5&(R+9VXfi{%l_cxSQx&Jpeqr zb{_z8yAC|L4)k63Innhlq8o-2-PBIBGnVLPJa;q3+O?GEmiZQ&~Y1N{HMPY z{TXxU?iQkZQvpYb_Pj!L-(n)S6Yy`Mz2_6{>jeBvbpN+R4*=i&;LrZ8LuEvs%zC0{ z4FEj*9O!)RKBDIb03g5Tj}yJn1Awew%mr*CdMN-f5%4_G%VmIv5N-t>ulz*xY68(~ zR}=kpA<^q=k(Icc=nc^DCgkuY@OOZ0InTbjnHfi0Ocn?Xz(eX{}f|=dOP3)glk6vHUc2?&)WbmBW#O)znDez zcgW`NYXH#uuL1$!$5$5t9wGV~Jo@G!!n%JZ`o{>s5u)$H05=eQ9}jqq=m+rghnI-{ z3EBSh62RktV?@WY0pR72$$;$$2M+~&PxR9Sz#af(dmOy^6+HO$1)_hW|KA|X6Tr6@ zw0WQxUR?7YB0(?1?ID2uT!hXDRWLSIJ0fV$x&gu4d=o`pX!orKv0*n<#r zHee%(z!Jc#2s3Xb5gZA?y^yy^g!TZwClU4&3Cm1`o-+|DpFqNfHnyWA>#|N-*w_Z%7P7|D`P?%5o5%k0vo9iG-^G&?N$dsA z`?is|e>XzO;K%-(NIY0g;$iUbFQ1Zl6gWTLN#cnsNIVICKaIYg*-qlwr%60-ChoOszkH3vSMQPd8hwBBIEim@{kst)z6W1^ z0PV*rN&Hw#;$NWUC-CDq`u^1bK-+)cO5(R35+@*|-mxS+D7{Na(j_FN1b9g50!ZrZ zBn`oUCrO&NkTjo5GGH=Em=+oM5y_wzNCs~w8FB^5(BDW}Mw1M`oTROTr2SHokqLm8 zNJasoZ^y9@#)!)#8GjMUgdu?ABpuI@Ox#a031d6&BbmI5WXcUB(_#VNkW7DvWX4pI zndm>ef@IEzBy+zdnTPiIXj^cYWYN7Oi*bL*`6P$p^RS0WmL4TJd@acl(@DAp0e&J` zKAvRdGLqFLBx~*@Sv!_w9q6eCEe*hL^p_;Z+)r|>o8-8iBpWjT7;7Tvp439JC5&Y2 zL6TE3#`GYPZOJ6tuP52Lfn;|Z$(f*e)){*h_G0qC`Zsm0(S67i-6GC$B-$-r{=8v;q5mk#(B$@6a`c>(&l za3;x%fcM2CNnTb=(-g&-449&*huovc=j$U$-DQE-2F1id;Ups z&pMLsQ6%?`A$k8ok`Ew`dI0o3h&B&{-bZllFBs=hjQtpJeY}$76WJsWqI?qkeHyZR z26B83Jbxh#M}468CGh0sS4qBt`m1k~{44N%{of?th$8uB49T~KkURuB4}DMaoj4o| zLJsc(ulG-oJPdk1)B$ksBk0Q!eEt}+`sD8&RG$6xRkTL<|PWYLWiSq$}2B6+F zo0LhLNtv8VN^=}3Ex@DYZ=_5)OiJrxq)crgWm*8>Gg79nA*BsCwtYcL`#w@SKyT+R zQo7nm>CPl&<}|?bq|E9dW%d+O=1d@EZZ;|NLIJ>Q{vlEp>>*_###(qiDT{&tmyyzg z`#s>r;z$7ax+DVtUc;|fmOf0%GSIgS{VpE^c$JhD4FK?YCHi0a1}UqW0q>Er8hEV! zgz)|g?4X-qI3y?_BW1Xtp*kT*iVh+Ws27T2QyO$SY{HE?qd|{mip5~CXId?Z76JH1 zM0@TLTja&Pd*#^PbL3;aFkG~Q;GM{C(Pbc|xRP|}2C2JJreGBp)QY~7sljA21)2h_ zR*T*knVD=zN-ZeLi%3)Q6%m>=I0?UzN?N3GuNp(NU2Ri0Oq}d_Q3pV|=D?8uRT= zqqA6r!u(<&@lS(uuJe}x4_#fABHe0HX$rr9GRBgkOG&G4cEe3YRJ zI!mT3=}-#uXQgBZniftknK;|rt>kB(o0jQ$cEqrfMI*|FtXO6mKi=3jdSHp+r^xu^ zfw4*B=NfUPwIQ*{{6kDej%XX&Jvi*M-j7DM4G#S~=_$wivs^Es=}?bQyh##E8|&Rs zX}!+apQ%J<2N)metuxcxJ$;5zhqp1+}~R-FFr5? zbzA`*sovxAawu6GWH;P3%!H(>IAJi#I#^Z#orQNoMuRYRkxnODwOL{?AmI>dokb1S zaGTX;cUnxwINvPE&x=e`5wzQkP6#T=V2c#aG((Zab&jo6=U9RZ znIf5RFIgwUrjL0ks z3op*M8)R5`q}`c%-Ic34HePbc#*S6*izQ-6vw6PfZ=U--ug^o?i9p8sD6ykocj%=K zmo<&nx}z{@bQTtchsiXkwAg|EF1z&7%Q{xc2G13q=bFv)L@u(`2F+JH94cmuyX8k@ zp)A+HFvvV8FaQ<}Q%HoUo%@IsDTsR#npvWlN?|OHG)5ZJBAvy?wBoel$TX2)Ta~_L zOZqBXWB554S6q>CPPqK&y4F!eMYXNhUOTNG<<#qd>M~j+7t00EaSTWhw64jZ$Ls_V z3Uxr(0{a%7%F;jzR1JvH7@aBXPRvr649rWp_^qb5-f9xt$G!6oe$i=~cQGBH3NllY zYXHzxBq<%R*Fs|9m&jTYQjE1)EMYw1i}NF#g?UAVh0e5Td7Gmn^DExSii(LuH`7Ip z_y_WC6#63}7be=Li!GvN44i5z#)!LVIjpbM6~?OJGv!uDA|f+SGvT(&a+8wq%QhU( zG9-ZyT8(Z65J2ubZ$V+$K z%DPwpWRDZPGGL~IP$m=q673~X zv+^1ZORU6ABDx1p)JXZ6yqmFu$Y!^=iv(0uO+ z87995OWpg8LZ=sX^==c4ZZ@os-eA5|II^? zRqTJ$9)q;BxB|niiOJxCYWG;ib{m$jhzJ`Tg)}T+Q0szJC%DZev#0XB7nhe8lvS@j zbg6NYzUlJ%?paaMkJfCcGd0Ugy5=?xYYEd^I{&m}e%FxN`e9?s8|2Dj*Ra9RHiUfS z6!|)8!PMpofLcof{{eq^QHoTM5)H3NPoh(`&PHBW^dKq{kH{tcZu{=E;28z_9jvgC zF`JBfc=7NIXpEEM?`xCnOfC(n-}z_VF2FYD;|L2ULc`{7oX_|D@PgKaAz ztSX0L7Q~UuRi+aL3EeRobOs|{5zy%kIz9FtgoVV=#Z$2bnu7_V*DI}SXcn3wI7KKJW0QJ0^?L$7eMZ zgfa2)O0^@F@Gu3-J~$+tA~9Wj;`yXoWO|m%cPo46%T1tW z1YUd^CVv36p;*FmUD?hkSY7nwBNRQV)Mc};p;A0Z-wbB{vJEnw>-862(g%dm*)_iFl-P%<(WA*A8RbAEs$OHi(S)|G&UXuxsflL$${bXCC7)W77QBh5)?~@KR z*=&l7jgC}h5^s*zWD*W}@WirWq8T6#SXM|QjBA*Fca7iHF#d`Ow~wofnO4+w(Yl@s zmdv?u#*)AZk>bJTiCZT(drWI~q-UJ_{ss4Y&U ztA-G^lzFBab>DU%%vZjo?Fh8L;#GBh@uaA040@i1Me(095j|Td)#bz$Jq#F@Sa?`U zTi-zNr7RY!HH?K4?pv#rz9sTLb=6v=EtKLObtunr|AM)QE){Rd2{4UVFnON=-tx8s zAwYHN2^t-4;YH9I=}arm|K!-xW5}asx;GLFK&boKO0t|~`Unfny$E8W^8#nIVu?S?*g}~@b6(et=&uMW=`67!3Z^iUnuF z8qTYME2nSuP}}4C2L9s%Ev^VGa53<`E$o8@m@&4|Y6gB0s!MA#NX!m4^)T%bnr*i` z|E@~X+L|VlrVMh!!iBH4i3^_iUgqq0AQR?GT>~+< z|L~FjqI)cGA%k+P7F%+%)tT%Jz^<{lAUqi}42A(yteF3>y*3&R`Px#KM0V`VjH$_N zEe)8R#n+0^yI%e6Pcw%V%Z3Z)tWVx|^xW`hW6sdI&$-|9e0Stg>${#~^1;T-SHu8b zyG59<|N4m=-mWe<=eA#W+_dzTlDpR2{J7_%Lk~QwZ_xi!ELyQ*&&rixAM{gRf-`+1 z1+eEDAauO&AOs+g(F$dC*6ZQKvI~Ztv5Dme-_-yUnwXYobXxPRDT#_4Smb%7XxfSH z-#m?iHe7cd?~0C!nV16g=zcJ|4<&gHPMMo3a`dB~NB5&s{vHVukDwN) zS|4~e9N*xn(89!E5cWT{h z1akPIK+h*)UC2}YB(iqys8JW=phT5Po659AR{{nH4zfcBo6nBF<~cAu>S_Xa&WT`{ z(*nw*GIgrww$@fLjdflO@jNg0dtT8xq&v`|LeXpl(GOc4bsFKCwx@<$XsK`I2k}6j z_gBFJ3|9AgynL{8&JRLh>db%z4iDE>%oIGyo*f5w@`}Wi*13D;O%sD>sx>H>;r9A;f#sdtAyaOAWCy3 z2O2Qx;Zb4PRutw7qCbcbg4Q4kvH&683kmR7aVpGZM1n%5emU%`)@cF?rtG=W39;kb9J=z3-!ZA3B|ee5Nm< zlEFo(^Wg0k27Jy86>=wtnLI_bac6 zjF(?N`tvqS{_!uu4m|I9M2>53&ZC;(KMEKYck znZ&-blhJ3}S6JY5id)vKTzzrt#}{8*U%T~Uxqr#NrJhe9v%OWrFHmVYSN;pMglM)d zI6!k{u{~Mpx3{XH>x(}Lim-=Uf&#IJ2@xR%>|yjtDpl;l!r3tpyY8S@T)IuAu6gv{ zRhx4?PjCI?>Z?CBsxc*7UQ~Ew z@~Fb`t2!nO8d}*pILZ>0Qd`tKZ(8HPp~HY!76ktjIAbK39S%-uJ3GvIf3QJYa9PW& zFlj9NEb-!lt#W>CZSPh&AAQt;xMuVbO0lje<{+MCO@-NjqWXR8Vzw9%U7^o%)J<*O zHMMoy=UaaiPkDw^Z4JmZ=69d~x$pw7?S-q(dZ(0jie-OGzy9#E`A*MYo(!mtVKxdr#llZTPj3<_4a z@NjjG3We3iY2^WA<=cn4@49)$+i%af>t;-r+dX#(i|2d1={m*pod`$wq3Avv-J2-h z6=Omi@1)&?JwV^#+CDN7Mv5_3L__N*-MjCe@v$(7`#iUcR?m11OM&GM6FA$I0Xu2H zYK&t{>;Tw|Ku!=pN0+o^0c$4M!J-y+fi<&G;P+e4ePX<)S~Pn0VBPHfVALp?j8&3$ zd7EJ3_CRyeT{zf)GM~D|zyR1{;KoS>isUE+VAtJ~ChgX>G@Nj8py)>LBss_*v10|) zg06Vdzf4)NCj25wrg)xL_WX9Ij$>q3V)SAD(J>U5uShroz@rKD@Rl2Uq*F$R)kUz( zSty3>o-_#^{du%2BEw9;wR4!-FhLL_teYb+X%uTLw!w2i#Ivg85c)?7)Hc zZzq0xx47OjO9uA-gw|WU7t7ncIN#$H0HdF=GxAdtiD|S&+RkZg#8UyXo{lIuX(Pk^ zSm$#w$s+9mhvZ)-uB%qf=Pz=C#HI)C#?%A0P<36YcgJ9_fH{J7fhR-`Pd8mFqP=R! zBi7}>%)>sH??cwOjqBV-^Cl53z;*!ZN2DpjVokP&vqPEeTS53J0!A)U!^IyH7q_5MeC=0CD*%q_p&P+qvO_i#^91zT9}FLEVL9T?HM2kc?} z5RKPjGK>vJ0dndQ?eeW->cL9l>GxH1wMHOBJx7Uv=TCg_1)nt19LYLmHDMQ*tOgBi z5mqgTlbXi*Whp8W_bdS33#KpLw!No%PF!ni+?=YVf0^I&@M7`R4Zqz|QPd+p^SoJD z4hf_I^9-=~Kl$Qdq2Ct=_rO^A;udF;-xt?dhRBi68CQMrzii#QqU+q~&ag2<#ONiU@mZb;tL+T8ee!g{7Wfwu(M1!b7P;^v;-4YfO6kx`x zZWWN6Z&g<#%!v{H{YyBun#M#ic*WN3-(RKk)a%;nN=Aow#;kAXysBL_mH7niq9V_W!*w}R8tbwPk*`2$*x&MGjHX0dcOb$j zag2tYK2OGhNLfJG0-HDvVq@+TcwjW@5xCInvD5b*wWUinHtlb#Mx%UD@84_R;tD59 zbi~JDScK`VR;O9r|MgANlkwF;mZfh(4E!u*CN%nI8bINy z?~JV`M}pBS5wt)%vl8h7Zb@R2y6#)ymT+Jno{2w7SKoR?NowkVQR*1zc*Yg=1Cr&B z>PQ-o#BtDoZzXX#)IALc6ogQjlzP^EO))ztY1r4ivBA?Tlr`^wCu4r}eDC@8pIV35 zsv(ubx2H+@{jJ((y>Z$D$^mHN0Gf2b0Go=vjHZVXoH9VICL>lvs30d7@V+P(K7=qD zwTuG4e)?~=xWd4k0W<)zv|5vs%*NPEt6g0M)aZDBq4pE*h?y}7v&yHPGiChd@tT-Z zS~|;ymW=2x={||4^yyX()TUuSmH;qKLmIh8*kfZe#whzXyEyG&y;DV|#%KEOw7B4$ zpQ3syuKls>r+UDtKR$SCg!fm!$noGF@2{{ML~p)z5^++^ZN-{H6dDp3pe{7}ehZB+ zYM3O>Up)VY+1*d>{BGy%-<2B;05o6xx zZ}@zPKE%)PIr`iUUz7it&w*^8KU$6!o_I$rgVUh}nnr`qfm92Hg6rs0C^*nKD^~q{ zm{s2lh+vbVE(AV((r&c4f}j9!(-F#1H#yKIJJxa4gbiL1RbAUEQ>M*qtDWL`3)+K2 zY40!MZFTP9Xy#<>4$c=JkZHjpjOsfWgC>QC!)}N3DS-9l#tjF?Ck=N&j;?s=gR}M1 z<hH3a6x~7C}v>O2xSgZco)#KkO>hGz6RwV(#Nhlf!u-Mv8LyWV!XT`ln1BYJALiiwms9=pEvy+Moc{5X+Y0K;w4X^*0Xp6J)dPenEJch z!8F9LmHfzJ@y1^Ftn*iQ?cF=;0(9>A&hrn1Ho}Dc)mOP|k5?w5Yn+<6qA>q_n_-n^ zI272wa?Gn(MN~LHf3N$_-P1k$r<-M*r&2t6;(c_H0VUXhF3!FUL{GT?2iw3Mo?nF7 zb0y#x_KX(Q)rqV4OzJ9cns`)s5~m+=uISVOh)3bznwLZ0HZCDPLc)Hg*bH_X(r|KQ z8fSqO7NiyOX-mOyg;R8J)Sw=>i-xcbtzl7VL5Y?bGc2~~w5YJw4Pga^bG}Vjk@akD zm@yZw8MXyU=eA7DO${-IGgHgBx>!`8Hsl!I%$BM6Lr;pn$pm8OMMq#++dCfhlr+5~O;Z&2*?3 zhbWv6#5W5IiVHoGn{qc`n)0MR% zVTqkLovCzOe2TBM@kQnlvY5<{ECQ#psqqx)VLh+TU?3AYoQ(9a%4*8fIESdjKzjH{Ssf$<2w?~;dL*- z>`T1lbuW^YUp*pAO1(9(E?|~+4E8u@NXnPA6H!4m-aq4zrITW*&Q%j(MgBraAV>Y{ zIFLsAK^mM!)@6>xseX|y5~dUE59c-xBQQ-;-4)()z5B}a82p&Rb--Qq(qEE1j=&LSdgmQct(5`4raE5L-k z1;X)lys;jI@G{ll5&R;xRtwFiBG6`!jo?5!**JmBkd%f5veW|3AuGy@L{?c}!ro&E z!?TBHugn;hJuEJvEW0dwS?2KUvZtFzlr;|%_bbsX{&TVK%C#2k_)!VxkD?s}|TR{2;{3 zsjGIQQ9ba{GSJd6$+T#ewC#y`;f2;0UWnOq*=-!wx>c;Nl6i$yn>SY#=E*8iq=vX& z0t-$~cq4I=8YT-c!nsY~VK=hYl+hSdJ!Y`NCsJSso@wPDaf>*o_b1QA=qKAdSX$(R zG>`_vVQAS3_ z;Ecic_@waoq%d}-g&G;K+Y)5IEDW5RWrm)Y8#5iyW+b#CBk$woTUuBJd`{PT3upQ4CFd%2ZllWqk zEQg$rKmK2sk6btcpZm`!Xor@%RD$#%v(bPr?t+V9HZ3GmAdX8+FkGyq$aE5jar3Si zGfj2OXe!hKA%a*}(dm!s`Jms3lk>B50WZthQw|>Vyz=CeTW=Hg+ivrGvvJzmwbL5r*(OI$ z8&+F8tT}G7eZGA3InVRYJugb0d(-pDJ@<%&-MvT7du_w$%F&ItP8jXt+}lJ%aJR~5 z!R1KaSy)5BXI=}jl@U754AC6uOlojitWK-y6p}CUc3R*qNz{*Q9XYb~tM=+am6qCC zOXZ+y@orD~$VF9yZk&opu9Bb!gU?tEiqH6lTlwrij_Khc;t~|5a9~PF1~ceX18n zN$Qd#46x`p$1zAmL2;5EfHxa;Nb5F{L2oj2K>t*yUp-<`!wiE&LwtOEQhZ{P#bS5z z3|@X3J8)6s z%>EED^D02J%X4cHtfzQr)p|d{u4wduB~#NT@Epnn^bwtgLRr(zR@O`mT*0Qaynlwm5X2xIBJHJ%q8F-4xELaI-oX?wW>XQv?}Bn zw%Pbmv-^Y-HaihPGY*_#&mfn+^_EAz_10UH-V!TsA2;syad+Z%L42ipyRd^$8|ScL z&E+FE)xDy&@f_m>nx;l9q@HAsB`I#LVi1h=Imh z=~_~qF}OzDR8}y4NI{HaU{-PEgwo_Z3~B|hk}+r^A&C*=Anmj-V+f&2tfibV2p6i& zpKc1B(CJi@l&Wj6I1`a#5v`ILu0|(M=71tX1ccN`kq@z1^T&;dOCEhrwXVio6qn?T z%NQ7!qXXKBoOqKrU3G(}oZNL~cn&KA`?g&;-;u~%MruHgD-%&)WUS!$ z67yYsYoISf0mQ+9;~aM^oxyx|t7a;wF;+IaBK+5;%BH{-D_5&0YV&(>UfQ#t-HIV1 zp6(S_!*C*-AD{7dER=)ite~-4y0?FI+N37ViFnl!#q9vk3A8ujgn5jXL=~f{*Gw26 zAfj{wPj$*8=ojmX=9@ZxPv!J`T3jiFLK1PN#v#pOyLza=0>?Rb;ku!tYD!klD=8^9 zmKIMRI%2|V3~m$c`0rK@!pb4NLA8glgT91qHKE|7`Qsh7r6zwZX2rl_&o19;agDlK zgc7n@;EJohegByaH^}jSCbQP|tWy2C@&D%L=q1ZZdMS1y( zkwdy~nSoynl85DCmv4DUbvXlZmWXZp?=28o9>0@w_wWV+{%&gN!qU*x(%IS4zRJHk z=*R(uXj17m;V>YQZgK@6`;d9+{!P z&U$177!1haiHvmt;^wn!WHX4Y`uixy^s$zal!o)AuwRC%v2 zH0HxWhiQRvK|D5JOn@}X=ii^3Tf6_J4o{dkccSM4pLo9By?by~RmP8=ovf-b84m0q zW`SZG+}H%#x?eMB8mYN~!VHsa<~gAnI5sixfVTbC@*Y?Y2NuKqrNSK#aZf|V(OR%1u zFsT2Nq|9P_TH$GlnVpCFQZo-%_e=!!|5rz}+KvBVMA0%4UsK~B@*KFT)JN;hlO~OxfVX0O)J|51j$y}D8#+K}ergw)VIZX$3B&za z9oU!u%3B;e<~zr6`*LA}5dG_y3tI#|;5ZPc^XBIj=bwhz&XOuua-Zo@8`6j5 zhsD_uw!ES&R$)yl&|>I8I4l6pdNoWGa}?<`dt*GqwM_d zIXE+@$ZoI%sUcA_1ewIk5&Udo?U9EIiErj&B%8oREye zD;KBaAm>>m3X7tQ^ry#q{xzvfY!Y{QuKG+a;6z!*$&)Fr@hrfAe4@jt#>uq(Knzx3 zEd83P%J(m~ShMhpcQLU^=ZtBCUNLm@mw>Cu>9Eqi6Ls}`s^HA0@F0RA|LL(7SG2$$ z-H{L-8DX~q8}d(fBeEaz?G zSB_1w{H%D_vFtFtjKzfTPf zHwz<-1J=B*Q&<~tX2!RF{`CxWEq|B#fQ6*c|s1H#Rq?tN9@ zMsm2~Re{qeT>{CE-M#SqDp zzEo@_5i4LGFNH(<bPPVF4tnqkHMO7=wQdGCvFq0h2;4^0AyaojYS%bj*2sM`y zDi-dG%=iV z9Im9ZVet>lUQ#IDoWZtV{oVtR#c@vZSX*-_vwQV@!J?3^Nynq$djPSDAoMmo^ii#Q#H2`|A>46&6J53M#VKTokem$uTBb}@b*PkkyK9%VG z=V|iM`Se1Yjf^RDmG`&^d-EI3rwR#3Ynl7;aheVEW$>HfBKh+#{W!_fY~X3U<8Ld^ zavW4A@aa5M`psk5;w^M7zHy}rGuUuHcB#4eiUAxCX(IOKJ6?!E?ksAu_@Yj{rMay;8>>i!Y{)R0B2% zh}yt?Y>0`rhDSSM9N|&csPJTdNd|9Jusy)Bl(Se}*CUJb_3*GFMJnE%$APejkXKE9 zdE46QrIWf_UfH&$t#p!S>ym4V#iFXIi?1&7TwNjSIz8{bFlywyE|K7u!v1;bA0F~t=TA-7 zW@Xgr3F;@uVH1pT)JaMBLW(oTQA6&h=e}Dp75nnvuQ_z+^b~k`r?$Fl`ukhYri4JEF^oI7K%hy9aI8*Vm+V^u~-N>gQ=*mj+bG$bSP%e!%zr;|sgDeuYg z7xr6n&cNe>{)#Js1ybN4OB2#HK)gQ*o?mg-3GkYuN0?z}$%W^AU|&9b!J(5G@$!1! z0;*n<z_0Vmo*4&1F*F5%YfQTFlr_{juKgSo&MKg zrd)Ed_8v^?;(bf;2E!K5zN)edF$+0AdWrlF*tS2I7#e~Ii9dA)X*D>X6gaiu6l09; z%eCZqu6i_x;+4PaEOCOolI=80mz6mp?j?EZcmRVjjBiE8xoip53(EFAg*gAJc zRcmfV7T)Sm6X+(WN$Y`d{<>WuQC8>&r_I9;k)yOw_5Z{CbS$B&y zo}QzA_)yImN$P3>y=U&3sp|jVV2}CkUvV)S}bYk*mrOvxtDpLI$zPV`mV zf_OAV8*Z<8NQ2CvJ6xlig=_a8eV%T!e^=B8`kC;j&!o41o`7fI?~<$xRy|7={f1LX z<}+n|x?>?S}M`jLrTXcij1xrGYcs@1$%TrEKixO=h-M&K|BP zynRPnQup{s%j&A))oY5YKla|awZnni_Uyo@+18Ac_!9wFl$S%mRT8nu-Y0OyJI=}f z?+dt!c#H#A;FhETc13VW<)=jgSAw4w5h~2VO2QCwEt!RC@=xOS{vd9(>8O?(#9pCH zptd!}LXKN)jr#CAJU>XiWNUHBQm##!)Znk9kPi%>e@@a3JhY0r6K~pHm@V~&jS38( z&ai)FOJUs2nIbetOaEIy|GcHRI%!NZq$YnoR24C*hJV_q^4P%KtmfOOojn|fTN`>0r7@N0;C zpySY5@M~ZoYpfblJ5XSWwT*lXKq@%gf^s1Xhz`p_5fB~mSPp@1l%X7lCn{6`)v5m5;6VX1{+LPDvc3_K0(9umK|jVunk zarwK#?^s-cw5mH%*O#2OMgB@0RTQuTP6x3WCbv2mFdHt0sseR5;#58qTnBq%q6di& zu<%3}5o(V)v}#Fq$%Vm6(9U|f^R9Q!-nDPMC4K49zNFH1DfVku9}kqTKeuDsxy`Kh zqn|`-V|`0~eoboPf&_a}O~&nk^V=ygM)kLfVCz}2gpWq#{`h#v3w1^XoI{Hkh8}q~ zh&V>%1Le>5Nst3)&k@1}=g!Q)=H?MIJKoGw)hJ9Za+|{Qg-8uHJY*KiA7Zzt2%#1( z!{s$2p=f(BZYErdZq+fe6KFOAB`iW-n~FjpF+``c+u~wL3)DqaYXT!=mE55%fv>-i z5|(Eq*8cxRWE+KEDj-6jHf6 zeZ5!s7ZGn}X6&uVcR#El6}05LRp%jtps86M02LrC0{H?6;izOb!~Bhpr*kmg6%Pe6 z4i!g%qB|2Rw#}G_e+xl`958-4d{%-c{?scGQzH)V?x1y_A=UV+2{F^dGUI-}iVqe6 zzz!`7ROM0e!61>91go@EXKiWBJSQT??$t1SFmed@hM&WVv|SpLx5`J<(~8uHz|{da z3fQFqd?bkh=tqMGaj%dqrPp;z60)$Nq@^Ya(6L2y#T+%Vph>80XH(Azo`Lu`YwYTJ zm9r57Ib2T-FG|BKj=;ntfH6ZlAaH|tjxr{ikt8cH#uPvONXbxt1d37Xu*!ymYYa-Cb3*EpPi|ds&|E@`=_m z3?k2!!eL+qe%|hfYBHru(JsLaCE9NTiRc5#n&Q@5SmsnIzuv-gr`X5IR{Iw>3WnOe zjgs90juTmB?_i`{(n^1v7%9rN0YmzOA1h&#g*A-MnbUN!Mhw_SjkFn08z}I3}KAbGR`DD+-%7a%_k`ESf~{|hfH z*D}kv*);WJFux3VDtt9f{Q-xuD*u4}27{E&IJ{}Lbl3Nj$9gHE4#;EuHCJ^|)TB8L zSIPJ1+M%>g%2OdY1uQnQ9SnwC1Cr>}NNGy`Odv#2M}S=!cBUo<$0FPon>rF46OHRL zfD4kiR7mLwGHAd~F@XCKPVq6qP#^+LR1~-Xu~Fgl9*Pcy(R=LRfXrZ|JQlb&NJC-q zpp2^+CrEo_gr-2O001rCpn^&sx@~xR699CA1!yF=QD_)38#Ov+e)y+&QnIQ$icf;E zNj9VrXq?elYy_Z?932hyEFiYDZLM*nb&Z!Rh{KBOK~@8xGttkFvT@^uND6rGf$G@+ z6hTZn$pl~KYVBtqqrv@7aQa!Ma>*uj-FSP@sQArfxfBz zWZR;gH94Wt_S+XVw=A+{N)({!z(WG2y`KB2?+_=30}ei?U0w?fEafLD%3G3n-dQEsX82s zlP{dXSAyd*_0)wE3Dw8xO8G%VVC;}mp`1bN&N!f6aw{-ji10x*Q_(}*6SPUBV67z} z3ju~P3>iAbl_41PDQ)rO=pY;<2USHtFhKAFS#RJ;A$1Y|7lgyIM2(TrfvpAoqx&%4TADkQ|IolBmh?*qj{uf>d(?BFuO2sE4o@ChP;flJXHt{nn zC~AbAbqTUO)TUXbd9HW?AXm6LkMMM8MbI#vz?Y{I5fXS&QlkC?A17bMtRtm6efs*D zLsda+(hfd>Bwh5*CARGE9W7tQtmCCe%VrGNCq=`A=;}=vvPklX9ykQJO4uJnASPhu zlB7nnF=M`p2f_tMnH4V&R~Pnq4xWz(Mc1rZBsmr%-IR3ZPr$gqEs4RV#evx|nZnHJym>yz&1#cL zoWzispz;stX~{`=p$nQ%V4_*c)#sW|5vQq0V+$UqXO@u4nR=A=^^FD=ilbD%u4d}9 z(81y->Dd}E#!9r46l(|^(*c+OaT4gr$k|~?ABOJ?dOtF^Ctzh6hsjpLvWLGgOa_!e z)HwprR9s>NI!2gG;f&J`HXakCoW``Y3~7v0Vd~Yw)Dv-nZvV=e@Gy)3(=Y*R{N+3q ziXR0MtT)acNKQujeOj^#mW2y-Ma_#2lPNkkBCG`NofQbanddZ$5hLD|oiIz>?jT4b z<`+I-#OjL}FwooVCNACuk~w8oYqom$P%#Jhg-&V1rScj#&KxlfQg8RS%r;_lHe3Lw zs{_WQ*`RbHGhZA^pL@XW;O(Au%mjFjL28?>WRQu)l0GU@j|z}s1yVWbrlY2Y0o3xK zr9{#SB=Kl8%2W)C%Rm*1k8|1di+`SnzrffAD;?PExK(BAe@=UzE65|k(_Ms0r}wR{{c!ik-!n1 z3+iD%hRZL=$d0)AYX6n7Ewl;JHFHMd=8kRchV?Qqz?Z?h@-LN>@RzcsE`JB5l(oR? zAs0puLbM)20*C=%$>H+F6>K)q<-kL_h!GG2gu>hf7Ra^7X2)h{xk-*2MO^GQt}PMn z$dyUKR05v$9~9`8?V1x4_<6W^dQhud*&Xy`-rEyWQdf1mar|;oK=S!~U}F9Hyw@p5 zS+sj?k%UH@jiwzJ_;MCY(Cv096v;W(fD zOZ>I!aH`GFOdWoz0{ghg^JJgIqHsWdUaT)Rhr|c@=n_RH(nTbV9Mv(QQCAD*gv$}K zptBhG`JBpxa+uf1=2j^rlU$L7Yp}-~Gqvw%yH-;>*2#YGH$>MNgf%K_JCCQqg zlB8L(M42sAJ0fZr^NTs7#7V;GFyEx25lvPk!3f;s;o6eR=6QM+waE*<0YDDuyZMxN zNvx2#LOEkFt87L3%nWhmu%%~qZMI&QOEZdi$Okw|kO z(2^#V#Qr%FfQWBIxkw;R3IY<8;ZV)Se>$STUV86skyD=uE_ zD@mAP>NvrzDDV5`bd~fq+{y70U`D_fz}bkq$?*zk(9qrMQJ{hvhoA}0vUmpBNk=|u z1yQ7zxU=*}#{uERkFetE>$%e|e|D<77PqDPg1_PgiDWB@S0FZ`K_Z+r3WZDcWsm|A zBI=*rFtlKa(srps9j0ONhsO zYMnQ7=yX!cF;TNixPTvoF9|wJ@>7k1xuW){Q9xsjs}&nxloN3B%uThR0DKwt^!U7?2g$= zArO+!%ONCE1{o?M@DwGCr=Vec2NS?)7$N?|ToR-q{sfdrl`a9=(3pst4DnJiyljyS zIDrWbYZ7@r8XXH0LSiCDnDEeKgP4dbG!?v^yVWT`Q%iy!Z=P19N8mszA~%_u&+9Hp zC`5)}rBE5l9wG16mzO`3U=H=mW!k%LQEyn|I#j?}oZ8e?Fo)5YXj)Mso|=a%Q0LAME#X;*C89AagTo@fst!Km(Tay~%Ed@f zks#ES)(R9JNYq83Icyb%1Wka{GZ!Spv|2$V!TE;OcOJDkkn*)@Q)445&gjWt<$*VI zdU9}z;PjRVv5BI^EM`oRP53IL%L=?441YwFpyPnO8~nltMw*)Ni}_M}QrXtP7w{XM z4>*)A$KEiLP3g~43vp0$fozHyq%#7oMChN3T~M@5B!%((s9;Twz>oM=3D)J1Z&BAe z-cY1Qb^H7=_%aMZL{#?!m$S`AIzt#GWdOn5nIx1q)Vu~9kD>~RLqY*awfoxX7}o!p zrz4F9osOZ=2-_&3LM6Y_)@X28o(k?xI+}}kFh5l~5W(@u#xaAUgs|Sp6r(#()A=Pk zCTQ`(uTwuqMY4D-k{fQS@^AQOhanOp5x2*cV7DPK%eg(4S-Cx7D?2oX!bH1p7^fZ% zb%(E{6Ie-HiBTO&?gj(=4I9eYmJ*$k5I+bmrYE?^7D_0T@6{k&TChd%+9>or;Exl_ zX-4S#gI`eGbqfs#yGlgBXRfN_!cilP2^DEzh6#!hu|#x;YeVst&UkKp!n!5~3t_9s zuZoX1nJE3#W>r(%sD6qDX=*8M3`W|Fw6?&%v+g10*k46)bsj&# z6{EHxTu_q$^3d>mk-iBvx^mDpUOSkG*!ehR9EgL2}TF&1C#8(#W)@A{=P$K(2Q=g#r=5CiJ% zV0#dmKudI(6Oy##itWK+p-3*j7rCyr)}-LD%*HOVtBr~nnw4skBFE=FY7qHke^vg9 zY(Xlsw#2{44#OH{uo2P28Bh659GVjO3;EzX(Zxk^XCUoqsdk$OI&82AC~Y@P>;SYJ zkt$f>)=@wfL1g8xfj8fIhuH(Sta|A7Z+-i=PYtu}?_JM}|H#{Z+x(~IW7j>$%AdXd z_|N{#i~sPYqch`RN{6;;fz;?<5eL~CT-GG*h^nSK1B!iFpiFAfkuU@BV>A|Q1zKRj z-2$VCTq3OIEQi&m z&9#V@`Im@tMx+MB>EYOe|7cYsN}!uj*=WlPv(`3ZWxK#|mnopjTvE}kZ0Zc;2%)ir2t^PC$O8BWH1EkPolp0E6b+qQ`kqx%BT-rn+%qbzRwkV~ zpN0ZSye13P3@1G~7?f1X(STpj?PbicfjkblN9%B5Yx*|8O{h*12hd0rXU0Q#4&pfT zJcSYhsMh9yZeY5V2z*pA6>7g!we12yo0&!2*oRT4O_XihygHa5G_q@AMmaaRa&gTf zt(sfwZi~>l*=8K;m{HaZEv!FUL$7zGeiA#Ju@ErGCRWpFe)$917%2)s@L`;1x);Xt3Mh-Xf1F|BG1Rz)bL zdI`bJb^@C%kHm4foSgmx-)+8%`S;t+I1w(k;ojB!0a0Dz9c;O5YI3$0n=XQE@&W8Q zq=e5?ZQ^-q?mXMBUNn_~!d1*m2ihbm04FvG1#l6YgBb(y`Ux3IAld*9i+D2`r3ck`#W(|f)Vzk1xg;9wbik$5dBSAEQQ_?VJB=i#oE+hU*XAUo4 z%&!hO9;A#aqI4Q?eM5T}L=mtYF z0o}w7yB5LKYJX7X*DSR^!ung_QX`bkw z!AHn|``!SoP>;#f8z%vyUm#CHbmZB!HB=(4=D!94FEDb=Z1Ok->LonznJbaGRfjk5qo5+p zad^7{%ghC-jwt+bT98T7j>r+k@q`kRAheo5CymGy7**lO6d|@U%ZIcP9fgU)7bjvF zWLk$7s3lC*IkZ4goTLgGzGdM9din6u6*n*K>YX{1vL3xUhtX=C-p)(8rb&K5%OEjk z=mKuSs6st^oG(?r3uyb>A#Ijx2kds>8 z3%Z4AVt>Sv-MHHxWw$L@wy4Bzi#dXKHG-Dgibzqq1YK|7gV2UR*#$_x z9BMEqqV|yiVK9_&7lM=)ppNM*omU>zB5$OE9U3n!4#)l`0&!XuA_~X}7VSV-Eh1Jm z^>YO0i10-!HJe~IQh1IcfNHT;LWjU*1`tnE%uy-;+1L#@TX^IHm!ewiLe2OLX4z_` zTsMW~c7#N1*qtRuPD_nt*9Lh4@{FCKjw}o5RUg4~EsY74ml*wcg@h=RM`wdsc$`g0DuuM&L6d z`l7uYot^XLT9_3|Q))@wclo=o4lAf6l1MgcUB|mcw*~wRiCS$^1^)bZ%qsXpVTF8u zN`^*oVpR%}*5P+J<~`p_FLiG5(y-b6BE2*?z3NNZ^be+MSRJZ&Ceau}F`5qTF&xx9 zR#*rajz*Sn&=@snrbTa`rXDo)yCGZwx)Y!hgRORb?SGmbr|<0fR99>?qW(Wndz9T;1Qa~ z@l-Wc87m!>k`R7WT*L#;RKc47&3P+$hs7u6cO%9HkaUrf-cuh5VoFso97UnJJl>Tc zuV1(jT30A0gATxdQ#-|ZNE#HDx4;SkH(tSxcSV#t%7KSFvw~e%N9J=c?h)OX+rbFz z4fdb_J$MILo)IFtNSzHrTr&*oa3qYfQ)!a~^Lse9rJCAdxE8m!6@hB07IzpN_y2R7 z8x?isI_W45VT*)3KFl8ZLkO?om>9%KM8}iNIuUXfC67YjWD@VO5~mI^AbPokOV8 zSsL`S@T4ZFot-C+AL;i+ve1}MpzBj&is2Bh%~^VX!dvlk*pxm8Xt&;*Gk?Zr(SWM5P7KGO-(h`#nsiFBi~pwR#n@( zjQ4Vs)$^2i#L;;=JQaxvs%PoIf+1m4tz;ZYgBw)c1M7_Jb~%{Q&c|Vxt$<<6&1$~` zvmvqFWCx;h6dBN5M^TLyb*T2T{I)PBy)cf>!fF$YA(DtjY(;eq9o!!d3LhIt<4t(P zZg|CBd3WbX;O8UkWuyXn*~|2gBnKYHgjDFtaU$4N)B%hzvI3|G*BEO5D2kO=4F*pf zE*!3Ze6N;1>*9=1k=eJmAS0t7@&Y^?$M+{N5k$gB&?>U73Dw;) zB<5GD_Mg_yEk&7`+OIS20=K(>MQ0XfW)|WL2C&yBp(9wpjy;~sqEYoosCh3&u+47=R~5Z6FcY-F@x7C<#6aIpSTzX2#q@C#=7 zE-Sw4A8QSfTt1lA`0L(Br=mu{vP_~lHfIEC!!wNk`5guMUXMF7J9@1cgE~_a({R0fyS1)?94@NE4DSTuHBFA z+U#(kB6P>pX4aVHS-pMxYT!@%mUJxIymVPv-^TU5mwWVj$br%9>-J&xOV~#q&u1|_ ze}_&!<$|8S#d9ei+&@{oZ+nQ=ea+w|?)^!9|0CR{0}m*e~7VZiB<-J2zH;g4s?j9LhD<4_7xOZRzMxoBoo{ zCRItR{j1yzh5tY;LmseDaL7^5dKqb73{mbpbTTgER;1^s;|{u)U{M z?k!$$>zRvm_SK1RkFK1otDoq2e6BvD$1fopXEUg8nFMNpLrWFXa8clnL{RiAogm`;zbR+zjIaB(3Neg8$Ir} z#ert|M)_>!@Rl^aea(t>yAE&g4|QDA(mB2=OH2qFa|q4LhbRXW1$ByrV=mM%w3U*x z^-%nWQVc#Pu}R2Ls%4ANRF#x2F8O>ZUo_Q`Th3P%Z){nq(~(_~fVJeAb)Ts1ekEt| zQ?E};0|PBBYtnXq`>M{tqphnOyjiU^ffnT+(SE~!{vf%*SaL&Y@#1y6j;!|&wV!C| zoETQSG5xgi7j&ak`m8?%^nWRjMG+w~s$>DGab%)Wpqp8u4Y)|@z^Rs46qX(?Qpq4o zgXkn4iJF8PilruFsezVnwjjVk1v}79TU!i^j&?-DQe6~$6o)JxMu0**jO9vMAag&9 zJPWFLRG9CDNShmr)e4Zv9*f0V#mLuk(naFp^N1=G5T&6Ea068*sd91lW8f_U<_| z^reoDr_*vhfje2{x-xU4WvG9}VDwRAU^j~iyv=v!e=0=0t&qn3t9_ZMag}C(mr>?) zC}vYRlgv7*><2^+qlTnTlNnV}$!gcZsx@2i_tF>zXm~&fJCjMJ3yTW)#&oA7@f?1$ zRKY5u3_O7jk-(}-I$vC#N>3Il8KIA`swwfHva(7Y1X}4vv2F3!N?!lACKO|;DZS3z zW4`Xt*yxelHf&fvVvB7kojR@jAn<>!eFhf|K}P0^!T!1-OMZRj^UvQmw8pqH>h$lg zTDG{P#`w{Wj*rCbnaJ{0t}in;f!aF#lw_ChQr<**Jdiu238GN2QAS~_Xvw0FwyYx) zONNPsQeI|j8h5od9)1CqWVo3Nhl*vv#RS&%=-|Ty2z#p$>mo|JdKsGxCy(^RvAfSC>|nrFu^DNr>!kenCNe zoZOm~-RN7a%>+CEAS${;$}2DumayMMm}*GXnqh_5r1)rCJWp|(&1AE(xHxN@YPg}I z?1hHgz~A?k+{{tGP?&KSd^?$OA8>=|jQwXd*x&mPj6|5hXTQMUgCkqBxVoyMyma9l zhM$8L+50v8vbD_)x}fgRMT|hUuzm2q2HVSamvUF(;^yFV*V?sR#Y<~pJ&E=BeQCM8 zFk&@cx_KQJ7e6A!$7?Hb7@=GxIyz_;t3E{E1rsobBO(RAkCtKZ+xR*R{#T?w@jBdBUA^9=G{wx@8%cbQ@ z7B8w?IGa0T|9e)oJN#(9__B6}j@gA(IA$+#b%&q4SmCE};y$drAvMWSeoGCDjwAn= zM0?0TzHmA&Hg>SUMkM5nsR!?{!#>+`AAR3*68v7i?6q$d%U=7h$YuY}Xge+ce{S3T zL;u*&gzp50J$xtdb(@2A+axvB`Ipr$f}c0*+I9Y2YZrzmv6EmFsDC1_(4~9$Vuy2F z@!*6vV_8~Lefh{xc4k@a@|3FPOI*q&&IZ}&?<#39r=%~r7KZ1`Sj;Y1a70;$o?f!u zEbB~gR`9P@p!5)Php|m{4iN{}O;Rc-FCz%kNl{>PW_yA4+HLkETfBt^!R>_J0nAGu zIa{3KTOpuJ?ow#NCpuRksq_c?@4kW!ZdrL#b6@3;4jue)WkAx^ymwpoEi1ck>XOfX zuKUbI_~Tp=?Q%GiSDbvd93I0jzC6t?@c`*rvrZoC|}^VXMt2MfqtC>kTTOC zD^XzEqmql>1g~9>%w|2zzbHvDMxln60f7q*bAwt17YKsqSXN3!U~_#5SqUD>58#-a z0#li!a5VZoT%pn`I1KO>?J%h;tH3Ydz7qMEI*o>}ynMW`WHQQ;aCl(nHCZhlhbb=b zy>H!9+Zns+@+S)eSG8TnN?Z0fH6Cc;Q}#{2+|YV-$3t;uXZ~xT>GlF@d$>#KmVo2O;;F0NGhS z1l0;h7F;>>*knirULnj1bjXuc1^AjejP80B+wp;KH1ytU=ua*vinat^RhQda>n5M6 zS(2Sv{kB+2@=Iu>13pZHzb=L$Z;t_0K<-131{>O{FRxfbEuQ{gnU+v4EG>}!z>p%P z5(2bk3)%^+CrYtI5!2A9R{(Hh91XfLj%yF&Sg^5nQY^^z`J8TB0(|Lsvj1riBVZn` zQb4YBxi1HQroM12OX6E4E5|Fp{7VhwDc<$nYvg{@?MvzlvbMHl)-4?ZqBSZna2LDr z3mxJhkJAcZYy0G>g{6z*V`8jXs|nc({0$$;%2HR$-}ue|jlsZ-1olv&Fe7D+8i8*a zmC2ywB4&WE7dru0wDid>3oZSe@+$5#im|S+Vl8AGAE-PscD(IDwk@rBaPUK`r~aLf z^nVQRdaA6sx&3&{`c}4xFNjQKh_Bi*smL@98c)?+@rsRlI#v|Y-Y)leZ(H4eVAHFaMJFK8H$bjMql~u~n zk84+a`N5NGN-AqB7Ui5$4hLQc+)&;h6Wi3^x~cB?or`+&(^!YD14qwB+s^)*K3S49 zu&2*qu#d0K>FCHGZ*5z)b4B8TgRM;|!<|uV~?qbr+1V zHNorf(pC$Nuocdrkq#KFY+xKNzTx4e-Hc zUufN1-_hBy>$W4;Wo2ilHzyVzxt%ZRml3sjRayWD1>h!>4#85V<1hxtVH}GAx}=Z6 z($<4-pj#bf#&}zXVB?#|9wQ?uU@gHIwneQi}SV&W+aby1opAohcn`miV%UM zTTJOeuQLcgLG%A1No7)@X7K1oBw$Bo@0Ss^2>i^ud&fb)~@Z}|DhXyf330sP%B;dCGyi4Dq=1| z!QB;)cs^DLMVKWtff_=jY7KK#5P5Yb*y9a`WN2XVD#hhFxZy)DMpENL_pe`n|N7i3 z?|kFzk#&Jb<<|mFv)9($w{G2i_g?qkH{ST-buqx*w@|ln;BLXob182Rv!R1z8C_2j zuu_T|=oQ8_RVl>EYfVsTdYiF5*JrhgLpGC}8R01UT*oU975wNT2kVWuiBQ3;C#nif z8|8b@%6r zbt&OG2VRXmDn5drRAg1IX2syX&(iB5JkKb$26m>b4BnJB2(%b>uh zHv-Zv5gXEC8z{47GC54`5GqVICDSAjjo*UnfpWrVH@grM7Uy&s?gvhIVTYD&X=qws z_p|RV+w$n%ecM^h)G=k?7#r~~-MM7x@7dis|F&Vv=Qcb_yGgW0eoQ@E%KRnpB}gg* zYg^W%DFzC>M7SIfM{~wHslXSx6Umx8!R_}759}K{`zpNh3&#dZ_iw!X${*fdhfAAw zZff7@%U}4xBcn|}6R(9G_$s(9UTKBj?|`Bul5yyqMa+_d3@~4C%qckLAiAPp|55r6 zrjUE2X=!QRG_M2Kr9CMN8;O^+ujFa8VP2_~CKJwt8>w>`tBMMp97wO+GqLaHy{v0( z`;9#V3!mS7jV|ZC&--s^md}2t_t3ZZn_G?TH@1(p1zuv+o!9Mnyrbjs{=u~^=gAkv zvV8_k7UdsBpEir-ABL`TF~54W^k10Gd}@t@!Z|dst>*)smtORZU_x zlrqeQ4QE;gu@j;#PV`>YBMyMQR* z3&o<$B`t2NS4lrMkg}=y^cmBHH^HSh1%ASgMCY{CvW@3A@;3gYbjcU)wnrxvZ>GH(!5j$1BUAj|nV-b|CCfJK0g@!A+do}O zwSvxoN+Y;jY&DF=LLmv8jewCYe^gNgFmqaVv zidamc+?tV2RmPgIeGR+8*EHf<2bD401f#NT*&Y`{-H^1jNVzQ6gb+EKFD8x{asm}3 zrrV4O&U%n+dd9#1RH7C|D-;|s)KDA$Ydn)GIuC8nQ<;VI@_VipU zpS{&|zMjP-^sq-Q|#Ja{I2flPooP~bOHhKI0LUUd(jKP z?wI!i;Kw7~QeOG_<9&;dtUrEy{gK51Bm3*BJ67Qr-@xaGPJZ{~(D}gUS?l27?So+V zN}B+XcEJwTV>+2Q@Qblt4Y2OuYFgmo5qxNY90}|STwt((Wtm^2Y?Ll3VFwd{UlRV9 zMF$J|;?I%&ym+qXfb9fdH^-Ynj|ppQ_)GDyc?2vnZokPSdKlSgiZ;dPX1gVo z=>gbJED-n+TfhQ8x??0a@GEiGxO%VM{!{($bmo{x`+iPK5{saYpWa@=_W@)QwP8n; z1=pV*RLu!9r8sD#NSe2l=Iqe5XJlk}GrSl?8{L6cS0=$Bc2{XtRaqrr!rY+r5Ee^T zU0DJdRCE(MjJ+kEG-m543Y=Cp92*Gux7L*O%i~{OC%e8<%I*j2ENXN|B6rxvKXh$J z+qNtAto`91lI{kl39Y?fK8e=m5(x&(A6$OK%mZLd+6p=V1|-3(aSR1f4+f0RFc!`& zB&iFl54X45mL2340$n335Hroq3yqXcDS{z4lfC+xisj2vvsWL|_d9pjt?XRB+u5%_ z^vqR#4Vy>D;k$h5KK6<)x6)-?(>T<2uw$rk&A#!=Yw~XG*i2wSVD0pVz>i@K&Q9fy zCn~p&TqGR#fzN}%UE(>Xp51`!YGsdnFHjlEaR;FZ+&tVb*qA&Afa2;*BBs7eO7OXT zdIPG%BQr);bKEP-i)1oPK#v?;QrlA7F*fzTrFpf@wGV#rX1O=nKel@JSW!o8+1Q%h z`3E@%65m&ap*Bh>{zQrjYOpKc_?U4{7)KgC`95w|b!^}`)bVNIpH&}MCY9H5Rzo`g ztUOY>fWIg*d_YmcB2tEN&npTxCr3ljbdN-#25&_|0$uX!Qb*CB`X$x zLi_m(CkmT3Z9KejQ&VBTw{oCmL(4#=_i8jjel>paaCv4_RA%|`;>v>J6<()a@AR%H zHo))|Eo-8Vp=BY<>XqGxfw*haYk^LB^4TxY6DcGl$u5^_v6R# z@>BVH@_Txp6Fv)Gme$qM+PR{A)1Ez>Xzl~QmExsp`~$UDj0h)JLU#%lj}8;54h;&l zVIbn67nWtS8xZ3VU>aeI1fAyiD!RrueD?tBVLc7ItE#I9?^?BItf_8IalYJympm7E zRk}(l#}~N$>CkY4B49jY=rWKDNyc(vPS)Fu(yLKCWG1bz^BYx-MKJ-)iwUjXo0!gau82+S&q;DVBwER%eR zljl<)uI;hAX&nOkB}1VU^f;WWcgmiP90e_MWLV>{9}MJfj^kMz zR*$bacgf)d7ZBM%k^CZF`39CV;5|s4kqoAmXC-R%1YB^ z#F9NZ5h3P4QD%N+O@2zjivF@y>q8-A7&KUo zlMscXp3?5t!ocd@CY2}3hEqq=jL{S+Qz8k*uAL)I>aZ^1=SgUA1E1IS??S$RzmF8> zelf;rfXz6hYHbtelo1yL9V@~_!IUDHfvaJ1mcNC-0tP5iN(4g>|07g_2NiLqm4$Oh z`1y8Vc6vxhB>!W21#jRRuXy#>Z(GbHQw)N0(M)GhT4PzXHQpK>54}3sgkWeWn1YoJtbj98De1>X zHwPf0Nn&h`Na$D_2v;#9QcR4!4MrMIb-`SzYWgrNaEq;MYi(|7sIObTY$@^F5JX*& zi))#x=u#3r--L=mBhW*rlxF-@dPfmKV#vZ z{f7?i`0R}tZ3(OI*g4YL@yJqN{=|;GV@o@lk2H2H-(FW&J+yW6U{$YGZ?MQ7HODI< zoxXrf!s$nXT#F*IaOPoKKsS)bpDj^i7mzN9sSrlI;H1+_BVO24Kl9=QjO$dFbAB2| z;EXU|bm&_{7#m{=#U3w#j{)mAHYRp#E?Ne-V%Q5as2L)$f_BdPq-Mx!=e?Is(fEuQ z1wz#>fv6GiiP0dd`z@8Pks*CoFgAQ)j1ALFG6rculJ^zLk%K~Qh`d3chc`q>!z@IP zwnvFPn>+J?h);&U0M^N+emA*Nv1zGRjU+;G3Dq+p8gm3mL|a=Il10868b$eRh%z$u zz0h#os|L~+P+%}3ly0WJi%f_MBI-UI8o{VKIeDSB8PT}eqUsvbGG}z1IYOOM{ozt70-kyh_;bdq93!y zLZ`~aw9qj-9gH6oP_-8ak03C!4v3vui3lQ?5k!cJ2qI89FbH@Oxh*X%Z$VCWcsL>Y zQo{*aXXXnl{8%is`GX5n|0B9ZzHu5)E~=NlU zpo~L;nT>j6_~lt(sAlu9JarWi=)j;68anBQx{d}YW3A)mBx`P4vcO#)EQUb zIfw+I0zRyJ0Td+wYq;NUFTr|Bgjbkr#faLl=5*No1ilv0x+5hpV>AK*z(Ka7h84<( z>n(^y^3^v^Oh(P4Pa(Dg0+xCjKtwF1?a^=_F8bK8KLcyNw5Y(BybvyBlPAOMN-HAOB{bgVnZ;?1gXx?CySa(x9E z#t+XJuEJ%@b&ptGF<2Hw(T)sbsjNq2M33X<*=o;z{-CI_P** z%P#>^@kkk{rlDd$cp=m&2s8l1p5*dbNt(e1n2F*q!f*jaRF?xp4AM6$Nd3_8iS;Q9 zTWj~ckZFkVu=<8IwOI}v(^<8BwH|YPl>B&3Rr&aR&kr{KwfyRh<4J{?rJXJ7S~^QJ zGfQ**_YI-r<>>g&sp8CyU`!?1}_>60@5I7otML1@rZ{CRVJp1Otl z&)Q=K#Pgz1stbIOWZ(y>e4>c)&0|a&D-eFE2ZJUUr$$fx)z9s%E3a+5;)QFC1N#0C zwXNHjnDie_M_Wxp@~O!!JvGDedh6QzcWs+o)Y4YdS=TP_ukzO{#DXitc&?J4=lAZI z-+~JT8f*BM+D#W~R8wUt+$C$VoNQb>9#pdwzYCAZyTbmOxFYx)RD1@2Cn+%sR|`dT z3~<&^$B_;#E7JqWMx zjvo5O!6hY&8gF>@hQ`I0G1SO7-PO&0v|`1crY3*?&{BeS?7)Hy zm!~Qad~oRc0l?#2IOhuG1&H-lvlky<5GI||a)CxnJfP(GSfUYd2^}k&p`ioD zb_{Zsi83^sl1}g6`GuDttn-1kl?=3hN?ZNivyDL1#fMabCi!`w?LmGM@~p2+Ny3eV zY_Fn1%wqwlnMkeI6nU&RqQBFjNwF&2*}qkXT%KX7v-#62z@6O7r(Bv;)7S?gI6mhSb2#2g(^ZL zA`&AtV}EXrXDDolM~uEIUzMxMWpo*RiNy`>)no3l@yzjYck}DYL<|4VvCQ!?H#~o7 z4QrCOvD@)>im}ig(2uWT!xZ9X9klBu=w;!1NqTFI9Lt(kt`v_cOD_Gf|4|=Hl-}FxDytD!+7M(U|0Z!}*1c)Le^oXZG0%uia2`IV_q}$_LU3x>3t8B&h3lfv* zc1Nd~fp;1~MA7X8BZVKR;|5%C41{aOc-PbLC;W&ykB?CA@f*6&KiokU4P+Q-5V$CD zXb_B{KQaR!kW&%EG7!|_hAtp@bfgRDl%Pe6FUA|FV|Xp~EZ86+4;XxzJtPr`u4<)B zgj(RW5t@MmLFvE`WB{485DM?_Du6B|k3SRkp`H|*VXUC-q}|QyGEis+=`EylT;=rH zJ$7S-%U8x0J^i$0#6tg)Q!Fj!DVO{kbBpCIEU;31>EH0BcIjrJW1Iya-?WRoQ9k|{ z56YS3k~MgVqM%|RTvjJeL@)nj#NX2d%4iU;x*|U7zl1M@b85rFvP(RY&HF&5gP^d8 zig-R~Gou$MXosE{+25X4`@(;dvs=u8W#(q{TW{fC>}l#1b!(mU1Gb8N9e3pHqI5V^ zBpiEWL9kWL8=IOoHnU{>y9t0Hbd@AIOWMmXSQni#AaG!yM|gUdkS2y89Sw4+8kW&m z5$abut|M|p7VGD~{gnS(NZ*D18(&{E{b%Lt@>6&vRRhASU<3N3dj%p;EJayaj2sn% zv{mpaNK$|jbs%LQQ))+y zu&V6%=!<@y;F zN8bDFFZLc)!=A%WaSZ7vFj7tV*~%gD-&%CyxXw!IA$z$ z`d!6{IyF8CS<#S1GNOzF#tVOgB(o@Hj0Ol~G)%+*dBczNNV=e1flMp4v>v*Q%6b%B zfes;RQ}Me3fx!afC+siUmv?_Dy!|+PEXv zz0s>YyLQukTcQJBVy%Jma;ChaE-AWUeMiTstDoDk_J*9+hK&sk=w{;dALJj%Ujj)U zYyz-vt+6ra3$JK}TB6XNj#7Yp;_^n09y%hSBQjM%#j+g5R>ZQ*OU_d3i*i@B0)mJ$%nS_us$z(MKP8$X)oMtJ%k1{!zm3avOaUxhod@{JDaL z{D}qic~2T2!D0a!UarURQ;|J{fv_12QCLDy_X}NZ(a0O+3x~G{YUl|Gs0W>vkecMO zaW)9=0Jz6!x05+zpr6e=LIw}H7iIL1C~&5z`-1hIeDTGR!NGw6?1BB$eD$Y~v>iCm zHqy*GcYSs@Td6H_+T{;`zowlmHh!`IP$L72Y)yj`KvtO*1)Whp7#&JrTQEECcGNXql zz1r=1B=34aago2>xV3Cc{m{Zhrb*!Xr62>7%khCH%rp`UWm*9?Nl36dojmuls*FcKGRfPZEe8EA&V>N)%H?#I zpK4tBEtdDqj;2$A-w$rP^_5$;4h7z9&b@W$+}FN#Zs^wB=C*`0n~vOZ_VA`N39xje zVwBnZ23nv8j6Cj-=Er)16?ho|O=O#-p!-DDpQOVSP}&3-bTW~@C`1kG>4LunzA~tO zMlW{``^{OTSIpaPcUK^Xg&8t|qM!pne`rBgooCn7O|M{oITiTYQ;)IA&rkhs<<-sm z>e!)2`^N*D&U}t7``%M0mOe1HY&jZCRXH7)ZikdfA>wG5Nl=!BjSGGqb_Q=FvYMgZ zu2+H_G9>6rQbt;m3y;}79*+^&il{74k{emZ3IcT~j%|nICbGFoD{t9)@9u8YkZJJc z78PB-|1(FQU0T()siwSbyLsPVo~s|)990?n>ARl%6>D4Bd-k%Gom7z$gn#)qY!)c@ z5hjCM75Es+Ge`_lZUoEGZ43UJkUF5$Df%&S!Lo5w5d_ENs#ji-JySK4p`7vKIAzWwjfHvR~-jlVD=U)J0_b*p?C{ev&eoqm>m3||;c6iMt+u%|GV zMD;^672F5pOptLPgI&#Ja^Gm_quK`1x}0v141wWQFjm1n7I=Y~vAXjErtWVafj@joH}tnp;vl-_}~@0`zD?N=5c5 zN>*gM;`E59vQ{`^z+(YO!xq(HwZc6j@*Wn7PJ*zv)8;_h9HGk+Kf?_M$}+^_MAR;U zq(!Pg6wEScA|pom#L)82&ZNFw{lm+PTC$V-b_Ny|tXSf7#rc{FSW(6D{QUY_2fO#$ z?(u>Ox%1j?=#y5;U(8#Ol^VAoza>AvH7_p1x++QKcUA7Gyc1*eSEAUS682WAa|^Mfo?_2jQ?i8YVv2Mo$QY$Q((J{xYrwYUjsqXeBcY!#}HN&X)` ztL&ctqqF#Igey5ch>W;VX9Bk)nH4D5E1$gQFiQ#CJ-Bjk@S}$Vud}s-orAL6bzSH9 zc;|IpGCFdRCO}R?<^~>TyNIk}n`Do-*?Df4#bgGv zQ34av%K1AnBnJ~48#9s=C&$Ds`*Vz@ZoL7Al-Nfyy;A-MUm3?=nZ)8^VxhoB z?*q5e!QV!_uYYC#{Qsh^5$$Zr&`@=?$uu-JG&VXiIMCZetkI^%6?N6is+TRPslw?< z;ydJ}WTdA+ILK~OD_^JJl9GgTokh1jdD#itf2+S6=J;JCcRMuaTtz1|RKk!|seT`0 zNjXVLIaeho`4W>d`Ja;#eMw2atmN#Zr0mJ0oaE%3TM~1Vl5&sWPf1CipwIZ)`6r{3 z>2JI7d{UB}nwyxIn;4gzos4JlbMS>ptLdwgE~5`6weUZuY|rQN&LCXj=G_qT>#j@PzNzpPY1 zi6BoZlfLPq8Bq>N|+$jkHIjcJ2Q=7P0qs;VGDOG=2hgrQ@Ee6 zaFDF{wlJ3YDBuQdgGzbqN5}dCzt($VGGdaWt%{{)$I_Nw->28EYOQPE_3%dj7r$P+ zzOH}yN|AlGN3j`g7JID2oa`uER96<5I#@k=X4Drydi%uMbCrk7s;c(X6vOZ!!Jg$X z=hLNE9*+gnhr;+GBi#(01A`f7CQ|(MVCV61Rb!-3JR{ZPuwfOq^UP;(lIuaonh1YZ zn+S4l3P7d3^ta&ppZW1QU%+z@2{eH03mig>c{nYV$C5RrB#IJ&Gk_c3tE@jc@O01S z;i>^gf49E-=(34+GuuD4UkvJ37k+7bUd9c~+uYG`tf~2Wk!Y$=qG_^}CAIh)6J%V( zam*~slr4vhKJyMh24FFAC3`ctPG&vN@icKg9a^7=exsT|Di`lV_KQf7d6x zDs2o&Z=&5kd1B3wxgE z98T1r!nQy|d`KFGBz%^g6FWJpgVGs=vLBxmgGU3S@1m+2bYp!R3>E%$eJ zbOfdv8xH_6r~U9h3>lm_bbE!_LgXWyY*Y;qbd+%lQHbhuHqz4}JOeHyu%KD~8kB7u zl86Ox);5);flWzXZn&gh1^d-qGX(uY%xsb1w^b%dtxU@QA%YnUJq<~Ndy5MIega`^ zVfhIVgaIUqQUP2|5I$mrJc@{c5{na12CyHu+!L4(VtwQHu3dS{FK-bNe*5IJT%&Ji z*>K;H!=tN$>U}(gBASa2kz!xDGz@)bO|vgr7o&>?Q8gxJC%m|zexH%7Cm5BQeqXdf zElk6Y6xLo|#`90YMf^w%pNQnhFe948{7h_3#E+G^JYM-Xf4GR=R8W$HV^Pah_-gEtquNEUM5GzxN_!X0;fKRLg z6hDFl3}u0%$_M#wK#{Q?=*nZET^a))ko&A>#2n4f$$Orfu_Yu9y0buTj3&rRG@NJ@*XTpUNn;2bRE0jJopfjm3sgbA zY@VFWfM{_=BCOp@Q02p?*e`_G9=q+8c_jH>`5*Q>F0|JWRh&A98lO;>ThHZ!6c~;x z{C-@Tipfl?L@g8qaEzC=fV*!{M4=!fm`b5Vo080>_u$|2m4ZF!CWoFh^9@+F8c&QI zeTWE62q|V2YBSGrAK%LKy zw$7%|w;%1CMWt^lmY+D&(Q0Z-fz;uLi?61(pqPSei9%V0C>k!{ue4r6vVD~163Pex z4>$ks&u>w1qFzF7%a{9ht)4%#CHWJy^`}$RtQIe?Z4T22*ad<@dgud(I&^VSKdQ3v zep6d`SLRM@Ioh{-&FlhyQ+eX}|D?PVtHcap5fTRg`BM)86nJ1r+6QK)z$QRWd0aHf zwwtki2xy(Pme9hzS-GxRu& zFxe2-V}j>9A}q)he@f^BoKij({2YoW`eSj5+H_Vo)i&pL2rNlt`*YUISTVATsIFzqF~9QHkx@SEVcPH^eDy{)X^hvVLlx_ z+RU?S=^em!o}s5V_4@}fgu@b0GB~mx()UXi7r4;#19MjmjYb-Dm_r^(Pm3;fYe`9fnKHSo9TZuD?ixY_;28>k z?E+0Z<>A0yXxi;%Jsql`o$}qOC{56AUE^$8cF5$F2IMxh)`*#)0`n-(?68Brf)-Ms zO@`k=1}7)UYgMUjI)o|{k`j`f2@X4spCpdV(`00$aUuCShNw~X9lyE*zu40oK2pR| z?SY%u-%}d+g^PW8>K68;lP73=w)!v`x6m_j$@bg@Th&i^aPPr7Z#~ z@FH-4<6sk^(9kb3$+(J4RMk2BAV|S+sh%41es0)rN2D-4B?)hE39UMd&*Y^kY)P380vG_SaHFdN`-(|{?ke9$Rh70Z>1i>+DB^?*2QIJ)kcLS; zP0>)2NS>+GHj2X^@p2IB=-NUlD)aC|$ibe*Q(Ymk~Be#M}y^%e@he+tx zT}0}Q9L3pX-U46g*|la)k+;nI_(@_?8nAxo)&VvPwgues*ce%c0t`-e33sC`@8r5F zgnZ!WRACbXOhqqp3EkpK1m>!xT_se7WeDOpvEn3E8V0y*TUdEB>+p)rlkc5XHnX^o zM9PAH2A&j3E-SHRp40T~Q? zN5tpB>5z5f!FK_6BGRpc1j))H(ulHr9EH_1$v~}At&~j=8@uUhTV7CzY{#iWAwwo_ zRAt7FsRCrrWqV0|j4zO9dX?7($;WF~%V)QW&H701*jDrp;jBxHW`pNgYxZBMW{KH@(SV8Vfx@oV#dJ zAVXlmSwaV4P=Smte0X3KD-D+*>n%^rVo57=1E=M$Psz??RunL30%Q;$L#Fij@s5u1 z%QKrb?J*j)z!R$MSb_B5c~y6;?a??KB}>WtRprNY`VCT)A=(fXjeO|nomjP;4@E}< zzrCSE7Ns++3zs5G@h=Pe0(eo|-|si@iooPWg=v~`A{uU>OVTvs&d0@d&7LGDWKM0f z_nv(~BGW)fG*a?WwzNP(Dj207;S4fDVHGwoojKsTkW&E9K2+`18c!W?XQU=4IO4Od z*>;B=CJgFPt7?p1)m~FXx>b%qT{Q+oHs<=}a4p8(+t&X-+P(uYj`~V}%Fgy))NS=* zHLI<9S<6=MvWjKdmSsuq4I5))Y%sPd25ca~5JG?pN1OymAk^djx!mO_Ng#m`NQDat zNiO9smqPAx0c-XD-fw1hXICp(Cb@(Jmz~khoA-P5d*3@9McJ6Ri{E|GCcb}$F*4pn zgp6zX6<}%%5jNH}evBfCUQ}N0ML29kyBGm+5za+652y|x8uQn)@D*C1>fF9x+o6@Vd#%d1`#SNs;NTGk!GrL_>yYP;{V*{G%g9x|)&#_URn=CR<9 z3(9uBSTQuP_Ug8^&8V)N>5N-jIeKKx7x=P@_O3G^^bzO2KlgXyXJH1YA(77w1qLqJ zlCYp90YsD4V#T5ZAO*CY3EHU`(Vbulf9dXoN7q9_olyxT=se_n{s}BFFhFXgn#hk6|Z*ip%R` zsEjE5c-Ni>8d*Q%;K9g##v9^>!Op8YIvc9HNh!)*=!kpL1yn%HQ}AP&xA_H*%W&rozN7I(O&>^iI6|qf~HPK;Dm4?nNkX>YA#$z zR(V4fC@9~ke#cm469Q*I$1{Q4B?jUs1wph4{Kx?~9Bzj)&kUe6@NDJjo3A>$`Sa5| z&!2yuzU|yk85gRWKpKh_k=YLXb$%a#+r zzzTd=cW^16MMQ$!lpOb00=`~Y85FVR$V-yW8{Hq6@G$d%)EQ(4qnbJFc4Ac zS39NXjFuBCuv6`n5>^0RF#~9Mswn0OwaYzd^_4BQCod`Kz0Kw$2K#~Q(<>{`Ie+7u z{cHDT4#(b*aD(aFo?@; zCj+r5fG?nx0YbzeO=BfMNNkiQGIV<;eTdgHB9w(bg}j8?>#!Z6K#H(VVkTEbOT8e4 z=>2(r+{W9x<}cCXox$Jn8U1`t*zK^x@ng12FCHL;8v=He3$ZuHWJGWW0xS7+tiVwd zg>B?@l#TBq58RBhb=xd^QieDuOe#FU!6kf@4ZgtOgNiYU)xwf8@ProGld_Qq`2~j? zw6WIleS6!TafzExMsMW12TcrO();Z_;@C*2s~=Q%^6jqxZ2`=}6x)nd%GGcmdoI!E z7Q^VEa+K29+cR+jR+q8RNVH(hqlmmw#MXNV3FdoK823X{Ulnu}Hrk*Zzx2ysB&w@u z0DNVUFWu`&r0ss>_o9FS6lwu9n+fxlLk&vS&(6((0VQ%9w!TP32t=&;YiT&M`GDc@ z=39H$^GjLx*IzT_`qZ6w-s{@lf73!+|K{ElXzSlH?!Ys8WHc(IDi7JIPTYo`2`?G- z2)eP$6RR-LrweI5+zwOxTzphKcE4@PlBAUr<+LI%!^H)}DPj26>= z9A=ScdTuco)uTWaC!!*im)p^tXZhmSK~J|?b8?n-BovLyOAGH4Pe66^aps>2m?ao(Fj<9+b^`-xFqdbC z%X9K}N^fT2q@mP!65Uy5FsJ$Fu>Y2^mCZI`v{kh1=0!%IIf_k zpt`)Ys1Vmm)-H}M$5)%BjP~g-l_v_Y0b^G<9*nN`0C4oaR2r=OQ3<-&MyUj!yh%5FJCjh zf-OaC*<6xpb)>EzNllhlBHke;q&X9c*iyu~KZtuF)huozu)z$V4(*sh(+MZVXhJxl z;xgEo#}uu}3=3*O4a5@Ck15PqDTMdgK3Fs6q$1XY-b)+gN=r=Rf!)v zIr7N1Z>_mA3b4V}CEhvP${z6R-~VN=MFZUkZ%mv!&-}u24y!@j4lCv#q10;dEFor= z(7zzwd_mj@Jr5VYU9LE{7rPUw-oa}?86z8d`M^tIbYn8mn#{T_MI;!`sZ&&)h5+_Teq z=A~0{unwQ{-taYAw>bMDtzVpG71~V<%2C2y`<&NhM=ewJ3<|920RGi=@hrQh}UFqBg|~N zx}Lp{bAy{>Y{%6saqO=ia^wBn=h(S6(ofQQ2E-Nz83-hg!#diO1RpB<%rHWW&@194 zftU6oT9jC6SBFtoq)mi400=oO308@X!^jrxb(A-YFhBzv><;a93`YgbBgonn1p(;{ zoZEbeKf3w0U8iEKdAxJN^Xa?py4Q94zO&KG9^I(3VR8?a9hA7()(0zy6rRQkL#I^< zW<$qRDfY=Rs++~A1P+nNsw1Ugs~>;3?Ss~+^^d$G_y<07kk9zj?|=WNKmYm9eFOcF z<9{N={t7Hh0&PupqW!8zv4FPp;42U#7y$vnAgD(zI8^#qnBg#L=kvI2R+?<4!C*|~ zB$#NXOir+vAw?d+A)F$d7Y57xN2-Gc;X9{B-ao*1_^cRul7^)t!pe!S(GHQ|oWysy z>)R#=4&H`BeD~b9*zU(1UXLKiY*JOd1T84I6)3M93}H&jEHQwwPB7~*ln247;C&S- zPLTbTn(Gi5E#)%eUaVR4GS(GRCI#mGT$;EDebxCtQthBbAphAnX3%r0n=*7*+4r7R}AnP;3#!&bX-kYlA@tWOSOSu4{XzFrml;eT3)itZK zZ^iO3#VN52p1EJL@jqABPmVk?Ib37jeM((R$^T5=LmB+h-QVA`>M&bP37wjpdzI~^ zEZ{yFusfnMF;bEe=mqjg0wl%CvdG+zqk^H+v6sd|lIle-!An-i(NL)|V@aJt4~t7# z$C)eOKmpHIRMK;^;)QZ@l=O_?voy=G;F`+!rXTbrOq>pZbLMTTeEGxAh+~Vbs+{{z zk@m;LqxC08nMO6r#9Se-Llurv4cRh9M-j`H!FpmmJUV-z_(8?+z+|e_Z&~8_$&oKi zz1s4YvbQoYd;CjnGtI#Bu%O{^N!09@X&0sVf)iMSAA&Jqj9|SUlXh=^_&r8n(?x&RP zvt&mabt=>Yy?X6FOHt0eSPyr>otE!Uy((F^ZeMt>Wo7Wi|K@Ml7qQxM?i*~ir4KXB zncR_pBO@I+UG#AcX1rvzNJW_=C7Cz~M#&J$F_~RehIf=4Ge^!bFZDsxS7!$$_ASHEzSQ3}g6^ zm&w-)=WAkRB2PQ434E@RAwV2kc>*INQ+#Z*>%&% zFQ$009>rz><27<|5`YN;Fkws!yre*^VP&rYDHuz<($hIEJu4jCN{QZ*J~AZtXIA1j0xdao;#H;)?LbO$9LfshXW1zW zZKDrY+2vXzHXX9sp)#LDUX~Aeu=MC{hrz#0y&+k5?TWeaFgf`8FZgRCmL7g@ZcgmP z*UE(7z3mwnZv@Ye9F1a=CAhDQ0D~d>Fzf{*6fza;nVdAE2^T^sp@Osl#)5_5h9-wuuxDqOqDCniCO3Lh6Y(Whsn2$K*VE%GF+6J^l zQE%w>$7S(}4a-x5H;GrC9GYBzb5XF|o7IL!LFd3DLf*GQMe;BXyD2mK0k%rf@v%p0 zPPNqd>Y65}-+kqG&w#cYmgE5jYbxSK0&6qPNOIi{AmLyF!#3{Q5J5_D22D}+O$d|pQPD+FN?+ZFkr3xd2}v46k!?B??sV`~P7 zTBj3-EW7{ph7onaqHxc>Vgg&S*d4h34uAiN-p;_#H4|5;OBQKp<^o$3OHow`O{b&? zsAnfR1cT9L5JZF6iP=(+FUhrFEd4-#(})z_fU2%R#QY3ixq`7RSy@;>(6Y>I6k(Lu zidM&}MVJU25-Z2V-XFW6>sGRWcMWDOVTtUMS9$M0fBvCmy$f!VrDqH`N6WaoVzx(1 zLhVt+9ijFp;cB#i8jD2);h~aTtyG(&OS}T%2;d$NQdGN?g(FLEm#PqxCACe1uN0@J z7o}gidm22AkELN664KH(QJc7zW3*8_=CwdU%`>l!ik`efXLk_HH)L$*w^Q5a-)nw5 zbt$*PVw8sZn(7#>Ra%Uqgc~plm(^NTrLF9_T3U-WxJ8AQ(5kB?bXtQ7G=>5ewc(n@ zT{pkwny+cOVq*qd<|LTRQ!!hwAQcU_UN7-!)EG0;moE#oVZ#yH0&Q3o_`^0-&2Pt! zg(VQ9DI0Xla1?spmzC~HFyIz6jmsf3egrfO}B;Y zX(+y2yxS6fj#H;b7V5fO7k-+BdoQz}Q6WP}mP4s(3AZjV%#u~!Y{AYXvp7Fr#nL2d z7MMkgITAY*%3H~7MC7g-*wCeOSMXpFcCu{V0;Q-NHu!o*5zK`!Z;MiNDjUoz&d4ZE zXPLpfj67jEmjlacNs`GEU_zBt55RRivH*%vEKQfTA(}y$AUj4gnkHDEq8)S&MG4`H zq=QSj22lcnx13aXOq4?iheA9Is*n(`sdGI@dSil6v|J4TGBZ%40#L+n&-R4@C@RG9 z2Wz9SCq&5bc}B=UEUO=K8T!xlue~CD zgmE&YXMB6cH)HkyT+*58H9Ek{urauzYY$&0lQZ!8!LF9dD;a>%_#4T$iLfOOldoV5 z+ziCqP}A0Sq?N(yVd4r9PRtMgfo)(?kWPW|0^V)+2sQ zr;ng#O+z-ZKQk6E%NzDsABcNU{=QB43>75cD5uXVxC zqGaPrLhG3LA6T!A;##)Ki=n14Cv9N)2p)~V5mhm1AiCSXGm~}DR>gX^ChsdB^?6kIx+5s@#(U7XwY6(AS&mB9WOnC!J@D8g&Eyh z$F@isi)&k6(u>!tR2B-Xq@24uU@yR-NCjXj1N9VwRM8S4Y{0@pf!PA(6qA9v6%qUv zW@HYQG0eUrWfw)$I4~t%6CST@@yj3*lR-2g15qz$Xc7>Ql;mW)eF`@Q%cry_M#d7M z3#M>mgtL-})3YEy#3PGBtszJWOY7ecft@or(5+@r zZxro4(Qwc>ANQ=9JRXC&TDY_6l5l5_Y}bf9tRt_T+U;N@O77D(qgAo69>gKRLsV;B~E&Q?T&B8SSRo%)>VJ_6Ik0*Vl9 zjN!%qLgB)220V>C5sb5GBsjLn0c>puw3!mZIb;fBB%n3br) ztCx(Zcc4?MxGgmB2vSAcwWcgQMr<(%IZ4h8o&oh=NRW7--KOpoa7L%3reL5QcT6UH z2>r*#MiN*Iqeo1qW$|Fp5D#X8g=fFE?YnC}6$=>h*lYoR{OsHxd!s=i+vK^?;GdZJ zPeri@v(+8|Lx5=l$OR<;A|KHLLr?($Wq3Gh0Yw&VUi6u}iPM3KG$<0PScNdTN32#p z8>&*lA{z&9+kB;X_2yeQ9Z=9Br)ik#7c$?+rc?0`e*EM2x^GkvBeUWKI%2_#0x^FO zXe5Kac?dSbFghx11PnjG?GdgGH7w)aFm!~C($UO}&)AKbbQwmXcwKD;gXWL4FcJg2 zh72XyK5~|77I%zCKuHdhe_(Ku)4snufBybRILQy0Hwb=30hCm54=_jx;zK2Nu2CT+ z7D+1Ow*z5xOLwD@DHq>i8jaTei_mCdDT(92f*r?D062l5 z;uEHbKOizRX7+)ILF7g&I21I16vZ?A>h%z1Nzpcb1Nnn65+(Qqe;yquxdK7#4cO>N z-pWnOMOg_N?i_Vn0N)sjCp7jz6Ma~XC+VCH3r#xL_4fAO+PT)33!L7e9q?x zg|klx{lDlQ0PN(N*N%BcezB7uOQR`>;N-x8vj_If{HMf^+>FS$XYSvGJ28Ts!=1#W z7+SlEAEITWB346#xWoXuUE+HHZSXdHU6dqQvy_r;fQ@uA?FLnyOJZCDm$dLDh@52B zlN^s6eXG%u+~HUV`5~_#3TNX2lVXBb;GU0zt*#Lmf1vB4LIF zLpe4KG8i1An=Zk!i7#IcKiMrnMi^L9!aYTrTw3iW8+IiRDMJ{{^ zUL@N#nV97by+{yltD_Yals7E^?GP+|b^O<7gj*95X2QHHT1FOrYH#2z1AkJ~u&6C#puTBreek!Sf2WA=1IEqskvi`11bDtB#o+ry1wVt!)A; zk*Sk*sE++f#d&OO`zQ9^zadc14C~`i~cHs{i9vOU_@ws0LpHVnu zvbn3C!PqzJ%ThYK0_GM6bvtJgOa~EVp@4@#mz`)+v}w+lKMU5BOMV#Ww2X8Qkv@RQ zMW#PQe>P0x5~h?1G0HH<$A9yOKU9$$L&6sxRd{9kckrtP{uP ztz)U%FU17BMq-#rBRFyzTnoj+qUm5H-3;jYG)IN&UX~JKoFU{t5|xOr3eOnAX0Y!l zCIoN$;~y2$8L>WCBa_Z-*unQh*IwDLYsa z%Hu5-65_-WB@Ee=MDB`bU`be}V8)5dR4oa7KUE#kU56D-C##5iBro|t0V6M>Z?D{``g-q|Plp?$aB`u3UTFKsz)-o#jD$bh_h9IP^L2EL*@ z!t=MvOf&EvX`q+M0J0;2OQ(f7%P=|Yuwly<1BemlP!jMO;7)=cB7#PhVMduiNeulZ zo(}vx>IX#l9akb|`4iI<({b;F!~`0`t%^czU?qeM=OBI@2H!|qeY*_VXxYWTIrHa7 z&MaHk2;fHD*YsrvLtu@xlHqrB|2uTR$NwaR*`Q$g14a=;W`6Lw1Z;-}F%BYC8mLO7 zXdSg4BJogW6bN;~AgiF47ZAA2`vCb)6Q*G@O`K@m6?>o~v` zXf*7<KEEk;{JI^8xbM?WJ`jt~iD~R=H_tYX_E~ftm&*K`80PqcwrD zN1DIezs$z3=*#DWHwmxJaeNtH{`lYrL7g{lOFBOw1wRi=2d}eEp6uy)y6z5O+eS}q zN=#`Tc<)_`ErL%eXpT}0Nm;dcj;<$Y6NHv&W{Ffa46rCu_7Wpc08xrccC%EjnuuF4 z_#&m@QD6}TzIZuc5m=?A0Y-xNvXaH3sF92RdVz&FGH^shcteaHAVyeb1!^SOhY<#$ zlSr;RF#aJ(@RT4YH)16-v6)(6wTNUnY?mY*@or>irKcq&#>YABW}_}uN+o`MO$>uz z4cmM0|C(VJ;7M{6%9}K$UzH`kf6>MVww}IWX4Uqj#9gaqP7k)Q%IzJSa+7wPV7xc{ z>A{=V4&Mkq?w;9)L2A=jSJ!xArte_fL+8&wkThJ|*vn{dhSuJ^c8CQ5;SOgp_i&6J zXEok*WRKInNRQKM)s2HqK*mE=X)a}*&Lv(6tV3!lHNEHcJgE-?vq7w!m+E<{*oI5? zK7-!?ili86x`yQ?x&<1%9RQN_A_z>|39aWo9qNU$A$&57C?&`4XL42>kig=EHiIR+ zzd|b(sN+Q2!rf35rfs6twm>fx9pc&=v^}us1i&k`GfHRaBXveq*0gMe5&564HAqY8-U7<=#dzS8^(ySOH(8_46z(( z+a;EzwM)WZf8n;t?B~>nSh#!gZun(|lhy)meE_?X7EN106+^gpi_U79qB+O;=_{?} ziArHr#Mq@$SQYoNXet|gDGd5pAfpWy$#4%ME#nN75#?i(Z5_9o+Y*?lMOv8(z7eAZ zMLL~D0EMDai;XGM!{%Iz@W@f7xTVp>Kup}f3#RbxYWU3nb=w@OQj z3TYr1Elczcz$D@c8M6qGiys;%WA!nUMA}zb2EcK6u?7$G7f*ktZrU&;1QW~NJbeGv z{OC?)+lF@OhN1p1AD5SI@HdqGtfApomBH6FOE`XTjlI*@^9gkm$4tzf96bNj!05=} zGr`?NMl!(Zq1k^QA*(KKEeZkqmn1JYIz>f&QNEj`o%{iwZFQZzRAF zN=iBIA6cMxv$HgtB_AnrC?7?-!BgzK0Zxg3I0>Q->c0%NB>Edahoxown=+)tSC}f; zbP1AR_S6B9BX+JrmfV48)(SsFf9Z|&mlOalaODCQVO~)Ffh`!?zyjG(&gr!XI-3)7 zTQ<(^vAL&EP8akZgg(GMIe>d|#o3MEPcn`9&^SdC+~MHIaAxELLH>fRxEY}QUTp5+ zoSfI@^nTR4(G&fRzFOdK^sQ*bvXIySdV4xMXct+asivyHUqH+_MVQ*j!rLSqmj`ud zmy0Pf8*?G-5@EYhtz#9R2osRmljnYj-uB=Q3H!; z9)#Xf2wlaE2i6s&Ae8jcbP#~$dLRO6Ya>NPCeRYuc@yfz*i1BKF#u|B1V@9>=w_R` zkW_LUkgs4^$zPF^oso`Prb2kWETR@-H5y`7kkLXYbsA9ri77bAh1jvO9PM%jqp6f0 zJT+2zeB$K5t$PdI$^1~|_pV{YOp1tf$+J6`?b*N=q_mHYoZUzv^^Px(9UR|Nk!CB) z2tNMY!1b>ZM^iABS;cC;=3fgF+lOxKn4!oTIVUP0?CEQ`$-pK&y`b~)gdVgp%}1Cr z<>DRKK;sZ5?YtRYgH{+>!B35YL+j(+Y<)Z)KQE8t@@n#Gh*u&)1Rk#!-Do!%LN+A8 zm^aWmUs!pvp(YeRv)$Yb7^mNKa^%^p{P)(04d*)N$>8makCeYPB^0l!PxfJ$gk-?~ z18pj~W>;_5_+aqmC@Jhd|LoeMyLx)Em$xSr9hU_mQMWG}nO-F~6WCI|GSvwx=>*=w zh|Pfw6)gKfO>D5@PX(H#w{UvVg3tjKa8y91oDQ?7wttm|Tyb%6Wih5x%1S6t$j0Ot z9i})S3DOwNhK9U>yeXRzk6Kja%TygGJ5TZGe(PRcv-QZ<&u<>O&gbb!a+Au?+Uy_mAQ!0CuGXOvdtQF#(E11cwo@Zt`oeVMD_AysO&#h(5^Mc@kV-bi3`X@T+R=mdeCM404nSiE%uF2*ArN} z5+21woaqG;EQ~4_5~f7*MlDnp8oDB zk?+zE-#0SU`M>;UhMySgIDKW^=D5xaJ*+tLY3Tx9V;1zdl56A+1ol;wqyr6?g%ej ziYklz<)!l4PO8Y$IH)HZ&+T$~!^TeYjBK1Jwstd%hpD~Fay74&E}R^>Ls=wJuzX)@ zd$gA8GH17x?LA%HvS-$;=0~u5pJD4p4sB={)gE@m{EuIFYG8L>Fh>sCDEA8*?j~*L z%DEP9kUJZ=#h)iQ^|id{Oiz?Vt6S{koO)63M8n&S%7ELtA5PH5>(R_*Ccq67;Nh(p z{MK28DQu#3nPCJhh^ZK`P^aU^3_#ma(Y3X;qJraE2V1fHw7aXKrJ|(~K+@_;TI)z0 z0QoC&b6_9QVFD*rf+|5j3pJQw2q{YpQyF0h#_c7M%L8Tl?e`0rl&nURbCY^zW?e;3{=4J&do{pLhdy5RmN=(%oG5I zR<_cFer}v3Saf3NG8+0qv&bUqEc+dH!3czrs6&&B)D#)rl%k(brk{EsFi6B42NGR) zUlJE?o|d{CEuwT6O^Sw@ofr-TAHb>&;Avt8AymI2Z7hqI?)?~1m29&1HQwm#J9c88 z7V2lOE82WTf&Y)PsU-%J@%py=9(*+HX%yw-`7g9hO>ShTGiabr3aMQ)w*4Fm99UIf zlcy8)Oz9AMxg3HCz!$v;HS_UyPPBp`E39WunIg+OU&;JXG1{!#)BuQbWks{Ud7gSv zL>3oTFJ^uak%ev1BI=c0PI95}ghjVfXvEf#e`=`q_{=HCgmPw4Y&$nkuf*riHt#rI z`{BPqy{6;3g+sIq;O_NItDaqV{A0R^$i#JPTCnT3RU_O ze6|%3k0RtWcD`l?7N#2r|ayAU(8sx$8T2R#WPS~ z8riJjE(APfSlQyw0N-sg@Ifdp^STgPN+yhdUF9NSyX=!OqDT+81<>ZoR8Y_#S=W#guS!pc#hK`ex%SMRC^+Nn0%ao5LFC}1xo+NR zLlMC#K!j>4VwY19mo^nCErlVhEv>0y)n<9EHkm^fe`7+{#mZW8GQz5-h`txjMpTsx z`)GaV$&uHIyhZH3BOHIL6{`$B844C7)7_5rn=}XGMBr6 zdtlyyJS(9x{nEWBN6HSb+htF|;fr<IYiUy0+iT)nnVGG5!NIC=uO2Ej~bQT8$rG&U{ zr^}87#Zjf;`g*^=es%roK$E}DUsqElcWUxikg?A2BxZz)!Ez{{s|4~OJ6J$nLVK3w zrqg*MPRKS~;Tb`TEvjQ>UT( zoVx65VxV`!VDM{dP8*6ep6bg!^UUz*mX2ppoc!tB1^vHi1lR>MH-lYGFavuBRdtc7 zx;UN91y!|iCXWrAb{@`a@SyB!B#`PvoZIKLKy$5QfRekr6qniB+SIfbSw(A4D@vJ7 zEln+}5pz&OgE)_i3bEou)?l?7zo-UNi+aD1^_8x#Smx_oKrr|_9285s$JQn-ux z5`v$-)JxDAiMt^4=E!m$!jh1p&%PqR3+j7Zklus7FJtMipR4EAa4!bjb+r|x#hDpN z9+Md*D~Fj-ki_EB063lAG-|U7AU+h$x?>J_ z+Q5JbE>w?Ls^I3!O;td>cxw1L$Zu7a*5hg9ceXNrr7Ax2a~I#xRCh>eNJ$A4ywYxqJn`?OD{Zp?2RdtGoNu%1Xot^W)8@kgOf_gccSfY=k^44wxcg%57ZYSX=_=Ia54vHH8BBbZ%jiF ziyQ`I%=_h*3C|)@>Z>$*LhAM0QLfRmGA-9s0DR=Veg@`}x? z#@(Pn6Yh!0eReD>v6H1QYN8wtxCZvsHr1BYfg_7$FW*%3tr(>D7{)Bh&rR}3dg9yz z{e<2QO9zg+DMzTG=CaAYB|^bSy{hmyImJ1^46TT0ACON7B`gd21Wj3xm9t>UDAA)h zRQje|vC;a0&><}Ob;YXL+NkPGw9%JaYScg3JiYGO;L~bR2JLX5G(H0fWFmX3hXxIU z#K%{|8#sSSQJT)B3p6I0CCTif>WmjIxQcV>%sLlT2naq0`qnPWcAWy8F_aDT6qtvz z%PEalYxju_KE{=VX%j}-^|IGk;PSCRaYsjCA;)zLcMJ~>^z~8~xUjykp32(P!@~n) zl5+Z}TBGRz<0vnw1x)1wQbzeqi~bx;`^eJgwN=^Au+#mqj%8PL?7c1K`zZTGeap>V z2bQhQN|5+}6fGmSjg8&Co_El8*3e=9L0SE_s`~5aIcN1fJvA`4v8hH{?pft4NDV%1 zv)bxbQ5B89TixW!jz24l>yt40CIMDi#dY)VcRfKo$c`f3WX<92Kv%X=^qS26#G&~U zU=Rq@+rqhdEAIvsxn$QHwtIOi6y0exp_J(aGTe#C%8t#6cFUBKu=5e$?XSBXiDd9HZijjyH>NzO$A*G+=y%jQ z3qN*XIQpi*XE{t(#}w9pnw;JkV#KW#iecr(g!qP~)!vtNr}Ap5JKI}ZP?Kz`?yl*U zsjB4mY(`qTJHwCWjmycZ!>laHhsuwJ46HUqxkFuT8eKbAEscba5G5h%>jomjV+TNL zMt$;wPl~@z&DnIIx9zBux2ItxKdk%8hV5t0MORFO4=Y+Tngjk__8~DY_}$Wdy<6PO znF&8P?O%7Sv`7$6Ufa?6lbu_ReCpwlUsJldqRGB&V_owQpO^W3&p;an+ehZ!kyfBU zT#M2{H`mW62FzfKFlX{u)(!JRc+h&E$AJ<8I^KfbEKDK?6OArJPx9(Wx7~`c-!$&E z2_}&pJf!;;R0WY-44z)v5VczHsdfGZI{(~fsmd%xqhN5SQ-nsrec;^AG16{q1+)lnSU@zrGjJCTCD|onG<;@2?POE6~ zxg=3ESj4F~-i>Ci-i?$Glf4Gx#>9B9!$y^&@dOlOQR>H$l4k}Y-+n*mv51~gC#Jj? zz8Mf!q5I&*Hh`}}zn^#CKo8nI7STEi{Ng2U$$AjV4eetIyxq=@e#G~LDwJ*7#BrN; zZrZtR>-5yd4Z~{z;OlB{TeBKs3LtT+BY1LA0n-RK{9RJGN5n!`b<%A~ijf{eF{;WN zMaJ?35LBoossGNY;iMhy*PJz-Mow^PeF^^Y6OjtD_Q|Z$G?z{v{0e`M+@^d^j(vYr z-f-vjM2UR)N+cNLy$Q=&GP0U_np1Tf_8r~A)3|ce+&6VUfLc`|b?xSR0`^SIMuXEq zmy8Wfs!CPcsHmgUV-W#iL?pt9$c6+X1r};Ejmv!^#K9^+TJ?A2p_&)G9wi_3T56mu zdMCm<1Qxp!BfLrMQf{PBB}adwz-lyX3`W6#*nWYB!k1d~Rz|`_1kwV5Kz9Ie(N;9Q zWj)IS_ozFb6wS%HGibc1ZLr)-QV&)vCDMPnRRiilAvC* zEzaqRw(&?~;8QCNAen%KyZF}4&ipjW{(pl(!;oq6o-+3m~ad3R4SpZG$VT+G_6u3JA6RR;{G8og@( zzu&Mw;dj4FydOL=3~F;fBv+2YA35cpQ}W>Ea(D;E(HnSu?x=&9BqDudnmaT^g|9I!`@6iQ!@2V^1M}*B^oj#+f zMH;^PzaQw;N^aTS?k%1KE1%SxCzyiWe92GJZ{DB)z*7CI7Z0`^puDg%e6Nt z&Li4jdx0hArV@BB8kS!DBwiyn5FjgbaaNtn3eG|u7DCc)+xSGEQ)jn3#t=KX?cKo5 zQ@LR6W#83+yK(?00vEsVt;wK{{#CaIy-4(z?!v^k*FxW%w0q>E-5&E&^Y4r4RjhSZ zSnGy9+KquMFbM{ewX3OPIt$7(vrzI$pv#-4@TW2XgsybE2y2E8+8cgRYd0>0{IL`Sh)w-I8K57 z<%b$tS54P7`c@uz{j|D7tnQiA;D%kb>_Gg>wAPv#uD$CozX%@)ShP5PMQO)|J8vTYX8VVUwKcql`#kHxcq zo?3nUIA&83_n~;-(NR~2y464jOYG{}>)Mghqk#ncR~ZK)0UBu~VUsmtkjzjt9|1ch zwtBpnkU^UFE~4CrVvQu_MU)%2^EKT+4vUoeN z5}e*A`t;&{H+I~JY|^HgG-C&6vSW-A*6uXq!F40}0b zx%c!`RUx4s>KPj7Bb;5;nyNKOooZ;CD82&t0;z78nE{x423s`}mb;3mi1gT*6w)l( z5eUf~&csljQ>CCz49}yaLQ9K!xB7xjst@NEmb?R!htAuc6MRX(=EH~-2E^!XU7F;f z?BD(F=6z|Vf0v;uZ1l-o4EZ;6o!mNZGq;bo1TywPIA4SD>R#n zgMXHr9@m^P4Vq}V%b`2XWnGWt2a96rh0l z9(`+`UD6450AhKtSv&M*2S_XR9^Pix+i-^MsMeV5!j#)8cTeJ2dyd9(_;GcVjpN4F z4G#?tz-@K5pxIfENl!Yh#f3RpG~tEXK9+=0c|S$jV??iokz2~Ypi~7-`9^{GsXeR) zN|~tKWx}6nC%Pp3b<7Rv`W|)E>mROjR*%H{;*MkHE7M<|WeR@#wFeseZR-zj>DlS- z%AfsLa9Wpk9BXgCrjws~;JV~7n)|x8Yd8K7{MAP~n8kcGfVrx#sdt`qw|Z^~U2 z=<5j@KV4c}b$DV=*DA4bU!Tl*-Fmd8^>d%zRCCq(0}W4TXs`){9h9aZ^ekX!*O0)Q zQ5LOr64N8-!2}HZ*!FW+4rK#t4dQJ9@iqX6nEnC&5Xqv1YMR>DlhKEE=AzUw0m@^F z*A%Y~G!iCLhBV-3Ws$s@M+#%jSggPXA=r`7L+%=pb8^e13e9&WYq<;^dIjau)X9k-~*IzZ+wl%Knc8%wm7|zwT zk|5bG`kvqukaJsN*1H!-U^_ltR_s4Av8Sn~1rGkTxh`oPlUgAP%3a)v!0}bQV5x!J zfG7#e%`DhJ`U77skS`C(4agFakR>vFN@ghB5o3=ur`LkpE62^rdqL>iN#Fi<(S3lC~t3B4TsHa zKvAJO=NSjBL@6o^vvJYtLg-!-qJAC%?!IR!PV)zUhDxjc_7{S@L%L;tP` zfoL~(CU9dh@JUwQWzXSt=)7`zi(t{i^V(oviA>$hfj`qRMcoHbJK^9{Or!(el(bbe zp&_E0S?oIm3IhFykZ3zP5R7(rbW=#Q8a)O%FCYj`78}H%Loc@(6eFv^NFt>h)5N07 z5NTo~`V2okIr7{yRb%nhn>5v*Dz7ZTHsgs+gS&?+FmHWok3t{G2RcU`k30 zDrNbG45@tN*ED9m5w@8_p$>x{93x#(0v^Kpi944j;`oI{j255I>zhy|EjzSmNs}{M zinJ3{m-aW3wu<19nA9uB;_Eg=Nd5KK6sdRa^wlgV^@~3yKu=~^`1$_W!f(ioCH&bB z$Yg+sli7?3wH8y~~rL-V4-3*hF0h8gS zZQr5Vb)-V0UV~a&*j!L}AlI=KSb+TZ6hZKs61MaS1_*etrRJz2-?Wwzx4{w&8I9m; ziYE(9CXFVTfS8#5O4lB-kMIDYIW6D;t{Rp_>-5E?4(s$~V9;t+xbjs^%?R1utRYG6p&zX$RI9+9jK0N3Z~iOC)h@OgBolu%zYr zY1Qd@!K}mt?wKd>RjW9TfUK)}RL?-1iYht^zTbJ<$q0q}a0HKh;(nCHRo{ z3km+ls@BW|oe(MZi&unI8`3{Cw3zg#6ePxc+0U-fs`xlmd^wxqZ0C*#j+XFtM*%O{ zv&@p{w84%`cB@?ipuuXhTW#POgu26w!zUR-ej-uIHI+T zN{TVw_@<)OS5+_H+IYP7;@cXt{pdK=?;#90#plKv{4KI`bU1jV1?7DjYnwVnlUs<{C+4*7){Q_iTqvwp*NbP%c<}yo8Ak4Cxs-lO7dH zuN&)o!;l#VnE!`;k+OH!Jw*$Am~H}(Zjx3<-vM5bK6vgW|Vp6-_H ztW(Wn1zDuyh^K!v*C~CSsWU-hN4W|9?`4JVU#2KD{UWT;ZJdku@viNtF4`?V`&5EM zuy~?08oc`Paq$ywAW$^#+8eFdq>%0M?R@+H2KOVKTzeV!J!MH!81U z%EzAVwB;aYu3#9pL~24rVA%8w!UiRjA#9P6nnp*dAe+sUlI;$Vl`>p(K$%Uov%23C ztnD}AJ*25;ulM9NTvY)@eQDipL)Bnpx)%x{_^WR&T+zI{K|iER2#z7)V|mKsd)z@? z80QXcy<+U}CPBENG0@filZlbMkgj5#S?~syO$%A+r&gEc7v_+Tszr*f)xrGGyakl@ zyYP59sHt@zJ{}b|GLEQc3*8`nhZSZd9qe~b_B$|eg#J$bW5``5mTJXZok#Fs+pd*! zd91Ffc;18Y3>_GyoIuCuMI9Isl+lq6{&amH~)%slF<;g31EuB9*gjE+en%oHtnLLLDtK7aQFiCh7R-y z9kiH^lcWd}6A^-`IXKa3$NYgbk9znMJp)wVL6Vy{CeK!nJcy5cSaxg`40jw^i#EeHK zyLNgD1cE8d9t%f}V&)5Fv$^4e#Vg2#%|lATPm}OdO=?Ypj9LhXHeSLn1QX;l1%4dR zfgZq_%H^(*k3|kR2Z7|$Z3j^?pa@{QnFe7b0HYQxQeyB9mP#fEa@hw#OTT~dPl6{D z4ClEV2H4Y6U755H74l_^VC0Ey#MBY%1fzfN*Bv-D@``4+;Om-S|6KNl_xy2s>czVH z?3C*F!@puX5Ab|P@qAerw*6!P^*0HdBtiOwehm=-p|)hU=)tUyHK=+s)<|Nh8nU@* zXq&);00pbj@aV=doNlTRDUXg#Y-WpDvQUj_$(N0RznZ9%&{50Hp{gfIA_=-?SF0NG z)I(_Z;5<3-q>FLoR9I$UGTqTrBZ2c9Z>TOV%X~sB6Y-_smnwR*vYH3S?#9bSg7M14 z#As!YM;|}hw@f3T;0eBb*=S2w^*%q_%Lw)~K$9^hb5<3P2`Ew1cI-^y1d|SD&Wygi z**J}qn5hQiO|wEgG`$%X53a%z-Tjwy86#)LPX_V?qwG1EuDC3378FGxXNJ-+fDc+3 zR7xk>>QErY>S+-wsZ$n`hlxDKWvwykgkjcGvMU8QC&{ z*m;eFh}s%b$%0gfMeDdMmqJ278uS3@t=%Q51qg0D_wt!NA2}gxZ1}XYdL?6dC z3V`&N@OgG%RAwzw61Ji};=s@@q8RFt>0*O0S)kGi?)kFzS;ZX@!AENex{V zj*At~TELxq2B1&2|A5X(8EuadXfr)d0~Q|u7((mn4AX$RFy;%Z85j&9hlXAL< zBj2#}tFS9eCY;JhqgRd*{_HemX%s`&h1o9HKrflu$TttLg?L2Wqcf8G$_)>m$qTN~ z%0gFi7yq+?^pY-_(&Cz*U%6EyjUL+K0x6sT=COen0%q_^StWGlRFlzwGhpS+C{RdN z8<`HUB)LT2B&dS?)E1CiZ zm&0h-&e>fK`zXRb-eGj1wq)e=Sn)EAwidY61wdBgd~Tab(o=GP(FHbpqQx|KXz%9& z0Oq6LFfef0_W~%;GLH9}*oCiYlF$tT(+?m1l6a~4y}iBbdkN&Uwx=85rlxvyFbLRG z#7-BCN+Q*Ioyq{cid3ff=CWTib%;Z&NiuOFLs)q63gJ0c`Ms~b^1{@a?a+ZwMd-kc zMhDu;idT=02R^Seh?7}y@sjbYd|dQ6*p-Jjj$A@B9;qnySmTm1+Z2v2Wd>9>O+3YrjBul1X`E-#Rn92g z-KR!g5A6KXp{w@tb+hLp1n6sfZlX@J&DjTQ@v{n|vN zDFhY$Xm?=5W+3}*t^`KCzK*aR_@Y>p3rCn4Uk=7S4UdptpO%wLt#rmHQdZWelMyqK zL5M0n9&%NO-u?Q0Cr4_6zr9s@u4xC!^Gjb}85gHFT>MUiQ1jcTo11pD3SUq06>O9? zzqEyk_nn;&+$JxaGwR|Uh0fJlF&i41KsLqKxwrK>(sWZt5AFCsmbni6!CX3MxK?tX z3b=}M>|j66MOs$`PC_={BZqc+GmB+K4&%wdpd&`L$T6(|y4)$K>HLVc9GEhLnIhVy zU&Z3u!UFJ6r*r8nt|bEyifdW+Log(nR60_i3KvMWO#PwTC{upizWaE?>`PkliH}X5 zUkT!m;C(XB2NNC$K7Me^#;3F*lleXJ8KH+9N9dlx@-<@d_#b)Zw~^vG4k13$9%Mko zwFmqL9a*G6E=qv_A^2$PKH_Zx0qq@hCIN#Om-kIz zg)=xzNLH#yTDFum3%q?uEWo1!o1j51MQ?vwDBAP+%3Y$0T+lspa^xXQyZzdqGo3w@ z@TB&Q2-hVnd-S3ImWLr_Q*o4r*dAXSXl+})wp8<0^luIFX~FeuWt?I(`tVX{=y8PK z@r<7LU~#AXc2;v(X~M&3SoB!*u-(b)y>3jY=;50Xn|rM0X)yhR$64@*Q}J;wn+dCm z;h;gl7Y>t9xg-5wBi{-G8h_or$T_!Y@1?is0MPv?Uo6n6xsO+G@$Tom*l)8HcXI=u zeOXUQUbwKcvvZ_#1Z|K$6ulTPJOF@7rj05yh|Phlrg)GIc_4)fPp(~tLX^qyfXt9y z!2E?{!CQovP7&$H(X*!QVO@D7LRSt$SGG@A!79G~h%!F=nvI6pwkk7_XhPq4qVDbK z-Y*WuP@jQh(3-Vn1V2Z>mUjNZ$Zs=tA%`##r z$|9(EV`Eb_vlvM56oj z@zh^#dvn^P} z&?Xo5n#Itj;@LkD5p!+!9Vv!)ADTHD)a8lUZItfv>_(m+;Z!GUB|d~9?)o;5|ylh zXwp%RJ0HNjvL3Z-i=-B!$|wd?j^zJ+;Kt}uS3t`%{4PhD2>&HMu zfK1A4HjZ1NLYSpkxpHO2O5o**fG8&`gPN<%xTLW&qRuDAdef|3fx|+RU-End*k7yrD_p5N9=U=9U_!r8sKv8bTXr7L8r_lK6TWq+LE%MMkfyYcj@>tEi zE7uIsa2L!KAQS?JZgL>>JD}Uq(WGA73UtNH7O>42z%Yc(4mz}N4B`|!BYKz_CJEWf z$OJgWpm|4mYm~0zEC%#H7QZU6(!ty48fxk-6w{WmtLJ&RaS!96SmN#r!7mt zgC!+VzyZUQq^=QR_~cwxXT)9%OihE0LrtU@9$9I9$gOKi_;pXnaOA71{cm4OU62#P z$`JVY?TX%tisr#PYFmw0X`shLJsa2il}-pI3>3sMYl2kmsVX&$D-^~$n!!qfqE#U$ zz;;}Kp-frWR%`{cJ3wk+UKKzaO1$Qj%43BLT0|spATjMgvVm|6>r}!Lude2}>bh#i zNl}Jb4J_r#&PZF9%p^hM8X&(4NrJ^(QIenmMES{yrvzFEX<+DC?gX(I;CZ5eZBIXp2|)$L+^GDu@@ zjeq0x@)e2~gHWE2iUEFtP64Xcfb8aT-GPo=5($t9oMb~TtushEjQ1E6X&6zWjqD7i zr*W8rPs>lw#|=_F*fhcNu~3PIrNm4GNW<{XmACD8rTcmL#e?;xN_P+&g^o3DTkbzL zeSPl}!mpOKkB*+(aIuyD`;K*eH?|tPSladFv9h9xeJ_@_w|AfFnCawedV)XeKHb(* z%TJdxXOqTye>o`7fKYH1#+A9{yxC;oEvThqj#<=MMS$zgdb16=k`Bq0Nyln6W}69B z13kJPdc1OlQxuC5@xm<@eq8Pf=H})$=Qb0N-d|2FP**}Gp4OA&WL7s*UJ1?We?(## zdRW%uW3~WADq1A3c0Wl6m}}9;XXaE^RY~seH8lUrXZJjkUisRM-Cy8$Cw7bsweDMP zo2t&8{b#9icG5p&v$qX(ZfidEiJG+q%lK|xcRw%Ov)z5g&>f#!wR+Y57f3Xx+omUT z^q$ELIXyiEn>)J#`&TC%IojElJl1#J3G)_8OM@4%aFytrtGEIF{Xj}B2yr>gW$Lh4 z$$*x*qtb!JXkZYu=#i}&VVL_kCva^}+kOmt*bR0U$|mx*Vl+rG4@Q_)tlI&$)d1pa zSZvOLH6<3zCq>W; z@Bcyqf8(#o@F6+X)x|~C1J&R|=xoOtKmu!*6;%~i6&5gUjdRD#8xCZ3Rrh^WVWwtb zrR5dMget#Y%wYlKd>xLL4DYULyKS)SpRQYbIKS$(YrDTl3OwA~wkyfB9SZ!4R1j?T z)wB#<+rc*s7(W^Om{yyotFh94*m-dDslnjtqpf>iE=%j~+VgTb)cMA?oxAc#o#T3D zy9}*Yui4anz|Gr!pRhK0vZK36R_@mR126#p21BifUgyB)4F>vBZHTX7$$;dS1U)9a zfCglK4q=qy=j4?^c16V8T^LOGju2r2rQvpRIh;Y)hiwbyJ+sy;S- z5-0k~^p27K))OAxpB}Z#lyvBHUn5%jLHefF&Ky=Gb25fJ*Vu#l`Km$pA!9; z6 z7>4T{?%WR7$y+x1tArlihD{B_-ok93(?rXZB1t=Uj%+GP9JzAHtM_c)nA5X6l^ki) z734_aAP@E*ICDa1s1{x3Owa1Zh=7WQcyD1ZFpXGN`9AsmcoGqa;03yDz;6joo(Jhv zasYqojQ&&Qg|;D1ahYwd{bZ@I;M&evO?E5M(}H=Mg)5*ik}z}WbsHmQcPtiZocMgz z*D5Dg-LY@SIn5>~SPf0wW!)3i-I(8Qf!o2YQr183tFlB6306LvRa6LH0U<^UtEQ?H zAgVmPZ7z*VOLDo9xq@OTa;{5nh|kP5WXkkZYQFVXsZGk2gJ(Bib#(JB#~=L2s+jB=zsI<9y8a{R536A6vta;g5yp-MMk*1T3A9TYd_35;)oJE|0}-$f2?!?ixr_#B z5_uc!qG;4jTM(ctiwNjwi`|3{Wz>==mII9@uTT!}gO6DAps>0v2vU<9Tj7<;`s{fd zl;b{^z2flE{H&3r91SFAMJol>trCEs#nLhvGkmOn{aKA)PQuq)@C#pgg-4#|KzY4F_J$O8?3t!s0EA z##`{2qfmN&>6Q>G?*a8uRd8NM7^e4Of$Y@T%1=C2XXx=l5Iqf8uZLptxxbUnu;(LW zI0{4ao)L7^(!^?HYD&0b&PI|LnkV19*OzSAHI&YkViS?Vw95> zxj0avy$)1z)Kt}T^iyf%QU@zP8F2&E;w3>f{T%utWtd*g&dLHx&_hsBZJ5ab4LP|m zeC2Trg-yUD1M`ye;iG=3;l|;wt=m3UJ?b4E)UCa)aZ6wDy{MNX{QHLh5>vVErLwJ~ zdkRv|@>y-YEvMSMojwR+qAW|)Yn#&6&JC?NGSD?V#j9+HDR~f+NdX*b^K-apm@lrt4snusVi%b%te--Wsl#`)RDq~;JY1x*5l2{S^TSRx2#jt+tm)n6!{9fD*;I%>(2YNVAhF2oCP3Px-g zXIEpUG{)6|s@NCe&EX-Yfs7LPm{-C>qsl{@;|OA z?>qO-%$uj;lKi&-0?%mfx#ymH%6Gog+JgJJzOJIIsE}nlh+Oe~OU3FeI5WD? zBR~JKC$>k}t5DS;Ixg3h$lhNr^mS1Y+Q@z1sV*SUHJ+TFe zbOzr0y|NC{%!fCFfoZTH=1APz$hcw(vB_?OnY06YYzOvOH6=(O$!uPQ8L_-F;RAgL zxintGO~*pmnt~cc6{Q^Jgh96{m>B7gq`1OhQeZ40tn_p?KZ!|^(B)-W*}x7^=Q;0! zr1&lrL9Ao*Sg*Ow5%a!+t-HTeHq<|GP5WT;KYgHSVvQX@A3_0E&MMf*pu zZvBK{GtGm}9IJZoFRV$WNf<@{lSu*I zz((u?$g2x0LkDfC$$lY+VFt8rLs9Zf^`A|Hbq8eU{W=zdOEPoKoGe6 z;A_pi*jD+!&WzkSzIS}iefC`E8~U1#CD07|3-4kA3LWRCN1of#dGqgUoB6GO>yca1 zGP4pp*W@30RBIjh0KUIm%w)0S3p6~GJT1&v#^2#-5jFq`cc8Ws6=d0$69g%mxog0mugjyGj}0+pbq**d&R(dkqW4Ri|4$OpfZR z5|bID>6}zRLUGW9;vllgg2}AF`{lMe)M>X&urwH5Ac`D7s46HF zg^O$g6i|`?4I;{HlLAPYw$X(7TmK!ufS6q0SSqT6m z_WZ^@1&=OW`dbSpO{ZI$+G{YBRx1rZSo`MmJ!?z2kvlP`g*J1a>J461Uoc9I-2sftGW)LRkdcLa7Er2zP0b1VKnhnFeM^ zWj@@tLU=V`&tWr45F(-yO1D@3GCP1FlSoFPbi9(8 zWuEmEYDJ?_8`V0y;Pu7xkCXTzLjAFDB&6yi;yMpW|zY9SOEU?vOYz^vA= zw0Ctia)0ZqJK9>1Oh%+oT7q9hj&ojm8UGY#I&rOK)o6p2aOsY>%{6Rf$cWLl6V`WmEy2>UR_- zERVHDlj9IsX;2>?UbS{I!nHS9v7t!i6g(5SAtXmP)=)yVw79XPafwLDx-T6{iAEC&zE%rj)mRlHtq2gL ziZcuoL=~NvUf8%tyoglAjbeNDXUc+Hq|!ah5yLaR7ZK~RJ>TIHjWgnfpq?J6X8|k2 zoeG>(L?2>TnZ>RGU_of319HLXB2{%Fm^IU#h?F8B#8xxwFU)C@=t4 z2M~aOTVt-eNkP9WTB#g1jJI~eE4MmBz1ad2pmW zyJOqFv4-@Hj-Im|!Ne|{6lIoK!X8GlEJ7u~Wq#uq6nAh*tR(O@!DOjDZnj)H6YdH6#uohv+Om z=|@K|p#n=D>1x8zaZDV&XDrR4ahexqmDwNGw|xG?RDQKh*^YkguxrHLai+8LOox5M zb?9q{ofo2$tFspODmMkcAH2;_m}QuzUb(kVdSJW%;P71^K?$}hIez>g7v5+EgtvDL zOz^BG%dkznB&%VY)H1<6kY%N?BQPh}B!^@J4Bd<@3w3%SdnX}#hkOILAe=00k>S{) zfTjjVD=SeY+;{|k`FW&8KuaVs9in`_u0$HO1H7D-Ww(s*pt zXMb1a=48c_U6V^haxScvL|M0>vW-z=wTr*wK&x&zZ(f%hq&^PCg625120P7`dBH=( z-5wX{-MrvHanKw{00_(g5TF}LM8A1Ucwg;gyQT35Mmr@0}Fh_lMqT zv)K4&+KlhS6d11p+BdIYb9e!jzMPMxwx$WZ82B_F*1yV&eR#DG%U|;5FbX(iYF3s= zVDmrlevJr@y*)H0QWG}=c4csGEg&h7x}+QgYU7#6dM1Nii%*DT&P*7)7BDMm@VQ~p zv1GM*dm@%CKr1R!<(onG_U@pmBq?ixW zsXDkgfomJ2VI^m=n%O;0?^aqUov3dDVb<>H{o@C>t=FyK-Z8t`@69~Zys3RCz!HeV z(hE4anFKav3xs#VngAkzKUf#%PYQwFgE% z%@^ZGzRVYy!g?b3)t5qfQLLV)Y19-cEFGLU@;k)Wo6i>JirY7wzh-1|rvJGO=ik1t zYnPZ5oRNO~8_AZL+I0TWW5-N2cLg3jde!coR~J^Cc-7Lx(=P9Al)i}XCdOOj`yyd* zjGqp`4N$1`$w+vE_76mZoNl zQoy@G_ad$)>pw8r-;q%UKQDd;}w3-qQ% zW1u*Q9}&)nbPK9=n8;lKfMvU67g5W>^fwcR1tP&^wv2%$$8YXI^9VdK=vD;iTnw7U z@_vyjkdkkes#FmuX{yT=zt=id-8|R#+=f7Z;d4hOPKn9Et`)0wu$pVtMlM-Ab(-;sTti>pU|0&CXi~TV)7^S79<)r0ABT|Zs z^V$e|!yAlN&`UwpNJMT}{gcv1n=|DHetU18YEkm1~xejUr`r zC^Au4VN#V$6#mFUnkfru6U>qgBhD>LwUm58n9bCPs0hYM!Hp?klP}#dtl)H z^U%|V|GMLjAK&cS6;)|^bIl8h^JlrU~h?TApXhioN0bis9W0&SZ`q2um zA~qkDAk(?nVXFWF2Et#%_Tkz_*Pf1Er~88;9N1Rp@jr}o`KA9f60{i^@v#|s8F_27 zlapf8c8cx(;&;TB!wmx+J3X!H{-drG{E|ezaf2`$n9dPl zToE7uNoR#qtl)xEsOeb{L{ynzW1$GZ@!K$L8~_l(gn`l~6q%5@Gs~04A`_pJg&`Q= zGK)%2^+!czMQTMRHsvy!b{nx4@(eIn_=%+lXkr$!BI#*#&e{Ad^(U>uB>v!`p4j+? z{VmCjJ1096oKgHAzjWN*?>={RW9v5?ThxF0);IcsW717`i0`?*>th}6#G$r+hsD`W z|M*b<=k^7Ps6taox`zZ?Elk4v=6Dwk6ely)QT}-E^l>Al8wG$E!*+*Hx}tzisfr z>C=Zh=i}FHC5bpa$s3ta$jJXirgBw<&?dYTus4WyvsrXo$s`gYsEO9C$WRlj-EFtJ zF*X%wL>XvAh{SF+Ltoq&rQkNr0J=i%9lz6THfbCce&+55nlJku6s+1TlVPu7FBuEO zfx{?3{##i|UT$VO%9`bAbW2i_)L?;V6eOzr>dmoQwG;U!BusF1hFK-~3ulJu?)28x z6z5F-a)o(pRP1cnR6QEpBED03roES4r$HYxQ}^LI6=Sp3xg4oeshEG29h$pF70;@U z*j+ng69#ws*AMU6DmK#n8vKhy%!K(Isa+W3#sC_hXmXNmHbdPIvBGD=WkiP)Nm2x^ zir{c62;xyikl;{+oHz0#&=^uxK{h%s7c`5h=vIhQtJ@sOKqnEtfZ7~&jE@EfrAOZ1l+k3Z z>T0SzEH1>mqqF1e?!?i$?BMoewR8R3b93hA`U;(n`uEl12rgdJZx`k2?X~2u249n& z#M@B4(07(_oma+%U;xm{8?5$vA_UsR(OL2FhZkj0P0YY!5q&YD zn=_3bJhZu~FK?(=>JcY!9Otfmysh?z_um>kD82G4Nq%9&0FGW^WkL7!$onQXJ-WH7 zG-F*we&_VSLsO>?cg)4s-Ffv1rAI40%0GuJ3cxEq9oSk9{02XQkc8V}JafoDV(l{4 zjzcFcJ#=QXgmGc)ywuea0D#h9MDE~ACs8avEYZxRyXinA$qAMRz$%n9C_Lwa5j$4@Jbhg%wcCjQKFO{TvKd{-P&y58h;ei3AOONOeexlM@Ruo`iZDqrVE_| zxgR~S?XOlMEqTr#!)${$ka_jEmJHPlNizwFbthl zK?&$k=?JtUbVJGaUg2XF(7yV@~lH_1GyriHV6BiRh|Li1%TaaRse} zX<@-aR3!06(jiY}M3Ln_)7L{VmPbzqPX+g$mw)rOg+G*>FE(IT{&16N{=K)~ey_JT z_+DRse;*7z%omc6kw}xE0wLyso5kfJZWbpl4RAidZ3b0@EI2(f=9GGX?ew6PLY>^; zwjoNQ%VH&Fy$b#?(f(fH)0C)ay42Ia_UpeF-+@3`|B**x@c|J3(C4rI1$c)_zo)%{ zP$^m{M_`9IDwz~ua-tT~`6F4|3@hoeECb6$XH_C>V}2hc4v=i%+knaeiAW2&eG z2^HHdxfXeanB9H%+!I-HaIma=rd%2j<8Hy0nUut|{_SHMZ%}6E1`e4P=X9>mujbZ& z?P1ARxvjFLy19t$p>1~XP(N!O>lfMHxi&KW_-be zNf(b*#>8hjeHh^Cb~$Xa#bO^L{sjwl)>jnL%IONq@%yqb8-K)aWK94D{rv4}pd)q< zPm{hrabe+A($}|Ey?9s9U5or7td?5cMnE2KSglN}#p;0kV5>!SVkT^vRJP^CGNlJi ztp(W#-6=humWsm%Byzfb<*Q2;unwu(?IAc}9L$1H z=?&(i5g)n+`Gp+#K&YYnI0FxevRDjiLJUfd4rAc)+ATP_U@yhEQ=N!8H#ZiP%DMTu z(6_bO8ELU8vBWK~Mp%PYFk&meMy;$ib3pOD}`x4a}q zBs$^34}R2G|HA61N0>IDh@-z9R`PM+G!uD_6=*LCJJpU^j}wF6pn2FEB-8c1$;e1Z z5QL1P4ES`pISJ_rxXh^m%ZPp@>J|cMT3F#K#Dnu|ZINGH zTAI=+aKhIaR)b;+Cx0C)jX@4CN9Yf1aEs{4!jwC@vISsNSxBi!lm=5*3q3@^bg3F* z1Jg+n@unDPA#IE&=gY1f$;J=k&A?DCCX-_qxX%D;!^uH za{o7AH3bNWkk`vqyN8_AJ>)cXAvuXASn3|49dyzTf|?L0F?b!J!V%$?(Z@&)L~Jf6 zv@>TdMnq=#BVzq5uZM&Hi~q8-$p_QN%c*Ej-jqg$O1IP zkAYK*L0wu~D=JX3?QdnXODkF`T5767Y>UK*!GsivR3YP~)r+>ks9sV^8nQr)qWe>u zj0Fgsq50Ip8yv5@-RkH$wSK7L2iLlH=<>UdVkzZy8}B#<33VY|pCx?o#e3Wy~_-D(z#X&hB_Qn`3^Dj=JI-u}V62KeASOOdL+4Zy>o99~~jnTtju(qAxg zf%Dq#cT2j`k{nTIQemDDu~mdb!JAZak0q|U%zMKlI= z1(+V^+@~8dOA$9@>f~$pE?r0ukdPjhN;MTN`meI4#hP&Ywq4YxyRV{}FAPr2E@7&D z?@jq7P$M@89il7XDMCL@L6W4HVnk4UKp_daRR{BJHDS^?SS|n|@R+D-jx@!DmuG%J z-pZU{S+;D!sRvAhvOsD;3hXi!C_7er2b;;GzQM^Vc^7{jVx(2R25)kYV}5pQH-8Vc z^1uwO_*L-KliJ&85F$h6lp${bPc9?f=Z}RG#B2M^Tlb|Rm1&7$=}eRmHF8AcF*zL# z+3WJMRO*T#esttf$Oc7PO0#(eytKmfiyxjD3jSd<35`n0wFm3EhrG>2eX|)^H$UII z&2{Q(QGT{Lvaq>3dhzGdEy+2X<{F;+QvF=>aMK1BLW@V&#RCQ}rj1rNmj)NFjY*q0 zSFrENk@3zO55IlJ6C1Jha8|E<=6&TSN-Ham)E2UWM^G8YnaD;%W0SBqu&Y$`TD-6c zAb*uS0OUFauk7>^9!$1cklVBhpt}Yr0;IdZ?tt_V`)LOvgvjX}D7lH_fbpr2MQ!Rd zHQ?blptA471qU%0iu!bEBay_;1DWs8y;c&#C#Q(|^hmnrkTSMt<7buO)5C?cPCtf9 zA2??oeq@RX>5h|+)zy|nE|y8V9;x5x9^3!fg5dRRj`UR>+8pU`G-8hQ4F{%k@<%=a z>AZbnvlQFj$7f0BS6#LFQ0*r}vrw3r9%5q3LoTXK_-?>cDf+D7f%gC^yA$f?33V6uxx+X`z*|Hog& zcwJjD0i4g`D=I+c192BYbt0ll38ka+y0X2nq?cDzUVJ~IiOU^{kLCM8)4t)E)P(3X5NVE#YZevNq5q4v3;_Q z0sq!2Ooslj3DfR<$WDW1iWuJjUrejMohiI$!{^g|H!SL*pqCu_}O!XYo8Pk?XRsWh{F)Qg||&}VFADo zOKOp*#0opl9jzH((^DdOZ0Ql}Q}vdt5U)Nc`3AB63?59UGQ_VFh+k{~L+!G)W1zjh z_At1vVdW}&3`XN1n#Kmf`B(}C54%m(HA7M`9{{_n<;DtmkYAvl+08UX{p`8ooR5j` zHSfd#&MDJlORme}99ksb*Y#oTj7$yX{m5}ui3KlYir7Njg=+hbh??LIfaU;SM$MS4 zsKaG(%-G08%42AfulRMctU66^xPQ{u47m1z>JN1^?86*;b1p_}DyYINk1`#dBMdCSR(xH=t zeKz!#vEpW!T4EXS0Q6=XBBNu?Ht7?(BPWe5WJxZLX66_Chlt&MQ+uHro_(Y@=%MDC z26jdLkGTOKp2x`do&YT`b&_+htQ=hAE~kR2=HMOFyFeWXN*(fyhhO2KJfUF%VV6+F z#hydf5AM!n_~Y#M!j)4F`aY^Jlm*HIC7|!)mre@_hH^(brq4i>zf?LYsl*PXwVsoj zWTrC&3ma-=F*m3@`A^W?f%L6RYUj?r@2prMR>oF3zz+TH1<9ihAMmXqlKijN&NDd@ zPk#2(T#}#K)Oq%QuC_~zFTXd)S@Hvn9^ZfcG)5EAHG}yAJWT`Ol!7!FOgAV9Y(znT zN;trw0EJp$sjXuUo_R9ZE6UEWtV|MRWk@-Ij)!h&BjK5i*3?_CvB4};&8b`lhPdRa zseP6$x>}3}Go+IHng_T_Bn(|MqpAZgobNrerQ_%9o8Q5RLYknQrFPs9-yobgJ2`Qx zD!Uw3e6vnA2xT5KqcNU3C6ki{Avr5KD?OElA@h&MzUdt|KH>(Z%VqTskHC<~`J>%7 ze0wN>n+&E%75cZw27h_Oz_ArSKWHW=i|%GK_(kiT@%D#MvwB zQmO*CnRk4#qzC-FTY`V>V{F9N-eeoF+;q+4mZSIBN_uwfvmDX&>~PR&{$%ipg?H|% zO3HBM-Oag*SL7zPAK#yIY$hkBWWUdhQq)Dc(J@-L*{@!q#A_a%$oEz-{ZL2VNVz_SLIwU6!6ZdM3Mr zKM|`o&W(oF{KD|)w$2xMOeH@9<>e`B^t*vL*8;L(Fu~#)0e*_QI92*XlM$ll*7MYK2B|)&hL&`pAWu!j+L8*!_WH~jbargm6CZu3c*2i}T`uKX&t6h(eZtOg9_;)Y&2KUv8g)>zhufO~<&zzXIVnta1 zGS+}&1k|o@U||KpisZqJ5L8A?7>7!YR%Upu5k5CamT{cGPr2kysjU@++KyT_Q?sTT z6t@_-j@Poz0W6Zpej^E?X-Mj!xWEGE&{~-fpstl%TLRyfG)TaGl&2cg*ygRLN8)yL zUVFRs6l4$=bLT6Y=iv|Bf1`Nqq9VOp-QHb2pEr1_s4*{Eu?D{=-V5J0G(_NyvbuXt z*ZyR>H?79~$Z&h-uTO6Oc5iSi%iq7ML_z7=)A;Cs@dMXvL(v`Nh`1?kg`6^gqeEpH z32uy{z%6MqTj1o|O%9Wtkn*7Kq?-eYZm?3%fD@ltVYS`SaC2m4g7~#K6W3>6F5a0D z<3rCn(J$x}Haw?q^zbPvLw4RfCoXsMw4Uo`Ii7jSFBrl_!Z27@C;HXe9P5k~@Dvwer|JSa!F6QF;2O9L9_^(%>3 zdZqC1{DO)q1(?uU1P~xDCq=^L1WXhzC;i{c#(%F~Oa*ZCVf?7=1f2AvAoV8%gGE%E z6}jyLka--JQlweCj|!nV=;@)SAT^opFFBaRQe8@T6v@3z4)7@xHU);UohC_! z)d0@cjyyC-Z+MsVw2Sv-dRXOzDoEluqBwST3eoGvY3mVXqrMIpZVIwId{%L2VhHmF zkfDqw8WXe|>FEJhJcFa44kxC&1o4>sb0b5&IPyW{*_@}ZzT@Nrby7wGG1@QuLC*V9 z3HL{JmiqmLrDQ*D`s0ZWoX);C_+^c_{=K02)7ZNT8WNlfKCdO`9yYPFtn1_VotBbqDq94?p;DV>t z)?J%YV{gByw|md=Bijt}mrTy7Gojwr7it(A12*9-HlYNY&@Fro0izE!PLAjdpdZ9% zQqam{2bR@tnL%yX;T1Xm1R5}9G+;*gJx<*6E_4SI5gBCy#BrNh+lzL<=1nH=4&$3p zpJ#7kF3>b}a$fR97)#XH2o55lvAYqoxZ7I6w%kzGz?%+H&qsv96r4N-aZEgF%gzF^o9QEW<$O_SENWrz#E zH~o2A1{)ajl9(gDLRZTCi>Q<$z3{`5x?8Wi|E`Vw2TxqJeY<`n>Op)ldZIV@{YYm_ zTxLh=hbw=U(YUcKRUY4Ud>UX*!m0<&H1VViUB{imHG!)tF}73@{TS>4k^0eFd;o_) z@PR0t0y>KWvIPk-_b$^@q~7I?6^-~s2sSWk2oMP-QA*S6 z-P@WWyj=BGDA|TM3Q$``&$yYZxS14#XSs@p2^8ieq~fn(`p2)tsJNG74~wQHCe&?N zRmDHP>BY$dDJ>iRpcm_fjR09hAUj8O)Zf3j4tmVSgHe_Z=?#RFR^(ls;2^W}-Wv@1 zwxfFyGmT_)K+L$vxCrBPJ;G1tU}a9_61a?~5k+dxy5Qbu{~Q95UHSv?3Ux9sdxMId z=748l$gp{oY9n^DOibvCEQ!ED;D~43*vL|c$h1>{B-3!L$hhH-HYD5NL*cUaL-8ro zBBe`jGkY{zI~ms$eCsA(S>BG>ikUKLP@4bn_OYHb<}KUW$K1-%U6}XypWVhB71^QU zylr3jpj6UP3`E)HeY1lHbJC>g16_fktfP zHe*0m})jvhfIy7bo!Zv9*-7J+f}6#s#_t~+yMLVBOfQYqmhE3*j|SRoJI;^2 z6ntK@p%m*}kZ#0XR4CjN076Za(gDH~sr`eHyqGWrcqfp&R^ z|FdMSJX zyaV&Jxl>PYoxyH-%SRB2H#NG42jKbUs^obhYYPXg?C_ZSP6qnP`H7;Bh{vy zkJg#Pj{{kD{D(>&+m%XhF($m$+cu13Psc>X9RAF;6>D?Kj(oPJ^T680KGXXy1oO@1 z4TFbzJvB{bY5UgKmzfQuc&7Cmw+t4yyUp&-(v4e-vcQHHY$=#4DPI@AvvaD(Up!aL z+RMKtp(ufB^iKnJGYX;EsIF^mvt@$Kf*x|lWoX}yjlh@*C_idQHnU|0#zZo)=2>DH z61EU(jjHuLvr&}5nYo<$_w(U-e?V;m5x1m`<__Gg{r!{L|@;KZ_qy6 zUC`z-JKFQ_9qH|TB-d zuH9ga5YW5|ZwA_p-YIIWR_uzQ=P9J!1kr*u0=E;K4^_J_|9Pg}^f2XA1PN_dm;Eeh zx7v7BPC4HQ-xX+gOccvdP?no#dzsE_qF+U~k8P{zfEMdo{pii4=y%_`idy$?m3pAY z8#JxH<_J+fQWzGg^f5CRTRcmn@aD~;Yj~edKR2q}6^r@K%HrsvAp%1O~jxs~?jdPG`aD((Z z_x|4=I*b|tL0(uU0z=-P?@ul2?l}>Be+_x6(NrxfW6r}$PD1*nY z&q&EG=C8{#*#I7vZ8Ab#C>o~?u-ka!v5bjgGpbKvWDh{cC(%5tWjCG59$>ubC?Nxb zh`(r_fQhuJva%drZ%l>w%>$!b`Wmm6O}zu_K60qPxSCvndFg?VEJU{LNy&6~u8;eq z18%{&+RaMh;;&{Kwhv4ftQoEQ7F>bF#e~U*^y`lJV?@`j8Ekdyq$5~e8pf&@3HJwl zxzUnCEG$@y3IN93*$FbneJ2Lsg&kx!4URCvQ(ROy!pLW`Ws*|>=2r{v=NhtR}&K<$|IF&4DU{a667Kk__G)C0Suz^#V41Uy^%Cr9kP?6Q8{q}Snq`Y?{Xak zm@ZQGM#2KY=1I}$28j|Kh~kj~M*T@aMa44akFlAkPr|L8wT%K^2;|9u|DWE77tSSDjxiGGmBuqKnGtZl5xgko*asyZrXNRy z2gakSOdAKOOP|mOrw6lf2IEFRcFRxZ!xyyE$`7Vtr1}pHQ`CcBe(HDX5$#paEK}jN zrZK2+oS=562$1e!Xr0q#M!O#H<+1ZGc+x`&-pdvJuFj11nKQkYK! zVQ3>_V?9w?U{dkvFbFuHtjq_qj=#e`k-M%p-BhCFNmnd9*U~7{*i9pkJkdGzO8)%R z(K9ELf(ONCYAUNrM^fJY=L7pvQaf8ve(hbjTP(}_#z@zrT_gW8(AvA$vu^EZUej~p zpYD!J*pqV~%5`tx(9smESadXiy9C(;jAo|HgJ41jtqIqh6#=FdH!D)_A_z*+8ii~U zFdm^fl|Z8r9ylGYLOj6+eYJ4foT0HxYUz@@X{=ec9Q{%1ZZda)&Fhr@?aWByBiqhZ z22}xbfa}Z|p#K zY9R+1?w2T~n*^(ax^q?ptSQ-1tVp+`4y^FvhBP@jd2RAqs)P8lR8s)zRa zV_?{k?2ump&b$(t&yNNiQ5YdvL}@$neR$f=g0!8*n6|SCb_d2w8q#(Efg=4vs82l& z1enyNAB6kKifyso%hPRvIC9V_&LkHm8~kpuY;YZ)PPru8#x|bZb9m>`h_dLUGws!! z7z*VLDL3&K(tn;A{&ry3X!S&V*_nxxI}7V4KQN~BNb5$6M>n~7v=o`!6jg)U)K zEK{>?YarrM7)_FKe89tgR3yLMCp!ElE%DX_ztIUwGnnBhpVvhB(rE;!gQ>azh>o^gmyK; zSU=*Q1>ZEcr&|yP2R3f#9_<+=B0oMlqMC>jFpijQG~w0^6^0aGp8z$%HnR*HT#HNW zbxBEsOlUSO#~O}in+6?m@OQVGZ-WBVOvII+UQq$A>2Vy}_waLtRBKo~RjGp8EEzI^ z+p4(xrGncEatBw`h{|I7_`FqK3GQ}c8o)4i{9cEOl!9p>AbNTF%;ASOo9~e9e5$lx zv^mtD5N>nCDrl=P(dR$}+GMQA*MbBP^#_)jrAxsJXfJH%xZfoyia{YLwOWTunnQIK6#QiV9$- zD{g5;@zde+9oZg!9D7)WZiP< z#Gvf&UtjUm%*{KNnbPsVM`ew6^$TM3QV__It0qR4S<^k`A1f7xFI0 zmG#$vw^X#cAafiTk~#VMbVR^-fc&+Y=dZ1lzgFFgQ2m0lX@!fNAHe!cKO7SLvg|X3 znXCMA_%@7)O=AnW$Xh6gryCG%ZjrWckKJ_-0CDZ)Vrui<@dnXII><2gDud;tl1odEfir;2-6(Y9N}) zv(UP0L06@NT6Z0$F2tZP93Uk^{tiqA4vT^*PYxurO}NuS5E(V0LbW%FxLLX`J>s$k z|KZAD-fb%Do(T>5(|el!7TyDi?o;PKHST)$D5CGK#$Qw{B$*T6xuDkDgo}*(TbD_A zfam6WsfCxbT5qOC$bLaV*cG(W&@rlsHlvYuRJbc}dut(LtWMDuogjJ$mMKdfN%mkE zHOzLE*oiD2*?jsSe`IIVOv(`dcvafefRF;XbE@JF5 zq|4QzUdmOaE{f0fZ)oK}m_ITY3{v25bYI3c5Z53E6``t0a6tvbK4>h0UX_HWBZ+{H zh5?wELnR2*50B?lF%>>Ng7U@T&?R&k>Ow-yLHQ2Gu&j&fWf}@Ub*3Zu7cKy)iI0VU z_kT4RP)6rdV~0LhLahhS&3Evz@U6YUbglE?r$UO-i)BzAr%Tuu*xe;bE=+}&>lf@XzUuYjeMw6BN za?&F*E|({!+^|S3NvyB(<<+QSUQ(A_Q*_hl!V&q{g#|UQxe8^Bm9M@X1F4LQ56WM{ z;w@-*J<59ra*>QjHx^3$EJ5!;VKkJrMEkMBApu>&fhB?L<$oA|0{__|O@^K_qf0T` zYPDutfz?S(fn!=45s@Cj&c47ZJ|z_jjyp9OYsWtWn@!uTH!dD;+}VcsL3{(9Zxg}a zwxNjzSIqNb+`E60|KrT?-Q#=4#o0i^p}NLrJJ0>OEQhJHh!zv-X&m|#iZyhNn5isG z<0aaJF9AWu>7B^gX(SF4s~rGFkI7~7xDKG((hbArVMuXI@Rno{K~S(j`~-mK5e;uWK$%YONbV^b;lNS}hOT7!uJ)2dbx}8M3gl~poAt99x zv&li#OL6D8ktnIbkVZL!0(7NoGs&;*IZ7FM}1m^nPZq>xfV@t6U z8ua?dja

Aq2L1m5Vju=n3q_d-6%_1vUJ@f<%a-3B52#jp8B)F)i^UBe6<@cUU&d zifk6D&niPQsu5OeBvCsPeLwUG#5fVYbjlHD0%MKDn_>N|jgn~+GR7GiU??C?x;8e< zWdE7Ev7ks<4S%RusFa^LGxF!d!5$u{D&pq4j^XU5$t~G5`886d;Cnyia3HQtKfwy9 z5xqnB#tRWJd6WqzZ3@5}@k+Ay08WDsZ6k1_X8;p*!3}Xq)5rzeOat&}y7lVX()$}kj>vuI z&#H1M$CkM(*Yf`An|`EemyXZnZeq8=J^5b%a>|8z&fSIyxkS$dd+KT!{9wrbrmEN+KdI_e*{m-sc>L zM;qI%zl~51n!wlug4~T8H;!){-!wWrM5BN)$+?yWu=0`;)C@|-AbyPZh?`(Qcfg-P zS;&xyzJ#V3Ab*-$WW2uQDCv0uKCgeOz3HRZ-y=W6Jz=rddvz1nLNN|n_+N=>1M{1^ z&MI>+&C9Yh$B=-c>E(sv+)b9>r`~EB4!ZX2`G-$&uUIrkL<~SVc{}$0tQ2Yb$o7$> zLLC|y4AfIwv$!$rmSX|D`8?FNNx=Me@k;?`BlM~!Ol<>#4Z|@2H1P-#7Ec5M3rabz zth`WNLTN79R^Bt+MDOv~BH+OM{VyW*ZD0LGf;-aW9z`J&XDTvurdInbQsIG%y$zWh zH*9evDB2CLGioxXUoT&9VB_EQQdOPRS1wcLi~$gM5yHGFK#^Ox8nd(!Lzk;+tmV-! zQ;i7=3CJ?}BAO0o>Ns<>TAn4OdF!6U)`y_MpVTziqiJx+j*fMomFKqg%s8aevw%nr zF5Je|S4j_Z;7BREN;Z)cI4w=aw&404TXxjd@#D!j3I&GhrZHh zk=i7l0tUTfQ9&dzhi7W&JENEkY-al9uEXy%Z8ZH<7uCn6hpX*-&ba?sz0QY8T*LBx z7Z#pfDz5u~xUK1`6$M8A@qYPg2#k`Kb;8cTd`*Ppq4KU9K0egJV$>o5GdMg>5u`&- z!R)5wom({y%fYyybE_-G3Dr`WS(#80UioDSc^(I8fKjdT8|JmD&{}QrMCe9IUT_@# zE1_zP)!@%+PEFa%$qR?%hd;CM8kd4JzgmIVW8n(4hYH2Kec*k1xtL|qzKz^FF*7|M zaAK~FBNpj17Z}oc@K6OE0#Y2^k_uXwoRnE}0L0*MqCDjSq)tR2YB$4qv5ff;Qihl{ z;{&)%F8L^$EmhDrRh#J@0EOXNXBoP&K#CwxjDXJre;5rGqI7X8Ww3}6&On4gIrEkB zS2|M|^bT8L$X`+V%BRcx+owmGE^ImH+SW-kdynlaeXTXNu&BNpC8!GE6IDxr#FhH)Zmjs zfB290KlI3ouUeu2vxzi0Cj5-X~LAt>jvwBB|>BuvEYRt>G8VJ zLMC~DsW5?QY$hh!2dYfEoPfXx`9&1CUBO%6VA;p9BeC6hpOyJ+#?~DGc7}$AriP{_ zwrn1w`>DGNb5)7hjez;!t67_kjo~!R46w7*$yy=5XxyLhB7b;&O4}%-uVwm)p-#2! zX3;U*rEcEqEpY{f^}fYhrPul9g8p9^iBD@*ycu1{>22mN#Hk4KswJ277a`eRJXYvIb5RIKY%o~1b~oF zWN0vQ&;&Lb4H)G2*i0dMUVs9~uW7s7mtgFk+7AW%D_}+d9T;8)T);&? z2JLZf(;QlF^vGMYk4CMTJnNcS&#h$X%4*PFTF^Q&e(&LhdsWj(!QWTk{g7$QaEMpj^5v&^ z2;19<8qm0yAMk_N(UOYBo2F!blC>>vM(rok>i}>LusaK2ccHV4DTy9TNi-g19AxHJ zhaY6V&s|sarqFTrF+k6l@i4~+`Y!o0KWHdrlLt<56cUC~6l}k4Ay#-L;Q%&|jSTl~ z?CD1Qg?Wx(^90W+wjEZRcAYt{EUUA`alOKwH`G8i!w_neG<`R$7J4alVBnxod351l zxK_w-FE5jZZ2XGqp_WYf9qZTpSZ3}OH+&Bo5tS>n;9kV|LfM1?P!bqsHSTbJAi)Wu zb8ia*l_gS%Z#zziLsC&4N3U@osWGd;moNZiw2X-2RsqPFs_$S*d-tiQ_!`CkFq{Am zJbt`@+q`GBvgbjb^k8h_W+3TUp$bihoT9@+WKI^q`$3Q8A^JHmTY~NhemHs9kK|&$?q}p z#izjQNy$z@c|s%W#@_Rh?HXtNlAMKM-ys3=Y|7=kPJ{Yt>t36d2a8+$pjMTXbPlP6 zp`%kvHe9UXG+5*_za!tR>+MjW9~2Qpgk?sbgoD@9Og12f$<2crgNwz2wOGNgPCATG znP6+_>4K1+n+~9gL6QAr{yjQ+Rj0$!BZ8F{bhk>0g*AOjb%Wy$mbt14tBp};CLQWSX2xu^`fU7l4 zbyNeWqN1Y8A{51f#~bf`(C@ z?2GnMy8S_J;IPbi+yCv? z5VLqv`o)^Wv4O`I`c!#-wymkHWTy7r6z}4}r9A_jM`qE7S&6DAtNt6bBmhfGKfv>#AE+^r zx*8e~&saqV+GT;Ok&)5xh&I%+WFOjEq9Y|AU^Cbo)6AL}uM?Cu2#7S6YmI$?*H_tF z2*CIEzJ}axFl5umEPqWjHQ7Y_Owpr};w3)`2}JERQD#|=;%kfIYeO9`^fE*O7N3dU zDOj-7)fP!4q6LG4gOh`kTgJyW_4oCH`-3uxHIzssTqZI#*_l9rFv>7*EGH;Jb({6P zrerw+tl4R)c$0k z+2ph|_VCpB&dz~Adq>M4^zh&M<6&?*(t-m_6%&YgY`yp>=N#LzpK*?Hr{)FdB|P;?bZz(QjTPSF(r zEWAzRa<+9zepugCL!wxbo+ZrT{Au~l7y9-h`ZjK8Hrvp7>HpRwKK+rzU9Er~W-r_n zzN6BKFdzH;_V~!!H)l79b?epbTtBF9=Rjoxa>RTy6YC1*D?5fY51VbHl8SqbhI{1$ zJOf_^tuV?d#0hg{>RhZW(CH3^kCtuhI0>ST6V&dq2DR<$*r#dKc)F%B4H>RTaNp4Rc z28-Z^* zVZrZ^{G(_Zx%eB9yj${{Lk}Z;Xh!D)-hp{w3`VfRH^7+XwzeV<*w@3e^V$(6G!B_Vw-#<_Y)ql^%hAMIEE&oq$WL?1C8q{&>u&vh&4NW;rfK~WYNdP? zG(12Q=Nt`U%mQHUQ9f3;4qQ<+0;W&`O9T7|I)bb&(QLzY@AF8U4|$qeg>bED!w$eq zaYc5;|8kK}T>$1sruLQ)i+emJn7Z$}bX?V2@ zxWSCxp6;%Wb}C7*eten$3ix$KdX(Rn#&DyoDyury<)s9%#JK0h_NX=G@yZ$nE@3ndjh2>gz3LBlZUZ)qYOsGH#J5PS&O{uQZjx%hP){0c_^ zvJYJdVicIyFkGe-&ktt$aLqg)haVlA%}d*-a)u1y_0@+%UUo`U>8MNT$8Lwg#1ifp&Bl_H?&2 z*R<8P5x5yEfwzW0CXFE5Oa+#XG-C&Em7V7YuL2Z?y75DmmY>5VREFPPfyz+Zx}Tip_Z zP{k@+6?6&Mkx;b5a@v3!1HOvk-7!s$(iB$3%_fUt65=F!a~#ewWc2-x9wOJ`d`ASr zr1~|6&S$2uVJNI@8bc`?K=0Uzfapri+_a%)W4K3`K_33~ljTi~37HeuD#KBSn>TE1 zIvh2uT>ItghuS`)W^8KnPfslzmd`z*RkFojWv{J>v21PM)O}6wruMDJruNt7cFR0n z)3H-8ViPqwfd6TbM=X4!wm>sAYm+$OjlFdhzPNjL zgzWA9t%Wxo`%Z7~>myq$ss_dZAHYW!$vOCFKSLY02U-%rd<-ZYSdXbKm+l>GCAh#8 z#4T0<35H3GN`OnpC-MkA5fQ`$5Rnv-lz}e?xXv7xhsz?Gg(IO)#ta1Qd&~V4wIih{ z=LEknd-B0I?u;lHqOa~sPC=0C+Fs#lpfgSy!nkg_Kp{6pIutsIpNq9 zT>r%E>=Pg(BQqiw;`7%C=|XRy%PS&n+J$sKL{4dK1X%FTW~>|$fZ8(^^ND2_)nu{{ zG)*)%JvJ>lF+Pr_h(>^c6ucVx7)m}Eh~dWdr6@GGiiy5dE<8PQ7o!Qj{+yE6dT8HC z)3u9Zca~NAYGB(Kx}F$y?TBK7OyWah89PT98r%m`-6#!I+vjG4$GT>cs%Z^Q6e6{?zo)a zf`$Lvog*0~-`ZchJ;CWR$-_(Wf@hAj5`pl^Jxmh4uRqsuUx_Kr6&;gYo4gzsDBlU; z&_LTPB9lSC40@?xAJAq*eZY{C3=aOKZAM6Enzbw^o70h%Kok|BNwXy?uwkAAPW_dB2JU2pY%UoWxXGmheOY1%|h6z(10Kc)Bu>{K)pw{ewA?co*o0^(ioQuFXH77L(41Y9M@?x_c zLW@ad15?z+@XEu{C7Jf(pOhEhe)!-?<)L?LFWhM|jjWhkui7|#OkL;u*TlV`78+QB zhEd%|sAM%;1LIIKc#vKf%3)|4MY}tUpNyTMv&e{OoF1D3FT*^Bo+n+;va=%*7-Z*W zbS5KO&aLY`Bc?1HxjHdCbn{iO_Xay2Gwv&wP@?l0L&BV#b`2eJ@p z{jyb_M23{M6l|e>p{KYI8y3Nav)FkKIvT9H=Irul2KA32$QD*r8D$Px%hYA#Sd>U@ z9LqH~YvWk%wwLt4Mk-a8KY@i`c!tp{Joi$~ww4AjqvJUVfjSZpW-97pYjJIxE!bLc z<+GU->ef1~GOp`zrkjWe-fkL^9D%DZCW`GV>8oyBSXyGKdEr^u(A-kFnlcgtS4UQC zIkfNk@84Bj?{!}{c3t><(#_qq>S9VuhIcJ#;>Pv;5|$K?oIwfKR+(n$p`h!K%?B`S z1w}$HW{Ie}i<^&lq@&@d@dSW*B>x6zb5}Wq>X?2-eU$a(A0qI11DAxMbt{7K;t06I=mk5q$5(5NCZ~~pHCb^(wS)k zmkVV^sJZ82@`=`UgK|w*Bp-=t=;+MMQ2%~e^17iYJ-sMx5tE?sw<{E0FfyGUJI(&e zjlDuCN&@nf2q>5ruJK~hgxIx?sgw)ehYOLHs#>_%kl2=3yDlPs^jo?;4x6H}(NVH0 zQt8RdOHa=$$zydnhLj+tImSARpoC+HjX??WN#sQu^a)8L=0ZWGN}*8HxGg`YMJR7S zASyR@bdMB6nUrt;ZNY?ld!*#wi^8))KI<)8d)QDWgC4!oyJe3uuX@j)#j2^*zEs!~ z*jbEdCC<v8L zCHu}7cHL(P7S0{bO21?I>YsY*mEI$re14PiO?CBU0FPsuKuJERFH`|&YmcDAqpjV8 zc>;*5`PxJK73HCi?!b<6(SmkC;3B$;F_N_J&lnVwK2wu03LY zvK<(%Ct*~J*WrPCK~6q0a`5ui2s$SxEiEn%*ubJ3&}*fwO+(BXml}t-ix~7E5ArJf zT2+Tna9d(9v?Bv+K}|qf0Hd5o0CUygE??YklF4^=;PxS7vA-$b7|BfZZQ9x!{22zg z8I<80y~z*rpoT5n{0bIMAx)JK5Vi+qD-n8?rs|;$>gwp!!RRImZb0B;LC+3h1wFKC zE7oiqW56mihZ9v-mz3n@RtKt){4J>}0g8dgIXP?Daw*DTh(Wfg(Dh{~t0n8FaEIwb zNC50d^D9e(p4}T}{K-?AhWzetf8YYC&0Q`08S3mIwxW?Cvv7ZeZXq4)90eoho*SyXz{y!4zGIpkVOrhzLJvk^!WHt+9$m@y*N9Q zr45n@rArFQ@;)k3Q$^G)QNXYRh+$tV<$Zp|Lbq#gvq$bU++ZUm2dXx$X^C}vWd%8( z?s{?ii@e4RJj`9!k4-PT#lO;9vd$dkidmCYqb7dT1_c)1m>-6$3g8^K3dkt8Vs4bH z4nxtJvXV?Tk;QTtv)om!In0<+2pQoDv(Xq&8=M;jC0KCKa8DV{lB@&=ucolD5xlNd zm4y|B&@Zyn2{a5%MMJI{=Pkd{^uwA;-ZHLtJ{`^curcbh-GU*U*Ih74owspU$Nc$s z;^@LZvhY^Pf0mc+xXAcTj7W=*ZRs=`cYau3>78ojQ#heksGfMyJFBqzZHM@SfV)}r z*pfuWlf~4E~N6c>7~pY^9g+I>GDJm+8l{ zSzpnL%LWqe3SKIYBO4prt-sQQjuvR2QINbZyrMimzpVw0wDom0*|k9kmw@XnK_pQdJQJ#^FcQET@$REWd!S0;A2kF|3RrMp#p<81EQK-HG0QFBD_)sh39 zQy4ppEVlG(+ks72ZU7%XWga)q*^aG+7!M+!vFT5`q-j^rJ z9f`~$fmkCr32b zn9QI@0UVkrwU={`#Rp23KLer}Gp-__9EiGg`9o+$7C^j%UWrU0(-)Hwkw%p5I%gRn zfGyBdmO~=m+!&r%U?l}2FcMJ(vM3dq(AvsOv*JE8{Nhx0?cu_%yAR)g|8MRWrGh|J zw9^gm)bZ|9QsVsk3&ezo;N5eNmIQwpqXo`iDUKSNKKG0BXAkuBCwh|;Gdr%kuQ#~8 zZzAKTSp|I)IloxTLZ-)9#|sx)t?-c*#a6Xk1iILq5F1=!m(vC6Ch`Z>S-&jTK$BgT zNjxMyC#1LPvzYoNfNrL|Y?&bS5vf-wNKG%VRG>Kq-TbGnOUpI*fWgOM_cpoLjlu@8 zIS^T15^pkD8|o|46)?$wZ`MiBRXgl{En%mugq^a2;T>%Y(*WejU;^R%Kado$4&z=2 z?JOO9b(B39v_@vK>=oL>$k{8Dvj^5gbfN`h#drAr(a&Hcw@Vgr`CmYI=p;ed(9;gQ zY+bE}96+PGKZ9i}L%1vPim`o3TvM?I(=65T^-{pU(5VZm+_{F)$^Mk*N zHa$1_m6=!UX@Lr}pB=Y1c074U%~y*ftJ=^1>TG4+y}f+}si_5(d#nl(5ZCqwe_odL z?X*%)-$eFXIkh(&*|A`2?ygUeQR#-m^0fR%*sTh{tkw%R2hL}L3N0r~^4jY}pEoyN zl6jO|m2;q;Cr8*=*Xs|0Y<& z|DJolZ<@w+|L56aWY5*ybI(2Zl=r*`b1DflU?9u@a@@>1sW@Te!d3^cBrx$vcz*WX|K&t!Su`=8vAXjx*CeZ$$7+dJ2M?3bmL+Zu}shNqAH z`zia7E$b^K9R~Y!PWp9Y!CM9=eJ|%vi!(3eI8)Z~ESPcx63t?7!TP{VS$>Kv8A}Vm zFNe9!AV7tXEJh4Kq-Q`ISI!6rqfB{3F`OFw@^Z0YmMcHstrfyG5K}nIQ$!h0=2dV} zM4NHth@RE?W>x=xLe*w&OB+7-z=f9h2K>EL9)Du+%+JnD4h}sXW4L+6gHkv}hza~+ zGiNw=*OzC(ORcL&MDm$vIAmaqV}A&H1E?_>oLV3-7y|{21|C9^1{>zYB7UU5l&xXr zMM{JrW<~Rd2cN8?Pa*)LDc@J|QF2E?dlCPm0u5H5VMb1dkz4tz@s?clqtJDHT{3Q9 zK3Mr#GAthW0w7?;^pyO3V*U5&bHXA?FG#P$+Kqru2g*dBrTi{^;>2{(rk>r|xd#Rh zoI7`5_@?2@BVS~K z$_UCC#`DlCd^L~^E&($t%~rK1LrSoAry%KOOQ4Bs6e)mr3U{0+9~AJZDu`M%#s_*b zWJJd(2go8=2Q=OXXAJK{-<5tomiz&jeOAt9Zx6HCT>(b@(2Ty78tQJy#pEN94#Jj% zZ8lX9q6~)$kEanm4xzTEI0FRyE>W}HNP1=OzinsMzyk*!e#?Q@(xQ_!n8&D^HW7iq zYtpF*0)bHH_>Z~tnJIa(yt=e#@yvhR;TiVk|1>#cK0gjw0P7rwlT`AvLS99Hm-r{} zy;A4+-#KMcdMf(v1~b!Sn{gsfvfIYHbBGbb=l}t1dLaC_i7WmV_l|B)K)}C7WVhr5 zLzHN=(WEJ@zg%#*We56(+?abVORPa9ev>(kxVpqTAP1y{gv+i&YSgEHAGEt;WEQ@a z0MI8mrL-?~#f#DX9=qDbF4?J`9$0gk^`PRs^Br_hD$zl?QQ>goDqOk&9tNR+THq=D z2BzlDHcY%AqC29-ABuMO~!h~P+5 zi!i(+J$`h}Z;!CM4>2q?@7qyMWAB-$Llb3F3w4GA!VJV%eqNf_q9&M4;xOJCJWpoD zM63V=RzhmcfZ!*(I~=X^4b@e}MJPJcgroxY>V)uf8j3*IChVBpsg=PW%p=8ujhYcW zeQHhHEqzP5IR}U6#Thz~le@p~c>9G)`PI$mszi_L!Vk3vXP>(599|&T)V8yu3b;EP;Dn>UKyjD=k!ol90p*00R$*r5%Q1N3H8{#GU1zPUPP(W=4 zsQmK*XRTf*sK+T0RU;G1PafP~R;sDd^UTFEd`> zZ6__Dn(PFpyp|PM_bmYDtu%NR-xqfn8Ke9>8cLPVMp}e;3V8Qzl%mCHm2`=WG23X= zZ!D{8);1`=ppjHN8~g7i;jcfH+PcqQyoFkDKPo+wlKH_Wmw%FocR!%LI`?qwI9I=8 ztv?=Lfas@3i`I1Z_V!Q@?sq1|tYBhsIaKj3b_Sho6+3tz?wfy5eg)xIqdeDvp2u$n z5>cXaw5Lh3v8};r1{4Xv7B2rDTt|lhEcI`~$c@m?iO|mp z@5qEhu+Aphahs`IMT^vXX%&MRJp%uWWnfhqmrS6w1<@O0A0|o>n%vBe0;J{3T^^8WI%W$8bkKOO8F-Ae!+H96;+1G z00VF4cXC=h?o*JB81`+lez}N zsexd+1T;^f0B<%l_+TRgEsdo>6m(_)j*wyocv2ls1@a6CG!QvR7P|aqc)NI3ki-PR z9eYkJK%&92nr5kDA&hpk`|Djv`T40-qF^|1!c$)qiWZK?crAh&cQj3EXw=hdYl8oG zeB$Bb^9zJZGv9S|VSeFE`ru!2!6$Cc@^9w_i8p?&9=`B2^XW0*QupemM<2HzTRe8w zy2`k5-IM?R?@zAVXk2AlH8u&6^>uW!n#4ObiKY4yEbNZ+inB2TQfh*X2GOg7xfJb{ z1+ttlP+|q+R96Qu&Hbw6P}0FQo(wE(3Zj4Guwa*o`V#KGLslGn5w9i4#sp040HYYA z35T7P3}AJE=VrhpVN@?HP%|qyUBWkgXh;x-)()**JvqLruNS1wO#){6RUkzSq4JVg zbbC%=eqJ=dFGi{a<%re7kaQ#U(3rvW@YZ_`_TE#b7*QX|s^8ucORRpr?M&HsR?5A(yGt*n#fm>hWmzFoL9#)6^ZlZad+9d)$;UijkysDN zcftnQ`(JT_+uK12|z8(e5DS|+Z7FX@Wuq+T#*IFVwkcC_(W9CW<#~V1$U~&U)@MOn=C*puICP$040k0DtNqET%_A6%wrc2Mk0{1h~D+(DH;3x;)A>|~);Bh8$^ zOKNbK7eTBTQ}vq%$X@bD`g}L^T5COZ*RlegV&COfKnxQq$niOS5!JZR*8y|%Wxfg4 z(Q0sfm2d%0Uxdy&joxe;q)xpN*;%1-8|y8)RJkpj_ab;CE3oNSR%uex|atyCpAqd99SU{cTlL&_L=01&tK; zOry|t!|b6=RA?I-{@KKEH!2(Rt9^N=yDgMK$^R*@Y4})8BdGii_nFr;nuYy=y|ty1 z$yx@c{Td{hKqP_;N~o#Vh|6QN(u7YFT1iZ(34u#g2A8Ofr^qqfjVNLw@U->yxE0Oy z=)}@X6KHM(a}G;Uhw>d!1+=h;LU7ucDvyS%{av_Z_R&rDq2E68$ielur>3J_6TQ5z z$3EBc9Wfx=si9s7W@?02$fDos5{|VM<^XqUV17M;jF@ehq6Xa zh82qjhv}>s^&tQSOpB^%kK$!BkLo&qPp@BBnvf-$l$HqBwU5U{DK31D-|z48cXa^%!4IJzFDHv&X^i7Pd;n2oGb;xA>a;SU1BiU`rTj=b znTSIm>KN7Ztq*F45SKA#>#7ekmYCN<6fy6QM-GGIc=I>P-*FtZXtx{`o_@i>sM3jO znGU1@3Q7$BxbeyXs5PMTjGqIo(Bmd;vE}pJ9DxcMg1F*L!DE z)q|0$esEQN8s@$!U-`Ty=N~d=9vzAFgSxi$Kl%8U=3%Dp2z>^6UVC-aZc1|}WjEvm zpJ7TbKAzV()}5`)??1X3{)PnQH>poR+FeMCekkB>M>@dTf?|WjTT0Xc-J+QArXni< zoX1iIIE1q!cbHGTYrMyCl9i}Xj(xvyET+@1N+bQKP zCRJi75@((SKN0BbtDe@xc_@m#UZ*7r8Sci8*%vg^9pWIOf@@Iu0Q`e&fPJfIco*^H z!X!wPGeM^zjYEVmcvB7KN+Ln=dV6e132K5>B^c^QMWy^)3f55x^sw4s*au*FBi1Av zErf`f-vn{4Lrdic^zz{Cr?cLHJ^#Kwcvid-8>LLeiRJJ7s{aQ5MzPA^=^Muyna+ep zqWps<9Ap$XD-JPDL$!bjJUf8o;1Ado7R_Txyfrg+94DimFQPIq3 zMxGZp2(!fTeA9SejgCrdF=mM~)?8Irfu<0&SFr()*_qT}MSCSjCZfrRf%`A22fE*) z>4RFXq1;_h#wdf>pd;RwCw|p39qG7K6-Dbr0&`gIe)g4IzFUO|LXw3XwqNA+0R;g? z5p*6z*Nib9n07NT?MPFxR(z)oPbq6(<;ZrPEA;ttbJ1BsB0dWl0_Tu{^!7H zez*eQAYg(fb_pOtz-WwK1=3}zhlR6{%uk7YGQ;^t-4Ca6q^zQ$J4a}n5t<&DMQM0g(esnpF^XNzCGygp~R`5H_?yr}u=9dB@l$ zRQ%#xA>NUp!pY1-39V5G2=C#?;z!}gAUJp0Et0{VfD9C@27qT2(o*-W*X7WziZyEB z0lWtGIm6P`eGn{y<>f%AVO&LdV>ycFG_Z!~GC5K?D+8ln^JoSz?pX+e#msMvObHuK zJh~wtBGH>0sw}}(dO>fWZg&7K3R^x$l-kZvYEkGdKf)9=wL**68;@6ThAwh&%;y z<@6F?qRzn{-FSiPS3pAvSs;g1GA5#jNwyp1&6om16#E!imIRJ{)@18ND^r+dKON9t z_F;^Wx%y9I*h_7#APf%lbk_!I(K~^p8q&DsrTC^)c+JD;Tsk`{y@t^JemP&zO0NXn zjCQ-@+?%Kq19K{Cs8B6;O#f<8l>5jcrG<{@8?5G9pdU^}mYXtfYg7KXXOn(|z8?IC z=pEfaH>jnU-J@@571xbC=kShiNh}>PRTF%s#kQ^-g;!3hdKXTh8gPU@Omti)ycDoh zil$@(`tbBXxD(i=WLzga0?8&@G8ld(lh1*lh>E_M$)D}zAcUUll3zf*-DmDl{PPiQZTr{sL z@;-$xlkR+lBWd{u(zBc#Q@ID^znKr|Hwk9$U*5~(>7wPs`e{X5yCYFW7%jfOm!H@x zWce7^?+2LYfIBp)T_K(=4Taq7e<>0yyP0^)-kn@f;MdaLn0@;E7}`Ac%6bW=F{kmx8|llzCSTL@qONUB)e% zc=X77N<6_uBU-@5LA+JKap=ZB6nj%368sg2s|NT6yfS2)@CU|#AX(C0if(~(I416RH#v#s-&l%<@4BBzbnq? zQPp3+86aRoDuKfR)Vo)d{*lIeOj7~%!*6_*pS|>><-=d}FI>7cvAvoZvXFeB6X>?8 zZbjn-1ND9qGD&5=m7k%0W!%V=LpbVyc|+IaERj`l1&MqI-eBFh|6?gZ;7cX_y{-^o`& zj@Wpu%TNh+_)3Wf@a77l$e*0_nCUHUs=F})v>FBLAv>MKz(wxFev+_0|B#=(|B zjNYk2q7gnYAZ;!rh;aR#tVbiNEDJWNyrN{hZ+a^6RduHsqk@E!1>4ThS{h>C%x zG=p5Ln+mjVlm3uZxN-kz@6lq9D0ejM2ZQaxm-oIC?lH2FZxOF=9-wTbC}r>>)ZyJwD679)vryle8kyYD=<^;qkVP{R3J@D3iYBMNln1&*%kpK1Ra z?!>pD9y0C(Wibe738pc<#R>7*(hfX=tZ_q8|FWFU1uKcgJF}&SK)5+cMfo&LHDp zuVRVnlA^pMjWCo|_i+4P51_WNhH(f(qn{M`Cm|cECu3i{7-?uj!uvEMs@(PD@_m|f z@xh!YHU%5w(T3(UX|^+zpWV5O=d!`CNsT;(2uQ)$mMYo=3@yUc8&o&J#A&4-2NeZ; z)rvO+H9Q7o(YhTXQ8NY zSRDZ!z+WS<9PLc&=G3ke58Y?dr$Yz7Bi$Ox(Kax`$1NKkO0(avDV(gWt(blOiO?kI zFhQc8XL+dL*IG$$7rmM zB(dW$+k5)kg0DmhLp-U8;2BwxbQ!H(L27s6M5I8*bU}PCB`qYTl?-=+d=lcxM8={w z(1mID2&<9YHHa$llOug(LjIl@{lIuf=wo_RgmC;^S_0%oN*>!igA>Y{8_ry+!a`7i zCna|%%o-3Sji2Dd)caB(Kh0Sm?lo^XE)L4`-2>HWNGHm{32|u0^E+QkC>(Bub%Vo* zBI`pZluetuQ7CoUGQ3GSwb{Y@_uaf%G~{-y>d8eDpoq8fDd{)ZNDZAaYyd)iOuMxR z7L$OOP==u-u31G^mA%Mb1Ih*NDl?dyG}2(?%@zSUjU@}FngqQYz5=&TyZ72W67 zZEy^vz>E!8FuV_&Z54WmdZ@9MC^RclB!h}twas9HOXw?*WJN`v9-JhD4TuO#07eZ; zBCI3kA{#gZh$7plIzt54fH*Ob4tmtO8KMCL4e@HC4+*b8s#~YCU<^wUtTP;iUl@&W z)Oz?}7n8MMD?EPN@V;Pb?RO5n<7RPY_o@d5*EHO)<*4LXyhB5d9)EZ{0Y+UjT^lOW zxA)%A@WztiFH9cWvR6ZmTF?IJ*3Oou zuFi(`)#t~8*^^Tbte)hqqX{Hfcp$sMKeJJIH1P0HZ(}W5JS#-EAw@L06Oo26LSPUO ziXCp`{oQCUawC~wv>S}}y%equDb!^1@Pg24^iTyS7Pnp6Tv_Fy6{jD>C1E81)! z@}kMfo*qG%+&H;$ZvDEMo{63bbjgG$-AS}%T(%xqP&U7Ym}51h2wE11;^|6-tCKy6 zoRWc>!WctZq-`;sWB2X&y(a7EZ6x;1N9A~8pRY>a#>6f!Og^*@Fev-l(Uw~X z){#aPln$9-iOLeubPdboa5_{cB^F$Y%?0KFBQir~YRfhwyKTlCYo{P3I1vp~md`rt z=D6L21aS`jFmX8w0?`Fwnr}y2t6yVQM|6m@Knb2`j6>L6y-n8-C;t-qO~VXCa*C*j zm(AB8It{%TX&5`Trh3upNjf&Y|MrfCu$u4K2C%MkefO#Iv9b$o^5!Sn$L;I)eXb&S z>&W$D?a-lt{=-Ae{Jk8I`i4&|?JBMNHizk2&;I8LD0=rUsdL{r-o1C%R5Tr$J<#@% ziF+31=7E93{rxbA{{fKNa}a5xFdP^tLOhh6Ma2QI1BXRM`2t|+EfSMeLIlPcCcY8f zH~y+hPf4!3h#vVU_669uB3SoIi8;Vw@>2cg*TU>;J~G6kK6i5Z<<^PXRJ+S;NiQ!S ztW`L8`S`<346cc@gGF|GVRC}3T)=cA;sts1&s(>9F-Tw0%Ce=%!CgQf+7W*tvC^4}3-vYg+2P zL})Eq{`nQQXYmuAhX>Ytaj;**V{?nv*!#`i_8eDEc1i!zIkNsgd-F;4Z*0Sz^w`ms z(@;l97x8~^L*nn+hI7WPvD@qmeDjW|%~P&AjsO_y=NbhNB8&Lj)d)iVR3ul#<>j$l z;v4@~L=#8OAefzm?6KABK&X*f%i(IJ60U*-XbD5&j)8VHJ6(9DNK=7Uq_gWWyk z`)fl2%JZQOg~XcAE`XkF=L1jt`3>!Ev*oFuMeY4jB=+2~@mCZ9A$dgbGA14{g-v4L5}llcL{$i4C&-NmPeGmzO%t z2={;gXuKV6sc1WWAzeN4+_nhn{rhf^Vz)TH$F+NG`Hd$T13x)+e^)38*e>h}Y_CUG zZ8f?$iol>(EJ_Lx$cQXeql`T&stmu*3Xk0?Xpc1LCg@aEI6LIoNs6>!hsxV#1w7IT zqim=RnQYT&Eqy;?Hy&M=Vspcg=%_O{6+4jTs-(i zZ(G>Act=fbi_=!u)xS4n_PAr?TfG~nFTVK`?7NXk2S*292_= zpy_Zx6lY~-q^G4OdC){f>7;hC-D&WYiBUZ*nkXXG-pd5Zga>Zx{6gkAa@a#*p|ljf z1?&m%o!C}h^p;I;d_i6RrJ?<|AKKhEw0_;VxaM7(Z`pS81ESb0ek^nw==r;Obzi@@ zVQlREd%m`_vwHi^@y+Ysx9i-kiKdor77YYdaK#C=;z+<*UgVYya3Ewuwg{F*l$(gV zp+>+=5y>Dg!661>YX*E4@HGs8Fho5L5gZmMktg7TwGkhLwIxRytd5uaBoV`0)2~dt z#$OrrJ#h*67e#l|C3c9s8S7YqSs^$UDlKFZ7$Ps?DWvferpXur5Ikd%)SFc{?l z;&iHM;E+rw^M=EvGirx^8$}GU)ci&6^q|Zh=_kq(idYF27ShHWok{~(u?WI|Yh8sB zq(fJ}3P>VCLtH^2f=E01Yk?;3ioX%oV)r?9gs)^nkf#^D>69~iQBni^hETpNr334a z22LN@Fi%7O?QvnX05+1BvAgi}li!lyTuz`M!+&i5;`!w;Hx>TYUqM{=ZV%{=nf? zZRR{q;5B66naRX6V*u_(|7(x_`N+Sfo;A|BUI7UtF<~bN z=a3L{kzK*HbHY9V9pwQ%oy7@uL>HN1G;}8?C1R93ow36X?^{0_d>KRrFYWqQlP#`(FmYet4C45a)n+yGnx zKxB%@@h4)1sDZK+>)?M2iHtnn^H2AHJ#%sI0mX%(OenFJhr5bzlRkH9ZTilkCkEQz zbI0A1qi=9m-zczVTa zwV|Tx>&0*Ui`wyUBs}`&od-g`33t`H50Ily4(#Vu5@3t)$$+N@GA&PnkAb!@u^=Dj zM;BlRaVe4jjc8Ja02Ns|5be#P1)O=avZ!tiyRjiDcG3b!dLmgP(XQhqG zBFy%{dWCKzJYWPOgMYgG7gHd{IKpNM(U=P#p|Dr)a;L0h=p^y31lP_ zkPjpFFFR&^Q38zWSelwNG&Hm~w6`?Vr9t0it}Bn``Gpd@c)C~ciC=QpA-ZD2&J|?h z4^*a%t~lxadCN(LdoFw&bg)t!`s=#_G4k+yNarloN?Cg#5Nb1Mp{#dJ3Htr5&9&JU zMUk6S3^+*w7bGHJWN~qWkV>L~vuK(!S;416iojU?G}3wM;jw@{g0-e<86aYt!TK~{ zmZg9qm4Nr*Tter`=S2({L$k4mL$+<3V{OTruKDupn?{bezcHwMio>{rk4M9{_rz*{ zpsg>8a)xl*{4Tr%P#2M$d^zAO&PV107KW$6^k^plbAmoyIK+}$Qr%13A*Rd+3ZgE~ zZ4H_eSp;JiTw=;*Cpzu$vGhxl9_ZprkUM;hYlOH>@Lh?aIOKhnm9YFPK~h7+iJWJK zuyvOZdISuTd!GbX4Ru4QFP)lxHy~TGX-BO1*LEE$YCi5SS_JjXg_q^G0CD&3zjFu= z4@C%}x+>9ibBsz}S3TX?+tW@CP8RwZGxMEwt{M`&k9l@d9gCIo}tsC>&rZKp(-@PZT*Df zw&Kd@rs9@k^>6%K$>#OvCCef#f9@48draQBqSh zD~&t_E-Am9=s2Z1qgBCmMH2y=4B{w$17Dj>21!1r{ zbSPUH5x88$VMEx$Y9!&ZEY&7eK1A%$JvP^PZ(}G&%`Ny$*Se~~G$)3hUzox;r5Hl` zyKWx3X+va)($v$X5Es3#J$o!viVgWyCPN$K(kqMv1_Mo)ZE9?<1MwuXm1U(wMQ@M> zsJbK_Ftg+}k`O3pBC(}gbYZl&r@O1Qnbe?++A|Y4r1+vtE|! zf%cTv@8f{3e+CVk;u5)_G1HZHI7Umx#4t{^6ad8qlU6Ohd60(z^hvDON977#5d zr6noJNLu2Z16zyiP@pM_6FAhp31A3F>f7_{u>gO-`LjH2E% zx^8sc+BK*JjtC>eLxGMK6gI0Xncyhk4OyJ9) zEqeY>vTTnP=XBThiuxrgd`^SDr8|{|9{l55hBL8h_V^toA)o%3GcDFUjgKRy?+G)v zL@SqI29wRj#fm+Ru`EkF!#kI znla)L*(E1hUBD0qa7}1TyDUp{db0rtORjb)K?Zz5S_rR5)7i5a>tcT&Spf{6XaXz; zK6_$)K9blvFe#kG#*{(g9Y(>9l{CqjjsK?VClLyX^un_G=O;V*1KXQBJ=M2)DpB!*Lku%3 zn@|pt2nmCl07t?=k&RGf^yd;$115P<9Sj&+9Sakwbx<|X0<^a_H`Ujc6eSj2`QU7d zB8>4eh-}D-UODM}rlG4dvtZ=_ZGVEdZzMfQi82GOsbfWDXBXc1o2te|%;YxtI~(Sr z9^|fq)dZg*fVH5|m@}G{SWZ)bVfjG%Vdl)776Z}E5i=(U%OM&diCL9A9w#UDE7Kg{ ztK#GoYFWzEqeBD~Oe_0V=kA$|flYJ6JpK8D0~CL<1LD8Xf`uEJE49EL+=B!8j#%j_jDG8o_wYlSI}h{2`g z#Y$woebLCf)9j&s%RtuB@ZNjw**kJWW=}ziDlU(SUo5+qoq}@(_GL$78_uD#SBjL8pCV;CmP>Ej<89s!m-rA5k_^IQTq8XTByAgBV{vE%rfBoSI^}~vmO3F zaQU$&j>h^%wQ7ayxA9DR&(ENe!}~MqwsL3hf>oWm0J7Zm>+hSvjfuy{VHz9hgJ57) zbsCNxBT&+r{tg%$e*K0aj8q{X6bnG7BqgG?m^k9DjP*@GgkD^fmz%+m`+y#jrx8mF zs~vqZ1LXMKz@iXOcAh~Ec^Jwtc^K{6vb*ltd-vUY@9ybZZn?1QBkLcURg~F>)=R&Q zaxVN;Td}3BTgjowoI#efch$^Dq+{`vOfXZls)!w&=`Jx}6iijf@He5*D5irA3hdS# zdryC5j{U0uerk*TDHRupHm@Cb!w#w)1m8x*s4A4hM@dICp_mJk&ESi6)P?OZ;T*;o z31!fJZFlS6O)94HfADRhF(O*Q~7 zG31bUXLO?>LK0ngYLRP9up=*F&%JX(U z1W-G!p2(G~Hq+9zEk*U3u`6E+?G;AtJ2Aq=c;62trHD;l`m13*%N(kasUw`fk&khY z*ez8fvxWxy`#RCE%(|2+2w?7ZxiLu%z*CJzivv$FFPrtf5;l^IJIlG{>TYTQ{*gY* zif+6%%ZdZhc$w0W#Nnq$W_FL?Ke*Qay`x9I*AP4;f0;0*t0o?pSpM9;uio(BNq2Gk zAwL-QzOr#&_K}v3#L~bq^lGdCpguow+sh{>Kd!?~Upb=jSN5QG? zb^W-NJKub-p-@wxN?}sGm#L78sgNU5g@(|QEQyIwA&1RmcW5dEiBomXhRKmkh3rrv zlv=D7>w=qW5(bT8d>=p@^1L%jlZGP~v^jK5y2cerq1IgWih|p1oa5h+>s6d@8(4iU z%O=d>@)a>O{ ztuUUd9gtt*s`lXcVLpI%x#54IaltKlw2Jhui))^Q_DMl*mi`7x#|hteUjk8GqUKc8?`%xL~Gzd~x$+!=%qvXBIcKZ)(fP?O5N& z?Y?>f*ESjAn-bp)SZgK8B{)O}6B^NOOyF9Y1Q*<9lZyWVywGa1nr(Oij0v{wz+V}x zD#~{-|7MtfbXvocmSIMBn`F4BbQh5RMT=XBW&|6I?UO0>cGb5&IKlj;Z-1qDUA1rY`u z6NZbq$g4zXVg4qmCw|b`^ZEDRv7xH5-QQF+CU*zF6THvAHo-oyW_V}!$;XRVJRNC&0QLLo0jgV&|jt-i`8AXnBs%D1L@}GX2O6m=cUMIu;SIg>aVW&)E)f zGEyX{A9b7)q6*B*oDaw#%n|4UHUmYdc?_-eC_3BkK%CW(?%jJ0%aICCUgdJIWcqib zq=x?I=A#xZ9g!2wJSz7chBt%AMxni{nHq$hcHL(CG>^>l-i&5^t=C( zpVZtP_QA*=N8pT#iip##sH&*SRh;5w^vbLofHga^rdK4@iwwr1NPor1M$+JN6)>L# z4+5nj$mC0j(k~ga^1H8he&JyC($O`OBl|ya{ht07^TDm4R{lT1UvzZ!Y-;;!EVJ@R z*XH?r(Ky>(HQxz$W%Z^Fd1+&7pLKR_?9Cq=tZfhW@kAg68$q=N*Uk+p#cUxU-pH?B zAI&lm+?ar1PcYf+J3T1=0C|KPN41Lt@cFU)8)j!Ny38!&H)l>_x3LuOAS{%Bl#ekyl=McYKSjIk-lsiWl4({o*!oYZ()C zQl@UfiFm*XeMztwtpK+oxnxmbs=+gn0G=x||L3tc#k8`o-;=50}Y6FreD zSrTBeuW2dLl(8#a3UE;U8{zvAAx6CKhipc~CNK5Xu%3BN0Lk)*wwz`rB6dqElADx7 z(9*UR;7Xw*6{Ws{q`ag&cM^utAo5}4ml18!K!?=tGh_iU3R1M??e!qrq%2nqh6=LE6cK z#6Q`NgrftnP&1qELw&RaIU@gzIxph+j$Luq0gM`f)>SM-nuBo5Vn(eZ@(aaZhUOy6&3@V^0P7$Z3%$RR=e<=5s85eo+uRLQTKwKq1@VD zGpxBfC#Y&vLc?T=N>Y>*XJ=QG7uS~5W*21_B_{&}i+(uRaV=3n9usEsYIzBoJdP@o zo|M1?pU862$Xyf_N;Ak$ls&aD&^Udh?eM-ECx-Wa`1&nb??pbMzkhxE>H7Yr>jI?! zvBEFfG_wAdRhH~EnP&fL-}?KIhuAot&?au^*xZ`c+gH~XJXE`>el(Ef08ETszW}>_ zl!rdd-}Oc(+Im$`tt=%_)1xHs1O(8H;y5ms!^AF^i(q}JBUb#aG7r9>$l$Cg`s26~ zOIQ4Px>r5;yh%0bzdq*kki0Ob{d!EH3jKM-SE2h9xPqm)nJ}3wvq&tvW49D&ztj@= zrL=hjSPuTZq8Br1{_{{jkQJ;&yc&QzuxI)T@?H7`q9*an##ugi)UG<3y?Pmc`rS7X@5n9c z2j3_aeJR%s-_WqU?XkKpbMO!1Zq8k>B47W)r+K2`i zr6?RXD03NN{}M7*5TH8z$dEf@U?~Ql*B~fOBBPR|Q6LkV`7aMs^XC zEl^8?n}K0MlzPHMZQ^P{%?xIpl_*7d0Yo&aYM8|%?N&z#f&qscMMN}dvypaD8IJJ2 zz4=_JK)+5})+jgWjoJTkf1-Z^dsNo`WBKr74c&&|@1?rsZ-^DScg=@;vUkswu`Rv! zY;Dnxrj$Q+4d4|fG>Kt7Q<-wSMgifLz|nHBELE3*fTdZqqLIvmMlXj6ARHjj6`5LH ztct<9*N%V12v~5FOqd`+8Dhyu!{=1Aaj3>cX99=6YJ^=3&`7Zd5m!*lc5xx}6y))= z@j5r&st_31kK$M(ohWMK>}>t4Up*v>L|iUZOt~N$>$I*t=z!mqYgm7By5{v8Ed5>6 zTVLIE>$az+*Pi~#y`H*B$mi9^>T~i;5KhbTSH!aJZ%p5P_dREn;m3xTKgS-j$EF@V zoi>rS?qgebPT%~{u6ZV};E$h8NhyKA{&2h6GQPtzxc2&uA~Nd$E}dgaKq^p4vjd7C zt}=L$f)|AAZbt%euhis#E^iUOBig$qw0BcCvuK9>K^GE0O&b6<(Yu%pqm`%~(rofX zpW6d%V6fN-Z7?S17a8+WQV2-`e)vU{V&l|(n{GO?>E7|{otM>(h1*izeeT@b?Au4< zYRH=nN-;Dfj~SI#;fBCIzbM$6MNFC(tu&g@ngndPSb%LI60sOb{jJz6b+*gI#x0=9 zo6L%8CLV2o2LN%~N?8vXT=byB3=4n;Le*3OAmM`$lHG}MI-)#AUOgpbD~;7+cGsJq z2#lttEu7AzNK+5Fv3FB*_qK`WRs|-jo;$dqGu!_YT$Rzk7-~AD&eelQx|R<-Rv$2n z!9Pm1%iqL!z<)^QI^0D>uGC!wViPfe8 zH@*PmOl7&S4edy&CxM||1-r3t| zxtq`RB#xC(A)Sk8%Z}-L$WGipv_rEKm(ZCnpGtb-+_|^AHVs@%bJ%;L5TA`33ENC) z&qQD>GsBDh0;Oq^Xp@S}OaE-5iWw6)K>q<~9#ZHAy-Ol7QNYWPlbx25n3R}ANvT9O zSHu>bl+v$14qv|tD!f+m1{CnueDtN;D;s_WvoGcaf2!SpO~0!>gO{68^t}1!?Zf<$ zfBm;i|355>!8a!+Ck1{1s9%dlrO+VofN(r;1le2xC?~m8wAfNbc#&|Z=v@@htp-$s zuJSN+a6CgpHWEQ-Oj>V>Rr~t-^77nV@VN%+87E(PT{$r57#@I`D)_}Y*fUGHgjkI^ z#6Og9LCua3(cA<^$iT-WfVVKBTi39MAp}F2mf-6z-CEi7y`vCLQt??odxx+s-Jy&x)WrV>3QjS*_p{+XQDF^>o~yVNhmoOL)I;1h`Vo2?&(+Z z(8u`uriMS#(WeK0rR{EiMEBy%9N)-Kf5A5rIYlNN-#iiZazaYMkY{BkC8#QlHMkaa zhDjUJY@A_{Yb{+>kaJ~cdpv@WU6>8xk@QqgvL_h}CE^(I-9zY37oQmu@7(n7pRSFH z+1J$c8`^^>_(yFIyF+_mb7EFa^KJa#Co$WAP)U1pnQPJ@paruMaX>|Zhhn2-(QL7x z7K#R5JjQxdq^L9)2HpuMh!<_v1T?6`#6?wAd3jY0Re-LRmE;xW6_L+MEtqy<-9~7% zvIP^TM9-EU8sQJRx5AQw_|HADy_er?OkU_EfBpV9`owf8_#18K`!3RU*;mu79c6|K zemc3f=hx0`8G4>yV&xMMgNIFcssMf!ZCnMSQAkEZ62>F~I_$Ke9tEs4XV+4!X2`&b zZZ<0#3E}kOsfuRNtgQ5U1);L063KHK^pTzEP4}j!rQmmX5Xn%1D%wVceKmTbkV7X4 zAYj;HItULsql+#sr#UxhH$s>$hWf1*Fghz0f=of)7b65@^6pF+T4SQ& zn0BJqQnBfJQ$$_Oa=lT zkTj_sU?*;jFzw2XWZIuTk=69d^|$}9W30Bv6#O6YB{1!#Y^Y6Ajca2K`pm@G>6^Yk z7X0z_`j+aK>#~(srR?O?g2gyiycL_K8eATr!I-F(CmMv@G`!~U;AIRQx5zLd1_8}% z*g1gjnhs&0JFL5rdn}kf6|(L0u2a)Nc4lIFVtQ&ad)YbuS+ne{(<(weqS7h82>5d= z!Jk(hOlhJV%Bx~g+WryHl#gnP@bM`0^Xk4Depi0eHM;J3cHsZe!O!feS4yx?2TDlf zz9TOg=r8o;WT$wM6x0mA)<<9k7au#$$QLUq3CEe2nVyuIlWnAZY({Moo|(rmT3<)BlZ;Qgt-g(Fho!~z0N`;; zVr^TA$=YyZLS)2Cl|h;78{w4@zKBzBi?!%FHyAPXN@6LTJi}CdNtT$fsyKL7$GV27 zR=;;t4Bot_wVHUiw@RNuBInOy^-C$&cW6wXPa&XA*mP=aYz58gZQE?ddo@aKantJa z=Uci)g5TmDF9tr-91)S=Nm0KhrTRy5KX4JP9bw@p$K zUGQBYLkDDNwhFiePRP<}S_IfVEJKUM0O%-_VS1oDVin_oYg%MBP}tSg)YvuHg$c84 z-b~WH8+m6RS88=I? ziBDn5L)?QwqV3q$l}9tCCE9Q|-wYa`#?jOO`q?9l3e&>vf!js~`|44B%>pA5n80;; zCc2Ylo7W{71e+mzAW5PV*-i_Z8dE%WkX42h+hS2>F%XrN5qf*;YS*rroai0x9UaE_ zBVrH+f3Uw6cu&Hh(0o&n?6IjD8;arK4DC}lau9GJ4Ls>8ES8qs2zluqe4G&u^$mt zTrwSSHO^*5kedrd`|h_-H&I(xe?x~Zw5rn;=Y zq8?+L@^iB@Gg6a1psu#t&@pZnO2twymd;;{p={?igyNnChRK; zYxK-S5&UXhe7E_g{afW@*2Uj*rHh1~whYeg4Uf%{Q&T zq5avx`!>k;5XJ9dtt)mGDprKc4RU`RsNHC`FF74Z7pjt0k?BNnadB%g(#k}4UJAN%WYiOh0T&Mw@xeuzL8@!P3pFAzDJm?A5}3%|BAQA{ zlvqs0{_uOG9tRVwujJ58Wj-l*oh}}wVz~&naXKxtwJqHXkVfbg0wdrjhHva08}8f} zdV4C*oo`ux{H{EoFKaNR;y4!qn?_7M?eFFt+nv~~#biJ>&7ztt0A$+%Ho^EXBEd5m z1k+~9uv?K~PlyzU+05`i9xG_6+OBj3Lcf}=3lR$eNKD;LAQVHBK_LbNc#xh4@XlLJ z^rF#{^hV^S#daObK4EOHnok$0Tpsf8^dZ z7dBuY3&AlDW_v>-d{JE3m($fRX|eu(TODIaDCw1s47+Av5RBOC@5AJguHbBF ztB)^#5?d9`!{@?V4YNnKREBn%`ShlJIYZp7Gu*{q!ERw(xH)i>Q*>J~Ai!#No2~98 z5Aw3?)q|qA%yt*TH|~yXhGkTZZWZH9K|v9E`>170nM2;4NuZ~vuC`~qXMA*IXpk7* zarWJH-P*HPz*!Y>`ZR1YRvubRSIF}2@x_8CPJ;)L8Om)y-)e|KE-Wg;Gb}rG@T@ay z-^{|QEw+<~oxu&d#H2r8-?2Nx3a;s84@pkykt+0&QZ10b%)N%??b*dyLetVuUyjbg3PEC8)c zlyJb%+DT)X@=(8F=7-A0E5rr>hFAz+!5D3Qa9`-UAZ0yOUz8=<*@gM^sp-ES5EpFY z$5$l;eY!~GJZrfxh<8?q4)~tg&-&LDQl#rbQiab8igX z&?p*Qq)E(&Vwyw>WPk!;x+mAD6`JITFgekBR98FD4?;pPaW~Z0cGPu*HHa!&@f^~S zl&kv8}*g6P~SB!H(oK?V2( zJqJpHfLs#Ti>+WU#*9=v4brRu2r>$*tX9(;xiub>4he7PYhc{RH7-Ixmch#}0uW&6 zYq)42O6b3$z7#k-*`6--eXtaR9|2FOEd+2*^ybLN$s!;M(Jts3k(Yzw9z81FYAX3g zUJsl#$~8VJ*EG5`)DmS7wRakH)|3(P;W+bwfWp!z%(QXV2)9py`+xcL8PP2ydpW=4EXwq~-;ksSAXB28{hNJdkz z3iP#_aQSabTDsv{Rz?G6NCJ?F*$C${^aFGeghdiqh+SVuQVdBmkh2gY=Gd=~U!rMr z#IN8=9q}8W)U$#5b?f^2)@@z4b@Qf;8~SGYW{9I{eAVy(174vOm}Ws!hqw!aM!lr# z>2YKoyl@&+xg|HkM?RgWQMQ%3$uwpB^`S_E(F z@w-gH3H?z43r&4lh_3a=VzvBf9gQ1$W^qyC5U-N=&q!PEx>dRGV?)><9U`$l9r9^BV5Dc)GhMfY;rd7r88lX%B6qH$t1*t}Ie&H0Gw#KAb zcz3SH2=BLxmM|NDKe*O4V6Mn%@j?oCgpnkpWTRqJDri*U z?r=DuP#$|YOxgPN(_(O+eiE{yIGBky>w7KX$Nl4zxz!`1$AUk6sQ&0~k6D+qxM4dv z#CK`gKM!+dDv`_L5tY?wwk|nE2hz_*2T%6#h{}o(0U)oaWM4!?RaJ#b566Ea4qz^g zhZ;xXZl643)Zg}vt?7^o#j4kZi&&Cp7~yj69HpwQsF zGHfOsf)O|bA{Y&O!~p*(z}D*#L2X%W73<>9$wuvtdoL@aAM85L?Zj|oY_$*xdb*?t zA48$fPf?XTv}(II*b>^X^D{W)KZ(<*>V<9?u9BFsW^zE^=byd{Kg9fNUZEt^(LY&D zi{mmdMi)24h>el~D&j;!DdM;zvf3>zEnO|h_cb-v zBYi-*J{R%Ik{DK`4&v50VWgwo_^?Qz{gE1AD2Xk0?zz1#SRIlL(}uq&)2MWYwc(pn zN565%JZv1jZ**ZK_#?4t{E#jr(S9DPk@A{W?_@bU+>CPMs+ybX;K!Bu%YhNk zL53pFWV+yC#gqnis}D-d%w zJO^0~tp4wb4a7Uk^P5!ZCrl1;o&r9MfX{&n$dcP7*?=E6+8_$LPAmiEfQ%fVWU~U* z2gid~MhZ*NwuprKpMu-P>I==A{gK6ERSmu)W?ikSWkmxsLf24F61GRSqE7J?=4o=_VAqL^;#vRh3kIGVxz$0)xQ zMMPI9tHD#6FTp6wXlsl3yg(l(>wmeAgU-0R+J{PXbz3zB?f#1Lf+}AXj7Po~a9nmU z5s2KCPaROajWkLclQTrU2MmY8ol(MI`CZB{PN6hCbmXixco@n$Eg=L8q~=K}eFb9h zZfWh70_yq-zJRdoYn0L1{`?MB<$SHS?d0`0TdnC*;uS0V&M#33P% ztI)^#Ey&}lF096g>pTXeNy>?rgXL7LvEDU3BHX=>$`OUKXrJRbA~AScmxuI8zy)5% z8}hl-1EL(t3uzT(UONjvBjUDo&&%La>RI(CJt4$|fwu0~fe-ZK0f8%4k1UXg8JtGU zgaFdl1qyP(jE6)}H#=+*?}mk?p!EbSi0xY&TALba#y3y7XJ=^yo+}e1?A?fZF0k>) zf;uycRJy?QYIvey|5GiB7-PLP_((_)pAVjsD}xionMmTKeo0KrjD{|TtbpaHfM&4v%9Hlx~MY+pW>`F>X^l3PFx)7jFLxRYg5AUPM>&f%`iEby^ zTUhAiL_0bkfb55J!OJ)elHr?&stPI^Zap_FioL~XWsVKGj)d-u2=h|M?}xCyQ_3y6r^g)-+fFqJUZbt z*0G@DDb>qvLph8(aPbWplH$OlX#j%P0D=gUV3$mGOwe(n`^W*3XMjT#tAk_AXd)}z zRoJ5iv~&?scx0zUMTH<#v{ke=Hv(E!NuU|tEkVSkc@&9-Mt$lH{5*%MPkskFUZY3Q zTaXAmgnz>(ep8xR^|BD`>7|5!n^?PwPxSrrEo=HP$v3!4dN>q|y$`f>-K8b}mT+JT zhoDd-wsxrZ#Hw}u8xL(d&`|mo4E7D0w0P{}Ma2y%rlASuV?Cu@VDhPhd>Dkb780V; zMTCSBAR(_?N&v~6l@MoeOcf_Ovw)?L4bG5^TpF8tA~Ih(Ru*d_W>IFxRY5=s02}?wjN};+YC|n}mfkHl*a)CUr;oZjfuauW~^M`X@ ztPg&j$x8fF$PeQZg9A3xA1kokhhO2cvWHwT>CKnlY>^*?$Z}v)Kyh7~A|atHVvrU= z>}`P717dGiZ1%kXhFcSijBK7w%s`~W=J^VkVS@oJn*g>BxeWkL2&|R640Yu^texX3 z1l)|GJ=S%_(@p5PLCDI1^U2;kx>A}3i71%rnnUeb`SiNW51v|E`-|%=?(V?AxxL4B z-0|$5;a&5K!6E5SKmVA&Yrt2r^X8fM!TV@9+Jz6kbN&goD5~mFM;X;LXb*^Zrn(X_9yXunO7^kxuo&K3 zvQ9zoug4ETq+S?$hjl7e`~E01wZF}>x@Glhu~pnP*V)w6 zIa}L|KX1H$+?QA5=-&B_18T4I_PgIYSV&@HGc?~UkzRzHD1nA&7^EDk=mlyMo$543 zRiCE=%sFt1Br)(C0Ftf<2{r{J8R*0{*l@L|BgKf3s%A59Mm3M}I2cpION)W;MVdY| zlSrqvB=d`053v^(hJ_JhfD=QY7V$5iZ0H&3IJD!A5A7)| z-!;D{*d_hu+hxu3O-=L7B#q|egu74vet+G}1Ji}or8_^rr1pw$72QMbKnWWlzWjt( z(bzcG(7>D5RC;-enL9E-CK&T%g*4F)aK7ZQ!xur`9iy4FWI8U5-C?w|Ry7%|Y8aq` zE-b(p7u`-1`YX&Z!Qsg|t*wI4I?y`M+tU?j#KS{D3w~8`lB*!UAQ9l!kO|guwU9~_ zZ7)7UlYP8b2bw5G)I!ytvkK^mf%K)jcBiF5`ENhHt!rmm>YlFM-FTZ- z@r}QT!krTncdnHV6&+c<`pzlQq!&S%kwNuyytSvZxuxU8*H3h`ws!Q%nTb8#itMrF z_pUj!X6la5X43!bofHeBN}%HM@1P_tiil)*b)W(&ff6X*E_f|?n-&r6fN&X+yr~66MIhj5tc|Q7)(U~D>cGH;nVqr!`VTL^LjfGX)?>v^)l~I(DQ3M0? z0~ztYd=Ivl67XWHf;dAAfphqSFrMg?3`u2fZLy5v^z`C%xf1JS6yl=`(6sm93nvIU zflTnof(`=ZF`d6w0M>sLJXTJ{kWwb+)BQ*?vhTOhC9Zncw1n@4KBBbu?w=pqatiyW z<^Dz6e`%ly8wQaf_KyXDDJIu|9HT{0E?{AF5nySyalSM*O=z&eK#*1}`K!z@)| zE14O~cZr|)(Ae4`b!|=AgZJt~Yb$rm?XO+4#&maUZ&`imwi`QUnrDKeaxu<6voND~ z@f#afZSC$|96O(jd9@xl=GFF|7TtH$fKIV@wrL=BH)J#bMc5<%8ecdYjzx=L!uSFc z+BflICKND!5r>Lv1ZN~``yb&{aaoy!;D%X9bXnkU=vLRAn3xSv#C5K&7l4vSQnxoZ5P%IBT-E+c0Dr@!PG;MquO8=XUHoIN!T@ zY)7T9vz+g|iFUqGJCAo_*G8d4c=|lja_}DYsyj4SRd!+yI;O`FB@fz8(RoET25|-y zSXEgy&jrkn(P%)I5$iDHRd;YwYl?qOp9e_FWHObQz^ss$OR`AJb-N1^-4xlo>FT2# z0<;2?i6#=R=2439)0F&_l>Ff2)YikrxsMH~Lx%C1TwN@3eO_v6Ug`!2=l^wgCg52W zXWu_F^JFC;SqMuYWKVz)AOR9t69`Ml0wg3PfU<}ziWndQA|fhos1%h_rPd-^^`(fo zqaq;sqN24_Em})0#f?%$s?-HB&-c6MJUMv+`nJ6NdVSaR<+<`d_n9+i=AP}InS1Ut zQ#ay*(%EIjxh?a?3ht>kZ@M}I(QP!g>N+Qk%zV)E}vOf%Yi9j5BYZL1X_w6fzB(#df#zqn$ zL%APMM4FXm8GYTvsPc6+%tm@m&WqPw1Bp@V-Jw!bn)37O(oG*plMakM8guj?s3u2k zznWLrJAv~I8G9h9X$N+!!{><1M?&psLllECv8F7o4;zogMu+hcnRaDrMtWXuqP7{# z?htOhV1STX9jFx7CiUn)ut!4n@anut7p8R`+GSL6-^sP&&4uqO)Q@rSt0NRMt}SOzGkmpDT&29-8fU50&41uu;E z38`3H>7(GMRfYr(i$;|{iuW)z)Uc3x>te*T1vo^1mBcWD}Za`K(ZM^JPiv*)^k zA{`A`ms!Tu-eKP#$vrl%Th`t)w%r1E($#aeVYiDY|%-O{i6DlMOCTMVUwvf(RPzlRmUQk zVhk2IKDhfC-q|DqYp)9sR=TCrBa$aJ(e1tisZ1I)7@5Sdt2YU}f&_-~;oq%KW~f%-O-bzQK!>*? ziIEJr_|Q)pF~XLz2@ed7QOo#D9qmRo!M6IBgu>i2UgPi%W(MBtXTDTd7{huz8=~04 zjAsu38EH0+t^$%azWtA-f3uzPT}pk8(H%l>B^Q=>xqwhsW$S8u#b&gvx-;_gYm$9w zty*Tr;K4OEGYW0ZJ!-!Q=Ues|S9V1@5xz)9*;LJd>?TI??7te$2*euwqWfuueIJ_?@d2Q0hRNQUm;rd@cxEk>^@-%J>9S!F z77`?)3o|;m$McHe%)|uxMwKH%@0?caD2hvLa)xvsGgu^Fvs^T5MEE7dy9HqrR4^uI zgew@Smy(vtZN1D@n_P>r$ZQrAQk6nS8u%h9;1ce-$Y(ymewuFNF_wI8ApM!$vXn)w z=J3u))X?k%%BEqqUPngSFDs%s0)%=!xkbHpry^_#O@rr*lcu+Mm!oN9H_?A32;uO5 z&wwl;|62^Oj@&vTJR+EV+NKI>o9t8fqgi0BA>(DUW^5kPlM`*#NRQ+EU1_X=9>i^| zsX>kPM{CJ@b|}$6v+aOJGpMd~89gLWR{~v;xg7OOLRRnm{7IQv>hv08yCOQzCruxx zpRX^qJJ!i6Om7}_vM!~kVphcH)RZxzjtxi0(k`}b7~k#cfLf)!wQ9?=tJ#-jckP

=5&jW&x?tUiOx#3o1F0lR$eZq-uAqb)YMScWpdqZzWVjc z%^l(sm1%N2wX4$|ANie$)g>i|&t3G#nprz$h1Co!Z`a8*E;3i?pXIJ7c>c{!Bf@&! zn%i#q>KkS(Y?!fEwTbIHw4hhu1p7w)4-%f~-0B(t$nM)Bt{K^}o0&rTp=mUtX=I}v zEGI5t#S-}!C>@{A?yAkl&k3CP_D|kqMi=S}of;GXyD?gINv4yTk?y8GH8$4n>LnX* z+J#KnDn9>zxEYWu+-@l-6JKYLky=|xqH(E77%6999SyC zU|$s9d2((9THwsn*F`>LO{}16=EC`E!q8jG$DO}x=I@rON>x?7sBpw*6+_+S#?AH^ z#M};HOREdU6kRnWtj)S{b&IBs8aB00T1d<@mlR~(W>-F_%Z-oPl=YS^*V1WGid_kO zT@;BL!$%pTNF~}Z3YbOsMQ5auGGb^fCj)wkWO=n`bT7_ePL4_Q5*ZgzWyvxSt3C0q zRtqv;_LODar^V8bBr!iV{gQfBxq3ut>5vtdn~IPvxkHBbn>ep%+SuSU)^!Z8KmXd{ z%SJ1;dF_|E(|U%Fj+pT4p8XExXRU2YArsA6lwF21qHtIkT{1=2^eqzl1C}%F!VOy! z+i{`^oHim`lTw>GWgsIxhCPJnp?lbYVj9JRx+A||2Fh2fMU@3kR`kSX*&h1QE-tBG zo^HE*|5f?f+4+Me4JvNDTCaX``FV+nKg}PsR;5?Wo>5hvGa@21a`=qmjx)>4x5UO} z)r_v0ay?_fq5e*$HM`ztvI=uu;W^ov=?PSc5I%~~_K+Fb^*$R-zGiAAYG$ADO_c+B zy#4J(|L$&k-?Y_z_aE?n=6OE$Bp*)Z;q%YlS-m@SOy+EWpp$t*WyOkNi9LcRzn{19 zEqQ_Fxy8=6y8k=Z#0(sEb?d0QWfg-znov=HMb-GS`d`nRQ*deHz9GX#PT|07dKi`5 zvs{l>CFO%gw%W8{#DLH#MLFlOm;H?KQzs|ns`{Z*3)9L*+Os$tVj>l zEXz`iG&%REI`W617Hb?P1mQ!bgc+tcvH@85)ZpEarFOcDamlgCsVV76cISR-rCrCD zW+)ZZmZFp~nw~%XPCy|7~L zl$njA^(TLj^|ylfR`cg3PV72-&4^)Y+=Z{ztCEnrRL026yS(b@=>2HO+c~-P9jHW5 zH&Cp>x@K>|$m*J@h%u~R*aahlqk(ZVU?y8q==R_o{C9>goj_)T^uM%=CxX ztXz3bdg`>=iBoOIE*Z+i&=7CzS;Q-+u$>-nQc$dqsG-|*O=Dz>NVh)~9A)4CyHTp= z)x_sj_4n`o4^jSvC^@g`U(a2%f2XIC@l}ib{k>ZGdtF_3^ZB=JYY}r%bxO-Deu2n4 zokiraadD|lk>~eMPGaI>OPAseZPKQuU8nlbR?#YEPJdNBWBtqPE^rIEc0hgofZB{S zm`I*b6qM_}gtO!#F8v3xAd@@@Yr(~LYR`A7y6D__n>Nlrx5#DU+N-X*Ha#_WOk7r0 zTuGl`Cdy%=<5^@yT)So_(vo~OA98d`8y%Dn?D_Z}|J5Uxt$AS0vXL!VD9wtE%_?!V z{BDK!t^7Cgp@{{$534M7pUQf;=HjPbIJoEOi%(;tEF(HPqqJ{uZXAM*vyq;0 z=`kry(laeNDcXuo+ABrUqD&U4GQF$1e(KiG8eiQ!xZGvrx+@zSvoiaY#-{a;8`eFD zjnFvQIGY}XJw#oD4wDy?6dS}uP`wCw#MCUFx&4dAZmYVv@hffPFN;mRD7i;)^dtWh z(SM+7u9&m?WMlkI-J7FlwsB_kONsuh|w>KVq z|GkyX4Dg-Dz|78JZQ7=n^$X5|U&BL(vuPGTR07GTRfEvcs^+?duQh(zICoFM&|oI| zm&K+O#|}&jX5o{w&4zwnHneqXVvb2^W16c#==Igp*X`f+_OAWwrZ-34ty}i+jE>>q z9W#czi}!BV71oL9&qgq`!?ZO}3Qf`5Qt$;a@Jw~_vUQU;H-7c2r`Ihj4(1_!U}i#C z>(Dj{nFG^GeLzORn>FvIrQq`R}bAYH<*Q&96ktrOz9l?HS1JY2MQ z3JUu%@v^(GisHl0sD5Z=f@kfW_M+pBj%L!wQKy`TKw+dNHI+rbJSn5F*=0A~H|vqt zPCY0rTo*P)KifTHP)0&nlskkj7YWfF1w$*paTfabqiXI_*on}woHEmy>{jJc4=c-Ksn*DP;KOxSY&Vhh?sFSGX2WXDzQ?~@@a3@0@3D6PF6x}93w{i;gMFBc0 zh;FTt^yYwj8>g??7ocOEt)|f#?p%tY*yYYbXRb5bnd3CD0+xm1r5o2=r#GK9_Jt~O z<~uX-F`a9YGXekg&V^7TdHXW^Y$0y)=3MS(;aX^^rgs_wZ^)Bo|2f2SsdEW&jpJI+ zPu^bSR1)@V{LLf2g>aDrAMzUr9}|dkEL6)kdY<-94IwNfq`8DE90!Ln&Z)wsj}3Jo zDZZ363m@~H#h$x-cXuwaTmlCd6PEay#T)YoafS`8A9wxjN1u6?vm|_opXu=3fd4r* zEpBcuwz1`%kgeN^(kx zX&y03sTOlx%>8`+XIl>DlA3Iujj=g5-&PLq_l;zmhm=mGu`IhTw9-K1oCtVZwMc5 z`Hpmoobi@!Ab*l@m)g{nSBprCw9k6n77?S=>v>!ypJ$VoW8u5(fAda6K}64pLMJIA zCn77NC?Y?iJfc@bDIa_!MYM}31=~lIMf8s72Nf658w`oaj2OzZA-FdA8-;rgE;$jo z5iUK-hR~TX%W>_@vo!n^aMv#)&AO&R_l6$gg7xfoh4y(hsd|)=Chx@hpHLG=7 z%p<6owwcFqdBQw}%hP5DF3+1ixV&gygnr4q2K~DEfTtgt58+?(B9gW`#xcbs%O*H+ zGcR16YjHXXS)b$*dBztR_|(&9EWX5PGh^P8OE8&Y`N6u%l}-`Ak>>XBl&BN-EmjeE zBP!|?m`!fd*GX=uS!%YLqYlIE(`LJQ#yo4DGdtj|4aN7wKmVuxpYBijH==UBfB33Za}2-Q)VwR@eY({y*; zTld$4^e}#-^-^r- z@A7+Jf5`8sKF)_Gr#ONo+_b^A_W@F`@GIEc;?;s`m&HF?mn2K`Hg>0S{EzazX5Hso z`h>-k7QYh=xmPgsSAu4Vbw`WLTXLF;@(r=>?^*oVxx&WEw^-0@vB>E+&>va+lf~T@KeK346!LRR z+uSg+Te8xBwJvuEvZ=h_;}+Sdn6%$+Y56Kw8OyV8rKMlA?lyeiL`%1~IL_iCi`NT= zu&SPXLH;9(z%vv`Yj zX(Px^OQ4cmmDU?*hqPBk8=nap^RU^9tl*?4YW@_wh}20{PpPNbsq-UFeahB-bhT5d zCo@V@;I_g39^)Rr{GjBi>jRWfV&pCBD(-H$8=AtEr~f3}?e<+8CsO7>Ak1}0oh{}B z|2xfovy=F@AQAWRe;C}!f8gg!#KrxIkHfxDbHW#8j^XE}z)wQh?@N@QeTzE@ox79f zB&(63W*yXFd%x2hvF{$kwAu50yY`&Z%=QiSR1Mk`p;7h_fMm`WK|HmXQax;qXg@>IyIbaUj_;-p6z7O#9 z1a71q>ZFZ9N+rgP6LiZ@^2ANkNeLOh2W3*^BY04QT&94 z*|+YrF2B>f%gI1s=m2r|`D`r9B^=++?bEq}Cfvq*+=hQ4?*_}G&T!O86(Wy984X=P zk9(mV@hC=A1JEQFs$w;QK6#WXRbv@7O;l5mQw!B1)xg1Ue^Z~U9ApJ%oOCxGv_arAj?VH|Q($a(#_nt#8)1>O1w%>0j^Bzod`7PydR(^S|`3 z^%ni8{;l4xe@8$2mj1mypx@Jn^au2{AL-BZG5t9*_*?qh5Y9^oGg0Oo6K6V_PNuU- zGks0I!4}Vyn<_KGRGS(z$xJrqnHlCnGuvEb=9x>(d{b{0n8oIDv&>v!t~4vmRpx4Q zy}8BQYHl-kn!C-t=0Wq2`7ehL&3zc-pmuSuN!UNXV*i!@cepG6-QblWo19bVLc&!W z4sYqCl0x2887f=lsseJZSdCHR$gwFh$`skImZ_EMdUZ=^fx2DYsqRtthmKR5`E5hy z?@)WxE9#BVmFjJlcMhqK)u-g@H>!~wjnr**yzZ=1bXMpgoum8e0lH9+)MeysZCJcM zU(eJR>3Y3bFApmuk8jj#^g6vEY^L6*9|&7azCNb6>z(=~y^q{IpbyfUA0a^J+DH)4vhET zN9@lv9tR(4JVeOdvENnd=Z${`mo`>|KW!Wfe%|=Lb)QBE`}|LUcl)mdpZDLwTj3HK z$n3;~`~Qf~zYDj}yrqqQjKvs>rMUk?^381ZZvz+kuYwcfzZ2B{dvN*MFMdu+K7`z4 z55(_*$2Jl}HXTK{~WHTnnVSTeu*q1lzptz>4^VqS%W?_`ophRHU$roaqA z#*Z=MknU5E>~oOl4aoA9R)*h>1i#1JZ#Faceu}y59`g#d12c5$!2-WXnm7Fa0B@zX zDD<@Cjk*+RuGCZhWB6?4e-BI&|N2({r{LQ%T31WZV~Aw>4tkM)5V*}>B0l}!Sa(o; z?7tseBdtx{XeDC3e~I;ZJ$~BwKePV7#pNRZDq0L*GEkQvuyM`z;~vsMWSH-yb^p%) zH7=_}B8ILJ7ju{Yw>)j{|2y;s{}<3{jmRY55c~8Qi#PiB;?hH8p7~Dvs5||`z_tE9 z#NJ(GgSyq?g2rD#uV}m%{M<^lwT*C&#zNv+Z`<5<|0mFQi3<|z7K^0Cg!xbM)))R4 zpu>emZq2ng+v0S15OYms{wO?{jh3DzVfrF0YRlo*eteqG?9-Dr2UhyO$7P~_1sG=Y z_LQKx!}|He|1lxlBed@m7v*Wlaw#eE0;aRdx7_B>Hxj<@Ld$=xl~}tad>?rM_K;Y7 zK0lHh+4fg(v;S>yiosLBb6Ang1O^epO1}7wtbz>NeXxp_fQpq#9_x_5Tgr zV)?mI%FFyxXk?pk9_w!e+ez<%Y$N|oBsv^r9H}SfCi@nLx)NF|>wl#nyisp`Y1Vy# z|1bD#;~zlm-Tc1<+4$&3OP?!uCpROxnQv;rgu1GX%%rddA!X^y6G4|@itu=GT zU>}^|ix18O@O-pEGuIXk(;{ca^o!@rcjj4aK-)CSS!Qu1xX8JF&h&Y+oLem34$gNr z%$qxVy0dZqWfwO%57aNbaFMg6eo@0B=ZS?EFP!B(yRd%FENA!P=?#}Td*RK%2{A#r zS}T`ZLCi`)zJCFuEy{Y0wj7EZpXq?|88Nyr`$WcZ5Osq1Wn>C9?_;G(tMe>%sYmhEbHHtZM=kWIMII#@QTJWZp9&>< zi-Bs8Dzfu~v1nJDIY^;oBCWQ=r=CJXI!{fq@jh+o;n145ivnfE$zP;MC#~0v9VuB! zpL_$V)J@G{CN*udQ^wA*tZ$b2@LG))q^sylN^C0?o5dHTc`img?%OLth5dDuJ`l}%N>md4@ zAo|-N`eYFOT@ZaLi2go^ZVaOR&9n{)qG|C>dByil%`~mwb7wN*(MlSjSpQGfQRLmu^>NBz-KZVhm?s|(PsO4(;x9V>gd2BausHY-1-&{NbW z40Dz_tB@ggI-3&85^55rC0yieah`H^Co~{W-ge%1jyPX1?+;~-qmxQw99^J>C9DvG zH#Lp*iU!39hVNTAz}(F}%?DuticK{Glx(&&&-!cYQPCb1<596573WbMJ*tyOC3sX9 zk4p5Yt{#=-QOO>KtPb#!>QQMPmF`g)9>rcWfj6=|s+&jk@ThE$>giE@j~sXx+wTC? z+fteqD0**{E=?t4);nd+Jn}ImK#FTiuD3pd7SQ!_c0vn<#pd23CG<)VHILdO&Yu z{pKb81~ZYv`cwTC;wX|CNTSJN_A$teWacr+%w*QF)Lg?3K+-lpf^+5;P#=5LCmwag zqyFkqM?LCq9`&h5edbZeJnD0gI_^<__oy#C>PwG0;ZgtasINTgYmfTIqrUa1lOFY* zN1gJh?>(x~qga=8^8k6@MA4fE+@zx!M@d_A-K4F#l(aRMlD6hj($-w6okzucRC|x=;8D^h-8ZC7x|Fm@ zm+I_M(mGu?X`L=5t<$BXb-I+aPM4C_=~B`|WUbrR)$R#a}(%&7HI4@K>ZIv#bhHG3IiSv~;Ufih9lX){pY>IwE*qO0t6q^`8r zV$Bzf$dW2Oi0jL&PY5*Wi9tMupMc}u(5UkKc!E!wWEY*X- zF}e(_(*wa1dOSE;7l0)?9~`awgT=ZZSfu-cLv}ziQquyB(i6De`W?^ky7c@GIE~D*twq3vzKq0FLKmx z35C^0^%~cUx$YzEi|n;ZFR-C61}E!F!SQ-NI8I*%*6Mj+xo!Y!^g^&o&jri$9I#Z+ z21n~zV3EEM9IR)8ERbZ9A z0xZeXPez7ZUz?*MD{ZD5tY4t!c)3l=e(k&+Hd;~ws7^)J9GeK$Bl{~Rp#LciBO-)NuzQl1CB z`z!nGe*5e`aFpHzj`ZGr$UcA2K7T--Qw}j$A1AU4YIir^^fv3~5$k6wSg9WdN9!%% zDE(`2Bo>Uq*MEVt@U}XQY*3Nw5{aNW-PkJ)RL zei>eBS^1JyxD%|z$*O;I9YE8OZ3y=$NDL7pnej3O78(H_2b}2 z`UP;TeiUpj+c&tY)xQC&^y^?bx|UAVx(uvta-9O&TCp<*d&nAWLEp1}|6u*T3s&lP z!14M3_?`YeI1b&T@b?y2rr!ih_3yyJdO!Gy{w+8N4M!AnWg81yD7pFZK2NIjpTJ7} zXRucP5iEy~3flQJ?9b}4omz=(TuUizWMs7sxwyNz1em9M%J^1nc79Y}Y_Kw-R45N4 zv$S`($}H|3+JnplrJPQ2{VlP}>`|nM%tocWWVR|&L}s)5xR=@PtK7@X_!X`)TYd$1 znN7b;dB|-0W$ypNbvyT8k(vta2dnf6Ntp=&r|2)hul4s}r9KXp83j(($H1>RZ;Kp6 z#US}{5*)9Of@Acz;7NT1JfXh<$Lf#468#Z463Y!~;U9p7`YS%k_F%bb2bP#Pu-L?aML{y(tB2Ug&Y@K{FyC3} zwoB6!&fg-$46c-tN#?qX``&~x*<^z?Mn(-)raO4b$f#nx$pXijOt9Sa0_#jVSZ30| zQj-d@?HM@Chf&!8z=l(OWqiOcA_N z;|z!SNR2b}Ch85YBW$?EHr(Mh++kp)84XS`h2SYO3Y=_)faA?z@H;aStTO|_ab^Jc ztvMI0Fa=<_$p=eKe~^BkzA4I#fvz&#!Eu7+b~LU12Yc2Z8<80FfQ&FknhUr}Dezgg zv;|YabvxHtgg)8K0Bel&_ElyYSZSt$99rV?CW#)Cy>95~2~1qYg$V67gD;vk)vX3&3J_m!KV*OTnRLJ~-c8 z0uBhOAClw9*E8$2^f%^4a#1AKwOsddUCH%Dt}D3ifd?5=?BV`;LLF%= zSZl5UN1Lm`6|CP#F5U^2noVFW^J%F8_kuNM9eBcQ1gp&LV2Qa6EH-PwBJ&e)pt%p6 zY;FZVV#X_Jk&&1um9UkNP#*$o%!6Q+c>t_5zXHq6{orUBhndat%(ix0Z?x2D=_jOa zRcWbbwOZ;{r5&}|{B0SNmNr_cr8SS!(wZBzwC1r|+GU9ri824QH!i?!vX=Hzr=_LT zYH1@?T3Sb?t^-Tl)~hA;Ra#1WL6AgBu*AfAK4KjDT~kIXZldYJk&r+;wP?FD~qkNvZlaH4FC#R$OGjpdj^?~}p$^>u4tn{Y59I8+ z^}d&U--PrInG|wk$R@^oL=`DIDtB$76I6R^uOfCn6R?k7=vwu(u+e$ITIRgzTIB@7 zU{xv*Mgml%wGoN! z-()C_rO%wellQ$RDNwQKt{%mLXP16ie~7(tD=c=}Vyz>VOsmXwtbeaIH`978-{G6Q zcT?@V^Yvxc?#i{XdRG6r$({;Js(h?`F2*YA&cM5~ymuuXsaO_WsOMS>>C5#pEVu60 z&*>fL$o?BG*&(cmzS3V?tE@=V+O#p}m{gOFwk!v`p}FQJYgx4p$>Z`B>4hzuDD~9i z^rd=%UW5j2v0j1&wre4_O+Tsk=s)T|VGVFte~gv&7sfHsribZe`k^g2*9Ejf+i31XzS-1-4e~R4EG{CZ49CBc`;-`CF=gVRx`ub)AUMxwZ6{Ud9B6L>!*4HHiVDsr}WeM1^u>u z$B0#2HnwmR(N;Df2i68cywMA>8&tF&h#sa;7X>W!&cl-IT5RC&G9A##oNuPn2e_P! z^WN(Y)yCTR_0{L8SXz1&u81jdeS7A^SvJ-6vRL zIBl`s8>CCI-K*jYgle`Tx&iyVC-h%TPg7?uFl($_mlY>@TQlxx`o@D)+n>*~()9G? z&g;w-I-m=Z)!vzm=U1ci+JkSO*+wtZov^}1(}0bKVXe5kc?{RX=281he7)Ghm&~Tc z*LLgc=@!p+1fD%-pFL}zNeC~s@U<)8Yp3<~e2Zs$0?%Hs&vx5q62g`M6`^{m>47g) z=CY!4u{s=-Cz{bme^OQ`dCPwv`tT5XlpnF6r;b(PL)ouwxCs#nX zA@^jpT=;kuK4!Wj1G5+U0waC)4Et=KeHPH@m{;u6m*uH^(ZgH3kEQGc`j#m{JiFyT z$>Uf#DR4YC(DR){x<}eJRS;;2*C6d5r!60{vNg)K=W^tP$T^YuuFdM*Hn!>JQLOeK z4@%Fo=)2O;@D(uPEMr7G4c%S?W6c}UyxdK_*k<3`0l#(yO6~C|sRgc^l%`8b+FeTW z#iic#sCSzveU3-T?9=+wGHPD}cz($6+MOA{*~?=GI!(;U9k3wKS}UETj6 zz+vEBH9$+cn(ngEk~ZHZq6uxjYm0WY`A+Nl<~!#ET2$|u^D&yz=DT+pJvQI%Lzmio zw*xI}^W9dxIOuL88q?-yx9etW5#_8xv)cS@F?!PGyE*7io9`x}V{N`G(^m%F4MFeP z{H!;c*XFwvy)x)7PG22#7pkw}PN`|0n?|;U^Bv3wd^^XtFnllfq = ({ {isOpen ? ( <> {creatingPoster ? ( - + {poster.type === PosterType.Nft && ( Date: Thu, 24 Mar 2022 17:00:38 +0800 Subject: [PATCH 30/37] feat: pack event (#475) * feat: add pack event to home * feat: add pack event page * feat: add pack event to issuer * feat: add pack event to nft page * feat: modify new api structrue * feat: add new ui * feat: add new pack event ui * feat: add new pack event ui on issuer page * feat: modify new pack event ui on nft page * feat: add share poster reactnode api and add pack share * feat: modify get pack event by id auth * fix: fixed progress * fix: fixed pack event text on nft page * fix: fixed share poster failed * feat: collected highlights * feat: modify text * fix: fixed share url * feat: hidden banned nft * feat: add pack event special model img * fix: disabled open banned nft * fix: fixed collected icon * fix: remove `/` * feat: add pack event en text * fix: fixed text and icon * fix: disabled pack event cache * feat: remove `collected x works` * feat: styled banned * feat: add no pack event text --- src/apis/ServerWalletAPI.ts | 60 ++++ src/assets/img/pack-event-collected.png | Bin 0 -> 2017 bytes src/assets/img/pack-event-special.png | Bin 0 -> 40640 bytes src/assets/share/bg/pack-event.png | Bin 0 -> 346198 bytes src/assets/svg/pack-event-collected.svg | 11 + src/components/PackEventPoster/index.tsx | 240 ++++++++++++++++ src/components/Share/index.tsx | 55 ++-- src/components/Share/share.interface.ts | 11 +- src/hooks/useTrack.ts | 2 + src/i18n/en.json | 32 ++- src/i18n/zh.json | 32 ++- src/models/class-list.ts | 6 + src/models/nft.ts | 7 + src/models/pack-event.ts | 61 ++++ src/models/query.ts | 3 + src/routes/path.ts | 1 + src/routes/routes.ts | 8 + src/utils/url.ts | 30 +- src/views/Issuer/components/empty.tsx | 4 +- src/views/Issuer/components/nftCards.tsx | 26 +- src/views/Issuer/components/packEventList.tsx | 87 ++++++ src/views/NFT/components/description.tsx | 18 ++ src/views/NFT/components/nftDetail.tsx | 14 +- src/views/NFT/components/packEventInfo.tsx | 56 ++++ src/views/NFTs/components/nftList.tsx | 15 +- src/views/NFTs/components/packEventList.tsx | 203 +++++++++++++ src/views/NFTs/empty.tsx | 5 +- src/views/PackEvent/components/appbar.tsx | 60 ++++ src/views/PackEvent/index.tsx | 271 ++++++++++++++++++ 29 files changed, 1255 insertions(+), 63 deletions(-) create mode 100644 src/assets/img/pack-event-collected.png create mode 100644 src/assets/img/pack-event-special.png create mode 100644 src/assets/share/bg/pack-event.png create mode 100644 src/assets/svg/pack-event-collected.svg create mode 100644 src/components/PackEventPoster/index.tsx create mode 100644 src/models/pack-event.ts create mode 100644 src/views/Issuer/components/packEventList.tsx create mode 100644 src/views/NFT/components/description.tsx create mode 100644 src/views/NFT/components/packEventInfo.tsx create mode 100644 src/views/NFTs/components/packEventList.tsx create mode 100644 src/views/PackEvent/components/appbar.tsx create mode 100644 src/views/PackEvent/index.tsx diff --git a/src/apis/ServerWalletAPI.ts b/src/apis/ServerWalletAPI.ts index 40be714d..2a9f6ca6 100644 --- a/src/apis/ServerWalletAPI.ts +++ b/src/apis/ServerWalletAPI.ts @@ -80,6 +80,12 @@ import { } from '../models/red-envelope' import { generateOldAddress, isPwTransaction } from '../utils' import { WalletType } from '../hooks/useAccount' +import { + IssuerPackEventResponse, + PackEventDetailResponse, + PackEventListResponse, + PackEventState, +} from '../models/pack-event' function randomid(length = 10): string { let result = '' @@ -1170,4 +1176,58 @@ export class ServerWalletAPI { } ) } + + async getPackEventList( + auth: Auth, + options?: { + page?: number + limit?: number + state?: PackEventState + } + ) { + return await this.axios.get('/pack_events', { + headers: { + auth: JSON.stringify(auth), + }, + params: { + page: options?.page || 1, + limit: options?.limit || PER_ITEM_LIMIT, + state: options?.state, + }, + }) + } + + async getPackEventById( + uuid: string, + options?: { + auth?: Auth + } + ) { + return await this.axios.get( + `/pack_events/${uuid}`, + { + headers: { + ...(options?.auth ? { auth: JSON.stringify(options.auth) } : {}), + }, + } + ) + } + + async getIssuerPackEventList( + uuid: string, + options?: { + page?: number + limit?: number + } + ) { + return await this.axios.get( + `/issuers/${uuid}/pack_events`, + { + params: { + page: options?.page || 1, + limit: options?.limit || PER_ITEM_LIMIT, + }, + } + ) + } } diff --git a/src/assets/img/pack-event-collected.png b/src/assets/img/pack-event-collected.png new file mode 100644 index 0000000000000000000000000000000000000000..410e895c256b0c28cd4ddb543d1e90e80ab9aa49 GIT binary patch literal 2017 zcmV<72Oju|P)=nYJ0;+-#1O$K}*|8}9 zZ<+Cg5S?JHj#fYLM$eZ5n(p3wuhNl&0%{8YaE$?iKsm;QtU-?PX(8HQ)B5^_{|l&e zZ7H`j{Tf6+0aPRyib9}N5TMgIOQ4QSs@VP&t*@jO3@Yz6udzTU0j!&cr#w&!g^UB} zqGn_FZEb(KI&aYQ`&;iLQJo^R#Qk8E2dX$31R2VpF|d4V>4V3+iUv)e+4c<({S88~ zU;q`kXrQMZu!X%(NoMuHS9bpKqk^ER_nOxzj=V2Ki}LBv30tgp1*)*Ng>G7kw%*b9 zic1E{rO9_%%9I$#h14Pu1rY^-0z1aJ-w6`W7 zo!DI-3Thhi9E-XqY;pTx9$3yZKWrRHtU~RUgD6?D(Km-#t)qDLGl5&5es}x54Eac) zBJ&HBaLtB2r)*gZ;%oPSl!2)$Co$E3I!F>)No3>lhhDtk@~8$5ik&AN*5?`9-nAn; z|9laJvgJFFX#4?482|t)^+lNXBUKZYua zhxQYtwX1U5Er75E(I%Kph&CbGg0Q(=38<-Xpisd;2`UJ&`gW95t;pM*RV-}+R20G* z%qCcy4p#$J04$`&}Uyk^yhx0M!X*B$aOo2n)s@#Rfw-_$IbJ(Ey^ObPSl4%#0eaG4 zQ9}ULI^Q0hfD|c1Y~>?})$asI`2fo6*29P|M|yG)sw9qheM_Jw2fL5p*4QSW=fY(h5KY{P_?^wZzm503iOK6-Za4=} z1~zAaIOedPGeFEsG)RwDepsJF*R8EP9JL*?z8{DCq%<^cn5v*5Yy746wt&TTJi zuea^Ljg^h*57p}S!?PmlWWF}fTP`QBe}JK$V-U7Na%BnwXAZ$kO*nMshPB~5uucP* zO|WI1Xzb`st4uf;zYB&6XrM(P+C*~T96s-Q9&Gu~yoNqLhSd1K9f6VsGIN3Bgkxvm zxC{_t^Qhf8FWdQ2k3gLc?&>L^v&nqU4E18L`*0@3%w1ChXEA>DtpIO%0>umGjeKo^ z+3MW%k4 z{M@cgxmxQfZLZD+A{w_fJqB}n1f&1z^vucIY=l0OMIYMs)W8#2HdlMYV@v8thvz;N$hR=YIw8Ww>sd9B7?~%^6H-5HSbh=AKFZMMH_Jadz zvoB8u)$afU{0#*$A8?I!U6pHy;>1 zTlBGG-|_F=Cy-7Ny(ITw&o+4s@HQJh1F~}hVfC0Mez@hpSogdSazFj^cUF_&B#Uke zeN6~5zy<3M6o`9wg!z2LvUWHB>Wga&J{s>o)>1Y_mCq7*pJ;7_E#`%_wHRbTHW)K` z=y?khPq%g;^*^2AXRl9Qey~Zi`K++sCBo!bEaasuZ?hr7+$o%X>i%C&U;a}5eRJWr zTh=r4UJ-s&m}`Pz-GSzqGbW->Xvoplj)@ENS$E!`*{ipsv1GbhZ5A!t0e!cKZUA$g zh>p*}O@U=lL|+l+%bLu$m+<(9jU7lYWWE0ajKUxn9JICY00000NkvXXu0mjf{bb$; literal 0 HcmV?d00001 diff --git a/src/assets/img/pack-event-special.png b/src/assets/img/pack-event-special.png new file mode 100644 index 0000000000000000000000000000000000000000..86c4b756a383735a090bae34dfb58e338e07450e GIT binary patch literal 40640 zcmV)^K!CrAP)>p1!@$-uvt`bia%DZiAPvZ{P0Ir%#`~&RXBFKEjS}Z++`q zZ#Z}E+>a5_JDK@mW`3B6UIpMb05DfI5_y%nfd1c{0M-9lkfHFywTLNjI(!7Zdc#!2*78F z=pSyk+h2X+i6_2$tibNU2Os<}fL{jiQ2^b^_jQE=813!4Sw_P2FDJ-&CEt1gzez-Y z`?1F!`}Ac6yVt+|^?#O#{w9F;oqR7>GN92bV9)sk2(Rqh?*jPGzVVH3d}^;?cmMtO z-@Vyv{u=b=@ZQSSHJO%Z+vU#VE5pI z5B?&6{{_I!Cx`x(%GhY$Npc(s9?u0uK4E~b+}jx<`YVq;_Siqz3D`aGzysHIUH5kY z{5vPd`pN`1S{=~lY-~m3nZ)8w!0(lIW9I)!DfOQ`_Sj>WRy!Nt@|L&Uc>hgPp_`fcp96U3 z$?<&U09-q`(Qr$21s$wx?H)J1j!%H^m3Dii@B2UV#1l`vI2r70jP8>FK6G*%uLOXj z6=dv0Ox#h(ZV|@tLQe6OV2r-cQ0~*o?Xune6|MDuJL%f{ z&_fUX1!n#~PLAF2VsWkPZ7Or4`8s%2a-4{`jwq zo{MjM;~Veo`~E99siQkKGPRC9Gzr{jA*j*Lo;)4#X4TeB?ZJ(}k7r2T6X3fHw=>)A z_DxSd`Q+188Qb^$e|G|O`<1F=GBroN{C^|*EtR1o+P5rWF+-WorGirw@1(a*<#5Am zqW6+=x3Jlw%sr8~d%WFpaB%RqtJhxJ>-ztk9IJgWxv4U>jloT2Zp&L?X)&2=XKu@A zUsHKWEAv~#`1pkB?PZ!z^k9w|RAQG!Mj7B_07o-{jb?n-%Y|uFenGAmgh%Kj@i^-nV|q$ji|CE zzv|b$?sa!6rM{iY+LPNJL2jo2M`M3l3Cw6!8QZ|4rag-%vcIPIT?6B*u)Tcj?gaE! zylu7C_kHu5-+V?{s`pDLK(_+WMJdbpaVlk03#mYo_(p|nZSQS0M97$W&Gn*|1 zzgU)u&F)A`;c{bEHkZ*wuCRFc{PIT&pPecf6qn6yJvUso_~f?uwjrWl1VZV_$4`#Q zGLWMcKrUM%l8CV~z)|vF?nQNAtApAIChh4bzZ26yuzc0X_MJ2WU%sSeDd^D&=&f=4 zIRGF#1?>Acnf5i0$z?R#RJmG{s&$D<%}I!&0B$W~*>@0+cknVUNXf>Harr?Mw_KCB zljQA5aq@!O;SD$3aC&q8{P_=@0Npxqx%nVRBLFx8akL!VcGlS6kmYSH9cck1sy!wB zA}sh(_4(mJ`AImF;GhApiKGT+V2#q!6&{>Roa_wINjz`H?bO+`XWzF0@UD|%F_q0x z0sNMM+$0v)1aLF~2wR^(t7l(n2AXn=KvfVd0$>C9m4PpxZIz%GzncyD{kHGOi`i z%N8ex!sHXs8^0-~9^NqX!*mh>oep$sGP#K?j`BM=8{BBNJ<1NTZl;VaeV!};7CJTZ ztZxMPgv`yc&XUBP#PsarX^kGy3E+*MCd@yuA)>oZ4#g5SwUPzwMSz>g&wH3MIT?L`TVnV>g;<((ujvbUQy zI4L_R0$niy(U^SLImpcbIGPD+mout6W=_DP2+7&)FqME$GO{}G4Q1|{pvRWc4aq(8 zkmU`f?FrzC+chUGV#pT3YW$9h zQg_JqDiXI5^jeY_1`9I@j11rbC&kFXNk42;rj=^t91W6nZIBxSxSfGp@ojg+`)CkV zn*@kuCN~7X7S^wN@*9OxD6^O`cYS2y5o zu3nH!z^WlO*DhJ960d6jxkW6FYD5m>m`F=8Y40*Ndz>hNz%lS60doc5N|s}tyIvUM4oqfxn7k*hSecvk|rx!^{-!L+Hs*=~22 zUUVA4uK;}QY_Fkg%>3uwEi zcD3#jt^!~?__YFGp6xY&o`~sXL9a>L29`Hgmvi_1*~xmxdQ z8^E<&5z`t#M#~|Ov-GJA5VO7gMF6A()OaHB71-V^(8~j8R@#Pt%CWr0*9(AyE(G83RKN(t^iDvL9Rint^#na^D>U>g)D)(767DWz?TQTMB>f`y;R!P zvbH&vmrGt$W$o3`b+Ngsfv#1yjwB$aNY-YMYhZEJ7+m%Bv=hcQHve{Vd~PP&AZlTN zoCm%vn+sHm3!qn%xTB!Q5s8~1Z3`LOT=Jrnt-Xrkc$=#c=*scA1#E5~AlJg;r~%++ zf*a9P0GlOV8}?IlCUE1HsRn+W2QDt~y-94Z0rZ3(ohEH#me(R{L$>zn1H8=@4|J=< z=Y~L+V{=ppJkhQ}t^wet%2J|T0NVP%IQ(4W3w3B!N8^mI!1kEd0ll<1c_?i&EYA}| z8kM!xINnu~xY%6HK(|=7PGNI1L5?P~p6LKbtr>wa=-CA}j?HAvMcZh&f!e~Q1;E!L zaa%xdkboFS+YHN_AZxSP+DshpN(Q{m3DD6Z*}7D+t^;z@0FLSbwu$k${g61SfFU<* zARL!^=CKv{hHTHBVwq3vaA}gZ6_%IF*pABDOdRhj0=&%?4|EgbbCYFj zh0Qff)=41O&f;1DZv1J~_9*Qd->3p&Ts~$a;3ruhbN%?FY;P{;Ri*6+%gbeKtFm@1 zj+e>QUWtIWx$1##Vtj5oo2#&|O5%ZNo>XlCxcXD3&9L29?Q0ADoE zl?I?Uj1Q6pw}LYY#k7tZSl%>QTZ!XkGPPGS;B8KTZiZ}~$mYtDbpn$ck*Z@L*IEO& zCa}%f1kZdEY68Fv_>BVJ2~FjR|?>5u4JGqO3)PO7RuHpHdl(vtqgL_05@v}EbU*))`p5FNWv4qZyE5d1$uEj zFPF6~vAkwk8%fw0@Z@XqEoN61;BBsGplc~DnE-UFvbnWEZUum&@eS@oy3UrgB}W<_ z0YI7te9XH7JrU2F$ntWsm`37wDc}vHaIVGd3Ie>%)d+OuL_}kJt^jncY_61iDB(*9 zoRJ^gD=$*z4CZUjKd)CHn&Gw{_$7LI`4 zpk$?##28_D6J@Q8<3$oRm#J+4JX`@ui_I$?=x9Ztn--rd7Z;DSxwSy9jm5RHxAwX@ z+BK;I(xKHkSfg(9Ms}En#yLL2f3Cqed!6`vkPP0Lu9bNeuw01bp%Wmt%Vr zgXa{`;{*Ywu)G#oo0gd%dEFww182ax0(hnQz9(SUc9N$jG-W|yA<)f@&(X5tVk(tZ z%mKLt05>;2M{A*0dlav}$qWGUWZ;WsZkxm{gC5yTXO`t56AwcyPt&@*<~Uw4aWMh# za&>q}dTBB2-Z%lf8S*t-08IM^x>|g$26Qtd>jaRivA9_PM^mAS<|1GF8*`nvl^9qa z-{t{djqTMyZ_qZDk+y-+Wm?86EN^ZcZxz6!eBB-&b2+;?0lGGzTT`}XC2MX-_Y#n6 z0k~#xTQ)FurYZZV)Q;m>+ys8a?ZB61drhFniCk@ywlbF2B5SL0yc57X-e5;mURYx` zP5T78+vWK72e{gxpM8YyTDQex^p)GeZw&ZmfnKI$WjM1nFKy#kUQN~x z+2Jk$FJie_z{^S4;|F+~;|g@+MZ@{Bi=6^puB@b4wyq#qCxF}-z)b1e8TMNak_#Wq^h)~gyHQO=vw6N1U9!O$c+J9dzlICjKGa!DhL2eGf z(V{MionT!;ziJsIsEUzqU%W=H50WZJL8P*0K zVSC31@Qzu6LM*xF5|c7uj5!Oh4s;E&^;m#hE5OklKwH=3sk$|lVb_|yq?E^1GlP_k z#km=*T#E70N}!jKwiTAwBx{p6-YmeA5_nP}F&ax!N(qarl-bqdbjwOir~rafv#!g4 zj!HnaB!MvjngVF6Q#;BJ6r;e?$kHOS&;jZwgb>(CTgy1uic3=V-=J$L8{eA( zdWBgJ1@OqRyu7U40pR7bv?-{`zsx8}!7+^AZ7w&^)#7xughaW-WVl{d1-fh^q6StI zv$VCiB`pCtYKqg*4D{P+!h&QxP9D#YWFVzH01{bn6B3v$(COZ0FqxqN5EL|VSnNE= zQH+D$AbXpe*;;3LT+4js;&_>v6^j8cMd+MeRJ9}}k+8=wez$k9t2Owy`?R%}nCu2Q`h5`F$cC|$|7N^SqNImm< z{DH1zK=*WzTL5rNz^zjMGR+1+W-F8OBQnR`u{WhG$f@wSqJS0*fHi|OgEgQ#U<*Jo zL2EW3V(rL%F-p?SKLzx1(l*QTsE?%Tm|Gt%XL-+xT)FOi5MA<6S;rF@pXv@Vkku*C=YUq3~+Ty z$U`S#70_#f?itV;8^!3gdEJ)TzYpv9cynxIR|P%J%D)QBE6LhS9IuwCO-oaj0A4K# zk?PKzMSKp(qx!qc+&{Z#X4kmDCdKK-OH6hNbaUc!OW0g9lN$rM%Ef~SxZ`HRowpJ0 zI<0W`ZG<~-Q@G<6!p+w!Y&zijYY3+{z`=%a{WS`m0$#po)`a`_+(pLO^T2a2X*~C$ z#`j)gJby;x=@&G<{alY;=f3A~%za4-5y(ESlu1B%kP~31h(L;=#HwayXa*D*Tl?Xd z0Y!jT45clwaf)V1ERHHnk7+%Ymx<#I5*H)$UY7x0+1sv`uqgM)))?J>>D}JIj;M4c zr+PizXq+wwsb#be@%YnQJo;3R$DiIp+tLv@Im(Gd zRW>fC%;SpOzsdj|DI2q6ur|y=GohDKsx$jR+Pq$C1CUIna-|4*8F@R6<>f%6240oK zMX@wx9^fGdVi-?Yl;U^8`a4mMf>JDR#~AeBgAek4fR3_~kDBV~+T(OZ@FH3iqZrf-Z(xYM52A(1KRBz?B*mTn&NacKTbypO{_k*g`JJLvWx&-iz9MPverQEzB>p%`=cFx z;)e-0UPq$;DwUWypc?|$e4wMu(3(8ZrTca667YLpIl^cDL7Bpkwhj0Qlo?_4vnsa0%aft~X^Tj?s}0@5pSIo?&-dGjwmku4f$ejI9N_ZEs|) zXLoi%YR+rfR%zS9@^%h*>Av$kHdq3&)#WVjw)SqfU`HhoNfviazD|kL)!1J~zS3B7 zVKty@ldYp{t^wrkzmxFq{-nZ>{($oPzb?>a;&BMU~NS?yIXd*GqBril@z_n*5&rT=2|x3rovAfL z3(%1`!3#jg6*jgM=qdnQ0y_D8tqFhd^+SB(a~E*wh;8vJgRP8p-4hIxr0BI_c}F%u zu{{EMZCRd;-EAE!)EF|K5ox*#;I$+!W&vIyR<=UI;*}z2_XBn{-?=PEl;!KJINjtD zlidMbHQQRSiZ8J__t^X1O!#a6>IQe*iV1+SCeRg<89dC$&e^XV(8<{2+4CCz*S~lf zfBfWO%1L^INFA|oi=sHzVjko9Nf(E>hiQDj<+koo13u6$M5QL zw)h#6{oe<>+X>jU$kJ9;*D7D@ak_axR|D$#KsT4o4Vmr@*8+d-=Q{k^cc?tOnguA* zG359Io!qa_J$e!U__Jqm@zBZGu#kN0&dSy!3w+xx<4D8GTfj6~m}CXp1V_OPIS%+Q zWqB(AUJ4SE052`MsR3S1&Q4%=&9e7+gWZgzL<9R9XKEAUbQ6*ndj+}%Hut920RQ>F zvB5p3sRDGBdbgbe-5{sE7=Tlt8ze-S@cc_#{Qdv;44!%MP^_o`Tw23tWw-YJb_*+I z8Czy(o3QX4k%w}xmE~Ptz#B`LJeYBnHz)^V)vBJ;6Wbj_17 zuevJhb!3g!{1UUTsbI%ix9;@m(|=<%pi4nu*GY+$;&iqB&VqJJOs@s#VwlUE>?E-c zM8IG9n8JVfGaWYF44~t9=Z3|?1=;CQtpaphk)6?g%>cS=Tv2?EMAmLP!VkXgdK?}y zzV+OZ{|+5la5Ex?otdG-l^`5Oa=;Z|uOj5jC!}cPJV-Bq?SMyPfQJf*Q~+-Py#>eb z5;_&vDO#A%IwljlV|LA~j><0{Y4WGSfvH_F#^Q9v)-0@0ch_=)#{@3R<`e;c{TDj? z(ub9aC(Q;rtORs48R&Qh(<}oWvOwpyp$PcN_uPt)z5C|qyL9$X!4Ar?Jj3)9jGId2 zxI^gBbe`<=Umlaq6$TBK~Mx|J0-%Gnn#}w?!L-wd$veugXC(76S zwPZ%-wFZin=Qf|%RA#6W=>F5csPI!iObHmQ1#~n3lyRWLWS~P9=x9Ztqk*LUzz^Mm zkG}iXC?KR@x-X2W0L*xxD|tnyqM1H8g|ZI!bq ztlw5?yAO7^9Zk$zhp%s=#kDvcnkYSuU-2+AM%NIZORsdl{PPMQd7H|{vDN`P z6ai%#(9sN_!zw_>m9m)+z4c~%Nqe>ri z&1aG3#qiLgU<&hrD~_(TP|i~IP4d+h`(}4)J)E1y>ZT_p=E>KpB%P6YZ9Xw4pUC-4 z@_+C%3P1HDsvNNALLy-e=aR`lhf$zow_iMsX^sIM3P9(M?ML2uE8hR+n}t`Nle5ky zN_o&Tz~_<|b66fYr4J zJIAv*Q{-zcA<;J7jMlwkXMpbK-{0ZqKR~0I$*hcA(YfTzdB!s@FrIsn@!VO);Su4& zA*0uX!>w};R=Dnz0gjumSGes)^Y7`K6kc^RCH=YcnPwH}GTJltgqL*`8W!{mvRnnGOqgF1S&QJTR#&dB*v_W}JX?R_O4Cpta{mF)-$g zCuT7JDO;-v1_r|LQL(v9GlfjP)A&kG6zIpVIispZ56Lw>2Jr8n}4G=sIPC z`NnZXkqzc64l^MvOLEfA&5JnLDBN?JaPRF358c(_4fiOVI>>-h73e4$*fJI9+~Plb zevAL{*S>?Z7kYrrJlS5u|7^802(W##+SK5gwlib&IaT7VAs&>KfBaqq@$wMwuuU+1Ecb_G4r}E&=KBv5Ab*Ys=~FW)Npa{ zz`2AO_?J&={PrUnpZ$|94!5S(Om#MnrA*yfh-uk47hFA>Db;Y(zMPGEIEHqntNnZ% z1w8O-g?GHJ!`trPV6)i|(7E5A{O$$(ub+Gxeb0WZq60eZ`exa5R2*#?J;T~WnXPMt zc@^arta!Dq33$zIVp9r^C)q*G=$M%Byj__DtN?ZmtghMBq|WMEYwAk-QQhCMINhFr z?v@*XzxN+?xZ~Dkjq@$eC6|tX-~9X*|K#&qeE*Cw#w10cE)>_Af?Eo%z}5<#l&um} z;kf!Zm<-wzRRcHIonpNE^&9-yn-6f)bur(1coRA-s_kTRduQjcyBhGW*j2Gv26TwyV-|)AS=!O; zYq_3o&KO6OLVXQDR~pOsAAej;1iI-B{o5Y+XJ6{^4}RweFP=4}7n_ap^BsIQfvY{U z0O**UB4yZ|KSo24qX_IuH^#+7;CH^d#b+Pg;(ZSv;DbMSfNKs^Hg?z!bmP`hAAZ|u zJo5O<`2I^rMt+09%4F<18za)T@X&d2~O1C^w`ho>@_f-7TG0v8aQB){NCn=#)rP)3l;|9d%-< z$?kK&>-BN|_FXjUsd#Wgb^HTS+QN zT2gl6mt}*_BHhl5fI?{d5XHIShoj#$15ZA$@r5V0xck-)r*G&M1Kpq%P8?6A6mGj| zgGavka#&q7ESfX3DM*a}BQu9~pqfM0b<|v9jjSv3#;@5BPa*kMBP=!YF^#~?7(`sl z{NgfzU9&Wu<7!fT-X7%ZjD*CJauoM|r*8uO>%Y9gwFmQoZcuQ{vEk*ff40Zp{k1L5 zUbMhQgl>49QD8h zukOrytpap3kovdZat)sT-X%Q$(xLqxEMFtC4P({>Kzt4Cc?gQ}T$BKhuq>-zwG68i z9FLTvRM&MT244px6ej*?tQnCfGi)RbR~8|P$dTjHx& z)ZZ*;XR=bkdQ!8QdH{v2>7=@rltYih;xa1 z?A#^7fAOnZJoYrOQ9!pL9CQZs49F>LEXZw?jnmm=gwMKCSlo)_2~$r%j7nDrm^n!+ zF5`dtyvG0bne#Z>j`ZL1_>7C}@dEJvA3E*9PR1RTPtX{k>&X7@eE`frZ&GE$*CxQD znmVM$!SIEcaHE{126K*@`WYuQ3uAXHv{9%f2v=uy`K#9m+&8njGGl7g_fx#~Mx0pk zSK5Y?55R}tMtJyMH4*4g1Uh$LGvR;!#1X#zJo{MOff7v4vbfHIoKghZz-MHA(t(r< z%>@P*BU1seMi8)&oy~3U+uzgpKY#CnDD}wo-;NLSDRrVeaOZV+?W?czF;vg)I+u|) zOgF?ZDO?ELLZWGaSGu_7*H5d%$P{8Q67DHt(@b_ZBI8;}4J}MmOa{C5Cf$NhTMamt zvbxHbKr74FabiiMwmb(L;NSZ3%}PKQ%e!CsbdN`#U=MPej?1GDQ~PptV} zbq4sP>8FozT6QOsO)Y>&BY=l7QnQkrC2AxUE3vzhBT5?@FH2OcjLCL5i%X!t3~mHz z{ucd5W0ID$)hH}udiLk{zIF+ZKf7%NI%)-g4dQ|c7osDnWk{rkIf;uNCaI^rYO{tq;a9g;rx60XKvZ7TL&0%*KUvv9NRH&H<*S1fi zOfD}6TZ#)Ynbl2*JB%l#n&Wh(IT%0v9+fbT~AGXU_3-paY6P$4q#`y*FZG z4-Pp;7dTUdq$I^AcVsCFsdQaa{j{X~dD0rc8<(>ak`-&j?oeQNlW<@Hhnk3d&0yE2 z1k{3XICzsRCE*fsM9*-7c| zj;jqYDVC_w9~I@35acMGuR_ktR>|seRkO0RhD8KV6s2x8@Gri8aTd^V)@Z=ozh=|n z?%S^o@iz!YYyod0imtmZ#Pf)h;ogdhB^^ZvjxQEB@7FJg6tj1|qzfR*EmA9=gNwFfHOpw44`u7v^7zwvpEi}$k8#=%3HYRXM1Bong8XkCgXYEdS5mjGPy-0+f8Y)?p3(QF#Bu*1wO$hAgs zV1rCJ+!DU@#HIScpPKc1!8+=`J0!ESM@p3DkY#w%5vH>e7cfZ+KMR<~h)q3VF=t+D z6UV5PqD*9WrTuM6FsziQSQYG69e^>X+ysq*3ecqY8L+ywH!)8`DYGpzjpqFd>>|OATF#WNbPn&`}yYX^WyV75S3`xr_-wnw%KWwm5EQK#vV$ zViw5^#vgy{umR`_1;+)Cy!-CBKH6adfo#IU4bxVV;feB{P6hdEiD5B*SMBD(dUCer zwlkUCVFtUKy!NN#NUM}pi{6dKSSYn!8AgJWG_hM^Hmhr8)iWoagMfFwk#K5LZ%~i= z2u6VJ=!o!pU(-HhMupB5nH=@<)?eXi$mE1nCD}Fx5;84GG6-OlaYFwC5=mD|@*0#$ ze6Ww#u}xSw&?5lfJ+sA27kC8d&69&RwWg6w}GT zu)VVr5*DL!wmq5F!eAz|I~rNTSWt$7(ma~R1G663&6BW`;&9bi0j6C|_Q2|pyJC*W zS4F^kA68YMi(Xjl_Y6V#Kl&!){3VMog)3cbS+4}=igfJ|vXSOv%8jcHgT;}i7>1uWmUrkU?%mP&@n+%pGJFTb*(2) zS-!fg-VZ`Xtq775!J+#C(EF1SKq9acw8 zLErJj$z7)v?znkcLw^nEE*ugb`!4&ZD#;WhMH)&?qS+8WMrT0K0bhJ!a2qGoXL!oz zTQMGm;n>d>2!C^+Mlmi9Vt4XL1uJ+4@YD<2aiHUJ7$DcBa?1?|{=MAZv9e5)j4eHP z0HC2*L3NA{c6bjfn`PG4#!Z>$5ql$pfgO5c<(?Z^SUluhvVMzw@4SsWalY!Ou#nVbF%IYcdrL@0O64* zHMYIEuM*IR$`izR!vJ(a)`oyO4TCNY2y+(|+Y<_BcN9&Wp@3X+UIM4Nh@34K4~M!W zpO39M=1b?cIDe6G{WbZz#i>9C5N^HU)L@;tHKrKQ3LtGAoDm4B>J&EUqwkD+1`{D2 z14hYg3N9c-e*Qx|v!MnyP1(nt8EZCdu=M_oGb*OMmui);)53z&YU?I3zoq~xHB@)g zw6Yj#|G3e%Tr7lp)ZUsKGnZDJvB<$3H z=fnfEl+|G#tBXzwku*>Wc*8y22+$#sV)famk3Yi#=s0To0#U*?6ELFC78SrR+^1S` zt4TFtIP(u)CV5aJ25Buo&jOZARAh`3SjO;@*??r+rj_KQbv{*`0sB07UY@ zW`L6Ywq1_GJon7`el?&2fK8_c--ZJxe_8PZh?Fln4kanUWP$wr4g=6sbFHq@HEIz_ z^~`J|XPKI)m{oJv5_6}Kmd|x#b~K-Gp$&1SQsUNw)U-pBQ|HuVKSgPH41_ywCfs(T zYHH|@fG(2&U;uymoQ@@*nA;j1IVET&NF*9W|7rwq$nUex znPa0s=%WDOZ=q}bbv}qwMZGo%e^=X-e zU0i8Ri&@>2D^hILZNB`j1MWVJ)qoBleD{U$xDp^0Cnn%ya}MZ8#PVFb1xXp3{T4$; zAte|A4_3=??J&BLmjv!bn;*#z@E<}95+JwcPUJ+(0doF;TC zA7eA?L*)okkAOrtfx>Ytn4<4?AS%c=$OE)zzWccp>0P66QOqtQ9{p3>~0vl zYXPDmm<*pL|39;D5gNgNtF195YC4 zjWY>%+@vt(T+#}30PyS?&RZ}I7#%F5Qvv8)rWJwRIk%JWyJ+_k`2-fNTb{XTZGq1G za0GO5CN}IQ5A)55gv~O$%y)9Q?aRk&BGAP$Iet%-30x7$vK=KxZn%PD_`X{6)WB)y zO!r#7JZq&jHGTcg!3kO<`ZiPIb!#xRQZMXkvb7~}JK2S$o~~CifNhza0Xk*<<$zb+ zI^O3x%(&*;nV1RRKTDzzSjCo1GW#l}s|Pw2B_+c5LXylyOe_GLm8mY_01I&Jx*fDn z90Vy_xC#^H<*_eIOC>CaOFhXWM8yk3exP<8=(asa=Lky|XaA1oJ+;j~o1xD8^S)fxkXk~4VSW1MGq^OI>PCezvj<#oEV%dG4&u0#1Xxj1Im60ch*BWdd4 zS)pTNsztOc^YBHrZ055POs{IE-1t4?dv@E6Y9Y{tzrB3XJyk`6SE4T=0y@e7ok&uM z_?L^31u)V+0l_W_p|xjp#JL270X*_-FO%pc7MCaXo}Em&>or-EPxqYoyFGQFCIB5q z8TNLYWC}r1%r3Q^4^aaGv8}VSKU&+2ZAVbd=v{`Km$18B-Ceo-tTkKNOevePvU3<> z+&5QZpL5@2R-Ik5z^!P*a(H36j%}NKG*g<(*DC>h$~F93Q%65w+1Phqb1ID~%>z1s z@X`f@HZDqmPDR!72Ivy$ngzP>?kvkiYzc|`0rvoU&+r_}V=dxytivoXlG#ZdQv0LjJ?TiByDUh

1klAD5ozK<3E3((!whzslWgLF`zXmk&_3hp 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ʘI>}iVd+{Dy(VwI>5GC>DVyj*P9p7Wt@x8s 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 literal 0 HcmV?d00001 diff --git a/src/assets/share/bg/pack-event.png b/src/assets/share/bg/pack-event.png new file mode 100644 index 0000000000000000000000000000000000000000..df0ca433d58f245a705d425aaa4e061def6cf4c0 GIT binary patch literal 346198 zcmW)nbyySL_s2)8V3Lv+@(~cEI}AhwHWfyfbWge&h^RDzG-C)#4H(^QD#FN7(lG>K zz($T5+t|v0H)J(tp74r zaY(Lz+xa)o%>4iW9?}0T2EA8zcK; z-jj#M!3>q1>_vo%YDw`90bd(BCHSY>`On7U`qK{E0~QWFKMF-oKgX>k(#ddoPN1tp z;z1;KBLX+ILs24y2#<#@kBeVaufuw11gp%dJfoSHm<_@0FblQ< z%nCgGZ&hRlB*5cT{^>CMAVlp<+5uEWvdjPTvq=rTspn&Sk=>Mek?G2xCVsY?*JyZvM%zGzBM{cd$@&DVKO)83`lQK0vL}V z>i{ZvIdTp!7soT;(MK=Z$#)6JZ<4};{n|Q^$jv!WV-e}`$s2`~VVCx!Q}sqM%XQ@j zBnoG;`aM0#Olg(GMYkSevabA*o@6uan9QkN^|o2!)LI$wIau(f8`?UkhM!DqmSo7;)UA5MZaKF~Q|_-Sujh@|al!K@0zCgV+Rq1_!#oQz{}#VzYk8uy8u z7Zq-iB8$3LCa$W^4(8>}R#|?nt`(YiA70>OVlLh(ac2E<&96mvoHU4*P@NELl7J&7 z^+O09*vt;r`6=?dYNg`KR|s!EVN+0$14NzH}T}uV7piy+!CzpV^eBm#6y6 z9GDgy?{(Q`aWv6+l&cI1^xgpLFS-{`>jLcsz;;rYZ^HGqMPHO*#G|Ai;wgUBl@{Re ziuq!ahk59m*~T4}#m4jPiDSZD`ey@ki2jB={Fn1EzT&!641BpRq;v05o*qOd9%E@*@S z$1UCA#gc4SIfb6BP62I&Nz8@qU(H4D&`ztabq}t|}S?I;Ws9)~YY*SIY=-}ZSM-+Y$q*U9n0)rViPxp`GgA&z!jJI|5 zAI;1>O#X$6Blv~DZu+*sQT9LvPcj4F8j+-z@mS5K>lTk@!y9;KYH{lA12d8RVGWme zS9lt8oXm@P>0!cMFOI&X%2J+bDtV(QUK1?r>kmfQF3KGypdyz#P9udKoDy34?c#>P zn9XK>dSO6+eWHuJvpAYeW|@eU^8O7%s8{VHIMhWVs};8Io#ohcBht}nDFT#h156=w z9=adH@Azj|Gj0{#2p*9giO`9V?XWs_>1V6cgF9XX&whpj)6)zR z6DZX5nl?K_b#u?Rb?b;lYZE(Cqc8VfJZnr+SvdVUKA0?Vta zfQ64@j1mJ4*>xv?sG!^+I6*hehHIXMaZ)8Q2}O}|7sC9IbKL`S^Wv@MyKM3y?(oTJ z!g93*rjSOB)0@1HR2hc~G;a!keWp4F@no>HczXwKH5;ga-hltqs?Hg6yYEwq)=aOiwa*Pd5cZc{?tsCP&7pnnIULJcdxN-JR9yJa`0b zyi&ina-Tujmx{15&`-(0-P2qyS}!R610~WccpX?vUUpwQic#3fRE&6+t)*e+`T$y1ce%bn6^M2=QbmZF9C?zYf$j@S+ zpNG#<^s`cT)k>U+b*(t8S#P79K4dk4V7JQLa-&rgh4b4EA!hH*bgX_MSil^Fsi?F+ z7o{WVj`htxRzpK1g<97C6zCtvT_t0Ha$G(KP)p*o=*44o&AZ0dJKb@sy>-sk6+h?5 zcaj70Pd|(ys2xoX`RxgL7%ehuVE1x@wn>xtWjOH-Nlx{6DT=nD`{ z9!;%FXUg%Y5oshZegbj0fz1lQ+xl5fl*$s!GQNbal5DS^m_!@Vw7QGOv_`|y>c^2? zn%3Lvo6*7ugXWYI_ytIYq&UkV&FF`5B*-u%FdX>(Jn}-g8k=%o;X&gAf8YF`ji2H> z{V&^Usi*IsDrIhgN2|X-6vgOmV{xjupZV2vJ&aT~!i0Nnyu+I+uvADY@T{N-X^*a; z8>D8`M`I)>bh}_kusqOLBMG{Kf7<>uV`yrQBVJr!WA2&&-}R8e?7;h+jSv?>mKW{=)p3#1}iHr{ZHkRotkVugB8`(y)Rn)QA% z9X)M$I4*5nZcWYznI!Q0&TB5abR&)zrl0S6fB77V7u@^`MqFT2>I}*GS31m5@tIBI z?a=eN&(EYrYtHy3OAp5|*=5NYl3>{? z`;{a^RSk)S#o2sJkWaOP&wMvjR11*UV~hEK*CdDGk?wOYsR97m6W@7PLASl;+giJ3 zrC*GqDxFH@yD*-~k37yzcjAzyRUlsagzleBUQmO$?P@@oJ;izvv2th8MYum`KE5Rb zFV7o3r?a<1%9#uz2C;ccE}hQYI4DIV3i(4T7yjm+@2!@$W?%#zHwV9B4tKkQ`@!<* zTguiBVau0!Fwo}fjE!79M<~TY7!|j7sQa^n)ks_ZmlbZ=1uZB=$U7A|ps)wR!iokW zz`}&x7np?A-+n>xA(>*->_m(>3h)sz?YL;IL7eQYIKQ(DO~qB`2bKS6f3j!H*YKYS zc9(|m?$x~iNc3@*6=)ya@cRd_8<9(I`i|0of&@usp7dLUd*|V6wH-t=i01^0KBjmR z9}t?>$bKnuVo$j`&EOD~zUrvo+tq}y-};M~I1yi0Q!|!F_=$-iuGxRXTaHja8=X06 zsO8l~Y*Qn-J|f3NSfq<<1J!J+bbIBz{p!397~eDaMOh6+5A-BF0`C@R_BhUj6kta? z7Rmj#@!$I2s6w$DO#}{JU489)!+pNriroJ+izNRM7{2O|;1{Znw(}T2uJvzl50ILk z(fnfSl)e;)e$8Q0YJ2X72;hSAZu7?kgCIVt98U2KeKKM?(pve;83MZD`$6h9Srfh! zZoKgZ$ggwpx6J%!v13!8LjQoR44XsLO8LP-xLEPpi=iqQk$Vdp2__KFi;S3%cbW+m zAa$|A^cU{WyeE_jGv1?0zP^;Scex|n)v$OMo4zgPGWqYymM)F8!sbg&HYoBRFah0o z#{u_?hgNJ4vV(L;ZXNyeeZy7bf4&NcxJ11H`id>WI?rDHMrdv!7vUBzU148Bjy!fF z^Nb3DWeht^zHj}4aL?vkE519fR_I73-er$hT%2;y4ZR4TO!&g_G31gqV9i9NvDV65 zQv$O@+sH$!BI9F?hCpkDRsAPt}Ja%ui5>zDcu z=aeyb_($R4emy$RqVx-}Dt2R(JJ%2YynRZ8S{zB+l-9US-`Czb&W5D?2({~+Y{N{O zDX{>%61R;S58PrFEVdDl873NKespbZGrc+9c@=JuM+de(^Ro`H>ND!wGe#RZY}fbGN%+gh;R~#LS9TVjqAQO^}lR3A{_e@jZt9ZCFx8u2}bFFdZ!d*~5H$ zpGR&Z)(OiiQ#qanzkA*&o~&?r6c zG}WPTe=hZh%lnvz9-hk``B9HJu<>)j9BGgivKFO*E>4gLac*|ng`7nouDvsu<;TJD&-d^-}n?={}N9?$MtA8q_v zqlW_Q5obV6e3Pvk+vX`WUSWQ(~s=O?=<+5_%Sc60EC)?327$69Oy8Rh6j9e`|j8c6fy4hwpIF ziI>$ghs%fI;m<;hztMtLjM+n^5tw!OOG^Yf$Vq zm#dfxh(L49;zX-5;L^w9K8#JArFV*>N=cj2AfI2d0hd8jf6MB$`sT@XsK7dyD?C_p z$VIqR;aA9(Y5RY}73bK7UM40ieDPdSZ_Yd)Uc8ih$l^+40Ud6L0s0I@yt)EMrE^R) z54=t*``o<{CyJ-C*jyLAORSPPndYo=4?RY)M=v82jwGGbI)mm+_ENNx6MWb-yu}7{ zxdG+jF*BEr8KxaH>fC1@P$dI*o0Y$&k5XHD`|IoHxnpmi>sfVb|Qh0NbG-OKjYkCAWFc^Pk!ZDl&z>*1}H=k;tIMbn`eQ) zpz3E^Z5x(-CacUg7=kcgpb_!6xI_LdXJ>Vxu|GT*>;R9yCvb4j4J_Zre8zkU@$)SS zT&uDXSvSEMvE>4*Ad3M;xGUmKxzA1bVA`drbZ@!c^~nRI;lsmmzD&cdm;VH&w1^hj zNA&WrMtAJ&X&+QP@;SmCvbASrCfVoakH()#vFjhJnO41)3RG~d^4A%?`~WNl$*|r+ z;1^GO@1c!lCb+qzEMRbB-`rKxg15IC1N&RFm|h(?-QX7S!+1N|*s`i^N{7~FdF$0k z7K=zTx)mrKoj&*|!0-xx@y5ISQLRDd1{~ba{V!%bz-5*X>A^tx*%L0PU3c`2sI{iL zbh$7DP8O0T%kC;P?;FU=Y8~B69+CvH92qZSKO9EzT0SRjW&OzD(JHB`fS2+)3n4-T z$4{6F)n{Tu{9A2zBBsQc{V$TQ$@_N7v=h;u;Ggzu?x|wY4|N$FRy2Z7$*_EX13(`g+Gs3(~Z zuL#THy8DcT(S4JD>tCKP#Ru6E4Ine@*R^jQlR9=Y)M^rBcJ<{Z=B%_jFggsU^*{is z%PrR09%JILX+vl0>pR6Bd3ffVnHQEQY)*STo z?`^(;Hb(D@WgV+Cj}~ss4-Dw_Np@rI#SxVfQ7puMCkQZNynywm9mi1j(!-6Ob#F^2&L*$s5>E+3<-z(fn49rZ35jKuCS)0r*XVAYre4+D zk7bc(5@N|*B+%rzrzpTh)l%M189)MU!?F>k`J+8W!TK_b#q94Lj{=z{)#{%7eTf*Z zL)@XuSr(qzPWH5nFOapoW3kex#B_#mcgIwiEOel^Vs0DJLht2(oVrs+^|`iva`7K< zqKef_!`CBipo)s)y$9FxrPT5oTJdiNZ#LcC6FB?tenER+CsTf#(Aohx27qkx%$uKD zm1-;>dxfsDH*x^(>^N&Ki1di305vsBWfmstpNkz9i)WeC)fs+19&b(eLPJ-j^*X&K zIygt{VuIKc92A=PGb!|25SEUL?#UIPX~44rqeHO#VuSbV_FC&tk?t9fQ5idb8^ld9 zrR>71hpZjZPg%-T`C+(aaKs+hS0V)Rx6;+0qH-gjH&Sa4fl-%HQhDB9qfKw<*=;V5EcQGqPUHI0MvGr|MNJUPw%1Ly`y8jhs`d@?-*r%(zhB1Xp1`O-zkhp!RuDYr zzfErRHH9Z*)Vbdp?FJE!c^{NHv>#VE=pc%H+$}o9`Gt__J77P=F@3CnXt|mu1|3;Z zqJlyQZZ;?IZ;T$RnA}jG#Gf5ew*o_p&b2?q@-|%OBb|bEh+NGVfT|ifKs?>^@|rm} zw&FjSyEd=Oj}?^E^&7jTjL!8f&psXww7;K+@SsB-HDfVr~zkrv__;DC-fOOuI7HBaZFe!TQMON+<9KzrMDbFLKx|2eOn5r7Tx$ zUKuc3z0)l?Z~Hnu{%H`hX>3gfiQKvmUPm<4?|k`j ziGYtlld8quXZ!?KKdV@u^2vDJ_N)7Xu{@3s;Q@Z+6lopC_yLssDrw7cV;$y6|HY2U zxV^dOHg6dMpDerZV0GqSw}^ugsMUF;vYO=HIF||f*W#m~+LMOljCq)FuKYvN0V>yY z^-=+H2Y14EqCQ&bdHQu&JdFTWwvc8YwuUAw?%?La^D)ht5)Xc;8h>B)vZ5(OhInG~ z+`x*O-J_mNH-eO#zoHxGJ%eJ>>$I zp7xL6i_U7hIhfMe)Y4$muupXg@vc2>~PkD7B9VJ0`0bMu+RJM_iTY`K2Sg zuJ!G8(_CLc?i@xL!nYol^ub$mV0TSmTXG?KRzXA zL4VP+7z3Xl@%Ms%R&u=98zqDKuCD;QH~;d9ec0%6d#O2UBv$P?Gqg%xAdBUIlFeAe zkPj6^@cx1)ouAGl+ZI7*(=1OFo(5F$(|-BN*uo=W@AndhT6SKip`2-h>|cA()YZFVKFNQ6_#iaT*x$+;plg zjV`_A7K)-wnVCMoNREnAS*z@R_i%68_0E%+W7p4DvZgd-@R-c^2DKx)CY~D zS5VHsb9?PDhh^+w`tC?6lR`r`rbXvvkD3s~ms3}+rAaxT*qDU>B5$pHsDHc|51jxu zx?ibzw-p)aH_L9^R`$zJ`GkFhcev3?9`7=i?G$DcLlrcc7`SE|b$Qw^ZOfkefY`gw z$*RpHPgbDzy+YWZLy`-69~<%q<>tA!dxOYZhW`*?cwOxbLb-c3IYw}vp3c;q$E7~B zNcL*#gzu5Aa#D>yUPs@V5G@0~1h-jCyKi&Ct6iu1{zMps?42t11QDS;x`r>oABxI ze(zB`^U1y4mcCj(-=5sz$DU?0+k4rhw#DaTL&)U?n_uN`m-R{9J+m58X&^J$oHehS zgE$Y3au64=@F{;SsF&9Whw`9ElI#j7UGNP^!5WEtE!wNx^2le8()QscP zq}m=oA1xSN|E0YP@kDE{$`#zV61SM{)ga22zY_=rmo#@Qj%+c$B=5IA$K|(RKAGw? zKmQF<$5ppikGdI%i7W<%l3Lui)d5+hhr|o{`>!H)PkT}je*HUrN*Ope>x=>(=r;uE z_ckPCJ-pEfAU*lI3X*w{eP?}+xfK} zd%s!qk8BUV%aM9iq>9#b9t8eqIbl@xN6A9)d_<_A=QsQ9$J+u@FvE&qyX)8UWeU5b zAq*YYbmVTUahTbqu}bPkjY2FBalej1hfprxE<9O8`hbg-=c@G)#-_G`CZgR2o z+24hZNVV2ErN{{9K25M>tN~g$g!NpX#qTJt^ro$+nqBSaLWOscGuMV&r8Unn#~gpp z=17&Ug>PNmRZ3>>^)8a5T%lY`KdV|W`eF3b`peXvuL&g>p^ILn%(IQ#9ja2zQrE%0 zo3)$M(d=g{d(_b9CSoD&PmW5i?B*v6AA>s@`Cu_;t%ZTzFH_n};_B1?TuiEkv?0*MtpcK30Ou3hqatq^jZ%`*T17C6VI0 zTPKiGMqiV!Cmx2nXsp=Z1Y8`*2qCFQ@kiP2%ICQy9sIPz7QXg>Sriyx(?4DZp)Lmk zaS#7S7E|6ZYy$oO0>ws8pV4#^-3s`A^hy_uj1^-)Y7RRU94k^ie6{uihlg>TDra)p zFmHX$%bTq*clJqPUt0^SMXp9P*H6Ef!NY7jp!3Zuw9iore*ztDYvZ^9+XN!wd?jOL zMv~fYv0uAMpVcVQbN?$_50x-0;Z;I^U&82|iKoX}L33 z$cga7ICQ@mce`3r_@Om4rad!-UD$OYLMza)_{CdkM|&YTY4v3B$oB`;dHugoW8IcW zP;V8!q9dD>b6&cA!$Gn8C_vbVyyNjR)MB)RiBHPvq4S-Y3iW<}BVz4YCcB?O?!g|R zdU2Z_uKw8-3&N`0Ot;a_?pRYl7AkEgCai%^-o2HfFx)^Le zPt#&;8|mdc@+AULaaRjte`|?Wb7X(DP%5NY=yoF-O*a z>cdq%#_Gn$mir#F0=S72La-_6H}6blsYy3~e0D*Ci=#bJa($go>MQz_lA8M$teuXN z8va}LPTwL2;2`{RJolAYthjz}1n%LK&tWc1dY1&UWbMtdiE$94*qG@`wedlYi%vDD zWLBvg2d(99UhiW*iP*9~X7Rpsg@p_rmR@>W2~Vlkn>IqfIn+qTL!3nd)Iihkg81uU zg_Emf<=ThIA&QniPP0tYsN^Y|U@_%c&|%@?c0h z-QZWA_GX=!x9GXKvmTpUy!+*=Fi&jbC*IbQH$-b^e};5;ggQxDPeWAA$boA``6@V; zT)uY_Z^Cv2R5jl3_@s0AT2s-)(B6kw8zY-1ty2rSAppr zcp8ylz!FtF`0!2=?-Px0nja`ziw#(;m`K&hro?z(;eB2;z~Pzw2h#e^$MVN%c~*d$ zoXj4yLL|2Jy{0BNpnHk+z`LQa>n`Ah>vsAPrN>vi%Qn(faQHrx=JLh!Q}cT54;hM_ zIW4oCXeyW2TET+$g2bMvN!L!+B>ZZQeW^_0?PdTvxSYzUY8pVcfLj*kB1! zJ=qL13{)SO_XSDJos|~)*dOq+evcuZvorvCY6wpcc-<M(-#sazb;~==D#&0& z)49R}?E5Ejiy(Ly=VJO@9B}+zc)*BlNKHjKE>M*~-PRD}F_ayoFuxL?g;ixV_5W}{ zn2`GgEH^v;0Y{YhO|2@Do8f0ot*jTAik%|R*3q2-TYE&ED8&PBDe1>803n|KwaloT zZObMChB<8~+5LmncfylDt>(VcD@t9A2w0`+MGT4oOzyk{9uzMfbNuvB*+$Nm`uSAX zuky`IUhkbCybZ~*No47bUC34f<=CVyf7vSKzY|K`DKoiln4! zm5H`h8ufPc?BzPa{zqK!sWxF~*;eqZ$PSSIC=S;t^*Ky;LGP?e2cQ5oEr>RxJ zC8bsjqJ~*!wSC&6!m1uX{tfP4HwUiWc<$@9tOONO=W$rK=a4^O>~`wjpKD<L+bgmgGos{&ZydqI(d?5RzL+S8zjX|c8nINJ2)~a7MU@p}>{8|gu6$|h ztTpY{P4LFFi$8P!zzO;0H%3XiC{ry!X(#~8Ze827O;%I+9JC6DMBtIAp#5egb&y>H z|3K1?DFxzyT<-RRA8cw@&XOE;8*c)pREHgQ!hya~lg(9037<1%#$S|O4~`PayG#wn z90)_q&o0y;2EnLxDdlN2!<(XWI7oU;L)X<<{u`-I*p+E1z^lXA_fqx0+10~yZ| z{dPF!ImIxY!J;-w=I7a4fAfhdY!8u@F39EIcydtZ#qjlUf$)?23@-<7I-FPt>EcSX z^72p*Vo(nww|FBg*Nb%?YIob^oM%mSaQvuIr}2+>j6Cxw zl;Qc#b}>bCC7|cvAUt2(JkevjKe!3yhP!*}w!1IPm!kMT!)Q0OyE`HzsK2M#CO|-+m*l|aqYQ8E zPNnTs+@Ym(0j)*A-f!l{Fn+j|X06+j(*{QpcVUi-}65rnK zez;e4D+qd_&=+ZVycdLP!O8x#HCZ{_8M|PAeLvSo;P1{4T+lhrH+gfyT5*b6$@C{b z@fYEc$l-gGJc9JAmigy_*p8Jx&X2;vFAs%Mg*g=-9UCVchp#NSu)o;!(~`rMD0d8& zR2MHE`Ci49(XZ0?1&vt*t;bcwc1=Woj)Q&KHi1!J#Vf!JRo^%K(srDJZy)RR{8iUc z<1S4$VUcZX9F+l4#ZlI_hp4)TqFtQI#u2I`#SW;QiAfkJ-!ssiBbiUx7p};n0E4O8 zC}RODu&sh*T#tg1wOZzumyJr&=MefpvBZ zBEhceYpRFrL&fUVMWZutn*1>7>LmkIgokbgqd{?D+;QOG!-;!b_Y(W$GcP`zbN!I{ zkdxJb3D9zF$m6#iO=*(vze=(voc(l2lFgI5PBKgf*z22F*b{*IXUT}L^19b-$nZ!p z9;BJ}X;V52a$0j}cdk{48c(3i;rDra6$NNbqzI;gBaOsu^Kkr`kQXnvx zQ5Z~tU;=f{^pY=F{Ram^GvZ?Qjc@p4ITwu3V?=GM!`Yz?&s{H}-kxkR0pt5DB$2fM zQX|0BKg3GG2Cr$&1wJzx{X>SVxe@|bR6`b<(l4s!+1u#u{6biy1XZzBhj;jrX}2Hl z_IsF&T7)l8f!wwGV%gei3jhyPcjow9cU2lwG$pPg80Y*G$>Qo)zxnQrSo&p#FJ>DOtG>tbD6HSkY2c1rU(^(!a$MRVYDjVeC3-UWgupiK<6jQ_baBwp=1S)o3GO@J zusb6Xe48F{QT`0mvX@)LjN&^d1YNr3*VCrGH&w+p2~AXP5(+!cZ(hT#X#L`#?6wWI zuyMz1U-E}oWmiO%r^yaSjBnmiq+8jUH&xtl#mO+3UAzTUr10isC?0QQ#}AM5R}_@` z2n|y*ywM~w^Yg|2y`Id7Ta^(hPS~ZtAsD29W%TD}#b5!E`QKR*k;GE|Qjoud%HCO( z^xg@lmi5ZE@-XFW;Rk3<2zji|y>ugfVg9&pgPQSdPae=H5r6Q{WmJ80SXWr7xOQPC z26NA@`^7HkSiA%V(vR)f7g)|->!vvr|JL2ASz8$Pc^%UU)>`Y5zs^v z=}f_l9V-)diV zpfty_?=M{Q39^rPa9ke{SbINk_A1?IGSa&@`4U^nC#VxiwB21emB1-A{m!03YgBxRg{7H~C7@1XE}4s+ zJ?eH1ms^)WrZyhA?J|E{4KJ68t91pzU#!oMlw-To}0(U(J;?6pM4gIsGNlW=InPjVy1drg-WzLakmF0 zQ?B0*1Sb(!pE7@(_ffnlOWqttX4x*OvKP+Hqx7}dn!2p$cN{Eq;~)A>Ks?aYKMt3Q zT~OS+WAApSescV%uqOtdO2^aU?hedF%m;{LK`cqbo%c5f>HgIccOU>=jBbJ*_lbIw z<&Jmt?2fJ1E8er0{m9s=Jlnk&{QVye#~wxQv#pwwOOr#2e$;iW_HAu-D0u|N<0=3f z!9*;r+qNRxlz#Bb^&R`Wz{*yh9IB6Pw^B@^S_IcLxvcwB=u9Z=yfK$?4+yhBwpMH*DnHVfSMW}4|gm@B{ONQo40;CtKQl)0rX^7Mk~7f zuSa5sS;@uqlX8HZCqwR=^V4yE3X@Kr37SxZp$=Dhuif^!6sw}?nfQb$G~H}F51k-4 zIaG#ibA62#c|h$RW86y!D%koGN!qy603U#^WU47k*NE7t+)R}HvN(O=#mKuE?(B-r zdy8V)B<8Pe?^2G1f>mag&-b3OoctRqbTnP~b#Eaaj#K3sp?C4WmpEo3; z-jb1LPcl5?9cT+nkbrU;!e55GCE=w1NRcXEmBE2 zUUKm9Nt2oGWbF=Z$w~5C%nb{OS~>sw4I#?p(ob{jR#d96R`f4mO8g};eU{(}pN#)h zqmE35y{r2VeyeJz@r&J3J&T1MS-%IhLKZLibuYSp=JZ-C4ZETaj=O4R)1n6V( zPsL{)5*6dXEKL%L&us&?;sdx{4UQd=&nLYjrwXv}9+M4a*ukEbedGB&aeGza0Hhf0 zq;vnHPa_C9Et`PB>7$KRk)0|4Q9krmBI z;U=?g9XS7|=)C@}3XN_kx5M5Xskq_wBu$uvc3=qVS@P$lU$0>McsuuQNQ#!ld!a`- zen%-vv|kf!6hl>KGlX-(JXt!;AVrrRd}?)?i98l*Gq!BL&g(_J+6?7a7!>IcL0xGA zl*t>>h5Kv(_lYa%Jj`}M*y&p9mE~LV!cNST51vbC6b%)@cw+)!1%0|(yX`SGX&v|y z$^(0<`m^9b->I-EbFD!74aZq~%0uEgCi32J=)uMC^%~URXTP@=8mnzvi1&@(xK49K za7veJR5!?_oN|T{N+hhxho3vTEA3CI<14)iQ+Y*#iebP)bu?jWNtNMiH8Q<5z3QLc z%HM!sdqJVcR34~ZtUsU8u@I7|(r0qmy<&R)tNu_$ooPLC`4?W`J|$d+$(BOTi3lIXAXfcN8wXv~gGk@EMuHTq3r7%)7iau(=4+oF{&k7w`H{ zRm2fSbhf(hQ^X5@cUHG1GO4|7;r^xg0{$gs#?X}Qy`mrhD9ht$02o=`&78v<@Ls-m zW^G4OaJH^lsc2PjwX%G^d;Lr^yn7zQmU=jQ&E|ue%b0!fj5uG(+vo5BMTT!bS% z?KkHO8QCIPU1)|jqSg8(^0e-)%gEelwFPe(^g3N}MqK-qb;Yd`c_3cRJRrh9u^OU) zvKVhxbZ8TL6QOo2y^?{q6o%d_z?Gc(A8r3F3l8-7DZe=TnEe{PbK>wmPD%=>*-L{B z`;A#RAY@|VBLOC(@6QH{T38l3oC~3#Y(9h!)$84^;=XGW(p+M6Xcj~qy}5tmq(rmi$I4RxXUBeao*;#jIgoJvSCQB= zp31nncgq-W!0-Q>ibQT0W2E4NM=JrB;cIA7QYJRdHf>`WujQh+0g0QcmT=|hZ8;R? zIc)`IuJ~90I>Nv35Tf?rMQ81bU4QNGVf`}eKRGB+KU3e|9s0}^T$+8DurL<==XY@TMk-zOfF`>$V6 zCskZ~mgNb4YB&h9fl;|5grLvQ76iA#>Ps@J7O~wObu}H?$32%$&-$`PF(NP%R7l!h zk~&NZvL^ASEWDVM6`yjtXgj$jk1P&@uF5>^)|h%K<((1fBPh~3u?JB?eR|dvc`5;_ z3~Cg{p~kV|$9@ERG-KhgSDVz!^?Ji?2Q9Apr%=BXnbN+fx6;>STioKk)7v3xXeIPg zTD~)cKT}gvfx+vKacL5uSmS4FAUA$KR?%ApaI5gLWjYK%d^F`L;3xcNZr5Xb#b?9= zSe|hg-FWGa0@I7>RH4_KYzsAEzlQm4PIb_-nK4lO6j=~+3-u)Sq?&+Uuu#{CB8eC? zR65$7a4urP<{g%If^9u3_3j)NTED`YHk32p$2cp9(Neoq!!DloobhcG{Y;Gd!-rB6 zD$t4Ij1j$89gw-O(^_UA@MU=0p#udz()IPB&S@(4XQUEu(f_d|#$q|&=k8@-&mwvl ziHuvdUDYVFuB|$4V_tb5`d^*3(e;YAv)p%tOb<;%5rYfi8m4_Sqh)KfZYcwNgD|LR z1ADJZtkBPWg1=@yqe}cuKMj_jF>ehObHK|zPJ1<_8qtExE3RTxU*B1)(4slPve)L! zLdO@^KDaN0s7H`h`;77T*1C?*XxLMNu;GDO$$$FFnAm+TdN^{!n7bQQqhfF(Z4wS z8`hSt>Y*8U)Y5+R4zl*~IH?T8EOI<@z@84Aowlw4Ta8(z3B4@djEnVG5S((PksKdfCr8eM(T;j(;o>w3=A z&TQ>tJJ&`*C8o*VW4@f6I~V0RuwOtGe$6Cwgw4vbTQI+&yofEOf} zN5U}50DZynTNgB!D)P|Ex=t_wb%)Ix!nzb@d&0)sucK zZ>BuL>ZB&v+9j4<04U^%kIIt1wuNA3lkYqx?hYRG3QBllpduk023a8gtV3_x^m&D? z&-E*TpL2+uf$t;ig(h3U`R16}jQ^%0f`#g7#!{1qJYqW4{Q);7T^FFa0k7e{Bej@B zuV2@cBb-AhS1*)k<+>Yz_N41_^{?EBx7-%kw^|cqQ@=#pb7@vpv@(%lWnkV~Rh*_py>cG)V>yMiS{#O7~v`gAK;gaE>y{?MGP)R2-=HN(y3y4V3A*OC)^#9 z5TZ~mQ7Nv=A|5OV9}j_!mNLBpIW!{k2KF`k4tT7L59IaMDalPd%VHrpT8r@Sq61@9 zyr&hd6XDxh42ITu{XuOe8|Hm46eeg%(x!f3;cu3sME|l2r$WY2P294pj2**YWnha| z-$U*PuWVt{R|o4{8H8>#Nlg;CBqmN551S@;e!u_mnDTx^E_4+#I4OhuuJql9%Q|ur zG3qUM!P&hpWk*fINjTcz&fJ}LQ8>2>V9BhR<>)NvczAkZ77%YDe&Ij-y=Cs(_oKF@ zPWS{em#y3XP>GXtnDB7izYn|c(AX_N;+nDTMO+Ge^7k2t$d%Ta9+SFY?KI|dJ}z>9 zqBe+`voQZFX)Kz?X5A=IG1){&yO>(@tMkUff%ViSG^-KM?9&nyPpPvoI}# zJh!+!(pIZpng&Bpn2CQ+4RVD(_HWudrfdOl<^k~ zX@c_KkPa|oW%)kcF7yEm6iDRa z6?107FHxk!9xU^tk9?|6Lh?O}q_pU|m?l0W13XLnM(cRZztWl-0Rsl%@B^mL$6+7- zQWV~kOq=JXdb=nHe&#x|Jh%W-J*>H4OJFvwAr~z*45m1@fRdVA{{x~l5fHn)!o8h84S~!kEBk>wQXY?V7g}eVr&A0UKqb=B)LI9 z)*j#tU-nrSG&>Gm5DULH0&^aO<{;7bx`eBZz_K$yIIqOEnuF(^00K~xLDo)Y*a>U3 zaPaWu9O=R;k3H8A9$1&e^81L!KT*H8(&70Zh;YdM-S5Qe~l@Xs8So z4=t!~=5@3xz9*VbAfzfZY{!mn1wa(Eyy1JIsWS1HN=99;6L{@GKs~0j2ZKZfaVkTn zo6_sXbv8fgQuWQ*U+`$F#yt5Pcy;orU7up315YQqZ`zZMDmikF=;=nm8j_cO|6-&U zNd{-ZS9yfI@iBI_Ls#!oYiw6*RK-8{b!(!&#Wn(%sbcu$MR_0ESjrOu+3Jr zVn7fNMYmfUi*O;A_@!Bj_pnRcX_xI4;7#Q=0fBQeDAP4oE13g_cne$Oqy6Ep{t-72 z6xLF9nIY@c41Fm3)t$~yIufmt}|#sfA-70ZWrB$3(x^vg0=g- zf`)Ni4Uxqtc4krk`8EE+-ZQ-p2Y=@8Bi_}==e8R^vv?N%9)ODBk;mWHr#b$=M*vtG z^l?lK;y;MuwJ(qc9)ET%C^&uRk!%NUq*BT|!;O)~xoss^L9$5~P($aB1x%-9;5y7w zj15-S*Eq)Ao_b;Kapt?nn^*qDsgW@qRO&`<~`#;X_~7-T=Q25a}_?T{Rus0kDcU z>s9$-CI1`xmE3B>PM?#F-})8vtNN=k6)%3R&UNpr_7{3pBD>GI_fc+4i8Fvqj9JBO zI$j7G&vwg&G-8SG3w&B9joG)kg6XRq_uaJsDqZ|%x-;1#|5DZ}tl7o^1Q>fUz0W7# zUSSSgE1wAhE~AVX*2PE$!wxKG0HG*gu^Vc|ZjbMl{kF5XAd0WTeq0$HfZQ}&L-x-) z+Hh_BWA|^v^J}|U=P#C-alL^(@>&4Q0*K8S;1YNy(=q}$Ye2*k#2!g8f51Bg`01(f z-qrizGNyGizHkFeUN81%qu3s9hw!&4a^zS@7fy3#-|!dm43~G^vk9>27p^}YFVdRh zkW5Ew`{A&4Ksy8~`$Y4Lpt0{8ohIM<->%h)-hcfm;sZbt0Mgrt zPaI$$_cJ&B_D7#%66o_5|2u*Y@oy3TMmwk)MER;V##F6K;+(h@5InWN0D&qA;JpUY zQ^8@H{Qfl79^_-4o@l(W4QQ#}`pRQL{|zWo9%{#q_K6PvY3t~oe2?Wi&FT2*+)jSB zDck!mKtye)fT)u1Nr#T#TmPx_IO(Ny`wP9ARu#+a6O?Z~`A1>4BF0(Y{^NLEvnZM@ zb)-+d*kM|bnPor4ton}jCkaMfusfPOR`tmM4m-uMvlsgL3}f&M8UPA7hr+>SHv8R| z&d0$diV)98w%Bv|=Q{y*ZaFNp_E-2#fSDWvaqGq|;Jd;un|#bP{>L43MVX(WlLbi3 zMSaPX!8`*x&Cw(Ic#KUXDVEgk9&G-l7zXiUgH-?M8~Hql5D>k5r*CPzA&-MBmJ3!` z?YezIieq9FI^8#)wm`o>{+M?!OT?MmZ;k(*v*IFPtkt{RZ)r_L9`D?GC(K~sV|o27 z{QMdrD8=I3Pz-kUebX5-!iPP+kk1HIZ)KcjQUWw$05aoRds{zO`s=wuzMowvG9xc+ zxl{bbF0#gw+cK@G#f1&HP+hpfKzofZ0<5uvyT_h)r>fQgAWlA~#QlaQ`c7c$NfxHj z6`YeiT@mj1DQ|6R8?}9Rto$mVloR22W&h6RmAsV#Uk;+iXbQ%Y?75@MfF&4>L@WQXHAHYGDo-}8a zesBi>Sx>$XF+g0Lw*>U&>lj2I$A!iS+nD_$e~a5nT9rR#zaHsZ_t%y0zr<^{+s8pp z^qB*jI$y?x0E!CBY_g*@L)e=w*jM982i31Y4F^Zrf9~rHxifu|ZScBZ$vQ0eF!kS6 zW|K}^hL77YeCfLG>lU_+BAg2P;5Ci)aQ-9i5e#1Y_=*dT`0~_34}e*2AZaO%6870V zE%&XlAB+2Q%|R3NfXqxEJaXKf@)m>FST}q)y>4;XcD1-zm@!b+YPiq(I9jvyXszvS z!w8%MOvSoD0bj3a9z6bhTr&c7I8QpmHoHHknwh?ZA2}*`Z^zzZL2k@gG1uE)vXQ2ik%AjO72j*xB>Gxxl|9#jjn%`R=2; zzkq>?Zr8`bTovaNEe?RL;J>Byrd8me0%lJI?TsuINKqc$`)a;6Exue}J0Q@}@6M+L zY4_sX$;9+4|E&sqbxv(`lJ(SI+2k+a@T5#^*x?wO9`CnqiOgnX$GPPI$#N0n}GZ2ARe{K%z>)+wJ}=^NGH0llX& z$PWJqPzwMU`h^|%*O+*Iik+K$+lHcd${j=xMK0BF&hzFq+U50cFgtBC21TqdgCO)@ zLpB90+jOKpcF5}dxPf#4Nq)cNUzZYQvEIBJJvmZy(i*Q>nP6QHi`@^c-$nAoN)HYpxWlV;UBXAY6MG( z4%U_Zkm!#9s#u?F56=1UZQVI1-P8I7U|Odp$$HP3tepGm4`W@lwln&NfVVj%4wgKg zGh~S;0OaPq^!o(pnvvVae(K1&@S&Py>XSJ~g&^jSh~k)L|HUi+le>R6i=*$#lbDfHd3zCRW9e*yhk{GP_MTntW5^WM;Z!~dzBz-DFFI{-P$eDcX^ z?K_&?dRGAC4WK*8sjc!Se&sPwzE#Qe)(7A6(Ed;Q1_1+$m9a+TMQS7I7(4@DZca2N z=614${uzkzI${^G@-dZ3)Tl22mE)r34jLUvMp3kw#m5J0PDi>0J=#|qnhk? z`S>|w8D*U9vIZUwVkdzw3m+L?n3vphi_f~o`F%{>(SQHOy!!5EJ>cHLX1{qZ+q{7Q zAVjt^c&t9%^a(TYmwBq3GPk0L2L^vs^ zmlunq9|7_wgm$y|IS-#;M zOn#_?$oUn{_5qLgnQRH(>q~kt@Zxh-i{2GsV`b^Qg4qrHhu9`PPc3YxrZLX1eEwh7rCRGX<}SlN%E@<)mI9aOOf3+W`DpxCGypg&U3Ts^v$r4B z=lO41=L_9Bp8OK;dDmG1QU=gVw@kwv95?_>>v~^{d0$kAGo7vuURNdk_5HpSwRa=u zrW4R>>)<+>jRc@oF1G;vyJearkH*=4^b=sj6bBq*-wpsEO1j0bbOoRs3~mPTwFT%B z?-};x<8>~60W8GX)!Hu)X6Wel0dMlN8Ma_R_oH&fJ-B1P2beN&7|w!ZUx4@rHmA9) zUth!{%I@(Adn7Zsznbx!h~xNmDz=3&HaA?{d^W&IJFEbmenIxJ>@L%A0mA-b^bFk* z!WzD8=C&Q?_aM997%LcLagVDTbOX+5(=8r8Ahn5f@bwv*VL?04(^u>8qVfbiu-eml(=^y$DAzuE@d4e>e9`K~D&B$S<2^=nfAqJ^$XtZ#~7 zHLe0=ypUDF#WD9+$4`8?{k0%rPF0B5UQc|V3>#!QRL&gF(f8I5L9g?LH*3Lmf!;U{8KTfLSil;v4gg2^)_Df=Gs%;Fj~((@ zmgP78CiCS5D>0t5>q97wBs5C}aHL&6=*kx)om*|!$)~RMOF@urkYU{)2IuIQdkq4m zo3vw`?MHEuQ29nJ^Ke1qBky}oWiXWy+YA)#z(5e$vU@P}Gi!YGxlYRn$wuoUW9(hT zh=Z%S-QoTN1|!)b$-d9mIVa?FU*9nSaJsl}@U)LH#;_jXI|87^?(jPIiw6r`#x_V^ z%ey`^880ZnP5{LK_sOPGlLGQ0cK3100YMiR4Pd~zf}GRsjW5*wzA$yW=ql>}wrR$x z8NYCw0_Gi*&$yL^g=8PcdR(W1|5St&oCfnVjkm1>qffL?GCUPy1-&Z6TbopKs&iF) zYqK|Nr9n^~+d+p>IN-_dPwfsCYT4eRV8j{r+B*iWvkH>)UOzT}MiI(I4QYY8Aj_J}N)@;TNn|x6V)g$n#Z( zJns%F0dQi+D!@=~`N9{!w3KzQV;+dH_xPN55q+MIEAsa5nUnZPod6L4YdS_vMxFZ| z@0~2eu9g`-c4jace!BHEwa$ILd7a(fGw-q+*=`l?Egz3@`$ZqGmD|F<^kpIk|B6-U zk%Z^InO-dXf7v5;Mu`a4#%IQbUy4{_jC)FcX7vqsiB8(7mDAC*md6l@wSnW5_%LZrcuF|ClpO zvExX2(gER!-E^CEJ)JiimUPA1XODxSJ~nOS6&|$DKk1pZWXB6*#=d8Ez4kz%E9$4d zr^I{$QaFABk$<6E0nARmO7Cj%xL{{iG<=zkYgl*tD?UZ>Q+fZZ{aHt73+z@4P9pf zZ=W6ie6hlSoB=KwXj7=x#*3=Q89%{SLVJr!7NS0A2;#YyEk#(89Jqg@q1a20PJQWwuI z5qF8Z>Z|5(5?9c0O8(q*UdMy^Si?hQs+#K2750;z`P>O~b$0tpdjsB-M+Fd{8f4}5 z=xop(tG+s}^AYuHm52MP`xHAFm`8QK@~x9kvmQ^4V>=mf$o?Sa5aYC&(iT{sn4lUSKvr>(lMRwnBS9JZ(7CsUi`*wUFzg)RuyKY z)7h|VYG1XR&hPA|GE_EJAF0Oo3FU69P9K%2I$wcLoul%cbZ7cnXgeR}IXb_NZS@iz&>!^jx0g?PXfCP7SLdqyQ2BYq3&;G8d|kV0PV}iwbNuIIAE2zz z-V`)&@mJOWqj$f0$maw1sL?`&V84&`@c?pv+J2zmMy(XKaHE>wR+W z^X5P!>~xJ$>K3*$qKESu|N1G&UK^LoMJBE1+8rG0(MXfF+C!unFD}P$|N0HL8TKLn zUFVkn(aiNKkAS=XYEppJ0R18P&u-U9a!MGvpJu!A&f~o0#mKRi`Xj}1-UwOQ@3u4x zUhdlzE{fmmAC}^M?WS7nT8|13#Id19Sk9q?Y;c_l=BeOy^PYg+3Cx|^Uu5aVKNVt~ zr#f|oNdb(GIRUp$zK-Y9xsyH}jc!aQXGi<3%$@E}b36WT>;O6)xMDh;e77ARI%d5( zxlX*haZfs)WIoY6fhDG$`_Hmx5>tv()}0@$&B>Sx7U+Psf`9;7Gs)1!oQ_4m<|n+b zevqW{-_yEYl+@M#G}f#9^!qiHD+JBm+DyARvS-a*|mWG z3O-5UV>g%rATVDye8flV#GK(opW|qz*E>*D5Xt9r_KIZUY%xp!75Irx0fQK0g9egM(~r-XnI$vI&AqfDRKoo2*R+ zsow^mmgC>8u1FUbDvbrF?f9e)~R>iD>*6F%4Z>I(S@v~tc=4^ zg=#(1O%4+m2V-W4y5)#JB-U5n^xo~|d;(PP%(O;aCvV{hiEU_oi~n3IgBHB?#o{F5ImaC~YN z=dgvtDRb zIY4PL--=J@sd-c9|NgaH^hY`uv>>BP;_qQ+20iL(0bqOoHUKe>b7LSG{<6MhZ5!~I z&+~kHqim_X4eoWcF&z+Xb|fp?`;+|FSjGe>M_Le$yiX(`oU^iOOPR zOSpXbn5nMs)U-f$Me_7s`M(|C6`wA-z6Fsd8gE($bUNNu!P0a5s-W?WESjJ%c|i3! zLDz+};#1M+XjZ`BN&X6Cypbsd-V6WY}9@dXkMptXb+Bs^OW&{;O&!CxLcYVOr!*fbP%y$a-zLv$A#s z2XC70FuWPde6)yH<8+SFRPgpRCnw`V>f>e5sP9;>Ywl+5Xzt-rC=dujJ_IY0TO_V!plLqto`-0M zISCYchh6vr=b}89vG5KsE6#t&4`LAKkf39v(-hO^U3S0! z*=Br!aS!k(0C4<6hLqP~bIb9*=Ufv1EZL+nz6Rt&zJsbDpeojH+goti%~eowl0g%D zH}+I0m{$daD*67>{!%QvLiI%Zt*tOd*ZVX_*YipLsz{%JVlD#DfLO;r$_b zb^Gfa1?km!{bN2AZ`Fg3J3F5E&sob<@!(|0w7*S%$}vDd#wMFfD!>Do&SGx0#8ZH3 z&^oU*%UWG*#4|A0c)ox;t+B3G6*J=oyrAdj25fjd`xx6Z>t6%YSXa)cmjjCH$~&}G zZpyJ~s(6wy&Hwg)_RlH)3f^aLma#so_&dt7Sa;ii!l=j(8uzo2+>7f4cF$M^c(`3* zW20gSy)aLoI`l7!bw;~TrQwq^DUnrRjmf*fH}2AE5S{INdd`?k*% zez2Vb!Qo)`7rU(cU>Tx6)+_8bz~5C~W3IuP@TT0NmH_nB8Z${BE9?IxzwnC-qT^ps zl=z1m09+dR>`#SDHywuSHO1R->^W`v7<$>Ti( zp}){TU(RqH#}6vH?)-ZNv8^=c6=&PyYXR%+^5NK4DJ8*Qh!diam?}0 zNiWNZgr~VeW9#I@Pw~Wk>_ey6W8Sx~UgP)8+{_~nlj^)78yL}vlhfH|(Y1m1DA+ICbA@gEA zGpNby9`>3ydi)-A;^#VpA4KBa>cwjoadG!s0FP;$)36h0zC$HZ<8w*aI5%yB2#nsiUqK@R&IyL8H0Ux11$h=8vT2-KGr4^ zq!!m=4m5+4o$^MlboxK=j-vPs!?pu2_RGdHNXF!sqyxD~ls>;U6H0W0T z-_Z#9PPt3zY22Lrh%bgRz+A2RKGH559NU+`ek*z3-G}K7iKToCg^@gS6Z=fwGtG4Is40MiK{DXWEQ}dw zCHxro8+I6gf7Af+ZAtf^R=-C?f$#4lU9k`Bt?N0EGLV_;h`2zpD6kvg+%Tjweu9wQ5Z&5Ww%BfSJxc zjeYVZZVEuUIVZsXm-eLN)A;}%|L=BYt2lV#QTfs;FfM75If{OsA7dlgWZULG201vt zXibsNEHBYW^jOC`PfK8|in}+tud>mKQys_h)p3L35kJ^M5M zxPFo7+iu|_IcB5C2T0(#yw;Ed<8w^vT(f%|>|Yoon{tdUV6(p*Ms&Pppc^1zgc*P5 zuMAwxS0L6oz;T?<>yYC;VlsGrQeXa{cv~jN)o60GyF%>z`I^vNW1TTA#qF>RdYSk- zUiJ$ce!(@K?>pF*$`+j|hRiZB%^$h1-PC<+K>BqzyUCdIL8c#TMw)D2&tN)iB4$rI zVOQP#cMF184hzw38f0IP3m=PHOM;F(2em8CZ$M%N)T(j(%5$|)RX|SZ@OUk}6|a;0 zs>f*z^X8^<^LuS4aLDhwFKwuuxSehh&~>WLb#wmO_Xce7m`)!B5DGBf_$R-1WB%eh zosU=TeoxkO({TY_{=R;dobT3}W0HZ5B_PB_IQzd#U}h@s9aMoXUKcGc7zzR+xtrB% zSH)Im4*<>68u2F}h%*K#nonb$VkZ;lSf=$F@9%k(?Vjxv{MKvScWFeox(#ZiaUs*X zU(D?8gJ!&=9R1670VcZq#&gi&>q&9WN^ZDU$inp4UzQG){y10pN!~rp7YpI%GXaWR zb4>bI+}|H_X5{<#dYO+eEAbfC&xhvSG8iY;IY4pz>r;R2vv?YFO5r~ZA zQsWW2$fzxp30i52jJ0H<~;zE1_YD#TB%3Tg$oZ<{6=rH3)xuXZ`T zK7pL4rm}JJJQdoG7bl$Rd__-R-^i`=^_cl`A+G?%=^Vdm|4EiN=Q?>6h+*tWzfRVU zU*(V01%UFZ&Uaw<)G7dyX++YDdU%fu?h62h@xOn6$NXzcTvD>$tj{Rpl6{GJ@j7*~ zvaXe%Gk{%yMhmWj%|ZH%n>|sOP?YK>J4j|!TukI!<1tUpZn?V{rUE?H?i+YT@!E6u zj10VD2MDs<){gxfBS(B(jd|`X>&@=h3!3niZ2#401P9DO)m z<3A}5ST?-Z^e|^FqtYEWfHQopGf==WKI(SrWXcgcr$%1#1%CTJ!cEz~#U1NW`DqA{ zFM4pn#{dtQo@=@Cy}us#w;4`PDAp=^PBg%;A%z{1E%1tP8k|z3{(_ zjvXTtsto3{IS;e@m)uCUq4^@lO}>{}?lQw|s6t zuyv0vg*U)E{d2GXks_AOZ~+GYvb_p>%%y-ui)06av~kjXDx_WV*CK(jPvD`O%VSUA z;VmDPz0;Fvbs*ti`?v^KIy`~1Spci5Uyrp<=XZtvMDGMXE4dYXbgi;s#s6RCu?)Hn zm3}(!M7w%loqMtwx9ZoBo?2eR=+DJH;fGuNXW3RE<$|wyBHc`1f=@fh+QeSPOZtuS8NUdWeKmaN+wh1ZtXug0NM9P80ub~947!Fq zcU!ZbW90iubG%i+7SquP6TjK-lsV1rj_SU?X@} z{>Ecb#r25{8vk)VWM4Ae;{oQCC+IF~-0o8k*$8m`k|kOS>v`Cjg`EX>6AuPl^9j_$zuR0HCj(E}U2@ow|9a{;9aU@?kq2A#iuALE~ktm;+CuWRt6f3;?8d+yUYd@j}#KH{UP z*e@IK4sr&71Sl*D*qofJId|Ei&1CO&yZ}HHODVQeydeWVhRb?GC(Y4u->%=oYXo>K zd{PK_-}gZ) zKuD(N(mMaU4ujSxgQXa!wiv#SNlxNrme&bDi@$Zu=ODKqj{uBw-gD=|C&R4F81U}gh^Zcl!;m5JYlkAC))2V7(25NVIWI(~=qxi?JT9$3{PByc&E(XG9 z0)2$s+cjKPyUiaG|1;S%Y#d|f41Fwt?X_FaJLH3avA_PDfpZxE>7vJg@Y?r+{s55r zZzP-Cy}=Xguvf$+j28Wi0PBoTUD9qUrjczOjA5-U+i<1}n(+0A|F|gPpCpc)%Jgb% zm1z!NYkvxc6CwFIRKyl${Q1Qw$Kbwc2fdze%`Y^kMW1ayoFd0>JzXd=o{6#FwrcK) z1{+k12Gh}k%Y}mJR0TkJRfYTnj4F9ft&*t&105Ky<|z#xuQFBocXa;R-s%rt)%vMC z-P(7wD;nIdcI(zz+h1hB@f&-x9lEu7qQi5mvHFWgl^^n2ocvnti9)`TuG%Mx=$dOn zhwY`{Y?gWjc&KI9*2O{Ri#oQ-4OQ$t$&*27*oJ|^FX>)7j{ykFu)h^+4BYaq2U(7s zPlLDSq5uvkY^m@{vDuOlUjVB5A|~c$y}pP1j8pssA`0vsaEqUNu@9fb_>e7lhg{i) zUMy){V$QI8ctywkzC|nEPqM3tZjkR&_?6w-J-3BU&>_c4{jL9yQGowMzZpJ$Hlp>5 z`BZBzxBnP1H(n>b&mTW${pey3_BZV0?t2<(du_w3#K~jB;+6&8LG`V|jebIA3!+B8 zvh|r(eX48;Jo$y3_nGh5g6OhkU5|3Uj2Px;fO0JAIM-qf(Tn3h#{aSI z&*4~w9}iR9B*!!2-gnOFqI+=u**0W1`u3%tI;~n&47)_$wT|{1FrXlgc~*t#saRD% zUC4A#h486qQRV*AoHygDIckp+9i3B+>*NQIs%UpSDj%u96&L&Nd__n3=-iVJbgi@7 zH~^QoyKgMtzxdY)L{++~9sja^`Z3Zvx5nuGc+(4fgLPg%$NT>>;iz08*a!y9}6I&H8T6f zDD@nC|0evIK&IQ>q^>Wd8Nd=VNF8|4keJ#h6QDK73@|iJ)_9GN9qWtimV(4^0Wdca zaK+O5IwAK_-msC^I&x*ssb(Cv!}ww(``=o_zV5knyN`GOXBr349gnCQp2xjyNA*8gr- zT_=FquBknB-I;FX(+p}Hl+CaO1IZ|mxiD!=1z_ZzO%$2?{Fs|_VyfSA9(`HgNjx>i z0*nT|knGk+#TH}kYsay|daQgSbS=&S3?bTTiy*^tK#W7<*n1B@HV2cVXHH*B)OqTB34c_qh6Yytsr z1|XS`OV-7KrcK|W!`x}OxLkDN1{2B0K`btSrfncOHyFCazlO^dzuGiOC$>|JW}P+9 z4b$3q|Ky9~-%M*%tOqWreSIVjd0r*U;+6erooC)-%lIK4^s)SwX@nc(Pk~ZA=hpzR{-a&9z3=xhE~X2 zfrK}FD!$C;?vVYwCw`qR)#jbuPUk9lpX~iKR&}a){FQz+|LMK*V&8c3&nhOW^A(8F zcJk?`rY4G{ZRr&Sc2iHqHHvP?zGUF{^A3VjTAVh0np=HfFa`+%7VAl2W1*FqaSLN?IK{4}oe4rjK>^j#C> z$@yv;$8n5VJ1=W~*v2G|jO-aQu&wU)G|T=7x|L4TUq7G!wJ6?qJHrOmF@tjGgMNTI zeKi8P3=DCM*BnYwO@VtHOCF+ zT_Qi~+MIuAJ#g(Ci4Mw-iDcbz|9Fk&~DV+!j)Gc5Z>zIEer@D@91!DG<8X&FpvpLyIH z*;->TUl2f7^1A`qEWqjy%LG_<2cU zv6cO8#lPmL>N(V~dHCH`6+bBTrm+1tpdepWjK_jsfdn0MYWy>W{Hl$M&YME7MN0dh zWYZ$bJkhjBc08YWXpydtt2uA&ue`Lz&w7vey_yiK13=?mO(A^(BxLdG~3qiX__@4Kjjb3V{hXBZqxYX zC>{U#%mfOwu@4Z3Z95&WG6mp5VO<3Tv`xnMO??)&ha8JG+h!1d9HWTkdndo=@NHx4 zl7ze?$;vhix>?sTLWYYT-p+PGAq_f1cKS!+34Oxu&=K#o$j;=e;rk3W@{UjxcuV#P zaKJHdPJ8)x9a~r<)+^pCppN3cKoIN5J_!Bqz8SjZb~h99zRxX(7&jPaoFPu^hva{1#a zAeScnN`X_;qW)AwwFo^Gd!5T5p#w5+z)MG8$3KBM=8G{WK+^GIehd)woc2A*)A6mw zKiTImYgHHLeEzL}b?pSuo&YV+Ir(q3u6RBD)FmIk0TDVj1B&N0uhxWpsp6&cqyM~i zYy5ise)}`;UgaWo|HiuRy8PRx2HzsA_oQ|{jJP@PUfkC%z}o#hzgG~RbmX1OGVp~aWMbK)aUA9yO4|U^M~=K3eGza0Gq(i*a&o)j?-z(&<9^Q>74T~# z*U5PUg&)z6?Gv#+hTZyDAIxLG8{NY)z~h(+TJcHA5Wmr1E@MCL@d@Q`<6U zz2>wO|5@+*xJ|0CPsE4Et=p39Hy1H37eBrhHguo-3n+a97Ty#bE}VX4B*p)UPnU>K z^Z(`CUkWJ3pJeKQ2+mdSD{#bpN=JFBd|f*MnaW4{LYT*OVD&Wjsa3%3jm{l_d0OL& zMg@3I07=g?->3D{IC;~m3&5^Dt>vPTYR_$c017R-ArHo8ANmxu?(=j^^|7&DG$^ks z7DJA_3s8-#} zlrYlPquP zSH8o1R0pQ>#;&LFC);XqV0};gSx%)}ojch|$9H^dFk!6>{QhmLcvNy+BX+bDM4$na z52-Ue7QljwmPnM6+MIRV>OD&Oh^W&ALKQP_a#UWk@CnuvyAbHdmwTYwnj3(E-`6s5 z{6qFAq>=YB(Cfe`gPJVIC}NWf`%U1OkJ}2n&ybUM)B?jyvN!t; zo?97qkK$j&TD(SlXW19IP0x6ZX3|T4E8f!BEh{d*#)4=Zi*9y2o(ep`m~`-GW)g_{ z(8a7jyOUjPh6O%u_bUG7qL|{0cWnK_H{3{S@^CqQfH8=Rza)$Qd(RgU|I2^AY3`Sw z=~fC$7moLMTXS(aNs8(aRNoBaZ3M(s%R@n!X zUk7q@9V?k~P)FYh%yoP#89G4PjqT`mfWGpXlRSS}_Y-ig;-ZrCN#-}Qf2Jg?A5Wb( zEp1@Qm3-VU3YnERC2;Hg=KG$1bqHge%FGuHoGZMjTvzgQUU#(%gJS4qv?Cngh5_Wb z*#TfG?#GPXCkA-g1_4L`CQNn#Aw#u}_c*KKjq}n+{9g+<3gd_5|J?31wgd{7yhfli z1J+^sEY+}^{eEGFKI0>?=KffCBwMjsY-2CLSZm^R(YMgU54zZZ>=*gZmHZa-C&dl( zHsc-fX=dun+lLF#$97nH47X40sKo^mL=J!EIv2VwJ|RN}!5`)r$B;U=>es%`PH*Jv=Dk@LE$*Exm7J&bt?c!Ner1;@KAnvG+Ks~>2X5ta z96N8~hu6JZLj_dbI3L6O=S;Hc?qdbsQD_`oTB;l7U}4lUEViGRPsy4%5sz_`p?fV0 z%^2lJ`cLay$A7%9;$QhzK9FMuUm&^M4(U071BKq&`1c||H-3QxglcHEu{jsBK z35=Ufxo{*;zkS>sXDQa?>@C;ie-f2pMg1Sc0pahbOlOSy`KLqGnQQ#^)vjBY2f zd;NF+qzmL6qARdGFO!i0Zh!sPl`eS4)m;#UZ+Oqh7x}v8h;N>MIv>B<7UTGbNrrLG zfc;1M>DaKRSp~LJ&e}+Q`rw%Gv+rjb-xIuI6*E0Z@`L&{DKld=Ky|(wQzdg(xBwj0 zvG(1QpS5%<`4m{_`3?}A0LZCm>2WpZ)K24`3Tb8I%J!I3C-7%L^(6OO+gIn%bXN`Z zIv;x@Yh|NK7L~v2>u73Yxlg{1WA(j3d{7t$P{|mjFWh(tuaHSVo<+fTzJ8u}Xi$)& zNaiG;F9IQ3wuuRVnKv77&N9*Alp8vG2iRbH-RCQRI+J(@AP5kKZ#6T3$zO=bGFEbf z7q4dk4UPBcn|?ts6OAd=2KR6>n8|YGj~bz;7yQYJ^@5aSI&{IG#jKYTOr8#e;F-~!hWgDyfuA=3b;B!AcF1ZMqmO$2|^)tG-sB4QE z0Q@yZ@@?oHz6>46zKAc1V+Sz=_I~=B_@{%$80$FB?S}h>bS?LBd`52&;{Ub^T!&;6 z_9ct8XSi%5$Nz9Cv%P-6=sQ-v;ECOOlln^ng!s4$+qBn#BLK zd_OwoUrv9zg0TpL9nx(fp8|{jPWZOlN@xW{zsd8n=Pfx)hLA z$^8jfb;aN`r|a*4LO13FL@Qca6yM5zqO0fm^@)}i;S)`5l`d70RvW4PDxgsLMaBC` z);svP)9Juj<&SFLlgv-;%^1k?rtiP8)hRZ*i-T#6{R(i$a}s@-*V#MGfWKK3ZU!}G zgA#Erh$yILwN2vT*uno-V6Q9Lw~AkWu)dCa$_-?K8(l68n4j0ghzEo9S=cfsZain! zGd;-xy7y0ExG;@eEN2CvCymdyV4#1k%hjw|$N~_S^+I2&GusvbTR^10@h*03f^-x? z6uu2aCe~>KW`iwaJwt|K$I)_8A8F*wa+n!yg4r0VN9YN^)-Sn*yqaJ2wcx!Gn$t4^ zcEj5EXP?=smT|#ABYXsUa!itMn~`r>+Z@!`tYZc;!9FDRu+SF={!^lSVvG%Lwyc*$ z4$`<>oxX;PXMqJEvjhE^0QBT=oPm)cPp)NyY%znM%N@q;wcV5XJAS^BvIUJ8(wAfcRd%8g3z9)V<{|px9 zkuLXluU*r*Ctpz;p}&*2vT^6z-I|%EviL~v0a|!G z0}8YI4zJQy;Kl7JA5^hxM&riN0%SWwimMGYW}dcyRunzBBuqRZ>K0ag|bQlz$ zSbOt%0rWK1Np{%9sc0S_G-f9IIB*9^#YVbb2U#=F#cL<4*6< zck-V%a#sHRX05t;>JOz{a_%>Wf}4}N(qP*;tzUxpQ1L44HTA-vDi#?O=^9lHw{D#B z~~!mIi)^Sax1cv26*6@`?=`u5$wF!VcP4BkLD#$-T|eIts-mdcEPJm!a9c~?#2 zWPR*^kzPaQ1SpL2{3SQKKP?r*S@y$rI9~A|HUfWM8_g+NMmHK=I?x5sbYZX~yn&nL zwss&1NTWaHioDCqv3mEj{Lw9g%mCV5eheRCvI8J!#;q;B_H)6V1mIa-$jb4b{7!vh z-g)x{Op4_tLe^=LF45=DBxPO}7jVDTlY3W<;$hPG557nP-{M`pfWjLPvmI=McUo++ z_cg8!vi2CV1;7<@rvJXca%S?qSeoj$FlL3Vm#%_Go-V|Py{WMqYQvm>_U5#h`{vu<= zi+$w@e01vqUX{&HGV%K=dGmYbtpMO8Q>SaSR&V@_?f*1(54h3CJe6I2)pO#e+G!7T;ssYsxas8T#=@ z-4&l*KZ%#oQv`-_5sG4@K3Vz8Mj-?=ux7kQD2@QC1D~dM=*MGWCEeN+*lCfcwV_cA2sDqN3ea5u*Jv0 z=4;Ov7WinH>^CJxP4dnCH*Gy;>Z1?b9~A%7cp3bC0Lh)tuKz^bA*P1Wih#lF7LI@v z?aI!bC(GC{k10!JAn-`*9j_e60XVq^vajWJ&v|@?LC9}%jtW(;6rU06sSyH0@PZp4^a6@;n?cXUobM4O)L00PtR&ZAF(ZZ)QBCy-Eq z0PfcU{MP=}_=-<8kBc+|oep$$G&-Pl;;-!u=TbVO0WATTTdP3%^uO;p{l+}cL-AO$ zb)RP_C;1^be`Wwm{ityZ5*svW?M7NW05rU26vH}bAMavj zfW{y%^bbI%_6wY`L70mX{xL!s2iZ<}(8tpo0EIRM(2(T__UxY{$?c$w;xXoolqa$! z=>l{Z$xc50slb^zSXxx}%n1N|rRUyW`^z?DJO}C?m!NrBN=0J@;}0ap>PNgR|M2BW zcD*->^%?KYbHbO-J;(o^jv@BPMPe0iJYUnmz5e8LeqX+^D=dvL=c31_h3|1J(rn6E zzc2JvLM;}H-iF2ds^E8Vaj#EPm361lK!&BI{s>7+{r4An)_gNuR4X6Xcu;|y8)SL%VtG||PCzWrJx=&pqpVv6Ce19xU9DGt z5vqAi=b;F%^FB+)ndo;f6nD|q3H~-ZgWFDzZW$S11aMfgE|3%jmuUn*4m;(K8AE;s z*WgtZmO(%(ju`-{tw-VCBl%pSzh*cf0LWl(#V)`1ZnWZG7_klD;*?W|PI}Q0I^XRG z7OI=B8O(KEe9OU-7d|kzU<1lRmcYQ&rt|jNvt?lLW9}QafteEz(0`~!j{DM^^|(2I z;X|I8@l;yUH0@jO}!U!SC(6+&xMAli*Vdjn1}rvgTLPQlR$G;~E=bx{;w z@l()Rfmoie{5qif7jW4DJa+CkG)}twi+r73nFqf<$%EG(EWGPG$*dPvDn}>JlReZI zD)~CvRqJe7(PBOP59dM8IL}fN+6ZRgJtzBFBp=~DsXye%V*)U#9`_hKt!a0Br<-|k zTGlmUE8Lyb`%b>s*$3 z-J!AcyTakkKUJBb^OkVgJGtoI+1~0#&Y&DR=tc4>=B!xXqvq`IL9GD95_*VXW;>>8 zPXH3_^ea*)`JQ;@qLa^^0CU$@fua+jQMpebrJJV(wvy$^&iXTwmF)K-eILi~8PGie z#S`#*vj!^j!+wPA?F}K4hPOA0LI6cKPkNLjG7o;ixYYEaX`SmCM_@iFdH7qto z=X<{7;+1vBm=D>HlRW!u$O!o|cvYPUuo*v+%aVQpUPh6tEYX7_CG1t@h~<~D|8zN^8%d9_8ArYu`vLPb%O7}qT+R3;FpufY3i)X# zp|$>y|6&kC+_B!4FPiBpMO}7FXU-H$2jJ}SFQ3$4Iflgl_y0>AYW+|EGmMAeD-iYE zkwbj>ge|AgJjs3;V2$%f*f;#hiW-#Te~28*FTZOx2!!un6C5Gq&N@pb+cx5u+O9hp zh|YQQTfWd({s23!3kH&W&DjE9eAUQ}1GGC|6_>vj>eG1z4;A08z@c@;NNHf~lUyAS ze$~SGRyU>D0kMvDcfnAB;y1chV5-xjn)imTwhANW3`P3>KSN_q-^_C~(fklvb#!|3j)=X z!2`dy1kfkZywYp16@(&SH|-*BaLz!^?Q0|XAJ+ZnFE;pu1LKHSjj#O+XlCgGA-VFT zxU$%xbh$8Q^BvB2&u}Bz-a(7_`|$;>{qH1;-2BT&L4NaDh(YMGKPnpQdhc630JKwpTrKsojwV4JOAqjy@@O2C?c09Bbr0He5e9WNqm`4w*T0L z7>TyCRb{*Cab@}mi^e3=sp5XCfY~BL1|58#7y43SCK+<3&%PIQhJVwa?Gs>uX+`1o zi-*D=PXUHya5hP%b)46DlrnL#4cbQZa)F)#0J*_$efto0+6W|e zUCn9!cIgIe=#(T!guIA<;=1+tSOw^Y1DX&x{q(Ba>|>R$ja!{YoQ}LRmFDh?PY=(v z-xWLl6oY==9DL=q;`hV#T{vMHf0!TfzbQ`3;Lai@up76H?;vjMwes9DVhsSiCdm~s zWKJV~QEI)zs=LjM;u~VZ4v-6-gVZ1y23@rHPkv6zxOV5z??3tDaf*vA9dhe;*m~MQ zCYEyy;{dH^m&7q*(Y#$(t^+PRme(xhOU3KA`ZUO|kV9wKxV*&!<2PgXVwVSgZXVCB z({`Dw0u}eGsgV?VQ(TksD)Ows;R%qQ#+>9h$%ofU-%7`>sCK}olK-i_0Yw#ff*fkA z4%q1X697Kx+xbHEo_(SNygc?ztNaN4{Oxb_J@Kh*_%E%JU+wvZ_EU_3-s9N)`b{Lh zTl($)u0=M^>z5(i_Xsx-XgABHg+!h z#PM$~K9V1n^XVXY)4jilxdqZcGyAc}vjLoj?_L#%xfhq&zW*x#eN!yZc&DXnZ-Gn& z)X;}w)B#PFt&&;aW1IpxEx?`ZRdQr``W=)^<4u3Hj+LBmL3rmE6-ZS3Xy2)UxB5s0 zT2A~EfP0C9P4ZX^fOpk@~;a7tgX>Jw$CJc#09``2&x}_&h?S0QH^9|H_a5#N8AN? z8xFuI&yYO+aCAom97A)zUw|cY#Ed?d#axD|YMaILN@?vFd<=iJa7N=@Hv088{5uHj z&}~w#x3P_auglB9LNc!}tF12!@rA{g)@Q~#VyAX8?P10j5Wl&27VH>)?mzp%_{kvK zV0@7i@e_7{Jm0_dgC_Vn=wUgh49Nrc=GXzTeaSBUaL?JcMU3qegKiJ_;IhD6$gMK1 z&C>rfr}qQ2bKUZF9O3o57S-CE00t*xO`zJkLasEs@m;HUoz8XOu#;QIz6CB_VP#$U zucJ}*fi`}1M`h798RL03@CkIEY=f~Uu%)!Bu?o0P>&Npe{W@E8bgR~_p^iaQolbFZ zvQ;(yFJs2QRq*yTi*g$|EE2%i>em>lTn{P&7!RGsexEiv_U?}J{1CW< z5c`~o@e|6pf8-5aSa-H96It(v(*j-Ca}uwafbC5E0DAyO07RB-8Ge+&*amuBC;TIL zvt*a#7ngwg0c*{jE69Epw3dC;N9O`$drXp#{Kvf+VC5bdER5SV=X$DvBka!WJUmD& z`6hCpu^jQnI0sz5;IgYfC?`&n92)0s-fKQ$gZ-alKz|4!s3Sk{7uyEKFMl#Kq~Z(``<;n8GG`~Hkq**G1xAeuia-sFMq^8NG}Gmlb7KCMz!DKuL{Le;jMNeyE$(` zfPxxM=v}J{cPG*5$O z0!Xvai{&r@Vb{$@kRd;fA%6_Z{lEqa{=F!&-7S87EACOGg2u9L#ZctjR|XZmG2+|E zTT#$tzy=>y`NOuuk2{y+ixgh3yndEI$%MY(F`Sd@Wfr@2kY&lZ2JN z9D&K@n-+e<6=9GqhhKvaRT3V<-3C)p|<3{w9BAWnSC1Yu^Uf_y6Q{|(T=oKsW4%%DQY zb@RThx{c$%y%1ntmG0^%Z+!d2!>sq=s&!zs0_sm7F4>5RI+6=YKmbZhMSD;-oK(zA zcqG{|-ttEkwQNnw@i#EcYD} zUgt@G#4O{F={#b79baRB)^IuUI4kA`XsPmgmfgJAW*Ng?IM2K>4}Ew(D9f|#^>LnD z&;s??hO-PO2D|UFp%Hkv`Q0jp*u62F|W7lo;fL>!WSN7ylv^UF~Fb!UD;+!PnQt zl+gWxkYmU5cO-q6(Tu_Hq})E#t=%rrDK;%eCJQ<C_;1G zKf3q%pgpH2`$&>eOl-eX(EKJ|xxZUeT~D1?tECQz{6r{Ao1V}!3~xh>_9nZ_}*ct5x+CXx?Kii@$nTr=XL zc#NE1#{LI>?H^^kKax#H_=f@5J0Nz`Eg2M%k>4T*dVCmMA$I1Mea0S(+b7l}>;h-d zJv^l(U-DSaKPJKQ4W||P33}b~6#S8EBr*D){`mc{pl&IKuv-e9@o(5W4CcN)csC#G zY*a(CFRgjxMdVuRSFE^}S@^0o-{KED2Qw`)Pfd3@D)7@4v}#O6|6GLL%U8Yc_*B3N z?>mrI>2k8W@>W|`w3R;2b?a5hbOK}*&{TSF!2VxsRLQ{OyS3=XpFlJ>eBAn1p9ig{ zHL3ubwl{n|Q5vT%bHJ%kIg&5tj^8)aj?58&k)oc|y;P3w9I`yl3DTuOorjC@|~W<##ZtvI=nGd+&@dmTMb?F8UgU zzPO3#^iu7zcfgz_0Tpzqn|3*Tr5j zZzdmSqt39bll*1R9ZthGNC_Ll>~87#NxlQ)uujZ#YvQ(CfANJr!#TJ40oaQM5=ncL1pPssRf4g#IuOfi+biG5we*0<`K5$=5cDUEw6L<9e}=j=l}Qr{ePK~ zv{Ugv75$3Nsc=8dWxn0qj>ics|3!WsU(ID6Z*25rm$&krnrJ|7M*}w${G4^q$84#;-|x>@F!O^Q#|I;q~N9uxZ{eI!|%NI`N!S zd$Yck&G_6YCom|pq}@oS$$SI|i~wDW)UXmUfyZll3BOb|YQNW;P4m`Ld7w z-Avb=@$g{5w?8njQ2QW81B8%|%&g1Wb^Bx@8?>gKw_zJ3^7`F#cjz<|5Xbz`oJof- zZq64AwCR#*eYHqdgj;*kf>k~^58uKf^{!9%ff}hL{2^izu~`_^*#Uj)c&3Mvo7If**AC| z1K=oNX(<9}?7sjWH2L?JKJs2CY**O-`=e)hu3=OFNA$bAmA6CJ%U@&U48r?8Y~XQA z|FTcbUECQU&aErnqf$FKH456_Vc26P;JaSE$Xk_9SstP@af=1=#@Omj2Pe}tk6h*e z*<~})WnaXB`B2zNS!>K7Fo)Y=3*h>tT#4bEK1Ca?LHNcLo-W1qEBtT(eB~OvvxhZt z(*(f#KX5uZ{ztsJkIk7tC1M(KR^Sw}EmN{~@h^NcVk}=6L+9akUPpK$%a{J=e`kDh z_Tk(c_Q6vP;6rfgi2v;!Zr&0454H6cBe^H9>s+4#J{3-!dpci%6>SyBeZz~3wF0X* zGCzR_(0<#0lD!+>*{3Vw)w!-QSbW>GShHQLdnpwlV9pZ{Z5@EcYYhhOa#u9!oRRv@Fw6AYwc%+fcnPsq-{Dg=NDIt(T)ff_1+w{;&*E96VHCjf@qP-A2G zINJc>$-M%MTGF|S|L;fk8FZ@8g)TT}cK3_0i`{et{|O8-xe$jT@D^YQMRC{R)qm}a zgSm?}J-oAg%iytGxKRVG#H?WV9JO zbH8uC4}d*5hGipehZ%AkgE_E|m4ts8WCOkZH=vUTGXqR|QpL6nfIQm>&>c38HH@5r z7~vQiW;vz@yFU98c2K9w9CP+K?-|J?96tes&1Hab@Wg?iPyQ!j1FZa!Zjfn)u$~(v z#@9psUA4sbD<^Kj@%8kDT4OIZGK}&sttw31{{|RfyaEsgQr-LtwD7!&cQyV5Kv=$N zKKE5g|J1Y~zgdryJwWHFRkEGrt>k($R@Xx3{lzybF#5EBP!>7J~jjc+y zibtj4pkx%lYH$f!MQrDZ$S#u^P?qY~ANQN);yiA)(|H(s1Kq{gh^yQmd`F^J$3M!* zE;#~_kV;kl;9r4`v2hcDk2L2TBbF*K?QRi|&}EGYSwkmTCZU_pX*}}z&xZ@@eNOHR z`KTP4QOV@Ba2aHc{Yy?83{iD=BP2j=!Om|h7z8fpg2DYHRonm<0sKA=Lc$;#|7^#* zZ^W_Yk-`UvE^0OG^7#QfGV(M_dxFCROqz`ZT6gGP8^oAd+&%$75f>P^|99McX0XXj z)OK(dk2zbvbo7%2yeDbTDQ1`hy2+>JeJ9$1B-xHHpgI0Q_qVoJagiFv-u@B~lgEV+ zd=T+XtGjI<>I}P*tSsoY2M^aheb^o{x$fBpp0nN8^EtMO$4#Pbw-$c3ZTEX0_MY@< z%BmN$kcslGZ6MEKgT(Nac|REh>ukTDsHOYqB{x8;OA|+RqdO=2uF!YSQ`2I9FDO=y z*Tyn%ALdk`rIJCxvKF5X7;|58^h47kc>*w1vFPY)(LeEj>hIR))U@C~fv}VQI!^7) zJZi9UmtEJl@{dk0ysEqv*nVTPZp;a2R%_e&_gvX(_2C@7e#|O}!jueo#OYB%86og4 zV)34v#{U}~y1r`uNQImd;~2)E0b_bUtavVP;5YhP&QSnlD0!%F*-u06!3cqNm?~B8 zJ{r3DFX`+8H3(S5ugUB(ylq16;5q~i_F=VM=$wDPH0Ukcsupx zql9}-B&QAlYBxCt=HT1Q*V>5#=t!~+OSa*CxBp!KaS;I)S)QMq5S(Ki;PR6%h_b(6 zZ?xKJoesPJAg2dtF6P^04z|W1P+$ZaOu}^*HsAlbZ6|;`Y;F$R(*?qw_hBa?UFRog z3=sgpR2LHAJ&ff0?WmgDoh=EpKIme^`{%H@hzXk-&);*dy=%K{Fa!Mm=EQr%|K)2k z+(r&#C!&Abaa_bV;^Z2*K=^oELb-_l@I%|L_-Nj9@{C2DTn{{vkEj!%b7g?PX7kVC z@_J=3tQ80T%eC|O$pA*d?!K;Oqp3{m7jhTR>y%U!Jat7|$KIIE`^QMi>n$)+x*bq@ zn)?@CPet}LS8aBpeVW7P7#wwUPfd%y7RkQI#C(-QF9JHAUF&S3^xw39nWN+TZzN~i z>2cNAzHjHSjqyI_vK$sg40Gvq@cRT@;=sWb#eonzZ?j2%NF_s5Ds3hzb7D{9iWKgo^|qz4@z{0s}{G4?B^d z8n2tJ^e@o#apR}H{7BpP(kK!o?CTPzGx={#F7OR8IX<*;D#lg+IVtQwZl}2`*tDB%c8L&Bo&7z1aM9rL zXFuX=M<=_Teoubc0V|s)ZBnlrtpIB21Ynl-P+`!7f_VqF9NQvUkXm7;KeO6C`A2;q z8%Y3OjVhA+x~&qNYqU%Hc}YOpH9r{u-zNy>c1&6E?9*jWeiR$xpFN1}dI!GH6K};z z+5H%SMa8NAuvy*^qG1~t&HGBrmtOE!I}rw}Yn4?B&h7hD(m?Rkam9l-cX zv?%!`88!UZ2?Tgi@dxDR^_Cg>7O4!r81B zgSS{2<+e)#;N~l1pmUX9n)HyNpo*y&p1?qF(+ezre+yJPKw&V(g>l+WAfN+|Hvpr9 z=^bEr;yZz*H+JnZ;P)iU)Q&$-Tc>@JgWGp`rnXc2PIm%l+;^v|Y;@r9I`uipH1(Zi zoIn@$^Jo9w+p>;3pSja8N`gg$W-oNEZ338@+>#up!z_~0c;8n&yN=zCCmZnR&fmD8 zEvP~jyt{^$*=P9Xrb;^Tea~dD>1q zo`A;AhC6vDzk3>o9SDA-SLZd!{bbWgo)iCx?@piM`wn{87a;5Xb(%8E%*D9zilpWR z4d5VZoXF@qJAF^%-~F&3uj0T4vW+E(o%Z+yNLx2^^?by-C!iwf>DtU%nmA#1eXD-? zeT|P6o>Zn>*Z%Z?{Qi|?y^?gwk(EE|zySNZ@#CcUO;HI%voA>yz=MyuOO{yXv14DY z{*tS)0mS^7jM-TV$Vpo`MC(54{KSi)iWcyhttG$`d|LpZ0>31G_|P_2(k>&J?l~hr zA@8j};OEEV6LM>w{tx*IsL|#-1P~?dt9(qH{U}s!m9`5$Lb0>WQ0DjvBsdJ zZU8vqt91z;Q>HMByIhGgE08K9lU%dZO7WXH(HK70}7Trl9ww!HkkRD34-)&k;5uL8UtwzvM*efOl}$p%wUpXA|wZ?`vo z$^3ru$^b^Jo|Z-MGbmxOw65LH6(=MX1#zvbGDz;ak@aNn$qy#Gf7@Wyv2Ig5S$kh~ z0w<-akp)zRs|%9mB9~wSDxsDUdPZ;55PmI_16R!~kFyoDF zk>FU!AFSMn!934fuKqo>g{^EC9$ zb%a1u$fyahP)CI>OORYC7w2Gg&VPuh#U%)d~7;$M5(dN}**c&?V z*#P)4_!J;4^=*M+6JIqCcj*{{Y=w{CO7P&c)+R6}H0gx=#n&uoqCRD~Eyp>(I2=k4 z2s-WWAo6KDfsu(9CxW-2UK8{=}ox*wJS>PUAHBz{ytAu|B@MU01V($XxI^V@m}(wVim; zl_*G4tZ+e@CTx8_%P@^m|9gs=x*rl%{`v^ItN_AQr>@xl{hg1_v4JNQM}9E;IS9&_M1TXy0>^wHci)&swd11MeFv+^DUUGzDf?44$Y;0XEK~Y&r)#4uKdR+sjIR=T zO=}da5G0Fbq0!cP2$=|gBo5v9t5i@NeY02^^DObWz^yb}z_(VX@-$)^udDd45E#M= zSqKs>5{Sp0=Td=Kca;t@(5~dCNDV*~1g;#sM1SK|X)EIr@h>bxofz<@bS$Wtl^j#{ zxebCt19QrDZ~>IZm7Le;ySlyrr2wzk2k=M3zHBHhZ!1jnDdQr{n$KLQ#-u3t3CF() zzrbwC!Uoiv-uXKxTxmBAxrJz@i4v6G3dGM%K4P~ZN}mk7;?r&R;W`lz)hCA+gV!+N z9-vNz<_Y|D(8I-MD&%Fxq`Kt;n!Ql(3gJY*%fP2<$8UTTu2KXtM+PntkV>iN8q#dL2~5!ezqgyw}7tD4dQ9xj^l#2IJ*py@8YSrQZE-cbs^m&{b1v2qqG-)U%XcoxP-yWlcJo^m z%6XFdz=l8RKUQvn!*-nj$zMQ2FUU-T3)QZePQY=uO~vrk?uph(CTuL*uDDKebsId< z-?f?cbDt-0)#aZ6KichpG#9&F`<)(LpPe3^<^=RRuddgm+Z+F#Wb3@%jB9V#X|TL+ z5EQQeQa}FfG-SYbDls)tvZK70cEgU64XZXj` zDOZX;}{7Cv`C{)|3P$C?1 zbND?N(is12O*vhq-=IacBK#0vH1lE0T^VB>qyOvq&p-d%LTVCt2RKfB`o3xV3+*S6 zwkzyU;PS+;1Lsr!9SA)2d)sc;kALrEJlUqp(A)q2;PV!k?b`fh%(^TUSiGZk8jF83 zUT@m|+xVJgT%Tsoead)J=RW=b#5K!TTTJpWh@WEV3t&&L)$Mvyiw(c5r)Zb_OG`;` z$iS0x_jycGr)3M!{1xR(i!4=tF6?~#QwurKMVkb>vH^>|Z`!lVoHXwff>l`Scc#gD zGkXR&cknMwXURg{hn5Q%enfk$yjb8#5Dvi62vuNVN$m8gTr7RR^T2h0!3K&6+e)M$ zA6BAmeY_yU1Xg(x)W@*^NoYOTlYt((g}#!&t&G*MmH1a-SX2miIv=P1^Lad?h-}k& z1~7}Iy9r>Kf=}S_4Lul{XC=H+v)g*{jKMna;(pBUNj~PufbYbE`*zuO0BZ*bCSKEIq080* z;;t{#=*PNDC%q?-v}@DlIgK5+>wVvX$?0>VyQ2sDzV+=+|IK6q-)9;!9^b`u=;Z%0 zsH_0P3jLmdPcgtZg>)PCeO*uf-R%SL#H)VUr|+@&V*s_%sjXJL@5XJgfbE6`$$wB^YRXiz}s-Mag|t zSEEr_MvhW^Q6Fmn#lHb~F;C%=Pc{qNc~>LZC3MziQ6ri?&U!9ozhElt-yi>7?X~Q8 z#o(8*M_=&K)DXZiRFDpGUXmv3OG)r#8KBr$5oaXQweGStf4vx8;Q0J2Zdd!Fr%xLmR(W3*Ro-eEKO9Mllr`%|){m>!x zN_~ZVuIsW^hw22!ioAT?DIRqcW0Lh+u=;~y#y6Y%IA2OXy!bkiD6}{h(&^3jyNf4p zOIr}wkc6_{h6jpc;2uL54;;_8dTny4aNdN#2|zWBB?Pn`Bw7(YL4!%LRnS)0Ems^> zGHI~ax%B0=#}WV1tZQU3ipBIZaj*#a$Ua?mF?vx1@o4(}Y)OwYvYxYiUyPke=!;X= z0d7D3-9-2_y?OFcN<=YU;9>N%0qJ@6KGp!Sr~5MVT%f<_c`#4l4n3=% zOS}R&?BzPjP)j~or8b#slVL18{=eh8E5NMa4siSg-R$QA-IL@~(Ru$Wa|l^i{Gix?&R6E=>TU(V*)ZK+B<$vvhM7+)0uTRwe9UDnPz};26QYpAL~9n zeV)d!1I3fC^nT1^l9g%h058)^A3>Wty{`NHTF#!Elz!J!wNh4sDxc1O+WPoE`CV=k z;acdwe|XNR6%bM7tgr2~=70Awo%}VAOL_yOts4;BSGa_>~|@ zlJx>{8bC5~v-1g{rBe796A_73))3QeojPdPBF3G@Km0-3mcyRBjClU^GU1q#0800I zp0YZ5f3_~K08!Ann$UHw^ysn^DJw(VZ&duoZ4BxL; z^DEd#Gw)SnQXa6DKj6f0=ty8BmE8{xq$BgT<_nDH1FR5rp|juyC;mdeW%3s7a(>5dOKNr z+fMIE<`bPsmN#Ie%dsznI`Z#y-q4(Mf4iN=eA=dQdTQ5gH?^%Xx1)Ere+O^;nd5dZ z5&;5eTYz_dy(!C|?`)^6CHFC#b*`(P*~bWUEZOpLJ@{P<81%#+^GF+9w;WUbIOS#F zR_)7|8_hcR@u@T_fJ^;z^|;iMNB6b%oq-ZQbL`V6tk6f>LOE=yH<_!RIv!gftICPO zj8!X<4yH8ZQPQRS3!8oW;L%Z<*R1BU6Q9}ys9506mf-`mp>eAIvPe+eHA1itf+hv1JMv6B8AqYVpO~;nM)_BEc}RugD1BK2 ztY%*e-Wl_+pM$ys52xSU|1I6ASamSj!Np&|Qs;F77@gm4-^8N>tCMYZ@=ts^trOtd z+38;J_hYn^XQI>TcQD0mciUfq@=m_DG~R&B$sechJ0AV}j&}du``rD6$FK9Pg(&H& zl&nmB5}@!(D*D`IPhN8SK5sek;^&L*VyTnMW_sHf4=4A1>oh%|_Un4rB#-?a#P)2PYlYKa5d)`T1(npsbEFW&D0{w+K zOc-RKI0g@GfCe%M`7l5RK0^tUA*x(vXL6gU`Ti){R`{wbtmH2jfG);G^u||RkKY~6 zX*sf?75QMt1rFrUr^bob`>Kx@{BB18*|2|%TZJ?Xo{E$hA0a*ApKgPCiG?*k)B-0p z0J-{VVon4wSy`)@!tfX(RZxyG>dFiiJ;PZ2aPq+c@!(uhEV2fRss(R9m9kmB5od(h?k$&a79`(=-}y#5TJ1wabVFs=Qo{3L}$f-ZDr z)1T#+0tWXvNN+N5p;^~r^6wlIDS!|3Sr-O}S-@(${C(H!p2w1Z%E$e4>{AbZQ`whf zK7MNHQRtB#B3bYOzJ4I(lc!W!J_`YbtxLXyl`@h1A{Dl>8=y)D@X~Bk#`mIEtvWT$ z_1yJS3xkjew8LR?EsV!8!NwvHZ~4&*s=zD3sHPqUTF}qskOjobo3p&1NrJLi9rk=s zz(=8P4WyFUewVpiZXY*ffG5hE{6Z0r|6-?znPK9`P$MpP)mzo8{KLgdqSH z@hf#rslTC*rHwurIGh96-aQ3HyvJ{e36g4#pIGV@E7h)Bsh?yX6Y@#b!uJ=i9G7C@ zk6{M_`pm%Cr`)$cv>5OuitALZ`J;)&z96VUSg`Vq$pt)UDYNvyrh>97*3-tIpcfqe zJ^`)ozP=K%FAzHZVXLPS?^`dBr)>u&x?N5i+XSDznD6>^S$Yv=`W-CppWj3wF7xbC7 zNM%=bSMl|@`^T;hlRya zO5QUV#__AshmZDWtv0YBl^5tG-IV`+T!`jAcGK>$=cY^To2#hd|Ei%MWKpj&)__(5 zhQ2RB2lhey8(<0X66|&P14t^LZYQ>fc>8dT&=?g_0%{@em4K-V2yAyHR?rHnd7^=p zs|2|c;4S0VY2&ytsMDeofJZzHfb^*_8~%ZR*6)ky8Lz&ExalEC29}ecRDo7T;WrMB z!2_VD$dUpUtEx9h0GO{5{ef|63_oCRHr9DbDvsK{kH5zGx@aHNOdm)a`}a$$yaqee zqydbgkpnWm!bh@&gE%4!pEQa~#28}B?JaGBBP3#tXc|jR-zj~i#_`3IDAfS&Hw?&f z3dJ?~8sanjo^!!>*FXRKvyWC1vKQoD_@+LmjR*S8)@7IgKriMe8vMz9-}2wJ>9Y0h z4UMNZy*<eJk3j9U?TtyQCO_^^xR_6kePG9y;6{JWx^{)KSkQ1Bf%Kk!+r3`tfb$3L>?ytYw68>TC z4^r*Cz;Oa$ep}J^6L*#e;A~>04K!B{T@3r&^Xg4}2XA-=YLBaQH_yMMrciE%56SGc zG;VdGH`e-FDCeZ2&}+JUC=SDSMGAO@CO0RD#B*!u&s~*#PHg6BJ6?mz#jYpWsoiYyRL5pq3f6%iR-;-W<@NnKv zwqrT^ah8wA{@>W5)9Nb*xmlj`OL@1aQzYdfv4Nmc)XyPkNybf2o%vfO!L&qx zgw`gdFPjGa7eCh>lNs-ur`xL?%t7IQuFJ!k@-_a`ycC3=7n^!<{A>A0e#>{Uf}TqF z8v)5zaqRp15y?Fjd@ej4RB*pHfTC~rKx_t7Jp#v55%0Xao}JH|t%Jac_S9$ECY$Y6 zVcyc*@!@_?lZPkJ)@i+w<;^%vc0JMSV4U~Awc82c{skaD$-D!)yLP9sm(A=Mdau*s zR}@eNeImQnaQscYZ5!Vlvl**Z)&z7t2_uU#4Jmw=UZ2?CO)>!i@cH)78;-ETWu$MG z*%`Q+^n$}6I(cAzBNz?hRzsTKJj1a`P-Tm3G+JLylzS*xe z=;E)Tp;8p1OB72>fB?CEd-D>2A4yDZ>OVzs4Vj%m8w=&bLO=+9VLY~=mZu)sA9!N& z`@8{t);CXi13l&GUNXjzKbS@Vf=nBX9pI=aSz!&x;&m1Ctp3%%V2cbc(i`&ohYDRr zAR$f}8l^xlBjrFYv{wn9#kZrsgnU20r69mc;A+PCN6LPv_c40f20&cv3qJf??kQ4m zN_v_UYyyH=yN_DhgT_%bM^GG4=eU%ts2tdTBxFkP5g~Y%F@4QDYtVQ$w?s>b(+K=-!q{u|&#v9Uw<)>OCLS;ZC zLBhRy?BfQ-y4xcG8tcitEqHeGryNwkHRWWvKvPR0PyXM(yfa>lUDyr)UaUi@rcs2+G{q&94Ja*#3Fn}GT{j)YaB$A@e`94) z=pFTLuLK&FHY}U{0FX3Q<0hAAWl5X=qR+}1U;0<@#aI(zk{bXI;L(Uzx`R_vEi4)D zcqR!T%uhau)B9$jL*y?RYJ>Xt+;$IjEZVkQgk!PiN^s{LFTZT1Og52^Km=dNkCV3* zznkP>{aL4oJF+3-_uKg5+<(i1_|tr5@#WEcwfJ`(exB)PQvi_vPtQU9(Y7-voZ59z z(*eo^pg@zsPA`VsuG8-z=?P>^+X-wlpB;eM@!WwH?%(C-z7rVhv?hKhApJD4*tO|x zncf>)oIql?#T%Z}_sKur^xetUw;d3E;=?+=Z(0sPlH;j_JCwV+Wa6MdY{{${r#QhDBebB%3(jVwT2PAc?HAH`DA7MN^Q zetj1H#v5Q9Z#Z59UmJD`= z-a<0DG6W7)ctETS4jF3jKY%y3K^+dIo~Z-m>G3Z;S4F&4Tik#c2BMFJpCVr%*#S0z z`~a55(pDw$j(GKbK1{!Tcr()iPMYtNx9XPxAbpZyiSQ(Vq|;1Q$bXt%+&6RuScDBt zGPe;A4LR6HQs0c3%pn?&=hNgxW6Kjd0KMA;v+;plQZBNA-17z|Fad_$H+K0(-FF$x zQrZ&s>b&uF?JEFv0yewiyaSNjr?;DEL8)HocA#wsWT(V@lKCWm-%bE!2jnIoeUj

UIYW2`IV_;Cn^?e%F7> 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

q1Ut9| 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

Ux0<%?#k9Day@6{0Og4-7QCSF1bg0h)AB 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 literal 0 HcmV?d00001 diff --git a/src/assets/svg/pack-event-collected.svg b/src/assets/svg/pack-event-collected.svg new file mode 100644 index 00000000..b8d557c2 --- /dev/null +++ b/src/assets/svg/pack-event-collected.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/components/PackEventPoster/index.tsx b/src/components/PackEventPoster/index.tsx new file mode 100644 index 00000000..9352d3a7 --- /dev/null +++ b/src/components/PackEventPoster/index.tsx @@ -0,0 +1,240 @@ +import { Box, Flex, Grid, Image } from '@chakra-ui/react' +import { useEffect, useRef, useState } from 'react' +import Bg from '../../assets/share/bg/pack-event.png' +import Collected from '../../assets/img/pack-event-collected.png' +import { PackEventDetailResponse } from '../../models/pack-event' +import { PosterOnLoaded } from '../Share/share.interface' +import FallbackAvatarPath from '../../assets/img/fallback.png' +import { useUrlToBase64 } from '../../hooks/useUrlToBase64' +import { useGetAndSetAuth, useProfile } from '../../hooks/useProfile' +import { Query } from '../../models' +import { useQuery } from 'react-query' +import { useAccount, useAPI } from '../../hooks/useAccount' +import { useTranslation } from 'react-i18next' +import { addParamsToUrl, getNFTQueryParams } from '../../utils' +import { useTextEllipsis } from '../Share/hooks/useTextEllipsis' +import { Progress } from '@mibao-ui/components' +import QRCode from 'qrcode.react' +import PackEventSpecialModalPath from '../../assets/img/pack-event-special.png' + +function useUserInfo() { + const api = useAPI() + const { address } = useAccount() + const getAuth = useGetAndSetAuth() + const { isAuthenticated } = useProfile() + return useQuery( + [Query.Profile, address, api, isAuthenticated], + async () => { + if (isAuthenticated) { + const auth = await getAuth() + return await api.getProfile(address, auth) + } + }, + { + enabled: !!address, + } + ) +} + +export const PackEventPoster: React.FC<{ + onLoaded: PosterOnLoaded + data: PackEventDetailResponse + shareUrl: string +}> = ({ onLoaded, data, shareUrl }) => { + const { t, i18n } = useTranslation('translations') + const ref = useRef(null) + const [isLoaded, setIsLoaded] = useState(false) + const rendered = ref.current !== null + const { data: userInfo, isLoading: isLoadingUserInfo } = useUserInfo() + const { data: avatarUrl, isLoading: avatarUrlLoading } = useUrlToBase64( + addParamsToUrl( + userInfo?.avatar_url as string, + Object.create( + getNFTQueryParams(userInfo?.avatar_tid, i18n.language) || {} + ) + ) ?? '', + { + fallbackImg: FallbackAvatarPath, + size: 100, + toBlob: true, + } + ) + const { data: images, isLoading: isLoadingImages } = useUrlToBase64( + data.pack_options_info + .slice(0, 9) + .map((pack) => + pack.is_special_model && !pack.is_collected + ? PackEventSpecialModalPath + : pack.token_class.bg_image_url + ), + { + size: 600, + toBlob: true, + } + ) + const [nameEllipsis] = useTextEllipsis(data.name || '', 280, { + font: '16px', + }) + const nicknameEllipsis = + userInfo?.nickname && userInfo?.nickname?.length > 18 + ? `${userInfo?.nickname?.substring(0, 18)}…` + : userInfo?.nickname + useEffect(() => { + if ( + !isLoaded && + rendered && + !avatarUrlLoading && + !isLoadingUserInfo && + !isLoadingImages + ) { + setIsLoaded(true) + onLoaded(ref.current) + } + }, [ + avatarUrlLoading, + isLoaded, + isLoadingImages, + isLoadingUserInfo, + onLoaded, + rendered, + ]) + + const isCollected = + data.current_user_record_info && + data.current_user_record_info?.record_items_count >= data.pack_options_count + + return ( + + + + + + + {nicknameEllipsis || t('holder.user-name-empty')} + + + {t('pack-event.collecting-digital-collection-sets')} + + + + + + {images + ?.filter((src) => src) + .map((src, i) => ( + + ))} + + + {nameEllipsis} + + + + + {t('pack-event.collection-progress')} + {isCollected ? ( + + + {t('pack-event.collected')} + + ) : ( + + {data.current_user_record_info?.record_items_count || 0} /{' '} + {data.pack_options_count} + + )} + + + + + {t('common.share.poster.desc-1')} + {t('pack-event.let-go-to-collect')} + + + + + ) +} diff --git a/src/components/Share/index.tsx b/src/components/Share/index.tsx index 6de8712a..62a18a36 100644 --- a/src/components/Share/index.tsx +++ b/src/components/Share/index.tsx @@ -25,7 +25,7 @@ import { useToast } from '../../hooks/useToast' import { Issuer } from './components/posters/issuer' import { Holder } from './components/posters/holder' import styled from '@emotion/styled' -import { PosterType, ShareProps } from './share.interface' +import { DefaultPoster, PosterType, ShareProps } from './share.interface' import { useHistory } from 'react-router-dom' import { IS_ANDROID, IS_WEXIN } from '../../constants' @@ -49,6 +49,13 @@ enum PosterState { Created, } +function posterIsReactNode( + poster: ShareProps['poster'] +): poster is DefaultPoster { + if (!poster) return false + return Object.hasOwnProperty.call(poster, 'type') +} + export const Share: React.FC = ({ isOpen, onClose, @@ -183,26 +190,32 @@ export const Share: React.FC = ({ opacity="0" fontFamily="Poppins" > - {poster.type === PosterType.Nft && ( - - )} - {poster.type === PosterType.Issuer && ( - - )} - {poster.type === PosterType.Holder && ( - + {posterIsReactNode(poster) ? ( + <> + {poster.type === PosterType.Nft && ( + + )} + {poster.type === PosterType.Issuer && ( + + )} + {poster.type === PosterType.Holder && ( + + )} + + ) : ( + poster(onRender) )} ) : null} diff --git a/src/components/Share/share.interface.ts b/src/components/Share/share.interface.ts index 546c6dc6..4372c4e5 100644 --- a/src/components/Share/share.interface.ts +++ b/src/components/Share/share.interface.ts @@ -1,9 +1,12 @@ +import { ReactNode } from 'react' import { HolderProps } from './components/posters/holder' import { IssuerProps } from './components/posters/issuer' import { NftProps } from './components/posters/nft' +export type PosterOnLoaded = (el: HTMLDivElement) => void + export interface PosterProps { - onLoaded: (el: HTMLDivElement) => void + onLoaded: PosterOnLoaded shareUrl?: string } @@ -28,10 +31,14 @@ export interface HolderPoster { data: HolderProps } +export type PosterFn = (onLoaded: PosterOnLoaded) => ReactNode + export interface ShareProps { isOpen: boolean onClose: () => void shareUrl: string - poster?: NftPoster | IssuerPoster | HolderPoster + poster?: DefaultPoster | PosterFn reloadByRoute?: boolean } + +export type DefaultPoster = NftPoster | IssuerPoster | HolderPoster diff --git a/src/hooks/useTrack.ts b/src/hooks/useTrack.ts index 2e2ff482..1e4ecf3e 100644 --- a/src/hooks/useTrack.ts +++ b/src/hooks/useTrack.ts @@ -84,6 +84,7 @@ export const trackLabels = { hold: '持有', like: '赞过', follow: '关注', + packEvent: '套装', }, 'to-nft': '点击进入NFT详情页', 'to-issuer': '点击进入创作者个人主页', @@ -121,6 +122,7 @@ export const trackLabels = { switch: { creartor: '已创作', onsell: '在售', + packEvent: '套装', }, share: '分享', follow: '关注', diff --git a/src/i18n/en.json b/src/i18n/en.json index 6167c9af..f37b46c9 100644 --- a/src/i18n/en.json +++ b/src/i18n/en.json @@ -74,7 +74,8 @@ }, "baned": { "nft": "Invalid Digital Collection", - "issuer": "Invalid creator" + "issuer": "Invalid creator", + "pack-event": "Invalid Collection" }, "colon": ":", "title": "MIBAO", @@ -143,7 +144,16 @@ "link": "Explore Digital Collection Meta-universe", "welcome": "Welcome to Digital Collection universe", "hi": "Hi, Collector", - "share": "Share" + "share": "Share", + "pack-event": "Collections", + "pack-event-text": { + "collecting": "Collecting", + "collected": "Completed", + "collection-progress": "Collection progress", + "total": "• {{total}} collections" + }, + "no-pack-event": "You havn't participated in any collection yet", + "no-more-pack-event": "No More Collection" }, "transfer": { "scan": { @@ -235,7 +245,10 @@ "copy-to-browser": "Please copy the link and open it in your browser to view", "no-support-usdz-ok": "OK", "only-the-owner-can-play": "Only the owner can play", - "song": "Song" + "song": "Song", + "pack-event-count": "Contain {{count}} works", + "pack-event-collected": "Collected {{count}} works", + "belonging-pack-event": "Belong to:" }, "account": { "title": "My Account", @@ -432,13 +445,16 @@ "issuer": { "created": "Created", "selling": "Selling", + "pack-event": "Made", "title": "Issuer", "follower": "Follower", "like": "Like", "no-data": "No data", "more": "More", "sale-empty": "Ahhh ~ No Digaital Collection on sale", - "empty": "Ahhh ~ The issuer haven't created Digital Collection yet" + "empty": "Ahhh ~ The issuer haven't created Digital Collection yet", + "pack-event-count": "Contain {{count}} works", + "no-pack-events": "Ahhh ~ The issuer haven't created Collection yet" }, "exchange": { "home": "My collection", @@ -792,6 +808,14 @@ "1": "2.click", "2": "" } + }, + "pack-event": { + "collection-progress": "My Collection progress", + "collected": "Completed", + "has-token-class": "Contain: ", + "special-token-class": "Special editions: ", + "collecting-digital-collection-sets": "Collecting Digital Collections", + "let-go-to-collect": "Join me to collect" } } } diff --git a/src/i18n/zh.json b/src/i18n/zh.json index 69ae587c..71f6c01f 100644 --- a/src/i18n/zh.json +++ b/src/i18n/zh.json @@ -74,7 +74,8 @@ }, "baned": { "nft": "该秘宝暂不予显示", - "issuer": "该创作者暂不予显示" + "issuer": "该创作者暂不予显示", + "pack-event": "该套装暂不予显示" }, "colon": ":", "title": "秘宝账户", @@ -143,7 +144,16 @@ "link": "探索秘宝的广阔宇宙", "welcome": "欢迎来到秘宝宇宙", "hi": "Hi 秘宝收藏家", - "share": "分享" + "share": "分享", + "pack-event": "套装", + "pack-event-text": { + "collecting": "收集中", + "collected": "已集齐", + "collection-progress": "收集进度", + "total": "• {{total}} 个套装" + }, + "no-pack-event": "尚未参与任何套装收集", + "no-more-pack-event": "没有更多套装了" }, "transfer": { "scan": { @@ -235,7 +245,10 @@ "copy-to-browser": "请复制链接到浏览器中打开\n然后再进入 AR 模式查看", "no-support-usdz-ok": "好吧", "only-the-owner-can-play": "当前藏品仅持有人能播放", - "song": "曲目" + "song": "曲目", + "pack-event-count": "共 {{count}} 款", + "pack-event-collected": "已收集 {{count}} 款", + "belonging-pack-event": "所属套装:" }, "account": { "title": "我的帐号", @@ -432,13 +445,16 @@ "issuer": { "created": "已创作", "selling": "在售", + "pack-event": "创建的套装", "title": "创作者个人主页", "follower": "粉丝", "like": "获赞", "no-data": "无数据", "more": "更多", "sale-empty": "啊哦~暂无售卖的作品", - "empty": "啊哦~暂未创作秘宝" + "empty": "啊哦~暂未创作秘宝", + "pack-event-count": "共 {{count}} 款", + "no-pack-events": "啊哈~发行人还没有创建过套装" }, "exchange": { "home": "我的数字藏品", @@ -796,6 +812,14 @@ "1": "2.点击", "2": "即可" } + }, + "pack-event": { + "collection-progress": "我的收集进度", + "collected": "已集齐", + "has-token-class": "包含藏品:", + "special-token-class": "隐藏款:", + "collecting-digital-collection-sets": "正在收集数字藏品套装", + "let-go-to-collect": "一起来收集吧" } } } diff --git a/src/models/class-list.ts b/src/models/class-list.ts index 1ecc1891..b5b20bf2 100644 --- a/src/models/class-list.ts +++ b/src/models/class-list.ts @@ -57,6 +57,12 @@ export interface TokenClass extends VipInfo, ClassLikes, CardBack { } thumbnail_url?: string script_type: 'cota' | 'm_nft' + pack_event_info?: { + cover_image_url: string + name: string + pack_options_count: number + uuid: string + } } export function isTokenClass(data: any): data is TokenClass { diff --git a/src/models/nft.ts b/src/models/nft.ts index bef25382..5b2963c4 100644 --- a/src/models/nft.ts +++ b/src/models/nft.ts @@ -83,4 +83,11 @@ export interface NFTDetail extends ClassLikes, VipInfo, CardBack { name: string url: string }> + pack_event_info: { + uuid: string + name: string + cover_image_url: string + pack_options_count: number + pack_event_record_items_count: number + } } diff --git a/src/models/pack-event.ts b/src/models/pack-event.ts new file mode 100644 index 00000000..471faebf --- /dev/null +++ b/src/models/pack-event.ts @@ -0,0 +1,61 @@ +import { VipInfo } from './class-list' +import { ListMeta } from './nft' + +export enum PackEventState { + Pending = 'pending', + Completed = 'completed', +} + +export interface PackEventListRecord { + pack_event_info: { + uuid: string + name: string + cover_image_url: string + pack_options_count: number + is_banned: boolean + } + state: PackEventState + record_items_count: number +} + +export interface PackEventListResponse { + pack_event_records: PackEventListRecord[] + meta: ListMeta +} + +export interface PackEventDetailResponse { + uuid: string + name: string + description: string | null + cover_image_url: string + pack_options_count: number + is_banned: boolean + current_user_record_info?: { + state: PackEventState + record_items_count: number + } + pack_options_info: Array<{ + token_class: { + bg_image_url: string + uuid: string + is_banned: boolean + } + is_collected: boolean + is_special_model: boolean + }> + issuer_info: { + name: string + avatar_url: string + uuid: string + } & VipInfo +} + +export interface IssuerPackEventResponse { + pack_events: Array<{ + uuid: string + name: string + cover_image_url: string + pack_options_count: number + }> + meta: ListMeta +} diff --git a/src/models/query.ts b/src/models/query.ts index 3f76c1b2..63a5fb83 100644 --- a/src/models/query.ts +++ b/src/models/query.ts @@ -35,6 +35,9 @@ export enum Query { GetSentRedEnvelopeDetailRewards = 'GetSentRedEnvelopeDetailRewards', GetRedEnvelopeReceived = 'GetRedEnvelopeReceived', Search = 'Search', + PackEventList = 'PackEventList', + IssuerPackEventList = 'IssuerPackEventList', + PackEventDetail = 'PackEventDetail', InitGeeTest = 'InitGeeTest', DetectCotaCell = 'DetectCotaCell', } diff --git a/src/routes/path.ts b/src/routes/path.ts index c7ff03f4..f170366c 100644 --- a/src/routes/path.ts +++ b/src/routes/path.ts @@ -44,6 +44,7 @@ export enum RoutePath { ShareRedEnvelope = '/red-envelope/:id/share', Search = '/search', Flashsigner = '/flashsigner', + PackEvent = '/pack-event', } export enum ProfilePath { diff --git a/src/routes/routes.ts b/src/routes/routes.ts index bb2fd921..565ae370 100644 --- a/src/routes/routes.ts +++ b/src/routes/routes.ts @@ -36,6 +36,7 @@ import { RedEnvelopeRecord } from '../views/RedEnvelopeRecord' import { RedEnvelopeDetail } from '../views/RedEnvelopeDetail' import { ShareRedEnvelope } from '../views/ShareRedEnvelope' import { RedEnvelopeReceived } from '../views/RedEnvelopeReceived' +import { PackEvent } from '../views/PackEvent' const PDFViewer = lazy(async () => await import('../views/PDFViewer')) @@ -320,4 +321,11 @@ export const routes: MibaoRouterProps[] = [ key: 'Flashsigner', path: RoutePath.Flashsigner, }, + { + component: PackEvent, + exact: true, + key: 'PackEvent', + path: RoutePath.PackEvent, + params: '/:id', + }, ] diff --git a/src/utils/url.ts b/src/utils/url.ts index 92626d32..f83c550d 100644 --- a/src/utils/url.ts +++ b/src/utils/url.ts @@ -64,20 +64,26 @@ export function getImagePreviewUrl( if (!url) { return url as any } - const urlObj = new URL(url) - const isOssHost = OSS_IMG_HOSTS.some((host) => url?.startsWith(host)) - const isSvgOrWebp = /\.(svg|webp)$/i.test(urlObj.pathname) - if (!isOssHost || isSvgOrWebp) { + try { + const urlObj = new URL(url) + const isOssHost = OSS_IMG_HOSTS.some((host) => url?.startsWith(host)) + const isSvgOrWebp = /\.(svg|webp)$/i.test(urlObj.pathname) + if (!isOssHost || isSvgOrWebp) { + return url as any + } + const webpParam = isSupportWebp() + ? OSS_IMG_PROCESS_QUERY_KEY_FORMAT_WEBP + : '' + const params: { + [key in typeof OSS_IMG_PROCESS_QUERY_KEY]?: string + } = {} + params[ + OSS_IMG_PROCESS_QUERY_KEY + ] = `${OSS_IMG_PROCESS_QUERY_KEY_SCALE}${size}${webpParam}` + return addParamsToUrl(url, params) as any + } catch { return url as any } - const webpParam = isSupportWebp() ? OSS_IMG_PROCESS_QUERY_KEY_FORMAT_WEBP : '' - const params: { - [key in typeof OSS_IMG_PROCESS_QUERY_KEY]?: string - } = {} - params[ - OSS_IMG_PROCESS_QUERY_KEY - ] = `${OSS_IMG_PROCESS_QUERY_KEY_SCALE}${size}${webpParam}` - return addParamsToUrl(url, params) as any } export const getNFTQueryParams = ( diff --git a/src/views/Issuer/components/empty.tsx b/src/views/Issuer/components/empty.tsx index f9c8faaf..951e71a9 100644 --- a/src/views/Issuer/components/empty.tsx +++ b/src/views/Issuer/components/empty.tsx @@ -2,13 +2,13 @@ import EmptyPath from '../../../assets/img/issuer-empty.png' import { Box, Image } from '@chakra-ui/react' import { useTranslation } from 'react-i18next' -export const Empty: React.FC<{}> = () => { +export const Empty: React.FC<{ description?: string }> = ({ description }) => { const { t } = useTranslation('translations') return ( - {t('issuer.empty')} + {description || t('issuer.empty')} ) diff --git a/src/views/Issuer/components/nftCards.tsx b/src/views/Issuer/components/nftCards.tsx index 66b3157c..ad089c5d 100644 --- a/src/views/Issuer/components/nftCards.tsx +++ b/src/views/Issuer/components/nftCards.tsx @@ -11,7 +11,7 @@ import { import React, { useCallback, useMemo } from 'react' import { useTranslation } from 'react-i18next' import { useRouteQuerySearch } from '../../../hooks/useRouteQuery' -import { PRODUCT_STATUE_SET, ProductState, Query } from '../../../models' +import { PRODUCT_STATUE_SET, Query } from '../../../models' import { useHistory } from 'react-router-dom' import { useAPI } from '../../../hooks/useAccount' import { useParams } from 'react-router' @@ -21,18 +21,20 @@ import FALLBACK from '../../../assets/img/nft-fallback.png' import { Empty } from './empty' import { HEADER_HEIGHT } from '../../../components/Appbar' import { trackLabels, useTrackClick } from '../../../hooks/useTrack' +import { PackEventList } from './packEventList' + +const TabTypes = [...PRODUCT_STATUE_SET, 'pack_event'] as const export const NftCards: React.FC = () => { const { id } = useParams<{ id: string }>() - const [productState, setProductState] = useRouteQuerySearch( - 'productState', - 'product_state' - ) + const [productState, setProductState] = useRouteQuerySearch< + typeof TabTypes[number] + >('type', 'product_state') const { push } = useHistory() const api = useAPI() const { t } = useTranslation('translations') const index = useMemo(() => { - const i = PRODUCT_STATUE_SET.findIndex((item) => item === productState) + const i = TabTypes.findIndex((item) => item === productState) return i !== -1 ? i : 0 }, [productState]) const trackTab = useTrackClick('issuer', 'switchover') @@ -66,7 +68,7 @@ export const NftCards: React.FC = () => { colorScheme="black" align="space-around" index={index} - onChange={(i) => setProductState(PRODUCT_STATUE_SET[i])} + onChange={(i) => setProductState(TabTypes[i])} > { > {t('issuer.created')} + + await trackTab(trackLabels.issuer.switch.packEvent) + } + > + {t('issuer.pack-event')} + @@ -129,6 +138,9 @@ export const NftCards: React.FC = () => { /> ) : null} + + {index === 1 ? : null} + diff --git a/src/views/Issuer/components/packEventList.tsx b/src/views/Issuer/components/packEventList.tsx new file mode 100644 index 00000000..a6172e9c --- /dev/null +++ b/src/views/Issuer/components/packEventList.tsx @@ -0,0 +1,87 @@ +import { Box, Flex, Text } from '@chakra-ui/react' +import { useCallback } from 'react' +import { useTranslation } from 'react-i18next' +import { Link } from 'react-router-dom' +import { InfiniteList } from '../../../components/InfiniteList' +import { useAPI } from '../../../hooks/useAccount' +import { Query } from '../../../models' +import { RoutePath } from '../../../routes' +import { Empty } from './empty' +import { Image } from '@mibao-ui/components' + +export const PackEventList: React.FC<{ + id: string +}> = ({ id }) => { + const { t } = useTranslation('translations') + const api = useAPI() + const getPackEventData = useCallback( + async ({ pageParam }) => { + const { data } = await api.getIssuerPackEventList(id, { + page: pageParam, + }) + return data + }, + [api, id] + ) + + return ( + } + noMoreElement={t('common.actions.pull-to-down')} + calcDataLength={(data) => { + return ( + data?.pages.reduce( + (acc, token) => token.pack_events.length + acc, + 0 + ) ?? 0 + ) + }} + renderItems={(group, i) => { + return group.pack_events.map((event, j: number) => ( + + + + + + {event.name} + + + {t('issuer.pack-event-count', { + count: event.pack_options_count, + })} + + + + + )) + }} + /> + ) +} diff --git a/src/views/NFT/components/description.tsx b/src/views/NFT/components/description.tsx new file mode 100644 index 00000000..288f1d2c --- /dev/null +++ b/src/views/NFT/components/description.tsx @@ -0,0 +1,18 @@ +import { Box } from '@chakra-ui/react' +import { useTranslation } from 'react-i18next' + +export const Description: React.FC<{ + description?: string +}> = ({ description }) => { + const { t } = useTranslation('translations') + return ( + + {description || t('nft.no-desc')} + + ) +} diff --git a/src/views/NFT/components/nftDetail.tsx b/src/views/NFT/components/nftDetail.tsx index a6151770..cf22d386 100644 --- a/src/views/NFT/components/nftDetail.tsx +++ b/src/views/NFT/components/nftDetail.tsx @@ -32,6 +32,8 @@ import { Tag, TagLabel } from '@chakra-ui/react' import { RoutePath } from '../../../routes' import { trackLabels, useTrackClick } from '../../../hooks/useTrack' import styled from 'styled-components' +import { Description } from './description' +import { PackEventInfo } from './packEventInfo' const LinkFlex = styled(Link)` display: flex; @@ -106,14 +108,10 @@ const NftDetailTab: React.FC<{ - - {detail?.description ? detail?.description : t('nft.no-desc')} - + {detail?.pack_event_info ? ( + + ) : null} + diff --git a/src/views/NFT/components/packEventInfo.tsx b/src/views/NFT/components/packEventInfo.tsx new file mode 100644 index 00000000..2781f4b9 --- /dev/null +++ b/src/views/NFT/components/packEventInfo.tsx @@ -0,0 +1,56 @@ +import { NFTDetail } from '../../../models' +import { Box, Flex } from '@chakra-ui/react' +import { useTranslation } from 'react-i18next' +import { Image } from '@mibao-ui/components' +import { Link } from 'react-router-dom' +import { RoutePath } from '../../../routes' +import { TokenClass } from '../../../models/class-list' + +export const PackEventInfo: React.FC<{ + packEventInfo?: NFTDetail['pack_event_info'] | TokenClass['pack_event_info'] +}> = ({ packEventInfo }) => { + const { t } = useTranslation('translations') + + return ( + <> + + {t('nft.belonging-pack-event')} + + + + + + + {packEventInfo?.name} + + + {t('nft.pack-event-count', { + count: packEventInfo?.pack_options_count, + })} + + + + + + + + ) +} diff --git a/src/views/NFTs/components/nftList.tsx b/src/views/NFTs/components/nftList.tsx index 272ca60c..4f3d5779 100644 --- a/src/views/NFTs/components/nftList.tsx +++ b/src/views/NFTs/components/nftList.tsx @@ -10,9 +10,10 @@ import { InfiniteList } from '../../../components/InfiniteList' import { Card } from '../card' import { Tabs, Tab, TabList, TabPanels, TabPanel } from '@mibao-ui/components' import { trackLabels, useTrackClick } from '../../../hooks/useTrack' +import { PackEventList } from './packEventList' import { generateOldAddress } from '../../../utils' -const ListTypeSet = ['owned', 'liked', 'follow'] as const +const ListTypeSet = ['owned', 'liked', 'follow', 'pack_event'] as const type ListType = typeof ListTypeSet[number] export const NftList: React.FC<{ @@ -107,6 +108,16 @@ export const NftList: React.FC<{ > {t('follow.follow')} + {!isHolder ? ( + { + setListType('pack_event') + trackTab(trackLabels.home.switch.packEvent) + }} + > + {t('nfts.pack-event')} + + ) : null} @@ -178,8 +189,10 @@ export const NftList: React.FC<{ ) : null} + {!isHolder ? : null} + {!isHolder && listType === 'pack_event' ? : null} ) } diff --git a/src/views/NFTs/components/packEventList.tsx b/src/views/NFTs/components/packEventList.tsx new file mode 100644 index 00000000..8a9a46c3 --- /dev/null +++ b/src/views/NFTs/components/packEventList.tsx @@ -0,0 +1,203 @@ +import { + Box, + Flex, + Heading, + Tab, + TabList, + TabProps, + Tabs, +} from '@chakra-ui/react' +import { useCallback, useMemo, useState } from 'react' +import { useTranslation } from 'react-i18next' +import { InfiniteList } from '../../../components/InfiniteList' +import { useAPI } from '../../../hooks/useAccount' +import { useGetAndSetAuth } from '../../../hooks/useProfile' +import { Query } from '../../../models' +import { Empty } from '../empty' +import { Image, Progress } from '@mibao-ui/components' +import { Link } from 'react-router-dom' +import styled from '@emotion/styled' +import { useRouteQuerySearch } from '../../../hooks/useRouteQuery' +import { PackEventState } from '../../../models/pack-event' +import { RoutePath } from '../../../routes' +import { ReactComponent as CollectedSvg } from '../../../assets/svg/pack-event-collected.svg' + +export const StyledLink = styled(Link)`` + +const tabSelectedProps: TabProps = { + bg: '#F6F8FA', + rounded: '6px', +} + +export const PackEventList: React.FC<{}> = () => { + const { t } = useTranslation('translations') + const api = useAPI() + const getAuth = useGetAndSetAuth() + const [ + packEventState, + setPackEventState, + ] = useRouteQuerySearch('state', PackEventState.Pending) + const [total, setTotal] = useState(-1) + const getPackEventData = useCallback( + async ({ pageParam }) => { + const auth = await getAuth() + const { data } = await api.getPackEventList(auth, { + page: pageParam, + state: packEventState, + }) + return data + }, + [api, getAuth, packEventState] + ) + const tabIndex = useMemo( + () => + [PackEventState.Pending, PackEventState.Completed].indexOf( + packEventState + ), + [packEventState] + ) + + return ( + <> + + + {total !== -1 ? t('nfts.pack-event-text.total', { total }) : null} + + + + setPackEventState(PackEventState.Pending)} + color="#777E90" + px="6px" + py="4px" + fontSize="12px" + {...(tabIndex === 0 ? tabSelectedProps : {})} + > + {t('nfts.pack-event-text.collecting')} + + setPackEventState(PackEventState.Completed)} + color="#777E90" + px="6px" + py="4px" + fontSize="12px" + {...(tabIndex === 1 ? tabSelectedProps : {})} + > + {t('nfts.pack-event-text.collected')} + + + + + } + noMoreElement={t('nfts.no-more-pack-event')} + onDataChange={(data) => { + setTotal(data?.pages[0].meta.total_count ?? 0) + }} + calcDataLength={(data) => { + return ( + data?.pages.reduce( + (acc, token) => token.pack_event_records.length + acc, + 0 + ) ?? 0 + ) + }} + renderItems={(group, i) => + group.pack_event_records.map((record, j: number) => { + const isCollected = + record.record_items_count >= + record.pack_event_info.pack_options_count + return ( + + + + + + {record.pack_event_info.is_banned + ? t('common.baned.pack-event') + : record.pack_event_info.name} + + {!record.pack_event_info.is_banned ? ( + + + + + {t('nfts.pack-event-text.collection-progress')} + + + {isCollected ? ( + + + + + {t('nfts.pack-event-text.collected')}{' '} + + ) : ( + `${record.record_items_count} / ${record.pack_event_info.pack_options_count}` + )} + + + + ) : null} + + + + ) + }) + } + /> + + ) +} diff --git a/src/views/NFTs/empty.tsx b/src/views/NFTs/empty.tsx index db8b13b2..66e0c091 100644 --- a/src/views/NFTs/empty.tsx +++ b/src/views/NFTs/empty.tsx @@ -28,7 +28,8 @@ const Container = styled.div` export const Empty: React.FC<{ showExplore?: boolean -}> = ({ showExplore = true }) => { + description?: string +}> = ({ showExplore = true, description }) => { const { t } = useTranslation('translations') const listTag = useRouteQuery('list', '') const isLiked = listTag === 'liked' @@ -58,7 +59,7 @@ export const Empty: React.FC<{ }} > {img} -

+
{description || desc}
) } diff --git a/src/views/PackEvent/components/appbar.tsx b/src/views/PackEvent/components/appbar.tsx new file mode 100644 index 00000000..3cfc0131 --- /dev/null +++ b/src/views/PackEvent/components/appbar.tsx @@ -0,0 +1,60 @@ +import { + AppbarButton, + AppbarSticky, + Appbar as RowAppbar, +} from '../../../components/Appbar' +import { useShareDisclosure } from '../../../hooks/useShareDisclosure' +import { PackEventDetailResponse } from '../../../models/pack-event' +import { ReactComponent as ShareSvg } from '../../../assets/svg/share.svg' +import { Suspense } from 'react' +import Share from '../../../components/Share' +import { PackEventPoster } from '../../../components/PackEventPoster' +import { RoutePath } from '../../../routes' + +export const Appbar: React.FC<{ + data?: PackEventDetailResponse + id: string +}> = ({ data, id }) => { + const { + isOpenShare, + onOpenShare, + onCloseShare, + neverOpened, + } = useShareDisclosure() + + return ( + <> + + { + onOpenShare() + }} + > + + + } + /> + + {data && !neverOpened ? ( + + ( + + )} + /> + + ) : null} + + ) +} diff --git a/src/views/PackEvent/index.tsx b/src/views/PackEvent/index.tsx new file mode 100644 index 00000000..cd2f9a69 --- /dev/null +++ b/src/views/PackEvent/index.tsx @@ -0,0 +1,271 @@ +import { useQuery } from 'react-query' +import { useParams } from 'react-router' +import { useAccountStatus, useAPI } from '../../hooks/useAccount' +import { useGetAndSetAuth } from '../../hooks/useProfile' +import { Query } from '../../models' +import { MainContainer } from '../../styles' +import { + Heading, + Image, + Issuer, + NftImage, + Progress, +} from '@mibao-ui/components' +import { + AspectRatio, + Box, + Flex, + Grid, + Icon, + Skeleton, + SkeletonText, + Text, +} from '@chakra-ui/react' +import { useTranslation } from 'react-i18next' +import { useMemo } from 'react' +import { PackEventDetailResponse } from '../../models/pack-event' +import { Link, Redirect } from 'react-router-dom' +import { RoutePath } from '../../routes' +import { Appbar } from './components/appbar' +import PackEventSpecialModalPath from '../../assets/img/pack-event-special.png' +import { ReactComponent as CollectedSvg } from '../../assets/svg/pack-event-collected.svg' + +type PackOptionTokenClasses = PackEventDetailResponse['pack_options_info'] +type NormalTokenClassAndSpecialTokenClass = [ + PackOptionTokenClasses, + PackOptionTokenClasses +] + +const TokenClassList: React.FC<{ + tokenClasses: PackOptionTokenClasses + isLoading?: boolean +}> = ({ tokenClasses, isLoading = false }) => { + const loadingEl = useMemo( + () => + new Array(9).fill(0).map((_, i) => ( + + + + )), + [] + ) + const tokenClassesEl = tokenClasses + .filter((item) => !item.token_class.is_banned) + .map((item, i) => { + const bgImageUrl = + item.token_class.bg_image_url === null + ? '' + : item.token_class.bg_image_url + const src = + item.is_special_model && !item.is_collected + ? PackEventSpecialModalPath + : bgImageUrl + const nftImageEl = ( + + ) + if ( + (item.is_special_model && !item.is_collected) || + item.token_class.is_banned + ) { + return nftImageEl + } + return ( + + {nftImageEl} + + ) + }) + + return ( + + {isLoading ? loadingEl : tokenClassesEl} + + ) +} + +export const PackEvent: React.FC = () => { + const { id } = useParams<{ id: string }>() + const { t } = useTranslation('translations') + const api = useAPI() + const { isLogined } = useAccountStatus() + const getAuth = useGetAndSetAuth() + const { data, isLoading, error, failureCount } = useQuery( + [Query.PackEventDetail, id, api, isLogined], + async () => { + const auth = isLogined ? await getAuth() : undefined + const { data } = await api.getPackEventById(id, { auth }) + return data + }, + { + cacheTime: 0, + } + ) + const [ + normalTokenClass, + specialTokenClass, + ] = useMemo(() => { + if (!data?.pack_options_info) { + return [[], []] + } + return data?.pack_options_info.reduce( + (acc, tokenClass) => { + return [ + acc[0].concat(tokenClass.is_special_model ? [] : [tokenClass]), + acc[1].concat(tokenClass.is_special_model ? [tokenClass] : []), + ] + }, + [[], []] + ) + }, [data?.pack_options_info]) + + if (error && failureCount >= 3) { + return + } + + const isCollected = + data?.current_user_record_info && + data?.current_user_record_info?.record_items_count >= + data?.pack_options_count + + return ( + + + + + + + + {data?.name} + + + + + {data?.description} + + + + + + + + + + {t('pack-event.collection-progress')} + + {data ? ( + + {isCollected ? ( + + + {t('pack-event.collected')} + + ) : ( + `${data?.current_user_record_info?.record_items_count || 0} / ${ + data?.pack_options_count + }` + )} + + ) : null} + + + {data ? ( + + ) : null} + + + + {t('pack-event.has-token-class')} + + + + {specialTokenClass.length ? ( + <> + + + {t('pack-event.special-token-class')} + + + + + ) : null} + + ) +} From 547b61aea1039d77dae99fec7a1c4f1015f215f9 Mon Sep 17 00:00:00 2001 From: yuche Date: Thu, 24 Mar 2022 17:18:46 +0800 Subject: [PATCH 31/37] chore(release): release v2.2.0 --- public/manifest.json | 2 +- src/service-worker.ts | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/public/manifest.json b/public/manifest.json index 7c10959d..af1489cc 100644 --- a/public/manifest.json +++ b/public/manifest.json @@ -1,7 +1,7 @@ { "short_name": "秘宝账户", "name": "秘宝账户", - "version": "2.1.0", + "version": "2.2.0", "icons": [ { "src": "icons/16.png", diff --git a/src/service-worker.ts b/src/service-worker.ts index 1c012201..3b0d6a24 100644 --- a/src/service-worker.ts +++ b/src/service-worker.ts @@ -26,6 +26,7 @@ clientsClaim() // This variable must be present somewhere in your service worker file, // even if you decide not to use precaching. See https://cra.link/PWA precacheAndRoute(self.__WB_MANIFEST) +console.log('Verion: v2.2.0') // Set up App Shell-style routing, so that all navigation requests // are fulfilled with your index.html shell. Learn more at From b7f182d23730691826c9adf7fea79c2e25865c94 Mon Sep 17 00:00:00 2001 From: "lison.yang" Date: Thu, 24 Mar 2022 17:41:48 +0800 Subject: [PATCH 32/37] feat: add flashsigner login track --- src/hooks/useTrack.ts | 1 + src/views/Login/index.tsx | 11 ++++++++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/hooks/useTrack.ts b/src/hooks/useTrack.ts index 1e4ecf3e..2de04be9 100644 --- a/src/hooks/useTrack.ts +++ b/src/hooks/useTrack.ts @@ -59,6 +59,7 @@ export const actions = { export const trackLabels = { login: { + flashsigner: '通过flashsigner登录', unipass: '通过unipass登录', eth: '通过以太坊环境登录', }, diff --git a/src/views/Login/index.tsx b/src/views/Login/index.tsx index 8946089d..974cf456 100644 --- a/src/views/Login/index.tsx +++ b/src/views/Login/index.tsx @@ -258,6 +258,13 @@ export const Login: React.FC = () => { useTrackDidMount('login') + const loginFlashsigner = useTrackEvent( + 'login', + 'click', + trackLabels.login.flashsigner, + loginBtnOnClick.bind(null, WalletType.Flashsigner) + ) + const loginUnipass = useTrackEvent( 'login', 'click', @@ -395,9 +402,7 @@ export const Login: React.FC = () => { isWalletConnectLoging || isFlashsignerLogin } - onClick={async () => - await loginBtnOnClick(WalletType.Flashsigner) - } + onClick={loginFlashsigner} variant={IS_IMTOKEN ? 'outline' : 'solid'} size="lg" > From 7fef893039461283be4a838188d5bd69b00a06f1 Mon Sep 17 00:00:00 2001 From: yuche Date: Fri, 25 Mar 2022 15:22:10 +0800 Subject: [PATCH 33/37] refactor: all unipass/metamask api use old address --- src/hooks/useAccount.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/hooks/useAccount.ts b/src/hooks/useAccount.ts index 32e27c5b..87e78bdd 100644 --- a/src/hooks/useAccount.ts +++ b/src/hooks/useAccount.ts @@ -51,7 +51,7 @@ export function useAccount() { const account = useAtomValue(accountAtom) const address = useMemo(() => { - return account?.address ?? '' + return generateOldAddress(account?.address || '') }, [account?.address]) const pubkey = useMemo(() => { From 6030f9179dbaaeda2a3435075c3d6541f3728ca0 Mon Sep 17 00:00:00 2001 From: yuche Date: Fri, 25 Mar 2022 15:26:02 +0800 Subject: [PATCH 34/37] chore: bump new version --- craco.config.js | 12 ++++++------ public/manifest.json | 2 +- src/service-worker.ts | 3 ++- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/craco.config.js b/craco.config.js index 060a4ded..3a6c7856 100644 --- a/craco.config.js +++ b/craco.config.js @@ -9,12 +9,12 @@ module.exports = { configure: (webpackConfig) => { if (process.env.NODE_ENV === 'production') { // remove console in production - // const TerserPlugin = webpackConfig.optimization.minimizer.find( - // (i) => i.constructor.name === 'TerserPlugin' - // ) - // if (TerserPlugin) { - // TerserPlugin.options.terserOptions.compress.drop_console = true - // } + const TerserPlugin = webpackConfig.optimization.minimizer.find( + (i) => i.constructor.name === 'TerserPlugin' + ) + if (TerserPlugin) { + TerserPlugin.options.terserOptions.compress.drop_console = true + } if (process.env.ANALYZE_BUNDLE) { webpackConfig.plugins.push(new BundleAnalyzerPlugin()) } diff --git a/public/manifest.json b/public/manifest.json index af1489cc..2eec0d68 100644 --- a/public/manifest.json +++ b/public/manifest.json @@ -1,7 +1,7 @@ { "short_name": "秘宝账户", "name": "秘宝账户", - "version": "2.2.0", + "version": "2.2.1", "icons": [ { "src": "icons/16.png", diff --git a/src/service-worker.ts b/src/service-worker.ts index 3b0d6a24..61e37a09 100644 --- a/src/service-worker.ts +++ b/src/service-worker.ts @@ -26,7 +26,8 @@ clientsClaim() // This variable must be present somewhere in your service worker file, // even if you decide not to use precaching. See https://cra.link/PWA precacheAndRoute(self.__WB_MANIFEST) -console.log('Verion: v2.2.0') +const log = console.log +log('Verion: v2.2.1') // Set up App Shell-style routing, so that all navigation requests // are fulfilled with your index.html shell. Learn more at From e829e006f58854fa36361987812adb2c519ee6a3 Mon Sep 17 00:00:00 2001 From: yuche Date: Fri, 25 Mar 2022 15:54:45 +0800 Subject: [PATCH 35/37] fix: profile go back --- src/views/Profile/index.tsx | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/views/Profile/index.tsx b/src/views/Profile/index.tsx index c635ade8..99dba20d 100644 --- a/src/views/Profile/index.tsx +++ b/src/views/Profile/index.tsx @@ -111,7 +111,11 @@ export const Profile: React.FC = () => { ) : ( - } /> + } + onLeftClick={() => history.replace(RoutePath.NFTs)} + />
Date: Fri, 25 Mar 2022 17:25:30 +0800 Subject: [PATCH 36/37] refactor: change cache key --- public/manifest.json | 2 +- src/hooks/useAccount.ts | 2 +- src/hooks/useProfile.ts | 2 +- src/service-worker.ts | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/public/manifest.json b/public/manifest.json index 2eec0d68..8c371fd0 100644 --- a/public/manifest.json +++ b/public/manifest.json @@ -1,7 +1,7 @@ { "short_name": "秘宝账户", "name": "秘宝账户", - "version": "2.2.1", + "version": "2.2.2", "icons": [ { "src": "icons/16.png", diff --git a/src/hooks/useAccount.ts b/src/hooks/useAccount.ts index 87e78bdd..92b35782 100644 --- a/src/hooks/useAccount.ts +++ b/src/hooks/useAccount.ts @@ -26,7 +26,7 @@ export enum WalletType { Flashsigner = 'flashsigner', } -export const UNIPASS_ACCOUNT_KEY = 'unipass_account_key_v2' +export const UNIPASS_ACCOUNT_KEY = 'unipass_account_key_v2.2' export interface UnipassAccount { address: string diff --git a/src/hooks/useProfile.ts b/src/hooks/useProfile.ts index c6547928..2c0428f1 100644 --- a/src/hooks/useProfile.ts +++ b/src/hooks/useProfile.ts @@ -32,7 +32,7 @@ export interface Auths { } const profileAtom = atomWithStorage( - 'mibao_account_profile_v2', + 'mibao_account_profile_v2.2', null ) diff --git a/src/service-worker.ts b/src/service-worker.ts index 61e37a09..e47cc93f 100644 --- a/src/service-worker.ts +++ b/src/service-worker.ts @@ -27,7 +27,7 @@ clientsClaim() // even if you decide not to use precaching. See https://cra.link/PWA precacheAndRoute(self.__WB_MANIFEST) const log = console.log -log('Verion: v2.2.1') +log('Verion: v2.2.2') // Set up App Shell-style routing, so that all navigation requests // are fulfilled with your index.html shell. Learn more at From ce1491381ac52cb10432d2e943a5fcab97fbd56d Mon Sep 17 00:00:00 2001 From: yuche Date: Tue, 29 Mar 2022 14:11:37 +0800 Subject: [PATCH 37/37] chore(release): v2.2.3 --- public/manifest.json | 2 +- src/service-worker.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/public/manifest.json b/public/manifest.json index 8c371fd0..3caca688 100644 --- a/public/manifest.json +++ b/public/manifest.json @@ -1,7 +1,7 @@ { "short_name": "秘宝账户", "name": "秘宝账户", - "version": "2.2.2", + "version": "2.2.3", "icons": [ { "src": "icons/16.png", diff --git a/src/service-worker.ts b/src/service-worker.ts index e47cc93f..5729a029 100644 --- a/src/service-worker.ts +++ b/src/service-worker.ts @@ -27,7 +27,7 @@ clientsClaim() // even if you decide not to use precaching. See https://cra.link/PWA precacheAndRoute(self.__WB_MANIFEST) const log = console.log -log('Verion: v2.2.2') +log('Verion: v2.2.3') // Set up App Shell-style routing, so that all navigation requests // are fulfilled with your index.html shell. Learn more at