@daimo/pay 0.3.5 → 0.3.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/index.es.js +49 -38
- package/build/index.es.js.map +1 -1
- package/build/packages/paykit/packages/connectkit/src/assets/chains.d.ts +14 -14
- package/build/packages/paykit/packages/connectkit/src/components/Common/Alert/types.d.ts +0 -1
- package/build/packages/paykit/packages/connectkit/src/components/Common/ChainSelectList/index.d.ts +1 -1
- package/build/packages/paykit/packages/connectkit/src/components/Common/CopyToClipboard/CopyToClipboardIcon.d.ts +2 -2
- package/build/packages/paykit/packages/connectkit/src/components/Common/OptionsList/index.d.ts +2 -3
- package/build/packages/paykit/packages/connectkit/src/components/Common/OrderHeader/index.d.ts +1 -1
- package/build/packages/paykit/packages/connectkit/src/components/Common/Portal/index.d.ts +0 -1
- package/build/packages/paykit/packages/connectkit/src/components/Common/ScrollArea/index.d.ts +3 -3
- package/build/packages/paykit/packages/connectkit/src/components/Common/Tooltip/types.d.ts +0 -1
- package/build/packages/paykit/packages/connectkit/src/components/ConnectModal/index.d.ts +0 -1
- package/build/packages/paykit/packages/connectkit/src/components/Spinners/CircleSpinner/index.d.ts +4 -4
- package/build/packages/paykit/packages/connectkit/src/components/Spinners/SquircleSpinner/index.d.ts +1 -1
- package/build/packages/paykit/packages/connectkit/src/components/contexts/web3/index.d.ts +1 -1
- package/build/packages/paykit/packages/connectkit/src/hooks/useConnect.d.ts +11 -11
- package/build/packages/paykit/packages/connectkit/src/hooks/useDaimoPayStatus.d.ts +1 -7
- package/build/packages/paykit/packages/connectkit/src/hooks/useFitText.d.ts +0 -1
- package/build/packages/paykit/packages/connectkit/src/hooks/useLockBodyScroll.d.ts +0 -1
- package/build/packages/paykit/packages/connectkit/src/utils/getPaymentInfo.d.ts +1 -2
- package/build/packages/paykit/packages/connectkit/src/utils/index.d.ts +6 -7
- package/build/packages/paykit/packages/connectkit/src/wallets/walletConfigs.d.ts +0 -1
- package/package.json +3 -3
package/build/index.es.js
CHANGED
|
@@ -5,7 +5,7 @@ import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
|
5
5
|
import { detect } from 'detect-browser';
|
|
6
6
|
import React, { useEffect, useState, useCallback, useRef, useLayoutEffect, useMemo, createContext, createElement } from 'react';
|
|
7
7
|
import { Buffer } from 'buffer';
|
|
8
|
-
import { readDaimoPayOrderID, assert, assertNotNull, DaimoPayOrderMode, DaimoPayOrderStatusDest, capitalize, ExternalPaymentOptions, getAddressContraction, getDisplayPrice, writeDaimoPayOrderID, DaimoPayOrderStatusSource } from '@daimo/common';
|
|
8
|
+
import { readDaimoPayOrderID, assert, assertNotNull, DaimoPayOrderMode, DaimoPayOrderStatusDest, capitalize, ExternalPaymentOptions, getAddressContraction, getDisplayPrice, writeDaimoPayOrderID, DaimoPayIntentStatus, DaimoPayOrderStatusSource } from '@daimo/common';
|
|
9
9
|
import styled$1, { css, keyframes, ThemeProvider } from 'styled-components';
|
|
10
10
|
import { erc20Abi, getChainName, ethereum, arbitrum as arbitrum$1, base as base$2, optimism as optimism$1, polygon as polygon$1, ethereumSepolia, baseSepolia as baseSepolia$1, getChainExplorerTxUrl } from '@daimo/contract';
|
|
11
11
|
import { zeroAddress, parseUnits } from 'viem';
|
|
@@ -900,7 +900,7 @@ const trpc = createTRPCClient({
|
|
|
900
900
|
],
|
|
901
901
|
});
|
|
902
902
|
|
|
903
|
-
function getPaymentInfo() {
|
|
903
|
+
function getPaymentInfo(log) {
|
|
904
904
|
// Wallet state.
|
|
905
905
|
const { address: senderAddr } = useAccount();
|
|
906
906
|
const { writeContractAsync } = useWriteContract();
|
|
@@ -918,7 +918,7 @@ function getPaymentInfo() {
|
|
|
918
918
|
platform: detectPlatform(window.navigator.userAgent),
|
|
919
919
|
refundAddress: senderAddr,
|
|
920
920
|
});
|
|
921
|
-
|
|
921
|
+
log(`[CHECKOUT] Hydrated order: ${JSON.stringify(hydratedOrder)}, checking out with ${tokenAmount.token.token}`);
|
|
922
922
|
const txHash = await (async () => {
|
|
923
923
|
try {
|
|
924
924
|
if (tokenAmount.token.token === zeroAddress) {
|
|
@@ -979,7 +979,7 @@ function getPaymentInfo() {
|
|
|
979
979
|
setDaimoPayOrder(order);
|
|
980
980
|
}, [daimoPayOrder?.id]);
|
|
981
981
|
const setChosenUsd = (usdAmount) => {
|
|
982
|
-
|
|
982
|
+
log(`[CHECKOUT] Setting chosen USD amount to ${usdAmount}`);
|
|
983
983
|
assert(!!daimoPayOrder);
|
|
984
984
|
const token = daimoPayOrder.destFinalCallTokenAmount.token;
|
|
985
985
|
const tokenAmount = parseUnits((usdAmount / token.usd).toString(), token.decimals);
|
|
@@ -1005,7 +1005,7 @@ function getPaymentInfo() {
|
|
|
1005
1005
|
console.error(`[CHECKOUT] No order found for ${payId}`);
|
|
1006
1006
|
return;
|
|
1007
1007
|
}
|
|
1008
|
-
|
|
1008
|
+
log(`[CHECKOUT] Parsed order: ${JSON.stringify(order)}`);
|
|
1009
1009
|
setDaimoPayOrder(order);
|
|
1010
1010
|
}, [daimoPayOrder]);
|
|
1011
1011
|
return {
|
|
@@ -2164,7 +2164,7 @@ const ResetContainer = styled(motion.div) `
|
|
|
2164
2164
|
`;
|
|
2165
2165
|
|
|
2166
2166
|
var name = "@daimo/pay";
|
|
2167
|
-
var version = "0.3.
|
|
2167
|
+
var version = "0.3.6";
|
|
2168
2168
|
var author = "Daimo";
|
|
2169
2169
|
var homepage = "https://pay.daimo.com";
|
|
2170
2170
|
var license = "BSD-2-Clause license";
|
|
@@ -2203,8 +2203,8 @@ var keywords = [
|
|
|
2203
2203
|
"crypto"
|
|
2204
2204
|
];
|
|
2205
2205
|
var dependencies = {
|
|
2206
|
-
"@daimo/common": "0.3.
|
|
2207
|
-
"@daimo/contract": "0.3.
|
|
2206
|
+
"@daimo/common": "0.3.6",
|
|
2207
|
+
"@daimo/contract": "0.3.6",
|
|
2208
2208
|
"@trpc/client": "^11.0.0-next-beta.318",
|
|
2209
2209
|
"@trpc/server": "^11.0.0-next-beta.318",
|
|
2210
2210
|
buffer: "^6.0.3",
|
|
@@ -6609,6 +6609,7 @@ const ScrollAreaContainer = styled.div `
|
|
|
6609
6609
|
|
|
6610
6610
|
const ArrowDown = () => (jsx("svg", { width: "11", height: "12", viewBox: "0 0 11 12", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: jsx("path", { d: "M5.49438 1L5.49438 11M5.49438 11L9.5 7M5.49438 11L1.5 7", stroke: "currentColor", strokeWidth: "1.75", strokeLinecap: "round", strokeLinejoin: "round" }) }));
|
|
6611
6611
|
const ScrollArea = ({ children, height, backgroundColor, mobileDirection, }) => {
|
|
6612
|
+
const { log } = useContext();
|
|
6612
6613
|
const ref = useRef(null);
|
|
6613
6614
|
const moreRef = useRef(null);
|
|
6614
6615
|
const isMobile = useIsMobile();
|
|
@@ -6622,7 +6623,7 @@ const ScrollArea = ({ children, height, backgroundColor, mobileDirection, }) =>
|
|
|
6622
6623
|
moreRef.current.classList.remove("hide");
|
|
6623
6624
|
}
|
|
6624
6625
|
}
|
|
6625
|
-
|
|
6626
|
+
log(`[SCROLL AREA]: ${el.scrollHeight}, ${el.clientHeight}`);
|
|
6626
6627
|
const handleScroll = (e) => {
|
|
6627
6628
|
const { scrollTop, scrollHeight, clientHeight, scrollLeft, scrollWidth, clientWidth, } = e.target;
|
|
6628
6629
|
if (moreRef.current) {
|
|
@@ -6959,6 +6960,7 @@ const InputField = styled(motion.input) `
|
|
|
6959
6960
|
line-height: inherit;
|
|
6960
6961
|
font-size: inherit;
|
|
6961
6962
|
font-weight: inherit;
|
|
6963
|
+
color: inherit;
|
|
6962
6964
|
border: none;
|
|
6963
6965
|
padding: 0;
|
|
6964
6966
|
&:focus {
|
|
@@ -10038,8 +10040,10 @@ const Confirmation = () => {
|
|
|
10038
10040
|
}, [refreshOrder]);
|
|
10039
10041
|
const { done, txURL, currency } = (() => {
|
|
10040
10042
|
if (daimoPayOrder && daimoPayOrder.mode === DaimoPayOrderMode.HYDRATED) {
|
|
10041
|
-
if (daimoPayOrder.destStatus ===
|
|
10042
|
-
|
|
10043
|
+
if (daimoPayOrder.destStatus ===
|
|
10044
|
+
DaimoPayOrderStatusDest.FAST_FINISH_SUBMITTED || // Frontends are optimistic, assume submits will be successful
|
|
10045
|
+
daimoPayOrder.destStatus === DaimoPayOrderStatusDest.FAST_FINISHED ||
|
|
10046
|
+
daimoPayOrder.destStatus === DaimoPayOrderStatusDest.CLAIM_SUCCESSFUL) {
|
|
10043
10047
|
const txHash = daimoPayOrder.destFastFinishTxHash ?? daimoPayOrder.destClaimTxHash;
|
|
10044
10048
|
const chainId = daimoPayOrder.destFinalCallTokenAmount.token.chainId;
|
|
10045
10049
|
const currency = `${capitalize(getChainName(chainId))} ${daimoPayOrder.destFinalCallTokenAmount.token.symbol}`;
|
|
@@ -10131,7 +10135,7 @@ var PayState;
|
|
|
10131
10135
|
PayState["RequestSuccessful"] = "Payment Successful";
|
|
10132
10136
|
})(PayState || (PayState = {}));
|
|
10133
10137
|
const PayWithToken = () => {
|
|
10134
|
-
const { triggerResize, paymentInfo, setRoute } = useContext();
|
|
10138
|
+
const { triggerResize, paymentInfo, setRoute, log } = useContext();
|
|
10135
10139
|
const { selectedTokenOption, payWithToken } = paymentInfo;
|
|
10136
10140
|
const [payState, setPayState] = useState(PayState.RequestingPayment);
|
|
10137
10141
|
const walletChainId = useChainId();
|
|
@@ -10160,7 +10164,7 @@ const PayWithToken = () => {
|
|
|
10160
10164
|
setPayState(PayState.SwitchingChain);
|
|
10161
10165
|
const switchChain = await trySwitchingChain(option);
|
|
10162
10166
|
if (!switchChain) {
|
|
10163
|
-
console.
|
|
10167
|
+
console.error("Switching chain failed");
|
|
10164
10168
|
setPayState(PayState.RequestCancelled);
|
|
10165
10169
|
return;
|
|
10166
10170
|
}
|
|
@@ -10176,7 +10180,7 @@ const PayWithToken = () => {
|
|
|
10176
10180
|
if (e?.name === "ConnectorChainMismatchError") {
|
|
10177
10181
|
// Workaround for Rainbow wallet bug -- user is able to switch chain without
|
|
10178
10182
|
// the wallet updating the chain ID for wagmi.
|
|
10179
|
-
|
|
10183
|
+
log("Chain mismatch detected, attempting to switch and retry");
|
|
10180
10184
|
const switchSuccessful = await trySwitchingChain(option, true);
|
|
10181
10185
|
if (switchSuccessful) {
|
|
10182
10186
|
try {
|
|
@@ -10434,10 +10438,10 @@ const OptionsContainer = styled.div `
|
|
|
10434
10438
|
`;
|
|
10435
10439
|
|
|
10436
10440
|
const OptionsList = ({ options, isLoading, requiredSkeletons, }) => {
|
|
10437
|
-
const { triggerResize } = useContext();
|
|
10441
|
+
const { triggerResize, log } = useContext();
|
|
10438
10442
|
const optionsLength = options.length;
|
|
10439
10443
|
useEffect(() => {
|
|
10440
|
-
|
|
10444
|
+
log(`[OPTIONS RESIZE]: ${optionsLength}, triggering resize`);
|
|
10441
10445
|
if (optionsLength > 0) {
|
|
10442
10446
|
triggerResize();
|
|
10443
10447
|
}
|
|
@@ -10649,6 +10653,7 @@ const SelectToken = () => {
|
|
|
10649
10653
|
useEffect(() => {
|
|
10650
10654
|
if (!payerAddress || !daimoPayOrder)
|
|
10651
10655
|
return;
|
|
10656
|
+
setPaymentOptions(null);
|
|
10652
10657
|
setIsLoadingOptions(true);
|
|
10653
10658
|
const destChainId = daimoPayOrder.destFinalCallTokenAmount.token.chainId;
|
|
10654
10659
|
trpc.getWalletPaymentOptions
|
|
@@ -10666,7 +10671,7 @@ const SelectToken = () => {
|
|
|
10666
10671
|
justifyContent: "center",
|
|
10667
10672
|
paddingTop: 16,
|
|
10668
10673
|
paddingBottom: 16,
|
|
10669
|
-
}, children: [jsx(ModalH1, { children: "Insufficient balance. Please select an alternative payment method." }), jsx(Button, { onClick: () => setRoute(ROUTES.SELECT_METHOD), children: "Select
|
|
10674
|
+
}, children: [jsx(ModalH1, { children: "Insufficient balance. Please select an alternative payment method." }), jsx(Button, { onClick: () => setRoute(ROUTES.SELECT_METHOD), children: "Select Another Method" })] })), jsx(OptionsList, { requiredSkeletons: 4, isLoading: isLoadingOptions, options: paymentOptions?.map((option) => {
|
|
10670
10675
|
const capitalizedChainName = capitalize(getChainName(option.required.token.chainId));
|
|
10671
10676
|
const title = `${getDisplayPrice(option.required)} ${option.required.token.symbol} on ${capitalizedChainName}`;
|
|
10672
10677
|
const subtitle = `Balance: ${getDisplayPrice(option.balance)} ${option.balance.token.symbol}`;
|
|
@@ -10688,6 +10693,7 @@ const SelectToken = () => {
|
|
|
10688
10693
|
const WaitingOther = () => {
|
|
10689
10694
|
const { triggerResize, paymentInfo, setRoute } = useContext();
|
|
10690
10695
|
const { selectedExternalOption, payWithExternal, paymentWaitingMessage, daimoPayOrder, } = paymentInfo;
|
|
10696
|
+
const [externalURL, setExternalURL] = useState(null);
|
|
10691
10697
|
useEffect(() => {
|
|
10692
10698
|
const checkForSourcePayment = async () => {
|
|
10693
10699
|
if (!daimoPayOrder)
|
|
@@ -10702,6 +10708,20 @@ const WaitingOther = () => {
|
|
|
10702
10708
|
const interval = setInterval(checkForSourcePayment, 1000);
|
|
10703
10709
|
return () => clearInterval(interval);
|
|
10704
10710
|
}, [daimoPayOrder?.id]);
|
|
10711
|
+
useEffect(() => {
|
|
10712
|
+
if (!selectedExternalOption)
|
|
10713
|
+
return;
|
|
10714
|
+
payWithExternal(selectedExternalOption.id).then((url) => {
|
|
10715
|
+
setExternalURL(url);
|
|
10716
|
+
setTimeout(() => {
|
|
10717
|
+
window.open(url, "_blank");
|
|
10718
|
+
});
|
|
10719
|
+
});
|
|
10720
|
+
}, [selectedExternalOption]);
|
|
10721
|
+
const waitingMessageLength = paymentWaitingMessage?.length;
|
|
10722
|
+
useEffect(() => {
|
|
10723
|
+
triggerResize();
|
|
10724
|
+
}, [waitingMessageLength, externalURL]);
|
|
10705
10725
|
if (!selectedExternalOption) {
|
|
10706
10726
|
return jsx(PageContent, {});
|
|
10707
10727
|
}
|
|
@@ -10713,23 +10733,10 @@ const WaitingOther = () => {
|
|
|
10713
10733
|
return (jsx(SquircleSpinner, { logo: jsx("img", { src: selectedExternalOption.logoURI }), connecting: true }));
|
|
10714
10734
|
}
|
|
10715
10735
|
})();
|
|
10716
|
-
|
|
10717
|
-
|
|
10718
|
-
|
|
10719
|
-
|
|
10720
|
-
// We need to trigger this in the main thread:
|
|
10721
|
-
// https://stackoverflow.com/a/39387533
|
|
10722
|
-
const windowOpen = window.open("about:blank", "_blank");
|
|
10723
|
-
payWithExternal(selectedExternalOption.id).then((url) => {
|
|
10724
|
-
if (windowOpen)
|
|
10725
|
-
windowOpen.location.href = url;
|
|
10726
|
-
});
|
|
10727
|
-
}, [selectedExternalOption]);
|
|
10728
|
-
const waitingMessageLength = paymentWaitingMessage?.length;
|
|
10729
|
-
useEffect(() => {
|
|
10730
|
-
triggerResize();
|
|
10731
|
-
}, [waitingMessageLength]);
|
|
10732
|
-
return (jsxs(PageContent, { children: [jsx(LoadingContainer, { children: jsx(AnimationContainer, { "$circle": selectedExternalOption.logoShape === "circle", children: jsx(AnimatePresence, { children: optionSpinner }) }) }), jsxs(ModalContent, { style: { marginLeft: 24, marginRight: 24 }, children: [jsx(ModalH1, { children: "Waiting for Payment" }), paymentWaitingMessage && (jsx(ModalBody, { style: { marginTop: 12 }, children: paymentWaitingMessage }))] })] }));
|
|
10736
|
+
return (jsxs(PageContent, { children: [jsx(LoadingContainer, { children: jsx(AnimationContainer, { "$circle": selectedExternalOption.logoShape === "circle", children: jsx(AnimatePresence, { children: optionSpinner }) }) }), jsxs(ModalContent, { style: { marginLeft: 24, marginRight: 24 }, children: [jsx(ModalH1, { children: "Waiting for Payment" }), paymentWaitingMessage && (jsx(ModalBody, { style: { marginTop: 12, marginBottom: 12 }, children: paymentWaitingMessage })), jsx(Button, { icon: jsx(ExternalLinkIcon, {}), onClick: () => {
|
|
10737
|
+
if (externalURL)
|
|
10738
|
+
window.open(externalURL, "_blank");
|
|
10739
|
+
}, children: "Open in New Tab" })] })] }));
|
|
10733
10740
|
};
|
|
10734
10741
|
const LoadingContainer = styled(motion.div) `
|
|
10735
10742
|
display: flex;
|
|
@@ -10820,7 +10827,9 @@ const ConnectModal = ({ mode = "auto", theme = "auto", customTheme = customTheme
|
|
|
10820
10827
|
context.setOpen(false);
|
|
10821
10828
|
}
|
|
10822
10829
|
useEffect(() => {
|
|
10823
|
-
if (context.route === ROUTES.CONNECT ||
|
|
10830
|
+
if (context.route === ROUTES.CONNECT ||
|
|
10831
|
+
context.route === ROUTES.CONNECTORS ||
|
|
10832
|
+
context.route === ROUTES.MOBILECONNECTORS) {
|
|
10824
10833
|
if (isConnected) {
|
|
10825
10834
|
context.setRoute(ROUTES.SELECT_TOKEN);
|
|
10826
10835
|
}
|
|
@@ -10963,7 +10972,7 @@ const DaimoPayProvider = ({ children, theme = "auto", mode = "auto", customTheme
|
|
|
10963
10972
|
}
|
|
10964
10973
|
}, [injectedConnector]);
|
|
10965
10974
|
const log = debugMode ? console.log : () => { };
|
|
10966
|
-
const paymentInfo = getPaymentInfo();
|
|
10975
|
+
const paymentInfo = getPaymentInfo(log);
|
|
10967
10976
|
const loadPayment = async (payId) => {
|
|
10968
10977
|
await paymentInfo.setPayId(payId);
|
|
10969
10978
|
const daimoPayOrder = paymentInfo.daimoPayOrder;
|
|
@@ -11375,9 +11384,11 @@ function useDaimoPayStatus() {
|
|
|
11375
11384
|
const order = paymentInfo.daimoPayOrder;
|
|
11376
11385
|
const paymentId = writeDaimoPayOrderID(order.id);
|
|
11377
11386
|
if (order.mode === DaimoPayOrderMode.HYDRATED) {
|
|
11378
|
-
if (order.
|
|
11387
|
+
if (order.intentStatus != DaimoPayIntentStatus.PENDING) {
|
|
11379
11388
|
return {
|
|
11380
|
-
status:
|
|
11389
|
+
status: order.intentStatus === DaimoPayIntentStatus.SUCCESSFUL
|
|
11390
|
+
? "payment_completed"
|
|
11391
|
+
: "payment_bounced",
|
|
11381
11392
|
paymentId,
|
|
11382
11393
|
};
|
|
11383
11394
|
}
|
package/build/index.es.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.es.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
1
|
+
{"version":3,"file":"index.es.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -7,7 +7,7 @@ export declare const Optimism: ({ testnet, ...props }: Logo) => import("react/js
|
|
|
7
7
|
export declare const Arbitrum: ({ testnet, ...props }: Logo) => import("react/jsx-runtime").JSX.Element;
|
|
8
8
|
export declare const Telos: ({ testnet, ...props }: Logo) => import("react/jsx-runtime").JSX.Element;
|
|
9
9
|
export declare const Base: ({ testnet, ...props }: {
|
|
10
|
-
testnet?: boolean
|
|
10
|
+
testnet?: boolean;
|
|
11
11
|
}) => import("react/jsx-runtime").JSX.Element;
|
|
12
12
|
export declare const chainToLogo: {
|
|
13
13
|
[x: number]: import("react/jsx-runtime").JSX.Element;
|
|
@@ -15,30 +15,30 @@ export declare const chainToLogo: {
|
|
|
15
15
|
declare const _default: {
|
|
16
16
|
UnknownChain: ({ testnet, ...props }: Logo) => import("react/jsx-runtime").JSX.Element;
|
|
17
17
|
Base: ({ testnet, ...props }: {
|
|
18
|
-
testnet?: boolean
|
|
18
|
+
testnet?: boolean;
|
|
19
19
|
}) => import("react/jsx-runtime").JSX.Element;
|
|
20
20
|
Ethereum: ({ testnet, ...props }: Logo) => import("react/jsx-runtime").JSX.Element;
|
|
21
21
|
Polygon: ({ testnet, ...props }: Logo) => import("react/jsx-runtime").JSX.Element;
|
|
22
22
|
Optimism: ({ testnet, ...props }: Logo) => import("react/jsx-runtime").JSX.Element;
|
|
23
23
|
Arbitrum: ({ testnet, ...props }: Logo) => import("react/jsx-runtime").JSX.Element;
|
|
24
24
|
Aurora: ({ testnet, ...props }: {
|
|
25
|
-
testnet?: boolean
|
|
25
|
+
testnet?: boolean;
|
|
26
26
|
}) => import("react/jsx-runtime").JSX.Element;
|
|
27
27
|
Avalanche: ({ testnet, ...props }: {
|
|
28
|
-
testnet?: boolean
|
|
28
|
+
testnet?: boolean;
|
|
29
29
|
}) => import("react/jsx-runtime").JSX.Element;
|
|
30
30
|
Celo: ({ testnet, ...props }: {
|
|
31
|
-
testnet?: boolean
|
|
31
|
+
testnet?: boolean;
|
|
32
32
|
}) => import("react/jsx-runtime").JSX.Element;
|
|
33
33
|
Telos: ({ testnet, ...props }: Logo) => import("react/jsx-runtime").JSX.Element;
|
|
34
34
|
Gnosis: ({ testnet, ...props }: {
|
|
35
|
-
testnet?: boolean
|
|
35
|
+
testnet?: boolean;
|
|
36
36
|
}) => import("react/jsx-runtime").JSX.Element;
|
|
37
37
|
Evmos: ({ testnet, ...props }: {
|
|
38
|
-
testnet?: boolean
|
|
38
|
+
testnet?: boolean;
|
|
39
39
|
}) => import("react/jsx-runtime").JSX.Element;
|
|
40
40
|
BinanceSmartChain: ({ testnet, ...props }: {
|
|
41
|
-
testnet?: boolean
|
|
41
|
+
testnet?: boolean;
|
|
42
42
|
}) => import("react/jsx-runtime").JSX.Element;
|
|
43
43
|
Foundry: ({ testnet, ...props }: Logo) => import("react/jsx-runtime").JSX.Element;
|
|
44
44
|
Sepolia: ({ testnet, ...props }: Logo) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -46,22 +46,22 @@ declare const _default: {
|
|
|
46
46
|
zkSync: ({ testnet, ...props }: Logo) => import("react/jsx-runtime").JSX.Element;
|
|
47
47
|
Flare: ({ testnet, ...props }: Logo) => import("react/jsx-runtime").JSX.Element;
|
|
48
48
|
Canto: ({ testnet, ...props }: {
|
|
49
|
-
testnet?: boolean
|
|
49
|
+
testnet?: boolean;
|
|
50
50
|
}) => import("react/jsx-runtime").JSX.Element;
|
|
51
51
|
Fantom: ({ testnet, ...props }: {
|
|
52
|
-
testnet?: boolean
|
|
52
|
+
testnet?: boolean;
|
|
53
53
|
}) => import("react/jsx-runtime").JSX.Element;
|
|
54
54
|
Filecoin: ({ testnet, ...props }: {
|
|
55
|
-
testnet?: boolean
|
|
55
|
+
testnet?: boolean;
|
|
56
56
|
}) => import("react/jsx-runtime").JSX.Element;
|
|
57
57
|
Metis: ({ testnet, ...props }: {
|
|
58
|
-
testnet?: boolean
|
|
58
|
+
testnet?: boolean;
|
|
59
59
|
}) => import("react/jsx-runtime").JSX.Element;
|
|
60
60
|
IoTeX: ({ testnet, ...props }: {
|
|
61
|
-
testnet?: boolean
|
|
61
|
+
testnet?: boolean;
|
|
62
62
|
}) => import("react/jsx-runtime").JSX.Element;
|
|
63
63
|
Zora: ({ testnet, ...props }: {
|
|
64
|
-
testnet?: boolean
|
|
64
|
+
testnet?: boolean;
|
|
65
65
|
}) => import("react/jsx-runtime").JSX.Element;
|
|
66
66
|
};
|
|
67
67
|
export default _default;
|
package/build/packages/paykit/packages/connectkit/src/components/Common/OptionsList/index.d.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
/// <reference types="react" />
|
|
2
1
|
interface Option {
|
|
3
2
|
id: string;
|
|
4
3
|
title: string;
|
|
@@ -8,7 +7,7 @@ interface Option {
|
|
|
8
7
|
}
|
|
9
8
|
declare const OptionsList: ({ options, isLoading, requiredSkeletons, }: {
|
|
10
9
|
options: Option[];
|
|
11
|
-
isLoading?: boolean
|
|
12
|
-
requiredSkeletons?: number
|
|
10
|
+
isLoading?: boolean;
|
|
11
|
+
requiredSkeletons?: number;
|
|
13
12
|
}) => import("react/jsx-runtime").JSX.Element;
|
|
14
13
|
export default OptionsList;
|
package/build/packages/paykit/packages/connectkit/src/components/Common/ScrollArea/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
export declare const ScrollArea: ({ children, height, backgroundColor, mobileDirection, }: {
|
|
3
3
|
children: React.ReactNode;
|
|
4
|
-
height?: number
|
|
5
|
-
backgroundColor?: string
|
|
6
|
-
mobileDirection?: "horizontal" | "vertical"
|
|
4
|
+
height?: number;
|
|
5
|
+
backgroundColor?: string;
|
|
6
|
+
mobileDirection?: "horizontal" | "vertical";
|
|
7
7
|
}) => import("react/jsx-runtime").JSX.Element;
|
package/build/packages/paykit/packages/connectkit/src/components/Spinners/CircleSpinner/index.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
declare const CircleSpinner: ({ logo, smallLogo, connecting, unavailable, countdown, }: {
|
|
3
3
|
logo?: React.ReactNode;
|
|
4
|
-
smallLogo?: boolean
|
|
5
|
-
connecting?: boolean
|
|
6
|
-
unavailable?: boolean
|
|
7
|
-
countdown?: boolean
|
|
4
|
+
smallLogo?: boolean;
|
|
5
|
+
connecting?: boolean;
|
|
6
|
+
unavailable?: boolean;
|
|
7
|
+
countdown?: boolean;
|
|
8
8
|
}) => import("react/jsx-runtime").JSX.Element;
|
|
9
9
|
export default CircleSpinner;
|
|
@@ -18,7 +18,7 @@ type Web3Context = {
|
|
|
18
18
|
};
|
|
19
19
|
declare const Web3Context: React.Context<Web3Context>;
|
|
20
20
|
export declare const Web3ContextProvider: ({ enabled, children, }: {
|
|
21
|
-
enabled?: boolean
|
|
21
|
+
enabled?: boolean;
|
|
22
22
|
children: React.ReactNode;
|
|
23
23
|
}) => import("react/jsx-runtime").JSX.Element;
|
|
24
24
|
export declare const useWeb3: () => Web3Context;
|
|
@@ -20,12 +20,12 @@ export declare function useConnect({ ...props }?: UseConnectParameters): {
|
|
|
20
20
|
submittedAt: number;
|
|
21
21
|
connect: ({ connector, chainId, mutation, }: {
|
|
22
22
|
connector: CreateConnectorFn | Connector;
|
|
23
|
-
chainId?: number
|
|
23
|
+
chainId?: number;
|
|
24
24
|
mutation?: UseConnectParameters["mutation"];
|
|
25
25
|
}) => void;
|
|
26
26
|
connectAsync: ({ connector, chainId, mutation, }: {
|
|
27
27
|
connector: CreateConnectorFn | Connector;
|
|
28
|
-
chainId?: number
|
|
28
|
+
chainId?: number;
|
|
29
29
|
mutation?: UseConnectParameters["mutation"];
|
|
30
30
|
}) => Promise<import("wagmi/query").ConnectData<import("wagmi").Config>>;
|
|
31
31
|
connectors: readonly Connector[];
|
|
@@ -33,7 +33,7 @@ export declare function useConnect({ ...props }?: UseConnectParameters): {
|
|
|
33
33
|
data: undefined;
|
|
34
34
|
variables: {
|
|
35
35
|
chainId?: number | undefined;
|
|
36
|
-
connector:
|
|
36
|
+
connector: Connector | CreateConnectorFn;
|
|
37
37
|
};
|
|
38
38
|
error: null;
|
|
39
39
|
isError: false;
|
|
@@ -49,12 +49,12 @@ export declare function useConnect({ ...props }?: UseConnectParameters): {
|
|
|
49
49
|
submittedAt: number;
|
|
50
50
|
connect: ({ connector, chainId, mutation, }: {
|
|
51
51
|
connector: CreateConnectorFn | Connector;
|
|
52
|
-
chainId?: number
|
|
52
|
+
chainId?: number;
|
|
53
53
|
mutation?: UseConnectParameters["mutation"];
|
|
54
54
|
}) => void;
|
|
55
55
|
connectAsync: ({ connector, chainId, mutation, }: {
|
|
56
56
|
connector: CreateConnectorFn | Connector;
|
|
57
|
-
chainId?: number
|
|
57
|
+
chainId?: number;
|
|
58
58
|
mutation?: UseConnectParameters["mutation"];
|
|
59
59
|
}) => Promise<import("wagmi/query").ConnectData<import("wagmi").Config>>;
|
|
60
60
|
connectors: readonly Connector[];
|
|
@@ -62,7 +62,7 @@ export declare function useConnect({ ...props }?: UseConnectParameters): {
|
|
|
62
62
|
data: undefined;
|
|
63
63
|
variables: {
|
|
64
64
|
chainId?: number | undefined;
|
|
65
|
-
connector:
|
|
65
|
+
connector: Connector | CreateConnectorFn;
|
|
66
66
|
};
|
|
67
67
|
error: import("@wagmi/core").ConnectErrorType;
|
|
68
68
|
isError: true;
|
|
@@ -78,12 +78,12 @@ export declare function useConnect({ ...props }?: UseConnectParameters): {
|
|
|
78
78
|
submittedAt: number;
|
|
79
79
|
connect: ({ connector, chainId, mutation, }: {
|
|
80
80
|
connector: CreateConnectorFn | Connector;
|
|
81
|
-
chainId?: number
|
|
81
|
+
chainId?: number;
|
|
82
82
|
mutation?: UseConnectParameters["mutation"];
|
|
83
83
|
}) => void;
|
|
84
84
|
connectAsync: ({ connector, chainId, mutation, }: {
|
|
85
85
|
connector: CreateConnectorFn | Connector;
|
|
86
|
-
chainId?: number
|
|
86
|
+
chainId?: number;
|
|
87
87
|
mutation?: UseConnectParameters["mutation"];
|
|
88
88
|
}) => Promise<import("wagmi/query").ConnectData<import("wagmi").Config>>;
|
|
89
89
|
connectors: readonly Connector[];
|
|
@@ -91,7 +91,7 @@ export declare function useConnect({ ...props }?: UseConnectParameters): {
|
|
|
91
91
|
data: import("wagmi/query").ConnectData<import("wagmi").Config>;
|
|
92
92
|
variables: {
|
|
93
93
|
chainId?: number | undefined;
|
|
94
|
-
connector:
|
|
94
|
+
connector: Connector | CreateConnectorFn;
|
|
95
95
|
};
|
|
96
96
|
error: null;
|
|
97
97
|
isError: false;
|
|
@@ -107,12 +107,12 @@ export declare function useConnect({ ...props }?: UseConnectParameters): {
|
|
|
107
107
|
submittedAt: number;
|
|
108
108
|
connect: ({ connector, chainId, mutation, }: {
|
|
109
109
|
connector: CreateConnectorFn | Connector;
|
|
110
|
-
chainId?: number
|
|
110
|
+
chainId?: number;
|
|
111
111
|
mutation?: UseConnectParameters["mutation"];
|
|
112
112
|
}) => void;
|
|
113
113
|
connectAsync: ({ connector, chainId, mutation, }: {
|
|
114
114
|
connector: CreateConnectorFn | Connector;
|
|
115
|
-
chainId?: number
|
|
115
|
+
chainId?: number;
|
|
116
116
|
mutation?: UseConnectParameters["mutation"];
|
|
117
117
|
}) => Promise<import("wagmi/query").ConnectData<import("wagmi").Config>>;
|
|
118
118
|
connectors: readonly Connector[];
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
/// <reference types="react" />
|
|
2
1
|
import { DaimoPayOrder, DaimoPayTokenAmount, ExternalPaymentOptionMetadata, ExternalPaymentOptions } from "@daimo/common";
|
|
3
2
|
import { trpc } from "./trpc";
|
|
4
3
|
export type SourcePayment = Parameters<typeof trpc.processSourcePayment.mutate>[0];
|
|
@@ -16,7 +15,7 @@ export interface PaymentInfo {
|
|
|
16
15
|
payWithExternal: (option: ExternalPaymentOptions) => Promise<string>;
|
|
17
16
|
refreshOrder: () => Promise<void>;
|
|
18
17
|
}
|
|
19
|
-
export declare function getPaymentInfo(): {
|
|
18
|
+
export declare function getPaymentInfo(log: (...args: any[]) => void): {
|
|
20
19
|
setPayId: (payId: string | null) => Promise<void>;
|
|
21
20
|
daimoPayOrder: DaimoPayOrder | null;
|
|
22
21
|
paymentWaitingMessage: string | null;
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
1
|
import React from "react";
|
|
3
2
|
declare const truncateEthAddress: (address?: string, separator?: string) => string;
|
|
4
3
|
declare const truncateENSAddress: (ensName: string, maxLength: number) => string;
|
|
@@ -9,10 +8,10 @@ declare const isAndroid: () => boolean;
|
|
|
9
8
|
declare const isMobile: () => boolean;
|
|
10
9
|
type ReactChildArray = ReturnType<typeof React.Children.toArray>;
|
|
11
10
|
declare function flattenChildren(children: React.ReactNode): ReactChildArray;
|
|
12
|
-
export declare const isWalletConnectConnector: (connectorId?: string) =>
|
|
13
|
-
export declare const isMetaMaskConnector: (connectorId?: string) =>
|
|
14
|
-
export declare const isCoinbaseWalletConnector: (connectorId?: string) =>
|
|
15
|
-
export declare const isLedgerConnector: (connectorId?: string) =>
|
|
16
|
-
export declare const isSafeConnector: (connectorId?: string) =>
|
|
17
|
-
export declare const isInjectedConnector: (connectorId?: string) =>
|
|
11
|
+
export declare const isWalletConnectConnector: (connectorId?: string) => connectorId is "walletConnect";
|
|
12
|
+
export declare const isMetaMaskConnector: (connectorId?: string) => connectorId is "metaMaskSDK";
|
|
13
|
+
export declare const isCoinbaseWalletConnector: (connectorId?: string) => connectorId is "coinbaseWalletSDK";
|
|
14
|
+
export declare const isLedgerConnector: (connectorId?: string) => connectorId is "ledger";
|
|
15
|
+
export declare const isSafeConnector: (connectorId?: string) => connectorId is "safe";
|
|
16
|
+
export declare const isInjectedConnector: (connectorId?: string) => connectorId is "injected";
|
|
18
17
|
export { detectBrowser, detectOS, flattenChildren, isAndroid, isMobile, nFormatter, truncateENSAddress, truncateEthAddress };
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@daimo/pay",
|
|
3
3
|
"private": false,
|
|
4
|
-
"version": "0.3.
|
|
4
|
+
"version": "0.3.6",
|
|
5
5
|
"author": "Daimo",
|
|
6
6
|
"homepage": "https://pay.daimo.com",
|
|
7
7
|
"license": "BSD-2-Clause license",
|
|
@@ -40,8 +40,8 @@
|
|
|
40
40
|
"crypto"
|
|
41
41
|
],
|
|
42
42
|
"dependencies": {
|
|
43
|
-
"@daimo/common": "0.3.
|
|
44
|
-
"@daimo/contract": "0.3.
|
|
43
|
+
"@daimo/common": "0.3.6",
|
|
44
|
+
"@daimo/contract": "0.3.6",
|
|
45
45
|
"@trpc/client": "^11.0.0-next-beta.318",
|
|
46
46
|
"@trpc/server": "^11.0.0-next-beta.318",
|
|
47
47
|
"buffer": "^6.0.3",
|