ETH Price: $3,224.28 (+5.58%)

Contract

0x5eAe7715D1970867E4d57C58b08e6AcF405A094d
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Open Lock ETH An...154832212022-09-06 9:16:34861 days ago1662455794IN
0x5eAe7715...F405A094d
0.001 ETH0.005869086
Open Lock ETH An...154763862022-09-05 6:54:48862 days ago1662360888IN
0x5eAe7715...F405A094d
0.1 ETH0.003912774
Open Lock ETH An...151606462022-07-17 14:16:12911 days ago1658067372IN
0x5eAe7715...F405A094d
85 ETH0.011905628.75958418
Open Lock ETH An...144164152022-03-19 10:51:061032 days ago1647687066IN
0x5eAe7715...F405A094d
0.0051 ETH0.0126122229.77508685
Open Lock ETH An...141842302022-02-11 10:35:581068 days ago1644575758IN
0x5eAe7715...F405A094d
14 ETH0.057910559.20151618
Open Lock ETH An...138517542021-12-22 0:16:521119 days ago1640132212IN
0x5eAe7715...F405A094d
9.2 ETH0.0684735170
Open Lock ETH An...138516242021-12-21 23:46:141119 days ago1640130374IN
0x5eAe7715...F405A094d
4.5 ETH0.0597435761.07544885
Open Lock ETH An...138030282021-12-14 11:28:081126 days ago1639481288IN
0x5eAe7715...F405A094d
3 ETH0.0178328443.07658184
Open Lock ETH An...137074722021-11-29 8:11:281142 days ago1638173488IN
0x5eAe7715...F405A094d
0.01 ETH0.0807386682.53857904
Open Lock ETH An...134851572021-10-25 7:12:111177 days ago1635145931IN
0x5eAe7715...F405A094d
11 ETH0.0493888350.48986787
Open Lock ETH An...134421762021-10-18 13:50:071183 days ago1634565007IN
0x5eAe7715...F405A094d
9 ETH0.0711663972.75291761
Open Lock ETH An...134101312021-10-13 13:01:511188 days ago1634130111IN
0x5eAe7715...F405A094d
110.2 ETH0.0905570592.57585955
Open Lock ETH An...133329602021-10-01 10:46:501201 days ago1633085210IN
0x5eAe7715...F405A094d
2.5 ETH0.0337003679.55855359
Open Lock ETH An...132546282021-09-19 6:49:341213 days ago1632034174IN
0x5eAe7715...F405A094d
0.01 ETH0.0329479533.68246486
Open Lock ETH An...132228192021-09-14 8:46:031218 days ago1631609163IN
0x5eAe7715...F405A094d
0.005 ETH0.06619567.67152589
Open Lock ETH An...130660702021-08-21 2:47:581242 days ago1629514078IN
0x5eAe7715...F405A094d
33 ETH0.0126723130.61093297
Open Lock ETH An...128895892021-07-24 14:41:511269 days ago1627137711IN
0x5eAe7715...F405A094d
8 ETH0.0065614416
Open Lock ETH An...127947662021-07-09 18:28:461284 days ago1625855326IN
0x5eAe7715...F405A094d
39 ETH0.0077917119
Open Lock ETH An...127693262021-07-05 19:13:141288 days ago1625512394IN
0x5eAe7715...F405A094d
0.001 ETH0.012716513
Open Lock ETH An...126546702021-06-17 22:35:111306 days ago1623969311IN
0x5eAe7715...F405A094d
4 ETH0.008803739
Open Lock ETH An...126388252021-06-15 11:33:471308 days ago1623756827IN
0x5eAe7715...F405A094d
0.00001 ETH0.0055730314

Latest 21 internal transactions

Advanced mode:
Parent Transaction Hash Block
From
To
154832212022-09-06 9:16:34861 days ago1662455794
0x5eAe7715...F405A094d
0.001 ETH
154763862022-09-05 6:54:48862 days ago1662360888
0x5eAe7715...F405A094d
0.1 ETH
151606462022-07-17 14:16:12911 days ago1658067372
0x5eAe7715...F405A094d
85 ETH
144164152022-03-19 10:51:061032 days ago1647687066
0x5eAe7715...F405A094d
0.0051 ETH
141842302022-02-11 10:35:581068 days ago1644575758
0x5eAe7715...F405A094d
14 ETH
138517542021-12-22 0:16:521119 days ago1640132212
0x5eAe7715...F405A094d
9.2 ETH
138516242021-12-21 23:46:141119 days ago1640130374
0x5eAe7715...F405A094d
4.5 ETH
138030282021-12-14 11:28:081126 days ago1639481288
0x5eAe7715...F405A094d
3 ETH
137074722021-11-29 8:11:281142 days ago1638173488
0x5eAe7715...F405A094d
0.01 ETH
134851572021-10-25 7:12:111177 days ago1635145931
0x5eAe7715...F405A094d
11 ETH
134421762021-10-18 13:50:071183 days ago1634565007
0x5eAe7715...F405A094d
9 ETH
134101312021-10-13 13:01:511188 days ago1634130111
0x5eAe7715...F405A094d
110.2 ETH
133329602021-10-01 10:46:501201 days ago1633085210
0x5eAe7715...F405A094d
2.5 ETH
132546282021-09-19 6:49:341213 days ago1632034174
0x5eAe7715...F405A094d
0.01 ETH
132228192021-09-14 8:46:031218 days ago1631609163
0x5eAe7715...F405A094d
0.005 ETH
130660702021-08-21 2:47:581242 days ago1629514078
0x5eAe7715...F405A094d
33 ETH
128895892021-07-24 14:41:511269 days ago1627137711
0x5eAe7715...F405A094d
8 ETH
127947662021-07-09 18:28:461284 days ago1625855326
0x5eAe7715...F405A094d
39 ETH
127693262021-07-05 19:13:141288 days ago1625512394
0x5eAe7715...F405A094d
0.001 ETH
126546702021-06-17 22:35:111306 days ago1623969311
0x5eAe7715...F405A094d
4 ETH
126388252021-06-15 11:33:471308 days ago1623756827
0x5eAe7715...F405A094d
0.00001 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
BProxyActions

Compiler Version
v0.5.16+commit.9c3226ce

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, BSD-3-Clause license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-06-10
*/

/**
 *Submitted for verification at Etherscan.io on 2021-05-12
*/

/// DssProxyActions.sol

// Copyright (C) 2018-2020 Maker Ecosystem Growth Holdings, INC.

// 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 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 Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program.  If not, see <https://www.gnu.org/licenses/>.

pragma solidity ^0.5.12;

contract GemLike {
    function approve(address, uint) public;
    function transfer(address, uint) public;
    function transferFrom(address, address, uint) public;
    function deposit() public payable;
    function withdraw(uint) public;
}

contract ManagerLike {
    function cdpCan(address, uint, address) public view returns (uint);
    function ilks(uint) public view returns (bytes32);
    function owns(uint) public view returns (address);
    function urns(uint) public view returns (address);
    function vat() public view returns (address);
    function open(bytes32, address) public returns (uint);
    function give(uint, address) public;
    function cdpAllow(uint, address, uint) public;
    function urnAllow(address, uint) public;
    function frob(uint, int, int) public;
    function flux(uint, address, uint) public;
    function move(uint, address, uint) public;
    function exit(address, uint, address, uint) public;
    function quit(uint, address) public;
    function enter(address, uint) public;
    function shift(uint, uint) public;
}

contract VatLike {
    function can(address, address) public view returns (uint);
    function ilks(bytes32) public view returns (uint, uint, uint, uint, uint);
    function dai(address) public view returns (uint);
    function urns(bytes32, address) public view returns (uint, uint);
    function frob(bytes32, address, address, address, int, int) public;
    function hope(address) public;
    function move(address, address, uint) public;
}

contract GemJoinLike {
    function dec() public returns (uint);
    function gem() public returns (GemLike);
    function join(address, uint) public payable;
    function exit(address, uint) public;
}

contract GNTJoinLike {
    function bags(address) public view returns (address);
    function make(address) public returns (address);
}

contract DaiJoinLike {
    function vat() public returns (VatLike);
    function dai() public returns (GemLike);
    function join(address, uint) public payable;
    function exit(address, uint) public;
}

contract HopeLike {
    function hope(address) public;
    function nope(address) public;
}

contract EndLike {
    function fix(bytes32) public view returns (uint);
    function cash(bytes32, uint) public;
    function free(bytes32) public;
    function pack(uint) public;
    function skim(bytes32, address) public;
}

contract JugLike {
    function drip(bytes32) public returns (uint);
}

contract PotLike {
    function pie(address) public view returns (uint);
    function drip() public returns (uint);
    function join(uint) public;
    function exit(uint) public;
}

contract ProxyRegistryLike {
    function proxies(address) public view returns (address);
    function build(address) public returns (address);
}

contract ProxyLike {
    function owner() public view returns (address);
}

// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
// WARNING: These functions meant to be used as a a library for a DSProxy. Some are unsafe if you call them directly.
// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

contract Common {
    uint256 constant RAY = 10 ** 27;

    // Internal functions

    function mul(uint x, uint y) internal pure returns (uint z) {
        require(y == 0 || (z = x * y) / y == x, "mul-overflow");
    }

    // Public functions

    function daiJoin_join(address apt, address urn, uint wad) public {
        // Gets DAI from the user's wallet
        DaiJoinLike(apt).dai().transferFrom(msg.sender, address(this), wad);
        // Approves adapter to take the DAI amount
        DaiJoinLike(apt).dai().approve(apt, wad);
        // Joins DAI into the vat
        DaiJoinLike(apt).join(urn, wad);
    }
}

contract DssProxyActions is Common {
    // Internal functions

    function sub(uint x, uint y) internal pure returns (uint z) {
        require((z = x - y) <= x, "sub-overflow");
    }

    function toInt(uint x) internal pure returns (int y) {
        y = int(x);
        require(y >= 0, "int-overflow");
    }

    function toRad(uint wad) internal pure returns (uint rad) {
        rad = mul(wad, 10 ** 27);
    }

    function convertTo18(address gemJoin, uint256 amt) internal returns (uint256 wad) {
        // For those collaterals that have less than 18 decimals precision we need to do the conversion before passing to frob function
        // Adapters will automatically handle the difference of precision
        wad = mul(
            amt,
            10 ** (18 - GemJoinLike(gemJoin).dec())
        );
    }

    function _getDrawDart(
        address vat,
        address jug,
        address urn,
        bytes32 ilk,
        uint wad
    ) internal returns (int dart) {
        // Updates stability fee rate
        uint rate = JugLike(jug).drip(ilk);

        // Gets DAI balance of the urn in the vat
        uint dai = VatLike(vat).dai(urn);

        // If there was already enough DAI in the vat balance, just exits it without adding more debt
        if (dai < mul(wad, RAY)) {
            // Calculates the needed dart so together with the existing dai in the vat is enough to exit wad amount of DAI tokens
            dart = toInt(sub(mul(wad, RAY), dai) / rate);
            // This is neeeded due lack of precision. It might need to sum an extra dart wei (for the given DAI wad amount)
            dart = mul(uint(dart), rate) < mul(wad, RAY) ? dart + 1 : dart;
        }
    }

    function _getWipeDart(
        address vat,
        uint dai,
        address urn,
        bytes32 ilk
    ) internal view returns (int dart) {
        // Gets actual rate from the vat
        (, uint rate,,,) = VatLike(vat).ilks(ilk);
        // Gets actual art value of the urn
        (, uint art) = VatLike(vat).urns(ilk, urn);

        // Uses the whole dai balance in the vat to reduce the debt
        dart = toInt(dai / rate);
        // Checks the calculated dart is not higher than urn.art (total debt), otherwise uses its value
        dart = uint(dart) <= art ? - dart : - toInt(art);
    }

    function _getWipeAllWad(
        address vat,
        address usr,
        address urn,
        bytes32 ilk
    ) internal view returns (uint wad) {
        // Gets actual rate from the vat
        (, uint rate,,,) = VatLike(vat).ilks(ilk);
        // Gets actual art value of the urn
        (, uint art) = VatLike(vat).urns(ilk, urn);
        // Gets actual dai amount in the urn
        uint dai = VatLike(vat).dai(usr);

        uint rad = sub(mul(art, rate), dai);
        wad = rad / RAY;

        // If the rad precision has some dust, it will need to request for 1 extra wad wei
        wad = mul(wad, RAY) < rad ? wad + 1 : wad;
    }

    // Public functions

    function transfer(address gem, address dst, uint amt) public {
        GemLike(gem).transfer(dst, amt);
    }

    function ethJoin_join(address apt, address urn) public payable {
        // Wraps ETH in WETH
        GemJoinLike(apt).gem().deposit.value(msg.value)();
        // Approves adapter to take the WETH amount
        GemJoinLike(apt).gem().approve(address(apt), msg.value);
        // Joins WETH collateral into the vat
        GemJoinLike(apt).join(urn, msg.value);
    }

    function gemJoin_join(address apt, address urn, uint amt, bool transferFrom) public {
        // Only executes for tokens that have approval/transferFrom implementation
        if (transferFrom) {
            // Gets token from the user's wallet
            GemJoinLike(apt).gem().transferFrom(msg.sender, address(this), amt);
            // Approves adapter to take the token amount
            GemJoinLike(apt).gem().approve(apt, amt);
        }
        // Joins token collateral into the vat
        GemJoinLike(apt).join(urn, amt);
    }

    function hope(
        address obj,
        address usr
    ) public {
        HopeLike(obj).hope(usr);
    }

    function nope(
        address obj,
        address usr
    ) public {
        HopeLike(obj).nope(usr);
    }

    function open(
        address manager,
        bytes32 ilk,
        address usr
    ) public returns (uint cdp) {
        cdp = ManagerLike(manager).open(ilk, usr);
    }

    function give(
        address manager,
        uint cdp,
        address usr
    ) public {
        ManagerLike(manager).give(cdp, usr);
    }

    function giveToProxy(
        address proxyRegistry,
        address manager,
        uint cdp,
        address dst
    ) public {
        // Gets actual proxy address
        address proxy = ProxyRegistryLike(proxyRegistry).proxies(dst);
        // Checks if the proxy address already existed and dst address is still the owner
        if (proxy == address(0) || ProxyLike(proxy).owner() != dst) {
            uint csize;
            assembly {
                csize := extcodesize(dst)
            }
            // We want to avoid creating a proxy for a contract address that might not be able to handle proxies, then losing the CDP
            require(csize == 0, "Dst-is-a-contract");
            // Creates the proxy for the dst address
            proxy = ProxyRegistryLike(proxyRegistry).build(dst);
        }
        // Transfers CDP to the dst proxy
        give(manager, cdp, proxy);
    }

    function cdpAllow(
        address manager,
        uint cdp,
        address usr,
        uint ok
    ) public {
        ManagerLike(manager).cdpAllow(cdp, usr, ok);
    }

    function urnAllow(
        address manager,
        address usr,
        uint ok
    ) public {
        ManagerLike(manager).urnAllow(usr, ok);
    }

    function flux(
        address manager,
        uint cdp,
        address dst,
        uint wad
    ) public {
        ManagerLike(manager).flux(cdp, dst, wad);
    }

    function move(
        address manager,
        uint cdp,
        address dst,
        uint rad
    ) public {
        ManagerLike(manager).move(cdp, dst, rad);
    }

    function frob(
        address manager,
        uint cdp,
        int dink,
        int dart
    ) public {
        ManagerLike(manager).frob(cdp, dink, dart);
    }

    function quit(
        address manager,
        uint cdp,
        address dst
    ) public {
        ManagerLike(manager).quit(cdp, dst);
    }

    function enter(
        address manager,
        address src,
        uint cdp
    ) public {
        ManagerLike(manager).enter(src, cdp);
    }

    function shift(
        address manager,
        uint cdpSrc,
        uint cdpOrg
    ) public {
        ManagerLike(manager).shift(cdpSrc, cdpOrg);
    }

    function makeGemBag(
        address gemJoin
    ) public returns (address bag) {
        bag = GNTJoinLike(gemJoin).make(address(this));
    }

    function lockETH(
        address manager,
        address ethJoin,
        uint cdp
    ) public payable {
        // Receives ETH amount, converts it to WETH and joins it into the vat
        ethJoin_join(ethJoin, address(this));
        // Locks WETH amount into the CDP
        VatLike(ManagerLike(manager).vat()).frob(
            ManagerLike(manager).ilks(cdp),
            ManagerLike(manager).urns(cdp),
            address(this),
            address(this),
            toInt(msg.value),
            0
        );
    }

    function safeLockETH(
        address manager,
        address ethJoin,
        uint cdp,
        address owner
    ) public payable {
        require(ManagerLike(manager).owns(cdp) == owner, "owner-missmatch");
        lockETH(manager, ethJoin, cdp);
    }

    function lockGem(
        address manager,
        address gemJoin,
        uint cdp,
        uint amt,
        bool transferFrom
    ) public {
        // Takes token amount from user's wallet and joins into the vat
        gemJoin_join(gemJoin, address(this), amt, transferFrom);
        // Locks token amount into the CDP
        VatLike(ManagerLike(manager).vat()).frob(
            ManagerLike(manager).ilks(cdp),
            ManagerLike(manager).urns(cdp),
            address(this),
            address(this),
            toInt(convertTo18(gemJoin, amt)),
            0
        );
    }

    function safeLockGem(
        address manager,
        address gemJoin,
        uint cdp,
        uint amt,
        bool transferFrom,
        address owner
    ) public {
        require(ManagerLike(manager).owns(cdp) == owner, "owner-missmatch");
        lockGem(manager, gemJoin, cdp, amt, transferFrom);
    }

    function freeETH(
        address manager,
        address ethJoin,
        uint cdp,
        uint wad
    ) public {
        // Unlocks WETH amount from the CDP
        frob(manager, cdp, -toInt(wad), 0);
        // Moves the amount from the CDP urn to proxy's address
        flux(manager, cdp, address(this), wad);
        // Exits WETH amount to proxy address as a token
        GemJoinLike(ethJoin).exit(address(this), wad);
        // Converts WETH to ETH
        GemJoinLike(ethJoin).gem().withdraw(wad);
        // Sends ETH back to the user's wallet
        msg.sender.transfer(wad);
    }

    function freeGem(
        address manager,
        address gemJoin,
        uint cdp,
        uint amt
    ) public {
        uint wad = convertTo18(gemJoin, amt);
        // Unlocks token amount from the CDP
        frob(manager, cdp, -toInt(wad), 0);
        // Moves the amount from the CDP urn to proxy's address
        flux(manager, cdp, address(this), wad);
        // Exits token amount to the user's wallet as a token
        GemJoinLike(gemJoin).exit(msg.sender, amt);
    }

    function exitETH(
        address manager,
        address ethJoin,
        uint cdp,
        uint wad
    ) public {
        // Moves the amount from the CDP urn to proxy's address
        flux(manager, cdp, address(this), wad);

        // Exits WETH amount to proxy address as a token
        GemJoinLike(ethJoin).exit(address(this), wad);
        // Converts WETH to ETH
        GemJoinLike(ethJoin).gem().withdraw(wad);
        // Sends ETH back to the user's wallet
        msg.sender.transfer(wad);
    }

    function exitGem(
        address manager,
        address gemJoin,
        uint cdp,
        uint amt
    ) public {
        // Moves the amount from the CDP urn to proxy's address
        flux(manager, cdp, address(this), convertTo18(gemJoin, amt));

        // Exits token amount to the user's wallet as a token
        GemJoinLike(gemJoin).exit(msg.sender, amt);
    }

    function draw(
        address manager,
        address jug,
        address daiJoin,
        uint cdp,
        uint wad
    ) public {
        address urn = ManagerLike(manager).urns(cdp);
        address vat = ManagerLike(manager).vat();
        bytes32 ilk = ManagerLike(manager).ilks(cdp);
        // Generates debt in the CDP
        frob(manager, cdp, 0, _getDrawDart(vat, jug, urn, ilk, wad));
        // Moves the DAI amount (balance in the vat in rad) to proxy's address
        move(manager, cdp, address(this), toRad(wad));
        // Allows adapter to access to proxy's DAI balance in the vat
        if (VatLike(vat).can(address(this), address(daiJoin)) == 0) {
            VatLike(vat).hope(daiJoin);
        }
        // Exits DAI to the user's wallet as a token
        DaiJoinLike(daiJoin).exit(msg.sender, wad);
    }

    function wipe(
        address manager,
        address daiJoin,
        uint cdp,
        uint wad
    ) public {
        address vat = ManagerLike(manager).vat();
        address urn = ManagerLike(manager).urns(cdp);
        bytes32 ilk = ManagerLike(manager).ilks(cdp);

        address own = ManagerLike(manager).owns(cdp);
        if (own == address(this) || ManagerLike(manager).cdpCan(own, cdp, address(this)) == 1) {
            // Joins DAI amount into the vat
            daiJoin_join(daiJoin, urn, wad);
            // Paybacks debt to the CDP
            frob(manager, cdp, 0, _getWipeDart(vat, VatLike(vat).dai(urn), urn, ilk));
        } else {
             // Joins DAI amount into the vat
            daiJoin_join(daiJoin, address(this), wad);
            // Paybacks debt to the CDP
            VatLike(vat).frob(
                ilk,
                urn,
                address(this),
                address(this),
                0,
                _getWipeDart(vat, wad * RAY, urn, ilk)
            );
        }
    }

    function safeWipe(
        address manager,
        address daiJoin,
        uint cdp,
        uint wad,
        address owner
    ) public {
        require(ManagerLike(manager).owns(cdp) == owner, "owner-missmatch");
        wipe(manager, daiJoin, cdp, wad);
    }

    function wipeAll(
        address manager,
        address daiJoin,
        uint cdp
    ) public {
        address vat = ManagerLike(manager).vat();
        address urn = ManagerLike(manager).urns(cdp);
        bytes32 ilk = ManagerLike(manager).ilks(cdp);
        (, uint art) = VatLike(vat).urns(ilk, urn);

        address own = ManagerLike(manager).owns(cdp);
        if (own == address(this) || ManagerLike(manager).cdpCan(own, cdp, address(this)) == 1) {
            // Joins DAI amount into the vat
            daiJoin_join(daiJoin, urn, _getWipeAllWad(vat, urn, urn, ilk));
            // Paybacks debt to the CDP
            frob(manager, cdp, 0, -int(art));
        } else {
            // Joins DAI amount into the vat
            daiJoin_join(daiJoin, address(this), _getWipeAllWad(vat, address(this), urn, ilk));
            // Paybacks debt to the CDP
            VatLike(vat).frob(
                ilk,
                urn,
                address(this),
                address(this),
                0,
                -int(art)
            );
        }
    }

    function safeWipeAll(
        address manager,
        address daiJoin,
        uint cdp,
        address owner
    ) public {
        require(ManagerLike(manager).owns(cdp) == owner, "owner-missmatch");
        wipeAll(manager, daiJoin, cdp);
    }

    function lockETHAndDraw(
        address manager,
        address jug,
        address ethJoin,
        address daiJoin,
        uint cdp,
        uint wadD
    ) public payable {
        address urn = ManagerLike(manager).urns(cdp);
        address vat = ManagerLike(manager).vat();
        bytes32 ilk = ManagerLike(manager).ilks(cdp);
        // Receives ETH amount, converts it to WETH and joins it into the vat
        ethJoin_join(ethJoin, urn);
        // Locks WETH amount into the CDP and generates debt
        frob(manager, cdp, toInt(msg.value), _getDrawDart(vat, jug, urn, ilk, wadD));
        // Moves the DAI amount (balance in the vat in rad) to proxy's address
        move(manager, cdp, address(this), toRad(wadD));
        // Allows adapter to access to proxy's DAI balance in the vat
        if (VatLike(vat).can(address(this), address(daiJoin)) == 0) {
            VatLike(vat).hope(daiJoin);
        }
        // Exits DAI to the user's wallet as a token
        DaiJoinLike(daiJoin).exit(msg.sender, wadD);
    }

    function openLockETHAndDraw(
        address manager,
        address jug,
        address ethJoin,
        address daiJoin,
        bytes32 ilk,
        uint wadD
    ) public payable returns (uint cdp) {
        cdp = open(manager, ilk, address(this));
        lockETHAndDraw(manager, jug, ethJoin, daiJoin, cdp, wadD);
    }

    function lockGemAndDraw(
        address manager,
        address jug,
        address gemJoin,
        address daiJoin,
        uint cdp,
        uint amtC,
        uint wadD,
        bool transferFrom
    ) public {
        address urn = ManagerLike(manager).urns(cdp);
        address vat = ManagerLike(manager).vat();
        bytes32 ilk = ManagerLike(manager).ilks(cdp);
        // Takes token amount from user's wallet and joins into the vat
        gemJoin_join(gemJoin, urn, amtC, transferFrom);
        // Locks token amount into the CDP and generates debt
        frob(manager, cdp, toInt(convertTo18(gemJoin, amtC)), _getDrawDart(vat, jug, urn, ilk, wadD));
        // Moves the DAI amount (balance in the vat in rad) to proxy's address
        move(manager, cdp, address(this), toRad(wadD));
        // Allows adapter to access to proxy's DAI balance in the vat
        if (VatLike(vat).can(address(this), address(daiJoin)) == 0) {
            VatLike(vat).hope(daiJoin);
        }
        // Exits DAI to the user's wallet as a token
        DaiJoinLike(daiJoin).exit(msg.sender, wadD);
    }

    function openLockGemAndDraw(
        address manager,
        address jug,
        address gemJoin,
        address daiJoin,
        bytes32 ilk,
        uint amtC,
        uint wadD,
        bool transferFrom
    ) public returns (uint cdp) {
        cdp = open(manager, ilk, address(this));
        lockGemAndDraw(manager, jug, gemJoin, daiJoin, cdp, amtC, wadD, transferFrom);
    }

    function openLockGNTAndDraw(
        address manager,
        address jug,
        address gntJoin,
        address daiJoin,
        bytes32 ilk,
        uint amtC,
        uint wadD
    ) public returns (address bag, uint cdp) {
        // Creates bag (if doesn't exist) to hold GNT
        bag = GNTJoinLike(gntJoin).bags(address(this));
        if (bag == address(0)) {
            bag = makeGemBag(gntJoin);
        }
        // Transfer funds to the funds which previously were sent to the proxy
        GemLike(GemJoinLike(gntJoin).gem()).transfer(bag, amtC);
        cdp = openLockGemAndDraw(manager, jug, gntJoin, daiJoin, ilk, amtC, wadD, false);
    }

    function wipeAndFreeETH(
        address manager,
        address ethJoin,
        address daiJoin,
        uint cdp,
        uint wadC,
        uint wadD
    ) public {
        address urn = ManagerLike(manager).urns(cdp);
        // Joins DAI amount into the vat
        daiJoin_join(daiJoin, urn, wadD);
        // Paybacks debt to the CDP and unlocks WETH amount from it
        frob(
            manager,
            cdp,
            -toInt(wadC),
            _getWipeDart(ManagerLike(manager).vat(), VatLike(ManagerLike(manager).vat()).dai(urn), urn, ManagerLike(manager).ilks(cdp))
        );
        // Moves the amount from the CDP urn to proxy's address
        flux(manager, cdp, address(this), wadC);
        // Exits WETH amount to proxy address as a token
        GemJoinLike(ethJoin).exit(address(this), wadC);
        // Converts WETH to ETH
        GemJoinLike(ethJoin).gem().withdraw(wadC);
        // Sends ETH back to the user's wallet
        msg.sender.transfer(wadC);
    }

    function wipeAllAndFreeETH(
        address manager,
        address ethJoin,
        address daiJoin,
        uint cdp,
        uint wadC
    ) public {
        address vat = ManagerLike(manager).vat();
        address urn = ManagerLike(manager).urns(cdp);
        bytes32 ilk = ManagerLike(manager).ilks(cdp);
        (, uint art) = VatLike(vat).urns(ilk, urn);

        // Joins DAI amount into the vat
        daiJoin_join(daiJoin, urn, _getWipeAllWad(vat, urn, urn, ilk));
        // Paybacks debt to the CDP and unlocks WETH amount from it
        frob(
            manager,
            cdp,
            -toInt(wadC),
            -int(art)
        );
        // Moves the amount from the CDP urn to proxy's address
        flux(manager, cdp, address(this), wadC);
        // Exits WETH amount to proxy address as a token
        GemJoinLike(ethJoin).exit(address(this), wadC);
        // Converts WETH to ETH
        GemJoinLike(ethJoin).gem().withdraw(wadC);
        // Sends ETH back to the user's wallet
        msg.sender.transfer(wadC);
    }

    function wipeAndFreeGem(
        address manager,
        address gemJoin,
        address daiJoin,
        uint cdp,
        uint amtC,
        uint wadD
    ) public {
        address urn = ManagerLike(manager).urns(cdp);
        // Joins DAI amount into the vat
        daiJoin_join(daiJoin, urn, wadD);
        uint wadC = convertTo18(gemJoin, amtC);
        // Paybacks debt to the CDP and unlocks token amount from it
        frob(
            manager,
            cdp,
            -toInt(wadC),
            _getWipeDart(ManagerLike(manager).vat(), VatLike(ManagerLike(manager).vat()).dai(urn), urn, ManagerLike(manager).ilks(cdp))
        );
        // Moves the amount from the CDP urn to proxy's address
        flux(manager, cdp, address(this), wadC);
        // Exits token amount to the user's wallet as a token
        GemJoinLike(gemJoin).exit(msg.sender, amtC);
    }

    function wipeAllAndFreeGem(
        address manager,
        address gemJoin,
        address daiJoin,
        uint cdp,
        uint amtC
    ) public {
        address vat = ManagerLike(manager).vat();
        address urn = ManagerLike(manager).urns(cdp);
        bytes32 ilk = ManagerLike(manager).ilks(cdp);
        (, uint art) = VatLike(vat).urns(ilk, urn);

        // Joins DAI amount into the vat
        daiJoin_join(daiJoin, urn, _getWipeAllWad(vat, urn, urn, ilk));
        uint wadC = convertTo18(gemJoin, amtC);
        // Paybacks debt to the CDP and unlocks token amount from it
        frob(
            manager,
            cdp,
            -toInt(wadC),
            -int(art)
        );
        // Moves the amount from the CDP urn to proxy's address
        flux(manager, cdp, address(this), wadC);
        // Exits token amount to the user's wallet as a token
        GemJoinLike(gemJoin).exit(msg.sender, amtC);
    }
}

contract DssProxyActionsEnd is Common {
    // Internal functions

    function _free(
        address manager,
        address end,
        uint cdp
    ) internal returns (uint ink) {
        bytes32 ilk = ManagerLike(manager).ilks(cdp);
        address urn = ManagerLike(manager).urns(cdp);
        VatLike vat = VatLike(ManagerLike(manager).vat());
        uint art;
        (ink, art) = vat.urns(ilk, urn);

        // If CDP still has debt, it needs to be paid
        if (art > 0) {
            EndLike(end).skim(ilk, urn);
            (ink,) = vat.urns(ilk, urn);
        }
        // Approves the manager to transfer the position to proxy's address in the vat
        if (vat.can(address(this), address(manager)) == 0) {
            vat.hope(manager);
        }
        // Transfers position from CDP to the proxy address
        ManagerLike(manager).quit(cdp, address(this));
        // Frees the position and recovers the collateral in the vat registry
        EndLike(end).free(ilk);
    }

    // Public functions
    function freeETH(
        address manager,
        address ethJoin,
        address end,
        uint cdp
    ) public {
        uint wad = _free(manager, end, cdp);
        // Exits WETH amount to proxy address as a token
        GemJoinLike(ethJoin).exit(address(this), wad);
        // Converts WETH to ETH
        GemJoinLike(ethJoin).gem().withdraw(wad);
        // Sends ETH back to the user's wallet
        msg.sender.transfer(wad);
    }

    function freeGem(
        address manager,
        address gemJoin,
        address end,
        uint cdp
    ) public {
        uint amt = _free(manager, end, cdp) / 10 ** (18 - GemJoinLike(gemJoin).dec());
        // Exits token amount to the user's wallet as a token
        GemJoinLike(gemJoin).exit(msg.sender, amt);
    }

    function pack(
        address daiJoin,
        address end,
        uint wad
    ) public {
        daiJoin_join(daiJoin, address(this), wad);
        VatLike vat = DaiJoinLike(daiJoin).vat();
        // Approves the end to take out DAI from the proxy's balance in the vat
        if (vat.can(address(this), address(end)) == 0) {
            vat.hope(end);
        }
        EndLike(end).pack(wad);
    }

    function cashETH(
        address ethJoin,
        address end,
        bytes32 ilk,
        uint wad
    ) public {
        EndLike(end).cash(ilk, wad);
        uint wadC = mul(wad, EndLike(end).fix(ilk)) / RAY;
        // Exits WETH amount to proxy address as a token
        GemJoinLike(ethJoin).exit(address(this), wadC);
        // Converts WETH to ETH
        GemJoinLike(ethJoin).gem().withdraw(wadC);
        // Sends ETH back to the user's wallet
        msg.sender.transfer(wadC);
    }

    function cashGem(
        address gemJoin,
        address end,
        bytes32 ilk,
        uint wad
    ) public {
        EndLike(end).cash(ilk, wad);
        // Exits token amount to the user's wallet as a token
        uint amt = mul(wad, EndLike(end).fix(ilk)) / RAY / 10 ** (18 - GemJoinLike(gemJoin).dec());
        GemJoinLike(gemJoin).exit(msg.sender, amt);
    }
}

contract DssProxyActionsDsr is Common {
    function join(
        address daiJoin,
        address pot,
        uint wad
    ) public {
        VatLike vat = DaiJoinLike(daiJoin).vat();
        // Executes drip to get the chi rate updated to rho == now, otherwise join will fail
        uint chi = PotLike(pot).drip();
        // Joins wad amount to the vat balance
        daiJoin_join(daiJoin, address(this), wad);
        // Approves the pot to take out DAI from the proxy's balance in the vat
        if (vat.can(address(this), address(pot)) == 0) {
            vat.hope(pot);
        }
        // Joins the pie value (equivalent to the DAI wad amount) in the pot
        PotLike(pot).join(mul(wad, RAY) / chi);
    }

    function exit(
        address daiJoin,
        address pot,
        uint wad
    ) public {
        VatLike vat = DaiJoinLike(daiJoin).vat();
        // Executes drip to count the savings accumulated until this moment
        uint chi = PotLike(pot).drip();
        // Calculates the pie value in the pot equivalent to the DAI wad amount
        uint pie = mul(wad, RAY) / chi;
        // Exits DAI from the pot
        PotLike(pot).exit(pie);
        // Checks the actual balance of DAI in the vat after the pot exit
        uint bal = DaiJoinLike(daiJoin).vat().dai(address(this));
        // Allows adapter to access to proxy's DAI balance in the vat
        if (vat.can(address(this), address(daiJoin)) == 0) {
            vat.hope(daiJoin);
        }
        // It is necessary to check if due rounding the exact wad amount can be exited by the adapter.
        // Otherwise it will do the maximum DAI balance in the vat
        DaiJoinLike(daiJoin).exit(
            msg.sender,
            bal >= mul(wad, RAY) ? wad : bal / RAY
        );
    }

    function exitAll(
        address daiJoin,
        address pot
    ) public {
        VatLike vat = DaiJoinLike(daiJoin).vat();
        // Executes drip to count the savings accumulated until this moment
        uint chi = PotLike(pot).drip();
        // Gets the total pie belonging to the proxy address
        uint pie = PotLike(pot).pie(address(this));
        // Exits DAI from the pot
        PotLike(pot).exit(pie);
        // Allows adapter to access to proxy's DAI balance in the vat
        if (vat.can(address(this), address(daiJoin)) == 0) {
            vat.hope(daiJoin);
        }
        // Exits the DAI amount corresponding to the value of pie
        DaiJoinLike(daiJoin).exit(msg.sender, mul(chi, pie) / RAY);
    }
}


contract BManagerLike is ManagerLike {
    function cushion(uint cdp) public returns(uint);
}

contract BProxyActions is DssProxyActions {
    function shiftManager(
        address managerSrc,
        address managerDst,
        uint cdpSrc,
        uint cdpDst
    ) public {
        address vat = ManagerLike(managerSrc).vat();
        require(vat == ManagerLike(managerDst).vat(), "vat-mismatch");

        bool canSrc = (VatLike(vat).can(address(this), managerSrc) != 0);
        bool canDst = (VatLike(vat).can(address(this), managerDst) != 0);

        if(! canSrc) hope(vat, managerSrc);
        if(! canDst) hope(vat, managerDst);

        quit(managerSrc, cdpSrc, address(this));
        enter(managerDst, address(this), cdpDst);

        if(! canSrc) nope(vat, managerSrc);
        if(! canDst) nope(vat, managerDst);
    }

    function lockETHViaCdp(
        address manager,
        address ethJoin,
        uint cdp
    ) public payable {
        address urn = ManagerLike(manager).urns(cdp);

        // Receives ETH amount, converts it to WETH and joins it into the vat
        ethJoin_join(ethJoin, urn);
        // Locks WETH amount into the CDP and generates debt
        frob(manager, cdp, toInt(msg.value), 0);
    }

    function lockGemViaCdp(
        address manager,
        address gemJoin,
        uint cdp,
        uint amt,
        bool transferFrom
    ) public {
        address urn = ManagerLike(manager).urns(cdp);

        // Receives Gem and joins it into the vat        
        gemJoin_join(gemJoin, urn, amt, transferFrom);

        // Locks WETH amount into the CDP and generates debt
        frob(manager, cdp, toInt(convertTo18(gemJoin, amt)), 0);
    }    

    function openLockETHAndGiveToProxy(
        address proxyRegistry,
        address manager,
        address ethJoin,
        bytes32 ilk,
        address dst
    ) public payable returns (uint cdp) {
        cdp = open(manager, ilk, address(this));
        lockETHViaCdp(manager,ethJoin,cdp);
        giveToProxy(proxyRegistry,manager,cdp,dst);
    }

    function openLockGem(
        address manager,
        address gemJoin,
        bytes32 ilk,
        uint    amt,
        bool    transferFrom
    ) public returns (uint cdp) {
        cdp = open(manager, ilk, address(this));
        lockGemViaCdp(manager,gemJoin,cdp,amt,transferFrom);
    }    

    function openAndImportFromManager(
        address managerSrc,
        address managerDst,
        uint cdpSrc,
        bytes32 ilk
    ) public payable returns (uint cdp) {
        cdp = open(managerDst, ilk, address(this));
        shiftManager(managerSrc,managerDst,cdpSrc,cdp);
    }

    function beforeWipeAll(address manager, uint cdp) internal {
        if(BManagerLike(manager).cushion(cdp) > 0) ManagerLike(manager).frob(cdp,0,0);
    }

    function wipeAll(
        address manager,
        address daiJoin,
        uint cdp
    ) public {
        beforeWipeAll(manager, cdp);
        super.wipeAll(manager, daiJoin, cdp);
    }

    function safeWipeAll(
        address manager,
        address daiJoin,
        uint cdp,
        address owner
    ) public {
        beforeWipeAll(manager, cdp);
        super.safeWipeAll(manager, daiJoin, cdp, owner);
    }

    function wipeAllAndFreeETH(
        address manager,
        address ethJoin,
        address daiJoin,
        uint cdp,
        uint wadC
    ) public {
        beforeWipeAll(manager, cdp);
        super.wipeAllAndFreeETH(manager, ethJoin, daiJoin, cdp, wadC);
    }

    function wipeAllAndFreeGem(
        address manager,
        address gemJoin,
        address daiJoin,
        uint cdp,
        uint amtC
    ) public {
        beforeWipeAll(manager, cdp);
        super.wipeAllAndFreeGem(manager, gemJoin, daiJoin, cdp, amtC);
    }
}

Contract Security Audit

Contract ABI

[{"constant":false,"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint256","name":"cdp","type":"uint256"},{"internalType":"address","name":"usr","type":"address"},{"internalType":"uint256","name":"ok","type":"uint256"}],"name":"cdpAllow","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"apt","type":"address"},{"internalType":"address","name":"urn","type":"address"},{"internalType":"uint256","name":"wad","type":"uint256"}],"name":"daiJoin_join","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"address","name":"jug","type":"address"},{"internalType":"address","name":"daiJoin","type":"address"},{"internalType":"uint256","name":"cdp","type":"uint256"},{"internalType":"uint256","name":"wad","type":"uint256"}],"name":"draw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"address","name":"src","type":"address"},{"internalType":"uint256","name":"cdp","type":"uint256"}],"name":"enter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"apt","type":"address"},{"internalType":"address","name":"urn","type":"address"}],"name":"ethJoin_join","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"address","name":"ethJoin","type":"address"},{"internalType":"uint256","name":"cdp","type":"uint256"},{"internalType":"uint256","name":"wad","type":"uint256"}],"name":"exitETH","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"address","name":"gemJoin","type":"address"},{"internalType":"uint256","name":"cdp","type":"uint256"},{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"exitGem","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint256","name":"cdp","type":"uint256"},{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"wad","type":"uint256"}],"name":"flux","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"address","name":"ethJoin","type":"address"},{"internalType":"uint256","name":"cdp","type":"uint256"},{"internalType":"uint256","name":"wad","type":"uint256"}],"name":"freeETH","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"address","name":"gemJoin","type":"address"},{"internalType":"uint256","name":"cdp","type":"uint256"},{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"freeGem","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint256","name":"cdp","type":"uint256"},{"internalType":"int256","name":"dink","type":"int256"},{"internalType":"int256","name":"dart","type":"int256"}],"name":"frob","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"apt","type":"address"},{"internalType":"address","name":"urn","type":"address"},{"internalType":"uint256","name":"amt","type":"uint256"},{"internalType":"bool","name":"transferFrom","type":"bool"}],"name":"gemJoin_join","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint256","name":"cdp","type":"uint256"},{"internalType":"address","name":"usr","type":"address"}],"name":"give","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"proxyRegistry","type":"address"},{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint256","name":"cdp","type":"uint256"},{"internalType":"address","name":"dst","type":"address"}],"name":"giveToProxy","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"obj","type":"address"},{"internalType":"address","name":"usr","type":"address"}],"name":"hope","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"address","name":"ethJoin","type":"address"},{"internalType":"uint256","name":"cdp","type":"uint256"}],"name":"lockETH","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"address","name":"jug","type":"address"},{"internalType":"address","name":"ethJoin","type":"address"},{"internalType":"address","name":"daiJoin","type":"address"},{"internalType":"uint256","name":"cdp","type":"uint256"},{"internalType":"uint256","name":"wadD","type":"uint256"}],"name":"lockETHAndDraw","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"address","name":"ethJoin","type":"address"},{"internalType":"uint256","name":"cdp","type":"uint256"}],"name":"lockETHViaCdp","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"address","name":"gemJoin","type":"address"},{"internalType":"uint256","name":"cdp","type":"uint256"},{"internalType":"uint256","name":"amt","type":"uint256"},{"internalType":"bool","name":"transferFrom","type":"bool"}],"name":"lockGem","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"address","name":"jug","type":"address"},{"internalType":"address","name":"gemJoin","type":"address"},{"internalType":"address","name":"daiJoin","type":"address"},{"internalType":"uint256","name":"cdp","type":"uint256"},{"internalType":"uint256","name":"amtC","type":"uint256"},{"internalType":"uint256","name":"wadD","type":"uint256"},{"internalType":"bool","name":"transferFrom","type":"bool"}],"name":"lockGemAndDraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"address","name":"gemJoin","type":"address"},{"internalType":"uint256","name":"cdp","type":"uint256"},{"internalType":"uint256","name":"amt","type":"uint256"},{"internalType":"bool","name":"transferFrom","type":"bool"}],"name":"lockGemViaCdp","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"gemJoin","type":"address"}],"name":"makeGemBag","outputs":[{"internalType":"address","name":"bag","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint256","name":"cdp","type":"uint256"},{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"rad","type":"uint256"}],"name":"move","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"obj","type":"address"},{"internalType":"address","name":"usr","type":"address"}],"name":"nope","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"bytes32","name":"ilk","type":"bytes32"},{"internalType":"address","name":"usr","type":"address"}],"name":"open","outputs":[{"internalType":"uint256","name":"cdp","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"managerSrc","type":"address"},{"internalType":"address","name":"managerDst","type":"address"},{"internalType":"uint256","name":"cdpSrc","type":"uint256"},{"internalType":"bytes32","name":"ilk","type":"bytes32"}],"name":"openAndImportFromManager","outputs":[{"internalType":"uint256","name":"cdp","type":"uint256"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"address","name":"jug","type":"address"},{"internalType":"address","name":"ethJoin","type":"address"},{"internalType":"address","name":"daiJoin","type":"address"},{"internalType":"bytes32","name":"ilk","type":"bytes32"},{"internalType":"uint256","name":"wadD","type":"uint256"}],"name":"openLockETHAndDraw","outputs":[{"internalType":"uint256","name":"cdp","type":"uint256"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"proxyRegistry","type":"address"},{"internalType":"address","name":"manager","type":"address"},{"internalType":"address","name":"ethJoin","type":"address"},{"internalType":"bytes32","name":"ilk","type":"bytes32"},{"internalType":"address","name":"dst","type":"address"}],"name":"openLockETHAndGiveToProxy","outputs":[{"internalType":"uint256","name":"cdp","type":"uint256"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"address","name":"jug","type":"address"},{"internalType":"address","name":"gntJoin","type":"address"},{"internalType":"address","name":"daiJoin","type":"address"},{"internalType":"bytes32","name":"ilk","type":"bytes32"},{"internalType":"uint256","name":"amtC","type":"uint256"},{"internalType":"uint256","name":"wadD","type":"uint256"}],"name":"openLockGNTAndDraw","outputs":[{"internalType":"address","name":"bag","type":"address"},{"internalType":"uint256","name":"cdp","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"address","name":"gemJoin","type":"address"},{"internalType":"bytes32","name":"ilk","type":"bytes32"},{"internalType":"uint256","name":"amt","type":"uint256"},{"internalType":"bool","name":"transferFrom","type":"bool"}],"name":"openLockGem","outputs":[{"internalType":"uint256","name":"cdp","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"address","name":"jug","type":"address"},{"internalType":"address","name":"gemJoin","type":"address"},{"internalType":"address","name":"daiJoin","type":"address"},{"internalType":"bytes32","name":"ilk","type":"bytes32"},{"internalType":"uint256","name":"amtC","type":"uint256"},{"internalType":"uint256","name":"wadD","type":"uint256"},{"internalType":"bool","name":"transferFrom","type":"bool"}],"name":"openLockGemAndDraw","outputs":[{"internalType":"uint256","name":"cdp","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint256","name":"cdp","type":"uint256"},{"internalType":"address","name":"dst","type":"address"}],"name":"quit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"address","name":"ethJoin","type":"address"},{"internalType":"uint256","name":"cdp","type":"uint256"},{"internalType":"address","name":"owner","type":"address"}],"name":"safeLockETH","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"address","name":"gemJoin","type":"address"},{"internalType":"uint256","name":"cdp","type":"uint256"},{"internalType":"uint256","name":"amt","type":"uint256"},{"internalType":"bool","name":"transferFrom","type":"bool"},{"internalType":"address","name":"owner","type":"address"}],"name":"safeLockGem","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"address","name":"daiJoin","type":"address"},{"internalType":"uint256","name":"cdp","type":"uint256"},{"internalType":"uint256","name":"wad","type":"uint256"},{"internalType":"address","name":"owner","type":"address"}],"name":"safeWipe","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"address","name":"daiJoin","type":"address"},{"internalType":"uint256","name":"cdp","type":"uint256"},{"internalType":"address","name":"owner","type":"address"}],"name":"safeWipeAll","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint256","name":"cdpSrc","type":"uint256"},{"internalType":"uint256","name":"cdpOrg","type":"uint256"}],"name":"shift","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"managerSrc","type":"address"},{"internalType":"address","name":"managerDst","type":"address"},{"internalType":"uint256","name":"cdpSrc","type":"uint256"},{"internalType":"uint256","name":"cdpDst","type":"uint256"}],"name":"shiftManager","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"gem","type":"address"},{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"transfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"address","name":"usr","type":"address"},{"internalType":"uint256","name":"ok","type":"uint256"}],"name":"urnAllow","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"address","name":"daiJoin","type":"address"},{"internalType":"uint256","name":"cdp","type":"uint256"},{"internalType":"uint256","name":"wad","type":"uint256"}],"name":"wipe","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"address","name":"daiJoin","type":"address"},{"internalType":"uint256","name":"cdp","type":"uint256"}],"name":"wipeAll","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"address","name":"ethJoin","type":"address"},{"internalType":"address","name":"daiJoin","type":"address"},{"internalType":"uint256","name":"cdp","type":"uint256"},{"internalType":"uint256","name":"wadC","type":"uint256"}],"name":"wipeAllAndFreeETH","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"address","name":"gemJoin","type":"address"},{"internalType":"address","name":"daiJoin","type":"address"},{"internalType":"uint256","name":"cdp","type":"uint256"},{"internalType":"uint256","name":"amtC","type":"uint256"}],"name":"wipeAllAndFreeGem","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"address","name":"ethJoin","type":"address"},{"internalType":"address","name":"daiJoin","type":"address"},{"internalType":"uint256","name":"cdp","type":"uint256"},{"internalType":"uint256","name":"wadC","type":"uint256"},{"internalType":"uint256","name":"wadD","type":"uint256"}],"name":"wipeAndFreeETH","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"address","name":"gemJoin","type":"address"},{"internalType":"address","name":"daiJoin","type":"address"},{"internalType":"uint256","name":"cdp","type":"uint256"},{"internalType":"uint256","name":"amtC","type":"uint256"},{"internalType":"uint256","name":"wadD","type":"uint256"}],"name":"wipeAndFreeGem","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]

608060405234801561001057600080fd5b506150f0806100206000396000f3fe60806040526004361061027d5760003560e01c806396e8d72c1161014f578063c0791710116100c1578063e685cc041161007a578063e685cc0414610e11578063ead6472914610e5d578063eb0b9a8514610eb4578063ee28457614610ef7578063fba7591d14610f33578063fc784ea714610f825761027d565b8063c079171014610c00578063c56167c614610c82578063cbd4be3f14610cc5578063d8467e3114610d2d578063db802a3214610d73578063e205c10814610ddb5761027d565b8063a6add01111610113578063a6add01114610a42578063b50a586914610a97578063ba727a9514610ad2578063bcd6deec14610b19578063be5e6c0314610b68578063beabacc814610bbd5761027d565b806396e8d72c146108fc5780639f6f3d5b146109415780639f887fde14610990578063a028a55e146109cb578063a033df1214610a145761027d565b80634592aca7116101f35780636ab6a491116101ac5780636ab6a491146107555780636d68b70b1461079e57806374b49dc4146107ed5780637b5a3b43146108295780637bc3bd53146108725780637df2eb25146108b15761027d565b80634592aca714610597578063493c2049146105da5780634b66619914610623578063508629ea1461066c5780635f6ef447146106cf5780636aa3ee11146107125761027d565b80631d10f231116102455780631d10f231146103ec5780632555bac31461042f57806325cf37d0146104655780632958f8a5146104ac5780633e29e565146104fd57806342dd11bb1461054e5761027d565b8063036a23951461028257806308f00e34146102c75780630aee8dec146103105780631558b048146103595780631c02d846146103a0575b600080fd5b34801561028e57600080fd5b506102c5600480360360608110156102a557600080fd5b506001600160a01b03813581169160208101359091169060400135610fd3565b005b3480156102d357600080fd5b506102c5600480360360808110156102ea57600080fd5b506001600160a01b03813581169160208101359091169060408101359060600135610fed565b34801561031c57600080fd5b506102c56004803603608081101561033357600080fd5b506001600160a01b0381358116916020810135821691604082013591606001351661115c565b34801561036557600080fd5b506102c56004803603608081101561037c57600080fd5b506001600160a01b0381358116916020810135916040820135169060600135611178565b6102c5600480360360c08110156103b657600080fd5b506001600160a01b0381358116916020810135821691604082013581169160608101359091169060808101359060a001356111ef565b3480156103f857600080fd5b506102c56004803603606081101561040f57600080fd5b506001600160a01b038135811691602081013591604090910135166114ee565b6102c56004803603606081101561044557600080fd5b506001600160a01b0381358116916020810135909116906040013561156b565b34801561047157600080fd5b506102c56004803603608081101561048857600080fd5b506001600160a01b03813581169160208101359160408201351690606001356115fe565b3480156104b857600080fd5b506102c5600480360360a08110156104cf57600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160809091013516611657565b34801561050957600080fd5b506102c5600480360360a081101561052057600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060800135151561172a565b34801561055a57600080fd5b506102c56004803603608081101561057157600080fd5b506001600160a01b0381358116916020810135909116906040810135906060013561192a565b3480156105a357600080fd5b506102c5600480360360608110156105ba57600080fd5b506001600160a01b0381358116916020810135916040909101351661198d565b3480156105e657600080fd5b506102c5600480360360808110156105fd57600080fd5b506001600160a01b038135811691602081013582169160408201359160600135166119ed565b34801561062f57600080fd5b506102c56004803603608081101561064657600080fd5b506001600160a01b03813581169160208101359091169060408101359060600135611be0565b34801561067857600080fd5b506106bd600480360360a081101561068f57600080fd5b506001600160a01b038135811691602081013590911690604081013590606081013590608001351515611fe0565b60408051918252519081900360200190f35b3480156106db57600080fd5b506102c5600480360360608110156106f257600080fd5b506001600160a01b03813581169160208101359091169060400135612005565b34801561071e57600080fd5b506106bd6004803603606081101561073557600080fd5b506001600160a01b03813581169160208101359160409091013516612065565b34801561076157600080fd5b506102c56004803603608081101561077857600080fd5b506001600160a01b038135811691602081013590911690604081013590606001356120ec565b3480156107aa57600080fd5b506102c5600480360360a08110156107c157600080fd5b506001600160a01b0381358116916020810135821691604082013516906060810135906080013561216c565b6106bd6004803603608081101561080357600080fd5b506001600160a01b03813581169160208101359091169060408101359060600135612183565b34801561083557600080fd5b506102c56004803603608081101561084c57600080fd5b506001600160a01b038135811691602081013590911690604081013590606001356121a6565b34801561087e57600080fd5b506102c56004803603606081101561089557600080fd5b506001600160a01b0381351690602081013590604001356121b4565b3480156108bd57600080fd5b506102c5600480360360808110156108d457600080fd5b506001600160a01b038135811691602081013590911690604081013590606001351515612202565b34801561090857600080fd5b506102c56004803603608081101561091f57600080fd5b506001600160a01b03813516906020810135906040810135906060013561240f565b34801561094d57600080fd5b506102c5600480360360a081101561096457600080fd5b506001600160a01b03813581169160208101358216916040820135169060608101359060800135612465565b34801561099c57600080fd5b506102c5600480360360408110156109b357600080fd5b506001600160a01b0381358116916020013516612726565b3480156109d757600080fd5b506102c5600480360360808110156109ee57600080fd5b506001600160a01b0381358116916020810135909116906040810135906060013561279a565b6102c560048036036040811015610a2a57600080fd5b506001600160a01b0381358116916020013516612a16565b348015610a4e57600080fd5b506102c5600480360360c0811015610a6557600080fd5b506001600160a01b03813581169160208101358216916040820135169060608101359060808101359060a00135612bfb565b348015610aa357600080fd5b506102c560048036036040811015610aba57600080fd5b506001600160a01b0381358116916020013516612eca565b348015610ade57600080fd5b506102c560048036036080811015610af557600080fd5b506001600160a01b0381358116916020810135916040820135169060600135612f22565b348015610b2557600080fd5b506102c5600480360360a0811015610b3c57600080fd5b506001600160a01b03813581169160208101358216916040820135169060608101359060800135612f7b565b348015610b7457600080fd5b506102c5600480360360c0811015610b8b57600080fd5b506001600160a01b03813581169160208101358216916040820135169060608101359060808101359060a00135612f92565b348015610bc957600080fd5b506102c560048036036060811015610be057600080fd5b506001600160a01b03813581169160208101359091169060400135613328565b348015610c0c57600080fd5b50610c5f600480360360e0811015610c2357600080fd5b506001600160a01b0381358116916020810135821691604082013581169160608101359091169060808101359060a08101359060c00135613388565b604080516001600160a01b03909316835260208301919091528051918290030190f35b348015610c8e57600080fd5b506102c560048036036060811015610ca557600080fd5b506001600160a01b0381358116916020810135909116906040013561350b565b348015610cd157600080fd5b506102c56004803603610100811015610ce957600080fd5b506001600160a01b0381358116916020810135821691604082013581169160608101359091169060808101359060a08101359060c08101359060e001351515613711565b6106bd600480360360a0811015610d4357600080fd5b506001600160a01b0381358116916020810135821691604082013581169160608101359160809091013516613a0e565b348015610d7f57600080fd5b506106bd6004803603610100811015610d9757600080fd5b506001600160a01b0381358116916020810135821691604082013581169160608101359091169060808101359060a08101359060c08101359060e001351515613a34565b6102c560048036036060811015610df157600080fd5b506001600160a01b03813581169160208101359091169060400135613a5f565b6106bd600480360360c0811015610e2757600080fd5b506001600160a01b0381358116916020810135821691604082013581169160608101359091169060808101359060a00135613c35565b348015610e6957600080fd5b506102c5600480360360c0811015610e8057600080fd5b506001600160a01b0381358116916020810135821691604082013591606081013591608082013515159160a0013516613c5c565b348015610ec057600080fd5b506102c560048036036060811015610ed757600080fd5b506001600160a01b03813581169160208101359091169060400135613d30565b6102c560048036036080811015610f0d57600080fd5b506001600160a01b03813581169160208101358216916040820135916060013516613d90565b348015610f3f57600080fd5b50610f6660048036036020811015610f5657600080fd5b50356001600160a01b0316613e62565b604080516001600160a01b039092168252519081900360200190f35b348015610f8e57600080fd5b506102c5600480360360a0811015610fa557600080fd5b506001600160a01b038135811691602081013590911690604081013590606081013590608001351515613edf565b610fdd8382613f71565b610fe8838383614043565b505050565b610ff984833084611178565b6040805163ef693bed60e01b81523060048201526024810183905290516001600160a01b0385169163ef693bed91604480830192600092919082900301818387803b15801561104757600080fd5b505af115801561105b573d6000803e3d6000fd5b50505050826001600160a01b0316637bd2bea76040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561109a57600080fd5b505af11580156110ae573d6000803e3d6000fd5b505050506040513d60208110156110c457600080fd5b505160408051632e1a7d4d60e01b81526004810184905290516001600160a01b0390921691632e1a7d4d9160248082019260009290919082900301818387803b15801561111057600080fd5b505af1158015611124573d6000803e3d6000fd5b505060405133925083156108fc02915083906000818181858888f19350505050158015611155573d6000803e3d6000fd5b5050505050565b6111668483613f71565b611172848484846143d7565b50505050565b604080516313771f0760e31b8152600481018590526001600160a01b03848116602483015260448201849052915191861691639bb8f8389160648082019260009290919082900301818387803b1580156111d157600080fd5b505af11580156111e5573d6000803e3d6000fd5b5050505050505050565b6000866001600160a01b0316632726b073846040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561123557600080fd5b505afa158015611249573d6000803e3d6000fd5b505050506040513d602081101561125f57600080fd5b5051604080516336569e7760e01b815290519192506000916001600160a01b038a16916336569e77916004808301926020929190829003018186803b1580156112a757600080fd5b505afa1580156112bb573d6000803e3d6000fd5b505050506040513d60208110156112d157600080fd5b505160408051632c2cb9fd60e01b81526004810187905290519192506000916001600160a01b038b1691632c2cb9fd916024808301926020929190829003018186803b15801561132057600080fd5b505afa158015611334573d6000803e3d6000fd5b505050506040513d602081101561134a57600080fd5b505190506113588784612a16565b6113788986611366346144a9565b611373868d89888c6144f4565b61240f565b61138c89863061138788614671565b6115fe565b60408051634538c4eb60e01b81523060048201526001600160a01b038881166024830152915191841691634538c4eb91604480820192602092909190829003018186803b1580156113dc57600080fd5b505afa1580156113f0573d6000803e3d6000fd5b505050506040513d602081101561140657600080fd5b505161147d57816001600160a01b031663a3b22fc4876040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050600060405180830381600087803b15801561146457600080fd5b505af1158015611478573d6000803e3d6000fd5b505050505b6040805163ef693bed60e01b81523360048201526024810186905290516001600160a01b0388169163ef693bed91604480830192600092919082900301818387803b1580156114cb57600080fd5b505af11580156114df573d6000803e3d6000fd5b50505050505050505050505050565b826001600160a01b031663fcafcc6883836040518363ffffffff1660e01b815260040180838152602001826001600160a01b03166001600160a01b0316815260200192505050600060405180830381600087803b15801561154e57600080fd5b505af1158015611562573d6000803e3d6000fd5b50505050505050565b6000836001600160a01b0316632726b073836040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156115b157600080fd5b505afa1580156115c5573d6000803e3d6000fd5b505050506040513d60208110156115db57600080fd5b505190506115e98382612a16565b61117284836115f7346144a9565b600061240f565b60408051637cf986db60e11b8152600481018590526001600160a01b0384811660248301526044820184905291519186169163f9f30db69160648082019260009290919082900301818387803b1580156111d157600080fd5b806001600160a01b0316856001600160a01b0316638161b120856040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156116a557600080fd5b505afa1580156116b9573d6000803e3d6000fd5b505050506040513d60208110156116cf57600080fd5b50516001600160a01b03161461171e576040805162461bcd60e51b815260206004820152600f60248201526e0deeedccae45adad2e6e6dac2e8c6d608b1b604482015290519081900360640190fd5b61115585858585611be0565b61173684308484612202565b846001600160a01b03166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b15801561176f57600080fd5b505afa158015611783573d6000803e3d6000fd5b505050506040513d602081101561179957600080fd5b505160408051632c2cb9fd60e01b81526004810186905290516001600160a01b039283169263760887039290891691632c2cb9fd91602480820192602092909190829003018186803b1580156117ee57600080fd5b505afa158015611802573d6000803e3d6000fd5b505050506040513d602081101561181857600080fd5b505160408051632726b07360e01b81526004810188905290516001600160a01b038a1691632726b073916024808301926020929190829003018186803b15801561186157600080fd5b505afa158015611875573d6000803e3d6000fd5b505050506040513d602081101561188b57600080fd5b505130806118a161189c8b8a61468e565b6144a9565b604080516001600160e01b031960e089901b16815260048101969096526001600160a01b0394851660248701529284166044860152921660648401526084830191909152600060a48301819052905160c48084019382900301818387803b15801561190b57600080fd5b505af115801561191f573d6000803e3d6000fd5b505050505050505050565b61193f84833061193a878661468e565b611178565b6040805163ef693bed60e01b81523360048201526024810183905290516001600160a01b0385169163ef693bed91604480830192600092919082900301818387803b1580156111d157600080fd5b826001600160a01b0316631b0dbf7283836040518363ffffffff1660e01b815260040180838152602001826001600160a01b03166001600160a01b0316815260200192505050600060405180830381600087803b15801561154e57600080fd5b6000846001600160a01b031663c4552791836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015611a4557600080fd5b505afa158015611a59573d6000803e3d6000fd5b505050506040513d6020811015611a6f57600080fd5b505190506001600160a01b0381161580611aff5750816001600160a01b0316816001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015611ac757600080fd5b505afa158015611adb573d6000803e3d6000fd5b505050506040513d6020811015611af157600080fd5b50516001600160a01b031614155b15611bd557813b8015611b4d576040805162461bcd60e51b8152602060048201526011602482015270111cdd0b5a5ccb584b58dbdb9d1c9858dd607a1b604482015290519081900360640190fd5b856001600160a01b031663f3701da2846040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050602060405180830381600087803b158015611ba557600080fd5b505af1158015611bb9573d6000803e3d6000fd5b505050506040513d6020811015611bcf57600080fd5b50519150505b6111558484836114ee565b6000846001600160a01b03166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b158015611c1b57600080fd5b505afa158015611c2f573d6000803e3d6000fd5b505050506040513d6020811015611c4557600080fd5b505160408051632726b07360e01b81526004810186905290519192506000916001600160a01b03881691632726b073916024808301926020929190829003018186803b158015611c9457600080fd5b505afa158015611ca8573d6000803e3d6000fd5b505050506040513d6020811015611cbe57600080fd5b505160408051632c2cb9fd60e01b81526004810187905290519192506000916001600160a01b03891691632c2cb9fd916024808301926020929190829003018186803b158015611d0d57600080fd5b505afa158015611d21573d6000803e3d6000fd5b505050506040513d6020811015611d3757600080fd5b50516040805163040b0d8960e51b81526004810188905290519192506000916001600160a01b038a1691638161b120916024808301926020929190829003018186803b158015611d8657600080fd5b505afa158015611d9a573d6000803e3d6000fd5b505050506040513d6020811015611db057600080fd5b505190506001600160a01b038116301480611e4d5750604080516302d75da360e51b81526001600160a01b038381166004830152602482018990523060448301529151918a1691635aebb46091606480820192602092909190829003018186803b158015611e1d57600080fd5b505afa158015611e31573d6000803e3d6000fd5b505050506040513d6020811015611e4757600080fd5b50516001145b15611ef657611e5d87848761350b565b611ef18887600061137388896001600160a01b0316636c25b3468a6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015611ebe57600080fd5b505afa158015611ed2573d6000803e3d6000fd5b505050506040513d6020811015611ee857600080fd5b5051898961470d565b6111e5565b611f0187308761350b565b836001600160a01b03166376088703838530306000611f2f8b676765c793fa10079d601b1b8e028c8c61470d565b6040518763ffffffff1660e01b815260040180878152602001866001600160a01b03166001600160a01b03168152602001856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b031681526020018381526020018281526020019650505050505050600060405180830381600087803b158015611fbe57600080fd5b505af1158015611fd2573d6000803e3d6000fd5b505050505050505050505050565b6000611fed868530612065565b9050611ffc8686838686613edf565b95945050505050565b826001600160a01b031663b68f400483836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561154e57600080fd5b60408051636090dec560e01b8152600481018490526001600160a01b0383811660248301529151600092861691636090dec591604480830192602092919082900301818787803b1580156120b857600080fd5b505af11580156120cc573d6000803e3d6000fd5b505050506040513d60208110156120e257600080fd5b5051949350505050565b60006120f8848361468e565b90506121128584612108846144a9565b600003600061240f565b61211e85843084611178565b6040805163ef693bed60e01b81523360048201526024810184905290516001600160a01b0386169163ef693bed91604480830192600092919082900301818387803b15801561190b57600080fd5b6121768583613f71565b611155858585858561483d565b6000612190848330612065565b905061219e8585858461279a565b949350505050565b610fed8483612108846144a9565b826001600160a01b031663e50322a283836040518363ffffffff1660e01b81526004018083815260200182815260200192505050600060405180830381600087803b15801561154e57600080fd5b80156123af57836001600160a01b0316637bd2bea76040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561224357600080fd5b505af1158015612257573d6000803e3d6000fd5b505050506040513d602081101561226d57600080fd5b5051604080516323b872dd60e01b81523360048201523060248201526044810185905290516001600160a01b03909216916323b872dd9160648082019260009290919082900301818387803b1580156122c557600080fd5b505af11580156122d9573d6000803e3d6000fd5b50505050836001600160a01b0316637bd2bea76040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561231857600080fd5b505af115801561232c573d6000803e3d6000fd5b505050506040513d602081101561234257600080fd5b50516040805163095ea7b360e01b81526001600160a01b038781166004830152602482018690529151919092169163095ea7b391604480830192600092919082900301818387803b15801561239657600080fd5b505af11580156123aa573d6000803e3d6000fd5b505050505b836001600160a01b0316633b4da69f84846040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156111d157600080fd5b836001600160a01b03166345e6bdcd8484846040518463ffffffff1660e01b8152600401808481526020018381526020018281526020019350505050600060405180830381600087803b1580156111d157600080fd5b6000856001600160a01b0316632726b073846040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156124ab57600080fd5b505afa1580156124bf573d6000803e3d6000fd5b505050506040513d60208110156124d557600080fd5b5051604080516336569e7760e01b815290519192506000916001600160a01b038916916336569e77916004808301926020929190829003018186803b15801561251d57600080fd5b505afa158015612531573d6000803e3d6000fd5b505050506040513d602081101561254757600080fd5b505160408051632c2cb9fd60e01b81526004810187905290519192506000916001600160a01b038a1691632c2cb9fd916024808301926020929190829003018186803b15801561259657600080fd5b505afa1580156125aa573d6000803e3d6000fd5b505050506040513d60208110156125c057600080fd5b505190506125d888866000611373868c89888c6144f4565b6125e788863061138788614671565b60408051634538c4eb60e01b81523060048201526001600160a01b038881166024830152915191841691634538c4eb91604480820192602092909190829003018186803b15801561263757600080fd5b505afa15801561264b573d6000803e3d6000fd5b505050506040513d602081101561266157600080fd5b50516126d857816001600160a01b031663a3b22fc4876040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050600060405180830381600087803b1580156126bf57600080fd5b505af11580156126d3573d6000803e3d6000fd5b505050505b6040805163ef693bed60e01b81523360048201526024810186905290516001600160a01b0388169163ef693bed91604480830192600092919082900301818387803b158015611fbe57600080fd5b816001600160a01b031663dc4d20fa826040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050600060405180830381600087803b15801561277e57600080fd5b505af1158015612792573d6000803e3d6000fd5b505050505050565b6000846001600160a01b03166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b1580156127d557600080fd5b505afa1580156127e9573d6000803e3d6000fd5b505050506040513d60208110156127ff57600080fd5b5051604080516336569e7760e01b815290519192506001600160a01b038616916336569e7791600480820192602092909190829003018186803b15801561284557600080fd5b505afa158015612859573d6000803e3d6000fd5b505050506040513d602081101561286f57600080fd5b50516001600160a01b038281169116146128bf576040805162461bcd60e51b815260206004820152600c60248201526b0ecc2e85adad2e6dac2e8c6d60a31b604482015290519081900360640190fd5b60408051634538c4eb60e01b81523060048201526001600160a01b0387811660248301529151600092841691634538c4eb916044808301926020929190829003018186803b15801561291057600080fd5b505afa158015612924573d6000803e3d6000fd5b505050506040513d602081101561293a57600080fd5b505160408051634538c4eb60e01b81523060048201526001600160a01b0388811660248301529151921515935060009291851691634538c4eb91604480820192602092909190829003018186803b15801561299457600080fd5b505afa1580156129a8573d6000803e3d6000fd5b505050506040513d60208110156129be57600080fd5b505115159050816129d3576129d38388612eca565b806129e2576129e28387612eca565b6129ed87863061198d565b6129f8863086613d30565b81612a0757612a078388612726565b80611562576115628387612726565b816001600160a01b0316637bd2bea76040518163ffffffff1660e01b8152600401602060405180830381600087803b158015612a5157600080fd5b505af1158015612a65573d6000803e3d6000fd5b505050506040513d6020811015612a7b57600080fd5b505160408051630d0e30db60e41b815290516001600160a01b039092169163d0e30db0913491600480830192600092919082900301818588803b158015612ac157600080fd5b505af1158015612ad5573d6000803e3d6000fd5b5050505050816001600160a01b0316637bd2bea76040518163ffffffff1660e01b8152600401602060405180830381600087803b158015612b1557600080fd5b505af1158015612b29573d6000803e3d6000fd5b505050506040513d6020811015612b3f57600080fd5b50516040805163095ea7b360e01b81526001600160a01b0385811660048301523460248301529151919092169163095ea7b391604480830192600092919082900301818387803b158015612b9257600080fd5b505af1158015612ba6573d6000803e3d6000fd5b505060408051633b4da69f60e01b81526001600160a01b03858116600483015234602483015291519186169350633b4da69f925060448082019260009290919082900301818387803b15801561277e57600080fd5b6000866001600160a01b0316632726b073856040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015612c4157600080fd5b505afa158015612c55573d6000803e3d6000fd5b505050506040513d6020811015612c6b57600080fd5b50519050612c7a85828461350b565b6000612c86878561468e565b9050612e708886612c96846144a9565b6000036113738c6001600160a01b03166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b158015612cd557600080fd5b505afa158015612ce9573d6000803e3d6000fd5b505050506040513d6020811015612cff57600080fd5b81019080805190602001909291905050508d6001600160a01b03166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b158015612d4957600080fd5b505afa158015612d5d573d6000803e3d6000fd5b505050506040513d6020811015612d7357600080fd5b505160408051633612d9a360e11b81526001600160a01b038b8116600483015291519190921691636c25b346916024808301926020929190829003018186803b158015612dbf57600080fd5b505afa158015612dd3573d6000803e3d6000fd5b505050506040513d6020811015612de957600080fd5b8101908080519060200190929190505050888f6001600160a01b0316632c2cb9fd8e6040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015612e3f57600080fd5b505afa158015612e53573d6000803e3d6000fd5b505050506040513d6020811015612e6957600080fd5b505161470d565b612e7c88863084611178565b6040805163ef693bed60e01b81523360048201526024810186905290516001600160a01b0389169163ef693bed91604480830192600092919082900301818387803b158015611fbe57600080fd5b816001600160a01b031663a3b22fc4826040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050600060405180830381600087803b15801561277e57600080fd5b604080516305b1fdb160e11b8152600481018590526001600160a01b03848116602483015260448201849052915191861691630b63fb629160648082019260009290919082900301818387803b1580156111d157600080fd5b612f858583613f71565b6111558585858585614bb8565b6000866001600160a01b0316632726b073856040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015612fd857600080fd5b505afa158015612fec573d6000803e3d6000fd5b505050506040513d602081101561300257600080fd5b5051905061301185828461350b565b6131c0878561301f866144a9565b6000036113738b6001600160a01b03166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b15801561305e57600080fd5b505afa158015613072573d6000803e3d6000fd5b505050506040513d602081101561308857600080fd5b5051604080516336569e7760e01b815290516001600160a01b038f16916336569e77916004808301926020929190829003018186803b1580156130ca57600080fd5b505afa1580156130de573d6000803e3d6000fd5b505050506040513d60208110156130f457600080fd5b505160408051633612d9a360e11b81526001600160a01b038a8116600483015291519190921691636c25b346916024808301926020929190829003018186803b15801561314057600080fd5b505afa158015613154573d6000803e3d6000fd5b505050506040513d602081101561316a57600080fd5b8101908080519060200190929190505050878e6001600160a01b0316632c2cb9fd8d6040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015612e3f57600080fd5b6131cc87853086611178565b6040805163ef693bed60e01b81523060048201526024810185905290516001600160a01b0388169163ef693bed91604480830192600092919082900301818387803b15801561321a57600080fd5b505af115801561322e573d6000803e3d6000fd5b50505050856001600160a01b0316637bd2bea76040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561326d57600080fd5b505af1158015613281573d6000803e3d6000fd5b505050506040513d602081101561329757600080fd5b505160408051632e1a7d4d60e01b81526004810186905290516001600160a01b0390921691632e1a7d4d9160248082019260009290919082900301818387803b1580156132e357600080fd5b505af11580156132f7573d6000803e3d6000fd5b505060405133925085156108fc02915085906000818181858888f193505050501580156111e5573d6000803e3d6000fd5b826001600160a01b031663a9059cbb83836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561154e57600080fd5b60408051638c4c280160e01b8152306004820152905160009182916001600160a01b03891691638c4c2801916024808301926020929190829003018186803b1580156133d357600080fd5b505afa1580156133e7573d6000803e3d6000fd5b505050506040513d60208110156133fd57600080fd5b505191506001600160a01b03821661341b5761341887613e62565b91505b866001600160a01b0316637bd2bea76040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561345657600080fd5b505af115801561346a573d6000803e3d6000fd5b505050506040513d602081101561348057600080fd5b50516040805163a9059cbb60e01b81526001600160a01b038581166004830152602482018890529151919092169163a9059cbb91604480830192600092919082900301818387803b1580156134d457600080fd5b505af11580156134e8573d6000803e3d6000fd5b505050506134fd898989898989896000613a34565b905097509795505050505050565b826001600160a01b031663f4b9fa756040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561354657600080fd5b505af115801561355a573d6000803e3d6000fd5b505050506040513d602081101561357057600080fd5b5051604080516323b872dd60e01b81523360048201523060248201526044810184905290516001600160a01b03909216916323b872dd9160648082019260009290919082900301818387803b1580156135c857600080fd5b505af11580156135dc573d6000803e3d6000fd5b50505050826001600160a01b031663f4b9fa756040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561361b57600080fd5b505af115801561362f573d6000803e3d6000fd5b505050506040513d602081101561364557600080fd5b50516040805163095ea7b360e01b81526001600160a01b038681166004830152602482018590529151919092169163095ea7b391604480830192600092919082900301818387803b15801561369957600080fd5b505af11580156136ad573d6000803e3d6000fd5b50505050826001600160a01b0316633b4da69f83836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561154e57600080fd5b6000886001600160a01b0316632726b073866040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561375757600080fd5b505afa15801561376b573d6000803e3d6000fd5b505050506040513d602081101561378157600080fd5b5051604080516336569e7760e01b815290519192506000916001600160a01b038c16916336569e77916004808301926020929190829003018186803b1580156137c957600080fd5b505afa1580156137dd573d6000803e3d6000fd5b505050506040513d60208110156137f357600080fd5b505160408051632c2cb9fd60e01b81526004810189905290519192506000916001600160a01b038d1691632c2cb9fd916024808301926020929190829003018186803b15801561384257600080fd5b505afa158015613856573d6000803e3d6000fd5b505050506040513d602081101561386c57600080fd5b5051905061387c89848887612202565b61389b8b8861388e61189c8d8b61468e565b611373868f89888d6144f4565b6138aa8b883061138789614671565b60408051634538c4eb60e01b81523060048201526001600160a01b038a81166024830152915191841691634538c4eb91604480820192602092909190829003018186803b1580156138fa57600080fd5b505afa15801561390e573d6000803e3d6000fd5b505050506040513d602081101561392457600080fd5b505161399b57816001600160a01b031663a3b22fc4896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050600060405180830381600087803b15801561398257600080fd5b505af1158015613996573d6000803e3d6000fd5b505050505b6040805163ef693bed60e01b81523360048201526024810187905290516001600160a01b038a169163ef693bed91604480830192600092919082900301818387803b1580156139e957600080fd5b505af11580156139fd573d6000803e3d6000fd5b505050505050505050505050505050565b6000613a1b858430612065565b9050613a2885858361156b565b611ffc868683856119ed565b6000613a41898630612065565b9050613a538989898985898989613711565b98975050505050505050565b613a698230612a16565b826001600160a01b03166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b158015613aa257600080fd5b505afa158015613ab6573d6000803e3d6000fd5b505050506040513d6020811015613acc57600080fd5b505160408051632c2cb9fd60e01b81526004810184905290516001600160a01b039283169263760887039290871691632c2cb9fd91602480820192602092909190829003018186803b158015613b2157600080fd5b505afa158015613b35573d6000803e3d6000fd5b505050506040513d6020811015613b4b57600080fd5b505160408051632726b07360e01b81526004810186905290516001600160a01b03881691632726b073916024808301926020929190829003018186803b158015613b9457600080fd5b505afa158015613ba8573d6000803e3d6000fd5b505050506040513d6020811015613bbe57600080fd5b50513080613bcb346144a9565b604080516001600160e01b031960e089901b16815260048101969096526001600160a01b0394851660248701529284166044860152921660648401526084830191909152600060a48301819052905160c48084019382900301818387803b15801561154e57600080fd5b6000613c42878430612065565b9050613c528787878785876111ef565b9695505050505050565b806001600160a01b0316866001600160a01b0316638161b120866040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015613caa57600080fd5b505afa158015613cbe573d6000803e3d6000fd5b505050506040513d6020811015613cd457600080fd5b50516001600160a01b031614613d23576040805162461bcd60e51b815260206004820152600f60248201526e0deeedccae45adad2e6e6dac2e8c6d608b1b604482015290519081900360640190fd5b612792868686868661172a565b826001600160a01b0316637e348b7d83836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561154e57600080fd5b806001600160a01b0316846001600160a01b0316638161b120846040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015613dde57600080fd5b505afa158015613df2573d6000803e3d6000fd5b505050506040513d6020811015613e0857600080fd5b50516001600160a01b031614613e57576040805162461bcd60e51b815260206004820152600f60248201526e0deeedccae45adad2e6e6dac2e8c6d608b1b604482015290519081900360640190fd5b611172848484613a5f565b60408051631060930d60e01b815230600482015290516000916001600160a01b03841691631060930d9160248082019260209290919082900301818787803b158015613ead57600080fd5b505af1158015613ec1573d6000803e3d6000fd5b505050506040513d6020811015613ed757600080fd5b505192915050565b6000856001600160a01b0316632726b073856040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015613f2557600080fd5b505afa158015613f39573d6000803e3d6000fd5b505050506040513d6020811015613f4f57600080fd5b50519050613f5f85828585612202565b61279286856115f761189c898861468e565b6000826001600160a01b03166310b89f30836040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b158015613fb957600080fd5b505af1158015613fcd573d6000803e3d6000fd5b505050506040513d6020811015613fe357600080fd5b5051111561403f57604080516345e6bdcd60e01b8152600481018390526000602482018190526044820181905291516001600160a01b038516926345e6bdcd926064808201939182900301818387803b15801561277e57600080fd5b5050565b6000836001600160a01b03166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b15801561407e57600080fd5b505afa158015614092573d6000803e3d6000fd5b505050506040513d60208110156140a857600080fd5b505160408051632726b07360e01b81526004810185905290519192506000916001600160a01b03871691632726b073916024808301926020929190829003018186803b1580156140f757600080fd5b505afa15801561410b573d6000803e3d6000fd5b505050506040513d602081101561412157600080fd5b505160408051632c2cb9fd60e01b81526004810186905290519192506000916001600160a01b03881691632c2cb9fd916024808301926020929190829003018186803b15801561417057600080fd5b505afa158015614184573d6000803e3d6000fd5b505050506040513d602081101561419a57600080fd5b5051604080516309092f9760e21b8152600481018390526001600160a01b038581166024830152825193945060009390871692632424be5c9260448082019391829003018186803b1580156141ee57600080fd5b505afa158015614202573d6000803e3d6000fd5b505050506040513d604081101561421857600080fd5b506020908101516040805163040b0d8960e51b81526004810189905290519193506000926001600160a01b038b1692638161b120926024808201939291829003018186803b15801561426957600080fd5b505afa15801561427d573d6000803e3d6000fd5b505050506040513d602081101561429357600080fd5b505190506001600160a01b0381163014806143305750604080516302d75da360e51b81526001600160a01b038381166004830152602482018990523060448301529151918a1691635aebb46091606480820192602092909190829003018186803b15801561430057600080fd5b505afa158015614314573d6000803e3d6000fd5b505050506040513d602081101561432a57600080fd5b50516001145b1561435b5761434b878561434688888989614e4b565b61350b565b611ef1888760008560000361240f565b61436c873061434688308989614e4b565b60408051637608870360e01b8152600481018590526001600160a01b0386811660248301523060448301819052606483015260006084830181905285810360a484015292519088169263760887039260c4808201939182900301818387803b158015611fbe57600080fd5b806001600160a01b0316846001600160a01b0316638161b120846040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561442557600080fd5b505afa158015614439573d6000803e3d6000fd5b505050506040513d602081101561444f57600080fd5b50516001600160a01b03161461449e576040805162461bcd60e51b815260206004820152600f60248201526e0deeedccae45adad2e6e6dac2e8c6d608b1b604482015290519081900360640190fd5b611172848484610fd3565b8060008112156144ef576040805162461bcd60e51b815260206004820152600c60248201526b696e742d6f766572666c6f7760a01b604482015290519081900360640190fd5b919050565b600080856001600160a01b03166344e2a5a8856040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b15801561453d57600080fd5b505af1158015614551573d6000803e3d6000fd5b505050506040513d602081101561456757600080fd5b505160408051633612d9a360e11b81526001600160a01b0388811660048301529151929350600092918a1691636c25b34691602480820192602092909190829003018186803b1580156145b957600080fd5b505afa1580156145cd573d6000803e3d6000fd5b505050506040513d60208110156145e357600080fd5b505190506145fc84676765c793fa10079d601b1b615019565b811015614666576146328261462561461f87676765c793fa10079d601b1b615019565b84615074565b8161462c57fe5b046144a9565b925061464984676765c793fa10079d601b1b615019565b6146538484615019565b1061465e5782614663565b826001015b92505b505095945050505050565b600061468882676765c793fa10079d601b1b615019565b92915050565b600061470682846001600160a01b031663b3bcfa826040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156146cf57600080fd5b505af11580156146e3573d6000803e3d6000fd5b505050506040513d60208110156146f957600080fd5b5051601203600a0a615019565b9392505050565b600080856001600160a01b031663d9638d36846040518263ffffffff1660e01b81526004018082815260200191505060a06040518083038186803b15801561475457600080fd5b505afa158015614768573d6000803e3d6000fd5b505050506040513d60a081101561477e57600080fd5b5060200151604080516309092f9760e21b8152600481018690526001600160a01b0387811660248301528251939450600093908a1692632424be5c9260448082019391829003018186803b1580156147d557600080fd5b505afa1580156147e9573d6000803e3d6000fd5b505050506040513d60408110156147ff57600080fd5b5060200151905061481282878161462c57fe5b92508083111561482d57614825816144a9565b600003614832565b826000035b979650505050505050565b6000856001600160a01b03166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b15801561487857600080fd5b505afa15801561488c573d6000803e3d6000fd5b505050506040513d60208110156148a257600080fd5b505160408051632726b07360e01b81526004810186905290519192506000916001600160a01b03891691632726b073916024808301926020929190829003018186803b1580156148f157600080fd5b505afa158015614905573d6000803e3d6000fd5b505050506040513d602081101561491b57600080fd5b505160408051632c2cb9fd60e01b81526004810187905290519192506000916001600160a01b038a1691632c2cb9fd916024808301926020929190829003018186803b15801561496a57600080fd5b505afa15801561497e573d6000803e3d6000fd5b505050506040513d602081101561499457600080fd5b5051604080516309092f9760e21b8152600481018390526001600160a01b038581166024830152825193945060009390871692632424be5c9260448082019391829003018186803b1580156149e857600080fd5b505afa1580156149fc573d6000803e3d6000fd5b505050506040513d6040811015614a1257600080fd5b50602001519050614a2a878461434687828088614e4b565b614a448987614a38886144a9565b6000038460000361240f565b614a5089873088611178565b6040805163ef693bed60e01b81523060048201526024810187905290516001600160a01b038a169163ef693bed91604480830192600092919082900301818387803b158015614a9e57600080fd5b505af1158015614ab2573d6000803e3d6000fd5b50505050876001600160a01b0316637bd2bea76040518163ffffffff1660e01b8152600401602060405180830381600087803b158015614af157600080fd5b505af1158015614b05573d6000803e3d6000fd5b505050506040513d6020811015614b1b57600080fd5b505160408051632e1a7d4d60e01b81526004810188905290516001600160a01b0390921691632e1a7d4d9160248082019260009290919082900301818387803b158015614b6757600080fd5b505af1158015614b7b573d6000803e3d6000fd5b505060405133925087156108fc02915087906000818181858888f19350505050158015614bac573d6000803e3d6000fd5b50505050505050505050565b6000856001600160a01b03166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b158015614bf357600080fd5b505afa158015614c07573d6000803e3d6000fd5b505050506040513d6020811015614c1d57600080fd5b505160408051632726b07360e01b81526004810186905290519192506000916001600160a01b03891691632726b073916024808301926020929190829003018186803b158015614c6c57600080fd5b505afa158015614c80573d6000803e3d6000fd5b505050506040513d6020811015614c9657600080fd5b505160408051632c2cb9fd60e01b81526004810187905290519192506000916001600160a01b038a1691632c2cb9fd916024808301926020929190829003018186803b158015614ce557600080fd5b505afa158015614cf9573d6000803e3d6000fd5b505050506040513d6020811015614d0f57600080fd5b5051604080516309092f9760e21b8152600481018390526001600160a01b038581166024830152825193945060009390871692632424be5c9260448082019391829003018186803b158015614d6357600080fd5b505afa158015614d77573d6000803e3d6000fd5b505050506040513d6040811015614d8d57600080fd5b50602001519050614da5878461434687828088614e4b565b6000614db1898761468e565b9050614dcd8a88614dc1846144a9565b6000038560000361240f565b614dd98a883084611178565b6040805163ef693bed60e01b81523360048201526024810188905290516001600160a01b038b169163ef693bed91604480830192600092919082900301818387803b158015614e2757600080fd5b505af1158015614e3b573d6000803e3d6000fd5b5050505050505050505050505050565b600080856001600160a01b031663d9638d36846040518263ffffffff1660e01b81526004018082815260200191505060a06040518083038186803b158015614e9257600080fd5b505afa158015614ea6573d6000803e3d6000fd5b505050506040513d60a0811015614ebc57600080fd5b5060200151604080516309092f9760e21b8152600481018690526001600160a01b0387811660248301528251939450600093908a1692632424be5c9260448082019391829003018186803b158015614f1357600080fd5b505afa158015614f27573d6000803e3d6000fd5b505050506040513d6040811015614f3d57600080fd5b5060209081015160408051633612d9a360e11b81526001600160a01b038a811660048301529151929450600093918b1692636c25b34692602480840193919291829003018186803b158015614f9157600080fd5b505afa158015614fa5573d6000803e3d6000fd5b505050506040513d6020811015614fbb57600080fd5b505190506000614fd4614fce8486615019565b83615074565b9050676765c793fa10079d601b1b8104945080614ffc86676765c793fa10079d601b1b615019565b10615007578461500c565b846001015b9998505050505050505050565b60008115806150345750508082028282828161503157fe5b04145b614688576040805162461bcd60e51b815260206004820152600c60248201526b6d756c2d6f766572666c6f7760a01b604482015290519081900360640190fd5b80820382811115614688576040805162461bcd60e51b815260206004820152600c60248201526b7375622d6f766572666c6f7760a01b604482015290519081900360640190fdfea265627a7a7231582030fd3ab47a531378409a56b8e389fa6ab00acb940d5d4f9f1a32acc657055f7164736f6c63430005100032

Deployed Bytecode

0x60806040526004361061027d5760003560e01c806396e8d72c1161014f578063c0791710116100c1578063e685cc041161007a578063e685cc0414610e11578063ead6472914610e5d578063eb0b9a8514610eb4578063ee28457614610ef7578063fba7591d14610f33578063fc784ea714610f825761027d565b8063c079171014610c00578063c56167c614610c82578063cbd4be3f14610cc5578063d8467e3114610d2d578063db802a3214610d73578063e205c10814610ddb5761027d565b8063a6add01111610113578063a6add01114610a42578063b50a586914610a97578063ba727a9514610ad2578063bcd6deec14610b19578063be5e6c0314610b68578063beabacc814610bbd5761027d565b806396e8d72c146108fc5780639f6f3d5b146109415780639f887fde14610990578063a028a55e146109cb578063a033df1214610a145761027d565b80634592aca7116101f35780636ab6a491116101ac5780636ab6a491146107555780636d68b70b1461079e57806374b49dc4146107ed5780637b5a3b43146108295780637bc3bd53146108725780637df2eb25146108b15761027d565b80634592aca714610597578063493c2049146105da5780634b66619914610623578063508629ea1461066c5780635f6ef447146106cf5780636aa3ee11146107125761027d565b80631d10f231116102455780631d10f231146103ec5780632555bac31461042f57806325cf37d0146104655780632958f8a5146104ac5780633e29e565146104fd57806342dd11bb1461054e5761027d565b8063036a23951461028257806308f00e34146102c75780630aee8dec146103105780631558b048146103595780631c02d846146103a0575b600080fd5b34801561028e57600080fd5b506102c5600480360360608110156102a557600080fd5b506001600160a01b03813581169160208101359091169060400135610fd3565b005b3480156102d357600080fd5b506102c5600480360360808110156102ea57600080fd5b506001600160a01b03813581169160208101359091169060408101359060600135610fed565b34801561031c57600080fd5b506102c56004803603608081101561033357600080fd5b506001600160a01b0381358116916020810135821691604082013591606001351661115c565b34801561036557600080fd5b506102c56004803603608081101561037c57600080fd5b506001600160a01b0381358116916020810135916040820135169060600135611178565b6102c5600480360360c08110156103b657600080fd5b506001600160a01b0381358116916020810135821691604082013581169160608101359091169060808101359060a001356111ef565b3480156103f857600080fd5b506102c56004803603606081101561040f57600080fd5b506001600160a01b038135811691602081013591604090910135166114ee565b6102c56004803603606081101561044557600080fd5b506001600160a01b0381358116916020810135909116906040013561156b565b34801561047157600080fd5b506102c56004803603608081101561048857600080fd5b506001600160a01b03813581169160208101359160408201351690606001356115fe565b3480156104b857600080fd5b506102c5600480360360a08110156104cf57600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160809091013516611657565b34801561050957600080fd5b506102c5600480360360a081101561052057600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060800135151561172a565b34801561055a57600080fd5b506102c56004803603608081101561057157600080fd5b506001600160a01b0381358116916020810135909116906040810135906060013561192a565b3480156105a357600080fd5b506102c5600480360360608110156105ba57600080fd5b506001600160a01b0381358116916020810135916040909101351661198d565b3480156105e657600080fd5b506102c5600480360360808110156105fd57600080fd5b506001600160a01b038135811691602081013582169160408201359160600135166119ed565b34801561062f57600080fd5b506102c56004803603608081101561064657600080fd5b506001600160a01b03813581169160208101359091169060408101359060600135611be0565b34801561067857600080fd5b506106bd600480360360a081101561068f57600080fd5b506001600160a01b038135811691602081013590911690604081013590606081013590608001351515611fe0565b60408051918252519081900360200190f35b3480156106db57600080fd5b506102c5600480360360608110156106f257600080fd5b506001600160a01b03813581169160208101359091169060400135612005565b34801561071e57600080fd5b506106bd6004803603606081101561073557600080fd5b506001600160a01b03813581169160208101359160409091013516612065565b34801561076157600080fd5b506102c56004803603608081101561077857600080fd5b506001600160a01b038135811691602081013590911690604081013590606001356120ec565b3480156107aa57600080fd5b506102c5600480360360a08110156107c157600080fd5b506001600160a01b0381358116916020810135821691604082013516906060810135906080013561216c565b6106bd6004803603608081101561080357600080fd5b506001600160a01b03813581169160208101359091169060408101359060600135612183565b34801561083557600080fd5b506102c56004803603608081101561084c57600080fd5b506001600160a01b038135811691602081013590911690604081013590606001356121a6565b34801561087e57600080fd5b506102c56004803603606081101561089557600080fd5b506001600160a01b0381351690602081013590604001356121b4565b3480156108bd57600080fd5b506102c5600480360360808110156108d457600080fd5b506001600160a01b038135811691602081013590911690604081013590606001351515612202565b34801561090857600080fd5b506102c56004803603608081101561091f57600080fd5b506001600160a01b03813516906020810135906040810135906060013561240f565b34801561094d57600080fd5b506102c5600480360360a081101561096457600080fd5b506001600160a01b03813581169160208101358216916040820135169060608101359060800135612465565b34801561099c57600080fd5b506102c5600480360360408110156109b357600080fd5b506001600160a01b0381358116916020013516612726565b3480156109d757600080fd5b506102c5600480360360808110156109ee57600080fd5b506001600160a01b0381358116916020810135909116906040810135906060013561279a565b6102c560048036036040811015610a2a57600080fd5b506001600160a01b0381358116916020013516612a16565b348015610a4e57600080fd5b506102c5600480360360c0811015610a6557600080fd5b506001600160a01b03813581169160208101358216916040820135169060608101359060808101359060a00135612bfb565b348015610aa357600080fd5b506102c560048036036040811015610aba57600080fd5b506001600160a01b0381358116916020013516612eca565b348015610ade57600080fd5b506102c560048036036080811015610af557600080fd5b506001600160a01b0381358116916020810135916040820135169060600135612f22565b348015610b2557600080fd5b506102c5600480360360a0811015610b3c57600080fd5b506001600160a01b03813581169160208101358216916040820135169060608101359060800135612f7b565b348015610b7457600080fd5b506102c5600480360360c0811015610b8b57600080fd5b506001600160a01b03813581169160208101358216916040820135169060608101359060808101359060a00135612f92565b348015610bc957600080fd5b506102c560048036036060811015610be057600080fd5b506001600160a01b03813581169160208101359091169060400135613328565b348015610c0c57600080fd5b50610c5f600480360360e0811015610c2357600080fd5b506001600160a01b0381358116916020810135821691604082013581169160608101359091169060808101359060a08101359060c00135613388565b604080516001600160a01b03909316835260208301919091528051918290030190f35b348015610c8e57600080fd5b506102c560048036036060811015610ca557600080fd5b506001600160a01b0381358116916020810135909116906040013561350b565b348015610cd157600080fd5b506102c56004803603610100811015610ce957600080fd5b506001600160a01b0381358116916020810135821691604082013581169160608101359091169060808101359060a08101359060c08101359060e001351515613711565b6106bd600480360360a0811015610d4357600080fd5b506001600160a01b0381358116916020810135821691604082013581169160608101359160809091013516613a0e565b348015610d7f57600080fd5b506106bd6004803603610100811015610d9757600080fd5b506001600160a01b0381358116916020810135821691604082013581169160608101359091169060808101359060a08101359060c08101359060e001351515613a34565b6102c560048036036060811015610df157600080fd5b506001600160a01b03813581169160208101359091169060400135613a5f565b6106bd600480360360c0811015610e2757600080fd5b506001600160a01b0381358116916020810135821691604082013581169160608101359091169060808101359060a00135613c35565b348015610e6957600080fd5b506102c5600480360360c0811015610e8057600080fd5b506001600160a01b0381358116916020810135821691604082013591606081013591608082013515159160a0013516613c5c565b348015610ec057600080fd5b506102c560048036036060811015610ed757600080fd5b506001600160a01b03813581169160208101359091169060400135613d30565b6102c560048036036080811015610f0d57600080fd5b506001600160a01b03813581169160208101358216916040820135916060013516613d90565b348015610f3f57600080fd5b50610f6660048036036020811015610f5657600080fd5b50356001600160a01b0316613e62565b604080516001600160a01b039092168252519081900360200190f35b348015610f8e57600080fd5b506102c5600480360360a0811015610fa557600080fd5b506001600160a01b038135811691602081013590911690604081013590606081013590608001351515613edf565b610fdd8382613f71565b610fe8838383614043565b505050565b610ff984833084611178565b6040805163ef693bed60e01b81523060048201526024810183905290516001600160a01b0385169163ef693bed91604480830192600092919082900301818387803b15801561104757600080fd5b505af115801561105b573d6000803e3d6000fd5b50505050826001600160a01b0316637bd2bea76040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561109a57600080fd5b505af11580156110ae573d6000803e3d6000fd5b505050506040513d60208110156110c457600080fd5b505160408051632e1a7d4d60e01b81526004810184905290516001600160a01b0390921691632e1a7d4d9160248082019260009290919082900301818387803b15801561111057600080fd5b505af1158015611124573d6000803e3d6000fd5b505060405133925083156108fc02915083906000818181858888f19350505050158015611155573d6000803e3d6000fd5b5050505050565b6111668483613f71565b611172848484846143d7565b50505050565b604080516313771f0760e31b8152600481018590526001600160a01b03848116602483015260448201849052915191861691639bb8f8389160648082019260009290919082900301818387803b1580156111d157600080fd5b505af11580156111e5573d6000803e3d6000fd5b5050505050505050565b6000866001600160a01b0316632726b073846040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561123557600080fd5b505afa158015611249573d6000803e3d6000fd5b505050506040513d602081101561125f57600080fd5b5051604080516336569e7760e01b815290519192506000916001600160a01b038a16916336569e77916004808301926020929190829003018186803b1580156112a757600080fd5b505afa1580156112bb573d6000803e3d6000fd5b505050506040513d60208110156112d157600080fd5b505160408051632c2cb9fd60e01b81526004810187905290519192506000916001600160a01b038b1691632c2cb9fd916024808301926020929190829003018186803b15801561132057600080fd5b505afa158015611334573d6000803e3d6000fd5b505050506040513d602081101561134a57600080fd5b505190506113588784612a16565b6113788986611366346144a9565b611373868d89888c6144f4565b61240f565b61138c89863061138788614671565b6115fe565b60408051634538c4eb60e01b81523060048201526001600160a01b038881166024830152915191841691634538c4eb91604480820192602092909190829003018186803b1580156113dc57600080fd5b505afa1580156113f0573d6000803e3d6000fd5b505050506040513d602081101561140657600080fd5b505161147d57816001600160a01b031663a3b22fc4876040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050600060405180830381600087803b15801561146457600080fd5b505af1158015611478573d6000803e3d6000fd5b505050505b6040805163ef693bed60e01b81523360048201526024810186905290516001600160a01b0388169163ef693bed91604480830192600092919082900301818387803b1580156114cb57600080fd5b505af11580156114df573d6000803e3d6000fd5b50505050505050505050505050565b826001600160a01b031663fcafcc6883836040518363ffffffff1660e01b815260040180838152602001826001600160a01b03166001600160a01b0316815260200192505050600060405180830381600087803b15801561154e57600080fd5b505af1158015611562573d6000803e3d6000fd5b50505050505050565b6000836001600160a01b0316632726b073836040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156115b157600080fd5b505afa1580156115c5573d6000803e3d6000fd5b505050506040513d60208110156115db57600080fd5b505190506115e98382612a16565b61117284836115f7346144a9565b600061240f565b60408051637cf986db60e11b8152600481018590526001600160a01b0384811660248301526044820184905291519186169163f9f30db69160648082019260009290919082900301818387803b1580156111d157600080fd5b806001600160a01b0316856001600160a01b0316638161b120856040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156116a557600080fd5b505afa1580156116b9573d6000803e3d6000fd5b505050506040513d60208110156116cf57600080fd5b50516001600160a01b03161461171e576040805162461bcd60e51b815260206004820152600f60248201526e0deeedccae45adad2e6e6dac2e8c6d608b1b604482015290519081900360640190fd5b61115585858585611be0565b61173684308484612202565b846001600160a01b03166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b15801561176f57600080fd5b505afa158015611783573d6000803e3d6000fd5b505050506040513d602081101561179957600080fd5b505160408051632c2cb9fd60e01b81526004810186905290516001600160a01b039283169263760887039290891691632c2cb9fd91602480820192602092909190829003018186803b1580156117ee57600080fd5b505afa158015611802573d6000803e3d6000fd5b505050506040513d602081101561181857600080fd5b505160408051632726b07360e01b81526004810188905290516001600160a01b038a1691632726b073916024808301926020929190829003018186803b15801561186157600080fd5b505afa158015611875573d6000803e3d6000fd5b505050506040513d602081101561188b57600080fd5b505130806118a161189c8b8a61468e565b6144a9565b604080516001600160e01b031960e089901b16815260048101969096526001600160a01b0394851660248701529284166044860152921660648401526084830191909152600060a48301819052905160c48084019382900301818387803b15801561190b57600080fd5b505af115801561191f573d6000803e3d6000fd5b505050505050505050565b61193f84833061193a878661468e565b611178565b6040805163ef693bed60e01b81523360048201526024810183905290516001600160a01b0385169163ef693bed91604480830192600092919082900301818387803b1580156111d157600080fd5b826001600160a01b0316631b0dbf7283836040518363ffffffff1660e01b815260040180838152602001826001600160a01b03166001600160a01b0316815260200192505050600060405180830381600087803b15801561154e57600080fd5b6000846001600160a01b031663c4552791836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015611a4557600080fd5b505afa158015611a59573d6000803e3d6000fd5b505050506040513d6020811015611a6f57600080fd5b505190506001600160a01b0381161580611aff5750816001600160a01b0316816001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015611ac757600080fd5b505afa158015611adb573d6000803e3d6000fd5b505050506040513d6020811015611af157600080fd5b50516001600160a01b031614155b15611bd557813b8015611b4d576040805162461bcd60e51b8152602060048201526011602482015270111cdd0b5a5ccb584b58dbdb9d1c9858dd607a1b604482015290519081900360640190fd5b856001600160a01b031663f3701da2846040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050602060405180830381600087803b158015611ba557600080fd5b505af1158015611bb9573d6000803e3d6000fd5b505050506040513d6020811015611bcf57600080fd5b50519150505b6111558484836114ee565b6000846001600160a01b03166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b158015611c1b57600080fd5b505afa158015611c2f573d6000803e3d6000fd5b505050506040513d6020811015611c4557600080fd5b505160408051632726b07360e01b81526004810186905290519192506000916001600160a01b03881691632726b073916024808301926020929190829003018186803b158015611c9457600080fd5b505afa158015611ca8573d6000803e3d6000fd5b505050506040513d6020811015611cbe57600080fd5b505160408051632c2cb9fd60e01b81526004810187905290519192506000916001600160a01b03891691632c2cb9fd916024808301926020929190829003018186803b158015611d0d57600080fd5b505afa158015611d21573d6000803e3d6000fd5b505050506040513d6020811015611d3757600080fd5b50516040805163040b0d8960e51b81526004810188905290519192506000916001600160a01b038a1691638161b120916024808301926020929190829003018186803b158015611d8657600080fd5b505afa158015611d9a573d6000803e3d6000fd5b505050506040513d6020811015611db057600080fd5b505190506001600160a01b038116301480611e4d5750604080516302d75da360e51b81526001600160a01b038381166004830152602482018990523060448301529151918a1691635aebb46091606480820192602092909190829003018186803b158015611e1d57600080fd5b505afa158015611e31573d6000803e3d6000fd5b505050506040513d6020811015611e4757600080fd5b50516001145b15611ef657611e5d87848761350b565b611ef18887600061137388896001600160a01b0316636c25b3468a6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015611ebe57600080fd5b505afa158015611ed2573d6000803e3d6000fd5b505050506040513d6020811015611ee857600080fd5b5051898961470d565b6111e5565b611f0187308761350b565b836001600160a01b03166376088703838530306000611f2f8b676765c793fa10079d601b1b8e028c8c61470d565b6040518763ffffffff1660e01b815260040180878152602001866001600160a01b03166001600160a01b03168152602001856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b031681526020018381526020018281526020019650505050505050600060405180830381600087803b158015611fbe57600080fd5b505af1158015611fd2573d6000803e3d6000fd5b505050505050505050505050565b6000611fed868530612065565b9050611ffc8686838686613edf565b95945050505050565b826001600160a01b031663b68f400483836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561154e57600080fd5b60408051636090dec560e01b8152600481018490526001600160a01b0383811660248301529151600092861691636090dec591604480830192602092919082900301818787803b1580156120b857600080fd5b505af11580156120cc573d6000803e3d6000fd5b505050506040513d60208110156120e257600080fd5b5051949350505050565b60006120f8848361468e565b90506121128584612108846144a9565b600003600061240f565b61211e85843084611178565b6040805163ef693bed60e01b81523360048201526024810184905290516001600160a01b0386169163ef693bed91604480830192600092919082900301818387803b15801561190b57600080fd5b6121768583613f71565b611155858585858561483d565b6000612190848330612065565b905061219e8585858461279a565b949350505050565b610fed8483612108846144a9565b826001600160a01b031663e50322a283836040518363ffffffff1660e01b81526004018083815260200182815260200192505050600060405180830381600087803b15801561154e57600080fd5b80156123af57836001600160a01b0316637bd2bea76040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561224357600080fd5b505af1158015612257573d6000803e3d6000fd5b505050506040513d602081101561226d57600080fd5b5051604080516323b872dd60e01b81523360048201523060248201526044810185905290516001600160a01b03909216916323b872dd9160648082019260009290919082900301818387803b1580156122c557600080fd5b505af11580156122d9573d6000803e3d6000fd5b50505050836001600160a01b0316637bd2bea76040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561231857600080fd5b505af115801561232c573d6000803e3d6000fd5b505050506040513d602081101561234257600080fd5b50516040805163095ea7b360e01b81526001600160a01b038781166004830152602482018690529151919092169163095ea7b391604480830192600092919082900301818387803b15801561239657600080fd5b505af11580156123aa573d6000803e3d6000fd5b505050505b836001600160a01b0316633b4da69f84846040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156111d157600080fd5b836001600160a01b03166345e6bdcd8484846040518463ffffffff1660e01b8152600401808481526020018381526020018281526020019350505050600060405180830381600087803b1580156111d157600080fd5b6000856001600160a01b0316632726b073846040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156124ab57600080fd5b505afa1580156124bf573d6000803e3d6000fd5b505050506040513d60208110156124d557600080fd5b5051604080516336569e7760e01b815290519192506000916001600160a01b038916916336569e77916004808301926020929190829003018186803b15801561251d57600080fd5b505afa158015612531573d6000803e3d6000fd5b505050506040513d602081101561254757600080fd5b505160408051632c2cb9fd60e01b81526004810187905290519192506000916001600160a01b038a1691632c2cb9fd916024808301926020929190829003018186803b15801561259657600080fd5b505afa1580156125aa573d6000803e3d6000fd5b505050506040513d60208110156125c057600080fd5b505190506125d888866000611373868c89888c6144f4565b6125e788863061138788614671565b60408051634538c4eb60e01b81523060048201526001600160a01b038881166024830152915191841691634538c4eb91604480820192602092909190829003018186803b15801561263757600080fd5b505afa15801561264b573d6000803e3d6000fd5b505050506040513d602081101561266157600080fd5b50516126d857816001600160a01b031663a3b22fc4876040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050600060405180830381600087803b1580156126bf57600080fd5b505af11580156126d3573d6000803e3d6000fd5b505050505b6040805163ef693bed60e01b81523360048201526024810186905290516001600160a01b0388169163ef693bed91604480830192600092919082900301818387803b158015611fbe57600080fd5b816001600160a01b031663dc4d20fa826040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050600060405180830381600087803b15801561277e57600080fd5b505af1158015612792573d6000803e3d6000fd5b505050505050565b6000846001600160a01b03166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b1580156127d557600080fd5b505afa1580156127e9573d6000803e3d6000fd5b505050506040513d60208110156127ff57600080fd5b5051604080516336569e7760e01b815290519192506001600160a01b038616916336569e7791600480820192602092909190829003018186803b15801561284557600080fd5b505afa158015612859573d6000803e3d6000fd5b505050506040513d602081101561286f57600080fd5b50516001600160a01b038281169116146128bf576040805162461bcd60e51b815260206004820152600c60248201526b0ecc2e85adad2e6dac2e8c6d60a31b604482015290519081900360640190fd5b60408051634538c4eb60e01b81523060048201526001600160a01b0387811660248301529151600092841691634538c4eb916044808301926020929190829003018186803b15801561291057600080fd5b505afa158015612924573d6000803e3d6000fd5b505050506040513d602081101561293a57600080fd5b505160408051634538c4eb60e01b81523060048201526001600160a01b0388811660248301529151921515935060009291851691634538c4eb91604480820192602092909190829003018186803b15801561299457600080fd5b505afa1580156129a8573d6000803e3d6000fd5b505050506040513d60208110156129be57600080fd5b505115159050816129d3576129d38388612eca565b806129e2576129e28387612eca565b6129ed87863061198d565b6129f8863086613d30565b81612a0757612a078388612726565b80611562576115628387612726565b816001600160a01b0316637bd2bea76040518163ffffffff1660e01b8152600401602060405180830381600087803b158015612a5157600080fd5b505af1158015612a65573d6000803e3d6000fd5b505050506040513d6020811015612a7b57600080fd5b505160408051630d0e30db60e41b815290516001600160a01b039092169163d0e30db0913491600480830192600092919082900301818588803b158015612ac157600080fd5b505af1158015612ad5573d6000803e3d6000fd5b5050505050816001600160a01b0316637bd2bea76040518163ffffffff1660e01b8152600401602060405180830381600087803b158015612b1557600080fd5b505af1158015612b29573d6000803e3d6000fd5b505050506040513d6020811015612b3f57600080fd5b50516040805163095ea7b360e01b81526001600160a01b0385811660048301523460248301529151919092169163095ea7b391604480830192600092919082900301818387803b158015612b9257600080fd5b505af1158015612ba6573d6000803e3d6000fd5b505060408051633b4da69f60e01b81526001600160a01b03858116600483015234602483015291519186169350633b4da69f925060448082019260009290919082900301818387803b15801561277e57600080fd5b6000866001600160a01b0316632726b073856040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015612c4157600080fd5b505afa158015612c55573d6000803e3d6000fd5b505050506040513d6020811015612c6b57600080fd5b50519050612c7a85828461350b565b6000612c86878561468e565b9050612e708886612c96846144a9565b6000036113738c6001600160a01b03166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b158015612cd557600080fd5b505afa158015612ce9573d6000803e3d6000fd5b505050506040513d6020811015612cff57600080fd5b81019080805190602001909291905050508d6001600160a01b03166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b158015612d4957600080fd5b505afa158015612d5d573d6000803e3d6000fd5b505050506040513d6020811015612d7357600080fd5b505160408051633612d9a360e11b81526001600160a01b038b8116600483015291519190921691636c25b346916024808301926020929190829003018186803b158015612dbf57600080fd5b505afa158015612dd3573d6000803e3d6000fd5b505050506040513d6020811015612de957600080fd5b8101908080519060200190929190505050888f6001600160a01b0316632c2cb9fd8e6040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015612e3f57600080fd5b505afa158015612e53573d6000803e3d6000fd5b505050506040513d6020811015612e6957600080fd5b505161470d565b612e7c88863084611178565b6040805163ef693bed60e01b81523360048201526024810186905290516001600160a01b0389169163ef693bed91604480830192600092919082900301818387803b158015611fbe57600080fd5b816001600160a01b031663a3b22fc4826040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050600060405180830381600087803b15801561277e57600080fd5b604080516305b1fdb160e11b8152600481018590526001600160a01b03848116602483015260448201849052915191861691630b63fb629160648082019260009290919082900301818387803b1580156111d157600080fd5b612f858583613f71565b6111558585858585614bb8565b6000866001600160a01b0316632726b073856040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015612fd857600080fd5b505afa158015612fec573d6000803e3d6000fd5b505050506040513d602081101561300257600080fd5b5051905061301185828461350b565b6131c0878561301f866144a9565b6000036113738b6001600160a01b03166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b15801561305e57600080fd5b505afa158015613072573d6000803e3d6000fd5b505050506040513d602081101561308857600080fd5b5051604080516336569e7760e01b815290516001600160a01b038f16916336569e77916004808301926020929190829003018186803b1580156130ca57600080fd5b505afa1580156130de573d6000803e3d6000fd5b505050506040513d60208110156130f457600080fd5b505160408051633612d9a360e11b81526001600160a01b038a8116600483015291519190921691636c25b346916024808301926020929190829003018186803b15801561314057600080fd5b505afa158015613154573d6000803e3d6000fd5b505050506040513d602081101561316a57600080fd5b8101908080519060200190929190505050878e6001600160a01b0316632c2cb9fd8d6040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015612e3f57600080fd5b6131cc87853086611178565b6040805163ef693bed60e01b81523060048201526024810185905290516001600160a01b0388169163ef693bed91604480830192600092919082900301818387803b15801561321a57600080fd5b505af115801561322e573d6000803e3d6000fd5b50505050856001600160a01b0316637bd2bea76040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561326d57600080fd5b505af1158015613281573d6000803e3d6000fd5b505050506040513d602081101561329757600080fd5b505160408051632e1a7d4d60e01b81526004810186905290516001600160a01b0390921691632e1a7d4d9160248082019260009290919082900301818387803b1580156132e357600080fd5b505af11580156132f7573d6000803e3d6000fd5b505060405133925085156108fc02915085906000818181858888f193505050501580156111e5573d6000803e3d6000fd5b826001600160a01b031663a9059cbb83836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561154e57600080fd5b60408051638c4c280160e01b8152306004820152905160009182916001600160a01b03891691638c4c2801916024808301926020929190829003018186803b1580156133d357600080fd5b505afa1580156133e7573d6000803e3d6000fd5b505050506040513d60208110156133fd57600080fd5b505191506001600160a01b03821661341b5761341887613e62565b91505b866001600160a01b0316637bd2bea76040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561345657600080fd5b505af115801561346a573d6000803e3d6000fd5b505050506040513d602081101561348057600080fd5b50516040805163a9059cbb60e01b81526001600160a01b038581166004830152602482018890529151919092169163a9059cbb91604480830192600092919082900301818387803b1580156134d457600080fd5b505af11580156134e8573d6000803e3d6000fd5b505050506134fd898989898989896000613a34565b905097509795505050505050565b826001600160a01b031663f4b9fa756040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561354657600080fd5b505af115801561355a573d6000803e3d6000fd5b505050506040513d602081101561357057600080fd5b5051604080516323b872dd60e01b81523360048201523060248201526044810184905290516001600160a01b03909216916323b872dd9160648082019260009290919082900301818387803b1580156135c857600080fd5b505af11580156135dc573d6000803e3d6000fd5b50505050826001600160a01b031663f4b9fa756040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561361b57600080fd5b505af115801561362f573d6000803e3d6000fd5b505050506040513d602081101561364557600080fd5b50516040805163095ea7b360e01b81526001600160a01b038681166004830152602482018590529151919092169163095ea7b391604480830192600092919082900301818387803b15801561369957600080fd5b505af11580156136ad573d6000803e3d6000fd5b50505050826001600160a01b0316633b4da69f83836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561154e57600080fd5b6000886001600160a01b0316632726b073866040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561375757600080fd5b505afa15801561376b573d6000803e3d6000fd5b505050506040513d602081101561378157600080fd5b5051604080516336569e7760e01b815290519192506000916001600160a01b038c16916336569e77916004808301926020929190829003018186803b1580156137c957600080fd5b505afa1580156137dd573d6000803e3d6000fd5b505050506040513d60208110156137f357600080fd5b505160408051632c2cb9fd60e01b81526004810189905290519192506000916001600160a01b038d1691632c2cb9fd916024808301926020929190829003018186803b15801561384257600080fd5b505afa158015613856573d6000803e3d6000fd5b505050506040513d602081101561386c57600080fd5b5051905061387c89848887612202565b61389b8b8861388e61189c8d8b61468e565b611373868f89888d6144f4565b6138aa8b883061138789614671565b60408051634538c4eb60e01b81523060048201526001600160a01b038a81166024830152915191841691634538c4eb91604480820192602092909190829003018186803b1580156138fa57600080fd5b505afa15801561390e573d6000803e3d6000fd5b505050506040513d602081101561392457600080fd5b505161399b57816001600160a01b031663a3b22fc4896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050600060405180830381600087803b15801561398257600080fd5b505af1158015613996573d6000803e3d6000fd5b505050505b6040805163ef693bed60e01b81523360048201526024810187905290516001600160a01b038a169163ef693bed91604480830192600092919082900301818387803b1580156139e957600080fd5b505af11580156139fd573d6000803e3d6000fd5b505050505050505050505050505050565b6000613a1b858430612065565b9050613a2885858361156b565b611ffc868683856119ed565b6000613a41898630612065565b9050613a538989898985898989613711565b98975050505050505050565b613a698230612a16565b826001600160a01b03166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b158015613aa257600080fd5b505afa158015613ab6573d6000803e3d6000fd5b505050506040513d6020811015613acc57600080fd5b505160408051632c2cb9fd60e01b81526004810184905290516001600160a01b039283169263760887039290871691632c2cb9fd91602480820192602092909190829003018186803b158015613b2157600080fd5b505afa158015613b35573d6000803e3d6000fd5b505050506040513d6020811015613b4b57600080fd5b505160408051632726b07360e01b81526004810186905290516001600160a01b03881691632726b073916024808301926020929190829003018186803b158015613b9457600080fd5b505afa158015613ba8573d6000803e3d6000fd5b505050506040513d6020811015613bbe57600080fd5b50513080613bcb346144a9565b604080516001600160e01b031960e089901b16815260048101969096526001600160a01b0394851660248701529284166044860152921660648401526084830191909152600060a48301819052905160c48084019382900301818387803b15801561154e57600080fd5b6000613c42878430612065565b9050613c528787878785876111ef565b9695505050505050565b806001600160a01b0316866001600160a01b0316638161b120866040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015613caa57600080fd5b505afa158015613cbe573d6000803e3d6000fd5b505050506040513d6020811015613cd457600080fd5b50516001600160a01b031614613d23576040805162461bcd60e51b815260206004820152600f60248201526e0deeedccae45adad2e6e6dac2e8c6d608b1b604482015290519081900360640190fd5b612792868686868661172a565b826001600160a01b0316637e348b7d83836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561154e57600080fd5b806001600160a01b0316846001600160a01b0316638161b120846040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015613dde57600080fd5b505afa158015613df2573d6000803e3d6000fd5b505050506040513d6020811015613e0857600080fd5b50516001600160a01b031614613e57576040805162461bcd60e51b815260206004820152600f60248201526e0deeedccae45adad2e6e6dac2e8c6d608b1b604482015290519081900360640190fd5b611172848484613a5f565b60408051631060930d60e01b815230600482015290516000916001600160a01b03841691631060930d9160248082019260209290919082900301818787803b158015613ead57600080fd5b505af1158015613ec1573d6000803e3d6000fd5b505050506040513d6020811015613ed757600080fd5b505192915050565b6000856001600160a01b0316632726b073856040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015613f2557600080fd5b505afa158015613f39573d6000803e3d6000fd5b505050506040513d6020811015613f4f57600080fd5b50519050613f5f85828585612202565b61279286856115f761189c898861468e565b6000826001600160a01b03166310b89f30836040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b158015613fb957600080fd5b505af1158015613fcd573d6000803e3d6000fd5b505050506040513d6020811015613fe357600080fd5b5051111561403f57604080516345e6bdcd60e01b8152600481018390526000602482018190526044820181905291516001600160a01b038516926345e6bdcd926064808201939182900301818387803b15801561277e57600080fd5b5050565b6000836001600160a01b03166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b15801561407e57600080fd5b505afa158015614092573d6000803e3d6000fd5b505050506040513d60208110156140a857600080fd5b505160408051632726b07360e01b81526004810185905290519192506000916001600160a01b03871691632726b073916024808301926020929190829003018186803b1580156140f757600080fd5b505afa15801561410b573d6000803e3d6000fd5b505050506040513d602081101561412157600080fd5b505160408051632c2cb9fd60e01b81526004810186905290519192506000916001600160a01b03881691632c2cb9fd916024808301926020929190829003018186803b15801561417057600080fd5b505afa158015614184573d6000803e3d6000fd5b505050506040513d602081101561419a57600080fd5b5051604080516309092f9760e21b8152600481018390526001600160a01b038581166024830152825193945060009390871692632424be5c9260448082019391829003018186803b1580156141ee57600080fd5b505afa158015614202573d6000803e3d6000fd5b505050506040513d604081101561421857600080fd5b506020908101516040805163040b0d8960e51b81526004810189905290519193506000926001600160a01b038b1692638161b120926024808201939291829003018186803b15801561426957600080fd5b505afa15801561427d573d6000803e3d6000fd5b505050506040513d602081101561429357600080fd5b505190506001600160a01b0381163014806143305750604080516302d75da360e51b81526001600160a01b038381166004830152602482018990523060448301529151918a1691635aebb46091606480820192602092909190829003018186803b15801561430057600080fd5b505afa158015614314573d6000803e3d6000fd5b505050506040513d602081101561432a57600080fd5b50516001145b1561435b5761434b878561434688888989614e4b565b61350b565b611ef1888760008560000361240f565b61436c873061434688308989614e4b565b60408051637608870360e01b8152600481018590526001600160a01b0386811660248301523060448301819052606483015260006084830181905285810360a484015292519088169263760887039260c4808201939182900301818387803b158015611fbe57600080fd5b806001600160a01b0316846001600160a01b0316638161b120846040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561442557600080fd5b505afa158015614439573d6000803e3d6000fd5b505050506040513d602081101561444f57600080fd5b50516001600160a01b03161461449e576040805162461bcd60e51b815260206004820152600f60248201526e0deeedccae45adad2e6e6dac2e8c6d608b1b604482015290519081900360640190fd5b611172848484610fd3565b8060008112156144ef576040805162461bcd60e51b815260206004820152600c60248201526b696e742d6f766572666c6f7760a01b604482015290519081900360640190fd5b919050565b600080856001600160a01b03166344e2a5a8856040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b15801561453d57600080fd5b505af1158015614551573d6000803e3d6000fd5b505050506040513d602081101561456757600080fd5b505160408051633612d9a360e11b81526001600160a01b0388811660048301529151929350600092918a1691636c25b34691602480820192602092909190829003018186803b1580156145b957600080fd5b505afa1580156145cd573d6000803e3d6000fd5b505050506040513d60208110156145e357600080fd5b505190506145fc84676765c793fa10079d601b1b615019565b811015614666576146328261462561461f87676765c793fa10079d601b1b615019565b84615074565b8161462c57fe5b046144a9565b925061464984676765c793fa10079d601b1b615019565b6146538484615019565b1061465e5782614663565b826001015b92505b505095945050505050565b600061468882676765c793fa10079d601b1b615019565b92915050565b600061470682846001600160a01b031663b3bcfa826040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156146cf57600080fd5b505af11580156146e3573d6000803e3d6000fd5b505050506040513d60208110156146f957600080fd5b5051601203600a0a615019565b9392505050565b600080856001600160a01b031663d9638d36846040518263ffffffff1660e01b81526004018082815260200191505060a06040518083038186803b15801561475457600080fd5b505afa158015614768573d6000803e3d6000fd5b505050506040513d60a081101561477e57600080fd5b5060200151604080516309092f9760e21b8152600481018690526001600160a01b0387811660248301528251939450600093908a1692632424be5c9260448082019391829003018186803b1580156147d557600080fd5b505afa1580156147e9573d6000803e3d6000fd5b505050506040513d60408110156147ff57600080fd5b5060200151905061481282878161462c57fe5b92508083111561482d57614825816144a9565b600003614832565b826000035b979650505050505050565b6000856001600160a01b03166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b15801561487857600080fd5b505afa15801561488c573d6000803e3d6000fd5b505050506040513d60208110156148a257600080fd5b505160408051632726b07360e01b81526004810186905290519192506000916001600160a01b03891691632726b073916024808301926020929190829003018186803b1580156148f157600080fd5b505afa158015614905573d6000803e3d6000fd5b505050506040513d602081101561491b57600080fd5b505160408051632c2cb9fd60e01b81526004810187905290519192506000916001600160a01b038a1691632c2cb9fd916024808301926020929190829003018186803b15801561496a57600080fd5b505afa15801561497e573d6000803e3d6000fd5b505050506040513d602081101561499457600080fd5b5051604080516309092f9760e21b8152600481018390526001600160a01b038581166024830152825193945060009390871692632424be5c9260448082019391829003018186803b1580156149e857600080fd5b505afa1580156149fc573d6000803e3d6000fd5b505050506040513d6040811015614a1257600080fd5b50602001519050614a2a878461434687828088614e4b565b614a448987614a38886144a9565b6000038460000361240f565b614a5089873088611178565b6040805163ef693bed60e01b81523060048201526024810187905290516001600160a01b038a169163ef693bed91604480830192600092919082900301818387803b158015614a9e57600080fd5b505af1158015614ab2573d6000803e3d6000fd5b50505050876001600160a01b0316637bd2bea76040518163ffffffff1660e01b8152600401602060405180830381600087803b158015614af157600080fd5b505af1158015614b05573d6000803e3d6000fd5b505050506040513d6020811015614b1b57600080fd5b505160408051632e1a7d4d60e01b81526004810188905290516001600160a01b0390921691632e1a7d4d9160248082019260009290919082900301818387803b158015614b6757600080fd5b505af1158015614b7b573d6000803e3d6000fd5b505060405133925087156108fc02915087906000818181858888f19350505050158015614bac573d6000803e3d6000fd5b50505050505050505050565b6000856001600160a01b03166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b158015614bf357600080fd5b505afa158015614c07573d6000803e3d6000fd5b505050506040513d6020811015614c1d57600080fd5b505160408051632726b07360e01b81526004810186905290519192506000916001600160a01b03891691632726b073916024808301926020929190829003018186803b158015614c6c57600080fd5b505afa158015614c80573d6000803e3d6000fd5b505050506040513d6020811015614c9657600080fd5b505160408051632c2cb9fd60e01b81526004810187905290519192506000916001600160a01b038a1691632c2cb9fd916024808301926020929190829003018186803b158015614ce557600080fd5b505afa158015614cf9573d6000803e3d6000fd5b505050506040513d6020811015614d0f57600080fd5b5051604080516309092f9760e21b8152600481018390526001600160a01b038581166024830152825193945060009390871692632424be5c9260448082019391829003018186803b158015614d6357600080fd5b505afa158015614d77573d6000803e3d6000fd5b505050506040513d6040811015614d8d57600080fd5b50602001519050614da5878461434687828088614e4b565b6000614db1898761468e565b9050614dcd8a88614dc1846144a9565b6000038560000361240f565b614dd98a883084611178565b6040805163ef693bed60e01b81523360048201526024810188905290516001600160a01b038b169163ef693bed91604480830192600092919082900301818387803b158015614e2757600080fd5b505af1158015614e3b573d6000803e3d6000fd5b5050505050505050505050505050565b600080856001600160a01b031663d9638d36846040518263ffffffff1660e01b81526004018082815260200191505060a06040518083038186803b158015614e9257600080fd5b505afa158015614ea6573d6000803e3d6000fd5b505050506040513d60a0811015614ebc57600080fd5b5060200151604080516309092f9760e21b8152600481018690526001600160a01b0387811660248301528251939450600093908a1692632424be5c9260448082019391829003018186803b158015614f1357600080fd5b505afa158015614f27573d6000803e3d6000fd5b505050506040513d6040811015614f3d57600080fd5b5060209081015160408051633612d9a360e11b81526001600160a01b038a811660048301529151929450600093918b1692636c25b34692602480840193919291829003018186803b158015614f9157600080fd5b505afa158015614fa5573d6000803e3d6000fd5b505050506040513d6020811015614fbb57600080fd5b505190506000614fd4614fce8486615019565b83615074565b9050676765c793fa10079d601b1b8104945080614ffc86676765c793fa10079d601b1b615019565b10615007578461500c565b846001015b9998505050505050505050565b60008115806150345750508082028282828161503157fe5b04145b614688576040805162461bcd60e51b815260206004820152600c60248201526b6d756c2d6f766572666c6f7760a01b604482015290519081900360640190fd5b80820382811115614688576040805162461bcd60e51b815260206004820152600c60248201526b7375622d6f766572666c6f7760a01b604482015290519081900360640190fdfea265627a7a7231582030fd3ab47a531378409a56b8e389fa6ab00acb940d5d4f9f1a32acc657055f7164736f6c63430005100032

Deployed Bytecode Sourcemap

32976:3817:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35785:195;;8:9:-1;5:2;;;30:1;27;20:12;5:2;35785:195:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;35785:195:0;;;;;;;;;;;;;;;;;:::i;:::-;;14909:526;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14909:526:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;14909:526:0;;;;;;;;;;;;;;;;;;;;;;:::i;35988:234::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;35988:234:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;35988:234:0;;;;;;;;;;;;;;;;;;;;;;:::i;10828:173::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10828:173:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;10828:173:0;;;;;;;;;;;;;;;;;;;;:::i;19435:1058::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;19435:1058:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;9392:149::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9392:149:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;9392:149:0;;;;;;;;;;;;;;;;;:::i;33744:409::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;33744:409:0;;;;;;;;;;;;;;;;;:::i;11009:173::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11009:173:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;11009:173:0;;;;;;;;;;;;;;;;;;;;:::i;17773:275::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17773:275:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;17773:275:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;12832:611::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12832:611:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;12832:611:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;15443:383::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15443:383:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;15443:383:0;;;;;;;;;;;;;;;;;;;;;;:::i;11370:149::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11370:149:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;11370:149:0;;;;;;;;;;;;;;;;;:::i;9549:921::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9549:921:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;9549:921:0;;;;;;;;;;;;;;;;;;;;;;:::i;16697:1068::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16697:1068:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;16697:1068:0;;;;;;;;;;;;;;;;;;;;;;:::i;35006:301::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;35006:301:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;35006:301:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;10665:155;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10665:155:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;10665:155:0;;;;;;;;;;;;;;;;;:::i;9207:177::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9207:177:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;9207:177:0;;;;;;;;;;;;;;;;;:::i;14404:497::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14404:497:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;14404:497:0;;;;;;;;;;;;;;;;;;;;;;:::i;36230:276::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;36230:276:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;36230:276:0;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;35319:295::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;35319:295:0;;;;;;;;;;;;;;;;;;;;;;:::i;13782:614::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13782:614:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;13782:614:0;;;;;;;;;;;;;;;;;;;;;;:::i;11686:160::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11686:160:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;11686:160:0;;;;;;;;;;;;;:::i;8404:551::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8404:551:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;8404:551:0;;;;;;;;;;;;;;;;;;;;;;;;:::i;11190:172::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11190:172:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;11190:172:0;;;;;;;;;;;;;;;;;;:::i;15834:855::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15834:855:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;15834:855:0;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;9085:114::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9085:114:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;9085:114:0;;;;;;;;;;:::i;33025:711::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;33025:711:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;33025:711:0;;;;;;;;;;;;;;;;;;;;;;:::i;8021:375::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;8021:375:0;;;;;;;;;;:::i;25195:905::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25195:905:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;25195:905:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;8963:114::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8963:114:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;8963:114:0;;;;;;;;;;:::i;10478:179::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10478:179:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;10478:179:0;;;;;;;;;;;;;;;;;;;;:::i;36514:276::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;36514:276:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;36514:276:0;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;23075:1022::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23075:1022:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;23075:1022:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;7902:111::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7902:111:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;7902:111:0;;;;;;;;;;;;;;;;;:::i;22389:678::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22389:678:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;22389:678:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;22389:678:0;;;;;;;;;;;;;;;;;;;;;4442:375;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4442:375:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;4442:375:0;;;;;;;;;;;;;;;;;:::i;20846:1130::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20846:1130:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;20846:1130:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;34638:360::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;34638:360:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;21984:397::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21984:397:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;21984:397:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;12009:542::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;12009:542:0;;;;;;;;;;;;;;;;;:::i;20501:337::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;20501:337:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;13451:323::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13451:323:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;13451:323:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;11527:151::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11527:151:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;11527:151:0;;;;;;;;;;;;;;;;;:::i;12559:265::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;12559:265:0;;;;;;;;;;;;;;;;;;;;;;:::i;11854:147::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11854:147:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11854:147:0;-1:-1:-1;;;;;11854:147:0;;:::i;:::-;;;;-1:-1:-1;;;;;11854:147:0;;;;;;;;;;;;;;34161:465;;8:9:-1;5:2;;;30:1;27;20:12;5:2;34161:465:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;34161:465:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;35785:195::-;35898:27;35912:7;35921:3;35898:13;:27::i;:::-;35936:36;35950:7;35959;35968:3;35936:13;:36::i;:::-;35785:195;;;:::o;14909:526::-;15106:38;15111:7;15120:3;15133:4;15140:3;15106:4;:38::i;:::-;15215:45;;;-1:-1:-1;;;15215:45:0;;15249:4;15215:45;;;;;;;;;;;;-1:-1:-1;;;;;15215:25:0;;;;;:45;;;;;-1:-1:-1;;15215:45:0;;;;;;;-1:-1:-1;15215:25:0;:45;;;5:2:-1;;;;30:1;27;20:12;5:2;15215:45:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15215:45:0;;;;15316:7;-1:-1:-1;;;;;15304:24:0;;:26;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15304:26:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15304:26:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15304:26:0;:40;;;-1:-1:-1;;;15304:40:0;;;;;;;;;;-1:-1:-1;;;;;15304:35:0;;;;;;:40;;;;;-1:-1:-1;;15304:40:0;;;;;;;;-1:-1:-1;15304:35:0;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;15304:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;15403:24:0;;:10;;-1:-1:-1;15403:24:0;;;;;-1:-1:-1;15423:3:0;;15403:24;;;;15423:3;15403:10;:24;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15403:24:0;14909:526;;;;:::o;35988:234::-;36129:27;36143:7;36152:3;36129:13;:27::i;:::-;36167:47;36185:7;36194;36203:3;36208:5;36167:17;:47::i;:::-;35988:234;;;;:::o;10828:173::-;10953:40;;;-1:-1:-1;;;10953:40:0;;;;;;;;-1:-1:-1;;;;;10953:40:0;;;;;;;;;;;;;;;:25;;;;;;:40;;;;;-1:-1:-1;;10953:40:0;;;;;;;;-1:-1:-1;10953:25:0;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;10953:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10953:40:0;;;;10828:173;;;;:::o;19435:1058::-;19631:11;19657:7;-1:-1:-1;;;;;19645:25:0;;19671:3;19645:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19645:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19645:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19645:30:0;19700:26;;;-1:-1:-1;;;19700:26:0;;;;19645:30;;-1:-1:-1;19686:11:0;;-1:-1:-1;;;;;19700:24:0;;;;;:26;;;;;19645:30;;19700:26;;;;;;;:24;:26;;;5:2:-1;;;;30:1;27;20:12;5:2;19700:26:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19700:26:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19700:26:0;19751:30;;;-1:-1:-1;;;19751:30:0;;;;;;;;;;19700:26;;-1:-1:-1;19737:11:0;;-1:-1:-1;;;;;19751:25:0;;;;;:30;;;;;19700:26;;19751:30;;;;;;;:25;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;19751:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19751:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19751:30:0;;-1:-1:-1;19871:26:0;19884:7;19893:3;19871:12;:26::i;:::-;19970:76;19975:7;19984:3;19989:16;19995:9;19989:5;:16::i;:::-;20007:38;20020:3;20025;20030;20035;20040:4;20007:12;:38::i;:::-;19970:4;:76::i;:::-;20137:46;20142:7;20151:3;20164:4;20171:11;20177:4;20171:5;:11::i;:::-;20137:4;:46::i;:::-;20269:49;;;-1:-1:-1;;;20269:49:0;;20294:4;20269:49;;;;-1:-1:-1;;;;;20269:49:0;;;;;;;;;:16;;;;;;:49;;;;;;;;;;;;;;;:16;:49;;;5:2:-1;;;;30:1;27;20:12;5:2;20269:49:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20269:49:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20269:49:0;20265:113;;20348:3;-1:-1:-1;;;;;20340:17:0;;20358:7;20340:26;;;;;;;;;;;;;-1:-1:-1;;;;;20340:26:0;-1:-1:-1;;;;;20340:26:0;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20340:26:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20340:26:0;;;;20265:113;20442:43;;;-1:-1:-1;;;20442:43:0;;20468:10;20442:43;;;;;;;;;;;;-1:-1:-1;;;;;20442:25:0;;;;;:43;;;;;-1:-1:-1;;20442:43:0;;;;;;;-1:-1:-1;20442:25:0;:43;;;5:2:-1;;;;30:1;27;20:12;5:2;20442:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20442:43:0;;;;19435:1058;;;;;;;;;:::o;9392:149::-;9510:7;-1:-1:-1;;;;;9498:25:0;;9524:3;9529;9498:35;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9498:35:0;-1:-1:-1;;;;;9498:35:0;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9498:35:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9498:35:0;;;;9392:149;;;:::o;33744:409::-;33871:11;33897:7;-1:-1:-1;;;;;33885:25:0;;33911:3;33885:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;33885:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;33885:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;33885:30:0;;-1:-1:-1;34007:26:0;34020:7;33885:30;34007:12;:26::i;:::-;34106:39;34111:7;34120:3;34125:16;34131:9;34125:5;:16::i;:::-;34143:1;34106:4;:39::i;11009:173::-;11134:40;;;-1:-1:-1;;;11134:40:0;;;;;;;;-1:-1:-1;;;;;11134:40:0;;;;;;;;;;;;;;;:25;;;;;;:40;;;;;-1:-1:-1;;11134:40:0;;;;;;;;-1:-1:-1;11134:25:0;:40;;;5:2:-1;;;;30:1;27;20:12;17773:275:0;17972:5;-1:-1:-1;;;;;17938:39:0;17950:7;-1:-1:-1;;;;;17938:25:0;;17964:3;17938:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17938:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17938:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17938:30:0;-1:-1:-1;;;;;17938:39:0;;17930:67;;;;;-1:-1:-1;;;17930:67:0;;;;;;;;;;;;-1:-1:-1;;;17930:67:0;;;;;;;;;;;;;;;18008:32;18013:7;18022;18031:3;18036;18008:4;:32::i;12832:611::-;13065:55;13078:7;13095:4;13102:3;13107:12;13065;:55::i;:::-;13195:7;-1:-1:-1;;;;;13183:24:0;;:26;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13183:26:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13183:26:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13183:26:0;13230:30;;;-1:-1:-1;;;13230:30:0;;;;;;;;;;-1:-1:-1;;;;;13175:40:0;;;;;;13230:25;;;;;;:30;;;;;13183:26;;13230:30;;;;;;;;:25;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;13230:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13230:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13230:30:0;13275;;;-1:-1:-1;;;13275:30:0;;;;;;;;;;-1:-1:-1;;;;;13275:25:0;;;;;:30;;;;;13230;;13275;;;;;;;:25;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;13275:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13275:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13275:30:0;13328:4;;13376:32;13382:25;13394:7;13403:3;13382:11;:25::i;:::-;13376:5;:32::i;:::-;13175:260;;;-1:-1:-1;;;;;;13175:260:0;;;;;;;;;;;;;;-1:-1:-1;;;;;13175:260:0;;;;;;;;;;;;;;;;;;;;;;;;;;;13423:1;13175:260;;;;;;;;;;;;;;;;;;13423:1;13175:260;;;;5:2:-1;;;;30:1;27;20:12;5:2;13175:260:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13175:260:0;;;;12832:611;;;;;:::o;15443:383::-;15640:60;15645:7;15654:3;15667:4;15674:25;15686:7;15695:3;15674:11;:25::i;:::-;15640:4;:60::i;:::-;15776:42;;;-1:-1:-1;;;15776:42:0;;15802:10;15776:42;;;;;;;;;;;;-1:-1:-1;;;;;15776:25:0;;;;;:42;;;;;-1:-1:-1;;15776:42:0;;;;;;;-1:-1:-1;15776:25:0;:42;;;5:2:-1;;;;30:1;27;20:12;11370:149:0;11488:7;-1:-1:-1;;;;;11476:25:0;;11502:3;11507;11476:35;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11476:35:0;-1:-1:-1;;;;;11476:35:0;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;9549:921:0;9732:13;9766;-1:-1:-1;;;;;9748:40:0;;9789:3;9748:45;;;;;;;;;;;;;-1:-1:-1;;;;;9748:45:0;-1:-1:-1;;;;;9748:45:0;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9748:45:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9748:45:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9748:45:0;;-1:-1:-1;;;;;;9899:19:0;;;;:54;;;9950:3;-1:-1:-1;;;;;9922:31:0;9932:5;-1:-1:-1;;;;;9922:22:0;;:24;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9922:24:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9922:24:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9922:24:0;-1:-1:-1;;;;;9922:31:0;;;9899:54;9895:489;;;10032:16;;10220:10;;10212:40;;;;;-1:-1:-1;;;10212:40:0;;;;;;;;;;;;-1:-1:-1;;;10212:40:0;;;;;;;;;;;;;;;10347:13;-1:-1:-1;;;;;10329:38:0;;10368:3;10329:43;;;;;;;;;;;;;-1:-1:-1;;;;;10329:43:0;-1:-1:-1;;;;;10329:43:0;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10329:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10329:43:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;10329:43:0;;-1:-1:-1;;9895:489:0;10437:25;10442:7;10451:3;10456:5;10437:4;:25::i;16697:1068::-;16826:11;16852:7;-1:-1:-1;;;;;16840:24:0;;:26;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16840:26:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16840:26:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16840:26:0;16891:30;;;-1:-1:-1;;;16891:30:0;;;;;;;;;;16840:26;;-1:-1:-1;16877:11:0;;-1:-1:-1;;;;;16891:25:0;;;;;:30;;;;;16840:26;;16891:30;;;;;;;:25;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;16891:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16891:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16891:30:0;16946;;;-1:-1:-1;;;16946:30:0;;;;;;;;;;16891;;-1:-1:-1;16932:11:0;;-1:-1:-1;;;;;16946:25:0;;;;;:30;;;;;16891;;16946;;;;;;;:25;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;16946:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16946:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16946:30:0;17003;;;-1:-1:-1;;;17003:30:0;;;;;;;;;;16946;;-1:-1:-1;16989:11:0;;-1:-1:-1;;;;;17003:25:0;;;;;:30;;;;;16946;;17003;;;;;;;:25;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;17003:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17003:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17003:30:0;;-1:-1:-1;;;;;;17048:20:0;;17063:4;17048:20;;:81;;-1:-1:-1;17072:52:0;;;-1:-1:-1;;;17072:52:0;;-1:-1:-1;;;;;17072:52:0;;;;;;;;;;;;;17118:4;17072:52;;;;;;:27;;;;;;:52;;;;;;;;;;;;;;;:27;:52;;;5:2:-1;;;;30:1;27;20:12;5:2;17072:52:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17072:52:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17072:52:0;17128:1;17072:57;17048:81;17044:714;;;17192:31;17205:7;17214:3;17219;17192:12;:31::i;:::-;17279:73;17284:7;17293:3;17298:1;17301:50;17314:3;17327;-1:-1:-1;;;;;17319:16:0;;17336:3;17319:21;;;;;;;;;;;;;-1:-1:-1;;;;;17319:21:0;-1:-1:-1;;;;;17319:21:0;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17319:21:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17319:21:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17319:21:0;17342:3;17347;17301:12;:50::i;17279:73::-;17044:714;;;17432:41;17445:7;17462:4;17469:3;17432:12;:41::i;:::-;17537:3;-1:-1:-1;;;;;17529:17:0;;17565:3;17587;17617:4;17649;17673:1;17693:38;17706:3;-1:-1:-1;;;17711:3:0;:9;17722:3;17727;17693:12;:38::i;:::-;17529:217;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17529:217:0;-1:-1:-1;;;;;17529:217:0;;;;;;-1:-1:-1;;;;;17529:217:0;-1:-1:-1;;;;;17529:217:0;;;;;;-1:-1:-1;;;;;17529:217:0;-1:-1:-1;;;;;17529:217:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17529:217:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17529:217:0;;;;16697:1068;;;;;;;;:::o;35006:301::-;35177:8;35204:33;35209:7;35218:3;35231:4;35204;:33::i;:::-;35198:39;;35248:51;35262:7;35270;35278:3;35282;35286:12;35248:13;:51::i;:::-;35006:301;;;;;;;:::o;10665:155::-;10786:7;-1:-1:-1;;;;;10774:29:0;;10804:3;10809:2;10774:38;;;;;;;;;;;;;-1:-1:-1;;;;;10774:38:0;-1:-1:-1;;;;;10774:38:0;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;9207:177:0;9341:35;;;-1:-1:-1;;;9341:35:0;;;;;;;;-1:-1:-1;;;;;9341:35:0;;;;;;;;;9314:8;;9341:25;;;;;:35;;;;;;;;;;;;;;9314:8;9341:25;:35;;;5:2:-1;;;;30:1;27;20:12;5:2;9341:35:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9341:35:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9341:35:0;;9207:177;-1:-1:-1;;;;9207:177:0:o;14404:497::-;14536:8;14547:25;14559:7;14568:3;14547:11;:25::i;:::-;14536:36;;14629:34;14634:7;14643:3;14649:10;14655:3;14649:5;:10::i;:::-;14648:11;;14661:1;14629:4;:34::i;:::-;14739:38;14744:7;14753:3;14766:4;14773:3;14739:4;:38::i;:::-;14851:42;;;-1:-1:-1;;;14851:42:0;;14877:10;14851:42;;;;;;;;;;;;-1:-1:-1;;;;;14851:25:0;;;;;:42;;;;;-1:-1:-1;;14851:42:0;;;;;;;-1:-1:-1;14851:25:0;:42;;;5:2:-1;;;;30:1;27;20:12;36230:276:0;36399:27;36413:7;36422:3;36399:13;:27::i;:::-;36437:61;36461:7;36470;36479;36488:3;36493:4;36437:23;:61::i;35319:295::-;35486:8;35513:36;35518:10;35530:3;35543:4;35513;:36::i;:::-;35507:42;;35560:46;35573:10;35584;35595:6;35602:3;35560:12;:46::i;:::-;35319:295;;;;;;:::o;13782:614::-;13959:34;13964:7;13973:3;13979:10;13985:3;13979:5;:10::i;11686:160::-;11808:7;-1:-1:-1;;;;;11796:26:0;;11823:6;11831;11796:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;8404:551:0;8587:12;8583:275;;;8678:3;-1:-1:-1;;;;;8666:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8666:22:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8666:22:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8666:22:0;:67;;;-1:-1:-1;;;8666:67:0;;8702:10;8666:67;;;;8722:4;8666:67;;;;;;;;;;;;-1:-1:-1;;;;;8666:35:0;;;;;;:67;;;;;-1:-1:-1;;8666:67:0;;;;;;;;-1:-1:-1;8666:35:0;:67;;;5:2:-1;;;;30:1;27;20:12;5:2;8666:67:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8666:67:0;;;;8818:3;-1:-1:-1;;;;;8806:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8806:22:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8806:22:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8806:22:0;:40;;;-1:-1:-1;;;8806:40:0;;-1:-1:-1;;;;;8806:40:0;;;;;;;;;;;;;;;:30;;;;;;;:40;;;;;-1:-1:-1;;8806:40:0;;;;;;;-1:-1:-1;8806:30:0;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;8806:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8806:40:0;;;;8583:275;8928:3;-1:-1:-1;;;;;8916:21:0;;8938:3;8943;8916:31;;;;;;;;;;;;;-1:-1:-1;;;;;8916:31:0;-1:-1:-1;;;;;8916:31:0;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;11190:172:0;11324:7;-1:-1:-1;;;;;11312:25:0;;11338:3;11343:4;11349;11312:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;15834:855:0;15985:11;16011:7;-1:-1:-1;;;;;15999:25:0;;16025:3;15999:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15999:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15999:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15999:30:0;16054:26;;;-1:-1:-1;;;16054:26:0;;;;15999:30;;-1:-1:-1;16040:11:0;;-1:-1:-1;;;;;16054:24:0;;;;;:26;;;;;15999:30;;16054:26;;;;;;;:24;:26;;;5:2:-1;;;;30:1;27;20:12;5:2;16054:26:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16054:26:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16054:26:0;16105:30;;;-1:-1:-1;;;16105:30:0;;;;;;;;;;16054:26;;-1:-1:-1;16091:11:0;;-1:-1:-1;;;;;16105:25:0;;;;;:30;;;;;16054:26;;16105:30;;;;;;;:25;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;16105:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16105:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16105:30:0;;-1:-1:-1;16184:60:0;16189:7;16198:3;16203:1;16206:37;16219:3;16224;16229;16105:30;16239:3;16206:12;:37::i;16184:60::-;16335:45;16340:7;16349:3;16362:4;16369:10;16375:3;16369:5;:10::i;16335:45::-;16466:49;;;-1:-1:-1;;;16466:49:0;;16491:4;16466:49;;;;-1:-1:-1;;;;;16466:49:0;;;;;;;;;:16;;;;;;:49;;;;;;;;;;;;;;;:16;:49;;;5:2:-1;;;;30:1;27;20:12;5:2;16466:49:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16466:49:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16466:49:0;16462:113;;16545:3;-1:-1:-1;;;;;16537:17:0;;16555:7;16537:26;;;;;;;;;;;;;-1:-1:-1;;;;;16537:26:0;-1:-1:-1;;;;;16537:26:0;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16537:26:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16537:26:0;;;;16462:113;16639:42;;;-1:-1:-1;;;16639:42:0;;16665:10;16639:42;;;;;;;;;;;;-1:-1:-1;;;;;16639:25:0;;;;;:42;;;;;-1:-1:-1;;16639:42:0;;;;;;;-1:-1:-1;16639:25:0;:42;;;5:2:-1;;;;30:1;27;20:12;9085:114:0;9177:3;-1:-1:-1;;;;;9168:18:0;;9187:3;9168:23;;;;;;;;;;;;;-1:-1:-1;;;;;9168:23:0;-1:-1:-1;;;;;9168:23:0;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9168:23:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9168:23:0;;;;9085:114;;:::o;33025:711::-;33174:11;33200:10;-1:-1:-1;;;;;33188:27:0;;:29;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;33188:29:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;33188:29:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;33188:29:0;33243;;;-1:-1:-1;;;33243:29:0;;;;33188;;-1:-1:-1;;;;;;33243:27:0;;;;;:29;;;;;33188;;33243;;;;;;;;:27;:29;;;5:2:-1;;;;30:1;27;20:12;5:2;33243:29:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;33243:29:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;33243:29:0;-1:-1:-1;;;;;33236:36:0;;;;;;33228:61;;;;;-1:-1:-1;;;33228:61:0;;;;;;;;;;;;-1:-1:-1;;;33228:61:0;;;;;;;;;;;;;;;33317:43;;;-1:-1:-1;;;33317:43:0;;33342:4;33317:43;;;;-1:-1:-1;;;;;33317:43:0;;;;;;;;;33302:11;;33317:16;;;;;:43;;;;;;;;;;;;;;:16;:43;;;5:2:-1;;;;30:1;27;20:12;5:2;33317:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;33317:43:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;33317:43:0;33392;;;-1:-1:-1;;;33392:43:0;;33417:4;33392:43;;;;-1:-1:-1;;;;;33392:43:0;;;;;;;;;33317:48;;;;-1:-1:-1;33364:1:0;;33392:16;;;;;;:43;;;;;33317;;33392;;;;;;;;:16;:43;;;5:2:-1;;;;30:1;27;20:12;5:2;33392:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;33392:43:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;33392:43:0;:48;;;-1:-1:-1;33459:6:0;33454:34;;33467:21;33472:3;33477:10;33467:4;:21::i;:::-;33504:6;33499:34;;33512:21;33517:3;33522:10;33512:4;:21::i;:::-;33546:39;33551:10;33563:6;33579:4;33546;:39::i;:::-;33596:40;33602:10;33622:4;33629:6;33596:5;:40::i;:::-;33654:6;33649:34;;33662:21;33667:3;33672:10;33662:4;:21::i;:::-;33699:6;33694:34;;33707:21;33712:3;33717:10;33707:4;:21::i;8021:375::-;8137:3;-1:-1:-1;;;;;8125:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8125:22:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8125:22:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8125:22:0;:49;;;-1:-1:-1;;;8125:49:0;;;;-1:-1:-1;;;;;8125:30:0;;;;;;8162:9;;8125:49;;;;;;;;;;;;;;8162:9;8125:30;:49;;;5:2:-1;;;;30:1;27;20:12;5:2;8125:49:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8125:49:0;;;;;8250:3;-1:-1:-1;;;;;8238:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8238:22:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8238:22:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8238:22:0;:55;;;-1:-1:-1;;;8238:55:0;;-1:-1:-1;;;;;8238:55:0;;;;;;;8283:9;8238:55;;;;;;:30;;;;;;;:55;;;;;-1:-1:-1;;8238:55:0;;;;;;;-1:-1:-1;8238:30:0;:55;;;5:2:-1;;;;30:1;27;20:12;5:2;8238:55:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;8351:37:0;;;-1:-1:-1;;;8351:37:0;;-1:-1:-1;;;;;8351:37:0;;;;;;;8378:9;8351:37;;;;;;:21;;;;-1:-1:-1;8351:21:0;;-1:-1:-1;8351:37:0;;;;;-1:-1:-1;;8351:37:0;;;;;;;;-1:-1:-1;8351:21:0;:37;;;5:2:-1;;;;30:1;27;20:12;25195:905:0;25381:11;25407:7;-1:-1:-1;;;;;25395:25:0;;25421:3;25395:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25395:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;25395:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;25395:30:0;;-1:-1:-1;25478:32:0;25491:7;25395:30;25505:4;25478:12;:32::i;:::-;25521:9;25533:26;25545:7;25554:4;25533:11;:26::i;:::-;25521:38;;25640:220;25659:7;25681:3;25700:11;25706:4;25700:5;:11::i;:::-;25699:12;;25726:123;25751:7;-1:-1:-1;;;;;25739:24:0;;:26;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25739:26:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;25739:26:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;25739:26:0;;;;;;;;;;;;;;;;25787:7;-1:-1:-1;;;;;25775:24:0;;:26;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25775:26:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;25775:26:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;25775:26:0;25767:44;;;-1:-1:-1;;;25767:44:0;;-1:-1:-1;;;;;25767:44:0;;;;;;;;;:39;;;;;;;:44;;;;;25775:26;;25767:44;;;;;;;:39;:44;;;5:2:-1;;;;30:1;27;20:12;5:2;25767:44:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;25767:44:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;25767:44:0;;;;;;;;;;;;;;;;25813:3;25830:7;-1:-1:-1;;;;;25818:25:0;;25844:3;25818:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25818:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;25818:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;25818:30:0;25726:12;:123::i;25640:220::-;25936:39;25941:7;25950:3;25963:4;25970;25936;:39::i;:::-;26049:43;;;-1:-1:-1;;;26049:43:0;;26075:10;26049:43;;;;;;;;;;;;-1:-1:-1;;;;;26049:25:0;;;;;:43;;;;;-1:-1:-1;;26049:43:0;;;;;;;-1:-1:-1;26049:25:0;:43;;;5:2:-1;;;;30:1;27;20:12;8963:114:0;9055:3;-1:-1:-1;;;;;9046:18:0;;9065:3;9046:23;;;;;;;;;;;;;-1:-1:-1;;;;;9046:23:0;-1:-1:-1;;;;;9046:23:0;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;10478:179:0;10606:43;;;-1:-1:-1;;;10606:43:0;;;;;;;;-1:-1:-1;;;;;10606:43:0;;;;;;;;;;;;;;;:29;;;;;;:43;;;;;-1:-1:-1;;10606:43:0;;;;;;;;-1:-1:-1;10606:29:0;:43;;;5:2:-1;;;;30:1;27;20:12;36514:276:0;36683:27;36697:7;36706:3;36683:13;:27::i;:::-;36721:61;36745:7;36754;36763;36772:3;36777:4;36721:23;:61::i;23075:1022::-;23261:11;23287:7;-1:-1:-1;;;;;23275:25:0;;23301:3;23275:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23275:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23275:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23275:30:0;;-1:-1:-1;23358:32:0;23371:7;23275:30;23385:4;23358:12;:32::i;:::-;23470:220;23489:7;23511:3;23530:11;23536:4;23530:5;:11::i;:::-;23529:12;;23556:123;23581:7;-1:-1:-1;;;;;23569:24:0;;:26;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23569:26:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23569:26:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23569:26:0;23605;;;-1:-1:-1;;;23605:26:0;;;;-1:-1:-1;;;;;23605:24:0;;;;;:26;;;;;23569;;23605;;;;;;;:24;:26;;;5:2:-1;;;;30:1;27;20:12;5:2;23605:26:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23605:26:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23605:26:0;23597:44;;;-1:-1:-1;;;23597:44:0;;-1:-1:-1;;;;;23597:44:0;;;;;;;;;:39;;;;;;;:44;;;;;23605:26;;23597:44;;;;;;;:39;:44;;;5:2:-1;;;;30:1;27;20:12;5:2;23597:44:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23597:44:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;23597:44:0;;;;;;;;;;;;;;;;23643:3;23660:7;-1:-1:-1;;;;;23648:25:0;;23674:3;23648:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;23470:220:0;23766:39;23771:7;23780:3;23793:4;23800;23766;:39::i;:::-;23874:46;;;-1:-1:-1;;;23874:46:0;;23908:4;23874:46;;;;;;;;;;;;-1:-1:-1;;;;;23874:25:0;;;;;:46;;;;;-1:-1:-1;;23874:46:0;;;;;;;-1:-1:-1;23874:25:0;:46;;;5:2:-1;;;;30:1;27;20:12;5:2;23874:46:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23874:46:0;;;;23976:7;-1:-1:-1;;;;;23964:24:0;;:26;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23964:26:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23964:26:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23964:26:0;:41;;;-1:-1:-1;;;23964:41:0;;;;;;;;;;-1:-1:-1;;;;;23964:35:0;;;;;;:41;;;;;-1:-1:-1;;23964:41:0;;;;;;;;-1:-1:-1;23964:35:0;:41;;;5:2:-1;;;;30:1;27;20:12;5:2;23964:41:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;24064:25:0;;:10;;-1:-1:-1;24064:25:0;;;;;-1:-1:-1;24084:4:0;;24064:25;;;;24084:4;24064:10;:25;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;7902:111:0;7982:3;-1:-1:-1;;;;;7974:21:0;;7996:3;8001;7974:31;;;;;;;;;;;;;-1:-1:-1;;;;;7974:31:0;-1:-1:-1;;;;;7974:31:0;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;22389:678:0;22697:40;;;-1:-1:-1;;;22697:40:0;;22731:4;22697:40;;;;;;22602:11;;;;-1:-1:-1;;;;;22697:25:0;;;;;:40;;;;;;;;;;;;;;:25;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;22697:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22697:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22697:40:0;;-1:-1:-1;;;;;;22752:17:0;;22748:75;;22792:19;22803:7;22792:10;:19::i;:::-;22786:25;;22748:75;22933:7;-1:-1:-1;;;;;22921:24:0;;:26;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22921:26:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22921:26:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22921:26:0;22913:55;;;-1:-1:-1;;;22913:55:0;;-1:-1:-1;;;;;22913:55:0;;;;;;;;;;;;;;;:44;;;;;;;:55;;;;;-1:-1:-1;;22913:55:0;;;;;;;-1:-1:-1;22913:44:0;:55;;;5:2:-1;;;;30:1;27;20:12;5:2;22913:55:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22913:55:0;;;;22985:74;23004:7;23013:3;23018:7;23027;23036:3;23041:4;23047;23053:5;22985:18;:74::i;:::-;22979:80;;22389:678;;;;;;;;;;:::o;4442:375::-;4574:3;-1:-1:-1;;;;;4562:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4562:22:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4562:22:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4562:22:0;:67;;;-1:-1:-1;;;4562:67:0;;4598:10;4562:67;;;;4618:4;4562:67;;;;;;;;;;;;-1:-1:-1;;;;;4562:35:0;;;;;;:67;;;;;-1:-1:-1;;4562:67:0;;;;;;;;-1:-1:-1;4562:35:0;:67;;;5:2:-1;;;;30:1;27;20:12;5:2;4562:67:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4562:67:0;;;;4704:3;-1:-1:-1;;;;;4692:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4692:22:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4692:22:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4692:22:0;:40;;;-1:-1:-1;;;4692:40:0;;-1:-1:-1;;;;;4692:40:0;;;;;;;;;;;;;;;:30;;;;;;;:40;;;;;-1:-1:-1;;4692:40:0;;;;;;;-1:-1:-1;4692:30:0;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;4692:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4692:40:0;;;;4790:3;-1:-1:-1;;;;;4778:21:0;;4800:3;4805;4778:31;;;;;;;;;;;;;-1:-1:-1;;;;;4778:31:0;-1:-1:-1;;;;;4778:31:0;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;20846:1130:0;21082:11;21108:7;-1:-1:-1;;;;;21096:25:0;;21122:3;21096:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21096:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21096:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21096:30:0;21151:26;;;-1:-1:-1;;;21151:26:0;;;;21096:30;;-1:-1:-1;21137:11:0;;-1:-1:-1;;;;;21151:24:0;;;;;:26;;;;;21096:30;;21151:26;;;;;;;:24;:26;;;5:2:-1;;;;30:1;27;20:12;5:2;21151:26:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21151:26:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21151:26:0;21202:30;;;-1:-1:-1;;;21202:30:0;;;;;;;;;;21151:26;;-1:-1:-1;21188:11:0;;-1:-1:-1;;;;;21202:25:0;;;;;:30;;;;;21151:26;;21202:30;;;;;;;:25;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;21202:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21202:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21202:30:0;;-1:-1:-1;21316:46:0;21329:7;21338:3;21343:4;21349:12;21316;:46::i;:::-;21436:93;21441:7;21450:3;21455:33;21461:26;21473:7;21482:4;21461:11;:26::i;21455:33::-;21490:38;21503:3;21508;21513;21518;21523:4;21490:12;:38::i;21436:93::-;21620:46;21625:7;21634:3;21647:4;21654:11;21660:4;21654:5;:11::i;21620:46::-;21752:49;;;-1:-1:-1;;;21752:49:0;;21777:4;21752:49;;;;-1:-1:-1;;;;;21752:49:0;;;;;;;;;:16;;;;;;:49;;;;;;;;;;;;;;;:16;:49;;;5:2:-1;;;;30:1;27;20:12;5:2;21752:49:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21752:49:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21752:49:0;21748:113;;21831:3;-1:-1:-1;;;;;21823:17:0;;21841:7;21823:26;;;;;;;;;;;;;-1:-1:-1;;;;;21823:26:0;-1:-1:-1;;;;;21823:26:0;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21823:26:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21823:26:0;;;;21748:113;21925:43;;;-1:-1:-1;;;21925:43:0;;21951:10;21925:43;;;;;;;;;;;;-1:-1:-1;;;;;21925:25:0;;;;;:43;;;;;-1:-1:-1;;21925:43:0;;;;;;;-1:-1:-1;21925:25:0;:43;;;5:2:-1;;;;30:1;27;20:12;5:2;21925:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21925:43:0;;;;20846:1130;;;;;;;;;;;:::o;34638:360::-;34832:8;34859:33;34864:7;34873:3;34886:4;34859;:33::i;:::-;34853:39;;34903:34;34917:7;34925;34933:3;34903:13;:34::i;:::-;34948:42;34960:13;34974:7;34982:3;34986;34948:11;:42::i;21984:397::-;22225:8;22252:33;22257:7;22266:3;22279:4;22252;:33::i;:::-;22246:39;;22296:77;22311:7;22320:3;22325:7;22334;22343:3;22348:4;22354;22360:12;22296:14;:77::i;:::-;21984:397;;;;;;;;;;:::o;12009:542::-;12209:36;12222:7;12239:4;12209:12;:36::i;:::-;12319:7;-1:-1:-1;;;;;12307:24:0;;:26;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12307:26:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12307:26:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12307:26:0;12354:30;;;-1:-1:-1;;;12354:30:0;;;;;;;;;;-1:-1:-1;;;;;12299:40:0;;;;;;12354:25;;;;;;:30;;;;;12307:26;;12354:30;;;;;;;;:25;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;12354:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12354:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12354:30:0;12399;;;-1:-1:-1;;;12399:30:0;;;;;;;;;;-1:-1:-1;;;;;12399:25:0;;;;;:30;;;;;12354;;12399;;;;;;;:25;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;12399:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12399:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12399:30:0;12452:4;;12500:16;12506:9;12500:5;:16::i;:::-;12299:244;;;-1:-1:-1;;;;;;12299:244:0;;;;;;;;;;;;;;-1:-1:-1;;;;;12299:244:0;;;;;;;;;;;;;;;;;;;;;;;;;;;12531:1;12299:244;;;;;;;;;;;;;;;;;;12531:1;12299:244;;;;5:2:-1;;;;30:1;27;20:12;20501:337:0;20702:8;20729:33;20734:7;20743:3;20756:4;20729;:33::i;:::-;20723:39;;20773:57;20788:7;20797:3;20802:7;20811;20820:3;20825:4;20773:14;:57::i;:::-;20501:337;;;;;;;;:::o;13451:323::-;13681:5;-1:-1:-1;;;;;13647:39:0;13659:7;-1:-1:-1;;;;;13647:25:0;;13673:3;13647:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13647:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13647:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13647:30:0;-1:-1:-1;;;;;13647:39:0;;13639:67;;;;;-1:-1:-1;;;13639:67:0;;;;;;;;;;;;-1:-1:-1;;;13639:67:0;;;;;;;;;;;;;;;13717:49;13725:7;13734;13743:3;13748;13753:12;13717:7;:49::i;11527:151::-;11646:7;-1:-1:-1;;;;;11634:26:0;;11661:3;11666;11634:36;;;;;;;;;;;;;-1:-1:-1;;;;;11634:36:0;-1:-1:-1;;;;;11634:36:0;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;12559:265:0;12750:5;-1:-1:-1;;;;;12716:39:0;12728:7;-1:-1:-1;;;;;12716:25:0;;12742:3;12716:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12716:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12716:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12716:30:0;-1:-1:-1;;;;;12716:39:0;;12708:67;;;;;-1:-1:-1;;;12708:67:0;;;;;;;;;;;;-1:-1:-1;;;12708:67:0;;;;;;;;;;;;;;;12786:30;12794:7;12803;12812:3;12786:7;:30::i;11854:147::-;11953:40;;;-1:-1:-1;;;11953:40:0;;11987:4;11953:40;;;;;;11923:11;;-1:-1:-1;;;;;11953:25:0;;;;;:40;;;;;;;;;;;;;;;11923:11;11953:25;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;11953:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11953:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11953:40:0;;11854:147;-1:-1:-1;;11854:147:0:o;34161:465::-;34327:11;34353:7;-1:-1:-1;;;;;34341:25:0;;34367:3;34341:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;34341:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;34341:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;34341:30:0;;-1:-1:-1;34443:45:0;34456:7;34341:30;34470:3;34475:12;34443;:45::i;:::-;34563:55;34568:7;34577:3;34582:32;34588:25;34600:7;34609:3;34588:11;:25::i;35622:155::-;35732:1;35708:7;-1:-1:-1;;;;;35695:29:0;;35725:3;35695:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;35695:34:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;35695:34:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;35695:34:0;:38;35692:77;;;35735:34;;;-1:-1:-1;;;35735:34:0;;;;;;;;35765:1;35735:34;;;;;;;;;;;;;;-1:-1:-1;;;;;35735:25:0;;;;;:34;;;;;;;;;;;35765:1;35735:25;:34;;;5:2:-1;;;;30:1;27;20:12;35692:77:0;35622:155;;:::o;18056:1106::-;18169:11;18195:7;-1:-1:-1;;;;;18183:24:0;;:26;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18183:26:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18183:26:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18183:26:0;18234:30;;;-1:-1:-1;;;18234:30:0;;;;;;;;;;18183:26;;-1:-1:-1;18220:11:0;;-1:-1:-1;;;;;18234:25:0;;;;;:30;;;;;18183:26;;18234:30;;;;;;;:25;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;18234:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18234:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18234:30:0;18289;;;-1:-1:-1;;;18289:30:0;;;;;;;;;;18234;;-1:-1:-1;18275:11:0;;-1:-1:-1;;;;;18289:25:0;;;;;:30;;;;;18234;;18289;;;;;;;:25;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;18289:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18289:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18289:30:0;18345:27;;;-1:-1:-1;;;18345:27:0;;;;;;;;-1:-1:-1;;;;;18345:27:0;;;;;;;;;18289:30;;-1:-1:-1;18333:8:0;;18345:17;;;;;;:27;;;;;;;;;;;:17;:27;;;5:2:-1;;;;30:1;27;20:12;5:2;18345:27:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18345:27:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18345:27:0;;;;;;18399:30;;-1:-1:-1;;;18399:30:0;;;;;;;;;;18345:27;;-1:-1:-1;18385:11:0;;-1:-1:-1;;;;;18399:25:0;;;;;:30;;;;;18345:27;18399:30;;;;;;:25;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;18399:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18399:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18399:30:0;;-1:-1:-1;;;;;;18444:20:0;;18459:4;18444:20;;:81;;-1:-1:-1;18468:52:0;;;-1:-1:-1;;;18468:52:0;;-1:-1:-1;;;;;18468:52:0;;;;;;;;;;;;;18514:4;18468:52;;;;;;:27;;;;;;:52;;;;;;;;;;;;;;;:27;:52;;;5:2:-1;;;;30:1;27;20:12;5:2;18468:52:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18468:52:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18468:52:0;18524:1;18468:57;18444:81;18440:715;;;18588:62;18601:7;18610:3;18615:34;18630:3;18635;18640;18645;18615:14;:34::i;:::-;18588:12;:62::i;:::-;18706:32;18711:7;18720:3;18725:1;18733:3;18728:9;;18706:4;:32::i;18440:715::-;18817:82;18830:7;18847:4;18854:44;18869:3;18882:4;18889:3;18894;18854:14;:44::i;18817:82::-;18955:188;;;-1:-1:-1;;;18955:188:0;;;;;;;;-1:-1:-1;;;;;18955:188:0;;;;;;;19043:4;18955:188;;;;;;;;;;19099:1;18955:188;;;;;;19119:9;;;18955:188;;;;;;:17;;;;;;:188;;;;;;;;;;;19099:1;18955:17;:188;;;5:2:-1;;;;30:1;27;20:12;19170:257:0;19353:5;-1:-1:-1;;;;;19319:39:0;19331:7;-1:-1:-1;;;;;19319:25:0;;19345:3;19319:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19319:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19319:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19319:30:0;-1:-1:-1;;;;;19319:39:0;;19311:67;;;;;-1:-1:-1;;;19311:67:0;;;;;;;;;;;;-1:-1:-1;;;19311:67:0;;;;;;;;;;;;;;;19389:30;19397:7;19406;19415:3;19389:7;:30::i;5023:124::-;5095:1;5069:5;5116:6;;;5108:31;;;;;-1:-1:-1;;;5108:31:0;;;;;;;;;;;;-1:-1:-1;;;5108:31:0;;;;;;;;;;;;;;;5023:124;;;:::o;5677:896::-;5831:8;5891:9;5911:3;-1:-1:-1;;;;;5903:17:0;;5921:3;5903:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5903:22:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5903:22:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5903:22:0;6000:21;;;-1:-1:-1;;;6000:21:0;;-1:-1:-1;;;;;6000:21:0;;;;;;;;;5903:22;;-1:-1:-1;5989:8:0;;6000:16;;;;;;:21;;;;;5903:22;;6000:21;;;;;;;;:16;:21;;;5:2:-1;;;;30:1;27;20:12;5:2;6000:21:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6000:21:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6000:21:0;;-1:-1:-1;6147:13:0;6151:3;-1:-1:-1;;;6147:3:0;:13::i;:::-;6141:3;:19;6137:429;;;6315:37;6347:4;6321:23;6325:13;6329:3;-1:-1:-1;;;6325:3:0;:13::i;:::-;6340:3;6321;:23::i;:::-;:30;;;;;;6315:5;:37::i;:::-;6308:44;;6523:13;6527:3;-1:-1:-1;;;6523:3:0;:13::i;:::-;6499:21;6508:4;6515;6499:3;:21::i;:::-;:37;:55;;6550:4;6499:55;;;6539:4;6546:1;6539:8;6499:55;6492:62;;6137:429;5677:896;;;;;;;;;:::o;5155:101::-;5203:8;5230:18;5234:3;-1:-1:-1;;;5230:3:0;:18::i;:::-;5224:24;5155:101;-1:-1:-1;;5155:101:0:o;5264:405::-;5333:11;5575:86;5593:3;5635:7;-1:-1:-1;;;;;5623:24:0;;:26;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5623:26:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5623:26:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5623:26:0;5618:2;:31;5611:2;:39;5575:3;:86::i;:::-;5569:92;5264:405;-1:-1:-1;;;5264:405:0:o;6581:617::-;6718:8;6784:9;6808:3;-1:-1:-1;;;;;6800:17:0;;6818:3;6800:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6800:22:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6800:22:0;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;6800:22:0;;;;6893:27;;-1:-1:-1;;;6893:27:0;;;;;;;;-1:-1:-1;;;;;6893:27:0;;;;;;;;;6800:22;;-1:-1:-1;6881:8:0;;6893:17;;;;;;:27;;;;;;;;;;;:17;:27;;;5:2:-1;;;;30:1;27;20:12;5:2;6893:27:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6893:27:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6893:27:0;;;;-1:-1:-1;7009:17:0;7021:4;7015:3;7021:4;7015:10;;;7009:17;7002:24;;7163:3;7154:4;7149:17;;:41;;7180:10;7186:3;7180:5;:10::i;:::-;7178:12;;7149:41;;;7171:4;7169:6;;7149:41;7142:48;6581:617;-1:-1:-1;;;;;;;6581:617:0:o;24105:1082::-;24274:11;24300:7;-1:-1:-1;;;;;24288:24:0;;:26;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24288:26:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;24288:26:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;24288:26:0;24339:30;;;-1:-1:-1;;;24339:30:0;;;;;;;;;;24288:26;;-1:-1:-1;24325:11:0;;-1:-1:-1;;;;;24339:25:0;;;;;:30;;;;;24288:26;;24339:30;;;;;;;:25;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;24339:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;24339:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;24339:30:0;24394;;;-1:-1:-1;;;24394:30:0;;;;;;;;;;24339;;-1:-1:-1;24380:11:0;;-1:-1:-1;;;;;24394:25:0;;;;;:30;;;;;24339;;24394;;;;;;;:25;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;24394:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;24394:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;24394:30:0;24450:27;;;-1:-1:-1;;;24450:27:0;;;;;;;;-1:-1:-1;;;;;24450:27:0;;;;;;;;;24394:30;;-1:-1:-1;24438:8:0;;24450:17;;;;;;:27;;;;;;;;;;;:17;:27;;;5:2:-1;;;;30:1;27;20:12;5:2;24450:27:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;24450:27:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;24450:27:0;;;;-1:-1:-1;24532:62:0;24545:7;24554:3;24559:34;24574:3;24554;;24589;24559:14;:34::i;24532:62::-;24674:106;24693:7;24715:3;24734:11;24740:4;24734:5;:11::i;:::-;24733:12;;24765:3;24760:9;;24674:4;:106::i;:::-;24856:39;24861:7;24870:3;24883:4;24890;24856;:39::i;:::-;24964:46;;;-1:-1:-1;;;24964:46:0;;24998:4;24964:46;;;;;;;;;;;;-1:-1:-1;;;;;24964:25:0;;;;;:46;;;;;-1:-1:-1;;24964:46:0;;;;;;;-1:-1:-1;24964:25:0;:46;;;5:2:-1;;;;30:1;27;20:12;5:2;24964:46:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;24964:46:0;;;;25066:7;-1:-1:-1;;;;;25054:24:0;;:26;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25054:26:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;25054:26:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;25054:26:0;:41;;;-1:-1:-1;;;25054:41:0;;;;;;;;;;-1:-1:-1;;;;;25054:35:0;;;;;;:41;;;;;-1:-1:-1;;25054:41:0;;;;;;;;-1:-1:-1;25054:35:0;:41;;;5:2:-1;;;;30:1;27;20:12;5:2;25054:41:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;25154:25:0;;:10;;-1:-1:-1;25154:25:0;;;;;-1:-1:-1;25174:4:0;;25154:25;;;;25174:4;25154:10;:25;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;25154:25:0;24105:1082;;;;;;;;;:::o;26108:965::-;26277:11;26303:7;-1:-1:-1;;;;;26291:24:0;;:26;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;26291:26:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;26291:26:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;26291:26:0;26342:30;;;-1:-1:-1;;;26342:30:0;;;;;;;;;;26291:26;;-1:-1:-1;26328:11:0;;-1:-1:-1;;;;;26342:25:0;;;;;:30;;;;;26291:26;;26342:30;;;;;;;:25;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;26342:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;26342:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;26342:30:0;26397;;;-1:-1:-1;;;26397:30:0;;;;;;;;;;26342;;-1:-1:-1;26383:11:0;;-1:-1:-1;;;;;26397:25:0;;;;;:30;;;;;26342;;26397;;;;;;;:25;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;26397:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;26397:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;26397:30:0;26453:27;;;-1:-1:-1;;;26453:27:0;;;;;;;;-1:-1:-1;;;;;26453:27:0;;;;;;;;;26397:30;;-1:-1:-1;26441:8:0;;26453:17;;;;;;:27;;;;;;;;;;;:17;:27;;;5:2:-1;;;;30:1;27;20:12;5:2;26453:27:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;26453:27:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;26453:27:0;;;;-1:-1:-1;26535:62:0;26548:7;26557:3;26562:34;26577:3;26557;;26592;26562:14;:34::i;26535:62::-;26608:9;26620:26;26632:7;26641:4;26620:11;:26::i;:::-;26608:38;;26727:106;26746:7;26768:3;26787:11;26793:4;26787:5;:11::i;:::-;26786:12;;26818:3;26813:9;;26727:4;:106::i;:::-;26909:39;26914:7;26923:3;26936:4;26943;26909;:39::i;:::-;27022:43;;;-1:-1:-1;;;27022:43:0;;27048:10;27022:43;;;;;;;;;;;;-1:-1:-1;;;;;27022:25:0;;;;;:43;;;;;-1:-1:-1;;27022:43:0;;;;;;;-1:-1:-1;27022:25:0;:43;;;5:2:-1;;;;30:1;27;20:12;5:2;27022:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;27022:43:0;;;;26108:965;;;;;;;;;;:::o;7206:661::-;7348:8;7414:9;7438:3;-1:-1:-1;;;;;7430:17:0;;7448:3;7430:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7430:22:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7430:22:0;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;7430:22:0;;;;7523:27;;-1:-1:-1;;;7523:27:0;;;;;;;;-1:-1:-1;;;;;7523:27:0;;;;;;;;;7430:22;;-1:-1:-1;7511:8:0;;7523:17;;;;;;:27;;;;;;;;;;;:17;:27;;;5:2:-1;;;;30:1;27;20:12;5:2;7523:27:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7523:27:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7523:27:0;;;;;;7618:21;;-1:-1:-1;;;7618:21:0;;-1:-1:-1;;;;;7618:21:0;;;;;;;;;7523:27;;-1:-1:-1;7607:8:0;;7618:16;;;;;;:21;;;;;7523:27;;7618:21;;;;;;:16;:21;;;5:2:-1;;;;30:1;27;20:12;5:2;7618:21:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7618:21:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7618:21:0;;-1:-1:-1;7652:8:0;7663:24;7667:14;7671:3;7676:4;7667:3;:14::i;:::-;7683:3;7663;:24::i;:::-;7652:35;-1:-1:-1;;;;7652:35:0;7704:9;7698:15;;7840:3;7824:13;7828:3;-1:-1:-1;;;7824:3:0;:13::i;:::-;:19;:35;;7856:3;7824:35;;;7846:3;7852:1;7846:7;7824:35;7818:41;7206:661;-1:-1:-1;;;;;;;;;7206:661:0:o;4273:134::-;4325:6;4352;;;:30;;-1:-1:-1;;4367:5:0;;;4381:1;4376;4367:5;4376:1;4362:15;;;;;:20;4352:30;4344:55;;;;;-1:-1:-1;;;4344:55:0;;;;;;;;;;;;-1:-1:-1;;;4344:55:0;;;;;;;;;;;;;;4895:120;4979:5;;;4974:16;;;;4966:41;;;;;-1:-1:-1;;;4966:41:0;;;;;;;;;;;;-1:-1:-1;;;4966:41:0;;;;;;;;;;;;;

Swarm Source

bzzr://30fd3ab47a531378409a56b8e389fa6ab00acb940d5d4f9f1a32acc657055f71

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.