Contract 0xA3149708cb9D9BD31CB5c8F5c107D94395B7bA64

 
Txn Hash Method
Block
From
To
Value
0xa4a56ae2dfac5e49e4352d3a1e598d5d1d3fec3454b8e2ba8d81b52b63261bffPipe Balancer Un...117940872021-02-05 4:22:28137 days 16 hrs ago0x99d0e564527aa88bcc34bd3d8d26851623146da0 IN  0xa3149708cb9d9bd31cb5c8f5c107d94395b7ba640 Ether0.1356977009174.7
0x9461d7ec8108a12e4b3ac5f29b0c2215c44ae4d7847eeefb9829e401c7b89745Pipe Balancer Un...117543622021-01-30 1:32:01143 days 19 hrs ago0xe7175fe936e9afdeb0cace5b88e45cee3387ffb8 IN  0xa3149708cb9d9bd31cb5c8f5c107d94395b7ba640 Ether0.0258438455
0x5219f3f5691e8ee1365df51ff1ac5cbafa0b64807924a47f971cb751c51cdd8aPipe Balancer Un...117336072021-01-26 20:49:59147 days 29 mins agoENS Name civixsi.eth IN  0xa3149708cb9d9bd31cb5c8f5c107d94395b7ba640 Ether0.0800053745766.984745727
0xee01e1b3ea067df56a4cf034c9f5bf5b0fdce9620995f305507ff35aff4ef958Pipe Balancer Un...117159152021-01-24 3:25:01149 days 17 hrs ago0x45be454c5a0b767a38e808280c308f8a7ca4d0ab IN  0xa3149708cb9d9bd31cb5c8f5c107d94395b7ba640 Ether0.0208819346
0x04eaee0917c25280c4fb9d94f699c6984028d7b7fe1185061a271eb83cd4e7cfPipe Uni V2Balan...116990362021-01-21 13:22:13152 days 7 hrs ago0xb7f907ff4f9f05a911b3844bad94f23b75001e08 IN  0xa3149708cb9d9bd31cb5c8f5c107d94395b7ba640 Ether0.065092614548122.63600208
0x55a58180a05246730ffce8aa59d8ec8fecc5f5f1cb244067088e62a8c4d676b7Pipe Balancer Un...116903872021-01-20 5:31:56153 days 15 hrs ago0xc634f7bf06a10b28e3854d7b61b10adbe894a399 IN  0xa3149708cb9d9bd31cb5c8f5c107d94395b7ba640 Ether0.03704061928644.1235
0x3b62d77c25d554477682e140405bea1c3884c3f420679c0ef85ce63801803c70Pipe Balancer Un...116598172021-01-15 12:55:13158 days 8 hrs ago0xf46812c44bca44616f3f7c354073c46298b03bd9 IN  0xa3149708cb9d9bd31cb5c8f5c107d94395b7ba640 Ether0.03285737466
0x3346cdd4fe6d71788fc5f75a59e3ee4f99e9e315875a9ff5cff7dc62bd824e02Pipe Balancer Un...116540272021-01-14 15:31:24159 days 5 hrs ago0x7518b19daf8961e11b545a76a191e7bdf8e4f702 IN  0xa3149708cb9d9bd31cb5c8f5c107d94395b7ba640 Ether0.061689413571.5
0xae0a209902b660f7b5f182be046314143e547d2383d5cb47891ee8eef1e27f60Pipe Balancer Un...116427362021-01-12 21:55:11160 days 23 hrs ago0x05f379a0c3db1413ae8b539716d2f8dcf686930b IN  0xa3149708cb9d9bd31cb5c8f5c107d94395b7ba640 Ether0.02289245246
0x97d80c4031630a360c9a26ea792c8623233e77069c86acae200744724090c2c5Pipe Balancer Un...116290892021-01-10 19:44:14163 days 1 hr ago0x7518b19daf8961e11b545a76a191e7bdf8e4f702 IN  0xa3149708cb9d9bd31cb5c8f5c107d94395b7ba640 Ether0.0323417550
0xf87f826527eb8b604b553508407f43ba2027ef48a951728637c5dede81b26850Pipe Balancer Un...116224162021-01-09 19:14:51164 days 2 hrs ago0xe6228dfa20400f8988d71bcd6c8460ed13a7c49f IN  0xa3149708cb9d9bd31cb5c8f5c107d94395b7ba640 Ether0.02421270847
0xa1b87d506f2ee6dc748b29e8a20247552f58bb370062a40554a4e1a4b770b0a6Pipe Balancer Un...116211812021-01-09 14:45:59164 days 6 hrs ago0x2d52f7bae61912f7217351443ea8a226996a3def IN  0xa3149708cb9d9bd31cb5c8f5c107d94395b7ba640 Ether0.0347317272
0xca968e0056c2654088f4bed56d2b24e1aaf02b2b2f898fcd0ee0028f73861b1bPipe Balancer Un...115774462021-01-02 21:22:32170 days 23 hrs agoENS Name stubbs.eth IN  0xa3149708cb9d9bd31cb5c8f5c107d94395b7ba640 Ether0.04311161491
0xd7a99860627adbe27670b3a71b2711a9e79fb2b778a7c4e777cef7e8ba449612Pipe Balancer Un...115710112021-01-01 21:53:00171 days 23 hrs ago0x8f33f665727c9d12a476b34aef85da9b53ce63f1 IN  0xa3149708cb9d9bd31cb5c8f5c107d94395b7ba640 Ether0.01785528838
0x196c8cdf97a3713cffb76e2cf67f900468bd3aa12ba01db916f2e5489fa7c076Pipe Balancer Un...115576622020-12-30 20:45:20174 days 34 mins ago0x93ab7580493da8e78a31c31250d3c5524b7ffd0e IN  0xa3149708cb9d9bd31cb5c8f5c107d94395b7ba640 Ether0.0256330855
0xef4b2fa0023350f1ce38ed89e2dc1b3828b6dacd487f76da10bbc2de06a65e85Pipe Balancer Un...115576472020-12-30 20:42:21174 days 37 mins ago0x93ab7580493da8e78a31c31250d3c5524b7ffd0e IN  0xa3149708cb9d9bd31cb5c8f5c107d94395b7ba640 Ether0.0253732655
0x0761c8e87aecb0bf4aac797183658e0fd0f2684cfef96446963cb5a5a7d1efefPipe Balancer Un...115492392020-12-29 13:36:12175 days 7 hrs ago0xfcfa4369eaa965ac4e36f1dd9fd2852c6542b0f7 IN  0xa3149708cb9d9bd31cb5c8f5c107d94395b7ba640 Ether0.075272125125
0x76aa1f6979104522e84be54cb776b25200aa0fd8d5a6626594b9a249772b3a3ePipe Balancer Un...115378452020-12-27 19:56:11177 days 1 hr ago0x37bcd52b5319cbb7e62b9947a34774cee513db4b IN  0xa3149708cb9d9bd31cb5c8f5c107d94395b7ba640 Ether0.02547922838
0xa2416aa72e4d015ddd211e0c60632f0ea7a7b320ce31c42b0dc5d10cdc243812Pipe Balancer Un...115372042020-12-27 17:32:56177 days 3 hrs agoENS Name antoinevergne.eth IN  0xa3149708cb9d9bd31cb5c8f5c107d94395b7ba640 Ether0.02564452753
0x5ffb4c7a2fc18d09f37078bc0d130f2644a401112aa46c6d759eed8474c540c1Pipe Balancer Un...115330442020-12-27 2:08:19177 days 19 hrs ago0xabc1875d2884e340a005e7420b3bf332319f8187 IN  0xa3149708cb9d9bd31cb5c8f5c107d94395b7ba640 Ether0.0493725471975.91
0x481dde2acc4351803bb339402f830c2e070e50c61103a4b6bdee0b743f5e9079Pipe Balancer Un...115324242020-12-26 23:52:09177 days 21 hrs ago0x9030b78a312147dba34359d1a8819336fd054230 IN  0xa3149708cb9d9bd31cb5c8f5c107d94395b7ba640 Ether0.013664045530.1
0xe0b829fec3a0b4fa341d39d7718a7545c543f058df6e34d655e0bfa3c119a436Pipe Balancer Un...115318132020-12-26 21:40:55177 days 23 hrs ago0x9030b78a312147dba34359d1a8819336fd054230 IN  0xa3149708cb9d9bd31cb5c8f5c107d94395b7ba640 Ether0.014917800830.1
0x451d9ae9a5a0b923a9ecc4a504dabbb99498fb395265f26c6301a7346492fbe1Pipe Balancer Un...115317662020-12-26 21:30:22177 days 23 hrs ago0x9030b78a312147dba34359d1a8819336fd054230 IN  0xa3149708cb9d9bd31cb5c8f5c107d94395b7ba640 Ether0.01433914830.5
0x6fb006f1e5947d91356785408cc7a6650a710cd650543c31bdd75a9401bd2703Pipe Balancer Un...115287232020-12-26 10:18:54178 days 11 hrs ago0xe61f90a6bce05e1b13655ceb64b3760691691d2b IN  0xa3149708cb9d9bd31cb5c8f5c107d94395b7ba640 Ether0.02055407244
0x9204d80be4d147bf35d77f6f26ef444dcb079c788186a2ff4922260625aa69fbPipe Balancer Un...115284002020-12-26 9:11:33178 days 12 hrs agoENS Name delemem.eth IN  0xa3149708cb9d9bd31cb5c8f5c107d94395b7ba640 Ether0.0296433240
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0xa4a56ae2dfac5e49e4352d3a1e598d5d1d3fec3454b8e2ba8d81b52b63261bff117940872021-02-05 4:22:28137 days 16 hrs ago 0xa3149708cb9d9bd31cb5c8f5c107d94395b7ba64 0xe83554b397bda8ecae7fee5aee532e83ee9eb29d1.959758189823867212 Ether
0xa4a56ae2dfac5e49e4352d3a1e598d5d1d3fec3454b8e2ba8d81b52b63261bff117940872021-02-05 4:22:28137 days 16 hrs ago Uniswap V2: Router 2 0xa3149708cb9d9bd31cb5c8f5c107d94395b7ba641.959758189823867212 Ether
0x5219f3f5691e8ee1365df51ff1ac5cbafa0b64807924a47f971cb751c51cdd8a117336072021-01-26 20:49:59147 days 29 mins ago 0xa3149708cb9d9bd31cb5c8f5c107d94395b7ba64 0xe83554b397bda8ecae7fee5aee532e83ee9eb29d1.32268166172405494 Ether
0x5219f3f5691e8ee1365df51ff1ac5cbafa0b64807924a47f971cb751c51cdd8a117336072021-01-26 20:49:59147 days 29 mins ago Uniswap V2: Router 2 0xa3149708cb9d9bd31cb5c8f5c107d94395b7ba641.32268166172405494 Ether
0x55a58180a05246730ffce8aa59d8ec8fecc5f5f1cb244067088e62a8c4d676b7116903872021-01-20 5:31:56153 days 15 hrs ago 0xa3149708cb9d9bd31cb5c8f5c107d94395b7ba64 0xe83554b397bda8ecae7fee5aee532e83ee9eb29d2.378231392071814888 Ether
0x55a58180a05246730ffce8aa59d8ec8fecc5f5f1cb244067088e62a8c4d676b7116903872021-01-20 5:31:56153 days 15 hrs ago Uniswap V2: Router 2 0xa3149708cb9d9bd31cb5c8f5c107d94395b7ba642.378231392071814888 Ether
0x3346cdd4fe6d71788fc5f75a59e3ee4f99e9e315875a9ff5cff7dc62bd824e02116540272021-01-14 15:31:24159 days 5 hrs ago 0xa3149708cb9d9bd31cb5c8f5c107d94395b7ba64 0xe83554b397bda8ecae7fee5aee532e83ee9eb29d17.859178746250515508 Ether
0x3346cdd4fe6d71788fc5f75a59e3ee4f99e9e315875a9ff5cff7dc62bd824e02116540272021-01-14 15:31:24159 days 5 hrs ago Uniswap V2: Router 2 0xa3149708cb9d9bd31cb5c8f5c107d94395b7ba6417.859178746250515508 Ether
0x97d80c4031630a360c9a26ea792c8623233e77069c86acae200744724090c2c5116290892021-01-10 19:44:14163 days 1 hr ago 0xa3149708cb9d9bd31cb5c8f5c107d94395b7ba64 0xe83554b397bda8ecae7fee5aee532e83ee9eb29d2.383066353483565525 Ether
0x97d80c4031630a360c9a26ea792c8623233e77069c86acae200744724090c2c5116290892021-01-10 19:44:14163 days 1 hr ago Uniswap V2: Router 2 0xa3149708cb9d9bd31cb5c8f5c107d94395b7ba642.383066353483565525 Ether
0x0761c8e87aecb0bf4aac797183658e0fd0f2684cfef96446963cb5a5a7d1efef115492392020-12-29 13:36:12175 days 7 hrs ago 0xa3149708cb9d9bd31cb5c8f5c107d94395b7ba64 0xe83554b397bda8ecae7fee5aee532e83ee9eb29d5.457704577019023331 Ether
0x0761c8e87aecb0bf4aac797183658e0fd0f2684cfef96446963cb5a5a7d1efef115492392020-12-29 13:36:12175 days 7 hrs ago 0x00d0f137b51692d0ac708bde7b367a373865cffe 0xa3149708cb9d9bd31cb5c8f5c107d94395b7ba645.457704577019023331 Ether
0x76aa1f6979104522e84be54cb776b25200aa0fd8d5a6626594b9a249772b3a3e115378452020-12-27 19:56:11177 days 1 hr ago 0xa3149708cb9d9bd31cb5c8f5c107d94395b7ba64 0xe83554b397bda8ecae7fee5aee532e83ee9eb29d1.087547340494894664 Ether
0x76aa1f6979104522e84be54cb776b25200aa0fd8d5a6626594b9a249772b3a3e115378452020-12-27 19:56:11177 days 1 hr ago 0x00d0f137b51692d0ac708bde7b367a373865cffe 0xa3149708cb9d9bd31cb5c8f5c107d94395b7ba641.087547340494894664 Ether
0x5ffb4c7a2fc18d09f37078bc0d130f2644a401112aa46c6d759eed8474c540c1115330442020-12-27 2:08:19177 days 19 hrs ago 0xa3149708cb9d9bd31cb5c8f5c107d94395b7ba64 0xe83554b397bda8ecae7fee5aee532e83ee9eb29d0.919922889379251467 Ether
0x5ffb4c7a2fc18d09f37078bc0d130f2644a401112aa46c6d759eed8474c540c1115330442020-12-27 2:08:19177 days 19 hrs ago 0x00d0f137b51692d0ac708bde7b367a373865cffe 0xa3149708cb9d9bd31cb5c8f5c107d94395b7ba640.919922889379251467 Ether
0x628b4d2068379a64a2e4d3869088fe7ac9d1815fb5bb697fcf456618b7154118114912632020-12-20 16:20:22184 days 4 hrs ago 0xa3149708cb9d9bd31cb5c8f5c107d94395b7ba64 0xe83554b397bda8ecae7fee5aee532e83ee9eb29d1.897715173149758695 Ether
0x628b4d2068379a64a2e4d3869088fe7ac9d1815fb5bb697fcf456618b7154118114912632020-12-20 16:20:22184 days 4 hrs ago Uniswap V2: Router 2 0xa3149708cb9d9bd31cb5c8f5c107d94395b7ba641.897715173149758695 Ether
0x39a323e8584af383c36aeb750a7c1602fc4d25e33323d57fcb527c1f5a5ae635114665962020-12-16 21:26:29187 days 23 hrs ago 0xa3149708cb9d9bd31cb5c8f5c107d94395b7ba64 0xe83554b397bda8ecae7fee5aee532e83ee9eb29d5.62957299670054896 Ether
0x39a323e8584af383c36aeb750a7c1602fc4d25e33323d57fcb527c1f5a5ae635114665962020-12-16 21:26:29187 days 23 hrs ago 0x00d0f137b51692d0ac708bde7b367a373865cffe 0xa3149708cb9d9bd31cb5c8f5c107d94395b7ba645.62957299670054896 Ether
0x7c652067e5bf2875d6b4e97d4aef6b1308fc3dadb6f99b22a74302befeb68a36114473682020-12-13 22:37:10190 days 22 hrs ago 0xa3149708cb9d9bd31cb5c8f5c107d94395b7ba64 0xe83554b397bda8ecae7fee5aee532e83ee9eb29d0.13525582867968043 Ether
0x7c652067e5bf2875d6b4e97d4aef6b1308fc3dadb6f99b22a74302befeb68a36114473682020-12-13 22:37:10190 days 22 hrs ago Uniswap V2: Router 2 0xa3149708cb9d9bd31cb5c8f5c107d94395b7ba640.13525582867968043 Ether
0xd55f8895ad5361dea093625be0ee9a1dbabdf5386736c23c758b33e4090903e6114426462020-12-13 5:11:57191 days 16 hrs ago 0xa3149708cb9d9bd31cb5c8f5c107d94395b7ba64 0xa3128cc400e2878571368ae0a83f588eb838552b4.208224502113096434 Ether
0xd55f8895ad5361dea093625be0ee9a1dbabdf5386736c23c758b33e4090903e6114426462020-12-13 5:11:57191 days 16 hrs ago 0x79b6c6f8634ea477ed725ec23b7b6fcb41f00e58 0xa3149708cb9d9bd31cb5c8f5c107d94395b7ba644.208224502113096434 Ether
0xa45d7f68db689554badc2cd2713258383b312dd2baa31c83c2d674d62d50941c114327572020-12-11 16:44:16193 days 4 hrs ago 0xa3149708cb9d9bd31cb5c8f5c107d94395b7ba64 0xe83554b397bda8ecae7fee5aee532e83ee9eb29d233.439973845200223303 Ether
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Balancer_UniswapV2_Pipe_V1_4

Compiler Version
v0.5.17+commit.d19bba13

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, GNU GPLv2 license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2020-09-06
*/

// ███████╗░█████╗░██████╗░██████╗░███████╗██████╗░░░░███████╗██╗
// ╚════██║██╔══██╗██╔══██╗██╔══██╗██╔════╝██╔══██╗░░░██╔════╝██║
// ░░███╔═╝███████║██████╔╝██████╔╝█████╗░░██████╔╝░░░█████╗░░██║
// ██╔══╝░░██╔══██║██╔═══╝░██╔═══╝░██╔══╝░░██╔══██╗░░░██╔══╝░░██║
// ███████╗██║░░██║██║░░░░░██║░░░░░███████╗██║░░██║██╗██║░░░░░██║
// ╚══════╝╚═╝░░╚═╝╚═╝░░░░░╚═╝░░░░░╚══════╝╚═╝░░╚═╝╚═╝╚═╝░░░░░╚═╝
// Copyright (C) 2020 zapper, nodar, suhail, seb, sumit, apoorv

// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as published by
// the Free Software Foundation, either version 2 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 Affero General Public License for more details.
//

///@author Zapper
///@notice This contract moves liquidity between UniswapV2 and Balancer pools.

pragma solidity ^0.5.0;

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

pragma solidity ^0.5.0;

/**
 * @title SafeERC20
 * @dev Wrappers around ERC20 operations that throw on failure (when the token
 * contract returns false). Tokens that return no value (and instead revert or
 * throw on failure) are also supported, non-reverting calls are assumed to be
 * successful.
 * To use this library you can add a `using SafeERC20 for ERC20;` statement to your contract,
 * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.
 */
library SafeERC20 {
    using SafeMath for uint256;
    using Address for address;

    function safeTransfer(
        IERC20 token,
        address to,
        uint256 value
    ) internal {
        callOptionalReturn(
            token,
            abi.encodeWithSelector(token.transfer.selector, to, value)
        );
    }

    function safeTransferFrom(
        IERC20 token,
        address from,
        address to,
        uint256 value
    ) internal {
        callOptionalReturn(
            token,
            abi.encodeWithSelector(token.transferFrom.selector, from, to, value)
        );
    }

    function safeApprove(
        IERC20 token,
        address spender,
        uint256 value
    ) internal {
        // safeApprove should only be called when setting an initial allowance,
        // or when resetting it to zero. To increase and decrease it, use
        // 'safeIncreaseAllowance' and 'safeDecreaseAllowance'
        // solhint-disable-next-line max-line-length
        require(
            (value == 0) || (token.allowance(address(this), spender) == 0),
            "SafeERC20: approve from non-zero to non-zero allowance"
        );
        callOptionalReturn(
            token,
            abi.encodeWithSelector(token.approve.selector, spender, value)
        );
    }

    function safeIncreaseAllowance(
        IERC20 token,
        address spender,
        uint256 value
    ) internal {
        uint256 newAllowance = token.allowance(address(this), spender).add(
            value
        );
        callOptionalReturn(
            token,
            abi.encodeWithSelector(
                token.approve.selector,
                spender,
                newAllowance
            )
        );
    }

    function safeDecreaseAllowance(
        IERC20 token,
        address spender,
        uint256 value
    ) internal {
        uint256 newAllowance = token.allowance(address(this), spender).sub(
            value,
            "SafeERC20: decreased allowance below zero"
        );
        callOptionalReturn(
            token,
            abi.encodeWithSelector(
                token.approve.selector,
                spender,
                newAllowance
            )
        );
    }

    /**
     * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement
     * on the return value: the return value is optional (but if data is returned, it must not be false).
     * @param token The token targeted by the call.
     * @param data The call data (encoded using abi.encode or one of its variants).
     */
    function callOptionalReturn(IERC20 token, bytes memory data) private {
        // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since
        // we're implementing it ourselves.

        // A Solidity high level call has three parts:
        //  1. The target address is checked to verify it contains contract code
        //  2. The call itself is made, and success asserted
        //  3. The return value is decoded, which in turn checks the size of the returned data.
        // solhint-disable-next-line max-line-length
        require(address(token).isContract(), "SafeERC20: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = address(token).call(data);
        require(success, "SafeERC20: low-level call failed");

        if (returndata.length > 0) {
            // Return data is optional
            // solhint-disable-next-line max-line-length
            require(
                abi.decode(returndata, (bool)),
                "SafeERC20: ERC20 operation did not succeed"
            );
        }
    }
}

library Address {
    /**
     * @dev Returns true if `account` is a contract.
     *
     * [IMPORTANT]
     * ====
     * It is unsafe to assume that an address for which this function returns
     * false is an externally-owned account (EOA) and not a contract.
     *
     * Among others, `isContract` will return false for the following
     * types of addresses:
     *
     *  - an externally-owned account
     *  - a contract in construction
     *  - an address where a contract will be created
     *  - an address where a contract lived, but was destroyed
     * ====
     */
    function isContract(address account) internal view returns (bool) {
        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
        // for accounts without code, i.e. `keccak256('')`
        bytes32 codehash;


            bytes32 accountHash
         = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly {
            codehash := extcodehash(account)
        }
        return (codehash != accountHash && codehash != 0x0);
    }

    /**
     * @dev Converts an `address` into `address payable`. Note that this is
     * simply a type cast: the actual underlying value is not changed.
     *
     * _Available since v2.4.0._
     */
    function toPayable(address account)
        internal
        pure
        returns (address payable)
    {
        return address(uint160(account));
    }

    /**
     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to
     * `recipient`, forwarding all available gas and reverting on errors.
     *
     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
     * of certain opcodes, possibly making contracts go over the 2300 gas limit
     * imposed by `transfer`, making them unable to receive funds via
     * `transfer`. {sendValue} removes this limitation.
     *
     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
     *
     * IMPORTANT: because control is transferred to `recipient`, care must be
     * taken to not create reentrancy vulnerabilities. Consider using
     * {ReentrancyGuard} or the
     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
     *
     * _Available since v2.4.0._
     */
    function sendValue(address payable recipient, uint256 amount) internal {
        require(
            address(this).balance >= amount,
            "Address: insufficient balance"
        );

        // solhint-disable-next-line avoid-call-value
        (bool success, ) = recipient.call.value(amount)("");
        require(
            success,
            "Address: unable to send value, recipient may have reverted"
        );
    }
}

contract ReentrancyGuard {
    bool private _notEntered;

    constructor() internal {
        // Storing an initial non-zero value makes deployment a bit more
        // expensive, but in exchange the refund on every call to nonReentrant
        // will be lower in amount. Since refunds are capped to a percetange of
        // the total transaction's gas, it is best to keep them low in cases
        // like this one, to increase the likelihood of the full refund coming
        // into effect.
        _notEntered = true;
    }

    /**
     * @dev Prevents a contract from calling itself, directly or indirectly.
     * Calling a `nonReentrant` function from another `nonReentrant`
     * function is not supported. It is possible to prevent this from happening
     * by making the `nonReentrant` function external, and make it call a
     * `private` function that does the actual work.
     */
    modifier nonReentrant() {
        // On the first call to nonReentrant, _notEntered will be true
        require(_notEntered, "ReentrancyGuard: reentrant call");

        // Any calls to nonReentrant after this point will fail
        _notEntered = false;

        _;

        // By storing the original value once again, a refund is triggered (see
        // https://eips.ethereum.org/EIPS/eip-2200)
        _notEntered = true;
    }
}

contract Context {
    // Empty internal constructor, to prevent people from mistakenly deploying
    // an instance of this contract, which should be used via inheritance.
    constructor() internal {}

    // solhint-disable-previous-line no-empty-blocks

    function _msgSender() internal view returns (address payable) {
        return msg.sender;
    }

    function _msgData() internal view returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() internal {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(isOwner(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Returns true if the caller is the current owner.
     */
    function isOwner() public view returns (bool) {
        return _msgSender() == _owner;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public onlyOwner {
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     */
    function _transferOwnership(address newOwner) internal {
        require(
            newOwner != address(0),
            "Ownable: new owner is the zero address"
        );
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

interface IERC20 {
    function decimals() external view returns (uint256);

    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address recipient, uint256 amount)
        external
        returns (bool);

    function allowance(address owner, address spender)
        external
        view
        returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);

    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

interface IUniswapV2Factory {
    function getPair(address tokenA, address tokenB)
        external
        view
        returns (address);
}

interface IUniswapV2Pair {
    function token0() external pure returns (address);

    function token1() external pure returns (address);

    function getReserves()
        external
        view
        returns (
            uint112 _reserve0,
            uint112 _reserve1,
            uint32 _blockTimestampLast
        );

    // this low-level function should be called from a contract which performs important safety checks
    function swap(
        uint256 amount0Out,
        uint256 amount1Out,
        address to,
        bytes calldata data
    ) external;

    // force balances to match reserves
    function skim(address to) external;
}

interface IUniswapV2ZapIn {
    function ZapIn(
        address _toWhomToIssue,
        address _FromTokenContractAddress,
        address _ToUnipoolToken0,
        address _ToUnipoolToken1,
        uint256 _amount,
        uint256 _minPoolTokens
    ) external payable returns (uint256);
}

interface IUniswapV2ZapOut {
    function ZapOut(
        address _ToTokenContractAddress,
        address _FromUniPoolAddress,
        uint256 _IncomingLP,
        uint256 _minTokensRec
    ) external payable returns (uint256);
}

interface IBalancerZapIn {
    function ZapIn(
        address _FromTokenContractAddress,
        address _ToBalancerPoolAddress,
        uint256 _amount,
        uint256 _minPoolTokens
    ) external payable returns (uint256 tokensBought);
}

interface IBalancerZapOut {
    function EasyZapOut(
        address _ToTokenContractAddress,
        address _FromBalancerPoolAddress,
        uint256 _IncomingBPT,
        uint256 _minTokensRec
    ) external payable returns (uint256);
}

interface IBPool {
    function isBound(address t) external view returns (bool);
}

contract Balancer_UniswapV2_Pipe_V1_4 is ReentrancyGuard, Ownable {
    using SafeMath for uint256;
    using SafeERC20 for IERC20;
    using Address for address;
    bool public stopped = false;

    IUniswapV2Factory
        private constant UniSwapV2FactoryAddress = IUniswapV2Factory(
        0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f
    );

    IBalancerZapOut public balancerZapOut;
    IUniswapV2ZapIn public uniswapV2ZapIn;
    IBalancerZapIn public balancerZapIn;
    IUniswapV2ZapOut public uniswapV2ZapOut;

    constructor(
        address _balancerZapIn,
        address _balancerZapOut,
        address _uniswapV2ZapIn,
        address _uniswapV2ZapOut
    ) public {
        balancerZapIn = IBalancerZapIn(_balancerZapIn);
        balancerZapOut = IBalancerZapOut(_balancerZapOut);
        uniswapV2ZapIn = IUniswapV2ZapIn(_uniswapV2ZapIn);
        uniswapV2ZapOut = IUniswapV2ZapOut(_uniswapV2ZapOut);
    }

    // circuit breaker modifiers
    modifier stopInEmergency {
        if (stopped) {
            revert("Temporarily Paused");
        } else {
            _;
        }
    }

    function PipeBalancerUniV2(
        address _FromBalancerPoolAddress,
        uint256 _IncomingBPT,
        address _toUniswapPoolAddress,
        address _toWhomToIssue,
        uint256 _minUniV2Tokens
    ) public nonReentrant stopInEmergency returns (uint256) {
        // Get BPT
        IERC20(_FromBalancerPoolAddress).safeTransferFrom(
            msg.sender,
            address(this),
            _IncomingBPT
        );
        // Approve BalUnZap
        IERC20(_FromBalancerPoolAddress).safeApprove(
            address(balancerZapOut),
            _IncomingBPT
        );

        // Get pair addresses from UniV2Pair
        address token0 = IUniswapV2Pair(_toUniswapPoolAddress).token0();
        address token1 = IUniswapV2Pair(_toUniswapPoolAddress).token1();

        address zapOutToToken = address(0);
        if (IBPool(_FromBalancerPoolAddress).isBound(token0)) {
            zapOutToToken = token0;
        } else if (IBPool(_FromBalancerPoolAddress).isBound(token1)) {
            zapOutToToken = token1;
        }

        // ZapOut from Balancer
        uint256 zappedOutAmt = balancerZapOut.EasyZapOut(
            zapOutToToken,
            _FromBalancerPoolAddress,
            _IncomingBPT,
            0
        );

        uint256 LPTBought;
        if (zapOutToToken == address(0)) {
            // use ETH to ZapIn to UNIV2
            LPTBought = uniswapV2ZapIn.ZapIn.value(zappedOutAmt)(
                _toWhomToIssue,
                address(0),
                token0,
                token1,
                0,
                _minUniV2Tokens
            );
        } else {
            IERC20(zapOutToToken).safeApprove(
                address(uniswapV2ZapIn),
                IERC20(zapOutToToken).balanceOf(address(this))
            );
            LPTBought = uniswapV2ZapIn.ZapIn.value(0)(
                _toWhomToIssue,
                zapOutToToken,
                token0,
                token1,
                zappedOutAmt,
                _minUniV2Tokens
            );
        }

        return LPTBought;
    }

    function PipeUniV2Balancer(
        address _FromUniswapPoolAddress,
        uint256 _IncomingLPT,
        address _ToBalancerPoolAddress,
        address _toWhomToIssue,
        uint256 _minBPTokens
    ) public nonReentrant stopInEmergency returns (uint256) {
        // Get LPT
        IERC20(_FromUniswapPoolAddress).safeTransferFrom(
            msg.sender,
            address(this),
            _IncomingLPT
        );

        // Approve UniUnZap
        IERC20(_FromUniswapPoolAddress).safeApprove(
            address(uniswapV2ZapOut),
            _IncomingLPT
        );

        // Get pair addresses from UniV2Pair
        address token0 = IUniswapV2Pair(_FromUniswapPoolAddress).token0();
        address token1 = IUniswapV2Pair(_FromUniswapPoolAddress).token1();

        address zapOutToToken = address(0);
        if (IBPool(_ToBalancerPoolAddress).isBound(token0)) {
            zapOutToToken = token0;
        } else if (IBPool(_ToBalancerPoolAddress).isBound(token1)) {
            zapOutToToken = token1;
        }

        // ZapOut from Uni
        uint256 tokensRec = uniswapV2ZapOut.ZapOut(
            zapOutToToken,
            _FromUniswapPoolAddress,
            _IncomingLPT,
            0
        );

        // ZapIn to Balancer
        uint256 BPTBought;
        if (zapOutToToken == address(0)) {
            // use ETH to ZapIn to Balancer
            BPTBought = balancerZapIn.ZapIn.value(tokensRec)(
                address(0),
                _ToBalancerPoolAddress,
                0,
                _minBPTokens
            );
        } else {
            IERC20(zapOutToToken).safeApprove(address(balancerZapIn), tokensRec);
            BPTBought = balancerZapIn.ZapIn.value(0)(
                zapOutToToken,
                _ToBalancerPoolAddress,
                tokensRec,
                _minBPTokens
            );
        }

        IERC20(_ToBalancerPoolAddress).safeTransfer(_toWhomToIssue, BPTBought);

        return BPTBought;
    }

    // Zap Contract Setters
    function setbalancerZapIn(address _balancerZapIn) public onlyOwner {
        balancerZapIn = IBalancerZapIn(_balancerZapIn);
    }

    function setBalancerZapOut(address _balancerZapOut) public onlyOwner {
        balancerZapOut = IBalancerZapOut(_balancerZapOut);
    }

    function setUniswapV2ZapIn(address _uniswapV2ZapIn) public onlyOwner {
        uniswapV2ZapIn = IUniswapV2ZapIn(_uniswapV2ZapIn);
    }

    function setUniswapV2ZapOut(address _uniswapV2ZapOut) public onlyOwner {
        uniswapV2ZapOut = IUniswapV2ZapOut(_uniswapV2ZapOut);
    }

    // fallback to receive ETH
    function() external payable {}

    function inCaseTokengetsStuck(IERC20 _TokenAddress) public onlyOwner {
        uint256 qty = _TokenAddress.balanceOf(address(this));
        _TokenAddress.safeTransfer(owner(), qty);
    }

    // - to Pause the contract
    function toggleContractActive() public onlyOwner {
        stopped = !stopped;
    }

    // - to withdraw any ETH balance sitting in the contract
    function withdraw() public onlyOwner {
        uint256 contractBalance = address(this).balance;
        address payable _to = owner().toPayable();
        Address.sendValue(_to, contractBalance);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_balancerZapIn","type":"address"},{"internalType":"address","name":"_balancerZapOut","type":"address"},{"internalType":"address","name":"_uniswapV2ZapIn","type":"address"},{"internalType":"address","name":"_uniswapV2ZapOut","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"constant":false,"inputs":[{"internalType":"address","name":"_FromBalancerPoolAddress","type":"address"},{"internalType":"uint256","name":"_IncomingBPT","type":"uint256"},{"internalType":"address","name":"_toUniswapPoolAddress","type":"address"},{"internalType":"address","name":"_toWhomToIssue","type":"address"},{"internalType":"uint256","name":"_minUniV2Tokens","type":"uint256"}],"name":"PipeBalancerUniV2","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_FromUniswapPoolAddress","type":"address"},{"internalType":"uint256","name":"_IncomingLPT","type":"uint256"},{"internalType":"address","name":"_ToBalancerPoolAddress","type":"address"},{"internalType":"address","name":"_toWhomToIssue","type":"address"},{"internalType":"uint256","name":"_minBPTokens","type":"uint256"}],"name":"PipeUniV2Balancer","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"balancerZapIn","outputs":[{"internalType":"contract IBalancerZapIn","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"balancerZapOut","outputs":[{"internalType":"contract IBalancerZapOut","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"contract IERC20","name":"_TokenAddress","type":"address"}],"name":"inCaseTokengetsStuck","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_balancerZapOut","type":"address"}],"name":"setBalancerZapOut","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_uniswapV2ZapIn","type":"address"}],"name":"setUniswapV2ZapIn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_uniswapV2ZapOut","type":"address"}],"name":"setUniswapV2ZapOut","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_balancerZapIn","type":"address"}],"name":"setbalancerZapIn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"stopped","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"toggleContractActive","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"uniswapV2ZapIn","outputs":[{"internalType":"contract IUniswapV2ZapIn","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"uniswapV2ZapOut","outputs":[{"internalType":"contract IUniswapV2ZapOut","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]

60806040526000805460ff60a81b1916905534801561001d57600080fd5b50604051611acf380380611acf8339818101604052608081101561004057600080fd5b508051602082015160408301516060909301516000805460ff19166001178155929391926100756001600160e01b0361011a16565b60008054610100600160a81b0319166101006001600160a01b038416908102919091178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600380546001600160a01b039586166001600160a01b031991821617909155600180549486169482169490941790935560028054928516928416929092179091556004805491909316911617905561011e565b3390565b6119a28061012d6000396000f3fe6080604052600436106101095760003560e01c80638710570711610095578063ac39da7411610064578063ac39da7414610312578063b798433b14610345578063c6528e4e1461035a578063cc37a6d3146103ab578063f2fde38b146103c057610109565b806387105707146102a05780638894df7c146102b55780638da5cb5b146102e85780638f32d59b146102fd57610109565b80633ccfd60b116100dc5780633ccfd60b146101b75780633e73117a146101cc578063551196d51461022f578063715018a61461026257806375f12b211461027757610109565b80630d1d5e0d1461010b578063101d2f601461013e578063106422431461016f5780631385d24c146101a2575b005b34801561011757600080fd5b506101096004803603602081101561012e57600080fd5b50356001600160a01b03166103f3565b34801561014a57600080fd5b5061015361045c565b604080516001600160a01b039092168252519081900360200190f35b34801561017b57600080fd5b506101096004803603602081101561019257600080fd5b50356001600160a01b031661046b565b3480156101ae57600080fd5b506101096104d4565b3480156101c357600080fd5b5061010961053c565b3480156101d857600080fd5b5061021d600480360360a08110156101ef57600080fd5b506001600160a01b0381358116916020810135916040820135811691606081013590911690608001356105af565b60408051918252519081900360200190f35b34801561023b57600080fd5b506101096004803603602081101561025257600080fd5b50356001600160a01b0316610b30565b34801561026e57600080fd5b50610109610c11565b34801561028357600080fd5b5061028c610ca7565b604080519115158252519081900360200190f35b3480156102ac57600080fd5b50610153610cb7565b3480156102c157600080fd5b50610109600480360360208110156102d857600080fd5b50356001600160a01b0316610cc6565b3480156102f457600080fd5b50610153610d2f565b34801561030957600080fd5b5061028c610d43565b34801561031e57600080fd5b506101096004803603602081101561033557600080fd5b50356001600160a01b0316610d6c565b34801561035157600080fd5b50610153610dd5565b34801561036657600080fd5b5061021d600480360360a081101561037d57600080fd5b506001600160a01b038135811691602081013591604082013581169160608101359091169060800135610de4565b3480156103b757600080fd5b506101536112d6565b3480156103cc57600080fd5b50610109600480360360208110156103e357600080fd5b50356001600160a01b03166112e5565b6103fb610d43565b61043a576040805162461bcd60e51b815260206004820181905260248201526000805160206118ee833981519152604482015290519081900360640190fd5b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6004546001600160a01b031681565b610473610d43565b6104b2576040805162461bcd60e51b815260206004820181905260248201526000805160206118ee833981519152604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6104dc610d43565b61051b576040805162461bcd60e51b815260206004820181905260248201526000805160206118ee833981519152604482015290519081900360640190fd5b6000805460ff60a81b198116600160a81b9182900460ff1615909102179055565b610544610d43565b610583576040805162461bcd60e51b815260206004820181905260248201526000805160206118ee833981519152604482015290519081900360640190fd5b47600061059f610591610d2f565b6001600160a01b0316611338565b90506105ab818361133b565b5050565b6000805460ff16610607576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6000805460ff191690819055600160a81b900460ff1615610664576040805162461bcd60e51b815260206004820152601260248201527115195b5c1bdc985c9a5b1e4814185d5cd95960721b604482015290519081900360640190fd5b61067f6001600160a01b03871633308863ffffffff61142516565b60015461069f906001600160a01b0388811691168763ffffffff61148516565b6000846001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b1580156106da57600080fd5b505afa1580156106ee573d6000803e3d6000fd5b505050506040513d602081101561070457600080fd5b50516040805163d21220a760e01b815290519192506000916001600160a01b0388169163d21220a7916004808301926020929190829003018186803b15801561074c57600080fd5b505afa158015610760573d6000803e3d6000fd5b505050506040513d602081101561077657600080fd5b505160408051630bcded8960e21b81526001600160a01b0385811660048301529151929350600092918b1691632f37b62491602480820192602092909190829003018186803b1580156107c857600080fd5b505afa1580156107dc573d6000803e3d6000fd5b505050506040513d60208110156107f257600080fd5b50511561080057508161088a565b886001600160a01b0316632f37b624836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561085657600080fd5b505afa15801561086a573d6000803e3d6000fd5b505050506040513d602081101561088057600080fd5b50511561088a5750805b600154604080516312f03e1f60e11b81526001600160a01b0384811660048301528c81166024830152604482018c90526000606483018190529251929316916325e07c3e9160848082019260209290919082900301818787803b1580156108f057600080fd5b505af1158015610904573d6000803e3d6000fd5b505050506040513d602081101561091a57600080fd5b5051905060006001600160a01b0383166109d7576002546040805162eab91960e51b81526001600160a01b038b8116600483015260006024830181905289821660448401528882166064840152608483015260a482018b905291519190921691631d57232091859160c48082019260209290919082900301818588803b1580156109a357600080fd5b505af11580156109b7573d6000803e3d6000fd5b50505050506040513d60208110156109ce57600080fd5b50519050610b14565b600254604080516370a0823160e01b81523060048201529051610a6d926001600160a01b0390811692908716916370a0823191602480820192602092909190829003018186803b158015610a2a57600080fd5b505afa158015610a3e573d6000803e3d6000fd5b505050506040513d6020811015610a5457600080fd5b50516001600160a01b038616919063ffffffff61148516565b6002546040805162eab91960e51b81526001600160a01b038b811660048301528681166024830152888116604483015287811660648301526084820186905260a482018b905291519190921691631d5723209160009160c48082019260209290919082900301818588803b158015610ae457600080fd5b505af1158015610af8573d6000803e3d6000fd5b50505050506040513d6020811015610b0f57600080fd5b505190505b9450505050506000805460ff1916600117905595945050505050565b610b38610d43565b610b77576040805162461bcd60e51b815260206004820181905260248201526000805160206118ee833981519152604482015290519081900360640190fd5b604080516370a0823160e01b815230600482015290516000916001600160a01b038416916370a0823191602480820192602092909190829003018186803b158015610bc157600080fd5b505afa158015610bd5573d6000803e3d6000fd5b505050506040513d6020811015610beb57600080fd5b505190506105ab610bfa610d2f565b6001600160a01b038416908363ffffffff61159816565b610c19610d43565b610c58576040805162461bcd60e51b815260206004820181905260248201526000805160206118ee833981519152604482015290519081900360640190fd5b600080546040516101009091046001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a360008054610100600160a81b0319169055565b600054600160a81b900460ff1681565b6002546001600160a01b031681565b610cce610d43565b610d0d576040805162461bcd60e51b815260206004820181905260248201526000805160206118ee833981519152604482015290519081900360640190fd5b600380546001600160a01b0319166001600160a01b0392909216919091179055565b60005461010090046001600160a01b031690565b6000805461010090046001600160a01b0316610d5d6115ea565b6001600160a01b031614905090565b610d74610d43565b610db3576040805162461bcd60e51b815260206004820181905260248201526000805160206118ee833981519152604482015290519081900360640190fd5b600480546001600160a01b0319166001600160a01b0392909216919091179055565b6001546001600160a01b031681565b6000805460ff16610e3c576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6000805460ff191690819055600160a81b900460ff1615610e99576040805162461bcd60e51b815260206004820152601260248201527115195b5c1bdc985c9a5b1e4814185d5cd95960721b604482015290519081900360640190fd5b610eb46001600160a01b03871633308863ffffffff61142516565b600454610ed4906001600160a01b0388811691168763ffffffff61148516565b6000866001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b158015610f0f57600080fd5b505afa158015610f23573d6000803e3d6000fd5b505050506040513d6020811015610f3957600080fd5b50516040805163d21220a760e01b815290519192506000916001600160a01b038a169163d21220a7916004808301926020929190829003018186803b158015610f8157600080fd5b505afa158015610f95573d6000803e3d6000fd5b505050506040513d6020811015610fab57600080fd5b505160408051630bcded8960e21b81526001600160a01b038581166004830152915192935060009291891691632f37b62491602480820192602092909190829003018186803b158015610ffd57600080fd5b505afa158015611011573d6000803e3d6000fd5b505050506040513d602081101561102757600080fd5b5051156110355750816110bf565b866001600160a01b0316632f37b624836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561108b57600080fd5b505afa15801561109f573d6000803e3d6000fd5b505050506040513d60208110156110b557600080fd5b5051156110bf5750805b60048054604080516349c082cd60e01b81526001600160a01b03858116948201949094528c84166024820152604481018c905260006064820181905291519193909216916349c082cd91608480830192602092919082900301818787803b15801561112957600080fd5b505af115801561113d573d6000803e3d6000fd5b505050506040513d602081101561115357600080fd5b5051905060006001600160a01b03831661120457600354604080516352ef916560e11b81526000600482018190526001600160a01b038d811660248401526044830191909152606482018b90529151919092169163a5df22ca91859160848082019260209290919082900301818588803b1580156111d057600080fd5b505af11580156111e4573d6000803e3d6000fd5b50505050506040513d60208110156111fb57600080fd5b505190506112bc565b600354611224906001600160a01b0385811691168463ffffffff61148516565b600354604080516352ef916560e11b81526001600160a01b0386811660048301528c8116602483015260448201869052606482018b90529151919092169163a5df22ca9160009160848082019260209290919082900301818588803b15801561128c57600080fd5b505af11580156112a0573d6000803e3d6000fd5b50505050506040513d60208110156112b757600080fd5b505190505b610b146001600160a01b038a16898363ffffffff61159816565b6003546001600160a01b031681565b6112ed610d43565b61132c576040805162461bcd60e51b815260206004820181905260248201526000805160206118ee833981519152604482015290519081900360640190fd5b611335816115ee565b50565b90565b80471015611390576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015290519081900360640190fd5b6040516000906001600160a01b0384169083908381818185875af1925050503d80600081146113db576040519150601f19603f3d011682016040523d82523d6000602084013e6113e0565b606091505b50509050806114205760405162461bcd60e51b815260040180806020018281038252603a8152602001806118b4603a913960400191505060405180910390fd5b505050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b17905261147f908590611699565b50505050565b80158061150b575060408051636eb1769f60e11b81523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b1580156114dd57600080fd5b505afa1580156114f1573d6000803e3d6000fd5b505050506040513d602081101561150757600080fd5b5051155b6115465760405162461bcd60e51b81526004018080602001828103825260368152602001806119386036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052611420908490611699565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052611420908490611699565b3390565b6001600160a01b0381166116335760405162461bcd60e51b815260040180806020018281038252602681526020018061188e6026913960400191505060405180910390fd5b600080546040516001600160a01b038085169361010090930416917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6116ab826001600160a01b0316611851565b6116fc576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b6020831061173a5780518252601f19909201916020918201910161171b565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461179c576040519150601f19603f3d011682016040523d82523d6000602084013e6117a1565b606091505b5091509150816117f8576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b80511561147f5780806020019051602081101561181457600080fd5b505161147f5760405162461bcd60e51b815260040180806020018281038252602a81526020018061190e602a913960400191505060405180910390fd5b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061188557508115155b94935050505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d617920686176652072657665727465644f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565645361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a265627a7a72315820d28890a28df3748b8410e50ab60044857325492f9c3407ebf13dc1d536106f5a64736f6c63430005110032000000000000000000000000a3128cc400e2878571368ae0a83f588eb838552b00000000000000000000000000d0f137b51692d0ac708bde7b367a373865cffe00000000000000000000000080c5e6908368cb9db503ba968d7ec5a565bfb389000000000000000000000000343e3a490c9251dc0eaa81da146ba6abe6c78b2d

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000a3128cc400e2878571368ae0a83f588eb838552b00000000000000000000000000d0f137b51692d0ac708bde7b367a373865cffe00000000000000000000000080c5e6908368cb9db503ba968d7ec5a565bfb389000000000000000000000000343e3a490c9251dc0eaa81da146ba6abe6c78b2d

-----Decoded View---------------
Arg [0] : _balancerZapIn (address): 0xa3128cc400e2878571368ae0a83f588eb838552b
Arg [1] : _balancerZapOut (address): 0x00d0f137b51692d0ac708bde7b367a373865cffe
Arg [2] : _uniswapV2ZapIn (address): 0x80c5e6908368cb9db503ba968d7ec5a565bfb389
Arg [3] : _uniswapV2ZapOut (address): 0x343e3a490c9251dc0eaa81da146ba6abe6c78b2d

-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 000000000000000000000000a3128cc400e2878571368ae0a83f588eb838552b
Arg [1] : 00000000000000000000000000d0f137b51692d0ac708bde7b367a373865cffe
Arg [2] : 00000000000000000000000080c5e6908368cb9db503ba968d7ec5a565bfb389
Arg [3] : 000000000000000000000000343e3a490c9251dc0eaa81da146ba6abe6c78b2d


Deployed ByteCode Sourcemap

17822:6615:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23477:137;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23477:137:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23477:137:0;-1:-1:-1;;;;;23477:137:0;;:::i;18315:39::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18315:39:0;;;:::i;:::-;;;;-1:-1:-1;;;;;18315:39:0;;;;;;;;;;;;;;23332:137;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23332:137:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23332:137:0;-1:-1:-1;;;;;23332:137:0;;:::i;24073:86::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24073:86:0;;;:::i;24229:205::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24229:205:0;;;:::i;18968:2131::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18968:2131:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;18968:2131:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;23842:191;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23842:191:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23842:191:0;-1:-1:-1;;;;;23842:191:0;;:::i;14211:140::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14211:140:0;;;:::i;17993:27::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17993:27:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;18229:37;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18229:37:0;;;:::i;23192:132::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23192:132:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23192:132:0;-1:-1:-1;;;;;23192:132:0;;:::i;13400:79::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13400:79:0;;;:::i;13766:94::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13766:94:0;;;:::i;23622:142::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23622:142:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23622:142:0;-1:-1:-1;;;;;23622:142:0;;:::i;18185:37::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18185:37:0;;;:::i;21107:2048::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21107:2048:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;21107:2048:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;18273:35::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18273:35:0;;;:::i;14506:109::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14506:109:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14506:109:0;-1:-1:-1;;;;;14506:109:0;;:::i;23477:137::-;13612:9;:7;:9::i;:::-;13604:54;;;;;-1:-1:-1;;;13604:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;13604:54:0;;;;;;;;;;;;;;;23557:14;:49;;-1:-1:-1;;;;;;23557:49:0;-1:-1:-1;;;;;23557:49:0;;;;;;;;;;23477:137::o;18315:39::-;;;-1:-1:-1;;;;;18315:39:0;;:::o;23332:137::-;13612:9;:7;:9::i;:::-;13604:54;;;;;-1:-1:-1;;;13604:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;13604:54:0;;;;;;;;;;;;;;;23412:14;:49;;-1:-1:-1;;;;;;23412:49:0;-1:-1:-1;;;;;23412:49:0;;;;;;;;;;23332:137::o;24073:86::-;13612:9;:7;:9::i;:::-;13604:54;;;;;-1:-1:-1;;;13604:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;13604:54:0;;;;;;;;;;;;;;;24144:7;;;-1:-1:-1;;;;24133:18:0;;-1:-1:-1;;;24144:7:0;;;;;;24143:8;24133:18;;;;;;24073:86::o;24229:205::-;13612:9;:7;:9::i;:::-;13604:54;;;;;-1:-1:-1;;;13604:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;13604:54:0;;;;;;;;;;;;;;;24303:21;24277:23;24357:19;:7;:5;:7::i;:::-;-1:-1:-1;;;;;24357:17:0;;:19::i;:::-;24335:41;;24387:39;24405:3;24410:15;24387:17;:39::i;:::-;13669:1;;24229:205::o;18968:2131::-;19228:7;11930:11;;;;11922:55;;;;;-1:-1:-1;;;11922:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;12069:5;12055:19;;-1:-1:-1;;12055:19:0;;;;;-1:-1:-1;;;18855:7:0;;12055:19;18855:7;18851:102;;;18879:28;;;-1:-1:-1;;;18879:28:0;;;;;;;;;;;;-1:-1:-1;;;18879:28:0;;;;;;;;;;;;;;18851:102;19268:140;-1:-1:-1;;;;;19268:49:0;;19332:10;19365:4;19385:12;19268:140;:49;:140;:::i;:::-;19515:14;;19448:120;;-1:-1:-1;;;;;19448:44:0;;;;19515:14;19545:12;19448:120;:44;:120;:::i;:::-;19627:14;19659:21;-1:-1:-1;;;;;19644:44:0;;:46;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19644:46:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19644:46:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19644:46:0;19718;;;-1:-1:-1;;;19718:46:0;;;;19644;;-1:-1:-1;19701:14:0;;-1:-1:-1;;;;;19718:44:0;;;;;:46;;;;;19644;;19718;;;;;;;:44;:46;;;5:2:-1;;;;30:1;27;20:12;5:2;19718:46:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19718:46:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19718:46:0;19826:48;;;-1:-1:-1;;;19826:48:0;;-1:-1:-1;;;;;19826:48:0;;;;;;;;;19718:46;;-1:-1:-1;19777:21:0;;19826:40;;;;;;:48;;;;;19718:46;;19826:48;;;;;;;;:40;:48;;;5:2:-1;;;;30:1;27;20:12;5:2;19826:48:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19826:48:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19826:48:0;19822:212;;;-1:-1:-1;19907:6:0;19822:212;;;19942:24;-1:-1:-1;;;;;19935:40:0;;19976:6;19935:48;;;;;;;;;;;;;-1:-1:-1;;;;;19935:48:0;-1:-1:-1;;;;;19935:48:0;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19935:48:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19935:48:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19935:48:0;19931:103;;;-1:-1:-1;20016:6:0;19931:103;20102:14;;:146;;;-1:-1:-1;;;20102:146:0;;-1:-1:-1;;;;;20102:146:0;;;;;;;;;;;;;;;;;;;;20079:20;20102:146;;;;;;;;20079:20;;20102:14;;:25;;:146;;;;;;;;;;;;;;;20079:20;20102:14;:146;;;5:2:-1;;;;30:1;27;20:12;5:2;20102:146:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20102:146:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20102:146:0;;-1:-1:-1;20261:17:0;-1:-1:-1;;;;;20293:27:0;;20289:774;;20391:14;;:221;;;-1:-1:-1;;;20391:221:0;;-1:-1:-1;;;;;20391:221:0;;;;;;;:14;:221;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:14;;;;;:20;;20418:12;;20391:221;;;;;;;;;;;;;;;20418:12;20391:14;:221;;;5:2:-1;;;;30:1;27;20:12;5:2;20391:221:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20391:221:0;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20391:221:0;;-1:-1:-1;20289:774:0;;;20705:14;;20739:46;;;-1:-1:-1;;;20739:46:0;;20779:4;20739:46;;;;;;20645:155;;-1:-1:-1;;;;;20705:14:0;;;;20739:31;;;;;;:46;;;;;;;;;;;;;;;:31;:46;;;5:2:-1;;;;30:1;27;20:12;5:2;20739:46:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20739:46:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20739:46:0;-1:-1:-1;;;;;20645:33:0;;;:155;;:33;:155;:::i;:::-;20827:14;;:224;;;-1:-1:-1;;;20827:224:0;;-1:-1:-1;;;;;20827:224:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:14;;;;;:20;;:14;;:224;;;;;;;;;;;;;;;:14;;:224;;;5:2:-1;;;;30:1;27;20:12;5:2;20827:224:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20827:224:0;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20827:224:0;;-1:-1:-1;20289:774:0;21082:9;-1:-1:-1;;;;;12235:11:0;:18;;-1:-1:-1;;12235:18:0;12249:4;12235:18;;;18968:2131;;-1:-1:-1;;;;;18968:2131:0:o;23842:191::-;13612:9;:7;:9::i;:::-;13604:54;;;;;-1:-1:-1;;;13604:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;13604:54:0;;;;;;;;;;;;;;;23936:38;;;-1:-1:-1;;;23936:38:0;;23968:4;23936:38;;;;;;23922:11;;-1:-1:-1;;;;;23936:23:0;;;;;:38;;;;;;;;;;;;;;;:23;:38;;;5:2:-1;;;;30:1;27;20:12;5:2;23936:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23936:38:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23936:38:0;;-1:-1:-1;23985:40:0;24012:7;:5;:7::i;:::-;-1:-1:-1;;;;;23985:26:0;;;24021:3;23985:40;:26;:40;:::i;14211:140::-;13612:9;:7;:9::i;:::-;13604:54;;;;;-1:-1:-1;;;13604:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;13604:54:0;;;;;;;;;;;;;;;14310:1;14294:6;;14273:40;;14294:6;;;;-1:-1:-1;;;;;14294:6:0;;14273:40;;14310:1;;14273:40;14341:1;14324:19;;-1:-1:-1;;;;;;14324:19:0;;;14211:140::o;17993:27::-;;;-1:-1:-1;;;17993:27:0;;;;;:::o;18229:37::-;;;-1:-1:-1;;;;;18229:37:0;;:::o;23192:132::-;13612:9;:7;:9::i;:::-;13604:54;;;;;-1:-1:-1;;;13604:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;13604:54:0;;;;;;;;;;;;;;;23270:13;:46;;-1:-1:-1;;;;;;23270:46:0;-1:-1:-1;;;;;23270:46:0;;;;;;;;;;23192:132::o;13400:79::-;13438:7;13465:6;;;;-1:-1:-1;;;;;13465:6:0;;13400:79::o;13766:94::-;13806:4;13846:6;;;;;-1:-1:-1;;;;;13846:6:0;13830:12;:10;:12::i;:::-;-1:-1:-1;;;;;13830:22:0;;13823:29;;13766:94;:::o;23622:142::-;13612:9;:7;:9::i;:::-;13604:54;;;;;-1:-1:-1;;;13604:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;13604:54:0;;;;;;;;;;;;;;;23704:15;:52;;-1:-1:-1;;;;;;23704:52:0;-1:-1:-1;;;;;23704:52:0;;;;;;;;;;23622:142::o;18185:37::-;;;-1:-1:-1;;;;;18185:37:0;;:::o;21107:2048::-;21364:7;11930:11;;;;11922:55;;;;;-1:-1:-1;;;11922:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;12069:5;12055:19;;-1:-1:-1;;12055:19:0;;;;;-1:-1:-1;;;18855:7:0;;12055:19;18855:7;18851:102;;;18879:28;;;-1:-1:-1;;;18879:28:0;;;;;;;;;;;;-1:-1:-1;;;18879:28:0;;;;;;;;;;;;;;18851:102;21404:139;-1:-1:-1;;;;;21404:48:0;;21467:10;21500:4;21520:12;21404:139;:48;:139;:::i;:::-;21651:15;;21585:120;;-1:-1:-1;;;;;21585:43:0;;;;21651:15;21682:12;21585:120;:43;:120;:::i;:::-;21764:14;21796:23;-1:-1:-1;;;;;21781:46:0;;:48;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21781:48:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21781:48:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21781:48:0;21857;;;-1:-1:-1;;;21857:48:0;;;;21781;;-1:-1:-1;21840:14:0;;-1:-1:-1;;;;;21857:46:0;;;;;:48;;;;;21781;;21857;;;;;;;:46;:48;;;5:2:-1;;;;30:1;27;20:12;5:2;21857:48:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21857:48:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21857:48:0;21967:46;;;-1:-1:-1;;;21967:46:0;;-1:-1:-1;;;;;21967:46:0;;;;;;;;;21857:48;;-1:-1:-1;21918:21:0;;21967:38;;;;;;:46;;;;;21857:48;;21967:46;;;;;;;;:38;:46;;;5:2:-1;;;;30:1;27;20:12;5:2;21967:46:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21967:46:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21967:46:0;21963:208;;;-1:-1:-1;22046:6:0;21963:208;;;22081:22;-1:-1:-1;;;;;22074:38:0;;22113:6;22074:46;;;;;;;;;;;;;-1:-1:-1;;;;;22074:46:0;-1:-1:-1;;;;;22074:46:0;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22074:46:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22074:46:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22074:46:0;22070:101;;;-1:-1:-1;22153:6:0;22070:101;22231:15;;;:142;;;-1:-1:-1;;;22231:142:0;;-1:-1:-1;;;;;22231:142:0;;;;;;;;;;;;;;;;;;;;;;;22211:17;22231:142;;;;;;;;22211:17;;22231:15;;;;:22;;:142;;;;;;;;;;;;;;22211:17;22231:15;:142;;;5:2:-1;;;;30:1;27;20:12;5:2;22231:142:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22231:142:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22231:142:0;;-1:-1:-1;22416:17:0;-1:-1:-1;;;;;22448:27:0;;22444:592;;22549:13;;:172;;;-1:-1:-1;;;22549:172:0;;:13;:172;;;;;;-1:-1:-1;;;;;22549:172:0;;;;;;;;;;;;;;;;;;;;;;:13;;;;;:19;;22575:9;;22549:172;;;;;;;;;;;;;;;22575:9;22549:13;:172;;;5:2:-1;;;;30:1;27;20:12;5:2;22549:172:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22549:172:0;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22549:172:0;;-1:-1:-1;22444:592:0;;;22796:13;;22754:68;;-1:-1:-1;;;;;22754:33:0;;;;22796:13;22812:9;22754:68;:33;:68;:::i;:::-;22849:13;;:175;;;-1:-1:-1;;;22849:175:0;;-1:-1:-1;;;;;22849:175:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:13;;;;;:19;;:13;;:175;;;;;;;;;;;;;;;:13;;:175;;;5:2:-1;;;;30:1;27;20:12;5:2;22849:175:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22849:175:0;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22849:175:0;;-1:-1:-1;22444:592:0;23048:70;-1:-1:-1;;;;;23048:43:0;;23092:14;23108:9;23048:70;:43;:70;:::i;18273:35::-;;;-1:-1:-1;;;;;18273:35:0;;:::o;14506:109::-;13612:9;:7;:9::i;:::-;13604:54;;;;;-1:-1:-1;;;13604:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;13604:54:0;;;;;;;;;;;;;;;14579:28;14598:8;14579:18;:28::i;:::-;14506:109;:::o;9300:159::-;9442:7;9300:159::o;10436:445::-;10565:6;10540:21;:31;;10518:110;;;;;-1:-1:-1;;;10518:110:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;10715:32;;10697:12;;-1:-1:-1;;;;;10715:14:0;;;10736:6;;10697:12;10715:32;10697:12;10715:32;10736:6;10715:14;:32;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;10696:51:0;;;10780:7;10758:115;;;;-1:-1:-1;;;10758:115:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10436:445;;;:::o;4276:284::-;4473:68;;;-1:-1:-1;;;;;4473:68:0;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;4473:68:0;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;4420:132:0;;4453:5;;4420:18;:132::i;:::-;4276:284;;;;:::o;4568:706::-;4986:10;;;4985:62;;-1:-1:-1;5002:39:0;;;-1:-1:-1;;;5002:39:0;;5026:4;5002:39;;;;-1:-1:-1;;;;;5002:39:0;;;;;;;;;:15;;;;;;:39;;;;;;;;;;;;;;;:15;:39;;;5:2:-1;;;;30:1;27;20:12;5:2;5002:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5002:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5002:39:0;:44;4985:62;4963:166;;;;-1:-1:-1;;;4963:166:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5193:62;;;-1:-1:-1;;;;;5193:62:0;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;5193:62:0;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;5140:126:0;;5173:5;;5140:18;:126::i;4021:247::-;4191:58;;;-1:-1:-1;;;;;4191:58:0;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;4191:58:0;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;4138:122:0;;4171:5;;4138:18;:122::i;12537:98::-;12617:10;12537:98;:::o;14721:266::-;-1:-1:-1;;;;;14809:22:0;;14787:110;;;;-1:-1:-1;;;14787:110:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14934:6;;;14913:38;;-1:-1:-1;;;;;14913:38:0;;;;14934:6;;;;;;14913:38;;;14962:6;:17;;-1:-1:-1;;;;;14962:17:0;;;;;-1:-1:-1;;;;;;14962:17:0;;;;;;;;;14721:266::o;6631:1176::-;7235:27;7243:5;-1:-1:-1;;;;;7235:25:0;;:27::i;:::-;7227:71;;;;;-1:-1:-1;;;7227:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;7372:12;7386:23;7421:5;-1:-1:-1;;;;;7413:19:0;7433:4;7413:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;7413:25:0;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;7371:67:0;;;;7457:7;7449:52;;;;;-1:-1:-1;;;7449:52:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7518:17;;:21;7514:286;;7691:10;7680:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7680:30:0;7654:134;;;;-1:-1:-1;;;7654:134:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8424:659;8484:4;8983:20;;8813:66;9032:23;;;;;;:42;;-1:-1:-1;9059:15:0;;;9032:42;9024:51;8424:659;-1:-1:-1;;;;8424:659:0:o

Swarm Source

bzzr://d28890a28df3748b8410e50ab60044857325492f9c3407ebf13dc1d536106f5a
Block Transaction Difficulty Gas Used Reward
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.