ETH Price: $2,614.01 (+0.65%)

Contract

0xDD5c345e098259426BFD44E9F2fD69C7C811B1F6
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Airdrop180254212023-08-30 5:45:23415 days ago1693374323IN
0xDD5c345e...7C811B1F6
0 ETH0.0007536414.70353337
Airdrop180254212023-08-30 5:45:23415 days ago1693374323IN
0xDD5c345e...7C811B1F6
0 ETH0.0015071214.69565676
Airdrop180253592023-08-30 5:32:59415 days ago1693373579IN
0xDD5c345e...7C811B1F6
0 ETH0.0006755315.04431511
Airdrop180253572023-08-30 5:32:35415 days ago1693373555IN
0xDD5c345e...7C811B1F6
0 ETH0.0007090915.79168275
Airdrop180253552023-08-30 5:32:11415 days ago1693373531IN
0xDD5c345e...7C811B1F6
0 ETH0.0006841615.23643131
Airdrop180253522023-08-30 5:31:35415 days ago1693373495IN
0xDD5c345e...7C811B1F6
0 ETH0.0010639915.56820036
Airdrop180253432023-08-30 5:29:47415 days ago1693373387IN
0xDD5c345e...7C811B1F6
0 ETH0.0016697416.28322321
Airdrop178265362023-08-02 9:51:35443 days ago1690969895IN
0xDD5c345e...7C811B1F6
0 ETH0.0005353613.87882854
Airdrop178265342023-08-02 9:51:11443 days ago1690969871IN
0xDD5c345e...7C811B1F6
0 ETH0.0005665214.6868208
Airdrop178265332023-08-02 9:50:59443 days ago1690969859IN
0xDD5c345e...7C811B1F6
0 ETH0.0005393813.98317338
Airdrop178265262023-08-02 9:49:35443 days ago1690969775IN
0xDD5c345e...7C811B1F6
0 ETH0.0005425914.06633814
Airdrop178265202023-08-02 9:48:23443 days ago1690969703IN
0xDD5c345e...7C811B1F6
0 ETH0.0016861614.09173422
Airdrop178265172023-08-02 9:47:47443 days ago1690969667IN
0xDD5c345e...7C811B1F6
0 ETH0.0016935214.15331333
0x66038d7e178241252023-08-02 1:46:59443 days ago1690940819IN
 Create: ANAToken
0 ETH0.0467144620

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ANAToken

Compiler Version
v0.8.0+commit.c7dfd78e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, GNU GPLv3 license
/**
 *Submitted for verification at Etherscan.io on 2023-08-02
*/

// SPDX-License-Identifier: GPL-3.0
pragma solidity ^0.8.0;

contract ANAToken {
    uint256 public totalSupply = 10**15;
    uint256 public decimals = 6;
    string public name = "Anonymous Agent Token";
    string public symbol = "ANA";
    mapping(address => uint256) public balanceOf;
    mapping(address => mapping(address => uint256)) public allowance;
    event Transfer(address indexed from, address indexed to, uint256 amount);
    event Approval(address indexed owner,address indexed spender,uint256 amount);
    event Airdrop(uint256 blockNumber, uint256 amount, address[] addressList);

    constructor() {
        ownerAddress = msg.sender;
        balanceOf[address(this)] = 99 * 10 ** 13;
        balanceOf[msg.sender]  =    1 * 10 ** 13;
    }

    function getLockAmount(address sender) view public returns(uint256 lockAmount){
        for (uint256 i = 1; i <= 20; i++) {
            if (highPrice10000 < i*2500) lockAmount += senderLockMap[sender][i];
        }
    }
    function transfer(address recipent, uint256 amount) external returns (bool) {
        require(balanceOf[msg.sender] >= getLockAmount(msg.sender) + amount, "balance not enough");
        balanceOf[msg.sender] -= amount;
        balanceOf[recipent] += amount;
        emit Transfer(msg.sender, recipent, amount);
        return true;
    }
    function approve(address spender, uint256 amount) external returns (bool) {
        allowance[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }
    function transferFrom(address sender, address recipent, uint256 amount) external returns (bool) {
        require(balanceOf[sender] >= getLockAmount(sender) + amount, "balance not enough");
        require(allowance[sender][msg.sender] >= amount, "allowance not enough");
        allowance[sender][msg.sender] -= amount;
        balanceOf[sender] -= amount;
        balanceOf[recipent] += amount;
        emit Transfer(sender, recipent, amount);
        return true;
    }

    address public uniswapAddress;
    address public ownerAddress;
    mapping(uint256 => uint256) public TotalAirdrop;
    mapping(address => mapping(uint256 => uint256)) public airdropAmount;
    mapping(address => mapping(uint256 => uint256)) public senderLockMap;
    modifier checkOwner(){
        require(msg.sender == ownerAddress, "not owner");
        _;
    }
    // Create Pool, setUniswapAddress, increaseObservationCardinalityNext
    function setUniswapAddress(address addr) checkOwner public {
        require(uniswapAddress == address(0) || block.number < 19000000 , "init wrong");
        uniswapAddress = addr;
    }
    function setOwnerAddress(address addr) checkOwner public {
        ownerAddress = addr;
    }
    function airdrop(uint256 param, uint256 amount, address[] memory addressList) checkOwner public {
        require(param <= 20 && param >=1, "param wrong");
        require(amount <= 20*10**10 && amount >= 10**10, "amount wrong");
        TotalAirdrop[param] += amount * addressList.length;
        require(TotalAirdrop[param] <= 5*10**13, "TotalAirdrop wrong");
        for(uint256 i=0; i<addressList.length; i++) airdropAmount[addressList[i]][param] += amount;
        emit Airdrop(block.number, amount, addressList);
    }
    function claim() public {
        for(uint256 param=1; param<=20; param++){
            uint256 amount = airdropAmount[msg.sender][param];
            if(amount <= 1) continue;
            require(balanceOf[address(this)] >= amount, "balance not enough");
            balanceOf[address(this)] -= amount;
            balanceOf[msg.sender] += amount;
            senderLockMap[msg.sender][param] += amount;
            airdropAmount[msg.sender][param] = 1;
        }
    }

    mapping(uint256 => address) public _airdrop2000;
    mapping(uint256 => address) public _claimed2000;
    function airdrop2000(uint256[] memory indexList, address[] memory addressList) checkOwner public {
        require(indexList.length == addressList.length, "length wrong");
        for(uint256 i=0;i<indexList.length;i++) _airdrop2000[indexList[i]] = addressList[i]; 
        emit Airdrop(block.number, 2000, addressList);
    }
    function claim2000(uint256 index) public {
        uint256 amount = 2*10**9;
        TotalAirdrop[3] += amount / 2;
        TotalAirdrop[6] += amount / 2;
        require(TotalAirdrop[3] <= 5*10**13, "TotalAirdrop 3 wrong");
        require(TotalAirdrop[6] <= 5*10**13, "TotalAirdrop 6 wrong");

        require(_airdrop2000[index] == msg.sender && _claimed2000[index] != msg.sender, "no airdrop or already claim");
        require(balanceOf[address(this)] >= amount, "balance not enough");
        balanceOf[address(this)] -= amount;
        balanceOf[msg.sender] += amount;
        senderLockMap[msg.sender][3] += amount / 2;
        senderLockMap[msg.sender][6] += amount / 2;
        _claimed2000[index] = msg.sender;
    }
    
    uint256 public highPrice10000;
    uint256 private freshTime;
    uint32[] private secondsAgos = [86400*7, 86400*6, 86400*5, 86400*4, 86400*3, 86400*2, 86400*1, 86400*0];
    bytes4 private constant OBSERVE = bytes4(keccak256(bytes("observe(uint32[])")));

    function freshHighestPrice() public {
        require(block.number > freshTime + 3600, "wait 12 hours");
        require(TotalAirdrop[1] >= 3 * 10**13, "wait param 1 finish 75%");
        (bool success, bytes memory data) = uniswapAddress.call(abi.encodeWithSelector(OBSERVE, secondsAgos));
        require(success, "OBSERVE failed");
        (int56[] memory tickCumulatives, ) = abi.decode(data, (int56[], int160[]));
        for(uint8 i = 0; i < secondsAgos.length - 2; i++) {
            int56 averageTick_1 = (tickCumulatives[i+1] - tickCumulatives[i]) / 86400;
            int56 averageTick_2 = (tickCumulatives[i+2] - tickCumulatives[i+1]) / 86400;
            require(averageTick_1 < 25000 && averageTick_2 < 25000, "averageTick wrong");
            uint256 price_1 = getSqrtRatioAtTick(averageTick_1);
            uint256 price_2 = getSqrtRatioAtTick(averageTick_2);
            require(price_2 * 100 < price_1 * 125 && price_1 * 100 < price_2 * 125 , "day fluctuation large than 25%");
        }
        int56 averageTick = (tickCumulatives[7] - tickCumulatives[0]) / (86400 * 7);
        uint256 _price10000 = getSqrtRatioAtTick(averageTick);
        if(_price10000 > highPrice10000) {
            highPrice10000 += 300;
            freshTime = block.number;
        }
    }
    function getSqrtRatioAtTick(int56 averageTick) public pure returns(uint256 _price10000){
        uint256 absTick = averageTick < 0 ? uint256(-int256(averageTick)) : uint256(int256(averageTick));
        require(absTick <= uint256(887272), 'T');
        uint256 ratio = absTick & 0x1 != 0 ? 0xfffcb933bd6fad37aa2d162d1a594001 : 0x100000000000000000000000000000000;
        if (absTick & 0x2 != 0) ratio = (ratio * 0xfff97272373d413259a46990580e213a) >> 128;
        if (absTick & 0x4 != 0) ratio = (ratio * 0xfff2e50f5f656932ef12357cf3c7fdcc) >> 128;
        if (absTick & 0x8 != 0) ratio = (ratio * 0xffe5caca7e10e4e61c3624eaa0941cd0) >> 128;
        if (absTick & 0x10 != 0) ratio = (ratio * 0xffcb9843d60f6159c9db58835c926644) >> 128;
        if (absTick & 0x20 != 0) ratio = (ratio * 0xff973b41fa98c081472e6896dfb254c0) >> 128;
        if (absTick & 0x40 != 0) ratio = (ratio * 0xff2ea16466c96a3843ec78b326b52861) >> 128;
        if (absTick & 0x80 != 0) ratio = (ratio * 0xfe5dee046a99a2a811c461f1969c3053) >> 128;
        if (absTick & 0x100 != 0) ratio = (ratio * 0xfcbe86c7900a88aedcffc83b479aa3a4) >> 128;
        if (absTick & 0x200 != 0) ratio = (ratio * 0xf987a7253ac413176f2b074cf7815e54) >> 128;
        if (absTick & 0x400 != 0) ratio = (ratio * 0xf3392b0822b70005940c7a398e4b70f3) >> 128;
        if (absTick & 0x800 != 0) ratio = (ratio * 0xe7159475a2c29b7443b29c7fa6e889d9) >> 128;
        if (absTick & 0x1000 != 0) ratio = (ratio * 0xd097f3bdfd2022b8845ad8f792aa5825) >> 128;
        if (absTick & 0x2000 != 0) ratio = (ratio * 0xa9f746462d870fdf8a65dc1f90e061e5) >> 128;
        if (absTick & 0x4000 != 0) ratio = (ratio * 0x70d869a156d2a1b890bb3df62baf32f7) >> 128;
        if (absTick & 0x8000 != 0) ratio = (ratio * 0x31be135f97d08fd981231505542fcfa6) >> 128;
        if (absTick & 0x10000 != 0) ratio = (ratio * 0x9aa508b5b7a84e1c677de54f3e99bc9) >> 128;
        if (absTick & 0x20000 != 0) ratio = (ratio * 0x5d6af8dedb81196699c329225ee604) >> 128;
        if (absTick & 0x40000 != 0) ratio = (ratio * 0x2216e584f5fa1ea926041bedfe98) >> 128;
        if (absTick & 0x80000 != 0) ratio = (ratio * 0x48a170391f7dc42444e8fa2) >> 128;
        if (averageTick > 0) ratio = type(uint256).max / ratio;
        uint160 sqrtPriceX96 = uint160((ratio >> 32) + (ratio % (1 << 32) == 0 ? 0 : 1));
        _price10000 = (sqrtPriceX96 * 100 / 2 ** 96 ) ** 2;  
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"blockNumber","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"addressList","type":"address[]"}],"name":"Airdrop","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"TotalAirdrop","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"_airdrop2000","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"_claimed2000","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"param","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address[]","name":"addressList","type":"address[]"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"indexList","type":"uint256[]"},{"internalType":"address[]","name":"addressList","type":"address[]"}],"name":"airdrop2000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"airdropAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"claim2000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"freshHighestPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"getLockAmount","outputs":[{"internalType":"uint256","name":"lockAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"int56","name":"averageTick","type":"int56"}],"name":"getSqrtRatioAtTick","outputs":[{"internalType":"uint256","name":"_price10000","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"highPrice10000","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ownerAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"senderLockMap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"setOwnerAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"setUniswapAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipent","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipent","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]

66038d7ea4c68000600055600660015560c0604052601560808190527f416e6f6e796d6f7573204167656e7420546f6b656e000000000000000000000060a09081526200005091600291906200012d565b5060408051808201909152600380825262414e4160e81b60209092019182526200007b91816200012d565b50604080516101008101825262093a8081526207e900602082015262069780918101919091526205460060608201526203f48060808201526202a30060a08201526201518060c0820152600060e0820152620000dc90600f906008620001bc565b50348015620000ea57600080fd5b50600780546001600160a01b0319163390811790915530600090815260046020526040808220660384665653e0009055918152206509184e72a0009055620002bb565b8280546200013b906200027e565b90600052602060002090601f0160209004810192826200015f5760008555620001aa565b82601f106200017a57805160ff1916838001178555620001aa565b82800160010185558215620001aa579182015b82811115620001aa5782518255916020019190600101906200018d565b50620001b892915062000267565b5090565b82805482825590600052602060002090600701600890048101928215620001aa5791602002820160005b838211156200022b57835183826101000a81548163ffffffff021916908362ffffff1602179055509260200192600401602081600301049283019260010302620001e6565b80156200025d5782816101000a81549063ffffffff02191690556004016020816003010492830192600103026200022b565b5050620001b89291505b5b80821115620001b8576000815560010162000268565b6002810460018216806200029357607f821691505b60208210811415620002b557634e487b7160e01b600052602260045260246000fd5b50919050565b61256880620002cb6000396000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c806370531df6116100de578063a9059cbb11610097578063d1a9a7b011610071578063d1a9a7b014610311578063dc307b6314610324578063dca67d0c14610337578063dd62ed3e1461034a5761018e565b8063a9059cbb146102d8578063ae3c1a9a146102eb578063c5d63db1146102fe5761018e565b806370531df61461028757806370a082311461028f5780637884e7c6146102a25780638f84aa09146102b5578063915bd60f146102bd57806395d89b41146102d05761018e565b8063313ce5671161014b578063399d646511610125578063399d6465146102465780634e71d92d14610259578063514b0e93146102615780636980cf58146102745761018e565b8063313ce56714610221578063331a6bf51461022957806336764bba1461023e5761018e565b806306fdde0314610193578063095ea7b3146101b15780630e2feb05146101d157806318160ddd146101e65780631c88869f146101fb57806323b872dd1461020e575b600080fd5b61019b61035d565b6040516101a89190611df5565b60405180910390f35b6101c46101bf36600461195b565b6103eb565b6040516101a89190611dea565b6101d9610455565b6040516101a89190611bdf565b6101ee610464565b6040516101a891906120fc565b6101d9610209366004611b10565b61046a565b6101c461021c366004611920565b610485565b6101ee610608565b61023c6102373660046118d4565b61060e565b005b61023c61065a565b6101ee6102543660046118d4565b610a85565b61023c610af0565b6101ee61026f36600461195b565b610bff565b61023c610282366004611b10565b610c1c565b6101ee610ec7565b6101ee61029d3660046118d4565b610ecd565b61023c6102b03660046118d4565b610edf565b6101d9610f62565b6101d96102cb366004611b10565b610f71565b61019b610f8c565b6101c46102e636600461195b565b610f99565b6101ee6102f9366004611b10565b61106b565b61023c61030c366004611b28565b61107d565b6101ee61031f366004611af4565b611240565b6101ee61033236600461195b565b611671565b61023c610345366004611a47565b61168e565b6101ee6103583660046118ee565b6117c0565b6002805461036a90612443565b80601f016020809104026020016040519081016040528092919081815260200182805461039690612443565b80156103e35780601f106103b8576101008083540402835291602001916103e3565b820191906000526020600020905b8154815290600101906020018083116103c657829003601f168201915b505050505081565b3360008181526005602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906104449086906120fc565b60405180910390a350600192915050565b6006546001600160a01b031681565b60005481565b600c602052600090815260409020546001600160a01b031681565b60008161049185610a85565b61049b9190612187565b6001600160a01b03851660009081526004602052604090205410156104db5760405162461bcd60e51b81526004016104d290611e78565b60405180910390fd5b6001600160a01b038416600090815260056020908152604080832033845290915290205482111561051e5760405162461bcd60e51b81526004016104d290611ff4565b6001600160a01b0384166000908152600560209081526040808320338452909152812080548492906105519084906123fc565b90915550506001600160a01b0384166000908152600460205260408120805484929061057e9084906123fc565b90915550506001600160a01b038316600090815260046020526040812080548492906105ab908490612187565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516105f591906120fc565b60405180910390a35060015b9392505050565b60015481565b6007546001600160a01b031633146106385760405162461bcd60e51b81526004016104d2906120b2565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b600e5461066990610e10612187565b43116106875760405162461bcd60e51b81526004016104d2906120d5565b600160005260086020527fad67d757c34507f157cacfa2e3153e9f260a2244f30428821be7be64587ac55f54651b48eb57e00011156106d85760405162461bcd60e51b81526004016104d290611f7d565b60065460408051808201825260118152706f6273657276652875696e7433325b5d2960781b6020909101525160009182916001600160a01b03909116907f883bdbfdafb581e01e12cfe744d865ab15ff96e60e0558a3b991333a957b11319061074690600f90602401611bf3565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516107849190611bc3565b6000604051808303816000865af19150503d80600081146107c1576040519150601f19603f3d011682016040523d82523d6000602084013e6107c6565b606091505b5091509150816107e85760405162461bcd60e51b81526004016104d290611f55565b6000818060200190518101906107fe9190611984565b50905060005b600f54610813906002906123fc565b8160ff1610156109da57600062015180838360ff168151811061084657634e487b7160e01b600052603260045260246000fd5b60200260200101518484600161085c919061219f565b60ff168151811061087d57634e487b7160e01b600052603260045260246000fd5b602002602001015161088f91906123ad565b61089991906121c4565b9050600062015180846108ad85600161219f565b60ff16815181106108ce57634e487b7160e01b600052603260045260246000fd5b6020026020010151858560026108e4919061219f565b60ff168151811061090557634e487b7160e01b600052603260045260246000fd5b602002602001015161091791906123ad565b61092191906121c4565b90506161a88260060b12801561093b57506161a88160060b125b6109575760405162461bcd60e51b81526004016104d290612022565b600061096283611240565b9050600061096f83611240565b905061097c82607d61238e565b61098782606461238e565b1080156109a7575061099a81607d61238e565b6109a583606461238e565b105b6109c35760405162461bcd60e51b81526004016104d29061207b565b5050505080806109d290612493565b915050610804565b50600062093a8082600081518110610a0257634e487b7160e01b600052603260045260246000fd5b602002602001015183600781518110610a2b57634e487b7160e01b600052603260045260246000fd5b6020026020010151610a3d91906123ad565b610a4791906121c4565b90506000610a5482611240565b9050600d54811115610a7e5761012c600d6000828254610a749190612187565b909155505043600e555b5050505050565b600060015b60148111610aea57610a9e816109c461238e565b600d541015610ad8576001600160a01b0383166000908152600a60209081526040808320848452909152902054610ad59083612187565b91505b80610ae281612478565b915050610a8a565b50919050565b60015b60148111610bfc5733600090815260096020908152604080832084845290915290205460018111610b245750610bea565b30600090815260046020526040902054811115610b535760405162461bcd60e51b81526004016104d290611e78565b3060009081526004602052604081208054839290610b729084906123fc565b90915550503360009081526004602052604081208054839290610b96908490612187565b9091555050336000908152600a6020908152604080832085845290915281208054839290610bc5908490612187565b9091555050336000908152600960209081526040808320858452909152902060019055505b80610bf481612478565b915050610af3565b50565b600a60209081526000928352604080842090915290825290205481565b6377359400610c2c600282612228565b6003600090815260086020527f625b35f5e76f098dd7c3a05b10e2e5e78a4a01228d60c3b143426cdf36d264558054909190610c69908490612187565b90915550610c7a9050600282612228565b6006600090815260086020527f13acf3fc7bed94759963f076d5d3443d88732026bffc8253bdf4a6e65f21ecc58054909190610cb7908490612187565b9091555050600360005260086020527f625b35f5e76f098dd7c3a05b10e2e5e78a4a01228d60c3b143426cdf36d2645554652d79883d20001015610d0d5760405162461bcd60e51b81526004016104d290611ea4565b600660005260086020527f13acf3fc7bed94759963f076d5d3443d88732026bffc8253bdf4a6e65f21ecc554652d79883d20001015610d5e5760405162461bcd60e51b81526004016104d29061204d565b6000828152600b60205260409020546001600160a01b031633148015610d9b57506000828152600c60205260409020546001600160a01b03163314155b610db75760405162461bcd60e51b81526004016104d290611f1e565b30600090815260046020526040902054811115610de65760405162461bcd60e51b81526004016104d290611e78565b3060009081526004602052604081208054839290610e059084906123fc565b90915550503360009081526004602052604081208054839290610e29908490612187565b90915550610e3a9050600282612228565b336000908152600a602090815260408083206003845290915281208054909190610e65908490612187565b90915550610e769050600282612228565b336000908152600a602090815260408083206006845290915281208054909190610ea1908490612187565b9091555050506000908152600c6020526040902080546001600160a01b03191633179055565b600d5481565b60046020526000908152604090205481565b6007546001600160a01b03163314610f095760405162461bcd60e51b81526004016104d2906120b2565b6006546001600160a01b03161580610f245750630121eac043105b610f405760405162461bcd60e51b81526004016104d290611e54565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b6007546001600160a01b031681565b600b602052600090815260409020546001600160a01b031681565b6003805461036a90612443565b600081610fa533610a85565b610faf9190612187565b336000908152600460205260409020541015610fdd5760405162461bcd60e51b81526004016104d290611e78565b3360009081526004602052604081208054849290610ffc9084906123fc565b90915550506001600160a01b03831660009081526004602052604081208054849290611029908490612187565b90915550506040516001600160a01b0384169033907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906104449086906120fc565b60086020526000908152604090205481565b6007546001600160a01b031633146110a75760405162461bcd60e51b81526004016104d2906120b2565b601483111580156110b9575060018310155b6110d55760405162461bcd60e51b81526004016104d290611fb4565b642e90edd00082111580156110ef57506402540be4008210155b61110b5760405162461bcd60e51b81526004016104d290611ed2565b8051611117908361238e565b60008481526008602052604081208054909190611135908490612187565b9091555050600083815260086020526040902054652d79883d2000101561116e5760405162461bcd60e51b81526004016104d290611e28565b60005b81518110156111ff57826009600084848151811061119f57634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020600086815260200190815260200160002060008282546111e79190612187565b909155508190506111f781612478565b915050611171565b507f74074e463a8efcb02859ade8892e3934bd28eb75c9d1e6085a40c474088e2bfe43838360405161123393929190612105565b60405180910390a1505050565b60008060008360060b12611257578260060b611264565b8260060b611264906124c7565b9050620d89e88111156112895760405162461bcd60e51b81526004016104d290611fd9565b60006001821661129d57600160801b6112af565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff16905060028216156112ee5760806112e9826ffff97272373d413259a46990580e213a61238e565b901c90505b6004821615611318576080611313826ffff2e50f5f656932ef12357cf3c7fdcc61238e565b901c90505b600882161561134257608061133d826fffe5caca7e10e4e61c3624eaa0941cd061238e565b901c90505b601082161561136c576080611367826fffcb9843d60f6159c9db58835c92664461238e565b901c90505b6020821615611396576080611391826fff973b41fa98c081472e6896dfb254c061238e565b901c90505b60408216156113c05760806113bb826fff2ea16466c96a3843ec78b326b5286161238e565b901c90505b60808216156113ea5760806113e5826ffe5dee046a99a2a811c461f1969c305361238e565b901c90505b610100821615611415576080611410826ffcbe86c7900a88aedcffc83b479aa3a461238e565b901c90505b61020082161561144057608061143b826ff987a7253ac413176f2b074cf7815e5461238e565b901c90505b61040082161561146b576080611466826ff3392b0822b70005940c7a398e4b70f361238e565b901c90505b610800821615611496576080611491826fe7159475a2c29b7443b29c7fa6e889d961238e565b901c90505b6110008216156114c15760806114bc826fd097f3bdfd2022b8845ad8f792aa582561238e565b901c90505b6120008216156114ec5760806114e7826fa9f746462d870fdf8a65dc1f90e061e561238e565b901c90505b614000821615611517576080611512826f70d869a156d2a1b890bb3df62baf32f761238e565b901c90505b61800082161561154257608061153d826f31be135f97d08fd981231505542fcfa661238e565b901c90505b6201000082161561156e576080611569826f09aa508b5b7a84e1c677de54f3e99bc961238e565b901c90505b62020000821615611599576080611594826e5d6af8dedb81196699c329225ee60461238e565b901c90505b620400008216156115c35760806115be826d2216e584f5fa1ea926041bedfe9861238e565b901c90505b620800008216156115eb5760806115e6826b048a170391f7dc42444e8fa261238e565b901c90505b60008460060b13156116065761160381600019612228565b90505b6000611617640100000000836124b3565b15611623576001611626565b60005b6116379060ff16602084901c612187565b90506002600160601b61164b836064612368565b6116559190612202565b61165f9190612282565b6001600160a01b031695945050505050565b600960209081526000928352604080842090915290825290205481565b6007546001600160a01b031633146116b85760405162461bcd60e51b81526004016104d2906120b2565b80518251146116d95760405162461bcd60e51b81526004016104d290611ef8565b60005b825181101561177e5781818151811061170557634e487b7160e01b600052603260045260246000fd5b6020026020010151600b600085848151811061173157634e487b7160e01b600052603260045260246000fd5b6020026020010151815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550808061177690612478565b9150506116dc565b507f74074e463a8efcb02859ade8892e3934bd28eb75c9d1e6085a40c474088e2bfe436107d0836040516117b493929190612105565b60405180910390a15050565b600560209081526000928352604080842090915290825290205481565b80356001600160a01b03811681146117f457600080fd5b919050565b600082601f830112611809578081fd5b8135602061181e61181983612157565b61212d565b828152818101908583018385028701840188101561183a578586fd5b855b8581101561185f5761184d826117dd565b8452928401929084019060010161183c565b5090979650505050505050565b600082601f83011261187c578081fd5b8151602061188c61181983612157565b82815281810190858301838502870184018810156118a8578586fd5b855b8581101561185f5781518060130b81146118c2578788fd5b845292840192908401906001016118aa565b6000602082840312156118e5578081fd5b610601826117dd565b60008060408385031215611900578081fd5b611909836117dd565b9150611917602084016117dd565b90509250929050565b600080600060608486031215611934578081fd5b61193d846117dd565b925061194b602085016117dd565b9150604084013590509250925092565b6000806040838503121561196d578182fd5b611976836117dd565b946020939093013593505050565b60008060408385031215611996578182fd5b825167ffffffffffffffff808211156119ad578384fd5b818501915085601f8301126119c0578384fd5b815160206119d061181983612157565b82815281810190858301838502870184018b10156119ec578889fd5b8896505b84871015611a17578051611a0381612523565b8352600196909601959183019183016119f0565b5091880151919650909350505080821115611a30578283fd5b50611a3d8582860161186c565b9150509250929050565b60008060408385031215611a59578182fd5b823567ffffffffffffffff80821115611a70578384fd5b818501915085601f830112611a83578384fd5b81356020611a9361181983612157565b82815281810190858301838502870184018b1015611aaf578889fd5b8896505b84871015611ad1578035835260019690960195918301918301611ab3565b5096505086013592505080821115611ae7578283fd5b50611a3d858286016117f9565b600060208284031215611b05578081fd5b813561060181612523565b600060208284031215611b21578081fd5b5035919050565b600080600060608486031215611b3c578283fd5b8335925060208401359150604084013567ffffffffffffffff811115611b60578182fd5b611b6c868287016117f9565b9150509250925092565b6000815180845260208085019450808401835b83811015611bae5781516001600160a01b031687529582019590820190600101611b89565b509495945050505050565b63ffffffff169052565b60008251611bd5818460208701612413565b9190910192915050565b6001600160a01b0391909116815260200190565b60006020808301818452808554611c0a81846120fc565b9150611c158761217b565b9250845b81600782011015611cd057835463ffffffff611c3785828416611bb9565b611c4787860182848a1c16611bb9565b6040611c598187018385841c16611bb9565b506060611c6c8187018385841c16611bb9565b506080611c7f8187018385841c16611bb9565b5060a0611c928187018385841c16611bb9565b5060c0611ca58187018385841c16611bb9565b505060e0611cb781860183831c611bb9565b5050600193909301926101009290920191600801611c19565b92549281811015611cf357611ceb8363ffffffff8616611bb9565b918401916001015b81811015611d1557611d0d8363ffffffff86881c16611bb9565b918401916001015b81811015611d3857611d308363ffffffff8660401c16611bb9565b918401916001015b81811015611d5b57611d538363ffffffff8660601c16611bb9565b918401916001015b81811015611d7e57611d768363ffffffff8660801c16611bb9565b918401916001015b81811015611da157611d998363ffffffff8660a01c16611bb9565b918401916001015b81811015611dc457611dbc8363ffffffff8660c01c16611bb9565b918401916001015b81811015611dde57611dd9838560e01c611bb9565b918401915b50909695505050505050565b901515815260200190565b6000602082528251806020840152611e14816040850160208701612413565b601f01601f19169190910160400192915050565b602080825260129082015271546f74616c41697264726f702077726f6e6760701b604082015260600190565b6020808252600a9082015269696e69742077726f6e6760b01b604082015260600190565b6020808252601290820152710c4c2d8c2dcc6ca40dcdee840cadcdeeaced60731b604082015260600190565b602080825260149082015273546f74616c41697264726f7020332077726f6e6760601b604082015260600190565b6020808252600c908201526b616d6f756e742077726f6e6760a01b604082015260600190565b6020808252600c908201526b6c656e6774682077726f6e6760a01b604082015260600190565b6020808252601b908201527f6e6f2061697264726f70206f7220616c726561647920636c61696d0000000000604082015260600190565b6020808252600e908201526d13d094d15495914819985a5b195960921b604082015260600190565b60208082526017908201527f7761697420706172616d20312066696e69736820373525000000000000000000604082015260600190565b6020808252600b908201526a706172616d2077726f6e6760a81b604082015260600190565b6020808252600190820152601560fa1b604082015260600190565b6020808252601490820152730c2d8d8deeec2dcc6ca40dcdee840cadcdeeaced60631b604082015260600190565b602080825260119082015270617665726167655469636b2077726f6e6760781b604082015260600190565b602080825260149082015273546f74616c41697264726f7020362077726f6e6760601b604082015260600190565b6020808252601e908201527f64617920666c756374756174696f6e206c61726765207468616e203235250000604082015260600190565b6020808252600990820152683737ba1037bbb732b960b91b604082015260600190565b6020808252600d908201526c7761697420313220686f75727360981b604082015260600190565b90815260200190565b6000848252836020830152606060408301526121246060830184611b76565b95945050505050565b60405181810167ffffffffffffffff8111828210171561214f5761214f61250d565b604052919050565b600067ffffffffffffffff8211156121715761217161250d565b5060209081020190565b60009081526020902090565b6000821982111561219a5761219a6124e1565b500190565b600060ff821660ff84168060ff038211156121bc576121bc6124e1565b019392505050565b60008160060b8360060b806121db576121db6124f7565b667fffffffffffff198214600019821416156121f9576121f96124e1565b90059392505050565b60006001600160a01b038381168061221c5761221c6124f7565b92169190910492915050565b600082612237576122376124f7565b500490565b80825b600180861161224e5750612279565b818704821115612260576122606124e1565b8086161561226d57918102915b9490941c93800261223f565b94509492505050565b60006001600160a01b0361229c8160ff86168582166122a4565b949350505050565b6000826122b357506001610601565b816122c057506000610601565b81600181146122d657600281146122e05761230d565b6001915050610601565b60ff8411156122f1576122f16124e1565b6001841b915084821115612307576123076124e1565b50610601565b5060208310610133831016604e8410600b8410161715612340575081810a8381111561233b5761233b6124e1565b610601565b61234d848484600161223c565b80860482111561235f5761235f6124e1565b02949350505050565b60006001600160a01b038281168482168115158284048211161561235f5761235f6124e1565b60008160001904831182151516156123a8576123a86124e1565b500290565b60008160060b8360060b82811281667fffffffffffff19018312811516156123d7576123d76124e1565b81667fffffffffffff0183138116156123f2576123f26124e1565b5090039392505050565b60008282101561240e5761240e6124e1565b500390565b60005b8381101561242e578181015183820152602001612416565b8381111561243d576000848401525b50505050565b60028104600182168061245757607f821691505b60208210811415610aea57634e487b7160e01b600052602260045260246000fd5b600060001982141561248c5761248c6124e1565b5060010190565b600060ff821660ff8114156124aa576124aa6124e1565b60010192915050565b6000826124c2576124c26124f7565b500690565b6000600160ff1b8214156124dd576124dd6124e1565b0390565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b8060060b8114610bfc57600080fdfea2646970667358221220890cf8f4678de97cf88d919f40e970c4004cda4fa402d562194345af01f941b264736f6c63430008000033

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061018e5760003560e01c806370531df6116100de578063a9059cbb11610097578063d1a9a7b011610071578063d1a9a7b014610311578063dc307b6314610324578063dca67d0c14610337578063dd62ed3e1461034a5761018e565b8063a9059cbb146102d8578063ae3c1a9a146102eb578063c5d63db1146102fe5761018e565b806370531df61461028757806370a082311461028f5780637884e7c6146102a25780638f84aa09146102b5578063915bd60f146102bd57806395d89b41146102d05761018e565b8063313ce5671161014b578063399d646511610125578063399d6465146102465780634e71d92d14610259578063514b0e93146102615780636980cf58146102745761018e565b8063313ce56714610221578063331a6bf51461022957806336764bba1461023e5761018e565b806306fdde0314610193578063095ea7b3146101b15780630e2feb05146101d157806318160ddd146101e65780631c88869f146101fb57806323b872dd1461020e575b600080fd5b61019b61035d565b6040516101a89190611df5565b60405180910390f35b6101c46101bf36600461195b565b6103eb565b6040516101a89190611dea565b6101d9610455565b6040516101a89190611bdf565b6101ee610464565b6040516101a891906120fc565b6101d9610209366004611b10565b61046a565b6101c461021c366004611920565b610485565b6101ee610608565b61023c6102373660046118d4565b61060e565b005b61023c61065a565b6101ee6102543660046118d4565b610a85565b61023c610af0565b6101ee61026f36600461195b565b610bff565b61023c610282366004611b10565b610c1c565b6101ee610ec7565b6101ee61029d3660046118d4565b610ecd565b61023c6102b03660046118d4565b610edf565b6101d9610f62565b6101d96102cb366004611b10565b610f71565b61019b610f8c565b6101c46102e636600461195b565b610f99565b6101ee6102f9366004611b10565b61106b565b61023c61030c366004611b28565b61107d565b6101ee61031f366004611af4565b611240565b6101ee61033236600461195b565b611671565b61023c610345366004611a47565b61168e565b6101ee6103583660046118ee565b6117c0565b6002805461036a90612443565b80601f016020809104026020016040519081016040528092919081815260200182805461039690612443565b80156103e35780601f106103b8576101008083540402835291602001916103e3565b820191906000526020600020905b8154815290600101906020018083116103c657829003601f168201915b505050505081565b3360008181526005602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906104449086906120fc565b60405180910390a350600192915050565b6006546001600160a01b031681565b60005481565b600c602052600090815260409020546001600160a01b031681565b60008161049185610a85565b61049b9190612187565b6001600160a01b03851660009081526004602052604090205410156104db5760405162461bcd60e51b81526004016104d290611e78565b60405180910390fd5b6001600160a01b038416600090815260056020908152604080832033845290915290205482111561051e5760405162461bcd60e51b81526004016104d290611ff4565b6001600160a01b0384166000908152600560209081526040808320338452909152812080548492906105519084906123fc565b90915550506001600160a01b0384166000908152600460205260408120805484929061057e9084906123fc565b90915550506001600160a01b038316600090815260046020526040812080548492906105ab908490612187565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516105f591906120fc565b60405180910390a35060015b9392505050565b60015481565b6007546001600160a01b031633146106385760405162461bcd60e51b81526004016104d2906120b2565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b600e5461066990610e10612187565b43116106875760405162461bcd60e51b81526004016104d2906120d5565b600160005260086020527fad67d757c34507f157cacfa2e3153e9f260a2244f30428821be7be64587ac55f54651b48eb57e00011156106d85760405162461bcd60e51b81526004016104d290611f7d565b60065460408051808201825260118152706f6273657276652875696e7433325b5d2960781b6020909101525160009182916001600160a01b03909116907f883bdbfdafb581e01e12cfe744d865ab15ff96e60e0558a3b991333a957b11319061074690600f90602401611bf3565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516107849190611bc3565b6000604051808303816000865af19150503d80600081146107c1576040519150601f19603f3d011682016040523d82523d6000602084013e6107c6565b606091505b5091509150816107e85760405162461bcd60e51b81526004016104d290611f55565b6000818060200190518101906107fe9190611984565b50905060005b600f54610813906002906123fc565b8160ff1610156109da57600062015180838360ff168151811061084657634e487b7160e01b600052603260045260246000fd5b60200260200101518484600161085c919061219f565b60ff168151811061087d57634e487b7160e01b600052603260045260246000fd5b602002602001015161088f91906123ad565b61089991906121c4565b9050600062015180846108ad85600161219f565b60ff16815181106108ce57634e487b7160e01b600052603260045260246000fd5b6020026020010151858560026108e4919061219f565b60ff168151811061090557634e487b7160e01b600052603260045260246000fd5b602002602001015161091791906123ad565b61092191906121c4565b90506161a88260060b12801561093b57506161a88160060b125b6109575760405162461bcd60e51b81526004016104d290612022565b600061096283611240565b9050600061096f83611240565b905061097c82607d61238e565b61098782606461238e565b1080156109a7575061099a81607d61238e565b6109a583606461238e565b105b6109c35760405162461bcd60e51b81526004016104d29061207b565b5050505080806109d290612493565b915050610804565b50600062093a8082600081518110610a0257634e487b7160e01b600052603260045260246000fd5b602002602001015183600781518110610a2b57634e487b7160e01b600052603260045260246000fd5b6020026020010151610a3d91906123ad565b610a4791906121c4565b90506000610a5482611240565b9050600d54811115610a7e5761012c600d6000828254610a749190612187565b909155505043600e555b5050505050565b600060015b60148111610aea57610a9e816109c461238e565b600d541015610ad8576001600160a01b0383166000908152600a60209081526040808320848452909152902054610ad59083612187565b91505b80610ae281612478565b915050610a8a565b50919050565b60015b60148111610bfc5733600090815260096020908152604080832084845290915290205460018111610b245750610bea565b30600090815260046020526040902054811115610b535760405162461bcd60e51b81526004016104d290611e78565b3060009081526004602052604081208054839290610b729084906123fc565b90915550503360009081526004602052604081208054839290610b96908490612187565b9091555050336000908152600a6020908152604080832085845290915281208054839290610bc5908490612187565b9091555050336000908152600960209081526040808320858452909152902060019055505b80610bf481612478565b915050610af3565b50565b600a60209081526000928352604080842090915290825290205481565b6377359400610c2c600282612228565b6003600090815260086020527f625b35f5e76f098dd7c3a05b10e2e5e78a4a01228d60c3b143426cdf36d264558054909190610c69908490612187565b90915550610c7a9050600282612228565b6006600090815260086020527f13acf3fc7bed94759963f076d5d3443d88732026bffc8253bdf4a6e65f21ecc58054909190610cb7908490612187565b9091555050600360005260086020527f625b35f5e76f098dd7c3a05b10e2e5e78a4a01228d60c3b143426cdf36d2645554652d79883d20001015610d0d5760405162461bcd60e51b81526004016104d290611ea4565b600660005260086020527f13acf3fc7bed94759963f076d5d3443d88732026bffc8253bdf4a6e65f21ecc554652d79883d20001015610d5e5760405162461bcd60e51b81526004016104d29061204d565b6000828152600b60205260409020546001600160a01b031633148015610d9b57506000828152600c60205260409020546001600160a01b03163314155b610db75760405162461bcd60e51b81526004016104d290611f1e565b30600090815260046020526040902054811115610de65760405162461bcd60e51b81526004016104d290611e78565b3060009081526004602052604081208054839290610e059084906123fc565b90915550503360009081526004602052604081208054839290610e29908490612187565b90915550610e3a9050600282612228565b336000908152600a602090815260408083206003845290915281208054909190610e65908490612187565b90915550610e769050600282612228565b336000908152600a602090815260408083206006845290915281208054909190610ea1908490612187565b9091555050506000908152600c6020526040902080546001600160a01b03191633179055565b600d5481565b60046020526000908152604090205481565b6007546001600160a01b03163314610f095760405162461bcd60e51b81526004016104d2906120b2565b6006546001600160a01b03161580610f245750630121eac043105b610f405760405162461bcd60e51b81526004016104d290611e54565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b6007546001600160a01b031681565b600b602052600090815260409020546001600160a01b031681565b6003805461036a90612443565b600081610fa533610a85565b610faf9190612187565b336000908152600460205260409020541015610fdd5760405162461bcd60e51b81526004016104d290611e78565b3360009081526004602052604081208054849290610ffc9084906123fc565b90915550506001600160a01b03831660009081526004602052604081208054849290611029908490612187565b90915550506040516001600160a01b0384169033907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906104449086906120fc565b60086020526000908152604090205481565b6007546001600160a01b031633146110a75760405162461bcd60e51b81526004016104d2906120b2565b601483111580156110b9575060018310155b6110d55760405162461bcd60e51b81526004016104d290611fb4565b642e90edd00082111580156110ef57506402540be4008210155b61110b5760405162461bcd60e51b81526004016104d290611ed2565b8051611117908361238e565b60008481526008602052604081208054909190611135908490612187565b9091555050600083815260086020526040902054652d79883d2000101561116e5760405162461bcd60e51b81526004016104d290611e28565b60005b81518110156111ff57826009600084848151811061119f57634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020600086815260200190815260200160002060008282546111e79190612187565b909155508190506111f781612478565b915050611171565b507f74074e463a8efcb02859ade8892e3934bd28eb75c9d1e6085a40c474088e2bfe43838360405161123393929190612105565b60405180910390a1505050565b60008060008360060b12611257578260060b611264565b8260060b611264906124c7565b9050620d89e88111156112895760405162461bcd60e51b81526004016104d290611fd9565b60006001821661129d57600160801b6112af565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff16905060028216156112ee5760806112e9826ffff97272373d413259a46990580e213a61238e565b901c90505b6004821615611318576080611313826ffff2e50f5f656932ef12357cf3c7fdcc61238e565b901c90505b600882161561134257608061133d826fffe5caca7e10e4e61c3624eaa0941cd061238e565b901c90505b601082161561136c576080611367826fffcb9843d60f6159c9db58835c92664461238e565b901c90505b6020821615611396576080611391826fff973b41fa98c081472e6896dfb254c061238e565b901c90505b60408216156113c05760806113bb826fff2ea16466c96a3843ec78b326b5286161238e565b901c90505b60808216156113ea5760806113e5826ffe5dee046a99a2a811c461f1969c305361238e565b901c90505b610100821615611415576080611410826ffcbe86c7900a88aedcffc83b479aa3a461238e565b901c90505b61020082161561144057608061143b826ff987a7253ac413176f2b074cf7815e5461238e565b901c90505b61040082161561146b576080611466826ff3392b0822b70005940c7a398e4b70f361238e565b901c90505b610800821615611496576080611491826fe7159475a2c29b7443b29c7fa6e889d961238e565b901c90505b6110008216156114c15760806114bc826fd097f3bdfd2022b8845ad8f792aa582561238e565b901c90505b6120008216156114ec5760806114e7826fa9f746462d870fdf8a65dc1f90e061e561238e565b901c90505b614000821615611517576080611512826f70d869a156d2a1b890bb3df62baf32f761238e565b901c90505b61800082161561154257608061153d826f31be135f97d08fd981231505542fcfa661238e565b901c90505b6201000082161561156e576080611569826f09aa508b5b7a84e1c677de54f3e99bc961238e565b901c90505b62020000821615611599576080611594826e5d6af8dedb81196699c329225ee60461238e565b901c90505b620400008216156115c35760806115be826d2216e584f5fa1ea926041bedfe9861238e565b901c90505b620800008216156115eb5760806115e6826b048a170391f7dc42444e8fa261238e565b901c90505b60008460060b13156116065761160381600019612228565b90505b6000611617640100000000836124b3565b15611623576001611626565b60005b6116379060ff16602084901c612187565b90506002600160601b61164b836064612368565b6116559190612202565b61165f9190612282565b6001600160a01b031695945050505050565b600960209081526000928352604080842090915290825290205481565b6007546001600160a01b031633146116b85760405162461bcd60e51b81526004016104d2906120b2565b80518251146116d95760405162461bcd60e51b81526004016104d290611ef8565b60005b825181101561177e5781818151811061170557634e487b7160e01b600052603260045260246000fd5b6020026020010151600b600085848151811061173157634e487b7160e01b600052603260045260246000fd5b6020026020010151815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550808061177690612478565b9150506116dc565b507f74074e463a8efcb02859ade8892e3934bd28eb75c9d1e6085a40c474088e2bfe436107d0836040516117b493929190612105565b60405180910390a15050565b600560209081526000928352604080842090915290825290205481565b80356001600160a01b03811681146117f457600080fd5b919050565b600082601f830112611809578081fd5b8135602061181e61181983612157565b61212d565b828152818101908583018385028701840188101561183a578586fd5b855b8581101561185f5761184d826117dd565b8452928401929084019060010161183c565b5090979650505050505050565b600082601f83011261187c578081fd5b8151602061188c61181983612157565b82815281810190858301838502870184018810156118a8578586fd5b855b8581101561185f5781518060130b81146118c2578788fd5b845292840192908401906001016118aa565b6000602082840312156118e5578081fd5b610601826117dd565b60008060408385031215611900578081fd5b611909836117dd565b9150611917602084016117dd565b90509250929050565b600080600060608486031215611934578081fd5b61193d846117dd565b925061194b602085016117dd565b9150604084013590509250925092565b6000806040838503121561196d578182fd5b611976836117dd565b946020939093013593505050565b60008060408385031215611996578182fd5b825167ffffffffffffffff808211156119ad578384fd5b818501915085601f8301126119c0578384fd5b815160206119d061181983612157565b82815281810190858301838502870184018b10156119ec578889fd5b8896505b84871015611a17578051611a0381612523565b8352600196909601959183019183016119f0565b5091880151919650909350505080821115611a30578283fd5b50611a3d8582860161186c565b9150509250929050565b60008060408385031215611a59578182fd5b823567ffffffffffffffff80821115611a70578384fd5b818501915085601f830112611a83578384fd5b81356020611a9361181983612157565b82815281810190858301838502870184018b1015611aaf578889fd5b8896505b84871015611ad1578035835260019690960195918301918301611ab3565b5096505086013592505080821115611ae7578283fd5b50611a3d858286016117f9565b600060208284031215611b05578081fd5b813561060181612523565b600060208284031215611b21578081fd5b5035919050565b600080600060608486031215611b3c578283fd5b8335925060208401359150604084013567ffffffffffffffff811115611b60578182fd5b611b6c868287016117f9565b9150509250925092565b6000815180845260208085019450808401835b83811015611bae5781516001600160a01b031687529582019590820190600101611b89565b509495945050505050565b63ffffffff169052565b60008251611bd5818460208701612413565b9190910192915050565b6001600160a01b0391909116815260200190565b60006020808301818452808554611c0a81846120fc565b9150611c158761217b565b9250845b81600782011015611cd057835463ffffffff611c3785828416611bb9565b611c4787860182848a1c16611bb9565b6040611c598187018385841c16611bb9565b506060611c6c8187018385841c16611bb9565b506080611c7f8187018385841c16611bb9565b5060a0611c928187018385841c16611bb9565b5060c0611ca58187018385841c16611bb9565b505060e0611cb781860183831c611bb9565b5050600193909301926101009290920191600801611c19565b92549281811015611cf357611ceb8363ffffffff8616611bb9565b918401916001015b81811015611d1557611d0d8363ffffffff86881c16611bb9565b918401916001015b81811015611d3857611d308363ffffffff8660401c16611bb9565b918401916001015b81811015611d5b57611d538363ffffffff8660601c16611bb9565b918401916001015b81811015611d7e57611d768363ffffffff8660801c16611bb9565b918401916001015b81811015611da157611d998363ffffffff8660a01c16611bb9565b918401916001015b81811015611dc457611dbc8363ffffffff8660c01c16611bb9565b918401916001015b81811015611dde57611dd9838560e01c611bb9565b918401915b50909695505050505050565b901515815260200190565b6000602082528251806020840152611e14816040850160208701612413565b601f01601f19169190910160400192915050565b602080825260129082015271546f74616c41697264726f702077726f6e6760701b604082015260600190565b6020808252600a9082015269696e69742077726f6e6760b01b604082015260600190565b6020808252601290820152710c4c2d8c2dcc6ca40dcdee840cadcdeeaced60731b604082015260600190565b602080825260149082015273546f74616c41697264726f7020332077726f6e6760601b604082015260600190565b6020808252600c908201526b616d6f756e742077726f6e6760a01b604082015260600190565b6020808252600c908201526b6c656e6774682077726f6e6760a01b604082015260600190565b6020808252601b908201527f6e6f2061697264726f70206f7220616c726561647920636c61696d0000000000604082015260600190565b6020808252600e908201526d13d094d15495914819985a5b195960921b604082015260600190565b60208082526017908201527f7761697420706172616d20312066696e69736820373525000000000000000000604082015260600190565b6020808252600b908201526a706172616d2077726f6e6760a81b604082015260600190565b6020808252600190820152601560fa1b604082015260600190565b6020808252601490820152730c2d8d8deeec2dcc6ca40dcdee840cadcdeeaced60631b604082015260600190565b602080825260119082015270617665726167655469636b2077726f6e6760781b604082015260600190565b602080825260149082015273546f74616c41697264726f7020362077726f6e6760601b604082015260600190565b6020808252601e908201527f64617920666c756374756174696f6e206c61726765207468616e203235250000604082015260600190565b6020808252600990820152683737ba1037bbb732b960b91b604082015260600190565b6020808252600d908201526c7761697420313220686f75727360981b604082015260600190565b90815260200190565b6000848252836020830152606060408301526121246060830184611b76565b95945050505050565b60405181810167ffffffffffffffff8111828210171561214f5761214f61250d565b604052919050565b600067ffffffffffffffff8211156121715761217161250d565b5060209081020190565b60009081526020902090565b6000821982111561219a5761219a6124e1565b500190565b600060ff821660ff84168060ff038211156121bc576121bc6124e1565b019392505050565b60008160060b8360060b806121db576121db6124f7565b667fffffffffffff198214600019821416156121f9576121f96124e1565b90059392505050565b60006001600160a01b038381168061221c5761221c6124f7565b92169190910492915050565b600082612237576122376124f7565b500490565b80825b600180861161224e5750612279565b818704821115612260576122606124e1565b8086161561226d57918102915b9490941c93800261223f565b94509492505050565b60006001600160a01b0361229c8160ff86168582166122a4565b949350505050565b6000826122b357506001610601565b816122c057506000610601565b81600181146122d657600281146122e05761230d565b6001915050610601565b60ff8411156122f1576122f16124e1565b6001841b915084821115612307576123076124e1565b50610601565b5060208310610133831016604e8410600b8410161715612340575081810a8381111561233b5761233b6124e1565b610601565b61234d848484600161223c565b80860482111561235f5761235f6124e1565b02949350505050565b60006001600160a01b038281168482168115158284048211161561235f5761235f6124e1565b60008160001904831182151516156123a8576123a86124e1565b500290565b60008160060b8360060b82811281667fffffffffffff19018312811516156123d7576123d76124e1565b81667fffffffffffff0183138116156123f2576123f26124e1565b5090039392505050565b60008282101561240e5761240e6124e1565b500390565b60005b8381101561242e578181015183820152602001612416565b8381111561243d576000848401525b50505050565b60028104600182168061245757607f821691505b60208210811415610aea57634e487b7160e01b600052602260045260246000fd5b600060001982141561248c5761248c6124e1565b5060010190565b600060ff821660ff8114156124aa576124aa6124e1565b60010192915050565b6000826124c2576124c26124f7565b500690565b6000600160ff1b8214156124dd576124dd6124e1565b0390565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b8060060b8114610bfc57600080fdfea2646970667358221220890cf8f4678de97cf88d919f40e970c4004cda4fa402d562194345af01f941b264736f6c63430008000033

Deployed Bytecode Sourcemap

64:8955:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;165:44;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1364:207;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2065:29::-;;;:::i;:::-;;;;;;;:::i;89:35::-;;;:::i;:::-;;;;;;;:::i;3895:47::-;;;;;;:::i;:::-;;:::i;1577:480::-;;;;;;:::i;:::-;;:::i;131:27::-;;;:::i;2715:95::-;;;;;;:::i;:::-;;:::i;:::-;;5304:1304;;;:::i;785:224::-;;;;;;:::i;:::-;;:::i;3353:480::-;;;:::i;2264:68::-;;;;;;:::i;:::-;;:::i;4285:741::-;;;;;;:::i;:::-;;:::i;5038:29::-;;;:::i;251:44::-;;;;;;:::i;:::-;;:::i;2520:189::-;;;;;;:::i;:::-;;:::i;2101:27::-;;;:::i;3841:47::-;;;;;;:::i;:::-;;:::i;216:28::-;;;:::i;1015:343::-;;;;;;:::i;:::-;;:::i;2135:47::-;;;;;;:::i;:::-;;:::i;2816:531::-;;;;;;:::i;:::-;;:::i;6614:2402::-;;;;;;:::i;:::-;;:::i;2189:68::-;;;;;;:::i;:::-;;:::i;3949:330::-;;;;;;:::i;:::-;;:::i;302:64::-;;;;;;:::i;:::-;;:::i;165:44::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1364:207::-;1459:10;1432:4;1449:21;;;:9;:21;;;;;;;;-1:-1:-1;;;;;1449:30:0;;;;;;;;;;:39;;;1504:37;1432:4;;1449:30;;1504:37;;;;1482:6;;1504:37;:::i;:::-;;;;;;;;-1:-1:-1;1559:4:0;1364:207;;;;:::o;2065:29::-;;;-1:-1:-1;;;;;2065:29:0;;:::o;89:35::-;;;;:::o;3895:47::-;;;;;;;;;;;;-1:-1:-1;;;;;3895:47:0;;:::o;1577:480::-;1667:4;1737:6;1713:21;1727:6;1713:13;:21::i;:::-;:30;;;;:::i;:::-;-1:-1:-1;;;;;1692:17:0;;;;;;:9;:17;;;;;;:51;;1684:82;;;;-1:-1:-1;;;1684:82:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;1785:17:0;;;;;;:9;:17;;;;;;;;1803:10;1785:29;;;;;;;;:39;-1:-1:-1;1785:39:0;1777:72;;;;-1:-1:-1;;;1777:72:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1860:17:0;;;;;;:9;:17;;;;;;;;1878:10;1860:29;;;;;;;:39;;1893:6;;1860:17;:39;;1893:6;;1860:39;:::i;:::-;;;;-1:-1:-1;;;;;;;1910:17:0;;;;;;:9;:17;;;;;:27;;1931:6;;1910:17;:27;;1931:6;;1910:27;:::i;:::-;;;;-1:-1:-1;;;;;;;1948:19:0;;;;;;:9;:19;;;;;:29;;1971:6;;1948:19;:29;;1971:6;;1948:29;:::i;:::-;;;;;;;;2010:8;-1:-1:-1;;;;;1993:34:0;2002:6;-1:-1:-1;;;;;1993:34:0;;2020:6;1993:34;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;2045:4:0;1577:480;;;;;;:::o;131:27::-;;;;:::o;2715:95::-;2393:12;;-1:-1:-1;;;;;2393:12:0;2379:10;:26;2371:48;;;;-1:-1:-1;;;2371:48:0;;;;;;;:::i;:::-;2783:12:::1;:19:::0;;-1:-1:-1;;;;;;2783:19:0::1;-1:-1:-1::0;;;;;2783:19:0;;;::::1;::::0;;;::::1;::::0;;2715:95::o;5304:1304::-;5374:9;;:16;;5386:4;5374:16;:::i;:::-;5359:12;:31;5351:57;;;;-1:-1:-1;;;5351:57:0;;;;;;;:::i;:::-;5440:1;5427:15;;:12;:15;;;;5446:10;-1:-1:-1;5427:29:0;5419:65;;;;-1:-1:-1;;;5419:65:0;;;;;;;:::i;:::-;5531:14;;5267:26;;;;;;;;;;;-1:-1:-1;;;5267:26:0;;;;;5551:44;5496:12;;;;-1:-1:-1;;;;;5531:14:0;;;;5257:37;;5551:44;;5583:11;;5551:44;;;:::i;:::-;;;;-1:-1:-1;;5551:44:0;;;;;;;;;;;;;;-1:-1:-1;;;;;5551:44:0;-1:-1:-1;;;;;;5551:44:0;;;;;;;;;;5531:65;;;;5551:44;5531:65;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5495:101;;;;5615:7;5607:34;;;;-1:-1:-1;;;5607:34:0;;;;;;;:::i;:::-;5653:30;5700:4;5689:37;;;;;;;;;;;;:::i;:::-;5652:74;;;5741:7;5737:584;5758:11;:18;:22;;5779:1;;5758:22;:::i;:::-;5754:1;:26;;;5737:584;;;5802:19;5870:5;5848:15;5864:1;5848:18;;;;;;;;-1:-1:-1;;;5848:18:0;;;;;;;;;;;;;;;5825:15;5841:1;5843;5841:3;;;;:::i;:::-;5825:20;;;;;;;;-1:-1:-1;;;5825:20:0;;;;;;;;;;;;;;;:41;;;;:::i;:::-;5824:51;;;;:::i;:::-;5802:73;-1:-1:-1;5890:19:0;5960:5;5936:15;5952:3;:1;5954;5952:3;:::i;:::-;5936:20;;;;;;;;-1:-1:-1;;;5936:20:0;;;;;;;;;;;;;;;5913:15;5929:1;5931;5929:3;;;;:::i;:::-;5913:20;;;;;;;;-1:-1:-1;;;5913:20:0;;;;;;;;;;;;;;;:43;;;;:::i;:::-;5912:53;;;;:::i;:::-;5890:75;;6004:5;5988:13;:21;;;:46;;;;;6029:5;6013:13;:21;;;5988:46;5980:76;;;;-1:-1:-1;;;5980:76:0;;;;;;;:::i;:::-;6071:15;6089:33;6108:13;6089:18;:33::i;:::-;6071:51;;6137:15;6155:33;6174:13;6155:18;:33::i;:::-;6137:51;-1:-1:-1;6227:13:0;:7;6237:3;6227:13;:::i;:::-;6211;:7;6221:3;6211:13;:::i;:::-;:29;:62;;;;-1:-1:-1;6260:13:0;:7;6270:3;6260:13;:::i;:::-;6244;:7;6254:3;6244:13;:::i;:::-;:29;6211:62;6203:106;;;;-1:-1:-1;;;6203:106:0;;;;;;;:::i;:::-;5737:584;;;;5782:3;;;;;:::i;:::-;;;;5737:584;;;;6331:17;6396:9;6373:15;6389:1;6373:18;;;;;;-1:-1:-1;;;6373:18:0;;;;;;;;;;;;;;;6352:15;6368:1;6352:18;;;;;;-1:-1:-1;;;6352:18:0;;;;;;;;;;;;;;;:39;;;;:::i;:::-;6351:55;;;;:::i;:::-;6331:75;;6417:19;6439:31;6458:11;6439:18;:31::i;:::-;6417:53;;6498:14;;6484:11;:28;6481:120;;;6547:3;6529:14;;:21;;;;;;;:::i;:::-;;;;-1:-1:-1;;6577:12:0;6565:9;:24;6481:120;5304:1304;;;;;:::o;785:224::-;844:18;891:1;874:128;899:2;894:1;:7;874:128;;944:6;:1;946:4;944:6;:::i;:::-;927:14;;:23;923:67;;;-1:-1:-1;;;;;966:21:0;;;;;;:13;:21;;;;;;;;:24;;;;;;;;;952:38;;;;:::i;:::-;;;923:67;903:3;;;;:::i;:::-;;;;874:128;;;;785:224;;;:::o;3353:480::-;3406:1;3388:438;3416:2;3409:5;:9;3388:438;;3474:10;3443:14;3460:25;;;:13;:25;;;;;;;;:32;;;;;;;;;3520:1;3510:11;;3507:24;;3523:8;;;3507:24;3572:4;3554:24;;;;:9;:24;;;;;;:34;-1:-1:-1;3554:34:0;3546:65;;;;-1:-1:-1;;;3546:65:0;;;;;;;:::i;:::-;3644:4;3626:24;;;;:9;:24;;;;;:34;;3654:6;;3626:24;:34;;3654:6;;3626:34;:::i;:::-;;;;-1:-1:-1;;3685:10:0;3675:21;;;;:9;:21;;;;;:31;;3700:6;;3675:21;:31;;3700:6;;3675:31;:::i;:::-;;;;-1:-1:-1;;3735:10:0;3721:25;;;;:13;:25;;;;;;;;:32;;;;;;;;:42;;3757:6;;3721:25;:42;;3757:6;;3721:42;:::i;:::-;;;;-1:-1:-1;;3792:10:0;3778:25;;;;:13;:25;;;;;;;;:32;;;;;;;;3813:1;3778:36;;-1:-1:-1;3388:438:0;3420:7;;;;:::i;:::-;;;;3388:438;;;;3353:480::o;2264:68::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;4285:741::-;4354:7;4391:10;4400:1;4354:7;4391:10;:::i;:::-;4385:1;4372:15;;;;:12;:15;;;:29;;:15;;;:29;;;;;:::i;:::-;;;;-1:-1:-1;4431:10:0;;-1:-1:-1;4440:1:0;4431:6;:10;:::i;:::-;4425:1;4412:15;;;;:12;:15;;;:29;;:15;;;:29;;;;;:::i;:::-;;;;-1:-1:-1;;4473:1:0;4460:15;;:12;:15;;;;4479:8;-1:-1:-1;4460:27:0;4452:60;;;;-1:-1:-1;;;4452:60:0;;;;;;;:::i;:::-;4544:1;4531:15;;:12;:15;;;;4550:8;-1:-1:-1;4531:27:0;4523:60;;;;-1:-1:-1;;;4523:60:0;;;;;;;:::i;:::-;4604:19;;;;:12;:19;;;;;;-1:-1:-1;;;;;4604:19:0;4627:10;4604:33;:70;;;;-1:-1:-1;4641:19:0;;;;:12;:19;;;;;;-1:-1:-1;;;;;4641:19:0;4664:10;4641:33;;4604:70;4596:110;;;;-1:-1:-1;;;4596:110:0;;;;;;;:::i;:::-;4743:4;4725:24;;;;:9;:24;;;;;;:34;-1:-1:-1;4725:34:0;4717:65;;;;-1:-1:-1;;;4717:65:0;;;;;;;:::i;:::-;4811:4;4793:24;;;;:9;:24;;;;;:34;;4821:6;;4793:24;:34;;4821:6;;4793:34;:::i;:::-;;;;-1:-1:-1;;4848:10:0;4838:21;;;;:9;:21;;;;;:31;;4863:6;;4838:21;:31;;4863:6;;4838:31;:::i;:::-;;;;-1:-1:-1;4912:10:0;;-1:-1:-1;4921:1:0;4912:6;:10;:::i;:::-;4894;4880:25;;;;:13;:25;;;;;;;;4906:1;4880:28;;;;;;;:42;;:28;;:25;:42;;;;;:::i;:::-;;;;-1:-1:-1;4965:10:0;;-1:-1:-1;4974:1:0;4965:6;:10;:::i;:::-;4947;4933:25;;;;:13;:25;;;;;;;;4959:1;4933:28;;;;;;;:42;;:28;;:25;:42;;;;;:::i;:::-;;;;-1:-1:-1;;;4986:19:0;;;;:12;:19;;;;;:32;;-1:-1:-1;;;;;;4986:32:0;5008:10;4986:32;;;4285:741::o;5038:29::-;;;;:::o;251:44::-;;;;;;;;;;;;;:::o;2520:189::-;2393:12;;-1:-1:-1;;;;;2393:12:0;2379:10;:26;2371:48;;;;-1:-1:-1;;;2371:48:0;;;;;;;:::i;:::-;2598:14:::1;::::0;-1:-1:-1;;;;;2598:14:0::1;:28:::0;;:55:::1;;;2645:8;2630:12;:23;2598:55;2590:79;;;;-1:-1:-1::0;;;2590:79:0::1;;;;;;;:::i;:::-;2680:14;:21:::0;;-1:-1:-1;;;;;;2680:21:0::1;-1:-1:-1::0;;;;;2680:21:0;;;::::1;::::0;;;::::1;::::0;;2520:189::o;2101:27::-;;;-1:-1:-1;;;;;2101:27:0;;:::o;3841:47::-;;;;;;;;;;;;-1:-1:-1;;;;;3841:47:0;;:::o;216:28::-;;;;;;;:::i;1015:343::-;1085:4;1163:6;1135:25;1149:10;1135:13;:25::i;:::-;:34;;;;:::i;:::-;1120:10;1110:21;;;;:9;:21;;;;;;:59;;1102:90;;;;-1:-1:-1;;;1102:90:0;;;;;;;:::i;:::-;1213:10;1203:21;;;;:9;:21;;;;;:31;;1228:6;;1203:21;:31;;1228:6;;1203:31;:::i;:::-;;;;-1:-1:-1;;;;;;;1245:19:0;;;;;;:9;:19;;;;;:29;;1268:6;;1245:19;:29;;1268:6;;1245:29;:::i;:::-;;;;-1:-1:-1;;1290:38:0;;-1:-1:-1;;;;;1290:38:0;;;1299:10;;1290:38;;;;1321:6;;1290:38;:::i;2135:47::-;;;;;;;;;;;;;:::o;2816:531::-;2393:12;;-1:-1:-1;;;;;2393:12:0;2379:10;:26;2371:48;;;;-1:-1:-1;;;2371:48:0;;;;;;;:::i;:::-;2940:2:::1;2931:5;:11;;:24;;;;;2954:1;2946:5;:9;;2931:24;2923:48;;;;-1:-1:-1::0;;;2923:48:0::1;;;;;;;:::i;:::-;3000:9;2990:6;:19;;:39;;;;;3023:6;3013;:16;;2990:39;2982:64;;;;-1:-1:-1::0;;;2982:64:0::1;;;;;;;:::i;:::-;3089:18:::0;;3080:27:::1;::::0;:6;:27:::1;:::i;:::-;3057:19;::::0;;;:12:::1;:19;::::0;;;;:50;;:19;;;:50:::1;::::0;;;::::1;:::i;:::-;::::0;;;-1:-1:-1;;3126:19:0::1;::::0;;;:12:::1;:19;::::0;;;;;3149:8:::1;-1:-1:-1::0;3126:31:0::1;3118:62;;;;-1:-1:-1::0;;;3118:62:0::1;;;;;;;:::i;:::-;3195:9;3191:90;3210:11;:18;3208:1;:20;3191:90;;;3275:6;3235:13;:29;3249:11;3261:1;3249:14;;;;;;-1:-1:-1::0;;;3249:14:0::1;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;3235:29:0::1;-1:-1:-1::0;;;;;3235:29:0::1;;;;;;;;;;;;:36;3265:5;3235:36;;;;;;;;;;;;:46;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;3230:3:0;;-1:-1:-1;3230:3:0::1;::::0;::::1;:::i;:::-;;;;3191:90;;;;3297:42;3305:12;3319:6;3327:11;3297:42;;;;;;;;:::i;:::-;;;;;;;;2816:531:::0;;;:::o;6614:2402::-;6681:19;6712:15;6744:1;6730:11;:15;;;:78;;6795:11;6788:19;;6730:78;;;6764:11;6757:19;;6756:20;;;:::i;:::-;6712:96;;6846:6;6827:7;:26;;6819:40;;;;-1:-1:-1;;;6819:40:0;;;;;;;:::i;:::-;6870:13;6896:3;6886:13;;:93;;-1:-1:-1;;;6886:93:0;;;6907:34;6886:93;6870:109;;;-1:-1:-1;7004:3:0;6994:13;;:18;6990:83;;7070:3;7023:42;:5;7031:34;7023:42;:::i;:::-;7022:51;;7014:59;;6990:83;7098:3;7088:13;;:18;7084:83;;7164:3;7117:42;:5;7125:34;7117:42;:::i;:::-;7116:51;;7108:59;;7084:83;7192:3;7182:13;;:18;7178:83;;7258:3;7211:42;:5;7219:34;7211:42;:::i;:::-;7210:51;;7202:59;;7178:83;7286:4;7276:14;;:19;7272:84;;7353:3;7306:42;:5;7314:34;7306:42;:::i;:::-;7305:51;;7297:59;;7272:84;7381:4;7371:14;;:19;7367:84;;7448:3;7401:42;:5;7409:34;7401:42;:::i;:::-;7400:51;;7392:59;;7367:84;7476:4;7466:14;;:19;7462:84;;7543:3;7496:42;:5;7504:34;7496:42;:::i;:::-;7495:51;;7487:59;;7462:84;7571:4;7561:14;;:19;7557:84;;7638:3;7591:42;:5;7599:34;7591:42;:::i;:::-;7590:51;;7582:59;;7557:84;7666:5;7656:15;;:20;7652:85;;7734:3;7687:42;:5;7695:34;7687:42;:::i;:::-;7686:51;;7678:59;;7652:85;7762:5;7752:15;;:20;7748:85;;7830:3;7783:42;:5;7791:34;7783:42;:::i;:::-;7782:51;;7774:59;;7748:85;7858:5;7848:15;;:20;7844:85;;7926:3;7879:42;:5;7887:34;7879:42;:::i;:::-;7878:51;;7870:59;;7844:85;7954:5;7944:15;;:20;7940:85;;8022:3;7975:42;:5;7983:34;7975:42;:::i;:::-;7974:51;;7966:59;;7940:85;8050:6;8040:16;;:21;8036:86;;8119:3;8072:42;:5;8080:34;8072:42;:::i;:::-;8071:51;;8063:59;;8036:86;8147:6;8137:16;;:21;8133:86;;8216:3;8169:42;:5;8177:34;8169:42;:::i;:::-;8168:51;;8160:59;;8133:86;8244:6;8234:16;;:21;8230:86;;8313:3;8266:42;:5;8274:34;8266:42;:::i;:::-;8265:51;;8257:59;;8230:86;8341:6;8331:16;;:21;8327:86;;8410:3;8363:42;:5;8371:34;8363:42;:::i;:::-;8362:51;;8354:59;;8327:86;8438:7;8428:17;;:22;8424:86;;8507:3;8461:41;:5;8469:33;8461:41;:::i;:::-;8460:50;;8452:58;;8424:86;8535:7;8525:17;;:22;8521:85;;8603:3;8558:40;:5;8566:32;8558:40;:::i;:::-;8557:49;;8549:57;;8521:85;8631:7;8621:17;;:22;8617:83;;8697:3;8654:38;:5;8662:30;8654:38;:::i;:::-;8653:47;;8645:55;;8617:83;8725:7;8715:17;;:22;8711:78;;8786:3;8748:33;:5;8756:25;8748:33;:::i;:::-;8747:42;;8739:50;;8711:78;8818:1;8804:11;:15;;;8800:54;;;8829:25;8849:5;-1:-1:-1;;8829:25:0;:::i;:::-;8821:33;;8800:54;8865:20;8913:17;8922:7;8913:5;:17;:::i;:::-;:22;:30;;8942:1;8913:30;;;8938:1;8913:30;8896:48;;;;8906:2;8897:11;;;8896:48;:::i;:::-;8865:80;-1:-1:-1;9005:1:0;-1:-1:-1;;;8971:18:0;8865:80;8986:3;8971:18;:::i;:::-;:28;;;;:::i;:::-;8970:36;;;;:::i;:::-;-1:-1:-1;;;;;8956:50:0;;6614:2402;-1:-1:-1;;;;;6614:2402:0:o;2189:68::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;3949:330::-;2393:12;;-1:-1:-1;;;;;2393:12:0;2379:10;:26;2371:48;;;;-1:-1:-1;;;2371:48:0;;;;;;;:::i;:::-;4085:11:::1;:18;4065:9;:16;:38;4057:63;;;;-1:-1:-1::0;;;4057:63:0::1;;;;;;;:::i;:::-;4135:9;4131:83;4149:9;:16;4147:1;:18;4131:83;;;4200:11;4212:1;4200:14;;;;;;-1:-1:-1::0;;;4200:14:0::1;;;;;;;;;;;;;;;4171:12;:26;4184:9;4194:1;4184:12;;;;;;-1:-1:-1::0;;;4184:12:0::1;;;;;;;;;;;;;;;4171:26;;;;;;;;;;;;:43;;;;;-1:-1:-1::0;;;;;4171:43:0::1;;;;;-1:-1:-1::0;;;;;4171:43:0::1;;;;;;4166:3;;;;;:::i;:::-;;;;4131:83;;;;4231:40;4239:12;4253:4;4259:11;4231:40;;;;;;;;:::i;:::-;;;;;;;;3949:330:::0;;:::o;302:64::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:175:1:-;84:20;;-1:-1:-1;;;;;133:31:1;;123:42;;113:2;;179:1;176;169:12;113:2;65:124;;;:::o;194:713::-;;307:3;300:4;292:6;288:17;284:27;274:2;;329:5;322;315:20;274:2;369:6;356:20;395:4;419:65;434:49;480:2;434:49;:::i;:::-;419:65;:::i;:::-;518:15;;;549:12;;;;581:15;;;627:11;;;615:24;;611:33;;608:42;-1:-1:-1;605:2:1;;;667:5;660;653:20;605:2;693:5;707:171;721:2;718:1;715:9;707:171;;;778:25;799:3;778:25;:::i;:::-;766:38;;824:12;;;;856;;;;739:1;732:9;707:171;;;-1:-1:-1;896:5:1;;264:643;-1:-1:-1;;;;;;;264:643:1:o;912:813::-;;1035:3;1028:4;1020:6;1016:17;1012:27;1002:2;;1057:5;1050;1043:20;1002:2;1090:6;1084:13;1116:4;1140:65;1155:49;1201:2;1155:49;:::i;1140:65::-;1239:15;;;1270:12;;;;1302:15;;;1348:11;;;1336:24;;1332:33;;1329:42;-1:-1:-1;1326:2:1;;;1388:5;1381;1374:20;1326:2;1414:5;1428:268;1442:2;1439:1;1436:9;1428:268;;;1506:3;1500:10;1558:5;1554:2;1543:21;1536:5;1533:32;1523:2;;1583:5;1576;1569:20;1523:2;1604:18;;1642:12;;;;1674;;;;1460:1;1453:9;1428:268;;1730:198;;1842:2;1830:9;1821:7;1817:23;1813:32;1810:2;;;1863:6;1855;1848:22;1810:2;1891:31;1912:9;1891:31;:::i;1933:274::-;;;2062:2;2050:9;2041:7;2037:23;2033:32;2030:2;;;2083:6;2075;2068:22;2030:2;2111:31;2132:9;2111:31;:::i;:::-;2101:41;;2161:40;2197:2;2186:9;2182:18;2161:40;:::i;:::-;2151:50;;2020:187;;;;;:::o;2212:342::-;;;;2358:2;2346:9;2337:7;2333:23;2329:32;2326:2;;;2379:6;2371;2364:22;2326:2;2407:31;2428:9;2407:31;:::i;:::-;2397:41;;2457:40;2493:2;2482:9;2478:18;2457:40;:::i;:::-;2447:50;;2544:2;2533:9;2529:18;2516:32;2506:42;;2316:238;;;;;:::o;2559:266::-;;;2688:2;2676:9;2667:7;2663:23;2659:32;2656:2;;;2709:6;2701;2694:22;2656:2;2737:31;2758:9;2737:31;:::i;:::-;2727:41;2815:2;2800:18;;;;2787:32;;-1:-1:-1;;;2646:179:1:o;2830:1283::-;;;3017:2;3005:9;2996:7;2992:23;2988:32;2985:2;;;3038:6;3030;3023:22;2985:2;3076:9;3070:16;3105:18;3146:2;3138:6;3135:14;3132:2;;;3167:6;3159;3152:22;3132:2;3210:6;3199:9;3195:22;3185:32;;3255:7;3248:4;3244:2;3240:13;3236:27;3226:2;;3282:6;3274;3267:22;3226:2;3316;3310:9;3338:4;3362:65;3377:49;3423:2;3377:49;:::i;3362:65::-;3461:15;;;3492:12;;;;3524:11;;;3562;;;3554:20;;3550:29;;3547:42;-1:-1:-1;3544:2:1;;;3607:6;3599;3592:22;3544:2;3634:6;3625:15;;3649:231;3663:2;3660:1;3657:9;3649:231;;;3727:3;3721:10;3744:31;3769:5;3744:31;:::i;:::-;3788:18;;3681:1;3674:9;;;;;3826:12;;;;3858;;3649:231;;;-1:-1:-1;3935:18:1;;;3929:25;3899:5;;-1:-1:-1;3929:25:1;;-1:-1:-1;;;3966:16:1;;;3963:2;;;4000:6;3992;3985:22;3963:2;;4028:79;4099:7;4088:8;4077:9;4073:24;4028:79;:::i;:::-;4018:89;;;2975:1138;;;;;:::o;4118:1218::-;;;4297:2;4285:9;4276:7;4272:23;4268:32;4265:2;;;4318:6;4310;4303:22;4265:2;4363:9;4350:23;4392:18;4433:2;4425:6;4422:14;4419:2;;;4454:6;4446;4439:22;4419:2;4497:6;4486:9;4482:22;4472:32;;4542:7;4535:4;4531:2;4527:13;4523:27;4513:2;;4569:6;4561;4554:22;4513:2;4610;4597:16;4632:4;4656:65;4671:49;4717:2;4671:49;:::i;4656:65::-;4755:15;;;4786:12;;;;4818:11;;;4856;;;4848:20;;4844:29;;4841:42;-1:-1:-1;4838:2:1;;;4901:6;4893;4886:22;4838:2;4928:6;4919:15;;4943:163;4957:2;4954:1;4951:9;4943:163;;;5014:17;;5002:30;;4975:1;4968:9;;;;;5052:12;;;;5084;;4943:163;;;-1:-1:-1;5125:5:1;-1:-1:-1;;5168:18:1;;5155:32;;-1:-1:-1;;5199:16:1;;;5196:2;;;5233:6;5225;5218:22;5196:2;;5261:69;5322:7;5311:8;5300:9;5296:24;5261:69;:::i;5341:255::-;;5451:2;5439:9;5430:7;5426:23;5422:32;5419:2;;;5472:6;5464;5457:22;5419:2;5516:9;5503:23;5535:31;5560:5;5535:31;:::i;5601:190::-;;5713:2;5701:9;5692:7;5688:23;5684:32;5681:2;;;5734:6;5726;5719:22;5681:2;-1:-1:-1;5762:23:1;;5671:120;-1:-1:-1;5671:120:1:o;5796:510::-;;;;5967:2;5955:9;5946:7;5942:23;5938:32;5935:2;;;5988:6;5980;5973:22;5935:2;6029:9;6016:23;6006:33;;6086:2;6075:9;6071:18;6058:32;6048:42;;6141:2;6130:9;6126:18;6113:32;6168:18;6160:6;6157:30;6154:2;;;6205:6;6197;6190:22;6154:2;6233:67;6292:7;6283:6;6272:9;6268:22;6233:67;:::i;:::-;6223:77;;;5925:381;;;;;:::o;6311:469::-;;6408:5;6402:12;6435:6;6430:3;6423:19;6461:4;6490:2;6485:3;6481:12;6474:19;;6527:2;6520:5;6516:14;6548:3;6560:195;6574:6;6571:1;6568:13;6560:195;;;6639:13;;-1:-1:-1;;;;;6635:39:1;6623:52;;6695:12;;;;6730:15;;;;6671:1;6589:9;6560:195;;;-1:-1:-1;6771:3:1;;6378:402;-1:-1:-1;;;;;6378:402:1:o;6785:96::-;6863:10;6852:22;6840:35;;6830:51::o;6886:274::-;;7053:6;7047:13;7069:53;7115:6;7110:3;7103:4;7095:6;7091:17;7069:53;:::i;:::-;7138:16;;;;;7023:137;-1:-1:-1;;7023:137:1:o;7165:203::-;-1:-1:-1;;;;;7329:32:1;;;;7311:51;;7299:2;7284:18;;7266:102::o;7373:3097::-;;7539:2;7579;7568:9;7564:18;7609:2;7598:9;7591:21;7632:6;7667;7661:13;7690:68;7751:6;7743;7690:68;:::i;:::-;7683:75;;7781:53;7827:6;7781:53;:::i;:::-;7767:67;;7862:4;7875:962;7915:6;7911:1;7898:11;7894:19;7891:31;7875:962;;;8030:6;8024:13;8060:10;8083:39;8118:3;8113:2;8107:4;8103:13;8083:39;:::i;:::-;8135:57;8188:2;8183:3;8179:12;8174:2;8167:4;8163:2;8159:13;8155:22;8135:57;:::i;:::-;8215:2;8230:57;8283:2;8278:3;8274:12;8269:2;8262:4;8258:2;8254:13;8250:22;8230:57;:::i;:::-;;8310:2;8325:57;8378:2;8373:3;8369:12;8364:2;8357:4;8353:2;8349:13;8345:22;8325:57;:::i;:::-;;8405:3;8421:57;8474:2;8469:3;8465:12;8460:2;8453:4;8449:2;8445:13;8441:22;8421:57;:::i;:::-;;8501:3;8517:57;8570:2;8565:3;8561:12;8556:2;8549:4;8545:2;8541:13;8537:22;8517:57;:::i;:::-;;8597:3;8613:57;8666:2;8661:3;8657:12;8652:2;8645:4;8641:2;8637:13;8633:22;8613:57;:::i;:::-;;;8693:3;8709:48;8753:2;8748:3;8744:12;8737:4;8733:2;8729:13;8709:48;:::i;:::-;-1:-1:-1;;8825:1:1;8813:14;;;;;8786:3;8777:13;;;;;7977:1;7960:19;7875:962;;;8860:13;;;8885:23;;;8882:2;;;8931:49;8976:3;8963:10;8955:6;8951:23;8931:49;:::i;:::-;9000:12;;;;9057:1;9040:19;8882:2;9097:6;9084:11;9081:23;9078:2;;;9127:58;9181:3;9168:10;9159:6;9155:2;9151:15;9147:32;9127:58;:::i;:::-;9205:12;;;;9262:1;9245:19;9078:2;9302:6;9289:11;9286:23;9283:2;;;9332:58;9386:3;9373:10;9364:6;9360:2;9356:15;9352:32;9332:58;:::i;:::-;9410:12;;;;9467:1;9450:19;9283:2;9507:6;9494:11;9491:23;9488:2;;;9537:58;9591:3;9578:10;9569:6;9565:2;9561:15;9557:32;9537:58;:::i;:::-;9615:12;;;;9672:1;9655:19;9488:2;9712:6;9699:11;9696:23;9693:2;;;9742:59;9797:3;9784:10;9775:6;9770:3;9766:16;9762:33;9742:59;:::i;:::-;9821:12;;;;9878:1;9861:19;9693:2;9918:6;9905:11;9902:23;9899:2;;;9948:59;10003:3;9990:10;9981:6;9976:3;9972:16;9968:33;9948:59;:::i;:::-;10027:12;;;;10084:1;10067:19;9899:2;10124:6;10111:11;10108:23;10105:2;;;10154:59;10209:3;10196:10;10187:6;10182:3;10178:16;10174:33;10154:59;:::i;:::-;10233:12;;;;10290:1;10273:19;10105:2;10330:6;10317:11;10314:23;10311:2;;;10360:42;10398:3;10389:6;10384:3;10380:16;10360:42;:::i;:::-;10422:12;;;;10311:2;-1:-1:-1;10461:3:1;;7519:2951;-1:-1:-1;;;;;;7519:2951:1:o;10475:187::-;10640:14;;10633:22;10615:41;;10603:2;10588:18;;10570:92::o;10667:383::-;;10816:2;10805:9;10798:21;10848:6;10842:13;10891:6;10886:2;10875:9;10871:18;10864:34;10907:66;10966:6;10961:2;10950:9;10946:18;10941:2;10933:6;10929:15;10907:66;:::i;:::-;11034:2;11013:15;-1:-1:-1;;11009:29:1;10994:45;;;;11041:2;10990:54;;10788:262;-1:-1:-1;;10788:262:1:o;11055:342::-;11257:2;11239:21;;;11296:2;11276:18;;;11269:30;-1:-1:-1;;;11330:2:1;11315:18;;11308:48;11388:2;11373:18;;11229:168::o;11402:334::-;11604:2;11586:21;;;11643:2;11623:18;;;11616:30;-1:-1:-1;;;11677:2:1;11662:18;;11655:40;11727:2;11712:18;;11576:160::o;11741:342::-;11943:2;11925:21;;;11982:2;11962:18;;;11955:30;-1:-1:-1;;;12016:2:1;12001:18;;11994:48;12074:2;12059:18;;11915:168::o;12088:344::-;12290:2;12272:21;;;12329:2;12309:18;;;12302:30;-1:-1:-1;;;12363:2:1;12348:18;;12341:50;12423:2;12408:18;;12262:170::o;12437:336::-;12639:2;12621:21;;;12678:2;12658:18;;;12651:30;-1:-1:-1;;;12712:2:1;12697:18;;12690:42;12764:2;12749:18;;12611:162::o;12778:336::-;12980:2;12962:21;;;13019:2;12999:18;;;12992:30;-1:-1:-1;;;13053:2:1;13038:18;;13031:42;13105:2;13090:18;;12952:162::o;13119:351::-;13321:2;13303:21;;;13360:2;13340:18;;;13333:30;13399:29;13394:2;13379:18;;13372:57;13461:2;13446:18;;13293:177::o;13475:338::-;13677:2;13659:21;;;13716:2;13696:18;;;13689:30;-1:-1:-1;;;13750:2:1;13735:18;;13728:44;13804:2;13789:18;;13649:164::o;13818:347::-;14020:2;14002:21;;;14059:2;14039:18;;;14032:30;14098:25;14093:2;14078:18;;14071:53;14156:2;14141:18;;13992:173::o;14170:335::-;14372:2;14354:21;;;14411:2;14391:18;;;14384:30;-1:-1:-1;;;14445:2:1;14430:18;;14423:41;14496:2;14481:18;;14344:161::o;14510:324::-;14712:2;14694:21;;;14751:1;14731:18;;;14724:29;-1:-1:-1;;;14784:2:1;14769:18;;14762:31;14825:2;14810:18;;14684:150::o;14839:344::-;15041:2;15023:21;;;15080:2;15060:18;;;15053:30;-1:-1:-1;;;15114:2:1;15099:18;;15092:50;15174:2;15159:18;;15013:170::o;15188:341::-;15390:2;15372:21;;;15429:2;15409:18;;;15402:30;-1:-1:-1;;;15463:2:1;15448:18;;15441:47;15520:2;15505:18;;15362:167::o;15534:344::-;15736:2;15718:21;;;15775:2;15755:18;;;15748:30;-1:-1:-1;;;15809:2:1;15794:18;;15787:50;15869:2;15854:18;;15708:170::o;15883:354::-;16085:2;16067:21;;;16124:2;16104:18;;;16097:30;16163:32;16158:2;16143:18;;16136:60;16228:2;16213:18;;16057:180::o;16242:332::-;16444:2;16426:21;;;16483:1;16463:18;;;16456:29;-1:-1:-1;;;16516:2:1;16501:18;;16494:39;16565:2;16550:18;;16416:158::o;16579:337::-;16781:2;16763:21;;;16820:2;16800:18;;;16793:30;-1:-1:-1;;;16854:2:1;16839:18;;16832:43;16907:2;16892:18;;16753:163::o;16921:177::-;17067:25;;;17055:2;17040:18;;17022:76::o;17103:420::-;;17349:6;17338:9;17331:25;17392:6;17387:2;17376:9;17372:18;17365:34;17435:2;17430;17419:9;17415:18;17408:30;17455:62;17513:2;17502:9;17498:18;17490:6;17455:62;:::i;:::-;17447:70;17321:202;-1:-1:-1;;;;;17321:202:1:o;17942:251::-;18012:2;18006:9;18042:17;;;18089:18;18074:34;;18110:22;;;18071:62;18068:2;;;18136:18;;:::i;:::-;18172:2;18165:22;17986:207;;-1:-1:-1;17986:207:1:o;18198:192::-;;18297:18;18289:6;18286:30;18283:2;;;18319:18;;:::i;:::-;-1:-1:-1;18379:4:1;18360:17;;;18356:28;;18273:117::o;18395:143::-;;18477:17;;;18527:4;18511:21;;;18467:71::o;18715:128::-;;18786:1;18782:6;18779:1;18776:13;18773:2;;;18792:18;;:::i;:::-;-1:-1:-1;18828:9:1;;18763:80::o;18848:204::-;;18922:4;18919:1;18915:12;18954:4;18951:1;18947:12;18989:3;18983:4;18979:14;18974:3;18971:23;18968:2;;;18997:18;;:::i;:::-;19033:13;;18894:158;-1:-1:-1;;;18894:158:1:o;19057:284::-;;19136:1;19133;19122:16;19172:1;19169;19158:16;19193:3;19183:2;;19200:18;;:::i;:::-;-1:-1:-1;;19236:30:1;;-1:-1:-1;;19268:15:1;;19232:52;19229:2;;;19287:18;;:::i;:::-;19321:14;;;19101:240;-1:-1:-1;;;19101:240:1:o;19346:201::-;;-1:-1:-1;;;;;19451:10:1;;;;19470:2;;19487:18;;:::i;:::-;19525:10;;19521:20;;;;;19392:155;-1:-1:-1;;19392:155:1:o;19552:120::-;;19618:1;19608:2;;19623:18;;:::i;:::-;-1:-1:-1;19657:9:1;;19598:74::o;19677:453::-;19773:6;19796:5;19810:314;19859:1;19896:2;19886:8;19883:16;19873:2;;19903:5;;;19873:2;19944:4;19939:3;19935:14;19929:4;19926:24;19923:2;;;19953:18;;:::i;:::-;20003:2;19993:8;19989:17;19986:2;;;20018:16;;;;19986:2;20097:17;;;;;20057:15;;19810:314;;;19754:376;;;;;;;:::o;20135:191::-;;-1:-1:-1;;;;;20260:60:1;20223:19;20310:4;20296:19;;20281:13;;;20260:60;:::i;:::-;20251:69;20203:123;-1:-1:-1;;;;20203:123:1:o;20331:922::-;;20415:8;20405:2;;-1:-1:-1;20456:1:1;20470:5;;20405:2;20504:4;20494:2;;-1:-1:-1;20541:1:1;20555:5;;20494:2;20586:4;20604:1;20599:59;;;;20672:1;20667:183;;;;20579:271;;20599:59;20629:1;20620:10;;20643:5;;;20667:183;20704:3;20694:8;20691:17;20688:2;;;20711:18;;:::i;:::-;20767:1;20757:8;20753:16;20744:25;;20795:3;20788:5;20785:14;20782:2;;;20802:18;;:::i;:::-;20835:5;;;20579:271;;20934:2;20924:8;20921:16;20915:3;20909:4;20906:13;20902:36;20896:2;20886:8;20883:16;20878:2;20872:4;20869:12;20865:35;20862:77;20859:2;;;-1:-1:-1;20971:19:1;;;21006:14;;;21003:2;;;21023:18;;:::i;:::-;21056:5;;20859:2;21103:42;21141:3;21131:8;21125:4;21122:1;21103:42;:::i;:::-;21178:6;21173:3;21169:16;21160:7;21157:29;21154:2;;;21189:18;;:::i;:::-;21227:20;;20395:858;-1:-1:-1;;;;20395:858:1:o;21258:272::-;;-1:-1:-1;;;;;21369:10:1;;;21399;;;21432:11;;21425:19;21454:12;;;21446:21;;21421:47;21418:2;;;21471:18;;:::i;21535:168::-;;21641:1;21637;21633:6;21629:14;21626:1;21623:21;21618:1;21611:9;21604:17;21600:45;21597:2;;;21648:18;;:::i;:::-;-1:-1:-1;21688:9:1;;21587:116::o;21708:362::-;;21790:1;21787;21776:16;21826:1;21823;21812:16;21856:4;21851:3;21847:14;21925:3;21906:16;21902:21;21898:31;21893:3;21889:41;21884:2;21877:10;21873:58;21870:2;;;21934:18;;:::i;:::-;22005:3;21987:16;21983:26;21978:3;21974:36;21970:2;21966:45;21963:2;;;22014:18;;:::i;:::-;-1:-1:-1;22051:13:1;;;21755:315;-1:-1:-1;;;21755:315:1:o;22075:125::-;;22143:1;22140;22137:8;22134:2;;;22148:18;;:::i;:::-;-1:-1:-1;22185:9:1;;22124:76::o;22205:258::-;22277:1;22287:113;22301:6;22298:1;22295:13;22287:113;;;22377:11;;;22371:18;22358:11;;;22351:39;22323:2;22316:10;22287:113;;;22418:6;22415:1;22412:13;22409:2;;;22453:1;22444:6;22439:3;22435:16;22428:27;22409:2;;22258:205;;;:::o;22468:380::-;22553:1;22543:12;;22600:1;22590:12;;;22611:2;;22665:4;22657:6;22653:17;22643:27;;22611:2;22718;22710:6;22707:14;22687:18;22684:38;22681:2;;;22764:10;22759:3;22755:20;22752:1;22745:31;22799:4;22796:1;22789:15;22827:4;22824:1;22817:15;22853:135;;-1:-1:-1;;22913:17:1;;22910:2;;;22933:18;;:::i;:::-;-1:-1:-1;22980:1:1;22969:13;;22900:88::o;22993:175::-;;23074:4;23067:5;23063:16;23103:4;23094:7;23091:17;23088:2;;;23111:18;;:::i;:::-;23160:1;23147:15;;23038:130;-1:-1:-1;;23038:130:1:o;23173:112::-;;23231:1;23221:2;;23236:18;;:::i;:::-;-1:-1:-1;23270:9:1;;23211:74::o;23290:138::-;;-1:-1:-1;;;23346:22:1;;23343:2;;;23371:18;;:::i;:::-;23407:15;;23333:95::o;23433:127::-;23494:10;23489:3;23485:20;23482:1;23475:31;23525:4;23522:1;23515:15;23549:4;23546:1;23539:15;23565:127;23626:10;23621:3;23617:20;23614:1;23607:31;23657:4;23654:1;23647:15;23681:4;23678:1;23671:15;23697:127;23758:10;23753:3;23749:20;23746:1;23739:31;23789:4;23786:1;23779:15;23813:4;23810:1;23803:15;23829:120;23918:5;23915:1;23904:20;23897:5;23894:31;23884:2;;23939:1;23936;23929:12

Swarm Source

ipfs://890cf8f4678de97cf88d919f40e970c4004cda4fa402d562194345af01f941b2

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  ]

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.