ETH Price: $2,523.54 (+1.62%)

Transaction Decoder

Block:
21000026 at Oct-19-2024 01:50:59 PM +UTC
Transaction Fee:
0.006434975439154416 ETH $16.24
Gas Used:
371,217 Gas / 17.334808048 Gwei

Account State Difference:

  Address   Before After State Difference Code
0x14f0830A...Fc7A754De
0.491663287943975444 Eth
Nonce: 288
0.485228312504821028 Eth
Nonce: 289
0.006434975439154416
(beaverbuild)
9.291327872702526421 Eth9.291687953192526421 Eth0.00036008049

Execution Trace

ETH 0.000044435005341155 UTB.swapAndExecute( instructions=[{name:swapInstructions, type:tuple, order:1, indexed:false, value:[{name:swapperId, type:uint8, order:1, indexed:false, value:0, valueString:0}, {name:swapParams, type:tuple, order:2, indexed:false, value:[{name:amountIn, type:uint256, order:1, indexed:false, value:100000000, valueString:100000000}, {name:amountOut, type:uint256, order:2, indexed:false, value:100030503364876637712, valueString:100030503364876637712}, {name:dustOut, type:uint256, order:3, indexed:false, value:0, valueString:0}, {name:tokenIn, type:address, order:4, indexed:false, value:0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48, valueString:0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48}, {name:tokenOut, type:address, order:5, indexed:false, value:0x6B175474E89094C44Da98b954EedeAC495271d0F, valueString:0x6B175474E89094C44Da98b954EedeAC495271d0F}, {name:direction, type:uint8, order:6, indexed:false, value:1, valueString:1}, {name:refund, type:address, order:7, indexed:false, value:0x14f0830A439a77B9c09f6598bB28679Fc7A754De, valueString:0x14f0830A439a77B9c09f6598bB28679Fc7A754De}, {name:additionalArgs, type:bytes, order:8, indexed:false, value:0x6B175474E89094C44DA98B954EEDEAC495271D0F0001F4C02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2000064A0B86991C6218B36C1D19D4A2E9EB0CE3606EB48, valueString:0x6B175474E89094C44DA98B954EEDEAC495271D0F0001F4C02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2000064A0B86991C6218B36C1D19D4A2E9EB0CE3606EB48}], valueString:[{name:amountIn, type:uint256, order:1, indexed:false, value:100000000, valueString:100000000}, {name:amountOut, type:uint256, order:2, indexed:false, value:100030503364876637712, valueString:100030503364876637712}, {name:dustOut, type:uint256, order:3, indexed:false, value:0, valueString:0}, {name:tokenIn, type:address, order:4, indexed:false, value:0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48, valueString:0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48}, {name:tokenOut, type:address, order:5, indexed:false, value:0x6B175474E89094C44Da98b954EedeAC495271d0F, valueString:0x6B175474E89094C44Da98b954EedeAC495271d0F}, {name:direction, type:uint8, order:6, indexed:false, value:1, valueString:1}, {name:refund, type:address, order:7, indexed:false, value:0x14f0830A439a77B9c09f6598bB28679Fc7A754De, valueString:0x14f0830A439a77B9c09f6598bB28679Fc7A754De}, {name:additionalArgs, type:bytes, order:8, indexed:false, value:0x6B175474E89094C44DA98B954EEDEAC495271D0F0001F4C02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2000064A0B86991C6218B36C1D19D4A2E9EB0CE3606EB48, valueString:0x6B175474E89094C44DA98B954EEDEAC495271D0F0001F4C02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2000064A0B86991C6218B36C1D19D4A2E9EB0CE3606EB48}]}], valueString:[{name:swapperId, type:uint8, order:1, indexed:false, value:0, valueString:0}, {name:swapParams, type:tuple, order:2, indexed:false, value:[{name:amountIn, type:uint256, order:1, indexed:false, value:100000000, valueString:100000000}, {name:amountOut, type:uint256, order:2, indexed:false, value:100030503364876637712, valueString:100030503364876637712}, {name:dustOut, type:uint256, order:3, indexed:false, value:0, valueString:0}, {name:tokenIn, type:address, order:4, indexed:false, value:0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48, valueString:0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48}, {name:tokenOut, type:address, order:5, indexed:false, value:0x6B175474E89094C44Da98b954EedeAC495271d0F, valueString:0x6B175474E89094C44Da98b954EedeAC495271d0F}, {name:direction, type:uint8, order:6, indexed:false, value:1, valueString:1}, {name:refund, type:address, order:7, indexed:false, value:0x14f0830A439a77B9c09f6598bB28679Fc7A754De, valueString:0x14f0830A439a77B9c09f6598bB28679Fc7A754De}, {name:additionalArgs, type:bytes, order:8, indexed:false, value:0x6B175474E89094C44DA98B954EEDEAC495271D0F0001F4C02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2000064A0B86991C6218B36C1D19D4A2E9EB0CE3606EB48, valueString:0x6B175474E89094C44DA98B954EEDEAC495271D0F0001F4C02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2000064A0B86991C6218B36C1D19D4A2E9EB0CE3606EB48}], valueString:[{name:amountIn, type:uint256, order:1, indexed:false, value:100000000, valueString:100000000}, {name:amountOut, type:uint256, order:2, indexed:false, value:100030503364876637712, valueString:100030503364876637712}, {name:dustOut, type:uint256, order:3, indexed:false, value:0, valueString:0}, {name:tokenIn, type:address, order:4, indexed:false, value:0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48, valueString:0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48}, {name:tokenOut, type:address, order:5, indexed:false, value:0x6B175474E89094C44Da98b954EedeAC495271d0F, valueString:0x6B175474E89094C44Da98b954EedeAC495271d0F}, {name:direction, type:uint8, order:6, indexed:false, value:1, valueString:1}, {name:refund, type:address, order:7, indexed:false, value:0x14f0830A439a77B9c09f6598bB28679Fc7A754De, valueString:0x14f0830A439a77B9c09f6598bB28679Fc7A754De}, {name:additionalArgs, type:bytes, order:8, indexed:false, value:0x6B175474E89094C44DA98B954EEDEAC495271D0F0001F4C02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2000064A0B86991C6218B36C1D19D4A2E9EB0CE3606EB48, valueString:0x6B175474E89094C44DA98B954EEDEAC495271D0F0001F4C02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2000064A0B86991C6218B36C1D19D4A2E9EB0CE3606EB48}]}]}, {name:target, type:address, order:2, indexed:false, value:0xf33D21137cD0B878f3A18Cc60cD74F842c59cb00, valueString:0xf33D21137cD0B878f3A18Cc60cD74F842c59cb00}, {name:paymentOperator, type:address, order:3, indexed:false, value:0xf33D21137cD0B878f3A18Cc60cD74F842c59cb00, valueString:0xf33D21137cD0B878f3A18Cc60cD74F842c59cb00}, {name:refund, type:address, order:4, indexed:false, value:0x14f0830A439a77B9c09f6598bB28679Fc7A754De, valueString:0x14f0830A439a77B9c09f6598bB28679Fc7A754De}, {name:executionFee, type:uint256, order:5, indexed:false, value:44435005341155, valueString:44435005341155}, {name:payload, type:bytes, order:6, indexed:false, value:0xD61EAEF90000000000000000000000000000000000000000000000056C33BCD376FD161000000000000000000000000014F0830A439A77B9C09F6598BB28679FC7A754DE00000000000000000000000014F0830A439A77B9C09F6598BB28679FC7A754DE0000000000000000000000000000000000000000000000000000000000007668, valueString:0xD61EAEF90000000000000000000000000000000000000000000000056C33BCD376FD161000000000000000000000000014F0830A439A77B9C09F6598BB28679FC7A754DE00000000000000000000000014F0830A439A77B9C09F6598BB28679FC7A754DE0000000000000000000000000000000000000000000000000000000000007668}, {name:txId, type:bytes32, order:7, indexed:false, value:514056C2A4EAB1234EC99CEA749F78E03BF1EDB50CD2ACA648CC4F37BBF00BD5, valueString:514056C2A4EAB1234EC99CEA749F78E03BF1EDB50CD2ACA648CC4F37BBF00BD5}], feeData=[{name:appId, type:bytes4, order:1, indexed:false, value:2+n6NQ==, valueString:System.Byte[]}, {name:affiliateId, type:bytes4, order:2, indexed:false, value:AAAAAA==, valueString:System.Byte[]}, {name:bridgeFee, type:uint256, order:3, indexed:false, value:0, valueString:0}, {name:deadline, type:uint256, order:4, indexed:false, value:1729432234, valueString:1729432234}, {name:chainId, type:uint256, order:5, indexed:false, value:1, valueString:1}, {name:appFees, type:tuple[], order:6, indexed:false}], signature=0xF11053F7137AA75F797D92E2D98251FF486A00C8380DC92F49F99148C23B5F5C0DCB05D4527C50D3419C7E208B2F23E22A8F3B10086250671D263941794881851C )
  • UTBFeeManager.verifySignature( packedInfo=0x000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000003A000000000000000000000000000000000000000000000000000000000000000E0000000000000000000000000F33D21137CD0B878F3A18CC60CD74F842C59CB00000000000000000000000000F33D21137CD0B878F3A18CC60CD74F842C59CB0000000000000000000000000014F0830A439A77B9C09F6598BB28679FC7A754DE00000000000000000000000000000000000000000000000000002869D4B57DE300000000000000000000000000000000000000000000000000000000000002A0514056C2A4EAB1234EC99CEA749F78E03BF1EDB50CD2ACA648CC4F37BBF00BD5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000005F5E1000000000000000000000000000000000000000000000000056C33BCD376FD16100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A0B86991C6218B36C1D19D4A2E9EB0CE3606EB480000000000000000000000006B175474E89094C44DA98B954EEDEAC495271D0F000000000000000000000000000000000000000000000000000000000000000100000000000000000000000014F0830A439A77B9C09F6598BB28679FC7A754DE000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000426B175474E89094C44DA98B954EEDEAC495271D0F0001F4C02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2000064A0B86991C6218B36C1D19D4A2E9EB0CE3606EB480000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000084D61EAEF90000000000000000000000000000000000000000000000056C33BCD376FD161000000000000000000000000014F0830A439A77B9C09F6598BB28679FC7A754DE00000000000000000000000014F0830A439A77B9C09F6598BB28679FC7A754DE000000000000000000000000000000000000000000000000000000000000766800000000000000000000000000000000000000000000000000000000DBE9FA3500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000067150AAA000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000C0000000000000000000000000000000000000000000000000000000000000000100000000000000000000000006DD843B78E6CC34744473176D8A61743EEFAA9A00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, signature=0xF11053F7137AA75F797D92E2D98251FF486A00C8380DC92F49F99148C23B5F5C0DCB05D4527C50D3419C7E208B2F23E22A8F3B10086250671D263941794881851C )
    • Null: 0x000...001.fc5b0622( )
    • GnosisSafeProxy.CALL( )
      • GnosisSafeL2.DELEGATECALL( )
      • FiatTokenProxy.23b872dd( )
        • FiatTokenV2_2.transferFrom( from=0x14f0830A439a77B9c09f6598bB28679Fc7A754De, to=0x14036De12aC0C96d4d5eD03e150d6558A43bBeE5, value=100000000 ) => ( True )
        • FiatTokenProxy.095ea7b3( )
          • FiatTokenV2_2.approve( spender=0x2EeC08Fb9C0FcCCF64780c329cec64Ae12D7a28E, value=100000000 ) => ( True )
          • UniSwapper.swap( swapParams=[{name:amountIn, type:uint256, order:1, indexed:false, value:100000000, valueString:100000000}, {name:amountOut, type:uint256, order:2, indexed:false, value:100030503364876637712, valueString:100030503364876637712}, {name:dustOut, type:uint256, order:3, indexed:false, value:0, valueString:0}, {name:tokenIn, type:address, order:4, indexed:false, value:0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48, valueString:0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48}, {name:tokenOut, type:address, order:5, indexed:false, value:0x6B175474E89094C44Da98b954EedeAC495271d0F, valueString:0x6B175474E89094C44Da98b954EedeAC495271d0F}, {name:direction, type:uint8, order:6, indexed:false, value:1, valueString:1}, {name:refund, type:address, order:7, indexed:false, value:0x14f0830A439a77B9c09f6598bB28679Fc7A754De, valueString:0x14f0830A439a77B9c09f6598bB28679Fc7A754De}, {name:additionalArgs, type:bytes, order:8, indexed:false, value:0x6B175474E89094C44DA98B954EEDEAC495271D0F0001F4C02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2000064A0B86991C6218B36C1D19D4A2E9EB0CE3606EB48, valueString:0x6B175474E89094C44DA98B954EEDEAC495271D0F0001F4C02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2000064A0B86991C6218B36C1D19D4A2E9EB0CE3606EB48}] ) => ( tokenOut=0x0000000000000000000000000000000000000000, amountOut=862718293348820473429344482784628181556388621521298319395315527974912 )
            • FiatTokenProxy.23b872dd( )
              • FiatTokenV2_2.transferFrom( from=0x14036De12aC0C96d4d5eD03e150d6558A43bBeE5, to=0x2EeC08Fb9C0FcCCF64780c329cec64Ae12D7a28E, value=100000000 ) => ( True )
              • FiatTokenProxy.095ea7b3( )
                • FiatTokenV2_2.approve( spender=0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45, value=100000000 ) => ( True )
                • SwapRouter02.exactOutput( params=[{name:path, type:bytes, order:1, indexed:false, value:0x6B175474E89094C44DA98B954EEDEAC495271D0F0001F4C02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2000064A0B86991C6218B36C1D19D4A2E9EB0CE3606EB48, valueString:0x6B175474E89094C44DA98B954EEDEAC495271D0F0001F4C02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2000064A0B86991C6218B36C1D19D4A2E9EB0CE3606EB48}, {name:recipient, type:address, order:2, indexed:false, value:0x2EeC08Fb9C0FcCCF64780c329cec64Ae12D7a28E, valueString:0x2EeC08Fb9C0FcCCF64780c329cec64Ae12D7a28E}, {name:amountOut, type:uint256, order:3, indexed:false, value:100030503364876637712, valueString:100030503364876637712}, {name:amountInMaximum, type:uint256, order:4, indexed:false, value:100000000, valueString:100000000}] ) => ( amountIn=3963877391197344453575983046348115674221700746820753546331534351508065746944 )
                  • Uniswap V3: DAI 2.128acb08( )
                    • Dai.transfer( dst=0x2EeC08Fb9C0FcCCF64780c329cec64Ae12D7a28E, wad=100030503364876637712 ) => ( True )
                    • WETH9.balanceOf( 0x60594a405d53811d3BC4766596EFD80fd545A270 ) => ( 388931584782260325595 )
                    • SwapRouter02.uniswapV3SwapCallback( amount0Delta=-100030503364876637712, amount1Delta=37947549650832275, _data=0x000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000002EEC08FB9C0FCCCF64780C329CEC64AE12D7A28E00000000000000000000000000000000000000000000000000000000000000426B175474E89094C44DA98B954EEDEAC495271D0F0001F4C02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2000064A0B86991C6218B36C1D19D4A2E9EB0CE3606EB48000000000000000000000000000000000000000000000000000000000000 )
                      • Uniswap V3: USDC 4.128acb08( )
                        • WETH9.transfer( dst=0x60594a405d53811d3BC4766596EFD80fd545A270, wad=37947549650832275 ) => ( True )
                        • FiatTokenProxy.70a08231( )
                        • SwapRouter02.uniswapV3SwapCallback( amount0Delta=100013535, amount1Delta=-37947549650832275, _data=0x000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000002EEC08FB9C0FCCCF64780C329CEC64AE12D7A28E000000000000000000000000000000000000000000000000000000000000002BC02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2000064A0B86991C6218B36C1D19D4A2E9EB0CE3606EB48000000000000000000000000000000000000000000 )
                          File 1 of 10: UTB
                          1
                          2
                          3
                          4
                          5
                          6
                          7
                          8
                          9
                          10
                          11
                          12
                          13
                          14
                          15
                          16
                          // SPDX-License-Identifier: GPL-3.0
                          pragma solidity 0.8.24;
                          import {Roles} from "./utils/Roles.sol";
                          import {IUTB} from "./interfaces/IUTB.sol";
                          import {IUTBExecutor} from "./interfaces/IUTBExecutor.sol";
                          import {IERC20} from "@openzeppelin/contracts/interfaces/IERC20.sol";
                          import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
                          import {IWETH} from "./interfaces/IWETH.sol";
                          import {IUTBFeeManager} from "./interfaces/IUTBFeeManager.sol";
                          import {IBridgeAdapter} from "./interfaces/IBridgeAdapter.sol";
                          import {ISwapper} from "./interfaces/ISwapper.sol";
                          import {SwapInstructions, SwapParams, FeeData, Fee, BridgeInstructions, SwapAndExecuteInstructions} from "./CommonTypes.sol";
                          contract UTB is IUTB, Roles {
                          constructor() Roles(msg.sender) {}
                          IUTBExecutor public executor;
                          IUTBFeeManager public feeManager;
                          XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

                          File 2 of 10: UTBFeeManager
                          1
                          2
                          3
                          4
                          5
                          6
                          7
                          8
                          9
                          10
                          11
                          12
                          13
                          14
                          15
                          16
                          // SPDX-License-Identifier: GPL-3.0
                          pragma solidity 0.8.24;
                          import {IUTBFeeManager} from "./interfaces/IUTBFeeManager.sol";
                          import {Roles} from "./utils/Roles.sol";
                          contract UTBFeeManager is IUTBFeeManager, Roles {
                          address public signer;
                          string constant BANNER = "\\x19Ethereum Signed Message:\
                          32";
                          constructor(address _signer) Roles(msg.sender) {
                          signer = _signer;
                          }
                          /// @inheritdoc IUTBFeeManager
                          function setSigner(address _signer) public onlyAdmin {
                          signer = _signer;
                          emit SetSigner(_signer);
                          }
                          XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

                          File 3 of 10: GnosisSafeProxy
                          1
                          2
                          3
                          4
                          5
                          6
                          7
                          8
                          9
                          10
                          11
                          12
                          13
                          14
                          15
                          16
                          // SPDX-License-Identifier: LGPL-3.0-only
                          pragma solidity >=0.7.0 <0.9.0;
                          /// @title IProxy - Helper interface to access masterCopy of the Proxy on-chain
                          /// @author Richard Meissner - <richard@gnosis.io>
                          interface IProxy {
                          function masterCopy() external view returns (address);
                          }
                          /// @title GnosisSafeProxy - Generic proxy contract allows to execute all transactions applying the code of a master contract.
                          /// @author Stefan George - <stefan@gnosis.io>
                          /// @author Richard Meissner - <richard@gnosis.io>
                          contract GnosisSafeProxy {
                          // singleton always needs to be first declared variable, to ensure that it is at the same location in the contracts to which calls are delegated.
                          // To reduce deployment costs this variable is internal and needs to be retrieved via `getStorageAt`
                          address internal singleton;
                          XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

                          File 4 of 10: GnosisSafeL2
                          1
                          2
                          3
                          4
                          5
                          6
                          7
                          8
                          9
                          10
                          11
                          12
                          13
                          14
                          15
                          16
                          // SPDX-License-Identifier: LGPL-3.0-only
                          pragma solidity >=0.7.0 <0.9.0;
                          import "./base/ModuleManager.sol";
                          import "./base/OwnerManager.sol";
                          import "./base/FallbackManager.sol";
                          import "./base/GuardManager.sol";
                          import "./common/EtherPaymentFallback.sol";
                          import "./common/Singleton.sol";
                          import "./common/SignatureDecoder.sol";
                          import "./common/SecuredTokenTransfer.sol";
                          import "./common/StorageAccessible.sol";
                          import "./interfaces/ISignatureValidator.sol";
                          import "./external/GnosisSafeMath.sol";
                          /// @title Gnosis Safe - A multisignature wallet with support for confirmations using signed messages based on ERC191.
                          /// @author Stefan George - <stefan@gnosis.io>
                          /// @author Richard Meissner - <richard@gnosis.io>
                          XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

                          File 5 of 10: FiatTokenProxy
                          1
                          2
                          3
                          4
                          5
                          6
                          7
                          8
                          9
                          10
                          11
                          12
                          13
                          14
                          15
                          16
                          pragma solidity ^0.4.24;
                          // File: zos-lib/contracts/upgradeability/Proxy.sol
                          /**
                          * @title Proxy
                          * @dev Implements delegation of calls to other contracts, with proper
                          * forwarding of return values and bubbling of failures.
                          * It defines a fallback function that delegates all calls to the address
                          * returned by the abstract _implementation() internal function.
                          */
                          contract Proxy {
                          /**
                          * @dev Fallback function.
                          * Implemented entirely in `_fallback`.
                          */
                          XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

                          File 6 of 10: FiatTokenV2_2
                          1
                          2
                          3
                          4
                          5
                          6
                          7
                          8
                          9
                          10
                          11
                          12
                          13
                          14
                          15
                          16
                          /**
                          * SPDX-License-Identifier: Apache-2.0
                          *
                          * Copyright (c) 2023, Circle Internet Financial, LLC.
                          *
                          * Licensed under the Apache License, Version 2.0 (the "License");
                          * you may not use this file except in compliance with the License.
                          * You may obtain a copy of the License at
                          *
                          * http://www.apache.org/licenses/LICENSE-2.0
                          *
                          * Unless required by applicable law or agreed to in writing, software
                          * distributed under the License is distributed on an "AS IS" BASIS,
                          * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
                          * See the License for the specific language governing permissions and
                          * limitations under the License.
                          XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

                          File 7 of 10: UniSwapper
                          1
                          2
                          3
                          4
                          5
                          6
                          7
                          8
                          9
                          10
                          11
                          12
                          13
                          14
                          15
                          16
                          // SPDX-License-Identifier: GPL-3.0
                          pragma solidity 0.8.24;
                          import {SwapParams, SwapDirection} from "../CommonTypes.sol";
                          import {IERC20} from "@openzeppelin/contracts/interfaces/IERC20.sol";
                          import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
                          import {IWETH} from "../interfaces/IWETH.sol";
                          import {Swapper} from "../../src/swappers/Swapper.sol";
                          import {IV3SwapRouter} from "@uniswap/swap-router-contracts/contracts/interfaces/IV3SwapRouter.sol";
                          contract UniSwapper is Swapper {
                          uint8 public constant ID = 0;
                          address public uniswap_router;
                          function setRouter(address _router) public onlyAdmin {
                          uniswap_router = _router;
                          }
                          function swap(
                          SwapParams memory swapParams
                          XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

                          File 8 of 10: SwapRouter02
                          1
                          2
                          3
                          4
                          5
                          6
                          7
                          8
                          9
                          10
                          11
                          12
                          13
                          14
                          15
                          16
                          // SPDX-License-Identifier: GPL-2.0-or-later
                          pragma solidity =0.7.6;
                          pragma abicoder v2;
                          import '@uniswap/v3-periphery/contracts/base/SelfPermit.sol';
                          import '@uniswap/v3-periphery/contracts/base/PeripheryImmutableState.sol';
                          import './interfaces/ISwapRouter02.sol';
                          import './V2SwapRouter.sol';
                          import './V3SwapRouter.sol';
                          import './base/ApproveAndCall.sol';
                          import './base/MulticallExtended.sol';
                          /// @title Uniswap V2 and V3 Swap Router
                          contract SwapRouter02 is ISwapRouter02, V2SwapRouter, V3SwapRouter, ApproveAndCall, MulticallExtended, SelfPermit {
                          constructor(
                          address _factoryV2,
                          address factoryV3,
                          address _positionManager,
                          XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

                          File 9 of 10: Dai
                          1
                          2
                          3
                          4
                          5
                          6
                          7
                          8
                          9
                          10
                          11
                          12
                          13
                          14
                          15
                          16
                          // hevm: flattened sources of /nix/store/8xb41r4qd0cjb63wcrxf1qmfg88p0961-dss-6fd7de0/src/dai.sol
                          pragma solidity =0.5.12;
                          ////// /nix/store/8xb41r4qd0cjb63wcrxf1qmfg88p0961-dss-6fd7de0/src/lib.sol
                          // This program is free software: you can redistribute it and/or modify
                          // it under the terms of the GNU General Public License as published by
                          // the Free Software Foundation, either version 3 of the License, or
                          // (at your option) any later version.
                          // This program is distributed in the hope that it will be useful,
                          // but WITHOUT ANY WARRANTY; without even the implied warranty of
                          // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
                          // GNU General Public License for more details.
                          // You should have received a copy of the GNU General Public License
                          // along with this program. If not, see <http://www.gnu.org/licenses/>.
                          XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

                          File 10 of 10: WETH9
                          1
                          2
                          3
                          4
                          5
                          6
                          7
                          8
                          9
                          10
                          11
                          12
                          13
                          14
                          15
                          16
                          // Copyright (C) 2015, 2016, 2017 Dapphub
                          // This program is free software: you can redistribute it and/or modify
                          // it under the terms of the GNU General Public License as published by
                          // the Free Software Foundation, either version 3 of the License, or
                          // (at your option) any later version.
                          // This program is distributed in the hope that it will be useful,
                          // but WITHOUT ANY WARRANTY; without even the implied warranty of
                          // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
                          // GNU General Public License for more details.
                          // You should have received a copy of the GNU General Public License
                          // along with this program. If not, see <http://www.gnu.org/licenses/>.
                          pragma solidity ^0.4.18;
                          XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX