POL Price: $0.721962 (+24.39%)
 

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Pay Native632721252024-10-20 13:36:4643 days ago1729431406IN
0x066d3AE2...C7de82a54
0 POL0.0079936989.60638221
Pay Native632402342024-10-19 18:26:1544 days ago1729362375IN
0x066d3AE2...C7de82a54
0 POL0.0030326934
Pay Native609469972024-08-23 15:51:46101 days ago1724428306IN
0x066d3AE2...C7de82a54
0 POL0.02693739301.95829427
Pay Native582493612024-06-17 0:02:22169 days ago1718582542IN
0x066d3AE2...C7de82a54
16.12903225 POL0.0036815332.89760351
Pay Native581818742024-06-15 7:40:25171 days ago1718437225IN
0x066d3AE2...C7de82a54
0 POL0.0026781530.02521084
Pay Native576477802024-06-01 15:38:41184 days ago1717256321IN
0x066d3AE2...C7de82a54
14.28571428 POL0.0044925440.14462813
Pay Native573839852024-05-25 18:54:38191 days ago1716663278IN
0x066d3AE2...C7de82a54
0 POL0.002863632.1
Pay Native573685592024-05-25 9:12:18191 days ago1716628338IN
0x066d3AE2...C7de82a54
0 POL0.0027297930.6
Pay Native568629072024-05-12 1:13:24205 days ago1715476404IN
0x066d3AE2...C7de82a54
0 POL0.002863632.1
Pay Native567710772024-05-09 18:14:24207 days ago1715278464IN
0x066d3AE2...C7de82a54
14.49275362 POL0.0039476730.6
Pay Native567544742024-05-09 8:06:15208 days ago1715241975IN
0x066d3AE2...C7de82a54
0 POL0.0028843640
Pay Native567544342024-05-09 8:04:51208 days ago1715241891IN
0x066d3AE2...C7de82a54
0 POL0.0031669135.5
Pay Native566294172024-05-06 2:51:37211 days ago1714963897IN
0x066d3AE2...C7de82a54
0 POL0.0029675833.27
Withdraw564188282024-04-30 11:01:37216 days ago1714474897IN
0x066d3AE2...C7de82a54
0 POL0.00542188123.20232763
Pay Native563298742024-04-28 0:02:58219 days ago1714262578IN
0x066d3AE2...C7de82a54
0 POL0.0051116757.3
Pay Native563248912024-04-27 20:44:36219 days ago1714250676IN
0x066d3AE2...C7de82a54
0 POL0.0032650436.6
Pay Native563244212024-04-27 20:26:20219 days ago1714249580IN
0x066d3AE2...C7de82a54
0 POL0.0037110941.6
Pay Native562931392024-04-27 0:18:07220 days ago1714177087IN
0x066d3AE2...C7de82a54
14.28571428 POL0.0082579973.8
Pay Native555966862024-04-08 17:39:26238 days ago1712597966IN
0x066d3AE2...C7de82a54
10.63829787 POL0.0263098235.1
Pay Native555351592024-04-07 4:02:48240 days ago1712462568IN
0x066d3AE2...C7de82a54
11.11111111 POL0.0098144187.7
Pay Native555349492024-04-07 3:54:48240 days ago1712462088IN
0x066d3AE2...C7de82a54
11.11111111 POL0.0090198680.6
Pay Native554916162024-04-06 0:41:06241 days ago1712364066IN
0x066d3AE2...C7de82a54
11.23595505 POL0.0109111297.5
Pay Native554765612024-04-05 15:10:47241 days ago1712329847IN
0x066d3AE2...C7de82a54
11.23595505 POL0.03254313290.8
Pay Native554630152024-04-05 6:30:34242 days ago1712298634IN
0x066d3AE2...C7de82a54
11.23595505 POL0.01403338125.4
Pay Native554396912024-04-04 15:39:56242 days ago1712245196IN
0x066d3AE2...C7de82a54
0 POL0.01487111166.69968154
View all transactions

Latest 25 internal transactions (View All)

Parent Transaction Hash Block From To
564188282024-04-30 11:01:37216 days ago1714474897
0x066d3AE2...C7de82a54
114.56480207 POL
542802492024-03-05 3:43:18273 days ago1709610198
0x066d3AE2...C7de82a54
3,304.9939769 POL
470239762023-09-01 17:45:26458 days ago1693590326
0x066d3AE2...C7de82a54
4,106.03957037 POL
446455372023-07-03 19:55:35518 days ago1688414135
0x066d3AE2...C7de82a54
4,346.07527401 POL
439905782023-06-16 21:19:51535 days ago1686950391
0x066d3AE2...C7de82a54
4,962.05699686 POL
434811492023-06-03 12:44:27548 days ago1685796267
0x066d3AE2...C7de82a54
13,593.85001287 POL
423059562023-05-04 18:48:00578 days ago1683226080
0x066d3AE2...C7de82a54
2,558.32212619 POL
421875362023-05-01 19:22:08581 days ago1682968928
0x066d3AE2...C7de82a54
8,232.10734605 POL
419879262023-04-26 17:05:03586 days ago1682528703
0x066d3AE2...C7de82a54
3,292.77256856 POL
416107922023-04-16 20:43:01596 days ago1681677781
0x066d3AE2...C7de82a54
1,746.64289576 POL
414854252023-04-13 13:37:24599 days ago1681393044
0x066d3AE2...C7de82a54
681.77753354 POL
414618402023-04-12 22:54:24600 days ago1681340064
0x066d3AE2...C7de82a54
1,994.19273318 POL
414219782023-04-11 22:12:13601 days ago1681251133
0x066d3AE2...C7de82a54
898.39384983 POL
413834722023-04-10 22:10:53602 days ago1681164653
0x066d3AE2...C7de82a54
2,722.12183737 POL
413060912023-04-08 22:27:40604 days ago1680992860
0x066d3AE2...C7de82a54
2,437.69158769 POL
412665532023-04-07 22:08:20605 days ago1680905300
0x066d3AE2...C7de82a54
2,334.92283945 POL
412048242023-04-06 8:10:42607 days ago1680768642
0x066d3AE2...C7de82a54
3,056.49874967 POL
411379052023-04-04 15:22:53608 days ago1680621773
0x066d3AE2...C7de82a54
2,488.59047308 POL
411069842023-04-03 19:56:57609 days ago1680551817
0x066d3AE2...C7de82a54
15,525.39899348 POL
403491862023-03-14 20:59:31629 days ago1678827571
0x066d3AE2...C7de82a54
476.05705267 POL
398446632023-03-01 14:22:26642 days ago1677680546
0x066d3AE2...C7de82a54
464.72690745 POL
395204702023-02-20 19:12:29651 days ago1676920349
0x066d3AE2...C7de82a54
963.55083767 POL
394116022023-02-17 23:33:35654 days ago1676676815
0x066d3AE2...C7de82a54
431.00192625 POL
393755082023-02-16 23:53:57655 days ago1676591637
0x066d3AE2...C7de82a54
535.36752033 POL
390992042023-02-09 14:15:43662 days ago1675952143
0x066d3AE2...C7de82a54
354.25187976 POL
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
payments

Compiler Version
v0.8.1+commit.df193b15

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at polygonscan.com on 2022-06-06
*/

// SPDX-License-Identifier: MIT
pragma solidity 0.8.1; 
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    /**
     * @dev Returns the substraction of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
            // benefit is lost if 'b' is also tested.
            // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    /**
     * @dev Returns the division of two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator.
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {trySub}.
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting with custom message when dividing by zero.
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {tryMod}.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

contract payments {

    using SafeMath for uint256;
    mapping(string => uint256) percent;
    mapping(address => bool) private admins;
    address public contractOwner = msg.sender; 
    mapping(bytes32 => address) public receipts;
    mapping(bytes32 => uint256) public amounts;
    mapping(address => uint256) public balanceOf; 
    mapping(string => address) public delegate;
    mapping(string => bytes32) public IDrissHashes;

    constructor() {
        delegate["IDriss"] = contractOwner;
        percent["IDriss"] = 100;
    }

    event PaymentDone(address indexed payer, uint256 amount, bytes32 paymentId_hash, string indexed IDrissHash, uint256 date);
    event AdminAdded(address indexed admin);
    event AdminDeleted(address indexed admin);
    event DelegateAdded(string delegateHandle, address indexed delegateAddress);
    event DelegateDeleted(string delegateHandle, address indexed delegateAddress);
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    function addAdmin(address adminAddress) external {
        require(msg.sender == contractOwner, "Only contractOwner can add admins.");
        admins[adminAddress] = true;
        emit AdminAdded(adminAddress);
    }

    function deleteAdmin(address adminAddress) external {
        require(msg.sender == contractOwner, "Only contractOwner can delete admins.");
        admins[adminAddress] = false;
        emit AdminDeleted(adminAddress);
    }

    function addDelegateException(address delegateAddress, string memory delegateHandle, uint256 percentage) external {
        require(msg.sender == contractOwner, "Only contractOwner can add special delegate partner.");
        require(delegate[delegateHandle] == address(0), "Delegate handle exists.");
        require(delegateAddress != address(0), "Ownable: delegateAddress is the zero address.");
        delegate[delegateHandle] = delegateAddress;
        percent[delegateHandle] = percentage;
        emit DelegateAdded(delegateHandle, delegateAddress);
    }

    // Anyone can create a delegate link for anyone
    function addDelegate(address delegateAddress, string memory delegateHandle) external {
        require(delegate[delegateHandle] == address(0), "Delegate handle exists.");
        require(delegateAddress != address(0), "Ownable: delegateAddress is the zero address.");
        delegate[delegateHandle] = delegateAddress;
        percent[delegateHandle] = 20;
        emit DelegateAdded(delegateHandle, delegateAddress);
    }

    // Delete the delegation link if needed.
    function deleteDelegate(string memory delegateHandle) external {
        require(msg.sender == delegate[delegateHandle], "Only delegate can delete delegation link.");
        address deletedDelegate = delegate[delegateHandle];
        delete delegate[delegateHandle];
        delete percent[delegateHandle];
        emit DelegateDeleted(delegateHandle, deletedDelegate);
    }

    // Payment function distributing the payment into two balances.
    function payNative(bytes32 paymentId_hash, string memory IDrissHash, string memory delegateHandle) external payable {
        require(receipts[paymentId_hash] == address(0), "Already paid this receipt.");
        receipts[paymentId_hash] = msg.sender;
        amounts[paymentId_hash] = msg.value;
        IDrissHashes[IDrissHash] = paymentId_hash;
        if (delegate[delegateHandle] != address(0)) {
            balanceOf[contractOwner] += msg.value.sub((msg.value.mul(percent[delegateHandle])).div(100));
            balanceOf[delegate[delegateHandle]] += (msg.value.mul(percent[delegateHandle])).div(100);
        } else {
            balanceOf[contractOwner] += msg.value;
        }
        emit PaymentDone(receipts[paymentId_hash], amounts[paymentId_hash], paymentId_hash, IDrissHash, block.timestamp);
    }

    // Anyone can withraw funds to any participating delegate
    function withdraw(uint256 amount, string memory delegateHandle) external returns (bytes memory) {
        require(amount <= balanceOf[delegate[delegateHandle]]);
        balanceOf[delegate[delegateHandle]] -= amount;
        (bool sent, bytes memory data) = delegate[delegateHandle].call{value: amount, gas: 40000}("");
        require(sent, "Failed to  withdraw");
        return data;
    }

    // commit payment hash creation
    function hashReceipt(string memory receiptId, address paymAddr) public pure returns (bytes32) {
        require(paymAddr != address(0), "Payment address cannot be null address.");
        return keccak256(abi.encode(receiptId, paymAddr));
    }

    // reveal payment hash
    function verifyReceipt(string memory receiptId, address paymAddr) public view returns (bool) {
        require(paymAddr != address(0), "Payment address cannot be null address.");
        require(receipts[hashReceipt(receiptId, paymAddr)] == paymAddr);
        return true;
    }

    // Transfer contract ownership
    function transferContractOwnership(address newOwner) public payable {
        require(msg.sender == contractOwner, "Only contractOwner can change ownership of contract.");
        require(newOwner != address(0), "Ownable: new contractOwner is the zero address.");
        _transferOwnership(newOwner);
    }

    // Helper function
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = contractOwner;
        // transfer balance of old owner to new owner
        uint256 ownerAmount = balanceOf[oldOwner];
        // delete balance of old owner
        balanceOf[oldOwner] = 0;
        contractOwner = newOwner;
        // set new owner
        delegate["IDriss"] = newOwner;
        // set balance of new owner
        balanceOf[newOwner] = ownerAmount;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"admin","type":"address"}],"name":"AdminAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"admin","type":"address"}],"name":"AdminDeleted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"delegateHandle","type":"string"},{"indexed":true,"internalType":"address","name":"delegateAddress","type":"address"}],"name":"DelegateAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"delegateHandle","type":"string"},{"indexed":true,"internalType":"address","name":"delegateAddress","type":"address"}],"name":"DelegateDeleted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"payer","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"paymentId_hash","type":"bytes32"},{"indexed":true,"internalType":"string","name":"IDrissHash","type":"string"},{"indexed":false,"internalType":"uint256","name":"date","type":"uint256"}],"name":"PaymentDone","type":"event"},{"inputs":[{"internalType":"string","name":"","type":"string"}],"name":"IDrissHashes","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adminAddress","type":"address"}],"name":"addAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"delegateAddress","type":"address"},{"internalType":"string","name":"delegateHandle","type":"string"}],"name":"addDelegate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"delegateAddress","type":"address"},{"internalType":"string","name":"delegateHandle","type":"string"},{"internalType":"uint256","name":"percentage","type":"uint256"}],"name":"addDelegateException","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"amounts","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"}],"name":"delegate","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adminAddress","type":"address"}],"name":"deleteAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"delegateHandle","type":"string"}],"name":"deleteDelegate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"receiptId","type":"string"},{"internalType":"address","name":"paymAddr","type":"address"}],"name":"hashReceipt","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes32","name":"paymentId_hash","type":"bytes32"},{"internalType":"string","name":"IDrissHash","type":"string"},{"internalType":"string","name":"delegateHandle","type":"string"}],"name":"payNative","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"receipts","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferContractOwnership","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"string","name":"receiptId","type":"string"},{"internalType":"address","name":"paymAddr","type":"address"}],"name":"verifyReceipt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"string","name":"delegateHandle","type":"string"}],"name":"withdraw","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"nonpayable","type":"function"}]

608060405233600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200005257600080fd5b50600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166006604051620000869062000123565b908152602001604051809103902060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060646000604051620000e49062000123565b9081526020016040518091039020819055506200016e565b60006200010b6006836200013a565b9150620001188262000145565b600682019050919050565b60006200013082620000fc565b9150819050919050565b600081905092915050565b7f4944726973730000000000000000000000000000000000000000000000000000600082015250565b61280f806200017e6000396000f3fe6080604052600436106100f35760003560e01c8063923c85d51161008a578063ca7b620511610059578063ca7b620514610342578063ce606ee01461036b578063dc048cf214610396578063ef6cf04d146103d3576100f3565b8063923c85d5146102835780639ddb511a146102ac578063a843c51f146102e9578063c8662d9514610305576100f3565b806356dcb58d116100c657806356dcb58d146101b7578063658b626e146101e0578063704802751461021d57806370a0823114610246576100f3565b8063064cdcdc146100f85780630960d7791461013557806327e1f7df14610151578063464e49271461017a575b600080fd5b34801561010457600080fd5b5061011f600480360381019061011a9190611b12565b610410565b60405161012c9190611f18565b60405180910390f35b61014f600480360381019061014a9190611a93565b61043e565b005b34801561015d57600080fd5b5061017860048036038101906101739190611986565b6108b4565b005b34801561018657600080fd5b506101a1600480360381019061019c9190611b53565b6109e2565b6040516101ae9190611f18565b60405180910390f35b3480156101c357600080fd5b506101de60048036038101906101d991906119af565b610a84565b005b3480156101ec57600080fd5b5061020760048036038101906102029190611b53565b610c74565b6040516102149190611efd565b60405180910390f35b34801561022957600080fd5b50610244600480360381019061023f9190611986565b610d63565b005b34801561025257600080fd5b5061026d60048036038101906102689190611986565b610e90565b60405161027a9190612107565b60405180910390f35b34801561028f57600080fd5b506102aa60048036038101906102a59190611b12565b610ea8565b005b3480156102b857600080fd5b506102d360048036038101906102ce9190611b12565b61104c565b6040516102e09190611ee2565b60405180910390f35b61030360048036038101906102fe9190611986565b611095565b005b34801561031157600080fd5b5061032c60048036038101906103279190611a6a565b6111a1565b6040516103399190612107565b60405180910390f35b34801561034e57600080fd5b5061036960048036038101906103649190611a03565b6111b9565b005b34801561037757600080fd5b50610380611439565b60405161038d9190611ee2565b60405180910390f35b3480156103a257600080fd5b506103bd60048036038101906103b89190611ba7565b61145f565b6040516103ca9190611f33565b60405180910390f35b3480156103df57600080fd5b506103fa60048036038101906103f59190611a6a565b61167b565b6040516104079190611ee2565b60405180910390f35b6007818051602081018201805184825260208301602085012081835280955050505050506000915090505481565b600073ffffffffffffffffffffffffffffffffffffffff166003600085815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146104e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104d790611fa7565b60405180910390fd5b336003600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503460046000858152602001908152602001600020819055508260078360405161055b9190611ea1565b908152602001604051809103902081905550600073ffffffffffffffffffffffffffffffffffffffff166006826040516105959190611ea1565b908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107885761063561062660646106186000856040516105fa9190611ea1565b908152602001604051809103902054346116ae90919063ffffffff16565b6116c490919063ffffffff16565b346116da90919063ffffffff16565b60056000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546106a591906121fd565b925050819055506106f060646106e26000846040516106c49190611ea1565b908152602001604051809103902054346116ae90919063ffffffff16565b6116c490919063ffffffff16565b600560006006846040516107049190611ea1565b908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461077c91906121fd565b92505081905550610801565b3460056000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546107f991906121fd565b925050819055505b8160405161080f9190611ea1565b60405180910390206003600085815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f2686fa1c4fa7eb7d1d1bf7209fb9691d4182302db1c43b4d15db644665421912600460008781526020019081526020016000205486426040516108a793929190612122565b60405180910390a3505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610944576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093b90611fe7565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f989ddfce057dad219e0ae16f691b121bb0e348f0d8ae0ad400b4d5ac8d616c8b60405160405180910390a250565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610a53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4a906120e7565b60405180910390fd5b8282604051602001610a66929190611f77565b60405160208183030381529060405280519060200120905092915050565b600073ffffffffffffffffffffffffffffffffffffffff16600682604051610aac9190611ea1565b908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2890611fc7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610ba1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b98906120c7565b60405180910390fd5b81600682604051610bb29190611ea1565b908152602001604051809103902060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506014600082604051610c109190611ea1565b9081526020016040518091039020819055508173ffffffffffffffffffffffffffffffffffffffff167f7725d75decde45f52c5f59ef6bcb3c1129181396cff579819d367a32256b6cf582604051610c689190611f55565b60405180910390a25050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610ce5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cdc906120e7565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1660036000610d0a86866109e2565b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d5957600080fd5b6001905092915050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610df3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dea906120a7565b60405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f44d6d25963f097ad14f29f06854a01f575648a1ef82f30e562ccd3889717e33960405160405180910390a250565b60056020528060005260406000206000915090505481565b600681604051610eb89190611ea1565b908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4b90612047565b60405180910390fd5b6000600682604051610f669190611ea1565b908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600682604051610fa79190611ea1565b908152602001604051809103902060006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600082604051610fe89190611ea1565b9081526020016040518091039020600090558073ffffffffffffffffffffffffffffffffffffffff167fe58813483134131f95838d689a35b4bb93e7ce7c108fa88f82aacb6440436469836040516110409190611f55565b60405180910390a25050565b6006818051602081018201805184825260208301602085012081835280955050505050506000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611125576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111c90612087565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611195576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118c90612007565b60405180910390fd5b61119e816116f0565b50565b60046020528060005260406000206000915090505481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611249576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124090612067565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166006836040516112719190611ea1565b908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ed90611fc7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611366576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135d906120c7565b60405180910390fd5b826006836040516113779190611ea1565b908152602001604051809103902060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806000836040516113d49190611ea1565b9081526020016040518091039020819055508273ffffffffffffffffffffffffffffffffffffffff167f7725d75decde45f52c5f59ef6bcb3c1129181396cff579819d367a32256b6cf58360405161142c9190611f55565b60405180910390a2505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600560006006846040516114759190611ea1565b908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548311156114eb57600080fd5b82600560006006856040516115009190611ea1565b908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461157891906122de565b925050819055506000806006846040516115929190611ea1565b908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1685619c40906040516115e890611ecd565b600060405180830381858888f193505050503d8060008114611626576040519150601f19603f3d011682016040523d82523d6000602084013e61162b565b606091505b509150915081611670576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166790612027565b60405180910390fd5b809250505092915050565b60036020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600081836116bc9190612284565b905092915050565b600081836116d29190612253565b905092915050565b600081836116e891906122de565b905092915050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555082600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508260066040516117f090611eb8565b908152602001604051809103902060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505050565b60006118f26118ed8461217e565b612159565b90508281526020810184848401111561190a57600080fd5b611915848285612364565b509392505050565b60008135905061192c81612794565b92915050565b600081359050611941816127ab565b92915050565b600082601f83011261195857600080fd5b81356119688482602086016118df565b91505092915050565b600081359050611980816127c2565b92915050565b60006020828403121561199857600080fd5b60006119a68482850161191d565b91505092915050565b600080604083850312156119c257600080fd5b60006119d08582860161191d565b925050602083013567ffffffffffffffff8111156119ed57600080fd5b6119f985828601611947565b9150509250929050565b600080600060608486031215611a1857600080fd5b6000611a268682870161191d565b935050602084013567ffffffffffffffff811115611a4357600080fd5b611a4f86828701611947565b9250506040611a6086828701611971565b9150509250925092565b600060208284031215611a7c57600080fd5b6000611a8a84828501611932565b91505092915050565b600080600060608486031215611aa857600080fd5b6000611ab686828701611932565b935050602084013567ffffffffffffffff811115611ad357600080fd5b611adf86828701611947565b925050604084013567ffffffffffffffff811115611afc57600080fd5b611b0886828701611947565b9150509250925092565b600060208284031215611b2457600080fd5b600082013567ffffffffffffffff811115611b3e57600080fd5b611b4a84828501611947565b91505092915050565b60008060408385031215611b6657600080fd5b600083013567ffffffffffffffff811115611b8057600080fd5b611b8c85828601611947565b9250506020611b9d8582860161191d565b9150509250929050565b60008060408385031215611bba57600080fd5b6000611bc885828601611971565b925050602083013567ffffffffffffffff811115611be557600080fd5b611bf185828601611947565b9150509250929050565b611c0481612312565b82525050565b611c1381612324565b82525050565b611c2281612330565b82525050565b6000611c33826121af565b611c3d81856121c5565b9350611c4d818560208601612373565b611c5681612464565b840191505092915050565b6000611c6c826121ba565b611c7681856121e1565b9350611c86818560208601612373565b611c8f81612464565b840191505092915050565b6000611ca5826121ba565b611caf81856121f2565b9350611cbf818560208601612373565b80840191505092915050565b6000611cd8601a836121e1565b9150611ce382612475565b602082019050919050565b6000611cfb6017836121e1565b9150611d068261249e565b602082019050919050565b6000611d1e6025836121e1565b9150611d29826124c7565b604082019050919050565b6000611d416006836121f2565b9150611d4c82612516565b600682019050919050565b6000611d64602f836121e1565b9150611d6f8261253f565b604082019050919050565b6000611d876013836121e1565b9150611d928261258e565b602082019050919050565b6000611daa6029836121e1565b9150611db5826125b7565b604082019050919050565b6000611dcd6034836121e1565b9150611dd882612606565b604082019050919050565b6000611df06034836121e1565b9150611dfb82612655565b604082019050919050565b6000611e136022836121e1565b9150611e1e826126a4565b604082019050919050565b6000611e36602d836121e1565b9150611e41826126f3565b604082019050919050565b6000611e596000836121d6565b9150611e6482612742565b600082019050919050565b6000611e7c6027836121e1565b9150611e8782612745565b604082019050919050565b611e9b8161235a565b82525050565b6000611ead8284611c9a565b915081905092915050565b6000611ec382611d34565b9150819050919050565b6000611ed882611e4c565b9150819050919050565b6000602082019050611ef76000830184611bfb565b92915050565b6000602082019050611f126000830184611c0a565b92915050565b6000602082019050611f2d6000830184611c19565b92915050565b60006020820190508181036000830152611f4d8184611c28565b905092915050565b60006020820190508181036000830152611f6f8184611c61565b905092915050565b60006040820190508181036000830152611f918185611c61565b9050611fa06020830184611bfb565b9392505050565b60006020820190508181036000830152611fc081611ccb565b9050919050565b60006020820190508181036000830152611fe081611cee565b9050919050565b6000602082019050818103600083015261200081611d11565b9050919050565b6000602082019050818103600083015261202081611d57565b9050919050565b6000602082019050818103600083015261204081611d7a565b9050919050565b6000602082019050818103600083015261206081611d9d565b9050919050565b6000602082019050818103600083015261208081611dc0565b9050919050565b600060208201905081810360008301526120a081611de3565b9050919050565b600060208201905081810360008301526120c081611e06565b9050919050565b600060208201905081810360008301526120e081611e29565b9050919050565b6000602082019050818103600083015261210081611e6f565b9050919050565b600060208201905061211c6000830184611e92565b92915050565b60006060820190506121376000830186611e92565b6121446020830185611c19565b6121516040830184611e92565b949350505050565b6000612163612174565b905061216f82826123a6565b919050565b6000604051905090565b600067ffffffffffffffff82111561219957612198612435565b5b6121a282612464565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b60006122088261235a565b91506122138361235a565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612248576122476123d7565b5b828201905092915050565b600061225e8261235a565b91506122698361235a565b92508261227957612278612406565b5b828204905092915050565b600061228f8261235a565b915061229a8361235a565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156122d3576122d26123d7565b5b828202905092915050565b60006122e98261235a565b91506122f48361235a565b925082821015612307576123066123d7565b5b828203905092915050565b600061231d8261233a565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015612391578082015181840152602081019050612376565b838111156123a0576000848401525b50505050565b6123af82612464565b810181811067ffffffffffffffff821117156123ce576123cd612435565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f416c72656164792070616964207468697320726563656970742e000000000000600082015250565b7f44656c65676174652068616e646c65206578697374732e000000000000000000600082015250565b7f4f6e6c7920636f6e74726163744f776e65722063616e2064656c65746520616460008201527f6d696e732e000000000000000000000000000000000000000000000000000000602082015250565b7f4944726973730000000000000000000000000000000000000000000000000000600082015250565b7f4f776e61626c653a206e657720636f6e74726163744f776e657220697320746860008201527f65207a65726f20616464726573732e0000000000000000000000000000000000602082015250565b7f4661696c656420746f2020776974686472617700000000000000000000000000600082015250565b7f4f6e6c792064656c65676174652063616e2064656c6574652064656c6567617460008201527f696f6e206c696e6b2e0000000000000000000000000000000000000000000000602082015250565b7f4f6e6c7920636f6e74726163744f776e65722063616e2061646420737065636960008201527f616c2064656c656761746520706172746e65722e000000000000000000000000602082015250565b7f4f6e6c7920636f6e74726163744f776e65722063616e206368616e6765206f7760008201527f6e657273686970206f6620636f6e74726163742e000000000000000000000000602082015250565b7f4f6e6c7920636f6e74726163744f776e65722063616e206164642061646d696e60008201527f732e000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2064656c656761746541646472657373206973207468652060008201527f7a65726f20616464726573732e00000000000000000000000000000000000000602082015250565b50565b7f5061796d656e7420616464726573732063616e6e6f74206265206e756c6c206160008201527f6464726573732e00000000000000000000000000000000000000000000000000602082015250565b61279d81612312565b81146127a857600080fd5b50565b6127b481612330565b81146127bf57600080fd5b50565b6127cb8161235a565b81146127d657600080fd5b5056fea26469706673582212205a372bf14748525310b69d4d3fda3fb9f16733b263ac75315a3508d0328d60fc64736f6c63430008010033

Deployed Bytecode

0x6080604052600436106100f35760003560e01c8063923c85d51161008a578063ca7b620511610059578063ca7b620514610342578063ce606ee01461036b578063dc048cf214610396578063ef6cf04d146103d3576100f3565b8063923c85d5146102835780639ddb511a146102ac578063a843c51f146102e9578063c8662d9514610305576100f3565b806356dcb58d116100c657806356dcb58d146101b7578063658b626e146101e0578063704802751461021d57806370a0823114610246576100f3565b8063064cdcdc146100f85780630960d7791461013557806327e1f7df14610151578063464e49271461017a575b600080fd5b34801561010457600080fd5b5061011f600480360381019061011a9190611b12565b610410565b60405161012c9190611f18565b60405180910390f35b61014f600480360381019061014a9190611a93565b61043e565b005b34801561015d57600080fd5b5061017860048036038101906101739190611986565b6108b4565b005b34801561018657600080fd5b506101a1600480360381019061019c9190611b53565b6109e2565b6040516101ae9190611f18565b60405180910390f35b3480156101c357600080fd5b506101de60048036038101906101d991906119af565b610a84565b005b3480156101ec57600080fd5b5061020760048036038101906102029190611b53565b610c74565b6040516102149190611efd565b60405180910390f35b34801561022957600080fd5b50610244600480360381019061023f9190611986565b610d63565b005b34801561025257600080fd5b5061026d60048036038101906102689190611986565b610e90565b60405161027a9190612107565b60405180910390f35b34801561028f57600080fd5b506102aa60048036038101906102a59190611b12565b610ea8565b005b3480156102b857600080fd5b506102d360048036038101906102ce9190611b12565b61104c565b6040516102e09190611ee2565b60405180910390f35b61030360048036038101906102fe9190611986565b611095565b005b34801561031157600080fd5b5061032c60048036038101906103279190611a6a565b6111a1565b6040516103399190612107565b60405180910390f35b34801561034e57600080fd5b5061036960048036038101906103649190611a03565b6111b9565b005b34801561037757600080fd5b50610380611439565b60405161038d9190611ee2565b60405180910390f35b3480156103a257600080fd5b506103bd60048036038101906103b89190611ba7565b61145f565b6040516103ca9190611f33565b60405180910390f35b3480156103df57600080fd5b506103fa60048036038101906103f59190611a6a565b61167b565b6040516104079190611ee2565b60405180910390f35b6007818051602081018201805184825260208301602085012081835280955050505050506000915090505481565b600073ffffffffffffffffffffffffffffffffffffffff166003600085815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146104e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104d790611fa7565b60405180910390fd5b336003600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503460046000858152602001908152602001600020819055508260078360405161055b9190611ea1565b908152602001604051809103902081905550600073ffffffffffffffffffffffffffffffffffffffff166006826040516105959190611ea1565b908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107885761063561062660646106186000856040516105fa9190611ea1565b908152602001604051809103902054346116ae90919063ffffffff16565b6116c490919063ffffffff16565b346116da90919063ffffffff16565b60056000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546106a591906121fd565b925050819055506106f060646106e26000846040516106c49190611ea1565b908152602001604051809103902054346116ae90919063ffffffff16565b6116c490919063ffffffff16565b600560006006846040516107049190611ea1565b908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461077c91906121fd565b92505081905550610801565b3460056000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546107f991906121fd565b925050819055505b8160405161080f9190611ea1565b60405180910390206003600085815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f2686fa1c4fa7eb7d1d1bf7209fb9691d4182302db1c43b4d15db644665421912600460008781526020019081526020016000205486426040516108a793929190612122565b60405180910390a3505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610944576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093b90611fe7565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f989ddfce057dad219e0ae16f691b121bb0e348f0d8ae0ad400b4d5ac8d616c8b60405160405180910390a250565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610a53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4a906120e7565b60405180910390fd5b8282604051602001610a66929190611f77565b60405160208183030381529060405280519060200120905092915050565b600073ffffffffffffffffffffffffffffffffffffffff16600682604051610aac9190611ea1565b908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2890611fc7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610ba1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b98906120c7565b60405180910390fd5b81600682604051610bb29190611ea1565b908152602001604051809103902060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506014600082604051610c109190611ea1565b9081526020016040518091039020819055508173ffffffffffffffffffffffffffffffffffffffff167f7725d75decde45f52c5f59ef6bcb3c1129181396cff579819d367a32256b6cf582604051610c689190611f55565b60405180910390a25050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610ce5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cdc906120e7565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1660036000610d0a86866109e2565b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d5957600080fd5b6001905092915050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610df3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dea906120a7565b60405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f44d6d25963f097ad14f29f06854a01f575648a1ef82f30e562ccd3889717e33960405160405180910390a250565b60056020528060005260406000206000915090505481565b600681604051610eb89190611ea1565b908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4b90612047565b60405180910390fd5b6000600682604051610f669190611ea1565b908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600682604051610fa79190611ea1565b908152602001604051809103902060006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600082604051610fe89190611ea1565b9081526020016040518091039020600090558073ffffffffffffffffffffffffffffffffffffffff167fe58813483134131f95838d689a35b4bb93e7ce7c108fa88f82aacb6440436469836040516110409190611f55565b60405180910390a25050565b6006818051602081018201805184825260208301602085012081835280955050505050506000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611125576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111c90612087565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611195576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118c90612007565b60405180910390fd5b61119e816116f0565b50565b60046020528060005260406000206000915090505481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611249576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124090612067565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166006836040516112719190611ea1565b908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ed90611fc7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611366576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135d906120c7565b60405180910390fd5b826006836040516113779190611ea1565b908152602001604051809103902060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806000836040516113d49190611ea1565b9081526020016040518091039020819055508273ffffffffffffffffffffffffffffffffffffffff167f7725d75decde45f52c5f59ef6bcb3c1129181396cff579819d367a32256b6cf58360405161142c9190611f55565b60405180910390a2505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600560006006846040516114759190611ea1565b908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548311156114eb57600080fd5b82600560006006856040516115009190611ea1565b908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461157891906122de565b925050819055506000806006846040516115929190611ea1565b908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1685619c40906040516115e890611ecd565b600060405180830381858888f193505050503d8060008114611626576040519150601f19603f3d011682016040523d82523d6000602084013e61162b565b606091505b509150915081611670576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166790612027565b60405180910390fd5b809250505092915050565b60036020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600081836116bc9190612284565b905092915050565b600081836116d29190612253565b905092915050565b600081836116e891906122de565b905092915050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555082600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508260066040516117f090611eb8565b908152602001604051809103902060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505050565b60006118f26118ed8461217e565b612159565b90508281526020810184848401111561190a57600080fd5b611915848285612364565b509392505050565b60008135905061192c81612794565b92915050565b600081359050611941816127ab565b92915050565b600082601f83011261195857600080fd5b81356119688482602086016118df565b91505092915050565b600081359050611980816127c2565b92915050565b60006020828403121561199857600080fd5b60006119a68482850161191d565b91505092915050565b600080604083850312156119c257600080fd5b60006119d08582860161191d565b925050602083013567ffffffffffffffff8111156119ed57600080fd5b6119f985828601611947565b9150509250929050565b600080600060608486031215611a1857600080fd5b6000611a268682870161191d565b935050602084013567ffffffffffffffff811115611a4357600080fd5b611a4f86828701611947565b9250506040611a6086828701611971565b9150509250925092565b600060208284031215611a7c57600080fd5b6000611a8a84828501611932565b91505092915050565b600080600060608486031215611aa857600080fd5b6000611ab686828701611932565b935050602084013567ffffffffffffffff811115611ad357600080fd5b611adf86828701611947565b925050604084013567ffffffffffffffff811115611afc57600080fd5b611b0886828701611947565b9150509250925092565b600060208284031215611b2457600080fd5b600082013567ffffffffffffffff811115611b3e57600080fd5b611b4a84828501611947565b91505092915050565b60008060408385031215611b6657600080fd5b600083013567ffffffffffffffff811115611b8057600080fd5b611b8c85828601611947565b9250506020611b9d8582860161191d565b9150509250929050565b60008060408385031215611bba57600080fd5b6000611bc885828601611971565b925050602083013567ffffffffffffffff811115611be557600080fd5b611bf185828601611947565b9150509250929050565b611c0481612312565b82525050565b611c1381612324565b82525050565b611c2281612330565b82525050565b6000611c33826121af565b611c3d81856121c5565b9350611c4d818560208601612373565b611c5681612464565b840191505092915050565b6000611c6c826121ba565b611c7681856121e1565b9350611c86818560208601612373565b611c8f81612464565b840191505092915050565b6000611ca5826121ba565b611caf81856121f2565b9350611cbf818560208601612373565b80840191505092915050565b6000611cd8601a836121e1565b9150611ce382612475565b602082019050919050565b6000611cfb6017836121e1565b9150611d068261249e565b602082019050919050565b6000611d1e6025836121e1565b9150611d29826124c7565b604082019050919050565b6000611d416006836121f2565b9150611d4c82612516565b600682019050919050565b6000611d64602f836121e1565b9150611d6f8261253f565b604082019050919050565b6000611d876013836121e1565b9150611d928261258e565b602082019050919050565b6000611daa6029836121e1565b9150611db5826125b7565b604082019050919050565b6000611dcd6034836121e1565b9150611dd882612606565b604082019050919050565b6000611df06034836121e1565b9150611dfb82612655565b604082019050919050565b6000611e136022836121e1565b9150611e1e826126a4565b604082019050919050565b6000611e36602d836121e1565b9150611e41826126f3565b604082019050919050565b6000611e596000836121d6565b9150611e6482612742565b600082019050919050565b6000611e7c6027836121e1565b9150611e8782612745565b604082019050919050565b611e9b8161235a565b82525050565b6000611ead8284611c9a565b915081905092915050565b6000611ec382611d34565b9150819050919050565b6000611ed882611e4c565b9150819050919050565b6000602082019050611ef76000830184611bfb565b92915050565b6000602082019050611f126000830184611c0a565b92915050565b6000602082019050611f2d6000830184611c19565b92915050565b60006020820190508181036000830152611f4d8184611c28565b905092915050565b60006020820190508181036000830152611f6f8184611c61565b905092915050565b60006040820190508181036000830152611f918185611c61565b9050611fa06020830184611bfb565b9392505050565b60006020820190508181036000830152611fc081611ccb565b9050919050565b60006020820190508181036000830152611fe081611cee565b9050919050565b6000602082019050818103600083015261200081611d11565b9050919050565b6000602082019050818103600083015261202081611d57565b9050919050565b6000602082019050818103600083015261204081611d7a565b9050919050565b6000602082019050818103600083015261206081611d9d565b9050919050565b6000602082019050818103600083015261208081611dc0565b9050919050565b600060208201905081810360008301526120a081611de3565b9050919050565b600060208201905081810360008301526120c081611e06565b9050919050565b600060208201905081810360008301526120e081611e29565b9050919050565b6000602082019050818103600083015261210081611e6f565b9050919050565b600060208201905061211c6000830184611e92565b92915050565b60006060820190506121376000830186611e92565b6121446020830185611c19565b6121516040830184611e92565b949350505050565b6000612163612174565b905061216f82826123a6565b919050565b6000604051905090565b600067ffffffffffffffff82111561219957612198612435565b5b6121a282612464565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b60006122088261235a565b91506122138361235a565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612248576122476123d7565b5b828201905092915050565b600061225e8261235a565b91506122698361235a565b92508261227957612278612406565b5b828204905092915050565b600061228f8261235a565b915061229a8361235a565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156122d3576122d26123d7565b5b828202905092915050565b60006122e98261235a565b91506122f48361235a565b925082821015612307576123066123d7565b5b828203905092915050565b600061231d8261233a565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015612391578082015181840152602081019050612376565b838111156123a0576000848401525b50505050565b6123af82612464565b810181811067ffffffffffffffff821117156123ce576123cd612435565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f416c72656164792070616964207468697320726563656970742e000000000000600082015250565b7f44656c65676174652068616e646c65206578697374732e000000000000000000600082015250565b7f4f6e6c7920636f6e74726163744f776e65722063616e2064656c65746520616460008201527f6d696e732e000000000000000000000000000000000000000000000000000000602082015250565b7f4944726973730000000000000000000000000000000000000000000000000000600082015250565b7f4f776e61626c653a206e657720636f6e74726163744f776e657220697320746860008201527f65207a65726f20616464726573732e0000000000000000000000000000000000602082015250565b7f4661696c656420746f2020776974686472617700000000000000000000000000600082015250565b7f4f6e6c792064656c65676174652063616e2064656c6574652064656c6567617460008201527f696f6e206c696e6b2e0000000000000000000000000000000000000000000000602082015250565b7f4f6e6c7920636f6e74726163744f776e65722063616e2061646420737065636960008201527f616c2064656c656761746520706172746e65722e000000000000000000000000602082015250565b7f4f6e6c7920636f6e74726163744f776e65722063616e206368616e6765206f7760008201527f6e657273686970206f6620636f6e74726163742e000000000000000000000000602082015250565b7f4f6e6c7920636f6e74726163744f776e65722063616e206164642061646d696e60008201527f732e000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2064656c656761746541646472657373206973207468652060008201527f7a65726f20616464726573732e00000000000000000000000000000000000000602082015250565b50565b7f5061796d656e7420616464726573732063616e6e6f74206265206e756c6c206160008201527f6464726573732e00000000000000000000000000000000000000000000000000602082015250565b61279d81612312565b81146127a857600080fd5b50565b6127b481612330565b81146127bf57600080fd5b50565b6127cb8161235a565b81146127d657600080fd5b5056fea26469706673582212205a372bf14748525310b69d4d3fda3fb9f16733b263ac75315a3508d0328d60fc64736f6c63430008010033

Deployed Bytecode Sourcemap

6574:5908:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6970:46;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9653:827;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7842:229;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10994:247;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8710:430;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11277:282;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7614:220;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6869:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9194:382;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6921:42;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11603:311;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6820:42;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8079:570;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6721:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10551:398;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6770:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6970:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;9653:827::-;9824:1;9788:38;;:8;:24;9797:14;9788:24;;;;;;;;;;;;;;;;;;;;;:38;;;9780:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;9895:10;9868:8;:24;9877:14;9868:24;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;9942:9;9916:7;:23;9924:14;9916:23;;;;;;;;;;;:35;;;;9989:14;9962:12;9975:10;9962:24;;;;;;:::i;:::-;;;;;;;;;;;;;:41;;;;10054:1;10018:38;;:8;10027:14;10018:24;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:38;;;10014:336;;10101:64;10115:49;10160:3;10116:38;10130:7;10138:14;10130:23;;;;;;:::i;:::-;;;;;;;;;;;;;;10116:9;:13;;:38;;;;:::i;:::-;10115:44;;:49;;;;:::i;:::-;10101:9;:13;;:64;;;;:::i;:::-;10073:9;:24;10083:13;;;;;;;;;;;10073:24;;;;;;;;;;;;;;;;:92;;;;;;;:::i;:::-;;;;;;;;10219:49;10264:3;10220:38;10234:7;10242:14;10234:23;;;;;;:::i;:::-;;;;;;;;;;;;;;10220:9;:13;;:38;;;;:::i;:::-;10219:44;;:49;;;;:::i;:::-;10180:9;:35;10190:8;10199:14;10190:24;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;10180:35;;;;;;;;;;;;;;;;:88;;;;;;;:::i;:::-;;;;;;;;10014:336;;;10329:9;10301;:24;10311:13;;;;;;;;;;;10301:24;;;;;;;;;;;;;;;;:37;;;;;;;:::i;:::-;;;;;;;;10014:336;10444:10;10365:107;;;;;;:::i;:::-;;;;;;;;10377:8;:24;10386:14;10377:24;;;;;;;;;;;;;;;;;;;;;10365:107;;;10403:7;:23;10411:14;10403:23;;;;;;;;;;;;10428:14;10456:15;10365:107;;;;;;;;:::i;:::-;;;;;;;;9653:827;;;:::o;7842:229::-;7927:13;;;;;;;;;;;7913:27;;:10;:27;;;7905:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;8016:5;7993:6;:20;8000:12;7993:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;8050:12;8037:26;;;;;;;;;;;;7842:229;:::o;10994:247::-;11079:7;11127:1;11107:22;;:8;:22;;;;11099:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;11212:9;11223:8;11201:31;;;;;;;;;:::i;:::-;;;;;;;;;;;;;11191:42;;;;;;11184:49;;10994:247;;;;:::o;8710:430::-;8850:1;8814:38;;:8;8823:14;8814:24;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:38;;;8806:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;8926:1;8899:29;;:15;:29;;;;8891:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;9016:15;8989:8;8998:14;8989:24;;;;;;:::i;:::-;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;9068:2;9042:7;9050:14;9042:23;;;;;;:::i;:::-;;;;;;;;;;;;;:28;;;;9116:15;9086:46;;;9100:14;9086:46;;;;;;:::i;:::-;;;;;;;;8710:430;;:::o;11277:282::-;11364:4;11409:1;11389:22;;:8;:22;;;;11381:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;11520:8;11474:54;;:8;:42;11483:32;11495:9;11506:8;11483:11;:32::i;:::-;11474:42;;;;;;;;;;;;;;;;;;;;;:54;;;11466:63;;;;;;11547:4;11540:11;;11277:282;;;;:::o;7614:220::-;7696:13;;;;;;;;;;;7682:27;;:10;:27;;;7674:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;7782:4;7759:6;:20;7766:12;7759:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;7813:12;7802:24;;;;;;;;;;;;7614:220;:::o;6869:44::-;;;;;;;;;;;;;;;;;:::o;9194:382::-;9290:8;9299:14;9290:24;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;9276:38;;:10;:38;;;9268:92;;;;;;;;;;;;:::i;:::-;;;;;;;;;9371:23;9397:8;9406:14;9397:24;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;9371:50;;9439:8;9448:14;9439:24;;;;;;:::i;:::-;;;;;;;;;;;;;;9432:31;;;;;;;;;;;9481:7;9489:14;9481:23;;;;;;:::i;:::-;;;;;;;;;;;;;9474:30;;;9552:15;9520:48;;;9536:14;9520:48;;;;;;:::i;:::-;;;;;;;;9194:382;;:::o;6921:42::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;11603:311::-;11704:13;;;;;;;;;;;11690:27;;:10;:27;;;11682:92;;;;;;;;;;;;:::i;:::-;;;;;;;;;11813:1;11793:22;;:8;:22;;;;11785:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;11878:28;11897:8;11878:18;:28::i;:::-;11603:311;:::o;6820:42::-;;;;;;;;;;;;;;;;;:::o;8079:570::-;8226:13;;;;;;;;;;;8212:27;;:10;:27;;;8204:92;;;;;;;;;;;;:::i;:::-;;;;;;;;;8351:1;8315:38;;:8;8324:14;8315:24;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:38;;;8307:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;8427:1;8400:29;;:15;:29;;;;8392:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;8517:15;8490:8;8499:14;8490:24;;;;;;:::i;:::-;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;8569:10;8543:7;8551:14;8543:23;;;;;;:::i;:::-;;;;;;;;;;;;;:36;;;;8625:15;8595:46;;;8609:14;8595:46;;;;;;:::i;:::-;;;;;;;;8079:570;;;:::o;6721:41::-;;;;;;;;;;;;;:::o;10551:398::-;10633:12;10676:9;:35;10686:8;10695:14;10686:24;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;10676:35;;;;;;;;;;;;;;;;10666:6;:45;;10658:54;;;;;;10762:6;10723:9;:35;10733:8;10742:14;10733:24;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;10723:35;;;;;;;;;;;;;;;;:45;;;;;;;:::i;:::-;;;;;;;;10780:9;10791:17;10812:8;10821:14;10812:24;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:29;;10849:6;10862:5;10812:60;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10779:93;;;;10891:4;10883:36;;;;;;;;;;;;:::i;:::-;;;;;;;;;10937:4;10930:11;;;;10551:398;;;;:::o;6770:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;3147:98::-;3205:7;3236:1;3232;:5;;;;:::i;:::-;3225:12;;3147:98;;;;:::o;3546:::-;3604:7;3635:1;3631;:5;;;;:::i;:::-;3624:12;;3546:98;;;;:::o;2790:::-;2848:7;2879:1;2875;:5;;;;:::i;:::-;2868:12;;2790:98;;;;:::o;11946:533::-;12020:16;12039:13;;;;;;;;;;;12020:32;;12118:19;12140:9;:19;12150:8;12140:19;;;;;;;;;;;;;;;;12118:41;;12232:1;12210:9;:19;12220:8;12210:19;;;;;;;;;;;;;;;:23;;;;12260:8;12244:13;;:24;;;;;;;;;;;;;;;;;;12326:8;12305;:18;;;;;:::i;:::-;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;12404:11;12382:9;:19;12392:8;12382:19;;;;;;;;;;;;;;;:33;;;;12462:8;12431:40;;12452:8;12431:40;;;;;;;;;;;;11946:533;;;:::o;7:345:1:-;;110:66;126:49;168:6;126:49;:::i;:::-;110:66;:::i;:::-;101:75;;199:6;192:5;185:21;237:4;230:5;226:16;275:3;266:6;261:3;257:16;254:25;251:2;;;292:1;289;282:12;251:2;305:41;339:6;334:3;329;305:41;:::i;:::-;91:261;;;;;;:::o;358:139::-;;442:6;429:20;420:29;;458:33;485:5;458:33;:::i;:::-;410:87;;;;:::o;503:139::-;;587:6;574:20;565:29;;603:33;630:5;603:33;:::i;:::-;555:87;;;;:::o;662:273::-;;767:3;760:4;752:6;748:17;744:27;734:2;;785:1;782;775:12;734:2;825:6;812:20;850:79;925:3;917:6;910:4;902:6;898:17;850:79;:::i;:::-;841:88;;724:211;;;;;:::o;941:139::-;;1025:6;1012:20;1003:29;;1041:33;1068:5;1041:33;:::i;:::-;993:87;;;;:::o;1086:262::-;;1194:2;1182:9;1173:7;1169:23;1165:32;1162:2;;;1210:1;1207;1200:12;1162:2;1253:1;1278:53;1323:7;1314:6;1303:9;1299:22;1278:53;:::i;:::-;1268:63;;1224:117;1152:196;;;;:::o;1354:520::-;;;1489:2;1477:9;1468:7;1464:23;1460:32;1457:2;;;1505:1;1502;1495:12;1457:2;1548:1;1573:53;1618:7;1609:6;1598:9;1594:22;1573:53;:::i;:::-;1563:63;;1519:117;1703:2;1692:9;1688:18;1675:32;1734:18;1726:6;1723:30;1720:2;;;1766:1;1763;1756:12;1720:2;1794:63;1849:7;1840:6;1829:9;1825:22;1794:63;:::i;:::-;1784:73;;1646:221;1447:427;;;;;:::o;1880:665::-;;;;2032:2;2020:9;2011:7;2007:23;2003:32;2000:2;;;2048:1;2045;2038:12;2000:2;2091:1;2116:53;2161:7;2152:6;2141:9;2137:22;2116:53;:::i;:::-;2106:63;;2062:117;2246:2;2235:9;2231:18;2218:32;2277:18;2269:6;2266:30;2263:2;;;2309:1;2306;2299:12;2263:2;2337:63;2392:7;2383:6;2372:9;2368:22;2337:63;:::i;:::-;2327:73;;2189:221;2449:2;2475:53;2520:7;2511:6;2500:9;2496:22;2475:53;:::i;:::-;2465:63;;2420:118;1990:555;;;;;:::o;2551:262::-;;2659:2;2647:9;2638:7;2634:23;2630:32;2627:2;;;2675:1;2672;2665:12;2627:2;2718:1;2743:53;2788:7;2779:6;2768:9;2764:22;2743:53;:::i;:::-;2733:63;;2689:117;2617:196;;;;:::o;2819:778::-;;;;2981:2;2969:9;2960:7;2956:23;2952:32;2949:2;;;2997:1;2994;2987:12;2949:2;3040:1;3065:53;3110:7;3101:6;3090:9;3086:22;3065:53;:::i;:::-;3055:63;;3011:117;3195:2;3184:9;3180:18;3167:32;3226:18;3218:6;3215:30;3212:2;;;3258:1;3255;3248:12;3212:2;3286:63;3341:7;3332:6;3321:9;3317:22;3286:63;:::i;:::-;3276:73;;3138:221;3426:2;3415:9;3411:18;3398:32;3457:18;3449:6;3446:30;3443:2;;;3489:1;3486;3479:12;3443:2;3517:63;3572:7;3563:6;3552:9;3548:22;3517:63;:::i;:::-;3507:73;;3369:221;2939:658;;;;;:::o;3603:375::-;;3721:2;3709:9;3700:7;3696:23;3692:32;3689:2;;;3737:1;3734;3727:12;3689:2;3808:1;3797:9;3793:17;3780:31;3838:18;3830:6;3827:30;3824:2;;;3870:1;3867;3860:12;3824:2;3898:63;3953:7;3944:6;3933:9;3929:22;3898:63;:::i;:::-;3888:73;;3751:220;3679:299;;;;:::o;3984:520::-;;;4119:2;4107:9;4098:7;4094:23;4090:32;4087:2;;;4135:1;4132;4125:12;4087:2;4206:1;4195:9;4191:17;4178:31;4236:18;4228:6;4225:30;4222:2;;;4268:1;4265;4258:12;4222:2;4296:63;4351:7;4342:6;4331:9;4327:22;4296:63;:::i;:::-;4286:73;;4149:220;4408:2;4434:53;4479:7;4470:6;4459:9;4455:22;4434:53;:::i;:::-;4424:63;;4379:118;4077:427;;;;;:::o;4510:520::-;;;4645:2;4633:9;4624:7;4620:23;4616:32;4613:2;;;4661:1;4658;4651:12;4613:2;4704:1;4729:53;4774:7;4765:6;4754:9;4750:22;4729:53;:::i;:::-;4719:63;;4675:117;4859:2;4848:9;4844:18;4831:32;4890:18;4882:6;4879:30;4876:2;;;4922:1;4919;4912:12;4876:2;4950:63;5005:7;4996:6;4985:9;4981:22;4950:63;:::i;:::-;4940:73;;4802:221;4603:427;;;;;:::o;5036:118::-;5123:24;5141:5;5123:24;:::i;:::-;5118:3;5111:37;5101:53;;:::o;5160:109::-;5241:21;5256:5;5241:21;:::i;:::-;5236:3;5229:34;5219:50;;:::o;5275:118::-;5362:24;5380:5;5362:24;:::i;:::-;5357:3;5350:37;5340:53;;:::o;5399:360::-;;5513:38;5545:5;5513:38;:::i;:::-;5567:70;5630:6;5625:3;5567:70;:::i;:::-;5560:77;;5646:52;5691:6;5686:3;5679:4;5672:5;5668:16;5646:52;:::i;:::-;5723:29;5745:6;5723:29;:::i;:::-;5718:3;5714:39;5707:46;;5489:270;;;;;:::o;5765:364::-;;5881:39;5914:5;5881:39;:::i;:::-;5936:71;6000:6;5995:3;5936:71;:::i;:::-;5929:78;;6016:52;6061:6;6056:3;6049:4;6042:5;6038:16;6016:52;:::i;:::-;6093:29;6115:6;6093:29;:::i;:::-;6088:3;6084:39;6077:46;;5857:272;;;;;:::o;6135:377::-;;6269:39;6302:5;6269:39;:::i;:::-;6324:89;6406:6;6401:3;6324:89;:::i;:::-;6317:96;;6422:52;6467:6;6462:3;6455:4;6448:5;6444:16;6422:52;:::i;:::-;6499:6;6494:3;6490:16;6483:23;;6245:267;;;;;:::o;6518:366::-;;6681:67;6745:2;6740:3;6681:67;:::i;:::-;6674:74;;6757:93;6846:3;6757:93;:::i;:::-;6875:2;6870:3;6866:12;6859:19;;6664:220;;;:::o;6890:366::-;;7053:67;7117:2;7112:3;7053:67;:::i;:::-;7046:74;;7129:93;7218:3;7129:93;:::i;:::-;7247:2;7242:3;7238:12;7231:19;;7036:220;;;:::o;7262:366::-;;7425:67;7489:2;7484:3;7425:67;:::i;:::-;7418:74;;7501:93;7590:3;7501:93;:::i;:::-;7619:2;7614:3;7610:12;7603:19;;7408:220;;;:::o;7634:400::-;;7815:84;7897:1;7892:3;7815:84;:::i;:::-;7808:91;;7908:93;7997:3;7908:93;:::i;:::-;8026:1;8021:3;8017:11;8010:18;;7798:236;;;:::o;8040:366::-;;8203:67;8267:2;8262:3;8203:67;:::i;:::-;8196:74;;8279:93;8368:3;8279:93;:::i;:::-;8397:2;8392:3;8388:12;8381:19;;8186:220;;;:::o;8412:366::-;;8575:67;8639:2;8634:3;8575:67;:::i;:::-;8568:74;;8651:93;8740:3;8651:93;:::i;:::-;8769:2;8764:3;8760:12;8753:19;;8558:220;;;:::o;8784:366::-;;8947:67;9011:2;9006:3;8947:67;:::i;:::-;8940:74;;9023:93;9112:3;9023:93;:::i;:::-;9141:2;9136:3;9132:12;9125:19;;8930:220;;;:::o;9156:366::-;;9319:67;9383:2;9378:3;9319:67;:::i;:::-;9312:74;;9395:93;9484:3;9395:93;:::i;:::-;9513:2;9508:3;9504:12;9497:19;;9302:220;;;:::o;9528:366::-;;9691:67;9755:2;9750:3;9691:67;:::i;:::-;9684:74;;9767:93;9856:3;9767:93;:::i;:::-;9885:2;9880:3;9876:12;9869:19;;9674:220;;;:::o;9900:366::-;;10063:67;10127:2;10122:3;10063:67;:::i;:::-;10056:74;;10139:93;10228:3;10139:93;:::i;:::-;10257:2;10252:3;10248:12;10241:19;;10046:220;;;:::o;10272:366::-;;10435:67;10499:2;10494:3;10435:67;:::i;:::-;10428:74;;10511:93;10600:3;10511:93;:::i;:::-;10629:2;10624:3;10620:12;10613:19;;10418:220;;;:::o;10644:398::-;;10824:83;10905:1;10900:3;10824:83;:::i;:::-;10817:90;;10916:93;11005:3;10916:93;:::i;:::-;11034:1;11029:3;11025:11;11018:18;;10807:235;;;:::o;11048:366::-;;11211:67;11275:2;11270:3;11211:67;:::i;:::-;11204:74;;11287:93;11376:3;11287:93;:::i;:::-;11405:2;11400:3;11396:12;11389:19;;11194:220;;;:::o;11420:118::-;11507:24;11525:5;11507:24;:::i;:::-;11502:3;11495:37;11485:53;;:::o;11544:275::-;;11698:95;11789:3;11780:6;11698:95;:::i;:::-;11691:102;;11810:3;11803:10;;11680:139;;;;:::o;11825:381::-;;12032:148;12176:3;12032:148;:::i;:::-;12025:155;;12197:3;12190:10;;12014:192;;;:::o;12212:379::-;;12418:147;12561:3;12418:147;:::i;:::-;12411:154;;12582:3;12575:10;;12400:191;;;:::o;12597:222::-;;12728:2;12717:9;12713:18;12705:26;;12741:71;12809:1;12798:9;12794:17;12785:6;12741:71;:::i;:::-;12695:124;;;;:::o;12825:210::-;;12950:2;12939:9;12935:18;12927:26;;12963:65;13025:1;13014:9;13010:17;13001:6;12963:65;:::i;:::-;12917:118;;;;:::o;13041:222::-;;13172:2;13161:9;13157:18;13149:26;;13185:71;13253:1;13242:9;13238:17;13229:6;13185:71;:::i;:::-;13139:124;;;;:::o;13269:309::-;;13418:2;13407:9;13403:18;13395:26;;13467:9;13461:4;13457:20;13453:1;13442:9;13438:17;13431:47;13495:76;13566:4;13557:6;13495:76;:::i;:::-;13487:84;;13385:193;;;;:::o;13584:313::-;;13735:2;13724:9;13720:18;13712:26;;13784:9;13778:4;13774:20;13770:1;13759:9;13755:17;13748:47;13812:78;13885:4;13876:6;13812:78;:::i;:::-;13804:86;;13702:195;;;;:::o;13903:423::-;;14082:2;14071:9;14067:18;14059:26;;14131:9;14125:4;14121:20;14117:1;14106:9;14102:17;14095:47;14159:78;14232:4;14223:6;14159:78;:::i;:::-;14151:86;;14247:72;14315:2;14304:9;14300:18;14291:6;14247:72;:::i;:::-;14049:277;;;;;:::o;14332:419::-;;14536:2;14525:9;14521:18;14513:26;;14585:9;14579:4;14575:20;14571:1;14560:9;14556:17;14549:47;14613:131;14739:4;14613:131;:::i;:::-;14605:139;;14503:248;;;:::o;14757:419::-;;14961:2;14950:9;14946:18;14938:26;;15010:9;15004:4;15000:20;14996:1;14985:9;14981:17;14974:47;15038:131;15164:4;15038:131;:::i;:::-;15030:139;;14928:248;;;:::o;15182:419::-;;15386:2;15375:9;15371:18;15363:26;;15435:9;15429:4;15425:20;15421:1;15410:9;15406:17;15399:47;15463:131;15589:4;15463:131;:::i;:::-;15455:139;;15353:248;;;:::o;15607:419::-;;15811:2;15800:9;15796:18;15788:26;;15860:9;15854:4;15850:20;15846:1;15835:9;15831:17;15824:47;15888:131;16014:4;15888:131;:::i;:::-;15880:139;;15778:248;;;:::o;16032:419::-;;16236:2;16225:9;16221:18;16213:26;;16285:9;16279:4;16275:20;16271:1;16260:9;16256:17;16249:47;16313:131;16439:4;16313:131;:::i;:::-;16305:139;;16203:248;;;:::o;16457:419::-;;16661:2;16650:9;16646:18;16638:26;;16710:9;16704:4;16700:20;16696:1;16685:9;16681:17;16674:47;16738:131;16864:4;16738:131;:::i;:::-;16730:139;;16628:248;;;:::o;16882:419::-;;17086:2;17075:9;17071:18;17063:26;;17135:9;17129:4;17125:20;17121:1;17110:9;17106:17;17099:47;17163:131;17289:4;17163:131;:::i;:::-;17155:139;;17053:248;;;:::o;17307:419::-;;17511:2;17500:9;17496:18;17488:26;;17560:9;17554:4;17550:20;17546:1;17535:9;17531:17;17524:47;17588:131;17714:4;17588:131;:::i;:::-;17580:139;;17478:248;;;:::o;17732:419::-;;17936:2;17925:9;17921:18;17913:26;;17985:9;17979:4;17975:20;17971:1;17960:9;17956:17;17949:47;18013:131;18139:4;18013:131;:::i;:::-;18005:139;;17903:248;;;:::o;18157:419::-;;18361:2;18350:9;18346:18;18338:26;;18410:9;18404:4;18400:20;18396:1;18385:9;18381:17;18374:47;18438:131;18564:4;18438:131;:::i;:::-;18430:139;;18328:248;;;:::o;18582:419::-;;18786:2;18775:9;18771:18;18763:26;;18835:9;18829:4;18825:20;18821:1;18810:9;18806:17;18799:47;18863:131;18989:4;18863:131;:::i;:::-;18855:139;;18753:248;;;:::o;19007:222::-;;19138:2;19127:9;19123:18;19115:26;;19151:71;19219:1;19208:9;19204:17;19195:6;19151:71;:::i;:::-;19105:124;;;;:::o;19235:442::-;;19422:2;19411:9;19407:18;19399:26;;19435:71;19503:1;19492:9;19488:17;19479:6;19435:71;:::i;:::-;19516:72;19584:2;19573:9;19569:18;19560:6;19516:72;:::i;:::-;19598;19666:2;19655:9;19651:18;19642:6;19598:72;:::i;:::-;19389:288;;;;;;:::o;19683:129::-;;19744:20;;:::i;:::-;19734:30;;19773:33;19801:4;19793:6;19773:33;:::i;:::-;19724:88;;;:::o;19818:75::-;;19884:2;19878:9;19868:19;;19858:35;:::o;19899:308::-;;20051:18;20043:6;20040:30;20037:2;;;20073:18;;:::i;:::-;20037:2;20111:29;20133:6;20111:29;:::i;:::-;20103:37;;20195:4;20189;20185:15;20177:23;;19966:241;;;:::o;20213:98::-;;20298:5;20292:12;20282:22;;20271:40;;;:::o;20317:99::-;;20403:5;20397:12;20387:22;;20376:40;;;:::o;20422:168::-;;20539:6;20534:3;20527:19;20579:4;20574:3;20570:14;20555:29;;20517:73;;;;:::o;20596:147::-;;20734:3;20719:18;;20709:34;;;;:::o;20749:169::-;;20867:6;20862:3;20855:19;20907:4;20902:3;20898:14;20883:29;;20845:73;;;;:::o;20924:148::-;;21063:3;21048:18;;21038:34;;;;:::o;21078:305::-;;21137:20;21155:1;21137:20;:::i;:::-;21132:25;;21171:20;21189:1;21171:20;:::i;:::-;21166:25;;21325:1;21257:66;21253:74;21250:1;21247:81;21244:2;;;21331:18;;:::i;:::-;21244:2;21375:1;21372;21368:9;21361:16;;21122:261;;;;:::o;21389:185::-;;21446:20;21464:1;21446:20;:::i;:::-;21441:25;;21480:20;21498:1;21480:20;:::i;:::-;21475:25;;21519:1;21509:2;;21524:18;;:::i;:::-;21509:2;21566:1;21563;21559:9;21554:14;;21431:143;;;;:::o;21580:348::-;;21643:20;21661:1;21643:20;:::i;:::-;21638:25;;21677:20;21695:1;21677:20;:::i;:::-;21672:25;;21865:1;21797:66;21793:74;21790:1;21787:81;21782:1;21775:9;21768:17;21764:105;21761:2;;;21872:18;;:::i;:::-;21761:2;21920:1;21917;21913:9;21902:20;;21628:300;;;;:::o;21934:191::-;;21994:20;22012:1;21994:20;:::i;:::-;21989:25;;22028:20;22046:1;22028:20;:::i;:::-;22023:25;;22067:1;22064;22061:8;22058:2;;;22072:18;;:::i;:::-;22058:2;22117:1;22114;22110:9;22102:17;;21979:146;;;;:::o;22131:96::-;;22197:24;22215:5;22197:24;:::i;:::-;22186:35;;22176:51;;;:::o;22233:90::-;;22310:5;22303:13;22296:21;22285:32;;22275:48;;;:::o;22329:77::-;;22395:5;22384:16;;22374:32;;;:::o;22412:126::-;;22489:42;22482:5;22478:54;22467:65;;22457:81;;;:::o;22544:77::-;;22610:5;22599:16;;22589:32;;;:::o;22627:154::-;22711:6;22706:3;22701;22688:30;22773:1;22764:6;22759:3;22755:16;22748:27;22678:103;;;:::o;22787:307::-;22855:1;22865:113;22879:6;22876:1;22873:13;22865:113;;;22964:1;22959:3;22955:11;22949:18;22945:1;22940:3;22936:11;22929:39;22901:2;22898:1;22894:10;22889:15;;22865:113;;;22996:6;22993:1;22990:13;22987:2;;;23076:1;23067:6;23062:3;23058:16;23051:27;22987:2;22836:258;;;;:::o;23100:281::-;23183:27;23205:4;23183:27;:::i;:::-;23175:6;23171:40;23313:6;23301:10;23298:22;23277:18;23265:10;23262:34;23259:62;23256:2;;;23324:18;;:::i;:::-;23256:2;23364:10;23360:2;23353:22;23143:238;;;:::o;23387:180::-;23435:77;23432:1;23425:88;23532:4;23529:1;23522:15;23556:4;23553:1;23546:15;23573:180;23621:77;23618:1;23611:88;23718:4;23715:1;23708:15;23742:4;23739:1;23732:15;23759:180;23807:77;23804:1;23797:88;23904:4;23901:1;23894:15;23928:4;23925:1;23918:15;23945:102;;24037:2;24033:7;24028:2;24021:5;24017:14;24013:28;24003:38;;23993:54;;;:::o;24053:176::-;24193:28;24189:1;24181:6;24177:14;24170:52;24159:70;:::o;24235:173::-;24375:25;24371:1;24363:6;24359:14;24352:49;24341:67;:::o;24414:224::-;24554:34;24550:1;24542:6;24538:14;24531:58;24623:7;24618:2;24610:6;24606:15;24599:32;24520:118;:::o;24644:156::-;24784:8;24780:1;24772:6;24768:14;24761:32;24750:50;:::o;24806:234::-;24946:34;24942:1;24934:6;24930:14;24923:58;25015:17;25010:2;25002:6;24998:15;24991:42;24912:128;:::o;25046:169::-;25186:21;25182:1;25174:6;25170:14;25163:45;25152:63;:::o;25221:228::-;25361:34;25357:1;25349:6;25345:14;25338:58;25430:11;25425:2;25417:6;25413:15;25406:36;25327:122;:::o;25455:239::-;25595:34;25591:1;25583:6;25579:14;25572:58;25664:22;25659:2;25651:6;25647:15;25640:47;25561:133;:::o;25700:239::-;25840:34;25836:1;25828:6;25824:14;25817:58;25909:22;25904:2;25896:6;25892:15;25885:47;25806:133;:::o;25945:221::-;26085:34;26081:1;26073:6;26069:14;26062:58;26154:4;26149:2;26141:6;26137:15;26130:29;26051:115;:::o;26172:232::-;26312:34;26308:1;26300:6;26296:14;26289:58;26381:15;26376:2;26368:6;26364:15;26357:40;26278:126;:::o;26410:114::-;26516:8;:::o;26530:226::-;26670:34;26666:1;26658:6;26654:14;26647:58;26739:9;26734:2;26726:6;26722:15;26715:34;26636:120;:::o;26762:122::-;26835:24;26853:5;26835:24;:::i;:::-;26828:5;26825:35;26815:2;;26874:1;26871;26864:12;26815:2;26805:79;:::o;26890:122::-;26963:24;26981:5;26963:24;:::i;:::-;26956:5;26953:35;26943:2;;27002:1;26999;26992:12;26943:2;26933:79;:::o;27018:122::-;27091:24;27109:5;27091:24;:::i;:::-;27084:5;27081:35;27071:2;;27130:1;27127;27120:12;27071:2;27061:79;:::o

Swarm Source

ipfs://5a372bf14748525310b69d4d3fda3fb9f16733b263ac75315a3508d0328d60fc

Block Transaction 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
[ Download: CSV Export  ]
[ Download: CSV Export  ]

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