{
    "contractName": "ZebecCard",
    "abi": [
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "target",
                    "type": "address"
                }
            ],
            "name": "AddressEmptyCode",
            "type": "error"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "account",
                    "type": "address"
                }
            ],
            "name": "AddressInsufficientBalance",
            "type": "error"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "implementation",
                    "type": "address"
                }
            ],
            "name": "ERC1967InvalidImplementation",
            "type": "error"
        },
        {
            "inputs": [],
            "name": "ERC1967NonPayable",
            "type": "error"
        },
        {
            "inputs": [],
            "name": "FailedInnerCall",
            "type": "error"
        },
        {
            "inputs": [],
            "name": "InvalidInitialization",
            "type": "error"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "requiredBalance",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "currentBalance",
                    "type": "uint256"
                }
            ],
            "name": "NotEnoughBalance",
            "type": "error"
        },
        {
            "inputs": [],
            "name": "NotInitializing",
            "type": "error"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "owner",
                    "type": "address"
                }
            ],
            "name": "OwnableInvalidOwner",
            "type": "error"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "account",
                    "type": "address"
                }
            ],
            "name": "OwnableUnauthorizedAccount",
            "type": "error"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "token",
                    "type": "address"
                }
            ],
            "name": "SafeERC20FailedOperation",
            "type": "error"
        },
        {
            "inputs": [],
            "name": "UUPSUnauthorizedCallContext",
            "type": "error"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes32",
                    "name": "slot",
                    "type": "bytes32"
                }
            ],
            "name": "UUPSUnsupportedProxiableUUID",
            "type": "error"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "from",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "uint256",
                    "name": "id",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "amount",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "string",
                    "name": "userEmail",
                    "type": "string"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "purchasedAt",
                    "type": "uint256"
                }
            ],
            "name": "CardPurchased",
            "type": "event",
            "signature": "0xce9df9676b8ff95985927db077a18e692c06c1ecfa2abae6db585c4aedfbc909",
            "stateMutability": "nonpayable"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "from",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "amount",
                    "type": "uint256"
                }
            ],
            "name": "Deposited",
            "type": "event",
            "signature": "0x2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4",
            "stateMutability": "nonpayable"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "uint64",
                    "name": "version",
                    "type": "uint64"
                }
            ],
            "name": "Initialized",
            "type": "event",
            "signature": "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2",
            "stateMutability": "nonpayable"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "previousOwner",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "newOwner",
                    "type": "address"
                }
            ],
            "name": "OwnershipTransferred",
            "type": "event",
            "signature": "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0",
            "stateMutability": "nonpayable"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "from",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "srcToken",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "amount",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "spentAmount",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "returnAmount",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "feeAmount",
                    "type": "uint256"
                }
            ],
            "name": "Swapped",
            "type": "event",
            "signature": "0xd8066379a11f110d1eb579110571ce47b1557c623d7ae29f423d92cd6dd953be",
            "stateMutability": "nonpayable"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "implementation",
                    "type": "address"
                }
            ],
            "name": "Upgraded",
            "type": "event",
            "signature": "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b",
            "stateMutability": "nonpayable"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "from",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "withdrawnAmount",
                    "type": "uint256"
                }
            ],
            "name": "WithdrawYield",
            "type": "event",
            "signature": "0xf09b3678dd1b265d3e2d9f681481c92d1cdd81b6e19fa43651707dedf99263a8",
            "stateMutability": "nonpayable"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "from",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "withdrawnAmount",
                    "type": "uint256"
                }
            ],
            "name": "Withdrawn",
            "type": "event",
            "signature": "0x7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5",
            "stateMutability": "nonpayable"
        },
        {
            "inputs": [],
            "name": "UPGRADE_INTERFACE_VERSION",
            "outputs": [
                {
                    "internalType": "string",
                    "name": "",
                    "type": "string"
                }
            ],
            "stateMutability": "view",
            "type": "function",
            "constant": true,
            "signature": "0xad3cb1cc"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "amount",
                    "type": "uint256"
                },
                {
                    "internalType": "string",
                    "name": "userEmail",
                    "type": "string"
                }
            ],
            "name": "buyCard",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function",
            "signature": "0x69a34653"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                }
            ],
            "name": "cardBalances",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function",
            "constant": true,
            "signature": "0xf076a846"
        },
        {
            "inputs": [],
            "name": "cardConfig",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "nativeFee",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "nonNativeFee",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "revenueFee",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "counter",
                    "type": "uint256"
                },
                {
                    "internalType": "address",
                    "name": "cardVault",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "revenueVault",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "usdcAddress",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "minCardAmount",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "maxCardAmount",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "dailyCardBuyLimit",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function",
            "constant": true,
            "signature": "0x37cf5331"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                }
            ],
            "name": "cardPurchases",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "unixInRecord",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "totalCardBoughtPerDay",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function",
            "constant": true,
            "signature": "0xa5b7ac7e"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "amount",
                    "type": "uint256"
                }
            ],
            "name": "depositUsdc",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function",
            "signature": "0x2357928e"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "name": "feeTiers",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "minAmount",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "maxAmount",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "fee",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function",
            "constant": true,
            "signature": "0x230ed44a"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "amount",
                    "type": "uint256"
                }
            ],
            "name": "getFee",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function",
            "constant": true,
            "signature": "0xfcee45f4"
        },
        {
            "inputs": [],
            "name": "getFeeTiers",
            "outputs": [
                {
                    "components": [
                        {
                            "internalType": "uint256",
                            "name": "minAmount",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "maxAmount",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "fee",
                            "type": "uint256"
                        }
                    ],
                    "internalType": "struct ZebecCard.FeeTier[]",
                    "name": "",
                    "type": "tuple[]"
                }
            ],
            "stateMutability": "view",
            "type": "function",
            "constant": true,
            "signature": "0xe9a4d24f"
        },
        {
            "inputs": [
                {
                    "components": [
                        {
                            "internalType": "uint256",
                            "name": "nativeFee",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "nonNativeFee",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "revenueFee",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "counter",
                            "type": "uint256"
                        },
                        {
                            "internalType": "address",
                            "name": "cardVault",
                            "type": "address"
                        },
                        {
                            "internalType": "address",
                            "name": "revenueVault",
                            "type": "address"
                        },
                        {
                            "internalType": "address",
                            "name": "usdcAddress",
                            "type": "address"
                        },
                        {
                            "internalType": "uint256",
                            "name": "minCardAmount",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "maxCardAmount",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "dailyCardBuyLimit",
                            "type": "uint256"
                        }
                    ],
                    "internalType": "struct ZebecCard.CardConfig",
                    "name": "card_config",
                    "type": "tuple"
                },
                {
                    "components": [
                        {
                            "internalType": "uint256",
                            "name": "minAmount",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "maxAmount",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "fee",
                            "type": "uint256"
                        }
                    ],
                    "internalType": "struct ZebecCard.FeeTier[]",
                    "name": "fee_tiers",
                    "type": "tuple[]"
                },
                {
                    "internalType": "address",
                    "name": "sun_swap_router",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "wrapped_trx",
                    "type": "address"
                }
            ],
            "name": "initialize",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function",
            "signature": "0x569b5dbf"
        },
        {
            "inputs": [],
            "name": "owner",
            "outputs": [
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                }
            ],
            "stateMutability": "view",
            "type": "function",
            "constant": true,
            "signature": "0x8da5cb5b"
        },
        {
            "inputs": [],
            "name": "proxiableUUID",
            "outputs": [
                {
                    "internalType": "bytes32",
                    "name": "",
                    "type": "bytes32"
                }
            ],
            "stateMutability": "view",
            "type": "function",
            "constant": true,
            "signature": "0x52d1902d"
        },
        {
            "inputs": [],
            "name": "renounceOwnership",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function",
            "signature": "0x715018a6"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "cardVault",
                    "type": "address"
                }
            ],
            "name": "setCardVault",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function",
            "signature": "0xd895a46b"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "dailyCardBuyLimit",
                    "type": "uint256"
                }
            ],
            "name": "setDailyCardBuyLimit",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function",
            "signature": "0xbea9c43e"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "minAmount",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "maxAmount",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "fee",
                    "type": "uint256"
                }
            ],
            "name": "setFee",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function",
            "signature": "0x5b65b9ab"
        },
        {
            "inputs": [
                {
                    "components": [
                        {
                            "internalType": "uint256",
                            "name": "minAmount",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "maxAmount",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "fee",
                            "type": "uint256"
                        }
                    ],
                    "internalType": "struct ZebecCard.FeeTier[]",
                    "name": "newTiers",
                    "type": "tuple[]"
                }
            ],
            "name": "setFeeArray",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function",
            "signature": "0x166dbb73"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "maxAmount",
                    "type": "uint256"
                }
            ],
            "name": "setMaxCardAmount",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function",
            "signature": "0xb0d097de"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "minAmount",
                    "type": "uint256"
                }
            ],
            "name": "setMinCardAmount",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function",
            "signature": "0x48455ff0"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "nativeFee",
                    "type": "uint256"
                }
            ],
            "name": "setNativeFee",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function",
            "signature": "0xb91a1e8f"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "nonNativeFee",
                    "type": "uint256"
                }
            ],
            "name": "setNonNativeFee",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function",
            "signature": "0xe591f2ff"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "revenueFee",
                    "type": "uint256"
                }
            ],
            "name": "setRevenueFee",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function",
            "signature": "0x14435445"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "revenueVault",
                    "type": "address"
                }
            ],
            "name": "setRevenueVault",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function",
            "signature": "0x4d68e925"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "usdcAddress",
                    "type": "address"
                }
            ],
            "name": "setUsdcAddress",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function",
            "signature": "0xd38bcdee"
        },
        {
            "inputs": [],
            "name": "sunSwapRouter",
            "outputs": [
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                }
            ],
            "stateMutability": "view",
            "type": "function",
            "constant": true,
            "signature": "0x22e41dc4"
        },
        {
            "inputs": [
                {
                    "internalType": "address[]",
                    "name": "path",
                    "type": "address[]"
                },
                {
                    "internalType": "string[]",
                    "name": "poolVersion",
                    "type": "string[]"
                },
                {
                    "internalType": "uint256[]",
                    "name": "versionLen",
                    "type": "uint256[]"
                },
                {
                    "internalType": "uint24[]",
                    "name": "fees",
                    "type": "uint24[]"
                },
                {
                    "components": [
                        {
                            "internalType": "uint256",
                            "name": "amountIn",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "amountOutMin",
                            "type": "uint256"
                        },
                        {
                            "internalType": "address",
                            "name": "to",
                            "type": "address"
                        },
                        {
                            "internalType": "uint256",
                            "name": "deadline",
                            "type": "uint256"
                        }
                    ],
                    "internalType": "struct ISmartRouter.SwapData",
                    "name": "data",
                    "type": "tuple"
                }
            ],
            "name": "swapAndDeposit",
            "outputs": [],
            "stateMutability": "payable",
            "type": "function",
            "payable": true,
            "signature": "0xce82f2b3"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "newOwner",
                    "type": "address"
                }
            ],
            "name": "transferOwnership",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function",
            "signature": "0xf2fde38b"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "newImplementation",
                    "type": "address"
                },
                {
                    "internalType": "bytes",
                    "name": "data",
                    "type": "bytes"
                }
            ],
            "name": "upgradeToAndCall",
            "outputs": [],
            "stateMutability": "payable",
            "type": "function",
            "payable": true,
            "signature": "0x4f1ef286"
        },
        {
            "inputs": [],
            "name": "wTrx",
            "outputs": [
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                }
            ],
            "stateMutability": "view",
            "type": "function",
            "constant": true,
            "signature": "0x2a780067"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "amount",
                    "type": "uint256"
                }
            ],
            "name": "withdraw",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function",
            "signature": "0x2e1a7d4d"
        }
    ],
    "bytecode": "0x60a06040523060805234801561001457600080fd5b50d3801561002157600080fd5b50d2801561002e57600080fd5b50608051612f0e61005860003960008181611c8f01528181611cb80152611df90152612f0e6000f3fe6080604052600436106101cd5760003560e01c8063715018a6116100f7578063ce82f2b311610095578063e9a4d24f11610064578063e9a4d24f1461087d578063f076a846146108b9578063f2fde38b14610900578063fcee45f41461093a57600080fd5b8063ce82f2b3146107bc578063d38bcdee146107cf578063d895a46b14610809578063e591f2ff1461084357600080fd5b8063ad3cb1cc116100d1578063ad3cb1cc146106b6578063b0d097de1461070e578063b91a1e8f14610748578063bea9c43e1461078257600080fd5b8063715018a6146105cd5780638da5cb5b146105fc578063a5b7ac7e1461065357600080fd5b806337cf53311161016f57806352d1902d1161013e57806352d1902d146104e2578063569b5dbf1461051f5780635b65b9ab1461055957806369a346531461059357600080fd5b806337cf5331146103a257806348455ff01461045b5780634d68e925146104955780634f1ef286146104cf57600080fd5b8063230ed44a116101ab578063230ed44a1461029f5780632357928e146102f45780632a7800671461032e5780632e1a7d4d1461036857600080fd5b806314435445146101d2578063166dbb731461020e57806322e41dc414610248575b600080fd5b3480156101de57600080fd5b50d380156101eb57600080fd5b50d280156101f857600080fd5b5061020c610207366004612444565b610974565b005b34801561021a57600080fd5b50d3801561022757600080fd5b50d2801561023457600080fd5b5061020c6102433660046125aa565b610981565b34801561025457600080fd5b50d3801561026157600080fd5b50d2801561026e57600080fd5b50600a54610282906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156102ab57600080fd5b50d380156102b857600080fd5b50d280156102c557600080fd5b506102d96102d4366004612444565b610a0b565b60408051938452602084019290925290820152606001610296565b34801561030057600080fd5b50d3801561030d57600080fd5b50d2801561031a57600080fd5b5061020c610329366004612444565b610a3e565b34801561033a57600080fd5b50d3801561034757600080fd5b50d2801561035457600080fd5b50600b54610282906001600160a01b031681565b34801561037457600080fd5b50d3801561038157600080fd5b50d2801561038e57600080fd5b5061020c61039d366004612444565b610bf3565b3480156103ae57600080fd5b50d380156103bb57600080fd5b50d280156103c857600080fd5b5060005460015460025460035460045460055460065460075460085460095461040599989796956001600160a01b0390811695811694169291908a565b604080519a8b5260208b01999099529789019690965260608801949094526001600160a01b03928316608088015290821660a08701521660c085015260e084015261010083015261012082015261014001610296565b34801561046757600080fd5b50d3801561047457600080fd5b50d2801561048157600080fd5b5061020c610490366004612444565b610d70565b3480156104a157600080fd5b50d380156104ae57600080fd5b50d280156104bb57600080fd5b5061020c6104ca36600461260e565b610d7d565b61020c6104dd366004612680565b610da7565b3480156104ee57600080fd5b50d380156104fb57600080fd5b50d2801561050857600080fd5b50610511610dc2565b604051908152602001610296565b34801561052b57600080fd5b50d3801561053857600080fd5b50d2801561054557600080fd5b5061020c6105543660046126e1565b610ddf565b34801561056557600080fd5b50d3801561057257600080fd5b50d2801561057f57600080fd5b5061020c61058e3660046127d8565b611018565b34801561059f57600080fd5b50d380156105ac57600080fd5b50d280156105b957600080fd5b5061020c6105c8366004612804565b61117f565b3480156105d957600080fd5b50d380156105e657600080fd5b50d280156105f357600080fd5b5061020c6114ee565b34801561060857600080fd5b50d3801561061557600080fd5b50d2801561062257600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610282565b34801561065f57600080fd5b50d3801561066c57600080fd5b50d2801561067957600080fd5b506106a161068836600461260e565b600c602052600090815260409020805460019091015482565b60408051928352602083019190915201610296565b3480156106c257600080fd5b50d380156106cf57600080fd5b50d280156106dc57600080fd5b50610701604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102969190612884565b34801561071a57600080fd5b50d3801561072757600080fd5b50d2801561073457600080fd5b5061020c610743366004612444565b611502565b34801561075457600080fd5b50d3801561076157600080fd5b50d2801561076e57600080fd5b5061020c61077d366004612444565b61150f565b34801561078e57600080fd5b50d3801561079b57600080fd5b50d280156107a857600080fd5b5061020c6107b7366004612444565b61151c565b61020c6107ca3660046128db565b611529565b3480156107db57600080fd5b50d380156107e857600080fd5b50d280156107f557600080fd5b5061020c61080436600461260e565b61193c565b34801561081557600080fd5b50d3801561082257600080fd5b50d2801561082f57600080fd5b5061020c61083e36600461260e565b611966565b34801561084f57600080fd5b50d3801561085c57600080fd5b50d2801561086957600080fd5b5061020c610878366004612444565b611990565b34801561088957600080fd5b50d3801561089657600080fd5b50d280156108a357600080fd5b506108ac61199d565b60405161029691906129ba565b3480156108c557600080fd5b50d380156108d257600080fd5b50d280156108df57600080fd5b506105116108ee36600461260e565b600d6020526000908152604090205481565b34801561090c57600080fd5b50d3801561091957600080fd5b50d2801561092657600080fd5b5061020c61093536600461260e565b611a1a565b34801561094657600080fd5b50d3801561095357600080fd5b50d2801561096057600080fd5b5061051161096f366004612444565b611a58565b61097c611b41565b600255565b610989611b41565b610995600e6000612402565b60005b8151811015610a0757600e8282815181106109b5576109b5612a13565b60209081029190910181015182546001818101855560009485529383902082516003909202019081559181015192820192909255604090910151600290910155806109ff81612a3f565b915050610998565b5050565b600e8181548110610a1b57600080fd5b600091825260209091206003909102018054600182015460029092015490925083565b600654604051636eb1769f60e11b8152336004820152306024820152829182916001600160a01b039091169063dd62ed3e90604401602060405180830381865afa158015610a90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab49190612a58565b1015610b005760405162461bcd60e51b8152602060048201526016602482015275496e73756666696369656e7420616c6c6f77616e636560501b60448201526064015b60405180910390fd5b6006546001600160a01b03166000839003610b4e5760405162461bcd60e51b815260206004820152600e60248201526d125b9d985b1a5908185b5bdd5b9d60921b6044820152606401610af7565b610b636001600160a01b038216333086611b9c565b336000908152600d60205260408120548190610b7f9086611c03565b9150915081610ba05760405162461bcd60e51b8152600401610af790612a71565b336000818152600d602052604090819020839055517f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c490610be49088815260200190565b60405180910390a25050505050565b6006546001600160a01b0316336000839003610c425760405162461bcd60e51b815260206004820152600e60248201526d125b9d985b1a5908185b5bdd5b9d60921b6044820152606401610af7565b6001600160a01b038116610c8a5760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b6044820152606401610af7565b6001600160a01b0381166000908152600d602052604090205483811015610cce57604051634787a10360e11b81526004810185905260248101829052604401610af7565b600080610cdb8387611c2c565b9150915081610cfc5760405162461bcd60e51b8152600401610af790612a71565b6001600160a01b038085166000908152600d60205260409020829055610d259086168588611c4e565b836001600160a01b03167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d587604051610d6091815260200190565b60405180910390a2505050505050565b610d78611b41565b600755565b610d85611b41565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b610daf611c84565b610db882611d29565b610a078282611d31565b6000610dcc611dee565b50600080516020612eb983398151915290565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b0316600081158015610e245750825b90506000826001600160401b03166001148015610e405750303b155b905081158015610e4e575080155b15610e6c5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610e9657845460ff60401b1916600160401b1785555b600a80546001600160a01b03808a166001600160a01b0319928316179092558a5160005560208b015160015560408b015160025560608b015160035560808b01516004805491841691831691909117905560a08b01516005805491841691831691909117905560c08b01516006805491909316911617905560e0890151600755610100890151600855610120890151600955610f30611e37565b610f3933611e3f565b600b80546001600160a01b0319166001600160a01b03881617905560005b8851811015610fc657600e898281518110610f7457610f74612a13565b6020908102919091018101518254600181810185556000948552938390208251600390920201908155918101519282019290925560409091015160029091015580610fbe81612a3f565b915050610f57565b50831561100d57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b611020611b41565b6000805b600e548110156110cf57600e818154811061104157611041612a13565b90600052602060002090600302016000015485101580156110865750600e818154811061107057611070612a13565b9060005260206000209060030201600101548511155b156110bd5782600e828154811061109f5761109f612a13565b906000526020600020906003020160020181905550600191506110cf565b806110c781612a3f565b915050611024565b5080611179576040805160608101825285815260208101858152918101848152600e805460018101825560009190915291517fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd60039093029283015591517fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fe82015590517fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3ff909101555b50505050565b6006546001600160a01b0316336111ca5760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b6044820152606401610af7565b60075483108015906111de57506008548311155b61122a5760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206e6f742077697468696e20627579696e672072616e676521006044820152606401610af7565b336000908152600d602052604090205483111561127657336000908152600d602052604090819020549051634787a10360e11b8152610af7918591600401918252602082015260400190565b600061128184611a58565b905060006127106112928387612a9f565b61129c9190612acc565b90506000806112ab8784611c2c565b91509150816112cc5760405162461bcd60e51b8152600401610af790612a71565b336000908152600d602052604081205481906112e8908a611c2c565b91509150816113095760405162461bcd60e51b8152600401610af790612a71565b336000908152600d60205260408120829055600380549161132983612a3f565b90915550429050896000808061133e85611e50565b336000908152600c60205260408120549396509194509250908190819061136490611e50565b9250925092506000838714801561137a57508286145b801561138557508185145b905080156113e657336000908152600c602052604081206001015481906113ac908b611c03565b91509150816113cd5760405162461bcd60e51b8152600401610af790612a71565b336000908152600c6020526040902060010155506113ff565b336000908152600c602052604090208981556001018890555b5050600954336000908152600c60205260409020600101541115945061146c93505050505760405162461bcd60e51b815260206004820152601e60248201527f4461696c79204361726420427579204c696d69742045786365656465642100006044820152606401610af7565b600554611486906001600160a01b038b8116911689611c4e565b6004546114a0906001600160a01b038b8116911687611c4e565b60035460405133907fce9df9676b8ff95985927db077a18e692c06c1ecfa2abae6db585c4aedfbc909906114d9908f908f908890612ae0565b60405180910390a35050505050505050505050565b6114f6611b41565b6115006000611e76565b565b61150a611b41565b600855565b611517611b41565b600055565b611524611b41565b600955565b3061153a606083016040840161260e565b6001600160a01b0316146115905760405162461bcd60e51b815260206004820152601c60248201527f496e76616c69642064657374696e6174696f6e207265636569766572000000006044820152606401610af7565b6000898960008181106115a5576115a5612a13565b90506020020160208101906115ba919061260e565b600b549091508235906001600160a01b038084169116148015906116a2576115ed6001600160a01b038416333085611b9c565b600a5460405163095ea7b360e01b81526001600160a01b039182166004820152602481018490529084169063095ea7b3906044016020604051808303816000875af1158015611640573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116649190612b09565b6116a25760405162461bcd60e51b815260206004820152600f60248201526e105c1c1c9bdd985b0819985a5b1959608a1b6044820152606401610af7565b6000600a60009054906101000a90046001600160a01b03166001600160a01b031663cef95229348f8f8f8f8f8f8f8f8f6040518b63ffffffff1660e01b81526004016116f699989796959493929190612c04565b60006040518083038185885af1158015611714573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f1916820160405261173d9190810190612d27565b905060005b81518110156117ab5761179960405180604001604052806012815260200171616d6f756e74734f75745b25645d3a20257360701b8152508284848151811061178c5761178c612a13565b6020026020010151611ee7565b806117a381612a3f565b915050611742565b50600081600183516117bd9190612db7565b815181106117cd576117cd612a13565b60200260200101519050600081116118155760405162461bcd60e51b815260206004820152600b60248201526a14ddd85c0819985a5b195960aa1b6044820152606401610af7565b6000806127106118258285612a9f565b61182f9190612acc565b905060008061183e8584611c2c565b915091508161185f5760405162461bcd60e51b8152600401610af790612a71565b60065460055482916001600160a01b03908116916118809183911687611c4e565b336000908152600d6020526040812054819061189c9085611c03565b91509150816118bd5760405162461bcd60e51b8152600401610af790612a71565b336000818152600d602090815260409182902084905581518f81529081018f90529081018b9052606081018990526001600160a01b038f1691907fd8066379a11f110d1eb579110571ce47b1557c623d7ae29f423d92cd6dd953be9060800160405180910390a350505050505050505050505050505050505050505050565b611944611b41565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b61196e611b41565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b611998611b41565b600155565b6060600e805480602002602001604051908101604052809291908181526020016000905b82821015611a1157838290600052602060002090600302016040518060600160405290816000820154815260200160018201548152602001600282015481525050815260200190600101906119c1565b50505050905090565b611a22611b41565b6001600160a01b038116611a4c57604051631e4fbdf760e01b815260006004820152602401610af7565b611a5581611e76565b50565b6000805b600e54811015611b0257600e8181548110611a7957611a79612a13565b9060005260206000209060030201600001548310158015611abe5750600e8181548110611aa857611aa8612a13565b9060005260206000209060030201600101548311155b15611af057600e8181548110611ad657611ad6612a13565b906000526020600020906003020160020154915050919050565b80611afa81612a3f565b915050611a5c565b5060405162461bcd60e51b8152602060048201526013602482015272416d6f756e74206f7574206f662072616e676560681b6044820152606401610af7565b33611b737f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146115005760405163118cdaa760e01b8152336004820152602401610af7565b6040516001600160a01b0384811660248301528381166044830152606482018390526111799186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050611f2e565b60008083830184811015611c1e576000809250925050611c25565b6001925090505b9250929050565b60008083831115611c4257506000905080611c25565b50600193919092039150565b6040516001600160a01b03838116602483015260448201839052611c7f91859182169063a9059cbb90606401611bd1565b505050565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611d0b57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611cff600080516020612eb9833981519152546001600160a01b031690565b6001600160a01b031614155b156115005760405163703e46dd60e11b815260040160405180910390fd5b611a55611b41565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611d8b575060408051601f3d908101601f19168201909252611d8891810190612a58565b60015b611db357604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610af7565b600080516020612eb98339815191528114611de457604051632a87526960e21b815260048101829052602401610af7565b611c7f8383611f91565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146115005760405163703e46dd60e11b815260040160405180910390fd5b611500611fe7565b611e47611fe7565b611a5581612030565b60008080611e69611e646201518086612acc565b612038565b9196909550909350915050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b611c7f838383604051602401611eff93929190612dca565b60408051601f198184030181529190526020810180516001600160e01b031663ca47c4eb60e01b1790526121ac565b6000611f436001600160a01b038416836121cd565b90508051600014158015611f68575080806020019051810190611f669190612b09565b155b15611c7f57604051635274afe760e01b81526001600160a01b0384166004820152602401610af7565b611f9a826121e4565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611fdf57611c7f8282612249565b610a076122bf565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661150057604051631afcd79f60e31b815260040160405180910390fd5b611a22611fe7565b60008080838162253d8c61204f8362010bd9612def565b6120599190612def565b9050600062023ab161206c836004612e17565b6120769190612e47565b905060046120878262023ab1612e17565b612092906003612def565b61209c9190612e47565b6120a69083612e75565b9150600062164b096120b9846001612def565b6120c590610fa0612e17565b6120cf9190612e47565b905060046120df826105b5612e17565b6120e99190612e47565b6120f39084612e75565b6120fe90601f612def565b9250600061098f612110856050612e17565b61211a9190612e47565b90506000605061212c8361098f612e17565b6121369190612e47565b6121409086612e75565b905061214d600b83612e47565b945061215a85600c612e17565b612165836002612def565b61216f9190612e75565b9150848361217e603187612e75565b612189906064612e17565b6121939190612def565b61219d9190612def565b9a919950975095505050505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b60606121db838360006122de565b90505b92915050565b806001600160a01b03163b60000361221a57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610af7565b600080516020612eb983398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516122669190612e9c565b600060405180830381855af49150503d80600081146122a1576040519150601f19603f3d011682016040523d82523d6000602084013e6122a6565b606091505b50915091506122b685838361237d565b95945050505050565b34156115005760405163b398979f60e01b815260040160405180910390fd5b6060814710156123035760405163cd78605960e01b8152306004820152602401610af7565b600080856001600160a01b0316848660405161231f9190612e9c565b60006040518083038185875af1925050503d806000811461235c576040519150601f19603f3d011682016040523d82523d6000602084013e612361565b606091505b509150915061237186838361237d565b925050505b9392505050565b6060826123925761238d826123d9565b612376565b81511580156123a957506001600160a01b0384163b155b156123d257604051639996b31560e01b81526001600160a01b0385166004820152602401610af7565b5080612376565b8051156123e95780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b5080546000825560030290600052602060002090810190611a5591905b8082111561244057600080825560018201819055600282015560030161241f565b5090565b60006020828403121561245657600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b03811182821017156124955761249561245d565b60405290565b60405161014081016001600160401b03811182821017156124955761249561245d565b604051601f8201601f191681016001600160401b03811182821017156124e6576124e661245d565b604052919050565b60006001600160401b038211156125075761250761245d565b5060051b60200190565b600082601f83011261252257600080fd5b81356020612537612532836124ee565b6124be565b8281526060928302850182019282820191908785111561255657600080fd5b8387015b8581101561259d5781818a0312156125725760008081fd5b61257a612473565b81358152858201358682015260408083013590820152845292840192810161255a565b5090979650505050505050565b6000602082840312156125bc57600080fd5b81356001600160401b038111156125d257600080fd5b6125de84828501612511565b949350505050565b600081356001600160a81b03811681146125ff57600080fd5b6001600160a01b031692915050565b60006020828403121561262057600080fd5b6121db826125e6565b60006001600160401b038311156126425761264261245d565b612655601f8401601f19166020016124be565b905082815283838301111561266957600080fd5b828260208301376000602084830101529392505050565b6000806040838503121561269357600080fd5b61269c836125e6565b915060208301356001600160401b038111156126b757600080fd5b8301601f810185136126c857600080fd5b6126d785823560208401612629565b9150509250929050565b6000806000808486036101a08112156126f957600080fd5b6101408082121561270957600080fd5b61271161249b565b915086358252602087013560208301526040870135604083015260608701356060830152612741608088016125e6565b608083015261275260a088016125e6565b60a083015261276360c088016125e6565b60c083015260e08781013590830152610100808801359083015261012080880135908301529094508501356001600160401b038111156127a257600080fd5b6127ae87828801612511565b9350506127be61016086016125e6565b91506127cd61018086016125e6565b905092959194509250565b6000806000606084860312156127ed57600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561281757600080fd5b8235915060208301356001600160401b038111156126b757600080fd5b60005b8381101561284f578181015183820152602001612837565b50506000910152565b60008151808452612870816020860160208601612834565b601f01601f19169290920160200192915050565b6020815260006121db6020830184612858565b60008083601f8401126128a957600080fd5b5081356001600160401b038111156128c057600080fd5b6020830191508360208260051b8501011115611c2557600080fd5b6000806000806000806000806000898b036101008112156128fb57600080fd5b8a356001600160401b038082111561291257600080fd5b61291e8e838f01612897565b909c509a5060208d013591508082111561293757600080fd5b6129438e838f01612897565b909a50985060408d013591508082111561295c57600080fd5b6129688e838f01612897565b909850965060608d013591508082111561298157600080fd5b5061298e8d828e01612897565b9095509350506080607f19820112156129a657600080fd5b5060808a0190509295985092959850929598565b602080825282518282018190526000919060409081850190868401855b82811015612a0657815180518552868101518786015285015185850152606090930192908501906001016129d7565b5091979650505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201612a5157612a51612a29565b5060010190565b600060208284031215612a6a57600080fd5b5051919050565b60208082526014908201527341726974686d65746963204f766572666c6f772160601b604082015260600190565b80820281158282048414176121de576121de612a29565b634e487b7160e01b600052601260045260246000fd5b600082612adb57612adb612ab6565b500490565b838152606060208201526000612af96060830185612858565b9050826040830152949350505050565b600060208284031215612b1b57600080fd5b8151801515811461237657600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b81835260006001600160fb1b03831115612b6d57600080fd5b8260051b80836020870137939093016020019392505050565b818352600060208085019450826000805b86811015612bc557823562ffffff8116808214612bb2578384fd5b8952509683019691830191600101612b97565b50959695505050505050565b80358252602080820135908301526001600160a01b03612bf3604083016125e6565b166040830152606090810135910152565b610100808252810189905260008a6101208301825b8c811015612c47576001600160a01b03612c32846125e6565b16825260209283019290910190600101612c19565b50838103602085015280915089815260208101915060208a60051b8201018b60005b8c811015612cdd57838303601f190185528135368f9003601e19018112612c8f57600080fd5b8e016020810190356001600160401b03811115612cab57600080fd5b803603821315612cba57600080fd5b612cc5858284612b2b565b60209788019790955093909301925050600101612c69565b50508481036040860152612cf2818a8c612b54565b925050508281036060840152612d09818688612b86565b915050612d196080830184612bd1565b9a9950505050505050505050565b60006020808385031215612d3a57600080fd5b82516001600160401b03811115612d5057600080fd5b8301601f81018513612d6157600080fd5b8051612d6f612532826124ee565b81815260059190911b82018301908381019087831115612d8e57600080fd5b928401925b82841015612dac57835182529284019290840190612d93565b979650505050505050565b818103818111156121de576121de612a29565b606081526000612ddd6060830186612858565b60208301949094525060400152919050565b8082018281126000831280158216821582161715612e0f57612e0f612a29565b505092915050565b80820260008212600160ff1b84141615612e3357612e33612a29565b81810583148215176121de576121de612a29565b600082612e5657612e56612ab6565b600160ff1b821460001984141615612e7057612e70612a29565b500590565b8181036000831280158383131683831282161715612e9557612e95612a29565b5092915050565b60008251612eae818460208701612834565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca26474726f6e58221220dc969be33db28f613e1ddf30d7e4fa526f70e74ddcb3ef33782d3aa3224d573564736f6c63430008140033",
    "deployedBytecode": "0x6080604052600436106101cd5760003560e01c8063715018a6116100f7578063ce82f2b311610095578063e9a4d24f11610064578063e9a4d24f1461087d578063f076a846146108b9578063f2fde38b14610900578063fcee45f41461093a57600080fd5b8063ce82f2b3146107bc578063d38bcdee146107cf578063d895a46b14610809578063e591f2ff1461084357600080fd5b8063ad3cb1cc116100d1578063ad3cb1cc146106b6578063b0d097de1461070e578063b91a1e8f14610748578063bea9c43e1461078257600080fd5b8063715018a6146105cd5780638da5cb5b146105fc578063a5b7ac7e1461065357600080fd5b806337cf53311161016f57806352d1902d1161013e57806352d1902d146104e2578063569b5dbf1461051f5780635b65b9ab1461055957806369a346531461059357600080fd5b806337cf5331146103a257806348455ff01461045b5780634d68e925146104955780634f1ef286146104cf57600080fd5b8063230ed44a116101ab578063230ed44a1461029f5780632357928e146102f45780632a7800671461032e5780632e1a7d4d1461036857600080fd5b806314435445146101d2578063166dbb731461020e57806322e41dc414610248575b600080fd5b3480156101de57600080fd5b50d380156101eb57600080fd5b50d280156101f857600080fd5b5061020c610207366004612444565b610974565b005b34801561021a57600080fd5b50d3801561022757600080fd5b50d2801561023457600080fd5b5061020c6102433660046125aa565b610981565b34801561025457600080fd5b50d3801561026157600080fd5b50d2801561026e57600080fd5b50600a54610282906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156102ab57600080fd5b50d380156102b857600080fd5b50d280156102c557600080fd5b506102d96102d4366004612444565b610a0b565b60408051938452602084019290925290820152606001610296565b34801561030057600080fd5b50d3801561030d57600080fd5b50d2801561031a57600080fd5b5061020c610329366004612444565b610a3e565b34801561033a57600080fd5b50d3801561034757600080fd5b50d2801561035457600080fd5b50600b54610282906001600160a01b031681565b34801561037457600080fd5b50d3801561038157600080fd5b50d2801561038e57600080fd5b5061020c61039d366004612444565b610bf3565b3480156103ae57600080fd5b50d380156103bb57600080fd5b50d280156103c857600080fd5b5060005460015460025460035460045460055460065460075460085460095461040599989796956001600160a01b0390811695811694169291908a565b604080519a8b5260208b01999099529789019690965260608801949094526001600160a01b03928316608088015290821660a08701521660c085015260e084015261010083015261012082015261014001610296565b34801561046757600080fd5b50d3801561047457600080fd5b50d2801561048157600080fd5b5061020c610490366004612444565b610d70565b3480156104a157600080fd5b50d380156104ae57600080fd5b50d280156104bb57600080fd5b5061020c6104ca36600461260e565b610d7d565b61020c6104dd366004612680565b610da7565b3480156104ee57600080fd5b50d380156104fb57600080fd5b50d2801561050857600080fd5b50610511610dc2565b604051908152602001610296565b34801561052b57600080fd5b50d3801561053857600080fd5b50d2801561054557600080fd5b5061020c6105543660046126e1565b610ddf565b34801561056557600080fd5b50d3801561057257600080fd5b50d2801561057f57600080fd5b5061020c61058e3660046127d8565b611018565b34801561059f57600080fd5b50d380156105ac57600080fd5b50d280156105b957600080fd5b5061020c6105c8366004612804565b61117f565b3480156105d957600080fd5b50d380156105e657600080fd5b50d280156105f357600080fd5b5061020c6114ee565b34801561060857600080fd5b50d3801561061557600080fd5b50d2801561062257600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610282565b34801561065f57600080fd5b50d3801561066c57600080fd5b50d2801561067957600080fd5b506106a161068836600461260e565b600c602052600090815260409020805460019091015482565b60408051928352602083019190915201610296565b3480156106c257600080fd5b50d380156106cf57600080fd5b50d280156106dc57600080fd5b50610701604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102969190612884565b34801561071a57600080fd5b50d3801561072757600080fd5b50d2801561073457600080fd5b5061020c610743366004612444565b611502565b34801561075457600080fd5b50d3801561076157600080fd5b50d2801561076e57600080fd5b5061020c61077d366004612444565b61150f565b34801561078e57600080fd5b50d3801561079b57600080fd5b50d280156107a857600080fd5b5061020c6107b7366004612444565b61151c565b61020c6107ca3660046128db565b611529565b3480156107db57600080fd5b50d380156107e857600080fd5b50d280156107f557600080fd5b5061020c61080436600461260e565b61193c565b34801561081557600080fd5b50d3801561082257600080fd5b50d2801561082f57600080fd5b5061020c61083e36600461260e565b611966565b34801561084f57600080fd5b50d3801561085c57600080fd5b50d2801561086957600080fd5b5061020c610878366004612444565b611990565b34801561088957600080fd5b50d3801561089657600080fd5b50d280156108a357600080fd5b506108ac61199d565b60405161029691906129ba565b3480156108c557600080fd5b50d380156108d257600080fd5b50d280156108df57600080fd5b506105116108ee36600461260e565b600d6020526000908152604090205481565b34801561090c57600080fd5b50d3801561091957600080fd5b50d2801561092657600080fd5b5061020c61093536600461260e565b611a1a565b34801561094657600080fd5b50d3801561095357600080fd5b50d2801561096057600080fd5b5061051161096f366004612444565b611a58565b61097c611b41565b600255565b610989611b41565b610995600e6000612402565b60005b8151811015610a0757600e8282815181106109b5576109b5612a13565b60209081029190910181015182546001818101855560009485529383902082516003909202019081559181015192820192909255604090910151600290910155806109ff81612a3f565b915050610998565b5050565b600e8181548110610a1b57600080fd5b600091825260209091206003909102018054600182015460029092015490925083565b600654604051636eb1769f60e11b8152336004820152306024820152829182916001600160a01b039091169063dd62ed3e90604401602060405180830381865afa158015610a90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab49190612a58565b1015610b005760405162461bcd60e51b8152602060048201526016602482015275496e73756666696369656e7420616c6c6f77616e636560501b60448201526064015b60405180910390fd5b6006546001600160a01b03166000839003610b4e5760405162461bcd60e51b815260206004820152600e60248201526d125b9d985b1a5908185b5bdd5b9d60921b6044820152606401610af7565b610b636001600160a01b038216333086611b9c565b336000908152600d60205260408120548190610b7f9086611c03565b9150915081610ba05760405162461bcd60e51b8152600401610af790612a71565b336000818152600d602052604090819020839055517f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c490610be49088815260200190565b60405180910390a25050505050565b6006546001600160a01b0316336000839003610c425760405162461bcd60e51b815260206004820152600e60248201526d125b9d985b1a5908185b5bdd5b9d60921b6044820152606401610af7565b6001600160a01b038116610c8a5760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b6044820152606401610af7565b6001600160a01b0381166000908152600d602052604090205483811015610cce57604051634787a10360e11b81526004810185905260248101829052604401610af7565b600080610cdb8387611c2c565b9150915081610cfc5760405162461bcd60e51b8152600401610af790612a71565b6001600160a01b038085166000908152600d60205260409020829055610d259086168588611c4e565b836001600160a01b03167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d587604051610d6091815260200190565b60405180910390a2505050505050565b610d78611b41565b600755565b610d85611b41565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b610daf611c84565b610db882611d29565b610a078282611d31565b6000610dcc611dee565b50600080516020612eb983398151915290565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b0316600081158015610e245750825b90506000826001600160401b03166001148015610e405750303b155b905081158015610e4e575080155b15610e6c5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610e9657845460ff60401b1916600160401b1785555b600a80546001600160a01b03808a166001600160a01b0319928316179092558a5160005560208b015160015560408b015160025560608b015160035560808b01516004805491841691831691909117905560a08b01516005805491841691831691909117905560c08b01516006805491909316911617905560e0890151600755610100890151600855610120890151600955610f30611e37565b610f3933611e3f565b600b80546001600160a01b0319166001600160a01b03881617905560005b8851811015610fc657600e898281518110610f7457610f74612a13565b6020908102919091018101518254600181810185556000948552938390208251600390920201908155918101519282019290925560409091015160029091015580610fbe81612a3f565b915050610f57565b50831561100d57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b611020611b41565b6000805b600e548110156110cf57600e818154811061104157611041612a13565b90600052602060002090600302016000015485101580156110865750600e818154811061107057611070612a13565b9060005260206000209060030201600101548511155b156110bd5782600e828154811061109f5761109f612a13565b906000526020600020906003020160020181905550600191506110cf565b806110c781612a3f565b915050611024565b5080611179576040805160608101825285815260208101858152918101848152600e805460018101825560009190915291517fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd60039093029283015591517fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fe82015590517fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3ff909101555b50505050565b6006546001600160a01b0316336111ca5760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b6044820152606401610af7565b60075483108015906111de57506008548311155b61122a5760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206e6f742077697468696e20627579696e672072616e676521006044820152606401610af7565b336000908152600d602052604090205483111561127657336000908152600d602052604090819020549051634787a10360e11b8152610af7918591600401918252602082015260400190565b600061128184611a58565b905060006127106112928387612a9f565b61129c9190612acc565b90506000806112ab8784611c2c565b91509150816112cc5760405162461bcd60e51b8152600401610af790612a71565b336000908152600d602052604081205481906112e8908a611c2c565b91509150816113095760405162461bcd60e51b8152600401610af790612a71565b336000908152600d60205260408120829055600380549161132983612a3f565b90915550429050896000808061133e85611e50565b336000908152600c60205260408120549396509194509250908190819061136490611e50565b9250925092506000838714801561137a57508286145b801561138557508185145b905080156113e657336000908152600c602052604081206001015481906113ac908b611c03565b91509150816113cd5760405162461bcd60e51b8152600401610af790612a71565b336000908152600c6020526040902060010155506113ff565b336000908152600c602052604090208981556001018890555b5050600954336000908152600c60205260409020600101541115945061146c93505050505760405162461bcd60e51b815260206004820152601e60248201527f4461696c79204361726420427579204c696d69742045786365656465642100006044820152606401610af7565b600554611486906001600160a01b038b8116911689611c4e565b6004546114a0906001600160a01b038b8116911687611c4e565b60035460405133907fce9df9676b8ff95985927db077a18e692c06c1ecfa2abae6db585c4aedfbc909906114d9908f908f908890612ae0565b60405180910390a35050505050505050505050565b6114f6611b41565b6115006000611e76565b565b61150a611b41565b600855565b611517611b41565b600055565b611524611b41565b600955565b3061153a606083016040840161260e565b6001600160a01b0316146115905760405162461bcd60e51b815260206004820152601c60248201527f496e76616c69642064657374696e6174696f6e207265636569766572000000006044820152606401610af7565b6000898960008181106115a5576115a5612a13565b90506020020160208101906115ba919061260e565b600b549091508235906001600160a01b038084169116148015906116a2576115ed6001600160a01b038416333085611b9c565b600a5460405163095ea7b360e01b81526001600160a01b039182166004820152602481018490529084169063095ea7b3906044016020604051808303816000875af1158015611640573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116649190612b09565b6116a25760405162461bcd60e51b815260206004820152600f60248201526e105c1c1c9bdd985b0819985a5b1959608a1b6044820152606401610af7565b6000600a60009054906101000a90046001600160a01b03166001600160a01b031663cef95229348f8f8f8f8f8f8f8f8f6040518b63ffffffff1660e01b81526004016116f699989796959493929190612c04565b60006040518083038185885af1158015611714573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f1916820160405261173d9190810190612d27565b905060005b81518110156117ab5761179960405180604001604052806012815260200171616d6f756e74734f75745b25645d3a20257360701b8152508284848151811061178c5761178c612a13565b6020026020010151611ee7565b806117a381612a3f565b915050611742565b50600081600183516117bd9190612db7565b815181106117cd576117cd612a13565b60200260200101519050600081116118155760405162461bcd60e51b815260206004820152600b60248201526a14ddd85c0819985a5b195960aa1b6044820152606401610af7565b6000806127106118258285612a9f565b61182f9190612acc565b905060008061183e8584611c2c565b915091508161185f5760405162461bcd60e51b8152600401610af790612a71565b60065460055482916001600160a01b03908116916118809183911687611c4e565b336000908152600d6020526040812054819061189c9085611c03565b91509150816118bd5760405162461bcd60e51b8152600401610af790612a71565b336000818152600d602090815260409182902084905581518f81529081018f90529081018b9052606081018990526001600160a01b038f1691907fd8066379a11f110d1eb579110571ce47b1557c623d7ae29f423d92cd6dd953be9060800160405180910390a350505050505050505050505050505050505050505050565b611944611b41565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b61196e611b41565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b611998611b41565b600155565b6060600e805480602002602001604051908101604052809291908181526020016000905b82821015611a1157838290600052602060002090600302016040518060600160405290816000820154815260200160018201548152602001600282015481525050815260200190600101906119c1565b50505050905090565b611a22611b41565b6001600160a01b038116611a4c57604051631e4fbdf760e01b815260006004820152602401610af7565b611a5581611e76565b50565b6000805b600e54811015611b0257600e8181548110611a7957611a79612a13565b9060005260206000209060030201600001548310158015611abe5750600e8181548110611aa857611aa8612a13565b9060005260206000209060030201600101548311155b15611af057600e8181548110611ad657611ad6612a13565b906000526020600020906003020160020154915050919050565b80611afa81612a3f565b915050611a5c565b5060405162461bcd60e51b8152602060048201526013602482015272416d6f756e74206f7574206f662072616e676560681b6044820152606401610af7565b33611b737f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146115005760405163118cdaa760e01b8152336004820152602401610af7565b6040516001600160a01b0384811660248301528381166044830152606482018390526111799186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050611f2e565b60008083830184811015611c1e576000809250925050611c25565b6001925090505b9250929050565b60008083831115611c4257506000905080611c25565b50600193919092039150565b6040516001600160a01b03838116602483015260448201839052611c7f91859182169063a9059cbb90606401611bd1565b505050565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611d0b57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611cff600080516020612eb9833981519152546001600160a01b031690565b6001600160a01b031614155b156115005760405163703e46dd60e11b815260040160405180910390fd5b611a55611b41565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611d8b575060408051601f3d908101601f19168201909252611d8891810190612a58565b60015b611db357604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610af7565b600080516020612eb98339815191528114611de457604051632a87526960e21b815260048101829052602401610af7565b611c7f8383611f91565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146115005760405163703e46dd60e11b815260040160405180910390fd5b611500611fe7565b611e47611fe7565b611a5581612030565b60008080611e69611e646201518086612acc565b612038565b9196909550909350915050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b611c7f838383604051602401611eff93929190612dca565b60408051601f198184030181529190526020810180516001600160e01b031663ca47c4eb60e01b1790526121ac565b6000611f436001600160a01b038416836121cd565b90508051600014158015611f68575080806020019051810190611f669190612b09565b155b15611c7f57604051635274afe760e01b81526001600160a01b0384166004820152602401610af7565b611f9a826121e4565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611fdf57611c7f8282612249565b610a076122bf565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661150057604051631afcd79f60e31b815260040160405180910390fd5b611a22611fe7565b60008080838162253d8c61204f8362010bd9612def565b6120599190612def565b9050600062023ab161206c836004612e17565b6120769190612e47565b905060046120878262023ab1612e17565b612092906003612def565b61209c9190612e47565b6120a69083612e75565b9150600062164b096120b9846001612def565b6120c590610fa0612e17565b6120cf9190612e47565b905060046120df826105b5612e17565b6120e99190612e47565b6120f39084612e75565b6120fe90601f612def565b9250600061098f612110856050612e17565b61211a9190612e47565b90506000605061212c8361098f612e17565b6121369190612e47565b6121409086612e75565b905061214d600b83612e47565b945061215a85600c612e17565b612165836002612def565b61216f9190612e75565b9150848361217e603187612e75565b612189906064612e17565b6121939190612def565b61219d9190612def565b9a919950975095505050505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b60606121db838360006122de565b90505b92915050565b806001600160a01b03163b60000361221a57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610af7565b600080516020612eb983398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516122669190612e9c565b600060405180830381855af49150503d80600081146122a1576040519150601f19603f3d011682016040523d82523d6000602084013e6122a6565b606091505b50915091506122b685838361237d565b95945050505050565b34156115005760405163b398979f60e01b815260040160405180910390fd5b6060814710156123035760405163cd78605960e01b8152306004820152602401610af7565b600080856001600160a01b0316848660405161231f9190612e9c565b60006040518083038185875af1925050503d806000811461235c576040519150601f19603f3d011682016040523d82523d6000602084013e612361565b606091505b509150915061237186838361237d565b925050505b9392505050565b6060826123925761238d826123d9565b612376565b81511580156123a957506001600160a01b0384163b155b156123d257604051639996b31560e01b81526001600160a01b0385166004820152602401610af7565b5080612376565b8051156123e95780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b5080546000825560030290600052602060002090810190611a5591905b8082111561244057600080825560018201819055600282015560030161241f565b5090565b60006020828403121561245657600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b03811182821017156124955761249561245d565b60405290565b60405161014081016001600160401b03811182821017156124955761249561245d565b604051601f8201601f191681016001600160401b03811182821017156124e6576124e661245d565b604052919050565b60006001600160401b038211156125075761250761245d565b5060051b60200190565b600082601f83011261252257600080fd5b81356020612537612532836124ee565b6124be565b8281526060928302850182019282820191908785111561255657600080fd5b8387015b8581101561259d5781818a0312156125725760008081fd5b61257a612473565b81358152858201358682015260408083013590820152845292840192810161255a565b5090979650505050505050565b6000602082840312156125bc57600080fd5b81356001600160401b038111156125d257600080fd5b6125de84828501612511565b949350505050565b600081356001600160a81b03811681146125ff57600080fd5b6001600160a01b031692915050565b60006020828403121561262057600080fd5b6121db826125e6565b60006001600160401b038311156126425761264261245d565b612655601f8401601f19166020016124be565b905082815283838301111561266957600080fd5b828260208301376000602084830101529392505050565b6000806040838503121561269357600080fd5b61269c836125e6565b915060208301356001600160401b038111156126b757600080fd5b8301601f810185136126c857600080fd5b6126d785823560208401612629565b9150509250929050565b6000806000808486036101a08112156126f957600080fd5b6101408082121561270957600080fd5b61271161249b565b915086358252602087013560208301526040870135604083015260608701356060830152612741608088016125e6565b608083015261275260a088016125e6565b60a083015261276360c088016125e6565b60c083015260e08781013590830152610100808801359083015261012080880135908301529094508501356001600160401b038111156127a257600080fd5b6127ae87828801612511565b9350506127be61016086016125e6565b91506127cd61018086016125e6565b905092959194509250565b6000806000606084860312156127ed57600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561281757600080fd5b8235915060208301356001600160401b038111156126b757600080fd5b60005b8381101561284f578181015183820152602001612837565b50506000910152565b60008151808452612870816020860160208601612834565b601f01601f19169290920160200192915050565b6020815260006121db6020830184612858565b60008083601f8401126128a957600080fd5b5081356001600160401b038111156128c057600080fd5b6020830191508360208260051b8501011115611c2557600080fd5b6000806000806000806000806000898b036101008112156128fb57600080fd5b8a356001600160401b038082111561291257600080fd5b61291e8e838f01612897565b909c509a5060208d013591508082111561293757600080fd5b6129438e838f01612897565b909a50985060408d013591508082111561295c57600080fd5b6129688e838f01612897565b909850965060608d013591508082111561298157600080fd5b5061298e8d828e01612897565b9095509350506080607f19820112156129a657600080fd5b5060808a0190509295985092959850929598565b602080825282518282018190526000919060409081850190868401855b82811015612a0657815180518552868101518786015285015185850152606090930192908501906001016129d7565b5091979650505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201612a5157612a51612a29565b5060010190565b600060208284031215612a6a57600080fd5b5051919050565b60208082526014908201527341726974686d65746963204f766572666c6f772160601b604082015260600190565b80820281158282048414176121de576121de612a29565b634e487b7160e01b600052601260045260246000fd5b600082612adb57612adb612ab6565b500490565b838152606060208201526000612af96060830185612858565b9050826040830152949350505050565b600060208284031215612b1b57600080fd5b8151801515811461237657600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b81835260006001600160fb1b03831115612b6d57600080fd5b8260051b80836020870137939093016020019392505050565b818352600060208085019450826000805b86811015612bc557823562ffffff8116808214612bb2578384fd5b8952509683019691830191600101612b97565b50959695505050505050565b80358252602080820135908301526001600160a01b03612bf3604083016125e6565b166040830152606090810135910152565b610100808252810189905260008a6101208301825b8c811015612c47576001600160a01b03612c32846125e6565b16825260209283019290910190600101612c19565b50838103602085015280915089815260208101915060208a60051b8201018b60005b8c811015612cdd57838303601f190185528135368f9003601e19018112612c8f57600080fd5b8e016020810190356001600160401b03811115612cab57600080fd5b803603821315612cba57600080fd5b612cc5858284612b2b565b60209788019790955093909301925050600101612c69565b50508481036040860152612cf2818a8c612b54565b925050508281036060840152612d09818688612b86565b915050612d196080830184612bd1565b9a9950505050505050505050565b60006020808385031215612d3a57600080fd5b82516001600160401b03811115612d5057600080fd5b8301601f81018513612d6157600080fd5b8051612d6f612532826124ee565b81815260059190911b82018301908381019087831115612d8e57600080fd5b928401925b82841015612dac57835182529284019290840190612d93565b979650505050505050565b818103818111156121de576121de612a29565b606081526000612ddd6060830186612858565b60208301949094525060400152919050565b8082018281126000831280158216821582161715612e0f57612e0f612a29565b505092915050565b80820260008212600160ff1b84141615612e3357612e33612a29565b81810583148215176121de576121de612a29565b600082612e5657612e56612ab6565b600160ff1b821460001984141615612e7057612e70612a29565b500590565b8181036000831280158383131683831282161715612e9557612e95612a29565b5092915050565b60008251612eae818460208701612834565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca26474726f6e58221220dc969be33db28f613e1ddf30d7e4fa526f70e74ddcb3ef33782d3aa3224d573564736f6c63430008140033",
    "sourceMap": "503:15282:1:-:0;;;1171:4:5;1128:48;;503:15282:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;",
    "deployedSourceMap": "503:15282:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5334:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5334:113:1;;;;;:::i;:::-;;:::i;:::-;;4508:237;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4508:237:1;;;;;:::i;:::-;;:::i;2041:28::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2041:28:1;;;;-1:-1:-1;;;;;2041:28:1;;;;;;-1:-1:-1;;;;;2935:32:17;;;2917:51;;2905:2;2890:18;2041:28:1;;;;;;;;2216:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2216:25:1;;;;;:::i;:::-;;:::i;:::-;;;;3181::17;;;3237:2;3222:18;;3215:34;;;;3265:18;;;3258:34;3169:2;3154:18;2216:25:1;2979:319:17;7105:617:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7105:617:1;;;;;:::i;:::-;;:::i;2076:19::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2076:19:1;;;;-1:-1:-1;;;;;2076:19:1;;;7860:868;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7860:868:1;;;;;:::i;:::-;;:::i;2006:28::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2006:28:1;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2006:28:1;;;;;;;;;;;;;;;;;3702:25:17;;;3758:2;3743:18;;3736:34;;;;3786:18;;;3779:34;;;;3844:2;3829:18;;3822:34;;;;-1:-1:-1;;;;;3931:15:17;;;3925:3;3910:19;;3903:44;3984:15;;;3883:3;3963:19;;3956:44;4037:15;4031:3;4016:19;;4009:44;4084:3;4069:19;;4062:35;4128:3;4113:19;;4106:35;4172:3;4157:19;;4150:35;3689:3;3674:19;2006:28:1;3303:888:17;6308:117:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6308:117:1;;;;;:::i;:::-;;:::i;5574:121::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5574:121:1;;;;;:::i;:::-;;:::i;4158:214:5:-;;;;;;:::i;:::-;;:::i;3705:134::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;5711:25:17;;;5699:2;5684:18;3705:134:5;5565:177:17;2560:467:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2560:467:1;;;;;:::i;:::-;;:::i;3888:614::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3888:614:1;;;;;:::i;:::-;;:::i;8909:3743::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8909:3743:1;;;;;:::i;:::-;;:::i;3155:101:3:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2441:144::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1313:22:3;2570:8;-1:-1:-1;;;;;2570:8:3;2441:144;;2102:53:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2102:53:1;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;8211:25:17;;;8267:2;8252:18;;8245:34;;;;8184:18;2102:53:1;8037:248:17;1819:58:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1819:58:5;;;;;;;;;;;;:::i;6573:117:1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6573:117:1;;;;;:::i;:::-;;:::i;4860:109::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4860:109:1;;;;;:::i;:::-;;:::i;6814:155::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6814:155:1;;;;;:::i;:::-;;:::i;13013:2770::-;;;;;;:::i;:::-;;:::i;6042:117::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6042:117:1;;;;;:::i;:::-;;:::i;5813:109::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5813:109:1;;;;;:::i;:::-;;:::i;5095:121::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5095:121:1;;;;;:::i;:::-;;:::i;3786:96::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;2162:47::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2162:47:1;;;;;:::i;:::-;;;;;;;;;;;;;;3405:215:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3405:215:3;;;;;:::i;:::-;;:::i;3423:357:1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3423:357:1;;;;;:::i;:::-;;:::i;5334:113::-;2334:13:3;:11;:13::i;:::-;5406:21:1::1;:34:::0;5334:113::o;4508:237::-;2334:13:3;:11;:13::i;:::-;4585:15:1::1;4592:8;;4585:15;:::i;:::-;4647:9;4642:97;4666:8;:15;4662:1;:19;4642:97;;;4702:8;4716;4725:1;4716:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;4702:26;;::::1;::::0;;::::1;::::0;;-1:-1:-1;4702:26:1;;;;;;;;;::::1;::::0;;::::1;;::::0;;;;;::::1;::::0;;;::::1;::::0;;;;::::1;::::0;;::::1;::::0;::::1;::::0;;::::1;::::0;4683:3;::::1;::::0;::::1;:::i;:::-;;;;4642:97;;;;4508:237:::0;:::o;2216:25::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2216:25:1;:::o;7105:617::-;3235:22;;3228:113;;-1:-1:-1;;;3228:113:1;;3286:10;3228:113;;;12644:34:17;3322:4:1;12694:18:17;;;12687:43;7166:6:1;;;;-1:-1:-1;;;;;3235:22:1;;;;3228:40;;12579:18:17;;3228:113:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:123;;3207:192;;;;-1:-1:-1;;;3207:192:1;;13132:2:17;3207:192:1;;;13114:21:17;13171:2;13151:18;;;13144:30;-1:-1:-1;;;13190:18:17;;;13183:52;13252:18;;3207:192:1;;;;;;;;;7206:22:::1;::::0;-1:-1:-1;;;;;7206:22:1::1;7184:12;7280:11:::0;;;7272:38:::1;;;::::0;-1:-1:-1;;;7272:38:1;;13483:2:17;7272:38:1::1;::::0;::::1;13465:21:17::0;13522:2;13502:18;;;13495:30;-1:-1:-1;;;13541:18:17;;;13534:44;13595:18;;7272:38:1::1;13281:338:17::0;7272:38:1::1;7321:57;-1:-1:-1::0;;;;;7321:22:1;::::1;7344:10;7364:4;7371:6:::0;7321:22:::1;:57::i;:::-;7465:10;7390:17;7452:24:::0;;;:12:::1;:24;::::0;;;;;7390:17;;7427:79:::1;::::0;7490:6;7427:11:::1;:79::i;:::-;7389:117;;;;7590:12;7582:45;;;;-1:-1:-1::0;;;7582:45:1::1;;;;;;;:::i;:::-;7650:10;7637:24;::::0;;;:12:::1;:24;::::0;;;;;;:33;;;7686:29;::::1;::::0;::::1;::::0;7708:6;5711:25:17;;5699:2;5684:18;;5565:177;7686:29:1::1;;;;;;;;7174:548;;;7105:617:::0;;:::o;7860:868::-;7935:22;;-1:-1:-1;;;;;7935:22:1;7983:10;7913:12;8044:11;;;8036:38;;;;-1:-1:-1;;;8036:38:1;;13483:2:17;8036:38:1;;;13465:21:17;13522:2;13502:18;;;13495:30;-1:-1:-1;;;13541:18:17;;;13534:44;13595:18;;8036:38:1;13281:338:17;8036:38:1;-1:-1:-1;;;;;8127:18:1;;8119:46;;;;-1:-1:-1;;;8119:46:1;;14175:2:17;8119:46:1;;;14157:21:17;14214:2;14194:18;;;14187:30;-1:-1:-1;;;14233:18:17;;;14226:45;14288:18;;8119:46:1;13973:339:17;8119:46:1;-1:-1:-1;;;;;8198:18:1;;8176:19;8198:18;;;:12;:18;;;;;;8230:20;;;8226:176;;;8273:118;;-1:-1:-1;;;8273:118:1;;;;;8211:25:17;;;8252:18;;;8245:34;;;8184:18;;8273:118:1;8037:248:17;8226:176:1;8413:17;8432:14;8450:32;8462:11;8475:6;8450:11;:32::i;:::-;8412:70;;;;8566:12;8558:45;;;;-1:-1:-1;;;8558:45:1;;;;;;;:::i;:::-;-1:-1:-1;;;;;8613:18:1;;;;;;;:12;:18;;;;;:27;;;8650:32;;:18;;8626:4;8675:6;8650:18;:32::i;:::-;8708:4;-1:-1:-1;;;;;8698:23:1;;8714:6;8698:23;;;;5711:25:17;;5699:2;5684:18;;5565:177;8698:23:1;;;;;;;;7903:825;;;;;7860:868;:::o;6308:117::-;2334:13:3;:11;:13::i;:::-;6382:24:1::1;:36:::0;6308:117::o;5574:121::-;2334:13:3;:11;:13::i;:::-;5650:23:1::1;:38:::0;;-1:-1:-1;;;;;;5650:38:1::1;-1:-1:-1::0;;;;;5650:38:1;;;::::1;::::0;;;::::1;::::0;;5574:121::o;4158:214:5:-;2653:13;:11;:13::i;:::-;4273:36:::1;4291:17;4273;:36::i;:::-;4319:46;4341:17;4360:4;4319:21;:46::i;3705:134::-:0;3774:7;2924:20;:18;:20::i;:::-;-1:-1:-1;;;;;;;;;;;;3705:134:5;:::o;2560:467:1:-;8870:21:4;4302:15;;-1:-1:-1;;;4302:15:4;;;;4301:16;;-1:-1:-1;;;;;4348:14:4;4158:30;4726:16;;:34;;;;;4746:14;4726:34;4706:54;;4770:17;4790:11;-1:-1:-1;;;;;4790:16:4;4805:1;4790:16;:50;;;;-1:-1:-1;4818:4:4;4810:25;:30;4790:50;4770:70;;4856:12;4855:13;:30;;;;;4873:12;4872:13;4855:30;4851:91;;;4908:23;;-1:-1:-1;;;4908:23:4;;;;;;;;;;;4851:91;4951:18;;-1:-1:-1;;4951:18:4;4968:1;4951:18;;;4979:67;;;;5013:22;;-1:-1:-1;;;;5013:22:4;-1:-1:-1;;;5013:22:4;;;4979:67;2752:13:1::1;:31:::0;;-1:-1:-1;;;;;2752:31:1;;::::1;-1:-1:-1::0;;;;;;2752:31:1;;::::1;;::::0;;;2793:24;;2752:13:::1;2793:24:::0;::::1;::::0;::::1;::::0;2752:31;2793:24;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;::::0;-1:-1:-1;2793:24:1;;;;;::::1;::::0;::::1;;::::0;;::::1;::::0;::::1;::::0;-1:-1:-1;2793:24:1;2752:31:::1;2793:24:::0;::::1;::::0;-1:-1:-1;2793:24:1;::::1;::::0;::::1;::::0;-1:-1:-1;2793:24:1;2827::::1;:22;:24::i;:::-;2861:26;2876:10;2861:14;:26::i;:::-;2897:4;:18:::0;;-1:-1:-1;;;;;;2897:18:1::1;-1:-1:-1::0;;;;;2897:18:1;::::1;;::::0;;-1:-1:-1;2925:96:1::1;2946:9;:16;2942:1;:20;2925:96;;;2983:8;2997:9;3007:1;2997:12;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;2983:27;;::::1;::::0;;::::1;::::0;;-1:-1:-1;2983:27:1;;;;;;;;;::::1;::::0;;::::1;;::::0;;;;;::::1;::::0;;;::::1;::::0;;;;::::1;::::0;;::::1;::::0;::::1;::::0;;::::1;::::0;2964:3;::::1;::::0;::::1;:::i;:::-;;;;2925:96;;;;5070:14:4::0;5066:101;;;5100:23;;-1:-1:-1;;;;5100:23:4;;;5142:14;;-1:-1:-1;14470:50:17;;5142:14:4;;14458:2:17;14443:18;5142:14:4;;;;;;;5066:101;4092:1081;;;;;2560:467:1;;;;:::o;3888:614::-;2334:13:3;:11;:13::i;:::-;4014:10:1::1;4048:6:::0;4043:298:::1;4064:8;:15:::0;4060:19;::::1;4043:298;;;4134:8;4143:1;4134:11;;;;;;;;:::i;:::-;;;;;;;;;;;:21;;;4121:9;:34;;:88;;;;;4188:8;4197:1;4188:11;;;;;;;;:::i;:::-;;;;;;;;;;;:21;;;4175:9;:34;;4121:88;4100:231;;;4260:3;4242:8;4251:1;4242:11;;;;;;;;:::i;:::-;;;;;;;;;;;:15;;:21;;;;4289:4;4281:12;;4311:5;;4100:231;4081:3:::0;::::1;::::0;::::1;:::i;:::-;;;;4043:298;;;;4356:5;4351:145;;4408:63;::::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;;4377:8:::1;:108:::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;4377:108:1;;;;;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;;;;;;;;;;;;;4351:145:::1;4004:498;3888:614:::0;;;:::o;8909:3743::-;9008:22;;-1:-1:-1;;;;;9008:22:1;9083:10;9075:52;;;;-1:-1:-1;;;9075:52:1;;14175:2:17;9075:52:1;;;14157:21:17;14214:2;14194:18;;;14187:30;-1:-1:-1;;;14233:18:17;;;14226:45;14288:18;;9075:52:1;13973:339:17;9075:52:1;9236:24;;9226:34;;;;;:88;;-1:-1:-1;9290:24:1;;9280:34;;;9226:88;9205:166;;;;-1:-1:-1;;;9205:166:1;;14733:2:17;9205:166:1;;;14715:21:17;14772:2;14752:18;;;14745:30;14811:33;14791:18;;;14784:61;14862:18;;9205:166:1;14531:355:17;9205:166:1;9459:10;9446:24;;;;:12;:24;;;;;;:33;-1:-1:-1;9442:202:1;;;9607:10;9594:24;;;;:12;:24;;;;;;;;9502:131;;-1:-1:-1;;;9502:131:1;;;;9554:6;;9502:131;;8211:25:17;;;8267:2;8252:18;;8245:34;8199:2;8184:18;;8037:248;9442:202:1;9692:18;9713:14;9720:6;9713;:14::i;:::-;9692:35;-1:-1:-1;9737:21:1;9785:5;9762:19;9692:35;9762:6;:19;:::i;:::-;9761:29;;;;:::i;:::-;9737:53;;9837:17;9856:18;9878:68;9903:6;9923:13;9878:11;:68::i;:::-;9836:110;;;;9964:12;9956:45;;;;-1:-1:-1;;;9956:45:1;;;;;;;:::i;:::-;10133:10;10055:19;10120:24;;;:12;:24;;;;;;10055:19;;10095:79;;10158:6;10095:11;:79::i;:::-;10054:120;;;;10192:14;10184:47;;;;-1:-1:-1;;;10184:47:1;;;;;;;:::i;:::-;10254:10;10241:24;;;;:12;:24;;;;;:34;;;10286:18;:20;;;;;;:::i;:::-;;;;-1:-1:-1;10494:15:1;;-1:-1:-1;10361:6:1;10316:16;;;10642:53;10494:15;10642:43;:53::i;:::-;10962:10;10758:24;10948:25;;;:13;:25;;;;;:38;10523:172;;-1:-1:-1;10523:172:1;;-1:-1:-1;10523:172:1;-1:-1:-1;10758:24:1;;;;;10883:121;;:43;:121::i;:::-;10740:264;;;;;;11080:15;11111:16;11099:8;:28;:78;;;;;11160:17;11147:9;:30;11099:78;:124;;;;;11208:15;11197:7;:26;11099:124;11080:144;;11242:10;11238:821;;;11457:10;11372:18;11443:25;;;:13;:25;;;;;:47;;;11372:18;;11410:128;;11512:8;11410:11;:128::i;:::-;11371:167;;;;11640:13;11632:46;;;;-1:-1:-1;;;11632:46:1;;;;;;;:::i;:::-;11710:10;11696:25;;;;:13;:25;;;;;:47;;:56;-1:-1:-1;11238:821:1;;;11885:10;11871:25;;;;:13;:25;;;;;:49;;;11986:47;;:58;;;11238:821;-1:-1:-1;;12232:28:1;;12179:10;12232;12165:25;;;:13;:25;;;;;:47;;;:95;;;-1:-1:-1;12144:172:1;;-1:-1:-1;;;;12144:172:1;;;-1:-1:-1;;;12144:172:1;;15523:2:17;12144:172:1;;;15505:21:17;15562:2;15542:18;;;15535:30;15601:32;15581:18;;;15574:60;15651:18;;12144:172:1;15321:354:17;12144:172:1;12384:23;;12365:58;;-1:-1:-1;;;;;12365:18:1;;;;12384:23;12409:13;12365:18;:58::i;:::-;12452:20;;12433:52;;-1:-1:-1;;;;;12433:18:1;;;;12452:20;12474:10;12433:18;:52::i;:::-;12552:18;;12501:144;;12528:10;;12501:144;;;;12584:6;;12604:9;;12627:8;;12501:144;:::i;:::-;;;;;;;;8976:3676;;;;;;;;;8909:3743;;:::o;3155:101:3:-;2334:13;:11;:13::i;:::-;3219:30:::1;3246:1;3219:18;:30::i;:::-;3155:101::o:0;6573:117:1:-;2334:13:3;:11;:13::i;:::-;6647:24:1::1;:36:::0;6573:117::o;4860:109::-;2334:13:3;:11;:13::i;:::-;4930:10:1::1;:32:::0;4860:109::o;6814:155::-;2334:13:3;:11;:13::i;:::-;6914:28:1::1;:48:::0;6814:155::o;13013:2770::-;13385:4;13366:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;13366:24:1;;13358:65;;;;-1:-1:-1;;;13358:65:1;;16249:2:17;13358:65:1;;;16231:21:17;16288:2;16268:18;;;16261:30;16327;16307:18;;;16300:58;16375:18;;13358:65:1;16047:352:17;13358:65:1;13434:15;13467:4;;13472:1;13467:7;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;13589:4;;13434:42;;-1:-1:-1;13517:13:1;;;-1:-1:-1;;;;;13568:25:1;;;13589:4;;13568:25;;;;13603:312;;13634:126;-1:-1:-1;;;;;13634:25:1;;966:10:6;13715:4:1;13738:8;13634:25;:126::i;:::-;13861:13;;13844:40;;-1:-1:-1;;;13844:40:1;;-1:-1:-1;;;;;13861:13:1;;;13844:40;;;16578:51:17;16645:18;;;16638:34;;;13844:16:1;;;;;;16551:18:17;;13844:40:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13836:68;;;;-1:-1:-1;;;13836:68:1;;17167:2:17;13836:68:1;;;17149:21:17;17206:2;17186:18;;;17179:30;-1:-1:-1;;;17225:18:17;;;17218:45;17280:18;;13836:68:1;16965:339:17;13836:68:1;13935:27;13979:13;;;;;;;;;-1:-1:-1;;;;;13979:13:1;-1:-1:-1;;;;;13966:42:1;;14015:9;14026:4;;14032:11;;14045:10;;14057:4;;14063;13966:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13966:102:1;;;;;;;;;;;;:::i;:::-;13934:134;;14083:6;14078:121;14099:10;:17;14095:1;:21;14078:121;;;14137:51;;;;;;;;;;;;;;-1:-1:-1;;;14137:51:1;;;14171:1;14174:10;14185:1;14174:13;;;;;;;;:::i;:::-;;;;;;;14137:11;:51::i;:::-;14118:3;;;;:::i;:::-;;;;14078:121;;;;14208:17;14228:10;14259:1;14239:10;:17;:21;;;;:::i;:::-;14228:33;;;;;;;;:::i;:::-;;;;;;;14208:53;;14291:1;14279:9;:13;14271:37;;;;-1:-1:-1;;;14271:37:1;;22356:2:17;14271:37:1;;;22338:21:17;22395:2;22375:18;;;22368:30;-1:-1:-1;;;22414:18:17;;;22407:41;22465:18;;14271:37:1;22154:335:17;14271:37:1;14929:11;;14991:5;14972:15;14929:11;14972:9;:15;:::i;:::-;14971:25;;;;:::i;:::-;14951:45;;15007:18;15027:15;15046:33;15058:9;15069;15046:11;:33::i;:::-;15006:73;;;;15163:13;15155:46;;;;-1:-1:-1;;;15155:46:1;;;;;;;:::i;:::-;15317:22;;15368:23;;15232:7;;-1:-1:-1;;;;;15317:22:1;;;;15350:53;;15317:22;;15368:23;15393:9;15350:17;:53::i;:::-;966:10:6;15415:19:1;15468:26;;;:12;:26;;;;;;15415:19;;15456:51;;15496:10;15456:11;:51::i;:::-;15414:93;;;;15592:14;15584:47;;;;-1:-1:-1;;;15584:47:1;;;;;;;:::i;:::-;966:10:6;15641:26:1;;;;:12;:26;;;;;;;;;:37;;;15694:82;;22725:25:17;;;22766:18;;;22759:34;;;22809:18;;;22802:34;;;22867:2;22852:18;;22845:34;;;-1:-1:-1;;;;;15694:82:1;;;966:10:6;15694:82:1;;22712:3:17;22697:19;15694:82:1;;;;;;;13248:2535;;;;;;;;;;;;;13013:2770;;;;;;;;;:::o;6042:117::-;2334:13:3;:11;:13::i;:::-;6116:22:1::1;:36:::0;;-1:-1:-1;;;;;;6116:36:1::1;-1:-1:-1::0;;;;;6116:36:1;;;::::1;::::0;;;::::1;::::0;;6042:117::o;5813:109::-;2334:13:3;:11;:13::i;:::-;5883:20:1::1;:32:::0;;-1:-1:-1;;;;;;5883:32:1::1;-1:-1:-1::0;;;;;5883:32:1;;;::::1;::::0;;;::::1;::::0;;5813:109::o;5095:121::-;2334:13:3;:11;:13::i;:::-;5171:23:1::1;:38:::0;5095:121::o;3786:96::-;3832:16;3867:8;3860:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3786:96;:::o;3405:215:3:-;2334:13;:11;:13::i;:::-;-1:-1:-1;;;;;3489:22:3;::::1;3485:91;;3534:31;::::0;-1:-1:-1;;;3534:31:3;;3562:1:::1;3534:31;::::0;::::1;2917:51:17::0;2890:18;;3534:31:3::1;2771:203:17::0;3485:91:3::1;3585:28;3604:8;3585:18;:28::i;:::-;3405:215:::0;:::o;3423:357:1:-;3476:7;;3495:240;3516:8;:15;3512:19;;3495:240;;;3583:8;3592:1;3583:11;;;;;;;;:::i;:::-;;;;;;;;;;;:21;;;3573:6;:31;;:82;;;;;3634:8;3643:1;3634:11;;;;;;;;:::i;:::-;;;;;;;;;;;:21;;;3624:6;:31;;3573:82;3552:173;;;3695:8;3704:1;3695:11;;;;;;;;:::i;:::-;;;;;;;;;;;:15;;;3688:22;;;3423:357;;;:::o;3552:173::-;3533:3;;;;:::i;:::-;;;;3495:240;;;-1:-1:-1;3744:29:1;;-1:-1:-1;;;3744:29:1;;23092:2:17;3744:29:1;;;23074:21:17;23131:2;23111:18;;;23104:30;-1:-1:-1;;;23150:18:17;;;23143:49;23209:18;;3744:29:1;22890:343:17;2658:162:3;966:10:6;2717:7:3;1313:22;2570:8;-1:-1:-1;;;;;2570:8:3;;2441:144;2717:7;-1:-1:-1;;;;;2717:23:3;;2713:101;;2763:40;;-1:-1:-1;;;2763:40:3;;966:10:6;2763:40:3;;;2917:51:17;2890:18;;2763:40:3;2771:203:17;1702:188:12;1829:53;;-1:-1:-1;;;;;23496:15:17;;;1829:53:12;;;23478:34:17;23548:15;;;23528:18;;;23521:43;23580:18;;;23573:34;;;1802:81:12;;1822:5;;1844:18;;;;;23413::17;;1829:53:12;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1829:53:12;;;;;;;;;;;1802:19;:81::i;585:216:15:-;646:4;;707:5;;;730;;;726:28;;;745:5;752:1;737:17;;;;;;;726:28;776:4;;-1:-1:-1;782:1:15;-1:-1:-1;585:216:15;;;;;;:::o;908:189::-;969:4;975:7;1026:1;1022;:5;1018:28;;;-1:-1:-1;1037:5:15;;-1:-1:-1;1037:5:15;1029:17;;1018:28;-1:-1:-1;1068:4:15;;1074:5;;;;;-1:-1:-1;908:189:15:o;1303:160:12:-;1412:43;;-1:-1:-1;;;;;16596:32:17;;;1412:43:12;;;16578:51:17;16645:18;;;16638:34;;;1385:71:12;;1405:5;;1427:14;;;;;16551:18:17;;1412:43:12;16404:274:17;1385:71:12;1303:160;;;:::o;4599:312:5:-;4679:4;-1:-1:-1;;;;;4688:6:5;4671:23;;;:120;;;4785:6;-1:-1:-1;;;;;4749:42:5;:32;-1:-1:-1;;;;;;;;;;;2035:53:8;-1:-1:-1;;;;;2035:53:8;;1957:138;4749:32:5;-1:-1:-1;;;;;4749:42:5;;;4671:120;4654:251;;;4865:29;;-1:-1:-1;;;4865:29:5;;;;;;;;;;;2248:98:1;2334:13:3;:11;:13::i;6052:538:5:-;6169:17;-1:-1:-1;;;;;6151:50:5;;:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6151:52:5;;;;;;;;-1:-1:-1;;6151:52:5;;;;;;;;;;;;:::i;:::-;;;6147:437;;6513:60;;-1:-1:-1;;;6513:60:5;;-1:-1:-1;;;;;2935:32:17;;6513:60:5;;;2917:51:17;2890:18;;6513:60:5;2771:203:17;6147:437:5;-1:-1:-1;;;;;;;;;;;6245:40:5;;6241:120;;6312:34;;-1:-1:-1;;;6312:34:5;;;;;5711:25:17;;;5684:18;;6312:34:5;5565:177:17;6241:120:5;6374:54;6404:17;6423:4;6374:29;:54::i;5028:213::-;5102:4;-1:-1:-1;;;;;5111:6:5;5094:23;;5090:145;;5195:29;;-1:-1:-1;;;5195:29:5;;;;;;;;;;;2968:67;6931:20:4;:18;:20::i;1847:127:3:-;6931:20:4;:18;:20::i;:::-;1929:38:3::1;1954:12;1929:24;:38::i;4385:175:0:-:0;4449:9;;;4513:40;4525:27;1018:12;4525:9;:27;:::i;:::-;4513:11;:40::i;:::-;4492:61;;;;-1:-1:-1;4492:61:0;;-1:-1:-1;4385:175:0;-1:-1:-1;;4385:175:0:o;3774:248:3:-;1313:22;3923:8;;-1:-1:-1;;;;;;3941:19:3;;-1:-1:-1;;;;;3941:19:3;;;;;;;;3975:40;;3923:8;;;;;3975:40;;3847:24;;3975:40;3837:185;;3774:248;:::o;10057:160:16:-;10130:83;10201:2;10205;10209;10146:66;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;10146:66:16;;;;;;;;;;;;;;-1:-1:-1;;;;;10146:66:16;-1:-1:-1;;;10146:66:16;;;10130:15;:83::i;4059:629:12:-;4478:23;4504:33;-1:-1:-1;;;;;4504:27:12;;4532:4;4504:27;:33::i;:::-;4478:59;;4551:10;:17;4572:1;4551:22;;:57;;;;;4589:10;4578:30;;;;;;;;;;;;:::i;:::-;4577:31;4551:57;4547:135;;;4631:40;;-1:-1:-1;;;4631:40:12;;-1:-1:-1;;;;;2935:32:17;;4631:40:12;;;2917:51:17;2890:18;;4631:40:12;2771:203:17;2779:335:8;2870:37;2889:17;2870:18;:37::i;:::-;2922:27;;-1:-1:-1;;;;;2922:27:8;;;;;;;;2964:11;;:15;2960:148;;2995:53;3024:17;3043:4;2995:28;:53::i;2960:148::-;3079:18;:16;:18::i;7084:141:4:-;8870:21;8560:40;-1:-1:-1;;;8560:40:4;;;;7146:73;;7191:17;;-1:-1:-1;;;7191:17:4;;;;;;;;;;;1980:235:3;6931:20:4;:18;:20::i;3304:605:0:-;3360:9;;;3420:5;3360:9;1155:7;3445:14;3420:5;3454;3445:14;:::i;:::-;:31;;;;:::i;:::-;3437:39;-1:-1:-1;3486:5:0;3502:6;3494:5;3437:39;3494:1;:5;:::i;:::-;:14;;;;:::i;:::-;3486:22;-1:-1:-1;3545:1:0;3527:10;3486:22;3527:6;:10;:::i;:::-;:14;;3540:1;3527:14;:::i;:::-;3526:20;;;;:::i;:::-;3522:24;;:1;:24;:::i;:::-;3518:28;-1:-1:-1;3556:9:0;3585:7;3576:5;3518:28;3580:1;3576:5;:::i;:::-;3568:14;;:4;:14;:::i;:::-;:24;;;;:::i;:::-;3556:36;-1:-1:-1;3625:1:0;3610:12;3556:36;3610:4;:12;:::i;:::-;:16;;;;:::i;:::-;3606:20;;:1;:20;:::i;:::-;:25;;3629:2;3606:25;:::i;:::-;3602:29;-1:-1:-1;3641:10:0;3663:4;3654:6;3602:29;3654:2;:6;:::i;:::-;:13;;;;:::i;:::-;3641:26;-1:-1:-1;3677:8:0;3708:2;3692:13;3641:26;3692:4;:13;:::i;:::-;:18;;;;:::i;:::-;3688:22;;:1;:22;:::i;:::-;3677:33;-1:-1:-1;3724:11:0;3733:2;3724:6;:11;:::i;:::-;3720:15;-1:-1:-1;3767:6:0;3720:15;3767:2;:6;:::i;:::-;3754:10;:6;3763:1;3754:10;:::i;:::-;:19;;;;:::i;:::-;3745:28;-1:-1:-1;3816:1:0;3808:5;3798:6;3802:2;3798:1;:6;:::i;:::-;3791:14;;:3;:14;:::i;:::-;:22;;;;:::i;:::-;:26;;;;:::i;:::-;3783:34;3869:6;;-1:-1:-1;3897:4:0;-1:-1:-1;3304:605:0;-1:-1:-1;;;;;;3304:605:0:o;176:288:16:-;264:14;;129:42;373:2;360:16;;240:21;;264:14;360:16;129:42;400:5;389:68;380:77;;335:126;;176:288;:::o;2705:151:13:-;2780:12;2811:38;2833:6;2841:4;2847:1;2811:21;:38::i;:::-;2804:45;;2705:151;;;;;:::o;2186:281:8:-;2263:17;-1:-1:-1;;;;;2263:29:8;;2296:1;2263:34;2259:119;;2320:47;;-1:-1:-1;;;2320:47:8;;-1:-1:-1;;;;;2935:32:17;;2320:47:8;;;2917:51:17;2890:18;;2320:47:8;2771:203:17;2259:119:8;-1:-1:-1;;;;;;;;;;;2387:73:8;;-1:-1:-1;;;;;;2387:73:8;-1:-1:-1;;;;;2387:73:8;;;;;;;;;;2186:281::o;4106:253:13:-;4189:12;4214;4228:23;4255:6;-1:-1:-1;;;;;4255:19:13;4275:4;4255:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4213:67;;;;4297:55;4324:6;4332:7;4341:10;4297:26;:55::i;:::-;4290:62;4106:253;-1:-1:-1;;;;;4106:253:13:o;6598:122:8:-;6648:9;:13;6644:70;;6684:19;;-1:-1:-1;;;6684:19:8;;;;;;;;;;;3180:392:13;3279:12;3331:5;3307:21;:29;3303:108;;;3359:41;;-1:-1:-1;;;3359:41:13;;3394:4;3359:41;;;2917:51:17;2890:18;;3359:41:13;2771:203:17;3303:108:13;3421:12;3435:23;3462:6;-1:-1:-1;;;;;3462:11:13;3481:5;3488:4;3462:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3420:73;;;;3510:55;3537:6;3545:7;3554:10;3510:26;:55::i;:::-;3503:62;;;;3180:392;;;;;;:::o;4625:582::-;4769:12;4798:7;4793:408;;4821:19;4829:10;4821:7;:19::i;:::-;4793:408;;;5045:17;;:22;:49;;;;-1:-1:-1;;;;;;5071:18:13;;;:23;5045:49;5041:119;;;5121:24;;-1:-1:-1;;;5121:24:13;;-1:-1:-1;;;;;2935:32:17;;5121:24:13;;;2917:51:17;2890:18;;5121:24:13;2771:203:17;5041:119:13;-1:-1:-1;5180:10:13;5173:17;;5743:516;5874:17;;:21;5870:383;;6102:10;6096:17;6158:15;6145:10;6141:2;6137:19;6130:44;5870:383;6225:17;;-1:-1:-1;;;6225:17:13;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:180:17:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:17;;14:180;-1:-1:-1;14:180:17:o;199:127::-;260:10;255:3;251:20;248:1;241:31;291:4;288:1;281:15;315:4;312:1;305:15;331:253;403:2;397:9;445:4;433:17;;-1:-1:-1;;;;;465:34:17;;501:22;;;462:62;459:88;;;527:18;;:::i;:::-;563:2;556:22;331:253;:::o;589:255::-;661:2;655:9;703:6;691:19;;-1:-1:-1;;;;;725:34:17;;761:22;;;722:62;719:88;;;787:18;;:::i;849:275::-;920:2;914:9;985:2;966:13;;-1:-1:-1;;962:27:17;950:40;;-1:-1:-1;;;;;1005:34:17;;1041:22;;;1002:62;999:88;;;1067:18;;:::i;:::-;1103:2;1096:22;849:275;;-1:-1:-1;849:275:17:o;1129:190::-;1196:4;-1:-1:-1;;;;;1221:6:17;1218:30;1215:56;;;1251:18;;:::i;:::-;-1:-1:-1;1296:1:17;1292:14;1308:4;1288:25;;1129:190::o;1324:1057::-;1385:5;1438:3;1431:4;1423:6;1419:17;1415:27;1405:55;;1456:1;1453;1446:12;1405:55;1492:6;1479:20;1518:4;1542:67;1558:50;1605:2;1558:50;:::i;:::-;1542:67;:::i;:::-;1643:15;;;1705:4;1748:11;;;1736:24;;1732:33;;;1674:12;;;;1631:3;1777:15;;;1774:35;;;1805:1;1802;1795:12;1774:35;1841:2;1833:6;1829:15;1853:499;1869:6;1864:3;1861:15;1853:499;;;1945:2;1939:3;1934;1930:13;1926:22;1923:112;;;1989:1;2018:2;2014;2007:14;1923:112;2061:22;;:::i;:::-;2110:17;;2096:32;;2177:12;;;2164:26;2148:14;;;2141:50;2214:2;2265:12;;;2252:26;2236:14;;;2229:50;2292:18;;2330:12;;;;1886;;1853:499;;;-1:-1:-1;2370:5:17;;1324:1057;-1:-1:-1;;;;;;;1324:1057:17:o;2386:380::-;2495:6;2548:2;2536:9;2527:7;2523:23;2519:32;2516:52;;;2564:1;2561;2554:12;2516:52;2604:9;2591:23;-1:-1:-1;;;;;2629:6:17;2626:30;2623:50;;;2669:1;2666;2659:12;2623:50;2692:68;2752:7;2743:6;2732:9;2728:22;2692:68;:::i;:::-;2682:78;2386:380;-1:-1:-1;;;;2386:380:17:o;4196:234::-;4235:5;4270:20;;-1:-1:-1;;;;;4321:33:17;;4309:46;;4299:74;;4369:1;4366;4359:12;4299:74;-1:-1:-1;;;;;4391:33:17;;4196:234;-1:-1:-1;;4196:234:17:o;4435:186::-;4494:6;4547:2;4535:9;4526:7;4522:23;4518:32;4515:52;;;4563:1;4560;4553:12;4515:52;4586:29;4605:9;4586:29;:::i;4626:406::-;4690:5;-1:-1:-1;;;;;4716:6:17;4713:30;4710:56;;;4746:18;;:::i;:::-;4784:57;4829:2;4808:15;;-1:-1:-1;;4804:29:17;4835:4;4800:40;4784:57;:::i;:::-;4775:66;;4864:6;4857:5;4850:21;4904:3;4895:6;4890:3;4886:16;4883:25;4880:45;;;4921:1;4918;4911:12;4880:45;4970:6;4965:3;4958:4;4951:5;4947:16;4934:43;5024:1;5017:4;5008:6;5001:5;4997:18;4993:29;4986:40;4626:406;;;;;:::o;5037:523::-;5114:6;5122;5175:2;5163:9;5154:7;5150:23;5146:32;5143:52;;;5191:1;5188;5181:12;5143:52;5214:29;5233:9;5214:29;:::i;:::-;5204:39;;5294:2;5283:9;5279:18;5266:32;-1:-1:-1;;;;;5313:6:17;5310:30;5307:50;;;5353:1;5350;5343:12;5307:50;5376:22;;5429:4;5421:13;;5417:27;-1:-1:-1;5407:55:17;;5458:1;5455;5448:12;5407:55;5481:73;5546:7;5541:2;5528:16;5523:2;5519;5515:11;5481:73;:::i;:::-;5471:83;;;5037:523;;;;;:::o;5747:1441::-;5911:6;5919;5927;5935;5979:9;5970:7;5966:23;6009:3;6005:2;6001:12;5998:32;;;6026:1;6023;6016:12;5998:32;6049:6;6075:2;6071;6067:11;6064:31;;;6091:1;6088;6081:12;6064:31;6117:22;;:::i;:::-;6104:35;;6175:9;6162:23;6155:5;6148:38;6246:2;6235:9;6231:18;6218:32;6213:2;6206:5;6202:14;6195:56;6311:2;6300:9;6296:18;6283:32;6278:2;6271:5;6267:14;6260:56;6376:2;6365:9;6361:18;6348:32;6343:2;6336:5;6332:14;6325:56;6414:39;6448:3;6437:9;6433:19;6414:39;:::i;:::-;6408:3;6401:5;6397:15;6390:64;6487:39;6521:3;6510:9;6506:19;6487:39;:::i;:::-;6481:3;6474:5;6470:15;6463:64;6560:39;6594:3;6583:9;6579:19;6560:39;:::i;:::-;6554:3;6543:15;;6536:64;6661:3;6646:19;;;6633:33;6616:15;;;6609:58;6686:3;6734:18;;;6721:32;6705:14;;;6698:56;6773:3;6821:18;;;6808:32;6792:14;;;6785:56;6547:5;;-1:-1:-1;6901:18:17;;6888:32;-1:-1:-1;;;;;6932:30:17;;6929:50;;;6975:1;6972;6965:12;6929:50;6998:68;7058:7;7049:6;7038:9;7034:22;6998:68;:::i;:::-;6988:78;;;7085:39;7119:3;7108:9;7104:19;7085:39;:::i;:::-;7075:49;;7143:39;7177:3;7166:9;7162:19;7143:39;:::i;:::-;7133:49;;5747:1441;;;;;;;:::o;7193:316::-;7270:6;7278;7286;7339:2;7327:9;7318:7;7314:23;7310:32;7307:52;;;7355:1;7352;7345:12;7307:52;-1:-1:-1;;7378:23:17;;;7448:2;7433:18;;7420:32;;-1:-1:-1;7499:2:17;7484:18;;;7471:32;;7193:316;-1:-1:-1;7193:316:17:o;7514:518::-;7592:6;7600;7653:2;7641:9;7632:7;7628:23;7624:32;7621:52;;;7669:1;7666;7659:12;7621:52;7705:9;7692:23;7682:33;;7766:2;7755:9;7751:18;7738:32;-1:-1:-1;;;;;7785:6:17;7782:30;7779:50;;;7825:1;7822;7815:12;8290:250;8375:1;8385:113;8399:6;8396:1;8393:13;8385:113;;;8475:11;;;8469:18;8456:11;;;8449:39;8421:2;8414:10;8385:113;;;-1:-1:-1;;8532:1:17;8514:16;;8507:27;8290:250::o;8545:271::-;8587:3;8625:5;8619:12;8652:6;8647:3;8640:19;8668:76;8737:6;8730:4;8725:3;8721:14;8714:4;8707:5;8703:16;8668:76;:::i;:::-;8798:2;8777:15;-1:-1:-1;;8773:29:17;8764:39;;;;8805:4;8760:50;;8545:271;-1:-1:-1;;8545:271:17:o;8821:220::-;8970:2;8959:9;8952:21;8933:4;8990:45;9031:2;9020:9;9016:18;9008:6;8990:45;:::i;9046:367::-;9109:8;9119:6;9173:3;9166:4;9158:6;9154:17;9150:27;9140:55;;9191:1;9188;9181:12;9140:55;-1:-1:-1;9214:20:17;;-1:-1:-1;;;;;9246:30:17;;9243:50;;;9289:1;9286;9279:12;9243:50;9326:4;9318:6;9314:17;9302:29;;9386:3;9379:4;9369:6;9366:1;9362:14;9354:6;9350:27;9346:38;9343:47;9340:67;;;9403:1;9400;9393:12;9418:1575;9660:6;9668;9676;9684;9692;9700;9708;9716;9724;9768:9;9759:7;9755:23;9798:3;9794:2;9790:12;9787:32;;;9815:1;9812;9805:12;9787:32;9855:9;9842:23;-1:-1:-1;;;;;9925:2:17;9917:6;9914:14;9911:34;;;9941:1;9938;9931:12;9911:34;9980:70;10042:7;10033:6;10022:9;10018:22;9980:70;:::i;:::-;10069:8;;-1:-1:-1;9954:96:17;-1:-1:-1;10157:2:17;10142:18;;10129:32;;-1:-1:-1;10173:16:17;;;10170:36;;;10202:1;10199;10192:12;10170:36;10241:72;10305:7;10294:8;10283:9;10279:24;10241:72;:::i;:::-;10332:8;;-1:-1:-1;10215:98:17;-1:-1:-1;10420:2:17;10405:18;;10392:32;;-1:-1:-1;10436:16:17;;;10433:36;;;10465:1;10462;10455:12;10433:36;10504:72;10568:7;10557:8;10546:9;10542:24;10504:72;:::i;:::-;10595:8;;-1:-1:-1;10478:98:17;-1:-1:-1;10683:2:17;10668:18;;10655:32;;-1:-1:-1;10699:16:17;;;10696:36;;;10728:1;10725;10718:12;10696:36;;10767:72;10831:7;10820:8;10809:9;10805:24;10767:72;:::i;:::-;10858:8;;-1:-1:-1;10741:98:17;-1:-1:-1;;10928:3:17;-1:-1:-1;;10909:17:17;;10905:27;10902:47;;;10945:1;10942;10935:12;10902:47;;10983:3;10972:9;10968:19;10958:29;;9418:1575;;;;;;;;;;;:::o;10998:843::-;11219:2;11271:21;;;11341:13;;11244:18;;;11363:22;;;11190:4;;11219:2;11404;;11422:18;;;;11463:15;;;11190:4;11506:309;11520:6;11517:1;11514:13;11506:309;;;11579:13;;11617:9;;11605:22;;11667:11;;;11661:18;11647:12;;;11640:40;11720:11;;11714:18;11700:12;;;11693:40;11762:4;11753:14;;;;11790:15;;;;11542:1;11535:9;11506:309;;;-1:-1:-1;11832:3:17;;10998:843;-1:-1:-1;;;;;;;10998:843:17:o;12028:127::-;12089:10;12084:3;12080:20;12077:1;12070:31;12120:4;12117:1;12110:15;12144:4;12141:1;12134:15;12160:127;12221:10;12216:3;12212:20;12209:1;12202:31;12252:4;12249:1;12242:15;12276:4;12273:1;12266:15;12292:135;12331:3;12352:17;;;12349:43;;12372:18;;:::i;:::-;-1:-1:-1;12419:1:17;12408:13;;12292:135::o;12741:184::-;12811:6;12864:2;12852:9;12843:7;12839:23;12835:32;12832:52;;;12880:1;12877;12870:12;12832:52;-1:-1:-1;12903:16:17;;12741:184;-1:-1:-1;12741:184:17:o;13624:344::-;13826:2;13808:21;;;13865:2;13845:18;;;13838:30;-1:-1:-1;;;13899:2:17;13884:18;;13877:50;13959:2;13944:18;;13624:344::o;14891:168::-;14964:9;;;14995;;15012:15;;;15006:22;;14992:37;14982:71;;15033:18;;:::i;15064:127::-;15125:10;15120:3;15116:20;15113:1;15106:31;15156:4;15153:1;15146:15;15180:4;15177:1;15170:15;15196:120;15236:1;15262;15252:35;;15267:18;;:::i;:::-;-1:-1:-1;15301:9:17;;15196:120::o;15680:362::-;15885:6;15874:9;15867:25;15928:2;15923;15912:9;15908:18;15901:30;15848:4;15948:45;15989:2;15978:9;15974:18;15966:6;15948:45;:::i;:::-;15940:53;;16029:6;16024:2;16013:9;16009:18;16002:34;15680:362;;;;;;:::o;16683:277::-;16750:6;16803:2;16791:9;16782:7;16778:23;16774:32;16771:52;;;16819:1;16816;16809:12;16771:52;16851:9;16845:16;16904:5;16897:13;16890:21;16883:5;16880:32;16870:60;;16926:1;16923;16916:12;17309:267;17398:6;17393:3;17386:19;17450:6;17443:5;17436:4;17431:3;17427:14;17414:43;-1:-1:-1;17502:1:17;17477:16;;;17495:4;17473:27;;;17466:38;;;;17558:2;17537:15;;;-1:-1:-1;;17533:29:17;17524:39;;;17520:50;;17309:267::o;17581:311::-;17669:19;;;17651:3;-1:-1:-1;;;;;17700:31:17;;17697:51;;;17744:1;17741;17734:12;17697:51;17780:6;17777:1;17773:14;17832:8;17825:5;17818:4;17813:3;17809:14;17796:45;17861:18;;;;17881:4;17857:29;;17581:311;-1:-1:-1;;;17581:311:17:o;17897:572::-;17996:6;17991:3;17984:19;17966:3;18022:4;18051:2;18046:3;18042:12;18035:19;;18077:5;18100:1;18121;18131:313;18147:6;18142:3;18139:15;18131:313;;;18228:6;18215:20;18271:8;18262:7;18258:22;18315:2;18306:7;18303:15;18293:43;;18332:1;18329;18322:12;18293:43;18349:15;;-1:-1:-1;18384:12:17;;;;18419:15;;;;18173:1;18164:11;18131:313;;;-1:-1:-1;18460:3:17;;17897:572;-1:-1:-1;;;;;;17897:572:17:o;18474:330::-;18557:19;;18545:32;;18633:4;18622:16;;;18609:30;18593:14;;;18586:54;-1:-1:-1;;;;;18676:36:17;18706:4;18695:16;;18676:36;:::i;:::-;18672:62;18665:4;18656:14;;18649:86;18791:4;18780:16;;;18767:30;18751:14;;18744:54;18474:330::o;18809:2314::-;19375:3;19388:22;;;19360:19;;19445:22;;;19327:4;19525:6;19498:3;19483:19;;19327:4;19559:212;19573:6;19570:1;19567:13;19559:212;;;-1:-1:-1;;;;;19638:26:17;19657:6;19638:26;:::i;:::-;19634:52;19622:65;;19716:4;19744:17;;;;19707:14;;;;19595:1;19588:9;19559:212;;;19563:3;19818:9;19813:3;19809:19;19802:4;19791:9;19787:20;19780:49;19851:3;19838:16;;19875:6;19870:3;19863:19;19909:4;19904:3;19900:14;19891:23;;19967:4;19957:6;19954:1;19950:14;19945:3;19941:24;19937:35;19997:6;20023:1;20033:732;20049:6;20044:3;20041:15;20033:732;;;20120:16;;;-1:-1:-1;;20116:30:17;20102:45;;20186:22;;20263:14;20259:27;;;-1:-1:-1;;20255:41:17;20231:66;;20221:94;;20311:1;20308;20301:12;20221:94;20341:31;;20457:4;20446:16;;;20399:19;-1:-1:-1;;;;;20478:30:17;;20475:50;;;20521:1;20518;20511:12;20475:50;20574:6;20558:14;20554:27;20545:7;20541:41;20538:61;;;20595:1;20592;20585:12;20538:61;20622:51;20666:6;20658;20649:7;20622:51;:::i;:::-;20712:4;20739:16;;;;20612:61;;-1:-1:-1;20698:19:17;;;;;-1:-1:-1;;20075:1:17;20066:11;20033:732;;;20037:3;;20813:9;20805:6;20801:22;20796:2;20785:9;20781:18;20774:50;20847:61;20901:6;20893;20885;20847:61;:::i;:::-;20833:75;;;;20956:9;20948:6;20944:22;20939:2;20928:9;20924:18;20917:50;20984:60;21037:6;21029;21021;20984:60;:::i;:::-;20976:68;;;21053:64;21112:3;21101:9;21097:19;21089:6;21053:64;:::i;:::-;18809:2314;;;;;;;;;;;;:::o;21128:888::-;21223:6;21254:2;21297;21285:9;21276:7;21272:23;21268:32;21265:52;;;21313:1;21310;21303:12;21265:52;21346:9;21340:16;-1:-1:-1;;;;;21371:6:17;21368:30;21365:50;;;21411:1;21408;21401:12;21365:50;21434:22;;21487:4;21479:13;;21475:27;-1:-1:-1;21465:55:17;;21516:1;21513;21506:12;21465:55;21545:2;21539:9;21568:67;21584:50;21631:2;21584:50;:::i;21568:67::-;21669:15;;;21751:1;21747:10;;;;21739:19;;21735:28;;;21700:12;;;;21775:19;;;21772:39;;;21807:1;21804;21797:12;21772:39;21831:11;;;;21851:135;21867:6;21862:3;21859:15;21851:135;;;21933:10;;21921:23;;21884:12;;;;21964;;;;21851:135;;;22005:5;21128:888;-1:-1:-1;;;;;;;21128:888:17:o;22021:128::-;22088:9;;;22109:11;;;22106:37;;;22123:18;;:::i;23807:362::-;24012:2;24001:9;23994:21;23975:4;24032:45;24073:2;24062:9;24058:18;24050:6;24032:45;:::i;:::-;24108:2;24093:18;;24086:34;;;;-1:-1:-1;24151:2:17;24136:18;24129:34;24024:53;23807:362;-1:-1:-1;23807:362:17:o;24174:216::-;24238:9;;;24266:11;;;24213:3;24296:9;;24324:10;;24320:19;;24349:10;;24341:19;;24317:44;24314:70;;;24364:18;;:::i;:::-;24314:70;;24174:216;;;;:::o;24395:237::-;24467:9;;;24434:7;24492:9;;-1:-1:-1;;;24503:18:17;;24488:34;24485:60;;;24525:18;;:::i;:::-;24598:1;24589:7;24584:16;24581:1;24578:23;24574:1;24567:9;24564:38;24554:72;;24606:18;;:::i;24637:193::-;24676:1;24702;24692:35;;24707:18;;:::i;:::-;-1:-1:-1;;;24743:18:17;;-1:-1:-1;;24763:13:17;;24739:38;24736:64;;;24780:18;;:::i;:::-;-1:-1:-1;24814:10:17;;24637:193::o;24835:200::-;24901:9;;;24874:4;24929:9;;24957:10;;24969:12;;;24953:29;24992:12;;;24984:21;;24950:56;24947:82;;;25009:18;;:::i;:::-;24947:82;24835:200;;;;:::o;25040:287::-;25169:3;25207:6;25201:13;25223:66;25282:6;25277:3;25270:4;25262:6;25258:17;25223:66;:::i;:::-;25305:16;;;;;25040:287;-1:-1:-1;;25040:287:17:o",
    "source": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport \"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\";\nimport \"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\";\nimport \"@openzeppelin/contracts/utils/math/Math.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\";\nimport \"./BokkyPooBahsDateTimeLibrary.sol\";\nimport \"./interfaces/ISmartRouter.sol\";\nimport \"tronbox/console.sol\";\n\ncontract ZebecCard is OwnableUpgradeable, UUPSUpgradeable {\n    using SafeERC20 for IERC20;\n    using BokkyPooBahsDateTimeLibrary for uint256;\n\n    struct FeeTier {\n        uint256 minAmount;\n        uint256 maxAmount;\n        uint256 fee;\n    }\n\n    struct CardConfig {\n        uint256 nativeFee;\n        uint256 nonNativeFee;\n        uint256 revenueFee;\n        uint256 counter;\n        address cardVault;\n        address revenueVault;\n        address usdcAddress;\n        uint256 minCardAmount;\n        uint256 maxCardAmount;\n        uint256 dailyCardBuyLimit;\n    }\n\n    struct CardPurchase {\n        uint256 unixInRecord; // unix timestamp of the 1st card purchase of the day\n        uint256 totalCardBoughtPerDay; // total card amount bought per day by a user\n    }\n\n    enum TokenType {\n        NATIVE,\n        NON_NATIVE,\n        USDC\n    }\n\n    event CardPurchased(\n        address indexed from,\n        uint256 indexed id,\n        uint256 amount,\n        string userEmail,\n        uint256 purchasedAt\n    );\n\n    event Swapped(\n        address indexed from,\n        address indexed srcToken,\n        uint256 amount,\n        uint256 spentAmount,\n        uint256 returnAmount,\n        uint256 feeAmount\n    );\n\n    event Deposited(address indexed from, uint256 amount);\n\n    event Withdrawn(address indexed from, uint256 withdrawnAmount);\n\n    event WithdrawYield(address indexed from, uint256 withdrawnAmount);\n\n    error NotEnoughBalance(uint256 requiredBalance, uint256 currentBalance);\n\n    CardConfig public cardConfig;\n\n    address public sunSwapRouter;\n\n    address public wTrx;\n\n    mapping(address => CardPurchase) public cardPurchases;\n\n    mapping(address => uint256) public cardBalances;\n\n    FeeTier[] public feeTiers;\n\n    function _authorizeUpgrade(\n        address newImplementation\n    ) internal override onlyOwner {}\n\n    // /**\n    //  * @notice Initializes the contract with the given parameters.\n    //  * @param card_config The configuration for the card.\n    //  * @param fee_tiers The fee tiers for the card.\n    //  */\n    function initialize(\n        CardConfig memory card_config,\n        FeeTier[] memory fee_tiers,\n        address sun_swap_router,\n        address wrapped_trx\n    ) public initializer {\n        sunSwapRouter = sun_swap_router;\n        cardConfig = card_config;\n        __UUPSUpgradeable_init();\n        __Ownable_init(msg.sender);\n        wTrx = wrapped_trx;\n        for (uint i = 0; i < fee_tiers.length; i++) {\n            feeTiers.push(fee_tiers[i]);\n        }\n    }\n\n    /**\n     * @dev Modifier to check token allowance.\n     * @param amount The amount to check against the allowance.\n     */\n    modifier checkAllowance(uint amount) {\n        require(\n            IERC20(cardConfig.usdcAddress).allowance(\n                msg.sender,\n                address(this)\n            ) >= amount,\n            \"Insufficient allowance\"\n        );\n        _;\n    }\n\n    function getFee(uint256 amount) public view returns (uint256) {\n        for (uint i = 0; i < feeTiers.length; i++) {\n            if (\n                amount >= feeTiers[i].minAmount &&\n                amount <= feeTiers[i].maxAmount\n            ) {\n                return feeTiers[i].fee;\n            }\n        }\n        revert(\"Amount out of range\");\n    }\n\n    function getFeeTiers() external view returns (FeeTier[] memory) {\n        return feeTiers;\n    }\n\n    function setFee(\n        uint256 minAmount,\n        uint256 maxAmount,\n        uint256 fee\n    ) external onlyOwner {\n        bool found = false;\n\n        for (uint i = 0; i < feeTiers.length; i++) {\n            if (\n                minAmount >= feeTiers[i].minAmount &&\n                minAmount <= feeTiers[i].maxAmount\n            ) {\n                feeTiers[i].fee = fee;\n                found = true;\n                break;\n            }\n        }\n\n        if (!found) {\n            feeTiers.push(\n                FeeTier({minAmount: minAmount, maxAmount: maxAmount, fee: fee})\n            );\n        }\n    }\n\n    function setFeeArray(FeeTier[] memory newTiers) external onlyOwner {\n        delete feeTiers;\n        // feeTiers = newTiers;\n        for (uint256 i = 0; i < newTiers.length; i++) {\n            feeTiers.push(newTiers[i]);\n        }\n    }\n\n    /**\n     * @notice Sets the native fee for the card.\n     * @param nativeFee The new native fee.\n     */\n    function setNativeFee(uint256 nativeFee) external onlyOwner {\n        cardConfig.nativeFee = nativeFee;\n    }\n\n    /**\n     * @notice Sets the non-native fee for the card.\n     * @param nonNativeFee The new non-native fee.\n     */\n    function setNonNativeFee(uint256 nonNativeFee) external onlyOwner {\n        cardConfig.nonNativeFee = nonNativeFee;\n    }\n\n    /**\n     * @notice Sets the revenue fee for the card.\n     * @param revenueFee The new revenue fee.\n     */\n    function setRevenueFee(uint256 revenueFee) external onlyOwner {\n        cardConfig.revenueFee = revenueFee;\n    }\n\n    /**\n     * @notice Sets the revenue vault address.\n     * @param revenueVault The new revenue vault address.\n     */\n    function setRevenueVault(address revenueVault) external onlyOwner {\n        cardConfig.revenueVault = revenueVault;\n    }\n\n    /**\n     * @notice Sets the card vault address.\n     * @param cardVault The new card vault address.\n     */\n    function setCardVault(address cardVault) external onlyOwner {\n        cardConfig.cardVault = cardVault;\n    }\n\n    /**\n     * @notice Sets the USDC token address.\n     * @param usdcAddress The new USDC token address.\n     */\n    function setUsdcAddress(address usdcAddress) external onlyOwner {\n        cardConfig.usdcAddress = usdcAddress;\n    }\n\n    /**\n     * @notice Sets the minimum card amount upto which user is allowed to buy\n     * @param minAmount The minimum card amount.\n     */\n    function setMinCardAmount(uint256 minAmount) external onlyOwner {\n        cardConfig.minCardAmount = minAmount;\n    }\n\n    /**\n     * @notice Sets the maximum card amount upto which user is allowed to buy\n     * @param maxAmount The maximum card amount\n     */\n    function setMaxCardAmount(uint256 maxAmount) external onlyOwner {\n        cardConfig.maxCardAmount = maxAmount;\n    }\n\n    /**\n     * @notice Sets the daily limit for buying card.\n     * @param dailyCardBuyLimit The daily limit.\n     */\n    function setDailyCardBuyLimit(\n        uint256 dailyCardBuyLimit\n    ) external onlyOwner {\n        cardConfig.dailyCardBuyLimit = dailyCardBuyLimit;\n    }\n\n    /**\n     * @notice Deposits USDC tokens into the contract.\n     * @param amount The amount of USDC tokens to deposit.\n     */\n    function depositUsdc(uint256 amount) external checkAllowance(amount) {\n        IERC20 token = IERC20(cardConfig.usdcAddress);\n        // Check for zero-amount\n        require(amount != 0, \"Invalid amount\");\n\n        token.safeTransferFrom(msg.sender, address(this), amount);\n\n        (bool overflowFlag, uint256 result) = Math.tryAdd(\n            cardBalances[msg.sender],\n            amount\n        );\n        // Note: if overflowFlag is false, then overflow occured.\n        require(overflowFlag, \"Arithmetic Overflow!\");\n        cardBalances[msg.sender] = result;\n\n        emit Deposited(msg.sender, amount);\n    }\n\n    /**\n     * @notice Withdraws USDC tokens from the contract.\n     * @param amount The amount of USDC tokens to withdraw.\n     */\n    function withdraw(uint256 amount) external {\n        IERC20 token = IERC20(cardConfig.usdcAddress);\n        address user = msg.sender;\n        // Check for zero-amount\n        require(amount != 0, \"Invalid amount\");\n\n        // Check for zero-address\n        require(user != address(0), \"Invalid address\");\n\n        uint256 userBalance = cardBalances[user];\n        if (userBalance < amount) {\n            revert NotEnoughBalance({\n                requiredBalance: amount,\n                currentBalance: userBalance\n            });\n        }\n\n        (bool overflowFlag, uint256 result) = Math.trySub(userBalance, amount);\n        // Note: if overflowFlag is false, then overflow occured.\n        require(overflowFlag, \"Arithmetic Overflow!\");\n        cardBalances[user] = result;\n        token.safeTransfer(user, amount);\n\n        emit Withdrawn(user, amount);\n    }\n\n    /**\n     * @notice Buys a card with USDC tokens.\n     * @param amount The amount of USDC tokens to use for the purchase.\n     * @param userEmail The user's email.\n     */\n    function buyCard(uint256 amount, string memory userEmail) external {\n        IERC20 token = IERC20(cardConfig.usdcAddress);\n        // Check for zero-address\n        require(msg.sender != address(0), \"Invalid address\");\n\n        // Check whether purchase amount falls within buying range\n        require(\n            amount >= cardConfig.minCardAmount &&\n                amount <= cardConfig.maxCardAmount,\n            \"Amount not within buying range!\"\n        );\n\n        // Check whether msg.sender has enough card balance\n        if (cardBalances[msg.sender] < amount) {\n            revert NotEnoughBalance({\n                requiredBalance: amount,\n                currentBalance: cardBalances[msg.sender]\n            });\n        }\n\n        // revenue amount calculation\n        uint256 revenueFee = getFee(amount);\n        uint256 revenueAmount = (amount * revenueFee) / 10000;\n\n        // card amount calculation\n        (bool overflowFlag, uint256 cardAmount) = Math.trySub(\n            amount,\n            revenueAmount\n        );\n        require(overflowFlag, \"Arithmetic Overflow!\");\n        // update card balance accordingly\n        (bool __overflowFlag, uint256 _result) = Math.trySub(\n            cardBalances[msg.sender],\n            amount\n        );\n        require(__overflowFlag, \"Arithmetic Overflow!\");\n        cardBalances[msg.sender] = _result;\n\n        cardConfig.counter++;\n        uint256 unix_now;\n        uint256 amount_1 = amount; // to avoid stack too deep error\n        {\n            // block scoping to avoid stack too deep error\n            unix_now = block.timestamp;\n            (\n                uint256 year_now,\n                uint256 month_now,\n                uint256 day_now\n            ) = BokkyPooBahsDateTimeLibrary.timestampToDate(unix_now); // returns (year, month, day)\n\n            (\n                uint256 year_from_record,\n                uint256 month_from_record,\n                uint256 day_from_record\n            ) = BokkyPooBahsDateTimeLibrary.timestampToDate(\n                    cardPurchases[msg.sender].unixInRecord\n                );\n\n            // Check whether it's the same date or a new one\n            bool isSameDate = (year_now == year_from_record &&\n                month_now == month_from_record &&\n                day_now == day_from_record);\n            if (isSameDate) {\n                // holds True if it's the same day\n                // update totalCardBoughtPerDay\n                (bool _overflowFlag, uint256 result) = Math.tryAdd(\n                    cardPurchases[msg.sender].totalCardBoughtPerDay,\n                    amount_1\n                );\n\n                // Note: if _overflowFlag is false, then overflow occured.\n                require(_overflowFlag, \"Arithmetic Overflow!\");\n                cardPurchases[msg.sender].totalCardBoughtPerDay = result;\n            } else {\n                // holds True for the 1st card purchase or if it's another date\n                cardPurchases[msg.sender].unixInRecord = unix_now;\n                // update totalCardBoughtPerDay\n                cardPurchases[msg.sender].totalCardBoughtPerDay = amount_1;\n            }\n        }\n        // Check whether daily purchase limit has exceeded or not\n        require(\n            cardPurchases[msg.sender].totalCardBoughtPerDay <=\n                cardConfig.dailyCardBuyLimit,\n            \"Daily Card Buy Limit Exceeded!\"\n        );\n\n        // Proceed with the transfers\n        token.safeTransfer(cardConfig.revenueVault, revenueAmount);\n        token.safeTransfer(cardConfig.cardVault, cardAmount);\n\n        emit CardPurchased(\n            msg.sender,\n            cardConfig.counter,\n            amount,\n            userEmail,\n            unix_now\n        );\n    }\n\n    /**\n     * @dev Transfers native tokens securely.\n     * @param to The recipient address.\n     * @param value The amount to transfer.\n     */\n    function _safeNativeTransfer(address to, uint256 value) private {\n        (bool success, ) = to.call{value: value}(new bytes(0));\n        require(success, \"TransferHelper: NATIVE_TRANSFER_FAILED\");\n    }\n\n    function swapAndDeposit(\n        address[] calldata path,\n        string[] calldata poolVersion,\n        uint256[] calldata versionLen,\n        uint24[] calldata fees,\n        ISmartRouter.SwapData calldata data\n    ) external payable {\n        // require(address(desc.dstToken) == cardConfig.usdcAddress, \"Invalid destination token\");\n\n        require(data.to == address(this), \"Invalid destination receiver\");\n\n        IERC20 srcToken = IERC20(address(path[0])); // not sure\n        uint256 amountIn = data.amountIn;\n        \n        bool isNotNative = address(srcToken) != wTrx;\n        if (isNotNative) {\n            srcToken.safeTransferFrom(\n                _msgSender(),\n                address(this),\n                amountIn\n            );\n\n            // approve AggregationRouterV6 to spend srcToken\n            require(srcToken.approve(sunSwapRouter,amountIn), \"Approval failed\");\n        }\n        \n\n        (uint256[] memory amountsOut) = ISmartRouter(sunSwapRouter).swapExactInput{value:msg.value}(path, poolVersion, versionLen, fees, data);\n        for (uint i = 0; i < amountsOut.length; i++) {\n            console.log(\"amountsOut[%d]: %s\", i, amountsOut[i]);\n        }\n        uint256 amountOut = amountsOut[amountsOut.length - 1];\n        require(amountOut > 0, \"Swap failed\");\n\n        // // send unspent tokens (if any) back to the sender after the swap\n        // (bool overflowFlag, uint256 result) = Math.trySub(params.amount, spentAmount);\n        // // Note: if overflowFlag is false, then overflow occured.\n        // require(overflowFlag, \"Arithmetic Overflow!\");\n        // uint256 unspentAmount = result;\n        // if (unspentAmount > 0) {\n        //     if (isNotNative) {\n        //             srcToken.safeTransfer(_msgSender(), unspentAmount);\n        //     } else {\n        //             _safeNativeTransfer(_msgSender(), unspentAmount);\n        //     }\n        // }\n\n        uint256 fee;\n\n        uint256 feeAmount = (amountOut * fee) / 10000;\n        (bool _overflowFlag, uint256 _result) = Math.trySub(amountOut, feeAmount);\n        // Note: if overflowFlag is false, then overflow occured.\n        require(_overflowFlag, \"Arithmetic Overflow!\");\n        uint256 userAmount = _result;\n\n        // transfer feeAmount to revenueVault\n        IERC20 usdc = IERC20(cardConfig.usdcAddress);\n        usdc.safeTransfer(cardConfig.revenueVault, feeAmount);\n\n        (bool __overflowFlag, uint256 __result) = Math.tryAdd(cardBalances[_msgSender()], userAmount);\n        // Note: if _overflowFlag is false, then overflow occured.\n        require(__overflowFlag, \"Arithmetic Overflow!\");\n        cardBalances[_msgSender()] = __result;\n\n        emit Swapped(_msgSender(), address(srcToken), amountIn, amountIn, amountOut, feeAmount);\n    }\n}\n",
    "sourcePath": "/Users/chou/Developer/tron-silver-card-contract/contracts/ZebecCard.sol",
    "ast": {
        "absolutePath": "/Users/chou/Developer/tron-silver-card-contract/contracts/ZebecCard.sol",
        "exportedSymbols": {
            "Address": [4368],
            "BokkyPooBahsDateTimeLibrary": [1483],
            "ContextUpgradeable": [3388],
            "ERC1967Utils": [3701],
            "IERC1822Proxiable": [3398],
            "IERC20": [3789],
            "IERC20Permit": [3825],
            "ISmartRouter": [2711],
            "Initializable": [3160],
            "Math": [5532],
            "OwnableUpgradeable": [2906],
            "SafeERC20": [4115],
            "UUPSUpgradeable": [3342],
            "ZebecCard": [2657],
            "console": [13596]
        },
        "id": 2658,
        "license": "MIT",
        "nodeType": "SourceUnit",
        "nodes": [
            {
                "id": 1485,
                "literals": ["solidity", "^", "0.8", ".0"],
                "nodeType": "PragmaDirective",
                "src": "32:23:1"
            },
            {
                "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
                "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
                "id": 1486,
                "nameLocation": "-1:-1:-1",
                "nodeType": "ImportDirective",
                "scope": 2658,
                "sourceUnit": 3790,
                "src": "57:56:1",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol",
                "file": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol",
                "id": 1487,
                "nameLocation": "-1:-1:-1",
                "nodeType": "ImportDirective",
                "scope": 2658,
                "sourceUnit": 3343,
                "src": "114:77:1",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol",
                "file": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol",
                "id": 1488,
                "nameLocation": "-1:-1:-1",
                "nodeType": "ImportDirective",
                "scope": 2658,
                "sourceUnit": 2907,
                "src": "192:75:1",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "@openzeppelin/contracts/utils/math/Math.sol",
                "file": "@openzeppelin/contracts/utils/math/Math.sol",
                "id": 1489,
                "nameLocation": "-1:-1:-1",
                "nodeType": "ImportDirective",
                "scope": 2658,
                "sourceUnit": 5533,
                "src": "268:53:1",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol",
                "file": "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol",
                "id": 1490,
                "nameLocation": "-1:-1:-1",
                "nodeType": "ImportDirective",
                "scope": 2658,
                "sourceUnit": 4116,
                "src": "322:65:1",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "/Users/chou/Developer/tron-silver-card-contract/contracts/BokkyPooBahsDateTimeLibrary.sol",
                "file": "./BokkyPooBahsDateTimeLibrary.sol",
                "id": 1491,
                "nameLocation": "-1:-1:-1",
                "nodeType": "ImportDirective",
                "scope": 2658,
                "sourceUnit": 1484,
                "src": "388:43:1",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "/Users/chou/Developer/tron-silver-card-contract/contracts/interfaces/ISmartRouter.sol",
                "file": "./interfaces/ISmartRouter.sol",
                "id": 1492,
                "nameLocation": "-1:-1:-1",
                "nodeType": "ImportDirective",
                "scope": 2658,
                "sourceUnit": 2712,
                "src": "432:39:1",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "tronbox/console.sol",
                "file": "tronbox/console.sol",
                "id": 1493,
                "nameLocation": "-1:-1:-1",
                "nodeType": "ImportDirective",
                "scope": 2658,
                "sourceUnit": 13597,
                "src": "472:29:1",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "abstract": false,
                "baseContracts": [
                    {
                        "baseName": {
                            "id": 1494,
                            "name": "OwnableUpgradeable",
                            "nameLocations": ["525:18:1"],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 2906,
                            "src": "525:18:1"
                        },
                        "id": 1495,
                        "nodeType": "InheritanceSpecifier",
                        "src": "525:18:1"
                    },
                    {
                        "baseName": {
                            "id": 1496,
                            "name": "UUPSUpgradeable",
                            "nameLocations": ["545:15:1"],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 3342,
                            "src": "545:15:1"
                        },
                        "id": 1497,
                        "nodeType": "InheritanceSpecifier",
                        "src": "545:15:1"
                    }
                ],
                "canonicalName": "ZebecCard",
                "contractDependencies": [],
                "contractKind": "contract",
                "fullyImplemented": true,
                "id": 2657,
                "linearizedBaseContracts": [2657, 3342, 3398, 2906, 3388, 3160],
                "name": "ZebecCard",
                "nameLocation": "512:9:1",
                "nodeType": "ContractDefinition",
                "nodes": [
                    {
                        "global": false,
                        "id": 1501,
                        "libraryName": {
                            "id": 1498,
                            "name": "SafeERC20",
                            "nameLocations": ["573:9:1"],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 4115,
                            "src": "573:9:1"
                        },
                        "nodeType": "UsingForDirective",
                        "src": "567:27:1",
                        "typeName": {
                            "id": 1500,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                                "id": 1499,
                                "name": "IERC20",
                                "nameLocations": ["587:6:1"],
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 3789,
                                "src": "587:6:1"
                            },
                            "referencedDeclaration": 3789,
                            "src": "587:6:1",
                            "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$3789",
                                "typeString": "contract IERC20"
                            }
                        }
                    },
                    {
                        "global": false,
                        "id": 1504,
                        "libraryName": {
                            "id": 1502,
                            "name": "BokkyPooBahsDateTimeLibrary",
                            "nameLocations": ["605:27:1"],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 1483,
                            "src": "605:27:1"
                        },
                        "nodeType": "UsingForDirective",
                        "src": "599:46:1",
                        "typeName": {
                            "id": 1503,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "637:7:1",
                            "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                            }
                        }
                    },
                    {
                        "canonicalName": "ZebecCard.FeeTier",
                        "id": 1511,
                        "members": [
                            {
                                "constant": false,
                                "id": 1506,
                                "mutability": "mutable",
                                "name": "minAmount",
                                "nameLocation": "684:9:1",
                                "nodeType": "VariableDeclaration",
                                "scope": 1511,
                                "src": "676:17:1",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                },
                                "typeName": {
                                    "id": 1505,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "676:7:1",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    }
                                },
                                "visibility": "internal"
                            },
                            {
                                "constant": false,
                                "id": 1508,
                                "mutability": "mutable",
                                "name": "maxAmount",
                                "nameLocation": "711:9:1",
                                "nodeType": "VariableDeclaration",
                                "scope": 1511,
                                "src": "703:17:1",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                },
                                "typeName": {
                                    "id": 1507,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "703:7:1",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    }
                                },
                                "visibility": "internal"
                            },
                            {
                                "constant": false,
                                "id": 1510,
                                "mutability": "mutable",
                                "name": "fee",
                                "nameLocation": "738:3:1",
                                "nodeType": "VariableDeclaration",
                                "scope": 1511,
                                "src": "730:11:1",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                },
                                "typeName": {
                                    "id": 1509,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "730:7:1",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    }
                                },
                                "visibility": "internal"
                            }
                        ],
                        "name": "FeeTier",
                        "nameLocation": "658:7:1",
                        "nodeType": "StructDefinition",
                        "scope": 2657,
                        "src": "651:97:1",
                        "visibility": "public"
                    },
                    {
                        "canonicalName": "ZebecCard.CardConfig",
                        "id": 1532,
                        "members": [
                            {
                                "constant": false,
                                "id": 1513,
                                "mutability": "mutable",
                                "name": "nativeFee",
                                "nameLocation": "790:9:1",
                                "nodeType": "VariableDeclaration",
                                "scope": 1532,
                                "src": "782:17:1",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                },
                                "typeName": {
                                    "id": 1512,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "782:7:1",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    }
                                },
                                "visibility": "internal"
                            },
                            {
                                "constant": false,
                                "id": 1515,
                                "mutability": "mutable",
                                "name": "nonNativeFee",
                                "nameLocation": "817:12:1",
                                "nodeType": "VariableDeclaration",
                                "scope": 1532,
                                "src": "809:20:1",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                },
                                "typeName": {
                                    "id": 1514,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "809:7:1",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    }
                                },
                                "visibility": "internal"
                            },
                            {
                                "constant": false,
                                "id": 1517,
                                "mutability": "mutable",
                                "name": "revenueFee",
                                "nameLocation": "847:10:1",
                                "nodeType": "VariableDeclaration",
                                "scope": 1532,
                                "src": "839:18:1",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                },
                                "typeName": {
                                    "id": 1516,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "839:7:1",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    }
                                },
                                "visibility": "internal"
                            },
                            {
                                "constant": false,
                                "id": 1519,
                                "mutability": "mutable",
                                "name": "counter",
                                "nameLocation": "875:7:1",
                                "nodeType": "VariableDeclaration",
                                "scope": 1532,
                                "src": "867:15:1",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                },
                                "typeName": {
                                    "id": 1518,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "867:7:1",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    }
                                },
                                "visibility": "internal"
                            },
                            {
                                "constant": false,
                                "id": 1521,
                                "mutability": "mutable",
                                "name": "cardVault",
                                "nameLocation": "900:9:1",
                                "nodeType": "VariableDeclaration",
                                "scope": 1532,
                                "src": "892:17:1",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                },
                                "typeName": {
                                    "id": 1520,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "892:7:1",
                                    "stateMutability": "nonpayable",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    }
                                },
                                "visibility": "internal"
                            },
                            {
                                "constant": false,
                                "id": 1523,
                                "mutability": "mutable",
                                "name": "revenueVault",
                                "nameLocation": "927:12:1",
                                "nodeType": "VariableDeclaration",
                                "scope": 1532,
                                "src": "919:20:1",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                },
                                "typeName": {
                                    "id": 1522,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "919:7:1",
                                    "stateMutability": "nonpayable",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    }
                                },
                                "visibility": "internal"
                            },
                            {
                                "constant": false,
                                "id": 1525,
                                "mutability": "mutable",
                                "name": "usdcAddress",
                                "nameLocation": "957:11:1",
                                "nodeType": "VariableDeclaration",
                                "scope": 1532,
                                "src": "949:19:1",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                },
                                "typeName": {
                                    "id": 1524,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "949:7:1",
                                    "stateMutability": "nonpayable",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    }
                                },
                                "visibility": "internal"
                            },
                            {
                                "constant": false,
                                "id": 1527,
                                "mutability": "mutable",
                                "name": "minCardAmount",
                                "nameLocation": "986:13:1",
                                "nodeType": "VariableDeclaration",
                                "scope": 1532,
                                "src": "978:21:1",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                },
                                "typeName": {
                                    "id": 1526,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "978:7:1",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    }
                                },
                                "visibility": "internal"
                            },
                            {
                                "constant": false,
                                "id": 1529,
                                "mutability": "mutable",
                                "name": "maxCardAmount",
                                "nameLocation": "1017:13:1",
                                "nodeType": "VariableDeclaration",
                                "scope": 1532,
                                "src": "1009:21:1",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                },
                                "typeName": {
                                    "id": 1528,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1009:7:1",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    }
                                },
                                "visibility": "internal"
                            },
                            {
                                "constant": false,
                                "id": 1531,
                                "mutability": "mutable",
                                "name": "dailyCardBuyLimit",
                                "nameLocation": "1048:17:1",
                                "nodeType": "VariableDeclaration",
                                "scope": 1532,
                                "src": "1040:25:1",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                },
                                "typeName": {
                                    "id": 1530,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1040:7:1",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    }
                                },
                                "visibility": "internal"
                            }
                        ],
                        "name": "CardConfig",
                        "nameLocation": "761:10:1",
                        "nodeType": "StructDefinition",
                        "scope": 2657,
                        "src": "754:318:1",
                        "visibility": "public"
                    },
                    {
                        "canonicalName": "ZebecCard.CardPurchase",
                        "id": 1537,
                        "members": [
                            {
                                "constant": false,
                                "id": 1534,
                                "mutability": "mutable",
                                "name": "unixInRecord",
                                "nameLocation": "1116:12:1",
                                "nodeType": "VariableDeclaration",
                                "scope": 1537,
                                "src": "1108:20:1",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                },
                                "typeName": {
                                    "id": 1533,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1108:7:1",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    }
                                },
                                "visibility": "internal"
                            },
                            {
                                "constant": false,
                                "id": 1536,
                                "mutability": "mutable",
                                "name": "totalCardBoughtPerDay",
                                "nameLocation": "1200:21:1",
                                "nodeType": "VariableDeclaration",
                                "scope": 1537,
                                "src": "1192:29:1",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                },
                                "typeName": {
                                    "id": 1535,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1192:7:1",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    }
                                },
                                "visibility": "internal"
                            }
                        ],
                        "name": "CardPurchase",
                        "nameLocation": "1085:12:1",
                        "nodeType": "StructDefinition",
                        "scope": 2657,
                        "src": "1078:196:1",
                        "visibility": "public"
                    },
                    {
                        "canonicalName": "ZebecCard.TokenType",
                        "id": 1541,
                        "members": [
                            {
                                "id": 1538,
                                "name": "NATIVE",
                                "nameLocation": "1305:6:1",
                                "nodeType": "EnumValue",
                                "src": "1305:6:1"
                            },
                            {
                                "id": 1539,
                                "name": "NON_NATIVE",
                                "nameLocation": "1321:10:1",
                                "nodeType": "EnumValue",
                                "src": "1321:10:1"
                            },
                            {
                                "id": 1540,
                                "name": "USDC",
                                "nameLocation": "1341:4:1",
                                "nodeType": "EnumValue",
                                "src": "1341:4:1"
                            }
                        ],
                        "name": "TokenType",
                        "nameLocation": "1285:9:1",
                        "nodeType": "EnumDefinition",
                        "src": "1280:71:1"
                    },
                    {
                        "anonymous": false,
                        "eventSelector": "ce9df9676b8ff95985927db077a18e692c06c1ecfa2abae6db585c4aedfbc909",
                        "id": 1553,
                        "name": "CardPurchased",
                        "nameLocation": "1363:13:1",
                        "nodeType": "EventDefinition",
                        "parameters": {
                            "id": 1552,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 1543,
                                    "indexed": true,
                                    "mutability": "mutable",
                                    "name": "from",
                                    "nameLocation": "1402:4:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1553,
                                    "src": "1386:20:1",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 1542,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1386:7:1",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 1545,
                                    "indexed": true,
                                    "mutability": "mutable",
                                    "name": "id",
                                    "nameLocation": "1432:2:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1553,
                                    "src": "1416:18:1",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 1544,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1416:7:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 1547,
                                    "indexed": false,
                                    "mutability": "mutable",
                                    "name": "amount",
                                    "nameLocation": "1452:6:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1553,
                                    "src": "1444:14:1",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 1546,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1444:7:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 1549,
                                    "indexed": false,
                                    "mutability": "mutable",
                                    "name": "userEmail",
                                    "nameLocation": "1475:9:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1553,
                                    "src": "1468:16:1",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_string_memory_ptr",
                                        "typeString": "string"
                                    },
                                    "typeName": {
                                        "id": 1548,
                                        "name": "string",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1468:6:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_string_storage_ptr",
                                            "typeString": "string"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 1551,
                                    "indexed": false,
                                    "mutability": "mutable",
                                    "name": "purchasedAt",
                                    "nameLocation": "1502:11:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1553,
                                    "src": "1494:19:1",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 1550,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1494:7:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1376:143:1"
                        },
                        "src": "1357:163:1"
                    },
                    {
                        "anonymous": false,
                        "eventSelector": "d8066379a11f110d1eb579110571ce47b1557c623d7ae29f423d92cd6dd953be",
                        "id": 1567,
                        "name": "Swapped",
                        "nameLocation": "1532:7:1",
                        "nodeType": "EventDefinition",
                        "parameters": {
                            "id": 1566,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 1555,
                                    "indexed": true,
                                    "mutability": "mutable",
                                    "name": "from",
                                    "nameLocation": "1565:4:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1567,
                                    "src": "1549:20:1",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 1554,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1549:7:1",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 1557,
                                    "indexed": true,
                                    "mutability": "mutable",
                                    "name": "srcToken",
                                    "nameLocation": "1595:8:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1567,
                                    "src": "1579:24:1",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 1556,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1579:7:1",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 1559,
                                    "indexed": false,
                                    "mutability": "mutable",
                                    "name": "amount",
                                    "nameLocation": "1621:6:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1567,
                                    "src": "1613:14:1",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 1558,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1613:7:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 1561,
                                    "indexed": false,
                                    "mutability": "mutable",
                                    "name": "spentAmount",
                                    "nameLocation": "1645:11:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1567,
                                    "src": "1637:19:1",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 1560,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1637:7:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 1563,
                                    "indexed": false,
                                    "mutability": "mutable",
                                    "name": "returnAmount",
                                    "nameLocation": "1674:12:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1567,
                                    "src": "1666:20:1",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 1562,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1666:7:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 1565,
                                    "indexed": false,
                                    "mutability": "mutable",
                                    "name": "feeAmount",
                                    "nameLocation": "1704:9:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1567,
                                    "src": "1696:17:1",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 1564,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1696:7:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1539:180:1"
                        },
                        "src": "1526:194:1"
                    },
                    {
                        "anonymous": false,
                        "eventSelector": "2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4",
                        "id": 1573,
                        "name": "Deposited",
                        "nameLocation": "1732:9:1",
                        "nodeType": "EventDefinition",
                        "parameters": {
                            "id": 1572,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 1569,
                                    "indexed": true,
                                    "mutability": "mutable",
                                    "name": "from",
                                    "nameLocation": "1758:4:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1573,
                                    "src": "1742:20:1",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 1568,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1742:7:1",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 1571,
                                    "indexed": false,
                                    "mutability": "mutable",
                                    "name": "amount",
                                    "nameLocation": "1772:6:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1573,
                                    "src": "1764:14:1",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 1570,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1764:7:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1741:38:1"
                        },
                        "src": "1726:54:1"
                    },
                    {
                        "anonymous": false,
                        "eventSelector": "7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5",
                        "id": 1579,
                        "name": "Withdrawn",
                        "nameLocation": "1792:9:1",
                        "nodeType": "EventDefinition",
                        "parameters": {
                            "id": 1578,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 1575,
                                    "indexed": true,
                                    "mutability": "mutable",
                                    "name": "from",
                                    "nameLocation": "1818:4:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1579,
                                    "src": "1802:20:1",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 1574,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1802:7:1",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 1577,
                                    "indexed": false,
                                    "mutability": "mutable",
                                    "name": "withdrawnAmount",
                                    "nameLocation": "1832:15:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1579,
                                    "src": "1824:23:1",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 1576,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1824:7:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1801:47:1"
                        },
                        "src": "1786:63:1"
                    },
                    {
                        "anonymous": false,
                        "eventSelector": "f09b3678dd1b265d3e2d9f681481c92d1cdd81b6e19fa43651707dedf99263a8",
                        "id": 1585,
                        "name": "WithdrawYield",
                        "nameLocation": "1861:13:1",
                        "nodeType": "EventDefinition",
                        "parameters": {
                            "id": 1584,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 1581,
                                    "indexed": true,
                                    "mutability": "mutable",
                                    "name": "from",
                                    "nameLocation": "1891:4:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1585,
                                    "src": "1875:20:1",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 1580,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1875:7:1",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 1583,
                                    "indexed": false,
                                    "mutability": "mutable",
                                    "name": "withdrawnAmount",
                                    "nameLocation": "1905:15:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1585,
                                    "src": "1897:23:1",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 1582,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1897:7:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1874:47:1"
                        },
                        "src": "1855:67:1"
                    },
                    {
                        "errorSelector": "8f0f4206",
                        "id": 1591,
                        "name": "NotEnoughBalance",
                        "nameLocation": "1934:16:1",
                        "nodeType": "ErrorDefinition",
                        "parameters": {
                            "id": 1590,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 1587,
                                    "mutability": "mutable",
                                    "name": "requiredBalance",
                                    "nameLocation": "1959:15:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1591,
                                    "src": "1951:23:1",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 1586,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1951:7:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 1589,
                                    "mutability": "mutable",
                                    "name": "currentBalance",
                                    "nameLocation": "1984:14:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1591,
                                    "src": "1976:22:1",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 1588,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1976:7:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1950:49:1"
                        },
                        "src": "1928:72:1"
                    },
                    {
                        "constant": false,
                        "functionSelector": "37cf5331",
                        "id": 1594,
                        "mutability": "mutable",
                        "name": "cardConfig",
                        "nameLocation": "2024:10:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2657,
                        "src": "2006:28:1",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_struct$_CardConfig_$1532_storage",
                            "typeString": "struct ZebecCard.CardConfig"
                        },
                        "typeName": {
                            "id": 1593,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                                "id": 1592,
                                "name": "CardConfig",
                                "nameLocations": ["2006:10:1"],
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 1532,
                                "src": "2006:10:1"
                            },
                            "referencedDeclaration": 1532,
                            "src": "2006:10:1",
                            "typeDescriptions": {
                                "typeIdentifier": "t_struct$_CardConfig_$1532_storage_ptr",
                                "typeString": "struct ZebecCard.CardConfig"
                            }
                        },
                        "visibility": "public"
                    },
                    {
                        "constant": false,
                        "functionSelector": "22e41dc4",
                        "id": 1596,
                        "mutability": "mutable",
                        "name": "sunSwapRouter",
                        "nameLocation": "2056:13:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2657,
                        "src": "2041:28:1",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                        },
                        "typeName": {
                            "id": 1595,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2041:7:1",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                            }
                        },
                        "visibility": "public"
                    },
                    {
                        "constant": false,
                        "functionSelector": "2a780067",
                        "id": 1598,
                        "mutability": "mutable",
                        "name": "wTrx",
                        "nameLocation": "2091:4:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2657,
                        "src": "2076:19:1",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                        },
                        "typeName": {
                            "id": 1597,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2076:7:1",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                            }
                        },
                        "visibility": "public"
                    },
                    {
                        "constant": false,
                        "functionSelector": "a5b7ac7e",
                        "id": 1603,
                        "mutability": "mutable",
                        "name": "cardPurchases",
                        "nameLocation": "2142:13:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2657,
                        "src": "2102:53:1",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_CardPurchase_$1537_storage_$",
                            "typeString": "mapping(address => struct ZebecCard.CardPurchase)"
                        },
                        "typeName": {
                            "id": 1602,
                            "keyName": "",
                            "keyNameLocation": "-1:-1:-1",
                            "keyType": {
                                "id": 1599,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "2110:7:1",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                }
                            },
                            "nodeType": "Mapping",
                            "src": "2102:32:1",
                            "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_CardPurchase_$1537_storage_$",
                                "typeString": "mapping(address => struct ZebecCard.CardPurchase)"
                            },
                            "valueName": "",
                            "valueNameLocation": "-1:-1:-1",
                            "valueType": {
                                "id": 1601,
                                "nodeType": "UserDefinedTypeName",
                                "pathNode": {
                                    "id": 1600,
                                    "name": "CardPurchase",
                                    "nameLocations": ["2121:12:1"],
                                    "nodeType": "IdentifierPath",
                                    "referencedDeclaration": 1537,
                                    "src": "2121:12:1"
                                },
                                "referencedDeclaration": 1537,
                                "src": "2121:12:1",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_CardPurchase_$1537_storage_ptr",
                                    "typeString": "struct ZebecCard.CardPurchase"
                                }
                            }
                        },
                        "visibility": "public"
                    },
                    {
                        "constant": false,
                        "functionSelector": "f076a846",
                        "id": 1607,
                        "mutability": "mutable",
                        "name": "cardBalances",
                        "nameLocation": "2197:12:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2657,
                        "src": "2162:47:1",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                            "typeString": "mapping(address => uint256)"
                        },
                        "typeName": {
                            "id": 1606,
                            "keyName": "",
                            "keyNameLocation": "-1:-1:-1",
                            "keyType": {
                                "id": 1604,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "2170:7:1",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                }
                            },
                            "nodeType": "Mapping",
                            "src": "2162:27:1",
                            "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                            },
                            "valueName": "",
                            "valueNameLocation": "-1:-1:-1",
                            "valueType": {
                                "id": 1605,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "2181:7:1",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                }
                            }
                        },
                        "visibility": "public"
                    },
                    {
                        "constant": false,
                        "functionSelector": "230ed44a",
                        "id": 1611,
                        "mutability": "mutable",
                        "name": "feeTiers",
                        "nameLocation": "2233:8:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2657,
                        "src": "2216:25:1",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_FeeTier_$1511_storage_$dyn_storage",
                            "typeString": "struct ZebecCard.FeeTier[]"
                        },
                        "typeName": {
                            "baseType": {
                                "id": 1609,
                                "nodeType": "UserDefinedTypeName",
                                "pathNode": {
                                    "id": 1608,
                                    "name": "FeeTier",
                                    "nameLocations": ["2216:7:1"],
                                    "nodeType": "IdentifierPath",
                                    "referencedDeclaration": 1511,
                                    "src": "2216:7:1"
                                },
                                "referencedDeclaration": 1511,
                                "src": "2216:7:1",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_FeeTier_$1511_storage_ptr",
                                    "typeString": "struct ZebecCard.FeeTier"
                                }
                            },
                            "id": 1610,
                            "nodeType": "ArrayTypeName",
                            "src": "2216:9:1",
                            "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_FeeTier_$1511_storage_$dyn_storage_ptr",
                                "typeString": "struct ZebecCard.FeeTier[]"
                            }
                        },
                        "visibility": "public"
                    },
                    {
                        "baseFunctions": [3296],
                        "body": {
                            "id": 1619,
                            "nodeType": "Block",
                            "src": "2344:2:1",
                            "statements": []
                        },
                        "id": 1620,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [
                            {
                                "id": 1617,
                                "kind": "modifierInvocation",
                                "modifierName": {
                                    "id": 1616,
                                    "name": "onlyOwner",
                                    "nameLocations": ["2334:9:1"],
                                    "nodeType": "IdentifierPath",
                                    "referencedDeclaration": 2801,
                                    "src": "2334:9:1"
                                },
                                "nodeType": "ModifierInvocation",
                                "src": "2334:9:1"
                            }
                        ],
                        "name": "_authorizeUpgrade",
                        "nameLocation": "2257:17:1",
                        "nodeType": "FunctionDefinition",
                        "overrides": {
                            "id": 1615,
                            "nodeType": "OverrideSpecifier",
                            "overrides": [],
                            "src": "2325:8:1"
                        },
                        "parameters": {
                            "id": 1614,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 1613,
                                    "mutability": "mutable",
                                    "name": "newImplementation",
                                    "nameLocation": "2292:17:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1620,
                                    "src": "2284:25:1",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 1612,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2284:7:1",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "2274:41:1"
                        },
                        "returnParameters": {
                            "id": 1618,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "2344:0:1"
                        },
                        "scope": 2657,
                        "src": "2248:98:1",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "internal"
                    },
                    {
                        "body": {
                            "id": 1677,
                            "nodeType": "Block",
                            "src": "2742:285:1",
                            "statements": [
                                {
                                    "expression": {
                                        "id": 1638,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "id": 1636,
                                            "name": "sunSwapRouter",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1596,
                                            "src": "2752:13:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "id": 1637,
                                            "name": "sun_swap_router",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1629,
                                            "src": "2768:15:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "src": "2752:31:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "id": 1639,
                                    "nodeType": "ExpressionStatement",
                                    "src": "2752:31:1"
                                },
                                {
                                    "expression": {
                                        "id": 1642,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "id": 1640,
                                            "name": "cardConfig",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1594,
                                            "src": "2793:10:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_CardConfig_$1532_storage",
                                                "typeString": "struct ZebecCard.CardConfig storage ref"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "id": 1641,
                                            "name": "card_config",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1623,
                                            "src": "2806:11:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_CardConfig_$1532_memory_ptr",
                                                "typeString": "struct ZebecCard.CardConfig memory"
                                            }
                                        },
                                        "src": "2793:24:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_CardConfig_$1532_storage",
                                            "typeString": "struct ZebecCard.CardConfig storage ref"
                                        }
                                    },
                                    "id": 1643,
                                    "nodeType": "ExpressionStatement",
                                    "src": "2793:24:1"
                                },
                                {
                                    "expression": {
                                        "arguments": [],
                                        "expression": {
                                            "argumentTypes": [],
                                            "id": 1644,
                                            "name": "__UUPSUpgradeable_init",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3214,
                                            "src": "2827:22:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                                                "typeString": "function ()"
                                            }
                                        },
                                        "id": 1645,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2827:24:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 1646,
                                    "nodeType": "ExpressionStatement",
                                    "src": "2827:24:1"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "expression": {
                                                    "id": 1648,
                                                    "name": "msg",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 4294967281,
                                                    "src": "2876:3:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_magic_message",
                                                        "typeString": "msg"
                                                    }
                                                },
                                                "id": 1649,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberLocation": "2880:6:1",
                                                "memberName": "sender",
                                                "nodeType": "MemberAccess",
                                                "src": "2876:10:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            ],
                                            "id": 1647,
                                            "name": "__Ownable_init",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2766,
                                            "src": "2861:14:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                                                "typeString": "function (address)"
                                            }
                                        },
                                        "id": 1650,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2861:26:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 1651,
                                    "nodeType": "ExpressionStatement",
                                    "src": "2861:26:1"
                                },
                                {
                                    "expression": {
                                        "id": 1654,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "id": 1652,
                                            "name": "wTrx",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1598,
                                            "src": "2897:4:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "id": 1653,
                                            "name": "wrapped_trx",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1631,
                                            "src": "2904:11:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "src": "2897:18:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "id": 1655,
                                    "nodeType": "ExpressionStatement",
                                    "src": "2897:18:1"
                                },
                                {
                                    "body": {
                                        "id": 1675,
                                        "nodeType": "Block",
                                        "src": "2969:52:1",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "baseExpression": {
                                                                "id": 1670,
                                                                "name": "fee_tiers",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1627,
                                                                "src": "2997:9:1",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_array$_t_struct$_FeeTier_$1511_memory_ptr_$dyn_memory_ptr",
                                                                    "typeString": "struct ZebecCard.FeeTier memory[] memory"
                                                                }
                                                            },
                                                            "id": 1672,
                                                            "indexExpression": {
                                                                "id": 1671,
                                                                "name": "i",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1657,
                                                                "src": "3007:1:1",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "IndexAccess",
                                                            "src": "2997:12:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_FeeTier_$1511_memory_ptr",
                                                                "typeString": "struct ZebecCard.FeeTier memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_struct$_FeeTier_$1511_memory_ptr",
                                                                "typeString": "struct ZebecCard.FeeTier memory"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "id": 1667,
                                                            "name": "feeTiers",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1611,
                                                            "src": "2983:8:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_array$_t_struct$_FeeTier_$1511_storage_$dyn_storage",
                                                                "typeString": "struct ZebecCard.FeeTier storage ref[] storage ref"
                                                            }
                                                        },
                                                        "id": 1669,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberLocation": "2992:4:1",
                                                        "memberName": "push",
                                                        "nodeType": "MemberAccess",
                                                        "src": "2983:13:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_struct$_FeeTier_$1511_storage_$dyn_storage_ptr_$_t_struct$_FeeTier_$1511_storage_$returns$__$attached_to$_t_array$_t_struct$_FeeTier_$1511_storage_$dyn_storage_ptr_$",
                                                            "typeString": "function (struct ZebecCard.FeeTier storage ref[] storage pointer,struct ZebecCard.FeeTier storage ref)"
                                                        }
                                                    },
                                                    "id": 1673,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "nameLocations": [],
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "2983:27:1",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 1674,
                                                "nodeType": "ExpressionStatement",
                                                "src": "2983:27:1"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        },
                                        "id": 1663,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "id": 1660,
                                            "name": "i",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1657,
                                            "src": "2942:1:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "<",
                                        "rightExpression": {
                                            "expression": {
                                                "id": 1661,
                                                "name": "fee_tiers",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1627,
                                                "src": "2946:9:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_struct$_FeeTier_$1511_memory_ptr_$dyn_memory_ptr",
                                                    "typeString": "struct ZebecCard.FeeTier memory[] memory"
                                                }
                                            },
                                            "id": 1662,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberLocation": "2956:6:1",
                                            "memberName": "length",
                                            "nodeType": "MemberAccess",
                                            "src": "2946:16:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "2942:20:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "id": 1676,
                                    "initializationExpression": {
                                        "assignments": [1657],
                                        "declarations": [
                                            {
                                                "constant": false,
                                                "id": 1657,
                                                "mutability": "mutable",
                                                "name": "i",
                                                "nameLocation": "2935:1:1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1676,
                                                "src": "2930:6:1",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 1656,
                                                    "name": "uint",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2930:4:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "id": 1659,
                                        "initialValue": {
                                            "hexValue": "30",
                                            "id": 1658,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "2939:1:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_rational_0_by_1",
                                                "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                        },
                                        "nodeType": "VariableDeclarationStatement",
                                        "src": "2930:10:1"
                                    },
                                    "loopExpression": {
                                        "expression": {
                                            "id": 1665,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "UnaryOperation",
                                            "operator": "++",
                                            "prefix": false,
                                            "src": "2964:3:1",
                                            "subExpression": {
                                                "id": 1664,
                                                "name": "i",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1657,
                                                "src": "2964:1:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "id": 1666,
                                        "nodeType": "ExpressionStatement",
                                        "src": "2964:3:1"
                                    },
                                    "nodeType": "ForStatement",
                                    "src": "2925:96:1"
                                }
                            ]
                        },
                        "functionSelector": "569b5dbf",
                        "id": 1678,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [
                            {
                                "id": 1634,
                                "kind": "modifierInvocation",
                                "modifierName": {
                                    "id": 1633,
                                    "name": "initializer",
                                    "nameLocations": ["2730:11:1"],
                                    "nodeType": "IdentifierPath",
                                    "referencedDeclaration": 3014,
                                    "src": "2730:11:1"
                                },
                                "nodeType": "ModifierInvocation",
                                "src": "2730:11:1"
                            }
                        ],
                        "name": "initialize",
                        "nameLocation": "2569:10:1",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 1632,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 1623,
                                    "mutability": "mutable",
                                    "name": "card_config",
                                    "nameLocation": "2607:11:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1678,
                                    "src": "2589:29:1",
                                    "stateVariable": false,
                                    "storageLocation": "memory",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_CardConfig_$1532_memory_ptr",
                                        "typeString": "struct ZebecCard.CardConfig"
                                    },
                                    "typeName": {
                                        "id": 1622,
                                        "nodeType": "UserDefinedTypeName",
                                        "pathNode": {
                                            "id": 1621,
                                            "name": "CardConfig",
                                            "nameLocations": ["2589:10:1"],
                                            "nodeType": "IdentifierPath",
                                            "referencedDeclaration": 1532,
                                            "src": "2589:10:1"
                                        },
                                        "referencedDeclaration": 1532,
                                        "src": "2589:10:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_CardConfig_$1532_storage_ptr",
                                            "typeString": "struct ZebecCard.CardConfig"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 1627,
                                    "mutability": "mutable",
                                    "name": "fee_tiers",
                                    "nameLocation": "2645:9:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1678,
                                    "src": "2628:26:1",
                                    "stateVariable": false,
                                    "storageLocation": "memory",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_struct$_FeeTier_$1511_memory_ptr_$dyn_memory_ptr",
                                        "typeString": "struct ZebecCard.FeeTier[]"
                                    },
                                    "typeName": {
                                        "baseType": {
                                            "id": 1625,
                                            "nodeType": "UserDefinedTypeName",
                                            "pathNode": {
                                                "id": 1624,
                                                "name": "FeeTier",
                                                "nameLocations": ["2628:7:1"],
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 1511,
                                                "src": "2628:7:1"
                                            },
                                            "referencedDeclaration": 1511,
                                            "src": "2628:7:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_FeeTier_$1511_storage_ptr",
                                                "typeString": "struct ZebecCard.FeeTier"
                                            }
                                        },
                                        "id": 1626,
                                        "nodeType": "ArrayTypeName",
                                        "src": "2628:9:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_struct$_FeeTier_$1511_storage_$dyn_storage_ptr",
                                            "typeString": "struct ZebecCard.FeeTier[]"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 1629,
                                    "mutability": "mutable",
                                    "name": "sun_swap_router",
                                    "nameLocation": "2672:15:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1678,
                                    "src": "2664:23:1",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 1628,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2664:7:1",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 1631,
                                    "mutability": "mutable",
                                    "name": "wrapped_trx",
                                    "nameLocation": "2705:11:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1678,
                                    "src": "2697:19:1",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 1630,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2697:7:1",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "2579:143:1"
                        },
                        "returnParameters": {
                            "id": 1635,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "2742:0:1"
                        },
                        "scope": 2657,
                        "src": "2560:467:1",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "public"
                    },
                    {
                        "body": {
                            "id": 1702,
                            "nodeType": "Block",
                            "src": "3197:220:1",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "commonType": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "id": 1697,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "arguments": [
                                                        {
                                                            "expression": {
                                                                "id": 1689,
                                                                "name": "msg",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 4294967281,
                                                                "src": "3286:3:1",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_magic_message",
                                                                    "typeString": "msg"
                                                                }
                                                            },
                                                            "id": 1690,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberLocation": "3290:6:1",
                                                            "memberName": "sender",
                                                            "nodeType": "MemberAccess",
                                                            "src": "3286:10:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 1693,
                                                                    "name": "this",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 4294967268,
                                                                    "src": "3322:4:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_contract$_ZebecCard_$2657",
                                                                        "typeString": "contract ZebecCard"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_contract$_ZebecCard_$2657",
                                                                        "typeString": "contract ZebecCard"
                                                                    }
                                                                ],
                                                                "id": 1692,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "nodeType": "ElementaryTypeNameExpression",
                                                                "src": "3314:7:1",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_address_$",
                                                                    "typeString": "type(address)"
                                                                },
                                                                "typeName": {
                                                                    "id": 1691,
                                                                    "name": "address",
                                                                    "nodeType": "ElementaryTypeName",
                                                                    "src": "3314:7:1",
                                                                    "typeDescriptions": {}
                                                                }
                                                            },
                                                            "id": 1694,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "typeConversion",
                                                            "lValueRequested": false,
                                                            "nameLocations": [],
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "3314:13:1",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "arguments": [
                                                                {
                                                                    "expression": {
                                                                        "id": 1685,
                                                                        "name": "cardConfig",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 1594,
                                                                        "src": "3235:10:1",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_struct$_CardConfig_$1532_storage",
                                                                            "typeString": "struct ZebecCard.CardConfig storage ref"
                                                                        }
                                                                    },
                                                                    "id": 1686,
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberLocation": "3246:11:1",
                                                                    "memberName": "usdcAddress",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 1525,
                                                                    "src": "3235:22:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                ],
                                                                "id": 1684,
                                                                "name": "IERC20",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 3789,
                                                                "src": "3228:6:1",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_contract$_IERC20_$3789_$",
                                                                    "typeString": "type(contract IERC20)"
                                                                }
                                                            },
                                                            "id": 1687,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "typeConversion",
                                                            "lValueRequested": false,
                                                            "nameLocations": [],
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "3228:30:1",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_contract$_IERC20_$3789",
                                                                "typeString": "contract IERC20"
                                                            }
                                                        },
                                                        "id": 1688,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberLocation": "3259:9:1",
                                                        "memberName": "allowance",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 3766,
                                                        "src": "3228:40:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$",
                                                            "typeString": "function (address,address) view external returns (uint256)"
                                                        }
                                                    },
                                                    "id": 1695,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "nameLocations": [],
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "3228:113:1",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": ">=",
                                                "rightExpression": {
                                                    "id": 1696,
                                                    "name": "amount",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 1681,
                                                    "src": "3345:6:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "src": "3228:123:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            {
                                                "hexValue": "496e73756666696369656e7420616c6c6f77616e6365",
                                                "id": 1698,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "3365:24:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc",
                                                    "typeString": "literal_string \"Insufficient allowance\""
                                                },
                                                "value": "Insufficient allowance"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                {
                                                    "typeIdentifier": "t_stringliteral_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc",
                                                    "typeString": "literal_string \"Insufficient allowance\""
                                                }
                                            ],
                                            "id": 1683,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [4294967278, 4294967278],
                                            "referencedDeclaration": 4294967278,
                                            "src": "3207:7:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (bool,string memory) pure"
                                            }
                                        },
                                        "id": 1699,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "3207:192:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 1700,
                                    "nodeType": "ExpressionStatement",
                                    "src": "3207:192:1"
                                },
                                {
                                    "id": 1701,
                                    "nodeType": "PlaceholderStatement",
                                    "src": "3409:1:1"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 1679,
                            "nodeType": "StructuredDocumentation",
                            "src": "3033:122:1",
                            "text": " @dev Modifier to check token allowance.\n @param amount The amount to check against the allowance."
                        },
                        "id": 1703,
                        "name": "checkAllowance",
                        "nameLocation": "3169:14:1",
                        "nodeType": "ModifierDefinition",
                        "parameters": {
                            "id": 1682,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 1681,
                                    "mutability": "mutable",
                                    "name": "amount",
                                    "nameLocation": "3189:6:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1703,
                                    "src": "3184:11:1",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 1680,
                                        "name": "uint",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3184:4:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "3183:13:1"
                        },
                        "src": "3160:257:1",
                        "virtual": false,
                        "visibility": "internal"
                    },
                    {
                        "body": {
                            "id": 1747,
                            "nodeType": "Block",
                            "src": "3485:295:1",
                            "statements": [
                                {
                                    "body": {
                                        "id": 1741,
                                        "nodeType": "Block",
                                        "src": "3538:197:1",
                                        "statements": [
                                            {
                                                "condition": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    },
                                                    "id": 1733,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "commonType": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "id": 1726,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "id": 1721,
                                                            "name": "amount",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1705,
                                                            "src": "3573:6:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": ">=",
                                                        "rightExpression": {
                                                            "expression": {
                                                                "baseExpression": {
                                                                    "id": 1722,
                                                                    "name": "feeTiers",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1611,
                                                                    "src": "3583:8:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_array$_t_struct$_FeeTier_$1511_storage_$dyn_storage",
                                                                        "typeString": "struct ZebecCard.FeeTier storage ref[] storage ref"
                                                                    }
                                                                },
                                                                "id": 1724,
                                                                "indexExpression": {
                                                                    "id": 1723,
                                                                    "name": "i",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1711,
                                                                    "src": "3592:1:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "IndexAccess",
                                                                "src": "3583:11:1",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_FeeTier_$1511_storage",
                                                                    "typeString": "struct ZebecCard.FeeTier storage ref"
                                                                }
                                                            },
                                                            "id": 1725,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberLocation": "3595:9:1",
                                                            "memberName": "minAmount",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 1506,
                                                            "src": "3583:21:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "src": "3573:31:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "&&",
                                                    "rightExpression": {
                                                        "commonType": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "id": 1732,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "id": 1727,
                                                            "name": "amount",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1705,
                                                            "src": "3624:6:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "<=",
                                                        "rightExpression": {
                                                            "expression": {
                                                                "baseExpression": {
                                                                    "id": 1728,
                                                                    "name": "feeTiers",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1611,
                                                                    "src": "3634:8:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_array$_t_struct$_FeeTier_$1511_storage_$dyn_storage",
                                                                        "typeString": "struct ZebecCard.FeeTier storage ref[] storage ref"
                                                                    }
                                                                },
                                                                "id": 1730,
                                                                "indexExpression": {
                                                                    "id": 1729,
                                                                    "name": "i",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1711,
                                                                    "src": "3643:1:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "IndexAccess",
                                                                "src": "3634:11:1",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_FeeTier_$1511_storage",
                                                                    "typeString": "struct ZebecCard.FeeTier storage ref"
                                                                }
                                                            },
                                                            "id": 1731,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberLocation": "3646:9:1",
                                                            "memberName": "maxAmount",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 1508,
                                                            "src": "3634:21:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "src": "3624:31:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        }
                                                    },
                                                    "src": "3573:82:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "id": 1740,
                                                "nodeType": "IfStatement",
                                                "src": "3552:173:1",
                                                "trueBody": {
                                                    "id": 1739,
                                                    "nodeType": "Block",
                                                    "src": "3670:55:1",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "expression": {
                                                                    "baseExpression": {
                                                                        "id": 1734,
                                                                        "name": "feeTiers",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 1611,
                                                                        "src": "3695:8:1",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_array$_t_struct$_FeeTier_$1511_storage_$dyn_storage",
                                                                            "typeString": "struct ZebecCard.FeeTier storage ref[] storage ref"
                                                                        }
                                                                    },
                                                                    "id": 1736,
                                                                    "indexExpression": {
                                                                        "id": 1735,
                                                                        "name": "i",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 1711,
                                                                        "src": "3704:1:1",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "IndexAccess",
                                                                    "src": "3695:11:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_struct$_FeeTier_$1511_storage",
                                                                        "typeString": "struct ZebecCard.FeeTier storage ref"
                                                                    }
                                                                },
                                                                "id": 1737,
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberLocation": "3707:3:1",
                                                                "memberName": "fee",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 1510,
                                                                "src": "3695:15:1",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "functionReturnParameters": 1709,
                                                            "id": 1738,
                                                            "nodeType": "Return",
                                                            "src": "3688:22:1"
                                                        }
                                                    ]
                                                }
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        },
                                        "id": 1717,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "id": 1714,
                                            "name": "i",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1711,
                                            "src": "3512:1:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "<",
                                        "rightExpression": {
                                            "expression": {
                                                "id": 1715,
                                                "name": "feeTiers",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1611,
                                                "src": "3516:8:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_struct$_FeeTier_$1511_storage_$dyn_storage",
                                                    "typeString": "struct ZebecCard.FeeTier storage ref[] storage ref"
                                                }
                                            },
                                            "id": 1716,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberLocation": "3525:6:1",
                                            "memberName": "length",
                                            "nodeType": "MemberAccess",
                                            "src": "3516:15:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "3512:19:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "id": 1742,
                                    "initializationExpression": {
                                        "assignments": [1711],
                                        "declarations": [
                                            {
                                                "constant": false,
                                                "id": 1711,
                                                "mutability": "mutable",
                                                "name": "i",
                                                "nameLocation": "3505:1:1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1742,
                                                "src": "3500:6:1",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 1710,
                                                    "name": "uint",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3500:4:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "id": 1713,
                                        "initialValue": {
                                            "hexValue": "30",
                                            "id": 1712,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "3509:1:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_rational_0_by_1",
                                                "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                        },
                                        "nodeType": "VariableDeclarationStatement",
                                        "src": "3500:10:1"
                                    },
                                    "loopExpression": {
                                        "expression": {
                                            "id": 1719,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "UnaryOperation",
                                            "operator": "++",
                                            "prefix": false,
                                            "src": "3533:3:1",
                                            "subExpression": {
                                                "id": 1718,
                                                "name": "i",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1711,
                                                "src": "3533:1:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "id": 1720,
                                        "nodeType": "ExpressionStatement",
                                        "src": "3533:3:1"
                                    },
                                    "nodeType": "ForStatement",
                                    "src": "3495:240:1"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "hexValue": "416d6f756e74206f7574206f662072616e6765",
                                                "id": 1744,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "3751:21:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_cfabd4029aae7d4bd8cb9ac1d82d4c2a1969182f7c65ecfae637bdd4963704d3",
                                                    "typeString": "literal_string \"Amount out of range\""
                                                },
                                                "value": "Amount out of range"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_stringliteral_cfabd4029aae7d4bd8cb9ac1d82d4c2a1969182f7c65ecfae637bdd4963704d3",
                                                    "typeString": "literal_string \"Amount out of range\""
                                                }
                                            ],
                                            "id": 1743,
                                            "name": "revert",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [4294967277, 4294967277],
                                            "referencedDeclaration": 4294967277,
                                            "src": "3744:6:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (string memory) pure"
                                            }
                                        },
                                        "id": 1745,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "3744:29:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 1746,
                                    "nodeType": "ExpressionStatement",
                                    "src": "3744:29:1"
                                }
                            ]
                        },
                        "functionSelector": "fcee45f4",
                        "id": 1748,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "getFee",
                        "nameLocation": "3432:6:1",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 1706,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 1705,
                                    "mutability": "mutable",
                                    "name": "amount",
                                    "nameLocation": "3447:6:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1748,
                                    "src": "3439:14:1",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 1704,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3439:7:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "3438:16:1"
                        },
                        "returnParameters": {
                            "id": 1709,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 1708,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1748,
                                    "src": "3476:7:1",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 1707,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3476:7:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "3475:9:1"
                        },
                        "scope": 2657,
                        "src": "3423:357:1",
                        "stateMutability": "view",
                        "virtual": false,
                        "visibility": "public"
                    },
                    {
                        "body": {
                            "id": 1757,
                            "nodeType": "Block",
                            "src": "3850:32:1",
                            "statements": [
                                {
                                    "expression": {
                                        "id": 1755,
                                        "name": "feeTiers",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1611,
                                        "src": "3867:8:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_struct$_FeeTier_$1511_storage_$dyn_storage",
                                            "typeString": "struct ZebecCard.FeeTier storage ref[] storage ref"
                                        }
                                    },
                                    "functionReturnParameters": 1754,
                                    "id": 1756,
                                    "nodeType": "Return",
                                    "src": "3860:15:1"
                                }
                            ]
                        },
                        "functionSelector": "e9a4d24f",
                        "id": 1758,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "getFeeTiers",
                        "nameLocation": "3795:11:1",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 1749,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "3806:2:1"
                        },
                        "returnParameters": {
                            "id": 1754,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 1753,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1758,
                                    "src": "3832:16:1",
                                    "stateVariable": false,
                                    "storageLocation": "memory",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_struct$_FeeTier_$1511_memory_ptr_$dyn_memory_ptr",
                                        "typeString": "struct ZebecCard.FeeTier[]"
                                    },
                                    "typeName": {
                                        "baseType": {
                                            "id": 1751,
                                            "nodeType": "UserDefinedTypeName",
                                            "pathNode": {
                                                "id": 1750,
                                                "name": "FeeTier",
                                                "nameLocations": ["3832:7:1"],
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 1511,
                                                "src": "3832:7:1"
                                            },
                                            "referencedDeclaration": 1511,
                                            "src": "3832:7:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_FeeTier_$1511_storage_ptr",
                                                "typeString": "struct ZebecCard.FeeTier"
                                            }
                                        },
                                        "id": 1752,
                                        "nodeType": "ArrayTypeName",
                                        "src": "3832:9:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_struct$_FeeTier_$1511_storage_$dyn_storage_ptr",
                                            "typeString": "struct ZebecCard.FeeTier[]"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "3831:18:1"
                        },
                        "scope": 2657,
                        "src": "3786:96:1",
                        "stateMutability": "view",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "body": {
                            "id": 1827,
                            "nodeType": "Block",
                            "src": "4004:498:1",
                            "statements": [
                                {
                                    "assignments": [1770],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 1770,
                                            "mutability": "mutable",
                                            "name": "found",
                                            "nameLocation": "4019:5:1",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 1827,
                                            "src": "4014:10:1",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                            },
                                            "typeName": {
                                                "id": 1769,
                                                "name": "bool",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "4014:4:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 1772,
                                    "initialValue": {
                                        "hexValue": "66616c7365",
                                        "id": 1771,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "bool",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "4027:5:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        },
                                        "value": "false"
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "4014:18:1"
                                },
                                {
                                    "body": {
                                        "id": 1811,
                                        "nodeType": "Block",
                                        "src": "4086:255:1",
                                        "statements": [
                                            {
                                                "condition": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    },
                                                    "id": 1796,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "commonType": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "id": 1789,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "id": 1784,
                                                            "name": "minAmount",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1760,
                                                            "src": "4121:9:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": ">=",
                                                        "rightExpression": {
                                                            "expression": {
                                                                "baseExpression": {
                                                                    "id": 1785,
                                                                    "name": "feeTiers",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1611,
                                                                    "src": "4134:8:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_array$_t_struct$_FeeTier_$1511_storage_$dyn_storage",
                                                                        "typeString": "struct ZebecCard.FeeTier storage ref[] storage ref"
                                                                    }
                                                                },
                                                                "id": 1787,
                                                                "indexExpression": {
                                                                    "id": 1786,
                                                                    "name": "i",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1774,
                                                                    "src": "4143:1:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "IndexAccess",
                                                                "src": "4134:11:1",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_FeeTier_$1511_storage",
                                                                    "typeString": "struct ZebecCard.FeeTier storage ref"
                                                                }
                                                            },
                                                            "id": 1788,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberLocation": "4146:9:1",
                                                            "memberName": "minAmount",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 1506,
                                                            "src": "4134:21:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "src": "4121:34:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "&&",
                                                    "rightExpression": {
                                                        "commonType": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "id": 1795,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "id": 1790,
                                                            "name": "minAmount",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1760,
                                                            "src": "4175:9:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "<=",
                                                        "rightExpression": {
                                                            "expression": {
                                                                "baseExpression": {
                                                                    "id": 1791,
                                                                    "name": "feeTiers",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1611,
                                                                    "src": "4188:8:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_array$_t_struct$_FeeTier_$1511_storage_$dyn_storage",
                                                                        "typeString": "struct ZebecCard.FeeTier storage ref[] storage ref"
                                                                    }
                                                                },
                                                                "id": 1793,
                                                                "indexExpression": {
                                                                    "id": 1792,
                                                                    "name": "i",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1774,
                                                                    "src": "4197:1:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "IndexAccess",
                                                                "src": "4188:11:1",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_FeeTier_$1511_storage",
                                                                    "typeString": "struct ZebecCard.FeeTier storage ref"
                                                                }
                                                            },
                                                            "id": 1794,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberLocation": "4200:9:1",
                                                            "memberName": "maxAmount",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 1508,
                                                            "src": "4188:21:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "src": "4175:34:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        }
                                                    },
                                                    "src": "4121:88:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "id": 1810,
                                                "nodeType": "IfStatement",
                                                "src": "4100:231:1",
                                                "trueBody": {
                                                    "id": 1809,
                                                    "nodeType": "Block",
                                                    "src": "4224:107:1",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "id": 1802,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftHandSide": {
                                                                    "expression": {
                                                                        "baseExpression": {
                                                                            "id": 1797,
                                                                            "name": "feeTiers",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 1611,
                                                                            "src": "4242:8:1",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_array$_t_struct$_FeeTier_$1511_storage_$dyn_storage",
                                                                                "typeString": "struct ZebecCard.FeeTier storage ref[] storage ref"
                                                                            }
                                                                        },
                                                                        "id": 1799,
                                                                        "indexExpression": {
                                                                            "id": 1798,
                                                                            "name": "i",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 1774,
                                                                            "src": "4251:1:1",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        },
                                                                        "isConstant": false,
                                                                        "isLValue": true,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "nodeType": "IndexAccess",
                                                                        "src": "4242:11:1",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_struct$_FeeTier_$1511_storage",
                                                                            "typeString": "struct ZebecCard.FeeTier storage ref"
                                                                        }
                                                                    },
                                                                    "id": 1800,
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": true,
                                                                    "memberLocation": "4254:3:1",
                                                                    "memberName": "fee",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 1510,
                                                                    "src": "4242:15:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "nodeType": "Assignment",
                                                                "operator": "=",
                                                                "rightHandSide": {
                                                                    "id": 1801,
                                                                    "name": "fee",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1764,
                                                                    "src": "4260:3:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "src": "4242:21:1",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "id": 1803,
                                                            "nodeType": "ExpressionStatement",
                                                            "src": "4242:21:1"
                                                        },
                                                        {
                                                            "expression": {
                                                                "id": 1806,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftHandSide": {
                                                                    "id": 1804,
                                                                    "name": "found",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1770,
                                                                    "src": "4281:5:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bool",
                                                                        "typeString": "bool"
                                                                    }
                                                                },
                                                                "nodeType": "Assignment",
                                                                "operator": "=",
                                                                "rightHandSide": {
                                                                    "hexValue": "74727565",
                                                                    "id": 1805,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "bool",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "4289:4:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bool",
                                                                        "typeString": "bool"
                                                                    },
                                                                    "value": "true"
                                                                },
                                                                "src": "4281:12:1",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                }
                                                            },
                                                            "id": 1807,
                                                            "nodeType": "ExpressionStatement",
                                                            "src": "4281:12:1"
                                                        },
                                                        {
                                                            "id": 1808,
                                                            "nodeType": "Break",
                                                            "src": "4311:5:1"
                                                        }
                                                    ]
                                                }
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        },
                                        "id": 1780,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "id": 1777,
                                            "name": "i",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1774,
                                            "src": "4060:1:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "<",
                                        "rightExpression": {
                                            "expression": {
                                                "id": 1778,
                                                "name": "feeTiers",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1611,
                                                "src": "4064:8:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_struct$_FeeTier_$1511_storage_$dyn_storage",
                                                    "typeString": "struct ZebecCard.FeeTier storage ref[] storage ref"
                                                }
                                            },
                                            "id": 1779,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberLocation": "4073:6:1",
                                            "memberName": "length",
                                            "nodeType": "MemberAccess",
                                            "src": "4064:15:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "4060:19:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "id": 1812,
                                    "initializationExpression": {
                                        "assignments": [1774],
                                        "declarations": [
                                            {
                                                "constant": false,
                                                "id": 1774,
                                                "mutability": "mutable",
                                                "name": "i",
                                                "nameLocation": "4053:1:1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1812,
                                                "src": "4048:6:1",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 1773,
                                                    "name": "uint",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4048:4:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "id": 1776,
                                        "initialValue": {
                                            "hexValue": "30",
                                            "id": 1775,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "4057:1:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_rational_0_by_1",
                                                "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                        },
                                        "nodeType": "VariableDeclarationStatement",
                                        "src": "4048:10:1"
                                    },
                                    "loopExpression": {
                                        "expression": {
                                            "id": 1782,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "UnaryOperation",
                                            "operator": "++",
                                            "prefix": false,
                                            "src": "4081:3:1",
                                            "subExpression": {
                                                "id": 1781,
                                                "name": "i",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1774,
                                                "src": "4081:1:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "id": 1783,
                                        "nodeType": "ExpressionStatement",
                                        "src": "4081:3:1"
                                    },
                                    "nodeType": "ForStatement",
                                    "src": "4043:298:1"
                                },
                                {
                                    "condition": {
                                        "id": 1814,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "UnaryOperation",
                                        "operator": "!",
                                        "prefix": true,
                                        "src": "4355:6:1",
                                        "subExpression": {
                                            "id": 1813,
                                            "name": "found",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1770,
                                            "src": "4356:5:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                            }
                                        },
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "id": 1826,
                                    "nodeType": "IfStatement",
                                    "src": "4351:145:1",
                                    "trueBody": {
                                        "id": 1825,
                                        "nodeType": "Block",
                                        "src": "4363:133:1",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 1819,
                                                                    "name": "minAmount",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1760,
                                                                    "src": "4428:9:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                {
                                                                    "id": 1820,
                                                                    "name": "maxAmount",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1762,
                                                                    "src": "4450:9:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                {
                                                                    "id": 1821,
                                                                    "name": "fee",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1764,
                                                                    "src": "4466:3:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    },
                                                                    {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    },
                                                                    {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                ],
                                                                "id": 1818,
                                                                "name": "FeeTier",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1511,
                                                                "src": "4408:7:1",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_struct$_FeeTier_$1511_storage_ptr_$",
                                                                    "typeString": "type(struct ZebecCard.FeeTier storage pointer)"
                                                                }
                                                            },
                                                            "id": 1822,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "structConstructorCall",
                                                            "lValueRequested": false,
                                                            "nameLocations": ["4417:9:1", "4439:9:1", "4461:3:1"],
                                                            "names": ["minAmount", "maxAmount", "fee"],
                                                            "nodeType": "FunctionCall",
                                                            "src": "4408:63:1",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_FeeTier_$1511_memory_ptr",
                                                                "typeString": "struct ZebecCard.FeeTier memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_struct$_FeeTier_$1511_memory_ptr",
                                                                "typeString": "struct ZebecCard.FeeTier memory"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "id": 1815,
                                                            "name": "feeTiers",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1611,
                                                            "src": "4377:8:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_array$_t_struct$_FeeTier_$1511_storage_$dyn_storage",
                                                                "typeString": "struct ZebecCard.FeeTier storage ref[] storage ref"
                                                            }
                                                        },
                                                        "id": 1817,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberLocation": "4386:4:1",
                                                        "memberName": "push",
                                                        "nodeType": "MemberAccess",
                                                        "src": "4377:13:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_struct$_FeeTier_$1511_storage_$dyn_storage_ptr_$_t_struct$_FeeTier_$1511_storage_$returns$__$attached_to$_t_array$_t_struct$_FeeTier_$1511_storage_$dyn_storage_ptr_$",
                                                            "typeString": "function (struct ZebecCard.FeeTier storage ref[] storage pointer,struct ZebecCard.FeeTier storage ref)"
                                                        }
                                                    },
                                                    "id": 1823,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "nameLocations": [],
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "4377:108:1",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 1824,
                                                "nodeType": "ExpressionStatement",
                                                "src": "4377:108:1"
                                            }
                                        ]
                                    }
                                }
                            ]
                        },
                        "functionSelector": "5b65b9ab",
                        "id": 1828,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [
                            {
                                "id": 1767,
                                "kind": "modifierInvocation",
                                "modifierName": {
                                    "id": 1766,
                                    "name": "onlyOwner",
                                    "nameLocations": ["3994:9:1"],
                                    "nodeType": "IdentifierPath",
                                    "referencedDeclaration": 2801,
                                    "src": "3994:9:1"
                                },
                                "nodeType": "ModifierInvocation",
                                "src": "3994:9:1"
                            }
                        ],
                        "name": "setFee",
                        "nameLocation": "3897:6:1",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 1765,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 1760,
                                    "mutability": "mutable",
                                    "name": "minAmount",
                                    "nameLocation": "3921:9:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1828,
                                    "src": "3913:17:1",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 1759,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3913:7:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 1762,
                                    "mutability": "mutable",
                                    "name": "maxAmount",
                                    "nameLocation": "3948:9:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1828,
                                    "src": "3940:17:1",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 1761,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3940:7:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 1764,
                                    "mutability": "mutable",
                                    "name": "fee",
                                    "nameLocation": "3975:3:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1828,
                                    "src": "3967:11:1",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 1763,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3967:7:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "3903:81:1"
                        },
                        "returnParameters": {
                            "id": 1768,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "4004:0:1"
                        },
                        "scope": 2657,
                        "src": "3888:614:1",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "body": {
                            "id": 1861,
                            "nodeType": "Block",
                            "src": "4575:170:1",
                            "statements": [
                                {
                                    "expression": {
                                        "id": 1838,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "UnaryOperation",
                                        "operator": "delete",
                                        "prefix": true,
                                        "src": "4585:15:1",
                                        "subExpression": {
                                            "id": 1837,
                                            "name": "feeTiers",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1611,
                                            "src": "4592:8:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_struct$_FeeTier_$1511_storage_$dyn_storage",
                                                "typeString": "struct ZebecCard.FeeTier storage ref[] storage ref"
                                            }
                                        },
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 1839,
                                    "nodeType": "ExpressionStatement",
                                    "src": "4585:15:1"
                                },
                                {
                                    "body": {
                                        "id": 1859,
                                        "nodeType": "Block",
                                        "src": "4688:51:1",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "baseExpression": {
                                                                "id": 1854,
                                                                "name": "newTiers",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1832,
                                                                "src": "4716:8:1",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_array$_t_struct$_FeeTier_$1511_memory_ptr_$dyn_memory_ptr",
                                                                    "typeString": "struct ZebecCard.FeeTier memory[] memory"
                                                                }
                                                            },
                                                            "id": 1856,
                                                            "indexExpression": {
                                                                "id": 1855,
                                                                "name": "i",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1841,
                                                                "src": "4725:1:1",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "IndexAccess",
                                                            "src": "4716:11:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_FeeTier_$1511_memory_ptr",
                                                                "typeString": "struct ZebecCard.FeeTier memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_struct$_FeeTier_$1511_memory_ptr",
                                                                "typeString": "struct ZebecCard.FeeTier memory"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "id": 1851,
                                                            "name": "feeTiers",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1611,
                                                            "src": "4702:8:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_array$_t_struct$_FeeTier_$1511_storage_$dyn_storage",
                                                                "typeString": "struct ZebecCard.FeeTier storage ref[] storage ref"
                                                            }
                                                        },
                                                        "id": 1853,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberLocation": "4711:4:1",
                                                        "memberName": "push",
                                                        "nodeType": "MemberAccess",
                                                        "src": "4702:13:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_struct$_FeeTier_$1511_storage_$dyn_storage_ptr_$_t_struct$_FeeTier_$1511_storage_$returns$__$attached_to$_t_array$_t_struct$_FeeTier_$1511_storage_$dyn_storage_ptr_$",
                                                            "typeString": "function (struct ZebecCard.FeeTier storage ref[] storage pointer,struct ZebecCard.FeeTier storage ref)"
                                                        }
                                                    },
                                                    "id": 1857,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "nameLocations": [],
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "4702:26:1",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 1858,
                                                "nodeType": "ExpressionStatement",
                                                "src": "4702:26:1"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        },
                                        "id": 1847,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "id": 1844,
                                            "name": "i",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1841,
                                            "src": "4662:1:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "<",
                                        "rightExpression": {
                                            "expression": {
                                                "id": 1845,
                                                "name": "newTiers",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1832,
                                                "src": "4666:8:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_struct$_FeeTier_$1511_memory_ptr_$dyn_memory_ptr",
                                                    "typeString": "struct ZebecCard.FeeTier memory[] memory"
                                                }
                                            },
                                            "id": 1846,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberLocation": "4675:6:1",
                                            "memberName": "length",
                                            "nodeType": "MemberAccess",
                                            "src": "4666:15:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "4662:19:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "id": 1860,
                                    "initializationExpression": {
                                        "assignments": [1841],
                                        "declarations": [
                                            {
                                                "constant": false,
                                                "id": 1841,
                                                "mutability": "mutable",
                                                "name": "i",
                                                "nameLocation": "4655:1:1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1860,
                                                "src": "4647:9:1",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 1840,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4647:7:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "id": 1843,
                                        "initialValue": {
                                            "hexValue": "30",
                                            "id": 1842,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "4659:1:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_rational_0_by_1",
                                                "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                        },
                                        "nodeType": "VariableDeclarationStatement",
                                        "src": "4647:13:1"
                                    },
                                    "loopExpression": {
                                        "expression": {
                                            "id": 1849,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "UnaryOperation",
                                            "operator": "++",
                                            "prefix": false,
                                            "src": "4683:3:1",
                                            "subExpression": {
                                                "id": 1848,
                                                "name": "i",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1841,
                                                "src": "4683:1:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "id": 1850,
                                        "nodeType": "ExpressionStatement",
                                        "src": "4683:3:1"
                                    },
                                    "nodeType": "ForStatement",
                                    "src": "4642:97:1"
                                }
                            ]
                        },
                        "functionSelector": "166dbb73",
                        "id": 1862,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [
                            {
                                "id": 1835,
                                "kind": "modifierInvocation",
                                "modifierName": {
                                    "id": 1834,
                                    "name": "onlyOwner",
                                    "nameLocations": ["4565:9:1"],
                                    "nodeType": "IdentifierPath",
                                    "referencedDeclaration": 2801,
                                    "src": "4565:9:1"
                                },
                                "nodeType": "ModifierInvocation",
                                "src": "4565:9:1"
                            }
                        ],
                        "name": "setFeeArray",
                        "nameLocation": "4517:11:1",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 1833,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 1832,
                                    "mutability": "mutable",
                                    "name": "newTiers",
                                    "nameLocation": "4546:8:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1862,
                                    "src": "4529:25:1",
                                    "stateVariable": false,
                                    "storageLocation": "memory",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_struct$_FeeTier_$1511_memory_ptr_$dyn_memory_ptr",
                                        "typeString": "struct ZebecCard.FeeTier[]"
                                    },
                                    "typeName": {
                                        "baseType": {
                                            "id": 1830,
                                            "nodeType": "UserDefinedTypeName",
                                            "pathNode": {
                                                "id": 1829,
                                                "name": "FeeTier",
                                                "nameLocations": ["4529:7:1"],
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 1511,
                                                "src": "4529:7:1"
                                            },
                                            "referencedDeclaration": 1511,
                                            "src": "4529:7:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_FeeTier_$1511_storage_ptr",
                                                "typeString": "struct ZebecCard.FeeTier"
                                            }
                                        },
                                        "id": 1831,
                                        "nodeType": "ArrayTypeName",
                                        "src": "4529:9:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_struct$_FeeTier_$1511_storage_$dyn_storage_ptr",
                                            "typeString": "struct ZebecCard.FeeTier[]"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "4528:27:1"
                        },
                        "returnParameters": {
                            "id": 1836,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "4575:0:1"
                        },
                        "scope": 2657,
                        "src": "4508:237:1",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "body": {
                            "id": 1876,
                            "nodeType": "Block",
                            "src": "4920:49:1",
                            "statements": [
                                {
                                    "expression": {
                                        "id": 1874,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "expression": {
                                                "id": 1870,
                                                "name": "cardConfig",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1594,
                                                "src": "4930:10:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_CardConfig_$1532_storage",
                                                    "typeString": "struct ZebecCard.CardConfig storage ref"
                                                }
                                            },
                                            "id": 1872,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "memberLocation": "4941:9:1",
                                            "memberName": "nativeFee",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 1513,
                                            "src": "4930:20:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "id": 1873,
                                            "name": "nativeFee",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1865,
                                            "src": "4953:9:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "4930:32:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "id": 1875,
                                    "nodeType": "ExpressionStatement",
                                    "src": "4930:32:1"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 1863,
                            "nodeType": "StructuredDocumentation",
                            "src": "4751:104:1",
                            "text": " @notice Sets the native fee for the card.\n @param nativeFee The new native fee."
                        },
                        "functionSelector": "b91a1e8f",
                        "id": 1877,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [
                            {
                                "id": 1868,
                                "kind": "modifierInvocation",
                                "modifierName": {
                                    "id": 1867,
                                    "name": "onlyOwner",
                                    "nameLocations": ["4910:9:1"],
                                    "nodeType": "IdentifierPath",
                                    "referencedDeclaration": 2801,
                                    "src": "4910:9:1"
                                },
                                "nodeType": "ModifierInvocation",
                                "src": "4910:9:1"
                            }
                        ],
                        "name": "setNativeFee",
                        "nameLocation": "4869:12:1",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 1866,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 1865,
                                    "mutability": "mutable",
                                    "name": "nativeFee",
                                    "nameLocation": "4890:9:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1877,
                                    "src": "4882:17:1",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 1864,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "4882:7:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "4881:19:1"
                        },
                        "returnParameters": {
                            "id": 1869,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "4920:0:1"
                        },
                        "scope": 2657,
                        "src": "4860:109:1",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "body": {
                            "id": 1891,
                            "nodeType": "Block",
                            "src": "5161:55:1",
                            "statements": [
                                {
                                    "expression": {
                                        "id": 1889,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "expression": {
                                                "id": 1885,
                                                "name": "cardConfig",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1594,
                                                "src": "5171:10:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_CardConfig_$1532_storage",
                                                    "typeString": "struct ZebecCard.CardConfig storage ref"
                                                }
                                            },
                                            "id": 1887,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "memberLocation": "5182:12:1",
                                            "memberName": "nonNativeFee",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 1515,
                                            "src": "5171:23:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "id": 1888,
                                            "name": "nonNativeFee",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1880,
                                            "src": "5197:12:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "5171:38:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "id": 1890,
                                    "nodeType": "ExpressionStatement",
                                    "src": "5171:38:1"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 1878,
                            "nodeType": "StructuredDocumentation",
                            "src": "4975:115:1",
                            "text": " @notice Sets the non-native fee for the card.\n @param nonNativeFee The new non-native fee."
                        },
                        "functionSelector": "e591f2ff",
                        "id": 1892,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [
                            {
                                "id": 1883,
                                "kind": "modifierInvocation",
                                "modifierName": {
                                    "id": 1882,
                                    "name": "onlyOwner",
                                    "nameLocations": ["5151:9:1"],
                                    "nodeType": "IdentifierPath",
                                    "referencedDeclaration": 2801,
                                    "src": "5151:9:1"
                                },
                                "nodeType": "ModifierInvocation",
                                "src": "5151:9:1"
                            }
                        ],
                        "name": "setNonNativeFee",
                        "nameLocation": "5104:15:1",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 1881,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 1880,
                                    "mutability": "mutable",
                                    "name": "nonNativeFee",
                                    "nameLocation": "5128:12:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1892,
                                    "src": "5120:20:1",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 1879,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "5120:7:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "5119:22:1"
                        },
                        "returnParameters": {
                            "id": 1884,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "5161:0:1"
                        },
                        "scope": 2657,
                        "src": "5095:121:1",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "body": {
                            "id": 1906,
                            "nodeType": "Block",
                            "src": "5396:51:1",
                            "statements": [
                                {
                                    "expression": {
                                        "id": 1904,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "expression": {
                                                "id": 1900,
                                                "name": "cardConfig",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1594,
                                                "src": "5406:10:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_CardConfig_$1532_storage",
                                                    "typeString": "struct ZebecCard.CardConfig storage ref"
                                                }
                                            },
                                            "id": 1902,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "memberLocation": "5417:10:1",
                                            "memberName": "revenueFee",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 1517,
                                            "src": "5406:21:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "id": 1903,
                                            "name": "revenueFee",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1895,
                                            "src": "5430:10:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "5406:34:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "id": 1905,
                                    "nodeType": "ExpressionStatement",
                                    "src": "5406:34:1"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 1893,
                            "nodeType": "StructuredDocumentation",
                            "src": "5222:107:1",
                            "text": " @notice Sets the revenue fee for the card.\n @param revenueFee The new revenue fee."
                        },
                        "functionSelector": "14435445",
                        "id": 1907,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [
                            {
                                "id": 1898,
                                "kind": "modifierInvocation",
                                "modifierName": {
                                    "id": 1897,
                                    "name": "onlyOwner",
                                    "nameLocations": ["5386:9:1"],
                                    "nodeType": "IdentifierPath",
                                    "referencedDeclaration": 2801,
                                    "src": "5386:9:1"
                                },
                                "nodeType": "ModifierInvocation",
                                "src": "5386:9:1"
                            }
                        ],
                        "name": "setRevenueFee",
                        "nameLocation": "5343:13:1",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 1896,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 1895,
                                    "mutability": "mutable",
                                    "name": "revenueFee",
                                    "nameLocation": "5365:10:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1907,
                                    "src": "5357:18:1",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 1894,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "5357:7:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "5356:20:1"
                        },
                        "returnParameters": {
                            "id": 1899,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "5396:0:1"
                        },
                        "scope": 2657,
                        "src": "5334:113:1",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "body": {
                            "id": 1921,
                            "nodeType": "Block",
                            "src": "5640:55:1",
                            "statements": [
                                {
                                    "expression": {
                                        "id": 1919,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "expression": {
                                                "id": 1915,
                                                "name": "cardConfig",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1594,
                                                "src": "5650:10:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_CardConfig_$1532_storage",
                                                    "typeString": "struct ZebecCard.CardConfig storage ref"
                                                }
                                            },
                                            "id": 1917,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "memberLocation": "5661:12:1",
                                            "memberName": "revenueVault",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 1523,
                                            "src": "5650:23:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "id": 1918,
                                            "name": "revenueVault",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1910,
                                            "src": "5676:12:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "src": "5650:38:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "id": 1920,
                                    "nodeType": "ExpressionStatement",
                                    "src": "5650:38:1"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 1908,
                            "nodeType": "StructuredDocumentation",
                            "src": "5453:116:1",
                            "text": " @notice Sets the revenue vault address.\n @param revenueVault The new revenue vault address."
                        },
                        "functionSelector": "4d68e925",
                        "id": 1922,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [
                            {
                                "id": 1913,
                                "kind": "modifierInvocation",
                                "modifierName": {
                                    "id": 1912,
                                    "name": "onlyOwner",
                                    "nameLocations": ["5630:9:1"],
                                    "nodeType": "IdentifierPath",
                                    "referencedDeclaration": 2801,
                                    "src": "5630:9:1"
                                },
                                "nodeType": "ModifierInvocation",
                                "src": "5630:9:1"
                            }
                        ],
                        "name": "setRevenueVault",
                        "nameLocation": "5583:15:1",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 1911,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 1910,
                                    "mutability": "mutable",
                                    "name": "revenueVault",
                                    "nameLocation": "5607:12:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1922,
                                    "src": "5599:20:1",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 1909,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "5599:7:1",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "5598:22:1"
                        },
                        "returnParameters": {
                            "id": 1914,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "5640:0:1"
                        },
                        "scope": 2657,
                        "src": "5574:121:1",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "body": {
                            "id": 1936,
                            "nodeType": "Block",
                            "src": "5873:49:1",
                            "statements": [
                                {
                                    "expression": {
                                        "id": 1934,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "expression": {
                                                "id": 1930,
                                                "name": "cardConfig",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1594,
                                                "src": "5883:10:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_CardConfig_$1532_storage",
                                                    "typeString": "struct ZebecCard.CardConfig storage ref"
                                                }
                                            },
                                            "id": 1932,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "memberLocation": "5894:9:1",
                                            "memberName": "cardVault",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 1521,
                                            "src": "5883:20:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "id": 1933,
                                            "name": "cardVault",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1925,
                                            "src": "5906:9:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "src": "5883:32:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "id": 1935,
                                    "nodeType": "ExpressionStatement",
                                    "src": "5883:32:1"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 1923,
                            "nodeType": "StructuredDocumentation",
                            "src": "5701:107:1",
                            "text": " @notice Sets the card vault address.\n @param cardVault The new card vault address."
                        },
                        "functionSelector": "d895a46b",
                        "id": 1937,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [
                            {
                                "id": 1928,
                                "kind": "modifierInvocation",
                                "modifierName": {
                                    "id": 1927,
                                    "name": "onlyOwner",
                                    "nameLocations": ["5863:9:1"],
                                    "nodeType": "IdentifierPath",
                                    "referencedDeclaration": 2801,
                                    "src": "5863:9:1"
                                },
                                "nodeType": "ModifierInvocation",
                                "src": "5863:9:1"
                            }
                        ],
                        "name": "setCardVault",
                        "nameLocation": "5822:12:1",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 1926,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 1925,
                                    "mutability": "mutable",
                                    "name": "cardVault",
                                    "nameLocation": "5843:9:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1937,
                                    "src": "5835:17:1",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 1924,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "5835:7:1",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "5834:19:1"
                        },
                        "returnParameters": {
                            "id": 1929,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "5873:0:1"
                        },
                        "scope": 2657,
                        "src": "5813:109:1",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "body": {
                            "id": 1951,
                            "nodeType": "Block",
                            "src": "6106:53:1",
                            "statements": [
                                {
                                    "expression": {
                                        "id": 1949,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "expression": {
                                                "id": 1945,
                                                "name": "cardConfig",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1594,
                                                "src": "6116:10:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_CardConfig_$1532_storage",
                                                    "typeString": "struct ZebecCard.CardConfig storage ref"
                                                }
                                            },
                                            "id": 1947,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "memberLocation": "6127:11:1",
                                            "memberName": "usdcAddress",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 1525,
                                            "src": "6116:22:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "id": 1948,
                                            "name": "usdcAddress",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1940,
                                            "src": "6141:11:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "src": "6116:36:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "id": 1950,
                                    "nodeType": "ExpressionStatement",
                                    "src": "6116:36:1"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 1938,
                            "nodeType": "StructuredDocumentation",
                            "src": "5928:109:1",
                            "text": " @notice Sets the USDC token address.\n @param usdcAddress The new USDC token address."
                        },
                        "functionSelector": "d38bcdee",
                        "id": 1952,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [
                            {
                                "id": 1943,
                                "kind": "modifierInvocation",
                                "modifierName": {
                                    "id": 1942,
                                    "name": "onlyOwner",
                                    "nameLocations": ["6096:9:1"],
                                    "nodeType": "IdentifierPath",
                                    "referencedDeclaration": 2801,
                                    "src": "6096:9:1"
                                },
                                "nodeType": "ModifierInvocation",
                                "src": "6096:9:1"
                            }
                        ],
                        "name": "setUsdcAddress",
                        "nameLocation": "6051:14:1",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 1941,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 1940,
                                    "mutability": "mutable",
                                    "name": "usdcAddress",
                                    "nameLocation": "6074:11:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1952,
                                    "src": "6066:19:1",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 1939,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "6066:7:1",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "6065:21:1"
                        },
                        "returnParameters": {
                            "id": 1944,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "6106:0:1"
                        },
                        "scope": 2657,
                        "src": "6042:117:1",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "body": {
                            "id": 1966,
                            "nodeType": "Block",
                            "src": "6372:53:1",
                            "statements": [
                                {
                                    "expression": {
                                        "id": 1964,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "expression": {
                                                "id": 1960,
                                                "name": "cardConfig",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1594,
                                                "src": "6382:10:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_CardConfig_$1532_storage",
                                                    "typeString": "struct ZebecCard.CardConfig storage ref"
                                                }
                                            },
                                            "id": 1962,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "memberLocation": "6393:13:1",
                                            "memberName": "minCardAmount",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 1527,
                                            "src": "6382:24:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "id": 1963,
                                            "name": "minAmount",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1955,
                                            "src": "6409:9:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "6382:36:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "id": 1965,
                                    "nodeType": "ExpressionStatement",
                                    "src": "6382:36:1"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 1953,
                            "nodeType": "StructuredDocumentation",
                            "src": "6165:138:1",
                            "text": " @notice Sets the minimum card amount upto which user is allowed to buy\n @param minAmount The minimum card amount."
                        },
                        "functionSelector": "48455ff0",
                        "id": 1967,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [
                            {
                                "id": 1958,
                                "kind": "modifierInvocation",
                                "modifierName": {
                                    "id": 1957,
                                    "name": "onlyOwner",
                                    "nameLocations": ["6362:9:1"],
                                    "nodeType": "IdentifierPath",
                                    "referencedDeclaration": 2801,
                                    "src": "6362:9:1"
                                },
                                "nodeType": "ModifierInvocation",
                                "src": "6362:9:1"
                            }
                        ],
                        "name": "setMinCardAmount",
                        "nameLocation": "6317:16:1",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 1956,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 1955,
                                    "mutability": "mutable",
                                    "name": "minAmount",
                                    "nameLocation": "6342:9:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1967,
                                    "src": "6334:17:1",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 1954,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "6334:7:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "6333:19:1"
                        },
                        "returnParameters": {
                            "id": 1959,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "6372:0:1"
                        },
                        "scope": 2657,
                        "src": "6308:117:1",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "body": {
                            "id": 1981,
                            "nodeType": "Block",
                            "src": "6637:53:1",
                            "statements": [
                                {
                                    "expression": {
                                        "id": 1979,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "expression": {
                                                "id": 1975,
                                                "name": "cardConfig",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1594,
                                                "src": "6647:10:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_CardConfig_$1532_storage",
                                                    "typeString": "struct ZebecCard.CardConfig storage ref"
                                                }
                                            },
                                            "id": 1977,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "memberLocation": "6658:13:1",
                                            "memberName": "maxCardAmount",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 1529,
                                            "src": "6647:24:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "id": 1978,
                                            "name": "maxAmount",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1970,
                                            "src": "6674:9:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "6647:36:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "id": 1980,
                                    "nodeType": "ExpressionStatement",
                                    "src": "6647:36:1"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 1968,
                            "nodeType": "StructuredDocumentation",
                            "src": "6431:137:1",
                            "text": " @notice Sets the maximum card amount upto which user is allowed to buy\n @param maxAmount The maximum card amount"
                        },
                        "functionSelector": "b0d097de",
                        "id": 1982,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [
                            {
                                "id": 1973,
                                "kind": "modifierInvocation",
                                "modifierName": {
                                    "id": 1972,
                                    "name": "onlyOwner",
                                    "nameLocations": ["6627:9:1"],
                                    "nodeType": "IdentifierPath",
                                    "referencedDeclaration": 2801,
                                    "src": "6627:9:1"
                                },
                                "nodeType": "ModifierInvocation",
                                "src": "6627:9:1"
                            }
                        ],
                        "name": "setMaxCardAmount",
                        "nameLocation": "6582:16:1",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 1971,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 1970,
                                    "mutability": "mutable",
                                    "name": "maxAmount",
                                    "nameLocation": "6607:9:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1982,
                                    "src": "6599:17:1",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 1969,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "6599:7:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "6598:19:1"
                        },
                        "returnParameters": {
                            "id": 1974,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "6637:0:1"
                        },
                        "scope": 2657,
                        "src": "6573:117:1",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "body": {
                            "id": 1996,
                            "nodeType": "Block",
                            "src": "6904:65:1",
                            "statements": [
                                {
                                    "expression": {
                                        "id": 1994,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "expression": {
                                                "id": 1990,
                                                "name": "cardConfig",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1594,
                                                "src": "6914:10:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_CardConfig_$1532_storage",
                                                    "typeString": "struct ZebecCard.CardConfig storage ref"
                                                }
                                            },
                                            "id": 1992,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "memberLocation": "6925:17:1",
                                            "memberName": "dailyCardBuyLimit",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 1531,
                                            "src": "6914:28:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "id": 1993,
                                            "name": "dailyCardBuyLimit",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1985,
                                            "src": "6945:17:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "6914:48:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "id": 1995,
                                    "nodeType": "ExpressionStatement",
                                    "src": "6914:48:1"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 1983,
                            "nodeType": "StructuredDocumentation",
                            "src": "6696:113:1",
                            "text": " @notice Sets the daily limit for buying card.\n @param dailyCardBuyLimit The daily limit."
                        },
                        "functionSelector": "bea9c43e",
                        "id": 1997,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [
                            {
                                "id": 1988,
                                "kind": "modifierInvocation",
                                "modifierName": {
                                    "id": 1987,
                                    "name": "onlyOwner",
                                    "nameLocations": ["6894:9:1"],
                                    "nodeType": "IdentifierPath",
                                    "referencedDeclaration": 2801,
                                    "src": "6894:9:1"
                                },
                                "nodeType": "ModifierInvocation",
                                "src": "6894:9:1"
                            }
                        ],
                        "name": "setDailyCardBuyLimit",
                        "nameLocation": "6823:20:1",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 1986,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 1985,
                                    "mutability": "mutable",
                                    "name": "dailyCardBuyLimit",
                                    "nameLocation": "6861:17:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1997,
                                    "src": "6853:25:1",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 1984,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "6853:7:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "6843:41:1"
                        },
                        "returnParameters": {
                            "id": 1989,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "6904:0:1"
                        },
                        "scope": 2657,
                        "src": "6814:155:1",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "body": {
                            "id": 2064,
                            "nodeType": "Block",
                            "src": "7174:548:1",
                            "statements": [
                                {
                                    "assignments": [2008],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 2008,
                                            "mutability": "mutable",
                                            "name": "token",
                                            "nameLocation": "7191:5:1",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 2064,
                                            "src": "7184:12:1",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_IERC20_$3789",
                                                "typeString": "contract IERC20"
                                            },
                                            "typeName": {
                                                "id": 2007,
                                                "nodeType": "UserDefinedTypeName",
                                                "pathNode": {
                                                    "id": 2006,
                                                    "name": "IERC20",
                                                    "nameLocations": ["7184:6:1"],
                                                    "nodeType": "IdentifierPath",
                                                    "referencedDeclaration": 3789,
                                                    "src": "7184:6:1"
                                                },
                                                "referencedDeclaration": 3789,
                                                "src": "7184:6:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_IERC20_$3789",
                                                    "typeString": "contract IERC20"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 2013,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "expression": {
                                                    "id": 2010,
                                                    "name": "cardConfig",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 1594,
                                                    "src": "7206:10:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_CardConfig_$1532_storage",
                                                        "typeString": "struct ZebecCard.CardConfig storage ref"
                                                    }
                                                },
                                                "id": 2011,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberLocation": "7217:11:1",
                                                "memberName": "usdcAddress",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 1525,
                                                "src": "7206:22:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            ],
                                            "id": 2009,
                                            "name": "IERC20",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3789,
                                            "src": "7199:6:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_contract$_IERC20_$3789_$",
                                                "typeString": "type(contract IERC20)"
                                            }
                                        },
                                        "id": 2012,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "7199:30:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IERC20_$3789",
                                            "typeString": "contract IERC20"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "7184:45:1"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "commonType": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "id": 2017,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "id": 2015,
                                                    "name": "amount",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 2000,
                                                    "src": "7280:6:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "!=",
                                                "rightExpression": {
                                                    "hexValue": "30",
                                                    "id": 2016,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "7290:1:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_rational_0_by_1",
                                                        "typeString": "int_const 0"
                                                    },
                                                    "value": "0"
                                                },
                                                "src": "7280:11:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            {
                                                "hexValue": "496e76616c696420616d6f756e74",
                                                "id": 2018,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "7293:16:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_2fd1dfd944df9898ee4c79794168926172c3d96d7664ff9919bb7080bb018af1",
                                                    "typeString": "literal_string \"Invalid amount\""
                                                },
                                                "value": "Invalid amount"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                {
                                                    "typeIdentifier": "t_stringliteral_2fd1dfd944df9898ee4c79794168926172c3d96d7664ff9919bb7080bb018af1",
                                                    "typeString": "literal_string \"Invalid amount\""
                                                }
                                            ],
                                            "id": 2014,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [4294967278, 4294967278],
                                            "referencedDeclaration": 4294967278,
                                            "src": "7272:7:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (bool,string memory) pure"
                                            }
                                        },
                                        "id": 2019,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "7272:38:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 2020,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7272:38:1"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "expression": {
                                                    "id": 2024,
                                                    "name": "msg",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 4294967281,
                                                    "src": "7344:3:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_magic_message",
                                                        "typeString": "msg"
                                                    }
                                                },
                                                "id": 2025,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberLocation": "7348:6:1",
                                                "memberName": "sender",
                                                "nodeType": "MemberAccess",
                                                "src": "7344:10:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "id": 2028,
                                                        "name": "this",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4294967268,
                                                        "src": "7364:4:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_contract$_ZebecCard_$2657",
                                                            "typeString": "contract ZebecCard"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_contract$_ZebecCard_$2657",
                                                            "typeString": "contract ZebecCard"
                                                        }
                                                    ],
                                                    "id": 2027,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "lValueRequested": false,
                                                    "nodeType": "ElementaryTypeNameExpression",
                                                    "src": "7356:7:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_address_$",
                                                        "typeString": "type(address)"
                                                    },
                                                    "typeName": {
                                                        "id": 2026,
                                                        "name": "address",
                                                        "nodeType": "ElementaryTypeName",
                                                        "src": "7356:7:1",
                                                        "typeDescriptions": {}
                                                    }
                                                },
                                                "id": 2029,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "nameLocations": [],
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "7356:13:1",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "id": 2030,
                                                "name": "amount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2000,
                                                "src": "7371:6:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "expression": {
                                                "id": 2021,
                                                "name": "token",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2008,
                                                "src": "7321:5:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_IERC20_$3789",
                                                    "typeString": "contract IERC20"
                                                }
                                            },
                                            "id": 2023,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberLocation": "7327:16:1",
                                            "memberName": "safeTransferFrom",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 3902,
                                            "src": "7321:22:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$3789_$_t_address_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$3789_$",
                                                "typeString": "function (contract IERC20,address,address,uint256)"
                                            }
                                        },
                                        "id": 2031,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "7321:57:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 2032,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7321:57:1"
                                },
                                {
                                    "assignments": [2034, 2036],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 2034,
                                            "mutability": "mutable",
                                            "name": "overflowFlag",
                                            "nameLocation": "7395:12:1",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 2064,
                                            "src": "7390:17:1",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                            },
                                            "typeName": {
                                                "id": 2033,
                                                "name": "bool",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "7390:4:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            "visibility": "internal"
                                        },
                                        {
                                            "constant": false,
                                            "id": 2036,
                                            "mutability": "mutable",
                                            "name": "result",
                                            "nameLocation": "7417:6:1",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 2064,
                                            "src": "7409:14:1",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 2035,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "7409:7:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 2045,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "baseExpression": {
                                                    "id": 2039,
                                                    "name": "cardBalances",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 1607,
                                                    "src": "7452:12:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                        "typeString": "mapping(address => uint256)"
                                                    }
                                                },
                                                "id": 2042,
                                                "indexExpression": {
                                                    "expression": {
                                                        "id": 2040,
                                                        "name": "msg",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4294967281,
                                                        "src": "7465:3:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_magic_message",
                                                            "typeString": "msg"
                                                        }
                                                    },
                                                    "id": 2041,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberLocation": "7469:6:1",
                                                    "memberName": "sender",
                                                    "nodeType": "MemberAccess",
                                                    "src": "7465:10:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "IndexAccess",
                                                "src": "7452:24:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            {
                                                "id": 2043,
                                                "name": "amount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2000,
                                                "src": "7490:6:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "expression": {
                                                "id": 2037,
                                                "name": "Math",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 5532,
                                                "src": "7427:4:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_contract$_Math_$5532_$",
                                                    "typeString": "type(library Math)"
                                                }
                                            },
                                            "id": 2038,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberLocation": "7432:6:1",
                                            "memberName": "tryAdd",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 4521,
                                            "src": "7427:11:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$",
                                                "typeString": "function (uint256,uint256) pure returns (bool,uint256)"
                                            }
                                        },
                                        "id": 2044,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "7427:79:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$",
                                            "typeString": "tuple(bool,uint256)"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "7389:117:1"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "id": 2047,
                                                "name": "overflowFlag",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2034,
                                                "src": "7590:12:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            {
                                                "hexValue": "41726974686d65746963204f766572666c6f7721",
                                                "id": 2048,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "7604:22:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_22bbdbaba5bf1ef3e8b5a4120dcfce10aa8ebcde5f8193765f5d73796292e276",
                                                    "typeString": "literal_string \"Arithmetic Overflow!\""
                                                },
                                                "value": "Arithmetic Overflow!"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                {
                                                    "typeIdentifier": "t_stringliteral_22bbdbaba5bf1ef3e8b5a4120dcfce10aa8ebcde5f8193765f5d73796292e276",
                                                    "typeString": "literal_string \"Arithmetic Overflow!\""
                                                }
                                            ],
                                            "id": 2046,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [4294967278, 4294967278],
                                            "referencedDeclaration": 4294967278,
                                            "src": "7582:7:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (bool,string memory) pure"
                                            }
                                        },
                                        "id": 2049,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "7582:45:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 2050,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7582:45:1"
                                },
                                {
                                    "expression": {
                                        "id": 2056,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "baseExpression": {
                                                "id": 2051,
                                                "name": "cardBalances",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1607,
                                                "src": "7637:12:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                    "typeString": "mapping(address => uint256)"
                                                }
                                            },
                                            "id": 2054,
                                            "indexExpression": {
                                                "expression": {
                                                    "id": 2052,
                                                    "name": "msg",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 4294967281,
                                                    "src": "7650:3:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_magic_message",
                                                        "typeString": "msg"
                                                    }
                                                },
                                                "id": 2053,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberLocation": "7654:6:1",
                                                "memberName": "sender",
                                                "nodeType": "MemberAccess",
                                                "src": "7650:10:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "nodeType": "IndexAccess",
                                            "src": "7637:24:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "id": 2055,
                                            "name": "result",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2036,
                                            "src": "7664:6:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "7637:33:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "id": 2057,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7637:33:1"
                                },
                                {
                                    "eventCall": {
                                        "arguments": [
                                            {
                                                "expression": {
                                                    "id": 2059,
                                                    "name": "msg",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 4294967281,
                                                    "src": "7696:3:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_magic_message",
                                                        "typeString": "msg"
                                                    }
                                                },
                                                "id": 2060,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberLocation": "7700:6:1",
                                                "memberName": "sender",
                                                "nodeType": "MemberAccess",
                                                "src": "7696:10:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "id": 2061,
                                                "name": "amount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2000,
                                                "src": "7708:6:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "id": 2058,
                                            "name": "Deposited",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1573,
                                            "src": "7686:9:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                                "typeString": "function (address,uint256)"
                                            }
                                        },
                                        "id": 2062,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "7686:29:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 2063,
                                    "nodeType": "EmitStatement",
                                    "src": "7681:34:1"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 1998,
                            "nodeType": "StructuredDocumentation",
                            "src": "6975:125:1",
                            "text": " @notice Deposits USDC tokens into the contract.\n @param amount The amount of USDC tokens to deposit."
                        },
                        "functionSelector": "2357928e",
                        "id": 2065,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [
                            {
                                "arguments": [
                                    {
                                        "id": 2003,
                                        "name": "amount",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2000,
                                        "src": "7166:6:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    }
                                ],
                                "id": 2004,
                                "kind": "modifierInvocation",
                                "modifierName": {
                                    "id": 2002,
                                    "name": "checkAllowance",
                                    "nameLocations": ["7151:14:1"],
                                    "nodeType": "IdentifierPath",
                                    "referencedDeclaration": 1703,
                                    "src": "7151:14:1"
                                },
                                "nodeType": "ModifierInvocation",
                                "src": "7151:22:1"
                            }
                        ],
                        "name": "depositUsdc",
                        "nameLocation": "7114:11:1",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 2001,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 2000,
                                    "mutability": "mutable",
                                    "name": "amount",
                                    "nameLocation": "7134:6:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 2065,
                                    "src": "7126:14:1",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 1999,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "7126:7:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "7125:16:1"
                        },
                        "returnParameters": {
                            "id": 2005,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "7174:0:1"
                        },
                        "scope": 2657,
                        "src": "7105:617:1",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "body": {
                            "id": 2150,
                            "nodeType": "Block",
                            "src": "7903:825:1",
                            "statements": [
                                {
                                    "assignments": [2073],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 2073,
                                            "mutability": "mutable",
                                            "name": "token",
                                            "nameLocation": "7920:5:1",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 2150,
                                            "src": "7913:12:1",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_IERC20_$3789",
                                                "typeString": "contract IERC20"
                                            },
                                            "typeName": {
                                                "id": 2072,
                                                "nodeType": "UserDefinedTypeName",
                                                "pathNode": {
                                                    "id": 2071,
                                                    "name": "IERC20",
                                                    "nameLocations": ["7913:6:1"],
                                                    "nodeType": "IdentifierPath",
                                                    "referencedDeclaration": 3789,
                                                    "src": "7913:6:1"
                                                },
                                                "referencedDeclaration": 3789,
                                                "src": "7913:6:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_IERC20_$3789",
                                                    "typeString": "contract IERC20"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 2078,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "expression": {
                                                    "id": 2075,
                                                    "name": "cardConfig",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 1594,
                                                    "src": "7935:10:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_CardConfig_$1532_storage",
                                                        "typeString": "struct ZebecCard.CardConfig storage ref"
                                                    }
                                                },
                                                "id": 2076,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberLocation": "7946:11:1",
                                                "memberName": "usdcAddress",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 1525,
                                                "src": "7935:22:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            ],
                                            "id": 2074,
                                            "name": "IERC20",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3789,
                                            "src": "7928:6:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_contract$_IERC20_$3789_$",
                                                "typeString": "type(contract IERC20)"
                                            }
                                        },
                                        "id": 2077,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "7928:30:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IERC20_$3789",
                                            "typeString": "contract IERC20"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "7913:45:1"
                                },
                                {
                                    "assignments": [2080],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 2080,
                                            "mutability": "mutable",
                                            "name": "user",
                                            "nameLocation": "7976:4:1",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 2150,
                                            "src": "7968:12:1",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            },
                                            "typeName": {
                                                "id": 2079,
                                                "name": "address",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "7968:7:1",
                                                "stateMutability": "nonpayable",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 2083,
                                    "initialValue": {
                                        "expression": {
                                            "id": 2081,
                                            "name": "msg",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4294967281,
                                            "src": "7983:3:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_magic_message",
                                                "typeString": "msg"
                                            }
                                        },
                                        "id": 2082,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberLocation": "7987:6:1",
                                        "memberName": "sender",
                                        "nodeType": "MemberAccess",
                                        "src": "7983:10:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "7968:25:1"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "commonType": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "id": 2087,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "id": 2085,
                                                    "name": "amount",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 2068,
                                                    "src": "8044:6:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "!=",
                                                "rightExpression": {
                                                    "hexValue": "30",
                                                    "id": 2086,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "8054:1:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_rational_0_by_1",
                                                        "typeString": "int_const 0"
                                                    },
                                                    "value": "0"
                                                },
                                                "src": "8044:11:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            {
                                                "hexValue": "496e76616c696420616d6f756e74",
                                                "id": 2088,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "8057:16:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_2fd1dfd944df9898ee4c79794168926172c3d96d7664ff9919bb7080bb018af1",
                                                    "typeString": "literal_string \"Invalid amount\""
                                                },
                                                "value": "Invalid amount"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                {
                                                    "typeIdentifier": "t_stringliteral_2fd1dfd944df9898ee4c79794168926172c3d96d7664ff9919bb7080bb018af1",
                                                    "typeString": "literal_string \"Invalid amount\""
                                                }
                                            ],
                                            "id": 2084,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [4294967278, 4294967278],
                                            "referencedDeclaration": 4294967278,
                                            "src": "8036:7:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (bool,string memory) pure"
                                            }
                                        },
                                        "id": 2089,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "8036:38:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 2090,
                                    "nodeType": "ExpressionStatement",
                                    "src": "8036:38:1"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "commonType": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "id": 2097,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "id": 2092,
                                                    "name": "user",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 2080,
                                                    "src": "8127:4:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "!=",
                                                "rightExpression": {
                                                    "arguments": [
                                                        {
                                                            "hexValue": "30",
                                                            "id": 2095,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "number",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "8143:1:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_rational_0_by_1",
                                                                "typeString": "int_const 0"
                                                            },
                                                            "value": "0"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_rational_0_by_1",
                                                                "typeString": "int_const 0"
                                                            }
                                                        ],
                                                        "id": 2094,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "lValueRequested": false,
                                                        "nodeType": "ElementaryTypeNameExpression",
                                                        "src": "8135:7:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_address_$",
                                                            "typeString": "type(address)"
                                                        },
                                                        "typeName": {
                                                            "id": 2093,
                                                            "name": "address",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "8135:7:1",
                                                            "typeDescriptions": {}
                                                        }
                                                    },
                                                    "id": 2096,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "typeConversion",
                                                    "lValueRequested": false,
                                                    "nameLocations": [],
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "8135:10:1",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "src": "8127:18:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            {
                                                "hexValue": "496e76616c69642061646472657373",
                                                "id": 2098,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "8147:17:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_1462473b7a4b33d32b109b815fd2324d00c9e5839b707ecf16d0ab5744f99226",
                                                    "typeString": "literal_string \"Invalid address\""
                                                },
                                                "value": "Invalid address"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                {
                                                    "typeIdentifier": "t_stringliteral_1462473b7a4b33d32b109b815fd2324d00c9e5839b707ecf16d0ab5744f99226",
                                                    "typeString": "literal_string \"Invalid address\""
                                                }
                                            ],
                                            "id": 2091,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [4294967278, 4294967278],
                                            "referencedDeclaration": 4294967278,
                                            "src": "8119:7:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (bool,string memory) pure"
                                            }
                                        },
                                        "id": 2099,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "8119:46:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 2100,
                                    "nodeType": "ExpressionStatement",
                                    "src": "8119:46:1"
                                },
                                {
                                    "assignments": [2102],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 2102,
                                            "mutability": "mutable",
                                            "name": "userBalance",
                                            "nameLocation": "8184:11:1",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 2150,
                                            "src": "8176:19:1",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 2101,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "8176:7:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 2106,
                                    "initialValue": {
                                        "baseExpression": {
                                            "id": 2103,
                                            "name": "cardBalances",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1607,
                                            "src": "8198:12:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                "typeString": "mapping(address => uint256)"
                                            }
                                        },
                                        "id": 2105,
                                        "indexExpression": {
                                            "id": 2104,
                                            "name": "user",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2080,
                                            "src": "8211:4:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "8198:18:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "8176:40:1"
                                },
                                {
                                    "condition": {
                                        "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        },
                                        "id": 2109,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "id": 2107,
                                            "name": "userBalance",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2102,
                                            "src": "8230:11:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "<",
                                        "rightExpression": {
                                            "id": 2108,
                                            "name": "amount",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2068,
                                            "src": "8244:6:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "8230:20:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "id": 2116,
                                    "nodeType": "IfStatement",
                                    "src": "8226:176:1",
                                    "trueBody": {
                                        "id": 2115,
                                        "nodeType": "Block",
                                        "src": "8252:150:1",
                                        "statements": [
                                            {
                                                "errorCall": {
                                                    "arguments": [
                                                        {
                                                            "id": 2111,
                                                            "name": "amount",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2068,
                                                            "src": "8325:6:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "id": 2112,
                                                            "name": "userBalance",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2102,
                                                            "src": "8365:11:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "id": 2110,
                                                        "name": "NotEnoughBalance",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1591,
                                                        "src": "8273:16:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$",
                                                            "typeString": "function (uint256,uint256) pure"
                                                        }
                                                    },
                                                    "id": 2113,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "nameLocations": ["8308:15:1", "8349:14:1"],
                                                    "names": ["requiredBalance", "currentBalance"],
                                                    "nodeType": "FunctionCall",
                                                    "src": "8273:118:1",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 2114,
                                                "nodeType": "RevertStatement",
                                                "src": "8266:125:1"
                                            }
                                        ]
                                    }
                                },
                                {
                                    "assignments": [2118, 2120],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 2118,
                                            "mutability": "mutable",
                                            "name": "overflowFlag",
                                            "nameLocation": "8418:12:1",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 2150,
                                            "src": "8413:17:1",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                            },
                                            "typeName": {
                                                "id": 2117,
                                                "name": "bool",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "8413:4:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            "visibility": "internal"
                                        },
                                        {
                                            "constant": false,
                                            "id": 2120,
                                            "mutability": "mutable",
                                            "name": "result",
                                            "nameLocation": "8440:6:1",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 2150,
                                            "src": "8432:14:1",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 2119,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "8432:7:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 2126,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "id": 2123,
                                                "name": "userBalance",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2102,
                                                "src": "8462:11:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            {
                                                "id": 2124,
                                                "name": "amount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2068,
                                                "src": "8475:6:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "expression": {
                                                "id": 2121,
                                                "name": "Math",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 5532,
                                                "src": "8450:4:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_contract$_Math_$5532_$",
                                                    "typeString": "type(library Math)"
                                                }
                                            },
                                            "id": 2122,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberLocation": "8455:6:1",
                                            "memberName": "trySub",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 4549,
                                            "src": "8450:11:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$",
                                                "typeString": "function (uint256,uint256) pure returns (bool,uint256)"
                                            }
                                        },
                                        "id": 2125,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "8450:32:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$",
                                            "typeString": "tuple(bool,uint256)"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "8412:70:1"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "id": 2128,
                                                "name": "overflowFlag",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2118,
                                                "src": "8566:12:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            {
                                                "hexValue": "41726974686d65746963204f766572666c6f7721",
                                                "id": 2129,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "8580:22:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_22bbdbaba5bf1ef3e8b5a4120dcfce10aa8ebcde5f8193765f5d73796292e276",
                                                    "typeString": "literal_string \"Arithmetic Overflow!\""
                                                },
                                                "value": "Arithmetic Overflow!"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                {
                                                    "typeIdentifier": "t_stringliteral_22bbdbaba5bf1ef3e8b5a4120dcfce10aa8ebcde5f8193765f5d73796292e276",
                                                    "typeString": "literal_string \"Arithmetic Overflow!\""
                                                }
                                            ],
                                            "id": 2127,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [4294967278, 4294967278],
                                            "referencedDeclaration": 4294967278,
                                            "src": "8558:7:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (bool,string memory) pure"
                                            }
                                        },
                                        "id": 2130,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "8558:45:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 2131,
                                    "nodeType": "ExpressionStatement",
                                    "src": "8558:45:1"
                                },
                                {
                                    "expression": {
                                        "id": 2136,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "baseExpression": {
                                                "id": 2132,
                                                "name": "cardBalances",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1607,
                                                "src": "8613:12:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                    "typeString": "mapping(address => uint256)"
                                                }
                                            },
                                            "id": 2134,
                                            "indexExpression": {
                                                "id": 2133,
                                                "name": "user",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2080,
                                                "src": "8626:4:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "nodeType": "IndexAccess",
                                            "src": "8613:18:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "id": 2135,
                                            "name": "result",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2120,
                                            "src": "8634:6:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "8613:27:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "id": 2137,
                                    "nodeType": "ExpressionStatement",
                                    "src": "8613:27:1"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "id": 2141,
                                                "name": "user",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2080,
                                                "src": "8669:4:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "id": 2142,
                                                "name": "amount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2068,
                                                "src": "8675:6:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "expression": {
                                                "id": 2138,
                                                "name": "token",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2073,
                                                "src": "8650:5:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_IERC20_$3789",
                                                    "typeString": "contract IERC20"
                                                }
                                            },
                                            "id": 2140,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberLocation": "8656:12:1",
                                            "memberName": "safeTransfer",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 3875,
                                            "src": "8650:18:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$3789_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$3789_$",
                                                "typeString": "function (contract IERC20,address,uint256)"
                                            }
                                        },
                                        "id": 2143,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "8650:32:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 2144,
                                    "nodeType": "ExpressionStatement",
                                    "src": "8650:32:1"
                                },
                                {
                                    "eventCall": {
                                        "arguments": [
                                            {
                                                "id": 2146,
                                                "name": "user",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2080,
                                                "src": "8708:4:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "id": 2147,
                                                "name": "amount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2068,
                                                "src": "8714:6:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "id": 2145,
                                            "name": "Withdrawn",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1579,
                                            "src": "8698:9:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                                "typeString": "function (address,uint256)"
                                            }
                                        },
                                        "id": 2148,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "8698:23:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 2149,
                                    "nodeType": "EmitStatement",
                                    "src": "8693:28:1"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 2066,
                            "nodeType": "StructuredDocumentation",
                            "src": "7728:127:1",
                            "text": " @notice Withdraws USDC tokens from the contract.\n @param amount The amount of USDC tokens to withdraw."
                        },
                        "functionSelector": "2e1a7d4d",
                        "id": 2151,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "withdraw",
                        "nameLocation": "7869:8:1",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 2069,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 2068,
                                    "mutability": "mutable",
                                    "name": "amount",
                                    "nameLocation": "7886:6:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 2151,
                                    "src": "7878:14:1",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 2067,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "7878:7:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "7877:16:1"
                        },
                        "returnParameters": {
                            "id": 2070,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "7903:0:1"
                        },
                        "scope": 2657,
                        "src": "7860:868:1",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "body": {
                            "id": 2406,
                            "nodeType": "Block",
                            "src": "8976:3676:1",
                            "statements": [
                                {
                                    "assignments": [2161],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 2161,
                                            "mutability": "mutable",
                                            "name": "token",
                                            "nameLocation": "8993:5:1",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 2406,
                                            "src": "8986:12:1",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_IERC20_$3789",
                                                "typeString": "contract IERC20"
                                            },
                                            "typeName": {
                                                "id": 2160,
                                                "nodeType": "UserDefinedTypeName",
                                                "pathNode": {
                                                    "id": 2159,
                                                    "name": "IERC20",
                                                    "nameLocations": ["8986:6:1"],
                                                    "nodeType": "IdentifierPath",
                                                    "referencedDeclaration": 3789,
                                                    "src": "8986:6:1"
                                                },
                                                "referencedDeclaration": 3789,
                                                "src": "8986:6:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_IERC20_$3789",
                                                    "typeString": "contract IERC20"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 2166,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "expression": {
                                                    "id": 2163,
                                                    "name": "cardConfig",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 1594,
                                                    "src": "9008:10:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_CardConfig_$1532_storage",
                                                        "typeString": "struct ZebecCard.CardConfig storage ref"
                                                    }
                                                },
                                                "id": 2164,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberLocation": "9019:11:1",
                                                "memberName": "usdcAddress",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 1525,
                                                "src": "9008:22:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            ],
                                            "id": 2162,
                                            "name": "IERC20",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3789,
                                            "src": "9001:6:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_contract$_IERC20_$3789_$",
                                                "typeString": "type(contract IERC20)"
                                            }
                                        },
                                        "id": 2165,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "9001:30:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IERC20_$3789",
                                            "typeString": "contract IERC20"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "8986:45:1"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "commonType": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "id": 2174,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "expression": {
                                                        "id": 2168,
                                                        "name": "msg",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4294967281,
                                                        "src": "9083:3:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_magic_message",
                                                            "typeString": "msg"
                                                        }
                                                    },
                                                    "id": 2169,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberLocation": "9087:6:1",
                                                    "memberName": "sender",
                                                    "nodeType": "MemberAccess",
                                                    "src": "9083:10:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "!=",
                                                "rightExpression": {
                                                    "arguments": [
                                                        {
                                                            "hexValue": "30",
                                                            "id": 2172,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "number",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "9105:1:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_rational_0_by_1",
                                                                "typeString": "int_const 0"
                                                            },
                                                            "value": "0"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_rational_0_by_1",
                                                                "typeString": "int_const 0"
                                                            }
                                                        ],
                                                        "id": 2171,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "lValueRequested": false,
                                                        "nodeType": "ElementaryTypeNameExpression",
                                                        "src": "9097:7:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_address_$",
                                                            "typeString": "type(address)"
                                                        },
                                                        "typeName": {
                                                            "id": 2170,
                                                            "name": "address",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "9097:7:1",
                                                            "typeDescriptions": {}
                                                        }
                                                    },
                                                    "id": 2173,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "typeConversion",
                                                    "lValueRequested": false,
                                                    "nameLocations": [],
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "9097:10:1",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "src": "9083:24:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            {
                                                "hexValue": "496e76616c69642061646472657373",
                                                "id": 2175,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "9109:17:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_1462473b7a4b33d32b109b815fd2324d00c9e5839b707ecf16d0ab5744f99226",
                                                    "typeString": "literal_string \"Invalid address\""
                                                },
                                                "value": "Invalid address"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                {
                                                    "typeIdentifier": "t_stringliteral_1462473b7a4b33d32b109b815fd2324d00c9e5839b707ecf16d0ab5744f99226",
                                                    "typeString": "literal_string \"Invalid address\""
                                                }
                                            ],
                                            "id": 2167,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [4294967278, 4294967278],
                                            "referencedDeclaration": 4294967278,
                                            "src": "9075:7:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (bool,string memory) pure"
                                            }
                                        },
                                        "id": 2176,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "9075:52:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 2177,
                                    "nodeType": "ExpressionStatement",
                                    "src": "9075:52:1"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "commonType": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "id": 2187,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 2182,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 2179,
                                                        "name": "amount",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2154,
                                                        "src": "9226:6:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": ">=",
                                                    "rightExpression": {
                                                        "expression": {
                                                            "id": 2180,
                                                            "name": "cardConfig",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1594,
                                                            "src": "9236:10:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_CardConfig_$1532_storage",
                                                                "typeString": "struct ZebecCard.CardConfig storage ref"
                                                            }
                                                        },
                                                        "id": 2181,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberLocation": "9247:13:1",
                                                        "memberName": "minCardAmount",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 1527,
                                                        "src": "9236:24:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "9226:34:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "&&",
                                                "rightExpression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 2186,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 2183,
                                                        "name": "amount",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2154,
                                                        "src": "9280:6:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "<=",
                                                    "rightExpression": {
                                                        "expression": {
                                                            "id": 2184,
                                                            "name": "cardConfig",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1594,
                                                            "src": "9290:10:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_CardConfig_$1532_storage",
                                                                "typeString": "struct ZebecCard.CardConfig storage ref"
                                                            }
                                                        },
                                                        "id": 2185,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberLocation": "9301:13:1",
                                                        "memberName": "maxCardAmount",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 1529,
                                                        "src": "9290:24:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "9280:34:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "src": "9226:88:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            {
                                                "hexValue": "416d6f756e74206e6f742077697468696e20627579696e672072616e676521",
                                                "id": 2188,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "9328:33:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_fe646b968c6ec83af81ccdb93dd13ea258a9985d098e6bd438bd6ff26cfa5a11",
                                                    "typeString": "literal_string \"Amount not within buying range!\""
                                                },
                                                "value": "Amount not within buying range!"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                {
                                                    "typeIdentifier": "t_stringliteral_fe646b968c6ec83af81ccdb93dd13ea258a9985d098e6bd438bd6ff26cfa5a11",
                                                    "typeString": "literal_string \"Amount not within buying range!\""
                                                }
                                            ],
                                            "id": 2178,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [4294967278, 4294967278],
                                            "referencedDeclaration": 4294967278,
                                            "src": "9205:7:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (bool,string memory) pure"
                                            }
                                        },
                                        "id": 2189,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "9205:166:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 2190,
                                    "nodeType": "ExpressionStatement",
                                    "src": "9205:166:1"
                                },
                                {
                                    "condition": {
                                        "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        },
                                        "id": 2196,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "baseExpression": {
                                                "id": 2191,
                                                "name": "cardBalances",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1607,
                                                "src": "9446:12:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                    "typeString": "mapping(address => uint256)"
                                                }
                                            },
                                            "id": 2194,
                                            "indexExpression": {
                                                "expression": {
                                                    "id": 2192,
                                                    "name": "msg",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 4294967281,
                                                    "src": "9459:3:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_magic_message",
                                                        "typeString": "msg"
                                                    }
                                                },
                                                "id": 2193,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberLocation": "9463:6:1",
                                                "memberName": "sender",
                                                "nodeType": "MemberAccess",
                                                "src": "9459:10:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "9446:24:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "<",
                                        "rightExpression": {
                                            "id": 2195,
                                            "name": "amount",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2154,
                                            "src": "9473:6:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "9446:33:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "id": 2206,
                                    "nodeType": "IfStatement",
                                    "src": "9442:202:1",
                                    "trueBody": {
                                        "id": 2205,
                                        "nodeType": "Block",
                                        "src": "9481:163:1",
                                        "statements": [
                                            {
                                                "errorCall": {
                                                    "arguments": [
                                                        {
                                                            "id": 2198,
                                                            "name": "amount",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2154,
                                                            "src": "9554:6:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "baseExpression": {
                                                                "id": 2199,
                                                                "name": "cardBalances",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1607,
                                                                "src": "9594:12:1",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                                    "typeString": "mapping(address => uint256)"
                                                                }
                                                            },
                                                            "id": 2202,
                                                            "indexExpression": {
                                                                "expression": {
                                                                    "id": 2200,
                                                                    "name": "msg",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 4294967281,
                                                                    "src": "9607:3:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_magic_message",
                                                                        "typeString": "msg"
                                                                    }
                                                                },
                                                                "id": 2201,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberLocation": "9611:6:1",
                                                                "memberName": "sender",
                                                                "nodeType": "MemberAccess",
                                                                "src": "9607:10:1",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "IndexAccess",
                                                            "src": "9594:24:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "id": 2197,
                                                        "name": "NotEnoughBalance",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1591,
                                                        "src": "9502:16:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$",
                                                            "typeString": "function (uint256,uint256) pure"
                                                        }
                                                    },
                                                    "id": 2203,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "nameLocations": ["9537:15:1", "9578:14:1"],
                                                    "names": ["requiredBalance", "currentBalance"],
                                                    "nodeType": "FunctionCall",
                                                    "src": "9502:131:1",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 2204,
                                                "nodeType": "RevertStatement",
                                                "src": "9495:138:1"
                                            }
                                        ]
                                    }
                                },
                                {
                                    "assignments": [2208],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 2208,
                                            "mutability": "mutable",
                                            "name": "revenueFee",
                                            "nameLocation": "9700:10:1",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 2406,
                                            "src": "9692:18:1",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 2207,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "9692:7:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 2212,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "id": 2210,
                                                "name": "amount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2154,
                                                "src": "9720:6:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "id": 2209,
                                            "name": "getFee",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1748,
                                            "src": "9713:6:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                                                "typeString": "function (uint256) view returns (uint256)"
                                            }
                                        },
                                        "id": 2211,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "9713:14:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "9692:35:1"
                                },
                                {
                                    "assignments": [2214],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 2214,
                                            "mutability": "mutable",
                                            "name": "revenueAmount",
                                            "nameLocation": "9745:13:1",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 2406,
                                            "src": "9737:21:1",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 2213,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "9737:7:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 2221,
                                    "initialValue": {
                                        "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        },
                                        "id": 2220,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "components": [
                                                {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 2217,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 2215,
                                                        "name": "amount",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2154,
                                                        "src": "9762:6:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "*",
                                                    "rightExpression": {
                                                        "id": 2216,
                                                        "name": "revenueFee",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2208,
                                                        "src": "9771:10:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "9762:19:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                }
                                            ],
                                            "id": 2218,
                                            "isConstant": false,
                                            "isInlineArray": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "TupleExpression",
                                            "src": "9761:21:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "/",
                                        "rightExpression": {
                                            "hexValue": "3130303030",
                                            "id": 2219,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "9785:5:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_rational_10000_by_1",
                                                "typeString": "int_const 10000"
                                            },
                                            "value": "10000"
                                        },
                                        "src": "9761:29:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "9737:53:1"
                                },
                                {
                                    "assignments": [2223, 2225],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 2223,
                                            "mutability": "mutable",
                                            "name": "overflowFlag",
                                            "nameLocation": "9842:12:1",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 2406,
                                            "src": "9837:17:1",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                            },
                                            "typeName": {
                                                "id": 2222,
                                                "name": "bool",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "9837:4:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            "visibility": "internal"
                                        },
                                        {
                                            "constant": false,
                                            "id": 2225,
                                            "mutability": "mutable",
                                            "name": "cardAmount",
                                            "nameLocation": "9864:10:1",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 2406,
                                            "src": "9856:18:1",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 2224,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "9856:7:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 2231,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "id": 2228,
                                                "name": "amount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2154,
                                                "src": "9903:6:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            {
                                                "id": 2229,
                                                "name": "revenueAmount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2214,
                                                "src": "9923:13:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "expression": {
                                                "id": 2226,
                                                "name": "Math",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 5532,
                                                "src": "9878:4:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_contract$_Math_$5532_$",
                                                    "typeString": "type(library Math)"
                                                }
                                            },
                                            "id": 2227,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberLocation": "9883:6:1",
                                            "memberName": "trySub",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 4549,
                                            "src": "9878:11:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$",
                                                "typeString": "function (uint256,uint256) pure returns (bool,uint256)"
                                            }
                                        },
                                        "id": 2230,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "9878:68:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$",
                                            "typeString": "tuple(bool,uint256)"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "9836:110:1"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "id": 2233,
                                                "name": "overflowFlag",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2223,
                                                "src": "9964:12:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            {
                                                "hexValue": "41726974686d65746963204f766572666c6f7721",
                                                "id": 2234,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "9978:22:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_22bbdbaba5bf1ef3e8b5a4120dcfce10aa8ebcde5f8193765f5d73796292e276",
                                                    "typeString": "literal_string \"Arithmetic Overflow!\""
                                                },
                                                "value": "Arithmetic Overflow!"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                {
                                                    "typeIdentifier": "t_stringliteral_22bbdbaba5bf1ef3e8b5a4120dcfce10aa8ebcde5f8193765f5d73796292e276",
                                                    "typeString": "literal_string \"Arithmetic Overflow!\""
                                                }
                                            ],
                                            "id": 2232,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [4294967278, 4294967278],
                                            "referencedDeclaration": 4294967278,
                                            "src": "9956:7:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (bool,string memory) pure"
                                            }
                                        },
                                        "id": 2235,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "9956:45:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 2236,
                                    "nodeType": "ExpressionStatement",
                                    "src": "9956:45:1"
                                },
                                {
                                    "assignments": [2238, 2240],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 2238,
                                            "mutability": "mutable",
                                            "name": "__overflowFlag",
                                            "nameLocation": "10060:14:1",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 2406,
                                            "src": "10055:19:1",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                            },
                                            "typeName": {
                                                "id": 2237,
                                                "name": "bool",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "10055:4:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            "visibility": "internal"
                                        },
                                        {
                                            "constant": false,
                                            "id": 2240,
                                            "mutability": "mutable",
                                            "name": "_result",
                                            "nameLocation": "10084:7:1",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 2406,
                                            "src": "10076:15:1",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 2239,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "10076:7:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 2249,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "baseExpression": {
                                                    "id": 2243,
                                                    "name": "cardBalances",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 1607,
                                                    "src": "10120:12:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                        "typeString": "mapping(address => uint256)"
                                                    }
                                                },
                                                "id": 2246,
                                                "indexExpression": {
                                                    "expression": {
                                                        "id": 2244,
                                                        "name": "msg",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4294967281,
                                                        "src": "10133:3:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_magic_message",
                                                            "typeString": "msg"
                                                        }
                                                    },
                                                    "id": 2245,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberLocation": "10137:6:1",
                                                    "memberName": "sender",
                                                    "nodeType": "MemberAccess",
                                                    "src": "10133:10:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "IndexAccess",
                                                "src": "10120:24:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            {
                                                "id": 2247,
                                                "name": "amount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2154,
                                                "src": "10158:6:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "expression": {
                                                "id": 2241,
                                                "name": "Math",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 5532,
                                                "src": "10095:4:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_contract$_Math_$5532_$",
                                                    "typeString": "type(library Math)"
                                                }
                                            },
                                            "id": 2242,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberLocation": "10100:6:1",
                                            "memberName": "trySub",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 4549,
                                            "src": "10095:11:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$",
                                                "typeString": "function (uint256,uint256) pure returns (bool,uint256)"
                                            }
                                        },
                                        "id": 2248,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "10095:79:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$",
                                            "typeString": "tuple(bool,uint256)"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "10054:120:1"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "id": 2251,
                                                "name": "__overflowFlag",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2238,
                                                "src": "10192:14:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            {
                                                "hexValue": "41726974686d65746963204f766572666c6f7721",
                                                "id": 2252,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "10208:22:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_22bbdbaba5bf1ef3e8b5a4120dcfce10aa8ebcde5f8193765f5d73796292e276",
                                                    "typeString": "literal_string \"Arithmetic Overflow!\""
                                                },
                                                "value": "Arithmetic Overflow!"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                {
                                                    "typeIdentifier": "t_stringliteral_22bbdbaba5bf1ef3e8b5a4120dcfce10aa8ebcde5f8193765f5d73796292e276",
                                                    "typeString": "literal_string \"Arithmetic Overflow!\""
                                                }
                                            ],
                                            "id": 2250,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [4294967278, 4294967278],
                                            "referencedDeclaration": 4294967278,
                                            "src": "10184:7:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (bool,string memory) pure"
                                            }
                                        },
                                        "id": 2253,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "10184:47:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 2254,
                                    "nodeType": "ExpressionStatement",
                                    "src": "10184:47:1"
                                },
                                {
                                    "expression": {
                                        "id": 2260,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "baseExpression": {
                                                "id": 2255,
                                                "name": "cardBalances",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1607,
                                                "src": "10241:12:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                    "typeString": "mapping(address => uint256)"
                                                }
                                            },
                                            "id": 2258,
                                            "indexExpression": {
                                                "expression": {
                                                    "id": 2256,
                                                    "name": "msg",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 4294967281,
                                                    "src": "10254:3:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_magic_message",
                                                        "typeString": "msg"
                                                    }
                                                },
                                                "id": 2257,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberLocation": "10258:6:1",
                                                "memberName": "sender",
                                                "nodeType": "MemberAccess",
                                                "src": "10254:10:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "nodeType": "IndexAccess",
                                            "src": "10241:24:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "id": 2259,
                                            "name": "_result",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2240,
                                            "src": "10268:7:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "10241:34:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "id": 2261,
                                    "nodeType": "ExpressionStatement",
                                    "src": "10241:34:1"
                                },
                                {
                                    "expression": {
                                        "id": 2265,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "UnaryOperation",
                                        "operator": "++",
                                        "prefix": false,
                                        "src": "10286:20:1",
                                        "subExpression": {
                                            "expression": {
                                                "id": 2262,
                                                "name": "cardConfig",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1594,
                                                "src": "10286:10:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_CardConfig_$1532_storage",
                                                    "typeString": "struct ZebecCard.CardConfig storage ref"
                                                }
                                            },
                                            "id": 2264,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "memberLocation": "10297:7:1",
                                            "memberName": "counter",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 1519,
                                            "src": "10286:18:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "id": 2266,
                                    "nodeType": "ExpressionStatement",
                                    "src": "10286:20:1"
                                },
                                {
                                    "assignments": [2268],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 2268,
                                            "mutability": "mutable",
                                            "name": "unix_now",
                                            "nameLocation": "10324:8:1",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 2406,
                                            "src": "10316:16:1",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 2267,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "10316:7:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 2269,
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "10316:16:1"
                                },
                                {
                                    "assignments": [2271],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 2271,
                                            "mutability": "mutable",
                                            "name": "amount_1",
                                            "nameLocation": "10350:8:1",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 2406,
                                            "src": "10342:16:1",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 2270,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "10342:7:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 2273,
                                    "initialValue": {
                                        "id": 2272,
                                        "name": "amount",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2154,
                                        "src": "10361:6:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "10342:25:1"
                                },
                                {
                                    "id": 2367,
                                    "nodeType": "Block",
                                    "src": "10410:1659:1",
                                    "statements": [
                                        {
                                            "expression": {
                                                "id": 2277,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftHandSide": {
                                                    "id": 2274,
                                                    "name": "unix_now",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 2268,
                                                    "src": "10483:8:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "Assignment",
                                                "operator": "=",
                                                "rightHandSide": {
                                                    "expression": {
                                                        "id": 2275,
                                                        "name": "block",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4294967292,
                                                        "src": "10494:5:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_magic_block",
                                                            "typeString": "block"
                                                        }
                                                    },
                                                    "id": 2276,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberLocation": "10500:9:1",
                                                    "memberName": "timestamp",
                                                    "nodeType": "MemberAccess",
                                                    "src": "10494:15:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "src": "10483:26:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "id": 2278,
                                            "nodeType": "ExpressionStatement",
                                            "src": "10483:26:1"
                                        },
                                        {
                                            "assignments": [2280, 2282, 2284],
                                            "declarations": [
                                                {
                                                    "constant": false,
                                                    "id": 2280,
                                                    "mutability": "mutable",
                                                    "name": "year_now",
                                                    "nameLocation": "10549:8:1",
                                                    "nodeType": "VariableDeclaration",
                                                    "scope": 2367,
                                                    "src": "10541:16:1",
                                                    "stateVariable": false,
                                                    "storageLocation": "default",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "typeName": {
                                                        "id": 2279,
                                                        "name": "uint256",
                                                        "nodeType": "ElementaryTypeName",
                                                        "src": "10541:7:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "visibility": "internal"
                                                },
                                                {
                                                    "constant": false,
                                                    "id": 2282,
                                                    "mutability": "mutable",
                                                    "name": "month_now",
                                                    "nameLocation": "10583:9:1",
                                                    "nodeType": "VariableDeclaration",
                                                    "scope": 2367,
                                                    "src": "10575:17:1",
                                                    "stateVariable": false,
                                                    "storageLocation": "default",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "typeName": {
                                                        "id": 2281,
                                                        "name": "uint256",
                                                        "nodeType": "ElementaryTypeName",
                                                        "src": "10575:7:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "visibility": "internal"
                                                },
                                                {
                                                    "constant": false,
                                                    "id": 2284,
                                                    "mutability": "mutable",
                                                    "name": "day_now",
                                                    "nameLocation": "10618:7:1",
                                                    "nodeType": "VariableDeclaration",
                                                    "scope": 2367,
                                                    "src": "10610:15:1",
                                                    "stateVariable": false,
                                                    "storageLocation": "default",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "typeName": {
                                                        "id": 2283,
                                                        "name": "uint256",
                                                        "nodeType": "ElementaryTypeName",
                                                        "src": "10610:7:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "visibility": "internal"
                                                }
                                            ],
                                            "id": 2289,
                                            "initialValue": {
                                                "arguments": [
                                                    {
                                                        "id": 2287,
                                                        "name": "unix_now",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2268,
                                                        "src": "10686:8:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "id": 2285,
                                                        "name": "BokkyPooBahsDateTimeLibrary",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1483,
                                                        "src": "10642:27:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_contract$_BokkyPooBahsDateTimeLibrary_$1483_$",
                                                            "typeString": "type(library BokkyPooBahsDateTimeLibrary)"
                                                        }
                                                    },
                                                    "id": 2286,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberLocation": "10670:15:1",
                                                    "memberName": "timestampToDate",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 369,
                                                    "src": "10642:43:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$_t_uint256_$_t_uint256_$",
                                                        "typeString": "function (uint256) pure returns (uint256,uint256,uint256)"
                                                    }
                                                },
                                                "id": 2288,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "nameLocations": [],
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "10642:53:1",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$",
                                                    "typeString": "tuple(uint256,uint256,uint256)"
                                                }
                                            },
                                            "nodeType": "VariableDeclarationStatement",
                                            "src": "10523:172:1"
                                        },
                                        {
                                            "assignments": [2291, 2293, 2295],
                                            "declarations": [
                                                {
                                                    "constant": false,
                                                    "id": 2291,
                                                    "mutability": "mutable",
                                                    "name": "year_from_record",
                                                    "nameLocation": "10766:16:1",
                                                    "nodeType": "VariableDeclaration",
                                                    "scope": 2367,
                                                    "src": "10758:24:1",
                                                    "stateVariable": false,
                                                    "storageLocation": "default",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "typeName": {
                                                        "id": 2290,
                                                        "name": "uint256",
                                                        "nodeType": "ElementaryTypeName",
                                                        "src": "10758:7:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "visibility": "internal"
                                                },
                                                {
                                                    "constant": false,
                                                    "id": 2293,
                                                    "mutability": "mutable",
                                                    "name": "month_from_record",
                                                    "nameLocation": "10808:17:1",
                                                    "nodeType": "VariableDeclaration",
                                                    "scope": 2367,
                                                    "src": "10800:25:1",
                                                    "stateVariable": false,
                                                    "storageLocation": "default",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "typeName": {
                                                        "id": 2292,
                                                        "name": "uint256",
                                                        "nodeType": "ElementaryTypeName",
                                                        "src": "10800:7:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "visibility": "internal"
                                                },
                                                {
                                                    "constant": false,
                                                    "id": 2295,
                                                    "mutability": "mutable",
                                                    "name": "day_from_record",
                                                    "nameLocation": "10851:15:1",
                                                    "nodeType": "VariableDeclaration",
                                                    "scope": 2367,
                                                    "src": "10843:23:1",
                                                    "stateVariable": false,
                                                    "storageLocation": "default",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "typeName": {
                                                        "id": 2294,
                                                        "name": "uint256",
                                                        "nodeType": "ElementaryTypeName",
                                                        "src": "10843:7:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "visibility": "internal"
                                                }
                                            ],
                                            "id": 2304,
                                            "initialValue": {
                                                "arguments": [
                                                    {
                                                        "expression": {
                                                            "baseExpression": {
                                                                "id": 2298,
                                                                "name": "cardPurchases",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1603,
                                                                "src": "10948:13:1",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_mapping$_t_address_$_t_struct$_CardPurchase_$1537_storage_$",
                                                                    "typeString": "mapping(address => struct ZebecCard.CardPurchase storage ref)"
                                                                }
                                                            },
                                                            "id": 2301,
                                                            "indexExpression": {
                                                                "expression": {
                                                                    "id": 2299,
                                                                    "name": "msg",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 4294967281,
                                                                    "src": "10962:3:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_magic_message",
                                                                        "typeString": "msg"
                                                                    }
                                                                },
                                                                "id": 2300,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberLocation": "10966:6:1",
                                                                "memberName": "sender",
                                                                "nodeType": "MemberAccess",
                                                                "src": "10962:10:1",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "IndexAccess",
                                                            "src": "10948:25:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_CardPurchase_$1537_storage",
                                                                "typeString": "struct ZebecCard.CardPurchase storage ref"
                                                            }
                                                        },
                                                        "id": 2302,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberLocation": "10974:12:1",
                                                        "memberName": "unixInRecord",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 1534,
                                                        "src": "10948:38:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "id": 2296,
                                                        "name": "BokkyPooBahsDateTimeLibrary",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1483,
                                                        "src": "10883:27:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_contract$_BokkyPooBahsDateTimeLibrary_$1483_$",
                                                            "typeString": "type(library BokkyPooBahsDateTimeLibrary)"
                                                        }
                                                    },
                                                    "id": 2297,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberLocation": "10911:15:1",
                                                    "memberName": "timestampToDate",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 369,
                                                    "src": "10883:43:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$_t_uint256_$_t_uint256_$",
                                                        "typeString": "function (uint256) pure returns (uint256,uint256,uint256)"
                                                    }
                                                },
                                                "id": 2303,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "nameLocations": [],
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "10883:121:1",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$",
                                                    "typeString": "tuple(uint256,uint256,uint256)"
                                                }
                                            },
                                            "nodeType": "VariableDeclarationStatement",
                                            "src": "10740:264:1"
                                        },
                                        {
                                            "assignments": [2306],
                                            "declarations": [
                                                {
                                                    "constant": false,
                                                    "id": 2306,
                                                    "mutability": "mutable",
                                                    "name": "isSameDate",
                                                    "nameLocation": "11085:10:1",
                                                    "nodeType": "VariableDeclaration",
                                                    "scope": 2367,
                                                    "src": "11080:15:1",
                                                    "stateVariable": false,
                                                    "storageLocation": "default",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    },
                                                    "typeName": {
                                                        "id": 2305,
                                                        "name": "bool",
                                                        "nodeType": "ElementaryTypeName",
                                                        "src": "11080:4:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        }
                                                    },
                                                    "visibility": "internal"
                                                }
                                            ],
                                            "id": 2319,
                                            "initialValue": {
                                                "components": [
                                                    {
                                                        "commonType": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        },
                                                        "id": 2317,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "commonType": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            "id": 2313,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                "id": 2309,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "id": 2307,
                                                                    "name": "year_now",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 2280,
                                                                    "src": "11099:8:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "==",
                                                                "rightExpression": {
                                                                    "id": 2308,
                                                                    "name": "year_from_record",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 2291,
                                                                    "src": "11111:16:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "src": "11099:28:1",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "&&",
                                                            "rightExpression": {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                "id": 2312,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "id": 2310,
                                                                    "name": "month_now",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 2282,
                                                                    "src": "11147:9:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "==",
                                                                "rightExpression": {
                                                                    "id": 2311,
                                                                    "name": "month_from_record",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 2293,
                                                                    "src": "11160:17:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "src": "11147:30:1",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                }
                                                            },
                                                            "src": "11099:78:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "&&",
                                                        "rightExpression": {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 2316,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 2314,
                                                                "name": "day_now",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 2284,
                                                                "src": "11197:7:1",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "==",
                                                            "rightExpression": {
                                                                "id": 2315,
                                                                "name": "day_from_record",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 2295,
                                                                "src": "11208:15:1",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "src": "11197:26:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        "src": "11099:124:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        }
                                                    }
                                                ],
                                                "id": 2318,
                                                "isConstant": false,
                                                "isInlineArray": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "TupleExpression",
                                                "src": "11098:126:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            "nodeType": "VariableDeclarationStatement",
                                            "src": "11080:144:1"
                                        },
                                        {
                                            "condition": {
                                                "id": 2320,
                                                "name": "isSameDate",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2306,
                                                "src": "11242:10:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            "falseBody": {
                                                "id": 2365,
                                                "nodeType": "Block",
                                                "src": "11773:286:1",
                                                "statements": [
                                                    {
                                                        "expression": {
                                                            "id": 2355,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftHandSide": {
                                                                "expression": {
                                                                    "baseExpression": {
                                                                        "id": 2349,
                                                                        "name": "cardPurchases",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 1603,
                                                                        "src": "11871:13:1",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_CardPurchase_$1537_storage_$",
                                                                            "typeString": "mapping(address => struct ZebecCard.CardPurchase storage ref)"
                                                                        }
                                                                    },
                                                                    "id": 2352,
                                                                    "indexExpression": {
                                                                        "expression": {
                                                                            "id": 2350,
                                                                            "name": "msg",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 4294967281,
                                                                            "src": "11885:3:1",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_magic_message",
                                                                                "typeString": "msg"
                                                                            }
                                                                        },
                                                                        "id": 2351,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberLocation": "11889:6:1",
                                                                        "memberName": "sender",
                                                                        "nodeType": "MemberAccess",
                                                                        "src": "11885:10:1",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    },
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "IndexAccess",
                                                                    "src": "11871:25:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_struct$_CardPurchase_$1537_storage",
                                                                        "typeString": "struct ZebecCard.CardPurchase storage ref"
                                                                    }
                                                                },
                                                                "id": 2353,
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": true,
                                                                "memberLocation": "11897:12:1",
                                                                "memberName": "unixInRecord",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 1534,
                                                                "src": "11871:38:1",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "Assignment",
                                                            "operator": "=",
                                                            "rightHandSide": {
                                                                "id": 2354,
                                                                "name": "unix_now",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 2268,
                                                                "src": "11912:8:1",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "src": "11871:49:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "id": 2356,
                                                        "nodeType": "ExpressionStatement",
                                                        "src": "11871:49:1"
                                                    },
                                                    {
                                                        "expression": {
                                                            "id": 2363,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftHandSide": {
                                                                "expression": {
                                                                    "baseExpression": {
                                                                        "id": 2357,
                                                                        "name": "cardPurchases",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 1603,
                                                                        "src": "11986:13:1",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_CardPurchase_$1537_storage_$",
                                                                            "typeString": "mapping(address => struct ZebecCard.CardPurchase storage ref)"
                                                                        }
                                                                    },
                                                                    "id": 2360,
                                                                    "indexExpression": {
                                                                        "expression": {
                                                                            "id": 2358,
                                                                            "name": "msg",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 4294967281,
                                                                            "src": "12000:3:1",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_magic_message",
                                                                                "typeString": "msg"
                                                                            }
                                                                        },
                                                                        "id": 2359,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberLocation": "12004:6:1",
                                                                        "memberName": "sender",
                                                                        "nodeType": "MemberAccess",
                                                                        "src": "12000:10:1",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    },
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "IndexAccess",
                                                                    "src": "11986:25:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_struct$_CardPurchase_$1537_storage",
                                                                        "typeString": "struct ZebecCard.CardPurchase storage ref"
                                                                    }
                                                                },
                                                                "id": 2361,
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": true,
                                                                "memberLocation": "12012:21:1",
                                                                "memberName": "totalCardBoughtPerDay",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 1536,
                                                                "src": "11986:47:1",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "Assignment",
                                                            "operator": "=",
                                                            "rightHandSide": {
                                                                "id": 2362,
                                                                "name": "amount_1",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 2271,
                                                                "src": "12036:8:1",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "src": "11986:58:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "id": 2364,
                                                        "nodeType": "ExpressionStatement",
                                                        "src": "11986:58:1"
                                                    }
                                                ]
                                            },
                                            "id": 2366,
                                            "nodeType": "IfStatement",
                                            "src": "11238:821:1",
                                            "trueBody": {
                                                "id": 2348,
                                                "nodeType": "Block",
                                                "src": "11254:513:1",
                                                "statements": [
                                                    {
                                                        "assignments": [2322, 2324],
                                                        "declarations": [
                                                            {
                                                                "constant": false,
                                                                "id": 2322,
                                                                "mutability": "mutable",
                                                                "name": "_overflowFlag",
                                                                "nameLocation": "11377:13:1",
                                                                "nodeType": "VariableDeclaration",
                                                                "scope": 2348,
                                                                "src": "11372:18:1",
                                                                "stateVariable": false,
                                                                "storageLocation": "default",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                },
                                                                "typeName": {
                                                                    "id": 2321,
                                                                    "name": "bool",
                                                                    "nodeType": "ElementaryTypeName",
                                                                    "src": "11372:4:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bool",
                                                                        "typeString": "bool"
                                                                    }
                                                                },
                                                                "visibility": "internal"
                                                            },
                                                            {
                                                                "constant": false,
                                                                "id": 2324,
                                                                "mutability": "mutable",
                                                                "name": "result",
                                                                "nameLocation": "11400:6:1",
                                                                "nodeType": "VariableDeclaration",
                                                                "scope": 2348,
                                                                "src": "11392:14:1",
                                                                "stateVariable": false,
                                                                "storageLocation": "default",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                "typeName": {
                                                                    "id": 2323,
                                                                    "name": "uint256",
                                                                    "nodeType": "ElementaryTypeName",
                                                                    "src": "11392:7:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "visibility": "internal"
                                                            }
                                                        ],
                                                        "id": 2334,
                                                        "initialValue": {
                                                            "arguments": [
                                                                {
                                                                    "expression": {
                                                                        "baseExpression": {
                                                                            "id": 2327,
                                                                            "name": "cardPurchases",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 1603,
                                                                            "src": "11443:13:1",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_CardPurchase_$1537_storage_$",
                                                                                "typeString": "mapping(address => struct ZebecCard.CardPurchase storage ref)"
                                                                            }
                                                                        },
                                                                        "id": 2330,
                                                                        "indexExpression": {
                                                                            "expression": {
                                                                                "id": 2328,
                                                                                "name": "msg",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 4294967281,
                                                                                "src": "11457:3:1",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_magic_message",
                                                                                    "typeString": "msg"
                                                                                }
                                                                            },
                                                                            "id": 2329,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "memberLocation": "11461:6:1",
                                                                            "memberName": "sender",
                                                                            "nodeType": "MemberAccess",
                                                                            "src": "11457:10:1",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_address",
                                                                                "typeString": "address"
                                                                            }
                                                                        },
                                                                        "isConstant": false,
                                                                        "isLValue": true,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "nodeType": "IndexAccess",
                                                                        "src": "11443:25:1",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_struct$_CardPurchase_$1537_storage",
                                                                            "typeString": "struct ZebecCard.CardPurchase storage ref"
                                                                        }
                                                                    },
                                                                    "id": 2331,
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberLocation": "11469:21:1",
                                                                    "memberName": "totalCardBoughtPerDay",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 1536,
                                                                    "src": "11443:47:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                {
                                                                    "id": 2332,
                                                                    "name": "amount_1",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 2271,
                                                                    "src": "11512:8:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    },
                                                                    {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "id": 2325,
                                                                    "name": "Math",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 5532,
                                                                    "src": "11410:4:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_contract$_Math_$5532_$",
                                                                        "typeString": "type(library Math)"
                                                                    }
                                                                },
                                                                "id": 2326,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberLocation": "11415:6:1",
                                                                "memberName": "tryAdd",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 4521,
                                                                "src": "11410:11:1",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$",
                                                                    "typeString": "function (uint256,uint256) pure returns (bool,uint256)"
                                                                }
                                                            },
                                                            "id": 2333,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "nameLocations": [],
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "11410:128:1",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$",
                                                                "typeString": "tuple(bool,uint256)"
                                                            }
                                                        },
                                                        "nodeType": "VariableDeclarationStatement",
                                                        "src": "11371:167:1"
                                                    },
                                                    {
                                                        "expression": {
                                                            "arguments": [
                                                                {
                                                                    "id": 2336,
                                                                    "name": "_overflowFlag",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 2322,
                                                                    "src": "11640:13:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bool",
                                                                        "typeString": "bool"
                                                                    }
                                                                },
                                                                {
                                                                    "hexValue": "41726974686d65746963204f766572666c6f7721",
                                                                    "id": 2337,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "string",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "11655:22:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_stringliteral_22bbdbaba5bf1ef3e8b5a4120dcfce10aa8ebcde5f8193765f5d73796292e276",
                                                                        "typeString": "literal_string \"Arithmetic Overflow!\""
                                                                    },
                                                                    "value": "Arithmetic Overflow!"
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_bool",
                                                                        "typeString": "bool"
                                                                    },
                                                                    {
                                                                        "typeIdentifier": "t_stringliteral_22bbdbaba5bf1ef3e8b5a4120dcfce10aa8ebcde5f8193765f5d73796292e276",
                                                                        "typeString": "literal_string \"Arithmetic Overflow!\""
                                                                    }
                                                                ],
                                                                "id": 2335,
                                                                "name": "require",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [4294967278, 4294967278],
                                                                "referencedDeclaration": 4294967278,
                                                                "src": "11632:7:1",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                                    "typeString": "function (bool,string memory) pure"
                                                                }
                                                            },
                                                            "id": 2338,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "nameLocations": [],
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "11632:46:1",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_tuple$__$",
                                                                "typeString": "tuple()"
                                                            }
                                                        },
                                                        "id": 2339,
                                                        "nodeType": "ExpressionStatement",
                                                        "src": "11632:46:1"
                                                    },
                                                    {
                                                        "expression": {
                                                            "id": 2346,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftHandSide": {
                                                                "expression": {
                                                                    "baseExpression": {
                                                                        "id": 2340,
                                                                        "name": "cardPurchases",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 1603,
                                                                        "src": "11696:13:1",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_CardPurchase_$1537_storage_$",
                                                                            "typeString": "mapping(address => struct ZebecCard.CardPurchase storage ref)"
                                                                        }
                                                                    },
                                                                    "id": 2343,
                                                                    "indexExpression": {
                                                                        "expression": {
                                                                            "id": 2341,
                                                                            "name": "msg",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 4294967281,
                                                                            "src": "11710:3:1",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_magic_message",
                                                                                "typeString": "msg"
                                                                            }
                                                                        },
                                                                        "id": 2342,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberLocation": "11714:6:1",
                                                                        "memberName": "sender",
                                                                        "nodeType": "MemberAccess",
                                                                        "src": "11710:10:1",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    },
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "IndexAccess",
                                                                    "src": "11696:25:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_struct$_CardPurchase_$1537_storage",
                                                                        "typeString": "struct ZebecCard.CardPurchase storage ref"
                                                                    }
                                                                },
                                                                "id": 2344,
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": true,
                                                                "memberLocation": "11722:21:1",
                                                                "memberName": "totalCardBoughtPerDay",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 1536,
                                                                "src": "11696:47:1",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "Assignment",
                                                            "operator": "=",
                                                            "rightHandSide": {
                                                                "id": 2345,
                                                                "name": "result",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 2324,
                                                                "src": "11746:6:1",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "src": "11696:56:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "id": 2347,
                                                        "nodeType": "ExpressionStatement",
                                                        "src": "11696:56:1"
                                                    }
                                                ]
                                            }
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "commonType": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "id": 2376,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "expression": {
                                                        "baseExpression": {
                                                            "id": 2369,
                                                            "name": "cardPurchases",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1603,
                                                            "src": "12165:13:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_CardPurchase_$1537_storage_$",
                                                                "typeString": "mapping(address => struct ZebecCard.CardPurchase storage ref)"
                                                            }
                                                        },
                                                        "id": 2372,
                                                        "indexExpression": {
                                                            "expression": {
                                                                "id": 2370,
                                                                "name": "msg",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 4294967281,
                                                                "src": "12179:3:1",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_magic_message",
                                                                    "typeString": "msg"
                                                                }
                                                            },
                                                            "id": 2371,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberLocation": "12183:6:1",
                                                            "memberName": "sender",
                                                            "nodeType": "MemberAccess",
                                                            "src": "12179:10:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "nodeType": "IndexAccess",
                                                        "src": "12165:25:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_struct$_CardPurchase_$1537_storage",
                                                            "typeString": "struct ZebecCard.CardPurchase storage ref"
                                                        }
                                                    },
                                                    "id": 2373,
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberLocation": "12191:21:1",
                                                    "memberName": "totalCardBoughtPerDay",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 1536,
                                                    "src": "12165:47:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "<=",
                                                "rightExpression": {
                                                    "expression": {
                                                        "id": 2374,
                                                        "name": "cardConfig",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1594,
                                                        "src": "12232:10:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_struct$_CardConfig_$1532_storage",
                                                            "typeString": "struct ZebecCard.CardConfig storage ref"
                                                        }
                                                    },
                                                    "id": 2375,
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberLocation": "12243:17:1",
                                                    "memberName": "dailyCardBuyLimit",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 1531,
                                                    "src": "12232:28:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "src": "12165:95:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            {
                                                "hexValue": "4461696c79204361726420427579204c696d697420457863656564656421",
                                                "id": 2377,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "12274:32:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_3efa3f5e5130aff250ba27e7dca4a0a2a23228af3ee77947af54a4d8ca0d96a6",
                                                    "typeString": "literal_string \"Daily Card Buy Limit Exceeded!\""
                                                },
                                                "value": "Daily Card Buy Limit Exceeded!"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                {
                                                    "typeIdentifier": "t_stringliteral_3efa3f5e5130aff250ba27e7dca4a0a2a23228af3ee77947af54a4d8ca0d96a6",
                                                    "typeString": "literal_string \"Daily Card Buy Limit Exceeded!\""
                                                }
                                            ],
                                            "id": 2368,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [4294967278, 4294967278],
                                            "referencedDeclaration": 4294967278,
                                            "src": "12144:7:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (bool,string memory) pure"
                                            }
                                        },
                                        "id": 2378,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "12144:172:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 2379,
                                    "nodeType": "ExpressionStatement",
                                    "src": "12144:172:1"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "expression": {
                                                    "id": 2383,
                                                    "name": "cardConfig",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 1594,
                                                    "src": "12384:10:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_CardConfig_$1532_storage",
                                                        "typeString": "struct ZebecCard.CardConfig storage ref"
                                                    }
                                                },
                                                "id": 2384,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberLocation": "12395:12:1",
                                                "memberName": "revenueVault",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 1523,
                                                "src": "12384:23:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "id": 2385,
                                                "name": "revenueAmount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2214,
                                                "src": "12409:13:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "expression": {
                                                "id": 2380,
                                                "name": "token",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2161,
                                                "src": "12365:5:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_IERC20_$3789",
                                                    "typeString": "contract IERC20"
                                                }
                                            },
                                            "id": 2382,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberLocation": "12371:12:1",
                                            "memberName": "safeTransfer",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 3875,
                                            "src": "12365:18:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$3789_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$3789_$",
                                                "typeString": "function (contract IERC20,address,uint256)"
                                            }
                                        },
                                        "id": 2386,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "12365:58:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 2387,
                                    "nodeType": "ExpressionStatement",
                                    "src": "12365:58:1"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "expression": {
                                                    "id": 2391,
                                                    "name": "cardConfig",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 1594,
                                                    "src": "12452:10:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_CardConfig_$1532_storage",
                                                        "typeString": "struct ZebecCard.CardConfig storage ref"
                                                    }
                                                },
                                                "id": 2392,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberLocation": "12463:9:1",
                                                "memberName": "cardVault",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 1521,
                                                "src": "12452:20:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "id": 2393,
                                                "name": "cardAmount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2225,
                                                "src": "12474:10:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "expression": {
                                                "id": 2388,
                                                "name": "token",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2161,
                                                "src": "12433:5:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_IERC20_$3789",
                                                    "typeString": "contract IERC20"
                                                }
                                            },
                                            "id": 2390,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberLocation": "12439:12:1",
                                            "memberName": "safeTransfer",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 3875,
                                            "src": "12433:18:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$3789_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$3789_$",
                                                "typeString": "function (contract IERC20,address,uint256)"
                                            }
                                        },
                                        "id": 2394,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "12433:52:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 2395,
                                    "nodeType": "ExpressionStatement",
                                    "src": "12433:52:1"
                                },
                                {
                                    "eventCall": {
                                        "arguments": [
                                            {
                                                "expression": {
                                                    "id": 2397,
                                                    "name": "msg",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 4294967281,
                                                    "src": "12528:3:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_magic_message",
                                                        "typeString": "msg"
                                                    }
                                                },
                                                "id": 2398,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberLocation": "12532:6:1",
                                                "memberName": "sender",
                                                "nodeType": "MemberAccess",
                                                "src": "12528:10:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "expression": {
                                                    "id": 2399,
                                                    "name": "cardConfig",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 1594,
                                                    "src": "12552:10:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_CardConfig_$1532_storage",
                                                        "typeString": "struct ZebecCard.CardConfig storage ref"
                                                    }
                                                },
                                                "id": 2400,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberLocation": "12563:7:1",
                                                "memberName": "counter",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 1519,
                                                "src": "12552:18:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            {
                                                "id": 2401,
                                                "name": "amount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2154,
                                                "src": "12584:6:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            {
                                                "id": 2402,
                                                "name": "userEmail",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2156,
                                                "src": "12604:9:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_string_memory_ptr",
                                                    "typeString": "string memory"
                                                }
                                            },
                                            {
                                                "id": 2403,
                                                "name": "unix_now",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2268,
                                                "src": "12627:8:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                {
                                                    "typeIdentifier": "t_string_memory_ptr",
                                                    "typeString": "string memory"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "id": 2396,
                                            "name": "CardPurchased",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1553,
                                            "src": "12501:13:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$_t_uint256_$returns$__$",
                                                "typeString": "function (address,uint256,uint256,string memory,uint256)"
                                            }
                                        },
                                        "id": 2404,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "12501:144:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 2405,
                                    "nodeType": "EmitStatement",
                                    "src": "12496:149:1"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 2152,
                            "nodeType": "StructuredDocumentation",
                            "src": "8734:170:1",
                            "text": " @notice Buys a card with USDC tokens.\n @param amount The amount of USDC tokens to use for the purchase.\n @param userEmail The user's email."
                        },
                        "functionSelector": "69a34653",
                        "id": 2407,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "buyCard",
                        "nameLocation": "8918:7:1",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 2157,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 2154,
                                    "mutability": "mutable",
                                    "name": "amount",
                                    "nameLocation": "8934:6:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 2407,
                                    "src": "8926:14:1",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 2153,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "8926:7:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 2156,
                                    "mutability": "mutable",
                                    "name": "userEmail",
                                    "nameLocation": "8956:9:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 2407,
                                    "src": "8942:23:1",
                                    "stateVariable": false,
                                    "storageLocation": "memory",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_string_memory_ptr",
                                        "typeString": "string"
                                    },
                                    "typeName": {
                                        "id": 2155,
                                        "name": "string",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "8942:6:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_string_storage_ptr",
                                            "typeString": "string"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "8925:41:1"
                        },
                        "returnParameters": {
                            "id": 2158,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "8976:0:1"
                        },
                        "scope": 2657,
                        "src": "8909:3743:1",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "body": {
                            "id": 2432,
                            "nodeType": "Block",
                            "src": "12868:139:1",
                            "statements": [
                                {
                                    "assignments": [2416, null],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 2416,
                                            "mutability": "mutable",
                                            "name": "success",
                                            "nameLocation": "12884:7:1",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 2432,
                                            "src": "12879:12:1",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                            },
                                            "typeName": {
                                                "id": 2415,
                                                "name": "bool",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "12879:4:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            "visibility": "internal"
                                        },
                                        null
                                    ],
                                    "id": 2426,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "hexValue": "30",
                                                        "id": 2423,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "12929:1:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_0_by_1",
                                                            "typeString": "int_const 0"
                                                        },
                                                        "value": "0"
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_rational_0_by_1",
                                                            "typeString": "int_const 0"
                                                        }
                                                    ],
                                                    "id": 2422,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "lValueRequested": false,
                                                    "nodeType": "NewExpression",
                                                    "src": "12919:9:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                                                        "typeString": "function (uint256) pure returns (bytes memory)"
                                                    },
                                                    "typeName": {
                                                        "id": 2421,
                                                        "name": "bytes",
                                                        "nodeType": "ElementaryTypeName",
                                                        "src": "12923:5:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes_storage_ptr",
                                                            "typeString": "bytes"
                                                        }
                                                    }
                                                },
                                                "id": 2424,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "nameLocations": [],
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "12919:12:1",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes memory"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes memory"
                                                }
                                            ],
                                            "expression": {
                                                "argumentTypes": [
                                                    {
                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                        "typeString": "bytes memory"
                                                    }
                                                ],
                                                "expression": {
                                                    "id": 2417,
                                                    "name": "to",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 2410,
                                                    "src": "12897:2:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "id": 2418,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberLocation": "12900:4:1",
                                                "memberName": "call",
                                                "nodeType": "MemberAccess",
                                                "src": "12897:7:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                                                    "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                                                }
                                            },
                                            "id": 2420,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "names": ["value"],
                                            "nodeType": "FunctionCallOptions",
                                            "options": [
                                                {
                                                    "id": 2419,
                                                    "name": "value",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 2412,
                                                    "src": "12912:5:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                }
                                            ],
                                            "src": "12897:21:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value",
                                                "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                                            }
                                        },
                                        "id": 2425,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "12897:35:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                                            "typeString": "tuple(bool,bytes memory)"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "12878:54:1"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "id": 2428,
                                                "name": "success",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2416,
                                                "src": "12950:7:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            {
                                                "hexValue": "5472616e7366657248656c7065723a204e41544956455f5452414e534645525f4641494c4544",
                                                "id": 2429,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "12959:40:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_4af27bdb1608603061bf1e5c0b06065f864837a240268008de1dd67c6363740f",
                                                    "typeString": "literal_string \"TransferHelper: NATIVE_TRANSFER_FAILED\""
                                                },
                                                "value": "TransferHelper: NATIVE_TRANSFER_FAILED"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                {
                                                    "typeIdentifier": "t_stringliteral_4af27bdb1608603061bf1e5c0b06065f864837a240268008de1dd67c6363740f",
                                                    "typeString": "literal_string \"TransferHelper: NATIVE_TRANSFER_FAILED\""
                                                }
                                            ],
                                            "id": 2427,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [4294967278, 4294967278],
                                            "referencedDeclaration": 4294967278,
                                            "src": "12942:7:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (bool,string memory) pure"
                                            }
                                        },
                                        "id": 2430,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "12942:58:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 2431,
                                    "nodeType": "ExpressionStatement",
                                    "src": "12942:58:1"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 2408,
                            "nodeType": "StructuredDocumentation",
                            "src": "12658:141:1",
                            "text": " @dev Transfers native tokens securely.\n @param to The recipient address.\n @param value The amount to transfer."
                        },
                        "id": 2433,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "_safeNativeTransfer",
                        "nameLocation": "12813:19:1",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 2413,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 2410,
                                    "mutability": "mutable",
                                    "name": "to",
                                    "nameLocation": "12841:2:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 2433,
                                    "src": "12833:10:1",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 2409,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "12833:7:1",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 2412,
                                    "mutability": "mutable",
                                    "name": "value",
                                    "nameLocation": "12853:5:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 2433,
                                    "src": "12845:13:1",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 2411,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "12845:7:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "12832:27:1"
                        },
                        "returnParameters": {
                            "id": 2414,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "12868:0:1"
                        },
                        "scope": 2657,
                        "src": "12804:203:1",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "private"
                    },
                    {
                        "body": {
                            "id": 2655,
                            "nodeType": "Block",
                            "src": "13248:2535:1",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "commonType": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "id": 2458,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "expression": {
                                                        "id": 2452,
                                                        "name": "data",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2448,
                                                        "src": "13366:4:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_struct$_SwapData_$2680_calldata_ptr",
                                                            "typeString": "struct ISmartRouter.SwapData calldata"
                                                        }
                                                    },
                                                    "id": 2453,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberLocation": "13371:2:1",
                                                    "memberName": "to",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 2677,
                                                    "src": "13366:7:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "==",
                                                "rightExpression": {
                                                    "arguments": [
                                                        {
                                                            "id": 2456,
                                                            "name": "this",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4294967268,
                                                            "src": "13385:4:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_contract$_ZebecCard_$2657",
                                                                "typeString": "contract ZebecCard"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_contract$_ZebecCard_$2657",
                                                                "typeString": "contract ZebecCard"
                                                            }
                                                        ],
                                                        "id": 2455,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "lValueRequested": false,
                                                        "nodeType": "ElementaryTypeNameExpression",
                                                        "src": "13377:7:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_address_$",
                                                            "typeString": "type(address)"
                                                        },
                                                        "typeName": {
                                                            "id": 2454,
                                                            "name": "address",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "13377:7:1",
                                                            "typeDescriptions": {}
                                                        }
                                                    },
                                                    "id": 2457,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "typeConversion",
                                                    "lValueRequested": false,
                                                    "nameLocations": [],
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "13377:13:1",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "src": "13366:24:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            {
                                                "hexValue": "496e76616c69642064657374696e6174696f6e207265636569766572",
                                                "id": 2459,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "13392:30:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_3e10922aaad66f4e7557cbeaf4d8d1d49ae931a0c9b7a486304601582adc60ea",
                                                    "typeString": "literal_string \"Invalid destination receiver\""
                                                },
                                                "value": "Invalid destination receiver"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                {
                                                    "typeIdentifier": "t_stringliteral_3e10922aaad66f4e7557cbeaf4d8d1d49ae931a0c9b7a486304601582adc60ea",
                                                    "typeString": "literal_string \"Invalid destination receiver\""
                                                }
                                            ],
                                            "id": 2451,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [4294967278, 4294967278],
                                            "referencedDeclaration": 4294967278,
                                            "src": "13358:7:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (bool,string memory) pure"
                                            }
                                        },
                                        "id": 2460,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "13358:65:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 2461,
                                    "nodeType": "ExpressionStatement",
                                    "src": "13358:65:1"
                                },
                                {
                                    "assignments": [2464],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 2464,
                                            "mutability": "mutable",
                                            "name": "srcToken",
                                            "nameLocation": "13441:8:1",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 2655,
                                            "src": "13434:15:1",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_IERC20_$3789",
                                                "typeString": "contract IERC20"
                                            },
                                            "typeName": {
                                                "id": 2463,
                                                "nodeType": "UserDefinedTypeName",
                                                "pathNode": {
                                                    "id": 2462,
                                                    "name": "IERC20",
                                                    "nameLocations": ["13434:6:1"],
                                                    "nodeType": "IdentifierPath",
                                                    "referencedDeclaration": 3789,
                                                    "src": "13434:6:1"
                                                },
                                                "referencedDeclaration": 3789,
                                                "src": "13434:6:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_IERC20_$3789",
                                                    "typeString": "contract IERC20"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 2473,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "baseExpression": {
                                                            "id": 2468,
                                                            "name": "path",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2436,
                                                            "src": "13467:4:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                                                "typeString": "address[] calldata"
                                                            }
                                                        },
                                                        "id": 2470,
                                                        "indexExpression": {
                                                            "hexValue": "30",
                                                            "id": 2469,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "number",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "13472:1:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_rational_0_by_1",
                                                                "typeString": "int_const 0"
                                                            },
                                                            "value": "0"
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "nodeType": "IndexAccess",
                                                        "src": "13467:7:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    ],
                                                    "id": 2467,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "lValueRequested": false,
                                                    "nodeType": "ElementaryTypeNameExpression",
                                                    "src": "13459:7:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_address_$",
                                                        "typeString": "type(address)"
                                                    },
                                                    "typeName": {
                                                        "id": 2466,
                                                        "name": "address",
                                                        "nodeType": "ElementaryTypeName",
                                                        "src": "13459:7:1",
                                                        "typeDescriptions": {}
                                                    }
                                                },
                                                "id": 2471,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "nameLocations": [],
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "13459:16:1",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            ],
                                            "id": 2465,
                                            "name": "IERC20",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3789,
                                            "src": "13452:6:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_contract$_IERC20_$3789_$",
                                                "typeString": "type(contract IERC20)"
                                            }
                                        },
                                        "id": 2472,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "13452:24:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IERC20_$3789",
                                            "typeString": "contract IERC20"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "13434:42:1"
                                },
                                {
                                    "assignments": [2475],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 2475,
                                            "mutability": "mutable",
                                            "name": "amountIn",
                                            "nameLocation": "13506:8:1",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 2655,
                                            "src": "13498:16:1",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 2474,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "13498:7:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 2478,
                                    "initialValue": {
                                        "expression": {
                                            "id": 2476,
                                            "name": "data",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2448,
                                            "src": "13517:4:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_SwapData_$2680_calldata_ptr",
                                                "typeString": "struct ISmartRouter.SwapData calldata"
                                            }
                                        },
                                        "id": 2477,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberLocation": "13522:8:1",
                                        "memberName": "amountIn",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 2673,
                                        "src": "13517:13:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "13498:32:1"
                                },
                                {
                                    "assignments": [2480],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 2480,
                                            "mutability": "mutable",
                                            "name": "isNotNative",
                                            "nameLocation": "13554:11:1",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 2655,
                                            "src": "13549:16:1",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                            },
                                            "typeName": {
                                                "id": 2479,
                                                "name": "bool",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "13549:4:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 2487,
                                    "initialValue": {
                                        "commonType": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        },
                                        "id": 2486,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "arguments": [
                                                {
                                                    "id": 2483,
                                                    "name": "srcToken",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 2464,
                                                    "src": "13576:8:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_contract$_IERC20_$3789",
                                                        "typeString": "contract IERC20"
                                                    }
                                                }
                                            ],
                                            "expression": {
                                                "argumentTypes": [
                                                    {
                                                        "typeIdentifier": "t_contract$_IERC20_$3789",
                                                        "typeString": "contract IERC20"
                                                    }
                                                ],
                                                "id": 2482,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "lValueRequested": false,
                                                "nodeType": "ElementaryTypeNameExpression",
                                                "src": "13568:7:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_address_$",
                                                    "typeString": "type(address)"
                                                },
                                                "typeName": {
                                                    "id": 2481,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "13568:7:1",
                                                    "typeDescriptions": {}
                                                }
                                            },
                                            "id": 2484,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "nameLocations": [],
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "13568:17:1",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "!=",
                                        "rightExpression": {
                                            "id": 2485,
                                            "name": "wTrx",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1598,
                                            "src": "13589:4:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "src": "13568:25:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "13549:44:1"
                                },
                                {
                                    "condition": {
                                        "id": 2488,
                                        "name": "isNotNative",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2480,
                                        "src": "13607:11:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "id": 2511,
                                    "nodeType": "IfStatement",
                                    "src": "13603:312:1",
                                    "trueBody": {
                                        "id": 2510,
                                        "nodeType": "Block",
                                        "src": "13620:295:1",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [],
                                                            "expression": {
                                                                "argumentTypes": [],
                                                                "id": 2492,
                                                                "name": "_msgSender",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 3370,
                                                                "src": "13677:10:1",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                                                    "typeString": "function () view returns (address)"
                                                                }
                                                            },
                                                            "id": 2493,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "nameLocations": [],
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "13677:12:1",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 2496,
                                                                    "name": "this",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 4294967268,
                                                                    "src": "13715:4:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_contract$_ZebecCard_$2657",
                                                                        "typeString": "contract ZebecCard"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_contract$_ZebecCard_$2657",
                                                                        "typeString": "contract ZebecCard"
                                                                    }
                                                                ],
                                                                "id": 2495,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "nodeType": "ElementaryTypeNameExpression",
                                                                "src": "13707:7:1",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_address_$",
                                                                    "typeString": "type(address)"
                                                                },
                                                                "typeName": {
                                                                    "id": 2494,
                                                                    "name": "address",
                                                                    "nodeType": "ElementaryTypeName",
                                                                    "src": "13707:7:1",
                                                                    "typeDescriptions": {}
                                                                }
                                                            },
                                                            "id": 2497,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "typeConversion",
                                                            "lValueRequested": false,
                                                            "nameLocations": [],
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "13707:13:1",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 2498,
                                                            "name": "amountIn",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2475,
                                                            "src": "13738:8:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "id": 2489,
                                                            "name": "srcToken",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2464,
                                                            "src": "13634:8:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_contract$_IERC20_$3789",
                                                                "typeString": "contract IERC20"
                                                            }
                                                        },
                                                        "id": 2491,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberLocation": "13643:16:1",
                                                        "memberName": "safeTransferFrom",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 3902,
                                                        "src": "13634:25:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$3789_$_t_address_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$3789_$",
                                                            "typeString": "function (contract IERC20,address,address,uint256)"
                                                        }
                                                    },
                                                    "id": 2499,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "nameLocations": [],
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "13634:126:1",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 2500,
                                                "nodeType": "ExpressionStatement",
                                                "src": "13634:126:1"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 2504,
                                                                    "name": "sunSwapRouter",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1596,
                                                                    "src": "13861:13:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                },
                                                                {
                                                                    "id": 2505,
                                                                    "name": "amountIn",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 2475,
                                                                    "src": "13875:8:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    },
                                                                    {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "id": 2502,
                                                                    "name": "srcToken",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 2464,
                                                                    "src": "13844:8:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_contract$_IERC20_$3789",
                                                                        "typeString": "contract IERC20"
                                                                    }
                                                                },
                                                                "id": 2503,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberLocation": "13853:7:1",
                                                                "memberName": "approve",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 3776,
                                                                "src": "13844:16:1",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                                                    "typeString": "function (address,uint256) external returns (bool)"
                                                                }
                                                            },
                                                            "id": 2506,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "nameLocations": [],
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "13844:40:1",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "417070726f76616c206661696c6564",
                                                            "id": 2507,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "13886:17:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_943d1e3eddd033b0757a7ad9dc3dff9f8f150c5b720d6ee708e13ac5fc8e5d07",
                                                                "typeString": "literal_string \"Approval failed\""
                                                            },
                                                            "value": "Approval failed"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_943d1e3eddd033b0757a7ad9dc3dff9f8f150c5b720d6ee708e13ac5fc8e5d07",
                                                                "typeString": "literal_string \"Approval failed\""
                                                            }
                                                        ],
                                                        "id": 2501,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [4294967278, 4294967278],
                                                        "referencedDeclaration": 4294967278,
                                                        "src": "13836:7:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 2508,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "nameLocations": [],
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "13836:68:1",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 2509,
                                                "nodeType": "ExpressionStatement",
                                                "src": "13836:68:1"
                                            }
                                        ]
                                    }
                                },
                                {
                                    "assignments": [2516],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 2516,
                                            "mutability": "mutable",
                                            "name": "amountsOut",
                                            "nameLocation": "13952:10:1",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 2655,
                                            "src": "13935:27:1",
                                            "stateVariable": false,
                                            "storageLocation": "memory",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                                "typeString": "uint256[]"
                                            },
                                            "typeName": {
                                                "baseType": {
                                                    "id": 2514,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "13935:7:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 2515,
                                                "nodeType": "ArrayTypeName",
                                                "src": "13935:9:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                                    "typeString": "uint256[]"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 2530,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "id": 2524,
                                                "name": "path",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2436,
                                                "src": "14026:4:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                                    "typeString": "address[] calldata"
                                                }
                                            },
                                            {
                                                "id": 2525,
                                                "name": "poolVersion",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2439,
                                                "src": "14032:11:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_string_calldata_ptr_$dyn_calldata_ptr",
                                                    "typeString": "string calldata[] calldata"
                                                }
                                            },
                                            {
                                                "id": 2526,
                                                "name": "versionLen",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2442,
                                                "src": "14045:10:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                                    "typeString": "uint256[] calldata"
                                                }
                                            },
                                            {
                                                "id": 2527,
                                                "name": "fees",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2445,
                                                "src": "14057:4:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_uint24_$dyn_calldata_ptr",
                                                    "typeString": "uint24[] calldata"
                                                }
                                            },
                                            {
                                                "id": 2528,
                                                "name": "data",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2448,
                                                "src": "14063:4:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_SwapData_$2680_calldata_ptr",
                                                    "typeString": "struct ISmartRouter.SwapData calldata"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                                    "typeString": "address[] calldata"
                                                },
                                                {
                                                    "typeIdentifier": "t_array$_t_string_calldata_ptr_$dyn_calldata_ptr",
                                                    "typeString": "string calldata[] calldata"
                                                },
                                                {
                                                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                                    "typeString": "uint256[] calldata"
                                                },
                                                {
                                                    "typeIdentifier": "t_array$_t_uint24_$dyn_calldata_ptr",
                                                    "typeString": "uint24[] calldata"
                                                },
                                                {
                                                    "typeIdentifier": "t_struct$_SwapData_$2680_calldata_ptr",
                                                    "typeString": "struct ISmartRouter.SwapData calldata"
                                                }
                                            ],
                                            "expression": {
                                                "argumentTypes": [
                                                    {
                                                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                                        "typeString": "address[] calldata"
                                                    },
                                                    {
                                                        "typeIdentifier": "t_array$_t_string_calldata_ptr_$dyn_calldata_ptr",
                                                        "typeString": "string calldata[] calldata"
                                                    },
                                                    {
                                                        "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                                        "typeString": "uint256[] calldata"
                                                    },
                                                    {
                                                        "typeIdentifier": "t_array$_t_uint24_$dyn_calldata_ptr",
                                                        "typeString": "uint24[] calldata"
                                                    },
                                                    {
                                                        "typeIdentifier": "t_struct$_SwapData_$2680_calldata_ptr",
                                                        "typeString": "struct ISmartRouter.SwapData calldata"
                                                    }
                                                ],
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 2518,
                                                            "name": "sunSwapRouter",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1596,
                                                            "src": "13979:13:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "id": 2517,
                                                        "name": "ISmartRouter",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2711,
                                                        "src": "13966:12:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_contract$_ISmartRouter_$2711_$",
                                                            "typeString": "type(contract ISmartRouter)"
                                                        }
                                                    },
                                                    "id": 2519,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "typeConversion",
                                                    "lValueRequested": false,
                                                    "nameLocations": [],
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "13966:27:1",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_contract$_ISmartRouter_$2711",
                                                        "typeString": "contract ISmartRouter"
                                                    }
                                                },
                                                "id": 2520,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberLocation": "13994:14:1",
                                                "memberName": "swapExactInput",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 2710,
                                                "src": "13966:42:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_function_external_payable$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_string_memory_ptr_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint24_$dyn_memory_ptr_$_t_struct$_SwapData_$2680_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                                    "typeString": "function (address[] memory,string memory[] memory,uint256[] memory,uint24[] memory,struct ISmartRouter.SwapData memory) payable external returns (uint256[] memory)"
                                                }
                                            },
                                            "id": 2523,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "names": ["value"],
                                            "nodeType": "FunctionCallOptions",
                                            "options": [
                                                {
                                                    "expression": {
                                                        "id": 2521,
                                                        "name": "msg",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4294967281,
                                                        "src": "14015:3:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_magic_message",
                                                            "typeString": "msg"
                                                        }
                                                    },
                                                    "id": 2522,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberLocation": "14019:5:1",
                                                    "memberName": "value",
                                                    "nodeType": "MemberAccess",
                                                    "src": "14015:9:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                }
                                            ],
                                            "src": "13966:59:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_external_payable$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_string_memory_ptr_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint24_$dyn_memory_ptr_$_t_struct$_SwapData_$2680_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$value",
                                                "typeString": "function (address[] memory,string memory[] memory,uint256[] memory,uint24[] memory,struct ISmartRouter.SwapData memory) payable external returns (uint256[] memory)"
                                            }
                                        },
                                        "id": 2529,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "13966:102:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                            "typeString": "uint256[] memory"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "13934:134:1"
                                },
                                {
                                    "body": {
                                        "id": 2552,
                                        "nodeType": "Block",
                                        "src": "14123:76:1",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "hexValue": "616d6f756e74734f75745b25645d3a202573",
                                                            "id": 2545,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "14149:20:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_2bf2ee424fc9a9e87fa13097dbe9f1726b57a6bbd7bd59a1aef1884347f47313",
                                                                "typeString": "literal_string \"amountsOut[%d]: %s\""
                                                            },
                                                            "value": "amountsOut[%d]: %s"
                                                        },
                                                        {
                                                            "id": 2546,
                                                            "name": "i",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2532,
                                                            "src": "14171:1:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "baseExpression": {
                                                                "id": 2547,
                                                                "name": "amountsOut",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 2516,
                                                                "src": "14174:10:1",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                                                    "typeString": "uint256[] memory"
                                                                }
                                                            },
                                                            "id": 2549,
                                                            "indexExpression": {
                                                                "id": 2548,
                                                                "name": "i",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 2532,
                                                                "src": "14185:1:1",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "IndexAccess",
                                                            "src": "14174:13:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_stringliteral_2bf2ee424fc9a9e87fa13097dbe9f1726b57a6bbd7bd59a1aef1884347f47313",
                                                                "typeString": "literal_string \"amountsOut[%d]: %s\""
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "id": 2542,
                                                            "name": "console",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 13596,
                                                            "src": "14137:7:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_contract$_console_$13596_$",
                                                                "typeString": "type(library console)"
                                                            }
                                                        },
                                                        "id": 2544,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberLocation": "14145:3:1",
                                                        "memberName": "log",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 6767,
                                                        "src": "14137:11:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$__$",
                                                            "typeString": "function (string memory,uint256,uint256) view"
                                                        }
                                                    },
                                                    "id": 2550,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "nameLocations": [],
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "14137:51:1",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 2551,
                                                "nodeType": "ExpressionStatement",
                                                "src": "14137:51:1"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        },
                                        "id": 2538,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "id": 2535,
                                            "name": "i",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2532,
                                            "src": "14095:1:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "<",
                                        "rightExpression": {
                                            "expression": {
                                                "id": 2536,
                                                "name": "amountsOut",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2516,
                                                "src": "14099:10:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                                    "typeString": "uint256[] memory"
                                                }
                                            },
                                            "id": 2537,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberLocation": "14110:6:1",
                                            "memberName": "length",
                                            "nodeType": "MemberAccess",
                                            "src": "14099:17:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "14095:21:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "id": 2553,
                                    "initializationExpression": {
                                        "assignments": [2532],
                                        "declarations": [
                                            {
                                                "constant": false,
                                                "id": 2532,
                                                "mutability": "mutable",
                                                "name": "i",
                                                "nameLocation": "14088:1:1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2553,
                                                "src": "14083:6:1",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 2531,
                                                    "name": "uint",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "14083:4:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "id": 2534,
                                        "initialValue": {
                                            "hexValue": "30",
                                            "id": 2533,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "14092:1:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_rational_0_by_1",
                                                "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                        },
                                        "nodeType": "VariableDeclarationStatement",
                                        "src": "14083:10:1"
                                    },
                                    "loopExpression": {
                                        "expression": {
                                            "id": 2540,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "UnaryOperation",
                                            "operator": "++",
                                            "prefix": false,
                                            "src": "14118:3:1",
                                            "subExpression": {
                                                "id": 2539,
                                                "name": "i",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2532,
                                                "src": "14118:1:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "id": 2541,
                                        "nodeType": "ExpressionStatement",
                                        "src": "14118:3:1"
                                    },
                                    "nodeType": "ForStatement",
                                    "src": "14078:121:1"
                                },
                                {
                                    "assignments": [2555],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 2555,
                                            "mutability": "mutable",
                                            "name": "amountOut",
                                            "nameLocation": "14216:9:1",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 2655,
                                            "src": "14208:17:1",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 2554,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "14208:7:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 2562,
                                    "initialValue": {
                                        "baseExpression": {
                                            "id": 2556,
                                            "name": "amountsOut",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2516,
                                            "src": "14228:10:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                                "typeString": "uint256[] memory"
                                            }
                                        },
                                        "id": 2561,
                                        "indexExpression": {
                                            "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "id": 2560,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                                "expression": {
                                                    "id": 2557,
                                                    "name": "amountsOut",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 2516,
                                                    "src": "14239:10:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                                        "typeString": "uint256[] memory"
                                                    }
                                                },
                                                "id": 2558,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberLocation": "14250:6:1",
                                                "memberName": "length",
                                                "nodeType": "MemberAccess",
                                                "src": "14239:17:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "-",
                                            "rightExpression": {
                                                "hexValue": "31",
                                                "id": 2559,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "14259:1:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_1_by_1",
                                                    "typeString": "int_const 1"
                                                },
                                                "value": "1"
                                            },
                                            "src": "14239:21:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "14228:33:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "14208:53:1"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "commonType": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "id": 2566,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "id": 2564,
                                                    "name": "amountOut",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 2555,
                                                    "src": "14279:9:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": ">",
                                                "rightExpression": {
                                                    "hexValue": "30",
                                                    "id": 2565,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "14291:1:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_rational_0_by_1",
                                                        "typeString": "int_const 0"
                                                    },
                                                    "value": "0"
                                                },
                                                "src": "14279:13:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            {
                                                "hexValue": "53776170206661696c6564",
                                                "id": 2567,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "14294:13:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_179799c46f636fb7268f34ab3b1b94bc88b91aaeefb7ef2027cbcce0bd669c69",
                                                    "typeString": "literal_string \"Swap failed\""
                                                },
                                                "value": "Swap failed"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                {
                                                    "typeIdentifier": "t_stringliteral_179799c46f636fb7268f34ab3b1b94bc88b91aaeefb7ef2027cbcce0bd669c69",
                                                    "typeString": "literal_string \"Swap failed\""
                                                }
                                            ],
                                            "id": 2563,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [4294967278, 4294967278],
                                            "referencedDeclaration": 4294967278,
                                            "src": "14271:7:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (bool,string memory) pure"
                                            }
                                        },
                                        "id": 2568,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "14271:37:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 2569,
                                    "nodeType": "ExpressionStatement",
                                    "src": "14271:37:1"
                                },
                                {
                                    "assignments": [2571],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 2571,
                                            "mutability": "mutable",
                                            "name": "fee",
                                            "nameLocation": "14937:3:1",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 2655,
                                            "src": "14929:11:1",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 2570,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "14929:7:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 2572,
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "14929:11:1"
                                },
                                {
                                    "assignments": [2574],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 2574,
                                            "mutability": "mutable",
                                            "name": "feeAmount",
                                            "nameLocation": "14959:9:1",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 2655,
                                            "src": "14951:17:1",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 2573,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "14951:7:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 2581,
                                    "initialValue": {
                                        "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        },
                                        "id": 2580,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "components": [
                                                {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 2577,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 2575,
                                                        "name": "amountOut",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2555,
                                                        "src": "14972:9:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "*",
                                                    "rightExpression": {
                                                        "id": 2576,
                                                        "name": "fee",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2571,
                                                        "src": "14984:3:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "14972:15:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                }
                                            ],
                                            "id": 2578,
                                            "isConstant": false,
                                            "isInlineArray": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "TupleExpression",
                                            "src": "14971:17:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "/",
                                        "rightExpression": {
                                            "hexValue": "3130303030",
                                            "id": 2579,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "14991:5:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_rational_10000_by_1",
                                                "typeString": "int_const 10000"
                                            },
                                            "value": "10000"
                                        },
                                        "src": "14971:25:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "14951:45:1"
                                },
                                {
                                    "assignments": [2583, 2585],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 2583,
                                            "mutability": "mutable",
                                            "name": "_overflowFlag",
                                            "nameLocation": "15012:13:1",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 2655,
                                            "src": "15007:18:1",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                            },
                                            "typeName": {
                                                "id": 2582,
                                                "name": "bool",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "15007:4:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            "visibility": "internal"
                                        },
                                        {
                                            "constant": false,
                                            "id": 2585,
                                            "mutability": "mutable",
                                            "name": "_result",
                                            "nameLocation": "15035:7:1",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 2655,
                                            "src": "15027:15:1",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 2584,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "15027:7:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 2591,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "id": 2588,
                                                "name": "amountOut",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2555,
                                                "src": "15058:9:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            {
                                                "id": 2589,
                                                "name": "feeAmount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2574,
                                                "src": "15069:9:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "expression": {
                                                "id": 2586,
                                                "name": "Math",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 5532,
                                                "src": "15046:4:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_contract$_Math_$5532_$",
                                                    "typeString": "type(library Math)"
                                                }
                                            },
                                            "id": 2587,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberLocation": "15051:6:1",
                                            "memberName": "trySub",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 4549,
                                            "src": "15046:11:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$",
                                                "typeString": "function (uint256,uint256) pure returns (bool,uint256)"
                                            }
                                        },
                                        "id": 2590,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "15046:33:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$",
                                            "typeString": "tuple(bool,uint256)"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "15006:73:1"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "id": 2593,
                                                "name": "_overflowFlag",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2583,
                                                "src": "15163:13:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            {
                                                "hexValue": "41726974686d65746963204f766572666c6f7721",
                                                "id": 2594,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "15178:22:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_22bbdbaba5bf1ef3e8b5a4120dcfce10aa8ebcde5f8193765f5d73796292e276",
                                                    "typeString": "literal_string \"Arithmetic Overflow!\""
                                                },
                                                "value": "Arithmetic Overflow!"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                {
                                                    "typeIdentifier": "t_stringliteral_22bbdbaba5bf1ef3e8b5a4120dcfce10aa8ebcde5f8193765f5d73796292e276",
                                                    "typeString": "literal_string \"Arithmetic Overflow!\""
                                                }
                                            ],
                                            "id": 2592,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [4294967278, 4294967278],
                                            "referencedDeclaration": 4294967278,
                                            "src": "15155:7:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (bool,string memory) pure"
                                            }
                                        },
                                        "id": 2595,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "15155:46:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 2596,
                                    "nodeType": "ExpressionStatement",
                                    "src": "15155:46:1"
                                },
                                {
                                    "assignments": [2598],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 2598,
                                            "mutability": "mutable",
                                            "name": "userAmount",
                                            "nameLocation": "15219:10:1",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 2655,
                                            "src": "15211:18:1",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 2597,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "15211:7:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 2600,
                                    "initialValue": {
                                        "id": 2599,
                                        "name": "_result",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2585,
                                        "src": "15232:7:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "15211:28:1"
                                },
                                {
                                    "assignments": [2603],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 2603,
                                            "mutability": "mutable",
                                            "name": "usdc",
                                            "nameLocation": "15303:4:1",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 2655,
                                            "src": "15296:11:1",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_IERC20_$3789",
                                                "typeString": "contract IERC20"
                                            },
                                            "typeName": {
                                                "id": 2602,
                                                "nodeType": "UserDefinedTypeName",
                                                "pathNode": {
                                                    "id": 2601,
                                                    "name": "IERC20",
                                                    "nameLocations": ["15296:6:1"],
                                                    "nodeType": "IdentifierPath",
                                                    "referencedDeclaration": 3789,
                                                    "src": "15296:6:1"
                                                },
                                                "referencedDeclaration": 3789,
                                                "src": "15296:6:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_IERC20_$3789",
                                                    "typeString": "contract IERC20"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 2608,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "expression": {
                                                    "id": 2605,
                                                    "name": "cardConfig",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 1594,
                                                    "src": "15317:10:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_CardConfig_$1532_storage",
                                                        "typeString": "struct ZebecCard.CardConfig storage ref"
                                                    }
                                                },
                                                "id": 2606,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberLocation": "15328:11:1",
                                                "memberName": "usdcAddress",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 1525,
                                                "src": "15317:22:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            ],
                                            "id": 2604,
                                            "name": "IERC20",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3789,
                                            "src": "15310:6:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_contract$_IERC20_$3789_$",
                                                "typeString": "type(contract IERC20)"
                                            }
                                        },
                                        "id": 2607,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "15310:30:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IERC20_$3789",
                                            "typeString": "contract IERC20"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "15296:44:1"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "expression": {
                                                    "id": 2612,
                                                    "name": "cardConfig",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 1594,
                                                    "src": "15368:10:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_CardConfig_$1532_storage",
                                                        "typeString": "struct ZebecCard.CardConfig storage ref"
                                                    }
                                                },
                                                "id": 2613,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberLocation": "15379:12:1",
                                                "memberName": "revenueVault",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 1523,
                                                "src": "15368:23:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "id": 2614,
                                                "name": "feeAmount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2574,
                                                "src": "15393:9:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "expression": {
                                                "id": 2609,
                                                "name": "usdc",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2603,
                                                "src": "15350:4:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_IERC20_$3789",
                                                    "typeString": "contract IERC20"
                                                }
                                            },
                                            "id": 2611,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberLocation": "15355:12:1",
                                            "memberName": "safeTransfer",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 3875,
                                            "src": "15350:17:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$3789_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$3789_$",
                                                "typeString": "function (contract IERC20,address,uint256)"
                                            }
                                        },
                                        "id": 2615,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "15350:53:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 2616,
                                    "nodeType": "ExpressionStatement",
                                    "src": "15350:53:1"
                                },
                                {
                                    "assignments": [2618, 2620],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 2618,
                                            "mutability": "mutable",
                                            "name": "__overflowFlag",
                                            "nameLocation": "15420:14:1",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 2655,
                                            "src": "15415:19:1",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                            },
                                            "typeName": {
                                                "id": 2617,
                                                "name": "bool",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "15415:4:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            "visibility": "internal"
                                        },
                                        {
                                            "constant": false,
                                            "id": 2620,
                                            "mutability": "mutable",
                                            "name": "__result",
                                            "nameLocation": "15444:8:1",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 2655,
                                            "src": "15436:16:1",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 2619,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "15436:7:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 2629,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "baseExpression": {
                                                    "id": 2623,
                                                    "name": "cardBalances",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 1607,
                                                    "src": "15468:12:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                        "typeString": "mapping(address => uint256)"
                                                    }
                                                },
                                                "id": 2626,
                                                "indexExpression": {
                                                    "arguments": [],
                                                    "expression": {
                                                        "argumentTypes": [],
                                                        "id": 2624,
                                                        "name": "_msgSender",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3370,
                                                        "src": "15481:10:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                                            "typeString": "function () view returns (address)"
                                                        }
                                                    },
                                                    "id": 2625,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "nameLocations": [],
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "15481:12:1",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "IndexAccess",
                                                "src": "15468:26:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            {
                                                "id": 2627,
                                                "name": "userAmount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2598,
                                                "src": "15496:10:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "expression": {
                                                "id": 2621,
                                                "name": "Math",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 5532,
                                                "src": "15456:4:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_contract$_Math_$5532_$",
                                                    "typeString": "type(library Math)"
                                                }
                                            },
                                            "id": 2622,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberLocation": "15461:6:1",
                                            "memberName": "tryAdd",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 4521,
                                            "src": "15456:11:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$",
                                                "typeString": "function (uint256,uint256) pure returns (bool,uint256)"
                                            }
                                        },
                                        "id": 2628,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "15456:51:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$",
                                            "typeString": "tuple(bool,uint256)"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "15414:93:1"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "id": 2631,
                                                "name": "__overflowFlag",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2618,
                                                "src": "15592:14:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            {
                                                "hexValue": "41726974686d65746963204f766572666c6f7721",
                                                "id": 2632,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "15608:22:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_22bbdbaba5bf1ef3e8b5a4120dcfce10aa8ebcde5f8193765f5d73796292e276",
                                                    "typeString": "literal_string \"Arithmetic Overflow!\""
                                                },
                                                "value": "Arithmetic Overflow!"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                {
                                                    "typeIdentifier": "t_stringliteral_22bbdbaba5bf1ef3e8b5a4120dcfce10aa8ebcde5f8193765f5d73796292e276",
                                                    "typeString": "literal_string \"Arithmetic Overflow!\""
                                                }
                                            ],
                                            "id": 2630,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [4294967278, 4294967278],
                                            "referencedDeclaration": 4294967278,
                                            "src": "15584:7:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (bool,string memory) pure"
                                            }
                                        },
                                        "id": 2633,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "15584:47:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 2634,
                                    "nodeType": "ExpressionStatement",
                                    "src": "15584:47:1"
                                },
                                {
                                    "expression": {
                                        "id": 2640,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "baseExpression": {
                                                "id": 2635,
                                                "name": "cardBalances",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1607,
                                                "src": "15641:12:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                    "typeString": "mapping(address => uint256)"
                                                }
                                            },
                                            "id": 2638,
                                            "indexExpression": {
                                                "arguments": [],
                                                "expression": {
                                                    "argumentTypes": [],
                                                    "id": 2636,
                                                    "name": "_msgSender",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 3370,
                                                    "src": "15654:10:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                                        "typeString": "function () view returns (address)"
                                                    }
                                                },
                                                "id": 2637,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "nameLocations": [],
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "15654:12:1",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "nodeType": "IndexAccess",
                                            "src": "15641:26:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "id": 2639,
                                            "name": "__result",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2620,
                                            "src": "15670:8:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "15641:37:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "id": 2641,
                                    "nodeType": "ExpressionStatement",
                                    "src": "15641:37:1"
                                },
                                {
                                    "eventCall": {
                                        "arguments": [
                                            {
                                                "arguments": [],
                                                "expression": {
                                                    "argumentTypes": [],
                                                    "id": 2643,
                                                    "name": "_msgSender",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 3370,
                                                    "src": "15702:10:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                                        "typeString": "function () view returns (address)"
                                                    }
                                                },
                                                "id": 2644,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "nameLocations": [],
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "15702:12:1",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "id": 2647,
                                                        "name": "srcToken",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2464,
                                                        "src": "15724:8:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_contract$_IERC20_$3789",
                                                            "typeString": "contract IERC20"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_contract$_IERC20_$3789",
                                                            "typeString": "contract IERC20"
                                                        }
                                                    ],
                                                    "id": 2646,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "lValueRequested": false,
                                                    "nodeType": "ElementaryTypeNameExpression",
                                                    "src": "15716:7:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_address_$",
                                                        "typeString": "type(address)"
                                                    },
                                                    "typeName": {
                                                        "id": 2645,
                                                        "name": "address",
                                                        "nodeType": "ElementaryTypeName",
                                                        "src": "15716:7:1",
                                                        "typeDescriptions": {}
                                                    }
                                                },
                                                "id": 2648,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "nameLocations": [],
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "15716:17:1",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "id": 2649,
                                                "name": "amountIn",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2475,
                                                "src": "15735:8:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            {
                                                "id": 2650,
                                                "name": "amountIn",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2475,
                                                "src": "15745:8:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            {
                                                "id": 2651,
                                                "name": "amountOut",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2555,
                                                "src": "15755:9:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            {
                                                "id": 2652,
                                                "name": "feeAmount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2574,
                                                "src": "15766:9:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "id": 2642,
                                            "name": "Swapped",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1567,
                                            "src": "15694:7:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                                                "typeString": "function (address,address,uint256,uint256,uint256,uint256)"
                                            }
                                        },
                                        "id": 2653,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "15694:82:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 2654,
                                    "nodeType": "EmitStatement",
                                    "src": "15689:87:1"
                                }
                            ]
                        },
                        "functionSelector": "ce82f2b3",
                        "id": 2656,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "swapAndDeposit",
                        "nameLocation": "13022:14:1",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 2449,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 2436,
                                    "mutability": "mutable",
                                    "name": "path",
                                    "nameLocation": "13065:4:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 2656,
                                    "src": "13046:23:1",
                                    "stateVariable": false,
                                    "storageLocation": "calldata",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                        "typeString": "address[]"
                                    },
                                    "typeName": {
                                        "baseType": {
                                            "id": 2434,
                                            "name": "address",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "13046:7:1",
                                            "stateMutability": "nonpayable",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "id": 2435,
                                        "nodeType": "ArrayTypeName",
                                        "src": "13046:9:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                            "typeString": "address[]"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 2439,
                                    "mutability": "mutable",
                                    "name": "poolVersion",
                                    "nameLocation": "13097:11:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 2656,
                                    "src": "13079:29:1",
                                    "stateVariable": false,
                                    "storageLocation": "calldata",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_string_calldata_ptr_$dyn_calldata_ptr",
                                        "typeString": "string[]"
                                    },
                                    "typeName": {
                                        "baseType": {
                                            "id": 2437,
                                            "name": "string",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "13079:6:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_string_storage_ptr",
                                                "typeString": "string"
                                            }
                                        },
                                        "id": 2438,
                                        "nodeType": "ArrayTypeName",
                                        "src": "13079:8:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr",
                                            "typeString": "string[]"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 2442,
                                    "mutability": "mutable",
                                    "name": "versionLen",
                                    "nameLocation": "13137:10:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 2656,
                                    "src": "13118:29:1",
                                    "stateVariable": false,
                                    "storageLocation": "calldata",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                        "typeString": "uint256[]"
                                    },
                                    "typeName": {
                                        "baseType": {
                                            "id": 2440,
                                            "name": "uint256",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "13118:7:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "id": 2441,
                                        "nodeType": "ArrayTypeName",
                                        "src": "13118:9:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                            "typeString": "uint256[]"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 2445,
                                    "mutability": "mutable",
                                    "name": "fees",
                                    "nameLocation": "13175:4:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 2656,
                                    "src": "13157:22:1",
                                    "stateVariable": false,
                                    "storageLocation": "calldata",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint24_$dyn_calldata_ptr",
                                        "typeString": "uint24[]"
                                    },
                                    "typeName": {
                                        "baseType": {
                                            "id": 2443,
                                            "name": "uint24",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "13157:6:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint24",
                                                "typeString": "uint24"
                                            }
                                        },
                                        "id": 2444,
                                        "nodeType": "ArrayTypeName",
                                        "src": "13157:8:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint24_$dyn_storage_ptr",
                                            "typeString": "uint24[]"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 2448,
                                    "mutability": "mutable",
                                    "name": "data",
                                    "nameLocation": "13220:4:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 2656,
                                    "src": "13189:35:1",
                                    "stateVariable": false,
                                    "storageLocation": "calldata",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_SwapData_$2680_calldata_ptr",
                                        "typeString": "struct ISmartRouter.SwapData"
                                    },
                                    "typeName": {
                                        "id": 2447,
                                        "nodeType": "UserDefinedTypeName",
                                        "pathNode": {
                                            "id": 2446,
                                            "name": "ISmartRouter.SwapData",
                                            "nameLocations": ["13189:12:1", "13202:8:1"],
                                            "nodeType": "IdentifierPath",
                                            "referencedDeclaration": 2680,
                                            "src": "13189:21:1"
                                        },
                                        "referencedDeclaration": 2680,
                                        "src": "13189:21:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_SwapData_$2680_storage_ptr",
                                            "typeString": "struct ISmartRouter.SwapData"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "13036:194:1"
                        },
                        "returnParameters": {
                            "id": 2450,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "13248:0:1"
                        },
                        "scope": 2657,
                        "src": "13013:2770:1",
                        "stateMutability": "payable",
                        "virtual": false,
                        "visibility": "external"
                    }
                ],
                "scope": 2658,
                "src": "503:15282:1",
                "usedErrors": [
                    1591, 2742, 2747, 2923, 2926, 3187, 3192, 3433, 3446, 3842, 4123, 4128, 4131
                ],
                "usedEvents": [1553, 1567, 1573, 1579, 1585, 2753, 2931, 3412]
            }
        ],
        "src": "32:15754:1"
    },
    "legacyAST": {
        "absolutePath": "/Users/chou/Developer/tron-silver-card-contract/contracts/ZebecCard.sol",
        "exportedSymbols": {
            "Address": [4368],
            "BokkyPooBahsDateTimeLibrary": [1483],
            "ContextUpgradeable": [3388],
            "ERC1967Utils": [3701],
            "IERC1822Proxiable": [3398],
            "IERC20": [3789],
            "IERC20Permit": [3825],
            "ISmartRouter": [2711],
            "Initializable": [3160],
            "Math": [5532],
            "OwnableUpgradeable": [2906],
            "SafeERC20": [4115],
            "UUPSUpgradeable": [3342],
            "ZebecCard": [2657],
            "console": [13596]
        },
        "id": 2658,
        "license": "MIT",
        "nodeType": "SourceUnit",
        "nodes": [
            {
                "id": 1485,
                "literals": ["solidity", "^", "0.8", ".0"],
                "nodeType": "PragmaDirective",
                "src": "32:23:1"
            },
            {
                "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
                "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
                "id": 1486,
                "nameLocation": "-1:-1:-1",
                "nodeType": "ImportDirective",
                "scope": 2658,
                "sourceUnit": 3790,
                "src": "57:56:1",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol",
                "file": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol",
                "id": 1487,
                "nameLocation": "-1:-1:-1",
                "nodeType": "ImportDirective",
                "scope": 2658,
                "sourceUnit": 3343,
                "src": "114:77:1",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol",
                "file": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol",
                "id": 1488,
                "nameLocation": "-1:-1:-1",
                "nodeType": "ImportDirective",
                "scope": 2658,
                "sourceUnit": 2907,
                "src": "192:75:1",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "@openzeppelin/contracts/utils/math/Math.sol",
                "file": "@openzeppelin/contracts/utils/math/Math.sol",
                "id": 1489,
                "nameLocation": "-1:-1:-1",
                "nodeType": "ImportDirective",
                "scope": 2658,
                "sourceUnit": 5533,
                "src": "268:53:1",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol",
                "file": "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol",
                "id": 1490,
                "nameLocation": "-1:-1:-1",
                "nodeType": "ImportDirective",
                "scope": 2658,
                "sourceUnit": 4116,
                "src": "322:65:1",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "/Users/chou/Developer/tron-silver-card-contract/contracts/BokkyPooBahsDateTimeLibrary.sol",
                "file": "./BokkyPooBahsDateTimeLibrary.sol",
                "id": 1491,
                "nameLocation": "-1:-1:-1",
                "nodeType": "ImportDirective",
                "scope": 2658,
                "sourceUnit": 1484,
                "src": "388:43:1",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "/Users/chou/Developer/tron-silver-card-contract/contracts/interfaces/ISmartRouter.sol",
                "file": "./interfaces/ISmartRouter.sol",
                "id": 1492,
                "nameLocation": "-1:-1:-1",
                "nodeType": "ImportDirective",
                "scope": 2658,
                "sourceUnit": 2712,
                "src": "432:39:1",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "tronbox/console.sol",
                "file": "tronbox/console.sol",
                "id": 1493,
                "nameLocation": "-1:-1:-1",
                "nodeType": "ImportDirective",
                "scope": 2658,
                "sourceUnit": 13597,
                "src": "472:29:1",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "abstract": false,
                "baseContracts": [
                    {
                        "baseName": {
                            "id": 1494,
                            "name": "OwnableUpgradeable",
                            "nameLocations": ["525:18:1"],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 2906,
                            "src": "525:18:1"
                        },
                        "id": 1495,
                        "nodeType": "InheritanceSpecifier",
                        "src": "525:18:1"
                    },
                    {
                        "baseName": {
                            "id": 1496,
                            "name": "UUPSUpgradeable",
                            "nameLocations": ["545:15:1"],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 3342,
                            "src": "545:15:1"
                        },
                        "id": 1497,
                        "nodeType": "InheritanceSpecifier",
                        "src": "545:15:1"
                    }
                ],
                "canonicalName": "ZebecCard",
                "contractDependencies": [],
                "contractKind": "contract",
                "fullyImplemented": true,
                "id": 2657,
                "linearizedBaseContracts": [2657, 3342, 3398, 2906, 3388, 3160],
                "name": "ZebecCard",
                "nameLocation": "512:9:1",
                "nodeType": "ContractDefinition",
                "nodes": [
                    {
                        "global": false,
                        "id": 1501,
                        "libraryName": {
                            "id": 1498,
                            "name": "SafeERC20",
                            "nameLocations": ["573:9:1"],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 4115,
                            "src": "573:9:1"
                        },
                        "nodeType": "UsingForDirective",
                        "src": "567:27:1",
                        "typeName": {
                            "id": 1500,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                                "id": 1499,
                                "name": "IERC20",
                                "nameLocations": ["587:6:1"],
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 3789,
                                "src": "587:6:1"
                            },
                            "referencedDeclaration": 3789,
                            "src": "587:6:1",
                            "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$3789",
                                "typeString": "contract IERC20"
                            }
                        }
                    },
                    {
                        "global": false,
                        "id": 1504,
                        "libraryName": {
                            "id": 1502,
                            "name": "BokkyPooBahsDateTimeLibrary",
                            "nameLocations": ["605:27:1"],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 1483,
                            "src": "605:27:1"
                        },
                        "nodeType": "UsingForDirective",
                        "src": "599:46:1",
                        "typeName": {
                            "id": 1503,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "637:7:1",
                            "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                            }
                        }
                    },
                    {
                        "canonicalName": "ZebecCard.FeeTier",
                        "id": 1511,
                        "members": [
                            {
                                "constant": false,
                                "id": 1506,
                                "mutability": "mutable",
                                "name": "minAmount",
                                "nameLocation": "684:9:1",
                                "nodeType": "VariableDeclaration",
                                "scope": 1511,
                                "src": "676:17:1",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                },
                                "typeName": {
                                    "id": 1505,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "676:7:1",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    }
                                },
                                "visibility": "internal"
                            },
                            {
                                "constant": false,
                                "id": 1508,
                                "mutability": "mutable",
                                "name": "maxAmount",
                                "nameLocation": "711:9:1",
                                "nodeType": "VariableDeclaration",
                                "scope": 1511,
                                "src": "703:17:1",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                },
                                "typeName": {
                                    "id": 1507,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "703:7:1",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    }
                                },
                                "visibility": "internal"
                            },
                            {
                                "constant": false,
                                "id": 1510,
                                "mutability": "mutable",
                                "name": "fee",
                                "nameLocation": "738:3:1",
                                "nodeType": "VariableDeclaration",
                                "scope": 1511,
                                "src": "730:11:1",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                },
                                "typeName": {
                                    "id": 1509,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "730:7:1",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    }
                                },
                                "visibility": "internal"
                            }
                        ],
                        "name": "FeeTier",
                        "nameLocation": "658:7:1",
                        "nodeType": "StructDefinition",
                        "scope": 2657,
                        "src": "651:97:1",
                        "visibility": "public"
                    },
                    {
                        "canonicalName": "ZebecCard.CardConfig",
                        "id": 1532,
                        "members": [
                            {
                                "constant": false,
                                "id": 1513,
                                "mutability": "mutable",
                                "name": "nativeFee",
                                "nameLocation": "790:9:1",
                                "nodeType": "VariableDeclaration",
                                "scope": 1532,
                                "src": "782:17:1",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                },
                                "typeName": {
                                    "id": 1512,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "782:7:1",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    }
                                },
                                "visibility": "internal"
                            },
                            {
                                "constant": false,
                                "id": 1515,
                                "mutability": "mutable",
                                "name": "nonNativeFee",
                                "nameLocation": "817:12:1",
                                "nodeType": "VariableDeclaration",
                                "scope": 1532,
                                "src": "809:20:1",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                },
                                "typeName": {
                                    "id": 1514,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "809:7:1",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    }
                                },
                                "visibility": "internal"
                            },
                            {
                                "constant": false,
                                "id": 1517,
                                "mutability": "mutable",
                                "name": "revenueFee",
                                "nameLocation": "847:10:1",
                                "nodeType": "VariableDeclaration",
                                "scope": 1532,
                                "src": "839:18:1",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                },
                                "typeName": {
                                    "id": 1516,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "839:7:1",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    }
                                },
                                "visibility": "internal"
                            },
                            {
                                "constant": false,
                                "id": 1519,
                                "mutability": "mutable",
                                "name": "counter",
                                "nameLocation": "875:7:1",
                                "nodeType": "VariableDeclaration",
                                "scope": 1532,
                                "src": "867:15:1",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                },
                                "typeName": {
                                    "id": 1518,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "867:7:1",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    }
                                },
                                "visibility": "internal"
                            },
                            {
                                "constant": false,
                                "id": 1521,
                                "mutability": "mutable",
                                "name": "cardVault",
                                "nameLocation": "900:9:1",
                                "nodeType": "VariableDeclaration",
                                "scope": 1532,
                                "src": "892:17:1",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                },
                                "typeName": {
                                    "id": 1520,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "892:7:1",
                                    "stateMutability": "nonpayable",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    }
                                },
                                "visibility": "internal"
                            },
                            {
                                "constant": false,
                                "id": 1523,
                                "mutability": "mutable",
                                "name": "revenueVault",
                                "nameLocation": "927:12:1",
                                "nodeType": "VariableDeclaration",
                                "scope": 1532,
                                "src": "919:20:1",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                },
                                "typeName": {
                                    "id": 1522,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "919:7:1",
                                    "stateMutability": "nonpayable",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    }
                                },
                                "visibility": "internal"
                            },
                            {
                                "constant": false,
                                "id": 1525,
                                "mutability": "mutable",
                                "name": "usdcAddress",
                                "nameLocation": "957:11:1",
                                "nodeType": "VariableDeclaration",
                                "scope": 1532,
                                "src": "949:19:1",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                },
                                "typeName": {
                                    "id": 1524,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "949:7:1",
                                    "stateMutability": "nonpayable",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    }
                                },
                                "visibility": "internal"
                            },
                            {
                                "constant": false,
                                "id": 1527,
                                "mutability": "mutable",
                                "name": "minCardAmount",
                                "nameLocation": "986:13:1",
                                "nodeType": "VariableDeclaration",
                                "scope": 1532,
                                "src": "978:21:1",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                },
                                "typeName": {
                                    "id": 1526,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "978:7:1",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    }
                                },
                                "visibility": "internal"
                            },
                            {
                                "constant": false,
                                "id": 1529,
                                "mutability": "mutable",
                                "name": "maxCardAmount",
                                "nameLocation": "1017:13:1",
                                "nodeType": "VariableDeclaration",
                                "scope": 1532,
                                "src": "1009:21:1",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                },
                                "typeName": {
                                    "id": 1528,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1009:7:1",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    }
                                },
                                "visibility": "internal"
                            },
                            {
                                "constant": false,
                                "id": 1531,
                                "mutability": "mutable",
                                "name": "dailyCardBuyLimit",
                                "nameLocation": "1048:17:1",
                                "nodeType": "VariableDeclaration",
                                "scope": 1532,
                                "src": "1040:25:1",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                },
                                "typeName": {
                                    "id": 1530,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1040:7:1",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    }
                                },
                                "visibility": "internal"
                            }
                        ],
                        "name": "CardConfig",
                        "nameLocation": "761:10:1",
                        "nodeType": "StructDefinition",
                        "scope": 2657,
                        "src": "754:318:1",
                        "visibility": "public"
                    },
                    {
                        "canonicalName": "ZebecCard.CardPurchase",
                        "id": 1537,
                        "members": [
                            {
                                "constant": false,
                                "id": 1534,
                                "mutability": "mutable",
                                "name": "unixInRecord",
                                "nameLocation": "1116:12:1",
                                "nodeType": "VariableDeclaration",
                                "scope": 1537,
                                "src": "1108:20:1",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                },
                                "typeName": {
                                    "id": 1533,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1108:7:1",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    }
                                },
                                "visibility": "internal"
                            },
                            {
                                "constant": false,
                                "id": 1536,
                                "mutability": "mutable",
                                "name": "totalCardBoughtPerDay",
                                "nameLocation": "1200:21:1",
                                "nodeType": "VariableDeclaration",
                                "scope": 1537,
                                "src": "1192:29:1",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                },
                                "typeName": {
                                    "id": 1535,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1192:7:1",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    }
                                },
                                "visibility": "internal"
                            }
                        ],
                        "name": "CardPurchase",
                        "nameLocation": "1085:12:1",
                        "nodeType": "StructDefinition",
                        "scope": 2657,
                        "src": "1078:196:1",
                        "visibility": "public"
                    },
                    {
                        "canonicalName": "ZebecCard.TokenType",
                        "id": 1541,
                        "members": [
                            {
                                "id": 1538,
                                "name": "NATIVE",
                                "nameLocation": "1305:6:1",
                                "nodeType": "EnumValue",
                                "src": "1305:6:1"
                            },
                            {
                                "id": 1539,
                                "name": "NON_NATIVE",
                                "nameLocation": "1321:10:1",
                                "nodeType": "EnumValue",
                                "src": "1321:10:1"
                            },
                            {
                                "id": 1540,
                                "name": "USDC",
                                "nameLocation": "1341:4:1",
                                "nodeType": "EnumValue",
                                "src": "1341:4:1"
                            }
                        ],
                        "name": "TokenType",
                        "nameLocation": "1285:9:1",
                        "nodeType": "EnumDefinition",
                        "src": "1280:71:1"
                    },
                    {
                        "anonymous": false,
                        "eventSelector": "ce9df9676b8ff95985927db077a18e692c06c1ecfa2abae6db585c4aedfbc909",
                        "id": 1553,
                        "name": "CardPurchased",
                        "nameLocation": "1363:13:1",
                        "nodeType": "EventDefinition",
                        "parameters": {
                            "id": 1552,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 1543,
                                    "indexed": true,
                                    "mutability": "mutable",
                                    "name": "from",
                                    "nameLocation": "1402:4:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1553,
                                    "src": "1386:20:1",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 1542,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1386:7:1",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 1545,
                                    "indexed": true,
                                    "mutability": "mutable",
                                    "name": "id",
                                    "nameLocation": "1432:2:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1553,
                                    "src": "1416:18:1",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 1544,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1416:7:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 1547,
                                    "indexed": false,
                                    "mutability": "mutable",
                                    "name": "amount",
                                    "nameLocation": "1452:6:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1553,
                                    "src": "1444:14:1",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 1546,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1444:7:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 1549,
                                    "indexed": false,
                                    "mutability": "mutable",
                                    "name": "userEmail",
                                    "nameLocation": "1475:9:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1553,
                                    "src": "1468:16:1",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_string_memory_ptr",
                                        "typeString": "string"
                                    },
                                    "typeName": {
                                        "id": 1548,
                                        "name": "string",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1468:6:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_string_storage_ptr",
                                            "typeString": "string"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 1551,
                                    "indexed": false,
                                    "mutability": "mutable",
                                    "name": "purchasedAt",
                                    "nameLocation": "1502:11:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1553,
                                    "src": "1494:19:1",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 1550,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1494:7:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1376:143:1"
                        },
                        "src": "1357:163:1"
                    },
                    {
                        "anonymous": false,
                        "eventSelector": "d8066379a11f110d1eb579110571ce47b1557c623d7ae29f423d92cd6dd953be",
                        "id": 1567,
                        "name": "Swapped",
                        "nameLocation": "1532:7:1",
                        "nodeType": "EventDefinition",
                        "parameters": {
                            "id": 1566,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 1555,
                                    "indexed": true,
                                    "mutability": "mutable",
                                    "name": "from",
                                    "nameLocation": "1565:4:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1567,
                                    "src": "1549:20:1",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 1554,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1549:7:1",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 1557,
                                    "indexed": true,
                                    "mutability": "mutable",
                                    "name": "srcToken",
                                    "nameLocation": "1595:8:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1567,
                                    "src": "1579:24:1",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 1556,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1579:7:1",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 1559,
                                    "indexed": false,
                                    "mutability": "mutable",
                                    "name": "amount",
                                    "nameLocation": "1621:6:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1567,
                                    "src": "1613:14:1",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 1558,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1613:7:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 1561,
                                    "indexed": false,
                                    "mutability": "mutable",
                                    "name": "spentAmount",
                                    "nameLocation": "1645:11:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1567,
                                    "src": "1637:19:1",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 1560,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1637:7:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 1563,
                                    "indexed": false,
                                    "mutability": "mutable",
                                    "name": "returnAmount",
                                    "nameLocation": "1674:12:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1567,
                                    "src": "1666:20:1",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 1562,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1666:7:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 1565,
                                    "indexed": false,
                                    "mutability": "mutable",
                                    "name": "feeAmount",
                                    "nameLocation": "1704:9:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1567,
                                    "src": "1696:17:1",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 1564,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1696:7:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1539:180:1"
                        },
                        "src": "1526:194:1"
                    },
                    {
                        "anonymous": false,
                        "eventSelector": "2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4",
                        "id": 1573,
                        "name": "Deposited",
                        "nameLocation": "1732:9:1",
                        "nodeType": "EventDefinition",
                        "parameters": {
                            "id": 1572,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 1569,
                                    "indexed": true,
                                    "mutability": "mutable",
                                    "name": "from",
                                    "nameLocation": "1758:4:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1573,
                                    "src": "1742:20:1",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 1568,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1742:7:1",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 1571,
                                    "indexed": false,
                                    "mutability": "mutable",
                                    "name": "amount",
                                    "nameLocation": "1772:6:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1573,
                                    "src": "1764:14:1",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 1570,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1764:7:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1741:38:1"
                        },
                        "src": "1726:54:1"
                    },
                    {
                        "anonymous": false,
                        "eventSelector": "7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5",
                        "id": 1579,
                        "name": "Withdrawn",
                        "nameLocation": "1792:9:1",
                        "nodeType": "EventDefinition",
                        "parameters": {
                            "id": 1578,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 1575,
                                    "indexed": true,
                                    "mutability": "mutable",
                                    "name": "from",
                                    "nameLocation": "1818:4:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1579,
                                    "src": "1802:20:1",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 1574,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1802:7:1",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 1577,
                                    "indexed": false,
                                    "mutability": "mutable",
                                    "name": "withdrawnAmount",
                                    "nameLocation": "1832:15:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1579,
                                    "src": "1824:23:1",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 1576,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1824:7:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1801:47:1"
                        },
                        "src": "1786:63:1"
                    },
                    {
                        "anonymous": false,
                        "eventSelector": "f09b3678dd1b265d3e2d9f681481c92d1cdd81b6e19fa43651707dedf99263a8",
                        "id": 1585,
                        "name": "WithdrawYield",
                        "nameLocation": "1861:13:1",
                        "nodeType": "EventDefinition",
                        "parameters": {
                            "id": 1584,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 1581,
                                    "indexed": true,
                                    "mutability": "mutable",
                                    "name": "from",
                                    "nameLocation": "1891:4:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1585,
                                    "src": "1875:20:1",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 1580,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1875:7:1",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 1583,
                                    "indexed": false,
                                    "mutability": "mutable",
                                    "name": "withdrawnAmount",
                                    "nameLocation": "1905:15:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1585,
                                    "src": "1897:23:1",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 1582,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1897:7:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1874:47:1"
                        },
                        "src": "1855:67:1"
                    },
                    {
                        "errorSelector": "8f0f4206",
                        "id": 1591,
                        "name": "NotEnoughBalance",
                        "nameLocation": "1934:16:1",
                        "nodeType": "ErrorDefinition",
                        "parameters": {
                            "id": 1590,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 1587,
                                    "mutability": "mutable",
                                    "name": "requiredBalance",
                                    "nameLocation": "1959:15:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1591,
                                    "src": "1951:23:1",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 1586,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1951:7:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 1589,
                                    "mutability": "mutable",
                                    "name": "currentBalance",
                                    "nameLocation": "1984:14:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1591,
                                    "src": "1976:22:1",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 1588,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1976:7:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1950:49:1"
                        },
                        "src": "1928:72:1"
                    },
                    {
                        "constant": false,
                        "functionSelector": "37cf5331",
                        "id": 1594,
                        "mutability": "mutable",
                        "name": "cardConfig",
                        "nameLocation": "2024:10:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2657,
                        "src": "2006:28:1",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_struct$_CardConfig_$1532_storage",
                            "typeString": "struct ZebecCard.CardConfig"
                        },
                        "typeName": {
                            "id": 1593,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                                "id": 1592,
                                "name": "CardConfig",
                                "nameLocations": ["2006:10:1"],
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 1532,
                                "src": "2006:10:1"
                            },
                            "referencedDeclaration": 1532,
                            "src": "2006:10:1",
                            "typeDescriptions": {
                                "typeIdentifier": "t_struct$_CardConfig_$1532_storage_ptr",
                                "typeString": "struct ZebecCard.CardConfig"
                            }
                        },
                        "visibility": "public"
                    },
                    {
                        "constant": false,
                        "functionSelector": "22e41dc4",
                        "id": 1596,
                        "mutability": "mutable",
                        "name": "sunSwapRouter",
                        "nameLocation": "2056:13:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2657,
                        "src": "2041:28:1",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                        },
                        "typeName": {
                            "id": 1595,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2041:7:1",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                            }
                        },
                        "visibility": "public"
                    },
                    {
                        "constant": false,
                        "functionSelector": "2a780067",
                        "id": 1598,
                        "mutability": "mutable",
                        "name": "wTrx",
                        "nameLocation": "2091:4:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2657,
                        "src": "2076:19:1",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                        },
                        "typeName": {
                            "id": 1597,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2076:7:1",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                            }
                        },
                        "visibility": "public"
                    },
                    {
                        "constant": false,
                        "functionSelector": "a5b7ac7e",
                        "id": 1603,
                        "mutability": "mutable",
                        "name": "cardPurchases",
                        "nameLocation": "2142:13:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2657,
                        "src": "2102:53:1",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_CardPurchase_$1537_storage_$",
                            "typeString": "mapping(address => struct ZebecCard.CardPurchase)"
                        },
                        "typeName": {
                            "id": 1602,
                            "keyName": "",
                            "keyNameLocation": "-1:-1:-1",
                            "keyType": {
                                "id": 1599,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "2110:7:1",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                }
                            },
                            "nodeType": "Mapping",
                            "src": "2102:32:1",
                            "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_CardPurchase_$1537_storage_$",
                                "typeString": "mapping(address => struct ZebecCard.CardPurchase)"
                            },
                            "valueName": "",
                            "valueNameLocation": "-1:-1:-1",
                            "valueType": {
                                "id": 1601,
                                "nodeType": "UserDefinedTypeName",
                                "pathNode": {
                                    "id": 1600,
                                    "name": "CardPurchase",
                                    "nameLocations": ["2121:12:1"],
                                    "nodeType": "IdentifierPath",
                                    "referencedDeclaration": 1537,
                                    "src": "2121:12:1"
                                },
                                "referencedDeclaration": 1537,
                                "src": "2121:12:1",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_CardPurchase_$1537_storage_ptr",
                                    "typeString": "struct ZebecCard.CardPurchase"
                                }
                            }
                        },
                        "visibility": "public"
                    },
                    {
                        "constant": false,
                        "functionSelector": "f076a846",
                        "id": 1607,
                        "mutability": "mutable",
                        "name": "cardBalances",
                        "nameLocation": "2197:12:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2657,
                        "src": "2162:47:1",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                            "typeString": "mapping(address => uint256)"
                        },
                        "typeName": {
                            "id": 1606,
                            "keyName": "",
                            "keyNameLocation": "-1:-1:-1",
                            "keyType": {
                                "id": 1604,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "2170:7:1",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                }
                            },
                            "nodeType": "Mapping",
                            "src": "2162:27:1",
                            "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                            },
                            "valueName": "",
                            "valueNameLocation": "-1:-1:-1",
                            "valueType": {
                                "id": 1605,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "2181:7:1",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                }
                            }
                        },
                        "visibility": "public"
                    },
                    {
                        "constant": false,
                        "functionSelector": "230ed44a",
                        "id": 1611,
                        "mutability": "mutable",
                        "name": "feeTiers",
                        "nameLocation": "2233:8:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2657,
                        "src": "2216:25:1",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_FeeTier_$1511_storage_$dyn_storage",
                            "typeString": "struct ZebecCard.FeeTier[]"
                        },
                        "typeName": {
                            "baseType": {
                                "id": 1609,
                                "nodeType": "UserDefinedTypeName",
                                "pathNode": {
                                    "id": 1608,
                                    "name": "FeeTier",
                                    "nameLocations": ["2216:7:1"],
                                    "nodeType": "IdentifierPath",
                                    "referencedDeclaration": 1511,
                                    "src": "2216:7:1"
                                },
                                "referencedDeclaration": 1511,
                                "src": "2216:7:1",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_FeeTier_$1511_storage_ptr",
                                    "typeString": "struct ZebecCard.FeeTier"
                                }
                            },
                            "id": 1610,
                            "nodeType": "ArrayTypeName",
                            "src": "2216:9:1",
                            "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_FeeTier_$1511_storage_$dyn_storage_ptr",
                                "typeString": "struct ZebecCard.FeeTier[]"
                            }
                        },
                        "visibility": "public"
                    },
                    {
                        "baseFunctions": [3296],
                        "body": {
                            "id": 1619,
                            "nodeType": "Block",
                            "src": "2344:2:1",
                            "statements": []
                        },
                        "id": 1620,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [
                            {
                                "id": 1617,
                                "kind": "modifierInvocation",
                                "modifierName": {
                                    "id": 1616,
                                    "name": "onlyOwner",
                                    "nameLocations": ["2334:9:1"],
                                    "nodeType": "IdentifierPath",
                                    "referencedDeclaration": 2801,
                                    "src": "2334:9:1"
                                },
                                "nodeType": "ModifierInvocation",
                                "src": "2334:9:1"
                            }
                        ],
                        "name": "_authorizeUpgrade",
                        "nameLocation": "2257:17:1",
                        "nodeType": "FunctionDefinition",
                        "overrides": {
                            "id": 1615,
                            "nodeType": "OverrideSpecifier",
                            "overrides": [],
                            "src": "2325:8:1"
                        },
                        "parameters": {
                            "id": 1614,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 1613,
                                    "mutability": "mutable",
                                    "name": "newImplementation",
                                    "nameLocation": "2292:17:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1620,
                                    "src": "2284:25:1",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 1612,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2284:7:1",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "2274:41:1"
                        },
                        "returnParameters": {
                            "id": 1618,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "2344:0:1"
                        },
                        "scope": 2657,
                        "src": "2248:98:1",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "internal"
                    },
                    {
                        "body": {
                            "id": 1677,
                            "nodeType": "Block",
                            "src": "2742:285:1",
                            "statements": [
                                {
                                    "expression": {
                                        "id": 1638,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "id": 1636,
                                            "name": "sunSwapRouter",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1596,
                                            "src": "2752:13:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "id": 1637,
                                            "name": "sun_swap_router",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1629,
                                            "src": "2768:15:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "src": "2752:31:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "id": 1639,
                                    "nodeType": "ExpressionStatement",
                                    "src": "2752:31:1"
                                },
                                {
                                    "expression": {
                                        "id": 1642,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "id": 1640,
                                            "name": "cardConfig",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1594,
                                            "src": "2793:10:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_CardConfig_$1532_storage",
                                                "typeString": "struct ZebecCard.CardConfig storage ref"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "id": 1641,
                                            "name": "card_config",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1623,
                                            "src": "2806:11:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_CardConfig_$1532_memory_ptr",
                                                "typeString": "struct ZebecCard.CardConfig memory"
                                            }
                                        },
                                        "src": "2793:24:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_CardConfig_$1532_storage",
                                            "typeString": "struct ZebecCard.CardConfig storage ref"
                                        }
                                    },
                                    "id": 1643,
                                    "nodeType": "ExpressionStatement",
                                    "src": "2793:24:1"
                                },
                                {
                                    "expression": {
                                        "arguments": [],
                                        "expression": {
                                            "argumentTypes": [],
                                            "id": 1644,
                                            "name": "__UUPSUpgradeable_init",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3214,
                                            "src": "2827:22:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                                                "typeString": "function ()"
                                            }
                                        },
                                        "id": 1645,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2827:24:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 1646,
                                    "nodeType": "ExpressionStatement",
                                    "src": "2827:24:1"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "expression": {
                                                    "id": 1648,
                                                    "name": "msg",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 4294967281,
                                                    "src": "2876:3:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_magic_message",
                                                        "typeString": "msg"
                                                    }
                                                },
                                                "id": 1649,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberLocation": "2880:6:1",
                                                "memberName": "sender",
                                                "nodeType": "MemberAccess",
                                                "src": "2876:10:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            ],
                                            "id": 1647,
                                            "name": "__Ownable_init",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2766,
                                            "src": "2861:14:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                                                "typeString": "function (address)"
                                            }
                                        },
                                        "id": 1650,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2861:26:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 1651,
                                    "nodeType": "ExpressionStatement",
                                    "src": "2861:26:1"
                                },
                                {
                                    "expression": {
                                        "id": 1654,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "id": 1652,
                                            "name": "wTrx",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1598,
                                            "src": "2897:4:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "id": 1653,
                                            "name": "wrapped_trx",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1631,
                                            "src": "2904:11:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "src": "2897:18:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "id": 1655,
                                    "nodeType": "ExpressionStatement",
                                    "src": "2897:18:1"
                                },
                                {
                                    "body": {
                                        "id": 1675,
                                        "nodeType": "Block",
                                        "src": "2969:52:1",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "baseExpression": {
                                                                "id": 1670,
                                                                "name": "fee_tiers",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1627,
                                                                "src": "2997:9:1",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_array$_t_struct$_FeeTier_$1511_memory_ptr_$dyn_memory_ptr",
                                                                    "typeString": "struct ZebecCard.FeeTier memory[] memory"
                                                                }
                                                            },
                                                            "id": 1672,
                                                            "indexExpression": {
                                                                "id": 1671,
                                                                "name": "i",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1657,
                                                                "src": "3007:1:1",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "IndexAccess",
                                                            "src": "2997:12:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_FeeTier_$1511_memory_ptr",
                                                                "typeString": "struct ZebecCard.FeeTier memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_struct$_FeeTier_$1511_memory_ptr",
                                                                "typeString": "struct ZebecCard.FeeTier memory"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "id": 1667,
                                                            "name": "feeTiers",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1611,
                                                            "src": "2983:8:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_array$_t_struct$_FeeTier_$1511_storage_$dyn_storage",
                                                                "typeString": "struct ZebecCard.FeeTier storage ref[] storage ref"
                                                            }
                                                        },
                                                        "id": 1669,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberLocation": "2992:4:1",
                                                        "memberName": "push",
                                                        "nodeType": "MemberAccess",
                                                        "src": "2983:13:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_struct$_FeeTier_$1511_storage_$dyn_storage_ptr_$_t_struct$_FeeTier_$1511_storage_$returns$__$attached_to$_t_array$_t_struct$_FeeTier_$1511_storage_$dyn_storage_ptr_$",
                                                            "typeString": "function (struct ZebecCard.FeeTier storage ref[] storage pointer,struct ZebecCard.FeeTier storage ref)"
                                                        }
                                                    },
                                                    "id": 1673,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "nameLocations": [],
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "2983:27:1",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 1674,
                                                "nodeType": "ExpressionStatement",
                                                "src": "2983:27:1"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        },
                                        "id": 1663,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "id": 1660,
                                            "name": "i",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1657,
                                            "src": "2942:1:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "<",
                                        "rightExpression": {
                                            "expression": {
                                                "id": 1661,
                                                "name": "fee_tiers",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1627,
                                                "src": "2946:9:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_struct$_FeeTier_$1511_memory_ptr_$dyn_memory_ptr",
                                                    "typeString": "struct ZebecCard.FeeTier memory[] memory"
                                                }
                                            },
                                            "id": 1662,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberLocation": "2956:6:1",
                                            "memberName": "length",
                                            "nodeType": "MemberAccess",
                                            "src": "2946:16:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "2942:20:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "id": 1676,
                                    "initializationExpression": {
                                        "assignments": [1657],
                                        "declarations": [
                                            {
                                                "constant": false,
                                                "id": 1657,
                                                "mutability": "mutable",
                                                "name": "i",
                                                "nameLocation": "2935:1:1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1676,
                                                "src": "2930:6:1",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 1656,
                                                    "name": "uint",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2930:4:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "id": 1659,
                                        "initialValue": {
                                            "hexValue": "30",
                                            "id": 1658,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "2939:1:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_rational_0_by_1",
                                                "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                        },
                                        "nodeType": "VariableDeclarationStatement",
                                        "src": "2930:10:1"
                                    },
                                    "loopExpression": {
                                        "expression": {
                                            "id": 1665,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "UnaryOperation",
                                            "operator": "++",
                                            "prefix": false,
                                            "src": "2964:3:1",
                                            "subExpression": {
                                                "id": 1664,
                                                "name": "i",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1657,
                                                "src": "2964:1:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "id": 1666,
                                        "nodeType": "ExpressionStatement",
                                        "src": "2964:3:1"
                                    },
                                    "nodeType": "ForStatement",
                                    "src": "2925:96:1"
                                }
                            ]
                        },
                        "functionSelector": "569b5dbf",
                        "id": 1678,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [
                            {
                                "id": 1634,
                                "kind": "modifierInvocation",
                                "modifierName": {
                                    "id": 1633,
                                    "name": "initializer",
                                    "nameLocations": ["2730:11:1"],
                                    "nodeType": "IdentifierPath",
                                    "referencedDeclaration": 3014,
                                    "src": "2730:11:1"
                                },
                                "nodeType": "ModifierInvocation",
                                "src": "2730:11:1"
                            }
                        ],
                        "name": "initialize",
                        "nameLocation": "2569:10:1",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 1632,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 1623,
                                    "mutability": "mutable",
                                    "name": "card_config",
                                    "nameLocation": "2607:11:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1678,
                                    "src": "2589:29:1",
                                    "stateVariable": false,
                                    "storageLocation": "memory",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_CardConfig_$1532_memory_ptr",
                                        "typeString": "struct ZebecCard.CardConfig"
                                    },
                                    "typeName": {
                                        "id": 1622,
                                        "nodeType": "UserDefinedTypeName",
                                        "pathNode": {
                                            "id": 1621,
                                            "name": "CardConfig",
                                            "nameLocations": ["2589:10:1"],
                                            "nodeType": "IdentifierPath",
                                            "referencedDeclaration": 1532,
                                            "src": "2589:10:1"
                                        },
                                        "referencedDeclaration": 1532,
                                        "src": "2589:10:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_CardConfig_$1532_storage_ptr",
                                            "typeString": "struct ZebecCard.CardConfig"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 1627,
                                    "mutability": "mutable",
                                    "name": "fee_tiers",
                                    "nameLocation": "2645:9:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1678,
                                    "src": "2628:26:1",
                                    "stateVariable": false,
                                    "storageLocation": "memory",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_struct$_FeeTier_$1511_memory_ptr_$dyn_memory_ptr",
                                        "typeString": "struct ZebecCard.FeeTier[]"
                                    },
                                    "typeName": {
                                        "baseType": {
                                            "id": 1625,
                                            "nodeType": "UserDefinedTypeName",
                                            "pathNode": {
                                                "id": 1624,
                                                "name": "FeeTier",
                                                "nameLocations": ["2628:7:1"],
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 1511,
                                                "src": "2628:7:1"
                                            },
                                            "referencedDeclaration": 1511,
                                            "src": "2628:7:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_FeeTier_$1511_storage_ptr",
                                                "typeString": "struct ZebecCard.FeeTier"
                                            }
                                        },
                                        "id": 1626,
                                        "nodeType": "ArrayTypeName",
                                        "src": "2628:9:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_struct$_FeeTier_$1511_storage_$dyn_storage_ptr",
                                            "typeString": "struct ZebecCard.FeeTier[]"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 1629,
                                    "mutability": "mutable",
                                    "name": "sun_swap_router",
                                    "nameLocation": "2672:15:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1678,
                                    "src": "2664:23:1",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 1628,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2664:7:1",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 1631,
                                    "mutability": "mutable",
                                    "name": "wrapped_trx",
                                    "nameLocation": "2705:11:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1678,
                                    "src": "2697:19:1",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 1630,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2697:7:1",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "2579:143:1"
                        },
                        "returnParameters": {
                            "id": 1635,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "2742:0:1"
                        },
                        "scope": 2657,
                        "src": "2560:467:1",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "public"
                    },
                    {
                        "body": {
                            "id": 1702,
                            "nodeType": "Block",
                            "src": "3197:220:1",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "commonType": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "id": 1697,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "arguments": [
                                                        {
                                                            "expression": {
                                                                "id": 1689,
                                                                "name": "msg",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 4294967281,
                                                                "src": "3286:3:1",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_magic_message",
                                                                    "typeString": "msg"
                                                                }
                                                            },
                                                            "id": 1690,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberLocation": "3290:6:1",
                                                            "memberName": "sender",
                                                            "nodeType": "MemberAccess",
                                                            "src": "3286:10:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 1693,
                                                                    "name": "this",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 4294967268,
                                                                    "src": "3322:4:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_contract$_ZebecCard_$2657",
                                                                        "typeString": "contract ZebecCard"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_contract$_ZebecCard_$2657",
                                                                        "typeString": "contract ZebecCard"
                                                                    }
                                                                ],
                                                                "id": 1692,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "nodeType": "ElementaryTypeNameExpression",
                                                                "src": "3314:7:1",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_address_$",
                                                                    "typeString": "type(address)"
                                                                },
                                                                "typeName": {
                                                                    "id": 1691,
                                                                    "name": "address",
                                                                    "nodeType": "ElementaryTypeName",
                                                                    "src": "3314:7:1",
                                                                    "typeDescriptions": {}
                                                                }
                                                            },
                                                            "id": 1694,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "typeConversion",
                                                            "lValueRequested": false,
                                                            "nameLocations": [],
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "3314:13:1",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "arguments": [
                                                                {
                                                                    "expression": {
                                                                        "id": 1685,
                                                                        "name": "cardConfig",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 1594,
                                                                        "src": "3235:10:1",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_struct$_CardConfig_$1532_storage",
                                                                            "typeString": "struct ZebecCard.CardConfig storage ref"
                                                                        }
                                                                    },
                                                                    "id": 1686,
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberLocation": "3246:11:1",
                                                                    "memberName": "usdcAddress",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 1525,
                                                                    "src": "3235:22:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                ],
                                                                "id": 1684,
                                                                "name": "IERC20",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 3789,
                                                                "src": "3228:6:1",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_contract$_IERC20_$3789_$",
                                                                    "typeString": "type(contract IERC20)"
                                                                }
                                                            },
                                                            "id": 1687,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "typeConversion",
                                                            "lValueRequested": false,
                                                            "nameLocations": [],
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "3228:30:1",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_contract$_IERC20_$3789",
                                                                "typeString": "contract IERC20"
                                                            }
                                                        },
                                                        "id": 1688,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberLocation": "3259:9:1",
                                                        "memberName": "allowance",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 3766,
                                                        "src": "3228:40:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$",
                                                            "typeString": "function (address,address) view external returns (uint256)"
                                                        }
                                                    },
                                                    "id": 1695,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "nameLocations": [],
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "3228:113:1",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": ">=",
                                                "rightExpression": {
                                                    "id": 1696,
                                                    "name": "amount",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 1681,
                                                    "src": "3345:6:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "src": "3228:123:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            {
                                                "hexValue": "496e73756666696369656e7420616c6c6f77616e6365",
                                                "id": 1698,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "3365:24:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc",
                                                    "typeString": "literal_string \"Insufficient allowance\""
                                                },
                                                "value": "Insufficient allowance"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                {
                                                    "typeIdentifier": "t_stringliteral_45e3d26e36c3151c7f92a1eee9add9658cbb8e14605ee2452ec007389b9744bc",
                                                    "typeString": "literal_string \"Insufficient allowance\""
                                                }
                                            ],
                                            "id": 1683,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [4294967278, 4294967278],
                                            "referencedDeclaration": 4294967278,
                                            "src": "3207:7:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (bool,string memory) pure"
                                            }
                                        },
                                        "id": 1699,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "3207:192:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 1700,
                                    "nodeType": "ExpressionStatement",
                                    "src": "3207:192:1"
                                },
                                {
                                    "id": 1701,
                                    "nodeType": "PlaceholderStatement",
                                    "src": "3409:1:1"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 1679,
                            "nodeType": "StructuredDocumentation",
                            "src": "3033:122:1",
                            "text": " @dev Modifier to check token allowance.\n @param amount The amount to check against the allowance."
                        },
                        "id": 1703,
                        "name": "checkAllowance",
                        "nameLocation": "3169:14:1",
                        "nodeType": "ModifierDefinition",
                        "parameters": {
                            "id": 1682,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 1681,
                                    "mutability": "mutable",
                                    "name": "amount",
                                    "nameLocation": "3189:6:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1703,
                                    "src": "3184:11:1",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 1680,
                                        "name": "uint",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3184:4:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "3183:13:1"
                        },
                        "src": "3160:257:1",
                        "virtual": false,
                        "visibility": "internal"
                    },
                    {
                        "body": {
                            "id": 1747,
                            "nodeType": "Block",
                            "src": "3485:295:1",
                            "statements": [
                                {
                                    "body": {
                                        "id": 1741,
                                        "nodeType": "Block",
                                        "src": "3538:197:1",
                                        "statements": [
                                            {
                                                "condition": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    },
                                                    "id": 1733,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "commonType": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "id": 1726,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "id": 1721,
                                                            "name": "amount",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1705,
                                                            "src": "3573:6:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": ">=",
                                                        "rightExpression": {
                                                            "expression": {
                                                                "baseExpression": {
                                                                    "id": 1722,
                                                                    "name": "feeTiers",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1611,
                                                                    "src": "3583:8:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_array$_t_struct$_FeeTier_$1511_storage_$dyn_storage",
                                                                        "typeString": "struct ZebecCard.FeeTier storage ref[] storage ref"
                                                                    }
                                                                },
                                                                "id": 1724,
                                                                "indexExpression": {
                                                                    "id": 1723,
                                                                    "name": "i",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1711,
                                                                    "src": "3592:1:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "IndexAccess",
                                                                "src": "3583:11:1",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_FeeTier_$1511_storage",
                                                                    "typeString": "struct ZebecCard.FeeTier storage ref"
                                                                }
                                                            },
                                                            "id": 1725,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberLocation": "3595:9:1",
                                                            "memberName": "minAmount",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 1506,
                                                            "src": "3583:21:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "src": "3573:31:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "&&",
                                                    "rightExpression": {
                                                        "commonType": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "id": 1732,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "id": 1727,
                                                            "name": "amount",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1705,
                                                            "src": "3624:6:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "<=",
                                                        "rightExpression": {
                                                            "expression": {
                                                                "baseExpression": {
                                                                    "id": 1728,
                                                                    "name": "feeTiers",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1611,
                                                                    "src": "3634:8:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_array$_t_struct$_FeeTier_$1511_storage_$dyn_storage",
                                                                        "typeString": "struct ZebecCard.FeeTier storage ref[] storage ref"
                                                                    }
                                                                },
                                                                "id": 1730,
                                                                "indexExpression": {
                                                                    "id": 1729,
                                                                    "name": "i",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1711,
                                                                    "src": "3643:1:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "IndexAccess",
                                                                "src": "3634:11:1",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_FeeTier_$1511_storage",
                                                                    "typeString": "struct ZebecCard.FeeTier storage ref"
                                                                }
                                                            },
                                                            "id": 1731,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberLocation": "3646:9:1",
                                                            "memberName": "maxAmount",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 1508,
                                                            "src": "3634:21:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "src": "3624:31:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        }
                                                    },
                                                    "src": "3573:82:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "id": 1740,
                                                "nodeType": "IfStatement",
                                                "src": "3552:173:1",
                                                "trueBody": {
                                                    "id": 1739,
                                                    "nodeType": "Block",
                                                    "src": "3670:55:1",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "expression": {
                                                                    "baseExpression": {
                                                                        "id": 1734,
                                                                        "name": "feeTiers",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 1611,
                                                                        "src": "3695:8:1",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_array$_t_struct$_FeeTier_$1511_storage_$dyn_storage",
                                                                            "typeString": "struct ZebecCard.FeeTier storage ref[] storage ref"
                                                                        }
                                                                    },
                                                                    "id": 1736,
                                                                    "indexExpression": {
                                                                        "id": 1735,
                                                                        "name": "i",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 1711,
                                                                        "src": "3704:1:1",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "IndexAccess",
                                                                    "src": "3695:11:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_struct$_FeeTier_$1511_storage",
                                                                        "typeString": "struct ZebecCard.FeeTier storage ref"
                                                                    }
                                                                },
                                                                "id": 1737,
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberLocation": "3707:3:1",
                                                                "memberName": "fee",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 1510,
                                                                "src": "3695:15:1",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "functionReturnParameters": 1709,
                                                            "id": 1738,
                                                            "nodeType": "Return",
                                                            "src": "3688:22:1"
                                                        }
                                                    ]
                                                }
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        },
                                        "id": 1717,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "id": 1714,
                                            "name": "i",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1711,
                                            "src": "3512:1:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "<",
                                        "rightExpression": {
                                            "expression": {
                                                "id": 1715,
                                                "name": "feeTiers",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1611,
                                                "src": "3516:8:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_struct$_FeeTier_$1511_storage_$dyn_storage",
                                                    "typeString": "struct ZebecCard.FeeTier storage ref[] storage ref"
                                                }
                                            },
                                            "id": 1716,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberLocation": "3525:6:1",
                                            "memberName": "length",
                                            "nodeType": "MemberAccess",
                                            "src": "3516:15:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "3512:19:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "id": 1742,
                                    "initializationExpression": {
                                        "assignments": [1711],
                                        "declarations": [
                                            {
                                                "constant": false,
                                                "id": 1711,
                                                "mutability": "mutable",
                                                "name": "i",
                                                "nameLocation": "3505:1:1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1742,
                                                "src": "3500:6:1",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 1710,
                                                    "name": "uint",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3500:4:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "id": 1713,
                                        "initialValue": {
                                            "hexValue": "30",
                                            "id": 1712,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "3509:1:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_rational_0_by_1",
                                                "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                        },
                                        "nodeType": "VariableDeclarationStatement",
                                        "src": "3500:10:1"
                                    },
                                    "loopExpression": {
                                        "expression": {
                                            "id": 1719,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "UnaryOperation",
                                            "operator": "++",
                                            "prefix": false,
                                            "src": "3533:3:1",
                                            "subExpression": {
                                                "id": 1718,
                                                "name": "i",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1711,
                                                "src": "3533:1:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "id": 1720,
                                        "nodeType": "ExpressionStatement",
                                        "src": "3533:3:1"
                                    },
                                    "nodeType": "ForStatement",
                                    "src": "3495:240:1"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "hexValue": "416d6f756e74206f7574206f662072616e6765",
                                                "id": 1744,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "3751:21:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_cfabd4029aae7d4bd8cb9ac1d82d4c2a1969182f7c65ecfae637bdd4963704d3",
                                                    "typeString": "literal_string \"Amount out of range\""
                                                },
                                                "value": "Amount out of range"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_stringliteral_cfabd4029aae7d4bd8cb9ac1d82d4c2a1969182f7c65ecfae637bdd4963704d3",
                                                    "typeString": "literal_string \"Amount out of range\""
                                                }
                                            ],
                                            "id": 1743,
                                            "name": "revert",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [4294967277, 4294967277],
                                            "referencedDeclaration": 4294967277,
                                            "src": "3744:6:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (string memory) pure"
                                            }
                                        },
                                        "id": 1745,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "3744:29:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 1746,
                                    "nodeType": "ExpressionStatement",
                                    "src": "3744:29:1"
                                }
                            ]
                        },
                        "functionSelector": "fcee45f4",
                        "id": 1748,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "getFee",
                        "nameLocation": "3432:6:1",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 1706,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 1705,
                                    "mutability": "mutable",
                                    "name": "amount",
                                    "nameLocation": "3447:6:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1748,
                                    "src": "3439:14:1",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 1704,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3439:7:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "3438:16:1"
                        },
                        "returnParameters": {
                            "id": 1709,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 1708,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1748,
                                    "src": "3476:7:1",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 1707,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3476:7:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "3475:9:1"
                        },
                        "scope": 2657,
                        "src": "3423:357:1",
                        "stateMutability": "view",
                        "virtual": false,
                        "visibility": "public"
                    },
                    {
                        "body": {
                            "id": 1757,
                            "nodeType": "Block",
                            "src": "3850:32:1",
                            "statements": [
                                {
                                    "expression": {
                                        "id": 1755,
                                        "name": "feeTiers",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1611,
                                        "src": "3867:8:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_struct$_FeeTier_$1511_storage_$dyn_storage",
                                            "typeString": "struct ZebecCard.FeeTier storage ref[] storage ref"
                                        }
                                    },
                                    "functionReturnParameters": 1754,
                                    "id": 1756,
                                    "nodeType": "Return",
                                    "src": "3860:15:1"
                                }
                            ]
                        },
                        "functionSelector": "e9a4d24f",
                        "id": 1758,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "getFeeTiers",
                        "nameLocation": "3795:11:1",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 1749,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "3806:2:1"
                        },
                        "returnParameters": {
                            "id": 1754,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 1753,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1758,
                                    "src": "3832:16:1",
                                    "stateVariable": false,
                                    "storageLocation": "memory",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_struct$_FeeTier_$1511_memory_ptr_$dyn_memory_ptr",
                                        "typeString": "struct ZebecCard.FeeTier[]"
                                    },
                                    "typeName": {
                                        "baseType": {
                                            "id": 1751,
                                            "nodeType": "UserDefinedTypeName",
                                            "pathNode": {
                                                "id": 1750,
                                                "name": "FeeTier",
                                                "nameLocations": ["3832:7:1"],
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 1511,
                                                "src": "3832:7:1"
                                            },
                                            "referencedDeclaration": 1511,
                                            "src": "3832:7:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_FeeTier_$1511_storage_ptr",
                                                "typeString": "struct ZebecCard.FeeTier"
                                            }
                                        },
                                        "id": 1752,
                                        "nodeType": "ArrayTypeName",
                                        "src": "3832:9:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_struct$_FeeTier_$1511_storage_$dyn_storage_ptr",
                                            "typeString": "struct ZebecCard.FeeTier[]"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "3831:18:1"
                        },
                        "scope": 2657,
                        "src": "3786:96:1",
                        "stateMutability": "view",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "body": {
                            "id": 1827,
                            "nodeType": "Block",
                            "src": "4004:498:1",
                            "statements": [
                                {
                                    "assignments": [1770],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 1770,
                                            "mutability": "mutable",
                                            "name": "found",
                                            "nameLocation": "4019:5:1",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 1827,
                                            "src": "4014:10:1",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                            },
                                            "typeName": {
                                                "id": 1769,
                                                "name": "bool",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "4014:4:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 1772,
                                    "initialValue": {
                                        "hexValue": "66616c7365",
                                        "id": 1771,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "bool",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "4027:5:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        },
                                        "value": "false"
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "4014:18:1"
                                },
                                {
                                    "body": {
                                        "id": 1811,
                                        "nodeType": "Block",
                                        "src": "4086:255:1",
                                        "statements": [
                                            {
                                                "condition": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    },
                                                    "id": 1796,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "commonType": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "id": 1789,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "id": 1784,
                                                            "name": "minAmount",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1760,
                                                            "src": "4121:9:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": ">=",
                                                        "rightExpression": {
                                                            "expression": {
                                                                "baseExpression": {
                                                                    "id": 1785,
                                                                    "name": "feeTiers",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1611,
                                                                    "src": "4134:8:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_array$_t_struct$_FeeTier_$1511_storage_$dyn_storage",
                                                                        "typeString": "struct ZebecCard.FeeTier storage ref[] storage ref"
                                                                    }
                                                                },
                                                                "id": 1787,
                                                                "indexExpression": {
                                                                    "id": 1786,
                                                                    "name": "i",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1774,
                                                                    "src": "4143:1:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "IndexAccess",
                                                                "src": "4134:11:1",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_FeeTier_$1511_storage",
                                                                    "typeString": "struct ZebecCard.FeeTier storage ref"
                                                                }
                                                            },
                                                            "id": 1788,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberLocation": "4146:9:1",
                                                            "memberName": "minAmount",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 1506,
                                                            "src": "4134:21:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "src": "4121:34:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "&&",
                                                    "rightExpression": {
                                                        "commonType": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "id": 1795,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "id": 1790,
                                                            "name": "minAmount",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1760,
                                                            "src": "4175:9:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "<=",
                                                        "rightExpression": {
                                                            "expression": {
                                                                "baseExpression": {
                                                                    "id": 1791,
                                                                    "name": "feeTiers",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1611,
                                                                    "src": "4188:8:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_array$_t_struct$_FeeTier_$1511_storage_$dyn_storage",
                                                                        "typeString": "struct ZebecCard.FeeTier storage ref[] storage ref"
                                                                    }
                                                                },
                                                                "id": 1793,
                                                                "indexExpression": {
                                                                    "id": 1792,
                                                                    "name": "i",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1774,
                                                                    "src": "4197:1:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "IndexAccess",
                                                                "src": "4188:11:1",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_FeeTier_$1511_storage",
                                                                    "typeString": "struct ZebecCard.FeeTier storage ref"
                                                                }
                                                            },
                                                            "id": 1794,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberLocation": "4200:9:1",
                                                            "memberName": "maxAmount",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 1508,
                                                            "src": "4188:21:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "src": "4175:34:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        }
                                                    },
                                                    "src": "4121:88:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "id": 1810,
                                                "nodeType": "IfStatement",
                                                "src": "4100:231:1",
                                                "trueBody": {
                                                    "id": 1809,
                                                    "nodeType": "Block",
                                                    "src": "4224:107:1",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "id": 1802,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftHandSide": {
                                                                    "expression": {
                                                                        "baseExpression": {
                                                                            "id": 1797,
                                                                            "name": "feeTiers",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 1611,
                                                                            "src": "4242:8:1",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_array$_t_struct$_FeeTier_$1511_storage_$dyn_storage",
                                                                                "typeString": "struct ZebecCard.FeeTier storage ref[] storage ref"
                                                                            }
                                                                        },
                                                                        "id": 1799,
                                                                        "indexExpression": {
                                                                            "id": 1798,
                                                                            "name": "i",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 1774,
                                                                            "src": "4251:1:1",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        },
                                                                        "isConstant": false,
                                                                        "isLValue": true,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "nodeType": "IndexAccess",
                                                                        "src": "4242:11:1",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_struct$_FeeTier_$1511_storage",
                                                                            "typeString": "struct ZebecCard.FeeTier storage ref"
                                                                        }
                                                                    },
                                                                    "id": 1800,
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": true,
                                                                    "memberLocation": "4254:3:1",
                                                                    "memberName": "fee",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 1510,
                                                                    "src": "4242:15:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "nodeType": "Assignment",
                                                                "operator": "=",
                                                                "rightHandSide": {
                                                                    "id": 1801,
                                                                    "name": "fee",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1764,
                                                                    "src": "4260:3:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "src": "4242:21:1",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "id": 1803,
                                                            "nodeType": "ExpressionStatement",
                                                            "src": "4242:21:1"
                                                        },
                                                        {
                                                            "expression": {
                                                                "id": 1806,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftHandSide": {
                                                                    "id": 1804,
                                                                    "name": "found",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1770,
                                                                    "src": "4281:5:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bool",
                                                                        "typeString": "bool"
                                                                    }
                                                                },
                                                                "nodeType": "Assignment",
                                                                "operator": "=",
                                                                "rightHandSide": {
                                                                    "hexValue": "74727565",
                                                                    "id": 1805,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "bool",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "4289:4:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bool",
                                                                        "typeString": "bool"
                                                                    },
                                                                    "value": "true"
                                                                },
                                                                "src": "4281:12:1",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                }
                                                            },
                                                            "id": 1807,
                                                            "nodeType": "ExpressionStatement",
                                                            "src": "4281:12:1"
                                                        },
                                                        {
                                                            "id": 1808,
                                                            "nodeType": "Break",
                                                            "src": "4311:5:1"
                                                        }
                                                    ]
                                                }
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        },
                                        "id": 1780,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "id": 1777,
                                            "name": "i",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1774,
                                            "src": "4060:1:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "<",
                                        "rightExpression": {
                                            "expression": {
                                                "id": 1778,
                                                "name": "feeTiers",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1611,
                                                "src": "4064:8:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_struct$_FeeTier_$1511_storage_$dyn_storage",
                                                    "typeString": "struct ZebecCard.FeeTier storage ref[] storage ref"
                                                }
                                            },
                                            "id": 1779,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberLocation": "4073:6:1",
                                            "memberName": "length",
                                            "nodeType": "MemberAccess",
                                            "src": "4064:15:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "4060:19:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "id": 1812,
                                    "initializationExpression": {
                                        "assignments": [1774],
                                        "declarations": [
                                            {
                                                "constant": false,
                                                "id": 1774,
                                                "mutability": "mutable",
                                                "name": "i",
                                                "nameLocation": "4053:1:1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1812,
                                                "src": "4048:6:1",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 1773,
                                                    "name": "uint",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4048:4:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "id": 1776,
                                        "initialValue": {
                                            "hexValue": "30",
                                            "id": 1775,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "4057:1:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_rational_0_by_1",
                                                "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                        },
                                        "nodeType": "VariableDeclarationStatement",
                                        "src": "4048:10:1"
                                    },
                                    "loopExpression": {
                                        "expression": {
                                            "id": 1782,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "UnaryOperation",
                                            "operator": "++",
                                            "prefix": false,
                                            "src": "4081:3:1",
                                            "subExpression": {
                                                "id": 1781,
                                                "name": "i",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1774,
                                                "src": "4081:1:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "id": 1783,
                                        "nodeType": "ExpressionStatement",
                                        "src": "4081:3:1"
                                    },
                                    "nodeType": "ForStatement",
                                    "src": "4043:298:1"
                                },
                                {
                                    "condition": {
                                        "id": 1814,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "UnaryOperation",
                                        "operator": "!",
                                        "prefix": true,
                                        "src": "4355:6:1",
                                        "subExpression": {
                                            "id": 1813,
                                            "name": "found",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1770,
                                            "src": "4356:5:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                            }
                                        },
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "id": 1826,
                                    "nodeType": "IfStatement",
                                    "src": "4351:145:1",
                                    "trueBody": {
                                        "id": 1825,
                                        "nodeType": "Block",
                                        "src": "4363:133:1",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 1819,
                                                                    "name": "minAmount",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1760,
                                                                    "src": "4428:9:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                {
                                                                    "id": 1820,
                                                                    "name": "maxAmount",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1762,
                                                                    "src": "4450:9:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                {
                                                                    "id": 1821,
                                                                    "name": "fee",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1764,
                                                                    "src": "4466:3:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    },
                                                                    {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    },
                                                                    {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                ],
                                                                "id": 1818,
                                                                "name": "FeeTier",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1511,
                                                                "src": "4408:7:1",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_struct$_FeeTier_$1511_storage_ptr_$",
                                                                    "typeString": "type(struct ZebecCard.FeeTier storage pointer)"
                                                                }
                                                            },
                                                            "id": 1822,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "structConstructorCall",
                                                            "lValueRequested": false,
                                                            "nameLocations": ["4417:9:1", "4439:9:1", "4461:3:1"],
                                                            "names": ["minAmount", "maxAmount", "fee"],
                                                            "nodeType": "FunctionCall",
                                                            "src": "4408:63:1",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_FeeTier_$1511_memory_ptr",
                                                                "typeString": "struct ZebecCard.FeeTier memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_struct$_FeeTier_$1511_memory_ptr",
                                                                "typeString": "struct ZebecCard.FeeTier memory"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "id": 1815,
                                                            "name": "feeTiers",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1611,
                                                            "src": "4377:8:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_array$_t_struct$_FeeTier_$1511_storage_$dyn_storage",
                                                                "typeString": "struct ZebecCard.FeeTier storage ref[] storage ref"
                                                            }
                                                        },
                                                        "id": 1817,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberLocation": "4386:4:1",
                                                        "memberName": "push",
                                                        "nodeType": "MemberAccess",
                                                        "src": "4377:13:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_struct$_FeeTier_$1511_storage_$dyn_storage_ptr_$_t_struct$_FeeTier_$1511_storage_$returns$__$attached_to$_t_array$_t_struct$_FeeTier_$1511_storage_$dyn_storage_ptr_$",
                                                            "typeString": "function (struct ZebecCard.FeeTier storage ref[] storage pointer,struct ZebecCard.FeeTier storage ref)"
                                                        }
                                                    },
                                                    "id": 1823,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "nameLocations": [],
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "4377:108:1",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 1824,
                                                "nodeType": "ExpressionStatement",
                                                "src": "4377:108:1"
                                            }
                                        ]
                                    }
                                }
                            ]
                        },
                        "functionSelector": "5b65b9ab",
                        "id": 1828,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [
                            {
                                "id": 1767,
                                "kind": "modifierInvocation",
                                "modifierName": {
                                    "id": 1766,
                                    "name": "onlyOwner",
                                    "nameLocations": ["3994:9:1"],
                                    "nodeType": "IdentifierPath",
                                    "referencedDeclaration": 2801,
                                    "src": "3994:9:1"
                                },
                                "nodeType": "ModifierInvocation",
                                "src": "3994:9:1"
                            }
                        ],
                        "name": "setFee",
                        "nameLocation": "3897:6:1",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 1765,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 1760,
                                    "mutability": "mutable",
                                    "name": "minAmount",
                                    "nameLocation": "3921:9:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1828,
                                    "src": "3913:17:1",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 1759,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3913:7:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 1762,
                                    "mutability": "mutable",
                                    "name": "maxAmount",
                                    "nameLocation": "3948:9:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1828,
                                    "src": "3940:17:1",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 1761,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3940:7:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 1764,
                                    "mutability": "mutable",
                                    "name": "fee",
                                    "nameLocation": "3975:3:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1828,
                                    "src": "3967:11:1",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 1763,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3967:7:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "3903:81:1"
                        },
                        "returnParameters": {
                            "id": 1768,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "4004:0:1"
                        },
                        "scope": 2657,
                        "src": "3888:614:1",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "body": {
                            "id": 1861,
                            "nodeType": "Block",
                            "src": "4575:170:1",
                            "statements": [
                                {
                                    "expression": {
                                        "id": 1838,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "UnaryOperation",
                                        "operator": "delete",
                                        "prefix": true,
                                        "src": "4585:15:1",
                                        "subExpression": {
                                            "id": 1837,
                                            "name": "feeTiers",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1611,
                                            "src": "4592:8:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_struct$_FeeTier_$1511_storage_$dyn_storage",
                                                "typeString": "struct ZebecCard.FeeTier storage ref[] storage ref"
                                            }
                                        },
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 1839,
                                    "nodeType": "ExpressionStatement",
                                    "src": "4585:15:1"
                                },
                                {
                                    "body": {
                                        "id": 1859,
                                        "nodeType": "Block",
                                        "src": "4688:51:1",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "baseExpression": {
                                                                "id": 1854,
                                                                "name": "newTiers",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1832,
                                                                "src": "4716:8:1",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_array$_t_struct$_FeeTier_$1511_memory_ptr_$dyn_memory_ptr",
                                                                    "typeString": "struct ZebecCard.FeeTier memory[] memory"
                                                                }
                                                            },
                                                            "id": 1856,
                                                            "indexExpression": {
                                                                "id": 1855,
                                                                "name": "i",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1841,
                                                                "src": "4725:1:1",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "IndexAccess",
                                                            "src": "4716:11:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_FeeTier_$1511_memory_ptr",
                                                                "typeString": "struct ZebecCard.FeeTier memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_struct$_FeeTier_$1511_memory_ptr",
                                                                "typeString": "struct ZebecCard.FeeTier memory"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "id": 1851,
                                                            "name": "feeTiers",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1611,
                                                            "src": "4702:8:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_array$_t_struct$_FeeTier_$1511_storage_$dyn_storage",
                                                                "typeString": "struct ZebecCard.FeeTier storage ref[] storage ref"
                                                            }
                                                        },
                                                        "id": 1853,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberLocation": "4711:4:1",
                                                        "memberName": "push",
                                                        "nodeType": "MemberAccess",
                                                        "src": "4702:13:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_struct$_FeeTier_$1511_storage_$dyn_storage_ptr_$_t_struct$_FeeTier_$1511_storage_$returns$__$attached_to$_t_array$_t_struct$_FeeTier_$1511_storage_$dyn_storage_ptr_$",
                                                            "typeString": "function (struct ZebecCard.FeeTier storage ref[] storage pointer,struct ZebecCard.FeeTier storage ref)"
                                                        }
                                                    },
                                                    "id": 1857,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "nameLocations": [],
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "4702:26:1",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 1858,
                                                "nodeType": "ExpressionStatement",
                                                "src": "4702:26:1"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        },
                                        "id": 1847,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "id": 1844,
                                            "name": "i",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1841,
                                            "src": "4662:1:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "<",
                                        "rightExpression": {
                                            "expression": {
                                                "id": 1845,
                                                "name": "newTiers",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1832,
                                                "src": "4666:8:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_struct$_FeeTier_$1511_memory_ptr_$dyn_memory_ptr",
                                                    "typeString": "struct ZebecCard.FeeTier memory[] memory"
                                                }
                                            },
                                            "id": 1846,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberLocation": "4675:6:1",
                                            "memberName": "length",
                                            "nodeType": "MemberAccess",
                                            "src": "4666:15:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "4662:19:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "id": 1860,
                                    "initializationExpression": {
                                        "assignments": [1841],
                                        "declarations": [
                                            {
                                                "constant": false,
                                                "id": 1841,
                                                "mutability": "mutable",
                                                "name": "i",
                                                "nameLocation": "4655:1:1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1860,
                                                "src": "4647:9:1",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 1840,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4647:7:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "id": 1843,
                                        "initialValue": {
                                            "hexValue": "30",
                                            "id": 1842,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "4659:1:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_rational_0_by_1",
                                                "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                        },
                                        "nodeType": "VariableDeclarationStatement",
                                        "src": "4647:13:1"
                                    },
                                    "loopExpression": {
                                        "expression": {
                                            "id": 1849,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "UnaryOperation",
                                            "operator": "++",
                                            "prefix": false,
                                            "src": "4683:3:1",
                                            "subExpression": {
                                                "id": 1848,
                                                "name": "i",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1841,
                                                "src": "4683:1:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "id": 1850,
                                        "nodeType": "ExpressionStatement",
                                        "src": "4683:3:1"
                                    },
                                    "nodeType": "ForStatement",
                                    "src": "4642:97:1"
                                }
                            ]
                        },
                        "functionSelector": "166dbb73",
                        "id": 1862,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [
                            {
                                "id": 1835,
                                "kind": "modifierInvocation",
                                "modifierName": {
                                    "id": 1834,
                                    "name": "onlyOwner",
                                    "nameLocations": ["4565:9:1"],
                                    "nodeType": "IdentifierPath",
                                    "referencedDeclaration": 2801,
                                    "src": "4565:9:1"
                                },
                                "nodeType": "ModifierInvocation",
                                "src": "4565:9:1"
                            }
                        ],
                        "name": "setFeeArray",
                        "nameLocation": "4517:11:1",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 1833,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 1832,
                                    "mutability": "mutable",
                                    "name": "newTiers",
                                    "nameLocation": "4546:8:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1862,
                                    "src": "4529:25:1",
                                    "stateVariable": false,
                                    "storageLocation": "memory",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_struct$_FeeTier_$1511_memory_ptr_$dyn_memory_ptr",
                                        "typeString": "struct ZebecCard.FeeTier[]"
                                    },
                                    "typeName": {
                                        "baseType": {
                                            "id": 1830,
                                            "nodeType": "UserDefinedTypeName",
                                            "pathNode": {
                                                "id": 1829,
                                                "name": "FeeTier",
                                                "nameLocations": ["4529:7:1"],
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 1511,
                                                "src": "4529:7:1"
                                            },
                                            "referencedDeclaration": 1511,
                                            "src": "4529:7:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_FeeTier_$1511_storage_ptr",
                                                "typeString": "struct ZebecCard.FeeTier"
                                            }
                                        },
                                        "id": 1831,
                                        "nodeType": "ArrayTypeName",
                                        "src": "4529:9:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_struct$_FeeTier_$1511_storage_$dyn_storage_ptr",
                                            "typeString": "struct ZebecCard.FeeTier[]"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "4528:27:1"
                        },
                        "returnParameters": {
                            "id": 1836,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "4575:0:1"
                        },
                        "scope": 2657,
                        "src": "4508:237:1",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "body": {
                            "id": 1876,
                            "nodeType": "Block",
                            "src": "4920:49:1",
                            "statements": [
                                {
                                    "expression": {
                                        "id": 1874,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "expression": {
                                                "id": 1870,
                                                "name": "cardConfig",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1594,
                                                "src": "4930:10:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_CardConfig_$1532_storage",
                                                    "typeString": "struct ZebecCard.CardConfig storage ref"
                                                }
                                            },
                                            "id": 1872,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "memberLocation": "4941:9:1",
                                            "memberName": "nativeFee",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 1513,
                                            "src": "4930:20:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "id": 1873,
                                            "name": "nativeFee",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1865,
                                            "src": "4953:9:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "4930:32:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "id": 1875,
                                    "nodeType": "ExpressionStatement",
                                    "src": "4930:32:1"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 1863,
                            "nodeType": "StructuredDocumentation",
                            "src": "4751:104:1",
                            "text": " @notice Sets the native fee for the card.\n @param nativeFee The new native fee."
                        },
                        "functionSelector": "b91a1e8f",
                        "id": 1877,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [
                            {
                                "id": 1868,
                                "kind": "modifierInvocation",
                                "modifierName": {
                                    "id": 1867,
                                    "name": "onlyOwner",
                                    "nameLocations": ["4910:9:1"],
                                    "nodeType": "IdentifierPath",
                                    "referencedDeclaration": 2801,
                                    "src": "4910:9:1"
                                },
                                "nodeType": "ModifierInvocation",
                                "src": "4910:9:1"
                            }
                        ],
                        "name": "setNativeFee",
                        "nameLocation": "4869:12:1",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 1866,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 1865,
                                    "mutability": "mutable",
                                    "name": "nativeFee",
                                    "nameLocation": "4890:9:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1877,
                                    "src": "4882:17:1",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 1864,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "4882:7:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "4881:19:1"
                        },
                        "returnParameters": {
                            "id": 1869,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "4920:0:1"
                        },
                        "scope": 2657,
                        "src": "4860:109:1",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "body": {
                            "id": 1891,
                            "nodeType": "Block",
                            "src": "5161:55:1",
                            "statements": [
                                {
                                    "expression": {
                                        "id": 1889,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "expression": {
                                                "id": 1885,
                                                "name": "cardConfig",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1594,
                                                "src": "5171:10:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_CardConfig_$1532_storage",
                                                    "typeString": "struct ZebecCard.CardConfig storage ref"
                                                }
                                            },
                                            "id": 1887,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "memberLocation": "5182:12:1",
                                            "memberName": "nonNativeFee",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 1515,
                                            "src": "5171:23:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "id": 1888,
                                            "name": "nonNativeFee",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1880,
                                            "src": "5197:12:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "5171:38:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "id": 1890,
                                    "nodeType": "ExpressionStatement",
                                    "src": "5171:38:1"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 1878,
                            "nodeType": "StructuredDocumentation",
                            "src": "4975:115:1",
                            "text": " @notice Sets the non-native fee for the card.\n @param nonNativeFee The new non-native fee."
                        },
                        "functionSelector": "e591f2ff",
                        "id": 1892,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [
                            {
                                "id": 1883,
                                "kind": "modifierInvocation",
                                "modifierName": {
                                    "id": 1882,
                                    "name": "onlyOwner",
                                    "nameLocations": ["5151:9:1"],
                                    "nodeType": "IdentifierPath",
                                    "referencedDeclaration": 2801,
                                    "src": "5151:9:1"
                                },
                                "nodeType": "ModifierInvocation",
                                "src": "5151:9:1"
                            }
                        ],
                        "name": "setNonNativeFee",
                        "nameLocation": "5104:15:1",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 1881,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 1880,
                                    "mutability": "mutable",
                                    "name": "nonNativeFee",
                                    "nameLocation": "5128:12:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1892,
                                    "src": "5120:20:1",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 1879,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "5120:7:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "5119:22:1"
                        },
                        "returnParameters": {
                            "id": 1884,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "5161:0:1"
                        },
                        "scope": 2657,
                        "src": "5095:121:1",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "body": {
                            "id": 1906,
                            "nodeType": "Block",
                            "src": "5396:51:1",
                            "statements": [
                                {
                                    "expression": {
                                        "id": 1904,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "expression": {
                                                "id": 1900,
                                                "name": "cardConfig",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1594,
                                                "src": "5406:10:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_CardConfig_$1532_storage",
                                                    "typeString": "struct ZebecCard.CardConfig storage ref"
                                                }
                                            },
                                            "id": 1902,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "memberLocation": "5417:10:1",
                                            "memberName": "revenueFee",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 1517,
                                            "src": "5406:21:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "id": 1903,
                                            "name": "revenueFee",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1895,
                                            "src": "5430:10:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "5406:34:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "id": 1905,
                                    "nodeType": "ExpressionStatement",
                                    "src": "5406:34:1"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 1893,
                            "nodeType": "StructuredDocumentation",
                            "src": "5222:107:1",
                            "text": " @notice Sets the revenue fee for the card.\n @param revenueFee The new revenue fee."
                        },
                        "functionSelector": "14435445",
                        "id": 1907,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [
                            {
                                "id": 1898,
                                "kind": "modifierInvocation",
                                "modifierName": {
                                    "id": 1897,
                                    "name": "onlyOwner",
                                    "nameLocations": ["5386:9:1"],
                                    "nodeType": "IdentifierPath",
                                    "referencedDeclaration": 2801,
                                    "src": "5386:9:1"
                                },
                                "nodeType": "ModifierInvocation",
                                "src": "5386:9:1"
                            }
                        ],
                        "name": "setRevenueFee",
                        "nameLocation": "5343:13:1",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 1896,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 1895,
                                    "mutability": "mutable",
                                    "name": "revenueFee",
                                    "nameLocation": "5365:10:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1907,
                                    "src": "5357:18:1",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 1894,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "5357:7:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "5356:20:1"
                        },
                        "returnParameters": {
                            "id": 1899,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "5396:0:1"
                        },
                        "scope": 2657,
                        "src": "5334:113:1",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "body": {
                            "id": 1921,
                            "nodeType": "Block",
                            "src": "5640:55:1",
                            "statements": [
                                {
                                    "expression": {
                                        "id": 1919,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "expression": {
                                                "id": 1915,
                                                "name": "cardConfig",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1594,
                                                "src": "5650:10:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_CardConfig_$1532_storage",
                                                    "typeString": "struct ZebecCard.CardConfig storage ref"
                                                }
                                            },
                                            "id": 1917,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "memberLocation": "5661:12:1",
                                            "memberName": "revenueVault",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 1523,
                                            "src": "5650:23:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "id": 1918,
                                            "name": "revenueVault",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1910,
                                            "src": "5676:12:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "src": "5650:38:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "id": 1920,
                                    "nodeType": "ExpressionStatement",
                                    "src": "5650:38:1"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 1908,
                            "nodeType": "StructuredDocumentation",
                            "src": "5453:116:1",
                            "text": " @notice Sets the revenue vault address.\n @param revenueVault The new revenue vault address."
                        },
                        "functionSelector": "4d68e925",
                        "id": 1922,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [
                            {
                                "id": 1913,
                                "kind": "modifierInvocation",
                                "modifierName": {
                                    "id": 1912,
                                    "name": "onlyOwner",
                                    "nameLocations": ["5630:9:1"],
                                    "nodeType": "IdentifierPath",
                                    "referencedDeclaration": 2801,
                                    "src": "5630:9:1"
                                },
                                "nodeType": "ModifierInvocation",
                                "src": "5630:9:1"
                            }
                        ],
                        "name": "setRevenueVault",
                        "nameLocation": "5583:15:1",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 1911,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 1910,
                                    "mutability": "mutable",
                                    "name": "revenueVault",
                                    "nameLocation": "5607:12:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1922,
                                    "src": "5599:20:1",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 1909,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "5599:7:1",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "5598:22:1"
                        },
                        "returnParameters": {
                            "id": 1914,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "5640:0:1"
                        },
                        "scope": 2657,
                        "src": "5574:121:1",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "body": {
                            "id": 1936,
                            "nodeType": "Block",
                            "src": "5873:49:1",
                            "statements": [
                                {
                                    "expression": {
                                        "id": 1934,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "expression": {
                                                "id": 1930,
                                                "name": "cardConfig",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1594,
                                                "src": "5883:10:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_CardConfig_$1532_storage",
                                                    "typeString": "struct ZebecCard.CardConfig storage ref"
                                                }
                                            },
                                            "id": 1932,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "memberLocation": "5894:9:1",
                                            "memberName": "cardVault",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 1521,
                                            "src": "5883:20:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "id": 1933,
                                            "name": "cardVault",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1925,
                                            "src": "5906:9:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "src": "5883:32:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "id": 1935,
                                    "nodeType": "ExpressionStatement",
                                    "src": "5883:32:1"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 1923,
                            "nodeType": "StructuredDocumentation",
                            "src": "5701:107:1",
                            "text": " @notice Sets the card vault address.\n @param cardVault The new card vault address."
                        },
                        "functionSelector": "d895a46b",
                        "id": 1937,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [
                            {
                                "id": 1928,
                                "kind": "modifierInvocation",
                                "modifierName": {
                                    "id": 1927,
                                    "name": "onlyOwner",
                                    "nameLocations": ["5863:9:1"],
                                    "nodeType": "IdentifierPath",
                                    "referencedDeclaration": 2801,
                                    "src": "5863:9:1"
                                },
                                "nodeType": "ModifierInvocation",
                                "src": "5863:9:1"
                            }
                        ],
                        "name": "setCardVault",
                        "nameLocation": "5822:12:1",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 1926,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 1925,
                                    "mutability": "mutable",
                                    "name": "cardVault",
                                    "nameLocation": "5843:9:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1937,
                                    "src": "5835:17:1",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 1924,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "5835:7:1",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "5834:19:1"
                        },
                        "returnParameters": {
                            "id": 1929,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "5873:0:1"
                        },
                        "scope": 2657,
                        "src": "5813:109:1",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "body": {
                            "id": 1951,
                            "nodeType": "Block",
                            "src": "6106:53:1",
                            "statements": [
                                {
                                    "expression": {
                                        "id": 1949,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "expression": {
                                                "id": 1945,
                                                "name": "cardConfig",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1594,
                                                "src": "6116:10:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_CardConfig_$1532_storage",
                                                    "typeString": "struct ZebecCard.CardConfig storage ref"
                                                }
                                            },
                                            "id": 1947,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "memberLocation": "6127:11:1",
                                            "memberName": "usdcAddress",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 1525,
                                            "src": "6116:22:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "id": 1948,
                                            "name": "usdcAddress",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1940,
                                            "src": "6141:11:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "src": "6116:36:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "id": 1950,
                                    "nodeType": "ExpressionStatement",
                                    "src": "6116:36:1"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 1938,
                            "nodeType": "StructuredDocumentation",
                            "src": "5928:109:1",
                            "text": " @notice Sets the USDC token address.\n @param usdcAddress The new USDC token address."
                        },
                        "functionSelector": "d38bcdee",
                        "id": 1952,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [
                            {
                                "id": 1943,
                                "kind": "modifierInvocation",
                                "modifierName": {
                                    "id": 1942,
                                    "name": "onlyOwner",
                                    "nameLocations": ["6096:9:1"],
                                    "nodeType": "IdentifierPath",
                                    "referencedDeclaration": 2801,
                                    "src": "6096:9:1"
                                },
                                "nodeType": "ModifierInvocation",
                                "src": "6096:9:1"
                            }
                        ],
                        "name": "setUsdcAddress",
                        "nameLocation": "6051:14:1",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 1941,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 1940,
                                    "mutability": "mutable",
                                    "name": "usdcAddress",
                                    "nameLocation": "6074:11:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1952,
                                    "src": "6066:19:1",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 1939,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "6066:7:1",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "6065:21:1"
                        },
                        "returnParameters": {
                            "id": 1944,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "6106:0:1"
                        },
                        "scope": 2657,
                        "src": "6042:117:1",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "body": {
                            "id": 1966,
                            "nodeType": "Block",
                            "src": "6372:53:1",
                            "statements": [
                                {
                                    "expression": {
                                        "id": 1964,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "expression": {
                                                "id": 1960,
                                                "name": "cardConfig",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1594,
                                                "src": "6382:10:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_CardConfig_$1532_storage",
                                                    "typeString": "struct ZebecCard.CardConfig storage ref"
                                                }
                                            },
                                            "id": 1962,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "memberLocation": "6393:13:1",
                                            "memberName": "minCardAmount",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 1527,
                                            "src": "6382:24:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "id": 1963,
                                            "name": "minAmount",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1955,
                                            "src": "6409:9:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "6382:36:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "id": 1965,
                                    "nodeType": "ExpressionStatement",
                                    "src": "6382:36:1"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 1953,
                            "nodeType": "StructuredDocumentation",
                            "src": "6165:138:1",
                            "text": " @notice Sets the minimum card amount upto which user is allowed to buy\n @param minAmount The minimum card amount."
                        },
                        "functionSelector": "48455ff0",
                        "id": 1967,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [
                            {
                                "id": 1958,
                                "kind": "modifierInvocation",
                                "modifierName": {
                                    "id": 1957,
                                    "name": "onlyOwner",
                                    "nameLocations": ["6362:9:1"],
                                    "nodeType": "IdentifierPath",
                                    "referencedDeclaration": 2801,
                                    "src": "6362:9:1"
                                },
                                "nodeType": "ModifierInvocation",
                                "src": "6362:9:1"
                            }
                        ],
                        "name": "setMinCardAmount",
                        "nameLocation": "6317:16:1",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 1956,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 1955,
                                    "mutability": "mutable",
                                    "name": "minAmount",
                                    "nameLocation": "6342:9:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1967,
                                    "src": "6334:17:1",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 1954,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "6334:7:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "6333:19:1"
                        },
                        "returnParameters": {
                            "id": 1959,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "6372:0:1"
                        },
                        "scope": 2657,
                        "src": "6308:117:1",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "body": {
                            "id": 1981,
                            "nodeType": "Block",
                            "src": "6637:53:1",
                            "statements": [
                                {
                                    "expression": {
                                        "id": 1979,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "expression": {
                                                "id": 1975,
                                                "name": "cardConfig",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1594,
                                                "src": "6647:10:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_CardConfig_$1532_storage",
                                                    "typeString": "struct ZebecCard.CardConfig storage ref"
                                                }
                                            },
                                            "id": 1977,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "memberLocation": "6658:13:1",
                                            "memberName": "maxCardAmount",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 1529,
                                            "src": "6647:24:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "id": 1978,
                                            "name": "maxAmount",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1970,
                                            "src": "6674:9:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "6647:36:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "id": 1980,
                                    "nodeType": "ExpressionStatement",
                                    "src": "6647:36:1"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 1968,
                            "nodeType": "StructuredDocumentation",
                            "src": "6431:137:1",
                            "text": " @notice Sets the maximum card amount upto which user is allowed to buy\n @param maxAmount The maximum card amount"
                        },
                        "functionSelector": "b0d097de",
                        "id": 1982,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [
                            {
                                "id": 1973,
                                "kind": "modifierInvocation",
                                "modifierName": {
                                    "id": 1972,
                                    "name": "onlyOwner",
                                    "nameLocations": ["6627:9:1"],
                                    "nodeType": "IdentifierPath",
                                    "referencedDeclaration": 2801,
                                    "src": "6627:9:1"
                                },
                                "nodeType": "ModifierInvocation",
                                "src": "6627:9:1"
                            }
                        ],
                        "name": "setMaxCardAmount",
                        "nameLocation": "6582:16:1",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 1971,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 1970,
                                    "mutability": "mutable",
                                    "name": "maxAmount",
                                    "nameLocation": "6607:9:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1982,
                                    "src": "6599:17:1",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 1969,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "6599:7:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "6598:19:1"
                        },
                        "returnParameters": {
                            "id": 1974,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "6637:0:1"
                        },
                        "scope": 2657,
                        "src": "6573:117:1",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "body": {
                            "id": 1996,
                            "nodeType": "Block",
                            "src": "6904:65:1",
                            "statements": [
                                {
                                    "expression": {
                                        "id": 1994,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "expression": {
                                                "id": 1990,
                                                "name": "cardConfig",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1594,
                                                "src": "6914:10:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_CardConfig_$1532_storage",
                                                    "typeString": "struct ZebecCard.CardConfig storage ref"
                                                }
                                            },
                                            "id": 1992,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "memberLocation": "6925:17:1",
                                            "memberName": "dailyCardBuyLimit",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 1531,
                                            "src": "6914:28:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "id": 1993,
                                            "name": "dailyCardBuyLimit",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1985,
                                            "src": "6945:17:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "6914:48:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "id": 1995,
                                    "nodeType": "ExpressionStatement",
                                    "src": "6914:48:1"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 1983,
                            "nodeType": "StructuredDocumentation",
                            "src": "6696:113:1",
                            "text": " @notice Sets the daily limit for buying card.\n @param dailyCardBuyLimit The daily limit."
                        },
                        "functionSelector": "bea9c43e",
                        "id": 1997,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [
                            {
                                "id": 1988,
                                "kind": "modifierInvocation",
                                "modifierName": {
                                    "id": 1987,
                                    "name": "onlyOwner",
                                    "nameLocations": ["6894:9:1"],
                                    "nodeType": "IdentifierPath",
                                    "referencedDeclaration": 2801,
                                    "src": "6894:9:1"
                                },
                                "nodeType": "ModifierInvocation",
                                "src": "6894:9:1"
                            }
                        ],
                        "name": "setDailyCardBuyLimit",
                        "nameLocation": "6823:20:1",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 1986,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 1985,
                                    "mutability": "mutable",
                                    "name": "dailyCardBuyLimit",
                                    "nameLocation": "6861:17:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1997,
                                    "src": "6853:25:1",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 1984,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "6853:7:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "6843:41:1"
                        },
                        "returnParameters": {
                            "id": 1989,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "6904:0:1"
                        },
                        "scope": 2657,
                        "src": "6814:155:1",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "body": {
                            "id": 2064,
                            "nodeType": "Block",
                            "src": "7174:548:1",
                            "statements": [
                                {
                                    "assignments": [2008],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 2008,
                                            "mutability": "mutable",
                                            "name": "token",
                                            "nameLocation": "7191:5:1",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 2064,
                                            "src": "7184:12:1",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_IERC20_$3789",
                                                "typeString": "contract IERC20"
                                            },
                                            "typeName": {
                                                "id": 2007,
                                                "nodeType": "UserDefinedTypeName",
                                                "pathNode": {
                                                    "id": 2006,
                                                    "name": "IERC20",
                                                    "nameLocations": ["7184:6:1"],
                                                    "nodeType": "IdentifierPath",
                                                    "referencedDeclaration": 3789,
                                                    "src": "7184:6:1"
                                                },
                                                "referencedDeclaration": 3789,
                                                "src": "7184:6:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_IERC20_$3789",
                                                    "typeString": "contract IERC20"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 2013,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "expression": {
                                                    "id": 2010,
                                                    "name": "cardConfig",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 1594,
                                                    "src": "7206:10:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_CardConfig_$1532_storage",
                                                        "typeString": "struct ZebecCard.CardConfig storage ref"
                                                    }
                                                },
                                                "id": 2011,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberLocation": "7217:11:1",
                                                "memberName": "usdcAddress",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 1525,
                                                "src": "7206:22:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            ],
                                            "id": 2009,
                                            "name": "IERC20",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3789,
                                            "src": "7199:6:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_contract$_IERC20_$3789_$",
                                                "typeString": "type(contract IERC20)"
                                            }
                                        },
                                        "id": 2012,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "7199:30:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IERC20_$3789",
                                            "typeString": "contract IERC20"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "7184:45:1"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "commonType": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "id": 2017,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "id": 2015,
                                                    "name": "amount",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 2000,
                                                    "src": "7280:6:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "!=",
                                                "rightExpression": {
                                                    "hexValue": "30",
                                                    "id": 2016,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "7290:1:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_rational_0_by_1",
                                                        "typeString": "int_const 0"
                                                    },
                                                    "value": "0"
                                                },
                                                "src": "7280:11:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            {
                                                "hexValue": "496e76616c696420616d6f756e74",
                                                "id": 2018,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "7293:16:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_2fd1dfd944df9898ee4c79794168926172c3d96d7664ff9919bb7080bb018af1",
                                                    "typeString": "literal_string \"Invalid amount\""
                                                },
                                                "value": "Invalid amount"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                {
                                                    "typeIdentifier": "t_stringliteral_2fd1dfd944df9898ee4c79794168926172c3d96d7664ff9919bb7080bb018af1",
                                                    "typeString": "literal_string \"Invalid amount\""
                                                }
                                            ],
                                            "id": 2014,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [4294967278, 4294967278],
                                            "referencedDeclaration": 4294967278,
                                            "src": "7272:7:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (bool,string memory) pure"
                                            }
                                        },
                                        "id": 2019,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "7272:38:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 2020,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7272:38:1"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "expression": {
                                                    "id": 2024,
                                                    "name": "msg",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 4294967281,
                                                    "src": "7344:3:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_magic_message",
                                                        "typeString": "msg"
                                                    }
                                                },
                                                "id": 2025,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberLocation": "7348:6:1",
                                                "memberName": "sender",
                                                "nodeType": "MemberAccess",
                                                "src": "7344:10:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "id": 2028,
                                                        "name": "this",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4294967268,
                                                        "src": "7364:4:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_contract$_ZebecCard_$2657",
                                                            "typeString": "contract ZebecCard"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_contract$_ZebecCard_$2657",
                                                            "typeString": "contract ZebecCard"
                                                        }
                                                    ],
                                                    "id": 2027,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "lValueRequested": false,
                                                    "nodeType": "ElementaryTypeNameExpression",
                                                    "src": "7356:7:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_address_$",
                                                        "typeString": "type(address)"
                                                    },
                                                    "typeName": {
                                                        "id": 2026,
                                                        "name": "address",
                                                        "nodeType": "ElementaryTypeName",
                                                        "src": "7356:7:1",
                                                        "typeDescriptions": {}
                                                    }
                                                },
                                                "id": 2029,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "nameLocations": [],
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "7356:13:1",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "id": 2030,
                                                "name": "amount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2000,
                                                "src": "7371:6:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "expression": {
                                                "id": 2021,
                                                "name": "token",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2008,
                                                "src": "7321:5:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_IERC20_$3789",
                                                    "typeString": "contract IERC20"
                                                }
                                            },
                                            "id": 2023,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberLocation": "7327:16:1",
                                            "memberName": "safeTransferFrom",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 3902,
                                            "src": "7321:22:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$3789_$_t_address_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$3789_$",
                                                "typeString": "function (contract IERC20,address,address,uint256)"
                                            }
                                        },
                                        "id": 2031,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "7321:57:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 2032,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7321:57:1"
                                },
                                {
                                    "assignments": [2034, 2036],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 2034,
                                            "mutability": "mutable",
                                            "name": "overflowFlag",
                                            "nameLocation": "7395:12:1",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 2064,
                                            "src": "7390:17:1",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                            },
                                            "typeName": {
                                                "id": 2033,
                                                "name": "bool",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "7390:4:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            "visibility": "internal"
                                        },
                                        {
                                            "constant": false,
                                            "id": 2036,
                                            "mutability": "mutable",
                                            "name": "result",
                                            "nameLocation": "7417:6:1",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 2064,
                                            "src": "7409:14:1",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 2035,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "7409:7:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 2045,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "baseExpression": {
                                                    "id": 2039,
                                                    "name": "cardBalances",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 1607,
                                                    "src": "7452:12:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                        "typeString": "mapping(address => uint256)"
                                                    }
                                                },
                                                "id": 2042,
                                                "indexExpression": {
                                                    "expression": {
                                                        "id": 2040,
                                                        "name": "msg",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4294967281,
                                                        "src": "7465:3:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_magic_message",
                                                            "typeString": "msg"
                                                        }
                                                    },
                                                    "id": 2041,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberLocation": "7469:6:1",
                                                    "memberName": "sender",
                                                    "nodeType": "MemberAccess",
                                                    "src": "7465:10:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "IndexAccess",
                                                "src": "7452:24:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            {
                                                "id": 2043,
                                                "name": "amount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2000,
                                                "src": "7490:6:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "expression": {
                                                "id": 2037,
                                                "name": "Math",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 5532,
                                                "src": "7427:4:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_contract$_Math_$5532_$",
                                                    "typeString": "type(library Math)"
                                                }
                                            },
                                            "id": 2038,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberLocation": "7432:6:1",
                                            "memberName": "tryAdd",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 4521,
                                            "src": "7427:11:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$",
                                                "typeString": "function (uint256,uint256) pure returns (bool,uint256)"
                                            }
                                        },
                                        "id": 2044,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "7427:79:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$",
                                            "typeString": "tuple(bool,uint256)"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "7389:117:1"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "id": 2047,
                                                "name": "overflowFlag",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2034,
                                                "src": "7590:12:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            {
                                                "hexValue": "41726974686d65746963204f766572666c6f7721",
                                                "id": 2048,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "7604:22:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_22bbdbaba5bf1ef3e8b5a4120dcfce10aa8ebcde5f8193765f5d73796292e276",
                                                    "typeString": "literal_string \"Arithmetic Overflow!\""
                                                },
                                                "value": "Arithmetic Overflow!"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                {
                                                    "typeIdentifier": "t_stringliteral_22bbdbaba5bf1ef3e8b5a4120dcfce10aa8ebcde5f8193765f5d73796292e276",
                                                    "typeString": "literal_string \"Arithmetic Overflow!\""
                                                }
                                            ],
                                            "id": 2046,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [4294967278, 4294967278],
                                            "referencedDeclaration": 4294967278,
                                            "src": "7582:7:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (bool,string memory) pure"
                                            }
                                        },
                                        "id": 2049,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "7582:45:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 2050,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7582:45:1"
                                },
                                {
                                    "expression": {
                                        "id": 2056,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "baseExpression": {
                                                "id": 2051,
                                                "name": "cardBalances",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1607,
                                                "src": "7637:12:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                    "typeString": "mapping(address => uint256)"
                                                }
                                            },
                                            "id": 2054,
                                            "indexExpression": {
                                                "expression": {
                                                    "id": 2052,
                                                    "name": "msg",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 4294967281,
                                                    "src": "7650:3:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_magic_message",
                                                        "typeString": "msg"
                                                    }
                                                },
                                                "id": 2053,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberLocation": "7654:6:1",
                                                "memberName": "sender",
                                                "nodeType": "MemberAccess",
                                                "src": "7650:10:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "nodeType": "IndexAccess",
                                            "src": "7637:24:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "id": 2055,
                                            "name": "result",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2036,
                                            "src": "7664:6:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "7637:33:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "id": 2057,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7637:33:1"
                                },
                                {
                                    "eventCall": {
                                        "arguments": [
                                            {
                                                "expression": {
                                                    "id": 2059,
                                                    "name": "msg",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 4294967281,
                                                    "src": "7696:3:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_magic_message",
                                                        "typeString": "msg"
                                                    }
                                                },
                                                "id": 2060,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberLocation": "7700:6:1",
                                                "memberName": "sender",
                                                "nodeType": "MemberAccess",
                                                "src": "7696:10:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "id": 2061,
                                                "name": "amount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2000,
                                                "src": "7708:6:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "id": 2058,
                                            "name": "Deposited",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1573,
                                            "src": "7686:9:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                                "typeString": "function (address,uint256)"
                                            }
                                        },
                                        "id": 2062,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "7686:29:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 2063,
                                    "nodeType": "EmitStatement",
                                    "src": "7681:34:1"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 1998,
                            "nodeType": "StructuredDocumentation",
                            "src": "6975:125:1",
                            "text": " @notice Deposits USDC tokens into the contract.\n @param amount The amount of USDC tokens to deposit."
                        },
                        "functionSelector": "2357928e",
                        "id": 2065,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [
                            {
                                "arguments": [
                                    {
                                        "id": 2003,
                                        "name": "amount",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2000,
                                        "src": "7166:6:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    }
                                ],
                                "id": 2004,
                                "kind": "modifierInvocation",
                                "modifierName": {
                                    "id": 2002,
                                    "name": "checkAllowance",
                                    "nameLocations": ["7151:14:1"],
                                    "nodeType": "IdentifierPath",
                                    "referencedDeclaration": 1703,
                                    "src": "7151:14:1"
                                },
                                "nodeType": "ModifierInvocation",
                                "src": "7151:22:1"
                            }
                        ],
                        "name": "depositUsdc",
                        "nameLocation": "7114:11:1",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 2001,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 2000,
                                    "mutability": "mutable",
                                    "name": "amount",
                                    "nameLocation": "7134:6:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 2065,
                                    "src": "7126:14:1",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 1999,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "7126:7:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "7125:16:1"
                        },
                        "returnParameters": {
                            "id": 2005,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "7174:0:1"
                        },
                        "scope": 2657,
                        "src": "7105:617:1",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "body": {
                            "id": 2150,
                            "nodeType": "Block",
                            "src": "7903:825:1",
                            "statements": [
                                {
                                    "assignments": [2073],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 2073,
                                            "mutability": "mutable",
                                            "name": "token",
                                            "nameLocation": "7920:5:1",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 2150,
                                            "src": "7913:12:1",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_IERC20_$3789",
                                                "typeString": "contract IERC20"
                                            },
                                            "typeName": {
                                                "id": 2072,
                                                "nodeType": "UserDefinedTypeName",
                                                "pathNode": {
                                                    "id": 2071,
                                                    "name": "IERC20",
                                                    "nameLocations": ["7913:6:1"],
                                                    "nodeType": "IdentifierPath",
                                                    "referencedDeclaration": 3789,
                                                    "src": "7913:6:1"
                                                },
                                                "referencedDeclaration": 3789,
                                                "src": "7913:6:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_IERC20_$3789",
                                                    "typeString": "contract IERC20"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 2078,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "expression": {
                                                    "id": 2075,
                                                    "name": "cardConfig",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 1594,
                                                    "src": "7935:10:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_CardConfig_$1532_storage",
                                                        "typeString": "struct ZebecCard.CardConfig storage ref"
                                                    }
                                                },
                                                "id": 2076,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberLocation": "7946:11:1",
                                                "memberName": "usdcAddress",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 1525,
                                                "src": "7935:22:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            ],
                                            "id": 2074,
                                            "name": "IERC20",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3789,
                                            "src": "7928:6:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_contract$_IERC20_$3789_$",
                                                "typeString": "type(contract IERC20)"
                                            }
                                        },
                                        "id": 2077,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "7928:30:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IERC20_$3789",
                                            "typeString": "contract IERC20"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "7913:45:1"
                                },
                                {
                                    "assignments": [2080],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 2080,
                                            "mutability": "mutable",
                                            "name": "user",
                                            "nameLocation": "7976:4:1",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 2150,
                                            "src": "7968:12:1",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            },
                                            "typeName": {
                                                "id": 2079,
                                                "name": "address",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "7968:7:1",
                                                "stateMutability": "nonpayable",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 2083,
                                    "initialValue": {
                                        "expression": {
                                            "id": 2081,
                                            "name": "msg",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4294967281,
                                            "src": "7983:3:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_magic_message",
                                                "typeString": "msg"
                                            }
                                        },
                                        "id": 2082,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberLocation": "7987:6:1",
                                        "memberName": "sender",
                                        "nodeType": "MemberAccess",
                                        "src": "7983:10:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "7968:25:1"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "commonType": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "id": 2087,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "id": 2085,
                                                    "name": "amount",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 2068,
                                                    "src": "8044:6:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "!=",
                                                "rightExpression": {
                                                    "hexValue": "30",
                                                    "id": 2086,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "8054:1:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_rational_0_by_1",
                                                        "typeString": "int_const 0"
                                                    },
                                                    "value": "0"
                                                },
                                                "src": "8044:11:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            {
                                                "hexValue": "496e76616c696420616d6f756e74",
                                                "id": 2088,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "8057:16:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_2fd1dfd944df9898ee4c79794168926172c3d96d7664ff9919bb7080bb018af1",
                                                    "typeString": "literal_string \"Invalid amount\""
                                                },
                                                "value": "Invalid amount"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                {
                                                    "typeIdentifier": "t_stringliteral_2fd1dfd944df9898ee4c79794168926172c3d96d7664ff9919bb7080bb018af1",
                                                    "typeString": "literal_string \"Invalid amount\""
                                                }
                                            ],
                                            "id": 2084,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [4294967278, 4294967278],
                                            "referencedDeclaration": 4294967278,
                                            "src": "8036:7:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (bool,string memory) pure"
                                            }
                                        },
                                        "id": 2089,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "8036:38:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 2090,
                                    "nodeType": "ExpressionStatement",
                                    "src": "8036:38:1"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "commonType": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "id": 2097,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "id": 2092,
                                                    "name": "user",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 2080,
                                                    "src": "8127:4:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "!=",
                                                "rightExpression": {
                                                    "arguments": [
                                                        {
                                                            "hexValue": "30",
                                                            "id": 2095,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "number",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "8143:1:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_rational_0_by_1",
                                                                "typeString": "int_const 0"
                                                            },
                                                            "value": "0"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_rational_0_by_1",
                                                                "typeString": "int_const 0"
                                                            }
                                                        ],
                                                        "id": 2094,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "lValueRequested": false,
                                                        "nodeType": "ElementaryTypeNameExpression",
                                                        "src": "8135:7:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_address_$",
                                                            "typeString": "type(address)"
                                                        },
                                                        "typeName": {
                                                            "id": 2093,
                                                            "name": "address",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "8135:7:1",
                                                            "typeDescriptions": {}
                                                        }
                                                    },
                                                    "id": 2096,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "typeConversion",
                                                    "lValueRequested": false,
                                                    "nameLocations": [],
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "8135:10:1",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "src": "8127:18:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            {
                                                "hexValue": "496e76616c69642061646472657373",
                                                "id": 2098,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "8147:17:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_1462473b7a4b33d32b109b815fd2324d00c9e5839b707ecf16d0ab5744f99226",
                                                    "typeString": "literal_string \"Invalid address\""
                                                },
                                                "value": "Invalid address"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                {
                                                    "typeIdentifier": "t_stringliteral_1462473b7a4b33d32b109b815fd2324d00c9e5839b707ecf16d0ab5744f99226",
                                                    "typeString": "literal_string \"Invalid address\""
                                                }
                                            ],
                                            "id": 2091,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [4294967278, 4294967278],
                                            "referencedDeclaration": 4294967278,
                                            "src": "8119:7:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (bool,string memory) pure"
                                            }
                                        },
                                        "id": 2099,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "8119:46:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 2100,
                                    "nodeType": "ExpressionStatement",
                                    "src": "8119:46:1"
                                },
                                {
                                    "assignments": [2102],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 2102,
                                            "mutability": "mutable",
                                            "name": "userBalance",
                                            "nameLocation": "8184:11:1",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 2150,
                                            "src": "8176:19:1",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 2101,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "8176:7:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 2106,
                                    "initialValue": {
                                        "baseExpression": {
                                            "id": 2103,
                                            "name": "cardBalances",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1607,
                                            "src": "8198:12:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                "typeString": "mapping(address => uint256)"
                                            }
                                        },
                                        "id": 2105,
                                        "indexExpression": {
                                            "id": 2104,
                                            "name": "user",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2080,
                                            "src": "8211:4:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "8198:18:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "8176:40:1"
                                },
                                {
                                    "condition": {
                                        "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        },
                                        "id": 2109,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "id": 2107,
                                            "name": "userBalance",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2102,
                                            "src": "8230:11:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "<",
                                        "rightExpression": {
                                            "id": 2108,
                                            "name": "amount",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2068,
                                            "src": "8244:6:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "8230:20:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "id": 2116,
                                    "nodeType": "IfStatement",
                                    "src": "8226:176:1",
                                    "trueBody": {
                                        "id": 2115,
                                        "nodeType": "Block",
                                        "src": "8252:150:1",
                                        "statements": [
                                            {
                                                "errorCall": {
                                                    "arguments": [
                                                        {
                                                            "id": 2111,
                                                            "name": "amount",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2068,
                                                            "src": "8325:6:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "id": 2112,
                                                            "name": "userBalance",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2102,
                                                            "src": "8365:11:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "id": 2110,
                                                        "name": "NotEnoughBalance",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1591,
                                                        "src": "8273:16:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$",
                                                            "typeString": "function (uint256,uint256) pure"
                                                        }
                                                    },
                                                    "id": 2113,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "nameLocations": ["8308:15:1", "8349:14:1"],
                                                    "names": ["requiredBalance", "currentBalance"],
                                                    "nodeType": "FunctionCall",
                                                    "src": "8273:118:1",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 2114,
                                                "nodeType": "RevertStatement",
                                                "src": "8266:125:1"
                                            }
                                        ]
                                    }
                                },
                                {
                                    "assignments": [2118, 2120],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 2118,
                                            "mutability": "mutable",
                                            "name": "overflowFlag",
                                            "nameLocation": "8418:12:1",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 2150,
                                            "src": "8413:17:1",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                            },
                                            "typeName": {
                                                "id": 2117,
                                                "name": "bool",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "8413:4:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            "visibility": "internal"
                                        },
                                        {
                                            "constant": false,
                                            "id": 2120,
                                            "mutability": "mutable",
                                            "name": "result",
                                            "nameLocation": "8440:6:1",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 2150,
                                            "src": "8432:14:1",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 2119,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "8432:7:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 2126,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "id": 2123,
                                                "name": "userBalance",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2102,
                                                "src": "8462:11:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            {
                                                "id": 2124,
                                                "name": "amount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2068,
                                                "src": "8475:6:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "expression": {
                                                "id": 2121,
                                                "name": "Math",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 5532,
                                                "src": "8450:4:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_contract$_Math_$5532_$",
                                                    "typeString": "type(library Math)"
                                                }
                                            },
                                            "id": 2122,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberLocation": "8455:6:1",
                                            "memberName": "trySub",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 4549,
                                            "src": "8450:11:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$",
                                                "typeString": "function (uint256,uint256) pure returns (bool,uint256)"
                                            }
                                        },
                                        "id": 2125,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "8450:32:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$",
                                            "typeString": "tuple(bool,uint256)"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "8412:70:1"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "id": 2128,
                                                "name": "overflowFlag",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2118,
                                                "src": "8566:12:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            {
                                                "hexValue": "41726974686d65746963204f766572666c6f7721",
                                                "id": 2129,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "8580:22:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_22bbdbaba5bf1ef3e8b5a4120dcfce10aa8ebcde5f8193765f5d73796292e276",
                                                    "typeString": "literal_string \"Arithmetic Overflow!\""
                                                },
                                                "value": "Arithmetic Overflow!"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                {
                                                    "typeIdentifier": "t_stringliteral_22bbdbaba5bf1ef3e8b5a4120dcfce10aa8ebcde5f8193765f5d73796292e276",
                                                    "typeString": "literal_string \"Arithmetic Overflow!\""
                                                }
                                            ],
                                            "id": 2127,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [4294967278, 4294967278],
                                            "referencedDeclaration": 4294967278,
                                            "src": "8558:7:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (bool,string memory) pure"
                                            }
                                        },
                                        "id": 2130,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "8558:45:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 2131,
                                    "nodeType": "ExpressionStatement",
                                    "src": "8558:45:1"
                                },
                                {
                                    "expression": {
                                        "id": 2136,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "baseExpression": {
                                                "id": 2132,
                                                "name": "cardBalances",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1607,
                                                "src": "8613:12:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                    "typeString": "mapping(address => uint256)"
                                                }
                                            },
                                            "id": 2134,
                                            "indexExpression": {
                                                "id": 2133,
                                                "name": "user",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2080,
                                                "src": "8626:4:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "nodeType": "IndexAccess",
                                            "src": "8613:18:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "id": 2135,
                                            "name": "result",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2120,
                                            "src": "8634:6:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "8613:27:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "id": 2137,
                                    "nodeType": "ExpressionStatement",
                                    "src": "8613:27:1"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "id": 2141,
                                                "name": "user",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2080,
                                                "src": "8669:4:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "id": 2142,
                                                "name": "amount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2068,
                                                "src": "8675:6:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "expression": {
                                                "id": 2138,
                                                "name": "token",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2073,
                                                "src": "8650:5:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_IERC20_$3789",
                                                    "typeString": "contract IERC20"
                                                }
                                            },
                                            "id": 2140,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberLocation": "8656:12:1",
                                            "memberName": "safeTransfer",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 3875,
                                            "src": "8650:18:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$3789_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$3789_$",
                                                "typeString": "function (contract IERC20,address,uint256)"
                                            }
                                        },
                                        "id": 2143,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "8650:32:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 2144,
                                    "nodeType": "ExpressionStatement",
                                    "src": "8650:32:1"
                                },
                                {
                                    "eventCall": {
                                        "arguments": [
                                            {
                                                "id": 2146,
                                                "name": "user",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2080,
                                                "src": "8708:4:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "id": 2147,
                                                "name": "amount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2068,
                                                "src": "8714:6:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "id": 2145,
                                            "name": "Withdrawn",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1579,
                                            "src": "8698:9:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                                "typeString": "function (address,uint256)"
                                            }
                                        },
                                        "id": 2148,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "8698:23:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 2149,
                                    "nodeType": "EmitStatement",
                                    "src": "8693:28:1"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 2066,
                            "nodeType": "StructuredDocumentation",
                            "src": "7728:127:1",
                            "text": " @notice Withdraws USDC tokens from the contract.\n @param amount The amount of USDC tokens to withdraw."
                        },
                        "functionSelector": "2e1a7d4d",
                        "id": 2151,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "withdraw",
                        "nameLocation": "7869:8:1",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 2069,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 2068,
                                    "mutability": "mutable",
                                    "name": "amount",
                                    "nameLocation": "7886:6:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 2151,
                                    "src": "7878:14:1",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 2067,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "7878:7:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "7877:16:1"
                        },
                        "returnParameters": {
                            "id": 2070,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "7903:0:1"
                        },
                        "scope": 2657,
                        "src": "7860:868:1",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "body": {
                            "id": 2406,
                            "nodeType": "Block",
                            "src": "8976:3676:1",
                            "statements": [
                                {
                                    "assignments": [2161],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 2161,
                                            "mutability": "mutable",
                                            "name": "token",
                                            "nameLocation": "8993:5:1",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 2406,
                                            "src": "8986:12:1",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_IERC20_$3789",
                                                "typeString": "contract IERC20"
                                            },
                                            "typeName": {
                                                "id": 2160,
                                                "nodeType": "UserDefinedTypeName",
                                                "pathNode": {
                                                    "id": 2159,
                                                    "name": "IERC20",
                                                    "nameLocations": ["8986:6:1"],
                                                    "nodeType": "IdentifierPath",
                                                    "referencedDeclaration": 3789,
                                                    "src": "8986:6:1"
                                                },
                                                "referencedDeclaration": 3789,
                                                "src": "8986:6:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_IERC20_$3789",
                                                    "typeString": "contract IERC20"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 2166,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "expression": {
                                                    "id": 2163,
                                                    "name": "cardConfig",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 1594,
                                                    "src": "9008:10:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_CardConfig_$1532_storage",
                                                        "typeString": "struct ZebecCard.CardConfig storage ref"
                                                    }
                                                },
                                                "id": 2164,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberLocation": "9019:11:1",
                                                "memberName": "usdcAddress",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 1525,
                                                "src": "9008:22:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            ],
                                            "id": 2162,
                                            "name": "IERC20",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3789,
                                            "src": "9001:6:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_contract$_IERC20_$3789_$",
                                                "typeString": "type(contract IERC20)"
                                            }
                                        },
                                        "id": 2165,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "9001:30:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IERC20_$3789",
                                            "typeString": "contract IERC20"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "8986:45:1"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "commonType": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "id": 2174,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "expression": {
                                                        "id": 2168,
                                                        "name": "msg",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4294967281,
                                                        "src": "9083:3:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_magic_message",
                                                            "typeString": "msg"
                                                        }
                                                    },
                                                    "id": 2169,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberLocation": "9087:6:1",
                                                    "memberName": "sender",
                                                    "nodeType": "MemberAccess",
                                                    "src": "9083:10:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "!=",
                                                "rightExpression": {
                                                    "arguments": [
                                                        {
                                                            "hexValue": "30",
                                                            "id": 2172,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "number",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "9105:1:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_rational_0_by_1",
                                                                "typeString": "int_const 0"
                                                            },
                                                            "value": "0"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_rational_0_by_1",
                                                                "typeString": "int_const 0"
                                                            }
                                                        ],
                                                        "id": 2171,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "lValueRequested": false,
                                                        "nodeType": "ElementaryTypeNameExpression",
                                                        "src": "9097:7:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_address_$",
                                                            "typeString": "type(address)"
                                                        },
                                                        "typeName": {
                                                            "id": 2170,
                                                            "name": "address",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "9097:7:1",
                                                            "typeDescriptions": {}
                                                        }
                                                    },
                                                    "id": 2173,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "typeConversion",
                                                    "lValueRequested": false,
                                                    "nameLocations": [],
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "9097:10:1",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "src": "9083:24:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            {
                                                "hexValue": "496e76616c69642061646472657373",
                                                "id": 2175,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "9109:17:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_1462473b7a4b33d32b109b815fd2324d00c9e5839b707ecf16d0ab5744f99226",
                                                    "typeString": "literal_string \"Invalid address\""
                                                },
                                                "value": "Invalid address"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                {
                                                    "typeIdentifier": "t_stringliteral_1462473b7a4b33d32b109b815fd2324d00c9e5839b707ecf16d0ab5744f99226",
                                                    "typeString": "literal_string \"Invalid address\""
                                                }
                                            ],
                                            "id": 2167,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [4294967278, 4294967278],
                                            "referencedDeclaration": 4294967278,
                                            "src": "9075:7:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (bool,string memory) pure"
                                            }
                                        },
                                        "id": 2176,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "9075:52:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 2177,
                                    "nodeType": "ExpressionStatement",
                                    "src": "9075:52:1"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "commonType": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "id": 2187,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 2182,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 2179,
                                                        "name": "amount",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2154,
                                                        "src": "9226:6:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": ">=",
                                                    "rightExpression": {
                                                        "expression": {
                                                            "id": 2180,
                                                            "name": "cardConfig",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1594,
                                                            "src": "9236:10:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_CardConfig_$1532_storage",
                                                                "typeString": "struct ZebecCard.CardConfig storage ref"
                                                            }
                                                        },
                                                        "id": 2181,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberLocation": "9247:13:1",
                                                        "memberName": "minCardAmount",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 1527,
                                                        "src": "9236:24:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "9226:34:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "&&",
                                                "rightExpression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 2186,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 2183,
                                                        "name": "amount",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2154,
                                                        "src": "9280:6:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "<=",
                                                    "rightExpression": {
                                                        "expression": {
                                                            "id": 2184,
                                                            "name": "cardConfig",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1594,
                                                            "src": "9290:10:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_CardConfig_$1532_storage",
                                                                "typeString": "struct ZebecCard.CardConfig storage ref"
                                                            }
                                                        },
                                                        "id": 2185,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberLocation": "9301:13:1",
                                                        "memberName": "maxCardAmount",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 1529,
                                                        "src": "9290:24:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "9280:34:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "src": "9226:88:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            {
                                                "hexValue": "416d6f756e74206e6f742077697468696e20627579696e672072616e676521",
                                                "id": 2188,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "9328:33:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_fe646b968c6ec83af81ccdb93dd13ea258a9985d098e6bd438bd6ff26cfa5a11",
                                                    "typeString": "literal_string \"Amount not within buying range!\""
                                                },
                                                "value": "Amount not within buying range!"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                {
                                                    "typeIdentifier": "t_stringliteral_fe646b968c6ec83af81ccdb93dd13ea258a9985d098e6bd438bd6ff26cfa5a11",
                                                    "typeString": "literal_string \"Amount not within buying range!\""
                                                }
                                            ],
                                            "id": 2178,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [4294967278, 4294967278],
                                            "referencedDeclaration": 4294967278,
                                            "src": "9205:7:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (bool,string memory) pure"
                                            }
                                        },
                                        "id": 2189,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "9205:166:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 2190,
                                    "nodeType": "ExpressionStatement",
                                    "src": "9205:166:1"
                                },
                                {
                                    "condition": {
                                        "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        },
                                        "id": 2196,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "baseExpression": {
                                                "id": 2191,
                                                "name": "cardBalances",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1607,
                                                "src": "9446:12:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                    "typeString": "mapping(address => uint256)"
                                                }
                                            },
                                            "id": 2194,
                                            "indexExpression": {
                                                "expression": {
                                                    "id": 2192,
                                                    "name": "msg",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 4294967281,
                                                    "src": "9459:3:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_magic_message",
                                                        "typeString": "msg"
                                                    }
                                                },
                                                "id": 2193,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberLocation": "9463:6:1",
                                                "memberName": "sender",
                                                "nodeType": "MemberAccess",
                                                "src": "9459:10:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "9446:24:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "<",
                                        "rightExpression": {
                                            "id": 2195,
                                            "name": "amount",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2154,
                                            "src": "9473:6:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "9446:33:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "id": 2206,
                                    "nodeType": "IfStatement",
                                    "src": "9442:202:1",
                                    "trueBody": {
                                        "id": 2205,
                                        "nodeType": "Block",
                                        "src": "9481:163:1",
                                        "statements": [
                                            {
                                                "errorCall": {
                                                    "arguments": [
                                                        {
                                                            "id": 2198,
                                                            "name": "amount",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2154,
                                                            "src": "9554:6:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "baseExpression": {
                                                                "id": 2199,
                                                                "name": "cardBalances",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1607,
                                                                "src": "9594:12:1",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                                    "typeString": "mapping(address => uint256)"
                                                                }
                                                            },
                                                            "id": 2202,
                                                            "indexExpression": {
                                                                "expression": {
                                                                    "id": 2200,
                                                                    "name": "msg",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 4294967281,
                                                                    "src": "9607:3:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_magic_message",
                                                                        "typeString": "msg"
                                                                    }
                                                                },
                                                                "id": 2201,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberLocation": "9611:6:1",
                                                                "memberName": "sender",
                                                                "nodeType": "MemberAccess",
                                                                "src": "9607:10:1",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "IndexAccess",
                                                            "src": "9594:24:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "id": 2197,
                                                        "name": "NotEnoughBalance",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1591,
                                                        "src": "9502:16:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$",
                                                            "typeString": "function (uint256,uint256) pure"
                                                        }
                                                    },
                                                    "id": 2203,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "nameLocations": ["9537:15:1", "9578:14:1"],
                                                    "names": ["requiredBalance", "currentBalance"],
                                                    "nodeType": "FunctionCall",
                                                    "src": "9502:131:1",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 2204,
                                                "nodeType": "RevertStatement",
                                                "src": "9495:138:1"
                                            }
                                        ]
                                    }
                                },
                                {
                                    "assignments": [2208],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 2208,
                                            "mutability": "mutable",
                                            "name": "revenueFee",
                                            "nameLocation": "9700:10:1",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 2406,
                                            "src": "9692:18:1",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 2207,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "9692:7:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 2212,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "id": 2210,
                                                "name": "amount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2154,
                                                "src": "9720:6:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "id": 2209,
                                            "name": "getFee",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1748,
                                            "src": "9713:6:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                                                "typeString": "function (uint256) view returns (uint256)"
                                            }
                                        },
                                        "id": 2211,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "9713:14:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "9692:35:1"
                                },
                                {
                                    "assignments": [2214],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 2214,
                                            "mutability": "mutable",
                                            "name": "revenueAmount",
                                            "nameLocation": "9745:13:1",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 2406,
                                            "src": "9737:21:1",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 2213,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "9737:7:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 2221,
                                    "initialValue": {
                                        "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        },
                                        "id": 2220,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "components": [
                                                {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 2217,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 2215,
                                                        "name": "amount",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2154,
                                                        "src": "9762:6:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "*",
                                                    "rightExpression": {
                                                        "id": 2216,
                                                        "name": "revenueFee",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2208,
                                                        "src": "9771:10:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "9762:19:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                }
                                            ],
                                            "id": 2218,
                                            "isConstant": false,
                                            "isInlineArray": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "TupleExpression",
                                            "src": "9761:21:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "/",
                                        "rightExpression": {
                                            "hexValue": "3130303030",
                                            "id": 2219,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "9785:5:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_rational_10000_by_1",
                                                "typeString": "int_const 10000"
                                            },
                                            "value": "10000"
                                        },
                                        "src": "9761:29:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "9737:53:1"
                                },
                                {
                                    "assignments": [2223, 2225],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 2223,
                                            "mutability": "mutable",
                                            "name": "overflowFlag",
                                            "nameLocation": "9842:12:1",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 2406,
                                            "src": "9837:17:1",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                            },
                                            "typeName": {
                                                "id": 2222,
                                                "name": "bool",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "9837:4:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            "visibility": "internal"
                                        },
                                        {
                                            "constant": false,
                                            "id": 2225,
                                            "mutability": "mutable",
                                            "name": "cardAmount",
                                            "nameLocation": "9864:10:1",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 2406,
                                            "src": "9856:18:1",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 2224,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "9856:7:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 2231,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "id": 2228,
                                                "name": "amount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2154,
                                                "src": "9903:6:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            {
                                                "id": 2229,
                                                "name": "revenueAmount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2214,
                                                "src": "9923:13:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "expression": {
                                                "id": 2226,
                                                "name": "Math",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 5532,
                                                "src": "9878:4:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_contract$_Math_$5532_$",
                                                    "typeString": "type(library Math)"
                                                }
                                            },
                                            "id": 2227,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberLocation": "9883:6:1",
                                            "memberName": "trySub",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 4549,
                                            "src": "9878:11:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$",
                                                "typeString": "function (uint256,uint256) pure returns (bool,uint256)"
                                            }
                                        },
                                        "id": 2230,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "9878:68:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$",
                                            "typeString": "tuple(bool,uint256)"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "9836:110:1"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "id": 2233,
                                                "name": "overflowFlag",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2223,
                                                "src": "9964:12:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            {
                                                "hexValue": "41726974686d65746963204f766572666c6f7721",
                                                "id": 2234,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "9978:22:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_22bbdbaba5bf1ef3e8b5a4120dcfce10aa8ebcde5f8193765f5d73796292e276",
                                                    "typeString": "literal_string \"Arithmetic Overflow!\""
                                                },
                                                "value": "Arithmetic Overflow!"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                {
                                                    "typeIdentifier": "t_stringliteral_22bbdbaba5bf1ef3e8b5a4120dcfce10aa8ebcde5f8193765f5d73796292e276",
                                                    "typeString": "literal_string \"Arithmetic Overflow!\""
                                                }
                                            ],
                                            "id": 2232,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [4294967278, 4294967278],
                                            "referencedDeclaration": 4294967278,
                                            "src": "9956:7:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (bool,string memory) pure"
                                            }
                                        },
                                        "id": 2235,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "9956:45:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 2236,
                                    "nodeType": "ExpressionStatement",
                                    "src": "9956:45:1"
                                },
                                {
                                    "assignments": [2238, 2240],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 2238,
                                            "mutability": "mutable",
                                            "name": "__overflowFlag",
                                            "nameLocation": "10060:14:1",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 2406,
                                            "src": "10055:19:1",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                            },
                                            "typeName": {
                                                "id": 2237,
                                                "name": "bool",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "10055:4:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            "visibility": "internal"
                                        },
                                        {
                                            "constant": false,
                                            "id": 2240,
                                            "mutability": "mutable",
                                            "name": "_result",
                                            "nameLocation": "10084:7:1",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 2406,
                                            "src": "10076:15:1",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 2239,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "10076:7:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 2249,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "baseExpression": {
                                                    "id": 2243,
                                                    "name": "cardBalances",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 1607,
                                                    "src": "10120:12:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                        "typeString": "mapping(address => uint256)"
                                                    }
                                                },
                                                "id": 2246,
                                                "indexExpression": {
                                                    "expression": {
                                                        "id": 2244,
                                                        "name": "msg",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4294967281,
                                                        "src": "10133:3:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_magic_message",
                                                            "typeString": "msg"
                                                        }
                                                    },
                                                    "id": 2245,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberLocation": "10137:6:1",
                                                    "memberName": "sender",
                                                    "nodeType": "MemberAccess",
                                                    "src": "10133:10:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "IndexAccess",
                                                "src": "10120:24:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            {
                                                "id": 2247,
                                                "name": "amount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2154,
                                                "src": "10158:6:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "expression": {
                                                "id": 2241,
                                                "name": "Math",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 5532,
                                                "src": "10095:4:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_contract$_Math_$5532_$",
                                                    "typeString": "type(library Math)"
                                                }
                                            },
                                            "id": 2242,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberLocation": "10100:6:1",
                                            "memberName": "trySub",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 4549,
                                            "src": "10095:11:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$",
                                                "typeString": "function (uint256,uint256) pure returns (bool,uint256)"
                                            }
                                        },
                                        "id": 2248,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "10095:79:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$",
                                            "typeString": "tuple(bool,uint256)"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "10054:120:1"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "id": 2251,
                                                "name": "__overflowFlag",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2238,
                                                "src": "10192:14:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            {
                                                "hexValue": "41726974686d65746963204f766572666c6f7721",
                                                "id": 2252,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "10208:22:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_22bbdbaba5bf1ef3e8b5a4120dcfce10aa8ebcde5f8193765f5d73796292e276",
                                                    "typeString": "literal_string \"Arithmetic Overflow!\""
                                                },
                                                "value": "Arithmetic Overflow!"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                {
                                                    "typeIdentifier": "t_stringliteral_22bbdbaba5bf1ef3e8b5a4120dcfce10aa8ebcde5f8193765f5d73796292e276",
                                                    "typeString": "literal_string \"Arithmetic Overflow!\""
                                                }
                                            ],
                                            "id": 2250,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [4294967278, 4294967278],
                                            "referencedDeclaration": 4294967278,
                                            "src": "10184:7:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (bool,string memory) pure"
                                            }
                                        },
                                        "id": 2253,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "10184:47:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 2254,
                                    "nodeType": "ExpressionStatement",
                                    "src": "10184:47:1"
                                },
                                {
                                    "expression": {
                                        "id": 2260,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "baseExpression": {
                                                "id": 2255,
                                                "name": "cardBalances",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1607,
                                                "src": "10241:12:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                    "typeString": "mapping(address => uint256)"
                                                }
                                            },
                                            "id": 2258,
                                            "indexExpression": {
                                                "expression": {
                                                    "id": 2256,
                                                    "name": "msg",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 4294967281,
                                                    "src": "10254:3:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_magic_message",
                                                        "typeString": "msg"
                                                    }
                                                },
                                                "id": 2257,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberLocation": "10258:6:1",
                                                "memberName": "sender",
                                                "nodeType": "MemberAccess",
                                                "src": "10254:10:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "nodeType": "IndexAccess",
                                            "src": "10241:24:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "id": 2259,
                                            "name": "_result",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2240,
                                            "src": "10268:7:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "10241:34:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "id": 2261,
                                    "nodeType": "ExpressionStatement",
                                    "src": "10241:34:1"
                                },
                                {
                                    "expression": {
                                        "id": 2265,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "UnaryOperation",
                                        "operator": "++",
                                        "prefix": false,
                                        "src": "10286:20:1",
                                        "subExpression": {
                                            "expression": {
                                                "id": 2262,
                                                "name": "cardConfig",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1594,
                                                "src": "10286:10:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_CardConfig_$1532_storage",
                                                    "typeString": "struct ZebecCard.CardConfig storage ref"
                                                }
                                            },
                                            "id": 2264,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "memberLocation": "10297:7:1",
                                            "memberName": "counter",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 1519,
                                            "src": "10286:18:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "id": 2266,
                                    "nodeType": "ExpressionStatement",
                                    "src": "10286:20:1"
                                },
                                {
                                    "assignments": [2268],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 2268,
                                            "mutability": "mutable",
                                            "name": "unix_now",
                                            "nameLocation": "10324:8:1",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 2406,
                                            "src": "10316:16:1",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 2267,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "10316:7:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 2269,
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "10316:16:1"
                                },
                                {
                                    "assignments": [2271],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 2271,
                                            "mutability": "mutable",
                                            "name": "amount_1",
                                            "nameLocation": "10350:8:1",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 2406,
                                            "src": "10342:16:1",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 2270,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "10342:7:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 2273,
                                    "initialValue": {
                                        "id": 2272,
                                        "name": "amount",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2154,
                                        "src": "10361:6:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "10342:25:1"
                                },
                                {
                                    "id": 2367,
                                    "nodeType": "Block",
                                    "src": "10410:1659:1",
                                    "statements": [
                                        {
                                            "expression": {
                                                "id": 2277,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftHandSide": {
                                                    "id": 2274,
                                                    "name": "unix_now",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 2268,
                                                    "src": "10483:8:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "Assignment",
                                                "operator": "=",
                                                "rightHandSide": {
                                                    "expression": {
                                                        "id": 2275,
                                                        "name": "block",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4294967292,
                                                        "src": "10494:5:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_magic_block",
                                                            "typeString": "block"
                                                        }
                                                    },
                                                    "id": 2276,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberLocation": "10500:9:1",
                                                    "memberName": "timestamp",
                                                    "nodeType": "MemberAccess",
                                                    "src": "10494:15:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "src": "10483:26:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "id": 2278,
                                            "nodeType": "ExpressionStatement",
                                            "src": "10483:26:1"
                                        },
                                        {
                                            "assignments": [2280, 2282, 2284],
                                            "declarations": [
                                                {
                                                    "constant": false,
                                                    "id": 2280,
                                                    "mutability": "mutable",
                                                    "name": "year_now",
                                                    "nameLocation": "10549:8:1",
                                                    "nodeType": "VariableDeclaration",
                                                    "scope": 2367,
                                                    "src": "10541:16:1",
                                                    "stateVariable": false,
                                                    "storageLocation": "default",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "typeName": {
                                                        "id": 2279,
                                                        "name": "uint256",
                                                        "nodeType": "ElementaryTypeName",
                                                        "src": "10541:7:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "visibility": "internal"
                                                },
                                                {
                                                    "constant": false,
                                                    "id": 2282,
                                                    "mutability": "mutable",
                                                    "name": "month_now",
                                                    "nameLocation": "10583:9:1",
                                                    "nodeType": "VariableDeclaration",
                                                    "scope": 2367,
                                                    "src": "10575:17:1",
                                                    "stateVariable": false,
                                                    "storageLocation": "default",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "typeName": {
                                                        "id": 2281,
                                                        "name": "uint256",
                                                        "nodeType": "ElementaryTypeName",
                                                        "src": "10575:7:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "visibility": "internal"
                                                },
                                                {
                                                    "constant": false,
                                                    "id": 2284,
                                                    "mutability": "mutable",
                                                    "name": "day_now",
                                                    "nameLocation": "10618:7:1",
                                                    "nodeType": "VariableDeclaration",
                                                    "scope": 2367,
                                                    "src": "10610:15:1",
                                                    "stateVariable": false,
                                                    "storageLocation": "default",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "typeName": {
                                                        "id": 2283,
                                                        "name": "uint256",
                                                        "nodeType": "ElementaryTypeName",
                                                        "src": "10610:7:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "visibility": "internal"
                                                }
                                            ],
                                            "id": 2289,
                                            "initialValue": {
                                                "arguments": [
                                                    {
                                                        "id": 2287,
                                                        "name": "unix_now",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2268,
                                                        "src": "10686:8:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "id": 2285,
                                                        "name": "BokkyPooBahsDateTimeLibrary",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1483,
                                                        "src": "10642:27:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_contract$_BokkyPooBahsDateTimeLibrary_$1483_$",
                                                            "typeString": "type(library BokkyPooBahsDateTimeLibrary)"
                                                        }
                                                    },
                                                    "id": 2286,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberLocation": "10670:15:1",
                                                    "memberName": "timestampToDate",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 369,
                                                    "src": "10642:43:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$_t_uint256_$_t_uint256_$",
                                                        "typeString": "function (uint256) pure returns (uint256,uint256,uint256)"
                                                    }
                                                },
                                                "id": 2288,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "nameLocations": [],
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "10642:53:1",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$",
                                                    "typeString": "tuple(uint256,uint256,uint256)"
                                                }
                                            },
                                            "nodeType": "VariableDeclarationStatement",
                                            "src": "10523:172:1"
                                        },
                                        {
                                            "assignments": [2291, 2293, 2295],
                                            "declarations": [
                                                {
                                                    "constant": false,
                                                    "id": 2291,
                                                    "mutability": "mutable",
                                                    "name": "year_from_record",
                                                    "nameLocation": "10766:16:1",
                                                    "nodeType": "VariableDeclaration",
                                                    "scope": 2367,
                                                    "src": "10758:24:1",
                                                    "stateVariable": false,
                                                    "storageLocation": "default",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "typeName": {
                                                        "id": 2290,
                                                        "name": "uint256",
                                                        "nodeType": "ElementaryTypeName",
                                                        "src": "10758:7:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "visibility": "internal"
                                                },
                                                {
                                                    "constant": false,
                                                    "id": 2293,
                                                    "mutability": "mutable",
                                                    "name": "month_from_record",
                                                    "nameLocation": "10808:17:1",
                                                    "nodeType": "VariableDeclaration",
                                                    "scope": 2367,
                                                    "src": "10800:25:1",
                                                    "stateVariable": false,
                                                    "storageLocation": "default",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "typeName": {
                                                        "id": 2292,
                                                        "name": "uint256",
                                                        "nodeType": "ElementaryTypeName",
                                                        "src": "10800:7:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "visibility": "internal"
                                                },
                                                {
                                                    "constant": false,
                                                    "id": 2295,
                                                    "mutability": "mutable",
                                                    "name": "day_from_record",
                                                    "nameLocation": "10851:15:1",
                                                    "nodeType": "VariableDeclaration",
                                                    "scope": 2367,
                                                    "src": "10843:23:1",
                                                    "stateVariable": false,
                                                    "storageLocation": "default",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "typeName": {
                                                        "id": 2294,
                                                        "name": "uint256",
                                                        "nodeType": "ElementaryTypeName",
                                                        "src": "10843:7:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "visibility": "internal"
                                                }
                                            ],
                                            "id": 2304,
                                            "initialValue": {
                                                "arguments": [
                                                    {
                                                        "expression": {
                                                            "baseExpression": {
                                                                "id": 2298,
                                                                "name": "cardPurchases",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1603,
                                                                "src": "10948:13:1",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_mapping$_t_address_$_t_struct$_CardPurchase_$1537_storage_$",
                                                                    "typeString": "mapping(address => struct ZebecCard.CardPurchase storage ref)"
                                                                }
                                                            },
                                                            "id": 2301,
                                                            "indexExpression": {
                                                                "expression": {
                                                                    "id": 2299,
                                                                    "name": "msg",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 4294967281,
                                                                    "src": "10962:3:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_magic_message",
                                                                        "typeString": "msg"
                                                                    }
                                                                },
                                                                "id": 2300,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberLocation": "10966:6:1",
                                                                "memberName": "sender",
                                                                "nodeType": "MemberAccess",
                                                                "src": "10962:10:1",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "IndexAccess",
                                                            "src": "10948:25:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_CardPurchase_$1537_storage",
                                                                "typeString": "struct ZebecCard.CardPurchase storage ref"
                                                            }
                                                        },
                                                        "id": 2302,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberLocation": "10974:12:1",
                                                        "memberName": "unixInRecord",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 1534,
                                                        "src": "10948:38:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "id": 2296,
                                                        "name": "BokkyPooBahsDateTimeLibrary",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1483,
                                                        "src": "10883:27:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_contract$_BokkyPooBahsDateTimeLibrary_$1483_$",
                                                            "typeString": "type(library BokkyPooBahsDateTimeLibrary)"
                                                        }
                                                    },
                                                    "id": 2297,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberLocation": "10911:15:1",
                                                    "memberName": "timestampToDate",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 369,
                                                    "src": "10883:43:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$_t_uint256_$_t_uint256_$",
                                                        "typeString": "function (uint256) pure returns (uint256,uint256,uint256)"
                                                    }
                                                },
                                                "id": 2303,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "nameLocations": [],
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "10883:121:1",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$",
                                                    "typeString": "tuple(uint256,uint256,uint256)"
                                                }
                                            },
                                            "nodeType": "VariableDeclarationStatement",
                                            "src": "10740:264:1"
                                        },
                                        {
                                            "assignments": [2306],
                                            "declarations": [
                                                {
                                                    "constant": false,
                                                    "id": 2306,
                                                    "mutability": "mutable",
                                                    "name": "isSameDate",
                                                    "nameLocation": "11085:10:1",
                                                    "nodeType": "VariableDeclaration",
                                                    "scope": 2367,
                                                    "src": "11080:15:1",
                                                    "stateVariable": false,
                                                    "storageLocation": "default",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    },
                                                    "typeName": {
                                                        "id": 2305,
                                                        "name": "bool",
                                                        "nodeType": "ElementaryTypeName",
                                                        "src": "11080:4:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        }
                                                    },
                                                    "visibility": "internal"
                                                }
                                            ],
                                            "id": 2319,
                                            "initialValue": {
                                                "components": [
                                                    {
                                                        "commonType": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        },
                                                        "id": 2317,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "commonType": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            "id": 2313,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                "id": 2309,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "id": 2307,
                                                                    "name": "year_now",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 2280,
                                                                    "src": "11099:8:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "==",
                                                                "rightExpression": {
                                                                    "id": 2308,
                                                                    "name": "year_from_record",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 2291,
                                                                    "src": "11111:16:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "src": "11099:28:1",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "&&",
                                                            "rightExpression": {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                "id": 2312,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "id": 2310,
                                                                    "name": "month_now",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 2282,
                                                                    "src": "11147:9:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "==",
                                                                "rightExpression": {
                                                                    "id": 2311,
                                                                    "name": "month_from_record",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 2293,
                                                                    "src": "11160:17:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "src": "11147:30:1",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                }
                                                            },
                                                            "src": "11099:78:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "&&",
                                                        "rightExpression": {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 2316,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 2314,
                                                                "name": "day_now",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 2284,
                                                                "src": "11197:7:1",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "==",
                                                            "rightExpression": {
                                                                "id": 2315,
                                                                "name": "day_from_record",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 2295,
                                                                "src": "11208:15:1",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "src": "11197:26:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        "src": "11099:124:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        }
                                                    }
                                                ],
                                                "id": 2318,
                                                "isConstant": false,
                                                "isInlineArray": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "TupleExpression",
                                                "src": "11098:126:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            "nodeType": "VariableDeclarationStatement",
                                            "src": "11080:144:1"
                                        },
                                        {
                                            "condition": {
                                                "id": 2320,
                                                "name": "isSameDate",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2306,
                                                "src": "11242:10:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            "falseBody": {
                                                "id": 2365,
                                                "nodeType": "Block",
                                                "src": "11773:286:1",
                                                "statements": [
                                                    {
                                                        "expression": {
                                                            "id": 2355,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftHandSide": {
                                                                "expression": {
                                                                    "baseExpression": {
                                                                        "id": 2349,
                                                                        "name": "cardPurchases",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 1603,
                                                                        "src": "11871:13:1",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_CardPurchase_$1537_storage_$",
                                                                            "typeString": "mapping(address => struct ZebecCard.CardPurchase storage ref)"
                                                                        }
                                                                    },
                                                                    "id": 2352,
                                                                    "indexExpression": {
                                                                        "expression": {
                                                                            "id": 2350,
                                                                            "name": "msg",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 4294967281,
                                                                            "src": "11885:3:1",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_magic_message",
                                                                                "typeString": "msg"
                                                                            }
                                                                        },
                                                                        "id": 2351,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberLocation": "11889:6:1",
                                                                        "memberName": "sender",
                                                                        "nodeType": "MemberAccess",
                                                                        "src": "11885:10:1",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    },
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "IndexAccess",
                                                                    "src": "11871:25:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_struct$_CardPurchase_$1537_storage",
                                                                        "typeString": "struct ZebecCard.CardPurchase storage ref"
                                                                    }
                                                                },
                                                                "id": 2353,
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": true,
                                                                "memberLocation": "11897:12:1",
                                                                "memberName": "unixInRecord",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 1534,
                                                                "src": "11871:38:1",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "Assignment",
                                                            "operator": "=",
                                                            "rightHandSide": {
                                                                "id": 2354,
                                                                "name": "unix_now",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 2268,
                                                                "src": "11912:8:1",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "src": "11871:49:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "id": 2356,
                                                        "nodeType": "ExpressionStatement",
                                                        "src": "11871:49:1"
                                                    },
                                                    {
                                                        "expression": {
                                                            "id": 2363,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftHandSide": {
                                                                "expression": {
                                                                    "baseExpression": {
                                                                        "id": 2357,
                                                                        "name": "cardPurchases",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 1603,
                                                                        "src": "11986:13:1",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_CardPurchase_$1537_storage_$",
                                                                            "typeString": "mapping(address => struct ZebecCard.CardPurchase storage ref)"
                                                                        }
                                                                    },
                                                                    "id": 2360,
                                                                    "indexExpression": {
                                                                        "expression": {
                                                                            "id": 2358,
                                                                            "name": "msg",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 4294967281,
                                                                            "src": "12000:3:1",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_magic_message",
                                                                                "typeString": "msg"
                                                                            }
                                                                        },
                                                                        "id": 2359,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberLocation": "12004:6:1",
                                                                        "memberName": "sender",
                                                                        "nodeType": "MemberAccess",
                                                                        "src": "12000:10:1",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    },
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "IndexAccess",
                                                                    "src": "11986:25:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_struct$_CardPurchase_$1537_storage",
                                                                        "typeString": "struct ZebecCard.CardPurchase storage ref"
                                                                    }
                                                                },
                                                                "id": 2361,
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": true,
                                                                "memberLocation": "12012:21:1",
                                                                "memberName": "totalCardBoughtPerDay",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 1536,
                                                                "src": "11986:47:1",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "Assignment",
                                                            "operator": "=",
                                                            "rightHandSide": {
                                                                "id": 2362,
                                                                "name": "amount_1",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 2271,
                                                                "src": "12036:8:1",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "src": "11986:58:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "id": 2364,
                                                        "nodeType": "ExpressionStatement",
                                                        "src": "11986:58:1"
                                                    }
                                                ]
                                            },
                                            "id": 2366,
                                            "nodeType": "IfStatement",
                                            "src": "11238:821:1",
                                            "trueBody": {
                                                "id": 2348,
                                                "nodeType": "Block",
                                                "src": "11254:513:1",
                                                "statements": [
                                                    {
                                                        "assignments": [2322, 2324],
                                                        "declarations": [
                                                            {
                                                                "constant": false,
                                                                "id": 2322,
                                                                "mutability": "mutable",
                                                                "name": "_overflowFlag",
                                                                "nameLocation": "11377:13:1",
                                                                "nodeType": "VariableDeclaration",
                                                                "scope": 2348,
                                                                "src": "11372:18:1",
                                                                "stateVariable": false,
                                                                "storageLocation": "default",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                },
                                                                "typeName": {
                                                                    "id": 2321,
                                                                    "name": "bool",
                                                                    "nodeType": "ElementaryTypeName",
                                                                    "src": "11372:4:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bool",
                                                                        "typeString": "bool"
                                                                    }
                                                                },
                                                                "visibility": "internal"
                                                            },
                                                            {
                                                                "constant": false,
                                                                "id": 2324,
                                                                "mutability": "mutable",
                                                                "name": "result",
                                                                "nameLocation": "11400:6:1",
                                                                "nodeType": "VariableDeclaration",
                                                                "scope": 2348,
                                                                "src": "11392:14:1",
                                                                "stateVariable": false,
                                                                "storageLocation": "default",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                "typeName": {
                                                                    "id": 2323,
                                                                    "name": "uint256",
                                                                    "nodeType": "ElementaryTypeName",
                                                                    "src": "11392:7:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "visibility": "internal"
                                                            }
                                                        ],
                                                        "id": 2334,
                                                        "initialValue": {
                                                            "arguments": [
                                                                {
                                                                    "expression": {
                                                                        "baseExpression": {
                                                                            "id": 2327,
                                                                            "name": "cardPurchases",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 1603,
                                                                            "src": "11443:13:1",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_CardPurchase_$1537_storage_$",
                                                                                "typeString": "mapping(address => struct ZebecCard.CardPurchase storage ref)"
                                                                            }
                                                                        },
                                                                        "id": 2330,
                                                                        "indexExpression": {
                                                                            "expression": {
                                                                                "id": 2328,
                                                                                "name": "msg",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 4294967281,
                                                                                "src": "11457:3:1",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_magic_message",
                                                                                    "typeString": "msg"
                                                                                }
                                                                            },
                                                                            "id": 2329,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "memberLocation": "11461:6:1",
                                                                            "memberName": "sender",
                                                                            "nodeType": "MemberAccess",
                                                                            "src": "11457:10:1",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_address",
                                                                                "typeString": "address"
                                                                            }
                                                                        },
                                                                        "isConstant": false,
                                                                        "isLValue": true,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "nodeType": "IndexAccess",
                                                                        "src": "11443:25:1",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_struct$_CardPurchase_$1537_storage",
                                                                            "typeString": "struct ZebecCard.CardPurchase storage ref"
                                                                        }
                                                                    },
                                                                    "id": 2331,
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberLocation": "11469:21:1",
                                                                    "memberName": "totalCardBoughtPerDay",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 1536,
                                                                    "src": "11443:47:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                {
                                                                    "id": 2332,
                                                                    "name": "amount_1",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 2271,
                                                                    "src": "11512:8:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    },
                                                                    {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "id": 2325,
                                                                    "name": "Math",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 5532,
                                                                    "src": "11410:4:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_contract$_Math_$5532_$",
                                                                        "typeString": "type(library Math)"
                                                                    }
                                                                },
                                                                "id": 2326,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberLocation": "11415:6:1",
                                                                "memberName": "tryAdd",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 4521,
                                                                "src": "11410:11:1",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$",
                                                                    "typeString": "function (uint256,uint256) pure returns (bool,uint256)"
                                                                }
                                                            },
                                                            "id": 2333,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "nameLocations": [],
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "11410:128:1",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$",
                                                                "typeString": "tuple(bool,uint256)"
                                                            }
                                                        },
                                                        "nodeType": "VariableDeclarationStatement",
                                                        "src": "11371:167:1"
                                                    },
                                                    {
                                                        "expression": {
                                                            "arguments": [
                                                                {
                                                                    "id": 2336,
                                                                    "name": "_overflowFlag",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 2322,
                                                                    "src": "11640:13:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bool",
                                                                        "typeString": "bool"
                                                                    }
                                                                },
                                                                {
                                                                    "hexValue": "41726974686d65746963204f766572666c6f7721",
                                                                    "id": 2337,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "string",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "11655:22:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_stringliteral_22bbdbaba5bf1ef3e8b5a4120dcfce10aa8ebcde5f8193765f5d73796292e276",
                                                                        "typeString": "literal_string \"Arithmetic Overflow!\""
                                                                    },
                                                                    "value": "Arithmetic Overflow!"
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_bool",
                                                                        "typeString": "bool"
                                                                    },
                                                                    {
                                                                        "typeIdentifier": "t_stringliteral_22bbdbaba5bf1ef3e8b5a4120dcfce10aa8ebcde5f8193765f5d73796292e276",
                                                                        "typeString": "literal_string \"Arithmetic Overflow!\""
                                                                    }
                                                                ],
                                                                "id": 2335,
                                                                "name": "require",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [4294967278, 4294967278],
                                                                "referencedDeclaration": 4294967278,
                                                                "src": "11632:7:1",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                                    "typeString": "function (bool,string memory) pure"
                                                                }
                                                            },
                                                            "id": 2338,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "nameLocations": [],
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "11632:46:1",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_tuple$__$",
                                                                "typeString": "tuple()"
                                                            }
                                                        },
                                                        "id": 2339,
                                                        "nodeType": "ExpressionStatement",
                                                        "src": "11632:46:1"
                                                    },
                                                    {
                                                        "expression": {
                                                            "id": 2346,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftHandSide": {
                                                                "expression": {
                                                                    "baseExpression": {
                                                                        "id": 2340,
                                                                        "name": "cardPurchases",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 1603,
                                                                        "src": "11696:13:1",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_CardPurchase_$1537_storage_$",
                                                                            "typeString": "mapping(address => struct ZebecCard.CardPurchase storage ref)"
                                                                        }
                                                                    },
                                                                    "id": 2343,
                                                                    "indexExpression": {
                                                                        "expression": {
                                                                            "id": 2341,
                                                                            "name": "msg",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 4294967281,
                                                                            "src": "11710:3:1",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_magic_message",
                                                                                "typeString": "msg"
                                                                            }
                                                                        },
                                                                        "id": 2342,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberLocation": "11714:6:1",
                                                                        "memberName": "sender",
                                                                        "nodeType": "MemberAccess",
                                                                        "src": "11710:10:1",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    },
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "IndexAccess",
                                                                    "src": "11696:25:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_struct$_CardPurchase_$1537_storage",
                                                                        "typeString": "struct ZebecCard.CardPurchase storage ref"
                                                                    }
                                                                },
                                                                "id": 2344,
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": true,
                                                                "memberLocation": "11722:21:1",
                                                                "memberName": "totalCardBoughtPerDay",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 1536,
                                                                "src": "11696:47:1",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "Assignment",
                                                            "operator": "=",
                                                            "rightHandSide": {
                                                                "id": 2345,
                                                                "name": "result",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 2324,
                                                                "src": "11746:6:1",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "src": "11696:56:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "id": 2347,
                                                        "nodeType": "ExpressionStatement",
                                                        "src": "11696:56:1"
                                                    }
                                                ]
                                            }
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "commonType": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "id": 2376,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "expression": {
                                                        "baseExpression": {
                                                            "id": 2369,
                                                            "name": "cardPurchases",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1603,
                                                            "src": "12165:13:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_CardPurchase_$1537_storage_$",
                                                                "typeString": "mapping(address => struct ZebecCard.CardPurchase storage ref)"
                                                            }
                                                        },
                                                        "id": 2372,
                                                        "indexExpression": {
                                                            "expression": {
                                                                "id": 2370,
                                                                "name": "msg",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 4294967281,
                                                                "src": "12179:3:1",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_magic_message",
                                                                    "typeString": "msg"
                                                                }
                                                            },
                                                            "id": 2371,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberLocation": "12183:6:1",
                                                            "memberName": "sender",
                                                            "nodeType": "MemberAccess",
                                                            "src": "12179:10:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "nodeType": "IndexAccess",
                                                        "src": "12165:25:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_struct$_CardPurchase_$1537_storage",
                                                            "typeString": "struct ZebecCard.CardPurchase storage ref"
                                                        }
                                                    },
                                                    "id": 2373,
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberLocation": "12191:21:1",
                                                    "memberName": "totalCardBoughtPerDay",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 1536,
                                                    "src": "12165:47:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "<=",
                                                "rightExpression": {
                                                    "expression": {
                                                        "id": 2374,
                                                        "name": "cardConfig",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1594,
                                                        "src": "12232:10:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_struct$_CardConfig_$1532_storage",
                                                            "typeString": "struct ZebecCard.CardConfig storage ref"
                                                        }
                                                    },
                                                    "id": 2375,
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberLocation": "12243:17:1",
                                                    "memberName": "dailyCardBuyLimit",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 1531,
                                                    "src": "12232:28:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "src": "12165:95:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            {
                                                "hexValue": "4461696c79204361726420427579204c696d697420457863656564656421",
                                                "id": 2377,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "12274:32:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_3efa3f5e5130aff250ba27e7dca4a0a2a23228af3ee77947af54a4d8ca0d96a6",
                                                    "typeString": "literal_string \"Daily Card Buy Limit Exceeded!\""
                                                },
                                                "value": "Daily Card Buy Limit Exceeded!"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                {
                                                    "typeIdentifier": "t_stringliteral_3efa3f5e5130aff250ba27e7dca4a0a2a23228af3ee77947af54a4d8ca0d96a6",
                                                    "typeString": "literal_string \"Daily Card Buy Limit Exceeded!\""
                                                }
                                            ],
                                            "id": 2368,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [4294967278, 4294967278],
                                            "referencedDeclaration": 4294967278,
                                            "src": "12144:7:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (bool,string memory) pure"
                                            }
                                        },
                                        "id": 2378,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "12144:172:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 2379,
                                    "nodeType": "ExpressionStatement",
                                    "src": "12144:172:1"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "expression": {
                                                    "id": 2383,
                                                    "name": "cardConfig",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 1594,
                                                    "src": "12384:10:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_CardConfig_$1532_storage",
                                                        "typeString": "struct ZebecCard.CardConfig storage ref"
                                                    }
                                                },
                                                "id": 2384,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberLocation": "12395:12:1",
                                                "memberName": "revenueVault",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 1523,
                                                "src": "12384:23:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "id": 2385,
                                                "name": "revenueAmount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2214,
                                                "src": "12409:13:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "expression": {
                                                "id": 2380,
                                                "name": "token",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2161,
                                                "src": "12365:5:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_IERC20_$3789",
                                                    "typeString": "contract IERC20"
                                                }
                                            },
                                            "id": 2382,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberLocation": "12371:12:1",
                                            "memberName": "safeTransfer",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 3875,
                                            "src": "12365:18:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$3789_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$3789_$",
                                                "typeString": "function (contract IERC20,address,uint256)"
                                            }
                                        },
                                        "id": 2386,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "12365:58:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 2387,
                                    "nodeType": "ExpressionStatement",
                                    "src": "12365:58:1"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "expression": {
                                                    "id": 2391,
                                                    "name": "cardConfig",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 1594,
                                                    "src": "12452:10:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_CardConfig_$1532_storage",
                                                        "typeString": "struct ZebecCard.CardConfig storage ref"
                                                    }
                                                },
                                                "id": 2392,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberLocation": "12463:9:1",
                                                "memberName": "cardVault",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 1521,
                                                "src": "12452:20:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "id": 2393,
                                                "name": "cardAmount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2225,
                                                "src": "12474:10:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "expression": {
                                                "id": 2388,
                                                "name": "token",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2161,
                                                "src": "12433:5:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_IERC20_$3789",
                                                    "typeString": "contract IERC20"
                                                }
                                            },
                                            "id": 2390,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberLocation": "12439:12:1",
                                            "memberName": "safeTransfer",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 3875,
                                            "src": "12433:18:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$3789_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$3789_$",
                                                "typeString": "function (contract IERC20,address,uint256)"
                                            }
                                        },
                                        "id": 2394,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "12433:52:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 2395,
                                    "nodeType": "ExpressionStatement",
                                    "src": "12433:52:1"
                                },
                                {
                                    "eventCall": {
                                        "arguments": [
                                            {
                                                "expression": {
                                                    "id": 2397,
                                                    "name": "msg",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 4294967281,
                                                    "src": "12528:3:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_magic_message",
                                                        "typeString": "msg"
                                                    }
                                                },
                                                "id": 2398,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberLocation": "12532:6:1",
                                                "memberName": "sender",
                                                "nodeType": "MemberAccess",
                                                "src": "12528:10:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "expression": {
                                                    "id": 2399,
                                                    "name": "cardConfig",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 1594,
                                                    "src": "12552:10:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_CardConfig_$1532_storage",
                                                        "typeString": "struct ZebecCard.CardConfig storage ref"
                                                    }
                                                },
                                                "id": 2400,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberLocation": "12563:7:1",
                                                "memberName": "counter",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 1519,
                                                "src": "12552:18:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            {
                                                "id": 2401,
                                                "name": "amount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2154,
                                                "src": "12584:6:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            {
                                                "id": 2402,
                                                "name": "userEmail",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2156,
                                                "src": "12604:9:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_string_memory_ptr",
                                                    "typeString": "string memory"
                                                }
                                            },
                                            {
                                                "id": 2403,
                                                "name": "unix_now",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2268,
                                                "src": "12627:8:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                {
                                                    "typeIdentifier": "t_string_memory_ptr",
                                                    "typeString": "string memory"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "id": 2396,
                                            "name": "CardPurchased",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1553,
                                            "src": "12501:13:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$_t_uint256_$returns$__$",
                                                "typeString": "function (address,uint256,uint256,string memory,uint256)"
                                            }
                                        },
                                        "id": 2404,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "12501:144:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 2405,
                                    "nodeType": "EmitStatement",
                                    "src": "12496:149:1"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 2152,
                            "nodeType": "StructuredDocumentation",
                            "src": "8734:170:1",
                            "text": " @notice Buys a card with USDC tokens.\n @param amount The amount of USDC tokens to use for the purchase.\n @param userEmail The user's email."
                        },
                        "functionSelector": "69a34653",
                        "id": 2407,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "buyCard",
                        "nameLocation": "8918:7:1",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 2157,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 2154,
                                    "mutability": "mutable",
                                    "name": "amount",
                                    "nameLocation": "8934:6:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 2407,
                                    "src": "8926:14:1",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 2153,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "8926:7:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 2156,
                                    "mutability": "mutable",
                                    "name": "userEmail",
                                    "nameLocation": "8956:9:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 2407,
                                    "src": "8942:23:1",
                                    "stateVariable": false,
                                    "storageLocation": "memory",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_string_memory_ptr",
                                        "typeString": "string"
                                    },
                                    "typeName": {
                                        "id": 2155,
                                        "name": "string",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "8942:6:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_string_storage_ptr",
                                            "typeString": "string"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "8925:41:1"
                        },
                        "returnParameters": {
                            "id": 2158,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "8976:0:1"
                        },
                        "scope": 2657,
                        "src": "8909:3743:1",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "body": {
                            "id": 2432,
                            "nodeType": "Block",
                            "src": "12868:139:1",
                            "statements": [
                                {
                                    "assignments": [2416, null],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 2416,
                                            "mutability": "mutable",
                                            "name": "success",
                                            "nameLocation": "12884:7:1",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 2432,
                                            "src": "12879:12:1",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                            },
                                            "typeName": {
                                                "id": 2415,
                                                "name": "bool",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "12879:4:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            "visibility": "internal"
                                        },
                                        null
                                    ],
                                    "id": 2426,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "hexValue": "30",
                                                        "id": 2423,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "12929:1:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_0_by_1",
                                                            "typeString": "int_const 0"
                                                        },
                                                        "value": "0"
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_rational_0_by_1",
                                                            "typeString": "int_const 0"
                                                        }
                                                    ],
                                                    "id": 2422,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "lValueRequested": false,
                                                    "nodeType": "NewExpression",
                                                    "src": "12919:9:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                                                        "typeString": "function (uint256) pure returns (bytes memory)"
                                                    },
                                                    "typeName": {
                                                        "id": 2421,
                                                        "name": "bytes",
                                                        "nodeType": "ElementaryTypeName",
                                                        "src": "12923:5:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes_storage_ptr",
                                                            "typeString": "bytes"
                                                        }
                                                    }
                                                },
                                                "id": 2424,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "nameLocations": [],
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "12919:12:1",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes memory"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes memory"
                                                }
                                            ],
                                            "expression": {
                                                "argumentTypes": [
                                                    {
                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                        "typeString": "bytes memory"
                                                    }
                                                ],
                                                "expression": {
                                                    "id": 2417,
                                                    "name": "to",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 2410,
                                                    "src": "12897:2:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "id": 2418,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberLocation": "12900:4:1",
                                                "memberName": "call",
                                                "nodeType": "MemberAccess",
                                                "src": "12897:7:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                                                    "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                                                }
                                            },
                                            "id": 2420,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "names": ["value"],
                                            "nodeType": "FunctionCallOptions",
                                            "options": [
                                                {
                                                    "id": 2419,
                                                    "name": "value",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 2412,
                                                    "src": "12912:5:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                }
                                            ],
                                            "src": "12897:21:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value",
                                                "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                                            }
                                        },
                                        "id": 2425,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "12897:35:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                                            "typeString": "tuple(bool,bytes memory)"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "12878:54:1"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "id": 2428,
                                                "name": "success",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2416,
                                                "src": "12950:7:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            {
                                                "hexValue": "5472616e7366657248656c7065723a204e41544956455f5452414e534645525f4641494c4544",
                                                "id": 2429,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "12959:40:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_4af27bdb1608603061bf1e5c0b06065f864837a240268008de1dd67c6363740f",
                                                    "typeString": "literal_string \"TransferHelper: NATIVE_TRANSFER_FAILED\""
                                                },
                                                "value": "TransferHelper: NATIVE_TRANSFER_FAILED"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                {
                                                    "typeIdentifier": "t_stringliteral_4af27bdb1608603061bf1e5c0b06065f864837a240268008de1dd67c6363740f",
                                                    "typeString": "literal_string \"TransferHelper: NATIVE_TRANSFER_FAILED\""
                                                }
                                            ],
                                            "id": 2427,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [4294967278, 4294967278],
                                            "referencedDeclaration": 4294967278,
                                            "src": "12942:7:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (bool,string memory) pure"
                                            }
                                        },
                                        "id": 2430,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "12942:58:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 2431,
                                    "nodeType": "ExpressionStatement",
                                    "src": "12942:58:1"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 2408,
                            "nodeType": "StructuredDocumentation",
                            "src": "12658:141:1",
                            "text": " @dev Transfers native tokens securely.\n @param to The recipient address.\n @param value The amount to transfer."
                        },
                        "id": 2433,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "_safeNativeTransfer",
                        "nameLocation": "12813:19:1",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 2413,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 2410,
                                    "mutability": "mutable",
                                    "name": "to",
                                    "nameLocation": "12841:2:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 2433,
                                    "src": "12833:10:1",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 2409,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "12833:7:1",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 2412,
                                    "mutability": "mutable",
                                    "name": "value",
                                    "nameLocation": "12853:5:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 2433,
                                    "src": "12845:13:1",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 2411,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "12845:7:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "12832:27:1"
                        },
                        "returnParameters": {
                            "id": 2414,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "12868:0:1"
                        },
                        "scope": 2657,
                        "src": "12804:203:1",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "private"
                    },
                    {
                        "body": {
                            "id": 2655,
                            "nodeType": "Block",
                            "src": "13248:2535:1",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "commonType": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "id": 2458,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "expression": {
                                                        "id": 2452,
                                                        "name": "data",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2448,
                                                        "src": "13366:4:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_struct$_SwapData_$2680_calldata_ptr",
                                                            "typeString": "struct ISmartRouter.SwapData calldata"
                                                        }
                                                    },
                                                    "id": 2453,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberLocation": "13371:2:1",
                                                    "memberName": "to",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 2677,
                                                    "src": "13366:7:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "==",
                                                "rightExpression": {
                                                    "arguments": [
                                                        {
                                                            "id": 2456,
                                                            "name": "this",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4294967268,
                                                            "src": "13385:4:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_contract$_ZebecCard_$2657",
                                                                "typeString": "contract ZebecCard"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_contract$_ZebecCard_$2657",
                                                                "typeString": "contract ZebecCard"
                                                            }
                                                        ],
                                                        "id": 2455,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "lValueRequested": false,
                                                        "nodeType": "ElementaryTypeNameExpression",
                                                        "src": "13377:7:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_address_$",
                                                            "typeString": "type(address)"
                                                        },
                                                        "typeName": {
                                                            "id": 2454,
                                                            "name": "address",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "13377:7:1",
                                                            "typeDescriptions": {}
                                                        }
                                                    },
                                                    "id": 2457,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "typeConversion",
                                                    "lValueRequested": false,
                                                    "nameLocations": [],
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "13377:13:1",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "src": "13366:24:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            {
                                                "hexValue": "496e76616c69642064657374696e6174696f6e207265636569766572",
                                                "id": 2459,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "13392:30:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_3e10922aaad66f4e7557cbeaf4d8d1d49ae931a0c9b7a486304601582adc60ea",
                                                    "typeString": "literal_string \"Invalid destination receiver\""
                                                },
                                                "value": "Invalid destination receiver"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                {
                                                    "typeIdentifier": "t_stringliteral_3e10922aaad66f4e7557cbeaf4d8d1d49ae931a0c9b7a486304601582adc60ea",
                                                    "typeString": "literal_string \"Invalid destination receiver\""
                                                }
                                            ],
                                            "id": 2451,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [4294967278, 4294967278],
                                            "referencedDeclaration": 4294967278,
                                            "src": "13358:7:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (bool,string memory) pure"
                                            }
                                        },
                                        "id": 2460,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "13358:65:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 2461,
                                    "nodeType": "ExpressionStatement",
                                    "src": "13358:65:1"
                                },
                                {
                                    "assignments": [2464],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 2464,
                                            "mutability": "mutable",
                                            "name": "srcToken",
                                            "nameLocation": "13441:8:1",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 2655,
                                            "src": "13434:15:1",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_IERC20_$3789",
                                                "typeString": "contract IERC20"
                                            },
                                            "typeName": {
                                                "id": 2463,
                                                "nodeType": "UserDefinedTypeName",
                                                "pathNode": {
                                                    "id": 2462,
                                                    "name": "IERC20",
                                                    "nameLocations": ["13434:6:1"],
                                                    "nodeType": "IdentifierPath",
                                                    "referencedDeclaration": 3789,
                                                    "src": "13434:6:1"
                                                },
                                                "referencedDeclaration": 3789,
                                                "src": "13434:6:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_IERC20_$3789",
                                                    "typeString": "contract IERC20"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 2473,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "baseExpression": {
                                                            "id": 2468,
                                                            "name": "path",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2436,
                                                            "src": "13467:4:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                                                "typeString": "address[] calldata"
                                                            }
                                                        },
                                                        "id": 2470,
                                                        "indexExpression": {
                                                            "hexValue": "30",
                                                            "id": 2469,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "number",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "13472:1:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_rational_0_by_1",
                                                                "typeString": "int_const 0"
                                                            },
                                                            "value": "0"
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "nodeType": "IndexAccess",
                                                        "src": "13467:7:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    ],
                                                    "id": 2467,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "lValueRequested": false,
                                                    "nodeType": "ElementaryTypeNameExpression",
                                                    "src": "13459:7:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_address_$",
                                                        "typeString": "type(address)"
                                                    },
                                                    "typeName": {
                                                        "id": 2466,
                                                        "name": "address",
                                                        "nodeType": "ElementaryTypeName",
                                                        "src": "13459:7:1",
                                                        "typeDescriptions": {}
                                                    }
                                                },
                                                "id": 2471,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "nameLocations": [],
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "13459:16:1",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            ],
                                            "id": 2465,
                                            "name": "IERC20",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3789,
                                            "src": "13452:6:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_contract$_IERC20_$3789_$",
                                                "typeString": "type(contract IERC20)"
                                            }
                                        },
                                        "id": 2472,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "13452:24:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IERC20_$3789",
                                            "typeString": "contract IERC20"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "13434:42:1"
                                },
                                {
                                    "assignments": [2475],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 2475,
                                            "mutability": "mutable",
                                            "name": "amountIn",
                                            "nameLocation": "13506:8:1",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 2655,
                                            "src": "13498:16:1",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 2474,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "13498:7:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 2478,
                                    "initialValue": {
                                        "expression": {
                                            "id": 2476,
                                            "name": "data",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2448,
                                            "src": "13517:4:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_SwapData_$2680_calldata_ptr",
                                                "typeString": "struct ISmartRouter.SwapData calldata"
                                            }
                                        },
                                        "id": 2477,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberLocation": "13522:8:1",
                                        "memberName": "amountIn",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 2673,
                                        "src": "13517:13:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "13498:32:1"
                                },
                                {
                                    "assignments": [2480],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 2480,
                                            "mutability": "mutable",
                                            "name": "isNotNative",
                                            "nameLocation": "13554:11:1",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 2655,
                                            "src": "13549:16:1",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                            },
                                            "typeName": {
                                                "id": 2479,
                                                "name": "bool",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "13549:4:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 2487,
                                    "initialValue": {
                                        "commonType": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        },
                                        "id": 2486,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "arguments": [
                                                {
                                                    "id": 2483,
                                                    "name": "srcToken",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 2464,
                                                    "src": "13576:8:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_contract$_IERC20_$3789",
                                                        "typeString": "contract IERC20"
                                                    }
                                                }
                                            ],
                                            "expression": {
                                                "argumentTypes": [
                                                    {
                                                        "typeIdentifier": "t_contract$_IERC20_$3789",
                                                        "typeString": "contract IERC20"
                                                    }
                                                ],
                                                "id": 2482,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "lValueRequested": false,
                                                "nodeType": "ElementaryTypeNameExpression",
                                                "src": "13568:7:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_address_$",
                                                    "typeString": "type(address)"
                                                },
                                                "typeName": {
                                                    "id": 2481,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "13568:7:1",
                                                    "typeDescriptions": {}
                                                }
                                            },
                                            "id": 2484,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "nameLocations": [],
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "13568:17:1",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "!=",
                                        "rightExpression": {
                                            "id": 2485,
                                            "name": "wTrx",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1598,
                                            "src": "13589:4:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "src": "13568:25:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "13549:44:1"
                                },
                                {
                                    "condition": {
                                        "id": 2488,
                                        "name": "isNotNative",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2480,
                                        "src": "13607:11:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "id": 2511,
                                    "nodeType": "IfStatement",
                                    "src": "13603:312:1",
                                    "trueBody": {
                                        "id": 2510,
                                        "nodeType": "Block",
                                        "src": "13620:295:1",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [],
                                                            "expression": {
                                                                "argumentTypes": [],
                                                                "id": 2492,
                                                                "name": "_msgSender",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 3370,
                                                                "src": "13677:10:1",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                                                    "typeString": "function () view returns (address)"
                                                                }
                                                            },
                                                            "id": 2493,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "nameLocations": [],
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "13677:12:1",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 2496,
                                                                    "name": "this",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 4294967268,
                                                                    "src": "13715:4:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_contract$_ZebecCard_$2657",
                                                                        "typeString": "contract ZebecCard"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_contract$_ZebecCard_$2657",
                                                                        "typeString": "contract ZebecCard"
                                                                    }
                                                                ],
                                                                "id": 2495,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "nodeType": "ElementaryTypeNameExpression",
                                                                "src": "13707:7:1",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_address_$",
                                                                    "typeString": "type(address)"
                                                                },
                                                                "typeName": {
                                                                    "id": 2494,
                                                                    "name": "address",
                                                                    "nodeType": "ElementaryTypeName",
                                                                    "src": "13707:7:1",
                                                                    "typeDescriptions": {}
                                                                }
                                                            },
                                                            "id": 2497,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "typeConversion",
                                                            "lValueRequested": false,
                                                            "nameLocations": [],
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "13707:13:1",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 2498,
                                                            "name": "amountIn",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2475,
                                                            "src": "13738:8:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "id": 2489,
                                                            "name": "srcToken",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2464,
                                                            "src": "13634:8:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_contract$_IERC20_$3789",
                                                                "typeString": "contract IERC20"
                                                            }
                                                        },
                                                        "id": 2491,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberLocation": "13643:16:1",
                                                        "memberName": "safeTransferFrom",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 3902,
                                                        "src": "13634:25:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$3789_$_t_address_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$3789_$",
                                                            "typeString": "function (contract IERC20,address,address,uint256)"
                                                        }
                                                    },
                                                    "id": 2499,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "nameLocations": [],
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "13634:126:1",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 2500,
                                                "nodeType": "ExpressionStatement",
                                                "src": "13634:126:1"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 2504,
                                                                    "name": "sunSwapRouter",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1596,
                                                                    "src": "13861:13:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                },
                                                                {
                                                                    "id": 2505,
                                                                    "name": "amountIn",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 2475,
                                                                    "src": "13875:8:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    },
                                                                    {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "id": 2502,
                                                                    "name": "srcToken",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 2464,
                                                                    "src": "13844:8:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_contract$_IERC20_$3789",
                                                                        "typeString": "contract IERC20"
                                                                    }
                                                                },
                                                                "id": 2503,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberLocation": "13853:7:1",
                                                                "memberName": "approve",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 3776,
                                                                "src": "13844:16:1",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                                                    "typeString": "function (address,uint256) external returns (bool)"
                                                                }
                                                            },
                                                            "id": 2506,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "nameLocations": [],
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "13844:40:1",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "417070726f76616c206661696c6564",
                                                            "id": 2507,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "13886:17:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_943d1e3eddd033b0757a7ad9dc3dff9f8f150c5b720d6ee708e13ac5fc8e5d07",
                                                                "typeString": "literal_string \"Approval failed\""
                                                            },
                                                            "value": "Approval failed"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_943d1e3eddd033b0757a7ad9dc3dff9f8f150c5b720d6ee708e13ac5fc8e5d07",
                                                                "typeString": "literal_string \"Approval failed\""
                                                            }
                                                        ],
                                                        "id": 2501,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [4294967278, 4294967278],
                                                        "referencedDeclaration": 4294967278,
                                                        "src": "13836:7:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 2508,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "nameLocations": [],
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "13836:68:1",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 2509,
                                                "nodeType": "ExpressionStatement",
                                                "src": "13836:68:1"
                                            }
                                        ]
                                    }
                                },
                                {
                                    "assignments": [2516],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 2516,
                                            "mutability": "mutable",
                                            "name": "amountsOut",
                                            "nameLocation": "13952:10:1",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 2655,
                                            "src": "13935:27:1",
                                            "stateVariable": false,
                                            "storageLocation": "memory",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                                "typeString": "uint256[]"
                                            },
                                            "typeName": {
                                                "baseType": {
                                                    "id": 2514,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "13935:7:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 2515,
                                                "nodeType": "ArrayTypeName",
                                                "src": "13935:9:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                                    "typeString": "uint256[]"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 2530,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "id": 2524,
                                                "name": "path",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2436,
                                                "src": "14026:4:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                                    "typeString": "address[] calldata"
                                                }
                                            },
                                            {
                                                "id": 2525,
                                                "name": "poolVersion",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2439,
                                                "src": "14032:11:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_string_calldata_ptr_$dyn_calldata_ptr",
                                                    "typeString": "string calldata[] calldata"
                                                }
                                            },
                                            {
                                                "id": 2526,
                                                "name": "versionLen",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2442,
                                                "src": "14045:10:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                                    "typeString": "uint256[] calldata"
                                                }
                                            },
                                            {
                                                "id": 2527,
                                                "name": "fees",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2445,
                                                "src": "14057:4:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_uint24_$dyn_calldata_ptr",
                                                    "typeString": "uint24[] calldata"
                                                }
                                            },
                                            {
                                                "id": 2528,
                                                "name": "data",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2448,
                                                "src": "14063:4:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_SwapData_$2680_calldata_ptr",
                                                    "typeString": "struct ISmartRouter.SwapData calldata"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                                    "typeString": "address[] calldata"
                                                },
                                                {
                                                    "typeIdentifier": "t_array$_t_string_calldata_ptr_$dyn_calldata_ptr",
                                                    "typeString": "string calldata[] calldata"
                                                },
                                                {
                                                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                                    "typeString": "uint256[] calldata"
                                                },
                                                {
                                                    "typeIdentifier": "t_array$_t_uint24_$dyn_calldata_ptr",
                                                    "typeString": "uint24[] calldata"
                                                },
                                                {
                                                    "typeIdentifier": "t_struct$_SwapData_$2680_calldata_ptr",
                                                    "typeString": "struct ISmartRouter.SwapData calldata"
                                                }
                                            ],
                                            "expression": {
                                                "argumentTypes": [
                                                    {
                                                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                                        "typeString": "address[] calldata"
                                                    },
                                                    {
                                                        "typeIdentifier": "t_array$_t_string_calldata_ptr_$dyn_calldata_ptr",
                                                        "typeString": "string calldata[] calldata"
                                                    },
                                                    {
                                                        "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                                        "typeString": "uint256[] calldata"
                                                    },
                                                    {
                                                        "typeIdentifier": "t_array$_t_uint24_$dyn_calldata_ptr",
                                                        "typeString": "uint24[] calldata"
                                                    },
                                                    {
                                                        "typeIdentifier": "t_struct$_SwapData_$2680_calldata_ptr",
                                                        "typeString": "struct ISmartRouter.SwapData calldata"
                                                    }
                                                ],
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 2518,
                                                            "name": "sunSwapRouter",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1596,
                                                            "src": "13979:13:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "id": 2517,
                                                        "name": "ISmartRouter",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2711,
                                                        "src": "13966:12:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_contract$_ISmartRouter_$2711_$",
                                                            "typeString": "type(contract ISmartRouter)"
                                                        }
                                                    },
                                                    "id": 2519,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "typeConversion",
                                                    "lValueRequested": false,
                                                    "nameLocations": [],
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "13966:27:1",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_contract$_ISmartRouter_$2711",
                                                        "typeString": "contract ISmartRouter"
                                                    }
                                                },
                                                "id": 2520,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberLocation": "13994:14:1",
                                                "memberName": "swapExactInput",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 2710,
                                                "src": "13966:42:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_function_external_payable$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_string_memory_ptr_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint24_$dyn_memory_ptr_$_t_struct$_SwapData_$2680_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                                    "typeString": "function (address[] memory,string memory[] memory,uint256[] memory,uint24[] memory,struct ISmartRouter.SwapData memory) payable external returns (uint256[] memory)"
                                                }
                                            },
                                            "id": 2523,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "names": ["value"],
                                            "nodeType": "FunctionCallOptions",
                                            "options": [
                                                {
                                                    "expression": {
                                                        "id": 2521,
                                                        "name": "msg",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4294967281,
                                                        "src": "14015:3:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_magic_message",
                                                            "typeString": "msg"
                                                        }
                                                    },
                                                    "id": 2522,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberLocation": "14019:5:1",
                                                    "memberName": "value",
                                                    "nodeType": "MemberAccess",
                                                    "src": "14015:9:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                }
                                            ],
                                            "src": "13966:59:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_external_payable$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_string_memory_ptr_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint24_$dyn_memory_ptr_$_t_struct$_SwapData_$2680_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$value",
                                                "typeString": "function (address[] memory,string memory[] memory,uint256[] memory,uint24[] memory,struct ISmartRouter.SwapData memory) payable external returns (uint256[] memory)"
                                            }
                                        },
                                        "id": 2529,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "13966:102:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                            "typeString": "uint256[] memory"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "13934:134:1"
                                },
                                {
                                    "body": {
                                        "id": 2552,
                                        "nodeType": "Block",
                                        "src": "14123:76:1",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "hexValue": "616d6f756e74734f75745b25645d3a202573",
                                                            "id": 2545,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "14149:20:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_2bf2ee424fc9a9e87fa13097dbe9f1726b57a6bbd7bd59a1aef1884347f47313",
                                                                "typeString": "literal_string \"amountsOut[%d]: %s\""
                                                            },
                                                            "value": "amountsOut[%d]: %s"
                                                        },
                                                        {
                                                            "id": 2546,
                                                            "name": "i",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2532,
                                                            "src": "14171:1:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "baseExpression": {
                                                                "id": 2547,
                                                                "name": "amountsOut",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 2516,
                                                                "src": "14174:10:1",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                                                    "typeString": "uint256[] memory"
                                                                }
                                                            },
                                                            "id": 2549,
                                                            "indexExpression": {
                                                                "id": 2548,
                                                                "name": "i",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 2532,
                                                                "src": "14185:1:1",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "IndexAccess",
                                                            "src": "14174:13:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_stringliteral_2bf2ee424fc9a9e87fa13097dbe9f1726b57a6bbd7bd59a1aef1884347f47313",
                                                                "typeString": "literal_string \"amountsOut[%d]: %s\""
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "id": 2542,
                                                            "name": "console",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 13596,
                                                            "src": "14137:7:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_contract$_console_$13596_$",
                                                                "typeString": "type(library console)"
                                                            }
                                                        },
                                                        "id": 2544,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberLocation": "14145:3:1",
                                                        "memberName": "log",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 6767,
                                                        "src": "14137:11:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$__$",
                                                            "typeString": "function (string memory,uint256,uint256) view"
                                                        }
                                                    },
                                                    "id": 2550,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "nameLocations": [],
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "14137:51:1",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 2551,
                                                "nodeType": "ExpressionStatement",
                                                "src": "14137:51:1"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        },
                                        "id": 2538,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "id": 2535,
                                            "name": "i",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2532,
                                            "src": "14095:1:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "<",
                                        "rightExpression": {
                                            "expression": {
                                                "id": 2536,
                                                "name": "amountsOut",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2516,
                                                "src": "14099:10:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                                    "typeString": "uint256[] memory"
                                                }
                                            },
                                            "id": 2537,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberLocation": "14110:6:1",
                                            "memberName": "length",
                                            "nodeType": "MemberAccess",
                                            "src": "14099:17:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "14095:21:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "id": 2553,
                                    "initializationExpression": {
                                        "assignments": [2532],
                                        "declarations": [
                                            {
                                                "constant": false,
                                                "id": 2532,
                                                "mutability": "mutable",
                                                "name": "i",
                                                "nameLocation": "14088:1:1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2553,
                                                "src": "14083:6:1",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 2531,
                                                    "name": "uint",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "14083:4:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "id": 2534,
                                        "initialValue": {
                                            "hexValue": "30",
                                            "id": 2533,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "14092:1:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_rational_0_by_1",
                                                "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                        },
                                        "nodeType": "VariableDeclarationStatement",
                                        "src": "14083:10:1"
                                    },
                                    "loopExpression": {
                                        "expression": {
                                            "id": 2540,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "UnaryOperation",
                                            "operator": "++",
                                            "prefix": false,
                                            "src": "14118:3:1",
                                            "subExpression": {
                                                "id": 2539,
                                                "name": "i",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2532,
                                                "src": "14118:1:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "id": 2541,
                                        "nodeType": "ExpressionStatement",
                                        "src": "14118:3:1"
                                    },
                                    "nodeType": "ForStatement",
                                    "src": "14078:121:1"
                                },
                                {
                                    "assignments": [2555],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 2555,
                                            "mutability": "mutable",
                                            "name": "amountOut",
                                            "nameLocation": "14216:9:1",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 2655,
                                            "src": "14208:17:1",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 2554,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "14208:7:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 2562,
                                    "initialValue": {
                                        "baseExpression": {
                                            "id": 2556,
                                            "name": "amountsOut",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2516,
                                            "src": "14228:10:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                                "typeString": "uint256[] memory"
                                            }
                                        },
                                        "id": 2561,
                                        "indexExpression": {
                                            "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "id": 2560,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                                "expression": {
                                                    "id": 2557,
                                                    "name": "amountsOut",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 2516,
                                                    "src": "14239:10:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                                        "typeString": "uint256[] memory"
                                                    }
                                                },
                                                "id": 2558,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberLocation": "14250:6:1",
                                                "memberName": "length",
                                                "nodeType": "MemberAccess",
                                                "src": "14239:17:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "-",
                                            "rightExpression": {
                                                "hexValue": "31",
                                                "id": 2559,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "14259:1:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_1_by_1",
                                                    "typeString": "int_const 1"
                                                },
                                                "value": "1"
                                            },
                                            "src": "14239:21:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "14228:33:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "14208:53:1"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "commonType": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "id": 2566,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "id": 2564,
                                                    "name": "amountOut",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 2555,
                                                    "src": "14279:9:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": ">",
                                                "rightExpression": {
                                                    "hexValue": "30",
                                                    "id": 2565,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "14291:1:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_rational_0_by_1",
                                                        "typeString": "int_const 0"
                                                    },
                                                    "value": "0"
                                                },
                                                "src": "14279:13:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            {
                                                "hexValue": "53776170206661696c6564",
                                                "id": 2567,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "14294:13:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_179799c46f636fb7268f34ab3b1b94bc88b91aaeefb7ef2027cbcce0bd669c69",
                                                    "typeString": "literal_string \"Swap failed\""
                                                },
                                                "value": "Swap failed"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                {
                                                    "typeIdentifier": "t_stringliteral_179799c46f636fb7268f34ab3b1b94bc88b91aaeefb7ef2027cbcce0bd669c69",
                                                    "typeString": "literal_string \"Swap failed\""
                                                }
                                            ],
                                            "id": 2563,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [4294967278, 4294967278],
                                            "referencedDeclaration": 4294967278,
                                            "src": "14271:7:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (bool,string memory) pure"
                                            }
                                        },
                                        "id": 2568,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "14271:37:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 2569,
                                    "nodeType": "ExpressionStatement",
                                    "src": "14271:37:1"
                                },
                                {
                                    "assignments": [2571],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 2571,
                                            "mutability": "mutable",
                                            "name": "fee",
                                            "nameLocation": "14937:3:1",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 2655,
                                            "src": "14929:11:1",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 2570,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "14929:7:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 2572,
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "14929:11:1"
                                },
                                {
                                    "assignments": [2574],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 2574,
                                            "mutability": "mutable",
                                            "name": "feeAmount",
                                            "nameLocation": "14959:9:1",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 2655,
                                            "src": "14951:17:1",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 2573,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "14951:7:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 2581,
                                    "initialValue": {
                                        "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        },
                                        "id": 2580,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "components": [
                                                {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 2577,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 2575,
                                                        "name": "amountOut",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2555,
                                                        "src": "14972:9:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "*",
                                                    "rightExpression": {
                                                        "id": 2576,
                                                        "name": "fee",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2571,
                                                        "src": "14984:3:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "14972:15:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                }
                                            ],
                                            "id": 2578,
                                            "isConstant": false,
                                            "isInlineArray": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "TupleExpression",
                                            "src": "14971:17:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "/",
                                        "rightExpression": {
                                            "hexValue": "3130303030",
                                            "id": 2579,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "14991:5:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_rational_10000_by_1",
                                                "typeString": "int_const 10000"
                                            },
                                            "value": "10000"
                                        },
                                        "src": "14971:25:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "14951:45:1"
                                },
                                {
                                    "assignments": [2583, 2585],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 2583,
                                            "mutability": "mutable",
                                            "name": "_overflowFlag",
                                            "nameLocation": "15012:13:1",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 2655,
                                            "src": "15007:18:1",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                            },
                                            "typeName": {
                                                "id": 2582,
                                                "name": "bool",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "15007:4:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            "visibility": "internal"
                                        },
                                        {
                                            "constant": false,
                                            "id": 2585,
                                            "mutability": "mutable",
                                            "name": "_result",
                                            "nameLocation": "15035:7:1",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 2655,
                                            "src": "15027:15:1",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 2584,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "15027:7:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 2591,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "id": 2588,
                                                "name": "amountOut",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2555,
                                                "src": "15058:9:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            {
                                                "id": 2589,
                                                "name": "feeAmount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2574,
                                                "src": "15069:9:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "expression": {
                                                "id": 2586,
                                                "name": "Math",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 5532,
                                                "src": "15046:4:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_contract$_Math_$5532_$",
                                                    "typeString": "type(library Math)"
                                                }
                                            },
                                            "id": 2587,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberLocation": "15051:6:1",
                                            "memberName": "trySub",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 4549,
                                            "src": "15046:11:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$",
                                                "typeString": "function (uint256,uint256) pure returns (bool,uint256)"
                                            }
                                        },
                                        "id": 2590,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "15046:33:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$",
                                            "typeString": "tuple(bool,uint256)"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "15006:73:1"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "id": 2593,
                                                "name": "_overflowFlag",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2583,
                                                "src": "15163:13:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            {
                                                "hexValue": "41726974686d65746963204f766572666c6f7721",
                                                "id": 2594,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "15178:22:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_22bbdbaba5bf1ef3e8b5a4120dcfce10aa8ebcde5f8193765f5d73796292e276",
                                                    "typeString": "literal_string \"Arithmetic Overflow!\""
                                                },
                                                "value": "Arithmetic Overflow!"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                {
                                                    "typeIdentifier": "t_stringliteral_22bbdbaba5bf1ef3e8b5a4120dcfce10aa8ebcde5f8193765f5d73796292e276",
                                                    "typeString": "literal_string \"Arithmetic Overflow!\""
                                                }
                                            ],
                                            "id": 2592,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [4294967278, 4294967278],
                                            "referencedDeclaration": 4294967278,
                                            "src": "15155:7:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (bool,string memory) pure"
                                            }
                                        },
                                        "id": 2595,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "15155:46:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 2596,
                                    "nodeType": "ExpressionStatement",
                                    "src": "15155:46:1"
                                },
                                {
                                    "assignments": [2598],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 2598,
                                            "mutability": "mutable",
                                            "name": "userAmount",
                                            "nameLocation": "15219:10:1",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 2655,
                                            "src": "15211:18:1",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 2597,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "15211:7:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 2600,
                                    "initialValue": {
                                        "id": 2599,
                                        "name": "_result",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2585,
                                        "src": "15232:7:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "15211:28:1"
                                },
                                {
                                    "assignments": [2603],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 2603,
                                            "mutability": "mutable",
                                            "name": "usdc",
                                            "nameLocation": "15303:4:1",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 2655,
                                            "src": "15296:11:1",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_IERC20_$3789",
                                                "typeString": "contract IERC20"
                                            },
                                            "typeName": {
                                                "id": 2602,
                                                "nodeType": "UserDefinedTypeName",
                                                "pathNode": {
                                                    "id": 2601,
                                                    "name": "IERC20",
                                                    "nameLocations": ["15296:6:1"],
                                                    "nodeType": "IdentifierPath",
                                                    "referencedDeclaration": 3789,
                                                    "src": "15296:6:1"
                                                },
                                                "referencedDeclaration": 3789,
                                                "src": "15296:6:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_IERC20_$3789",
                                                    "typeString": "contract IERC20"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 2608,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "expression": {
                                                    "id": 2605,
                                                    "name": "cardConfig",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 1594,
                                                    "src": "15317:10:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_CardConfig_$1532_storage",
                                                        "typeString": "struct ZebecCard.CardConfig storage ref"
                                                    }
                                                },
                                                "id": 2606,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberLocation": "15328:11:1",
                                                "memberName": "usdcAddress",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 1525,
                                                "src": "15317:22:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            ],
                                            "id": 2604,
                                            "name": "IERC20",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3789,
                                            "src": "15310:6:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_contract$_IERC20_$3789_$",
                                                "typeString": "type(contract IERC20)"
                                            }
                                        },
                                        "id": 2607,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "15310:30:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IERC20_$3789",
                                            "typeString": "contract IERC20"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "15296:44:1"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "expression": {
                                                    "id": 2612,
                                                    "name": "cardConfig",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 1594,
                                                    "src": "15368:10:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_CardConfig_$1532_storage",
                                                        "typeString": "struct ZebecCard.CardConfig storage ref"
                                                    }
                                                },
                                                "id": 2613,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberLocation": "15379:12:1",
                                                "memberName": "revenueVault",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 1523,
                                                "src": "15368:23:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "id": 2614,
                                                "name": "feeAmount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2574,
                                                "src": "15393:9:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "expression": {
                                                "id": 2609,
                                                "name": "usdc",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2603,
                                                "src": "15350:4:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_IERC20_$3789",
                                                    "typeString": "contract IERC20"
                                                }
                                            },
                                            "id": 2611,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberLocation": "15355:12:1",
                                            "memberName": "safeTransfer",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 3875,
                                            "src": "15350:17:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$3789_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$3789_$",
                                                "typeString": "function (contract IERC20,address,uint256)"
                                            }
                                        },
                                        "id": 2615,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "15350:53:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 2616,
                                    "nodeType": "ExpressionStatement",
                                    "src": "15350:53:1"
                                },
                                {
                                    "assignments": [2618, 2620],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 2618,
                                            "mutability": "mutable",
                                            "name": "__overflowFlag",
                                            "nameLocation": "15420:14:1",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 2655,
                                            "src": "15415:19:1",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                            },
                                            "typeName": {
                                                "id": 2617,
                                                "name": "bool",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "15415:4:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            "visibility": "internal"
                                        },
                                        {
                                            "constant": false,
                                            "id": 2620,
                                            "mutability": "mutable",
                                            "name": "__result",
                                            "nameLocation": "15444:8:1",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 2655,
                                            "src": "15436:16:1",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 2619,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "15436:7:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 2629,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "baseExpression": {
                                                    "id": 2623,
                                                    "name": "cardBalances",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 1607,
                                                    "src": "15468:12:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                        "typeString": "mapping(address => uint256)"
                                                    }
                                                },
                                                "id": 2626,
                                                "indexExpression": {
                                                    "arguments": [],
                                                    "expression": {
                                                        "argumentTypes": [],
                                                        "id": 2624,
                                                        "name": "_msgSender",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3370,
                                                        "src": "15481:10:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                                            "typeString": "function () view returns (address)"
                                                        }
                                                    },
                                                    "id": 2625,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "nameLocations": [],
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "15481:12:1",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "IndexAccess",
                                                "src": "15468:26:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            {
                                                "id": 2627,
                                                "name": "userAmount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2598,
                                                "src": "15496:10:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "expression": {
                                                "id": 2621,
                                                "name": "Math",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 5532,
                                                "src": "15456:4:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_contract$_Math_$5532_$",
                                                    "typeString": "type(library Math)"
                                                }
                                            },
                                            "id": 2622,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberLocation": "15461:6:1",
                                            "memberName": "tryAdd",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 4521,
                                            "src": "15456:11:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$",
                                                "typeString": "function (uint256,uint256) pure returns (bool,uint256)"
                                            }
                                        },
                                        "id": 2628,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "15456:51:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$",
                                            "typeString": "tuple(bool,uint256)"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "15414:93:1"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "id": 2631,
                                                "name": "__overflowFlag",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2618,
                                                "src": "15592:14:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            {
                                                "hexValue": "41726974686d65746963204f766572666c6f7721",
                                                "id": 2632,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "15608:22:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_22bbdbaba5bf1ef3e8b5a4120dcfce10aa8ebcde5f8193765f5d73796292e276",
                                                    "typeString": "literal_string \"Arithmetic Overflow!\""
                                                },
                                                "value": "Arithmetic Overflow!"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                {
                                                    "typeIdentifier": "t_stringliteral_22bbdbaba5bf1ef3e8b5a4120dcfce10aa8ebcde5f8193765f5d73796292e276",
                                                    "typeString": "literal_string \"Arithmetic Overflow!\""
                                                }
                                            ],
                                            "id": 2630,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [4294967278, 4294967278],
                                            "referencedDeclaration": 4294967278,
                                            "src": "15584:7:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (bool,string memory) pure"
                                            }
                                        },
                                        "id": 2633,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "15584:47:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 2634,
                                    "nodeType": "ExpressionStatement",
                                    "src": "15584:47:1"
                                },
                                {
                                    "expression": {
                                        "id": 2640,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "baseExpression": {
                                                "id": 2635,
                                                "name": "cardBalances",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1607,
                                                "src": "15641:12:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                    "typeString": "mapping(address => uint256)"
                                                }
                                            },
                                            "id": 2638,
                                            "indexExpression": {
                                                "arguments": [],
                                                "expression": {
                                                    "argumentTypes": [],
                                                    "id": 2636,
                                                    "name": "_msgSender",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 3370,
                                                    "src": "15654:10:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                                        "typeString": "function () view returns (address)"
                                                    }
                                                },
                                                "id": 2637,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "nameLocations": [],
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "15654:12:1",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "nodeType": "IndexAccess",
                                            "src": "15641:26:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "id": 2639,
                                            "name": "__result",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2620,
                                            "src": "15670:8:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "15641:37:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "id": 2641,
                                    "nodeType": "ExpressionStatement",
                                    "src": "15641:37:1"
                                },
                                {
                                    "eventCall": {
                                        "arguments": [
                                            {
                                                "arguments": [],
                                                "expression": {
                                                    "argumentTypes": [],
                                                    "id": 2643,
                                                    "name": "_msgSender",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 3370,
                                                    "src": "15702:10:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                                        "typeString": "function () view returns (address)"
                                                    }
                                                },
                                                "id": 2644,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "nameLocations": [],
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "15702:12:1",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "id": 2647,
                                                        "name": "srcToken",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2464,
                                                        "src": "15724:8:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_contract$_IERC20_$3789",
                                                            "typeString": "contract IERC20"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_contract$_IERC20_$3789",
                                                            "typeString": "contract IERC20"
                                                        }
                                                    ],
                                                    "id": 2646,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "lValueRequested": false,
                                                    "nodeType": "ElementaryTypeNameExpression",
                                                    "src": "15716:7:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_address_$",
                                                        "typeString": "type(address)"
                                                    },
                                                    "typeName": {
                                                        "id": 2645,
                                                        "name": "address",
                                                        "nodeType": "ElementaryTypeName",
                                                        "src": "15716:7:1",
                                                        "typeDescriptions": {}
                                                    }
                                                },
                                                "id": 2648,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "nameLocations": [],
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "15716:17:1",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "id": 2649,
                                                "name": "amountIn",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2475,
                                                "src": "15735:8:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            {
                                                "id": 2650,
                                                "name": "amountIn",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2475,
                                                "src": "15745:8:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            {
                                                "id": 2651,
                                                "name": "amountOut",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2555,
                                                "src": "15755:9:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            {
                                                "id": 2652,
                                                "name": "feeAmount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2574,
                                                "src": "15766:9:1",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "id": 2642,
                                            "name": "Swapped",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1567,
                                            "src": "15694:7:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                                                "typeString": "function (address,address,uint256,uint256,uint256,uint256)"
                                            }
                                        },
                                        "id": 2653,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "15694:82:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 2654,
                                    "nodeType": "EmitStatement",
                                    "src": "15689:87:1"
                                }
                            ]
                        },
                        "functionSelector": "ce82f2b3",
                        "id": 2656,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "swapAndDeposit",
                        "nameLocation": "13022:14:1",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 2449,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 2436,
                                    "mutability": "mutable",
                                    "name": "path",
                                    "nameLocation": "13065:4:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 2656,
                                    "src": "13046:23:1",
                                    "stateVariable": false,
                                    "storageLocation": "calldata",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                        "typeString": "address[]"
                                    },
                                    "typeName": {
                                        "baseType": {
                                            "id": 2434,
                                            "name": "address",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "13046:7:1",
                                            "stateMutability": "nonpayable",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "id": 2435,
                                        "nodeType": "ArrayTypeName",
                                        "src": "13046:9:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                            "typeString": "address[]"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 2439,
                                    "mutability": "mutable",
                                    "name": "poolVersion",
                                    "nameLocation": "13097:11:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 2656,
                                    "src": "13079:29:1",
                                    "stateVariable": false,
                                    "storageLocation": "calldata",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_string_calldata_ptr_$dyn_calldata_ptr",
                                        "typeString": "string[]"
                                    },
                                    "typeName": {
                                        "baseType": {
                                            "id": 2437,
                                            "name": "string",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "13079:6:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_string_storage_ptr",
                                                "typeString": "string"
                                            }
                                        },
                                        "id": 2438,
                                        "nodeType": "ArrayTypeName",
                                        "src": "13079:8:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr",
                                            "typeString": "string[]"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 2442,
                                    "mutability": "mutable",
                                    "name": "versionLen",
                                    "nameLocation": "13137:10:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 2656,
                                    "src": "13118:29:1",
                                    "stateVariable": false,
                                    "storageLocation": "calldata",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                        "typeString": "uint256[]"
                                    },
                                    "typeName": {
                                        "baseType": {
                                            "id": 2440,
                                            "name": "uint256",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "13118:7:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "id": 2441,
                                        "nodeType": "ArrayTypeName",
                                        "src": "13118:9:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                            "typeString": "uint256[]"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 2445,
                                    "mutability": "mutable",
                                    "name": "fees",
                                    "nameLocation": "13175:4:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 2656,
                                    "src": "13157:22:1",
                                    "stateVariable": false,
                                    "storageLocation": "calldata",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint24_$dyn_calldata_ptr",
                                        "typeString": "uint24[]"
                                    },
                                    "typeName": {
                                        "baseType": {
                                            "id": 2443,
                                            "name": "uint24",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "13157:6:1",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint24",
                                                "typeString": "uint24"
                                            }
                                        },
                                        "id": 2444,
                                        "nodeType": "ArrayTypeName",
                                        "src": "13157:8:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint24_$dyn_storage_ptr",
                                            "typeString": "uint24[]"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 2448,
                                    "mutability": "mutable",
                                    "name": "data",
                                    "nameLocation": "13220:4:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 2656,
                                    "src": "13189:35:1",
                                    "stateVariable": false,
                                    "storageLocation": "calldata",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_SwapData_$2680_calldata_ptr",
                                        "typeString": "struct ISmartRouter.SwapData"
                                    },
                                    "typeName": {
                                        "id": 2447,
                                        "nodeType": "UserDefinedTypeName",
                                        "pathNode": {
                                            "id": 2446,
                                            "name": "ISmartRouter.SwapData",
                                            "nameLocations": ["13189:12:1", "13202:8:1"],
                                            "nodeType": "IdentifierPath",
                                            "referencedDeclaration": 2680,
                                            "src": "13189:21:1"
                                        },
                                        "referencedDeclaration": 2680,
                                        "src": "13189:21:1",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_SwapData_$2680_storage_ptr",
                                            "typeString": "struct ISmartRouter.SwapData"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "13036:194:1"
                        },
                        "returnParameters": {
                            "id": 2450,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "13248:0:1"
                        },
                        "scope": 2657,
                        "src": "13013:2770:1",
                        "stateMutability": "payable",
                        "virtual": false,
                        "visibility": "external"
                    }
                ],
                "scope": 2658,
                "src": "503:15282:1",
                "usedErrors": [
                    1591, 2742, 2747, 2923, 2926, 3187, 3192, 3433, 3446, 3842, 4123, 4128, 4131
                ],
                "usedEvents": [1553, 1567, 1573, 1579, 1585, 2753, 2931, 3412]
            }
        ],
        "src": "32:15754:1"
    },
    "compiler": {
        "name": "solc",
        "version": "0.8.20+commit.5f1834bc.Emscripten.clang"
    },
    "networks": {
        "3": {
            "events": {},
            "links": {},
            "address": "416f625d9f67be6dc9e9edf66f3c049359c6f85895",
            "transactionHash": "c70fdb64fa735083e0de52dc0b0690a81cad32e2fb44e467e23574d6bdc930ec"
        }
    },
    "schemaVersion": "2.0.1",
    "updatedAt": "2024-09-05T15:34:00.691Z"
}
