ETH Price: $3,489.34 (+0.98%)

Contract

0x5Fa19F612dfd39e6754Bb2E8300E681d1C589Dd4
 

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Unlock137605662021-12-07 20:05:231113 days ago1638907523IN
0x5Fa19F61...d1C589Dd4
0 ETH0.004064888.06672629
Unlock137605552021-12-07 20:03:461113 days ago1638907426IN
0x5Fa19F61...d1C589Dd4
0 ETH0.00560283103.91791029
List Synth121003242021-03-24 7:43:321371 days ago1616571812IN
0x5Fa19F61...d1C589Dd4
0 ETH0.02101063111
List Synth121002932021-03-24 7:37:011371 days ago1616571421IN
0x5Fa19F61...d1C589Dd4
0 ETH0.01887943111.00001
List Synth120679362021-03-19 7:50:231376 days ago1616140223IN
0x5Fa19F61...d1C589Dd4
0 ETH0.02498403132
Add Admin120605602021-03-18 4:45:301377 days ago1616042730IN
0x5Fa19F61...d1C589Dd4
0 ETH0.00914726128
List Synth118342592021-02-11 8:48:101412 days ago1613033290IN
0x5Fa19F61...d1C589Dd4
0 ETH0.02293187121.1500008
Claim117347182021-01-27 0:46:511427 days ago1611708411IN
0x5Fa19F61...d1C589Dd4
0 ETH0.007852
Claim117347092021-01-27 0:44:211427 days ago1611708261IN
0x5Fa19F61...d1C589Dd4
0 ETH0.00360
Claim117278492021-01-25 23:27:001428 days ago1611617220IN
0x5Fa19F61...d1C589Dd4
0 ETH0.003100
Claim117278352021-01-25 23:22:461428 days ago1611616966IN
0x5Fa19F61...d1C589Dd4
0 ETH0.00402667.1
Unlock116853602021-01-19 11:06:211435 days ago1611054381IN
0x5Fa19F61...d1C589Dd4
0 ETH0.0051745496.8
Claim116853582021-01-19 11:05:341435 days ago1611054334IN
0x5Fa19F61...d1C589Dd4
0 ETH0.0150284996.8
Claim115853912021-01-04 2:50:171450 days ago1609728617IN
0x5Fa19F61...d1C589Dd4
0 ETH0.01674533127
Unlock114266502020-12-10 17:54:341475 days ago1607622874IN
0x5Fa19F61...d1C589Dd4
0 ETH0.0030469957.00000145
Claim114266472020-12-10 17:53:571475 days ago1607622837IN
0x5Fa19F61...d1C589Dd4
0 ETH0.0102466966.00000145
Unlock113862602020-12-04 12:51:301481 days ago1607086290IN
0x5Fa19F61...d1C589Dd4
0 ETH0.0005768415
Claim113479402020-11-28 15:49:231487 days ago1606578563IN
0x5Fa19F61...d1C589Dd4
0 ETH0.0029007622
Unlock113169602020-11-23 21:40:051492 days ago1606167605IN
0x5Fa19F61...d1C589Dd4
0 ETH0.0025658848
Unlock113127142020-11-23 5:50:321492 days ago1606110632IN
0x5Fa19F61...d1C589Dd4
0 ETH0.0018757735.09
Unlock113107912020-11-22 22:40:581492 days ago1606084858IN
0x5Fa19F61...d1C589Dd4
0 ETH0.0026193449.00000145
Claim113010312020-11-21 10:44:561494 days ago1605955496IN
0x5Fa19F61...d1C589Dd4
0 ETH0.0055378242
Unlock112871522020-11-19 7:50:131496 days ago1605772213IN
0x5Fa19F61...d1C589Dd4
0 ETH0.001139929.00000145
Claim112871462020-11-19 7:49:261496 days ago1605772166IN
0x5Fa19F61...d1C589Dd4
0 ETH0.0045023329.00000145
Claim112813832020-11-18 10:28:091497 days ago1605695289IN
0x5Fa19F61...d1C589Dd4
0 ETH0.0063187940.7
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
PerlinXRewards

Compiler Version
v0.6.8+commit.0bbfe453

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license, Audited
/**
 *Submitted for verification at Etherscan.io on 2020-08-20
*/

//SPDX-License-Identifier: Unlicense
pragma solidity 0.6.8;

// ERC20 Interface
interface ERC20 {
    function transfer(address, uint256) external returns (bool);

    function transferFrom(
        address,
        address,
        uint256
    ) external returns (bool);

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

library SafeMath {

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

        return c;
    }

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

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

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

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

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

contract PerlinXRewards {
    using SafeMath for uint256;
    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;
    uint256 private _status;

    address public PERL;
    address public treasury;

    address[] public arrayAdmins;
    address[] public arrayPerlinPools;
    address[] public arraySynths;
    address[] public arrayMembers;

    uint256 public currentEra;

    mapping(address => bool) public isAdmin; // Tracks admin status
    mapping(address => bool) public poolIsListed; // Tracks current listing status
    mapping(address => bool) public poolHasMembers; // Tracks current staking status
    mapping(address => bool) public poolWasListed; // Tracks if pool was ever listed
    mapping(address => uint256) public mapAsset_Rewards; // Maps rewards for each asset (PERL, BAL, UNI etc)
    mapping(address => uint256) public poolWeight; // Allows a reward weight to be applied; 100 = 1.0
    mapping(uint256 => uint256) public mapEra_Total; // Total PERL staked in each era
    mapping(uint256 => bool) public eraIsOpen; // Era is open of collecting rewards
    mapping(uint256 => mapping(address => uint256)) public mapEraAsset_Reward; // Reward allocated for era
    mapping(uint256 => mapping(address => uint256)) public mapEraPool_Balance; // Perls in each pool, per era
    mapping(uint256 => mapping(address => uint256)) public mapEraPool_Share; // Share of reward for each pool, per era
    mapping(uint256 => mapping(address => uint256)) public mapEraPool_Claims; // Total LP tokens locked for each pool, per era

    mapping(address => address) public mapPool_Asset; // Uniswap pools provide liquidity to non-PERL asset
    mapping(address => address) public mapSynth_EMP; // Synthetic Assets have a management contract

    mapping(address => bool) public isMember; // Is Member
    mapping(address => uint256) public mapMember_poolCount; // Total number of Pools member is in
    mapping(address => address[]) public mapMember_arrayPools; // Array of pools for member
    mapping(address => mapping(address => uint256))
        public mapMemberPool_Balance; // Member's balance in pool
    mapping(address => mapping(address => bool)) public mapMemberPool_Added; // Member's balance in pool
    mapping(address => mapping(uint256 => bool))
        public mapMemberEra_hasRegistered; // Member has registered
    mapping(address => mapping(uint256 => mapping(address => uint256)))
        public mapMemberEraPool_Claim; // Value of claim per pool, per era
    mapping(address => mapping(uint256 => mapping(address => bool)))
        public mapMemberEraAsset_hasClaimed; // Boolean claimed

    // Events
    event Snapshot(
        address indexed admin,
        uint256 indexed era,
        uint256 rewardForEra,
        uint256 perlTotal,
        uint256 validPoolCount,
        uint256 validMemberCount,
        uint256 date
    );
    event NewPool(
        address indexed admin,
        address indexed pool,
        address indexed asset,
        uint256 assetWeight
    );
    event NewSynth(
        address indexed pool,
        address indexed synth,
        address indexed expiringMultiParty
    );
    event MemberLocks(
        address indexed member,
        address indexed pool,
        uint256 amount,
        uint256 indexed currentEra
    );
    event MemberUnlocks(
        address indexed member,
        address indexed pool,
        uint256 balance,
        uint256 indexed currentEra
    );
    event MemberRegisters(
        address indexed member,
        address indexed pool,
        uint256 amount,
        uint256 indexed currentEra
    );
    event MemberClaims(address indexed member, uint256 indexed era, uint256 totalClaim);

    // Only Admin can execute
    modifier onlyAdmin() {
        require(isAdmin[msg.sender], "Must be Admin");
        _;
    }

    modifier nonReentrant() {
        require(_status != _ENTERED, "ReentrancyGuard: reentrant call");
        _status = _ENTERED;
        _;
        _status = _NOT_ENTERED;
    }

    constructor() public {
        arrayAdmins.push(msg.sender);
        isAdmin[msg.sender] = true;
        PERL = 0xeca82185adCE47f39c684352B0439f030f860318;
        treasury = 0x3F2a2c502E575f2fd4053c76f4E21623143518d8; 
        currentEra = 1;
        _status = _NOT_ENTERED;
    }

    //==============================ADMIN================================//

    // Lists a synth and its parent EMP address
    function listSynth(
        address pool,
        address synth,
        address emp,
        uint256 weight
    ) public onlyAdmin {
        require(emp != address(0), "Must pass address validation");
        if (!poolWasListed[pool]) {
            arraySynths.push(synth); // Add new synth
        }
        listPool(pool, synth, weight); // List like normal pool
        mapSynth_EMP[synth] = emp; // Maps the EMP contract for look-up
        emit NewSynth(pool, synth, emp);
    }

    // Lists a pool and its non-PERL asset (can work for Balance or Uniswap V2)
    // Use "100" to be a normal weight of "1.0"
    function listPool(
        address pool,
        address asset,
        uint256 weight
    ) public onlyAdmin {
        require(
            (asset != PERL) && (asset != address(0)) && (pool != address(0)),
            "Must pass address validation"
        );
        require(
            weight >= 10 && weight <= 1000,
            "Must be greater than 0.1, less than 10"
        );
        if (!poolWasListed[pool]) {
            arrayPerlinPools.push(pool);
        }
        poolIsListed[pool] = true; // Tracking listing
        poolWasListed[pool] = true; // Track if ever was listed
        poolWeight[pool] = weight; // Note: weight of 120 = 1.2
        mapPool_Asset[pool] = asset; // Map the pool to its non-perl asset
        emit NewPool(msg.sender, pool, asset, weight);
    }

    function delistPool(address pool) public onlyAdmin {
        poolIsListed[pool] = false;
    }

    // Quorum Action 1
    function addAdmin(address newAdmin) public onlyAdmin {
        require(
            (isAdmin[newAdmin] == false) && (newAdmin != address(0)),
            "Must pass address validation"
        );
        arrayAdmins.push(newAdmin);
        isAdmin[newAdmin] = true;
    }

    function transferAdmin(address newAdmin) public onlyAdmin {
        require(
            (isAdmin[newAdmin] == false) && (newAdmin != address(0)),
            "Must pass address validation"
        );
        arrayAdmins.push(newAdmin);
        isAdmin[msg.sender] = false;
        isAdmin[newAdmin] = true;
    }

    // Snapshot a new Era, allocating any new rewards found on the address, increment Era
    // Admin should send reward funds first
    function snapshot(address rewardAsset) public onlyAdmin {
        snapshotInEra(rewardAsset, currentEra); // Snapshots PERL balances
        currentEra = currentEra.add(1); // Increment the eraCount, so users can't register in a previous era.
    }

    // Snapshot a particular rewwardAsset, but don't increment Era (like Balancer Rewards)
    // Do this after snapshotPools()
    function snapshotInEra(address rewardAsset, uint256 era) public onlyAdmin {
        uint256 start = 0;
        uint256 end = poolCount();
        snapshotInEraWithOffset(rewardAsset, era, start, end);
    }

    // Snapshot with offset (in case runs out of gas)
    function snapshotWithOffset(
        address rewardAsset,
        uint256 start,
        uint256 end
    ) public onlyAdmin {
        snapshotInEraWithOffset(rewardAsset, currentEra, start, end); // Snapshots PERL balances
        currentEra = currentEra.add(1); // Increment the eraCount, so users can't register in a previous era.
    }

    // Snapshot a particular rewwardAsset, with offset
    function snapshotInEraWithOffset(
        address rewardAsset,
        uint256 era,
        uint256 start,
        uint256 end
    ) public onlyAdmin {
        require(rewardAsset != address(0), "Address must not be 0x0");
        require(
            (era >= currentEra - 1) && (era <= currentEra),
            "Must be current or previous era only"
        );
        uint256 amount = ERC20(rewardAsset).balanceOf(address(this)).sub(
            mapAsset_Rewards[rewardAsset]
        );
        require(amount > 0, "Amount must be non-zero");
        mapAsset_Rewards[rewardAsset] = mapAsset_Rewards[rewardAsset].add(
            amount
        );
        mapEraAsset_Reward[era][rewardAsset] = mapEraAsset_Reward[era][rewardAsset]
            .add(amount);
        eraIsOpen[era] = true;
        updateRewards(era, amount, start, end); // Snapshots PERL balances
    }

    // Note, due to EVM gas limits, poolCount should be less than 100 to do this before running out of gas
    function updateRewards(
        uint256 era,
        uint256 rewardForEra,
        uint256 start,
        uint256 end
    ) internal {
        // First snapshot balances of each pool
        uint256 perlTotal;
        uint256 validPoolCount;
        uint256 validMemberCount;
        for (uint256 i = start; i < end; i++) {
            address pool = arrayPerlinPools[i];
            if (poolIsListed[pool] && poolHasMembers[pool]) {
                validPoolCount = validPoolCount.add(1);
                uint256 weight = poolWeight[pool];
                uint256 weightedBalance = (
                    ERC20(PERL).balanceOf(pool).mul(weight)).div(100); // (depth * weight) / 100
                perlTotal = perlTotal.add(weightedBalance);
                mapEraPool_Balance[era][pool] = weightedBalance;
            }
        }
        mapEra_Total[era] = perlTotal;
        // Then snapshot share of the reward for the era
        for (uint256 i = start; i < end; i++) {
            address pool = arrayPerlinPools[i];
            if (poolIsListed[pool] && poolHasMembers[pool]) {
                validMemberCount = validMemberCount.add(1);
                uint256 part = mapEraPool_Balance[era][pool];
                mapEraPool_Share[era][pool] = getShare(
                    part,
                    perlTotal,
                    rewardForEra
                );
            }
        }
        emit Snapshot(
            msg.sender,
            era,
            rewardForEra,
            perlTotal,
            validPoolCount,
            validMemberCount,
            now
        );
    }

    // Quorum Action
    // Remove unclaimed rewards and disable era for claiming
    function removeReward(uint256 era, address rewardAsset) public onlyAdmin {
      uint256 amount = mapEraAsset_Reward[era][rewardAsset];
      mapEraAsset_Reward[era][rewardAsset] = 0;
      mapAsset_Rewards[rewardAsset] = mapAsset_Rewards[rewardAsset].sub(
          amount
      );
      eraIsOpen[era] = false;
      require(
            ERC20(rewardAsset).transfer(treasury, amount),
            "Must transfer"
        );
    }

    // Quorum Action - Reuses adminApproveEraAsset() logic since unlikely to collide
    // Use in anger to sweep off assets (such as accidental airdropped tokens)
    function sweep(address asset, uint256 amount) public onlyAdmin {
      require(
            ERC20(asset).transfer(treasury, amount),
            "Must transfer"
        );
    }

    //============================== USER - LOCK/UNLOCK ================================//
    // Member locks some LP tokens
    function lock(address pool, uint256 amount) public nonReentrant {
        require(poolIsListed[pool] == true, "Must be listed");
        if (!isMember[msg.sender]) {
            // Add new member
            arrayMembers.push(msg.sender);
            isMember[msg.sender] = true;
        }
        if (!poolHasMembers[pool]) {
            // Records existence of member
            poolHasMembers[pool] = true;
        }
        if (!mapMemberPool_Added[msg.sender][pool]) {
            // Record all the pools member is in
            mapMember_poolCount[msg.sender] = mapMember_poolCount[msg.sender]
                .add(1);
            mapMember_arrayPools[msg.sender].push(pool);
            mapMemberPool_Added[msg.sender][pool] = true;
        }
        require(
            ERC20(pool).transferFrom(msg.sender, address(this), amount),
            "Must transfer"
        ); // Uni/Bal LP tokens return bool
        mapMemberPool_Balance[msg.sender][pool] = mapMemberPool_Balance[msg.sender][pool]
            .add(amount); // Record total pool balance for member
        registerClaim(msg.sender, pool, amount); // Register claim
        emit MemberLocks(msg.sender, pool, amount, currentEra);
    }

    // Member unlocks all from a pool
    function unlock(address pool) public nonReentrant {
        uint256 balance = mapMemberPool_Balance[msg.sender][pool];
        require(balance > 0, "Must have a balance to claim");
        mapMemberPool_Balance[msg.sender][pool] = 0; // Zero out balance
        require(ERC20(pool).transfer(msg.sender, balance), "Must transfer"); // Then transfer
        if (ERC20(pool).balanceOf(address(this)) == 0) {
            poolHasMembers[pool] = false; // If nobody is staking any more
        }
        emit MemberUnlocks(msg.sender, pool, balance, currentEra);
    }

    //============================== USER - CLAIM================================//
    // Member registers claim in a single pool
    function registerClaim(
        address member,
        address pool,
        uint256 amount
    ) internal {
        mapMemberEraPool_Claim[member][currentEra][pool] += amount;
        mapEraPool_Claims[currentEra][pool] = mapEraPool_Claims[currentEra][pool]
            .add(amount);
        emit MemberRegisters(member, pool, amount, currentEra);
    }

    // Member registers claim in all pools
    function registerAllClaims(address member) public {
        require(
            mapMemberEra_hasRegistered[msg.sender][currentEra] == false,
            "Must not have registered in this era already"
        );
        for (uint256 i = 0; i < mapMember_poolCount[member]; i++) {
            address pool = mapMember_arrayPools[member][i];
            // first deduct any previous claim
            mapEraPool_Claims[currentEra][pool] = mapEraPool_Claims[currentEra][pool]
                .sub(mapMemberEraPool_Claim[member][currentEra][pool]);
            uint256 amount = mapMemberPool_Balance[member][pool]; // then get latest balance
            mapMemberEraPool_Claim[member][currentEra][pool] = amount; // then update the claim
            mapEraPool_Claims[currentEra][pool] = mapEraPool_Claims[currentEra][pool]
                .add(amount); // then add to total
            emit MemberRegisters(member, pool, amount, currentEra);
        }
        mapMemberEra_hasRegistered[msg.sender][currentEra] = true;
    }

    // Member claims in a era
    function claim(uint256 era, address rewardAsset)
        public
        nonReentrant
    {
        require(
            mapMemberEraAsset_hasClaimed[msg.sender][era][rewardAsset] == false,
            "Reward asset must not have been claimed"
        );
        require(eraIsOpen[era], "Era must be opened");
        uint256 totalClaim = checkClaim(msg.sender, era);
        if (totalClaim > 0) {
            mapMemberEraAsset_hasClaimed[msg.sender][era][rewardAsset] = true; // Register claim
            mapEraAsset_Reward[era][rewardAsset] = mapEraAsset_Reward[era][rewardAsset]
                .sub(totalClaim); // Decrease rewards for that era
            mapAsset_Rewards[rewardAsset] = mapAsset_Rewards[rewardAsset].sub(
                totalClaim
            ); // Decrease rewards in total
            require(
                ERC20(rewardAsset).transfer(msg.sender, totalClaim),
                "Must transfer"
            ); // Then transfer
        }
        emit MemberClaims(msg.sender, era, totalClaim);
        if (mapMemberEra_hasRegistered[msg.sender][currentEra] == false) {
            registerAllClaims(msg.sender); // Register another claim
        }
    }

    // Member checks claims in all pools
    function checkClaim(address member, uint256 era)
        public
        view
        returns (uint256 totalClaim)
    {
        for (uint256 i = 0; i < mapMember_poolCount[member]; i++) {
            address pool = mapMember_arrayPools[member][i];
            totalClaim += checkClaimInPool(member, era, pool);
        }
        return totalClaim;
    }

    // Member checks claim in a single pool
    function checkClaimInPool(
        address member,
        uint256 era,
        address pool
    ) public view returns (uint256 claimShare) {
        uint256 poolShare = mapEraPool_Share[era][pool]; // Requires admin snapshotting for era first, else 0
        uint256 memberClaimInEra = mapMemberEraPool_Claim[member][era][pool]; // Requires member registering claim in the era
        uint256 totalClaimsInEra = mapEraPool_Claims[era][pool]; // Sum of all claims in a era
        if (totalClaimsInEra > 0) {
            // Requires non-zero balance of the pool tokens
            claimShare = getShare(
                memberClaimInEra,
                totalClaimsInEra,
                poolShare
            );
        } else {
            claimShare = 0;
        }
        return claimShare;
    }

    //==============================UTILS================================//
    // Get the share of a total
    function getShare(
        uint256 part,
        uint256 total,
        uint256 amount
    ) public pure returns (uint256 share) {
        return (amount.mul(part)).div(total);
    }

    function adminCount() public view returns (uint256) {
        return arrayAdmins.length;
    }

    function poolCount() public view returns (uint256) {
        return arrayPerlinPools.length;
    }

    function synthCount() public view returns (uint256) {
        return arraySynths.length;
    }

    function memberCount() public view returns (uint256) {
        return arrayMembers.length;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"member","type":"address"},{"indexed":true,"internalType":"uint256","name":"era","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalClaim","type":"uint256"}],"name":"MemberClaims","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"member","type":"address"},{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"currentEra","type":"uint256"}],"name":"MemberLocks","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"member","type":"address"},{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"currentEra","type":"uint256"}],"name":"MemberRegisters","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"member","type":"address"},{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"uint256","name":"balance","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"currentEra","type":"uint256"}],"name":"MemberUnlocks","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"admin","type":"address"},{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":true,"internalType":"address","name":"asset","type":"address"},{"indexed":false,"internalType":"uint256","name":"assetWeight","type":"uint256"}],"name":"NewPool","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":true,"internalType":"address","name":"synth","type":"address"},{"indexed":true,"internalType":"address","name":"expiringMultiParty","type":"address"}],"name":"NewSynth","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"admin","type":"address"},{"indexed":true,"internalType":"uint256","name":"era","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"rewardForEra","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"perlTotal","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"validPoolCount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"validMemberCount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"date","type":"uint256"}],"name":"Snapshot","type":"event"},{"inputs":[],"name":"PERL","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"name":"addAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"adminCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"arrayAdmins","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"arrayMembers","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"arrayPerlinPools","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"arraySynths","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"member","type":"address"},{"internalType":"uint256","name":"era","type":"uint256"}],"name":"checkClaim","outputs":[{"internalType":"uint256","name":"totalClaim","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"member","type":"address"},{"internalType":"uint256","name":"era","type":"uint256"},{"internalType":"address","name":"pool","type":"address"}],"name":"checkClaimInPool","outputs":[{"internalType":"uint256","name":"claimShare","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"era","type":"uint256"},{"internalType":"address","name":"rewardAsset","type":"address"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"currentEra","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"delistPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"eraIsOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"part","type":"uint256"},{"internalType":"uint256","name":"total","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"getShare","outputs":[{"internalType":"uint256","name":"share","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isAdmin","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMember","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"asset","type":"address"},{"internalType":"uint256","name":"weight","type":"uint256"}],"name":"listPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"address","name":"synth","type":"address"},{"internalType":"address","name":"emp","type":"address"},{"internalType":"uint256","name":"weight","type":"uint256"}],"name":"listSynth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"mapAsset_Rewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"mapEraAsset_Reward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"mapEraPool_Balance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"mapEraPool_Claims","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"mapEraPool_Share","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"mapEra_Total","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"mapMemberEraAsset_hasClaimed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"mapMemberEraPool_Claim","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"mapMemberEra_hasRegistered","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"mapMemberPool_Added","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"mapMemberPool_Balance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"mapMember_arrayPools","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"mapMember_poolCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"mapPool_Asset","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"mapSynth_EMP","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"memberCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"poolCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"poolHasMembers","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"poolIsListed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"poolWasListed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"poolWeight","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"member","type":"address"}],"name":"registerAllClaims","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"era","type":"uint256"},{"internalType":"address","name":"rewardAsset","type":"address"}],"name":"removeReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"rewardAsset","type":"address"}],"name":"snapshot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"rewardAsset","type":"address"},{"internalType":"uint256","name":"era","type":"uint256"}],"name":"snapshotInEra","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"rewardAsset","type":"address"},{"internalType":"uint256","name":"era","type":"uint256"},{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"end","type":"uint256"}],"name":"snapshotInEraWithOffset","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"rewardAsset","type":"address"},{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"end","type":"uint256"}],"name":"snapshotWithOffset","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"sweep","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"synthCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"name":"transferAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasury","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405234801561001057600080fd5b506003339080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555073eca82185adce47f39c684352b0439f030f860318600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550733f2a2c502e575f2fd4053c76f4e21623143518d8600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016007819055506001600081905550615b8380620001966000396000f3fe608060405234801561001057600080fd5b50600436106102f15760003560e01c806361d027b31161019d578063a230c524116100e9578063e4ebdfa5116100a2578063ed06d4e21161007c578063ed06d4e21461132e578063f525cb68146113b4578063f96e9ea1146113d2578063fa8f382a14611434576102f1565b8063e4ebdfa5146111ec578063eb76595514611268578063ec7d7199146112d6576102f1565b8063a230c52414610fec578063baff15ce14611048578063c251adeb146110b6578063ce110e4b14611100578063ddd5e1b214611158578063e07dbfbd146111a6576102f1565b806378a45a241161015657806387e2662e1161013057806387e2662e14610e965780638b5e608b14610ef2578063973628f614610f4a578063a19d164614610f68576102f1565b806378a45a2414610dd85780637f2277b414610df6578063845696b414610e52576102f1565b806361d027b314610c1457806369b3039814610c5e5780636ea056a914610cb45780637048027514610d0257806371586b1f14610d4657806375829def14610d94576102f1565b8063322e26041161025c5780634445c1ea116102155780634a5cab98116101ef5780634a5cab9814610a885780634dd85b5e14610ad6578063522cff2514610b385780635976c67c14610b90576102f1565b80634445c1ea1461093657806344d3d337146109a457806344d7e45514610a06576102f1565b8063322e26041461067057806332bc68be146106d25780633d23e24a146107405780633e66034f146107b8578063429d7e8f1461083a578063436f80be146108c8576102f1565b8063282d3fdf116102ae578063282d3fdf146104b45780632b7832b3146105025780632f6c493c14610520578063306faf4a1461056457806331405c03146105a85780633224e2f21461060e576102f1565b80630382ad26146102f657806311aee3801461035857806316d534711461037657806324d7806c146103d2578063265121601461042e57806326b8052914610472575b600080fd5b6103426004803603604081101561030c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506114c2565b6040518082815260200191505060405180910390f35b6103606115b1565b6040518082815260200191505060405180910390f35b6103b86004803603602081101561038c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115be565b604051808215151515815260200191505060405180910390f35b610414600480360360208110156103e857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115de565b604051808215151515815260200191505060405180910390f35b6104706004803603602081101561044457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115fe565b005b61049e6004803603602081101561048857600080fd5b81019080803590602001909291905050506116e8565b6040518082815260200191505060405180910390f35b610500600480360360408110156104ca57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611700565b005b61050a611f4e565b6040518082815260200191505060405180910390f35b6105626004803603602081101561053657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f5b565b005b6105a66004803603602081101561057a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612416565b005b6105f4600480360360408110156105be57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612530565b604051808215151515815260200191505060405180910390f35b61066e6004803603608081101561062457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019092919050505061255f565b005b6106bc6004803603604081101561068657600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612a3b565b6040518082815260200191505060405180910390f35b6106fe600480360360208110156106e857600080fd5b8101908080359060200190929190505050612a60565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6107a26004803603604081101561075657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612a9c565b6040518082815260200191505060405180910390f35b610824600480360360608110156107ce57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612ac1565b6040518082815260200191505060405180910390f35b6108c66004803603608081101561085057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612c2b565b005b6108f4600480360360208110156108de57600080fd5b8101908080359060200190929190505050612f42565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6109626004803603602081101561094c57600080fd5b8101908080359060200190929190505050612f7e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6109f0600480360360408110156109ba57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612fba565b6040518082815260200191505060405180910390f35b610a7260048036036060811015610a1c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612fdf565b6040518082815260200191505060405180910390f35b610ad460048036036040811015610a9e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050613011565b005b610b2260048036036040811015610aec57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506130f3565b6040518082815260200191505060405180910390f35b610b7a60048036036020811015610b4e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613118565b6040518082815260200191505060405180910390f35b610bd260048036036020811015610ba657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613130565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610c1c613163565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610c9e60048036036060811015610c7457600080fd5b81019080803590602001909291908035906020019092919080359060200190929190505050613189565b6040518082815260200191505060405180910390f35b610d0060048036036040811015610cca57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506131b9565b005b610d4460048036036020811015610d1857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506133d2565b005b610d9260048036036040811015610d5c57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061364e565b005b610dd660048036036020811015610daa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506139d4565b005b610de0613ca8565b6040518082815260200191505060405180910390f35b610e3860048036036020811015610e0c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613cb5565b604051808215151515815260200191505060405180910390f35b610e9460048036036020811015610e6857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613cd5565b005b610ed860048036036020811015610eac57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050614257565b604051808215151515815260200191505060405180910390f35b610f3460048036036020811015610f0857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050614277565b6040518082815260200191505060405180910390f35b610f5261428f565b6040518082815260200191505060405180910390f35b610faa60048036036020811015610f7e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050614295565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61102e6004803603602081101561100257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506142c8565b604051808215151515815260200191505060405180910390f35b6110b46004803603606081101561105e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506142e8565b005b6110be6147ed565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6111426004803603602081101561111657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050614813565b6040518082815260200191505060405180910390f35b6111a46004803603604081101561116e57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061482b565b005b6111d2600480360360208110156111bc57600080fd5b8101908080359060200190929190505050614e46565b604051808215151515815260200191505060405180910390f35b61124e6004803603604081101561120257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050614e66565b604051808215151515815260200191505060405180910390f35b6112946004803603602081101561127e57600080fd5b8101908080359060200190929190505050614e95565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61132c600480360360608110156112ec57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050614ed1565b005b61139a6004803603606081101561134457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050614fbf565b604051808215151515815260200191505060405180910390f35b6113bc614ffb565b6040518082815260200191505060405180910390f35b61141e600480360360408110156113e857600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050615008565b6040518082815260200191505060405180910390f35b6114806004803603604081101561144a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061502d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600080600090505b601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548110156115a7576000601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020828154811061155d57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050611595858583612ac1565b830192505080806001019150506114ca565b5080905092915050565b6000600680549050905090565b600b6020528060005260406000206000915054906101000a900460ff1681565b60086020528060005260406000206000915054906101000a900460ff1681565b600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166116bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f4d7573742062652041646d696e0000000000000000000000000000000000000081525060200191505060405180910390fd5b6116c981600754613011565b6116df600160075461507890919063ffffffff16565b60078190555050565b600e6020528060005260406000206000915090505481565b60026000541415611779576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b600260008190555060011515600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514611847576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4d757374206265206c697374656400000000000000000000000000000000000081525060200191505060405180910390fd5b601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611954576006339080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166119fe576001600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b601a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611c5857611adf6001601760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461507890919063ffffffff16565b601760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020829080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b8173ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015611d1357600080fd5b505af1158015611d27573d6000803e3d6000fd5b505050506040513d6020811015611d3d57600080fd5b8101908080519060200190929190505050611dc0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f4d757374207472616e736665720000000000000000000000000000000000000081525060200191505060405180910390fd5b611e4f81601960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461507890919063ffffffff16565b601960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611eda338383615100565b6007548273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f26c1d455ed5e9a313ff262b6cd70a49110f54a2a68591881424ade0176624983846040518082815260200191505060405180910390a460016000819055505050565b6000600380549050905090565b60026000541415611fd4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b60026000819055506000601960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600081116120d3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4d757374206861766520612062616c616e636520746f20636c61696d0000000081525060200191505060405180910390fd5b6000601960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156121dc57600080fd5b505af11580156121f0573d6000803e3d6000fd5b505050506040513d602081101561220657600080fd5b8101908080519060200190929190505050612289576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f4d757374207472616e736665720000000000000000000000000000000000000081525060200191505060405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561230857600080fd5b505afa15801561231c573d6000803e3d6000fd5b505050506040513d602081101561233257600080fd5b810190808051906020019092919050505014156123a2576000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b6007548273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167ffc457b903eae2c3f6e2d259cccaae44e68f974c0c77dda2f7877aa4ed140d5c6846040518082815260200191505060405180910390a450600160008190555050565b600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166124d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f4d7573742062652041646d696e0000000000000000000000000000000000000081525060200191505060405180910390fd5b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b601b6020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661261e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f4d7573742062652041646d696e0000000000000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156126c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f41646472657373206d757374206e6f742062652030783000000000000000000081525060200191505060405180910390fd5b60016007540383101580156126d857506007548311155b61272d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180615b2a6024913960400191505060405180910390fd5b6000612838600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156127ef57600080fd5b505afa158015612803573d6000803e3d6000fd5b505050506040513d602081101561281957600080fd5b81019080805190602001909291905050506152c590919063ffffffff16565b9050600081116128b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f416d6f756e74206d757374206265206e6f6e2d7a65726f00000000000000000081525060200191505060405180910390fd5b61290281600c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461507890919063ffffffff16565b600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506129a8816010600087815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461507890919063ffffffff16565b6010600086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600f600086815260200190815260200160002060006101000a81548160ff021916908315150217905550612a348482858561530f565b5050505050565b6012602052816000526040600020602052806000526040600020600091509150505481565b60048181548110612a6d57fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6019602052816000526040600020602052806000526040600020600091509150505481565b6000806012600085815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000601c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600086815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060006013600087815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000811115612c1957612c12828285613189565b9350612c1e565b600093505b8393505050509392505050565b600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612cea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f4d7573742062652041646d696e0000000000000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612d8d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4d757374207061737320616464726573732076616c69646174696f6e0000000081525060200191505060405180910390fd5b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612e42576005839080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b612e4d8484836142e8565b81601560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f4e351dd0f3a8cc5682178a81d960be19d454f9fe874a9d4f0753caae5685900060405160405180910390a450505050565b60068181548110612f4f57fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60038181548110612f8b57fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6010602052816000526040600020602052806000526040600020600091509150505481565b601c60205282600052604060002060205281600052604060002060205280600052604060002060009250925050505481565b600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166130d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f4d7573742062652041646d696e0000000000000000000000000000000000000081525060200191505060405180910390fd5b600080905060006130df614ffb565b90506130ed8484848461255f565b50505050565b6011602052816000526040600020602052806000526040600020600091509150505481565b600c6020528060005260406000206000915090505481565b60156020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006131b0836131a2868561583990919063ffffffff16565b6158bf90919063ffffffff16565b90509392505050565b600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613278576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f4d7573742062652041646d696e0000000000000000000000000000000000000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561332157600080fd5b505af1158015613335573d6000803e3d6000fd5b505050506040513d602081101561334b57600080fd5b81019080805190602001909291905050506133ce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f4d757374207472616e736665720000000000000000000000000000000000000081525060200191505060405180910390fd5b5050565b600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613491576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f4d7573742062652041646d696e0000000000000000000000000000000000000081525060200191505060405180910390fd5b60001515600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514801561351e5750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b613590576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4d757374207061737320616464726573732076616c69646174696f6e0000000081525060200191505060405180910390fd5b6003819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661370d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f4d7573742062652041646d696e0000000000000000000000000000000000000081525060200191505060405180910390fd5b60006010600084815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060006010600085815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061380a81600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546152c590919063ffffffff16565b600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600f600085815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561392257600080fd5b505af1158015613936573d6000803e3d6000fd5b505050506040513d602081101561394c57600080fd5b81019080805190602001909291905050506139cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f4d757374207472616e736665720000000000000000000000000000000000000081525060200191505060405180910390fd5b505050565b600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613a93576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f4d7573742062652041646d696e0000000000000000000000000000000000000081525060200191505060405180910390fd5b60001515600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515148015613b205750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b613b92576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4d757374207061737320616464726573732076616c69646174696f6e0000000081525060200191505060405180910390fd5b6003819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600580549050905090565b60096020528060005260406000206000915054906101000a900460ff1681565b60001515601b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600754815260200190815260200160002060009054906101000a900460ff16151514613d91576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180615ab7602c913960400191505060405180910390fd5b60008090505b601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548110156141e8576000601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110613e2a57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050613f4b601c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600754815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460136000600754815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546152c590919063ffffffff16565b60136000600754815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000601960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905080601c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600754815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061411b8160136000600754815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461507890919063ffffffff16565b60136000600754815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506007548273ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f1c6cf7f4185192b90e5dbc6c1030559d3a499bc798a5fd775870659fe4e254c4846040518082815260200191505060405180910390a450508080600101915050613d97565b506001601b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600754815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600a6020528060005260406000206000915054906101000a900460ff1681565b600d6020528060005260406000206000915090505481565b60075481565b60146020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60166020528060005260406000206000915054906101000a900460ff1681565b600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166143a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f4d7573742062652041646d696e0000000000000000000000000000000000000081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156144325750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561446b5750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b6144dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4d757374207061737320616464726573732076616c69646174696f6e0000000081525060200191505060405180910390fd5b600a81101580156144f057506103e88111155b614545576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180615ae36026913960400191505060405180910390fd5b600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166145fa576004839080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b6001600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081601460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f6f1e56c55b9479aaa7ee72e01aa069c9d9e1874fa8145a0d010c1ce91483df15846040518082815260200191505060405180910390a4505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60176020528060005260406000206000915090505481565b600260005414156148a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b600260008190555060001515601d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515146149a3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180615a906027913960400191505060405180910390fd5b600f600083815260200190815260200160002060009054906101000a900460ff16614a36576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f457261206d757374206265206f70656e6564000000000000000000000000000081525060200191505060405180910390fd5b6000614a4233846114c2565b90506000811115614d74576001601d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600085815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550614b56816010600086815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546152c590919063ffffffff16565b6010600085815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614bfc81600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546152c590919063ffffffff16565b600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015614cc657600080fd5b505af1158015614cda573d6000803e3d6000fd5b505050506040513d6020811015614cf057600080fd5b8101908080519060200190929190505050614d73576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f4d757374207472616e736665720000000000000000000000000000000000000081525060200191505060405180910390fd5b5b823373ffffffffffffffffffffffffffffffffffffffff167f0febf5fad8005f14b1cf04172c840311f6c94fe0e14e38087260ba190a357b32836040518082815260200191505060405180910390a360001515601b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600754815260200190815260200160002060009054906101000a900460ff1615151415614e3957614e3833613cd5565b5b5060016000819055505050565b600f6020528060005260406000206000915054906101000a900460ff1681565b601a6020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b60058181548110614ea257fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16614f90576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f4d7573742062652041646d696e0000000000000000000000000000000000000081525060200191505060405180910390fd5b614f9e83600754848461255f565b614fb4600160075461507890919063ffffffff16565b600781905550505050565b601d602052826000526040600020602052816000526040600020602052806000526040600020600092509250509054906101000a900460ff1681565b6000600480549050905090565b6013602052816000526040600020602052806000526040600020600091509150505481565b6018602052816000526040600020818154811061504657fe5b906000526020600020016000915091509054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000808284019050838110156150f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b80601c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600754815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055506152028160136000600754815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461507890919063ffffffff16565b60136000600754815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506007548273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f1c6cf7f4185192b90e5dbc6c1030559d3a499bc798a5fd775870659fe4e254c4846040518082815260200191505060405180910390a4505050565b600061530783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250615909565b905092915050565b6000806000808590505b848110156155dc5760006004828154811061533057fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600960008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156153ff5750600a60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156155ce5761541860018561507890919063ffffffff16565b93506000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600061555f606461555184600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231886040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561550857600080fd5b505afa15801561551c573d6000803e3d6000fd5b505050506040513d602081101561553257600080fd5b810190808051906020019092919050505061583990919063ffffffff16565b6158bf90919063ffffffff16565b9050615574818861507890919063ffffffff16565b965080601160008d815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050505b508080600101915050615319565b5082600e60008981526020019081526020016000208190555060008590505b848110156157c05760006004828154811061561257fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600960008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156156e15750600a60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156157b2576156fa60018461507890919063ffffffff16565b92506000601160008b815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905061575c81878b613189565b601260008c815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b5080806001019150506155fb565b50863373ffffffffffffffffffffffffffffffffffffffff167fd7b022ad987606d8c29043f24a451ccffc5aa3a813994c086b6da216c3d8df348886868642604051808681526020018581526020018481526020018381526020018281526020019550505050505060405180910390a350505050505050565b60008083141561584c57600090506158b9565b600082840290508284828161585d57fe5b04146158b4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180615b096021913960400191505060405180910390fd5b809150505b92915050565b600061590183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506159c9565b905092915050565b60008383111582906159b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561597b578082015181840152602081019050615960565b50505050905090810190601f1680156159a85780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b60008083118290615a75576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015615a3a578082015181840152602081019050615a1f565b50505050905090810190601f168015615a675780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581615a8157fe5b04905080915050939250505056fe526577617264206173736574206d757374206e6f742068617665206265656e20636c61696d65644d757374206e6f742068617665207265676973746572656420696e20746869732065726120616c72656164794d7573742062652067726561746572207468616e20302e312c206c657373207468616e203130536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774d7573742062652063757272656e74206f722070726576696f757320657261206f6e6c79a2646970667358221220523b33e2823930670089b7bf3a73590a67a8cf64cb5932041997a6bb5b4cd22064736f6c63430006080033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106102f15760003560e01c806361d027b31161019d578063a230c524116100e9578063e4ebdfa5116100a2578063ed06d4e21161007c578063ed06d4e21461132e578063f525cb68146113b4578063f96e9ea1146113d2578063fa8f382a14611434576102f1565b8063e4ebdfa5146111ec578063eb76595514611268578063ec7d7199146112d6576102f1565b8063a230c52414610fec578063baff15ce14611048578063c251adeb146110b6578063ce110e4b14611100578063ddd5e1b214611158578063e07dbfbd146111a6576102f1565b806378a45a241161015657806387e2662e1161013057806387e2662e14610e965780638b5e608b14610ef2578063973628f614610f4a578063a19d164614610f68576102f1565b806378a45a2414610dd85780637f2277b414610df6578063845696b414610e52576102f1565b806361d027b314610c1457806369b3039814610c5e5780636ea056a914610cb45780637048027514610d0257806371586b1f14610d4657806375829def14610d94576102f1565b8063322e26041161025c5780634445c1ea116102155780634a5cab98116101ef5780634a5cab9814610a885780634dd85b5e14610ad6578063522cff2514610b385780635976c67c14610b90576102f1565b80634445c1ea1461093657806344d3d337146109a457806344d7e45514610a06576102f1565b8063322e26041461067057806332bc68be146106d25780633d23e24a146107405780633e66034f146107b8578063429d7e8f1461083a578063436f80be146108c8576102f1565b8063282d3fdf116102ae578063282d3fdf146104b45780632b7832b3146105025780632f6c493c14610520578063306faf4a1461056457806331405c03146105a85780633224e2f21461060e576102f1565b80630382ad26146102f657806311aee3801461035857806316d534711461037657806324d7806c146103d2578063265121601461042e57806326b8052914610472575b600080fd5b6103426004803603604081101561030c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506114c2565b6040518082815260200191505060405180910390f35b6103606115b1565b6040518082815260200191505060405180910390f35b6103b86004803603602081101561038c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115be565b604051808215151515815260200191505060405180910390f35b610414600480360360208110156103e857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115de565b604051808215151515815260200191505060405180910390f35b6104706004803603602081101561044457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115fe565b005b61049e6004803603602081101561048857600080fd5b81019080803590602001909291905050506116e8565b6040518082815260200191505060405180910390f35b610500600480360360408110156104ca57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611700565b005b61050a611f4e565b6040518082815260200191505060405180910390f35b6105626004803603602081101561053657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f5b565b005b6105a66004803603602081101561057a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612416565b005b6105f4600480360360408110156105be57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612530565b604051808215151515815260200191505060405180910390f35b61066e6004803603608081101561062457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019092919050505061255f565b005b6106bc6004803603604081101561068657600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612a3b565b6040518082815260200191505060405180910390f35b6106fe600480360360208110156106e857600080fd5b8101908080359060200190929190505050612a60565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6107a26004803603604081101561075657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612a9c565b6040518082815260200191505060405180910390f35b610824600480360360608110156107ce57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612ac1565b6040518082815260200191505060405180910390f35b6108c66004803603608081101561085057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612c2b565b005b6108f4600480360360208110156108de57600080fd5b8101908080359060200190929190505050612f42565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6109626004803603602081101561094c57600080fd5b8101908080359060200190929190505050612f7e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6109f0600480360360408110156109ba57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612fba565b6040518082815260200191505060405180910390f35b610a7260048036036060811015610a1c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612fdf565b6040518082815260200191505060405180910390f35b610ad460048036036040811015610a9e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050613011565b005b610b2260048036036040811015610aec57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506130f3565b6040518082815260200191505060405180910390f35b610b7a60048036036020811015610b4e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613118565b6040518082815260200191505060405180910390f35b610bd260048036036020811015610ba657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613130565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610c1c613163565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610c9e60048036036060811015610c7457600080fd5b81019080803590602001909291908035906020019092919080359060200190929190505050613189565b6040518082815260200191505060405180910390f35b610d0060048036036040811015610cca57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506131b9565b005b610d4460048036036020811015610d1857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506133d2565b005b610d9260048036036040811015610d5c57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061364e565b005b610dd660048036036020811015610daa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506139d4565b005b610de0613ca8565b6040518082815260200191505060405180910390f35b610e3860048036036020811015610e0c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613cb5565b604051808215151515815260200191505060405180910390f35b610e9460048036036020811015610e6857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613cd5565b005b610ed860048036036020811015610eac57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050614257565b604051808215151515815260200191505060405180910390f35b610f3460048036036020811015610f0857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050614277565b6040518082815260200191505060405180910390f35b610f5261428f565b6040518082815260200191505060405180910390f35b610faa60048036036020811015610f7e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050614295565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61102e6004803603602081101561100257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506142c8565b604051808215151515815260200191505060405180910390f35b6110b46004803603606081101561105e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506142e8565b005b6110be6147ed565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6111426004803603602081101561111657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050614813565b6040518082815260200191505060405180910390f35b6111a46004803603604081101561116e57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061482b565b005b6111d2600480360360208110156111bc57600080fd5b8101908080359060200190929190505050614e46565b604051808215151515815260200191505060405180910390f35b61124e6004803603604081101561120257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050614e66565b604051808215151515815260200191505060405180910390f35b6112946004803603602081101561127e57600080fd5b8101908080359060200190929190505050614e95565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61132c600480360360608110156112ec57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050614ed1565b005b61139a6004803603606081101561134457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050614fbf565b604051808215151515815260200191505060405180910390f35b6113bc614ffb565b6040518082815260200191505060405180910390f35b61141e600480360360408110156113e857600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050615008565b6040518082815260200191505060405180910390f35b6114806004803603604081101561144a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061502d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600080600090505b601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548110156115a7576000601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020828154811061155d57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050611595858583612ac1565b830192505080806001019150506114ca565b5080905092915050565b6000600680549050905090565b600b6020528060005260406000206000915054906101000a900460ff1681565b60086020528060005260406000206000915054906101000a900460ff1681565b600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166116bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f4d7573742062652041646d696e0000000000000000000000000000000000000081525060200191505060405180910390fd5b6116c981600754613011565b6116df600160075461507890919063ffffffff16565b60078190555050565b600e6020528060005260406000206000915090505481565b60026000541415611779576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b600260008190555060011515600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514611847576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4d757374206265206c697374656400000000000000000000000000000000000081525060200191505060405180910390fd5b601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611954576006339080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166119fe576001600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b601a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611c5857611adf6001601760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461507890919063ffffffff16565b601760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020829080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b8173ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015611d1357600080fd5b505af1158015611d27573d6000803e3d6000fd5b505050506040513d6020811015611d3d57600080fd5b8101908080519060200190929190505050611dc0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f4d757374207472616e736665720000000000000000000000000000000000000081525060200191505060405180910390fd5b611e4f81601960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461507890919063ffffffff16565b601960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611eda338383615100565b6007548273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f26c1d455ed5e9a313ff262b6cd70a49110f54a2a68591881424ade0176624983846040518082815260200191505060405180910390a460016000819055505050565b6000600380549050905090565b60026000541415611fd4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b60026000819055506000601960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600081116120d3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4d757374206861766520612062616c616e636520746f20636c61696d0000000081525060200191505060405180910390fd5b6000601960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156121dc57600080fd5b505af11580156121f0573d6000803e3d6000fd5b505050506040513d602081101561220657600080fd5b8101908080519060200190929190505050612289576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f4d757374207472616e736665720000000000000000000000000000000000000081525060200191505060405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561230857600080fd5b505afa15801561231c573d6000803e3d6000fd5b505050506040513d602081101561233257600080fd5b810190808051906020019092919050505014156123a2576000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b6007548273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167ffc457b903eae2c3f6e2d259cccaae44e68f974c0c77dda2f7877aa4ed140d5c6846040518082815260200191505060405180910390a450600160008190555050565b600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166124d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f4d7573742062652041646d696e0000000000000000000000000000000000000081525060200191505060405180910390fd5b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b601b6020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661261e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f4d7573742062652041646d696e0000000000000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156126c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f41646472657373206d757374206e6f742062652030783000000000000000000081525060200191505060405180910390fd5b60016007540383101580156126d857506007548311155b61272d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180615b2a6024913960400191505060405180910390fd5b6000612838600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156127ef57600080fd5b505afa158015612803573d6000803e3d6000fd5b505050506040513d602081101561281957600080fd5b81019080805190602001909291905050506152c590919063ffffffff16565b9050600081116128b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f416d6f756e74206d757374206265206e6f6e2d7a65726f00000000000000000081525060200191505060405180910390fd5b61290281600c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461507890919063ffffffff16565b600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506129a8816010600087815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461507890919063ffffffff16565b6010600086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600f600086815260200190815260200160002060006101000a81548160ff021916908315150217905550612a348482858561530f565b5050505050565b6012602052816000526040600020602052806000526040600020600091509150505481565b60048181548110612a6d57fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6019602052816000526040600020602052806000526040600020600091509150505481565b6000806012600085815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000601c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600086815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060006013600087815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000811115612c1957612c12828285613189565b9350612c1e565b600093505b8393505050509392505050565b600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612cea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f4d7573742062652041646d696e0000000000000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612d8d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4d757374207061737320616464726573732076616c69646174696f6e0000000081525060200191505060405180910390fd5b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612e42576005839080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b612e4d8484836142e8565b81601560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f4e351dd0f3a8cc5682178a81d960be19d454f9fe874a9d4f0753caae5685900060405160405180910390a450505050565b60068181548110612f4f57fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60038181548110612f8b57fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6010602052816000526040600020602052806000526040600020600091509150505481565b601c60205282600052604060002060205281600052604060002060205280600052604060002060009250925050505481565b600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166130d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f4d7573742062652041646d696e0000000000000000000000000000000000000081525060200191505060405180910390fd5b600080905060006130df614ffb565b90506130ed8484848461255f565b50505050565b6011602052816000526040600020602052806000526040600020600091509150505481565b600c6020528060005260406000206000915090505481565b60156020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006131b0836131a2868561583990919063ffffffff16565b6158bf90919063ffffffff16565b90509392505050565b600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613278576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f4d7573742062652041646d696e0000000000000000000000000000000000000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561332157600080fd5b505af1158015613335573d6000803e3d6000fd5b505050506040513d602081101561334b57600080fd5b81019080805190602001909291905050506133ce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f4d757374207472616e736665720000000000000000000000000000000000000081525060200191505060405180910390fd5b5050565b600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613491576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f4d7573742062652041646d696e0000000000000000000000000000000000000081525060200191505060405180910390fd5b60001515600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514801561351e5750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b613590576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4d757374207061737320616464726573732076616c69646174696f6e0000000081525060200191505060405180910390fd5b6003819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661370d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f4d7573742062652041646d696e0000000000000000000000000000000000000081525060200191505060405180910390fd5b60006010600084815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060006010600085815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061380a81600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546152c590919063ffffffff16565b600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600f600085815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561392257600080fd5b505af1158015613936573d6000803e3d6000fd5b505050506040513d602081101561394c57600080fd5b81019080805190602001909291905050506139cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f4d757374207472616e736665720000000000000000000000000000000000000081525060200191505060405180910390fd5b505050565b600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613a93576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f4d7573742062652041646d696e0000000000000000000000000000000000000081525060200191505060405180910390fd5b60001515600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515148015613b205750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b613b92576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4d757374207061737320616464726573732076616c69646174696f6e0000000081525060200191505060405180910390fd5b6003819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600580549050905090565b60096020528060005260406000206000915054906101000a900460ff1681565b60001515601b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600754815260200190815260200160002060009054906101000a900460ff16151514613d91576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180615ab7602c913960400191505060405180910390fd5b60008090505b601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548110156141e8576000601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110613e2a57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050613f4b601c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600754815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460136000600754815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546152c590919063ffffffff16565b60136000600754815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000601960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905080601c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600754815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061411b8160136000600754815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461507890919063ffffffff16565b60136000600754815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506007548273ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f1c6cf7f4185192b90e5dbc6c1030559d3a499bc798a5fd775870659fe4e254c4846040518082815260200191505060405180910390a450508080600101915050613d97565b506001601b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600754815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600a6020528060005260406000206000915054906101000a900460ff1681565b600d6020528060005260406000206000915090505481565b60075481565b60146020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60166020528060005260406000206000915054906101000a900460ff1681565b600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166143a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f4d7573742062652041646d696e0000000000000000000000000000000000000081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156144325750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561446b5750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b6144dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4d757374207061737320616464726573732076616c69646174696f6e0000000081525060200191505060405180910390fd5b600a81101580156144f057506103e88111155b614545576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180615ae36026913960400191505060405180910390fd5b600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166145fa576004839080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b6001600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081601460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f6f1e56c55b9479aaa7ee72e01aa069c9d9e1874fa8145a0d010c1ce91483df15846040518082815260200191505060405180910390a4505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60176020528060005260406000206000915090505481565b600260005414156148a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b600260008190555060001515601d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515146149a3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180615a906027913960400191505060405180910390fd5b600f600083815260200190815260200160002060009054906101000a900460ff16614a36576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f457261206d757374206265206f70656e6564000000000000000000000000000081525060200191505060405180910390fd5b6000614a4233846114c2565b90506000811115614d74576001601d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600085815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550614b56816010600086815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546152c590919063ffffffff16565b6010600085815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614bfc81600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546152c590919063ffffffff16565b600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015614cc657600080fd5b505af1158015614cda573d6000803e3d6000fd5b505050506040513d6020811015614cf057600080fd5b8101908080519060200190929190505050614d73576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f4d757374207472616e736665720000000000000000000000000000000000000081525060200191505060405180910390fd5b5b823373ffffffffffffffffffffffffffffffffffffffff167f0febf5fad8005f14b1cf04172c840311f6c94fe0e14e38087260ba190a357b32836040518082815260200191505060405180910390a360001515601b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600754815260200190815260200160002060009054906101000a900460ff1615151415614e3957614e3833613cd5565b5b5060016000819055505050565b600f6020528060005260406000206000915054906101000a900460ff1681565b601a6020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b60058181548110614ea257fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16614f90576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f4d7573742062652041646d696e0000000000000000000000000000000000000081525060200191505060405180910390fd5b614f9e83600754848461255f565b614fb4600160075461507890919063ffffffff16565b600781905550505050565b601d602052826000526040600020602052816000526040600020602052806000526040600020600092509250509054906101000a900460ff1681565b6000600480549050905090565b6013602052816000526040600020602052806000526040600020600091509150505481565b6018602052816000526040600020818154811061504657fe5b906000526020600020016000915091509054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000808284019050838110156150f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b80601c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600754815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055506152028160136000600754815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461507890919063ffffffff16565b60136000600754815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506007548273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f1c6cf7f4185192b90e5dbc6c1030559d3a499bc798a5fd775870659fe4e254c4846040518082815260200191505060405180910390a4505050565b600061530783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250615909565b905092915050565b6000806000808590505b848110156155dc5760006004828154811061533057fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600960008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156153ff5750600a60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156155ce5761541860018561507890919063ffffffff16565b93506000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600061555f606461555184600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231886040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561550857600080fd5b505afa15801561551c573d6000803e3d6000fd5b505050506040513d602081101561553257600080fd5b810190808051906020019092919050505061583990919063ffffffff16565b6158bf90919063ffffffff16565b9050615574818861507890919063ffffffff16565b965080601160008d815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050505b508080600101915050615319565b5082600e60008981526020019081526020016000208190555060008590505b848110156157c05760006004828154811061561257fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600960008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156156e15750600a60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156157b2576156fa60018461507890919063ffffffff16565b92506000601160008b815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905061575c81878b613189565b601260008c815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b5080806001019150506155fb565b50863373ffffffffffffffffffffffffffffffffffffffff167fd7b022ad987606d8c29043f24a451ccffc5aa3a813994c086b6da216c3d8df348886868642604051808681526020018581526020018481526020018381526020018281526020019550505050505060405180910390a350505050505050565b60008083141561584c57600090506158b9565b600082840290508284828161585d57fe5b04146158b4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180615b096021913960400191505060405180910390fd5b809150505b92915050565b600061590183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506159c9565b905092915050565b60008383111582906159b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561597b578082015181840152602081019050615960565b50505050905090810190601f1680156159a85780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b60008083118290615a75576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015615a3a578082015181840152602081019050615a1f565b50505050905090810190601f168015615a675780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581615a8157fe5b04905080915050939250505056fe526577617264206173736574206d757374206e6f742068617665206265656e20636c61696d65644d757374206e6f742068617665207265676973746572656420696e20746869732065726120616c72656164794d7573742062652067726561746572207468616e20302e312c206c657373207468616e203130536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774d7573742062652063757272656e74206f722070726576696f757320657261206f6e6c79a2646970667358221220523b33e2823930670089b7bf3a73590a67a8cf64cb5932041997a6bb5b4cd22064736f6c63430006080033

Deployed Bytecode Sourcemap

1578:18349:0:-:0;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;1578:18349:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;9;2:12;17961:363:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;17961:363:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;19826:98;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2245:45;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;2245:45:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2006:39;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;2006:39:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;8474:251;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;8474:251:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;2544:47;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;2544:47:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13223:1232;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;13223:1232:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;19510:96;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14502:571;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;14502:571:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;7595:96;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;7595:96:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;3874:87;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;3874:87:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;9545:893;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;9545:893:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2935:71;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;2935:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1859:33;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;1859:33:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3648:85;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;3648:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18377:819;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;18377:819:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6140:497;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;6140:497:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1934:29;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;1934:29:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1824:28;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;1824:28:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2716:73;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;2716:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3993:106;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;3993:106:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8863:210;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;8863:210:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2824:73;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;2824:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2331:51;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;2331:51:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3293:47;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;3293:47:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1792:23;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;19314:188;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;19314:188:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12905:182;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;12905:182:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;7723:278;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;7723:278:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;12289:442;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;12289:442:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;8009:321;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;8009:321:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;19722:96;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2075:44;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;2075:44:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;15630:1038;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;15630:1038:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;2159:46;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;2159:46:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2441:45;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;2441:45:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1972:25;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3185:48;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;3185:48:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3396:40;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;3396:40:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6775:812;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;6775:812:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1766:19;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3456:54;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;3456:54:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16707:1204;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;16707:1204:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2631:41;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;2631:41:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3768:71;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;3768:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1899:28;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;1899:28:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;9136:345;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;9136:345:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4142:109;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;4142:109:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;19614:100;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3055:72;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;3055:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3555:57;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;3555:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;17961:363;18058:18;18099:9;18111:1;18099:13;;18094:195;18118:19;:27;18138:6;18118:27;;;;;;;;;;;;;;;;18114:1;:31;18094:195;;;18167:12;18182:20;:28;18203:6;18182:28;;;;;;;;;;;;;;;18211:1;18182:31;;;;;;;;;;;;;;;;;;;;;;;;;18167:46;;18242:35;18259:6;18267:3;18272:4;18242:16;:35::i;:::-;18228:49;;;;18094:195;18147:3;;;;;;;18094:195;;;;18306:10;18299:17;;17961:363;;;;:::o;19826:98::-;19870:7;19897:12;:19;;;;19890:26;;19826:98;:::o;2245:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;2006:39::-;;;;;;;;;;;;;;;;;;;;;;:::o;8474:251::-;5463:7;:19;5471:10;5463:19;;;;;;;;;;;;;;;;;;;;;;;;;5455:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8541:38:::1;8555:11;8568:10;;8541:13;:38::i;:::-;8630:17;8645:1;8630:10;;:14;;:17;;;;:::i;:::-;8617:10;:30;;;;8474:251:::0;:::o;2544:47::-;;;;;;;;;;;;;;;;;:::o;13223:1232::-;1726:1;5571:7;;:19;;5563:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1726:1;5637:7;:18;;;;13328:4:::1;13306:26;;:12;:18;13319:4;13306:18;;;;;;;;;;;;;;;;;;;;;;;;;:26;;;13298:53;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;13367:8;:20;13376:10;13367:20;;;;;;;;;;;;;;;;;;;;;;;;;13362:156;;13435:12;13453:10;13435:29;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;13435:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13502:4;13479:8;:20;13488:10;13479:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;13362:156;13533:14;:20;13548:4;13533:20;;;;;;;;;;;;;;;;;;;;;;;;;13528:125;;13637:4;13614:14;:20;13629:4;13614:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;13528:125;13668:19;:31;13688:10;13668:31;;;;;;;;;;;;;;;:37;13700:4;13668:37;;;;;;;;;;;;;;;;;;;;;;;;;13663:328;;13806:56;13860:1;13806:19;:31;13826:10;13806:31;;;;;;;;;;;;;;;;:53;;:56;;;;:::i;:::-;13772:19;:31;13792:10;13772:31;;;;;;;;;;;;;;;:90;;;;13877:20;:32;13898:10;13877:32;;;;;;;;;;;;;;;13915:4;13877:43;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;13877:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13975:4;13935:19;:31;13955:10;13935:31;;;;;;;;;;;;;;;:37;13967:4;13935:37;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;13663:328;14029:4;14023:24;;;14048:10;14068:4;14075:6;14023:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;14023:59:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;14023:59:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;14023:59:0;;;;;;;;;;;;;;;;14001:122;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;14209:65;14267:6;14209:21;:33;14231:10;14209:33;;;;;;;;;;;;;;;:39;14243:4;14209:39;;;;;;;;;;;;;;;;:57;;:65;;;;:::i;:::-;14167:21;:33;14189:10;14167:33;;;;;;;;;;;;;;;:39;14201:4;14167:39;;;;;;;;;;;;;;;:107;;;;14325:39;14339:10;14351:4;14357:6;14325:13;:39::i;:::-;14436:10;;14422:4;14398:49;;14410:10;14398:49;;;14428:6;14398:49;;;;;;;;;;;;;;;;;;1682:1:::0;5678:7;:22;;;;13223:1232;;:::o;19510:96::-;19553:7;19580:11;:18;;;;19573:25;;19510:96;:::o;14502:571::-;1726:1;5571:7;;:19;;5563:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1726:1;5637:7;:18;;;;14563:15:::1;14581:21;:33;14603:10;14581:33;;;;;;;;;;;;;;;:39;14615:4;14581:39;;;;;;;;;;;;;;;;14563:57;;14649:1;14639:7;:11;14631:52;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;14736:1;14694:21;:33;14716:10;14694:33;;;;;;;;;;;;;;;:39;14728:4;14694:39;;;;;;;;;;;;;;;:43;;;;14782:4;14776:20;;;14797:10;14809:7;14776:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;14776:41:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;14776:41:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;14776:41:0;;;;;;;;;;;;;;;;14768:67;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;14907:1;14873:4;14867:21;;;14897:4;14867:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;14867:36:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;14867:36:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;14867:36:0;;;;;;;;;;;;;;;;:41;14863:135;;;14948:5;14925:14;:20;14940:4;14925:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;14863:135;15054:10;;15039:4;15013:52;;15027:10;15013:52;;;15045:7;15013:52;;;;;;;;;;;;;;;;;;5666:1;1682::::0;5678:7;:22;;;;14502:571;:::o;7595:96::-;5463:7;:19;5471:10;5463:19;;;;;;;;;;;;;;;;;;;;;;;;;5455:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7678:5:::1;7657:12;:18;7670:4;7657:18;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;7595:96:::0;:::o;3874:87::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;9545:893::-;5463:7;:19;5471:10;5463:19;;;;;;;;;;;;;;;;;;;;;;;;;5455:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9742:1:::1;9719:25;;:11;:25;;;;9711:61;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;9826:1;9813:10;;:14;9806:3;:21;;9805:46;;;;;9840:10;;9833:3;:17;;9805:46;9783:132;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9926:14;9943:102;10005:16;:29;10022:11;10005:29;;;;;;;;;;;;;;;;9949:11;9943:28;;;9980:4;9943:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;9943:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;9943:43:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;9943:43:0;;;;;;;;;;;;;;;;:47;;:102;;;;:::i;:::-;9926:119;;10073:1;10064:6;:10;10056:46;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;10145:65;10193:6;10145:16;:29;10162:11;10145:29;;;;;;;;;;;;;;;;:33;;:65;;;;:::i;:::-;10113:16;:29;10130:11;10113:29;;;;;;;;;;;;;;;:97;;;;10260:62;10315:6;10260:18;:23;10279:3;10260:23;;;;;;;;;;;:36;10284:11;10260:36;;;;;;;;;;;;;;;;:54;;:62;;;;:::i;:::-;10221:18;:23;10240:3;10221:23;;;;;;;;;;;:36;10245:11;10221:36;;;;;;;;;;;;;;;:101;;;;10350:4;10333:9;:14;10343:3;10333:14;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;10365:38;10379:3;10384:6;10392:5;10399:3;10365:13;:38::i;:::-;5511:1;9545:893:::0;;;;:::o;2935:71::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1859:33::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3648:85::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;18377:819::-;18501:18;18532:17;18552:16;:21;18569:3;18552:21;;;;;;;;;;;:27;18574:4;18552:27;;;;;;;;;;;;;;;;18532:47;;18643:24;18670:22;:30;18693:6;18670:30;;;;;;;;;;;;;;;:35;18701:3;18670:35;;;;;;;;;;;:41;18706:4;18670:41;;;;;;;;;;;;;;;;18643:68;;18770:24;18797:17;:22;18815:3;18797:22;;;;;;;;;;;:28;18820:4;18797:28;;;;;;;;;;;;;;;;18770:55;;18889:1;18870:16;:20;18866:295;;;18981:121;19008:16;19043;19078:9;18981:8;:121::i;:::-;18968:134;;18866:295;;;19148:1;19135:14;;18866:295;19178:10;19171:17;;;;;18377:819;;;;;:::o;6140:497::-;5463:7;:19;5471:10;5463:19;;;;;;;;;;;;;;;;;;;;;;;;;5455:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6311:1:::1;6296:17;;:3;:17;;;;6288:58;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;6362:13;:19;6376:4;6362:19;;;;;;;;;;;;;;;;;;;;;;;;;6357:93;;6398:11;6415:5;6398:23;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;6398:23:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6357:93;6460:29;6469:4;6475:5;6482:6;6460:8;:29::i;:::-;6547:3;6525:12;:19;6538:5;6525:19;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;6625:3;6603:26;;6618:5;6603:26;;6612:4;6603:26;;;;;;;;;;;;6140:497:::0;;;;:::o;1934:29::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1824:28::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2716:73::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3993:106::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;8863:210::-;5463:7;:19;5471:10;5463:19;;;;;;;;;;;;;;;;;;;;;;;;;5455:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8948:13:::1;8964:1:::0;8948:17:::1;;8976:11;8990;:9;:11::i;:::-;8976:25;;9012:53;9036:11;9049:3;9054:5;9061:3;9012:23;:53::i;:::-;5511:1;;8863:210:::0;;:::o;2824:73::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2331:51::-;;;;;;;;;;;;;;;;;:::o;3293:47::-;;;;;;;;;;;;;;;;;;;;;;:::o;1792:23::-;;;;;;;;;;;;;:::o;19314:188::-;19432:13;19465:29;19488:5;19466:16;19477:4;19466:6;:10;;:16;;;;:::i;:::-;19465:22;;:29;;;;:::i;:::-;19458:36;;19314:188;;;;;:::o;12905:182::-;5463:7;:19;5471:10;5463:19;;;;;;;;;;;;;;;;;;;;;;;;;5455:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13005:5:::1;12999:21;;;13021:8;;;;;;;;;;;13031:6;12999:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;12999:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;12999:39:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;12999:39:0;;;;;;;;;;;;;;;;12977:102;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;12905:182:::0;;:::o;7723:278::-;5463:7;:19;5471:10;5463:19;;;;;;;;;;;;;;;;;;;;;;;;;5455:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7831:5:::1;7810:26;;:7;:17;7818:8;7810:17;;;;;;;;;;;;;;;;;;;;;;;;;:26;;;7809:56;;;;;7862:1;7842:22;;:8;:22;;;;7809:56;7787:134;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;7932:11;7949:8;7932:26;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;7932:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7989:4;7969:7;:17;7977:8;7969:17;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;7723:278:::0;:::o;12289:442::-;5463:7;:19;5471:10;5463:19;;;;;;;;;;;;;;;;;;;;;;;;;5455:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12371:14:::1;12388:18;:23;12407:3;12388:23;;;;;;;;;;;:36;12412:11;12388:36;;;;;;;;;;;;;;;;12371:53;;12472:1;12433:18;:23;12452:3;12433:23;;;;;;;;;;;:36;12457:11;12433:36;;;;;;;;;;;;;;;:40;;;;12514:61;12560:6;12514:16;:29;12531:11;12514:29;;;;;;;;;;;;;;;;:33;;:61;;;;:::i;:::-;12482:16;:29;12499:11;12482:29;;;;;;;;;;;;;;;:93;;;;12601:5;12584:9;:14;12594:3;12584:14;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;12643:11;12637:27;;;12665:8;;;;;;;;;;;12675:6;12637:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;12637:45:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;12637:45:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;12637:45:0;;;;;;;;;;;;;;;;12615:108;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;5511:1;12289:442:::0;;:::o;8009:321::-;5463:7;:19;5471:10;5463:19;;;;;;;;;;;;;;;;;;;;;;;;;5455:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8122:5:::1;8101:26;;:7;:17;8109:8;8101:17;;;;;;;;;;;;;;;;;;;;;;;;;:26;;;8100:56;;;;;8153:1;8133:22;;:8;:22;;;;8100:56;8078:134;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;8223:11;8240:8;8223:26;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;8223:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8282:5;8260:7;:19;8268:10;8260:19;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;8318:4;8298:7;:17;8306:8;8298:17;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;8009:321:::0;:::o;19722:96::-;19765:7;19792:11;:18;;;;19785:25;;19722:96;:::o;2075:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;15630:1038::-;15767:5;15713:59;;:26;:38;15740:10;15713:38;;;;;;;;;;;;;;;:50;15752:10;;15713:50;;;;;;;;;;;;;;;;;;;;;:59;;;15691:153;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15860:9;15872:1;15860:13;;15855:738;15879:19;:27;15899:6;15879:27;;;;;;;;;;;;;;;;15875:1;:31;15855:738;;;15928:12;15943:20;:28;15964:6;15943:28;;;;;;;;;;;;;;;15972:1;15943:31;;;;;;;;;;;;;;;;;;;;;;;;;15928:46;;16075:107;16133:22;:30;16156:6;16133:30;;;;;;;;;;;;;;;:42;16164:10;;16133:42;;;;;;;;;;;:48;16176:4;16133:48;;;;;;;;;;;;;;;;16075:17;:29;16093:10;;16075:29;;;;;;;;;;;:35;16105:4;16075:35;;;;;;;;;;;;;;;;:57;;:107;;;;:::i;:::-;16037:17;:29;16055:10;;16037:29;;;;;;;;;;;:35;16067:4;16037:35;;;;;;;;;;;;;;;:145;;;;16197:14;16214:21;:29;16236:6;16214:29;;;;;;;;;;;;;;;:35;16244:4;16214:35;;;;;;;;;;;;;;;;16197:52;;16342:6;16291:22;:30;16314:6;16291:30;;;;;;;;;;;;;;;:42;16322:10;;16291:42;;;;;;;;;;;:48;16334:4;16291:48;;;;;;;;;;;;;;;:57;;;;16426:65;16484:6;16426:17;:29;16444:10;;16426:29;;;;;;;;;;;:35;16456:4;16426:35;;;;;;;;;;;;;;;;:57;;:65;;;;:::i;:::-;16388:17;:29;16406:10;;16388:29;;;;;;;;;;;:35;16418:4;16388:35;;;;;;;;;;;;;;;:103;;;;16570:10;;16556:4;16532:49;;16548:6;16532:49;;;16562:6;16532:49;;;;;;;;;;;;;;;;;;15855:738;;15908:3;;;;;;;15855:738;;;;16656:4;16603:26;:38;16630:10;16603:38;;;;;;;;;;;;;;;:50;16642:10;;16603:50;;;;;;;;;;;;:57;;;;;;;;;;;;;;;;;;15630:1038;:::o;2159:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;2441:45::-;;;;;;;;;;;;;;;;;:::o;1972:25::-;;;;:::o;3185:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;3396:40::-;;;;;;;;;;;;;;;;;;;;;;:::o;6775:812::-;5463:7;:19;5471:10;5463:19;;;;;;;;;;;;;;;;;;;;;;;;;5455:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6932:4:::1;;;;;;;;;;;6923:13;;:5;:13;;;;6922:40;;;;;6959:1;6942:19;;:5;:19;;;;6922:40;:64;;;;;6983:1;6967:18;;:4;:18;;;;6922:64;6900:142;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;7085:2;7075:6;:12;;:30;;;;;7101:4;7091:6;:14;;7075:30;7053:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7187:13;:19;7201:4;7187:19;;;;;;;;;;;;;;;;;;;;;;;;;7182:80;;7223:16;7245:4;7223:27;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;7223:27:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7182:80;7293:4;7272:12;:18;7285:4;7272:18;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;7350:4;7328:13;:19;7342:4;7328:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;7412:6;7393:10;:16;7404:4;7393:16;;;;;;;;;;;;;;;:25;;;;7480:5;7458:13;:19;7472:4;7458:19;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;7565:5;7539:40;;7559:4;7539:40;;7547:10;7539:40;;;7572:6;7539:40;;;;;;;;;;;;;;;;;;6775:812:::0;;;:::o;1766:19::-;;;;;;;;;;;;;:::o;3456:54::-;;;;;;;;;;;;;;;;;:::o;16707:1204::-;1726:1;5571:7;;:19;;5563:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1726:1;5637:7;:18;;;;16894:5:::1;16832:67;;:28;:40;16861:10;16832:40;;;;;;;;;;;;;;;:45;16873:3;16832:45;;;;;;;;;;;:58;16878:11;16832:58;;;;;;;;;;;;;;;;;;;;;;;;;:67;;;16810:156;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16985:9;:14;16995:3;16985:14;;;;;;;;;;;;;;;;;;;;;16977:45;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;17033:18;17054:27;17065:10;17077:3;17054:10;:27::i;:::-;17033:48;;17109:1;17096:10;:14;17092:598;;;17188:4;17127:28;:40;17156:10;17127:40;;;;;;;;;;;;;;;:45;17168:3;17127:45;;;;;;;;;;;:58;17173:11;17127:58;;;;;;;;;;;;;;;;:65;;;;;;;;;;;;;;;;;;17264:70;17323:10;17264:18;:23;17283:3;17264:23;;;;;;;;;;;:36;17288:11;17264:36;;;;;;;;;;;;;;;;:58;;:70;;;;:::i;:::-;17225:18;:23;17244:3;17225:23;;;;;;;;;;;:36;17249:11;17225:36;;;;;;;;;;;;;;;:109;;;;17414:77;17466:10;17414:16;:29;17431:11;17414:29;;;;;;;;;;;;;;;;:33;;:77;;;;:::i;:::-;17382:16;:29;17399:11;17382:29;;;;;;;;;;;;;;;:109;;;;17567:11;17561:27;;;17589:10;17601;17561:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;17561:51:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;17561:51:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;17561:51:0;;;;;;;;;;;;;;;;17535:126;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;17092:598;17730:3;17718:10;17705:41;;;17735:10;17705:41;;;;;;;;;;;;;;;;;;17815:5;17761:59;;:26;:38;17788:10;17761:38;;;;;;;;;;;;;;;:50;17800:10;;17761:50;;;;;;;;;;;;;;;;;;;;;:59;;;17757:147;;;17837:29;17855:10;17837:17;:29::i;:::-;17757:147;5666:1;1682::::0;5678:7;:22;;;;16707:1204;;:::o;2631:41::-;;;;;;;;;;;;;;;;;;;;;;:::o;3768:71::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1899:28::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;9136:345::-;5463:7;:19;5471:10;5463:19;;;;;;;;;;;;;;;;;;;;;;;;;5455:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9275:60:::1;9299:11;9312:10;;9324:5;9331:3;9275:23;:60::i;:::-;9386:17;9401:1;9386:10;;:14;;:17;;;;:::i;:::-;9373:10;:30;;;;9136:345:::0;;;:::o;4142:109::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;19614:100::-;19656:7;19683:16;:23;;;;19676:30;;19614:100;:::o;3055:72::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3555:57::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;389:181::-;447:7;467:9;483:1;479;:5;467:17;;508:1;503;:6;;495:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;561:1;554:8;;;389:181;;;;:::o;15214:364::-;15389:6;15337:22;:30;15360:6;15337:30;;;;;;;;;;;;;;;:42;15368:10;;15337:42;;;;;;;;;;;:48;15380:4;15337:48;;;;;;;;;;;;;;;;:58;;;;;;;;;;;15444:61;15498:6;15444:17;:29;15462:10;;15444:29;;;;;;;;;;;:35;15474:4;15444:35;;;;;;;;;;;;;;;;:53;;:61;;;;:::i;:::-;15406:17;:29;15424:10;;15406:29;;;;;;;;;;;:35;15436:4;15406:35;;;;;;;;;;;;;;;:99;;;;15559:10;;15545:4;15521:49;;15537:6;15521:49;;;15551:6;15521:49;;;;;;;;;;;;;;;;;;15214:364;;;:::o;578:136::-;636:7;663:43;667:1;670;663:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;656:50;;578:136;;;;:::o;10554:1643::-;10752:17;10780:22;10813:24;10853:9;10865:5;10853:17;;10848:556;10876:3;10872:1;:7;10848:556;;;10901:12;10916:16;10933:1;10916:19;;;;;;;;;;;;;;;;;;;;;;;;;10901:34;;10954:12;:18;10967:4;10954:18;;;;;;;;;;;;;;;;;;;;;;;;;:42;;;;;10976:14;:20;10991:4;10976:20;;;;;;;;;;;;;;;;;;;;;;;;;10954:42;10950:443;;;11034:21;11053:1;11034:14;:18;;:21;;;;:::i;:::-;11017:38;;11074:14;11091:10;:16;11102:4;11091:16;;;;;;;;;;;;;;;;11074:33;;11126:23;11152:72;11220:3;11175:39;11207:6;11181:4;;;;;;;;;;;11175:21;;;11197:4;11175:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;11175:27:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11175:27:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;11175:27:0;;;;;;;;;;;;;;;;:31;;:39;;;;:::i;:::-;11152:67;;:72;;;;:::i;:::-;11126:98;;11281:30;11295:15;11281:9;:13;;:30;;;;:::i;:::-;11269:42;;11362:15;11330:18;:23;11349:3;11330:23;;;;;;;;;;;:29;11354:4;11330:29;;;;;;;;;;;;;;;:47;;;;10950:443;;;10848:556;10881:3;;;;;;;10848:556;;;;11434:9;11414:12;:17;11427:3;11414:17;;;;;;;;;;;:29;;;;11517:9;11529:5;11517:17;;11512:471;11540:3;11536:1;:7;11512:471;;;11565:12;11580:16;11597:1;11580:19;;;;;;;;;;;;;;;;;;;;;;;;;11565:34;;11618:12;:18;11631:4;11618:18;;;;;;;;;;;;;;;;;;;;;;;;;:42;;;;;11640:14;:20;11655:4;11640:20;;;;;;;;;;;;;;;;;;;;;;;;;11618:42;11614:358;;;11700:23;11721:1;11700:16;:20;;:23;;;;:::i;:::-;11681:42;;11742:12;11757:18;:23;11776:3;11757:23;;;;;;;;;;;:29;11781:4;11757:29;;;;;;;;;;;;;;;;11742:44;;11835:121;11866:4;11893:9;11925:12;11835:8;:121::i;:::-;11805:16;:21;11822:3;11805:21;;;;;;;;;;;:27;11827:4;11805:27;;;;;;;;;;;;;;;:151;;;;11614:358;;11512:471;11545:3;;;;;;;11512:471;;;;12046:3;12021:10;11998:191;;;12064:12;12091:9;12115:14;12144:16;12175:3;11998:191;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10554:1643;;;;;;;:::o;954:246::-;1012:7;1041:1;1036;:6;1032:47;;;1066:1;1059:8;;;;1032:47;1089:9;1105:1;1101;:5;1089:17;;1134:1;1129;1125;:5;;;;;;:10;1117:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1191:1;1184:8;;;954:246;;;;;:::o;1208:132::-;1266:7;1293:39;1297:1;1300;1293:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1286:46;;1208:132;;;;:::o;722:224::-;842:7;875:1;870;:6;;878:12;862:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;862:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;902:9;918:1;914;:5;902:17;;937:1;930:8;;;722:224;;;;;:::o;1348:223::-;1468:7;1500:1;1496;:5;1503:12;1488:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1488:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1527:9;1543:1;1539;:5;;;;;;1527:17;;1562:1;1555:8;;;1348:223;;;;;:::o

Swarm Source

ipfs://523b33e2823930670089b7bf3a73590a67a8cf64cb5932041997a6bb5b4cd220

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.